daftari 1.13.1 → 1.14.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 +47 -0
- package/README.md +1 -0
- package/dist/curation/lint.d.ts +10 -0
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +43 -1
- package/dist/curation/lint.js.map +1 -1
- package/dist/curation/tension.d.ts +21 -1
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +204 -15
- package/dist/curation/tension.js.map +1 -1
- package/dist/tools/curation.d.ts +3 -1
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +137 -10
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +8 -4
- package/dist/tools/search.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.14.0] - 2026-05-31
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Multi-vault MCP router** (`packages/router/`, published as
|
|
15
|
+
`daftari-router` v0.1.0). One MCP connection that spans N daftari
|
|
16
|
+
vaults: read/write tools dispatch to the named vault; search, status,
|
|
17
|
+
lint, themes, index, and reindex fan out across every child and merge
|
|
18
|
+
results. Vault selection via explicit `vault:` arg or vault-prefixed
|
|
19
|
+
paths (e.g. `devops:runbooks/k8s.md`). Catalog seeded from the first
|
|
20
|
+
child; heterogeneous tool surfaces are warned to stderr. Phase 1 — no
|
|
21
|
+
HTTP transport, no auth, no cross-vault lint, no score normalization
|
|
22
|
+
across heterogeneous embedding models. See
|
|
23
|
+
[docs/multi-vault-howto.md](docs/multi-vault-howto.md) for the
|
|
24
|
+
task-oriented walkthrough and
|
|
25
|
+
[packages/router/README.md](packages/router/README.md) for the
|
|
26
|
+
reference.
|
|
27
|
+
|
|
28
|
+
- **Tension taxonomy and resolution** (Phase 1 of the Tension Graph plan).
|
|
29
|
+
Tensions now carry a `kind` (temporal | factual | interpretive |
|
|
30
|
+
unspecified). New tool `vault_tension_resolve` records how a tension was
|
|
31
|
+
closed (superseded | corrected | accepted | invalid) with optional
|
|
32
|
+
rationale and references. `vault_lint` reports tension counts by kind
|
|
33
|
+
and resolution kind, and surfaces a separate "stable acknowledged"
|
|
34
|
+
count for explicitly accepted persistent disagreements. Legacy entries
|
|
35
|
+
without a `kind` field read as `unspecified` and produce no warnings.
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- **`vault_reindex` coalesces with an in-flight indexing pass** instead
|
|
40
|
+
of returning a busy error. When a reindex is already running (e.g. the
|
|
41
|
+
startup-time background pass kicked off when daftari boots a fresh
|
|
42
|
+
vault), `vault_reindex` now awaits it and then runs the caller's
|
|
43
|
+
requested reindex against a hot cache. Previously, an agent that
|
|
44
|
+
asked for a reindex during that startup window got a "still indexing"
|
|
45
|
+
refusal — a footgun the router stress-tested into a real test failure.
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
- Test helper `temp-vault.ts` `cpSync` filter now skips `.git/` as well
|
|
50
|
+
as `.daftari/`. The sample-vault fixture is itself a real git repo;
|
|
51
|
+
without this, the fixture's `.git` was being copied into every temp
|
|
52
|
+
vault, making `isGitRepo(vault)` return true for what was supposed to
|
|
53
|
+
be a fresh directory. Three pre-existing test-helper failures in
|
|
54
|
+
`test/utils/git.test.ts` and `test/tools/write.test.ts` are fixed in
|
|
55
|
+
passing.
|
|
56
|
+
|
|
10
57
|
## [1.13.1] - 2026-05-30
|
|
11
58
|
|
|
12
59
|
### Changed
|
package/README.md
CHANGED
|
@@ -346,6 +346,7 @@ Design tenets: functions and types, no classes; tool handlers return
|
|
|
346
346
|
Python package that exposes the 14 daftari tools as LangChain `BaseTool`s
|
|
347
347
|
for use with LangGraph / `create_react_agent`. Sync + async, schemas pulled
|
|
348
348
|
live from `tools/list`.
|
|
349
|
+
- [`packages/router`](packages/router) — multi-vault MCP router that fans out across N Daftari vaults
|
|
349
350
|
|
|
350
351
|
## Privacy
|
|
351
352
|
|
package/dist/curation/lint.d.ts
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import { type Result } from "../frontmatter/types.js";
|
|
2
|
+
import { type ResolutionKind, type TensionKind } from "./tension.js";
|
|
2
3
|
export declare const LINT_CHECKS: readonly ["staleFiles", "orphanFiles", "oldDrafts", "stagnantLowConfidence", "deprecatedStillLinked", "unansweredQuestions"];
|
|
3
4
|
export type LintCheckName = (typeof LINT_CHECKS)[number];
|
|
4
5
|
export interface LintFinding {
|
|
5
6
|
path: string;
|
|
6
7
|
detail: string;
|
|
7
8
|
}
|
|
9
|
+
export interface TensionHealth {
|
|
10
|
+
total: number;
|
|
11
|
+
byKind: Record<TensionKind, number>;
|
|
12
|
+
resolvedLifetime: number;
|
|
13
|
+
byResolutionKind: Record<ResolutionKind, number>;
|
|
14
|
+
stableAcknowledged: number;
|
|
15
|
+
unspecifiedLegacy: number;
|
|
16
|
+
}
|
|
8
17
|
export interface LintReport {
|
|
9
18
|
generatedAt: string;
|
|
10
19
|
checks: Record<LintCheckName, LintFinding[]>;
|
|
11
20
|
totalFindings: number;
|
|
21
|
+
tensionHealth: TensionHealth;
|
|
12
22
|
}
|
|
13
23
|
export interface LintOptions {
|
|
14
24
|
now?: Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/curation/lint.ts"],"names":[],"mappings":"AASA,OAAO,EAAwB,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/curation/lint.ts"],"names":[],"mappings":"AASA,OAAO,EAAwB,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAI5E,OAAO,EAGL,KAAK,cAAc,EAEnB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,WAAW,8HAOd,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAiBD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAYD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBtD;AAgFD,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAqHpC"}
|
package/dist/curation/lint.js
CHANGED
|
@@ -10,6 +10,7 @@ import { ok } from "../frontmatter/types.js";
|
|
|
10
10
|
import { listFiles, readFile, resolveVaultPath } from "../storage/local.js";
|
|
11
11
|
import { DRAFT_MAX_DAYS, LOW_CONFIDENCE_MAX_DAYS } from "./decay.js";
|
|
12
12
|
import { ageInDays, computeStaleness } from "./staleness.js";
|
|
13
|
+
import { listTensions, RESOLUTION_KINDS, TENSION_KINDS, } from "./tension.js";
|
|
13
14
|
export const LINT_CHECKS = [
|
|
14
15
|
"staleFiles",
|
|
15
16
|
"orphanFiles",
|
|
@@ -205,6 +206,47 @@ export async function runLint(vaultRoot, opts = {}) {
|
|
|
205
206
|
}
|
|
206
207
|
}
|
|
207
208
|
const totalFindings = LINT_CHECKS.reduce((n, name) => n + checks[name].length, 0);
|
|
208
|
-
|
|
209
|
+
const tensionHealth = await computeTensionHealth(vaultRoot);
|
|
210
|
+
if (!tensionHealth.ok)
|
|
211
|
+
return tensionHealth;
|
|
212
|
+
return ok({
|
|
213
|
+
generatedAt: now.toISOString(),
|
|
214
|
+
checks,
|
|
215
|
+
totalFindings,
|
|
216
|
+
tensionHealth: tensionHealth.value,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
// Aggregates the tension log into the Phase 1 health summary. A missing log
|
|
220
|
+
// is not an error — every counter is just zero.
|
|
221
|
+
async function computeTensionHealth(vaultRoot) {
|
|
222
|
+
const tensions = await listTensions(vaultRoot);
|
|
223
|
+
if (!tensions.ok)
|
|
224
|
+
return tensions;
|
|
225
|
+
const byKind = Object.fromEntries(TENSION_KINDS.map((k) => [k, 0]));
|
|
226
|
+
const byResolutionKind = Object.fromEntries(RESOLUTION_KINDS.map((k) => [k, 0]));
|
|
227
|
+
let total = 0;
|
|
228
|
+
let resolvedLifetime = 0;
|
|
229
|
+
let stableAcknowledged = 0;
|
|
230
|
+
let unspecifiedLegacy = 0;
|
|
231
|
+
for (const t of tensions.value) {
|
|
232
|
+
total += 1;
|
|
233
|
+
byKind[t.kind] += 1;
|
|
234
|
+
if (t.kind === "unspecified")
|
|
235
|
+
unspecifiedLegacy += 1;
|
|
236
|
+
if (t.resolution) {
|
|
237
|
+
resolvedLifetime += 1;
|
|
238
|
+
byResolutionKind[t.resolution.kind] += 1;
|
|
239
|
+
if (t.resolution.kind === "accepted")
|
|
240
|
+
stableAcknowledged += 1;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return ok({
|
|
244
|
+
total,
|
|
245
|
+
byKind,
|
|
246
|
+
resolvedLifetime,
|
|
247
|
+
byResolutionKind,
|
|
248
|
+
stableAcknowledged,
|
|
249
|
+
unspecifiedLegacy,
|
|
250
|
+
});
|
|
209
251
|
}
|
|
210
252
|
//# sourceMappingURL=lint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/curation/lint.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,yEAAyE;AAEzE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAoB,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/curation/lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,40 @@
|
|
|
1
1
|
import { type Result } from "../frontmatter/types.js";
|
|
2
2
|
export declare const DEFAULT_TENSION_STATUS = "unresolved";
|
|
3
|
+
export declare const RESOLVED_TENSION_STATUS = "resolved";
|
|
4
|
+
export declare const TENSION_KINDS: readonly ["temporal", "factual", "interpretive", "unspecified"];
|
|
5
|
+
export type TensionKind = (typeof TENSION_KINDS)[number];
|
|
6
|
+
export declare const LOGGABLE_TENSION_KINDS: readonly ["temporal", "factual", "interpretive"];
|
|
7
|
+
export type LoggableTensionKind = (typeof LOGGABLE_TENSION_KINDS)[number];
|
|
8
|
+
export declare const RESOLUTION_KINDS: readonly ["superseded", "corrected", "accepted", "invalid"];
|
|
9
|
+
export type ResolutionKind = (typeof RESOLUTION_KINDS)[number];
|
|
10
|
+
export interface TensionResolution {
|
|
11
|
+
resolved_at: string;
|
|
12
|
+
resolved_by: string;
|
|
13
|
+
kind: ResolutionKind;
|
|
14
|
+
rationale?: string;
|
|
15
|
+
references?: string[];
|
|
16
|
+
}
|
|
3
17
|
export interface TensionEntry {
|
|
18
|
+
id?: string;
|
|
4
19
|
date: string;
|
|
5
20
|
title: string;
|
|
21
|
+
kind: TensionKind;
|
|
6
22
|
sourceA: string;
|
|
7
23
|
claimA: string;
|
|
8
24
|
sourceB: string;
|
|
9
25
|
claimB: string;
|
|
10
26
|
status: string;
|
|
11
27
|
loggedBy: string;
|
|
28
|
+
resolved: boolean;
|
|
29
|
+
resolution?: TensionResolution;
|
|
12
30
|
}
|
|
13
|
-
export type TensionInput = Omit<TensionEntry, "date" | "status"> & {
|
|
31
|
+
export type TensionInput = Omit<TensionEntry, "date" | "status" | "kind" | "id" | "resolved" | "resolution"> & {
|
|
14
32
|
date?: string;
|
|
15
33
|
status?: string;
|
|
34
|
+
kind: LoggableTensionKind;
|
|
16
35
|
};
|
|
17
36
|
export declare function tensionsPath(vaultRoot: string): string;
|
|
18
37
|
export declare function addTension(vaultRoot: string, input: TensionInput): Promise<Result<TensionEntry, Error>>;
|
|
19
38
|
export declare function listTensions(vaultRoot: string, status?: string): Promise<Result<TensionEntry[], Error>>;
|
|
39
|
+
export declare function resolveTension(vaultRoot: string, id: string, resolution: TensionResolution): Promise<Result<TensionEntry, Error>>;
|
|
20
40
|
//# sourceMappingURL=tension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tension.d.ts","sourceRoot":"","sources":["../../src/curation/tension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tension.d.ts","sourceRoot":"","sources":["../../src/curation/tension.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE/D,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAElD,eAAO,MAAM,aAAa,iEAAkE,CAAC;AAC7F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAGzD,eAAO,MAAM,sBAAsB,kDAAmD,CAAC;AACvF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,gBAAgB,6DAA8D,CAAC;AAC5F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAC7B,YAAY,EACZ,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,YAAY,CAC9D,GAAG;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,mBAAmB,CAAC;CAC3B,CAAC;AAEF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAsDD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAyCtC;AAwGD,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC,CAoBxC;AAMD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAiEtC"}
|
package/dist/curation/tension.js
CHANGED
|
@@ -2,46 +2,113 @@
|
|
|
2
2
|
//
|
|
3
3
|
// A "tension" is a recorded contradiction or pull between two documents: two
|
|
4
4
|
// sources that say things which sit uneasily together. Daftari records the
|
|
5
|
-
// tension; it never resolves it
|
|
6
|
-
//
|
|
5
|
+
// tension; it never resolves it automatically — resolution is a deliberate
|
|
6
|
+
// curatorial act recorded through `vault_tension_resolve`.
|
|
7
7
|
//
|
|
8
|
-
// The log is a human-readable markdown file, .daftari/tensions.md
|
|
9
|
-
//
|
|
8
|
+
// The log is a human-readable markdown file, .daftari/tensions.md. Each entry
|
|
9
|
+
// is one `## ` block. Phase 1 (2026-05-31) added two structural fields to
|
|
10
|
+
// each entry:
|
|
11
|
+
//
|
|
12
|
+
// - `kind` (temporal | factual | interpretive | unspecified): the taxonomy
|
|
13
|
+
// of the disagreement. `unspecified` is reserved for legacy entries logged
|
|
14
|
+
// before Phase 1; new entries must declare one of the other three.
|
|
15
|
+
// - a `resolution` block: present iff the tension has been closed.
|
|
16
|
+
//
|
|
17
|
+
// Legacy entries without a `kind` or `id` are read as `kind: "unspecified"`
|
|
18
|
+
// and have no id — they cannot be resolved through the tool. They can still
|
|
19
|
+
// be edited or re-logged.
|
|
10
20
|
import { mkdirSync } from "node:fs";
|
|
11
|
-
import { appendFile, readFile } from "node:fs/promises";
|
|
21
|
+
import { appendFile, readFile, writeFile } from "node:fs/promises";
|
|
12
22
|
import { join } from "node:path";
|
|
13
23
|
import { err, ok } from "../frontmatter/types.js";
|
|
14
24
|
export const DEFAULT_TENSION_STATUS = "unresolved";
|
|
25
|
+
export const RESOLVED_TENSION_STATUS = "resolved";
|
|
26
|
+
export const TENSION_KINDS = ["temporal", "factual", "interpretive", "unspecified"];
|
|
27
|
+
// `unspecified` is for legacy entries only — never accepted on a new log.
|
|
28
|
+
export const LOGGABLE_TENSION_KINDS = ["temporal", "factual", "interpretive"];
|
|
29
|
+
export const RESOLUTION_KINDS = ["superseded", "corrected", "accepted", "invalid"];
|
|
15
30
|
export function tensionsPath(vaultRoot) {
|
|
16
31
|
return join(vaultRoot, ".daftari", "tensions.md");
|
|
17
32
|
}
|
|
33
|
+
function renderResolution(resolution) {
|
|
34
|
+
const lines = [
|
|
35
|
+
`- **Resolved at:** ${resolution.resolved_at}`,
|
|
36
|
+
`- **Resolved by:** ${resolution.resolved_by}`,
|
|
37
|
+
`- **Resolution kind:** ${resolution.kind}`,
|
|
38
|
+
];
|
|
39
|
+
if (resolution.rationale !== undefined && resolution.rationale.length > 0) {
|
|
40
|
+
lines.push(`- **Rationale:** ${resolution.rationale}`);
|
|
41
|
+
}
|
|
42
|
+
if (resolution.references !== undefined && resolution.references.length > 0) {
|
|
43
|
+
lines.push(`- **References:** ${resolution.references.join(", ")}`);
|
|
44
|
+
}
|
|
45
|
+
return lines.join("\n");
|
|
46
|
+
}
|
|
18
47
|
// Renders one entry in the canonical block format. The blank trailing line
|
|
19
|
-
// keeps consecutive entries visually separated in the file.
|
|
48
|
+
// keeps consecutive entries visually separated in the file. `kind` and `id`
|
|
49
|
+
// are written only when set, to preserve legacy entries untouched on read /
|
|
50
|
+
// re-render.
|
|
20
51
|
function renderEntry(entry) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`- **
|
|
24
|
-
|
|
25
|
-
`- **
|
|
52
|
+
const lines = [`## ${entry.date} — ${entry.title}`];
|
|
53
|
+
if (entry.id !== undefined)
|
|
54
|
+
lines.push(`- **Id:** ${entry.id}`);
|
|
55
|
+
if (entry.kind !== "unspecified")
|
|
56
|
+
lines.push(`- **Kind:** ${entry.kind}`);
|
|
57
|
+
lines.push(`- **Source A:** ${entry.sourceA} says ${entry.claimA}`);
|
|
58
|
+
lines.push(`- **Source B:** ${entry.sourceB} says ${entry.claimB}`);
|
|
59
|
+
lines.push(`- **Status:** ${entry.status}`);
|
|
60
|
+
lines.push(`- **Logged by:** ${entry.loggedBy}`);
|
|
61
|
+
if (entry.resolution !== undefined) {
|
|
62
|
+
lines.push(renderResolution(entry.resolution));
|
|
63
|
+
}
|
|
64
|
+
return `${lines.join("\n")}\n`;
|
|
65
|
+
}
|
|
66
|
+
// Assigns the next sequential `tension-NNN` id. Scans existing entries for
|
|
67
|
+
// the highest numeric suffix and increments. Legacy entries without an id are
|
|
68
|
+
// skipped — their absence is OK; new entries simply pick up after the last
|
|
69
|
+
// numbered id ever seen.
|
|
70
|
+
function nextTensionId(existing) {
|
|
71
|
+
let max = 0;
|
|
72
|
+
for (const e of existing) {
|
|
73
|
+
if (e.id === undefined)
|
|
74
|
+
continue;
|
|
75
|
+
const m = e.id.match(/^tension-(\d+)$/);
|
|
76
|
+
if (!m)
|
|
77
|
+
continue;
|
|
78
|
+
const n = Number.parseInt(m[1], 10);
|
|
79
|
+
if (Number.isFinite(n) && n > max)
|
|
80
|
+
max = n;
|
|
81
|
+
}
|
|
82
|
+
const next = max + 1;
|
|
83
|
+
return `tension-${String(next).padStart(3, "0")}`;
|
|
26
84
|
}
|
|
27
|
-
// Appends a tension entry to .daftari/tensions.md.
|
|
28
|
-
//
|
|
29
|
-
// definition.
|
|
85
|
+
// Appends a tension entry to .daftari/tensions.md. Auto-assigns an `id` if
|
|
86
|
+
// the caller doesn't supply one (the normal path).
|
|
30
87
|
export async function addTension(vaultRoot, input) {
|
|
31
88
|
for (const field of ["title", "sourceA", "claimA", "sourceB", "claimB", "loggedBy"]) {
|
|
32
89
|
if (typeof input[field] !== "string" || input[field].trim().length === 0) {
|
|
33
90
|
return err(new Error(`addTension requires a non-empty '${field}'`));
|
|
34
91
|
}
|
|
35
92
|
}
|
|
93
|
+
if (!LOGGABLE_TENSION_KINDS.includes(input.kind)) {
|
|
94
|
+
return err(new Error(`addTension 'kind' must be one of: ${LOGGABLE_TENSION_KINDS.join(", ")} ` +
|
|
95
|
+
`(unspecified is for legacy entries only)`));
|
|
96
|
+
}
|
|
97
|
+
const existing = await listTensions(vaultRoot);
|
|
98
|
+
if (!existing.ok)
|
|
99
|
+
return existing;
|
|
36
100
|
const entry = {
|
|
101
|
+
id: nextTensionId(existing.value),
|
|
37
102
|
date: input.date ?? new Date().toISOString().slice(0, 10),
|
|
38
103
|
title: input.title.trim(),
|
|
104
|
+
kind: input.kind,
|
|
39
105
|
sourceA: input.sourceA.trim(),
|
|
40
106
|
claimA: input.claimA.trim(),
|
|
41
107
|
sourceB: input.sourceB.trim(),
|
|
42
108
|
claimB: input.claimB.trim(),
|
|
43
109
|
status: input.status ?? DEFAULT_TENSION_STATUS,
|
|
44
110
|
loggedBy: input.loggedBy.trim(),
|
|
111
|
+
resolved: false,
|
|
45
112
|
};
|
|
46
113
|
try {
|
|
47
114
|
mkdirSync(join(vaultRoot, ".daftari"), { recursive: true });
|
|
@@ -65,6 +132,12 @@ function parseSourceLine(value) {
|
|
|
65
132
|
claim: value.slice(marker + " says ".length).trim(),
|
|
66
133
|
};
|
|
67
134
|
}
|
|
135
|
+
function parseReferences(value) {
|
|
136
|
+
return value
|
|
137
|
+
.split(",")
|
|
138
|
+
.map((s) => s.trim())
|
|
139
|
+
.filter((s) => s.length > 0);
|
|
140
|
+
}
|
|
68
141
|
function parseBlock(block) {
|
|
69
142
|
const lines = block.split("\n");
|
|
70
143
|
const header = lines[0]?.replace(/^##\s+/, "") ?? "";
|
|
@@ -74,20 +147,38 @@ function parseBlock(block) {
|
|
|
74
147
|
const entry = {
|
|
75
148
|
date: headerMatch[1],
|
|
76
149
|
title: headerMatch[2].trim(),
|
|
150
|
+
kind: "unspecified",
|
|
77
151
|
sourceA: "",
|
|
78
152
|
claimA: "",
|
|
79
153
|
sourceB: "",
|
|
80
154
|
claimB: "",
|
|
81
155
|
status: DEFAULT_TENSION_STATUS,
|
|
82
156
|
loggedBy: "",
|
|
157
|
+
resolved: false,
|
|
83
158
|
};
|
|
159
|
+
// Resolution fields are accumulated separately so the block can be assembled
|
|
160
|
+
// (or skipped) in one place at the end.
|
|
161
|
+
let resolvedAt;
|
|
162
|
+
let resolvedBy;
|
|
163
|
+
let resolutionKind;
|
|
164
|
+
let rationale;
|
|
165
|
+
let references;
|
|
84
166
|
for (const line of lines.slice(1)) {
|
|
85
167
|
const m = line.match(/^-\s+\*\*(.+?):\*\*\s*(.*)$/);
|
|
86
168
|
if (!m)
|
|
87
169
|
continue;
|
|
88
170
|
const label = m[1].toLowerCase();
|
|
89
171
|
const value = m[2];
|
|
90
|
-
if (label === "
|
|
172
|
+
if (label === "id") {
|
|
173
|
+
entry.id = value.trim();
|
|
174
|
+
}
|
|
175
|
+
else if (label === "kind") {
|
|
176
|
+
const k = value.trim();
|
|
177
|
+
if (TENSION_KINDS.includes(k)) {
|
|
178
|
+
entry.kind = k;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else if (label === "source a") {
|
|
91
182
|
const s = parseSourceLine(value);
|
|
92
183
|
entry.sourceA = s.path;
|
|
93
184
|
entry.claimA = s.claim;
|
|
@@ -103,6 +194,37 @@ function parseBlock(block) {
|
|
|
103
194
|
else if (label === "logged by") {
|
|
104
195
|
entry.loggedBy = value.trim();
|
|
105
196
|
}
|
|
197
|
+
else if (label === "resolved at") {
|
|
198
|
+
resolvedAt = value.trim();
|
|
199
|
+
}
|
|
200
|
+
else if (label === "resolved by") {
|
|
201
|
+
resolvedBy = value.trim();
|
|
202
|
+
}
|
|
203
|
+
else if (label === "resolution kind") {
|
|
204
|
+
const rk = value.trim();
|
|
205
|
+
if (RESOLUTION_KINDS.includes(rk)) {
|
|
206
|
+
resolutionKind = rk;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else if (label === "rationale") {
|
|
210
|
+
rationale = value.trim();
|
|
211
|
+
}
|
|
212
|
+
else if (label === "references") {
|
|
213
|
+
references = parseReferences(value);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (resolvedAt !== undefined && resolvedBy !== undefined && resolutionKind !== undefined) {
|
|
217
|
+
const resolution = {
|
|
218
|
+
resolved_at: resolvedAt,
|
|
219
|
+
resolved_by: resolvedBy,
|
|
220
|
+
kind: resolutionKind,
|
|
221
|
+
};
|
|
222
|
+
if (rationale !== undefined && rationale.length > 0)
|
|
223
|
+
resolution.rationale = rationale;
|
|
224
|
+
if (references !== undefined && references.length > 0)
|
|
225
|
+
resolution.references = references;
|
|
226
|
+
entry.resolution = resolution;
|
|
227
|
+
entry.resolved = true;
|
|
106
228
|
}
|
|
107
229
|
return entry;
|
|
108
230
|
}
|
|
@@ -131,4 +253,71 @@ export async function listTensions(vaultRoot, status) {
|
|
|
131
253
|
}
|
|
132
254
|
return ok(status ? entries.filter((e) => e.status === status) : entries);
|
|
133
255
|
}
|
|
256
|
+
// Records a resolution on an existing tension. Errors if the id isn't found,
|
|
257
|
+
// or if the tension is already resolved. The whole tensions.md file is read,
|
|
258
|
+
// the matched entry is updated, and the file is rewritten in place. The
|
|
259
|
+
// leading-blank-line convention of the append path is preserved.
|
|
260
|
+
export async function resolveTension(vaultRoot, id, resolution) {
|
|
261
|
+
let raw;
|
|
262
|
+
try {
|
|
263
|
+
raw = await readFile(tensionsPath(vaultRoot), "utf-8");
|
|
264
|
+
}
|
|
265
|
+
catch (e) {
|
|
266
|
+
if (e.code === "ENOENT") {
|
|
267
|
+
return err(new Error(`tension not found: ${id}`));
|
|
268
|
+
}
|
|
269
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
270
|
+
return err(new Error(`cannot read tension log: ${reason}`));
|
|
271
|
+
}
|
|
272
|
+
// Split the file into a leading preamble (anything before the first
|
|
273
|
+
// entry) plus a list of entry blocks. Reassembled the same way.
|
|
274
|
+
const segments = raw.split(/(?=^## )/m);
|
|
275
|
+
const preamble = segments[0]?.startsWith("## ") ? "" : (segments[0] ?? "");
|
|
276
|
+
const blocks = segments.filter((s) => s.startsWith("## "));
|
|
277
|
+
let matched = null;
|
|
278
|
+
let matchIdx = -1;
|
|
279
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
280
|
+
const entry = parseBlock(blocks[i].trim());
|
|
281
|
+
if (!entry || entry.id !== id)
|
|
282
|
+
continue;
|
|
283
|
+
matched = entry;
|
|
284
|
+
matchIdx = i;
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
if (!matched || matchIdx === -1) {
|
|
288
|
+
return err(new Error(`tension not found: ${id}`));
|
|
289
|
+
}
|
|
290
|
+
if (matched.resolved) {
|
|
291
|
+
return err(new Error(`tension is already resolved: ${id}`));
|
|
292
|
+
}
|
|
293
|
+
const updated = {
|
|
294
|
+
...matched,
|
|
295
|
+
status: RESOLVED_TENSION_STATUS,
|
|
296
|
+
resolved: true,
|
|
297
|
+
resolution,
|
|
298
|
+
};
|
|
299
|
+
// Preserve the leading blank line of the original block: every block in the
|
|
300
|
+
// file (except possibly the first) is preceded by one blank line. The split
|
|
301
|
+
// captures the "## " marker at the start of each block, so we re-add the
|
|
302
|
+
// blank-line prefix on rewrite.
|
|
303
|
+
const rewritten = blocks.map((b, i) => {
|
|
304
|
+
if (i !== matchIdx)
|
|
305
|
+
return b;
|
|
306
|
+
// The new block content includes its trailing newline.
|
|
307
|
+
const rendered = renderEntry(updated);
|
|
308
|
+
// Preserve the same separator the original block had: count leading
|
|
309
|
+
// newlines on the original to keep the file's spacing stable.
|
|
310
|
+
const leading = (b.match(/^\n*/)?.[0] ?? "").length;
|
|
311
|
+
return `${"\n".repeat(leading)}${rendered}`;
|
|
312
|
+
});
|
|
313
|
+
const next = preamble + rewritten.join("");
|
|
314
|
+
try {
|
|
315
|
+
await writeFile(tensionsPath(vaultRoot), next);
|
|
316
|
+
return ok(updated);
|
|
317
|
+
}
|
|
318
|
+
catch (e) {
|
|
319
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
320
|
+
return err(new Error(`cannot write tension log: ${reason}`));
|
|
321
|
+
}
|
|
322
|
+
}
|
|
134
323
|
//# sourceMappingURL=tension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tension.js","sourceRoot":"","sources":["../../src/curation/tension.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tension.js","sourceRoot":"","sources":["../../src/curation/tension.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/curation.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { type AccessContext } from "../access/rbac.js";
|
|
2
|
-
import { type LintCheckName, type LintFinding } from "../curation/lint.js";
|
|
2
|
+
import { type LintCheckName, type LintFinding, type TensionHealth } from "../curation/lint.js";
|
|
3
3
|
import { type ProvenanceEntry } from "../curation/provenance.js";
|
|
4
4
|
import { type TensionEntry } from "../curation/tension.js";
|
|
5
5
|
import { type Result } from "../frontmatter/types.js";
|
|
6
6
|
import type { ToolDefinition } from "./read.js";
|
|
7
7
|
export declare function vaultTensionLog(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<TensionEntry, Error>>;
|
|
8
|
+
export declare function vaultTensionResolve(vaultRoot: string, args: Record<string, unknown>, access?: AccessContext): Promise<Result<TensionEntry, Error>>;
|
|
8
9
|
export interface VaultLintResult {
|
|
9
10
|
generatedAt: string;
|
|
10
11
|
filter: LintCheckName | null;
|
|
11
12
|
checks: Partial<Record<LintCheckName, LintFinding[]>>;
|
|
12
13
|
totalFindings: number;
|
|
14
|
+
tensionHealth: TensionHealth;
|
|
13
15
|
}
|
|
14
16
|
export declare function vaultLint(vaultRoot: string, args?: Record<string, unknown>, access?: AccessContext): Promise<Result<VaultLintResult, Error>>;
|
|
15
17
|
export interface VaultProvenanceResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curation.d.ts","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"curation.d.ts","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAML,KAAK,YAAY,EAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAkBhD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CA+CtC;AAUD,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CA0DtC;AAMD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAuCzC;AAMD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAID,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAiB/C;AAMD,eAAO,MAAM,aAAa,EAAE,cAAc,EA+IzC,CAAC"}
|
package/dist/tools/curation.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
// Curation-path tools: vault_tension_log, vault_lint,
|
|
1
|
+
// Curation-path tools: vault_tension_log, vault_tension_resolve, vault_lint,
|
|
2
|
+
// vault_provenance.
|
|
2
3
|
//
|
|
3
4
|
// These are the advisory surface of the curation engine. vault_lint reports
|
|
4
5
|
// problems but fixes nothing; vault_tension_log records a contradiction but
|
|
5
|
-
// resolves nothing;
|
|
6
|
-
//
|
|
7
|
-
//
|
|
6
|
+
// resolves nothing automatically; vault_tension_resolve records a deliberate
|
|
7
|
+
// closure (Phase 1 of the tension graph plan); vault_provenance just reads
|
|
8
|
+
// back write history. Each tool exposes a pure logic function (returns
|
|
9
|
+
// Result, never throws) plus an MCP ToolDefinition, mirroring the read- and
|
|
10
|
+
// write-path tools.
|
|
8
11
|
import { hasAnyRead } from "../access/rbac.js";
|
|
9
|
-
import { LINT_CHECKS, runLint } from "../curation/lint.js";
|
|
12
|
+
import { LINT_CHECKS, runLint, } from "../curation/lint.js";
|
|
10
13
|
import { readProvenanceLog } from "../curation/provenance.js";
|
|
11
|
-
import { addTension } from "../curation/tension.js";
|
|
12
|
-
import { ok } from "../frontmatter/types.js";
|
|
14
|
+
import { addTension, LOGGABLE_TENSION_KINDS, RESOLUTION_KINDS, resolveTension, } from "../curation/tension.js";
|
|
15
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
13
16
|
// Curation tools are open to any role with at least one read grant. A guest
|
|
14
17
|
// (or any role with no read access) is denied.
|
|
15
18
|
function requireReadAccess(tool, access) {
|
|
@@ -56,6 +59,13 @@ export async function vaultTensionLog(vaultRoot, args, access) {
|
|
|
56
59
|
const agent = str("agent");
|
|
57
60
|
if (!agent.ok)
|
|
58
61
|
return agent;
|
|
62
|
+
const kindRaw = str("kind");
|
|
63
|
+
if (!kindRaw.ok)
|
|
64
|
+
return kindRaw;
|
|
65
|
+
if (!LOGGABLE_TENSION_KINDS.includes(kindRaw.value)) {
|
|
66
|
+
return err(new Error(`vault_tension_log 'kind' must be one of: ${LOGGABLE_TENSION_KINDS.join(", ")} ` +
|
|
67
|
+
`(unspecified is for legacy entries only and is never loggable)`));
|
|
68
|
+
}
|
|
59
69
|
return addTension(vaultRoot, {
|
|
60
70
|
title: title.value,
|
|
61
71
|
sourceA: sourceA.value,
|
|
@@ -63,8 +73,70 @@ export async function vaultTensionLog(vaultRoot, args, access) {
|
|
|
63
73
|
claimA: claimA.value,
|
|
64
74
|
claimB: claimB.value,
|
|
65
75
|
loggedBy: agent.value,
|
|
76
|
+
kind: kindRaw.value,
|
|
66
77
|
});
|
|
67
78
|
}
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
// vault_tension_resolve
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Records the closure of a tension. `resolved_at` is stamped from the current
|
|
83
|
+
// clock; `resolved_by` comes from the server's access identity (the --user
|
|
84
|
+
// the server was started with). Errors if the id is unknown or the tension
|
|
85
|
+
// is already resolved.
|
|
86
|
+
export async function vaultTensionResolve(vaultRoot, args, access) {
|
|
87
|
+
const allowed = requireReadAccess("vault_tension_resolve", access);
|
|
88
|
+
if (!allowed.ok)
|
|
89
|
+
return allowed;
|
|
90
|
+
const id = args.id;
|
|
91
|
+
if (typeof id !== "string" || id.trim().length === 0) {
|
|
92
|
+
return err(new Error("vault_tension_resolve requires a non-empty 'id' argument"));
|
|
93
|
+
}
|
|
94
|
+
const kindRaw = args.kind;
|
|
95
|
+
if (typeof kindRaw !== "string" || kindRaw.trim().length === 0) {
|
|
96
|
+
return err(new Error("vault_tension_resolve requires a non-empty 'kind' argument"));
|
|
97
|
+
}
|
|
98
|
+
if (!RESOLUTION_KINDS.includes(kindRaw)) {
|
|
99
|
+
return err(new Error(`vault_tension_resolve 'kind' must be one of: ${RESOLUTION_KINDS.join(", ")}`));
|
|
100
|
+
}
|
|
101
|
+
let rationale;
|
|
102
|
+
if (args.rationale !== undefined && args.rationale !== null) {
|
|
103
|
+
if (typeof args.rationale !== "string") {
|
|
104
|
+
return err(new Error("vault_tension_resolve 'rationale' must be a string"));
|
|
105
|
+
}
|
|
106
|
+
const trimmed = args.rationale.trim();
|
|
107
|
+
if (trimmed.length > 0)
|
|
108
|
+
rationale = trimmed;
|
|
109
|
+
}
|
|
110
|
+
let references;
|
|
111
|
+
if (args.references !== undefined && args.references !== null) {
|
|
112
|
+
if (!Array.isArray(args.references)) {
|
|
113
|
+
return err(new Error("vault_tension_resolve 'references' must be an array of strings"));
|
|
114
|
+
}
|
|
115
|
+
const refs = [];
|
|
116
|
+
for (const r of args.references) {
|
|
117
|
+
if (typeof r !== "string" || r.trim().length === 0) {
|
|
118
|
+
return err(new Error("vault_tension_resolve 'references' must be an array of non-empty strings"));
|
|
119
|
+
}
|
|
120
|
+
refs.push(r.trim());
|
|
121
|
+
}
|
|
122
|
+
if (refs.length > 0)
|
|
123
|
+
references = refs;
|
|
124
|
+
}
|
|
125
|
+
// [DATA] resolved_by is taken from the server's access identity (set via
|
|
126
|
+
// --user at server start). When called without an access context (direct
|
|
127
|
+
// in-process call from a test) we fall back to a generic marker.
|
|
128
|
+
const resolvedBy = access?.user ?? "unknown";
|
|
129
|
+
const resolution = {
|
|
130
|
+
resolved_at: new Date().toISOString(),
|
|
131
|
+
resolved_by: resolvedBy,
|
|
132
|
+
kind: kindRaw,
|
|
133
|
+
};
|
|
134
|
+
if (rationale !== undefined)
|
|
135
|
+
resolution.rationale = rationale;
|
|
136
|
+
if (references !== undefined)
|
|
137
|
+
resolution.references = references;
|
|
138
|
+
return resolveTension(vaultRoot, id.trim(), resolution);
|
|
139
|
+
}
|
|
68
140
|
export async function vaultLint(vaultRoot, args = {}, access) {
|
|
69
141
|
const allowed = requireReadAccess("vault_lint", access);
|
|
70
142
|
if (!allowed.ok)
|
|
@@ -90,6 +162,7 @@ export async function vaultLint(vaultRoot, args = {}, access) {
|
|
|
90
162
|
filter,
|
|
91
163
|
checks: { [filter]: findings },
|
|
92
164
|
totalFindings: findings.length,
|
|
165
|
+
tensionHealth: report.value.tensionHealth,
|
|
93
166
|
});
|
|
94
167
|
}
|
|
95
168
|
return ok({
|
|
@@ -97,6 +170,7 @@ export async function vaultLint(vaultRoot, args = {}, access) {
|
|
|
97
170
|
filter: null,
|
|
98
171
|
checks: report.value.checks,
|
|
99
172
|
totalFindings: report.value.totalFindings,
|
|
173
|
+
tensionHealth: report.value.tensionHealth,
|
|
100
174
|
});
|
|
101
175
|
}
|
|
102
176
|
// Returns the write history of a single document, oldest entry first, read
|
|
@@ -128,7 +202,9 @@ export const curationTools = [
|
|
|
128
202
|
annotations: { destructiveHint: true },
|
|
129
203
|
description: "Record a tension — a contradiction or unresolved pull between two " +
|
|
130
204
|
"vault documents — to the advisory tension log. Records the tension; " +
|
|
131
|
-
"does not resolve it.
|
|
205
|
+
"does not resolve it. The 'kind' parameter classifies the disagreement " +
|
|
206
|
+
"(temporal: succession; factual: one is wrong; interpretive: same facts, " +
|
|
207
|
+
"different conclusions). New entries are logged with status 'unresolved'.",
|
|
132
208
|
inputSchema: {
|
|
133
209
|
type: "object",
|
|
134
210
|
properties: {
|
|
@@ -156,12 +232,60 @@ export const curationTools = [
|
|
|
156
232
|
type: "string",
|
|
157
233
|
description: "Identity logging the tension, e.g. 'agent:claude-code'",
|
|
158
234
|
},
|
|
235
|
+
kind: {
|
|
236
|
+
type: "string",
|
|
237
|
+
enum: [...LOGGABLE_TENSION_KINDS],
|
|
238
|
+
description: "Taxonomy of the disagreement: 'temporal' (A was true, B is true now), " +
|
|
239
|
+
"'factual' (one is wrong; needs investigation), or 'interpretive' " +
|
|
240
|
+
"(same facts, different conclusions). 'unspecified' is reserved for " +
|
|
241
|
+
"legacy entries and is not loggable.",
|
|
242
|
+
},
|
|
159
243
|
},
|
|
160
|
-
required: ["title", "sourceA", "claimA", "sourceB", "claimB", "agent"],
|
|
244
|
+
required: ["title", "sourceA", "claimA", "sourceB", "claimB", "agent", "kind"],
|
|
161
245
|
additionalProperties: false,
|
|
162
246
|
},
|
|
163
247
|
handler: (vaultRoot, args, access) => vaultTensionLog(vaultRoot, args, access),
|
|
164
248
|
},
|
|
249
|
+
{
|
|
250
|
+
name: "vault_tension_resolve",
|
|
251
|
+
title: "Resolve a logged tension",
|
|
252
|
+
annotations: { destructiveHint: true },
|
|
253
|
+
description: "Record the closure of a previously logged tension. The 'kind' parameter " +
|
|
254
|
+
"records HOW the tension was resolved: 'superseded' (older doc deprecated), " +
|
|
255
|
+
"'corrected' (one side was wrong; fixes applied), 'accepted' (both views " +
|
|
256
|
+
"stand as a deliberately persistent disagreement), or 'invalid' (false " +
|
|
257
|
+
"alarm). Optional 'rationale' and 'references' record the reasoning and " +
|
|
258
|
+
"any supporting documents. Errors if the tension id is unknown or already " +
|
|
259
|
+
"resolved. 'resolved_at' is stamped server-side; 'resolved_by' is taken " +
|
|
260
|
+
"from the server's access identity.",
|
|
261
|
+
inputSchema: {
|
|
262
|
+
type: "object",
|
|
263
|
+
properties: {
|
|
264
|
+
id: {
|
|
265
|
+
type: "string",
|
|
266
|
+
description: "Id of the tension to resolve, e.g. 'tension-007'",
|
|
267
|
+
},
|
|
268
|
+
kind: {
|
|
269
|
+
type: "string",
|
|
270
|
+
enum: [...RESOLUTION_KINDS],
|
|
271
|
+
description: "How the tension was resolved: 'superseded' | 'corrected' | " +
|
|
272
|
+
"'accepted' | 'invalid'.",
|
|
273
|
+
},
|
|
274
|
+
rationale: {
|
|
275
|
+
type: "string",
|
|
276
|
+
description: "Optional but strongly recommended: the audit trail explaining the decision.",
|
|
277
|
+
},
|
|
278
|
+
references: {
|
|
279
|
+
type: "array",
|
|
280
|
+
items: { type: "string" },
|
|
281
|
+
description: "Optional list of vault-relative paths central to the resolution.",
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
required: ["id", "kind"],
|
|
285
|
+
additionalProperties: false,
|
|
286
|
+
},
|
|
287
|
+
handler: (vaultRoot, args, access) => vaultTensionResolve(vaultRoot, args, access),
|
|
288
|
+
},
|
|
165
289
|
{
|
|
166
290
|
name: "vault_lint",
|
|
167
291
|
title: "Run curation checks",
|
|
@@ -170,7 +294,10 @@ export const curationTools = [
|
|
|
170
294
|
"TTL, orphan files with no inbound links, old drafts, stagnant " +
|
|
171
295
|
"low-confidence files, deprecated files still linked from canonical " +
|
|
172
296
|
"ones, and questions raised but unanswered anywhere in the vault. " +
|
|
173
|
-
"
|
|
297
|
+
"Also reports tension health (counts by kind and resolution kind, " +
|
|
298
|
+
"stable acknowledged persistent disagreements, and legacy unspecified " +
|
|
299
|
+
"entries). Reports problems; never auto-fixes. Optionally filter to a " +
|
|
300
|
+
"single check.",
|
|
174
301
|
inputSchema: {
|
|
175
302
|
type: "object",
|
|
176
303
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curation.js","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"curation.js","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAEL,KAAK,kBAAkB,EAGvB,KAAK,mBAAmB,EAEzB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAEL,KAAK,kBAAkB,EAGvB,KAAK,mBAAmB,EAEzB,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAiB,KAAK,OAAO,EAAe,MAAM,wBAAwB,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAShD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAEpF;AAgBD,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAsBtF;AA+BD,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,kBAAkB,EAAE,KAAK,CAAC,CAAC,CA2B5C;AAMD,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,mBAAmB,EAAE,KAAK,CAAC,CAAC,CA2B7C;AAMD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAiBhG;AAgBD,eAAO,MAAM,WAAW,EAAE,cAAc,EAoEvC,CAAC"}
|
package/dist/tools/search.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { canRead } from "../access/rbac.js";
|
|
9
9
|
import { err, ok } from "../frontmatter/types.js";
|
|
10
10
|
import { DEFAULT_WEIGHTS, hybridSearch, relatedSearch, } from "../search/hybrid.js";
|
|
11
|
-
import { getIndexStatus, indexingBusyMessage, markIndexError, markIndexing, markIndexReady, } from "../search/index-state.js";
|
|
11
|
+
import { getIndexStatus, indexingBusyMessage, markIndexError, markIndexing, markIndexReady, onceIndexReady, } from "../search/index-state.js";
|
|
12
12
|
import { reindexVault } from "../search/reindex.js";
|
|
13
13
|
import { getProvider } from "../search/vector.js";
|
|
14
14
|
import { documentCount, openIndexDb } from "../storage/index-db.js";
|
|
@@ -148,9 +148,13 @@ export async function vaultSearchRelated(vaultRoot, args, access) {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
export async function vaultReindex(vaultRoot) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
151
|
+
// Coalesce with any in-flight indexing pass — e.g. the startup-time
|
|
152
|
+
// background reindex from main(). An agent that calls vault_reindex should
|
|
153
|
+
// not get a busy error just because the server is finishing its own
|
|
154
|
+
// startup work; wait for that pass to settle, then run the requested
|
|
155
|
+
// reindex (which is cheap and idempotent against a hot cache).
|
|
156
|
+
if (getIndexStatus().status === "indexing") {
|
|
157
|
+
await new Promise((resolve) => onceIndexReady(resolve));
|
|
154
158
|
}
|
|
155
159
|
markIndexing();
|
|
156
160
|
const result = await reindexVault(vaultRoot);
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|