sxng-cli 1.2.5 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -47
- package/dist/claims/deterministic-checks.d.ts +1 -0
- package/dist/claims/deterministic-checks.d.ts.map +1 -1
- package/dist/claims/deterministic-checks.js +3 -4
- package/dist/claims/deterministic-checks.js.map +1 -1
- package/dist/claims/store.d.ts +6 -0
- package/dist/claims/store.d.ts.map +1 -1
- package/dist/claims/store.js +31 -6
- package/dist/claims/store.js.map +1 -1
- package/dist/claims/types.d.ts +7 -2
- package/dist/claims/types.d.ts.map +1 -1
- package/dist/commands/claim.d.ts +3 -3
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +70 -60
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/evidence.d.ts +3 -4
- package/dist/commands/evidence.d.ts.map +1 -1
- package/dist/commands/evidence.js +164 -144
- package/dist/commands/evidence.js.map +1 -1
- package/dist/commands/extract.d.ts +3 -3
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +58 -62
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/graph-add.d.ts +3 -13
- package/dist/commands/graph-add.d.ts.map +1 -1
- package/dist/commands/graph-add.js +78 -138
- package/dist/commands/graph-add.js.map +1 -1
- package/dist/commands/json-input.d.ts +18 -0
- package/dist/commands/json-input.d.ts.map +1 -0
- package/dist/commands/json-input.js +50 -0
- package/dist/commands/json-input.js.map +1 -0
- package/dist/commands/results-add.d.ts +5 -9
- package/dist/commands/results-add.d.ts.map +1 -1
- package/dist/commands/results-add.js +66 -32
- package/dist/commands/results-add.js.map +1 -1
- package/dist/commands/review.d.ts +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +63 -55
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/verdict.d.ts.map +1 -1
- package/dist/commands/verdict.js +13 -2
- package/dist/commands/verdict.js.map +1 -1
- package/dist/deep/dedupe.js +1 -1
- package/dist/deep/dedupe.js.map +1 -1
- package/dist/deep/extractor.d.ts +4 -1
- package/dist/deep/extractor.d.ts.map +1 -1
- package/dist/deep/extractor.js +83 -26
- package/dist/deep/extractor.js.map +1 -1
- package/dist/deep/graph-explore.d.ts +1 -1
- package/dist/deep/graph-explore.d.ts.map +1 -1
- package/dist/deep/graph-explore.js +14 -12
- package/dist/deep/graph-explore.js.map +1 -1
- package/dist/deep/graph-preprocess.d.ts +2 -1
- package/dist/deep/graph-preprocess.d.ts.map +1 -1
- package/dist/deep/graph-preprocess.js +10 -10
- package/dist/deep/graph-preprocess.js.map +1 -1
- package/dist/deep/graph-sampling.d.ts.map +1 -1
- package/dist/deep/graph-sampling.js +3 -2
- package/dist/deep/graph-sampling.js.map +1 -1
- package/dist/deep/graph.d.ts +10 -3
- package/dist/deep/graph.d.ts.map +1 -1
- package/dist/deep/graph.js +9 -8
- package/dist/deep/graph.js.map +1 -1
- package/dist/deep/local-doc/indexer.d.ts.map +1 -1
- package/dist/deep/local-doc/indexer.js +34 -1
- package/dist/deep/local-doc/indexer.js.map +1 -1
- package/dist/deep/local-doc/searcher.d.ts +4 -2
- package/dist/deep/local-doc/searcher.d.ts.map +1 -1
- package/dist/deep/local-doc/searcher.js +18 -4
- package/dist/deep/local-doc/searcher.js.map +1 -1
- package/dist/deep/path-extraction.js +4 -4
- package/dist/deep/path-extraction.js.map +1 -1
- package/dist/deep/quality-assess.d.ts +4 -4
- package/dist/deep/quality-assess.d.ts.map +1 -1
- package/dist/deep/quality-assess.js +11 -11
- package/dist/deep/quality-assess.js.map +1 -1
- package/dist/deep/quality-assess.sync-conflict-20260728-195206-JAULAPO.d.ts +46 -0
- package/dist/deep/quality-assess.sync-conflict-20260728-195206-JAULAPO.d.ts.map +1 -0
- package/dist/deep/quality-assess.sync-conflict-20260728-195206-JAULAPO.js +122 -0
- package/dist/deep/quality-assess.sync-conflict-20260728-195206-JAULAPO.js.map +1 -0
- package/dist/deep/search-strategy.d.ts.map +1 -1
- package/dist/deep/search-strategy.js +13 -6
- package/dist/deep/search-strategy.js.map +1 -1
- package/dist/deep/session.d.ts +115 -56
- package/dist/deep/session.d.ts.map +1 -1
- package/dist/deep/session.js +554 -253
- package/dist/deep/session.js.map +1 -1
- package/dist/runCli.d.ts.map +1 -1
- package/dist/runCli.js +111 -44
- package/dist/runCli.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/claim.js
CHANGED
|
@@ -1,84 +1,83 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Claim add and list commands for the review pipeline.
|
|
3
3
|
*/
|
|
4
|
-
import { loadClaims, saveClaims,
|
|
4
|
+
import { loadClaims, saveClaims, getClaimsByStatus, ClaimsStateError, assertClaimsStoreReadable, } from '../claims/store.js';
|
|
5
5
|
import { searchCandidates } from '../claims/deterministic-checks.js';
|
|
6
6
|
import { createSuccessEnvelope, createErrorEnvelope } from '../protocol.js';
|
|
7
|
-
import { resolveSessionPath } from '../deep/session.js';
|
|
7
|
+
import { initSessionDir, mutateSessionState, resolveSessionPath } from '../deep/session.js';
|
|
8
|
+
import { isJsonObject, readSessionJsonInput } from './json-input.js';
|
|
8
9
|
export async function runClaimAdd(session, options) {
|
|
9
10
|
const sessionDir = resolveSessionPath(session);
|
|
11
|
+
initSessionDir(sessionDir);
|
|
10
12
|
// Parse input
|
|
11
13
|
let inputs = [];
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
inputs = parsed;
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
console.log(JSON.stringify(createErrorEnvelope('INVALID_JSON', 'Failed to parse --claims JSON', { hint: 'Ensure valid JSON array' }), null, 2));
|
|
23
|
-
return 1;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else if (options.claim) {
|
|
27
|
-
try {
|
|
28
|
-
const parsed = JSON.parse(options.claim);
|
|
29
|
-
inputs = [parsed];
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
console.log(JSON.stringify(createErrorEnvelope('INVALID_JSON', 'Failed to parse --claim JSON', { hint: 'Ensure valid JSON object' }), null, 2));
|
|
33
|
-
return 1;
|
|
34
|
-
}
|
|
14
|
+
const input = readSessionJsonInput(sessionDir, [
|
|
15
|
+
{ option: '--claim-file', value: options.claimFile, file: true },
|
|
16
|
+
{ option: '--claims-file', value: options.claimsFile, file: true },
|
|
17
|
+
]);
|
|
18
|
+
if (!input.ok) {
|
|
19
|
+
console.log(JSON.stringify(createErrorEnvelope(input.code, input.message), null, 2));
|
|
20
|
+
return 1;
|
|
35
21
|
}
|
|
36
|
-
|
|
37
|
-
|
|
22
|
+
const batchInput = input.source === '--claims-file';
|
|
23
|
+
if (batchInput && !Array.isArray(input.value)) {
|
|
24
|
+
console.log(JSON.stringify(createErrorEnvelope('INVALID_CLAIMS', '--claims-file must contain a JSON array'), null, 2));
|
|
38
25
|
return 1;
|
|
39
26
|
}
|
|
27
|
+
inputs = batchInput ? input.value : [input.value];
|
|
40
28
|
// Validate required fields
|
|
41
29
|
for (let i = 0; i < inputs.length; i++) {
|
|
42
|
-
if (!inputs[i].text || typeof inputs[i].text !== 'string') {
|
|
30
|
+
if (!isJsonObject(inputs[i]) || !inputs[i].text || typeof inputs[i].text !== 'string') {
|
|
43
31
|
console.log(JSON.stringify(createErrorEnvelope('MISSING_TEXT', `Entry ${i} is missing required field "text"`), null, 2));
|
|
44
32
|
return 1;
|
|
45
33
|
}
|
|
46
34
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
35
|
+
let result;
|
|
36
|
+
try {
|
|
37
|
+
result = mutateSessionState(sessionDir, () => {
|
|
38
|
+
assertClaimsStoreReadable(sessionDir);
|
|
39
|
+
const existing = loadClaims(sessionDir);
|
|
40
|
+
const now = Date.now();
|
|
41
|
+
const newClaims = [];
|
|
42
|
+
const candidates = {};
|
|
43
|
+
for (const [index, input] of inputs.entries()) {
|
|
44
|
+
const id = `cl_${String(existing.length + index + 1).padStart(3, '0')}`;
|
|
45
|
+
const claim = {
|
|
46
|
+
id,
|
|
47
|
+
text: input.text,
|
|
48
|
+
subject: input.subject,
|
|
49
|
+
predicate: input.predicate,
|
|
50
|
+
object: input.object,
|
|
51
|
+
time: input.time,
|
|
52
|
+
riskLevel: input.riskLevel || 'medium',
|
|
53
|
+
status: 'pending',
|
|
54
|
+
sessionDir,
|
|
55
|
+
createdAt: now,
|
|
56
|
+
};
|
|
57
|
+
newClaims.push(claim);
|
|
58
|
+
candidates[id] = searchCandidates(sessionDir, claim.text);
|
|
59
|
+
}
|
|
60
|
+
saveClaims(sessionDir, [...existing, ...newClaims]);
|
|
61
|
+
return {
|
|
62
|
+
claims: newClaims.map(c => ({ id: c.id, text: c.text, status: c.status })),
|
|
63
|
+
candidates,
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (error instanceof ClaimsStateError) {
|
|
69
|
+
console.log(JSON.stringify(createErrorEnvelope('CLAIMS_STATE_CORRUPTED', error.message), null, 2));
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
67
73
|
}
|
|
68
|
-
// Append to existing claims
|
|
69
|
-
const existing = loadClaims(sessionDir);
|
|
70
|
-
saveClaims(sessionDir, [...existing, ...newClaims]);
|
|
71
|
-
const result = {
|
|
72
|
-
claims: newClaims.map(c => ({ id: c.id, text: c.text, status: c.status })),
|
|
73
|
-
candidates,
|
|
74
|
-
};
|
|
75
74
|
const outputFormat = options.format || 'json';
|
|
76
75
|
if (outputFormat === 'md') {
|
|
77
76
|
console.log('## Claim-Add Results\n');
|
|
78
|
-
for (const c of
|
|
77
|
+
for (const c of result.claims) {
|
|
79
78
|
console.log(`**${c.id}**: ${c.text}`);
|
|
80
|
-
console.log(`- Status: ${c.status}
|
|
81
|
-
const cs = candidates[c.id] || [];
|
|
79
|
+
console.log(`- Status: ${c.status}`);
|
|
80
|
+
const cs = result.candidates[c.id] || [];
|
|
82
81
|
if (cs.length > 0) {
|
|
83
82
|
console.log(`- Candidates: ${cs.length} found`);
|
|
84
83
|
for (const cand of cs) {
|
|
@@ -99,7 +98,18 @@ export async function runClaimAdd(session, options) {
|
|
|
99
98
|
export async function runClaimList(session, options) {
|
|
100
99
|
const sessionDir = resolveSessionPath(session);
|
|
101
100
|
const statusFilter = options.status;
|
|
102
|
-
|
|
101
|
+
let claims;
|
|
102
|
+
try {
|
|
103
|
+
assertClaimsStoreReadable(sessionDir);
|
|
104
|
+
claims = getClaimsByStatus(sessionDir, statusFilter);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (error instanceof ClaimsStateError) {
|
|
108
|
+
console.log(JSON.stringify(createErrorEnvelope('CLAIMS_STATE_CORRUPTED', error.message), null, 2));
|
|
109
|
+
return 1;
|
|
110
|
+
}
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
103
113
|
const outputFormat = options.format || 'json';
|
|
104
114
|
if (outputFormat === 'md') {
|
|
105
115
|
if (claims.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACL,UAAU,EACV,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* evidence-search / evidence-verify / evidence-list — Evidence subcommands.
|
|
3
|
-
*/
|
|
1
|
+
/** Evidence search, verification, and listing commands. */
|
|
4
2
|
export declare function runEvidenceSearch(session: string, options: {
|
|
5
3
|
claimId: string;
|
|
6
4
|
format?: string;
|
|
7
5
|
}): Promise<number>;
|
|
8
6
|
export declare function runEvidenceVerify(session: string, options: {
|
|
9
7
|
claimId: string;
|
|
10
|
-
|
|
8
|
+
evidenceFile?: string;
|
|
11
9
|
stance: 'support' | 'refute' | 'insufficient';
|
|
12
10
|
reason: string;
|
|
13
11
|
confidence?: number;
|
|
@@ -17,5 +15,6 @@ export declare function runEvidenceVerify(session: string, options: {
|
|
|
17
15
|
export declare function runEvidenceList(session: string, options: {
|
|
18
16
|
claimId: string;
|
|
19
17
|
format?: string;
|
|
18
|
+
includeInvalid?: boolean;
|
|
20
19
|
}): Promise<number>;
|
|
21
20
|
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAoC3D,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,MAAM,CAAC,CAmIjB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACtE,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
|
|
@@ -1,35 +1,45 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { loadEvidences, saveEvidences, nextEvidenceId, loadVerdicts, saveVerdicts, nextVerdictId, loadClaims, loadReviews, saveReviews, } from '../claims/store.js';
|
|
1
|
+
/** Evidence search, verification, and listing commands. */
|
|
2
|
+
import { createHash } from 'crypto';
|
|
3
|
+
import { assertClaimsStoreReadable, ClaimsStateError, loadClaims, loadEvidences, loadReviews, loadVerdicts, saveClaims, saveEvidences, saveReviews, saveVerdicts, } from '../claims/store.js';
|
|
5
4
|
import { aggregateClaim } from '../claims/policy.js';
|
|
6
|
-
import { computeSourceClusterId } from '../claims/deterministic-checks.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
5
|
+
import { computeSourceClusterId, searchCandidates } from '../claims/deterministic-checks.js';
|
|
6
|
+
import { getApprovedResults, initSessionDir, mutateSessionState, resolveSessionPath } from '../deep/session.js';
|
|
7
|
+
import { createErrorEnvelope, createSuccessEnvelope } from '../protocol.js';
|
|
8
|
+
import { isJsonObject, readSessionJsonInput } from './json-input.js';
|
|
9
|
+
class EvidenceCommandError extends Error {
|
|
10
|
+
code;
|
|
11
|
+
constructor(code, message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.code = code;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
11
16
|
export async function runEvidenceSearch(session, options) {
|
|
12
17
|
const sessionDir = resolveSessionPath(session);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
let claim;
|
|
19
|
+
try {
|
|
20
|
+
assertClaimsStoreReadable(sessionDir);
|
|
21
|
+
claim = loadClaims(sessionDir).find(item => item.id === options.claimId);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (error instanceof ClaimsStateError) {
|
|
25
|
+
console.log(JSON.stringify(createErrorEnvelope('CLAIMS_STATE_CORRUPTED', error.message), null, 2));
|
|
26
|
+
return 1;
|
|
27
|
+
}
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
16
30
|
if (!claim) {
|
|
17
31
|
console.log(JSON.stringify(createErrorEnvelope('CLAIM_NOT_FOUND', `Claim ${options.claimId} not found`), null, 2));
|
|
18
32
|
return 1;
|
|
19
33
|
}
|
|
20
34
|
const candidates = searchCandidates(sessionDir, claim.text);
|
|
21
|
-
|
|
22
|
-
if (outputFormat === 'md') {
|
|
35
|
+
if ((options.format || 'json') === 'md') {
|
|
23
36
|
console.log(`## Evidence Candidates for ${options.claimId}\n`);
|
|
24
|
-
if (candidates.length
|
|
37
|
+
if (!candidates.length)
|
|
25
38
|
console.log('No candidates found.');
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
console.log(
|
|
30
|
-
console.log(` ${c.quote.slice(0, 200)}`);
|
|
31
|
-
console.log(` offset: ${c.charStart}-${c.charEnd}`);
|
|
32
|
-
console.log('');
|
|
39
|
+
for (const [index, candidate] of candidates.entries()) {
|
|
40
|
+
console.log(`**${index + 1}.** [${candidate.domain}](${candidate.resultUrl})`);
|
|
41
|
+
console.log(` ${candidate.quote.slice(0, 200)}`);
|
|
42
|
+
console.log(` offset: ${candidate.charStart}-${candidate.charEnd}\n`);
|
|
33
43
|
}
|
|
34
44
|
}
|
|
35
45
|
else {
|
|
@@ -39,153 +49,163 @@ export async function runEvidenceSearch(session, options) {
|
|
|
39
49
|
}
|
|
40
50
|
export async function runEvidenceVerify(session, options) {
|
|
41
51
|
const sessionDir = resolveSessionPath(session);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
console.log(JSON.stringify(createErrorEnvelope('INVALID_EVIDENCE', 'Failed to parse --evidence JSON'), null, 2));
|
|
49
|
-
return 1;
|
|
50
|
-
}
|
|
51
|
-
// Validate required fields
|
|
52
|
-
if (!evInput.resultUrl || !evInput.quote) {
|
|
53
|
-
console.log(JSON.stringify(createErrorEnvelope('MISSING_FIELDS', '--evidence must contain resultUrl and quote'), null, 2));
|
|
54
|
-
return 1;
|
|
55
|
-
}
|
|
56
|
-
// Verify the claim exists
|
|
57
|
-
const claims = loadClaims(sessionDir);
|
|
58
|
-
const claim = claims.find(c => c.id === options.claimId);
|
|
59
|
-
if (!claim) {
|
|
60
|
-
console.log(JSON.stringify(createErrorEnvelope('CLAIM_NOT_FOUND', `Claim ${options.claimId} not found`), null, 2));
|
|
61
|
-
return 1;
|
|
62
|
-
}
|
|
63
|
-
// Deterministic checks: anchor the evidence
|
|
64
|
-
const sessionResults = loadSessionResults(sessionDir);
|
|
65
|
-
const approvedResults = sessionResults.filter(r => r.status === 'approved');
|
|
66
|
-
const result = approvedResults.find(r => r.url === evInput.resultUrl);
|
|
67
|
-
if (!result) {
|
|
68
|
-
console.log(JSON.stringify(createErrorEnvelope('URL_NOT_APPROVED', `Result URL ${evInput.resultUrl} is not in approved results`), null, 2));
|
|
69
|
-
return 1;
|
|
70
|
-
}
|
|
71
|
-
const content = result.content || '';
|
|
72
|
-
if (evInput.charEnd > content.length || evInput.charStart < 0) {
|
|
73
|
-
console.log(JSON.stringify(createErrorEnvelope('OFFSET_OUT_OF_RANGE', `charStart/charEnd out of range (content length: ${content.length})`), null, 2));
|
|
74
|
-
return 1;
|
|
75
|
-
}
|
|
76
|
-
if (result.extractedAt === undefined) {
|
|
77
|
-
console.log(JSON.stringify(createErrorEnvelope('EXTRACTION_TIME_MISSING', 'Approved result has no extraction timestamp; re-extract the source before verifying evidence'), null, 2));
|
|
52
|
+
initSessionDir(sessionDir);
|
|
53
|
+
const input = readSessionJsonInput(sessionDir, [{ option: '--evidence-file', value: options.evidenceFile, file: true }]);
|
|
54
|
+
if (!input.ok) {
|
|
55
|
+
console.log(JSON.stringify(createErrorEnvelope(input.code, input.message), null, 2));
|
|
78
56
|
return 1;
|
|
79
57
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const slice = content.slice(evInput.charStart, evInput.charEnd);
|
|
83
|
-
if (slice !== evInput.quote) {
|
|
84
|
-
console.log(JSON.stringify(createErrorEnvelope('QUOTE_MISMATCH', 'Quote does not match source content at the provided offsets'), null, 2));
|
|
58
|
+
if (!isJsonObject(input.value)) {
|
|
59
|
+
console.log(JSON.stringify(createErrorEnvelope('INVALID_EVIDENCE', '--evidence-file must contain a JSON object'), null, 2));
|
|
85
60
|
return 1;
|
|
86
61
|
}
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
62
|
+
const evidenceInput = {
|
|
63
|
+
resultId: input.value.resultId,
|
|
64
|
+
quote: input.value.quote,
|
|
65
|
+
charStart: input.value.charStart,
|
|
66
|
+
charEnd: input.value.charEnd,
|
|
67
|
+
contentHash: typeof input.value.contentHash === 'string' ? input.value.contentHash : undefined,
|
|
68
|
+
};
|
|
69
|
+
if (typeof evidenceInput.resultId !== 'string' || typeof evidenceInput.quote !== 'string'
|
|
70
|
+
|| !Number.isSafeInteger(evidenceInput.charStart) || !Number.isSafeInteger(evidenceInput.charEnd)) {
|
|
71
|
+
console.log(JSON.stringify(createErrorEnvelope('MISSING_FIELDS', '--evidence-file must contain resultId, quote, charStart, and charEnd'), null, 2));
|
|
91
72
|
return 1;
|
|
92
73
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
74
|
+
let mutation;
|
|
75
|
+
try {
|
|
76
|
+
mutation = mutateSessionState(sessionDir, () => {
|
|
77
|
+
assertClaimsStoreReadable(sessionDir);
|
|
78
|
+
const claims = loadClaims(sessionDir);
|
|
79
|
+
const claim = claims.find(item => item.id === options.claimId);
|
|
80
|
+
if (!claim)
|
|
81
|
+
throw new EvidenceCommandError('CLAIM_NOT_FOUND', `Claim ${options.claimId} not found`);
|
|
82
|
+
const result = getApprovedResults(sessionDir).find(item => item.id === evidenceInput.resultId);
|
|
83
|
+
if (!result)
|
|
84
|
+
throw new EvidenceCommandError('RESULT_NOT_APPROVED', `Result ID ${evidenceInput.resultId} is not in approved results`);
|
|
85
|
+
const content = result.content;
|
|
86
|
+
if (evidenceInput.charStart < 0 || evidenceInput.charEnd > content.length) {
|
|
87
|
+
throw new EvidenceCommandError('OFFSET_OUT_OF_RANGE', `charStart/charEnd out of range (content length: ${content.length})`);
|
|
88
|
+
}
|
|
89
|
+
const quote = content.slice(evidenceInput.charStart, evidenceInput.charEnd);
|
|
90
|
+
if (quote !== evidenceInput.quote)
|
|
91
|
+
throw new EvidenceCommandError('QUOTE_MISMATCH', 'Quote does not match source content at the provided offsets');
|
|
92
|
+
const contentHash = createHash('sha256').update(quote).digest('hex');
|
|
93
|
+
if ((evidenceInput.contentHash || contentHash) !== contentHash) {
|
|
94
|
+
throw new EvidenceCommandError('HASH_MISMATCH', 'Content hash mismatch: quote does not match source');
|
|
95
|
+
}
|
|
96
|
+
const evidences = loadEvidences(sessionDir);
|
|
97
|
+
const duplicate = evidences.find(item => item.claimId === claim.id
|
|
98
|
+
&& item.resultId === result.id
|
|
99
|
+
&& item.quote === evidenceInput.quote
|
|
100
|
+
&& item.charStart === evidenceInput.charStart
|
|
101
|
+
&& item.charEnd === evidenceInput.charEnd
|
|
102
|
+
&& !item.invalid);
|
|
103
|
+
const idempotent = Boolean(duplicate);
|
|
104
|
+
const evidence = duplicate ?? {
|
|
105
|
+
id: `ev_${String(evidences.length + 1).padStart(3, '0')}`,
|
|
106
|
+
claimId: claim.id,
|
|
107
|
+
resultId: result.id,
|
|
108
|
+
resultUrl: result.url,
|
|
109
|
+
quote: evidenceInput.quote,
|
|
110
|
+
charStart: evidenceInput.charStart,
|
|
111
|
+
charEnd: evidenceInput.charEnd,
|
|
112
|
+
contentHash,
|
|
113
|
+
extractedAt: result.extractedAt,
|
|
114
|
+
};
|
|
115
|
+
if (!duplicate)
|
|
116
|
+
evidences.push(evidence);
|
|
117
|
+
const verdicts = loadVerdicts(sessionDir);
|
|
118
|
+
let verdict = verdicts.find(item => item.claimId === claim.id && item.evidenceIds.length === 1 && item.evidenceIds[0] === evidence.id);
|
|
119
|
+
if (!verdict) {
|
|
120
|
+
verdict = {
|
|
121
|
+
id: `vd_${String(verdicts.length + 1).padStart(3, '0')}`,
|
|
122
|
+
claimId: claim.id,
|
|
123
|
+
evidenceIds: [evidence.id],
|
|
124
|
+
stance: options.stance,
|
|
125
|
+
confidence: options.confidence,
|
|
126
|
+
reason: options.reason,
|
|
127
|
+
createdAt: Date.now(),
|
|
128
|
+
};
|
|
129
|
+
verdicts.push(verdict);
|
|
130
|
+
}
|
|
131
|
+
claim.status = 'verifying';
|
|
132
|
+
const reviews = loadReviews(sessionDir);
|
|
133
|
+
let review;
|
|
134
|
+
if (options.complete) {
|
|
135
|
+
const validEvidences = evidences.filter(item => item.claimId === claim.id && !item.invalid);
|
|
136
|
+
for (const item of validEvidences)
|
|
137
|
+
item.sourceClusterId = computeSourceClusterId(item);
|
|
138
|
+
const validIds = new Set(validEvidences.map(item => item.id));
|
|
139
|
+
const claimVerdicts = verdicts.filter(item => item.claimId === claim.id && item.evidenceIds.some(id => validIds.has(id)));
|
|
140
|
+
review = aggregateClaim({ claimId: claim.id, riskLevel: claim.riskLevel, verdicts: claimVerdicts, evidences: validEvidences });
|
|
141
|
+
claim.status = 'reviewed';
|
|
142
|
+
const reviewIndex = reviews.findIndex(item => item.claimId === claim.id);
|
|
143
|
+
if (reviewIndex === -1)
|
|
144
|
+
reviews.push(review);
|
|
145
|
+
else
|
|
146
|
+
reviews[reviewIndex] = review;
|
|
147
|
+
}
|
|
148
|
+
// Every retry derives the full desired state, repairing partial prior writes.
|
|
149
|
+
saveEvidences(sessionDir, evidences);
|
|
150
|
+
saveVerdicts(sessionDir, verdicts);
|
|
151
|
+
saveClaims(sessionDir, claims);
|
|
152
|
+
saveReviews(sessionDir, reviews);
|
|
153
|
+
return { evidence, verdict, review, idempotent };
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
if (error instanceof ClaimsStateError) {
|
|
158
|
+
console.log(JSON.stringify(createErrorEnvelope('CLAIMS_STATE_CORRUPTED', error.message), null, 2));
|
|
159
|
+
return 1;
|
|
160
|
+
}
|
|
161
|
+
if (error instanceof EvidenceCommandError) {
|
|
162
|
+
console.log(JSON.stringify(createErrorEnvelope(error.code, error.message), null, 2));
|
|
163
|
+
return 1;
|
|
137
164
|
}
|
|
138
|
-
|
|
139
|
-
const input = {
|
|
140
|
-
claimId: options.claimId,
|
|
141
|
-
riskLevel: claim.riskLevel,
|
|
142
|
-
verdicts: allVds,
|
|
143
|
-
evidences: allEvs,
|
|
144
|
-
};
|
|
145
|
-
const result = aggregateClaim(input);
|
|
146
|
-
// Update claim status
|
|
147
|
-
claim.status = 'reviewed';
|
|
148
|
-
saveClaims(sessionDir, claims);
|
|
149
|
-
// Persist review
|
|
150
|
-
const existingReviews = loadReviews(sessionDir);
|
|
151
|
-
saveReviews(sessionDir, [...existingReviews, result]);
|
|
152
|
-
review = result;
|
|
165
|
+
throw error;
|
|
153
166
|
}
|
|
154
167
|
const output = {
|
|
155
|
-
evidence: { id:
|
|
156
|
-
verdict: { id:
|
|
157
|
-
...(
|
|
168
|
+
evidence: { id: mutation.evidence.id, claimId: options.claimId },
|
|
169
|
+
verdict: { id: mutation.verdict.id, stance: mutation.verdict.stance },
|
|
170
|
+
...(mutation.idempotent ? { idempotent: true } : {}),
|
|
171
|
+
...(mutation.review ? { review: { claimId: mutation.review.claimId, decision: mutation.review.decision, matchedRule: mutation.review.matchedRule, autoPass: mutation.review.autoPass } } : {}),
|
|
158
172
|
};
|
|
159
|
-
|
|
160
|
-
if (outputFormat === 'md') {
|
|
173
|
+
if ((options.format || 'json') === 'md') {
|
|
161
174
|
console.log('## Evidence-Verify Result\n');
|
|
162
|
-
console.log(`**Evidence**: ${
|
|
163
|
-
console.log(`**Verdict**: ${
|
|
164
|
-
if (review)
|
|
165
|
-
console.log(`**Review**: ${review.decision} (rule: ${review.matchedRule}, autoPass: ${review.autoPass})`);
|
|
166
|
-
}
|
|
175
|
+
console.log(`**Evidence**: ${mutation.evidence.id} -> ${options.claimId}`);
|
|
176
|
+
console.log(`**Verdict**: ${mutation.verdict.id} - ${mutation.verdict.stance}`);
|
|
177
|
+
if (mutation.review)
|
|
178
|
+
console.log(`**Review**: ${mutation.review.decision} (rule: ${mutation.review.matchedRule}, autoPass: ${mutation.review.autoPass})`);
|
|
167
179
|
}
|
|
168
180
|
else {
|
|
169
181
|
console.log(JSON.stringify(createSuccessEnvelope(output), null, 2));
|
|
170
182
|
}
|
|
171
183
|
return 0;
|
|
172
184
|
}
|
|
173
|
-
// ── evidence-list ───────────────────────────────────────────────────
|
|
174
185
|
export async function runEvidenceList(session, options) {
|
|
175
186
|
const sessionDir = resolveSessionPath(session);
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
187
|
+
let evidences;
|
|
188
|
+
try {
|
|
189
|
+
assertClaimsStoreReadable(sessionDir);
|
|
190
|
+
evidences = loadEvidences(sessionDir).filter(item => item.claimId === options.claimId && (options.includeInvalid || !item.invalid));
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
if (error instanceof ClaimsStateError) {
|
|
194
|
+
console.log(JSON.stringify(createErrorEnvelope('CLAIMS_STATE_CORRUPTED', error.message), null, 2));
|
|
195
|
+
return 1;
|
|
196
|
+
}
|
|
197
|
+
throw error;
|
|
198
|
+
}
|
|
199
|
+
if ((options.format || 'json') === 'md') {
|
|
200
|
+
if (!evidences.length) {
|
|
180
201
|
console.log('No evidence found for this claim.');
|
|
181
202
|
return 0;
|
|
182
203
|
}
|
|
183
204
|
console.log('## Evidence\n');
|
|
184
205
|
console.log('| ID | Source | Quote |');
|
|
185
206
|
console.log('|----|--------|-------|');
|
|
186
|
-
for (const
|
|
187
|
-
console.log(`| ${
|
|
188
|
-
}
|
|
207
|
+
for (const evidence of evidences)
|
|
208
|
+
console.log(`| ${evidence.id} | ${evidence.resultUrl} | ${evidence.quote.slice(0, 60)}... |`);
|
|
189
209
|
}
|
|
190
210
|
else {
|
|
191
211
|
console.log(JSON.stringify(createSuccessEnvelope({ evidences }), null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"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"}
|