@proposit/shared 0.5.1 → 0.6.1

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.
@@ -1,6 +1,6 @@
1
1
  export { mergeChangesets } from "./types.js";
2
2
  export type { ProjectEngine, ProjectChangeset, ProjectMutationResult, } from "./types.js";
3
- export { mutateCreatePremise, mutateUpdatePremiseRole, mutateUpdatePremiseExtras, mutateDeletePremise, } from "./premises.js";
3
+ export { mutateCreatePremise, mutateUpdatePremiseRole, mutateUpdatePremiseExtras, mutateDeletePremise, mutateCreateDerivationPremise, clearDerivationAntecedent, populateDerivationFromCitations, } from "./premises.js";
4
4
  export { mutateCreateExpression, mutateUpdateExpression, mutateDeleteExpression, mutateToggleNegation, mutateChangeOperator, mutateAddSiblingExpression, mutateWrapExpression, mutateCreateExpressionWithOperator, } from "./expressions.js";
5
5
  export { mutateCreateVariable, mutateUpdateVariable, mutateDeleteVariable, } from "./variables.js";
6
6
  export { mutateSetClaim, mutateUpdateClaim, mutateRemoveClaimWithCascade, } from "./claims.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/mutations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GACxB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACtB,MAAM,eAAe,CAAA;AAEtB,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,GACrC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,4BAA4B,GAC/B,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/mutations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GACxB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,+BAA+B,GAClC,MAAM,eAAe,CAAA;AAEtB,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,GACrC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,4BAA4B,GAC/B,MAAM,aAAa,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export { mergeChangesets } from "./types.js";
2
- export { mutateCreatePremise, mutateUpdatePremiseRole, mutateUpdatePremiseExtras, mutateDeletePremise, } from "./premises.js";
2
+ export { mutateCreatePremise, mutateUpdatePremiseRole, mutateUpdatePremiseExtras, mutateDeletePremise, mutateCreateDerivationPremise, clearDerivationAntecedent, populateDerivationFromCitations, } from "./premises.js";
3
3
  export { mutateCreateExpression, mutateUpdateExpression, mutateDeleteExpression, mutateToggleNegation, mutateChangeOperator, mutateAddSiblingExpression, mutateWrapExpression, mutateCreateExpressionWithOperator, } from "./expressions.js";
4
4
  export { mutateCreateVariable, mutateUpdateVariable, mutateDeleteVariable, } from "./variables.js";
5
5
  export { mutateSetClaim, mutateUpdateClaim, mutateRemoveClaimWithCascade, } from "./claims.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/mutations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAO5C,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACtB,MAAM,eAAe,CAAA;AAEtB,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,GACrC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,4BAA4B,GAC/B,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/mutations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAO5C,OAAO,EACH,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,+BAA+B,GAClC,MAAM,eAAe,CAAA;AAEtB,OAAO,EACH,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,GACrC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACH,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACvB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACH,cAAc,EACd,iBAAiB,EACjB,4BAA4B,GAC/B,MAAM,aAAa,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { TPremiseRoleType, TPropositionalPremise } from "../../schemas/logic.js";
1
+ import type { TPremiseRoleType, TPropositionalPremise, TPropositionalVariable, TPropositionalExpressionCombined } from "../../schemas/logic.js";
2
2
  import type { ProjectEngine, ProjectChangeset } from "./types.js";
3
3
  export declare function mutateCreatePremise(engine: ProjectEngine, premiseId: string, data: {
4
4
  argumentId: string;
@@ -22,4 +22,59 @@ export declare function mutateDeletePremise(engine: ProjectEngine, premiseId: st
22
22
  removed: boolean;
23
23
  changes: ProjectChangeset;
24
24
  };
25
+ /**
26
+ * Atomically creates a derivation premise + claim-bound consequent variable +
27
+ * naked-Q variable expression. The naked-Q form (single variable expression at
28
+ * the root) is the only valid empty antecedent shape; populate the antecedent
29
+ * via `populateDerivationFromCitations` once citations exist.
30
+ *
31
+ * All three IDs are caller-controlled so the live engine path produces the same
32
+ * row IDs as the server's raw-SQL migration backfill, simplifying post-migration
33
+ * verification.
34
+ *
35
+ * @throws InvariantViolationError(CREATE_DERIVATION_CLAIM_NOT_FOUND) when
36
+ * `derivedClaimId` does not resolve in the engine's claim library.
37
+ */
38
+ export declare function mutateCreateDerivationPremise(engine: ProjectEngine, premiseId: string, data: {
39
+ argumentId: string;
40
+ argumentVersion: number;
41
+ creatorId: string;
42
+ createdOn: Date;
43
+ derivedClaimId: string;
44
+ consequentVariableId: string;
45
+ consequentExpressionId: string;
46
+ }): {
47
+ premise: TPropositionalPremise;
48
+ consequentVariable: TPropositionalVariable;
49
+ consequentExpression: TPropositionalExpressionCombined;
50
+ changes: ProjectChangeset;
51
+ };
52
+ /**
53
+ * Removes the IMPLIES/OR antecedent subtree from a populated derivation
54
+ * premise, leaving the premise in the naked-Q form (just the consequent
55
+ * variable as root). Idempotent: a no-op when the premise is already naked.
56
+ *
57
+ * @throws InvariantViolationError(DERIVATION_TYPE_MISMATCH) when `premiseId`
58
+ * resolves to a non-derivation premise.
59
+ */
60
+ export declare function clearDerivationAntecedent(engine: ProjectEngine, premiseId: string): {
61
+ changes: ProjectChangeset;
62
+ };
63
+ /**
64
+ * Builds the `IMPLIES(OR(citation_var_1, …, citation_var_n), Q)` tree on a
65
+ * naked derivation premise. For `n=1`, produces `IMPLIES(citation_var_1, Q)`.
66
+ * For `n=0`, returns an empty changeset.
67
+ *
68
+ * Caller-supplied `sourceClaimIds` ordering determines the OR's child positions
69
+ * (or the single-source antecedent for n=1).
70
+ *
71
+ * @throws InvariantViolationError(DERIVATION_TYPE_MISMATCH) when `premiseId`
72
+ * resolves to a non-derivation premise.
73
+ * @throws InvariantViolationError(DERIVATION_ANTECEDENT_NON_EMPTY) when the
74
+ * premise's root expression is already an IMPLIES (caller forgot to
75
+ * call `clearDerivationAntecedent` first).
76
+ */
77
+ export declare function populateDerivationFromCitations(engine: ProjectEngine, premiseId: string, sourceClaimIds: string[]): {
78
+ changes: ProjectChangeset;
79
+ };
25
80
  //# sourceMappingURL=premises.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"premises.d.ts","sourceRoot":"","sources":["../../../src/engine/mutations/premises.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,gBAAgB,EAChB,qBAAqB,EACxB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGjE,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IACF,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,gBAAgB,CAAA;CACzB,GACF;IAAE,OAAO,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CA+B/D;AAED,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GAC1B;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAa/B;AAED,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC;IAAE,OAAO,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAO/D;AAED,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAGjD"}
1
+ {"version":3,"file":"premises.d.ts","sourceRoot":"","sources":["../../../src/engine/mutations/premises.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,gCAAgC,EACnC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAQjE,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IACF,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,gBAAgB,CAAA;CACzB,GACF;IAAE,OAAO,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CA+B/D;AAED,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GAC1B;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAa/B;AAED,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC;IAAE,OAAO,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAO/D;AAED,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAGjD;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CACzC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IACF,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,sBAAsB,EAAE,MAAM,CAAA;CACjC,GACF;IACC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,kBAAkB,EAAE,sBAAsB,CAAA;IAC1C,oBAAoB,EAAE,gCAAgC,CAAA;IACtD,OAAO,EAAE,gBAAgB,CAAA;CAC5B,CA+GA;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,CA2G/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC3C,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EAAE,GACzB;IAAE,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAoJ/B"}
@@ -1,4 +1,9 @@
1
+ import { InvariantViolationError, PERMISSIVE_GRAMMAR_CONFIG, } from "@proposit/proposit-core";
1
2
  import { mergeChangesets } from "./types.js";
3
+ // Error codes mirrored from `@proposit/proposit-core`. Surfaced in messages so
4
+ // callers (server, tests) can match on string codes without importing core.
5
+ const DERIVATION_TYPE_MISMATCH = "DERIVATION_TYPE_MISMATCH";
6
+ const DERIVATION_ANTECEDENT_NON_EMPTY = "DERIVATION_ANTECEDENT_NON_EMPTY";
2
7
  export function mutateCreatePremise(engine, premiseId, data) {
3
8
  if (data.role === "conclusion" && engine.getConclusionPremise()) {
4
9
  throw new Error("A conclusion premise already exists for this argument version");
@@ -51,4 +56,499 @@ export function mutateDeletePremise(engine, premiseId) {
51
56
  const { result, changes } = engine.removePremise(premiseId);
52
57
  return { removed: result !== undefined, changes };
53
58
  }
59
+ // ──── Derivation premise mutations ─────────────────────────────────────────
60
+ /**
61
+ * Atomically creates a derivation premise + claim-bound consequent variable +
62
+ * naked-Q variable expression. The naked-Q form (single variable expression at
63
+ * the root) is the only valid empty antecedent shape; populate the antecedent
64
+ * via `populateDerivationFromCitations` once citations exist.
65
+ *
66
+ * All three IDs are caller-controlled so the live engine path produces the same
67
+ * row IDs as the server's raw-SQL migration backfill, simplifying post-migration
68
+ * verification.
69
+ *
70
+ * @throws InvariantViolationError(CREATE_DERIVATION_CLAIM_NOT_FOUND) when
71
+ * `derivedClaimId` does not resolve in the engine's claim library.
72
+ */
73
+ export function mutateCreateDerivationPremise(engine, premiseId, data) {
74
+ // 1. Create the derivation premise. Core auto-creates: a premise-bound
75
+ // variable for the new premise, a claim-bound consequent variable
76
+ // (engine-generated id), and a naked-Q variable expression rooted on
77
+ // that consequent variable (engine-generated id).
78
+ const { result: pm, changes: premiseChanges } = engine.createPremiseWithId(premiseId, {
79
+ type: "derivation",
80
+ derivedClaimId: data.derivedClaimId,
81
+ extras: {
82
+ creatorId: data.creatorId,
83
+ createdOn: data.createdOn,
84
+ role: "supporting",
85
+ },
86
+ });
87
+ // 2. Identify the auto-generated entities so we can swap their IDs for the
88
+ // caller-minted ones.
89
+ const autoExpressions = pm.getExpressions();
90
+ if (autoExpressions.length !== 1) {
91
+ throw new Error(`mutateCreateDerivationPremise: expected exactly one auto-created expression, got ${autoExpressions.length}`);
92
+ }
93
+ const autoExpr = autoExpressions[0];
94
+ if (autoExpr.type !== "variable" || autoExpr.variableId == null) {
95
+ throw new Error("mutateCreateDerivationPremise: auto-created naked-Q expression is not a variable expression");
96
+ }
97
+ const autoVarId = autoExpr.variableId;
98
+ const autoVar = engine.getVariable(autoVarId);
99
+ if (!autoVar || !("claimId" in autoVar)) {
100
+ throw new Error("mutateCreateDerivationPremise: auto-created consequent variable is not claim-bound");
101
+ }
102
+ // 3. Update the engine's internal state to use caller-minted IDs. The
103
+ // intermediate changesets from these calls are discarded; we filter
104
+ // the auto entities out of `premiseChanges` (step 4) so the merged
105
+ // result never references them.
106
+ pm.removeExpression(autoExpr.id, true);
107
+ engine.removeVariable(autoVarId);
108
+ const { result: consequentVariable, changes: addVarChanges } = engine.addVariable({
109
+ id: data.consequentVariableId,
110
+ argumentId: data.argumentId,
111
+ argumentVersion: data.argumentVersion,
112
+ claimId: data.derivedClaimId,
113
+ claimVersion: autoVar.claimVersion,
114
+ symbol: autoVar.symbol,
115
+ creatorId: data.creatorId,
116
+ createdOn: data.createdOn,
117
+ });
118
+ const { result: consequentExpression, changes: addExprChanges } = pm.appendExpression(null, {
119
+ id: data.consequentExpressionId,
120
+ argumentId: data.argumentId,
121
+ argumentVersion: data.argumentVersion,
122
+ premiseId,
123
+ parentId: null,
124
+ type: "variable",
125
+ variableId: data.consequentVariableId,
126
+ operator: null,
127
+ creatorId: data.creatorId,
128
+ createdOn: data.createdOn,
129
+ });
130
+ // 4. Strip the auto entities from the create-premise changeset so the
131
+ // merged result reflects only: the premise, the auto-created
132
+ // premise-bound variable (engine-managed; not caller-minted), and the
133
+ // caller-minted consequent variable + naked-Q expression.
134
+ //
135
+ // Also normalize the changeset so the premise doesn't appear in both
136
+ // `added` and `modified`. Core's createPremiseWithId for derivation
137
+ // emits both because the auto naked-Q expression's `appendExpression`
138
+ // triggers a checksum-change `modifiedPremise` entry that gets merged
139
+ // alongside the outer `addedPremise`. Subsequent mutations
140
+ // (addVariable, appendExpression on the same premise) emit further
141
+ // `modifiedPremise` entries that we also drop.
142
+ const filteredPremiseChanges = sanitizeAddedThenModified(withoutEntities(premiseChanges, {
143
+ variableIds: new Set([autoVarId]),
144
+ expressionIds: new Set([autoExpr.id]),
145
+ }));
146
+ const droppedModifiedAddVarChanges = withoutPremiseModifications(addVarChanges, premiseId);
147
+ const droppedModifiedAddExprChanges = withoutPremiseModifications(addExprChanges, premiseId);
148
+ const allChanges = mergeChangesets(mergeChangesets(filteredPremiseChanges, droppedModifiedAddVarChanges), droppedModifiedAddExprChanges);
149
+ return {
150
+ premise: pm.toPremiseData(),
151
+ consequentVariable,
152
+ consequentExpression,
153
+ changes: allChanges,
154
+ };
155
+ }
156
+ /**
157
+ * Removes the IMPLIES/OR antecedent subtree from a populated derivation
158
+ * premise, leaving the premise in the naked-Q form (just the consequent
159
+ * variable as root). Idempotent: a no-op when the premise is already naked.
160
+ *
161
+ * @throws InvariantViolationError(DERIVATION_TYPE_MISMATCH) when `premiseId`
162
+ * resolves to a non-derivation premise.
163
+ */
164
+ export function clearDerivationAntecedent(engine, premiseId) {
165
+ const pm = engine.getPremise(premiseId);
166
+ if (!pm) {
167
+ throw new Error(`Premise ${premiseId} not found`);
168
+ }
169
+ const premiseData = pm.toPremiseData();
170
+ if (premiseData.type !== "derivation") {
171
+ throw new InvariantViolationError([
172
+ {
173
+ code: DERIVATION_TYPE_MISMATCH,
174
+ message: `${DERIVATION_TYPE_MISMATCH}: premise ${premiseId} is not a derivation premise (type=${premiseData.type ?? "freeform"})`,
175
+ entityType: "premise",
176
+ entityId: premiseId,
177
+ premiseId,
178
+ },
179
+ ]);
180
+ }
181
+ const rootExprId = pm.getRootExpressionId();
182
+ if (rootExprId === undefined)
183
+ return { changes: {} };
184
+ const root = pm.getExpression(rootExprId);
185
+ if (!root)
186
+ return { changes: {} };
187
+ // Naked-Q: root is the consequent variable expression. Nothing to clear.
188
+ if (root.type === "variable")
189
+ return { changes: {} };
190
+ // Populated form: root must be IMPLIES with antecedent at position 0 and
191
+ // the consequent variable at position 1.
192
+ if (root.type !== "operator" || root.operator !== "implies") {
193
+ throw new Error(`clearDerivationAntecedent: unexpected root type for premise ${premiseId} — expected variable or implies, got ${root.type}/${root.type === "operator" ? root.operator : ""}`);
194
+ }
195
+ const rootChildren = pm
196
+ .getChildExpressions(rootExprId)
197
+ .sort((a, b) => a.position - b.position);
198
+ if (rootChildren.length !== 2) {
199
+ throw new Error(`clearDerivationAntecedent: IMPLIES root has ${rootChildren.length} children, expected 2`);
200
+ }
201
+ const antecedent = rootChildren[0];
202
+ const consequent = rootChildren[1];
203
+ if (consequent.type !== "variable") {
204
+ throw new Error("clearDerivationAntecedent: expected consequent (position 1 child of IMPLIES) to be a variable expression");
205
+ }
206
+ // Collect citation-bound variable IDs so we can cascade-remove them after
207
+ // the antecedent expressions are gone. n=1: antecedent is the lone
208
+ // citation variable expression. n≥2: antecedent is an OR with one citation
209
+ // variable child per source.
210
+ const citationVariableIds = [];
211
+ if (antecedent.type === "variable") {
212
+ if (antecedent.variableId != null) {
213
+ citationVariableIds.push(antecedent.variableId);
214
+ }
215
+ }
216
+ else if (antecedent.type === "operator" && antecedent.operator === "or") {
217
+ for (const child of pm.getChildExpressions(antecedent.id)) {
218
+ if (child.type === "variable" && child.variableId != null) {
219
+ citationVariableIds.push(child.variableId);
220
+ }
221
+ }
222
+ }
223
+ else {
224
+ throw new Error(`clearDerivationAntecedent: unexpected antecedent shape for premise ${premiseId}`);
225
+ }
226
+ const collected = [];
227
+ // 1. Remove the antecedent subtree (cascade=true). The cascade removes the
228
+ // OR (if present) and all citation variable expressions in one shot.
229
+ // The IMPLIES root is unaffected; the consequent variable expression is
230
+ // unaffected (it's the position-1 child).
231
+ const { changes: removeAntecedentChanges } = pm.removeExpression(antecedent.id, true);
232
+ collected.push(removeAntecedentChanges);
233
+ // 2. Remove IMPLIES with cascade=false, which "promotes" the remaining
234
+ // child (the consequent variable expression) to take IMPLIES's slot —
235
+ // its parentId becomes null, position becomes IMPLIES's old position.
236
+ // The consequent expression appears as `modified` in the changeset.
237
+ withGrammarConfig(pm, PERMISSIVE_GRAMMAR_CONFIG, () => {
238
+ const { changes: removeImpliesChanges } = pm.removeExpression(rootExprId, false);
239
+ collected.push(removeImpliesChanges);
240
+ });
241
+ // 3. Cascade citation-bound variable removals. By this point the
242
+ // expressions referencing them are already gone, so removeVariable's
243
+ // expression-cascade is a no-op and only the variable add/remove
244
+ // bookkeeping shows up in the changeset.
245
+ for (const varId of citationVariableIds) {
246
+ const { changes: removeVarChanges } = engine.removeVariable(varId);
247
+ collected.push(removeVarChanges);
248
+ }
249
+ return { changes: mergeChangesetSequence(collected) };
250
+ }
251
+ /**
252
+ * Builds the `IMPLIES(OR(citation_var_1, …, citation_var_n), Q)` tree on a
253
+ * naked derivation premise. For `n=1`, produces `IMPLIES(citation_var_1, Q)`.
254
+ * For `n=0`, returns an empty changeset.
255
+ *
256
+ * Caller-supplied `sourceClaimIds` ordering determines the OR's child positions
257
+ * (or the single-source antecedent for n=1).
258
+ *
259
+ * @throws InvariantViolationError(DERIVATION_TYPE_MISMATCH) when `premiseId`
260
+ * resolves to a non-derivation premise.
261
+ * @throws InvariantViolationError(DERIVATION_ANTECEDENT_NON_EMPTY) when the
262
+ * premise's root expression is already an IMPLIES (caller forgot to
263
+ * call `clearDerivationAntecedent` first).
264
+ */
265
+ export function populateDerivationFromCitations(engine, premiseId, sourceClaimIds) {
266
+ const pm = engine.getPremise(premiseId);
267
+ if (!pm) {
268
+ throw new Error(`Premise ${premiseId} not found`);
269
+ }
270
+ const premiseData = pm.toPremiseData();
271
+ if (premiseData.type !== "derivation") {
272
+ throw new InvariantViolationError([
273
+ {
274
+ code: DERIVATION_TYPE_MISMATCH,
275
+ message: `${DERIVATION_TYPE_MISMATCH}: premise ${premiseId} is not a derivation premise (type=${premiseData.type ?? "freeform"})`,
276
+ entityType: "premise",
277
+ entityId: premiseId,
278
+ premiseId,
279
+ },
280
+ ]);
281
+ }
282
+ const rootExprId = pm.getRootExpressionId();
283
+ if (rootExprId === undefined) {
284
+ throw new Error(`populateDerivationFromCitations: premise ${premiseId} has no root expression`);
285
+ }
286
+ const root = pm.getExpression(rootExprId);
287
+ if (!root) {
288
+ throw new Error(`populateDerivationFromCitations: root expression ${rootExprId} not found in premise ${premiseId}`);
289
+ }
290
+ // The antecedent must be empty — root is the bare consequent variable.
291
+ if (root.type !== "variable") {
292
+ throw new InvariantViolationError([
293
+ {
294
+ code: DERIVATION_ANTECEDENT_NON_EMPTY,
295
+ message: `${DERIVATION_ANTECEDENT_NON_EMPTY}: derivation premise ${premiseId} already has a non-empty antecedent`,
296
+ entityType: "premise",
297
+ entityId: premiseId,
298
+ premiseId,
299
+ },
300
+ ]);
301
+ }
302
+ if (sourceClaimIds.length === 0)
303
+ return { changes: {} };
304
+ const consequentExpr = root;
305
+ if (consequentExpr.variableId == null) {
306
+ throw new Error("populateDerivationFromCitations: consequent variable expression has no variableId");
307
+ }
308
+ const sharedMeta = {
309
+ argumentId: consequentExpr.argumentId,
310
+ argumentVersion: consequentExpr.argumentVersion,
311
+ premiseId,
312
+ creatorId: consequentExpr.creatorId,
313
+ createdOn: consequentExpr.createdOn,
314
+ };
315
+ const collected = [];
316
+ // 1. Materialize a claim-bound variable for each source claim. Capture the
317
+ // newly-added ones (ensureClaimBoundVariable bypasses the standard
318
+ // mutation surface and produces no changeset of its own).
319
+ const variablesBefore = new Set(engine.getVariables().map((v) => v.id));
320
+ const sourceVariables = [];
321
+ for (const sourceClaimId of sourceClaimIds) {
322
+ const v = engine.ensureClaimBoundVariable(sourceClaimId);
323
+ sourceVariables.push(v);
324
+ }
325
+ const newlyAddedVariables = sourceVariables.filter((v) => !variablesBefore.has(v.id));
326
+ if (newlyAddedVariables.length > 0) {
327
+ collected.push({
328
+ variables: {
329
+ added: newlyAddedVariables,
330
+ modified: [],
331
+ removed: [],
332
+ },
333
+ });
334
+ }
335
+ // 2. Build the IMPLIES + antecedent tree by wrapping the consequent
336
+ // expression. wrapExpression with `rightNodeId=consequentExpr.id` makes
337
+ // the existing consequent the right (consequent) child and the new
338
+ // sibling the left (antecedent) child of the new IMPLIES root. The
339
+ // consequent appears in the wrap's changeset as `modified` (its
340
+ // parentId/position changed).
341
+ withGrammarConfig(pm, PERMISSIVE_GRAMMAR_CONFIG, () => {
342
+ const impliesId = generateId();
343
+ const impliesOp = {
344
+ id: impliesId,
345
+ ...sharedMeta,
346
+ parentId: null,
347
+ type: "operator",
348
+ operator: "implies",
349
+ variableId: null,
350
+ };
351
+ if (sourceVariables.length === 1) {
352
+ const sibling = {
353
+ id: generateId(),
354
+ ...sharedMeta,
355
+ parentId: null, // wrapExpression sets the real parentId
356
+ type: "variable",
357
+ variableId: sourceVariables[0].id,
358
+ operator: null,
359
+ };
360
+ const { changes: wrap } = pm.wrapExpression(impliesOp, sibling, undefined, consequentExpr.id);
361
+ collected.push(wrap);
362
+ return;
363
+ }
364
+ // n ≥ 2: wrap with IMPLIES(OR, Q) and append citation children to OR.
365
+ const orId = generateId();
366
+ const orSibling = {
367
+ id: orId,
368
+ ...sharedMeta,
369
+ parentId: null,
370
+ type: "operator",
371
+ operator: "or",
372
+ variableId: null,
373
+ };
374
+ const { changes: wrap } = pm.wrapExpression(impliesOp, orSibling, undefined, consequentExpr.id);
375
+ collected.push(wrap);
376
+ for (const sourceVar of sourceVariables) {
377
+ const { changes: appendChanges } = pm.appendExpression(orId, {
378
+ id: generateId(),
379
+ ...sharedMeta,
380
+ parentId: orId,
381
+ type: "variable",
382
+ variableId: sourceVar.id,
383
+ operator: null,
384
+ });
385
+ collected.push(appendChanges);
386
+ }
387
+ });
388
+ return { changes: mergeChangesetSequence(collected) };
389
+ }
390
+ // ──── Internal helpers ─────────────────────────────────────────────────────
391
+ /**
392
+ * Strips entries with the given IDs from the `added`/`modified`/`removed`
393
+ * arrays of a changeset. Used to drop engine-auto-generated entities so the
394
+ * caller-facing changeset only references caller-minted IDs.
395
+ */
396
+ function withoutEntities(changes, omit) {
397
+ const result = { ...changes };
398
+ if (changes.expressions &&
399
+ omit.expressionIds &&
400
+ omit.expressionIds.size > 0) {
401
+ const ids = omit.expressionIds;
402
+ result.expressions = {
403
+ added: changes.expressions.added.filter((e) => !ids.has(e.id)),
404
+ modified: changes.expressions.modified.filter((e) => !ids.has(e.id)),
405
+ removed: changes.expressions.removed.filter((e) => !ids.has(e.id)),
406
+ };
407
+ }
408
+ if (changes.variables && omit.variableIds && omit.variableIds.size > 0) {
409
+ const ids = omit.variableIds;
410
+ result.variables = {
411
+ added: changes.variables.added.filter((v) => !ids.has(v.id)),
412
+ modified: changes.variables.modified.filter((v) => !ids.has(v.id)),
413
+ removed: changes.variables.removed.filter((v) => !ids.has(v.id)),
414
+ };
415
+ }
416
+ return result;
417
+ }
418
+ /**
419
+ * Runs `fn` with `pm.grammarConfig` swapped to `nextConfig`, restoring the
420
+ * original config after `fn` returns or throws. Mirrors the technique used by
421
+ * core's `ManagedDerivationPremiseEngine.populateFromCitations`, which needs
422
+ * permissive grammar to place an `OR` operator directly under `IMPLIES`
423
+ * without a formula buffer.
424
+ */
425
+ function withGrammarConfig(pm, nextConfig, fn) {
426
+ // grammarConfig is `protected` on PremiseEngine. Casting to access it is
427
+ // intentional: the alternative — exposing it publicly in core — would be a
428
+ // larger surface change for a single use-case.
429
+ const target = pm;
430
+ const saved = target.grammarConfig;
431
+ pm.setGrammarConfig(nextConfig);
432
+ try {
433
+ return fn();
434
+ }
435
+ finally {
436
+ pm.setGrammarConfig(saved);
437
+ }
438
+ }
439
+ /** Generates a fresh UUID for engine-auto-generated antecedent expressions. */
440
+ function generateId() {
441
+ return crypto.randomUUID();
442
+ }
443
+ /**
444
+ * Drops a premise id from the `modified` bucket of a changeset. Used when
445
+ * combining a changeset that *added* a premise with later changesets that
446
+ * report the same premise as `modified` (e.g. an `appendExpression` call
447
+ * marks the parent premise as modified). The merged result needs only the
448
+ * `added` entry — the `modified` entry is redundant and `mergeChangesets`
449
+ * rejects ids appearing in both buckets.
450
+ */
451
+ function withoutPremiseModifications(changes, premiseId) {
452
+ if (!changes.premises)
453
+ return changes;
454
+ const filteredModified = changes.premises.modified.filter((p) => p.id !== premiseId);
455
+ if (filteredModified.length === changes.premises.modified.length) {
456
+ return changes;
457
+ }
458
+ return {
459
+ ...changes,
460
+ premises: {
461
+ ...changes.premises,
462
+ modified: filteredModified,
463
+ },
464
+ };
465
+ }
466
+ /**
467
+ * Drops every entity that appears in `added` from the `modified` bucket of
468
+ * the same category. Required because core's `createPremiseWithId` for
469
+ * derivation type emits the new premise in BOTH `added` (outer collector) and
470
+ * `modified` (the inner naked-Q expression's `flushAndBuildChangeset` pushes
471
+ * a `modifiedPremise` entry as the premise's checksum changes). Both entries
472
+ * describe the same row; the `added` entry's data is the latest snapshot, so
473
+ * the `modified` entry is redundant.
474
+ */
475
+ function sanitizeAddedThenModified(changes) {
476
+ const result = { ...changes };
477
+ if (changes.premises) {
478
+ const addedIds = new Set(changes.premises.added.map((p) => p.id));
479
+ result.premises = {
480
+ ...changes.premises,
481
+ modified: changes.premises.modified.filter((p) => !addedIds.has(p.id)),
482
+ };
483
+ }
484
+ if (changes.variables) {
485
+ const addedIds = new Set(changes.variables.added.map((v) => v.id));
486
+ result.variables = {
487
+ ...changes.variables,
488
+ modified: changes.variables.modified.filter((v) => !addedIds.has(v.id)),
489
+ };
490
+ }
491
+ if (changes.expressions) {
492
+ const addedIds = new Set(changes.expressions.added.map((e) => e.id));
493
+ result.expressions = {
494
+ ...changes.expressions,
495
+ modified: changes.expressions.modified.filter((e) => !addedIds.has(e.id)),
496
+ };
497
+ }
498
+ return result;
499
+ }
500
+ /**
501
+ * Merges a list of changesets, treating later `added` entries for the same id
502
+ * as superseding earlier `modified` entries (and vice versa). This is needed
503
+ * when the engine reports the same entity in different buckets across
504
+ * sequential mutations — e.g. an `appendExpression` adds an OR and its
505
+ * subsequent `appendExpression` reports OR's descendant-checksum change as a
506
+ * `modified` entry, which would otherwise trip `mergeChangesets`'s
507
+ * single-bucket invariant.
508
+ *
509
+ * Resolution rule per id:
510
+ * - If the id is `added` in ANY changeset, drop all `modified` entries for
511
+ * that id (the `added` row will reflect the final post-merge state).
512
+ * - `removed` entries are preserved; if `added` and `removed` for the same
513
+ * id appear, that's a logic error and `mergeChangesets` will surface it.
514
+ */
515
+ function mergeChangesetSequence(changesets) {
516
+ const addedIds = {
517
+ premises: new Set(),
518
+ variables: new Set(),
519
+ expressions: new Set(),
520
+ };
521
+ for (const c of changesets) {
522
+ for (const p of c.premises?.added ?? [])
523
+ addedIds.premises.add(p.id);
524
+ for (const v of c.variables?.added ?? [])
525
+ addedIds.variables.add(v.id);
526
+ for (const e of c.expressions?.added ?? [])
527
+ addedIds.expressions.add(e.id);
528
+ }
529
+ let result = {};
530
+ for (const c of changesets) {
531
+ const sanitized = { ...c };
532
+ if (c.premises) {
533
+ sanitized.premises = {
534
+ ...c.premises,
535
+ modified: c.premises.modified.filter((p) => !addedIds.premises.has(p.id)),
536
+ };
537
+ }
538
+ if (c.variables) {
539
+ sanitized.variables = {
540
+ ...c.variables,
541
+ modified: c.variables.modified.filter((v) => !addedIds.variables.has(v.id)),
542
+ };
543
+ }
544
+ if (c.expressions) {
545
+ sanitized.expressions = {
546
+ ...c.expressions,
547
+ modified: c.expressions.modified.filter((e) => !addedIds.expressions.has(e.id)),
548
+ };
549
+ }
550
+ result = mergeChangesets(result, sanitized);
551
+ }
552
+ return result;
553
+ }
54
554
  //# sourceMappingURL=premises.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"premises.js","sourceRoot":"","sources":["../../../src/engine/mutations/premises.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,UAAU,mBAAmB,CAC/B,MAAqB,EACrB,SAAiB,EACjB,IAOC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACX,+DAA+D,CAClE,CAAA;IACL,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE;QAClE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,IAAI;KACf,CAAC,CAAA;IAEF,IAAI,UAAU,GAAG,OAAO,CAAA;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7B,mEAAmE;QACnE,iEAAiE;QACjE,yCAAyC;QACzC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QACvE,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACtD,CAAC;SAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9D,iEAAiE;QACjE,kEAAkE;QAClE,qCAAqC;QACrC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAA;QACjE,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACvD,CAAC;IAED,OAAO;QACH,OAAO,EAAE,EAAE,CAAC,aAAa,EAAE;QAC3B,OAAO,EAAE,UAAU;KACtB,CAAA;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,MAAqB,EACrB,SAAiB,EACjB,OAAyB;IAEzB,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QAC1D,OAAO,EAAE,OAAO,EAAE,CAAA;IACtB,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAA;IACvD,IAAI,iBAAiB,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAA;QACnD,OAAO,EAAE,OAAO,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,yBAAyB,CACrC,MAAqB,EACrB,SAAiB,EACjB,OAAgC;IAEhC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC5C,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,MAAqB,EACrB,SAAiB;IAEjB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,OAAO,EAAE,CAAA;AACrD,CAAC"}
1
+ {"version":3,"file":"premises.js","sourceRoot":"","sources":["../../../src/engine/mutations/premises.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export type TTextTreeItem = {
7
7
  premiseId: string;
8
8
  role: "conclusion" | "supporting";
9
9
  title: string | null;
10
+ premiseType: "freeform" | "derivation";
10
11
  } | {
11
12
  type: "claim";
12
13
  expressionId: string;
@@ -14,6 +15,7 @@ export type TTextTreeItem = {
14
15
  claimId: string | null;
15
16
  claimTitle: string;
16
17
  claimBody: string;
18
+ claimType: "normal" | "citation";
17
19
  negated: boolean;
18
20
  isConclusion: boolean;
19
21
  depth: number;
@@ -1 +1 @@
1
- {"version":3,"file":"text-tree.d.ts","sourceRoot":"","sources":["../../src/engine/text-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAER,oBAAoB,EACvB,MAAM,qBAAqB,CAAA;AAE5B,iDAAiD;AACjD,eAAO,MAAM,eAAe,EAAE,MAAM,CAChC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,EACpC,MAAM,CAMT,CAAA;AAED,MAAM,MAAM,aAAa,GACnB;IACI,IAAI,EAAE,gBAAgB,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,YAAY,GAAG,YAAY,CAAA;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,GACD;IACI,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CAChB,GACD;IACI,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CAChB,GACD;IACI,IAAI,EAAE,eAAe,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAEP;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,wBAAwB,EAClC,SAAS,EAAE,MAAM,GAClB,aAAa,EAAE,CAmBjB;AA4GD,wBAAgB,aAAa,CACzB,QAAQ,EAAE,wBAAwB,GACnC,aAAa,EAAE,CA0BjB"}
1
+ {"version":3,"file":"text-tree.d.ts","sourceRoot":"","sources":["../../src/engine/text-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAER,oBAAoB,EACvB,MAAM,qBAAqB,CAAA;AAE5B,iDAAiD;AACjD,eAAO,MAAM,eAAe,EAAE,MAAM,CAChC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,EACpC,MAAM,CAMT,CAAA;AAED,MAAM,MAAM,aAAa,GACnB;IACI,IAAI,EAAE,gBAAgB,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,YAAY,GAAG,YAAY,CAAA;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,UAAU,GAAG,YAAY,CAAA;CACzC,GACD;IACI,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CAChB,GACD;IACI,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CAChB,GACD;IACI,IAAI,EAAE,eAAe,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAEP;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,wBAAwB,EAClC,SAAS,EAAE,MAAM,GAClB,aAAa,EAAE,CAmBjB;AA+GD,wBAAgB,aAAa,CACzB,QAAQ,EAAE,wBAAwB,GACnC,aAAa,EAAE,CA+BjB"}
@@ -45,12 +45,14 @@ function walkPremiseExpression(args) {
45
45
  let claimId = null;
46
46
  let claimTitle = "";
47
47
  let claimBody = "";
48
+ let claimType = "normal";
48
49
  if (variable && "claimId" in variable) {
49
50
  claimId = variable.claimId;
50
51
  const claim = claims[variable.claimId];
51
52
  if (claim) {
52
53
  claimTitle = claim.title;
53
54
  claimBody = claim.body;
55
+ claimType = claim.type ?? "normal";
54
56
  }
55
57
  }
56
58
  items.push({
@@ -60,6 +62,7 @@ function walkPremiseExpression(args) {
60
62
  claimId,
61
63
  claimTitle,
62
64
  claimBody,
65
+ claimType,
63
66
  negated,
64
67
  isConclusion,
65
68
  depth,
@@ -124,11 +127,17 @@ export function buildTextTree(snapshot) {
124
127
  return 0;
125
128
  });
126
129
  for (const [premiseId, premiseSnap] of sortedPremises) {
130
+ // Derivation premises render via citation badges + naked-Q indicator on
131
+ // claim cards, computed from snapshot helpers — they should not produce
132
+ // premise-header → operator → claim items in the flat text walk.
133
+ if (premiseSnap.premise.type === "derivation")
134
+ continue;
127
135
  items.push({
128
136
  type: "premise-header",
129
137
  premiseId,
130
138
  role: premiseId === conclusionPremiseId ? "conclusion" : "supporting",
131
139
  title: premiseSnap.premise.title ?? null,
140
+ premiseType: premiseSnap.premise.type ?? "freeform",
132
141
  });
133
142
  items.push(...buildPremiseTextTree(snapshot, premiseId));
134
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text-tree.js","sourceRoot":"","sources":["../../src/engine/text-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-tree.js","sourceRoot":"","sources":["../../src/engine/text-tree.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proposit/shared",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Runtime-agnostic TypeScript shared between proposit-server and proposit-mobile. Schemas, engine, api-client, and utilities.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/Proposit-App/proposit-shared",