sxng-cli 1.2.3 → 1.2.4
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 +7 -10
- 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 +2 -2
- 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 +9 -5
- 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 +5 -0
- package/dist/deep/graph-preprocess.d.ts.map +1 -1
- package/dist/deep/graph-preprocess.js +6 -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 +8 -2
- package/dist/deep/session.d.ts.map +1 -1
- package/dist/deep/session.js +57 -33
- 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
|
@@ -18,6 +18,10 @@ export interface SessionResult {
|
|
|
18
18
|
byline?: string;
|
|
19
19
|
siteName?: string;
|
|
20
20
|
source?: string;
|
|
21
|
+
origins?: Array<{
|
|
22
|
+
query: string;
|
|
23
|
+
round?: number;
|
|
24
|
+
}>;
|
|
21
25
|
status?: 'pending' | 'approved' | 'rejected';
|
|
22
26
|
[key: string]: unknown;
|
|
23
27
|
}
|
|
@@ -38,7 +42,7 @@ export declare function resolveSessionPath(sessionValue: string): string;
|
|
|
38
42
|
export declare function initSessionDir(sessionDir: string, owner?: string, description?: string, query?: string): void;
|
|
39
43
|
/** Load accumulated results from session, or return empty */
|
|
40
44
|
export declare function loadSessionResults(sessionDir: string): SessionResult[];
|
|
41
|
-
/** Append new results to session results (dedup by title then URL).
|
|
45
|
+
/** Append new results to session results (web results dedup by title then URL; local results by URL).
|
|
42
46
|
* New results are marked as 'pending' and will not be injected into graph
|
|
43
47
|
* until approved by Agent quality assessment.
|
|
44
48
|
*/
|
|
@@ -47,6 +51,7 @@ export declare function appendSessionResults(sessionDir: string, newResults: Ses
|
|
|
47
51
|
}): {
|
|
48
52
|
added: number;
|
|
49
53
|
total: number;
|
|
54
|
+
approvedResults: SessionResult[];
|
|
50
55
|
};
|
|
51
56
|
/** Load graph from session, or create empty */
|
|
52
57
|
export declare function loadSessionGraph(sessionDir: string): DirectedGraph<GraphNodeAttrs, GraphEdgeAttrs>;
|
|
@@ -62,11 +67,12 @@ export declare function getApprovedResults(sessionDir: string): SessionResult[];
|
|
|
62
67
|
export declare function approveResults(sessionDir: string, indices: number[]): {
|
|
63
68
|
approved: number;
|
|
64
69
|
total: number;
|
|
70
|
+
approvedResults: SessionResult[];
|
|
65
71
|
};
|
|
66
72
|
/** Inject approved results into graph (structural layer).
|
|
67
73
|
* Uses query from session meta.json if not provided.
|
|
68
74
|
*/
|
|
69
|
-
export declare function injectApprovedResults(sessionDir: string,
|
|
75
|
+
export declare function injectApprovedResults(sessionDir: string, approved: SessionResult[]): {
|
|
70
76
|
nodesAdded: number;
|
|
71
77
|
edgesAdded: number;
|
|
72
78
|
};
|
|
@@ -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 title then URL).
|
|
73
|
+
/** Append new results to session results (web results dedup by title then URL; local results by 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,53 @@ export function appendSessionResults(sessionDir, newResults, options) {
|
|
|
80
80
|
mkdirSync(sessionDir, { recursive: true });
|
|
81
81
|
}
|
|
82
82
|
const existing = loadSessionResults(sessionDir);
|
|
83
|
+
const currentRounds = loadSessionRounds(sessionDir) || 0;
|
|
84
|
+
const round = options?.skipRoundIncrement
|
|
85
|
+
? Math.max(1, currentRounds)
|
|
86
|
+
: Math.max(1, currentRounds + 1);
|
|
83
87
|
const titleMap = new Map();
|
|
84
88
|
const urlMap = new Map();
|
|
85
|
-
//
|
|
89
|
+
// Local document chunks can share a title, so only web results use title deduplication.
|
|
86
90
|
for (const r of existing) {
|
|
87
91
|
const titleKey = r.title?.toLowerCase().trim();
|
|
88
|
-
if (titleKey)
|
|
92
|
+
if (r.source !== 'local' && titleKey)
|
|
89
93
|
titleMap.set(titleKey, r);
|
|
90
|
-
urlMap.set(
|
|
94
|
+
urlMap.set(resultUrlKey(r), r);
|
|
91
95
|
}
|
|
96
|
+
const mergeOrigins = (target, origins) => {
|
|
97
|
+
if (!origins?.length)
|
|
98
|
+
return;
|
|
99
|
+
const combined = [...(target.origins || []), ...origins];
|
|
100
|
+
target.origins = Array.from(new Map(combined.map(origin => [`${origin.round ?? round}\0${origin.query}`, { ...origin, round: origin.round ?? round }])).values());
|
|
101
|
+
};
|
|
92
102
|
// Add new results (dedup: keep first occurrence)
|
|
93
103
|
let added = 0;
|
|
104
|
+
const approvedResults = [];
|
|
94
105
|
for (const r of newResults) {
|
|
95
106
|
const titleKey = r.title?.toLowerCase().trim();
|
|
96
|
-
|
|
107
|
+
const dedupeByTitle = r.source !== 'local';
|
|
108
|
+
const norm = resultUrlKey(r);
|
|
109
|
+
const existingResult = urlMap.get(norm);
|
|
110
|
+
if (existingResult) {
|
|
111
|
+
const originCount = existingResult.origins?.length ?? 0;
|
|
112
|
+
mergeOrigins(existingResult, r.origins);
|
|
113
|
+
if (existingResult.status === 'approved' && (existingResult.origins?.length ?? 0) > originCount) {
|
|
114
|
+
approvedResults.push(existingResult);
|
|
115
|
+
}
|
|
97
116
|
continue;
|
|
98
|
-
|
|
99
|
-
if (
|
|
117
|
+
}
|
|
118
|
+
if (dedupeByTitle && titleKey && titleMap.has(titleKey))
|
|
100
119
|
continue;
|
|
101
120
|
// Mark new results as pending
|
|
102
121
|
r.status = 'pending';
|
|
103
|
-
|
|
122
|
+
mergeOrigins(r, r.origins);
|
|
123
|
+
if (dedupeByTitle && titleKey)
|
|
104
124
|
titleMap.set(titleKey, r);
|
|
105
125
|
urlMap.set(norm, r);
|
|
106
126
|
added++;
|
|
107
127
|
}
|
|
108
128
|
const all = Array.from(urlMap.values());
|
|
109
|
-
const
|
|
110
|
-
const rounds = options?.skipRoundIncrement
|
|
111
|
-
? Math.max(1, currentRounds)
|
|
112
|
-
: Math.max(1, currentRounds + 1);
|
|
129
|
+
const rounds = round;
|
|
113
130
|
const file = join(sessionDir, 'results.json');
|
|
114
131
|
try {
|
|
115
132
|
writeFileSync(file, JSON.stringify({
|
|
@@ -120,7 +137,7 @@ export function appendSessionResults(sessionDir, newResults, options) {
|
|
|
120
137
|
catch (e) {
|
|
121
138
|
throw new Error(`Failed to write session results to ${file}: ${e instanceof Error ? e.message : String(e)}`);
|
|
122
139
|
}
|
|
123
|
-
return { added, total: all.length };
|
|
140
|
+
return { added, total: all.length, approvedResults };
|
|
124
141
|
}
|
|
125
142
|
/** Load graph from session, or create empty */
|
|
126
143
|
export function loadSessionGraph(sessionDir) {
|
|
@@ -173,19 +190,21 @@ export function getApprovedResults(sessionDir) {
|
|
|
173
190
|
export function approveResults(sessionDir, indices) {
|
|
174
191
|
const results = loadSessionResults(sessionDir);
|
|
175
192
|
const pending = results.filter(r => !r.status || r.status === 'pending');
|
|
176
|
-
//
|
|
177
|
-
const
|
|
193
|
+
// Keep local chunk fragments so selecting one chunk does not approve its siblings.
|
|
194
|
+
const approvedResultKeys = new Set();
|
|
178
195
|
for (const idx of indices) {
|
|
179
196
|
if (idx >= 0 && idx < pending.length) {
|
|
180
|
-
|
|
197
|
+
approvedResultKeys.add(resultUrlKey(pending[idx]));
|
|
181
198
|
}
|
|
182
199
|
}
|
|
183
200
|
// Update status
|
|
184
201
|
let approved = 0;
|
|
202
|
+
const approvedResults = [];
|
|
185
203
|
for (const r of results) {
|
|
186
|
-
if (
|
|
204
|
+
if (approvedResultKeys.has(resultUrlKey(r))) {
|
|
187
205
|
r.status = 'approved';
|
|
188
206
|
approved++;
|
|
207
|
+
approvedResults.push(r);
|
|
189
208
|
}
|
|
190
209
|
}
|
|
191
210
|
// Save back
|
|
@@ -200,27 +219,32 @@ export function approveResults(sessionDir, indices) {
|
|
|
200
219
|
catch (e) {
|
|
201
220
|
throw new Error(`Failed to write session results to ${file}: ${e instanceof Error ? e.message : String(e)}`);
|
|
202
221
|
}
|
|
203
|
-
return { approved, total: results.length };
|
|
222
|
+
return { approved, total: results.length, approvedResults };
|
|
204
223
|
}
|
|
205
224
|
/** Inject approved results into graph (structural layer).
|
|
206
225
|
* Uses query from session meta.json if not provided.
|
|
207
226
|
*/
|
|
208
|
-
export function injectApprovedResults(sessionDir,
|
|
209
|
-
const approved = getApprovedResults(sessionDir);
|
|
227
|
+
export function injectApprovedResults(sessionDir, approved) {
|
|
210
228
|
if (approved.length === 0) {
|
|
211
229
|
return { nodesAdded: 0, edgesAdded: 0 };
|
|
212
230
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
231
|
+
const graph = loadSessionGraph(sessionDir);
|
|
232
|
+
const beforeNodes = graph.order;
|
|
233
|
+
const beforeEdges = graph.size;
|
|
234
|
+
const groups = new Map();
|
|
235
|
+
for (const result of approved) {
|
|
236
|
+
for (const origin of result.origins || []) {
|
|
237
|
+
const key = `${origin.round ?? 0}\0${origin.query}`;
|
|
238
|
+
const group = groups.get(key) ?? { query: origin.query, round: origin.round, results: [] };
|
|
239
|
+
group.results.push({ url: result.url, title: result.title, source: result.source });
|
|
240
|
+
groups.set(key, group);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
for (const group of groups.values()) {
|
|
244
|
+
buildStructuralEdges(graph, group.query, group.results, group.round);
|
|
218
245
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
title: r.title,
|
|
222
|
-
source: r.source,
|
|
223
|
-
})), round);
|
|
246
|
+
saveSessionGraph(sessionDir, graph);
|
|
247
|
+
return { nodesAdded: graph.order - beforeNodes, edgesAdded: graph.size - beforeEdges };
|
|
224
248
|
}
|
|
225
249
|
/** Count pending results */
|
|
226
250
|
export function countPendingResults(sessionDir) {
|
|
@@ -242,13 +266,13 @@ export function mergeExtractedContent(sessionDir, extracted) {
|
|
|
242
266
|
const results = loadSessionResults(sessionDir);
|
|
243
267
|
const urlMap = new Map();
|
|
244
268
|
for (const r of results) {
|
|
245
|
-
urlMap.set(
|
|
269
|
+
urlMap.set(resultUrlKey(r), r);
|
|
246
270
|
}
|
|
247
271
|
let updated = 0;
|
|
248
272
|
for (const ex of extracted) {
|
|
249
273
|
if (ex.error)
|
|
250
274
|
continue;
|
|
251
|
-
const norm =
|
|
275
|
+
const norm = resultUrlKey({ url: ex.url, source: ex.url.startsWith('file:') ? 'local' : undefined });
|
|
252
276
|
const existing = urlMap.get(norm);
|
|
253
277
|
if (existing) {
|
|
254
278
|
existing.content = ex.content;
|
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('| URL | Title | Rounds |');
|
|
134
|
+
lines.push('|-----|-------|--------|');
|
|
135
|
+
for (const result of data.resultProvenance) {
|
|
136
|
+
lines.push(`| ${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,
|