@polintpro/proposit-core 0.1.1 → 0.1.2
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/README.md +182 -8
- package/dist/cli/commands/analysis.d.ts +3 -0
- package/dist/cli/commands/analysis.d.ts.map +1 -0
- package/dist/cli/commands/analysis.js +324 -0
- package/dist/cli/commands/analysis.js.map +1 -0
- package/dist/cli/commands/arguments.d.ts +3 -0
- package/dist/cli/commands/arguments.d.ts.map +1 -0
- package/dist/cli/commands/arguments.js +118 -0
- package/dist/cli/commands/arguments.js.map +1 -0
- package/dist/cli/commands/expressions.d.ts +3 -0
- package/dist/cli/commands/expressions.d.ts.map +1 -0
- package/dist/cli/commands/expressions.js +240 -0
- package/dist/cli/commands/expressions.js.map +1 -0
- package/dist/cli/commands/meta.d.ts +3 -0
- package/dist/cli/commands/meta.d.ts.map +1 -0
- package/dist/cli/commands/meta.js +14 -0
- package/dist/cli/commands/meta.js.map +1 -0
- package/dist/cli/commands/premises.d.ts +3 -0
- package/dist/cli/commands/premises.d.ts.map +1 -0
- package/dist/cli/commands/premises.js +214 -0
- package/dist/cli/commands/premises.js.map +1 -0
- package/dist/cli/commands/render.d.ts +3 -0
- package/dist/cli/commands/render.d.ts.map +1 -0
- package/dist/cli/commands/render.js +25 -0
- package/dist/cli/commands/render.js.map +1 -0
- package/dist/cli/commands/roles.d.ts +3 -0
- package/dist/cli/commands/roles.d.ts.map +1 -0
- package/dist/cli/commands/roles.js +94 -0
- package/dist/cli/commands/roles.js.map +1 -0
- package/dist/cli/commands/variables.d.ts +3 -0
- package/dist/cli/commands/variables.d.ts.map +1 -0
- package/dist/cli/commands/variables.js +173 -0
- package/dist/cli/commands/variables.js.map +1 -0
- package/dist/cli/commands/versionShow.d.ts +3 -0
- package/dist/cli/commands/versionShow.d.ts.map +1 -0
- package/dist/cli/commands/versionShow.js +31 -0
- package/dist/cli/commands/versionShow.js.map +1 -0
- package/dist/cli/config.d.ts +7 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +21 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/engine.d.ts +13 -0
- package/dist/cli/engine.d.ts.map +1 -0
- package/dist/cli/engine.js +71 -0
- package/dist/cli/engine.js.map +1 -0
- package/dist/cli/output.d.ts +5 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +34 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/router.d.ts +14 -0
- package/dist/cli/router.d.ts.map +1 -0
- package/dist/cli/router.js +56 -0
- package/dist/cli/router.js.map +1 -0
- package/dist/cli/storage/analysis.d.ts +8 -0
- package/dist/cli/storage/analysis.d.ts.map +1 -0
- package/dist/cli/storage/analysis.js +70 -0
- package/dist/cli/storage/analysis.js.map +1 -0
- package/dist/cli/storage/arguments.d.ts +12 -0
- package/dist/cli/storage/arguments.d.ts.map +1 -0
- package/dist/cli/storage/arguments.js +80 -0
- package/dist/cli/storage/arguments.js.map +1 -0
- package/dist/cli/storage/premises.d.ts +9 -0
- package/dist/cli/storage/premises.d.ts.map +1 -0
- package/dist/cli/storage/premises.js +67 -0
- package/dist/cli/storage/premises.js.map +1 -0
- package/dist/cli/storage/roles.d.ts +4 -0
- package/dist/cli/storage/roles.d.ts.map +1 -0
- package/dist/cli/storage/roles.js +26 -0
- package/dist/cli/storage/roles.js.map +1 -0
- package/dist/cli/storage/variables.d.ts +4 -0
- package/dist/cli/storage/variables.d.ts.map +1 -0
- package/dist/cli/storage/variables.js +28 -0
- package/dist/cli/storage/variables.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +51 -0
- package/dist/cli.js.map +1 -0
- package/dist/lib/core/ArgumentEngine.d.ts +4 -3
- package/dist/lib/core/ArgumentEngine.d.ts.map +1 -1
- package/dist/lib/core/ArgumentEngine.js +11 -3
- package/dist/lib/core/ArgumentEngine.js.map +1 -1
- package/dist/lib/core/ExpressionManager.d.ts +1 -1
- package/dist/lib/core/ExpressionManager.d.ts.map +1 -1
- package/dist/lib/core/ExpressionManager.js +1 -1
- package/dist/lib/core/ExpressionManager.js.map +1 -1
- package/dist/lib/core/PremiseManager.d.ts +3 -2
- package/dist/lib/core/PremiseManager.d.ts.map +1 -1
- package/dist/lib/core/PremiseManager.js +9 -10
- package/dist/lib/core/PremiseManager.js.map +1 -1
- package/dist/lib/core/VariableManager.d.ts +3 -2
- package/dist/lib/core/VariableManager.d.ts.map +1 -1
- package/dist/lib/core/VariableManager.js +13 -0
- package/dist/lib/core/VariableManager.js.map +1 -1
- package/dist/lib/core/evaluation/shared.d.ts +1 -1
- package/dist/lib/core/evaluation/shared.d.ts.map +1 -1
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +3 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/schemata/analysis.d.ts +8 -0
- package/dist/lib/schemata/analysis.d.ts.map +1 -0
- package/dist/lib/schemata/analysis.js +10 -0
- package/dist/lib/schemata/analysis.js.map +1 -0
- package/dist/lib/schemata/argument.d.ts +36 -2
- package/dist/lib/schemata/argument.d.ts.map +1 -1
- package/dist/lib/schemata/argument.js +34 -3
- package/dist/lib/schemata/argument.js.map +1 -1
- package/dist/lib/schemata/index.d.ts +4 -3
- package/dist/lib/schemata/index.d.ts.map +1 -1
- package/dist/lib/schemata/index.js +4 -3
- package/dist/lib/schemata/index.js.map +1 -1
- package/dist/lib/schemata/propositional.d.ts +37 -6
- package/dist/lib/schemata/propositional.d.ts.map +1 -1
- package/dist/lib/schemata/propositional.js +13 -7
- package/dist/lib/schemata/propositional.js.map +1 -1
- package/dist/lib/types/evaluation.d.ts +2 -5
- package/dist/lib/types/evaluation.d.ts.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { listVersionNumbers, readVersionMeta } from "./storage/arguments.js";
|
|
2
|
+
import { errorExit } from "./output.js";
|
|
3
|
+
const NAMED_COMMANDS = new Set([
|
|
4
|
+
"help",
|
|
5
|
+
"--help",
|
|
6
|
+
"-h",
|
|
7
|
+
"version",
|
|
8
|
+
"--version",
|
|
9
|
+
"-V",
|
|
10
|
+
"arguments",
|
|
11
|
+
]);
|
|
12
|
+
/**
|
|
13
|
+
* Returns true when argv[2] is a named top-level command (not a UUID).
|
|
14
|
+
*/
|
|
15
|
+
export function isNamedCommand(argv) {
|
|
16
|
+
const first = argv[2];
|
|
17
|
+
if (first === undefined)
|
|
18
|
+
return true;
|
|
19
|
+
return NAMED_COMMANDS.has(first);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolves an argument_version string to a concrete version number.
|
|
23
|
+
*
|
|
24
|
+
* Accepts:
|
|
25
|
+
* - A non-negative integer string → validates existence, returns it
|
|
26
|
+
* - "latest" → max version number found in the argument directory
|
|
27
|
+
* - "last-published" → highest published version; exits 1 if none
|
|
28
|
+
*/
|
|
29
|
+
export async function resolveVersion(argumentId, versionArg) {
|
|
30
|
+
const versions = await listVersionNumbers(argumentId);
|
|
31
|
+
if (versions.length === 0) {
|
|
32
|
+
errorExit(`No versions found for argument "${argumentId}".`);
|
|
33
|
+
}
|
|
34
|
+
if (versionArg === "latest") {
|
|
35
|
+
return versions[versions.length - 1];
|
|
36
|
+
}
|
|
37
|
+
if (versionArg === "last-published") {
|
|
38
|
+
// Check from highest to lowest
|
|
39
|
+
for (let i = versions.length - 1; i >= 0; i--) {
|
|
40
|
+
const v = versions[i];
|
|
41
|
+
const meta = await readVersionMeta(argumentId, v);
|
|
42
|
+
if (meta.published)
|
|
43
|
+
return v;
|
|
44
|
+
}
|
|
45
|
+
errorExit(`Argument "${argumentId}" has no published versions.`);
|
|
46
|
+
}
|
|
47
|
+
const parsed = Number(versionArg);
|
|
48
|
+
if (!Number.isInteger(parsed) || parsed < 0) {
|
|
49
|
+
errorExit(`Invalid version "${versionArg}". Use a non-negative integer, "latest", or "last-published".`);
|
|
50
|
+
}
|
|
51
|
+
if (!versions.includes(parsed)) {
|
|
52
|
+
errorExit(`Version ${parsed} does not exist for argument "${argumentId}".`);
|
|
53
|
+
}
|
|
54
|
+
return parsed;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC3B,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,WAAW;IACX,IAAI;IACJ,WAAW;CACd,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACrB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACpC,OAAO,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,UAAkB,EAClB,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,mCAAmC,UAAU,IAAI,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,UAAU,KAAK,gBAAgB,EAAE,CAAC;QAClC,+BAA+B;QAC/B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;YACjD,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAA;QAChC,CAAC;QACD,SAAS,CAAC,aAAa,UAAU,8BAA8B,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,SAAS,CACL,oBAAoB,UAAU,+DAA+D,CAChG,CAAA;IACL,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,SAAS,CACL,WAAW,MAAM,iCAAiC,UAAU,IAAI,CACnE,CAAA;IACL,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type TAnalysisFile } from "../../lib/schemata/index.js";
|
|
2
|
+
export declare function resolveAnalysisFilename(filename?: string): string;
|
|
3
|
+
export declare function readAnalysis(argumentId: string, version: number, filename: string): Promise<TAnalysisFile>;
|
|
4
|
+
export declare function writeAnalysis(argumentId: string, version: number, filename: string, data: TAnalysisFile): Promise<void>;
|
|
5
|
+
export declare function listAnalysisFiles(argumentId: string, version: number): Promise<string[]>;
|
|
6
|
+
export declare function deleteAnalysisFile(argumentId: string, version: number, filename: string): Promise<void>;
|
|
7
|
+
export declare function analysisFileExists(argumentId: string, version: number, filename: string): Promise<boolean>;
|
|
8
|
+
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/cli/storage/analysis.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,aAAa,EACrB,MAAM,6BAA6B,CAAA;AAUpC,wBAAgB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAUD,wBAAsB,YAAY,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED,wBAAsB,aAAa,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,iBAAiB,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnB;AAED,wBAAsB,kBAAkB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,kBAAkB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAKlB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import Value from "typebox/value";
|
|
4
|
+
import { AnalysisFileSchema, } from "../../lib/schemata/index.js";
|
|
5
|
+
import { getVersionDir } from "../config.js";
|
|
6
|
+
import { errorExit } from "../output.js";
|
|
7
|
+
const RESERVED_FILENAMES = new Set([
|
|
8
|
+
"meta.json",
|
|
9
|
+
"variables.json",
|
|
10
|
+
"roles.json",
|
|
11
|
+
]);
|
|
12
|
+
export function resolveAnalysisFilename(filename) {
|
|
13
|
+
return filename ?? "analysis.json";
|
|
14
|
+
}
|
|
15
|
+
function analysisPath(argumentId, version, filename) {
|
|
16
|
+
return path.join(getVersionDir(argumentId, version), filename);
|
|
17
|
+
}
|
|
18
|
+
export async function readAnalysis(argumentId, version, filename) {
|
|
19
|
+
const filePath = analysisPath(argumentId, version, filename);
|
|
20
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => {
|
|
21
|
+
errorExit(`Analysis file "${filename}" not found.`);
|
|
22
|
+
});
|
|
23
|
+
const raw = JSON.parse(content);
|
|
24
|
+
try {
|
|
25
|
+
return Value.Parse(AnalysisFileSchema, raw);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
errorExit(`Invalid or corrupt file: ${filePath}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export async function writeAnalysis(argumentId, version, filename, data) {
|
|
32
|
+
await fs.writeFile(analysisPath(argumentId, version, filename), JSON.stringify(data, null, 2));
|
|
33
|
+
}
|
|
34
|
+
export async function listAnalysisFiles(argumentId, version) {
|
|
35
|
+
const dir = getVersionDir(argumentId, version);
|
|
36
|
+
const entries = await fs
|
|
37
|
+
.readdir(dir, { withFileTypes: true })
|
|
38
|
+
.catch(() => []);
|
|
39
|
+
const results = [];
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
if (!entry.isFile())
|
|
42
|
+
continue;
|
|
43
|
+
if (!entry.name.endsWith(".json"))
|
|
44
|
+
continue;
|
|
45
|
+
if (RESERVED_FILENAMES.has(entry.name))
|
|
46
|
+
continue;
|
|
47
|
+
const filePath = path.join(dir, entry.name);
|
|
48
|
+
try {
|
|
49
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
50
|
+
const raw = JSON.parse(content);
|
|
51
|
+
if (Value.Check(AnalysisFileSchema, raw)) {
|
|
52
|
+
results.push(entry.name);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// skip unparseable files
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return results.sort();
|
|
60
|
+
}
|
|
61
|
+
export async function deleteAnalysisFile(argumentId, version, filename) {
|
|
62
|
+
await fs.rm(analysisPath(argumentId, version, filename), { force: true });
|
|
63
|
+
}
|
|
64
|
+
export async function analysisFileExists(argumentId, version, filename) {
|
|
65
|
+
return fs
|
|
66
|
+
.stat(analysisPath(argumentId, version, filename))
|
|
67
|
+
.then((s) => s.isFile())
|
|
68
|
+
.catch(() => false);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/cli/storage/analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type TArgumentMeta, type TArgumentVersionMeta } from "../../lib/schemata/index.js";
|
|
2
|
+
export declare function readArgumentMeta(argumentId: string): Promise<TArgumentMeta>;
|
|
3
|
+
export declare function writeArgumentMeta(meta: TArgumentMeta): Promise<void>;
|
|
4
|
+
export declare function readVersionMeta(argumentId: string, version: number): Promise<TArgumentVersionMeta>;
|
|
5
|
+
export declare function writeVersionMeta(argumentId: string, meta: TArgumentVersionMeta): Promise<void>;
|
|
6
|
+
export declare function listArgumentIds(): Promise<string[]>;
|
|
7
|
+
export declare function listVersionNumbers(argumentId: string): Promise<number[]>;
|
|
8
|
+
export declare function latestVersionNumber(argumentId: string): Promise<number>;
|
|
9
|
+
export declare function deleteVersionDir(argumentId: string, version: number): Promise<void>;
|
|
10
|
+
export declare function deleteArgumentDir(argumentId: string): Promise<void>;
|
|
11
|
+
export declare function copyVersionDir(argumentId: string, srcVersion: number, destVersion: number): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=arguments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../../src/cli/storage/arguments.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC5B,MAAM,6BAA6B,CAAA;AAIpC,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1E;AAED,wBAAsB,eAAe,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAW/B;AAED,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQzD;AAED,wBAAsB,kBAAkB,CACpC,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7E;AAED,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED,wBAAsB,cAAc,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import Value from "typebox/value";
|
|
4
|
+
import { ArgumentMetaSchema, ArgumentVersionMetaSchema, } from "../../lib/schemata/index.js";
|
|
5
|
+
import { getArgumentDir, getArgumentsDir, getVersionDir } from "../config.js";
|
|
6
|
+
import { errorExit } from "../output.js";
|
|
7
|
+
export async function readArgumentMeta(argumentId) {
|
|
8
|
+
const filePath = path.join(getArgumentDir(argumentId), "meta.json");
|
|
9
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => {
|
|
10
|
+
errorExit(`Argument "${argumentId}" not found.`);
|
|
11
|
+
});
|
|
12
|
+
const raw = JSON.parse(content);
|
|
13
|
+
try {
|
|
14
|
+
return Value.Parse(ArgumentMetaSchema, raw);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
errorExit(`Invalid or corrupt file: ${filePath}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function writeArgumentMeta(meta) {
|
|
21
|
+
const dir = getArgumentDir(meta.id);
|
|
22
|
+
await fs.mkdir(dir, { recursive: true });
|
|
23
|
+
await fs.writeFile(path.join(dir, "meta.json"), JSON.stringify(meta, null, 2));
|
|
24
|
+
}
|
|
25
|
+
export async function readVersionMeta(argumentId, version) {
|
|
26
|
+
const filePath = path.join(getVersionDir(argumentId, version), "meta.json");
|
|
27
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => {
|
|
28
|
+
errorExit(`Version ${version} of argument "${argumentId}" not found.`);
|
|
29
|
+
});
|
|
30
|
+
const raw = JSON.parse(content);
|
|
31
|
+
try {
|
|
32
|
+
return Value.Parse(ArgumentVersionMetaSchema, raw);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
errorExit(`Invalid or corrupt file: ${filePath}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function writeVersionMeta(argumentId, meta) {
|
|
39
|
+
const dir = getVersionDir(argumentId, meta.version);
|
|
40
|
+
await fs.mkdir(dir, { recursive: true });
|
|
41
|
+
await fs.writeFile(path.join(dir, "meta.json"), JSON.stringify(meta, null, 2));
|
|
42
|
+
}
|
|
43
|
+
export async function listArgumentIds() {
|
|
44
|
+
const dir = getArgumentsDir();
|
|
45
|
+
await fs.mkdir(dir, { recursive: true });
|
|
46
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
47
|
+
return entries
|
|
48
|
+
.filter((e) => e.isDirectory())
|
|
49
|
+
.map((e) => e.name)
|
|
50
|
+
.sort();
|
|
51
|
+
}
|
|
52
|
+
export async function listVersionNumbers(argumentId) {
|
|
53
|
+
const dir = getArgumentDir(argumentId);
|
|
54
|
+
const entries = await fs
|
|
55
|
+
.readdir(dir, { withFileTypes: true })
|
|
56
|
+
.catch(() => []);
|
|
57
|
+
return entries
|
|
58
|
+
.filter((e) => e.isDirectory() && /^\d+$/.test(e.name))
|
|
59
|
+
.map((e) => Number(e.name))
|
|
60
|
+
.sort((a, b) => a - b);
|
|
61
|
+
}
|
|
62
|
+
export async function latestVersionNumber(argumentId) {
|
|
63
|
+
const versions = await listVersionNumbers(argumentId);
|
|
64
|
+
if (versions.length === 0)
|
|
65
|
+
errorExit(`No versions found for argument "${argumentId}".`);
|
|
66
|
+
return versions[versions.length - 1];
|
|
67
|
+
}
|
|
68
|
+
export async function deleteVersionDir(argumentId, version) {
|
|
69
|
+
await fs.rm(getVersionDir(argumentId, version), {
|
|
70
|
+
recursive: true,
|
|
71
|
+
force: true,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export async function deleteArgumentDir(argumentId) {
|
|
75
|
+
await fs.rm(getArgumentDir(argumentId), { recursive: true, force: true });
|
|
76
|
+
}
|
|
77
|
+
export async function copyVersionDir(argumentId, srcVersion, destVersion) {
|
|
78
|
+
await fs.cp(getVersionDir(argumentId, srcVersion), getVersionDir(argumentId, destVersion), { recursive: true });
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=arguments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../src/cli/storage/arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type TPremiseData, type TPremiseMeta } from "../../lib/schemata/index.js";
|
|
2
|
+
export declare function readPremiseMeta(argumentId: string, version: number, premiseId: string): Promise<TPremiseMeta>;
|
|
3
|
+
export declare function writePremiseMeta(argumentId: string, version: number, meta: TPremiseMeta): Promise<void>;
|
|
4
|
+
export declare function readPremiseData(argumentId: string, version: number, premiseId: string): Promise<TPremiseData>;
|
|
5
|
+
export declare function writePremiseData(argumentId: string, version: number, premiseId: string, data: TPremiseData): Promise<void>;
|
|
6
|
+
export declare function listPremiseIds(argumentId: string, version: number): Promise<string[]>;
|
|
7
|
+
export declare function deletePremiseDir(argumentId: string, version: number, premiseId: string): Promise<void>;
|
|
8
|
+
export declare function premiseExists(argumentId: string, version: number, premiseId: string): Promise<boolean>;
|
|
9
|
+
//# sourceMappingURL=premises.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premises.d.ts","sourceRoot":"","sources":["../../../src/cli/storage/premises.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,YAAY,EACjB,KAAK,YAAY,EACpB,MAAM,6BAA6B,CAAA;AAIpC,wBAAsB,eAAe,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,eAAe,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,cAAc,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB;AAED,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,aAAa,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAMlB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import Value from "typebox/value";
|
|
4
|
+
import { PremiseDataSchema, PremiseMetaSchema, } from "../../lib/schemata/index.js";
|
|
5
|
+
import { getPremiseDir, getPremisesDir } from "../config.js";
|
|
6
|
+
import { errorExit } from "../output.js";
|
|
7
|
+
export async function readPremiseMeta(argumentId, version, premiseId) {
|
|
8
|
+
const filePath = path.join(getPremiseDir(argumentId, version, premiseId), "meta.json");
|
|
9
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => {
|
|
10
|
+
errorExit(`Premise "${premiseId}" not found.`);
|
|
11
|
+
});
|
|
12
|
+
const raw = JSON.parse(content);
|
|
13
|
+
try {
|
|
14
|
+
return Value.Parse(PremiseMetaSchema, raw);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
errorExit(`Invalid or corrupt file: ${filePath}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function writePremiseMeta(argumentId, version, meta) {
|
|
21
|
+
const dir = getPremiseDir(argumentId, version, meta.id);
|
|
22
|
+
await fs.mkdir(dir, { recursive: true });
|
|
23
|
+
await fs.writeFile(path.join(dir, "meta.json"), JSON.stringify(meta, null, 2));
|
|
24
|
+
}
|
|
25
|
+
export async function readPremiseData(argumentId, version, premiseId) {
|
|
26
|
+
const filePath = path.join(getPremiseDir(argumentId, version, premiseId), "data.json");
|
|
27
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => {
|
|
28
|
+
errorExit(`data.json not found for premise "${premiseId}".`);
|
|
29
|
+
});
|
|
30
|
+
const raw = JSON.parse(content);
|
|
31
|
+
try {
|
|
32
|
+
return Value.Parse(PremiseDataSchema, raw);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
errorExit(`Invalid or corrupt file: ${filePath}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function writePremiseData(argumentId, version, premiseId, data) {
|
|
39
|
+
const dir = getPremiseDir(argumentId, version, premiseId);
|
|
40
|
+
await fs.mkdir(dir, { recursive: true });
|
|
41
|
+
await fs.writeFile(path.join(dir, "data.json"), JSON.stringify(data, null, 2));
|
|
42
|
+
}
|
|
43
|
+
export async function listPremiseIds(argumentId, version) {
|
|
44
|
+
const dir = getPremisesDir(argumentId, version);
|
|
45
|
+
await fs.mkdir(dir, { recursive: true });
|
|
46
|
+
const entries = await fs
|
|
47
|
+
.readdir(dir, { withFileTypes: true })
|
|
48
|
+
.catch(() => []);
|
|
49
|
+
return entries
|
|
50
|
+
.filter((e) => e.isDirectory())
|
|
51
|
+
.map((e) => e.name)
|
|
52
|
+
.sort();
|
|
53
|
+
}
|
|
54
|
+
export async function deletePremiseDir(argumentId, version, premiseId) {
|
|
55
|
+
await fs.rm(getPremiseDir(argumentId, version, premiseId), {
|
|
56
|
+
recursive: true,
|
|
57
|
+
force: true,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
export async function premiseExists(argumentId, version, premiseId) {
|
|
61
|
+
const dir = getPremiseDir(argumentId, version, premiseId);
|
|
62
|
+
return fs
|
|
63
|
+
.stat(dir)
|
|
64
|
+
.then((s) => s.isDirectory())
|
|
65
|
+
.catch(() => false);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=premises.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premises.js","sourceRoot":"","sources":["../../../src/cli/storage/premises.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type TArgumentRoleState } from "../../lib/schemata/index.js";
|
|
2
|
+
export declare function readRoles(argumentId: string, version: number): Promise<TArgumentRoleState>;
|
|
3
|
+
export declare function writeRoles(argumentId: string, version: number, roles: TArgumentRoleState): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../../src/cli/storage/roles.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,KAAK,kBAAkB,EAC1B,MAAM,6BAA6B,CAAA;AAQpC,wBAAsB,SAAS,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAW7B;AAED,wBAAsB,UAAU,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import Value from "typebox/value";
|
|
4
|
+
import { ArgumentRoleStateSchema, } from "../../lib/schemata/index.js";
|
|
5
|
+
import { getVersionDir } from "../config.js";
|
|
6
|
+
import { errorExit } from "../output.js";
|
|
7
|
+
function rolesPath(argumentId, version) {
|
|
8
|
+
return path.join(getVersionDir(argumentId, version), "roles.json");
|
|
9
|
+
}
|
|
10
|
+
export async function readRoles(argumentId, version) {
|
|
11
|
+
const filePath = rolesPath(argumentId, version);
|
|
12
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => {
|
|
13
|
+
errorExit(`roles.json not found for ${argumentId}@${version}.`);
|
|
14
|
+
});
|
|
15
|
+
const raw = JSON.parse(content);
|
|
16
|
+
try {
|
|
17
|
+
return Value.Parse(ArgumentRoleStateSchema, raw);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
errorExit(`Invalid or corrupt file: ${filePath}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export async function writeRoles(argumentId, version, roles) {
|
|
24
|
+
await fs.writeFile(rolesPath(argumentId, version), JSON.stringify(roles, null, 2));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../src/cli/storage/roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,KAAK,MAAM,eAAe,CAAA;AACjC,OAAO,EACH,uBAAuB,GAE1B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,SAAS,SAAS,CAAC,UAAkB,EAAE,OAAe;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,UAAkB,EAClB,OAAe;IAEf,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QAC5D,SAAS,CAAC,4BAA4B,UAAU,IAAI,OAAO,GAAG,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IACF,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACL,SAAS,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,UAAkB,EAClB,OAAe,EACf,KAAyB;IAEzB,MAAM,EAAE,CAAC,SAAS,CACd,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CACjC,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type TPropositionalVariable } from "../../lib/schemata/index.js";
|
|
2
|
+
export declare function readVariables(argumentId: string, version: number): Promise<TPropositionalVariable[]>;
|
|
3
|
+
export declare function writeVariables(argumentId: string, version: number, variables: TPropositionalVariable[]): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/cli/storage/variables.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,sBAAsB,EAC9B,MAAM,6BAA6B,CAAA;AAUpC,wBAAsB,aAAa,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAWnC;AAED,wBAAsB,cAAc,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,sBAAsB,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import Type from "typebox";
|
|
4
|
+
import Value from "typebox/value";
|
|
5
|
+
import { PropositionalVariableSchema, } from "../../lib/schemata/index.js";
|
|
6
|
+
import { getVersionDir } from "../config.js";
|
|
7
|
+
import { errorExit } from "../output.js";
|
|
8
|
+
const VariablesFileSchema = Type.Array(PropositionalVariableSchema);
|
|
9
|
+
function variablesPath(argumentId, version) {
|
|
10
|
+
return path.join(getVersionDir(argumentId, version), "variables.json");
|
|
11
|
+
}
|
|
12
|
+
export async function readVariables(argumentId, version) {
|
|
13
|
+
const filePath = variablesPath(argumentId, version);
|
|
14
|
+
const content = await fs.readFile(filePath, "utf-8").catch(() => {
|
|
15
|
+
errorExit(`variables.json not found for ${argumentId}@${version}.`);
|
|
16
|
+
});
|
|
17
|
+
const raw = JSON.parse(content);
|
|
18
|
+
try {
|
|
19
|
+
return Value.Parse(VariablesFileSchema, raw);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
errorExit(`Invalid or corrupt file: ${filePath}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function writeVariables(argumentId, version, variables) {
|
|
26
|
+
await fs.writeFile(variablesPath(argumentId, version), JSON.stringify(variables, null, 2));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../../../src/cli/storage/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,IAAI,MAAM,SAAS,CAAA;AAC1B,OAAO,KAAK,MAAM,eAAe,CAAA;AACjC,OAAO,EACH,2BAA2B,GAE9B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;AAEnE,SAAS,aAAa,CAAC,UAAkB,EAAE,OAAe;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,UAAkB,EAClB,OAAe;IAEf,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QAC5D,SAAS,CAAC,gCAAgC,UAAU,IAAI,OAAO,GAAG,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IACF,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACL,SAAS,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,UAAkB,EAClB,OAAe,EACf,SAAmC;IAEnC,MAAM,EAAE,CAAC,SAAS,CACd,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAClC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CACrC,CAAA;AACL,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { registerMetaCommands } from "./cli/commands/meta.js";
|
|
4
|
+
import { registerArgumentCommands } from "./cli/commands/arguments.js";
|
|
5
|
+
import { registerVersionShowCommand } from "./cli/commands/versionShow.js";
|
|
6
|
+
import { registerRoleCommands } from "./cli/commands/roles.js";
|
|
7
|
+
import { registerVariableCommands } from "./cli/commands/variables.js";
|
|
8
|
+
import { registerPremiseCommands } from "./cli/commands/premises.js";
|
|
9
|
+
import { registerExpressionCommands } from "./cli/commands/expressions.js";
|
|
10
|
+
import { registerAnalysisCommands } from "./cli/commands/analysis.js";
|
|
11
|
+
import { registerRenderCommand } from "./cli/commands/render.js";
|
|
12
|
+
import { isNamedCommand, resolveVersion } from "./cli/router.js";
|
|
13
|
+
import { errorExit } from "./cli/output.js";
|
|
14
|
+
const program = new Command();
|
|
15
|
+
program
|
|
16
|
+
.name("core")
|
|
17
|
+
.description("Proposit Core CLI")
|
|
18
|
+
.enablePositionalOptions()
|
|
19
|
+
.allowUnknownOption(false);
|
|
20
|
+
// ── Named top-level commands ──────────────────────────────────────────────────
|
|
21
|
+
registerMetaCommands(program);
|
|
22
|
+
registerArgumentCommands(program);
|
|
23
|
+
// ── Version-scoped commands ───────────────────────────────────────────────────
|
|
24
|
+
// If the first user argument is not a named command, treat it as an argument ID
|
|
25
|
+
// followed by a version specifier, then dispatch to the appropriate sub-program.
|
|
26
|
+
if (!isNamedCommand(process.argv)) {
|
|
27
|
+
const [, , argumentId, versionArg, ...rest] = process.argv;
|
|
28
|
+
if (!argumentId || !versionArg) {
|
|
29
|
+
errorExit("Usage: core <argument_id> <argument_version> <command> ...\n core arguments <subcommand> ...");
|
|
30
|
+
}
|
|
31
|
+
// Resolve the version asynchronously, then build and parse a sub-program.
|
|
32
|
+
const version = await resolveVersion(argumentId, versionArg);
|
|
33
|
+
const sub = new Command();
|
|
34
|
+
sub.name("core")
|
|
35
|
+
.description(`Commands for ${argumentId}@${version}`)
|
|
36
|
+
.enablePositionalOptions();
|
|
37
|
+
registerVersionShowCommand(sub, argumentId, version);
|
|
38
|
+
registerRenderCommand(sub, argumentId, version);
|
|
39
|
+
registerRoleCommands(sub, argumentId, version);
|
|
40
|
+
registerVariableCommands(sub, argumentId, version);
|
|
41
|
+
registerPremiseCommands(sub, argumentId, version);
|
|
42
|
+
registerExpressionCommands(sub, argumentId, version);
|
|
43
|
+
registerAnalysisCommands(sub, argumentId, version);
|
|
44
|
+
// Replace the consumed positional args with the remainder so Commander
|
|
45
|
+
// sees: ["node", "core", <group>, <subcommand>, ...]
|
|
46
|
+
await sub.parseAsync(["node", "core", ...rest]);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
await program.parseAsync(process.argv);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAC7B,OAAO;KACF,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,mBAAmB,CAAC;KAChC,uBAAuB,EAAE;KACzB,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAE9B,iFAAiF;AACjF,oBAAoB,CAAC,OAAO,CAAC,CAAA;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAA;AAEjC,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAA;IAE1D,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,SAAS,CACL,oGAAoG,CACvG,CAAA;IACL,CAAC;IAED,0EAA0E;IAC1E,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAE5D,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAA;IACzB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;SACX,WAAW,CAAC,gBAAgB,UAAU,IAAI,OAAO,EAAE,CAAC;SACpD,uBAAuB,EAAE,CAAA;IAE9B,0BAA0B,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACpD,qBAAqB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAC/C,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAC9C,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAClD,uBAAuB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACjD,0BAA0B,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACpD,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAElD,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;AACnD,CAAC;KAAM,CAAC;IACJ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC1C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { TArgument } from "../schemata";
|
|
2
|
-
import type { TArgumentEngineData, TArgumentEvaluationOptions, TArgumentEvaluationResult, TArgumentRoleState, TValidationResult, TValidityCheckOptions, TValidityCheckResult, TVariableAssignment } from "../types/evaluation";
|
|
3
|
-
import { PremiseManager } from "./PremiseManager";
|
|
1
|
+
import type { TArgument } from "../schemata/index.js";
|
|
2
|
+
import type { TArgumentEngineData, TArgumentEvaluationOptions, TArgumentEvaluationResult, TArgumentRoleState, TValidationResult, TValidityCheckOptions, TValidityCheckResult, TVariableAssignment } from "../types/evaluation.js";
|
|
3
|
+
import { PremiseManager } from "./PremiseManager.js";
|
|
4
4
|
export declare class ArgumentEngine {
|
|
5
5
|
private argument;
|
|
6
6
|
private premises;
|
|
@@ -9,6 +9,7 @@ export declare class ArgumentEngine {
|
|
|
9
9
|
constructor(argument: TArgument);
|
|
10
10
|
getArgument(): TArgument;
|
|
11
11
|
createPremise(title?: string): PremiseManager;
|
|
12
|
+
createPremiseWithId(id: string, title?: string): PremiseManager;
|
|
12
13
|
removePremise(premiseId: string): void;
|
|
13
14
|
getPremise(premiseId: string): PremiseManager | undefined;
|
|
14
15
|
hasPremise(premiseId: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgumentEngine.d.ts","sourceRoot":"","sources":["../../../src/lib/core/ArgumentEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,
|
|
1
|
+
{"version":3,"file":"ArgumentEngine.d.ts","sourceRoot":"","sources":["../../../src/lib/core/ArgumentEngine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,sBAAsB,CAAA;AAC/E,OAAO,KAAK,EACR,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAIlB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACtB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,qBAAa,cAAc;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,mBAAmB,CAAoB;gBAEnC,QAAQ,EAAE,SAAS;IAOxB,WAAW,IAAI,SAAS;IAIxB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc;IAO7C,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc;IAS/D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQtC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,cAAc,IAAI,MAAM,EAAE;IAM1B,YAAY,IAAI,cAAc,EAAE;IAMhC,YAAY,IAAI,kBAAkB;IAOlC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAY7C,sBAAsB,IAAI,IAAI;IAI9B,oBAAoB,IAAI,cAAc,GAAG,SAAS;IAOlD,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAY7C,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIhD,sBAAsB,IAAI,cAAc,EAAE;IAM1C,MAAM,IAAI,mBAAmB;IAQ7B,WAAW,IAAI,mBAAmB;IAIlC,0BAA0B,IAAI;QACjC,WAAW,EAAE,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;QAC9D,QAAQ,EAAE,MAAM,CACZ,MAAM,EACN;YAAE,WAAW,EAAE,MAAM,EAAE,CAAC;YAAC,UAAU,EAAE,MAAM,EAAE,CAAA;SAAE,CAClD,CAAA;KACJ;IAuEM,oBAAoB,IAAI,iBAAiB;IA+FzC,QAAQ,CACX,UAAU,EAAE,mBAAmB,EAC/B,OAAO,CAAC,EAAE,0BAA0B,GACrC,yBAAyB;IA6HrB,aAAa,CAChB,OAAO,CAAC,EAAE,qBAAqB,GAChC,oBAAoB;CA4I1B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
-
import { getOrCreate, sortedUnique } from "../utils/collections";
|
|
3
|
-
import { makeErrorIssue, makeValidationResult } from "./evaluation/shared";
|
|
4
|
-
import { PremiseManager } from "./PremiseManager";
|
|
2
|
+
import { getOrCreate, sortedUnique } from "../utils/collections.js";
|
|
3
|
+
import { makeErrorIssue, makeValidationResult } from "./evaluation/shared.js";
|
|
4
|
+
import { PremiseManager } from "./PremiseManager.js";
|
|
5
5
|
export class ArgumentEngine {
|
|
6
6
|
argument;
|
|
7
7
|
premises;
|
|
@@ -22,6 +22,14 @@ export class ArgumentEngine {
|
|
|
22
22
|
this.premises.set(id, pm);
|
|
23
23
|
return pm;
|
|
24
24
|
}
|
|
25
|
+
createPremiseWithId(id, title) {
|
|
26
|
+
if (this.premises.has(id)) {
|
|
27
|
+
throw new Error(`Premise "${id}" already exists.`);
|
|
28
|
+
}
|
|
29
|
+
const pm = new PremiseManager(id, this.argument, title);
|
|
30
|
+
this.premises.set(id, pm);
|
|
31
|
+
return pm;
|
|
32
|
+
}
|
|
25
33
|
removePremise(premiseId) {
|
|
26
34
|
this.premises.delete(premiseId);
|
|
27
35
|
this.supportingPremiseIds.delete(premiseId);
|