@lingjingai/scriptctl 0.1.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/dist/bin.d.ts +2 -0
- package/dist/bin.js +12 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +433 -0
- package/dist/cli.js.map +1 -0
- package/dist/common.d.ts +124 -0
- package/dist/common.js +337 -0
- package/dist/common.js.map +1 -0
- package/dist/domain/direct-core.d.ts +114 -0
- package/dist/domain/direct-core.js +3040 -0
- package/dist/domain/direct-core.js.map +1 -0
- package/dist/domain/script-core.d.ts +18 -0
- package/dist/domain/script-core.js +1886 -0
- package/dist/domain/script-core.js.map +1 -0
- package/dist/help-text.d.ts +2 -0
- package/dist/help-text.js +399 -0
- package/dist/help-text.js.map +1 -0
- package/dist/infra/converters.d.ts +10 -0
- package/dist/infra/converters.js +560 -0
- package/dist/infra/converters.js.map +1 -0
- package/dist/infra/env.d.ts +2 -0
- package/dist/infra/env.js +81 -0
- package/dist/infra/env.js.map +1 -0
- package/dist/infra/providers.d.ts +25 -0
- package/dist/infra/providers.js +330 -0
- package/dist/infra/providers.js.map +1 -0
- package/dist/infra/script-output-api.d.ts +44 -0
- package/dist/infra/script-output-api.js +160 -0
- package/dist/infra/script-output-api.js.map +1 -0
- package/dist/infra/storage.d.ts +35 -0
- package/dist/infra/storage.js +91 -0
- package/dist/infra/storage.js.map +1 -0
- package/dist/output.d.ts +4 -0
- package/dist/output.js +55 -0
- package/dist/output.js.map +1 -0
- package/dist/usecases/direct.d.ts +13 -0
- package/dist/usecases/direct.js +1679 -0
- package/dist/usecases/direct.js.map +1 -0
- package/dist/usecases/doctor.d.ts +2 -0
- package/dist/usecases/doctor.js +75 -0
- package/dist/usecases/doctor.js.map +1 -0
- package/dist/usecases/script.d.ts +32 -0
- package/dist/usecases/script.js +949 -0
- package/dist/usecases/script.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
export class WorkspaceLayout {
|
|
4
|
+
workspace;
|
|
5
|
+
constructor(workspace) {
|
|
6
|
+
this.workspace = workspace;
|
|
7
|
+
}
|
|
8
|
+
get sourceText() {
|
|
9
|
+
return path.join(this.workspace, "source.txt");
|
|
10
|
+
}
|
|
11
|
+
get directDir() {
|
|
12
|
+
return path.join(this.workspace, "draft", "scriptctl", "direct");
|
|
13
|
+
}
|
|
14
|
+
get directScript() {
|
|
15
|
+
return path.join(this.directDir, "script.initial.json");
|
|
16
|
+
}
|
|
17
|
+
get validation() {
|
|
18
|
+
return path.join(this.directDir, "validation.json");
|
|
19
|
+
}
|
|
20
|
+
get runState() {
|
|
21
|
+
return path.join(this.directDir, "run_state.json");
|
|
22
|
+
}
|
|
23
|
+
get episodeResultsDir() {
|
|
24
|
+
return path.join(this.directDir, "episode_results");
|
|
25
|
+
}
|
|
26
|
+
get batchResultsDir() {
|
|
27
|
+
return path.join(this.directDir, "batch_results");
|
|
28
|
+
}
|
|
29
|
+
outputScript(outputDir) {
|
|
30
|
+
return path.join(outputDir, "script.json");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function globToRegExp(pattern) {
|
|
34
|
+
let re = "";
|
|
35
|
+
for (const ch of pattern) {
|
|
36
|
+
if (ch === "*")
|
|
37
|
+
re += "[^/]*";
|
|
38
|
+
else if (ch === "?")
|
|
39
|
+
re += "[^/]";
|
|
40
|
+
else if (".+^$()[]{}|\\".includes(ch))
|
|
41
|
+
re += "\\" + ch;
|
|
42
|
+
else
|
|
43
|
+
re += ch;
|
|
44
|
+
}
|
|
45
|
+
return new RegExp("^" + re + "$");
|
|
46
|
+
}
|
|
47
|
+
export class LocalArtifactStore {
|
|
48
|
+
exists(p) {
|
|
49
|
+
return fs.existsSync(p);
|
|
50
|
+
}
|
|
51
|
+
readText(p) {
|
|
52
|
+
return fs.readFileSync(p, "utf-8");
|
|
53
|
+
}
|
|
54
|
+
writeText(p, text) {
|
|
55
|
+
fs.mkdirSync(path.dirname(p), { recursive: true });
|
|
56
|
+
fs.writeFileSync(p, text, "utf-8");
|
|
57
|
+
}
|
|
58
|
+
readJson(p) {
|
|
59
|
+
return JSON.parse(fs.readFileSync(p, "utf-8"));
|
|
60
|
+
}
|
|
61
|
+
writeJson(p, data) {
|
|
62
|
+
this.writeText(p, JSON.stringify(data, null, 2) + "\n");
|
|
63
|
+
}
|
|
64
|
+
list(p, pattern = "*") {
|
|
65
|
+
if (!fs.existsSync(p))
|
|
66
|
+
return [];
|
|
67
|
+
const re = globToRegExp(pattern);
|
|
68
|
+
const entries = fs.readdirSync(p);
|
|
69
|
+
const matched = [];
|
|
70
|
+
for (const name of entries) {
|
|
71
|
+
if (re.test(name))
|
|
72
|
+
matched.push(path.join(p, name));
|
|
73
|
+
}
|
|
74
|
+
matched.sort();
|
|
75
|
+
return matched;
|
|
76
|
+
}
|
|
77
|
+
delete(p) {
|
|
78
|
+
if (fs.existsSync(p))
|
|
79
|
+
fs.unlinkSync(p);
|
|
80
|
+
}
|
|
81
|
+
deleteTree(p) {
|
|
82
|
+
if (fs.existsSync(p))
|
|
83
|
+
fs.rmSync(p, { recursive: true, force: true });
|
|
84
|
+
}
|
|
85
|
+
copyToPath(src, dst) {
|
|
86
|
+
fs.mkdirSync(path.dirname(dst), { recursive: true });
|
|
87
|
+
fs.copyFileSync(src, dst);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export const DEFAULT_STORE = new LocalArtifactStore();
|
|
91
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/infra/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CliError, type Report } from "./common.js";
|
|
2
|
+
export declare function renderText(report: Report, exitCode: number): string;
|
|
3
|
+
export declare function emit(report: Report, exitCode: number, jsonMode: boolean): void;
|
|
4
|
+
export declare function emitError(error: CliError, jsonMode: boolean): number;
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { EXIT_OK } from "./common.js";
|
|
2
|
+
export function renderText(report, exitCode) {
|
|
3
|
+
const lines = [String(report.title ?? "SCRIPTCTL"), ""];
|
|
4
|
+
const sections = [
|
|
5
|
+
["Required", "required"],
|
|
6
|
+
["Received", "received"],
|
|
7
|
+
["Result", "result"],
|
|
8
|
+
["Artifacts", "artifacts"],
|
|
9
|
+
["Issues", "issues"],
|
|
10
|
+
["Next", "next"],
|
|
11
|
+
];
|
|
12
|
+
for (const [heading, key] of sections) {
|
|
13
|
+
const items = report[key];
|
|
14
|
+
if (!items || (Array.isArray(items) && items.length === 0))
|
|
15
|
+
continue;
|
|
16
|
+
lines.push(heading);
|
|
17
|
+
if (Array.isArray(items)) {
|
|
18
|
+
for (const item of items)
|
|
19
|
+
lines.push(`- ${item}`);
|
|
20
|
+
}
|
|
21
|
+
lines.push("");
|
|
22
|
+
}
|
|
23
|
+
lines.push("Exit");
|
|
24
|
+
lines.push(`- code: ${exitCode}`);
|
|
25
|
+
return lines.join("\n").replace(/\s+$/, "") + "\n";
|
|
26
|
+
}
|
|
27
|
+
export function emit(report, exitCode, jsonMode) {
|
|
28
|
+
if (jsonMode) {
|
|
29
|
+
const payload = { ...report };
|
|
30
|
+
payload.exit_code = exitCode;
|
|
31
|
+
payload.ok = exitCode === EXIT_OK;
|
|
32
|
+
process.stdout.write(JSON.stringify(payload, null, 2) + "\n");
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
process.stdout.write(renderText(report, exitCode));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function emitError(error, jsonMode) {
|
|
39
|
+
const report = {
|
|
40
|
+
title: error.title,
|
|
41
|
+
message: error.message,
|
|
42
|
+
required: error.required,
|
|
43
|
+
received: error.received,
|
|
44
|
+
next: error.nextSteps,
|
|
45
|
+
};
|
|
46
|
+
if (error.op)
|
|
47
|
+
report.op = error.op;
|
|
48
|
+
if (error.errorCode)
|
|
49
|
+
report.error_code = error.errorCode;
|
|
50
|
+
if (error.hint)
|
|
51
|
+
report.hint = error.hint;
|
|
52
|
+
emit(report, error.exitCode, jsonMode);
|
|
53
|
+
return error.exitCode;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Report } from "../common.js";
|
|
2
|
+
type Dict = Record<string, unknown>;
|
|
3
|
+
export declare function updateRunState(workspace: string, updates: Dict): Dict;
|
|
4
|
+
export declare function readRunState(workspace: string): Dict;
|
|
5
|
+
export declare function addInspectedTarget(workspace: string, target: string): Dict;
|
|
6
|
+
export declare function markPatched(workspace: string, count: number): Dict;
|
|
7
|
+
export declare function markMetadataConfidenceReviewed(workspace: string, operations: Dict[]): void;
|
|
8
|
+
export declare function reviewBlockers(state: Dict): string[];
|
|
9
|
+
export declare function commandInit(opts: Dict): Promise<[Report, number]>;
|
|
10
|
+
export declare function summarizeIssues(issues: Dict[]): string[];
|
|
11
|
+
export declare function commandValidate(opts: Dict): [Report, number];
|
|
12
|
+
export declare function commandInspect(opts: Dict): [Report, number];
|
|
13
|
+
export {};
|