@polintpro/proposit-core 0.5.3 → 0.5.6
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 +147 -0
- package/dist/cli/commands/arguments.d.ts.map +1 -1
- package/dist/cli/commands/arguments.js +33 -5
- package/dist/cli/commands/arguments.js.map +1 -1
- package/dist/cli/commands/claims.d.ts +3 -0
- package/dist/cli/commands/claims.d.ts.map +1 -0
- package/dist/cli/commands/claims.js +79 -0
- package/dist/cli/commands/claims.js.map +1 -0
- package/dist/cli/commands/parse.d.ts +3 -0
- package/dist/cli/commands/parse.d.ts.map +1 -0
- package/dist/cli/commands/parse.js +138 -0
- package/dist/cli/commands/parse.js.map +1 -0
- package/dist/cli/commands/sources.d.ts +1 -1
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +83 -45
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/engine.d.ts +14 -1
- package/dist/cli/engine.d.ts.map +1 -1
- package/dist/cli/engine.js +45 -2
- package/dist/cli/engine.js.map +1 -1
- package/dist/cli/import.d.ts +9 -1
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +4 -2
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/llm/index.d.ts +6 -0
- package/dist/cli/llm/index.d.ts.map +1 -0
- package/dist/cli/llm/index.js +26 -0
- package/dist/cli/llm/index.js.map +1 -0
- package/dist/cli/llm/openai.d.ts +4 -0
- package/dist/cli/llm/openai.d.ts.map +1 -0
- package/dist/cli/llm/openai.js +44 -0
- package/dist/cli/llm/openai.js.map +1 -0
- package/dist/cli/llm/types.d.ts +14 -0
- package/dist/cli/llm/types.d.ts.map +1 -0
- package/dist/cli/llm/types.js +2 -0
- package/dist/cli/llm/types.js.map +1 -0
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +2 -0
- package/dist/cli/router.js.map +1 -1
- package/dist/cli/storage/libraries.d.ts +11 -0
- package/dist/cli/storage/libraries.d.ts.map +1 -0
- package/dist/cli/storage/libraries.js +61 -0
- package/dist/cli/storage/libraries.js.map +1 -0
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/extensions/basics/argument-parser.d.ts +12 -0
- package/dist/extensions/basics/argument-parser.d.ts.map +1 -0
- package/dist/extensions/basics/argument-parser.js +27 -0
- package/dist/extensions/basics/argument-parser.js.map +1 -0
- package/dist/extensions/basics/index.d.ts +4 -0
- package/dist/extensions/basics/index.d.ts.map +1 -0
- package/dist/extensions/basics/index.js +3 -0
- package/dist/extensions/basics/index.js.map +1 -0
- package/dist/extensions/basics/schemata.d.ts +31 -0
- package/dist/extensions/basics/schemata.d.ts.map +1 -0
- package/dist/extensions/basics/schemata.js +55 -0
- package/dist/extensions/basics/schemata.js.map +1 -0
- package/dist/lib/core/claim-library.d.ts +2 -2
- package/dist/lib/core/claim-library.d.ts.map +1 -1
- package/dist/lib/core/claim-source-library.d.ts +2 -2
- package/dist/lib/core/claim-source-library.d.ts.map +1 -1
- package/dist/lib/core/interfaces/index.d.ts +1 -1
- package/dist/lib/core/interfaces/index.d.ts.map +1 -1
- package/dist/lib/core/interfaces/library.interfaces.d.ts +243 -14
- package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
- package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts +19 -0
- package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts.map +1 -1
- package/dist/lib/core/parser/formula-gen.js +120 -47
- package/dist/lib/core/source-library.d.ts +2 -2
- package/dist/lib/core/source-library.d.ts.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parsing/argument-parser.d.ts +47 -0
- package/dist/lib/parsing/argument-parser.d.ts.map +1 -0
- package/dist/lib/parsing/argument-parser.js +307 -0
- package/dist/lib/parsing/argument-parser.js.map +1 -0
- package/dist/lib/parsing/index.d.ts +7 -0
- package/dist/lib/parsing/index.d.ts.map +1 -0
- package/dist/lib/parsing/index.js +4 -0
- package/dist/lib/parsing/index.js.map +1 -0
- package/dist/lib/parsing/prompt-builder.d.ts +11 -0
- package/dist/lib/parsing/prompt-builder.d.ts.map +1 -0
- package/dist/lib/parsing/prompt-builder.js +178 -0
- package/dist/lib/parsing/prompt-builder.js.map +1 -0
- package/dist/lib/parsing/schemata.d.ts +77 -0
- package/dist/lib/parsing/schemata.d.ts.map +1 -0
- package/dist/lib/parsing/schemata.js +88 -0
- package/dist/lib/parsing/schemata.js.map +1 -0
- package/dist/lib/parsing/types.d.ts +13 -0
- package/dist/lib/parsing/types.d.ts.map +1 -0
- package/dist/lib/parsing/types.js +2 -0
- package/dist/lib/parsing/types.js.map +1 -0
- package/package.json +5 -1
- package/dist/cli/storage/sources.d.ts +0 -4
- package/dist/cli/storage/sources.d.ts.map +0 -1
- package/dist/cli/storage/sources.js +0 -22
- package/dist/cli/storage/sources.js.map +0 -1
package/README.md
CHANGED
|
@@ -4,6 +4,38 @@ Core engine for building, evaluating, and checking the logical validity of propo
|
|
|
4
4
|
|
|
5
5
|
Also ships a **CLI** (`proposit-core`) for managing arguments, premises, variables, expressions, and analyses stored on disk.
|
|
6
6
|
|
|
7
|
+
## Visual Overview
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
flowchart TD
|
|
11
|
+
AE["ArgumentEngine"]
|
|
12
|
+
|
|
13
|
+
AE --> PM["PremiseEngine (0..N)"]
|
|
14
|
+
AE --> VM["Variables (0..N, shared)"]
|
|
15
|
+
AE --> Roles["Roles"]
|
|
16
|
+
|
|
17
|
+
PM --> EM["ExpressionManager"]
|
|
18
|
+
EM --> ET["Expression Tree"]
|
|
19
|
+
|
|
20
|
+
VM --> CBV["Claim-Bound\n(claimId, claimVersion)"]
|
|
21
|
+
VM --> PBV["Premise-Bound\n(boundPremiseId,\nboundArgumentId,\nboundArgumentVersion)"]
|
|
22
|
+
|
|
23
|
+
CBV -.-> CL
|
|
24
|
+
PBV -.->|"references specific premise\n(may be cross-argument)"| PM
|
|
25
|
+
|
|
26
|
+
Roles -.->|"conclusionPremiseId\n(supporting & constraint\nroles are derived)"| PM
|
|
27
|
+
|
|
28
|
+
subgraph Injected["Injected Libraries"]
|
|
29
|
+
CL["ClaimLibrary"]
|
|
30
|
+
SL["SourceLibrary"]
|
|
31
|
+
CSL["ClaimSourceLibrary"]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
AE -.-> Injected
|
|
35
|
+
|
|
36
|
+
style Injected fill:none,stroke:#888,stroke-dasharray: 5 5
|
|
37
|
+
```
|
|
38
|
+
|
|
7
39
|
## Installation
|
|
8
40
|
|
|
9
41
|
```bash
|
|
@@ -49,6 +81,36 @@ The five supported operators and their arities are:
|
|
|
49
81
|
|
|
50
82
|
`implies` and `iff` are **root-only**: they must have `parentId: null` and cannot be nested inside another expression.
|
|
51
83
|
|
|
84
|
+
The following diagram shows how the expression `¬(P ∧ R) → (Q ∨ S)` is represented as a tree. Note the formula node — a transparent wrapper equivalent to parentheses — and that `implies` must be the root:
|
|
85
|
+
|
|
86
|
+
```mermaid
|
|
87
|
+
flowchart TD
|
|
88
|
+
IMP["→ implies\n(root-only, binary)"]
|
|
89
|
+
|
|
90
|
+
IMP --> NOT["¬ not\n(unary)"]
|
|
91
|
+
IMP --> OR["∨ or\n(variadic, ≥ 2)"]
|
|
92
|
+
|
|
93
|
+
NOT --> FRM["( ) formula\n(transparent wrapper,\nexactly 1 child)"]
|
|
94
|
+
|
|
95
|
+
FRM --> AND["∧ and\n(variadic, ≥ 2)"]
|
|
96
|
+
|
|
97
|
+
AND --> P["P\n(variable)"]
|
|
98
|
+
AND --> R["R\n(variable)"]
|
|
99
|
+
|
|
100
|
+
OR --> Q["Q\n(variable)"]
|
|
101
|
+
OR --> S["S\n(variable)"]
|
|
102
|
+
|
|
103
|
+
style IMP fill:#e8f4fd,stroke:#2196f3
|
|
104
|
+
style NOT fill:#e8f4fd,stroke:#2196f3
|
|
105
|
+
style AND fill:#e8f4fd,stroke:#2196f3
|
|
106
|
+
style OR fill:#e8f4fd,stroke:#2196f3
|
|
107
|
+
style FRM fill:none,stroke:#888,stroke-dasharray: 5 5
|
|
108
|
+
style P fill:#f5f5f5,stroke:#666
|
|
109
|
+
style R fill:#f5f5f5,stroke:#666
|
|
110
|
+
style Q fill:#f5f5f5,stroke:#666
|
|
111
|
+
style S fill:#f5f5f5,stroke:#666
|
|
112
|
+
```
|
|
113
|
+
|
|
52
114
|
### Argument roles
|
|
53
115
|
|
|
54
116
|
To evaluate or check an argument, premises must be assigned roles:
|
|
@@ -58,6 +120,46 @@ To evaluate or check an argument, premises must be assigned roles:
|
|
|
58
120
|
|
|
59
121
|
A premise that is neither supporting nor the conclusion and whose type is `"constraint"` is automatically used to filter admissible variable assignments during validity checking.
|
|
60
122
|
|
|
123
|
+
The following diagram shows how premises, roles, and shared variables compose an argument:
|
|
124
|
+
|
|
125
|
+
```mermaid
|
|
126
|
+
flowchart TD
|
|
127
|
+
ARG["Argument"]
|
|
128
|
+
|
|
129
|
+
ARG --> P1["Premise 1\n<b>Conclusion</b>\n(inference: root is →)"]
|
|
130
|
+
ARG --> P2["Premise 2\n<b>Supporting</b>\n(inference: root is ↔)"]
|
|
131
|
+
ARG --> P3["Premise 3\n<b>Constraint</b>\n(root is ∧)"]
|
|
132
|
+
|
|
133
|
+
subgraph Shared["Shared Variables"]
|
|
134
|
+
VP["P"]
|
|
135
|
+
VQ["Q"]
|
|
136
|
+
VR["R"]
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
P1 -.- VP
|
|
140
|
+
P1 -.- VQ
|
|
141
|
+
P2 -.- VQ
|
|
142
|
+
P2 -.- VR
|
|
143
|
+
P3 -.- VP
|
|
144
|
+
P3 -.- VR
|
|
145
|
+
|
|
146
|
+
note1["Conclusion: set via setConclusionPremise()\nFirst premise auto-designated if not set"]
|
|
147
|
+
note2["Supporting: any inference premise\nthat is not the conclusion (derived)"]
|
|
148
|
+
note3["Constraint: any non-inference premise (derived)"]
|
|
149
|
+
|
|
150
|
+
P1 ~~~ note1
|
|
151
|
+
P2 ~~~ note2
|
|
152
|
+
P3 ~~~ note3
|
|
153
|
+
|
|
154
|
+
style P1 fill:#e8f4fd,stroke:#2196f3
|
|
155
|
+
style P2 fill:#e8f4fd,stroke:#2196f3
|
|
156
|
+
style P3 fill:#fff3e0,stroke:#ff9800
|
|
157
|
+
style Shared fill:none,stroke:#888,stroke-dasharray: 5 5
|
|
158
|
+
style note1 fill:none,stroke:none
|
|
159
|
+
style note2 fill:none,stroke:none
|
|
160
|
+
style note3 fill:none,stroke:none
|
|
161
|
+
```
|
|
162
|
+
|
|
61
163
|
### Sources
|
|
62
164
|
|
|
63
165
|
A **source** is an evidentiary reference (paper, article, URL). Source entities live in a global `SourceLibrary` with versioning and freeze semantics (same as `ClaimLibrary`).
|
|
@@ -208,6 +310,51 @@ const { result: expr, changes: exprChanges } = pm.addExpression({
|
|
|
208
310
|
|
|
209
311
|
### Evaluating an argument
|
|
210
312
|
|
|
313
|
+
The evaluation pipeline proceeds as follows:
|
|
314
|
+
|
|
315
|
+
```mermaid
|
|
316
|
+
flowchart LR
|
|
317
|
+
IN["Input\n(variable ID → true/false/null\n+ rejected expression IDs)"]
|
|
318
|
+
|
|
319
|
+
IN --> VAL{"validateEvaluability()"}
|
|
320
|
+
|
|
321
|
+
VAL -->|"fail"| FAIL["{ ok: false }\nvalidation errors"]
|
|
322
|
+
VAL -->|"pass"| CON["Evaluate\nConstraint\nPremises"]
|
|
323
|
+
|
|
324
|
+
CON --> ADM{"Admissible?\n(three-valued)"}
|
|
325
|
+
|
|
326
|
+
ADM -->|"true"| SUP["Evaluate\nSupporting\nPremises"]
|
|
327
|
+
ADM -->|"false/null"| INADM["Not admissible\n(skip)"]
|
|
328
|
+
|
|
329
|
+
SUP --> SUPR{"All supporting\ntrue?\n(three-valued)"}
|
|
330
|
+
|
|
331
|
+
SUPR -->|"true"| CONC["Evaluate\nConclusion"]
|
|
332
|
+
SUPR -->|"false/null"| NONCE["Not a\ncounterexample"]
|
|
333
|
+
|
|
334
|
+
CONC --> CONCR{"Conclusion\ntrue?\n(three-valued)"}
|
|
335
|
+
|
|
336
|
+
CONCR -->|"false"| CE["Counterexample\n(admissible + all supporting\ntrue + conclusion false)"]
|
|
337
|
+
CONCR -->|"true/null"| NONCE2["Not a\ncounterexample"]
|
|
338
|
+
|
|
339
|
+
subgraph Validity["Validity Check (all 2ⁿ assignments)"]
|
|
340
|
+
direction LR
|
|
341
|
+
VALID["No counterexamples\namong admissible\nassignments → Valid"]
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
CE --> Validity
|
|
345
|
+
NONCE --> Validity
|
|
346
|
+
NONCE2 --> Validity
|
|
347
|
+
INADM --> Validity
|
|
348
|
+
|
|
349
|
+
style FAIL fill:#ffebee,stroke:#f44336
|
|
350
|
+
style CE fill:#ffebee,stroke:#f44336
|
|
351
|
+
style NONCE fill:#e8f5e9,stroke:#4caf50
|
|
352
|
+
style NONCE2 fill:#e8f5e9,stroke:#4caf50
|
|
353
|
+
style INADM fill:#f5f5f5,stroke:#888
|
|
354
|
+
style VALID fill:#e8f5e9,stroke:#4caf50
|
|
355
|
+
style Validity fill:none,stroke:#888,stroke-dasharray: 5 5
|
|
356
|
+
```
|
|
357
|
+
|
|
211
358
|
Assignments use `TCoreExpressionAssignment`, which carries both variable truth values (three-valued: `true`, `false`, or `null` for unknown) and a list of rejected expression IDs:
|
|
212
359
|
|
|
213
360
|
```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/arguments.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/arguments.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8BnC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmM/D"}
|
|
@@ -4,12 +4,16 @@ import path from "node:path";
|
|
|
4
4
|
import { Command } from "commander";
|
|
5
5
|
import { importArgumentFromYaml } from "../import.js";
|
|
6
6
|
import { getVersionDir } from "../config.js";
|
|
7
|
-
import { persistEngine } from "../engine.js";
|
|
7
|
+
import { hydrateLibraries, persistEngine, persistLibraries } from "../engine.js";
|
|
8
|
+
import { ClaimLibrary } from "../../lib/core/claim-library.js";
|
|
9
|
+
import { SourceLibrary } from "../../lib/core/source-library.js";
|
|
10
|
+
import { ClaimSourceLibrary } from "../../lib/core/claim-source-library.js";
|
|
8
11
|
import { errorExit, printJson, printLine, requireConfirmation, } from "../output.js";
|
|
9
12
|
import { copyVersionDir, deleteArgumentDir, deleteVersionDir, latestVersionNumber, listArgumentIds, listVersionNumbers, readArgumentMeta, readVersionMeta, writeArgumentMeta, writeVersionMeta, } from "../storage/arguments.js";
|
|
10
13
|
import { writeVariables } from "../storage/variables.js";
|
|
11
14
|
import { writeRoles } from "../storage/roles.js";
|
|
12
15
|
import { getPremisesDir } from "../config.js";
|
|
16
|
+
import { registerParseCommand } from "./parse.js";
|
|
13
17
|
export function registerArgumentCommands(program) {
|
|
14
18
|
const args = program.command("arguments").description("Manage arguments");
|
|
15
19
|
args.command("create <title> <description>")
|
|
@@ -39,15 +43,38 @@ export function registerArgumentCommands(program) {
|
|
|
39
43
|
catch {
|
|
40
44
|
errorExit(`Cannot read file: ${filePath}`);
|
|
41
45
|
}
|
|
42
|
-
let
|
|
46
|
+
let result;
|
|
43
47
|
try {
|
|
44
|
-
|
|
48
|
+
result = importArgumentFromYaml(content);
|
|
45
49
|
}
|
|
46
50
|
catch (error) {
|
|
47
51
|
errorExit(error instanceof Error ? error.message : String(error));
|
|
48
52
|
}
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
// Merge new libraries into existing global libraries
|
|
54
|
+
const existing = await hydrateLibraries();
|
|
55
|
+
const mergedClaims = ClaimLibrary.fromSnapshot({
|
|
56
|
+
claims: [
|
|
57
|
+
...existing.claimLibrary.snapshot().claims,
|
|
58
|
+
...result.claimLibrary.snapshot().claims,
|
|
59
|
+
],
|
|
60
|
+
});
|
|
61
|
+
const mergedSources = SourceLibrary.fromSnapshot({
|
|
62
|
+
sources: [
|
|
63
|
+
...existing.sourceLibrary.snapshot().sources,
|
|
64
|
+
...result.sourceLibrary.snapshot().sources,
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
const mergedAssocs = ClaimSourceLibrary.fromSnapshot({
|
|
68
|
+
claimSourceAssociations: [
|
|
69
|
+
...existing.claimSourceLibrary.snapshot()
|
|
70
|
+
.claimSourceAssociations,
|
|
71
|
+
...result.claimSourceLibrary.snapshot()
|
|
72
|
+
.claimSourceAssociations,
|
|
73
|
+
],
|
|
74
|
+
}, mergedClaims, mergedSources);
|
|
75
|
+
await persistEngine(result.engine);
|
|
76
|
+
await persistLibraries(mergedClaims, mergedSources, mergedAssocs);
|
|
77
|
+
printLine(result.engine.getArgument().id);
|
|
51
78
|
});
|
|
52
79
|
args.command("list")
|
|
53
80
|
.description("List all arguments")
|
|
@@ -137,5 +164,6 @@ export function registerArgumentCommands(program) {
|
|
|
137
164
|
await fs.writeFile(newMetaPath, JSON.stringify(cleanMeta, null, 2));
|
|
138
165
|
printLine(`Version ${V} published, draft version ${newV} prepared`);
|
|
139
166
|
});
|
|
167
|
+
registerParseCommand(args);
|
|
140
168
|
}
|
|
141
169
|
//# sourceMappingURL=arguments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../src/cli/commands/arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../../../src/cli/commands/arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/claims.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwF5D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { hydrateLibraries, persistLibraries } from "../engine.js";
|
|
4
|
+
import { errorExit, printJson, printLine } from "../output.js";
|
|
5
|
+
export function registerClaimCommands(program) {
|
|
6
|
+
const claims = program
|
|
7
|
+
.command("claims")
|
|
8
|
+
.description("Manage global claim library");
|
|
9
|
+
claims
|
|
10
|
+
.command("list")
|
|
11
|
+
.description("List all claims")
|
|
12
|
+
.option("--json", "Output as JSON")
|
|
13
|
+
.action(async (opts) => {
|
|
14
|
+
const { claimLibrary } = await hydrateLibraries();
|
|
15
|
+
const all = claimLibrary.getAll();
|
|
16
|
+
if (opts.json) {
|
|
17
|
+
printJson(all);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
for (const claim of all) {
|
|
21
|
+
const frozen = claim.frozen ? " [frozen]" : "";
|
|
22
|
+
printLine(`${claim.id}@${claim.version}${frozen}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
claims
|
|
27
|
+
.command("show <claim_id>")
|
|
28
|
+
.description("Show all versions of a claim")
|
|
29
|
+
.option("--json", "Output as JSON")
|
|
30
|
+
.action(async (claimId, opts) => {
|
|
31
|
+
const { claimLibrary } = await hydrateLibraries();
|
|
32
|
+
const versions = claimLibrary.getVersions(claimId);
|
|
33
|
+
if (versions.length === 0) {
|
|
34
|
+
errorExit(`Claim "${claimId}" not found.`);
|
|
35
|
+
}
|
|
36
|
+
if (opts.json) {
|
|
37
|
+
printJson(versions);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
for (const v of versions) {
|
|
41
|
+
const frozen = v.frozen ? " [frozen]" : "";
|
|
42
|
+
printLine(`v${v.version}${frozen}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
claims
|
|
47
|
+
.command("add")
|
|
48
|
+
.description("Create a new claim")
|
|
49
|
+
.action(async () => {
|
|
50
|
+
const libs = await hydrateLibraries();
|
|
51
|
+
const claim = libs.claimLibrary.create({
|
|
52
|
+
id: randomUUID(),
|
|
53
|
+
});
|
|
54
|
+
await persistLibraries(libs.claimLibrary, libs.sourceLibrary, libs.claimSourceLibrary);
|
|
55
|
+
printLine(claim.id);
|
|
56
|
+
});
|
|
57
|
+
claims
|
|
58
|
+
.command("freeze <claim_id>")
|
|
59
|
+
.description("Freeze the current version and create a new mutable version")
|
|
60
|
+
.action(async (claimId) => {
|
|
61
|
+
const libs = await hydrateLibraries();
|
|
62
|
+
const current = libs.claimLibrary.getCurrent(claimId);
|
|
63
|
+
if (!current) {
|
|
64
|
+
errorExit(`Claim "${claimId}" not found.`);
|
|
65
|
+
}
|
|
66
|
+
let frozen, newVersion;
|
|
67
|
+
try {
|
|
68
|
+
const result = libs.claimLibrary.freeze(claimId);
|
|
69
|
+
frozen = result.frozen;
|
|
70
|
+
newVersion = result.current;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
errorExit(error instanceof Error ? error.message : String(error));
|
|
74
|
+
}
|
|
75
|
+
await persistLibraries(libs.claimLibrary, libs.sourceLibrary, libs.claimSourceLibrary);
|
|
76
|
+
printLine(`Frozen v${frozen.version}, new mutable v${newVersion.version}`);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=claims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../../src/cli/commands/claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4CxC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAmJxD"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { ArgumentParser, ParsedArgumentResponseSchema, buildParsingPrompt, } from "../../lib/parsing/index.js";
|
|
2
|
+
import { hydrateLibraries, persistEngine, persistLibraries } from "../engine.js";
|
|
3
|
+
import { ClaimLibrary } from "../../lib/core/claim-library.js";
|
|
4
|
+
import { SourceLibrary } from "../../lib/core/source-library.js";
|
|
5
|
+
import { ClaimSourceLibrary } from "../../lib/core/claim-source-library.js";
|
|
6
|
+
import { errorExit, printJson, printLine } from "../output.js";
|
|
7
|
+
import { resolveApiKey, createLlmProvider } from "../llm/index.js";
|
|
8
|
+
class CliArgumentParser extends ArgumentParser {
|
|
9
|
+
title;
|
|
10
|
+
description;
|
|
11
|
+
constructor(title, description) {
|
|
12
|
+
super();
|
|
13
|
+
this.title = title;
|
|
14
|
+
this.description = description;
|
|
15
|
+
}
|
|
16
|
+
mapArgument(_parsed) {
|
|
17
|
+
return {
|
|
18
|
+
title: this.title,
|
|
19
|
+
description: this.description,
|
|
20
|
+
createdAt: new Date(),
|
|
21
|
+
published: false,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function readStdin() {
|
|
26
|
+
const chunks = [];
|
|
27
|
+
for await (const chunk of process.stdin) {
|
|
28
|
+
chunks.push(chunk);
|
|
29
|
+
}
|
|
30
|
+
return Buffer.concat(chunks).toString("utf-8");
|
|
31
|
+
}
|
|
32
|
+
export function registerParseCommand(args) {
|
|
33
|
+
args.command("parse [text]")
|
|
34
|
+
.description("Parse natural-language text into a structured argument using an LLM")
|
|
35
|
+
.option("--llm <provider>", "LLM provider name", "openai")
|
|
36
|
+
.option("--api-key <key>", "API key (overrides env var)")
|
|
37
|
+
.option("--model <model>", "Model override")
|
|
38
|
+
.option("--title <title>", "Argument title", "Parsed argument")
|
|
39
|
+
.option("--description <desc>", "Argument description", "")
|
|
40
|
+
.option("--dry-run", "Print raw LLM JSON without persisting")
|
|
41
|
+
.action(async (text, opts) => {
|
|
42
|
+
// 1. Resolve API key
|
|
43
|
+
let apiKey;
|
|
44
|
+
try {
|
|
45
|
+
apiKey = resolveApiKey(opts.llm, opts.apiKey);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
errorExit(error instanceof Error ? error.message : String(error));
|
|
49
|
+
}
|
|
50
|
+
// 2. Resolve input text
|
|
51
|
+
let inputText;
|
|
52
|
+
if (text) {
|
|
53
|
+
inputText = text;
|
|
54
|
+
}
|
|
55
|
+
else if (!process.stdin.isTTY) {
|
|
56
|
+
inputText = await readStdin();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
errorExit("No input text provided. Pass as argument or pipe to stdin.");
|
|
60
|
+
}
|
|
61
|
+
if (!inputText.trim()) {
|
|
62
|
+
errorExit("Input text is empty.");
|
|
63
|
+
}
|
|
64
|
+
// 3. Build prompt and schema
|
|
65
|
+
const responseSchema = ParsedArgumentResponseSchema;
|
|
66
|
+
const systemPrompt = buildParsingPrompt(responseSchema);
|
|
67
|
+
// 4. Call LLM
|
|
68
|
+
const provider = createLlmProvider(opts.llm, {
|
|
69
|
+
apiKey,
|
|
70
|
+
model: opts.model,
|
|
71
|
+
});
|
|
72
|
+
let result;
|
|
73
|
+
try {
|
|
74
|
+
result = await provider.complete({
|
|
75
|
+
systemPrompt,
|
|
76
|
+
userMessage: inputText,
|
|
77
|
+
responseSchema,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
errorExit(error instanceof Error ? error.message : String(error));
|
|
82
|
+
}
|
|
83
|
+
// 5. Dry-run: print raw response and exit
|
|
84
|
+
if (opts.dryRun) {
|
|
85
|
+
printJson(result);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// 6. Validate
|
|
89
|
+
const parser = new CliArgumentParser(opts.title, opts.description);
|
|
90
|
+
let response;
|
|
91
|
+
try {
|
|
92
|
+
response = parser.validate(result);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
errorExit(`Validation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
96
|
+
}
|
|
97
|
+
// 7. Check for null argument
|
|
98
|
+
if (response.argument === null) {
|
|
99
|
+
errorExit(response.failureText ??
|
|
100
|
+
"The LLM could not parse the input as an argument.");
|
|
101
|
+
}
|
|
102
|
+
// 8. Build engine
|
|
103
|
+
let built;
|
|
104
|
+
try {
|
|
105
|
+
built = parser.build(response);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
errorExit(`Build failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
109
|
+
}
|
|
110
|
+
// 9. Merge libraries with existing global state
|
|
111
|
+
const existing = await hydrateLibraries();
|
|
112
|
+
const mergedClaims = ClaimLibrary.fromSnapshot({
|
|
113
|
+
claims: [
|
|
114
|
+
...existing.claimLibrary.snapshot().claims,
|
|
115
|
+
...built.claimLibrary.snapshot().claims,
|
|
116
|
+
],
|
|
117
|
+
});
|
|
118
|
+
const mergedSources = SourceLibrary.fromSnapshot({
|
|
119
|
+
sources: [
|
|
120
|
+
...existing.sourceLibrary.snapshot().sources,
|
|
121
|
+
...built.sourceLibrary.snapshot().sources,
|
|
122
|
+
],
|
|
123
|
+
});
|
|
124
|
+
const mergedAssocs = ClaimSourceLibrary.fromSnapshot({
|
|
125
|
+
claimSourceAssociations: [
|
|
126
|
+
...existing.claimSourceLibrary.snapshot()
|
|
127
|
+
.claimSourceAssociations,
|
|
128
|
+
...built.claimSourceLibrary.snapshot()
|
|
129
|
+
.claimSourceAssociations,
|
|
130
|
+
],
|
|
131
|
+
}, mergedClaims, mergedSources);
|
|
132
|
+
// 10. Persist and output
|
|
133
|
+
await persistEngine(built.engine);
|
|
134
|
+
await persistLibraries(mergedClaims, mergedSources, mergedAssocs);
|
|
135
|
+
printLine(built.engine.getArgument().id);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/cli/commands/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sources.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkH7D"}
|