daftari 1.30.0 → 1.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -0
- package/README.md +139 -4
- package/dist/access/rbac.d.ts +1 -0
- package/dist/access/rbac.d.ts.map +1 -1
- package/dist/access/rbac.js +7 -0
- package/dist/access/rbac.js.map +1 -1
- package/dist/audit/checks/broken_refs.d.ts +1 -1
- package/dist/audit/checks/broken_refs.d.ts.map +1 -1
- package/dist/audit/checks/broken_refs.js +77 -22
- package/dist/audit/checks/broken_refs.js.map +1 -1
- package/dist/audit/collect.d.ts +1 -0
- package/dist/audit/collect.d.ts.map +1 -1
- package/dist/audit/collect.js +22 -2
- package/dist/audit/collect.js.map +1 -1
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +9 -3
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/links.d.ts.map +1 -1
- package/dist/audit/links.js +9 -3
- package/dist/audit/links.js.map +1 -1
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/report.js +2 -0
- package/dist/audit/report.js.map +1 -1
- package/dist/audit/types.d.ts +4 -1
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js.map +1 -1
- package/dist/backfill/derive.d.ts.map +1 -1
- package/dist/backfill/derive.js +1 -0
- package/dist/backfill/derive.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -0
- package/dist/cli.js.map +1 -1
- package/dist/court/precedent.d.ts.map +1 -1
- package/dist/court/precedent.js +6 -1
- package/dist/court/precedent.js.map +1 -1
- package/dist/curation/consumes.d.ts +24 -0
- package/dist/curation/consumes.d.ts.map +1 -0
- package/dist/curation/consumes.js +122 -0
- package/dist/curation/consumes.js.map +1 -0
- package/dist/curation/edge-staleness.d.ts +47 -0
- package/dist/curation/edge-staleness.d.ts.map +1 -0
- package/dist/curation/edge-staleness.js +258 -0
- package/dist/curation/edge-staleness.js.map +1 -0
- package/dist/curation/edges.d.ts.map +1 -1
- package/dist/curation/edges.js +164 -10
- package/dist/curation/edges.js.map +1 -1
- package/dist/curation/lint.d.ts +4 -1
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +61 -6
- package/dist/curation/lint.js.map +1 -1
- package/dist/curation/provenance.d.ts +2 -0
- package/dist/curation/provenance.d.ts.map +1 -1
- package/dist/curation/provenance.js +2 -0
- package/dist/curation/provenance.js.map +1 -1
- package/dist/curation/read-log.d.ts +19 -0
- package/dist/curation/read-log.d.ts.map +1 -0
- package/dist/curation/read-log.js +120 -0
- package/dist/curation/read-log.js.map +1 -0
- package/dist/curation/review-throughput.d.ts +24 -0
- package/dist/curation/review-throughput.d.ts.map +1 -0
- package/dist/curation/review-throughput.js +102 -0
- package/dist/curation/review-throughput.js.map +1 -0
- package/dist/curation/staged-actions.d.ts +11 -1
- package/dist/curation/staged-actions.d.ts.map +1 -1
- package/dist/curation/staged-actions.js +102 -24
- package/dist/curation/staged-actions.js.map +1 -1
- package/dist/curation/structural.d.ts +16 -0
- package/dist/curation/structural.d.ts.map +1 -0
- package/dist/curation/structural.js +64 -0
- package/dist/curation/structural.js.map +1 -0
- package/dist/curation/tension-blast.d.ts +4 -0
- package/dist/curation/tension-blast.d.ts.map +1 -1
- package/dist/curation/tension-blast.js +9 -0
- package/dist/curation/tension-blast.js.map +1 -1
- package/dist/curation/tension.d.ts +5 -2
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +68 -25
- package/dist/curation/tension.js.map +1 -1
- package/dist/curation/tier0.d.ts +27 -0
- package/dist/curation/tier0.d.ts.map +1 -0
- package/dist/curation/tier0.js +196 -0
- package/dist/curation/tier0.js.map +1 -0
- package/dist/curation/tier1.d.ts +30 -0
- package/dist/curation/tier1.d.ts.map +1 -0
- package/dist/curation/tier1.js +142 -0
- package/dist/curation/tier1.js.map +1 -0
- package/dist/curation/tier2.d.ts +43 -0
- package/dist/curation/tier2.d.ts.map +1 -0
- package/dist/curation/tier2.js +182 -0
- package/dist/curation/tier2.js.map +1 -0
- package/dist/curation/vault-docs.d.ts +5 -1
- package/dist/curation/vault-docs.d.ts.map +1 -1
- package/dist/curation/vault-docs.js +14 -0
- package/dist/curation/vault-docs.js.map +1 -1
- package/dist/eval/generate.js +22 -5
- package/dist/eval/generate.js.map +1 -1
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +173 -25
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/llm.js +1 -1
- package/dist/eval/llm.js.map +1 -1
- package/dist/eval/prune.d.ts +24 -0
- package/dist/eval/prune.d.ts.map +1 -0
- package/dist/eval/prune.js +83 -0
- package/dist/eval/prune.js.map +1 -0
- package/dist/eval/storage.d.ts +3 -0
- package/dist/eval/storage.d.ts.map +1 -1
- package/dist/eval/storage.js +14 -0
- package/dist/eval/storage.js.map +1 -1
- package/dist/frontmatter/schema.d.ts.map +1 -1
- package/dist/frontmatter/schema.js +19 -1
- package/dist/frontmatter/schema.js.map +1 -1
- package/dist/frontmatter/types.d.ts +4 -1
- package/dist/frontmatter/types.d.ts.map +1 -1
- package/dist/frontmatter/types.js +8 -0
- package/dist/frontmatter/types.js.map +1 -1
- package/dist/import/index.d.ts.map +1 -1
- package/dist/import/index.js +44 -9
- package/dist/import/index.js.map +1 -1
- package/dist/import/langgraph-store.d.ts +53 -0
- package/dist/import/langgraph-store.d.ts.map +1 -0
- package/dist/import/langgraph-store.js +292 -0
- package/dist/import/langgraph-store.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -18
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/lock.d.ts +9 -1
- package/dist/lifecycle/lock.d.ts.map +1 -1
- package/dist/lifecycle/lock.js +34 -9
- package/dist/lifecycle/lock.js.map +1 -1
- package/dist/okf/export.d.ts +12 -0
- package/dist/okf/export.d.ts.map +1 -0
- package/dist/okf/export.js +115 -0
- package/dist/okf/export.js.map +1 -0
- package/dist/okf/import.d.ts +24 -0
- package/dist/okf/import.d.ts.map +1 -0
- package/dist/okf/import.js +107 -0
- package/dist/okf/import.js.map +1 -0
- package/dist/okf/index.d.ts +2 -0
- package/dist/okf/index.d.ts.map +1 -0
- package/dist/okf/index.js +147 -0
- package/dist/okf/index.js.map +1 -0
- package/dist/okf/map.d.ts +16 -0
- package/dist/okf/map.d.ts.map +1 -0
- package/dist/okf/map.js +149 -0
- package/dist/okf/map.js.map +1 -0
- package/dist/okf/types.d.ts +9 -0
- package/dist/okf/types.d.ts.map +1 -0
- package/dist/okf/types.js +48 -0
- package/dist/okf/types.js.map +1 -0
- package/dist/search/coverage.d.ts.map +1 -1
- package/dist/search/coverage.js +1 -1
- package/dist/search/coverage.js.map +1 -1
- package/dist/search/hybrid.d.ts +19 -0
- package/dist/search/hybrid.d.ts.map +1 -1
- package/dist/search/hybrid.js +58 -10
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/reindex.d.ts +1 -0
- package/dist/search/reindex.d.ts.map +1 -1
- package/dist/search/reindex.js +41 -11
- package/dist/search/reindex.js.map +1 -1
- package/dist/search/watcher.d.ts +2 -0
- package/dist/search/watcher.d.ts.map +1 -1
- package/dist/search/watcher.js +21 -10
- package/dist/search/watcher.js.map +1 -1
- package/dist/serve/index.d.ts +36 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +507 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/server.d.ts +10 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +89 -14
- package/dist/server.js.map +1 -1
- package/dist/sleep/index.d.ts +2 -0
- package/dist/sleep/index.d.ts.map +1 -1
- package/dist/sleep/index.js +212 -21
- package/dist/sleep/index.js.map +1 -1
- package/dist/sleep/report.d.ts +3 -0
- package/dist/sleep/report.d.ts.map +1 -1
- package/dist/sleep/report.js +52 -0
- package/dist/sleep/report.js.map +1 -1
- package/dist/sleep/tension-scan-state.d.ts +19 -0
- package/dist/sleep/tension-scan-state.d.ts.map +1 -0
- package/dist/sleep/tension-scan-state.js +0 -0
- package/dist/sleep/tension-scan-state.js.map +1 -0
- package/dist/sleep/tension-scan.d.ts +44 -0
- package/dist/sleep/tension-scan.d.ts.map +1 -0
- package/dist/sleep/tension-scan.js +0 -0
- package/dist/sleep/tension-scan.js.map +1 -0
- package/dist/storage/backend.d.ts +12 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +231 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/backends/fs.d.ts +4 -0
- package/dist/storage/backends/fs.d.ts.map +1 -0
- package/dist/storage/backends/fs.js +99 -0
- package/dist/storage/backends/fs.js.map +1 -0
- package/dist/storage/fs-walk.d.ts +5 -0
- package/dist/storage/fs-walk.d.ts.map +1 -0
- package/dist/storage/fs-walk.js +28 -0
- package/dist/storage/fs-walk.js.map +1 -0
- package/dist/storage/index-db.d.ts +16 -0
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +94 -5
- package/dist/storage/index-db.js.map +1 -1
- package/dist/storage/local.d.ts +1 -0
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +12 -0
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/sync.d.ts +25 -0
- package/dist/storage/sync.d.ts.map +1 -0
- package/dist/storage/sync.js +308 -0
- package/dist/storage/sync.js.map +1 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +136 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/themes/clustering.d.ts +6 -11
- package/dist/themes/clustering.d.ts.map +1 -1
- package/dist/themes/clustering.js +76 -84
- package/dist/themes/clustering.js.map +1 -1
- package/dist/tools/consumes.d.ts +14 -0
- package/dist/tools/consumes.d.ts.map +1 -0
- package/dist/tools/consumes.js +99 -0
- package/dist/tools/consumes.js.map +1 -0
- package/dist/tools/curation.d.ts +2 -0
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +53 -15
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/edge-staleness.d.ts +28 -0
- package/dist/tools/edge-staleness.d.ts.map +1 -0
- package/dist/tools/edge-staleness.js +205 -0
- package/dist/tools/edge-staleness.js.map +1 -0
- package/dist/tools/edges.d.ts.map +1 -1
- package/dist/tools/edges.js +27 -21
- package/dist/tools/edges.js.map +1 -1
- package/dist/tools/read.d.ts +15 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +142 -29
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/receipt.d.ts.map +1 -1
- package/dist/tools/receipt.js +16 -7
- package/dist/tools/receipt.js.map +1 -1
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +147 -5
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/staged-actions.d.ts +3 -0
- package/dist/tools/staged-actions.d.ts.map +1 -1
- package/dist/tools/staged-actions.js +227 -22
- package/dist/tools/staged-actions.js.map +1 -1
- package/dist/tools/themes.d.ts +8 -0
- package/dist/tools/themes.d.ts.map +1 -1
- package/dist/tools/themes.js +208 -122
- package/dist/tools/themes.js.map +1 -1
- package/dist/tools/tier1.d.ts +14 -0
- package/dist/tools/tier1.d.ts.map +1 -0
- package/dist/tools/tier1.js +169 -0
- package/dist/tools/tier1.js.map +1 -0
- package/dist/tools/tier2.d.ts +27 -0
- package/dist/tools/tier2.d.ts.map +1 -0
- package/dist/tools/tier2.js +344 -0
- package/dist/tools/tier2.js.map +1 -0
- package/dist/tools/write.d.ts +9 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +492 -6
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +52 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +372 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/run-id.d.ts +3 -0
- package/dist/utils/run-id.d.ts.map +1 -0
- package/dist/utils/run-id.js +19 -0
- package/dist/utils/run-id.js.map +1 -0
- package/dist/utils/vault-gitignore.d.ts +1 -1
- package/dist/utils/vault-gitignore.d.ts.map +1 -1
- package/dist/utils/vault-gitignore.js +4 -1
- package/dist/utils/vault-gitignore.js.map +1 -1
- package/package.json +21 -1
- package/templates/config.yaml +8 -0
package/dist/tools/curation.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type AccessContext } from "../access/rbac.js";
|
|
|
2
2
|
import type { CoverageEquitySummary } from "../curation/coverage.js";
|
|
3
3
|
import { type LintCheckName, type LintFinding, type StagedActionLintItem, type TensionHealth } from "../curation/lint.js";
|
|
4
4
|
import { type ProvenanceEntry } from "../curation/provenance.js";
|
|
5
|
+
import type { ReviewThroughputSummary } from "../curation/review-throughput.js";
|
|
5
6
|
import type { ShadowLintSummary } from "../curation/shadow.js";
|
|
6
7
|
import { type TensionEntry } from "../curation/tension.js";
|
|
7
8
|
import { type TensionBlastResult } from "../curation/tension-blast.js";
|
|
@@ -21,6 +22,7 @@ export interface VaultLintResult {
|
|
|
21
22
|
stagedActions: StagedActionLintItem[];
|
|
22
23
|
shadowActions: ShadowLintSummary;
|
|
23
24
|
coverageEquity: CoverageEquitySummary;
|
|
25
|
+
reviewThroughput: ReviewThroughputSummary;
|
|
24
26
|
}
|
|
25
27
|
export declare function vaultLint(vaultRoot: string, args?: Record<string, unknown>, access?: AccessContext): Promise<Result<VaultLintResult, Error>>;
|
|
26
28
|
export interface VaultProvenanceResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curation.d.ts","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,aAAa,EAAkC,MAAM,mBAAmB,CAAC;AAEvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,2BAA2B,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAOL,KAAK,YAAY,EAElB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,
|
|
1
|
+
{"version":3,"file":"curation.d.ts","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/curation.js
CHANGED
|
@@ -15,12 +15,12 @@ import { readProvenanceLog } from "../curation/provenance.js";
|
|
|
15
15
|
import { sweepExpiredActions } from "../curation/staged-actions.js";
|
|
16
16
|
import { addTension, LOGGABLE_TENSION_KINDS, listTensions, RESOLUTION_KINDS, resolveTension, } from "../curation/tension.js";
|
|
17
17
|
import { canSeeTension, sourceReadable, visibleTensions } from "../curation/tension-access.js";
|
|
18
|
-
import { computeTensionBlast } from "../curation/tension-blast.js";
|
|
18
|
+
import { bucketHiddenDownstream, computeTensionBlast, } from "../curation/tension-blast.js";
|
|
19
19
|
import { loadTensionClusters } from "../curation/tension-clusters.js";
|
|
20
20
|
import { parseDocument } from "../frontmatter/parser.js";
|
|
21
21
|
import { err, ok } from "../frontmatter/types.js";
|
|
22
22
|
import { readFile, resolveVaultPath } from "../storage/local.js";
|
|
23
|
-
import {
|
|
23
|
+
import { openIndexForAccessOrNull } from "./search.js";
|
|
24
24
|
// Curation tools are open to any role with at least one read grant. A guest
|
|
25
25
|
// (or any role with no read access) is denied.
|
|
26
26
|
function requireReadAccess(tool, access) {
|
|
@@ -32,15 +32,6 @@ function requireReadAccess(tool, access) {
|
|
|
32
32
|
}
|
|
33
33
|
return ok(undefined);
|
|
34
34
|
}
|
|
35
|
-
// Read-only index handle for collection lookups. openIndexForActiveProvider
|
|
36
|
-
// ONLY — never ensureIndexReady, which reindexes on an empty index; these
|
|
37
|
-
// tools must never reindex. Open failure degrades to null: visibility then
|
|
38
|
-
// gates on the pure first-segment rule (fail-closed), and the tool call
|
|
39
|
-
// itself never fails for RBAC-lookup reasons.
|
|
40
|
-
function openIndexForAccessOrNull(vaultRoot) {
|
|
41
|
-
const opened = openIndexForActiveProvider(vaultRoot);
|
|
42
|
-
return opened.ok ? opened.value : null;
|
|
43
|
-
}
|
|
44
35
|
// ---------------------------------------------------------------------------
|
|
45
36
|
// vault_tension_log
|
|
46
37
|
// ---------------------------------------------------------------------------
|
|
@@ -254,7 +245,34 @@ export async function vaultTensionBlast(vaultRoot, args, access) {
|
|
|
254
245
|
if (document !== undefined && access && !sourceReadable(db, access, document)) {
|
|
255
246
|
return err(new Error(`access denied: role '${access.roleName}' cannot blast from '${document}'`));
|
|
256
247
|
}
|
|
257
|
-
|
|
248
|
+
const result = await computeTensionBlast(vaultRoot, { document, cluster_id }, (entries) => visibleTensions(db, entries, access));
|
|
249
|
+
if (!result.ok || !access)
|
|
250
|
+
return result;
|
|
251
|
+
// #217 (B′): the downstream list omits docs the role cannot read; the
|
|
252
|
+
// visible counts and depth are recomputed over what remains, and the
|
|
253
|
+
// hidden remainder surfaces only as a coarsened bucket — an exact delta
|
|
254
|
+
// would disclose linked existence (small-cell class).
|
|
255
|
+
const kept = result.value.downstream.filter((e) => sourceReadable(db, access, e.path));
|
|
256
|
+
const hidden = result.value.downstream.length - kept.length;
|
|
257
|
+
let primary_blast = 0;
|
|
258
|
+
let advisory_blast = 0;
|
|
259
|
+
let max_depth = 0;
|
|
260
|
+
for (const e of kept) {
|
|
261
|
+
if (e.dependency_type === "source")
|
|
262
|
+
primary_blast += 1;
|
|
263
|
+
else
|
|
264
|
+
advisory_blast += 1;
|
|
265
|
+
if (e.distance > max_depth)
|
|
266
|
+
max_depth = e.distance;
|
|
267
|
+
}
|
|
268
|
+
return ok({
|
|
269
|
+
...result.value,
|
|
270
|
+
downstream: kept,
|
|
271
|
+
primary_blast,
|
|
272
|
+
advisory_blast,
|
|
273
|
+
max_depth,
|
|
274
|
+
hidden_downstream: bucketHiddenDownstream(hidden),
|
|
275
|
+
});
|
|
258
276
|
}
|
|
259
277
|
finally {
|
|
260
278
|
db?.close();
|
|
@@ -283,7 +301,17 @@ export async function vaultLint(vaultRoot, args = {}, access) {
|
|
|
283
301
|
const swept = await sweepExpiredActions(vaultRoot);
|
|
284
302
|
if (!swept.ok)
|
|
285
303
|
return swept;
|
|
286
|
-
|
|
304
|
+
// #217: findings compute from the caller's vantage — runLint drops
|
|
305
|
+
// invisible docs before any check runs (see LintOptions.pathVisible).
|
|
306
|
+
// tensionHealth stays vault-global by design.
|
|
307
|
+
const db = access ? openIndexForAccessOrNull(vaultRoot) : null;
|
|
308
|
+
let report;
|
|
309
|
+
try {
|
|
310
|
+
report = await runLint(vaultRoot, access ? { pathVisible: (p) => sourceReadable(db, access, p) } : {});
|
|
311
|
+
}
|
|
312
|
+
finally {
|
|
313
|
+
db?.close();
|
|
314
|
+
}
|
|
287
315
|
if (!report.ok)
|
|
288
316
|
return report;
|
|
289
317
|
if (filter) {
|
|
@@ -297,6 +325,7 @@ export async function vaultLint(vaultRoot, args = {}, access) {
|
|
|
297
325
|
stagedActions: report.value.stagedActions,
|
|
298
326
|
shadowActions: report.value.shadowActions,
|
|
299
327
|
coverageEquity: report.value.coverageEquity,
|
|
328
|
+
reviewThroughput: report.value.reviewThroughput,
|
|
300
329
|
});
|
|
301
330
|
}
|
|
302
331
|
return ok({
|
|
@@ -308,6 +337,7 @@ export async function vaultLint(vaultRoot, args = {}, access) {
|
|
|
308
337
|
stagedActions: report.value.stagedActions,
|
|
309
338
|
shadowActions: report.value.shadowActions,
|
|
310
339
|
coverageEquity: report.value.coverageEquity,
|
|
340
|
+
reviewThroughput: report.value.reviewThroughput,
|
|
311
341
|
});
|
|
312
342
|
}
|
|
313
343
|
// Returns the write history of a single document, oldest entry first, read
|
|
@@ -479,7 +509,11 @@ export const curationTools = [
|
|
|
479
509
|
"counts as primary. 'superseded_by' is not a blast edge: the doc that " +
|
|
480
510
|
"supersedes a contested doc is the replacement, not an inheritor. The " +
|
|
481
511
|
"response identifies the containing cluster (if any) so the agent sees " +
|
|
482
|
-
"the broader region without a second call.
|
|
512
|
+
"the broader region without a second call. Under RBAC the downstream " +
|
|
513
|
+
"list and counts cover only documents the role can read; " +
|
|
514
|
+
"'hidden_downstream' (none | some | many) coarsely signals unreadable " +
|
|
515
|
+
"downstream docs — treat 'some' or 'many' as 'the real blast exceeds " +
|
|
516
|
+
"what you can see' when weighing a resolution. Read-only.",
|
|
483
517
|
inputSchema: {
|
|
484
518
|
type: "object",
|
|
485
519
|
properties: {
|
|
@@ -507,9 +541,13 @@ export const curationTools = [
|
|
|
507
541
|
"TTL, orphan files with no inbound links, old drafts, stagnant " +
|
|
508
542
|
"low-confidence files, deprecated files still linked from canonical " +
|
|
509
543
|
"ones, and questions raised but unanswered anywhere in the vault. " +
|
|
544
|
+
"Under RBAC, findings compute from the caller's vantage: documents in " +
|
|
545
|
+
"unreadable collections are neither named nor counted as linkers. " +
|
|
510
546
|
"Also reports tension health (counts by kind and resolution kind, " +
|
|
511
547
|
"stable acknowledged persistent disagreements, and legacy unspecified " +
|
|
512
|
-
"entries)
|
|
548
|
+
"entries) — tension-health counts are deliberately VAULT-GLOBAL, not " +
|
|
549
|
+
"RBAC-filtered: counts only, no paths, so vault health reads the same " +
|
|
550
|
+
"for every role. Lists pending staged actions awaiting ratification, and — " +
|
|
513
551
|
"when the vault has run shadow_mode — summarizes shadow-logged writes " +
|
|
514
552
|
"with the ones the trust budget would have gated. " +
|
|
515
553
|
"Never auto-fixes vault content; it does, as housekeeping, expire " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curation.js","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"curation.js","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type AccessContext } from "../access/rbac.js";
|
|
2
|
+
import { type UpstreamStaleness, type UpstreamStalenessSummary } from "../curation/edge-staleness.js";
|
|
3
|
+
import type { HiddenDownstream } from "../curation/tension-blast.js";
|
|
4
|
+
import { type Result } from "../frontmatter/types.js";
|
|
5
|
+
import type { ToolDefinition } from "./read.js";
|
|
6
|
+
export interface ArtifactStalenessResult {
|
|
7
|
+
mode: "artifact";
|
|
8
|
+
artifact: string;
|
|
9
|
+
edges: UpstreamStaleness[];
|
|
10
|
+
hidden_pending: HiddenDownstream;
|
|
11
|
+
summary: UpstreamStalenessSummary;
|
|
12
|
+
}
|
|
13
|
+
export interface BrokenReadToolSlice {
|
|
14
|
+
serves: number;
|
|
15
|
+
broken_serves: number;
|
|
16
|
+
}
|
|
17
|
+
export interface BrokenReadReport {
|
|
18
|
+
mode: "report";
|
|
19
|
+
window_days: number;
|
|
20
|
+
serves: number;
|
|
21
|
+
broken_serves: number;
|
|
22
|
+
broken_read_rate: number | null;
|
|
23
|
+
by_tool: Record<string, BrokenReadToolSlice>;
|
|
24
|
+
uninstrumented: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function vaultStaleness(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<ArtifactStalenessResult | BrokenReadReport, Error>>;
|
|
27
|
+
export declare const edgeStalenessTools: ToolDefinition[];
|
|
28
|
+
//# sourceMappingURL=edge-staleness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-staleness.d.ts","sourceRoot":"","sources":["../../src/tools/edge-staleness.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAE9B,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,cAAc,EAAE,gBAAgB,CAAC;IAGjC,OAAO,EAAE,wBAAwB,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAIpB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAI7C,cAAc,EAAE,MAAM,CAAC;CACxB;AAyHD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,uBAAuB,GAAG,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAuBpE;AAED,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAoC9C,CAAC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
// vault_staleness — the query surface over edge staleness (#234).
|
|
2
|
+
//
|
|
3
|
+
// Two modes:
|
|
4
|
+
//
|
|
5
|
+
// { artifact } — the full three-class upstream report for one document:
|
|
6
|
+
// every compiled / declared / earned edge classified against its own
|
|
7
|
+
// baseline (current / pending-compatible / pending-broken /
|
|
8
|
+
// pending-unchecked), by running tier-1 dispatch at query time — the
|
|
9
|
+
// tier-1 layer stores no verdicts, so it can never go stale. Recorded
|
|
10
|
+
// tier-2 SEMANTIC verdicts (#232, the one judgment that must be stored
|
|
11
|
+
// because it cannot be recomputed) refine the pending-unchecked
|
|
12
|
+
// residual, and only while they cover the unit's current change.
|
|
13
|
+
//
|
|
14
|
+
// { days? } — the vault-global broken-read report over the read log: what
|
|
15
|
+
// fraction of served reads (vault_read and vault_search hits) carried at
|
|
16
|
+
// least one pending-broken compiled upstream at serve time. This is the
|
|
17
|
+
// #234 acceptance query — one scan, no joins. Vault-global aggregates
|
|
18
|
+
// stay unfiltered by design (the lint rule); the per-artifact mode is
|
|
19
|
+
// the filtered surface.
|
|
20
|
+
//
|
|
21
|
+
// RBAC (#217, same rule as vault_consumes/vault_tier1): any-read gate; the
|
|
22
|
+
// per-artifact report lists only edges whose upstream unit the caller can
|
|
23
|
+
// read — pending edges to unreadable units are coarsened into a
|
|
24
|
+
// none/some/many bucket, never an exact count. An unreadable anchor yields
|
|
25
|
+
// the empty report, indistinguishable from a nonexistent one.
|
|
26
|
+
import { hasAnyRead } from "../access/rbac.js";
|
|
27
|
+
import { listConsumesEdges } from "../curation/consumes.js";
|
|
28
|
+
import { splitUpstreamVisibility, summarizeUpstream, upstreamStaleness, } from "../curation/edge-staleness.js";
|
|
29
|
+
import { listEdges } from "../curation/edges.js";
|
|
30
|
+
import { readProvenanceLog } from "../curation/provenance.js";
|
|
31
|
+
import { readReadLog } from "../curation/read-log.js";
|
|
32
|
+
import { sourceReadable } from "../curation/tension-access.js";
|
|
33
|
+
import { readTier2Verdicts } from "../curation/tier2.js";
|
|
34
|
+
import { parseDocument } from "../frontmatter/parser.js";
|
|
35
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
36
|
+
import { canonicalVaultRelPath, readFile, resolveVaultPath } from "../storage/local.js";
|
|
37
|
+
import { openIndexForAccessOrNull } from "./search.js";
|
|
38
|
+
async function artifactReport(vaultRoot, artifactRaw, access) {
|
|
39
|
+
const artifact = canonicalVaultRelPath(vaultRoot, artifactRaw);
|
|
40
|
+
if (!artifact.ok)
|
|
41
|
+
return artifact;
|
|
42
|
+
const empty = () => ({
|
|
43
|
+
mode: "artifact",
|
|
44
|
+
artifact: artifact.value,
|
|
45
|
+
edges: [],
|
|
46
|
+
hidden_pending: "none",
|
|
47
|
+
summary: summarizeUpstream([]),
|
|
48
|
+
});
|
|
49
|
+
const db = access ? openIndexForAccessOrNull(vaultRoot) : null;
|
|
50
|
+
try {
|
|
51
|
+
// Unreadable anchor: the empty report, byte-identical to a document with
|
|
52
|
+
// no upstream edges — nothing below is computed, so the response cannot
|
|
53
|
+
// depend on what the hidden document's history looks like.
|
|
54
|
+
if (access && !sourceReadable(db, access, artifact.value))
|
|
55
|
+
return ok(empty());
|
|
56
|
+
const consumes = await listConsumesEdges(vaultRoot);
|
|
57
|
+
if (!consumes.ok)
|
|
58
|
+
return consumes;
|
|
59
|
+
const provenance = await readProvenanceLog(vaultRoot);
|
|
60
|
+
if (!provenance.ok)
|
|
61
|
+
return provenance;
|
|
62
|
+
// Declared units come from the artifact's own frontmatter. A missing or
|
|
63
|
+
// unparsable document simply declares nothing — its compiled/earned
|
|
64
|
+
// history (if any) still reports.
|
|
65
|
+
let declaredUnits = [];
|
|
66
|
+
const resolved = resolveVaultPath(vaultRoot, artifact.value);
|
|
67
|
+
if (resolved.ok) {
|
|
68
|
+
const file = await readFile(resolved.value.absPath);
|
|
69
|
+
if (file.ok) {
|
|
70
|
+
const parsed = parseDocument(file.value);
|
|
71
|
+
if (parsed.ok)
|
|
72
|
+
declaredUnits = parsed.value.frontmatter.sources;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const earnedEdges = await listEdges(vaultRoot, { fromPath: artifact.value });
|
|
76
|
+
if (!earnedEdges.ok)
|
|
77
|
+
return earnedEdges;
|
|
78
|
+
const earned = earnedEdges.value
|
|
79
|
+
.filter((e) => e.status !== "revoked")
|
|
80
|
+
.map((e) => ({ unit: e.toPath, lastRederived: e.lastRederived }));
|
|
81
|
+
// Tier-2 verdicts refine the pending-unchecked residual (#232): a
|
|
82
|
+
// covered pair reports the judged class instead of re-queueing.
|
|
83
|
+
const verdicts = await readTier2Verdicts(vaultRoot);
|
|
84
|
+
if (!verdicts.ok)
|
|
85
|
+
return verdicts;
|
|
86
|
+
const rows = upstreamStaleness({
|
|
87
|
+
artifact: artifact.value,
|
|
88
|
+
consumes: consumes.value,
|
|
89
|
+
provenance: provenance.value,
|
|
90
|
+
declaredUnits,
|
|
91
|
+
earned,
|
|
92
|
+
verdicts: verdicts.value,
|
|
93
|
+
});
|
|
94
|
+
const { visible, hiddenPending } = access
|
|
95
|
+
? splitUpstreamVisibility(rows, (unit) => sourceReadable(db, access, unit))
|
|
96
|
+
: { visible: rows, hiddenPending: "none" };
|
|
97
|
+
return ok({
|
|
98
|
+
mode: "artifact",
|
|
99
|
+
artifact: artifact.value,
|
|
100
|
+
edges: visible,
|
|
101
|
+
hidden_pending: hiddenPending,
|
|
102
|
+
summary: summarizeUpstream(visible),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
db?.close();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async function brokenReadReport(vaultRoot, windowDays) {
|
|
110
|
+
const log = await readReadLog(vaultRoot);
|
|
111
|
+
if (!log.ok)
|
|
112
|
+
return log;
|
|
113
|
+
const cutoff = new Date(Date.now() - windowDays * 24 * 60 * 60 * 1000).toISOString();
|
|
114
|
+
let serves = 0;
|
|
115
|
+
let brokenServes = 0;
|
|
116
|
+
let uninstrumented = 0;
|
|
117
|
+
const byTool = {};
|
|
118
|
+
for (const e of log.value) {
|
|
119
|
+
if (e.timestamp < cutoff)
|
|
120
|
+
continue;
|
|
121
|
+
if (e.broken_upstream === undefined) {
|
|
122
|
+
uninstrumented += 1;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
serves += 1;
|
|
126
|
+
let slice = byTool[e.tool];
|
|
127
|
+
if (!slice) {
|
|
128
|
+
slice = { serves: 0, broken_serves: 0 };
|
|
129
|
+
byTool[e.tool] = slice;
|
|
130
|
+
}
|
|
131
|
+
slice.serves += 1;
|
|
132
|
+
if (e.broken_upstream > 0) {
|
|
133
|
+
brokenServes += 1;
|
|
134
|
+
slice.broken_serves += 1;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return ok({
|
|
138
|
+
mode: "report",
|
|
139
|
+
window_days: windowDays,
|
|
140
|
+
serves,
|
|
141
|
+
broken_serves: brokenServes,
|
|
142
|
+
broken_read_rate: serves > 0 ? brokenServes / serves : null,
|
|
143
|
+
by_tool: byTool,
|
|
144
|
+
uninstrumented,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
export async function vaultStaleness(vaultRoot, args, access) {
|
|
148
|
+
if (access && !hasAnyRead(access.role)) {
|
|
149
|
+
return err(new Error(`access denied: role '${access.roleName}' cannot use vault_staleness`));
|
|
150
|
+
}
|
|
151
|
+
if (args.artifact !== undefined && args.artifact !== null) {
|
|
152
|
+
if (typeof args.artifact !== "string" || args.artifact.trim().length === 0) {
|
|
153
|
+
return err(new Error("vault_staleness 'artifact' must be a non-empty string"));
|
|
154
|
+
}
|
|
155
|
+
if (args.days !== undefined && args.days !== null) {
|
|
156
|
+
return err(new Error("vault_staleness takes 'days' only without 'artifact'"));
|
|
157
|
+
}
|
|
158
|
+
return artifactReport(vaultRoot, args.artifact, access);
|
|
159
|
+
}
|
|
160
|
+
let days = 30;
|
|
161
|
+
if (args.days !== undefined && args.days !== null) {
|
|
162
|
+
if (typeof args.days !== "number" || !Number.isFinite(args.days) || args.days <= 0) {
|
|
163
|
+
return err(new Error("vault_staleness 'days' must be a positive number"));
|
|
164
|
+
}
|
|
165
|
+
days = args.days;
|
|
166
|
+
}
|
|
167
|
+
return brokenReadReport(vaultRoot, days);
|
|
168
|
+
}
|
|
169
|
+
export const edgeStalenessTools = [
|
|
170
|
+
{
|
|
171
|
+
name: "vault_staleness",
|
|
172
|
+
title: "Edge staleness — pending upstream changes and the broken-read rate",
|
|
173
|
+
annotations: { readOnlyHint: true },
|
|
174
|
+
description: "Edge staleness (#234): is a document stale WITH RESPECT TO its " +
|
|
175
|
+
"upstream inputs, and does it matter? Pass 'artifact' for the " +
|
|
176
|
+
"per-document report: every compiled/declared/earned upstream edge " +
|
|
177
|
+
"classified by running tier-1 dispatch (#232) against the change " +
|
|
178
|
+
"since that edge's baseline — current, pending-compatible (change " +
|
|
179
|
+
"certifiably misses), pending-broken (compiled input changed; the " +
|
|
180
|
+
"document serves pre-change context — the only incident class), or " +
|
|
181
|
+
"pending-unchecked (structure cannot decide; the tier-2 residual). " +
|
|
182
|
+
"Without 'artifact': the vault-global broken-read report over the " +
|
|
183
|
+
"read log — what fraction of served reads (vault_read + search hits, " +
|
|
184
|
+
"last 'days' days, default 30) carried at least one pending-broken " +
|
|
185
|
+
"upstream at serve time. Distinct from TTL decay (doc age) and audit " +
|
|
186
|
+
"staleness (link mtime ordering): this is per-edge compatibility, " +
|
|
187
|
+
"advisory, derived at query time.",
|
|
188
|
+
inputSchema: {
|
|
189
|
+
type: "object",
|
|
190
|
+
properties: {
|
|
191
|
+
artifact: {
|
|
192
|
+
type: "string",
|
|
193
|
+
description: "Vault-relative path — report this document's upstream staleness",
|
|
194
|
+
},
|
|
195
|
+
days: {
|
|
196
|
+
type: "number",
|
|
197
|
+
description: "Report window in days for the vault-global broken-read rate (default 30)",
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
additionalProperties: false,
|
|
201
|
+
},
|
|
202
|
+
handler: (vaultRoot, args, access) => vaultStaleness(vaultRoot, args, access),
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
//# sourceMappingURL=edge-staleness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-staleness.js","sourceRoot":"","sources":["../../src/tools/edge-staleness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/tools/edges.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/tools/edges.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAEL,KAAK,eAAe,EAQrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AA2ChD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CA2DzC;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAkFvC;AAMD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAiDrC;AAMD,eAAO,MAAM,SAAS,EAAE,cAAc,EAqHrC,CAAC"}
|
package/dist/tools/edges.js
CHANGED
|
@@ -17,24 +17,13 @@
|
|
|
17
17
|
// posture (matching vault_tension_log / vault_stage_action). Contest gates on
|
|
18
18
|
// the `ratify` grant (§11.6) — it revokes trigger-bearing edges, the same
|
|
19
19
|
// curation-verdict tier as vault_ratify.
|
|
20
|
-
import { relative, resolve } from "node:path";
|
|
21
20
|
import { canRatify, hasAnyRead } from "../access/rbac.js";
|
|
22
21
|
import { contestEdge, EDGE_AXES, EDGE_STATUSES, getEdge, listEdges, observeEdge, } from "../curation/edges.js";
|
|
23
22
|
import { addTension, listTensions } from "../curation/tension.js";
|
|
23
|
+
import { sourceReadable } from "../curation/tension-access.js";
|
|
24
24
|
import { err, ok } from "../frontmatter/types.js";
|
|
25
|
-
import { readFile, resolveVaultPath } from "../storage/local.js";
|
|
26
|
-
|
|
27
|
-
// against the vault root (rejecting traversal out of it), re-relativized. The
|
|
28
|
-
// edge store keys edges by raw string, so `./a.md`, `b/../a.md`, and `a.md`
|
|
29
|
-
// must all collapse to one key here — otherwise aliased inputs would split an
|
|
30
|
-
// edge's votes across phantom twins and slip past the self-edge guard (the
|
|
31
|
-
// same aliasing class vault_merge guards against).
|
|
32
|
-
function canonicalRelPath(vaultRoot, relPath) {
|
|
33
|
-
const resolved = resolveVaultPath(vaultRoot, relPath.trim());
|
|
34
|
-
if (!resolved.ok)
|
|
35
|
-
return resolved;
|
|
36
|
-
return ok(relative(resolve(vaultRoot), resolved.value.absPath));
|
|
37
|
-
}
|
|
25
|
+
import { canonicalVaultRelPath, readFile, resolveVaultPath } from "../storage/local.js";
|
|
26
|
+
import { openIndexForAccessOrNull } from "./search.js";
|
|
38
27
|
function requireReadAccess(tool, access) {
|
|
39
28
|
if (access && !hasAnyRead(access.role)) {
|
|
40
29
|
return err(new Error(`access denied: role '${access.roleName}' cannot use ${tool}`));
|
|
@@ -97,10 +86,10 @@ export async function vaultEdgeObserve(vaultRoot, args, access) {
|
|
|
97
86
|
if (trimmed.length > 0)
|
|
98
87
|
note = trimmed;
|
|
99
88
|
}
|
|
100
|
-
const canonFrom =
|
|
89
|
+
const canonFrom = canonicalVaultRelPath(vaultRoot, fromPath.value);
|
|
101
90
|
if (!canonFrom.ok)
|
|
102
91
|
return canonFrom;
|
|
103
|
-
const canonTo =
|
|
92
|
+
const canonTo = canonicalVaultRelPath(vaultRoot, toPath.value);
|
|
104
93
|
if (!canonTo.ok)
|
|
105
94
|
return canonTo;
|
|
106
95
|
// Self-edge check on the CANONICAL paths, so `a.md` vs `b/../a.md` cannot
|
|
@@ -146,10 +135,10 @@ export async function vaultEdgeContest(vaultRoot, args, access) {
|
|
|
146
135
|
// Canonicalize like observe does, so a contest addresses the same key the
|
|
147
136
|
// observation wrote. No doc-existence check here — an edge whose endpoint
|
|
148
137
|
// doc was since deleted is still contestable.
|
|
149
|
-
const canonFrom =
|
|
138
|
+
const canonFrom = canonicalVaultRelPath(vaultRoot, fromPath.value);
|
|
150
139
|
if (!canonFrom.ok)
|
|
151
140
|
return canonFrom;
|
|
152
|
-
const canonTo =
|
|
141
|
+
const canonTo = canonicalVaultRelPath(vaultRoot, toPath.value);
|
|
153
142
|
if (!canonTo.ok)
|
|
154
143
|
return canonTo;
|
|
155
144
|
// Validate the edge is contestable BEFORE writing the tension, so a contest
|
|
@@ -217,7 +206,7 @@ export async function vaultEdges(vaultRoot, args, access) {
|
|
|
217
206
|
if (typeof v !== "string" || v.trim().length === 0) {
|
|
218
207
|
return err(new Error(`vault_edges '${argName}' must be a non-empty string`));
|
|
219
208
|
}
|
|
220
|
-
const canon =
|
|
209
|
+
const canon = canonicalVaultRelPath(vaultRoot, v);
|
|
221
210
|
if (!canon.ok)
|
|
222
211
|
return canon;
|
|
223
212
|
filter[key] = canon.value;
|
|
@@ -232,7 +221,23 @@ export async function vaultEdges(vaultRoot, args, access) {
|
|
|
232
221
|
const edges = await listEdges(vaultRoot, filter);
|
|
233
222
|
if (!edges.ok)
|
|
234
223
|
return edges;
|
|
235
|
-
|
|
224
|
+
// #217: an edge names two documents; seeing it reveals both. With an
|
|
225
|
+
// access context an edge is listed only when the role can read BOTH
|
|
226
|
+
// endpoints' collections — invisible edges are omitted entirely (also from
|
|
227
|
+
// `total`), never redacted, matching the tension both-sides rule. A filter
|
|
228
|
+
// on an unreadable from_path/to_path simply returns an empty listing, the
|
|
229
|
+
// same as a nonexistent path — no existence confirmation either way.
|
|
230
|
+
let listed = edges.value;
|
|
231
|
+
if (access) {
|
|
232
|
+
const db = openIndexForAccessOrNull(vaultRoot);
|
|
233
|
+
try {
|
|
234
|
+
listed = edges.value.filter((e) => sourceReadable(db, access, e.fromPath) && sourceReadable(db, access, e.toPath));
|
|
235
|
+
}
|
|
236
|
+
finally {
|
|
237
|
+
db?.close();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return ok({ edges: listed, total: listed.length });
|
|
236
241
|
}
|
|
237
242
|
// ---------------------------------------------------------------------------
|
|
238
243
|
// MCP tool definitions
|
|
@@ -325,7 +330,8 @@ export const edgeTools = [
|
|
|
325
330
|
"first. Strength = independent-vote count decayed by time since the " +
|
|
326
331
|
"last qualifying re-derivation; an edge is trigger-bearing while its " +
|
|
327
332
|
"aged strength stays above the floor. Filter by endpoint or status " +
|
|
328
|
-
"(candidate | trigger-bearing | revoked)."
|
|
333
|
+
"(candidate | trigger-bearing | revoked). Under RBAC only edges whose " +
|
|
334
|
+
"BOTH endpoints are in readable collections are listed and counted.",
|
|
329
335
|
inputSchema: {
|
|
330
336
|
type: "object",
|
|
331
337
|
properties: {
|