@polintpro/proposit-core 0.5.2 → 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.
Files changed (163) hide show
  1. package/README.md +148 -6
  2. package/dist/cli/commands/arguments.d.ts.map +1 -1
  3. package/dist/cli/commands/arguments.js +33 -5
  4. package/dist/cli/commands/arguments.js.map +1 -1
  5. package/dist/cli/commands/claims.d.ts +3 -0
  6. package/dist/cli/commands/claims.d.ts.map +1 -0
  7. package/dist/cli/commands/claims.js +79 -0
  8. package/dist/cli/commands/claims.js.map +1 -0
  9. package/dist/cli/commands/parse.d.ts +3 -0
  10. package/dist/cli/commands/parse.d.ts.map +1 -0
  11. package/dist/cli/commands/parse.js +138 -0
  12. package/dist/cli/commands/parse.js.map +1 -0
  13. package/dist/cli/commands/sources.d.ts +1 -1
  14. package/dist/cli/commands/sources.d.ts.map +1 -1
  15. package/dist/cli/commands/sources.js +79 -94
  16. package/dist/cli/commands/sources.js.map +1 -1
  17. package/dist/cli/commands/variables.d.ts.map +1 -1
  18. package/dist/cli/commands/variables.js +37 -1
  19. package/dist/cli/commands/variables.js.map +1 -1
  20. package/dist/cli/config.d.ts +0 -2
  21. package/dist/cli/config.d.ts.map +1 -1
  22. package/dist/cli/config.js +0 -6
  23. package/dist/cli/config.js.map +1 -1
  24. package/dist/cli/engine.d.ts +14 -1
  25. package/dist/cli/engine.d.ts.map +1 -1
  26. package/dist/cli/engine.js +51 -35
  27. package/dist/cli/engine.js.map +1 -1
  28. package/dist/cli/import.d.ts +9 -1
  29. package/dist/cli/import.d.ts.map +1 -1
  30. package/dist/cli/import.js +5 -2
  31. package/dist/cli/import.js.map +1 -1
  32. package/dist/cli/llm/index.d.ts +6 -0
  33. package/dist/cli/llm/index.d.ts.map +1 -0
  34. package/dist/cli/llm/index.js +26 -0
  35. package/dist/cli/llm/index.js.map +1 -0
  36. package/dist/cli/llm/openai.d.ts +4 -0
  37. package/dist/cli/llm/openai.d.ts.map +1 -0
  38. package/dist/cli/llm/openai.js +44 -0
  39. package/dist/cli/llm/openai.js.map +1 -0
  40. package/dist/cli/llm/types.d.ts +14 -0
  41. package/dist/cli/llm/types.d.ts.map +1 -0
  42. package/dist/cli/llm/types.js +2 -0
  43. package/dist/cli/llm/types.js.map +1 -0
  44. package/dist/cli/router.d.ts.map +1 -1
  45. package/dist/cli/router.js +2 -0
  46. package/dist/cli/router.js.map +1 -1
  47. package/dist/cli/schemata.d.ts +0 -8
  48. package/dist/cli/schemata.d.ts.map +1 -1
  49. package/dist/cli/schemata.js +0 -10
  50. package/dist/cli/schemata.js.map +1 -1
  51. package/dist/cli/storage/libraries.d.ts +11 -0
  52. package/dist/cli/storage/libraries.d.ts.map +1 -0
  53. package/dist/cli/storage/libraries.js +61 -0
  54. package/dist/cli/storage/libraries.js.map +1 -0
  55. package/dist/cli.js +3 -1
  56. package/dist/cli.js.map +1 -1
  57. package/dist/extensions/basics/argument-parser.d.ts +12 -0
  58. package/dist/extensions/basics/argument-parser.d.ts.map +1 -0
  59. package/dist/extensions/basics/argument-parser.js +27 -0
  60. package/dist/extensions/basics/argument-parser.js.map +1 -0
  61. package/dist/extensions/basics/index.d.ts +4 -0
  62. package/dist/extensions/basics/index.d.ts.map +1 -0
  63. package/dist/extensions/basics/index.js +3 -0
  64. package/dist/extensions/basics/index.js.map +1 -0
  65. package/dist/extensions/basics/schemata.d.ts +31 -0
  66. package/dist/extensions/basics/schemata.d.ts.map +1 -0
  67. package/dist/extensions/basics/schemata.js +55 -0
  68. package/dist/extensions/basics/schemata.js.map +1 -0
  69. package/dist/lib/consts.d.ts.map +1 -1
  70. package/dist/lib/consts.js +7 -15
  71. package/dist/lib/consts.js.map +1 -1
  72. package/dist/lib/core/argument-engine.d.ts +15 -27
  73. package/dist/lib/core/argument-engine.d.ts.map +1 -1
  74. package/dist/lib/core/argument-engine.js +236 -242
  75. package/dist/lib/core/argument-engine.js.map +1 -1
  76. package/dist/lib/core/change-collector.d.ts +0 -7
  77. package/dist/lib/core/change-collector.d.ts.map +1 -1
  78. package/dist/lib/core/change-collector.js +0 -18
  79. package/dist/lib/core/change-collector.js.map +1 -1
  80. package/dist/lib/core/claim-library.d.ts +2 -2
  81. package/dist/lib/core/claim-library.d.ts.map +1 -1
  82. package/dist/lib/core/claim-source-library.d.ts +27 -0
  83. package/dist/lib/core/claim-source-library.d.ts.map +1 -0
  84. package/dist/lib/core/claim-source-library.js +116 -0
  85. package/dist/lib/core/claim-source-library.js.map +1 -0
  86. package/dist/lib/core/diff.d.ts +3 -7
  87. package/dist/lib/core/diff.d.ts.map +1 -1
  88. package/dist/lib/core/diff.js +14 -79
  89. package/dist/lib/core/diff.js.map +1 -1
  90. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts +30 -9
  91. package/dist/lib/core/interfaces/argument-engine.interfaces.d.ts.map +1 -1
  92. package/dist/lib/core/interfaces/index.d.ts +1 -2
  93. package/dist/lib/core/interfaces/index.d.ts.map +1 -1
  94. package/dist/lib/core/interfaces/library.interfaces.d.ts +251 -5
  95. package/dist/lib/core/interfaces/library.interfaces.d.ts.map +1 -1
  96. package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts +20 -29
  97. package/dist/lib/core/interfaces/premise-engine.interfaces.d.ts.map +1 -1
  98. package/dist/lib/core/parser/formula-gen.js +120 -47
  99. package/dist/lib/core/premise-engine.d.ts +7 -8
  100. package/dist/lib/core/premise-engine.d.ts.map +1 -1
  101. package/dist/lib/core/premise-engine.js +66 -82
  102. package/dist/lib/core/premise-engine.js.map +1 -1
  103. package/dist/lib/core/source-library.d.ts +2 -2
  104. package/dist/lib/core/source-library.d.ts.map +1 -1
  105. package/dist/lib/core/variable-manager.d.ts +3 -4
  106. package/dist/lib/core/variable-manager.d.ts.map +1 -1
  107. package/dist/lib/core/variable-manager.js +11 -1
  108. package/dist/lib/core/variable-manager.js.map +1 -1
  109. package/dist/lib/index.d.ts +3 -3
  110. package/dist/lib/index.d.ts.map +1 -1
  111. package/dist/lib/index.js +3 -2
  112. package/dist/lib/index.js.map +1 -1
  113. package/dist/lib/parsing/argument-parser.d.ts +47 -0
  114. package/dist/lib/parsing/argument-parser.d.ts.map +1 -0
  115. package/dist/lib/parsing/argument-parser.js +307 -0
  116. package/dist/lib/parsing/argument-parser.js.map +1 -0
  117. package/dist/lib/parsing/index.d.ts +7 -0
  118. package/dist/lib/parsing/index.d.ts.map +1 -0
  119. package/dist/lib/parsing/index.js +4 -0
  120. package/dist/lib/parsing/index.js.map +1 -0
  121. package/dist/lib/parsing/prompt-builder.d.ts +11 -0
  122. package/dist/lib/parsing/prompt-builder.d.ts.map +1 -0
  123. package/dist/lib/parsing/prompt-builder.js +178 -0
  124. package/dist/lib/parsing/prompt-builder.js.map +1 -0
  125. package/dist/lib/parsing/schemata.d.ts +77 -0
  126. package/dist/lib/parsing/schemata.d.ts.map +1 -0
  127. package/dist/lib/parsing/schemata.js +88 -0
  128. package/dist/lib/parsing/schemata.js.map +1 -0
  129. package/dist/lib/parsing/types.d.ts +13 -0
  130. package/dist/lib/parsing/types.d.ts.map +1 -0
  131. package/dist/lib/parsing/types.js +2 -0
  132. package/dist/lib/parsing/types.js.map +1 -0
  133. package/dist/lib/schemata/propositional.d.ts +36 -2
  134. package/dist/lib/schemata/propositional.d.ts.map +1 -1
  135. package/dist/lib/schemata/propositional.js +30 -4
  136. package/dist/lib/schemata/propositional.js.map +1 -1
  137. package/dist/lib/schemata/source.d.ts +4 -16
  138. package/dist/lib/schemata/source.d.ts.map +1 -1
  139. package/dist/lib/schemata/source.js +7 -17
  140. package/dist/lib/schemata/source.js.map +1 -1
  141. package/dist/lib/types/checksum.d.ts +2 -4
  142. package/dist/lib/types/checksum.d.ts.map +1 -1
  143. package/dist/lib/types/diff.d.ts +1 -5
  144. package/dist/lib/types/diff.d.ts.map +1 -1
  145. package/dist/lib/types/evaluation.d.ts +1 -1
  146. package/dist/lib/types/evaluation.d.ts.map +1 -1
  147. package/dist/lib/types/mutation.d.ts +0 -3
  148. package/dist/lib/types/mutation.d.ts.map +1 -1
  149. package/dist/lib/types/reactive.d.ts +1 -3
  150. package/dist/lib/types/reactive.d.ts.map +1 -1
  151. package/package.json +5 -1
  152. package/dist/cli/storage/sources.d.ts +0 -11
  153. package/dist/cli/storage/sources.d.ts.map +0 -1
  154. package/dist/cli/storage/sources.js +0 -105
  155. package/dist/cli/storage/sources.js.map +0 -1
  156. package/dist/lib/core/interfaces/source-management.interfaces.d.ts +0 -63
  157. package/dist/lib/core/interfaces/source-management.interfaces.d.ts.map +0 -1
  158. package/dist/lib/core/interfaces/source-management.interfaces.js +0 -2
  159. package/dist/lib/core/interfaces/source-management.interfaces.js.map +0 -1
  160. package/dist/lib/core/source-manager.d.ts +0 -38
  161. package/dist/lib/core/source-manager.d.ts.map +0 -1
  162. package/dist/lib/core/source-manager.js +0 -266
  163. package/dist/lib/core/source-manager.js.map +0 -1
@@ -0,0 +1,307 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { Value } from "typebox/value";
3
+ import { parseFormula } from "../core/parser/formula.js";
4
+ import { POSITION_INITIAL } from "../utils/position.js";
5
+ import { ArgumentEngine } from "../core/argument-engine.js";
6
+ import { ClaimLibrary } from "../core/claim-library.js";
7
+ import { SourceLibrary } from "../core/source-library.js";
8
+ import { ClaimSourceLibrary } from "../core/claim-source-library.js";
9
+ import { ParsedArgumentResponseSchema } from "./schemata.js";
10
+ // ---------------------------------------------------------------------------
11
+ // Internal helpers — reused from src/cli/import.ts patterns
12
+ // ---------------------------------------------------------------------------
13
+ /**
14
+ * Validates that `implies` and `iff` nodes appear only at the AST root.
15
+ */
16
+ function validateRootOnly(ast, isRoot, premiseMiniId) {
17
+ if (!isRoot && (ast.type === "implies" || ast.type === "iff")) {
18
+ throw new Error(`${ast.type === "implies" ? "Implication (→)" : "Biconditional (↔)"} operator must be at the root of a formula, but found nested in premise "${premiseMiniId}".`);
19
+ }
20
+ switch (ast.type) {
21
+ case "variable":
22
+ break;
23
+ case "not":
24
+ validateRootOnly(ast.operand, false, premiseMiniId);
25
+ break;
26
+ case "and":
27
+ case "or":
28
+ for (const operand of ast.operands) {
29
+ validateRootOnly(operand, false, premiseMiniId);
30
+ }
31
+ break;
32
+ case "implies":
33
+ case "iff":
34
+ validateRootOnly(ast.left, false, premiseMiniId);
35
+ validateRootOnly(ast.right, false, premiseMiniId);
36
+ break;
37
+ }
38
+ }
39
+ /** Recursively collects all variable names from a formula AST. */
40
+ function collectVariableNames(ast, names) {
41
+ switch (ast.type) {
42
+ case "variable":
43
+ names.add(ast.name);
44
+ break;
45
+ case "not":
46
+ collectVariableNames(ast.operand, names);
47
+ break;
48
+ case "and":
49
+ case "or":
50
+ for (const operand of ast.operands) {
51
+ collectVariableNames(operand, names);
52
+ }
53
+ break;
54
+ case "implies":
55
+ case "iff":
56
+ collectVariableNames(ast.left, names);
57
+ collectVariableNames(ast.right, names);
58
+ break;
59
+ }
60
+ }
61
+ /**
62
+ * Converts a formula AST into expression objects and adds them to a premise.
63
+ */
64
+ function buildExpressions(ast, parentId, position, argumentId, argumentVersion, premiseId, variablesBySymbol, addExpression) {
65
+ const id = randomUUID();
66
+ switch (ast.type) {
67
+ case "variable": {
68
+ const variable = variablesBySymbol.get(ast.name);
69
+ addExpression({
70
+ id,
71
+ argumentId,
72
+ argumentVersion,
73
+ premiseId,
74
+ type: "variable",
75
+ variableId: variable.id,
76
+ parentId,
77
+ position,
78
+ });
79
+ return id;
80
+ }
81
+ case "not": {
82
+ addExpression({
83
+ id,
84
+ argumentId,
85
+ argumentVersion,
86
+ premiseId,
87
+ type: "operator",
88
+ operator: "not",
89
+ parentId,
90
+ position,
91
+ });
92
+ buildExpressions(ast.operand, id, 0, argumentId, argumentVersion, premiseId, variablesBySymbol, addExpression);
93
+ return id;
94
+ }
95
+ case "and":
96
+ case "or": {
97
+ addExpression({
98
+ id,
99
+ argumentId,
100
+ argumentVersion,
101
+ premiseId,
102
+ type: "operator",
103
+ operator: ast.type,
104
+ parentId,
105
+ position,
106
+ });
107
+ for (let i = 0; i < ast.operands.length; i++) {
108
+ buildExpressions(ast.operands[i], id, i, argumentId, argumentVersion, premiseId, variablesBySymbol, addExpression);
109
+ }
110
+ return id;
111
+ }
112
+ case "implies":
113
+ case "iff": {
114
+ addExpression({
115
+ id,
116
+ argumentId,
117
+ argumentVersion,
118
+ premiseId,
119
+ type: "operator",
120
+ operator: ast.type,
121
+ parentId,
122
+ position,
123
+ });
124
+ buildExpressions(ast.left, id, 0, argumentId, argumentVersion, premiseId, variablesBySymbol, addExpression);
125
+ buildExpressions(ast.right, id, 1, argumentId, argumentVersion, premiseId, variablesBySymbol, addExpression);
126
+ return id;
127
+ }
128
+ }
129
+ }
130
+ // ---------------------------------------------------------------------------
131
+ // ArgumentParser
132
+ // ---------------------------------------------------------------------------
133
+ /**
134
+ * Validates and builds an `ArgumentEngine` from a parsed LLM response.
135
+ *
136
+ * Override the protected `map*` hooks to inject custom fields into
137
+ * the entities created during the build phase.
138
+ */
139
+ export class ArgumentParser {
140
+ responseSchema;
141
+ constructor(responseSchema) {
142
+ this.responseSchema = responseSchema ?? ParsedArgumentResponseSchema;
143
+ }
144
+ /**
145
+ * Validate raw LLM output against the response schema.
146
+ */
147
+ validate(raw) {
148
+ return Value.Parse(this.responseSchema, raw);
149
+ }
150
+ /**
151
+ * Build an ArgumentEngine from a validated response.
152
+ *
153
+ * @throws If `response.argument` is null
154
+ * @throws If any formula references an undeclared variable
155
+ * @throws If any formula contains nested implies/iff
156
+ * @throws If a variable references an undeclared claim miniId
157
+ * @throws If the conclusion premise miniId is unresolvable
158
+ */
159
+ build(response) {
160
+ const arg = response.argument;
161
+ if (!arg) {
162
+ throw new Error("Cannot build: argument is null.");
163
+ }
164
+ // 1. Parse all formulas upfront and validate
165
+ const declaredSymbols = new Set(arg.variables.map((v) => v.symbol));
166
+ const parsedFormulas = [];
167
+ for (const premise of arg.premises) {
168
+ let ast;
169
+ try {
170
+ ast = parseFormula(premise.formula);
171
+ }
172
+ catch (error) {
173
+ const msg = error instanceof Error ? error.message : String(error);
174
+ throw new Error(`Failed to parse formula for premise "${premise.miniId}": ${msg}`);
175
+ }
176
+ // Validate root-only constraint
177
+ validateRootOnly(ast, true, premise.miniId);
178
+ // Verify all variable names match declared variables
179
+ const formulaVarNames = new Set();
180
+ collectVariableNames(ast, formulaVarNames);
181
+ for (const name of formulaVarNames) {
182
+ if (!declaredSymbols.has(name)) {
183
+ throw new Error(`Formula for premise "${premise.miniId}" references undeclared variable symbol "${name}". Declared symbols: ${[...declaredSymbols].join(", ")}.`);
184
+ }
185
+ }
186
+ parsedFormulas.push({ ast, premise });
187
+ }
188
+ // 2. Create argument
189
+ const argumentId = randomUUID();
190
+ const argumentVersion = 0;
191
+ const argumentExtras = this.mapArgument(arg);
192
+ const argument = {
193
+ ...argumentExtras,
194
+ id: argumentId,
195
+ version: argumentVersion,
196
+ };
197
+ // 3. Create claims
198
+ const claimLibrary = new ClaimLibrary();
199
+ const claimMiniIdToId = new Map();
200
+ for (const parsedClaim of arg.claims) {
201
+ const extras = this.mapClaim(parsedClaim);
202
+ const claimId = randomUUID();
203
+ const claim = claimLibrary.create({
204
+ ...extras,
205
+ id: claimId,
206
+ });
207
+ claimMiniIdToId.set(parsedClaim.miniId, {
208
+ id: claim.id,
209
+ version: claim.version,
210
+ });
211
+ }
212
+ // 4. Create sources
213
+ const sourceLibrary = new SourceLibrary();
214
+ const sourceMiniIdToId = new Map();
215
+ for (const parsedSource of arg.sources) {
216
+ const extras = this.mapSource(parsedSource);
217
+ const sourceId = randomUUID();
218
+ const source = sourceLibrary.create({
219
+ ...extras,
220
+ id: sourceId,
221
+ });
222
+ sourceMiniIdToId.set(parsedSource.miniId, {
223
+ id: source.id,
224
+ version: source.version,
225
+ });
226
+ }
227
+ // 5. Wire claim-source associations
228
+ const claimSourceLibrary = new ClaimSourceLibrary(claimLibrary, sourceLibrary);
229
+ for (const parsedClaim of arg.claims) {
230
+ const claimRef = claimMiniIdToId.get(parsedClaim.miniId);
231
+ for (const sourceMiniId of parsedClaim.sourceMiniIds) {
232
+ const sourceRef = sourceMiniIdToId.get(sourceMiniId);
233
+ if (!sourceRef) {
234
+ throw new Error(`Claim "${parsedClaim.miniId}" references undeclared source "${sourceMiniId}".`);
235
+ }
236
+ const extras = this.mapClaimSourceAssociation(parsedClaim, claimRef.id, sourceRef.id);
237
+ claimSourceLibrary.add({
238
+ ...extras,
239
+ id: randomUUID(),
240
+ claimId: claimRef.id,
241
+ claimVersion: claimRef.version,
242
+ sourceId: sourceRef.id,
243
+ sourceVersion: sourceRef.version,
244
+ });
245
+ }
246
+ }
247
+ // 6. Create ArgumentEngine
248
+ const engine = new ArgumentEngine(argument, claimLibrary, sourceLibrary, claimSourceLibrary);
249
+ // 7. Create variables — resolve claimMiniId to real claim UUID
250
+ const variablesBySymbol = new Map();
251
+ for (const parsedVar of arg.variables) {
252
+ const claimRef = claimMiniIdToId.get(parsedVar.claimMiniId);
253
+ if (!claimRef) {
254
+ throw new Error(`Variable "${parsedVar.miniId}" references undeclared claim miniId "${parsedVar.claimMiniId}".`);
255
+ }
256
+ const extras = this.mapVariable(parsedVar);
257
+ const variable = {
258
+ ...extras,
259
+ id: randomUUID(),
260
+ argumentId,
261
+ argumentVersion,
262
+ symbol: parsedVar.symbol,
263
+ claimId: claimRef.id,
264
+ claimVersion: claimRef.version,
265
+ };
266
+ variablesBySymbol.set(parsedVar.symbol, variable);
267
+ engine.addVariable(variable);
268
+ }
269
+ // 8. Create premises and build expression trees
270
+ const premiseMiniIdToId = new Map();
271
+ for (const { ast, premise: parsedPremise } of parsedFormulas) {
272
+ const extras = this.mapPremise(parsedPremise);
273
+ const { result: pm } = engine.createPremise(extras);
274
+ premiseMiniIdToId.set(parsedPremise.miniId, pm.getId());
275
+ buildExpressions(ast, null, POSITION_INITIAL, argumentId, argumentVersion, pm.getId(), variablesBySymbol, (expr) => pm.addExpression(expr));
276
+ }
277
+ // 9. Set conclusion
278
+ const conclusionId = premiseMiniIdToId.get(arg.conclusionPremiseMiniId);
279
+ if (!conclusionId) {
280
+ throw new Error(`Conclusion premise miniId "${arg.conclusionPremiseMiniId}" could not be resolved to a premise.`);
281
+ }
282
+ engine.setConclusionPremise(conclusionId);
283
+ return { engine, claimLibrary, sourceLibrary, claimSourceLibrary };
284
+ }
285
+ // -----------------------------------------------------------------------
286
+ // Protected mapping hooks — override to inject custom fields
287
+ // -----------------------------------------------------------------------
288
+ mapArgument(_parsed) {
289
+ return {};
290
+ }
291
+ mapClaim(_parsed) {
292
+ return {};
293
+ }
294
+ mapSource(_parsed) {
295
+ return {};
296
+ }
297
+ mapVariable(_parsed) {
298
+ return {};
299
+ }
300
+ mapPremise(_parsed) {
301
+ return {};
302
+ }
303
+ mapClaimSourceAssociation(_parsed, _claimId, _sourceId) {
304
+ return {};
305
+ }
306
+ }
307
+ //# sourceMappingURL=argument-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argument-parser.js","sourceRoot":"","sources":["../../../src/lib/parsing/argument-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { ParsedClaimRoleType, ParsedClaimSchema, ParsedVariableSchema, ParsedSourceSchema, ParsedPremiseSchema, ParsedArgumentSchema, ParsedArgumentResponseSchema, buildParsingResponseSchema, getParsingResponseSchema, } from "./schemata.js";
2
+ export type { TParsedClaim, TParsedVariable, TParsedSource, TParsedPremise, TParsedArgument, TParsedArgumentResponse, } from "./schemata.js";
3
+ export { ArgumentParser } from "./argument-parser.js";
4
+ export type { TArgumentParserResult } from "./argument-parser.js";
5
+ export { buildParsingPrompt } from "./prompt-builder.js";
6
+ export type { TPromptOptions, TParsingSchemaOptions } from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/parsing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,EAC1B,wBAAwB,GAC3B,MAAM,eAAe,CAAA;AACtB,YAAY,EACR,YAAY,EACZ,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,EACf,uBAAuB,GAC1B,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { ParsedClaimRoleType, ParsedClaimSchema, ParsedVariableSchema, ParsedSourceSchema, ParsedPremiseSchema, ParsedArgumentSchema, ParsedArgumentResponseSchema, buildParsingResponseSchema, getParsingResponseSchema, } from "./schemata.js";
2
+ export { ArgumentParser } from "./argument-parser.js";
3
+ export { buildParsingPrompt } from "./prompt-builder.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/parsing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,EAC1B,wBAAwB,GAC3B,MAAM,eAAe,CAAA;AAStB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { TSchema } from "typebox";
2
+ import type { TPromptOptions } from "./types.js";
3
+ /**
4
+ * Build the system prompt for LLM-based argument parsing.
5
+ *
6
+ * @param responseSchema - The TypeBox response schema (core or extended)
7
+ * @param options - Optional configuration including custom instructions
8
+ * @returns The complete system prompt string
9
+ */
10
+ export declare function buildParsingPrompt(responseSchema: TSchema, options?: TPromptOptions): string;
11
+ //# sourceMappingURL=prompt-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../../src/lib/parsing/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAmNhD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAC9B,cAAc,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,cAAc,GACzB,MAAM,CAYR"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Core property keys for each sub-schema in the parsed argument response.
3
+ * Used to distinguish extension fields from built-in fields.
4
+ */
5
+ const CORE_CLAIM_KEYS = new Set(["miniId", "role", "sourceMiniIds"]);
6
+ const CORE_VARIABLE_KEYS = new Set(["miniId", "symbol", "claimMiniId"]);
7
+ const CORE_SOURCE_KEYS = new Set(["miniId", "text"]);
8
+ const CORE_PREMISE_KEYS = new Set(["miniId", "formula"]);
9
+ const CORE_ARGUMENT_KEYS = new Set([
10
+ "claims",
11
+ "variables",
12
+ "sources",
13
+ "premises",
14
+ "conclusionPremiseMiniId",
15
+ ]);
16
+ const CORE_RESPONSE_KEYS = new Set([
17
+ "argument",
18
+ "uncategorizedText",
19
+ "selectionRationale",
20
+ "failureText",
21
+ ]);
22
+ const CORE_PROMPT = `You are an expert argument analyst specializing in propositional logic. Your task is to analyze text and extract a structured propositional argument from it.
23
+
24
+ ## Task
25
+
26
+ Given input text, identify:
27
+ 1. The distinct claims (propositions) being made
28
+ 2. Assign a variable (a short symbolic name) to each claim, one variable per claim
29
+ 3. Write logical formula strings connecting those variables into premises
30
+ 4. Identify which premise is the conclusion
31
+
32
+ ## Formula Syntax
33
+
34
+ Formulas use infix notation with the following operators:
35
+
36
+ - **and**: logical conjunction (A and B)
37
+ - **or**: logical disjunction (A or B)
38
+ - **not**: logical negation (not A)
39
+ - **implies**: logical implication (A implies B)
40
+ - **iff**: logical biconditional (A iff B)
41
+ - **parentheses**: for grouping sub-expressions, e.g. (A or B) and C
42
+
43
+ ### Root-Only Operators
44
+
45
+ The operators **implies** and **iff** must appear ONLY at the root level of a formula. They cannot be nested inside other operators. For example:
46
+ - Valid: "A implies B"
47
+ - Valid: "A and B"
48
+ - Invalid: "(A implies B) and C" — implies is nested, not at root
49
+
50
+ If you need to express a nested conditional, introduce an intermediate claim and a separate premise.
51
+
52
+ ## Response Structure
53
+
54
+ Your response must conform to the provided JSON schema. Key fields:
55
+
56
+ - **argument**: The parsed argument object, or null if the text cannot be parsed as an argument
57
+ - **uncategorizedText**: Any portions of the input text that do not fit into the argument structure, or null
58
+ - **selectionRationale**: If the text contains multiple potential arguments, explain why you chose the one you did, or null
59
+ - **failureText**: If the argument cannot be parsed, explain why here, or null
60
+
61
+ ## Edge Cases
62
+
63
+ - If the input text contains multiple distinct arguments, select the strongest or most complete one and explain your choice in selectionRationale.
64
+ - If the input text cannot be reasonably interpreted as a propositional argument, set argument to null and provide an explanation in failureText.
65
+ - If portions of the text are tangential or do not contribute to the argument, capture them in uncategorizedText.
66
+
67
+ ## Writing Style
68
+
69
+ When formulating claims, write in third person, present tense, active voice. Each claim should be a clear, standalone declarative sentence.`;
70
+ /**
71
+ * Unwrap a Nullable union (anyOf with null) to get the inner schema.
72
+ */
73
+ function unwrapNullable(schema) {
74
+ if (schema.anyOf) {
75
+ const nonNull = schema.anyOf.find((s) => !(s.type === "null" || s.type === undefined));
76
+ if (nonNull)
77
+ return nonNull;
78
+ }
79
+ return schema;
80
+ }
81
+ /**
82
+ * Find extension fields in an object schema by comparing against known core keys.
83
+ */
84
+ function findExtensions(schema, coreKeys, entityName) {
85
+ if (!schema?.properties)
86
+ return [];
87
+ const extensions = [];
88
+ for (const [key, fieldSchema] of Object.entries(schema.properties)) {
89
+ if (coreKeys.has(key))
90
+ continue;
91
+ const unwrapped = unwrapNullable(fieldSchema);
92
+ extensions.push({
93
+ entity: entityName,
94
+ field: key,
95
+ description: unwrapped.description,
96
+ minLength: unwrapped.minLength,
97
+ maxLength: unwrapped.maxLength,
98
+ });
99
+ }
100
+ return extensions;
101
+ }
102
+ /**
103
+ * Walk the response schema to discover all extension fields.
104
+ */
105
+ function discoverExtensionFields(responseSchema) {
106
+ const schema = responseSchema;
107
+ const extensions = [];
108
+ // Response-level extensions
109
+ extensions.push(...findExtensions(schema, CORE_RESPONSE_KEYS, "response"));
110
+ // Argument-level: response.argument is Nullable(ArgumentSchema)
111
+ const argumentField = schema.properties?.argument;
112
+ if (!argumentField)
113
+ return extensions;
114
+ const argumentSchema = unwrapNullable(argumentField);
115
+ extensions.push(...findExtensions(argumentSchema, CORE_ARGUMENT_KEYS, "argument"));
116
+ // Claims: argument.claims is Array(ClaimSchema)
117
+ const claimsArray = argumentSchema.properties?.claims;
118
+ if (claimsArray?.items) {
119
+ extensions.push(...findExtensions(claimsArray.items, CORE_CLAIM_KEYS, "claim"));
120
+ }
121
+ // Variables: argument.variables is Array(VariableSchema)
122
+ const variablesArray = argumentSchema.properties?.variables;
123
+ if (variablesArray?.items) {
124
+ extensions.push(...findExtensions(variablesArray.items, CORE_VARIABLE_KEYS, "variable"));
125
+ }
126
+ // Sources: argument.sources is Array(SourceSchema)
127
+ const sourcesArray = argumentSchema.properties?.sources;
128
+ if (sourcesArray?.items) {
129
+ extensions.push(...findExtensions(sourcesArray.items, CORE_SOURCE_KEYS, "source"));
130
+ }
131
+ // Premises: argument.premises is Array(PremiseSchema)
132
+ const premisesArray = argumentSchema.properties?.premises;
133
+ if (premisesArray?.items) {
134
+ extensions.push(...findExtensions(premisesArray.items, CORE_PREMISE_KEYS, "premise"));
135
+ }
136
+ return extensions;
137
+ }
138
+ /**
139
+ * Format extension fields into instruction text.
140
+ */
141
+ function formatExtensionInstructions(fields) {
142
+ if (fields.length === 0)
143
+ return "";
144
+ const lines = ["\n\n## Extension Fields\n"];
145
+ for (const field of fields) {
146
+ const constraints = [];
147
+ if (field.description) {
148
+ constraints.push(field.description);
149
+ }
150
+ if (field.minLength !== undefined) {
151
+ constraints.push(`minLength: ${field.minLength}`);
152
+ }
153
+ if (field.maxLength !== undefined) {
154
+ constraints.push(`maxLength: ${field.maxLength}`);
155
+ }
156
+ const constraintStr = constraints.length > 0 ? ` — ${constraints.join("; ")}` : "";
157
+ lines.push(`- **${field.entity}.${field.field}**${constraintStr}`);
158
+ }
159
+ return lines.join("\n");
160
+ }
161
+ /**
162
+ * Build the system prompt for LLM-based argument parsing.
163
+ *
164
+ * @param responseSchema - The TypeBox response schema (core or extended)
165
+ * @param options - Optional configuration including custom instructions
166
+ * @returns The complete system prompt string
167
+ */
168
+ export function buildParsingPrompt(responseSchema, options) {
169
+ let prompt = CORE_PROMPT;
170
+ const extensionFields = discoverExtensionFields(responseSchema);
171
+ const extensionInstructions = formatExtensionInstructions(extensionFields);
172
+ prompt += extensionInstructions;
173
+ if (options?.customInstructions) {
174
+ prompt += `\n\n## Additional Instructions\n\n${options.customInstructions}`;
175
+ }
176
+ return prompt;
177
+ }
178
+ //# sourceMappingURL=prompt-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../src/lib/parsing/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import Type, { type Static, type TSchema } from "typebox";
2
+ import type { TParsingSchemaOptions } from "./types.js";
3
+ export declare const ParsedClaimRoleType: Type.TUnion<[Type.TLiteral<"premise">, Type.TLiteral<"conclusion">, Type.TLiteral<"intermediate">]>;
4
+ export declare const ParsedClaimSchema: Type.TObject<{
5
+ miniId: Type.TString;
6
+ role: Type.TUnion<[Type.TLiteral<"premise">, Type.TLiteral<"conclusion">, Type.TLiteral<"intermediate">]>;
7
+ sourceMiniIds: Type.TArray<Type.TString>;
8
+ }>;
9
+ export type TParsedClaim = Static<typeof ParsedClaimSchema>;
10
+ export declare const ParsedVariableSchema: Type.TObject<{
11
+ miniId: Type.TString;
12
+ symbol: Type.TString;
13
+ claimMiniId: Type.TString;
14
+ }>;
15
+ export type TParsedVariable = Static<typeof ParsedVariableSchema>;
16
+ export declare const ParsedSourceSchema: Type.TObject<{
17
+ miniId: Type.TString;
18
+ text: Type.TString;
19
+ }>;
20
+ export type TParsedSource = Static<typeof ParsedSourceSchema>;
21
+ export declare const ParsedPremiseSchema: Type.TObject<{
22
+ miniId: Type.TString;
23
+ formula: Type.TString;
24
+ }>;
25
+ export type TParsedPremise = Static<typeof ParsedPremiseSchema>;
26
+ export declare const ParsedArgumentSchema: Type.TObject<{
27
+ claims: Type.TArray<Type.TObject<{
28
+ miniId: Type.TString;
29
+ role: Type.TUnion<[Type.TLiteral<"premise">, Type.TLiteral<"conclusion">, Type.TLiteral<"intermediate">]>;
30
+ sourceMiniIds: Type.TArray<Type.TString>;
31
+ }>>;
32
+ variables: Type.TArray<Type.TObject<{
33
+ miniId: Type.TString;
34
+ symbol: Type.TString;
35
+ claimMiniId: Type.TString;
36
+ }>>;
37
+ sources: Type.TArray<Type.TObject<{
38
+ miniId: Type.TString;
39
+ text: Type.TString;
40
+ }>>;
41
+ premises: Type.TArray<Type.TObject<{
42
+ miniId: Type.TString;
43
+ formula: Type.TString;
44
+ }>>;
45
+ conclusionPremiseMiniId: Type.TString;
46
+ }>;
47
+ export type TParsedArgument = Static<typeof ParsedArgumentSchema>;
48
+ export declare const ParsedArgumentResponseSchema: Type.TObject<{
49
+ argument: Type.TUnion<[Type.TObject<{
50
+ claims: Type.TArray<Type.TObject<{
51
+ miniId: Type.TString;
52
+ role: Type.TUnion<[Type.TLiteral<"premise">, Type.TLiteral<"conclusion">, Type.TLiteral<"intermediate">]>;
53
+ sourceMiniIds: Type.TArray<Type.TString>;
54
+ }>>;
55
+ variables: Type.TArray<Type.TObject<{
56
+ miniId: Type.TString;
57
+ symbol: Type.TString;
58
+ claimMiniId: Type.TString;
59
+ }>>;
60
+ sources: Type.TArray<Type.TObject<{
61
+ miniId: Type.TString;
62
+ text: Type.TString;
63
+ }>>;
64
+ premises: Type.TArray<Type.TObject<{
65
+ miniId: Type.TString;
66
+ formula: Type.TString;
67
+ }>>;
68
+ conclusionPremiseMiniId: Type.TString;
69
+ }>, Type.TNull]>;
70
+ uncategorizedText: Type.TUnion<[Type.TString, Type.TNull]>;
71
+ selectionRationale: Type.TUnion<[Type.TString, Type.TNull]>;
72
+ failureText: Type.TUnion<[Type.TString, Type.TNull]>;
73
+ }>;
74
+ export type TParsedArgumentResponse = Static<typeof ParsedArgumentResponseSchema>;
75
+ export declare function buildParsingResponseSchema(options?: TParsingSchemaOptions): TSchema;
76
+ export declare function getParsingResponseSchema(schema?: TSchema): Record<string, unknown>;
77
+ //# sourceMappingURL=schemata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemata.d.ts","sourceRoot":"","sources":["../../../src/lib/parsing/schemata.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAgB,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAEvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,mBAAmB,qGAI9B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;EAO7B,CAAA;AACD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,eAAO,MAAM,oBAAoB;;;;EAOhC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,kBAAkB;;;EAM9B,CAAA;AACD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,mBAAmB;;;EAM/B,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;EAShC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;EAQxC,CAAA;AACD,MAAM,MAAM,uBAAuB,GAAG,MAAM,CACxC,OAAO,4BAA4B,CACtC,CAAA;AASD,wBAAgB,0BAA0B,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAgET;AAED,wBAAgB,wBAAwB,CACpC,MAAM,CAAC,EAAE,OAAO,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB"}