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
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
// vault_tier2_queue / vault_tier2_verdict — the tier-2 protocol surface
|
|
2
|
+
// (#232). The server does NOT run an LLM: the calling agent is the judge.
|
|
3
|
+
// The queue tool prepares the constrained judgments (specific claim against
|
|
4
|
+
// specific usage — never "do these two documents conflict"); the verdict
|
|
5
|
+
// tool records the typed answer and, for a break, logs a real tension
|
|
6
|
+
// through the existing taxonomy. See src/curation/tier2.ts for the model.
|
|
7
|
+
//
|
|
8
|
+
// RBAC (#217): any-read gate on both tools. A queue item names two
|
|
9
|
+
// documents, so it is listed only when the caller can read BOTH — omission,
|
|
10
|
+
// no counts, no coarse remainder (lists omit; only summaries coarsen). A
|
|
11
|
+
// verdict on a pair the caller cannot fully read is refused with the SAME
|
|
12
|
+
// error a pair with nothing pending produces — no existence signal.
|
|
13
|
+
import { hasAnyRead } from "../access/rbac.js";
|
|
14
|
+
import { upstreamStaleness } from "../curation/edge-staleness.js";
|
|
15
|
+
import { listEdges } from "../curation/edges.js";
|
|
16
|
+
import { readProvenanceLog } from "../curation/provenance.js";
|
|
17
|
+
import { addTension, LOGGABLE_TENSION_KINDS, } from "../curation/tension.js";
|
|
18
|
+
import { sourceReadable } from "../curation/tension-access.js";
|
|
19
|
+
import { accumulateFieldChanges, extractUsageSpan, latestUnitChangeTs, NO_CHANGE_TS, readTier2Verdicts, recordTier2Verdict, } from "../curation/tier2.js";
|
|
20
|
+
import { loadDocuments } from "../curation/vault-docs.js";
|
|
21
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
22
|
+
import { canonicalVaultRelPath } from "../storage/local.js";
|
|
23
|
+
import { readRunId } from "../utils/run-id.js";
|
|
24
|
+
import { openIndexForAccessOrNull } from "./search.js";
|
|
25
|
+
async function loadQueueSources(vaultRoot) {
|
|
26
|
+
const provenance = await readProvenanceLog(vaultRoot);
|
|
27
|
+
if (!provenance.ok)
|
|
28
|
+
return provenance;
|
|
29
|
+
const verdicts = await readTier2Verdicts(vaultRoot);
|
|
30
|
+
if (!verdicts.ok)
|
|
31
|
+
return verdicts;
|
|
32
|
+
const docs = await loadDocuments(vaultRoot);
|
|
33
|
+
if (!docs.ok)
|
|
34
|
+
return docs;
|
|
35
|
+
const edges = await listEdges(vaultRoot);
|
|
36
|
+
if (!edges.ok)
|
|
37
|
+
return edges;
|
|
38
|
+
const earnedByFrom = new Map();
|
|
39
|
+
for (const e of edges.value) {
|
|
40
|
+
if (e.status === "revoked")
|
|
41
|
+
continue;
|
|
42
|
+
const list = earnedByFrom.get(e.fromPath) ?? [];
|
|
43
|
+
list.push({ unit: e.toPath, lastRederived: e.lastRederived });
|
|
44
|
+
earnedByFrom.set(e.fromPath, list);
|
|
45
|
+
}
|
|
46
|
+
return ok({
|
|
47
|
+
provenance: provenance.value,
|
|
48
|
+
verdicts: verdicts.value,
|
|
49
|
+
docs: docs.value,
|
|
50
|
+
earnedByFrom,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
// The artifact's pending-unchecked rows — the tier-2 residual. Compiled
|
|
54
|
+
// edges are excluded at the source (consumes: []): tier 1 decides them
|
|
55
|
+
// mechanically and they never queue.
|
|
56
|
+
function residualRows(sources, doc) {
|
|
57
|
+
return upstreamStaleness({
|
|
58
|
+
artifact: doc.path,
|
|
59
|
+
consumes: [],
|
|
60
|
+
provenance: sources.provenance,
|
|
61
|
+
declaredUnits: doc.frontmatter.sources,
|
|
62
|
+
earned: sources.earnedByFrom.get(doc.path) ?? [],
|
|
63
|
+
verdicts: sources.verdicts,
|
|
64
|
+
}).filter((r) => r.staleness === "pending-unchecked");
|
|
65
|
+
}
|
|
66
|
+
function workItem(sources, doc, row) {
|
|
67
|
+
const unitDoc = sources.docs.find((d) => d.path === row.unit);
|
|
68
|
+
const fieldChanges = row.baseline === null
|
|
69
|
+
? accumulateFieldChanges(sources.provenance, row.unit, NO_CHANGE_TS)
|
|
70
|
+
: accumulateFieldChanges(sources.provenance, row.unit, row.baseline);
|
|
71
|
+
const span = extractUsageSpan(doc.content, {
|
|
72
|
+
path: row.unit,
|
|
73
|
+
title: unitDoc?.frontmatter.title,
|
|
74
|
+
});
|
|
75
|
+
const changeDesc = row.changed_fields.length > 0
|
|
76
|
+
? `changed [${row.changed_fields.join(", ")}]`
|
|
77
|
+
: "has never been checked against this dependent";
|
|
78
|
+
return {
|
|
79
|
+
artifact: doc.path,
|
|
80
|
+
unit: row.unit,
|
|
81
|
+
edge_class: row.edge_class,
|
|
82
|
+
baseline: row.baseline,
|
|
83
|
+
changed_fields: row.changed_fields,
|
|
84
|
+
field_changes: fieldChanges,
|
|
85
|
+
usage_span: span,
|
|
86
|
+
question: `${row.unit} ${changeDesc}` +
|
|
87
|
+
`${row.baseline ? ` since ${row.baseline}` : ""}. ${doc.path} depends on it via a ` +
|
|
88
|
+
`${row.edge_class} edge. Given field_changes and the dependent's usage ` +
|
|
89
|
+
`(usage_span, or read the documents), does the dependent's claim still hold? ` +
|
|
90
|
+
`Record the judgment with vault_tier2_verdict: 'still-valid', or 'broken' with a ` +
|
|
91
|
+
`tension_kind (${LOGGABLE_TENSION_KINDS.join(" | ")}) and both claims.`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export async function vaultTier2Queue(vaultRoot, args, access) {
|
|
95
|
+
if (access && !hasAnyRead(access.role)) {
|
|
96
|
+
return err(new Error(`access denied: role '${access.roleName}' cannot use vault_tier2_queue`));
|
|
97
|
+
}
|
|
98
|
+
let unitFilter = null;
|
|
99
|
+
if (args.unit !== undefined && args.unit !== null) {
|
|
100
|
+
if (typeof args.unit !== "string" || args.unit.trim().length === 0) {
|
|
101
|
+
return err(new Error("vault_tier2_queue 'unit' must be a non-empty string"));
|
|
102
|
+
}
|
|
103
|
+
const canon = canonicalVaultRelPath(vaultRoot, args.unit);
|
|
104
|
+
if (!canon.ok)
|
|
105
|
+
return canon;
|
|
106
|
+
unitFilter = canon.value;
|
|
107
|
+
}
|
|
108
|
+
const sources = await loadQueueSources(vaultRoot);
|
|
109
|
+
if (!sources.ok)
|
|
110
|
+
return sources;
|
|
111
|
+
const db = access ? openIndexForAccessOrNull(vaultRoot) : null;
|
|
112
|
+
try {
|
|
113
|
+
const items = [];
|
|
114
|
+
for (const doc of sources.value.docs) {
|
|
115
|
+
// #217 omission: an item names both endpoints, so both must be
|
|
116
|
+
// readable. An unreadable artifact drops with all its rows; an
|
|
117
|
+
// unreadable unit drops that row. No counts, no remainder.
|
|
118
|
+
if (access && !sourceReadable(db, access, doc.path))
|
|
119
|
+
continue;
|
|
120
|
+
for (const row of residualRows(sources.value, doc)) {
|
|
121
|
+
if (unitFilter !== null && row.unit !== unitFilter)
|
|
122
|
+
continue;
|
|
123
|
+
if (access && !sourceReadable(db, access, row.unit))
|
|
124
|
+
continue;
|
|
125
|
+
items.push(workItem(sources.value, doc, row));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
items.sort((a, b) => a.unit.localeCompare(b.unit) || a.artifact.localeCompare(b.artifact));
|
|
129
|
+
return ok({ items, total: items.length });
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
db?.close();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export async function vaultTier2Verdict(vaultRoot, args, access) {
|
|
136
|
+
if (access && !hasAnyRead(access.role)) {
|
|
137
|
+
return err(new Error(`access denied: role '${access.roleName}' cannot use vault_tier2_verdict`));
|
|
138
|
+
}
|
|
139
|
+
const str = (field) => {
|
|
140
|
+
const v = args[field];
|
|
141
|
+
if (typeof v !== "string" || v.trim().length === 0) {
|
|
142
|
+
return err(new Error(`vault_tier2_verdict requires a non-empty '${field}' argument`));
|
|
143
|
+
}
|
|
144
|
+
return ok(v.trim());
|
|
145
|
+
};
|
|
146
|
+
const artifactRaw = str("artifact");
|
|
147
|
+
if (!artifactRaw.ok)
|
|
148
|
+
return artifactRaw;
|
|
149
|
+
const unitRaw = str("unit");
|
|
150
|
+
if (!unitRaw.ok)
|
|
151
|
+
return unitRaw;
|
|
152
|
+
const reasoning = str("reasoning");
|
|
153
|
+
if (!reasoning.ok)
|
|
154
|
+
return reasoning;
|
|
155
|
+
const agent = str("agent");
|
|
156
|
+
if (!agent.ok)
|
|
157
|
+
return agent;
|
|
158
|
+
const verdict = args.verdict;
|
|
159
|
+
if (verdict !== "still-valid" && verdict !== "broken") {
|
|
160
|
+
return err(new Error("vault_tier2_verdict 'verdict' must be 'still-valid' or 'broken'"));
|
|
161
|
+
}
|
|
162
|
+
const runId = readRunId(args, "vault_tier2_verdict");
|
|
163
|
+
if (!runId.ok)
|
|
164
|
+
return runId;
|
|
165
|
+
let tensionKind = null;
|
|
166
|
+
let claimArtifact = null;
|
|
167
|
+
let claimUnit = null;
|
|
168
|
+
if (verdict === "broken") {
|
|
169
|
+
const kind = args.tension_kind;
|
|
170
|
+
if (typeof kind !== "string" || !LOGGABLE_TENSION_KINDS.includes(kind)) {
|
|
171
|
+
return err(new Error(`a 'broken' verdict requires 'tension_kind' — one of: ${LOGGABLE_TENSION_KINDS.join(", ")}`));
|
|
172
|
+
}
|
|
173
|
+
tensionKind = kind;
|
|
174
|
+
const ca = str("claim_artifact");
|
|
175
|
+
if (!ca.ok)
|
|
176
|
+
return ca;
|
|
177
|
+
const cu = str("claim_unit");
|
|
178
|
+
if (!cu.ok)
|
|
179
|
+
return cu;
|
|
180
|
+
claimArtifact = ca.value;
|
|
181
|
+
claimUnit = cu.value;
|
|
182
|
+
}
|
|
183
|
+
else if (args.tension_kind !== undefined) {
|
|
184
|
+
return err(new Error("'tension_kind' applies only to a 'broken' verdict"));
|
|
185
|
+
}
|
|
186
|
+
const artifact = canonicalVaultRelPath(vaultRoot, artifactRaw.value);
|
|
187
|
+
if (!artifact.ok)
|
|
188
|
+
return artifact;
|
|
189
|
+
const unit = canonicalVaultRelPath(vaultRoot, unitRaw.value);
|
|
190
|
+
if (!unit.ok)
|
|
191
|
+
return unit;
|
|
192
|
+
const noPendingError = () => err(new Error(`vault_tier2_verdict: no pending semantic review for ${artifact.value} ← ${unit.value}` +
|
|
193
|
+
` — see vault_tier2_queue`));
|
|
194
|
+
// Disclosure: a pair the caller cannot fully read is refused with the
|
|
195
|
+
// exact error a pair with nothing pending produces — decided BEFORE any
|
|
196
|
+
// queue state is computed, so the response cannot depend on it.
|
|
197
|
+
if (access) {
|
|
198
|
+
const db = openIndexForAccessOrNull(vaultRoot);
|
|
199
|
+
try {
|
|
200
|
+
if (!sourceReadable(db, access, artifact.value) || !sourceReadable(db, access, unit.value)) {
|
|
201
|
+
return noPendingError();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
finally {
|
|
205
|
+
db?.close();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const sources = await loadQueueSources(vaultRoot);
|
|
209
|
+
if (!sources.ok)
|
|
210
|
+
return sources;
|
|
211
|
+
const doc = sources.value.docs.find((d) => d.path === artifact.value);
|
|
212
|
+
const candidates = doc
|
|
213
|
+
? residualRows(sources.value, doc).filter((r) => r.unit === unit.value)
|
|
214
|
+
: [];
|
|
215
|
+
if (candidates.length === 0)
|
|
216
|
+
return noPendingError();
|
|
217
|
+
let row;
|
|
218
|
+
if (args.edge_class !== undefined && args.edge_class !== null) {
|
|
219
|
+
const match = candidates.find((r) => r.edge_class === args.edge_class);
|
|
220
|
+
if (!match)
|
|
221
|
+
return noPendingError();
|
|
222
|
+
row = match;
|
|
223
|
+
}
|
|
224
|
+
else if (candidates.length === 1) {
|
|
225
|
+
row = candidates[0];
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
return err(new Error(`vault_tier2_verdict: ${artifact.value} ← ${unit.value} is pending on several edge ` +
|
|
229
|
+
`classes (${candidates.map((r) => r.edge_class).join(", ")}) — pass 'edge_class'`));
|
|
230
|
+
}
|
|
231
|
+
// A break is a real tension, logged through the existing taxonomy — the
|
|
232
|
+
// durable, caller-visible artifact of the judgment.
|
|
233
|
+
let tensionId = null;
|
|
234
|
+
if (verdict === "broken" && tensionKind && claimArtifact && claimUnit) {
|
|
235
|
+
const tension = await addTension(vaultRoot, {
|
|
236
|
+
title: `tier-2: ${unit.value} change breaks ${artifact.value}`,
|
|
237
|
+
kind: tensionKind,
|
|
238
|
+
sourceA: artifact.value,
|
|
239
|
+
claimA: claimArtifact,
|
|
240
|
+
sourceB: unit.value,
|
|
241
|
+
claimB: claimUnit,
|
|
242
|
+
loggedBy: agent.value,
|
|
243
|
+
});
|
|
244
|
+
if (!tension.ok)
|
|
245
|
+
return tension;
|
|
246
|
+
tensionId = tension.value.id ?? null;
|
|
247
|
+
}
|
|
248
|
+
const recorded = await recordTier2Verdict(vaultRoot, {
|
|
249
|
+
artifact: artifact.value,
|
|
250
|
+
unit: unit.value,
|
|
251
|
+
edge_class: row.edge_class,
|
|
252
|
+
judged_change_ts: latestUnitChangeTs(sources.value.provenance, unit.value) ?? NO_CHANGE_TS,
|
|
253
|
+
verdict,
|
|
254
|
+
...(tensionKind ? { tension_kind: tensionKind } : {}),
|
|
255
|
+
...(tensionId ? { tension_id: tensionId } : {}),
|
|
256
|
+
reasoning: reasoning.value,
|
|
257
|
+
agent: agent.value,
|
|
258
|
+
...(access?.user != null ? { principal: access.user } : {}),
|
|
259
|
+
...(runId.value ? { run_id: runId.value } : {}),
|
|
260
|
+
});
|
|
261
|
+
if (!recorded.ok) {
|
|
262
|
+
return err(new Error(`${recorded.error.message}${tensionId ? ` (tension ${tensionId} was already logged)` : ""}`));
|
|
263
|
+
}
|
|
264
|
+
return ok({ recorded: recorded.value, tension_id: tensionId });
|
|
265
|
+
}
|
|
266
|
+
export const tier2Tools = [
|
|
267
|
+
{
|
|
268
|
+
name: "vault_tier2_queue",
|
|
269
|
+
title: "Semantic-review queue (tier 2)",
|
|
270
|
+
annotations: { readOnlyHint: true },
|
|
271
|
+
description: "The tier-2 semantic-review queue (#232): every declared/earned " +
|
|
272
|
+
"dependency whose upstream changed but whose compatibility the " +
|
|
273
|
+
"structure could not decide (tier 1's residual — #234's " +
|
|
274
|
+
"pending-unchecked class), minus pairs an existing verdict already " +
|
|
275
|
+
"covers. Each item is a CONSTRAINED judgment: the net per-field " +
|
|
276
|
+
"before/after since the edge's baseline, the dependent's usage span, " +
|
|
277
|
+
"and the specific question to answer — never 'do these documents " +
|
|
278
|
+
"conflict'. YOU are the judge: answer items with vault_tier2_verdict. " +
|
|
279
|
+
"Pass 'unit' to scope the queue to one changed document. Compiled " +
|
|
280
|
+
"edges never appear — tier 1 decides them mechanically.",
|
|
281
|
+
inputSchema: {
|
|
282
|
+
type: "object",
|
|
283
|
+
properties: {
|
|
284
|
+
unit: {
|
|
285
|
+
type: "string",
|
|
286
|
+
description: "Optional vault-relative path: only items judging this changed document",
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
additionalProperties: false,
|
|
290
|
+
},
|
|
291
|
+
handler: (vaultRoot, args, access) => vaultTier2Queue(vaultRoot, args, access),
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
name: "vault_tier2_verdict",
|
|
295
|
+
title: "Record a tier-2 semantic verdict",
|
|
296
|
+
annotations: { readOnlyHint: false, idempotentHint: false },
|
|
297
|
+
description: "Record the answer to a vault_tier2_queue item (#232 tier 2). " +
|
|
298
|
+
"verdict 'still-valid' certifies the dependent's use of the changed " +
|
|
299
|
+
"unit still holds; 'broken' requires a tension_kind from the tension " +
|
|
300
|
+
"taxonomy plus claim_artifact/claim_unit, and logs a real tension via " +
|
|
301
|
+
"the existing machinery (the tension id is returned). The verdict " +
|
|
302
|
+
"covers the unit's CURRENT change only — a later write to the unit " +
|
|
303
|
+
"re-queues the pair automatically. Refused when the pair has nothing " +
|
|
304
|
+
"pending. Staleness surfaces (vault_staleness) read verdicts: a " +
|
|
305
|
+
"covered pair reports pending-compatible or pending-broken instead " +
|
|
306
|
+
"of pending-unchecked.",
|
|
307
|
+
inputSchema: {
|
|
308
|
+
type: "object",
|
|
309
|
+
properties: {
|
|
310
|
+
artifact: { type: "string", description: "The dependent document being judged" },
|
|
311
|
+
unit: { type: "string", description: "The changed upstream it was judged against" },
|
|
312
|
+
edge_class: {
|
|
313
|
+
type: "string",
|
|
314
|
+
enum: ["declared", "earned"],
|
|
315
|
+
description: "Required only when the pair is pending on both classes",
|
|
316
|
+
},
|
|
317
|
+
verdict: { type: "string", enum: ["still-valid", "broken"] },
|
|
318
|
+
tension_kind: {
|
|
319
|
+
type: "string",
|
|
320
|
+
enum: [...LOGGABLE_TENSION_KINDS],
|
|
321
|
+
description: "Required for 'broken': the tension taxonomy kind",
|
|
322
|
+
},
|
|
323
|
+
claim_artifact: {
|
|
324
|
+
type: "string",
|
|
325
|
+
description: "For 'broken': what the dependent asserts (becomes the tension's claimA)",
|
|
326
|
+
},
|
|
327
|
+
claim_unit: {
|
|
328
|
+
type: "string",
|
|
329
|
+
description: "For 'broken': what the changed unit now says (becomes claimB)",
|
|
330
|
+
},
|
|
331
|
+
reasoning: { type: "string", description: "The judgment's reasoning, recorded verbatim" },
|
|
332
|
+
agent: {
|
|
333
|
+
type: "string",
|
|
334
|
+
description: "Judging agent's identity, e.g. agent:curation-loop",
|
|
335
|
+
},
|
|
336
|
+
run_id: { type: "string", description: "Optional trace/run identifier of the calling run" },
|
|
337
|
+
},
|
|
338
|
+
required: ["artifact", "unit", "verdict", "reasoning", "agent"],
|
|
339
|
+
additionalProperties: false,
|
|
340
|
+
},
|
|
341
|
+
handler: (vaultRoot, args, access) => vaultTier2Verdict(vaultRoot, args, access),
|
|
342
|
+
},
|
|
343
|
+
];
|
|
344
|
+
//# sourceMappingURL=tier2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier2.js","sourceRoot":"","sources":["../../src/tools/tier2.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/write.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare function applyExtensionDefaults(raw: Record<string, unknown>, ext
|
|
|
6
6
|
export declare function serializeDocument(fm: Frontmatter, body: string, extensions?: SchemaExtension[], raw?: Record<string, unknown>): string;
|
|
7
7
|
export interface WriteResult {
|
|
8
8
|
path: string;
|
|
9
|
-
action: "create" | "update" | "append" | "promote" | "deprecate" | "supersede" | "merge" | "confidence-set";
|
|
9
|
+
action: "create" | "update" | "append" | "promote" | "deprecate" | "supersede" | "merge" | "confidence-set" | "tier-set" | "staged";
|
|
10
10
|
commit: string | null;
|
|
11
11
|
committed: boolean;
|
|
12
12
|
status: string;
|
|
@@ -14,12 +14,20 @@ export interface WriteResult {
|
|
|
14
14
|
validation: ValidationReport;
|
|
15
15
|
indexUpdated: boolean;
|
|
16
16
|
shadow?: boolean;
|
|
17
|
+
supersede_hint?: string;
|
|
18
|
+
domain_warnings?: string[];
|
|
19
|
+
staged_id?: string;
|
|
20
|
+
expires_at?: string;
|
|
21
|
+
conflicts_with?: string[];
|
|
22
|
+
tension_id?: string | null;
|
|
23
|
+
tension_error?: string;
|
|
17
24
|
}
|
|
18
25
|
export declare function vaultWrite(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
19
26
|
export declare function vaultAppend(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
20
27
|
export declare function vaultPromote(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
21
28
|
export declare function vaultDeprecate(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
22
29
|
export declare function vaultSetConfidence(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
30
|
+
export declare function vaultSetTier(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
23
31
|
export declare function vaultSupersede(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
24
32
|
export declare function vaultMerge(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<WriteResult, Error>>;
|
|
25
33
|
export declare const writeTools: ToolDefinition[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,aAAa,EAAuC,MAAM,mBAAmB,CAAC;AAe5F,OAAO,EAKL,KAAK,WAAW,EAGhB,KAAK,MAAM,EAKX,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAItE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAwEhD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,UAAU,EAAE,eAAe,EAAE,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAMD,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,eAAe,EAAO,EAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAChC,MAAM,CAiDR;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EACF,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,QAAQ,CAAC;IAGb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IAItB,MAAM,CAAC,EAAE,OAAO,CAAC;IAMjB,cAAc,CAAC,EAAE,MAAM,CAAC;IAMxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAO3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0VD,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,CA+TrC;AAQD,wBAAsB,WAAW,CAC/B,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,CA2HrC;AASD,wBAAsB,YAAY,CAChC,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,CAoFrC;AASD,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,WAAW,EAAE,KAAK,CAAC,CAAC,CAgFrC;AAUD,wBAAsB,kBAAkB,CACtC,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,CAkGrC;AAaD,wBAAsB,YAAY,CAChC,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,CAwGrC;AAUD,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,WAAW,EAAE,KAAK,CAAC,CAAC,CA2FrC;AA2BD,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,CAoTrC;AA4HD,eAAO,MAAM,UAAU,EAAE,cAAc,EAsRtC,CAAC"}
|