daftari 1.22.0 → 1.23.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/consolidate/admit.d.ts +15 -0
  3. package/dist/consolidate/admit.d.ts.map +1 -0
  4. package/dist/consolidate/admit.js +176 -0
  5. package/dist/consolidate/admit.js.map +1 -0
  6. package/dist/consolidate/birth.d.ts +5 -0
  7. package/dist/consolidate/birth.d.ts.map +1 -1
  8. package/dist/consolidate/birth.js +62 -0
  9. package/dist/consolidate/birth.js.map +1 -1
  10. package/dist/consolidate/edge-write.d.ts +0 -1
  11. package/dist/consolidate/edge-write.d.ts.map +1 -1
  12. package/dist/consolidate/edge-write.js +21 -38
  13. package/dist/consolidate/edge-write.js.map +1 -1
  14. package/dist/consolidate/envelope.d.ts +27 -0
  15. package/dist/consolidate/envelope.d.ts.map +1 -0
  16. package/dist/consolidate/envelope.js +90 -0
  17. package/dist/consolidate/envelope.js.map +1 -0
  18. package/dist/consolidate/index.d.ts.map +1 -1
  19. package/dist/consolidate/index.js +63 -9
  20. package/dist/consolidate/index.js.map +1 -1
  21. package/dist/consolidate/revision.d.ts +7 -1
  22. package/dist/consolidate/revision.d.ts.map +1 -1
  23. package/dist/consolidate/revision.js +70 -28
  24. package/dist/consolidate/revision.js.map +1 -1
  25. package/dist/curation/shadow.d.ts +30 -0
  26. package/dist/curation/shadow.d.ts.map +1 -1
  27. package/dist/curation/shadow.js +74 -26
  28. package/dist/curation/shadow.js.map +1 -1
  29. package/dist/curation/staged-actions.d.ts +2 -0
  30. package/dist/curation/staged-actions.d.ts.map +1 -1
  31. package/dist/curation/staged-actions.js +8 -0
  32. package/dist/curation/staged-actions.js.map +1 -1
  33. package/dist/curation/tension.d.ts +1 -0
  34. package/dist/curation/tension.d.ts.map +1 -1
  35. package/dist/curation/tension.js +8 -0
  36. package/dist/curation/tension.js.map +1 -1
  37. package/dist/curation/vault-docs.d.ts +2 -1
  38. package/dist/curation/vault-docs.d.ts.map +1 -1
  39. package/dist/curation/vault-docs.js +1 -0
  40. package/dist/curation/vault-docs.js.map +1 -1
  41. package/dist/index.js +1 -1
  42. package/dist/storage/index-db.d.ts +1 -0
  43. package/dist/storage/index-db.d.ts.map +1 -1
  44. package/dist/storage/index-db.js.map +1 -1
  45. package/dist/tools/curation.d.ts.map +1 -1
  46. package/dist/tools/curation.js +16 -2
  47. package/dist/tools/curation.js.map +1 -1
  48. package/dist/tools/edges.d.ts.map +1 -1
  49. package/dist/tools/edges.js +1 -0
  50. package/dist/tools/edges.js.map +1 -1
  51. package/dist/tools/staged-actions.d.ts.map +1 -1
  52. package/dist/tools/staged-actions.js +2 -0
  53. package/dist/tools/staged-actions.js.map +1 -1
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,7 +5,23 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [1.23.0] - 2026-06-19
9
+
10
+ ### Added
11
+
12
+ - **Cortex consolidation loop — Stage 3 (two-gate envelope).** `daftari
13
+ consolidate` now consults a two-gate envelope — an **invariants** gate (it
14
+ refuses to act on an edge whose endpoint carries an unresolved tension) and a
15
+ **trust-budget** gate — before each edge `do()`. The envelope is enforced
16
+ **live but shadowed**: every decision is computed and journaled to
17
+ `.daftari/shadow-actions.jsonl` as `decision: "admitted"` or
18
+ `decision: "gated"` (with gate + reason), but never enacted. `vault_lint`
19
+ surfaces the gated/surfaced envelope decisions as a view distinct from the
20
+ existing would-gate calibration section.
21
+ - **§8 closures.** A loop decision records `decided_by_principal` (the
22
+ authenticated identity) on the staged action and contest tension it produces;
23
+ `vault_tension_resolve` is gated on `canRatify` for loop-authored tensions, so
24
+ the loop cannot close its own tensions.
9
25
 
10
26
  ## [1.22.0] - 2026-06-17
11
27
 
@@ -0,0 +1,15 @@
1
+ import { type EnvelopeJournalInput, type ShadowActionRecord } from "../curation/shadow.js";
2
+ import type { LoadedDoc } from "../curation/vault-docs.js";
3
+ import { type Result } from "../frontmatter/types.js";
4
+ import { type Admit } from "./envelope.js";
5
+ export interface AdmitConfig {
6
+ vaultRoot: string;
7
+ principal: string;
8
+ docs: LoadedDoc[];
9
+ journal?: (vaultRoot: string, input: EnvelopeJournalInput) => Promise<Result<ShadowActionRecord, Error>>;
10
+ }
11
+ export declare function makeAdmit(cfg: AdmitConfig): Promise<Result<{
12
+ admit: Admit;
13
+ journalFailures: () => number;
14
+ }, Error>>;
15
+ //# sourceMappingURL=admit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admit.d.ts","sourceRoot":"","sources":["../../src/consolidate/admit.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,kBAAkB,EAGxB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,KAAK,KAAK,EAKX,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAOlB,IAAI,EAAE,SAAS,EAAE,CAAC;IAIlB,OAAO,CAAC,EAAE,CACR,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,oBAAoB,KACxB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;CACjD;AA2BD,wBAAsB,SAAS,CAC7B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,eAAe,EAAE,MAAM,MAAM,CAAA;CAAE,EAAE,KAAK,CAAC,CAAC,CAmJzE"}
@@ -0,0 +1,176 @@
1
+ // The real `makeAdmit` for the consolidate CLI (Stage 3 §5/D1/D5/D6). This is
2
+ // the envelope-owned admit: it assembles the EnvelopeCtx from in-process vault
3
+ // data, calls the pure evaluateEnvelope, owns the §3.7 per-session spend scalar
4
+ // (deduct-on-admit), and journals every loop decision to the shadow log.
5
+ //
6
+ // SCALE (carried concern): the vault docs are NOT loaded here — the caller
7
+ // (index.ts) already walked the vault once via loadDocuments and passes that
8
+ // LoadedDoc[] in. makeAdmit reuses it to build the reverse maps, per-endpoint
9
+ // metadata, and docCount, so there is no second disk walk and no per-file
10
+ // re-read. The only I/O makeAdmit itself does is reading staged actions and
11
+ // tensions ONCE at construction. The returned Admit closure does NO vault walk
12
+ // per call: it computes only blast from cached reverse maps. (Birth admits
13
+ // per-neighbor, so a per-call vault load would be N full walks per doc — which
14
+ // is exactly what reusing the caller's docs avoids.)
15
+ //
16
+ // Because docs/tensions are loaded once (the docs upstream, tensions here at
17
+ // construction), a tension the loop itself logs mid-pass does NOT self-gate
18
+ // later edges in the same run — this matches the plan's "load tensions once"
19
+ // intent.
20
+ import { posix } from "node:path";
21
+ import { computeDecay } from "../curation/decay.js";
22
+ import { recordEnvelopeDecision, shadowBudget, shadowImpact, } from "../curation/shadow.js";
23
+ import { listStagedActions } from "../curation/staged-actions.js";
24
+ import { listTensions } from "../curation/tension.js";
25
+ import { buildReverseLinkMap, buildReverseSourceMap, computeBlast, } from "../curation/tension-blast.js";
26
+ import { ok } from "../frontmatter/types.js";
27
+ import { evaluateEnvelope, } from "./envelope.js";
28
+ // Same canon() the consolidate modules use — the recurring path-aliasing bug
29
+ // class (an alias like `x/../x/a.md` or `./x.md` would miss every keyed map).
30
+ function canon(p) {
31
+ return posix.normalize(p).replace(/^\.\//, "");
32
+ }
33
+ // Map the envelope action type to its journaling tool name.
34
+ function toolFor(action) {
35
+ return action === "edge-observe" ? "vault_edge_observe" : "vault_edge_contest";
36
+ }
37
+ // Builds the admit closure. Async + Result: construction still does I/O —
38
+ // listStagedActions / listTensions are read ONCE here and can fail. (The vault
39
+ // docs are NOT loaded here; the caller passes them in.) The CLI fails CLOSED on
40
+ // a construction error — the envelope must never let Component A auto-write on
41
+ // incomplete information.
42
+ export async function makeAdmit(cfg) {
43
+ const { vaultRoot, principal, docs: loaded } = cfg;
44
+ const journal = cfg.journal ?? recordEnvelopeDecision;
45
+ // Closure-local count of journal-write failures. Mirrors the traceWriteFailures
46
+ // pattern in index.ts: a calibration row that fails to persist is counted and
47
+ // surfaced, never silently dropped.
48
+ let journalFailures = 0;
49
+ // --- per-endpoint metadata, from the caller's already-loaded docs ---
50
+ //
51
+ // No vault walk and no per-file re-read happen here: the LoadedDoc[] the caller
52
+ // passed already carries each doc's coerced frontmatter (for decay) AND its
53
+ // schema-validation report (for provenance), both from the loader's single
54
+ // parse pass. loadDocuments silently drops malformed-YAML docs, so any path
55
+ // absent from `loaded` reads as unknown provenance below (fail closed); a doc
56
+ // present but schema-invalid reads provenanceKnown=false via validation.valid.
57
+ const cachedByPath = new Map();
58
+ for (const d of loaded) {
59
+ const relPath = canon(d.path);
60
+ // The doc parsed cleanly (it's in the load set ⇒ YAML well-formed);
61
+ // validation.valid tells us whether the schema holds (provenance-required,
62
+ // §5.1) — recovered in-memory from the loader's parse, no re-read.
63
+ const provenanceKnown = d.validation.valid;
64
+ cachedByPath.set(relPath, {
65
+ relPath,
66
+ provenanceKnown,
67
+ decayInput: {
68
+ status: d.frontmatter.status,
69
+ confidence: d.frontmatter.confidence,
70
+ updated: d.frontmatter.updated,
71
+ created: d.frontmatter.created,
72
+ ttl_days: d.frontmatter.ttl_days,
73
+ superseded_by: d.frontmatter.superseded_by,
74
+ },
75
+ });
76
+ }
77
+ // Reverse maps for blast — built from the loaded docs (one source of truth
78
+ // with the tension-blast engine). buildReverse* key on the raw relPaths the
79
+ // loader walked, so blast seeds canonicalize to those keys below.
80
+ const reverseSource = buildReverseSourceMap(loaded);
81
+ const reverseLink = buildReverseLinkMap(loaded);
82
+ const docCount = loaded.length;
83
+ // --- I/O ONCE: live pending staged actions → B₀ queue depth (§5.2) ---
84
+ const pendingRes = await listStagedActions(vaultRoot, "pending");
85
+ if (!pendingRes.ok)
86
+ return pendingRes;
87
+ const nowMs = Date.now();
88
+ const livePending = pendingRes.value.filter((a) => Date.parse(a.expiresAt) > nowMs).length;
89
+ // --- I/O ONCE: unresolved tensions → the tension-respect invariant (§5.1) ---
90
+ const tensionsRes = await listTensions(vaultRoot);
91
+ if (!tensionsRes.ok)
92
+ return tensionsRes;
93
+ const unresolvedTensionPaths = new Set();
94
+ for (const t of tensionsRes.value) {
95
+ if (t.resolved)
96
+ continue;
97
+ unresolvedTensionPaths.add(canon(t.sourceA));
98
+ unresolvedTensionPaths.add(canon(t.sourceB));
99
+ }
100
+ // The §3.7 per-session spend scalar — closure-local, ENVELOPE-owned (D6).
101
+ // NEVER touches shadow's module-global spentByVault.
102
+ let spent = 0;
103
+ // Build an endpoint's invariant state. A canonical relPath not in the cached
104
+ // docs (missing file, or a doc whose YAML was malformed and so was dropped by
105
+ // loadDocuments) reads as unknown provenance — fail closed.
106
+ //
107
+ // v1 scope note: "unknown/broken provenance" here means the doc is missing
108
+ // from the load set or its frontmatter is schema-invalid. Dangling-source
109
+ // detection (an edge endpoint whose `sources` cite a non-vault path) is
110
+ // deferred to Stage 4/5.
111
+ const endpointState = (path) => {
112
+ const cached = cachedByPath.get(path);
113
+ if (!cached) {
114
+ return { path, provenanceKnown: false, decayBlocking: false, hasUnresolvedTension: false };
115
+ }
116
+ const d = computeDecay(cached.decayInput);
117
+ // warn|deprecated block; aging does not (the scarcity rule, §5.1).
118
+ const decayBlocking = d !== null && d.level !== "aging";
119
+ return {
120
+ path,
121
+ provenanceKnown: cached.provenanceKnown,
122
+ decayBlocking,
123
+ hasUnresolvedTension: unresolvedTensionPaths.has(path),
124
+ };
125
+ };
126
+ const admit = async (a) => {
127
+ const canonFrom = canon(a.fromPath);
128
+ const canonTo = canon(a.toPath);
129
+ const action = a.action;
130
+ const fromState = endpointState(canonFrom);
131
+ const toState = endpointState(canonTo);
132
+ // Blast from cached maps (no disk walk). 1 (the action's own footprint) +
133
+ // unique downstream reach of both endpoints. Seeds are the canonical relPath
134
+ // keys the reverse maps use — which is exactly canon() output here.
135
+ const blast = 1 +
136
+ computeBlast({ seeds: [canonFrom, canonTo], reverseSource, reverseLink }).downstream.length;
137
+ const impact = shadowImpact(action, blast);
138
+ const budget = shadowBudget(livePending, docCount);
139
+ const verdict = evaluateEnvelope({ action, endpoints: [fromState, toState], impact, budget }, spent);
140
+ // Journal the decision (admitted OR gated) to the shadow log. In shadow mode
141
+ // the EDGE STORE write is suppressed by makeObserve; this decision journal
142
+ // runs regardless of shadow mode (the gate decision is identical either way).
143
+ //
144
+ // The journal returns a Result — it is CHECKED, not thrown. A failed journal
145
+ // write loses exactly one calibration row, but it must NOT change the gate
146
+ // verdict or crash the pass: the gate decision and the deduct below proceed
147
+ // unchanged. We count the failure here and surface it via the report instead.
148
+ const res = await journal(vaultRoot, {
149
+ tool: toolFor(action),
150
+ action,
151
+ targetPath: canonFrom,
152
+ touchedPaths: [canonFrom, canonTo],
153
+ agent: principal,
154
+ principal,
155
+ decision: verdict.admit ? "admitted" : "gated",
156
+ ...(verdict.gate ? { gate: verdict.gate, gateReason: verdict.reason } : {}),
157
+ impact: verdict.impact,
158
+ budget,
159
+ blast,
160
+ spentBefore: spent,
161
+ commitMessage: `[envelope:${verdict.admit ? "admit" : "gate"}] ${action} ${canonFrom} ← ${canonTo}`,
162
+ });
163
+ if (!res.ok)
164
+ journalFailures++;
165
+ // Deduct on admit (D1): only an admitted action spends. A gated action
166
+ // leaves the budget untouched so a following clean action can still admit.
167
+ // By design: deduction happens here (on the decision), before the caller's
168
+ // observe/contest write — a post-admit storage failure (off-shadow only;
169
+ // the shadow stub never fails) consumes budget even if no edge lands.
170
+ if (verdict.admit)
171
+ spent += verdict.impact;
172
+ return verdict;
173
+ };
174
+ return ok({ admit, journalFailures: () => journalFailures });
175
+ }
176
+ //# sourceMappingURL=admit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admit.js","sourceRoot":"","sources":["../../src/consolidate/admit.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,12 @@ import type { LlmClient } from "../eval/llm.js";
4
4
  import { type Result } from "../frontmatter/types.js";
5
5
  import { CONSOLIDATE_AGENT, type ConsolidatePromptTemplate } from "./constants.js";
6
6
  import { type DerivationVerdict } from "./derivation-prompt.js";
7
+ import type { Admit } from "./envelope.js";
7
8
  export interface BirthDeps {
8
9
  llm: LlmClient;
9
10
  searchNeighbors: (docPath: string, k: number) => Promise<Result<string[], Error>>;
10
11
  loadNeighborContent: (path: string) => Promise<Result<string, Error>>;
12
+ admit: Admit;
11
13
  observe: (input: ObserveEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
12
14
  recordTension: (input: TensionInput) => Promise<Result<unknown, Error>>;
13
15
  recordBirthTrace: (row: BirthTraceRow) => Promise<Result<void, Error>>;
@@ -25,6 +27,8 @@ export interface BirthVerdict {
25
27
  direction: "directed" | "symmetric" | "none";
26
28
  premise: "doc" | "neighbor" | null;
27
29
  reason: string;
30
+ gated?: boolean;
31
+ gate?: "invariants" | "budget" | null;
28
32
  }
29
33
  export interface BirthVerdictError {
30
34
  neighbor: string;
@@ -48,6 +52,7 @@ export interface BirthOutcome {
48
52
  from: string;
49
53
  to: string;
50
54
  }>;
55
+ gatedCount: number;
51
56
  llmCalls: number;
52
57
  inputTokens: number;
53
58
  outputTokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"birth.d.ts","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"birth.d.ts","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
@@ -76,6 +76,25 @@ const MAX_DOC_CHARS = 1500;
76
76
  function truncate(s) {
77
77
  return s.length <= MAX_DOC_CHARS ? s : `${s.slice(0, MAX_DOC_CHARS)}\n…[truncated]`;
78
78
  }
79
+ // Defensive wrapper around the injected admit. The live makeAdmit (Task 7) does
80
+ // I/O — reads provenance / decay / tension state — so it can throw (network,
81
+ // config, fs). The house style is no-throw from this loop: a thrown admit must
82
+ // NOT crash the whole birth pass (losing every neighbor's verdict + the trace).
83
+ // Treat a throw as a refusal on the invariants gate (fail-closed: never write
84
+ // when the gate couldn't be evaluated), recorded like any other gated outcome.
85
+ async function safeAdmit(admit, action) {
86
+ try {
87
+ return await admit(action);
88
+ }
89
+ catch (e) {
90
+ return {
91
+ admit: false,
92
+ gate: "invariants",
93
+ reason: `admit threw: ${e instanceof Error ? e.message : String(e)}`,
94
+ impact: 0,
95
+ };
96
+ }
97
+ }
79
98
  // A non-empty one-line claim snippet for the tension record (addTension rejects
80
99
  // empty claims). Falls back to the path when the content is blank.
81
100
  function claimSnippet(content, fallback) {
@@ -94,6 +113,7 @@ export async function birthOne(doc, deps, opts) {
94
113
  const neighbors = neighborsRes.value.map(canon).filter((n) => n !== docPath);
95
114
  const verdicts = [];
96
115
  const observations = [];
116
+ let gatedCount = 0;
97
117
  let llmCalls = 0;
98
118
  let inputTokens = 0;
99
119
  let outputTokens = 0;
@@ -157,6 +177,26 @@ export async function birthOne(doc, deps, opts) {
157
177
  // Premise is materialized on `to` (clocks: from depends on to). doc-premise
158
178
  // ⇒ to=doc, from=neighbor; neighbor-premise ⇒ to=neighbor, from=doc.
159
179
  const [from, to] = outcome.premise === "doc" ? [neighbor, docPath] : [docPath, neighbor];
180
+ // Consult the envelope ONCE for this neighbor's edge-action. On refuse:
181
+ // record a gated verdict, count it, and skip the write entirely.
182
+ const verdict = await safeAdmit(deps.admit, {
183
+ action: "edge-observe",
184
+ fromPath: from,
185
+ toPath: to,
186
+ });
187
+ if (!verdict.admit) {
188
+ verdicts.push({
189
+ neighbor,
190
+ related: true,
191
+ direction: "directed",
192
+ premise: outcome.premise,
193
+ reason,
194
+ gated: true,
195
+ gate: verdict.gate,
196
+ });
197
+ gatedCount++;
198
+ continue;
199
+ }
160
200
  verdicts.push({
161
201
  neighbor,
162
202
  related: true,
@@ -184,6 +224,27 @@ export async function birthOne(doc, deps, opts) {
184
224
  // re-observation lands on the same key, plus an interpretive tension.
185
225
  const [from, to] = [docPath, neighbor].sort();
186
226
  const which = outcome.contested ? "contested" : "mutual";
227
+ // Consult the envelope ONCE for this neighbor's edge-action. On refuse:
228
+ // record a gated verdict, count it, and skip BOTH the observe AND the
229
+ // direction-pending tension (no write of any kind).
230
+ const symVerdict = await safeAdmit(deps.admit, {
231
+ action: "edge-observe",
232
+ fromPath: from,
233
+ toPath: to,
234
+ });
235
+ if (!symVerdict.admit) {
236
+ verdicts.push({
237
+ neighbor,
238
+ related: true,
239
+ direction: "symmetric",
240
+ premise: null,
241
+ reason,
242
+ gated: true,
243
+ gate: symVerdict.gate,
244
+ });
245
+ gatedCount++;
246
+ continue;
247
+ }
187
248
  verdicts.push({ neighbor, related: true, direction: "symmetric", premise: null, reason });
188
249
  const obs = await deps.observe({
189
250
  fromPath: from,
@@ -227,6 +288,7 @@ export async function birthOne(doc, deps, opts) {
227
288
  neighbors,
228
289
  verdicts,
229
290
  observations,
291
+ gatedCount,
230
292
  llmCalls,
231
293
  inputTokens,
232
294
  outputTokens,
@@ -1 +1 @@
1
- {"version":3,"file":"birth.js","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"birth.js","sourceRoot":"","sources":["../../src/consolidate/birth.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,yEAAyE;AACzE,oEAAoE;AACpE,kDAAkD;AAClD,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,0BAA0B;AAC1B,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAIxC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAkC,MAAM,gBAAgB,CAAC;AACnF,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EAEzB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AA+FhC,gFAAgF;AAEhF,0EAA0E;AAC1E,oEAAoE;AACpE,kDAAkD;AAClD,SAAS,KAAK,CAAC,CAAS;IACtB,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AASD,sEAAsE;AACtE,SAAS,iBAAiB,CAAC,CAAoB;IAC7C,IAAI,CAAC,CAAC,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IACnC,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAClD,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG;QAAE,OAAO,UAAU,CAAC;IACzC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,sEAAsE;AACtE,SAAS,iBAAiB,CAAC,CAAoB;IAC7C,IAAI,CAAC,CAAC,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IACnC,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAClD,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG;QAAE,OAAO,UAAU,CAAC;IACzC,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,iCAAiC;AACjC,MAAM,UAAU,kBAAkB,CAChC,MAAyB,EACzB,MAAyB;IAEzB,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC3E,IAAI,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC7F,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,gFAAgF;AAEhF,0EAA0E;AAC1E,yEAAyE;AACzE,iEAAiE;AACjE,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC;AACtF,CAAC;AAED,gFAAgF;AAChF,6EAA6E;AAC7E,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,KAAK,UAAU,SAAS,CACtB,KAAY,EACZ,MAAqF;IAErF,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,gBAAgB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACpE,MAAM,EAAE,CAAC;SACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,mEAAmE;AACnE,SAAS,YAAY,CAAC,OAAe,EAAE,QAAgB;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,QAAQ,GAAG,CAAC;AACvE,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAyC,EACzC,IAAe,EACf,IAAe;IAEf,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,YAAY,CAAC;IAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAE7E,MAAM,QAAQ,GAA4C,EAAE,CAAC;IAC7D,MAAM,YAAY,GAAwC,EAAE,CAAC;IAC7D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,qEAAqE;QACrE,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe;YAAE,MAAM;QAE/C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACvE,SAAS;QACX,CAAC;QACD,MAAM,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAE3C,+CAA+C;QAC/C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACrC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,iBAAiB;YACzB,IAAI,EAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;YACxE,MAAM,EAAE,yBAAyB;YACjC,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QACD,WAAW,IAAI,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;QACrC,YAAY,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;QACvC,MAAM,EAAE,GAAG,sBAAsB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QAED,+CAA+C;QAC/C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACrC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,iBAAiB;YACzB,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC;YACxE,MAAM,EAAE,yBAAyB;YACjC,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QACD,WAAW,IAAI,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;QACrC,YAAY,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;QACvC,MAAM,EAAE,GAAG,sBAAsB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;QAE/B,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACtF,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,4EAA4E;YAC5E,qEAAqE;YACrE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzF,wEAAwE;YACxE,iEAAiE;YACjE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC1C,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,QAAQ;oBACR,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,UAAU;oBACrB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM;oBACN,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAC;gBACH,UAAU,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ;gBACR,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,UAAU;gBACrB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM;aACP,CAAC,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;gBAC7B,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,EAAE;gBACV,UAAU,EAAE,IAAI,CAAC,KAAK;gBACtB,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,IAAI;gBACjB,IAAI,EAAE,UAAU,MAAM,EAAE;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC3E,SAAS;YACX,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QAED,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;QACzD,wEAAwE;QACxE,sEAAsE;QACtE,oDAAoD;QACpD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;YAC7C,MAAM,EAAE,cAAc;YACtB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ;gBACR,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,IAAI;gBACb,MAAM;gBACN,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,CAAC,CAAC;YACH,UAAU,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC7B,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,IAAI,CAAC,KAAK;YACtB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,mBAAmB,KAAK,MAAM,MAAM,EAAE;SAC7C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;YACvC,KAAK,EAAE,sBAAsB,KAAK,MAAM,IAAI,MAAM,EAAE,EAAE;YACtD,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;YAC1C,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;QAC3C,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;QACtD,OAAO;QACP,WAAW;QACX,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;QACR,OAAO;QACP,WAAW;QACX,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,YAAY,EAAE,QAAQ,CAAC,EAAE;QACzB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,GAAkB;IAElB,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CACR,IAAI,KAAK,CAAC,8BAA8B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CACtF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -3,7 +3,6 @@ import { type Result } from "../frontmatter/types.js";
3
3
  export interface EdgeWriteConfig {
4
4
  vaultRoot: string;
5
5
  shadowMode: boolean;
6
- principal?: string;
7
6
  }
8
7
  export declare function makeObserve(config: EdgeWriteConfig): (input: ObserveEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
9
8
  export declare function makeContest(config: EdgeWriteConfig): (input: ContestEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
@@ -1 +1 @@
1
- {"version":3,"file":"edge-write.d.ts","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IAIpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAuBtE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAiBtE"}
1
+ {"version":3,"file":"edge-write.d.ts","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAiCD,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAStE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,eAAe,GACtB,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAOtE"}
@@ -1,15 +1,19 @@
1
1
  // Shadow-aware wrappers around observeEdge / contestEdge for the consolidation
2
2
  // loop (spec §5.3, brief item 5). When the vault runs `shadow_mode: true`,
3
- // these factories route edge writes through `recordShadowAction` so the
4
- // calibration log gains records but `.daftari/edges.jsonl` is untouched.
5
- // When shadow is off, they fall through to the live store.
3
+ // these factories return a synthetic stub edge and touch NOTHING no edge
4
+ // store, no journal. When shadow is off, they fall through to the live store.
6
5
  //
7
- // The CLI (chunk 5) is the ONLY caller birth.ts and revision.ts receive
8
- // `observe` / `contest` via dependency injection and don't know which path
9
- // they're on. That keeps the unit tests for those modules hermetic (no fs,
10
- // no shadow config), and concentrates the live-vs-shadow branch here.
6
+ // Journaling used to live here (recordShadowAction). It moved out (Stage 3,
7
+ // decision D6): the calibration journal is now written by the CLI's admit
8
+ // wrapper, which owns the envelope's budget accounting. The loop must NOT
9
+ // advance the shared spentByVault, so edge-write must not record an action
10
+ // the way the live MCP tools do.
11
+ //
12
+ // The CLI is the ONLY caller — birth.ts and revision.ts receive `observe` /
13
+ // `contest` via dependency injection and don't know which path they're on.
14
+ // That keeps the unit tests for those modules hermetic (no fs, no shadow
15
+ // config), and concentrates the live-vs-shadow branch here.
11
16
  import { contestEdge, observeEdge, } from "../curation/edges.js";
12
- import { recordShadowAction } from "../curation/shadow.js";
13
17
  import { ok } from "../frontmatter/types.js";
14
18
  // In shadow mode we return a synthetic DerivesFromEdge so the caller's
15
19
  // success/error branch (which only checks `ok` + counts) works the same.
@@ -29,29 +33,19 @@ function stubEdge(fromPath, toPath, at, status, contestReason) {
29
33
  contestReason,
30
34
  };
31
35
  }
36
+ // Shadow-mode timestamp for the synthetic stub. Matches the edge store's
37
+ // second-resolution ISO format so the stub is shape-compatible.
38
+ function nowIso() {
39
+ return new Date().toISOString().replace(/\.\d{3}Z$/, "Z");
40
+ }
32
41
  export function makeObserve(config) {
33
42
  return async (input) => {
34
43
  if (!config.shadowMode) {
35
44
  return observeEdge(config.vaultRoot, input);
36
45
  }
37
- const shadowRes = await recordShadowAction(config.vaultRoot, {
38
- tool: "vault_edge_observe",
39
- action: "edge-observe",
40
- // targetPath drives the blast computation (downstream reach via reverse
41
- // link/source maps). The FROM doc is the right seed: strengthening
42
- // from→to could re-trigger anything downstream of `from`.
43
- targetPath: input.fromPath,
44
- touchedPaths: [input.fromPath, input.toPath],
45
- agent: input.observedBy,
46
- ...(config.principal ? { principal: config.principal } : {}),
47
- // Carry premiseVote in the message so the calibration journal can
48
- // reconstruct direction (directed-to vs symmetric/pending) — shadow mode
49
- // is where this feature is calibrated, so the signal must not be erased.
50
- commitMessage: `[shadow] edge_observe ${input.fromPath} ← ${input.toPath} [premise:${input.premiseVote ?? "n/a"}]${input.note ? ` (${input.note})` : ""}`,
51
- });
52
- if (!shadowRes.ok)
53
- return shadowRes;
54
- return ok(stubEdge(input.fromPath, input.toPath, shadowRes.value.at, "candidate", null));
46
+ // Shadow mode: advance nothing. Return the stub so the caller's success
47
+ // branch (which keys on `ok` + counts, not the row contents) is satisfied.
48
+ return ok(stubEdge(input.fromPath, input.toPath, nowIso(), "candidate", null));
55
49
  };
56
50
  }
57
51
  export function makeContest(config) {
@@ -59,18 +53,7 @@ export function makeContest(config) {
59
53
  if (!config.shadowMode) {
60
54
  return contestEdge(config.vaultRoot, input);
61
55
  }
62
- const shadowRes = await recordShadowAction(config.vaultRoot, {
63
- tool: "vault_edge_contest",
64
- action: "edge-contest",
65
- targetPath: input.fromPath,
66
- touchedPaths: [input.fromPath, input.toPath],
67
- agent: input.contestedBy,
68
- ...(config.principal ? { principal: config.principal } : {}),
69
- commitMessage: `[shadow] edge_contest ${input.fromPath} ← ${input.toPath}: ${input.reason}`,
70
- });
71
- if (!shadowRes.ok)
72
- return shadowRes;
73
- return ok(stubEdge(input.fromPath, input.toPath, shadowRes.value.at, "revoked", input.reason));
56
+ return ok(stubEdge(input.fromPath, input.toPath, nowIso(), "revoked", input.reason));
74
57
  };
75
58
  }
76
59
  //# sourceMappingURL=edge-write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-write.js","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edge-write.js","sourceRoot":"","sources":["../../src/consolidate/edge-write.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,8EAA8E;AAC9E,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,2EAA2E;AAC3E,iCAAiC;AACjC,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,4DAA4D;AAE5D,OAAO,EAEL,WAAW,EAGX,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAO1D,uEAAuE;AACvE,yEAAyE;AACzE,+DAA+D;AAC/D,SAAS,QAAQ,CACf,QAAgB,EAChB,MAAc,EACd,EAAU,EACV,MAA+B,EAC/B,aAA4B;IAE5B,OAAO;QACL,QAAQ;QACR,MAAM;QACN,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,EAAE;QACjB,MAAM;QACN,gBAAgB,EAAE,UAAU;QAC5B,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAC7C,aAAa;KACd,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,gEAAgE;AAChE,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAuB;IAEvB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,wEAAwE;QACxE,2EAA2E;QAC3E,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAuB;IAEvB,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export type EnvelopeActionType = "edge-observe" | "edge-contest";
2
+ export interface EndpointState {
3
+ path: string;
4
+ provenanceKnown: boolean;
5
+ decayBlocking: boolean;
6
+ hasUnresolvedTension: boolean;
7
+ }
8
+ export interface EnvelopeCtx {
9
+ action: EnvelopeActionType;
10
+ endpoints: EndpointState[];
11
+ impact: number;
12
+ budget: number;
13
+ }
14
+ export interface EnvelopeVerdict {
15
+ admit: boolean;
16
+ gate: "invariants" | "budget" | null;
17
+ reason: string;
18
+ impact: number;
19
+ }
20
+ export interface EnvelopeAction {
21
+ action: EnvelopeActionType;
22
+ fromPath: string;
23
+ toPath: string;
24
+ }
25
+ export type Admit = (a: EnvelopeAction) => Promise<EnvelopeVerdict>;
26
+ export declare function evaluateEnvelope(ctx: EnvelopeCtx, spent: number): EnvelopeVerdict;
27
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/consolidate/envelope.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAC;AAQjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,eAAe,EAAE,OAAO,CAAC;IAIzB,aAAa,EAAE,OAAO,CAAC;IAEvB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAEpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAoFjF"}