daftari 1.20.0 → 1.22.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 +89 -0
- package/README.md +4 -1
- 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/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidate/birth.d.ts +74 -0
- package/dist/consolidate/birth.d.ts.map +1 -0
- package/dist/consolidate/birth.js +253 -0
- package/dist/consolidate/birth.js.map +1 -0
- package/dist/consolidate/clocks.d.ts +15 -0
- package/dist/consolidate/clocks.d.ts.map +1 -0
- package/dist/consolidate/clocks.js +127 -0
- package/dist/consolidate/clocks.js.map +1 -0
- package/dist/consolidate/constants.d.ts +26 -0
- package/dist/consolidate/constants.d.ts.map +1 -0
- package/dist/consolidate/constants.js +83 -0
- package/dist/consolidate/constants.js.map +1 -0
- package/dist/consolidate/decorrelation.d.ts +69 -0
- package/dist/consolidate/decorrelation.d.ts.map +1 -0
- package/dist/consolidate/decorrelation.js +287 -0
- package/dist/consolidate/decorrelation.js.map +1 -0
- package/dist/consolidate/derivation-prompt.d.ts +28 -0
- package/dist/consolidate/derivation-prompt.d.ts.map +1 -0
- package/dist/consolidate/derivation-prompt.js +72 -0
- package/dist/consolidate/derivation-prompt.js.map +1 -0
- package/dist/consolidate/edge-write.d.ts +10 -0
- package/dist/consolidate/edge-write.d.ts.map +1 -0
- package/dist/consolidate/edge-write.js +76 -0
- package/dist/consolidate/edge-write.js.map +1 -0
- package/dist/consolidate/index.d.ts +2 -0
- package/dist/consolidate/index.d.ts.map +1 -0
- package/dist/consolidate/index.js +477 -0
- package/dist/consolidate/index.js.map +1 -0
- package/dist/consolidate/priority.d.ts +25 -0
- package/dist/consolidate/priority.d.ts.map +1 -0
- package/dist/consolidate/priority.js +103 -0
- package/dist/consolidate/priority.js.map +1 -0
- package/dist/consolidate/revision.d.ts +75 -0
- package/dist/consolidate/revision.d.ts.map +1 -0
- package/dist/consolidate/revision.js +232 -0
- package/dist/consolidate/revision.js.map +1 -0
- package/dist/consolidate/state.d.ts +10 -0
- package/dist/consolidate/state.d.ts.map +1 -0
- package/dist/consolidate/state.js +54 -0
- package/dist/consolidate/state.js.map +1 -0
- package/dist/curation/edges.d.ts +5 -0
- package/dist/curation/edges.d.ts.map +1 -1
- package/dist/curation/edges.js +82 -9
- package/dist/curation/edges.js.map +1 -1
- package/dist/curation/lint.d.ts +2 -0
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +5 -0
- package/dist/curation/lint.js.map +1 -1
- package/dist/curation/provenance.d.ts +1 -0
- package/dist/curation/provenance.d.ts.map +1 -1
- package/dist/curation/provenance.js +1 -0
- package/dist/curation/provenance.js.map +1 -1
- package/dist/curation/shadow.d.ts +58 -0
- package/dist/curation/shadow.d.ts.map +1 -0
- package/dist/curation/shadow.js +221 -0
- package/dist/curation/shadow.js.map +1 -0
- package/dist/eval/llm.d.ts +3 -1
- package/dist/eval/llm.d.ts.map +1 -1
- package/dist/eval/llm.js +6 -2
- package/dist/eval/llm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/storage/index-db.d.ts +1 -0
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +14 -9
- package/dist/storage/index-db.js.map +1 -1
- package/dist/tools/curation.d.ts +2 -0
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +5 -1
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/edges.d.ts.map +1 -1
- package/dist/tools/edges.js +14 -10
- package/dist/tools/edges.js.map +1 -1
- package/dist/tools/staged-actions.d.ts +1 -0
- package/dist/tools/staged-actions.d.ts.map +1 -1
- package/dist/tools/staged-actions.js +18 -5
- package/dist/tools/staged-actions.js.map +1 -1
- package/dist/tools/write.d.ts +1 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +93 -7
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +2 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +17 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/git.d.ts +1 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +19 -0
- package/dist/utils/git.js.map +1 -1
- package/package.json +1 -1
- package/templates/config.yaml +3 -0
- package/templates/reviewer-vault/.daftari/config.yaml +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,95 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.22.0] - 2026-06-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Cortex consolidation loop — Stage 2 (Component A).** The loop's read-side
|
|
15
|
+
curation engine, running `shadow_mode` + `ratify:false` by default (it proposes;
|
|
16
|
+
humans ratify), driven by `daftari consolidate --mode scan|birth|revision|both`.
|
|
17
|
+
- **Birth mode** — for an unprocessed doc, retrieve its top-K embedding
|
|
18
|
+
neighbors, judge whether a load-bearing derivation exists and in which
|
|
19
|
+
direction, and seed `k=0` candidate `derives_from` edges. The full top-K and
|
|
20
|
+
per-neighbor verdicts are logged to `.daftari/birth-trace.jsonl` for recall@K
|
|
21
|
+
evaluation.
|
|
22
|
+
- **Revision mode** — cast a panel of M independent votes on a due edge and
|
|
23
|
+
decide once by **majority**: majority-survives accrues strength (each
|
|
24
|
+
surviving vote observes on a distinct axis); majority-fails contests once
|
|
25
|
+
(revoke + tension); a tie surfaces without churning edge state.
|
|
26
|
+
- **Shadow mode** — edge writes route through `.daftari/shadow-actions.jsonl`
|
|
27
|
+
(calibration) with the durable `edges.jsonl` untouched; impact/blast/budget
|
|
28
|
+
are recorded per the §11.5 model.
|
|
29
|
+
- **Axis-decorrelation report** — `--report decorrelation --fixture <path>`
|
|
30
|
+
measures the elicitation prompt's direction-recovery accuracy on a
|
|
31
|
+
ground-truth fixture (PASS gate ≥ 85%).
|
|
32
|
+
|
|
33
|
+
- **Reliable `derives_from` edge direction (foundational-ordering).** Replaces the
|
|
34
|
+
brittle derives/depends token with a temperature-0 foundational-ordering
|
|
35
|
+
judgment (`{related, premise}`): which document is the load-bearing premise that
|
|
36
|
+
must be established first. Birth loads the neighbor's content and elicits the
|
|
37
|
+
direction in **both presentation orders**, committing a directed edge only when
|
|
38
|
+
the orders agree; genuinely-mutual or order-contested pairs become
|
|
39
|
+
direction-unconfirmed **pending edges** that stay visible as undirected
|
|
40
|
+
relationships but do not propagate triggers, plus an interpretive
|
|
41
|
+
direction-pending tension for human adjudication. Edge keys are canonical, so a
|
|
42
|
+
post-edit direction flip collapses to one symmetric edge rather than forking a
|
|
43
|
+
contradictory twin. Validated at 96–100% on curated clear-direction real-prose
|
|
44
|
+
pairs and 97.4% on the contamination-free decorrelation fixture.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- **SQLite index schema bumped to v6** — adds `direction_verdict` to
|
|
49
|
+
`derives_from_edges`. The `.daftari/index.db` is ephemeral and rebuilds from the
|
|
50
|
+
markdown/JSONL on first open; no data migration.
|
|
51
|
+
- `daftari consolidate` gains exit code **7** (event-clock baseline unreachable —
|
|
52
|
+
the gap is re-baselined to HEAD and left to the backstop clock, surfaced as a
|
|
53
|
+
cron-alertable signal rather than a silent success).
|
|
54
|
+
|
|
55
|
+
## [1.21.0] - 2026-06-12
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
|
|
59
|
+
- **Cortex §11.6: agent principal in RBAC.** The last substrate item before the
|
|
60
|
+
consolidation-loop spec. An agent principal is just a role — e.g. start the
|
|
61
|
+
server as `--user agent:curation-loop --role curation-loop` against a role
|
|
62
|
+
that writes but does not ratify.
|
|
63
|
+
- **`ratify` role grant** — gates the curation-verdict tier: `vault_ratify`
|
|
64
|
+
(approve/reject staged actions) and `vault_edge_contest` (revoke a
|
|
65
|
+
derives_from edge, closing the gap flagged in the §11.3 review). Declared
|
|
66
|
+
per role in `.daftari/config.yaml`, default false.
|
|
67
|
+
- **Authenticated principal attribution** — when the server runs with an
|
|
68
|
+
access context, every write's provenance entry and shadow record carries
|
|
69
|
+
`principal: <user>` (the identity the server was started as) alongside the
|
|
70
|
+
caller-supplied free-text `agent` claim.
|
|
71
|
+
|
|
72
|
+
- **Cortex §11.5: shadow-mode execution path.** `shadow_mode: true` in
|
|
73
|
+
`.daftari/config.yaml` turns every doc-write tool into compute-but-don't-write:
|
|
74
|
+
validation, RBAC, and the proposed diff run exactly as live, then the would-be
|
|
75
|
+
`do()` is logged to an append-only `.daftari/shadow-actions.jsonl` (git-ignored)
|
|
76
|
+
with its impact and budget verdict — and nothing is written (no file, no commit,
|
|
77
|
+
no index update, no provenance entry). The calibration posture Decision 3
|
|
78
|
+
requires before the consolidation loop ever acts in production.
|
|
79
|
+
- **Impact** `I = min(i_base + 0.05·(blast−1)^1.5, 1)` — convex blast scaling
|
|
80
|
+
over the reverse-link/source reach of the touched paths; per-action `i_base`
|
|
81
|
+
starting table (create 0.1 … merge 0.6). All constants provisional and
|
|
82
|
+
exported — they are the thing being calibrated.
|
|
83
|
+
- **Budget** `B₀ = min(0.5 + 0.25·pendingStagedActions, max(1, ln(N)))` — a
|
|
84
|
+
vault-state function, proportional to ratification-queue depth with a log(N)
|
|
85
|
+
ceiling. A per-process session spend accumulates and `would_gate` marks every
|
|
86
|
+
action past the would-be checkpoint.
|
|
87
|
+
- **`vault_ratify`** detects a shadowed dispatch and leaves the action pending
|
|
88
|
+
(`applied: false, shadow: true`) instead of recording a false `ratified`.
|
|
89
|
+
- **`vault_lint`** gains a `shadowActions` section: totals plus the most recent
|
|
90
|
+
would-have-gated actions.
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
|
|
94
|
+
- **`vault_ratify` and `vault_edge_contest` now require the `ratify` grant** on
|
|
95
|
+
vaults with RBAC roles configured (both previously allowed any role with a
|
|
96
|
+
read grant). Roles that issue curation verdicts must declare `ratify: true`.
|
|
97
|
+
Servers run without `--role` are unaffected.
|
|
98
|
+
|
|
10
99
|
## [1.20.0] - 2026-06-11
|
|
11
100
|
|
|
12
101
|
### Added
|
package/README.md
CHANGED
|
@@ -110,9 +110,12 @@ roles:
|
|
|
110
110
|
read: ["*"]
|
|
111
111
|
write: ["*"]
|
|
112
112
|
promote: true
|
|
113
|
+
ratify: true # may approve/reject staged actions and contest edges
|
|
113
114
|
```
|
|
114
115
|
|
|
115
|
-
No `--role` or an unknown name falls back to deny-all.
|
|
116
|
+
No `--role` or an unknown name falls back to deny-all. An agent identity is
|
|
117
|
+
just a role too — e.g. a `curation-loop` role that reads and writes but leaves
|
|
118
|
+
`ratify` off: the agent proposes, humans ratify.
|
|
116
119
|
|
|
117
120
|
## File format
|
|
118
121
|
|
package/dist/access/rbac.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare function guestAccess(user?: string): AccessContext;
|
|
|
11
11
|
export declare function canRead(role: RoleConfig | null, collection: string): boolean;
|
|
12
12
|
export declare function canWrite(role: RoleConfig | null, collection: string): boolean;
|
|
13
13
|
export declare function canPromote(role: RoleConfig | null): boolean;
|
|
14
|
+
export declare function canRatify(role: RoleConfig | null): boolean;
|
|
14
15
|
export declare function hasAnyRead(role: RoleConfig | null): boolean;
|
|
15
16
|
export declare function filterByReadPermission<T extends {
|
|
16
17
|
collection: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../src/access/rbac.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEpE,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,QAAQ,MAAM,CAAC;AAI5B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB;AAKD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,aAAa,CAEf;AAID,wBAAgB,WAAW,CAAC,IAAI,SAAU,GAAG,aAAa,CAEzD;AAOD,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE5E;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7E;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAE3D;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAE3D;AAID,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EACrE,IAAI,EAAE,UAAU,GAAG,IAAI,EACvB,KAAK,EAAE,CAAC,EAAE,GACT,CAAC,EAAE,CAEL"}
|
|
1
|
+
{"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../src/access/rbac.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEpE,eAAO,MAAM,UAAU,UAAU,CAAC;AAClC,eAAO,MAAM,QAAQ,MAAM,CAAC;AAI5B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB;AAKD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,aAAa,CAEf;AAID,wBAAgB,WAAW,CAAC,IAAI,SAAU,GAAG,aAAa,CAEzD;AAOD,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE5E;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7E;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAE3D;AAMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAE1D;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAE3D;AAID,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EACrE,IAAI,EAAE,UAAU,GAAG,IAAI,EACvB,KAAK,EAAE,CAAC,EAAE,GACT,CAAC,EAAE,CAEL"}
|
package/dist/access/rbac.js
CHANGED
|
@@ -35,6 +35,13 @@ export function canWrite(role, collection) {
|
|
|
35
35
|
export function canPromote(role) {
|
|
36
36
|
return role?.promote ?? false;
|
|
37
37
|
}
|
|
38
|
+
// True if the role may issue curation verdicts (§11.6): approve/reject staged
|
|
39
|
+
// actions and contest derives_from edges. A distinct grant from `promote` —
|
|
40
|
+
// ratifying decides someone ELSE's proposed change; the agent principal
|
|
41
|
+
// typically proposes (write) but does not ratify.
|
|
42
|
+
export function canRatify(role) {
|
|
43
|
+
return role?.ratify ?? false;
|
|
44
|
+
}
|
|
38
45
|
// True if the role has read access to at least one collection. Curation tools
|
|
39
46
|
// (lint, tension log, provenance) are open to anyone with any read grant.
|
|
40
47
|
export function hasAnyRead(role) {
|
package/dist/access/rbac.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../src/access/rbac.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAI1E,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAClC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAU5B,+EAA+E;AAC/E,6EAA6E;AAC7E,2BAA2B;AAC3B,MAAM,UAAU,aAAa,CAC3B,MAAqB,EACrB,IAAY,EACZ,QAAgB;IAEhB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,2EAA2E;AAC3E,0BAA0B;AAC1B,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,OAAO;IACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,OAAO,CAAC,IAAc,EAAE,UAAkB;IACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,OAAO,CAAC,IAAuB,EAAE,UAAkB;IACjE,OAAO,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,QAAQ,CAAC,IAAuB,EAAE,UAAkB;IAClE,OAAO,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,OAAO,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,MAAM,UAAU,sBAAsB,CACpC,IAAuB,EACvB,KAAU;IAEV,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
1
|
+
{"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../src/access/rbac.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,0EAA0E;AAI1E,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC;AAClC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAU5B,+EAA+E;AAC/E,6EAA6E;AAC7E,2BAA2B;AAC3B,MAAM,UAAU,aAAa,CAC3B,MAAqB,EACrB,IAAY,EACZ,QAAgB;IAEhB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,2EAA2E;AAC3E,0BAA0B;AAC1B,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,OAAO;IACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,OAAO,CAAC,IAAc,EAAE,UAAkB;IACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,OAAO,CAAC,IAAuB,EAAE,UAAkB;IACjE,OAAO,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,QAAQ,CAAC,IAAuB,EAAE,UAAkB;IAClE,OAAO,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,OAAO,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,kDAAkD;AAClD,MAAM,UAAU,SAAS,CAAC,IAAuB;IAC/C,OAAO,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,IAAuB;IAChD,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,MAAM,UAAU,sBAAsB,CACpC,IAAuB,EACvB,KAAU;IAEV,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAuLA,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DnE;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CvD"}
|
package/dist/cli.js
CHANGED
|
@@ -23,6 +23,7 @@ Usage:
|
|
|
23
23
|
daftari audit [options] Run a cross-repo coherence audit (see: daftari audit --help)
|
|
24
24
|
daftari eval [options] Cortex quality metric (see: daftari eval --help)
|
|
25
25
|
daftari backfill [options] Derive frontmatter for an existing wiki (see: daftari backfill --help)
|
|
26
|
+
daftari consolidate [options] Cortex loop scheduler — emit due/birth queues (see: daftari consolidate --help)
|
|
26
27
|
|
|
27
28
|
Server options:
|
|
28
29
|
--user <username> Identity the server runs as (default: guest)
|
|
@@ -48,6 +49,10 @@ const VAULT_GITIGNORE = `# Daftari rebuilds these from the markdown files — ne
|
|
|
48
49
|
# runs with auto_commit: false inside a larger repo: keeps the host repo's
|
|
49
50
|
# git status clean of Daftari's per-write log churn.
|
|
50
51
|
.daftari/curation-log.jsonl
|
|
52
|
+
.daftari/staged-actions.jsonl
|
|
53
|
+
.daftari/edges.jsonl
|
|
54
|
+
.daftari/shadow-actions.jsonl
|
|
55
|
+
.daftari/consolidate-state.json
|
|
51
56
|
# Transient backfill staging surface (daftari backfill --plan). The apply
|
|
52
57
|
# commit is the durable audit trail — the plan itself is never committed.
|
|
53
58
|
.daftari/backfill-plan.jsonl
|
|
@@ -221,6 +226,11 @@ export async function run(argv) {
|
|
|
221
226
|
process.exitCode = await runBackfill(argv.slice(1));
|
|
222
227
|
return;
|
|
223
228
|
}
|
|
229
|
+
if (argv[0] === "consolidate") {
|
|
230
|
+
const { runConsolidate } = await import("./consolidate/index.js");
|
|
231
|
+
process.exitCode = await runConsolidate(argv.slice(1));
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
224
234
|
if (argv.includes("--help") || argv.includes("-h")) {
|
|
225
235
|
process.stdout.write(USAGE);
|
|
226
236
|
return;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,eAAe;AACf,EAAE;AACF,0DAA0D;AAC1D,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,+BAA+B;AAE/B,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { DerivesFromEdge, ObserveEdgeInput } from "../curation/edges.js";
|
|
2
|
+
import type { TensionInput } from "../curation/tension.js";
|
|
3
|
+
import type { LlmClient } from "../eval/llm.js";
|
|
4
|
+
import { type Result } from "../frontmatter/types.js";
|
|
5
|
+
import { CONSOLIDATE_AGENT, type ConsolidatePromptTemplate } from "./constants.js";
|
|
6
|
+
import { type DerivationVerdict } from "./derivation-prompt.js";
|
|
7
|
+
export interface BirthDeps {
|
|
8
|
+
llm: LlmClient;
|
|
9
|
+
searchNeighbors: (docPath: string, k: number) => Promise<Result<string[], Error>>;
|
|
10
|
+
loadNeighborContent: (path: string) => Promise<Result<string, Error>>;
|
|
11
|
+
observe: (input: ObserveEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
|
|
12
|
+
recordTension: (input: TensionInput) => Promise<Result<unknown, Error>>;
|
|
13
|
+
recordBirthTrace: (row: BirthTraceRow) => Promise<Result<void, Error>>;
|
|
14
|
+
}
|
|
15
|
+
export interface BirthOpts {
|
|
16
|
+
vaultRoot: string;
|
|
17
|
+
agent: string;
|
|
18
|
+
axis: ConsolidatePromptTemplate;
|
|
19
|
+
budgetRemaining: number;
|
|
20
|
+
model: string;
|
|
21
|
+
}
|
|
22
|
+
export interface BirthVerdict {
|
|
23
|
+
neighbor: string;
|
|
24
|
+
related: boolean;
|
|
25
|
+
direction: "directed" | "symmetric" | "none";
|
|
26
|
+
premise: "doc" | "neighbor" | null;
|
|
27
|
+
reason: string;
|
|
28
|
+
}
|
|
29
|
+
export interface BirthVerdictError {
|
|
30
|
+
neighbor: string;
|
|
31
|
+
error: string;
|
|
32
|
+
}
|
|
33
|
+
export interface BirthTraceRow {
|
|
34
|
+
at: string;
|
|
35
|
+
docPath: string;
|
|
36
|
+
contentHash: string;
|
|
37
|
+
topK: string[];
|
|
38
|
+
axis: ConsolidatePromptTemplate;
|
|
39
|
+
model: string;
|
|
40
|
+
verdicts: Array<BirthVerdict | BirthVerdictError>;
|
|
41
|
+
}
|
|
42
|
+
export interface BirthOutcome {
|
|
43
|
+
docPath: string;
|
|
44
|
+
contentHash: string;
|
|
45
|
+
neighbors: string[];
|
|
46
|
+
verdicts: Array<BirthVerdict | BirthVerdictError>;
|
|
47
|
+
observations: Array<{
|
|
48
|
+
from: string;
|
|
49
|
+
to: string;
|
|
50
|
+
}>;
|
|
51
|
+
llmCalls: number;
|
|
52
|
+
inputTokens: number;
|
|
53
|
+
outputTokens: number;
|
|
54
|
+
traceWritten: boolean;
|
|
55
|
+
traceError?: string;
|
|
56
|
+
}
|
|
57
|
+
export type ReconcileOutcome = {
|
|
58
|
+
kind: "unrelated";
|
|
59
|
+
} | {
|
|
60
|
+
kind: "directed";
|
|
61
|
+
premise: "doc" | "neighbor";
|
|
62
|
+
} | {
|
|
63
|
+
kind: "symmetric";
|
|
64
|
+
contested: boolean;
|
|
65
|
+
};
|
|
66
|
+
export declare function reconcileDirection(order1: DerivationVerdict, order2: DerivationVerdict): ReconcileOutcome;
|
|
67
|
+
export declare function birthOne(doc: {
|
|
68
|
+
relPath: string;
|
|
69
|
+
content: string;
|
|
70
|
+
}, deps: BirthDeps, opts: BirthOpts): Promise<Result<BirthOutcome, Error>>;
|
|
71
|
+
export declare function birthTracePath(vaultRoot: string): string;
|
|
72
|
+
export declare function appendBirthTrace(vaultRoot: string, row: BirthTraceRow): Promise<Result<void, Error>>;
|
|
73
|
+
export { CONSOLIDATE_AGENT };
|
|
74
|
+
//# sourceMappingURL=birth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"birth.d.ts","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
// Birth mode (spec §4.0, brief item 1). For an unprocessed doc, retrieve its
|
|
2
|
+
// top-K embedding neighbors and ask the LLM — with a foundational-ordering
|
|
3
|
+
// prompt, both docs' content loaded — whether it has a load-bearing derivation
|
|
4
|
+
// with each neighbor and which is the premise; emit edge_observe for survivors,
|
|
5
|
+
// log the full top-K + outcomes to the birth trace for post-hoc recall@K
|
|
6
|
+
// evaluation, and return the content hash so the caller can advance
|
|
7
|
+
// `consolidate-state.json`'s birth-processed map.
|
|
8
|
+
//
|
|
9
|
+
// Direction is elicited in BOTH orders per neighbor (option c, design §3.1
|
|
10
|
+
// amendment): agreement ⇒ a trusted directed edge; an explicit `symmetric` or
|
|
11
|
+
// an order-disagreement ⇒ a canonical-sorted *pending* edge (premiseVote
|
|
12
|
+
// "symmetric", direction-unconfirmed) plus an interpretive tension for human
|
|
13
|
+
// adjudication. The gate showed ambiguous real-prose pairs return a confident
|
|
14
|
+
// but order-dependent direction rather than `symmetric`, so both orders are
|
|
15
|
+
// required to catch that.
|
|
16
|
+
//
|
|
17
|
+
// One pass per neighbor — NOT a panel (the panel is revision-mode, §4.1).
|
|
18
|
+
// Birth seeds k=0 candidates; subsequent revision passes earn strength.
|
|
19
|
+
import { createHash } from "node:crypto";
|
|
20
|
+
import { appendFileSync, mkdirSync } from "node:fs";
|
|
21
|
+
import { join, posix } from "node:path";
|
|
22
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
23
|
+
import { CONSOLIDATE_AGENT } from "./constants.js";
|
|
24
|
+
import { DERIVATION_SYSTEM, DERIVATION_VERDICT_SCHEMA, derivationUserBody, parseDerivationVerdict, } from "./derivation-prompt.js";
|
|
25
|
+
// --- canonicalization --------------------------------------------------------
|
|
26
|
+
// Same canon() as src/consolidate/index.ts uses. Path-aliasing is the bug
|
|
27
|
+
// class that bit edge store + merge + Stage 1; every keyed boundary
|
|
28
|
+
// canonicalizes (memory: canonicalize-path-keys).
|
|
29
|
+
function canon(p) {
|
|
30
|
+
return posix.normalize(p).replace(/^\.\//, "");
|
|
31
|
+
}
|
|
32
|
+
// Map an order-1 verdict (A=doc, B=neighbor) to a real-world premise.
|
|
33
|
+
function realWorldPremise1(v) {
|
|
34
|
+
if (!v.related)
|
|
35
|
+
return "unrelated";
|
|
36
|
+
if (v.premise === "symmetric")
|
|
37
|
+
return "symmetric";
|
|
38
|
+
if (v.premise === "A")
|
|
39
|
+
return "doc";
|
|
40
|
+
if (v.premise === "B")
|
|
41
|
+
return "neighbor";
|
|
42
|
+
return "unrelated";
|
|
43
|
+
}
|
|
44
|
+
// Map an order-2 verdict (A=neighbor, B=doc) to a real-world premise.
|
|
45
|
+
function realWorldPremise2(v) {
|
|
46
|
+
if (!v.related)
|
|
47
|
+
return "unrelated";
|
|
48
|
+
if (v.premise === "symmetric")
|
|
49
|
+
return "symmetric";
|
|
50
|
+
if (v.premise === "A")
|
|
51
|
+
return "neighbor";
|
|
52
|
+
if (v.premise === "B")
|
|
53
|
+
return "doc";
|
|
54
|
+
return "unrelated";
|
|
55
|
+
}
|
|
56
|
+
// Reconcile both orders into a single edge decision. Conservative on existence
|
|
57
|
+
// (either order saying "unrelated" ⇒ no edge); any explicit symmetric ⇒ pending;
|
|
58
|
+
// agreement on the premise ⇒ directed; disagreement (one says doc, the other
|
|
59
|
+
// neighbor) ⇒ pending-contested.
|
|
60
|
+
export function reconcileDirection(order1, order2) {
|
|
61
|
+
const r1 = realWorldPremise1(order1);
|
|
62
|
+
const r2 = realWorldPremise2(order2);
|
|
63
|
+
if (r1 === "unrelated" || r2 === "unrelated")
|
|
64
|
+
return { kind: "unrelated" };
|
|
65
|
+
if (r1 === "symmetric" || r2 === "symmetric")
|
|
66
|
+
return { kind: "symmetric", contested: false };
|
|
67
|
+
if (r1 === r2)
|
|
68
|
+
return { kind: "directed", premise: r1 };
|
|
69
|
+
return { kind: "symmetric", contested: true };
|
|
70
|
+
}
|
|
71
|
+
// --- prompt input bounding ---------------------------------------------------
|
|
72
|
+
// Truncate doc content for the prompt. Birth doesn't need the whole doc —
|
|
73
|
+
// the central claim is usually in the first ~1500 chars; a longer corpus
|
|
74
|
+
// is calibration noise + cost. Tunable from constants if needed.
|
|
75
|
+
const MAX_DOC_CHARS = 1500;
|
|
76
|
+
function truncate(s) {
|
|
77
|
+
return s.length <= MAX_DOC_CHARS ? s : `${s.slice(0, MAX_DOC_CHARS)}\n…[truncated]`;
|
|
78
|
+
}
|
|
79
|
+
// A non-empty one-line claim snippet for the tension record (addTension rejects
|
|
80
|
+
// empty claims). Falls back to the path when the content is blank.
|
|
81
|
+
function claimSnippet(content, fallback) {
|
|
82
|
+
const line = content.split("\n").find((l) => l.trim().length > 0);
|
|
83
|
+
const snip = (line ?? "").trim().slice(0, 200);
|
|
84
|
+
return snip.length > 0 ? snip : `(no readable content: ${fallback})`;
|
|
85
|
+
}
|
|
86
|
+
// --- birth pass --------------------------------------------------------------
|
|
87
|
+
export async function birthOne(doc, deps, opts) {
|
|
88
|
+
const docPath = canon(doc.relPath);
|
|
89
|
+
const contentHash = createHash("sha256").update(doc.content).digest("hex").slice(0, 16);
|
|
90
|
+
const docContent = truncate(doc.content);
|
|
91
|
+
const neighborsRes = await deps.searchNeighbors(docPath, 20);
|
|
92
|
+
if (!neighborsRes.ok)
|
|
93
|
+
return neighborsRes;
|
|
94
|
+
const neighbors = neighborsRes.value.map(canon).filter((n) => n !== docPath);
|
|
95
|
+
const verdicts = [];
|
|
96
|
+
const observations = [];
|
|
97
|
+
let llmCalls = 0;
|
|
98
|
+
let inputTokens = 0;
|
|
99
|
+
let outputTokens = 0;
|
|
100
|
+
for (const neighbor of neighbors) {
|
|
101
|
+
// Each neighbor needs both orders; stop if we can't afford the pair.
|
|
102
|
+
if (llmCalls + 2 > opts.budgetRemaining)
|
|
103
|
+
break;
|
|
104
|
+
const nc = await deps.loadNeighborContent(neighbor);
|
|
105
|
+
if (!nc.ok) {
|
|
106
|
+
verdicts.push({ neighbor, error: `load failed: ${nc.error.message}` });
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const neighborContent = truncate(nc.value);
|
|
110
|
+
// Order 1: DOC A = this doc, DOC B = neighbor.
|
|
111
|
+
const r1 = await deps.llm.completeJson({
|
|
112
|
+
model: opts.model,
|
|
113
|
+
system: DERIVATION_SYSTEM,
|
|
114
|
+
user: derivationUserBody(docPath, docContent, neighbor, neighborContent),
|
|
115
|
+
schema: DERIVATION_VERDICT_SCHEMA,
|
|
116
|
+
temperature: 0,
|
|
117
|
+
});
|
|
118
|
+
llmCalls++;
|
|
119
|
+
if (!r1.ok) {
|
|
120
|
+
verdicts.push({ neighbor, error: r1.error.message });
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
inputTokens += r1.value.input_tokens;
|
|
124
|
+
outputTokens += r1.value.output_tokens;
|
|
125
|
+
const p1 = parseDerivationVerdict(r1.value.parsed);
|
|
126
|
+
if (!p1.ok) {
|
|
127
|
+
verdicts.push({ neighbor, error: p1.error.message });
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
// Order 2: DOC A = neighbor, DOC B = this doc.
|
|
131
|
+
const r2 = await deps.llm.completeJson({
|
|
132
|
+
model: opts.model,
|
|
133
|
+
system: DERIVATION_SYSTEM,
|
|
134
|
+
user: derivationUserBody(neighbor, neighborContent, docPath, docContent),
|
|
135
|
+
schema: DERIVATION_VERDICT_SCHEMA,
|
|
136
|
+
temperature: 0,
|
|
137
|
+
});
|
|
138
|
+
llmCalls++;
|
|
139
|
+
if (!r2.ok) {
|
|
140
|
+
verdicts.push({ neighbor, error: r2.error.message });
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
inputTokens += r2.value.input_tokens;
|
|
144
|
+
outputTokens += r2.value.output_tokens;
|
|
145
|
+
const p2 = parseDerivationVerdict(r2.value.parsed);
|
|
146
|
+
if (!p2.ok) {
|
|
147
|
+
verdicts.push({ neighbor, error: p2.error.message });
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const outcome = reconcileDirection(p1.value, p2.value);
|
|
151
|
+
const reason = p1.value.reason;
|
|
152
|
+
if (outcome.kind === "unrelated") {
|
|
153
|
+
verdicts.push({ neighbor, related: false, direction: "none", premise: null, reason });
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (outcome.kind === "directed") {
|
|
157
|
+
// Premise is materialized on `to` (clocks: from depends on to). doc-premise
|
|
158
|
+
// ⇒ to=doc, from=neighbor; neighbor-premise ⇒ to=neighbor, from=doc.
|
|
159
|
+
const [from, to] = outcome.premise === "doc" ? [neighbor, docPath] : [docPath, neighbor];
|
|
160
|
+
verdicts.push({
|
|
161
|
+
neighbor,
|
|
162
|
+
related: true,
|
|
163
|
+
direction: "directed",
|
|
164
|
+
premise: outcome.premise,
|
|
165
|
+
reason,
|
|
166
|
+
});
|
|
167
|
+
const obs = await deps.observe({
|
|
168
|
+
fromPath: from,
|
|
169
|
+
toPath: to,
|
|
170
|
+
observedBy: opts.agent,
|
|
171
|
+
blind: true,
|
|
172
|
+
axis: "prompt",
|
|
173
|
+
premiseVote: "to",
|
|
174
|
+
note: `birth: ${reason}`,
|
|
175
|
+
});
|
|
176
|
+
if (!obs.ok) {
|
|
177
|
+
verdicts.push({ neighbor, error: `observe failed: ${obs.error.message}` });
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
observations.push({ from, to });
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
// symmetric — a canonical-sorted pending edge (direction unconfirmed) so
|
|
184
|
+
// re-observation lands on the same key, plus an interpretive tension.
|
|
185
|
+
const [from, to] = [docPath, neighbor].sort();
|
|
186
|
+
const which = outcome.contested ? "contested" : "mutual";
|
|
187
|
+
verdicts.push({ neighbor, related: true, direction: "symmetric", premise: null, reason });
|
|
188
|
+
const obs = await deps.observe({
|
|
189
|
+
fromPath: from,
|
|
190
|
+
toPath: to,
|
|
191
|
+
observedBy: opts.agent,
|
|
192
|
+
blind: true,
|
|
193
|
+
axis: "prompt",
|
|
194
|
+
premiseVote: "symmetric",
|
|
195
|
+
note: `birth/symmetric(${which}): ${reason}`,
|
|
196
|
+
});
|
|
197
|
+
if (!obs.ok) {
|
|
198
|
+
verdicts.push({ neighbor, error: `observe failed: ${obs.error.message}` });
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
observations.push({ from, to });
|
|
202
|
+
const tension = await deps.recordTension({
|
|
203
|
+
title: `direction-pending (${which}): ${from} ↔ ${to}`,
|
|
204
|
+
kind: "interpretive",
|
|
205
|
+
sourceA: docPath,
|
|
206
|
+
claimA: claimSnippet(doc.content, docPath),
|
|
207
|
+
sourceB: neighbor,
|
|
208
|
+
claimB: claimSnippet(nc.value, neighbor),
|
|
209
|
+
loggedBy: opts.agent,
|
|
210
|
+
});
|
|
211
|
+
if (!tension.ok) {
|
|
212
|
+
verdicts.push({ neighbor, error: `tension failed: ${tension.error.message}` });
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const traceRes = await deps.recordBirthTrace({
|
|
216
|
+
at: new Date().toISOString().replace(/\.\d{3}Z$/, "Z"),
|
|
217
|
+
docPath,
|
|
218
|
+
contentHash,
|
|
219
|
+
topK: neighbors,
|
|
220
|
+
axis: opts.axis,
|
|
221
|
+
model: opts.model,
|
|
222
|
+
verdicts,
|
|
223
|
+
});
|
|
224
|
+
return ok({
|
|
225
|
+
docPath,
|
|
226
|
+
contentHash,
|
|
227
|
+
neighbors,
|
|
228
|
+
verdicts,
|
|
229
|
+
observations,
|
|
230
|
+
llmCalls,
|
|
231
|
+
inputTokens,
|
|
232
|
+
outputTokens,
|
|
233
|
+
traceWritten: traceRes.ok,
|
|
234
|
+
...(traceRes.ok ? {} : { traceError: traceRes.error.message }),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
// --- the CLI-wired trace recorder --------------------------------------------
|
|
238
|
+
export function birthTracePath(vaultRoot) {
|
|
239
|
+
return join(vaultRoot, ".daftari", "birth-trace.jsonl");
|
|
240
|
+
}
|
|
241
|
+
export async function appendBirthTrace(vaultRoot, row) {
|
|
242
|
+
try {
|
|
243
|
+
mkdirSync(join(vaultRoot, ".daftari"), { recursive: true });
|
|
244
|
+
appendFileSync(birthTracePath(vaultRoot), `${JSON.stringify(row)}\n`);
|
|
245
|
+
return ok(undefined);
|
|
246
|
+
}
|
|
247
|
+
catch (e) {
|
|
248
|
+
return err(new Error(`cannot record birth trace: ${e instanceof Error ? e.message : String(e)}`));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Re-exported so the CLI doesn't have to import it from constants alone.
|
|
252
|
+
export { CONSOLIDATE_AGENT };
|
|
253
|
+
//# sourceMappingURL=birth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"birth.js","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type DerivesFromEdge } from "../curation/edges.js";
|
|
2
|
+
export type DueReason = "backstop" | "decay" | "event";
|
|
3
|
+
export interface DueEdge {
|
|
4
|
+
fromPath: string;
|
|
5
|
+
toPath: string;
|
|
6
|
+
strength: number;
|
|
7
|
+
reason: DueReason;
|
|
8
|
+
}
|
|
9
|
+
export declare function decayBackstopDue(edges: DerivesFromEdge[], now: Date): DueEdge[];
|
|
10
|
+
export declare function eventDue(changedPaths: string[], edges: DerivesFromEdge[]): DueEdge[];
|
|
11
|
+
export declare function birthQueue(docs: Array<{
|
|
12
|
+
relPath: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}>, birthProcessed: Record<string, string>): string[];
|
|
15
|
+
//# sourceMappingURL=clocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clocks.d.ts","sourceRoot":"","sources":["../../src/consolidate/clocks.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,eAAe,EAAc,MAAM,sBAAsB,CAAC;AAQxE,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AACvD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB;AAUD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,EAAE,CAsB/E;AAqBD,wBAAgB,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,CAmDpF;AAKD,wBAAgB,UAAU,CACxB,IAAI,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACjD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,EAAE,CAIV"}
|