@proposit/shared 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/api-client/argument/batch.d.ts +661 -0
  4. package/dist/api-client/argument/batch.d.ts.map +1 -0
  5. package/dist/api-client/argument/batch.js +14 -0
  6. package/dist/api-client/argument/batch.js.map +1 -0
  7. package/dist/api-client/argument/claims.d.ts +175 -0
  8. package/dist/api-client/argument/claims.d.ts.map +1 -0
  9. package/dist/api-client/argument/claims.js +20 -0
  10. package/dist/api-client/argument/claims.js.map +1 -0
  11. package/dist/api-client/argument/index.d.ts +1344 -0
  12. package/dist/api-client/argument/index.d.ts.map +1 -0
  13. package/dist/api-client/argument/index.js +62 -0
  14. package/dist/api-client/argument/index.js.map +1 -0
  15. package/dist/api-client/argument/logic/index.d.ts +861 -0
  16. package/dist/api-client/argument/logic/index.d.ts.map +1 -0
  17. package/dist/api-client/argument/logic/index.js +73 -0
  18. package/dist/api-client/argument/logic/index.js.map +1 -0
  19. package/dist/api-client/argument/logic/repair.d.ts +182 -0
  20. package/dist/api-client/argument/logic/repair.d.ts.map +1 -0
  21. package/dist/api-client/argument/logic/repair.js +9 -0
  22. package/dist/api-client/argument/logic/repair.js.map +1 -0
  23. package/dist/api-client/argument/reactions.d.ts +38 -0
  24. package/dist/api-client/argument/reactions.d.ts.map +1 -0
  25. package/dist/api-client/argument/reactions.js +9 -0
  26. package/dist/api-client/argument/reactions.js.map +1 -0
  27. package/dist/api-client/argument/reviews.d.ts +183 -0
  28. package/dist/api-client/argument/reviews.d.ts.map +1 -0
  29. package/dist/api-client/argument/reviews.js +21 -0
  30. package/dist/api-client/argument/reviews.js.map +1 -0
  31. package/dist/api-client/search.d.ts +64 -0
  32. package/dist/api-client/search.d.ts.map +1 -0
  33. package/dist/api-client/search.js +19 -0
  34. package/dist/api-client/search.js.map +1 -0
  35. package/dist/api-client/user/claims.d.ts +128 -0
  36. package/dist/api-client/user/claims.d.ts.map +1 -0
  37. package/dist/api-client/user/claims.js +10 -0
  38. package/dist/api-client/user/claims.js.map +1 -0
  39. package/dist/api-client/user/sources.d.ts +41 -0
  40. package/dist/api-client/user/sources.d.ts.map +1 -0
  41. package/dist/api-client/user/sources.js +7 -0
  42. package/dist/api-client/user/sources.js.map +1 -0
  43. package/dist/checksum.d.ts +2 -0
  44. package/dist/checksum.d.ts.map +1 -0
  45. package/dist/checksum.js +32 -0
  46. package/dist/checksum.js.map +1 -0
  47. package/dist/consts/argument.d.ts +9 -0
  48. package/dist/consts/argument.d.ts.map +1 -0
  49. package/dist/consts/argument.js +17 -0
  50. package/dist/consts/argument.js.map +1 -0
  51. package/dist/consts/identity.d.ts +3 -0
  52. package/dist/consts/identity.d.ts.map +1 -0
  53. package/dist/consts/identity.js +6 -0
  54. package/dist/consts/identity.js.map +1 -0
  55. package/dist/consts/index.d.ts +6 -0
  56. package/dist/consts/index.d.ts.map +1 -0
  57. package/dist/consts/index.js +6 -0
  58. package/dist/consts/index.js.map +1 -0
  59. package/dist/consts/roles.d.ts +27 -0
  60. package/dist/consts/roles.d.ts.map +1 -0
  61. package/dist/consts/roles.js +52 -0
  62. package/dist/consts/roles.js.map +1 -0
  63. package/dist/consts/task-status.d.ts +8 -0
  64. package/dist/consts/task-status.d.ts.map +1 -0
  65. package/dist/consts/task-status.js +14 -0
  66. package/dist/consts/task-status.js.map +1 -0
  67. package/dist/consts/user-tiers.d.ts +7 -0
  68. package/dist/consts/user-tiers.d.ts.map +1 -0
  69. package/dist/consts/user-tiers.js +60 -0
  70. package/dist/consts/user-tiers.js.map +1 -0
  71. package/dist/engine/engine.d.ts +94 -0
  72. package/dist/engine/engine.d.ts.map +1 -0
  73. package/dist/engine/engine.js +313 -0
  74. package/dist/engine/engine.js.map +1 -0
  75. package/dist/engine/library-adapters.d.ts +12 -0
  76. package/dist/engine/library-adapters.d.ts.map +1 -0
  77. package/dist/engine/library-adapters.js +11 -0
  78. package/dist/engine/library-adapters.js.map +1 -0
  79. package/dist/engine/mutations/claims.d.ts +10 -0
  80. package/dist/engine/mutations/claims.d.ts.map +1 -0
  81. package/dist/engine/mutations/claims.js +22 -0
  82. package/dist/engine/mutations/claims.js.map +1 -0
  83. package/dist/engine/mutations/expressions.d.ts +109 -0
  84. package/dist/engine/mutations/expressions.d.ts.map +1 -0
  85. package/dist/engine/mutations/expressions.js +277 -0
  86. package/dist/engine/mutations/expressions.js.map +1 -0
  87. package/dist/engine/mutations/index.d.ts +7 -0
  88. package/dist/engine/mutations/index.d.ts.map +1 -0
  89. package/dist/engine/mutations/index.js +6 -0
  90. package/dist/engine/mutations/index.js.map +1 -0
  91. package/dist/engine/mutations/premises.d.ts +25 -0
  92. package/dist/engine/mutations/premises.d.ts.map +1 -0
  93. package/dist/engine/mutations/premises.js +51 -0
  94. package/dist/engine/mutations/premises.js.map +1 -0
  95. package/dist/engine/mutations/types.d.ts +11 -0
  96. package/dist/engine/mutations/types.d.ts.map +1 -0
  97. package/dist/engine/mutations/types.js +2 -0
  98. package/dist/engine/mutations/types.js.map +1 -0
  99. package/dist/engine/mutations/variables.d.ts +27 -0
  100. package/dist/engine/mutations/variables.d.ts.map +1 -0
  101. package/dist/engine/mutations/variables.js +16 -0
  102. package/dist/engine/mutations/variables.js.map +1 -0
  103. package/dist/engine/optimistic/index.d.ts +4 -0
  104. package/dist/engine/optimistic/index.d.ts.map +1 -0
  105. package/dist/engine/optimistic/index.js +3 -0
  106. package/dist/engine/optimistic/index.js.map +1 -0
  107. package/dist/engine/optimistic/reconciliation.d.ts +32 -0
  108. package/dist/engine/optimistic/reconciliation.d.ts.map +1 -0
  109. package/dist/engine/optimistic/reconciliation.js +140 -0
  110. package/dist/engine/optimistic/reconciliation.js.map +1 -0
  111. package/dist/engine/optimistic/types.d.ts +25 -0
  112. package/dist/engine/optimistic/types.d.ts.map +1 -0
  113. package/dist/engine/optimistic/types.js +12 -0
  114. package/dist/engine/optimistic/types.js.map +1 -0
  115. package/dist/engine/optimistic/verification.d.ts +13 -0
  116. package/dist/engine/optimistic/verification.d.ts.map +1 -0
  117. package/dist/engine/optimistic/verification.js +71 -0
  118. package/dist/engine/optimistic/verification.js.map +1 -0
  119. package/dist/engine/review/evaluation.d.ts +27 -0
  120. package/dist/engine/review/evaluation.d.ts.map +1 -0
  121. package/dist/engine/review/evaluation.js +122 -0
  122. package/dist/engine/review/evaluation.js.map +1 -0
  123. package/dist/engine/review/fingerprint.d.ts +9 -0
  124. package/dist/engine/review/fingerprint.d.ts.map +1 -0
  125. package/dist/engine/review/fingerprint.js +27 -0
  126. package/dist/engine/review/fingerprint.js.map +1 -0
  127. package/dist/engine/review/overlay.d.ts +19 -0
  128. package/dist/engine/review/overlay.d.ts.map +1 -0
  129. package/dist/engine/review/overlay.js +81 -0
  130. package/dist/engine/review/overlay.js.map +1 -0
  131. package/dist/engine/review/reasons.d.ts +15 -0
  132. package/dist/engine/review/reasons.d.ts.map +1 -0
  133. package/dist/engine/review/reasons.js +211 -0
  134. package/dist/engine/review/reasons.js.map +1 -0
  135. package/dist/engine/review/review-engine.d.ts +134 -0
  136. package/dist/engine/review/review-engine.d.ts.map +1 -0
  137. package/dist/engine/review/review-engine.js +590 -0
  138. package/dist/engine/review/review-engine.js.map +1 -0
  139. package/dist/engine/review/review-store.d.ts +63 -0
  140. package/dist/engine/review/review-store.d.ts.map +1 -0
  141. package/dist/engine/review/review-store.js +174 -0
  142. package/dist/engine/review/review-store.js.map +1 -0
  143. package/dist/engine/review/step-queue.d.ts +27 -0
  144. package/dist/engine/review/step-queue.d.ts.map +1 -0
  145. package/dist/engine/review/step-queue.js +34 -0
  146. package/dist/engine/review/step-queue.js.map +1 -0
  147. package/dist/engine/review/types.d.ts +16 -0
  148. package/dist/engine/review/types.d.ts.map +1 -0
  149. package/dist/engine/review/types.js +2 -0
  150. package/dist/engine/review/types.js.map +1 -0
  151. package/dist/engine/review/wire.d.ts +8 -0
  152. package/dist/engine/review/wire.d.ts.map +1 -0
  153. package/dist/engine/review/wire.js +97 -0
  154. package/dist/engine/review/wire.js.map +1 -0
  155. package/dist/engine/text-tree.d.ts +35 -0
  156. package/dist/engine/text-tree.d.ts.map +1 -0
  157. package/dist/engine/text-tree.js +137 -0
  158. package/dist/engine/text-tree.js.map +1 -0
  159. package/dist/engine/types.d.ts +42 -0
  160. package/dist/engine/types.d.ts.map +1 -0
  161. package/dist/engine/types.js +2 -0
  162. package/dist/engine/types.js.map +1 -0
  163. package/dist/errors.d.ts +27 -0
  164. package/dist/errors.d.ts.map +1 -0
  165. package/dist/errors.js +61 -0
  166. package/dist/errors.js.map +1 -0
  167. package/dist/schemas/api/argument/batch/change-edge-operator.d.ts +281 -0
  168. package/dist/schemas/api/argument/batch/change-edge-operator.d.ts.map +1 -0
  169. package/dist/schemas/api/argument/batch/change-edge-operator.js +19 -0
  170. package/dist/schemas/api/argument/batch/change-edge-operator.js.map +1 -0
  171. package/dist/schemas/api/argument/batch/create-expression-with-operator.d.ts +280 -0
  172. package/dist/schemas/api/argument/batch/create-expression-with-operator.d.ts.map +1 -0
  173. package/dist/schemas/api/argument/batch/create-expression-with-operator.js +22 -0
  174. package/dist/schemas/api/argument/batch/create-expression-with-operator.js.map +1 -0
  175. package/dist/schemas/api/argument/batch/provision.d.ts +112 -0
  176. package/dist/schemas/api/argument/batch/provision.d.ts.map +1 -0
  177. package/dist/schemas/api/argument/batch/provision.js +10 -0
  178. package/dist/schemas/api/argument/batch/provision.js.map +1 -0
  179. package/dist/schemas/api/argument/build.d.ts +50 -0
  180. package/dist/schemas/api/argument/build.d.ts.map +1 -0
  181. package/dist/schemas/api/argument/build.js +41 -0
  182. package/dist/schemas/api/argument/build.js.map +1 -0
  183. package/dist/schemas/api/argument/claims.d.ts +151 -0
  184. package/dist/schemas/api/argument/claims.d.ts.map +1 -0
  185. package/dist/schemas/api/argument/claims.js +24 -0
  186. package/dist/schemas/api/argument/claims.js.map +1 -0
  187. package/dist/schemas/api/argument/index.d.ts +682 -0
  188. package/dist/schemas/api/argument/index.d.ts.map +1 -0
  189. package/dist/schemas/api/argument/index.js +51 -0
  190. package/dist/schemas/api/argument/index.js.map +1 -0
  191. package/dist/schemas/api/argument/logic.d.ts +205 -0
  192. package/dist/schemas/api/argument/logic.d.ts.map +1 -0
  193. package/dist/schemas/api/argument/logic.js +77 -0
  194. package/dist/schemas/api/argument/logic.js.map +1 -0
  195. package/dist/schemas/api/argument/repair.d.ts +195 -0
  196. package/dist/schemas/api/argument/repair.d.ts.map +1 -0
  197. package/dist/schemas/api/argument/repair.js +35 -0
  198. package/dist/schemas/api/argument/repair.js.map +1 -0
  199. package/dist/schemas/api/claims.d.ts +250 -0
  200. package/dist/schemas/api/claims.d.ts.map +1 -0
  201. package/dist/schemas/api/claims.js +20 -0
  202. package/dist/schemas/api/claims.js.map +1 -0
  203. package/dist/schemas/api/reaction/index.d.ts +46 -0
  204. package/dist/schemas/api/reaction/index.d.ts.map +1 -0
  205. package/dist/schemas/api/reaction/index.js +15 -0
  206. package/dist/schemas/api/reaction/index.js.map +1 -0
  207. package/dist/schemas/api/review/index.d.ts +164 -0
  208. package/dist/schemas/api/review/index.d.ts.map +1 -0
  209. package/dist/schemas/api/review/index.js +29 -0
  210. package/dist/schemas/api/review/index.js.map +1 -0
  211. package/dist/schemas/api/search.d.ts +109 -0
  212. package/dist/schemas/api/search.d.ts.map +1 -0
  213. package/dist/schemas/api/search.js +60 -0
  214. package/dist/schemas/api/search.js.map +1 -0
  215. package/dist/schemas/api/sources.d.ts +108 -0
  216. package/dist/schemas/api/sources.d.ts.map +1 -0
  217. package/dist/schemas/api/sources.js +28 -0
  218. package/dist/schemas/api/sources.js.map +1 -0
  219. package/dist/schemas/api/user/index.d.ts +16 -0
  220. package/dist/schemas/api/user/index.d.ts.map +1 -0
  221. package/dist/schemas/api/user/index.js +15 -0
  222. package/dist/schemas/api/user/index.js.map +1 -0
  223. package/dist/schemas/common.d.ts +50 -0
  224. package/dist/schemas/common.d.ts.map +1 -0
  225. package/dist/schemas/common.js +77 -0
  226. package/dist/schemas/common.js.map +1 -0
  227. package/dist/schemas/gpt.d.ts +10 -0
  228. package/dist/schemas/gpt.d.ts.map +1 -0
  229. package/dist/schemas/gpt.js +27 -0
  230. package/dist/schemas/gpt.js.map +1 -0
  231. package/dist/schemas/index.d.ts +8 -0
  232. package/dist/schemas/index.d.ts.map +1 -0
  233. package/dist/schemas/index.js +8 -0
  234. package/dist/schemas/index.js.map +1 -0
  235. package/dist/schemas/integrations/index.d.ts +159 -0
  236. package/dist/schemas/integrations/index.d.ts.map +1 -0
  237. package/dist/schemas/integrations/index.js +72 -0
  238. package/dist/schemas/integrations/index.js.map +1 -0
  239. package/dist/schemas/logic.d.ts +195 -0
  240. package/dist/schemas/logic.d.ts.map +1 -0
  241. package/dist/schemas/logic.js +77 -0
  242. package/dist/schemas/logic.js.map +1 -0
  243. package/dist/schemas/model/arguments.d.ts +457 -0
  244. package/dist/schemas/model/arguments.d.ts.map +1 -0
  245. package/dist/schemas/model/arguments.js +100 -0
  246. package/dist/schemas/model/arguments.js.map +1 -0
  247. package/dist/schemas/model/claims.d.ts +53 -0
  248. package/dist/schemas/model/claims.d.ts.map +1 -0
  249. package/dist/schemas/model/claims.js +40 -0
  250. package/dist/schemas/model/claims.js.map +1 -0
  251. package/dist/schemas/model/forks.d.ts +63 -0
  252. package/dist/schemas/model/forks.d.ts.map +1 -0
  253. package/dist/schemas/model/forks.js +63 -0
  254. package/dist/schemas/model/forks.js.map +1 -0
  255. package/dist/schemas/model/index.d.ts +6 -0
  256. package/dist/schemas/model/index.d.ts.map +1 -0
  257. package/dist/schemas/model/index.js +6 -0
  258. package/dist/schemas/model/index.js.map +1 -0
  259. package/dist/schemas/model/references.d.ts +49 -0
  260. package/dist/schemas/model/references.d.ts.map +1 -0
  261. package/dist/schemas/model/references.js +46 -0
  262. package/dist/schemas/model/references.js.map +1 -0
  263. package/dist/schemas/model/review.d.ts +56 -0
  264. package/dist/schemas/model/review.d.ts.map +1 -0
  265. package/dist/schemas/model/review.js +50 -0
  266. package/dist/schemas/model/review.js.map +1 -0
  267. package/dist/schemas/model/sources.d.ts +456 -0
  268. package/dist/schemas/model/sources.d.ts.map +1 -0
  269. package/dist/schemas/model/sources.js +27 -0
  270. package/dist/schemas/model/sources.js.map +1 -0
  271. package/dist/schemas/model/users.d.ts +150 -0
  272. package/dist/schemas/model/users.d.ts.map +1 -0
  273. package/dist/schemas/model/users.js +136 -0
  274. package/dist/schemas/model/users.js.map +1 -0
  275. package/dist/schemas/model.d.ts +2 -0
  276. package/dist/schemas/model.d.ts.map +1 -0
  277. package/dist/schemas/model.js +2 -0
  278. package/dist/schemas/model.js.map +1 -0
  279. package/dist/schemas/review.d.ts +1403 -0
  280. package/dist/schemas/review.d.ts.map +1 -0
  281. package/dist/schemas/review.js +232 -0
  282. package/dist/schemas/review.js.map +1 -0
  283. package/dist/schemas/snapshot.d.ts +165 -0
  284. package/dist/schemas/snapshot.d.ts.map +1 -0
  285. package/dist/schemas/snapshot.js +80 -0
  286. package/dist/schemas/snapshot.js.map +1 -0
  287. package/dist/schemas/tasks.d.ts +551 -0
  288. package/dist/schemas/tasks.d.ts.map +1 -0
  289. package/dist/schemas/tasks.js +113 -0
  290. package/dist/schemas/tasks.js.map +1 -0
  291. package/dist/utils/embedding-text.d.ts +15 -0
  292. package/dist/utils/embedding-text.d.ts.map +1 -0
  293. package/dist/utils/embedding-text.js +86 -0
  294. package/dist/utils/embedding-text.js.map +1 -0
  295. package/dist/utils/format-review-share.d.ts +7 -0
  296. package/dist/utils/format-review-share.d.ts.map +1 -0
  297. package/dist/utils/format-review-share.js +16 -0
  298. package/dist/utils/format-review-share.js.map +1 -0
  299. package/dist/utils/index.d.ts +4 -0
  300. package/dist/utils/index.d.ts.map +1 -0
  301. package/dist/utils/index.js +4 -0
  302. package/dist/utils/index.js.map +1 -0
  303. package/dist/utils/tasks/utils.d.ts +4 -0
  304. package/dist/utils/tasks/utils.d.ts.map +1 -0
  305. package/dist/utils/tasks/utils.js +12 -0
  306. package/dist/utils/tasks/utils.js.map +1 -0
  307. package/dist/utils/utils.d.ts +25 -0
  308. package/dist/utils/utils.d.ts.map +1 -0
  309. package/dist/utils/utils.js +115 -0
  310. package/dist/utils/utils.js.map +1 -0
  311. package/package.json +128 -0
@@ -0,0 +1,590 @@
1
+ import { buildClaimQueue, buildOperatorQueue, advanceQueue, } from "./step-queue.js";
2
+ import { evaluateArgumentForReview, checkValidityForReview, } from "./evaluation.js";
3
+ import { materialFingerprint } from "./fingerprint.js";
4
+ import { getClaimReasonsForValue } from "./reasons.js";
5
+ const COUNTEREXAMPLE_CAP = 50;
6
+ const newId = () => globalThis.crypto.randomUUID();
7
+ export class ReviewEngine {
8
+ argEngine;
9
+ store;
10
+ key;
11
+ draft;
12
+ lastResult;
13
+ claimQueue;
14
+ operatorQueue;
15
+ skippedOperatorKeys = new Set();
16
+ history = [];
17
+ listeners = new Set();
18
+ snapshotCache;
19
+ saveTimer;
20
+ droppedStaleCount = 0;
21
+ /** When true, the next advanceStep jumps straight to the results step and clears the flag. Set by goToClaimForEdit / goToPremiseForEdit. */
22
+ editingReturnToResults = false;
23
+ /** In readonly mode, all assignment-mutation methods no-op. Navigation and runEvaluation still work. */
24
+ mode;
25
+ constructor(args) {
26
+ this.argEngine = args.argEngine;
27
+ this.store = args.store;
28
+ this.key = {
29
+ argumentId: args.argEngine.getArgument().id,
30
+ argumentVersion: args.argEngine.getArgument().version,
31
+ userId: args.userId,
32
+ };
33
+ this.claimQueue = buildClaimQueue(this.argEngine);
34
+ this.operatorQueue = buildOperatorQueue(this.argEngine);
35
+ this.draft = args.initialDraft ?? this.freshDraft();
36
+ this.lastResult = args.initialResult;
37
+ this.mode = args.mode ?? "editable";
38
+ this.dropStaleAssignments();
39
+ }
40
+ freshDraft() {
41
+ const now = new Date();
42
+ return {
43
+ schemaVersion: 1,
44
+ reviewId: newId(),
45
+ argumentId: this.key.argumentId,
46
+ argumentVersion: this.key.argumentVersion,
47
+ userId: this.key.userId,
48
+ createdAt: now,
49
+ updatedAt: now,
50
+ phase: "claims",
51
+ currentStepIndex: 0,
52
+ claimAssignments: {},
53
+ operatorAssignments: [],
54
+ };
55
+ }
56
+ dropStaleAssignments() {
57
+ let dropped = 0;
58
+ for (const id of Object.keys(this.draft.claimAssignments)) {
59
+ if (!this.argEngine.getClaim(id)) {
60
+ delete this.draft.claimAssignments[id];
61
+ dropped++;
62
+ }
63
+ }
64
+ this.draft.operatorAssignments = this.draft.operatorAssignments.filter((o) => {
65
+ const premise = this.argEngine.getPremise(o.premiseId);
66
+ if (!premise) {
67
+ dropped++;
68
+ return false;
69
+ }
70
+ if (o.scope === "expression" && o.expressionId) {
71
+ const expr = premise
72
+ .getExpressions()
73
+ .find((e) => e.id === o.expressionId);
74
+ if (!expr) {
75
+ dropped++;
76
+ return false;
77
+ }
78
+ }
79
+ return true;
80
+ });
81
+ this.droppedStaleCount = dropped;
82
+ }
83
+ start() {
84
+ this.notify();
85
+ }
86
+ async clear() {
87
+ if (this.mode === "readonly")
88
+ return;
89
+ this.cancelPersist();
90
+ await this.store.clear(this.key);
91
+ this.draft = this.freshDraft();
92
+ this.lastResult = undefined;
93
+ this.skippedOperatorKeys.clear();
94
+ this.history = [];
95
+ this.notify();
96
+ }
97
+ subscribe(listener) {
98
+ this.listeners.add(listener);
99
+ return () => this.listeners.delete(listener);
100
+ }
101
+ getSnapshot() {
102
+ this.snapshotCache ??= this.computeSnapshot();
103
+ return this.snapshotCache;
104
+ }
105
+ notify() {
106
+ // Shallow-copy the draft so every notify cycle hands subscribers a
107
+ // fresh reference. Consumers that `useMemo([snap.draft])` rely on
108
+ // this to invalidate (e.g. the review overlay in graph-data-context);
109
+ // without the churn they see stale data because in-place mutations
110
+ // on claimAssignments / operatorAssignments leave `draft` pointing
111
+ // at the same object.
112
+ this.draft = { ...this.draft };
113
+ this.snapshotCache = undefined;
114
+ this.schedulePersist();
115
+ for (const l of this.listeners)
116
+ l();
117
+ }
118
+ schedulePersist() {
119
+ this.cancelPersist();
120
+ this.saveTimer = setTimeout(() => {
121
+ this.saveTimer = undefined;
122
+ void this.store.save(this.key, {
123
+ draft: this.draft,
124
+ lastResult: this.lastResult,
125
+ });
126
+ }, 200);
127
+ }
128
+ cancelPersist() {
129
+ if (this.saveTimer) {
130
+ clearTimeout(this.saveTimer);
131
+ this.saveTimer = undefined;
132
+ }
133
+ }
134
+ /** Called by the React provider on `window.storage` events for this key. */
135
+ async reloadFromStore() {
136
+ if (this.mode === "readonly")
137
+ return;
138
+ this.cancelPersist();
139
+ const state = await this.store.load(this.key);
140
+ if (state) {
141
+ this.draft = state.draft;
142
+ this.lastResult = state.lastResult;
143
+ this.dropStaleAssignments();
144
+ }
145
+ this.notify();
146
+ }
147
+ // ─── Claim phase ───────────────────────────────────────────────────
148
+ setClaimValue(claimId, value) {
149
+ if (this.mode === "readonly")
150
+ return;
151
+ const prior = this.draft.claimAssignments[claimId];
152
+ // Reasons are scoped to each trivalent value — drop any prior code
153
+ // that doesn't belong to the new value's reason set.
154
+ const validCodes = new Set(getClaimReasonsForValue(value).map((r) => r.code));
155
+ const carryOverReason = prior?.reasonCode && validCodes.has(prior.reasonCode)
156
+ ? prior.reasonCode
157
+ : undefined;
158
+ this.draft.claimAssignments[claimId] = {
159
+ assignmentId: prior?.assignmentId ?? newId(),
160
+ claimId,
161
+ value,
162
+ reasonCode: carryOverReason,
163
+ skipped: false,
164
+ decidedAt: new Date(),
165
+ };
166
+ this.draft.updatedAt = new Date();
167
+ this.notify();
168
+ }
169
+ /** Jump the wizard to the claim step for `claimId` (no-op if absent). */
170
+ goToClaim(claimId) {
171
+ const index = this.claimQueue.indexOf(claimId);
172
+ if (index < 0)
173
+ return;
174
+ this.pushHistory();
175
+ this.draft.phase = "claims";
176
+ this.draft.currentStepIndex = index;
177
+ this.draft.updatedAt = new Date();
178
+ this.notify();
179
+ }
180
+ /** Jump the wizard to the operator step for `premiseId` (no-op if absent). */
181
+ goToPremise(premiseId) {
182
+ const index = this.operatorQueue.findIndex((e) => e.premiseId === premiseId);
183
+ if (index < 0)
184
+ return;
185
+ this.pushHistory();
186
+ this.draft.phase = "operators";
187
+ this.draft.currentStepIndex = index;
188
+ this.draft.updatedAt = new Date();
189
+ this.notify();
190
+ }
191
+ /**
192
+ * Same as `goToClaim`, but marks the next `advanceStep` to jump directly
193
+ * to results. Used when editing a single claim from the results page.
194
+ */
195
+ goToClaimForEdit(claimId) {
196
+ this.editingReturnToResults = true;
197
+ this.goToClaim(claimId);
198
+ }
199
+ /**
200
+ * Same as `goToPremise`, but marks the next `advanceStep` to jump directly
201
+ * to results. Used when editing a single premise from the results page.
202
+ */
203
+ goToPremiseForEdit(premiseId) {
204
+ this.editingReturnToResults = true;
205
+ this.goToPremise(premiseId);
206
+ }
207
+ /** Ordered claim ids that are referenced by this argument's premises. */
208
+ getClaimQueue() {
209
+ return [...this.claimQueue];
210
+ }
211
+ /** Ordered premise ids that have decidable operator expressions. */
212
+ getOperatorQueue() {
213
+ return this.operatorQueue.map((e) => e.premiseId);
214
+ }
215
+ setClaimReason(claimId, code) {
216
+ if (this.mode === "readonly")
217
+ return;
218
+ const a = this.draft.claimAssignments[claimId];
219
+ if (!a)
220
+ throw new Error(`setClaimReason: no assignment for ${claimId}`);
221
+ this.draft.claimAssignments[claimId] = { ...a, reasonCode: code };
222
+ this.draft.updatedAt = new Date();
223
+ this.notify();
224
+ }
225
+ skipClaim(claimId) {
226
+ if (this.mode === "readonly")
227
+ return;
228
+ const prior = this.draft.claimAssignments[claimId];
229
+ this.draft.claimAssignments[claimId] = {
230
+ assignmentId: prior?.assignmentId ?? newId(),
231
+ claimId,
232
+ value: null,
233
+ reasonCode: prior?.reasonCode,
234
+ skipped: true,
235
+ decidedAt: new Date(),
236
+ };
237
+ this.draft.updatedAt = new Date();
238
+ this.notify();
239
+ }
240
+ // ─── Operator phase ────────────────────────────────────────────────
241
+ setOperatorAssignment(input) {
242
+ if (this.mode === "readonly")
243
+ return;
244
+ const target = {
245
+ assignmentId: newId(),
246
+ premiseId: input.premiseId,
247
+ expressionId: input.expressionId,
248
+ scope: input.scope,
249
+ decision: input.decision,
250
+ decidedAt: new Date(),
251
+ };
252
+ const idx = this.draft.operatorAssignments.findIndex((o) => opKey(o) === opKey(target));
253
+ if (idx >= 0) {
254
+ this.draft.operatorAssignments[idx] = {
255
+ ...target,
256
+ assignmentId: this.draft.operatorAssignments[idx].assignmentId,
257
+ };
258
+ }
259
+ else {
260
+ this.draft.operatorAssignments.push(target);
261
+ }
262
+ this.draft.updatedAt = new Date();
263
+ this.notify();
264
+ }
265
+ setOperatorReason(key, code) {
266
+ if (this.mode === "readonly")
267
+ return;
268
+ const [premiseId, expressionId = ""] = key.split(":");
269
+ const idx = this.draft.operatorAssignments.findIndex((o) => o.premiseId === premiseId &&
270
+ (o.expressionId ?? "") === expressionId);
271
+ if (idx < 0)
272
+ throw new Error(`setOperatorReason: no op for ${key}`);
273
+ this.draft.operatorAssignments[idx] = {
274
+ ...this.draft.operatorAssignments[idx],
275
+ reasonCode: code,
276
+ };
277
+ this.draft.updatedAt = new Date();
278
+ this.notify();
279
+ }
280
+ /** Session-only: operator skips don't persist across reload. */
281
+ skipOperator(key) {
282
+ if (this.mode === "readonly")
283
+ return;
284
+ this.skippedOperatorKeys.add(key);
285
+ this.notify();
286
+ }
287
+ expandPremiseToExpressions(premiseId) {
288
+ const premise = this.argEngine.getPremise(premiseId);
289
+ if (!premise)
290
+ return;
291
+ const premiseLevel = this.draft.operatorAssignments.find((o) => o.scope === "premise" && o.premiseId === premiseId);
292
+ const seed = premiseLevel?.decision ?? "accepted";
293
+ for (const expr of premise.getDecidableOperatorExpressions()) {
294
+ this.setOperatorAssignment({
295
+ premiseId,
296
+ scope: "expression",
297
+ expressionId: expr.id,
298
+ decision: seed,
299
+ });
300
+ }
301
+ }
302
+ backOutToPremiseLevel(premiseId) {
303
+ if (this.mode === "readonly")
304
+ return;
305
+ this.draft.operatorAssignments = this.draft.operatorAssignments.filter((o) => !(o.scope === "expression" && o.premiseId === premiseId));
306
+ this.draft.updatedAt = new Date();
307
+ this.notify();
308
+ }
309
+ // ─── Navigation ────────────────────────────────────────────────────
310
+ proceedWithSkippedAsUnknown() {
311
+ if (this.mode === "readonly")
312
+ return;
313
+ if (this.draft.phase === "claims") {
314
+ for (const a of Object.values(this.draft.claimAssignments)) {
315
+ if (a.skipped) {
316
+ this.draft.claimAssignments[a.claimId] = {
317
+ ...a,
318
+ decidedAt: new Date(),
319
+ };
320
+ }
321
+ }
322
+ this.transitionTo("operators");
323
+ }
324
+ else if (this.draft.phase === "operators") {
325
+ this.skippedOperatorKeys.clear();
326
+ this.transitionTo("done");
327
+ }
328
+ this.notify();
329
+ }
330
+ transitionTo(phase) {
331
+ this.pushHistory();
332
+ this.draft.phase = phase;
333
+ this.draft.currentStepIndex = 0;
334
+ this.draft.updatedAt = new Date();
335
+ }
336
+ advanceStep() {
337
+ this.pushHistory();
338
+ if (this.editingReturnToResults) {
339
+ this.editingReturnToResults = false;
340
+ this.draft.phase = "done";
341
+ this.draft.currentStepIndex = 0;
342
+ this.draft.updatedAt = new Date();
343
+ this.notify();
344
+ return;
345
+ }
346
+ const result = this.draft.phase === "claims"
347
+ ? advanceQueue({
348
+ queue: { kind: "claim", items: this.claimQueue },
349
+ currentIndex: this.draft.currentStepIndex,
350
+ skippedKeys: this.claimSkippedKeys(),
351
+ decidedKeys: this.claimDecidedKeys(),
352
+ })
353
+ : this.draft.phase === "operators"
354
+ ? advanceQueue({
355
+ queue: {
356
+ kind: "operator",
357
+ items: this.operatorQueue,
358
+ },
359
+ currentIndex: this.draft.currentStepIndex,
360
+ skippedKeys: this.skippedOperatorKeys,
361
+ decidedKeys: this.operatorDecidedKeys(),
362
+ })
363
+ : { done: true };
364
+ if ("done" in result) {
365
+ this.transitionTo(this.draft.phase === "claims" ? "operators" : "done");
366
+ }
367
+ else if (result.insertRequeueNotice) {
368
+ // Land "past the end" so computeSnapshot emits the skip-requeue-notice.
369
+ // If the user chooses "review skipped" the UI will call goToStep(nextIndex).
370
+ const total = this.draft.phase === "claims"
371
+ ? this.claimQueue.length
372
+ : this.operatorQueue.length;
373
+ this.draft.currentStepIndex = total;
374
+ }
375
+ else {
376
+ this.draft.currentStepIndex = result.nextIndex;
377
+ }
378
+ this.draft.updatedAt = new Date();
379
+ this.notify();
380
+ }
381
+ goBack() {
382
+ const last = this.history.pop();
383
+ if (!last)
384
+ return;
385
+ this.draft.phase = last.phase;
386
+ this.draft.currentStepIndex = last.index;
387
+ this.draft.updatedAt = new Date();
388
+ this.notify();
389
+ }
390
+ goToStep(index) {
391
+ this.pushHistory();
392
+ this.draft.currentStepIndex = Math.max(0, index);
393
+ this.draft.updatedAt = new Date();
394
+ this.notify();
395
+ }
396
+ pushHistory() {
397
+ this.history.push({
398
+ phase: this.draft.phase,
399
+ index: this.draft.currentStepIndex,
400
+ });
401
+ if (this.history.length > 200)
402
+ this.history.shift();
403
+ }
404
+ // ─── Evaluation ────────────────────────────────────────────────────
405
+ async runEvaluation() {
406
+ const now = new Date();
407
+ const evaluation = evaluateArgumentForReview(this.draft, this.argEngine);
408
+ const result = {
409
+ schemaVersion: 1,
410
+ createdAt: now,
411
+ evaluatedAt: now,
412
+ evaluatedFingerprint: materialFingerprint(this.draft),
413
+ evaluation,
414
+ validityCheck: undefined,
415
+ };
416
+ this.lastResult = result;
417
+ // Write the full state directly — avoids the load-then-save path in
418
+ // saveResult, which requires a prior save (not guaranteed before eval).
419
+ this.cancelPersist();
420
+ await this.store.save(this.key, {
421
+ draft: this.draft,
422
+ lastResult: result,
423
+ });
424
+ this.notify();
425
+ return result;
426
+ }
427
+ async runValidityCheck(options) {
428
+ if (this.mode === "readonly")
429
+ return { ok: false };
430
+ const raw = checkValidityForReview(this.argEngine, options);
431
+ const counterexamples = raw.counterexamples?.slice(0, COUNTEREXAMPLE_CAP);
432
+ const capped = {
433
+ ...raw,
434
+ counterexamples,
435
+ truncated:
436
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- falsy truncated must fall through
437
+ raw.truncated ||
438
+ (raw.counterexamples !== undefined &&
439
+ raw.counterexamples.length > COUNTEREXAMPLE_CAP),
440
+ };
441
+ if (this.lastResult) {
442
+ this.lastResult = { ...this.lastResult, validityCheck: capped };
443
+ this.cancelPersist();
444
+ await this.store.save(this.key, {
445
+ draft: this.draft,
446
+ lastResult: this.lastResult,
447
+ });
448
+ }
449
+ this.notify();
450
+ return capped;
451
+ }
452
+ resetSkipFlags() {
453
+ if (this.mode === "readonly")
454
+ return;
455
+ for (const id of Object.keys(this.draft.claimAssignments)) {
456
+ const a = this.draft.claimAssignments[id];
457
+ if (a.skipped)
458
+ this.draft.claimAssignments[id] = { ...a, skipped: false };
459
+ }
460
+ this.skippedOperatorKeys.clear();
461
+ this.history = [];
462
+ this.draft.phase = "claims";
463
+ this.draft.currentStepIndex = 0;
464
+ this.draft.updatedAt = new Date();
465
+ this.notify();
466
+ }
467
+ /** Jump the wizard to the results step. History is preserved, so Back returns to the prior step. */
468
+ jumpToResults() {
469
+ this.pushHistory();
470
+ this.draft.phase = "done";
471
+ this.draft.currentStepIndex = 0;
472
+ this.draft.updatedAt = new Date();
473
+ this.notify();
474
+ }
475
+ // ─── Snapshot ──────────────────────────────────────────────────────
476
+ computeSnapshot() {
477
+ let currentStep;
478
+ if (this.draft.phase === "claims") {
479
+ const claimId = this.claimQueue[this.draft.currentStepIndex];
480
+ if (claimId) {
481
+ const refs = [];
482
+ for (const p of this.argEngine.listPremises()) {
483
+ for (const vId of p.getReferencedVariableIds()) {
484
+ const variable = this.argEngine.getVariable(vId);
485
+ const vcId = variable && "claimId" in variable
486
+ ? variable.claimId
487
+ : undefined;
488
+ if (vcId === claimId) {
489
+ refs.push(p.getId());
490
+ break;
491
+ }
492
+ }
493
+ }
494
+ currentStep = {
495
+ kind: "claim",
496
+ claimId,
497
+ referencedInPremiseIds: refs,
498
+ };
499
+ }
500
+ else if (this.claimSkippedRemain()) {
501
+ currentStep = {
502
+ kind: "skip-requeue-notice",
503
+ phase: "claims",
504
+ remainingCount: this.claimSkippedKeys().size,
505
+ };
506
+ }
507
+ }
508
+ else if (this.draft.phase === "operators") {
509
+ const entry = this.operatorQueue[this.draft.currentStepIndex];
510
+ if (entry) {
511
+ currentStep = {
512
+ kind: "operator",
513
+ premiseId: entry.premiseId,
514
+ scope: "premise",
515
+ };
516
+ }
517
+ else if (this.operatorSkippedRemain()) {
518
+ currentStep = {
519
+ kind: "skip-requeue-notice",
520
+ phase: "operators",
521
+ remainingCount: this.skippedOperatorKeys.size,
522
+ };
523
+ }
524
+ }
525
+ else {
526
+ currentStep = { kind: "results" };
527
+ }
528
+ return {
529
+ draft: this.draft,
530
+ lastResult: this.lastResult,
531
+ currentStep,
532
+ progress: {
533
+ totalClaims: this.claimQueue.length,
534
+ decidedClaims: this.claimDecidedKeys().size,
535
+ skippedClaims: this.claimSkippedKeys().size,
536
+ totalPremises: this.operatorQueue.length,
537
+ decidedPremises: this.operatorDecidedKeys().size,
538
+ skippedPremises: this.skippedOperatorKeys.size,
539
+ phase: this.draft.phase,
540
+ currentStepIndex: this.draft.currentStepIndex,
541
+ totalStepsInPhase: this.draft.phase === "claims"
542
+ ? this.claimQueue.length
543
+ : this.draft.phase === "operators"
544
+ ? this.operatorQueue.length
545
+ : 0,
546
+ currentPhaseSkippedCount: this.draft.phase === "claims"
547
+ ? this.claimSkippedKeys().size
548
+ : this.draft.phase === "operators"
549
+ ? this.skippedOperatorKeys.size
550
+ : 0,
551
+ canGoBack: this.history.length > 0,
552
+ },
553
+ canRunEvaluation: this.draft.phase === "done",
554
+ droppedStaleCount: this.droppedStaleCount,
555
+ };
556
+ }
557
+ // ─── Key helpers ───────────────────────────────────────────────────
558
+ claimSkippedKeys() {
559
+ return new Set(Object.values(this.draft.claimAssignments)
560
+ .filter((a) => a.skipped)
561
+ .map((a) => a.claimId));
562
+ }
563
+ claimDecidedKeys() {
564
+ return new Set(Object.values(this.draft.claimAssignments)
565
+ .filter((a) => !a.skipped)
566
+ .map((a) => a.claimId));
567
+ }
568
+ claimSkippedRemain() {
569
+ for (const a of Object.values(this.draft.claimAssignments)) {
570
+ if (a.skipped)
571
+ return true;
572
+ }
573
+ return false;
574
+ }
575
+ operatorDecidedKeys() {
576
+ const s = new Set();
577
+ for (const o of this.draft.operatorAssignments)
578
+ s.add(opKey(o));
579
+ return s;
580
+ }
581
+ operatorSkippedRemain() {
582
+ return this.skippedOperatorKeys.size > 0;
583
+ }
584
+ }
585
+ function opKey(o) {
586
+ return o.scope === "premise"
587
+ ? o.premiseId
588
+ : `${o.premiseId}:${o.expressionId ?? ""}`;
589
+ }
590
+ //# sourceMappingURL=review-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-engine.js","sourceRoot":"","sources":["../../../src/engine/review/review-engine.ts"],"names":[],"mappings":"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"}