sxng-cli 1.2.3 → 1.2.5
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 +89 -15
- package/dist/claims/deterministic-checks.d.ts +3 -2
- package/dist/claims/deterministic-checks.d.ts.map +1 -1
- package/dist/claims/deterministic-checks.js +33 -16
- package/dist/claims/deterministic-checks.js.map +1 -1
- package/dist/claims/policy.js +5 -5
- package/dist/claims/policy.js.map +1 -1
- package/dist/claims/types.d.ts +4 -4
- package/dist/claims/types.d.ts.map +1 -1
- package/dist/commands/doc-index.d.ts.map +1 -1
- package/dist/commands/doc-index.js +28 -29
- package/dist/commands/doc-index.js.map +1 -1
- package/dist/commands/doc-search.d.ts.map +1 -1
- package/dist/commands/doc-search.js +1 -0
- package/dist/commands/doc-search.js.map +1 -1
- package/dist/commands/evidence.d.ts.map +1 -1
- package/dist/commands/evidence.js +14 -6
- package/dist/commands/evidence.js.map +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +9 -21
- package/dist/commands/extract.js.map +1 -1
- package/dist/commands/graph-add.d.ts.map +1 -1
- package/dist/commands/graph-add.js +13 -3
- package/dist/commands/graph-add.js.map +1 -1
- package/dist/commands/results-add.d.ts +1 -0
- package/dist/commands/results-add.d.ts.map +1 -1
- package/dist/commands/results-add.js +6 -2
- package/dist/commands/results-add.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +2 -4
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +5 -0
- package/dist/commands/session.js.map +1 -1
- package/dist/deep/dedupe.d.ts +9 -4
- package/dist/deep/dedupe.d.ts.map +1 -1
- package/dist/deep/dedupe.js +54 -11
- package/dist/deep/dedupe.js.map +1 -1
- package/dist/deep/graph-preprocess.d.ts +6 -0
- package/dist/deep/graph-preprocess.d.ts.map +1 -1
- package/dist/deep/graph-preprocess.js +8 -0
- package/dist/deep/graph-preprocess.js.map +1 -1
- package/dist/deep/graph.d.ts +1 -1
- package/dist/deep/graph.d.ts.map +1 -1
- package/dist/deep/graph.js +8 -4
- package/dist/deep/graph.js.map +1 -1
- package/dist/deep/index.d.ts +1 -1
- package/dist/deep/index.d.ts.map +1 -1
- package/dist/deep/index.js +1 -1
- package/dist/deep/index.js.map +1 -1
- package/dist/deep/iteration-data.d.ts.map +1 -1
- package/dist/deep/iteration-data.js +2 -2
- package/dist/deep/iteration-data.js.map +1 -1
- package/dist/deep/local-doc/indexer.d.ts +16 -1
- package/dist/deep/local-doc/indexer.d.ts.map +1 -1
- package/dist/deep/local-doc/indexer.js +305 -22
- package/dist/deep/local-doc/indexer.js.map +1 -1
- package/dist/deep/local-doc/scanner.d.ts +6 -6
- package/dist/deep/local-doc/scanner.d.ts.map +1 -1
- package/dist/deep/local-doc/scanner.js +123 -128
- package/dist/deep/local-doc/scanner.js.map +1 -1
- package/dist/deep/local-doc/searcher.d.ts +1 -0
- package/dist/deep/local-doc/searcher.d.ts.map +1 -1
- package/dist/deep/local-doc/searcher.js +25 -7
- package/dist/deep/local-doc/searcher.js.map +1 -1
- package/dist/deep/local-doc/types.d.ts +21 -0
- package/dist/deep/local-doc/types.d.ts.map +1 -1
- package/dist/deep/local-doc/types.js.map +1 -1
- package/dist/deep/quality-assess.d.ts +6 -4
- package/dist/deep/quality-assess.d.ts.map +1 -1
- package/dist/deep/quality-assess.js +37 -29
- package/dist/deep/quality-assess.js.map +1 -1
- package/dist/deep/session.d.ts +10 -2
- package/dist/deep/session.d.ts.map +1 -1
- package/dist/deep/session.js +54 -39
- package/dist/deep/session.js.map +1 -1
- package/dist/runCli.d.ts.map +1 -1
- package/dist/runCli.js +47 -17
- package/dist/runCli.js.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +3 -35
- package/dist/service.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,24 +8,25 @@
|
|
|
8
8
|
* Three indicators (independent thresholds, no weighted sum):
|
|
9
9
|
* - contentDepth: average extracted content length
|
|
10
10
|
* - sourceDiversity: number of distinct domains
|
|
11
|
-
* - novelty: fraction not similar to
|
|
11
|
+
* - novelty: fraction not similar to earlier approved results (Jaccard)
|
|
12
12
|
*
|
|
13
13
|
* Verdict logic:
|
|
14
14
|
* - good: all pass
|
|
15
15
|
* - acceptable: 1 fails
|
|
16
|
-
* - poor:
|
|
16
|
+
* - poor: 鈮? fail
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import { jaccardSimilarity, resultUrlKey } from './dedupe.js';
|
|
19
19
|
const DEFAULT_THRESHOLDS = {
|
|
20
20
|
contentDepth: 150,
|
|
21
21
|
sourceDiversity: 3,
|
|
22
22
|
novelty: 0.3,
|
|
23
23
|
};
|
|
24
|
-
|
|
24
|
+
const NOVELTY_SIMILARITY_THRESHOLD = 0.75;
|
|
25
|
+
// 鈹€鈹€ Indicator computations 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
|
|
25
26
|
/** Extract domain from URL */
|
|
26
27
|
function extractDomain(url) {
|
|
27
28
|
if (url.startsWith('file://'))
|
|
28
|
-
return ''; // local docs
|
|
29
|
+
return ''; // local docs 鈫?no domain
|
|
29
30
|
try {
|
|
30
31
|
return new URL(url).hostname;
|
|
31
32
|
}
|
|
@@ -33,7 +34,7 @@ function extractDomain(url) {
|
|
|
33
34
|
return '';
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
/** Compute content depth indicator
|
|
37
|
+
/** Compute content depth indicator 鈥?average content length of extracted results only */
|
|
37
38
|
function computeContentDepth(results, threshold) {
|
|
38
39
|
const extracted = results.filter(r => r.content && r.content.length > 0);
|
|
39
40
|
if (extracted.length === 0) {
|
|
@@ -43,7 +44,7 @@ function computeContentDepth(results, threshold) {
|
|
|
43
44
|
const value = totalLength / extracted.length;
|
|
44
45
|
return { value, threshold, pass: value >= threshold };
|
|
45
46
|
}
|
|
46
|
-
/** Compute source diversity indicator
|
|
47
|
+
/** Compute source diversity indicator 鈥?number of distinct domains */
|
|
47
48
|
function computeSourceDiversity(newResults, threshold) {
|
|
48
49
|
const domains = new Set();
|
|
49
50
|
for (const r of newResults) {
|
|
@@ -54,47 +55,54 @@ function computeSourceDiversity(newResults, threshold) {
|
|
|
54
55
|
const value = domains.size;
|
|
55
56
|
return { value, threshold, pass: value >= threshold };
|
|
56
57
|
}
|
|
57
|
-
/** Compute novelty
|
|
58
|
-
|
|
59
|
-
* Caches SimHash results for performance. */
|
|
60
|
-
function computeNovelty(newResults, sessionResults, threshold) {
|
|
58
|
+
/** Compute text novelty against distinct historical URLs. */
|
|
59
|
+
function computeNovelty(newResults, sessionResults, threshold, seenEarlierUrls) {
|
|
61
60
|
if (newResults.length === 0) {
|
|
62
61
|
return { value: 0, threshold, pass: false };
|
|
63
62
|
}
|
|
64
|
-
if (sessionResults.length === 0) {
|
|
65
|
-
// No prior results → everything is novel
|
|
63
|
+
if (sessionResults.length === 0 && !seenEarlierUrls?.size) {
|
|
66
64
|
return { value: 1, threshold, pass: true };
|
|
67
65
|
}
|
|
68
|
-
const simhash = new SimHash();
|
|
69
|
-
// Cache existing hashes to avoid recomputation
|
|
70
|
-
const existingHashes = sessionResults.map(r => simhash.hash(`${r.title} ${r.content || ''}`));
|
|
71
66
|
let novelCount = 0;
|
|
72
67
|
for (const r of newResults) {
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (!isSimilar)
|
|
68
|
+
const text = r.content || r.title;
|
|
69
|
+
const repeatedFromEarlierRound = seenEarlierUrls?.has(resultUrlKey(r)) ?? false;
|
|
70
|
+
const isSimilarToPriorResult = sessionResults.some(existing => existing.url !== r.url
|
|
71
|
+
&& jaccardSimilarity(text, existing.content || existing.title) >= NOVELTY_SIMILARITY_THRESHOLD);
|
|
72
|
+
if (!repeatedFromEarlierRound && !isSimilarToPriorResult)
|
|
82
73
|
novelCount++;
|
|
83
74
|
}
|
|
84
75
|
const value = novelCount / newResults.length;
|
|
85
76
|
return { value, threshold, pass: value >= threshold };
|
|
86
77
|
}
|
|
87
|
-
|
|
78
|
+
/** Assess results from the newest recorded round against earlier approved results. */
|
|
79
|
+
export function assessLatestResultQuality(sessionResults, thresholds) {
|
|
80
|
+
const rounds = sessionResults.flatMap(result => (result.origins || []).map(origin => origin.round).filter((round) => Number.isInteger(round)));
|
|
81
|
+
if (rounds.length === 0)
|
|
82
|
+
return assessResultQuality(sessionResults, sessionResults, thresholds);
|
|
83
|
+
const latestRound = Math.max(...rounds);
|
|
84
|
+
const isFromRound = (result, predicate) => (result.origins || []).some(origin => origin.round !== undefined && predicate(origin.round));
|
|
85
|
+
const latestResults = sessionResults.filter(result => isFromRound(result, round => round === latestRound));
|
|
86
|
+
const priorApproved = sessionResults.filter(result => result.status === 'approved' && isFromRound(result, round => round < latestRound));
|
|
87
|
+
const seenEarlierUrls = new Set(sessionResults
|
|
88
|
+
.filter(result => isFromRound(result, round => round < latestRound))
|
|
89
|
+
.map(result => resultUrlKey(result)));
|
|
90
|
+
return assessQuality(latestResults, priorApproved, thresholds, seenEarlierUrls);
|
|
91
|
+
}
|
|
92
|
+
// 鈹€鈹€ Main assessment 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
|
|
88
93
|
/** Assess the quality of results against session context.
|
|
89
|
-
* Programmatic pre-filter only
|
|
90
|
-
* All indicators use independent thresholds
|
|
94
|
+
* Programmatic pre-filter only 鈥?Agent makes final quality decision.
|
|
95
|
+
* All indicators use independent thresholds 鈥?no weighted sum.
|
|
91
96
|
*/
|
|
92
97
|
export function assessResultQuality(results, sessionResults, thresholds) {
|
|
98
|
+
return assessQuality(results, sessionResults, thresholds);
|
|
99
|
+
}
|
|
100
|
+
function assessQuality(results, sessionResults, thresholds, seenEarlierUrls) {
|
|
93
101
|
const t = { ...DEFAULT_THRESHOLDS, ...thresholds };
|
|
94
102
|
const breakdown = {
|
|
95
103
|
contentDepth: computeContentDepth(results, t.contentDepth),
|
|
96
104
|
sourceDiversity: computeSourceDiversity(results, t.sourceDiversity),
|
|
97
|
-
novelty: computeNovelty(results, sessionResults, t.novelty),
|
|
105
|
+
novelty: computeNovelty(results, sessionResults, t.novelty, seenEarlierUrls),
|
|
98
106
|
};
|
|
99
107
|
const failedIndicators = Object.entries(breakdown)
|
|
100
108
|
.filter(([, v]) => !v.pass)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-assess.js","sourceRoot":"","sources":["../../src/deep/quality-assess.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"quality-assess.js","sourceRoot":"","sources":["../../src/deep/quality-assess.ts"],"names":[],"mappings":"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"}
|
package/dist/deep/session.d.ts
CHANGED
|
@@ -15,9 +15,14 @@ export interface SessionResult {
|
|
|
15
15
|
category?: string;
|
|
16
16
|
score?: number;
|
|
17
17
|
publishedDate?: string;
|
|
18
|
+
extractedAt?: number;
|
|
18
19
|
byline?: string;
|
|
19
20
|
siteName?: string;
|
|
20
21
|
source?: string;
|
|
22
|
+
origins?: Array<{
|
|
23
|
+
query: string;
|
|
24
|
+
round?: number;
|
|
25
|
+
}>;
|
|
21
26
|
status?: 'pending' | 'approved' | 'rejected';
|
|
22
27
|
[key: string]: unknown;
|
|
23
28
|
}
|
|
@@ -38,7 +43,7 @@ export declare function resolveSessionPath(sessionValue: string): string;
|
|
|
38
43
|
export declare function initSessionDir(sessionDir: string, owner?: string, description?: string, query?: string): void;
|
|
39
44
|
/** Load accumulated results from session, or return empty */
|
|
40
45
|
export declare function loadSessionResults(sessionDir: string): SessionResult[];
|
|
41
|
-
/** Append new results to session results (dedup by
|
|
46
|
+
/** Append new results to session results (dedup by normalized URL).
|
|
42
47
|
* New results are marked as 'pending' and will not be injected into graph
|
|
43
48
|
* until approved by Agent quality assessment.
|
|
44
49
|
*/
|
|
@@ -47,6 +52,7 @@ export declare function appendSessionResults(sessionDir: string, newResults: Ses
|
|
|
47
52
|
}): {
|
|
48
53
|
added: number;
|
|
49
54
|
total: number;
|
|
55
|
+
approvedResults: SessionResult[];
|
|
50
56
|
};
|
|
51
57
|
/** Load graph from session, or create empty */
|
|
52
58
|
export declare function loadSessionGraph(sessionDir: string): DirectedGraph<GraphNodeAttrs, GraphEdgeAttrs>;
|
|
@@ -62,11 +68,12 @@ export declare function getApprovedResults(sessionDir: string): SessionResult[];
|
|
|
62
68
|
export declare function approveResults(sessionDir: string, indices: number[]): {
|
|
63
69
|
approved: number;
|
|
64
70
|
total: number;
|
|
71
|
+
approvedResults: SessionResult[];
|
|
65
72
|
};
|
|
66
73
|
/** Inject approved results into graph (structural layer).
|
|
67
74
|
* Uses query from session meta.json if not provided.
|
|
68
75
|
*/
|
|
69
|
-
export declare function injectApprovedResults(sessionDir: string,
|
|
76
|
+
export declare function injectApprovedResults(sessionDir: string, approved: SessionResult[]): {
|
|
70
77
|
nodesAdded: number;
|
|
71
78
|
edgesAdded: number;
|
|
72
79
|
};
|
|
@@ -90,6 +97,7 @@ export declare function mergeExtractedContent(sessionDir: string, extracted: Arr
|
|
|
90
97
|
byline?: string;
|
|
91
98
|
siteName?: string;
|
|
92
99
|
length?: number;
|
|
100
|
+
extractedAt?: number;
|
|
93
101
|
error?: string;
|
|
94
102
|
}>): {
|
|
95
103
|
updated: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/deep/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAsE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIhI,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE;QACF,OAAO,EAAE,aAAa,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAe/D;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAqB7G;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CActE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,aAAa,EAAE,EAC3B,OAAO,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/deep/session.ts"],"names":[],"mappings":"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"}
|
package/dist/deep/session.js
CHANGED
|
@@ -9,7 +9,7 @@ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
|
9
9
|
import { join } from 'path';
|
|
10
10
|
import { DirectedGraph } from 'graphology';
|
|
11
11
|
import { deserializeGraph, serializeGraph, graphStats, buildStructuralEdges } from './graph.js';
|
|
12
|
-
import {
|
|
12
|
+
import { resultUrlKey } from './dedupe.js';
|
|
13
13
|
import { getDefaultSessionRoot, loadSessionMeta } from '../commands/session.js';
|
|
14
14
|
/** Resolve session path. Supports:
|
|
15
15
|
* - "new": auto-create under default root with unique name
|
|
@@ -70,7 +70,7 @@ export function loadSessionResults(sessionDir) {
|
|
|
70
70
|
return [];
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
/** Append new results to session results (dedup by
|
|
73
|
+
/** Append new results to session results (dedup by normalized URL).
|
|
74
74
|
* New results are marked as 'pending' and will not be injected into graph
|
|
75
75
|
* until approved by Agent quality assessment.
|
|
76
76
|
*/
|
|
@@ -80,36 +80,42 @@ export function appendSessionResults(sessionDir, newResults, options) {
|
|
|
80
80
|
mkdirSync(sessionDir, { recursive: true });
|
|
81
81
|
}
|
|
82
82
|
const existing = loadSessionResults(sessionDir);
|
|
83
|
-
const
|
|
83
|
+
const currentRounds = loadSessionRounds(sessionDir) || 0;
|
|
84
|
+
const round = options?.skipRoundIncrement
|
|
85
|
+
? Math.max(1, currentRounds)
|
|
86
|
+
: Math.max(1, currentRounds + 1);
|
|
84
87
|
const urlMap = new Map();
|
|
85
|
-
// Index existing results by normalized title and URL
|
|
86
88
|
for (const r of existing) {
|
|
87
|
-
|
|
88
|
-
if (titleKey)
|
|
89
|
-
titleMap.set(titleKey, r);
|
|
90
|
-
urlMap.set(normalizeUrl(r.url), r);
|
|
89
|
+
urlMap.set(resultUrlKey(r), r);
|
|
91
90
|
}
|
|
91
|
+
const mergeOrigins = (target, origins) => {
|
|
92
|
+
if (!origins?.length)
|
|
93
|
+
return;
|
|
94
|
+
const combined = [...(target.origins || []), ...origins];
|
|
95
|
+
target.origins = Array.from(new Map(combined.map(origin => [`${origin.round ?? round}\0${origin.query}`, { ...origin, round: origin.round ?? round }])).values());
|
|
96
|
+
};
|
|
92
97
|
// Add new results (dedup: keep first occurrence)
|
|
93
98
|
let added = 0;
|
|
99
|
+
const approvedResults = [];
|
|
94
100
|
for (const r of newResults) {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
const norm = resultUrlKey(r);
|
|
102
|
+
const existingResult = urlMap.get(norm);
|
|
103
|
+
if (existingResult) {
|
|
104
|
+
const originCount = existingResult.origins?.length ?? 0;
|
|
105
|
+
mergeOrigins(existingResult, r.origins);
|
|
106
|
+
if (existingResult.status === 'approved' && (existingResult.origins?.length ?? 0) > originCount) {
|
|
107
|
+
approvedResults.push(existingResult);
|
|
108
|
+
}
|
|
100
109
|
continue;
|
|
110
|
+
}
|
|
101
111
|
// Mark new results as pending
|
|
102
112
|
r.status = 'pending';
|
|
103
|
-
|
|
104
|
-
titleMap.set(titleKey, r);
|
|
113
|
+
mergeOrigins(r, r.origins);
|
|
105
114
|
urlMap.set(norm, r);
|
|
106
115
|
added++;
|
|
107
116
|
}
|
|
108
117
|
const all = Array.from(urlMap.values());
|
|
109
|
-
const
|
|
110
|
-
const rounds = options?.skipRoundIncrement
|
|
111
|
-
? Math.max(1, currentRounds)
|
|
112
|
-
: Math.max(1, currentRounds + 1);
|
|
118
|
+
const rounds = round;
|
|
113
119
|
const file = join(sessionDir, 'results.json');
|
|
114
120
|
try {
|
|
115
121
|
writeFileSync(file, JSON.stringify({
|
|
@@ -120,7 +126,7 @@ export function appendSessionResults(sessionDir, newResults, options) {
|
|
|
120
126
|
catch (e) {
|
|
121
127
|
throw new Error(`Failed to write session results to ${file}: ${e instanceof Error ? e.message : String(e)}`);
|
|
122
128
|
}
|
|
123
|
-
return { added, total: all.length };
|
|
129
|
+
return { added, total: all.length, approvedResults };
|
|
124
130
|
}
|
|
125
131
|
/** Load graph from session, or create empty */
|
|
126
132
|
export function loadSessionGraph(sessionDir) {
|
|
@@ -173,19 +179,21 @@ export function getApprovedResults(sessionDir) {
|
|
|
173
179
|
export function approveResults(sessionDir, indices) {
|
|
174
180
|
const results = loadSessionResults(sessionDir);
|
|
175
181
|
const pending = results.filter(r => !r.status || r.status === 'pending');
|
|
176
|
-
//
|
|
177
|
-
const
|
|
182
|
+
// Keep local chunk fragments so selecting one chunk does not approve its siblings.
|
|
183
|
+
const approvedResultKeys = new Set();
|
|
178
184
|
for (const idx of indices) {
|
|
179
185
|
if (idx >= 0 && idx < pending.length) {
|
|
180
|
-
|
|
186
|
+
approvedResultKeys.add(resultUrlKey(pending[idx]));
|
|
181
187
|
}
|
|
182
188
|
}
|
|
183
189
|
// Update status
|
|
184
190
|
let approved = 0;
|
|
191
|
+
const approvedResults = [];
|
|
185
192
|
for (const r of results) {
|
|
186
|
-
if (
|
|
193
|
+
if (approvedResultKeys.has(resultUrlKey(r))) {
|
|
187
194
|
r.status = 'approved';
|
|
188
195
|
approved++;
|
|
196
|
+
approvedResults.push(r);
|
|
189
197
|
}
|
|
190
198
|
}
|
|
191
199
|
// Save back
|
|
@@ -200,27 +208,32 @@ export function approveResults(sessionDir, indices) {
|
|
|
200
208
|
catch (e) {
|
|
201
209
|
throw new Error(`Failed to write session results to ${file}: ${e instanceof Error ? e.message : String(e)}`);
|
|
202
210
|
}
|
|
203
|
-
return { approved, total: results.length };
|
|
211
|
+
return { approved, total: results.length, approvedResults };
|
|
204
212
|
}
|
|
205
213
|
/** Inject approved results into graph (structural layer).
|
|
206
214
|
* Uses query from session meta.json if not provided.
|
|
207
215
|
*/
|
|
208
|
-
export function injectApprovedResults(sessionDir,
|
|
209
|
-
const approved = getApprovedResults(sessionDir);
|
|
216
|
+
export function injectApprovedResults(sessionDir, approved) {
|
|
210
217
|
if (approved.length === 0) {
|
|
211
218
|
return { nodesAdded: 0, edgesAdded: 0 };
|
|
212
219
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
220
|
+
const graph = loadSessionGraph(sessionDir);
|
|
221
|
+
const beforeNodes = graph.order;
|
|
222
|
+
const beforeEdges = graph.size;
|
|
223
|
+
const groups = new Map();
|
|
224
|
+
for (const result of approved) {
|
|
225
|
+
for (const origin of result.origins || []) {
|
|
226
|
+
const key = `${origin.round ?? 0}\0${origin.query}`;
|
|
227
|
+
const group = groups.get(key) ?? { query: origin.query, round: origin.round, results: [] };
|
|
228
|
+
group.results.push({ url: result.url, title: result.title, source: result.source });
|
|
229
|
+
groups.set(key, group);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
for (const group of groups.values()) {
|
|
233
|
+
buildStructuralEdges(graph, group.query, group.results, group.round);
|
|
218
234
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
title: r.title,
|
|
222
|
-
source: r.source,
|
|
223
|
-
})), round);
|
|
235
|
+
saveSessionGraph(sessionDir, graph);
|
|
236
|
+
return { nodesAdded: graph.order - beforeNodes, edgesAdded: graph.size - beforeEdges };
|
|
224
237
|
}
|
|
225
238
|
/** Count pending results */
|
|
226
239
|
export function countPendingResults(sessionDir) {
|
|
@@ -242,13 +255,13 @@ export function mergeExtractedContent(sessionDir, extracted) {
|
|
|
242
255
|
const results = loadSessionResults(sessionDir);
|
|
243
256
|
const urlMap = new Map();
|
|
244
257
|
for (const r of results) {
|
|
245
|
-
urlMap.set(
|
|
258
|
+
urlMap.set(resultUrlKey(r), r);
|
|
246
259
|
}
|
|
247
260
|
let updated = 0;
|
|
248
261
|
for (const ex of extracted) {
|
|
249
262
|
if (ex.error)
|
|
250
263
|
continue;
|
|
251
|
-
const norm =
|
|
264
|
+
const norm = resultUrlKey({ url: ex.url, source: ex.url.startsWith('file:') ? 'local' : undefined });
|
|
252
265
|
const existing = urlMap.get(norm);
|
|
253
266
|
if (existing) {
|
|
254
267
|
existing.content = ex.content;
|
|
@@ -260,6 +273,8 @@ export function mergeExtractedContent(sessionDir, extracted) {
|
|
|
260
273
|
existing.siteName = ex.siteName;
|
|
261
274
|
if (ex.length)
|
|
262
275
|
existing.contentLength = ex.length;
|
|
276
|
+
if (ex.extractedAt !== undefined)
|
|
277
|
+
existing.extractedAt = ex.extractedAt;
|
|
263
278
|
updated++;
|
|
264
279
|
}
|
|
265
280
|
}
|
package/dist/deep/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/deep/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/deep/session.ts"],"names":[],"mappings":"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"}
|
package/dist/runCli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCli.d.ts","sourceRoot":"","sources":["../src/runCli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EAAE,cAAc,EAA+C,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"runCli.d.ts","sourceRoot":"","sources":["../src/runCli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EAAE,cAAc,EAA+C,MAAM,cAAc,CAAC;AAyvB3F,wBAAgB,aAAa,IAAI,OAAO,CAwiBvC;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyO5F"}
|
package/dist/runCli.js
CHANGED
|
@@ -19,13 +19,13 @@ import { runDocSearch } from './commands/doc-search.js';
|
|
|
19
19
|
import { runGraphObfuscateCommand } from './commands/graph-obfuscate.js';
|
|
20
20
|
import { ContentExtractor } from './deep/extractor.js';
|
|
21
21
|
import { rrf } from './deep/rrf.js';
|
|
22
|
-
import { normalizeUrl } from './deep/dedupe.js';
|
|
22
|
+
import { normalizeUrl, resultUrlKey } from './deep/dedupe.js';
|
|
23
23
|
import { graphStats } from './deep/graph.js';
|
|
24
24
|
import { initSessionDir, resolveSessionPath, appendSessionResults, loadSessionResults, loadSessionGraph, countPendingResults, getPendingResults, approveResults, injectApprovedResults } from './deep/session.js';
|
|
25
25
|
import { runSessionList, runSessionDelete } from './commands/session.js';
|
|
26
26
|
import { graphPreprocess } from './deep/graph-preprocess.js';
|
|
27
27
|
import { checkQueryRedundancy } from './deep/query-redundancy.js';
|
|
28
|
-
import { assessResultQuality } from './deep/quality-assess.js';
|
|
28
|
+
import { assessLatestResultQuality, assessResultQuality } from './deep/quality-assess.js';
|
|
29
29
|
import { generateQuerySuggestions } from './deep/query-suggest.js';
|
|
30
30
|
import { determineSearchStage, getStrategyInfo } from './deep/search-strategy.js';
|
|
31
31
|
import { analyzeRecoveryOptions } from './deep/recovery-analysis.js';
|
|
@@ -127,6 +127,16 @@ function formatPreprocessAsMarkdown(data) {
|
|
|
127
127
|
}
|
|
128
128
|
lines.push('');
|
|
129
129
|
}
|
|
130
|
+
if (data.resultProvenance?.length) {
|
|
131
|
+
lines.push('### Result Provenance');
|
|
132
|
+
lines.push('');
|
|
133
|
+
lines.push('| ID | URL | Title | Rounds |');
|
|
134
|
+
lines.push('|----|-----|-------|--------|');
|
|
135
|
+
for (const result of data.resultProvenance) {
|
|
136
|
+
lines.push(`| ${result.id} | ${result.url} | ${result.title} | ${result.rounds.join(', ') || '-'} |`);
|
|
137
|
+
}
|
|
138
|
+
lines.push('');
|
|
139
|
+
}
|
|
130
140
|
return lines.join('\n');
|
|
131
141
|
}
|
|
132
142
|
function formatQualityAsMarkdown(data) {
|
|
@@ -452,7 +462,11 @@ async function runSearch(service, options) {
|
|
|
452
462
|
const results = await service.search(searchOptions);
|
|
453
463
|
let sessionInfo = null;
|
|
454
464
|
if (options.session) {
|
|
455
|
-
sessionInfo = appendSessionResults(options.session, results.results
|
|
465
|
+
sessionInfo = appendSessionResults(options.session, results.results.map(result => ({
|
|
466
|
+
...result,
|
|
467
|
+
origins: [{ query: queries[0] }],
|
|
468
|
+
})));
|
|
469
|
+
injectApprovedResults(options.session, sessionInfo.approvedResults);
|
|
456
470
|
// Check pending count and warn if >= 30
|
|
457
471
|
const pendingCount = countPendingResults(options.session);
|
|
458
472
|
if (pendingCount >= 30) {
|
|
@@ -464,15 +478,16 @@ async function runSearch(service, options) {
|
|
|
464
478
|
if (options.session) {
|
|
465
479
|
const allSessionResults = loadSessionResults(options.session);
|
|
466
480
|
const rankings = [
|
|
467
|
-
results.results.map(r => ({ id:
|
|
468
|
-
allSessionResults.map(r => ({ id:
|
|
481
|
+
results.results.map(r => ({ id: resultUrlKey(r), ...r })),
|
|
482
|
+
allSessionResults.map(r => ({ id: resultUrlKey(r), ...r })),
|
|
469
483
|
];
|
|
470
484
|
const fused = rrf(rankings);
|
|
471
485
|
const urlMap = new Map();
|
|
472
|
-
for (const r of results.results)
|
|
473
|
-
urlMap.set(normalizeUrl(r.url), r);
|
|
474
486
|
for (const r of allSessionResults)
|
|
475
|
-
urlMap.set(
|
|
487
|
+
urlMap.set(resultUrlKey(r), r);
|
|
488
|
+
// Keep current search content when it overlaps with older session data.
|
|
489
|
+
for (const r of results.results)
|
|
490
|
+
urlMap.set(resultUrlKey(r), r);
|
|
476
491
|
displayResults = fused
|
|
477
492
|
.map(item => {
|
|
478
493
|
const original = urlMap.get(item.id);
|
|
@@ -599,7 +614,20 @@ async function runSearch(service, options) {
|
|
|
599
614
|
}
|
|
600
615
|
let sessionInfo = null;
|
|
601
616
|
if (options.session) {
|
|
602
|
-
|
|
617
|
+
const originsByUrl = new Map();
|
|
618
|
+
for (const response of allResponses) {
|
|
619
|
+
for (const result of response.results) {
|
|
620
|
+
const key = normalizeUrl(result.url);
|
|
621
|
+
const origins = originsByUrl.get(key) || [];
|
|
622
|
+
origins.push({ query: response.query });
|
|
623
|
+
originsByUrl.set(key, origins);
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
sessionInfo = appendSessionResults(options.session, fusedResults.map(result => ({
|
|
627
|
+
...result,
|
|
628
|
+
origins: originsByUrl.get(normalizeUrl(result.url)),
|
|
629
|
+
})));
|
|
630
|
+
injectApprovedResults(options.session, sessionInfo.approvedResults);
|
|
603
631
|
// Check pending count and warn if >= 30
|
|
604
632
|
const pendingCount = countPendingResults(options.session);
|
|
605
633
|
if (pendingCount >= 30) {
|
|
@@ -724,7 +752,7 @@ export function createProgram() {
|
|
|
724
752
|
program
|
|
725
753
|
.command('graph-add')
|
|
726
754
|
.argument('<path>', 'Graph file or session name')
|
|
727
|
-
.description('Add entities/edges to knowledge graph.
|
|
755
|
+
.description('Add entities/edges to knowledge graph. New entities require sourceRounds from graph-preprocess.')
|
|
728
756
|
.requiredOption('--data <json>', 'JSON with entities/edges')
|
|
729
757
|
.action(async (path, opts) => {
|
|
730
758
|
const code = await runGraphAdd({
|
|
@@ -738,9 +766,10 @@ export function createProgram() {
|
|
|
738
766
|
.argument('<session>', 'Session directory or name')
|
|
739
767
|
.description('Append external search results to session as pending (awaiting quality assessment)')
|
|
740
768
|
.requiredOption('--data <json>', 'JSON array of results or object with "results" array')
|
|
769
|
+
.requiredOption('--query <query>', 'Search query that produced these results')
|
|
741
770
|
.addHelpText('after', `
|
|
742
771
|
Examples:
|
|
743
|
-
sxng results-add my-session --data '[{"url":"https://...","title":"...","source":"tavily"}]'
|
|
772
|
+
sxng results-add my-session --query "async runtime" --data '[{"url":"https://...","title":"...","source":"tavily"}]'
|
|
744
773
|
|
|
745
774
|
Results are marked as pending and go through the same approve pipeline as sxng-native results.
|
|
746
775
|
Use --quality --approve to inject into graph.`)
|
|
@@ -748,6 +777,7 @@ Use --quality --approve to inject into graph.`)
|
|
|
748
777
|
const code = await runResultsAdd({
|
|
749
778
|
session,
|
|
750
779
|
data: opts.data,
|
|
780
|
+
query: opts.query,
|
|
751
781
|
});
|
|
752
782
|
process.exit(code);
|
|
753
783
|
});
|
|
@@ -834,7 +864,7 @@ and write them back via graph-add.`)
|
|
|
834
864
|
program
|
|
835
865
|
.command('graph-preprocess')
|
|
836
866
|
.argument('<session>', 'Session directory or name')
|
|
837
|
-
.description('Preprocess session data: TF-IDF, co-occurrence, entity context')
|
|
867
|
+
.description('Preprocess session data: TF-IDF, co-occurrence, entity context, and result provenance')
|
|
838
868
|
.option('--top <n>', 'Top N terms to return', val => parseInt(val, 10), 30)
|
|
839
869
|
.option('--co-occurrence-threshold <n>', 'Min co-occurrence count', val => parseInt(val, 10), 2)
|
|
840
870
|
.option('--max-terms <n>', 'Max terms for co-occurrence matrix', val => parseInt(val, 10), 50)
|
|
@@ -872,7 +902,7 @@ Examples:
|
|
|
872
902
|
const graph = loadSessionGraph(sessionDir);
|
|
873
903
|
const results = loadSessionResults(sessionDir);
|
|
874
904
|
const stage = determineSearchStage(graph);
|
|
875
|
-
const quality =
|
|
905
|
+
const quality = assessLatestResultQuality(results);
|
|
876
906
|
const data = generateQuerySuggestions(graph, results, stage, quality);
|
|
877
907
|
if (opts.format === 'md') {
|
|
878
908
|
console.log(formatSuggestAsMarkdown(data));
|
|
@@ -921,7 +951,7 @@ Examples:
|
|
|
921
951
|
const sessionDir = resolveSessionPath(session);
|
|
922
952
|
const graph = loadSessionGraph(sessionDir);
|
|
923
953
|
const results = loadSessionResults(sessionDir);
|
|
924
|
-
const quality =
|
|
954
|
+
const quality = assessLatestResultQuality(results);
|
|
925
955
|
const analysis = analyzeRecoveryOptions(graph, results, quality);
|
|
926
956
|
if (opts.format === 'md') {
|
|
927
957
|
console.log(formatRecoveryAsMarkdown(analysis));
|
|
@@ -1211,9 +1241,9 @@ export async function runCli(args, service) {
|
|
|
1211
1241
|
// Handle Agent approval first (before showing quality assessment)
|
|
1212
1242
|
if (opts.approve) {
|
|
1213
1243
|
const indices = opts.approve.split(',').map((s) => parseInt(s.trim(), 10)).filter((n) => !isNaN(n));
|
|
1214
|
-
const { approved, total } = approveResults(sessionDir, indices);
|
|
1215
|
-
// Inject
|
|
1216
|
-
const injectInfo = injectApprovedResults(sessionDir);
|
|
1244
|
+
const { approved, total, approvedResults } = approveResults(sessionDir, indices);
|
|
1245
|
+
// Inject only the results selected by this approval action.
|
|
1246
|
+
const injectInfo = injectApprovedResults(sessionDir, approvedResults);
|
|
1217
1247
|
console.log(JSON.stringify(createSuccessEnvelope({
|
|
1218
1248
|
approved,
|
|
1219
1249
|
total,
|