daftari 1.21.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.
- package/CHANGELOG.md +62 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidate/admit.d.ts +15 -0
- package/dist/consolidate/admit.d.ts.map +1 -0
- package/dist/consolidate/admit.js +176 -0
- package/dist/consolidate/admit.js.map +1 -0
- package/dist/consolidate/birth.d.ts +79 -0
- package/dist/consolidate/birth.d.ts.map +1 -0
- package/dist/consolidate/birth.js +315 -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 +9 -0
- package/dist/consolidate/edge-write.d.ts.map +1 -0
- package/dist/consolidate/edge-write.js +59 -0
- package/dist/consolidate/edge-write.js.map +1 -0
- package/dist/consolidate/envelope.d.ts +27 -0
- package/dist/consolidate/envelope.d.ts.map +1 -0
- package/dist/consolidate/envelope.js +90 -0
- package/dist/consolidate/envelope.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 +531 -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 +81 -0
- package/dist/consolidate/revision.d.ts.map +1 -0
- package/dist/consolidate/revision.js +274 -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/shadow.d.ts +30 -0
- package/dist/curation/shadow.d.ts.map +1 -1
- package/dist/curation/shadow.js +84 -26
- package/dist/curation/shadow.js.map +1 -1
- package/dist/curation/staged-actions.d.ts +2 -0
- package/dist/curation/staged-actions.d.ts.map +1 -1
- package/dist/curation/staged-actions.js +8 -0
- package/dist/curation/staged-actions.js.map +1 -1
- package/dist/curation/tension.d.ts +1 -0
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +8 -0
- package/dist/curation/tension.js.map +1 -1
- package/dist/curation/vault-docs.d.ts +2 -1
- package/dist/curation/vault-docs.d.ts.map +1 -1
- package/dist/curation/vault-docs.js +1 -0
- package/dist/curation/vault-docs.js.map +1 -1
- 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 +2 -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.map +1 -1
- package/dist/tools/curation.js +16 -2
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/edges.d.ts.map +1 -1
- package/dist/tools/edges.js +1 -0
- package/dist/tools/edges.js.map +1 -1
- package/dist/tools/staged-actions.d.ts.map +1 -1
- package/dist/tools/staged-actions.js +2 -0
- package/dist/tools/staged-actions.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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/consolidate/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DueEdge } from "./clocks.js";
|
|
2
|
+
export type Slice = "backstop" | "main" | "periphery" | "birth";
|
|
3
|
+
export type QueueItem = {
|
|
4
|
+
kind: "edge";
|
|
5
|
+
fromPath: string;
|
|
6
|
+
toPath: string;
|
|
7
|
+
reason: DueEdge["reason"];
|
|
8
|
+
slice: Slice;
|
|
9
|
+
} | {
|
|
10
|
+
kind: "birth";
|
|
11
|
+
path: string;
|
|
12
|
+
slice: "birth";
|
|
13
|
+
};
|
|
14
|
+
export interface PrioritizeInput {
|
|
15
|
+
edgeDue: DueEdge[];
|
|
16
|
+
birth: string[];
|
|
17
|
+
budget: number;
|
|
18
|
+
ages: Record<string, number>;
|
|
19
|
+
}
|
|
20
|
+
export interface PrioritizeOutput {
|
|
21
|
+
queue: QueueItem[];
|
|
22
|
+
backstopOverdueRemaining: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function prioritize(input: PrioritizeInput): PrioritizeOutput;
|
|
25
|
+
//# sourceMappingURL=priority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority.d.ts","sourceRoot":"","sources":["../../src/consolidate/priority.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;AAChE,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC3F;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AACD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAkGnE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Four-slice priority partition + drain-under-ceiling (spec §3.3). Pure.
|
|
2
|
+
//
|
|
3
|
+
// backstop — guaranteed (the max-interval cap made real); oldest first.
|
|
4
|
+
// main — event + decay, ranked fragility × blast (blast = 1 in Stage 1).
|
|
5
|
+
// periphery — reserved, blast-blind, pure staleness — the fairness floor.
|
|
6
|
+
// birth — reserved, FIFO over the unprocessed-doc queue.
|
|
7
|
+
//
|
|
8
|
+
// Periphery is taken BEFORE main so a flood of high-fragility main items can't
|
|
9
|
+
// swallow the fairness floor (spec §3.3 — the reserved slice is the *full* fix,
|
|
10
|
+
// not a mitigation). Backstop is served in full (it borrows, nothing borrows
|
|
11
|
+
// from it); backstopOverdueRemaining is nonzero only under total-budget
|
|
12
|
+
// starvation, which is exactly the §9 cron-alert condition.
|
|
13
|
+
import { EDGE_K_CAP } from "../curation/edges.js";
|
|
14
|
+
import { CONSOLIDATE_SLICE_FRACTIONS } from "./constants.js";
|
|
15
|
+
const REASON_RANK = { backstop: 3, event: 2, decay: 1 };
|
|
16
|
+
export function prioritize(input) {
|
|
17
|
+
const { birth, budget, ages } = input;
|
|
18
|
+
const ek = (d) => `${d.fromPath}\n${d.toPath}`;
|
|
19
|
+
// Dedup by the full edge (from,to) — the edge is the review unit (§4); two
|
|
20
|
+
// edges sharing a `from` (a←b and a←c) are distinct work. Keep the strongest
|
|
21
|
+
// reason (backstop > event > decay) when one edge is due for several.
|
|
22
|
+
const best = new Map();
|
|
23
|
+
for (const d of input.edgeDue) {
|
|
24
|
+
const k = ek(d);
|
|
25
|
+
const prev = best.get(k);
|
|
26
|
+
if (!prev || REASON_RANK[d.reason] > REASON_RANK[prev.reason])
|
|
27
|
+
best.set(k, d);
|
|
28
|
+
}
|
|
29
|
+
const all = [...best.values()];
|
|
30
|
+
const backstop = all.filter((d) => d.reason === "backstop");
|
|
31
|
+
const nonBackstop = all.filter((d) => d.reason !== "backstop");
|
|
32
|
+
// Slice budgets. A reserved slice with a nonzero fraction yields at least ONE
|
|
33
|
+
// slot whenever the budget is positive — otherwise the periphery fairness floor
|
|
34
|
+
// silently rounds to zero below budget 7 (floor(6·0.15)=0), breaking the §3.3
|
|
35
|
+
// guarantee that the periphery gets nonzero compute every session.
|
|
36
|
+
// NOTE: at budget 1–2 the four caps (each ≥1) sum to >budget, so a single
|
|
37
|
+
// backstop-overdue edge can still consume the whole budget and starve the
|
|
38
|
+
// reserved slices that session. That is acceptable — backstop IS the guarantee,
|
|
39
|
+
// and a per-session budget below the number of reserved slices is degenerate
|
|
40
|
+
// (real budgets are CONSOLIDATE_DEFAULT_BUDGET-scale). The fairness floor holds
|
|
41
|
+
// for any budget ≥ the reserved-slice count.
|
|
42
|
+
const slot = (f) => (budget * f > 0 ? Math.max(1, Math.floor(budget * f)) : 0);
|
|
43
|
+
const cap = {
|
|
44
|
+
backstop: slot(CONSOLIDATE_SLICE_FRACTIONS.backstop),
|
|
45
|
+
main: slot(CONSOLIDATE_SLICE_FRACTIONS.main),
|
|
46
|
+
periphery: slot(CONSOLIDATE_SLICE_FRACTIONS.periphery),
|
|
47
|
+
birth: slot(CONSOLIDATE_SLICE_FRACTIONS.birth),
|
|
48
|
+
};
|
|
49
|
+
// Clamp ages at 0: a future-dated lastRederived (clock skew) yields a negative
|
|
50
|
+
// age that would otherwise invert the staleness ranking.
|
|
51
|
+
const ageOf = (p) => Math.max(0, ages[p] ?? 0);
|
|
52
|
+
const staleDesc = (a, b) => ageOf(b.fromPath) - ageOf(a.fromPath);
|
|
53
|
+
const fragility = (strength) => 1 - Math.min(strength, EDGE_K_CAP) / EDGE_K_CAP;
|
|
54
|
+
// Reserved demand for the protected slices: each reserves only what it will use,
|
|
55
|
+
// so unused reservation flows to main (§3.3.4 "yields its budget to the others").
|
|
56
|
+
const peripherySorted = [...nonBackstop].sort(staleDesc);
|
|
57
|
+
const reservedPeri = Math.min(cap.periphery, peripherySorted.length);
|
|
58
|
+
const reservedBirth = Math.min(cap.birth, birth.length);
|
|
59
|
+
// Allocation (the §3.3 invariants made explicit):
|
|
60
|
+
// - Backstop BASE (its cap) is the guarantee — served first, oldest first.
|
|
61
|
+
// - Backstop OVERFLOW (beyond cap) may eat only MAIN's budget (§3.3.1 "force
|
|
62
|
+
// capacity from the decay slice, never periphery"); it cannot touch the
|
|
63
|
+
// periphery or birth reserves.
|
|
64
|
+
// - Backstop demand that even main's budget can't absorb is left UNSERVED and
|
|
65
|
+
// surfaced as backstopOverdueRemaining → the §9 exit-4 cron alert. Backstop
|
|
66
|
+
// yields to the reserved fairness/cold-start floors, but loudly, never
|
|
67
|
+
// silently.
|
|
68
|
+
const bkSorted = [...backstop].sort(staleDesc);
|
|
69
|
+
let remaining = budget;
|
|
70
|
+
const bkBase = Math.min(cap.backstop, bkSorted.length, remaining);
|
|
71
|
+
const bkOverflowRoom = Math.max(0, remaining - bkBase - reservedPeri - reservedBirth);
|
|
72
|
+
const bkOverflow = Math.min(bkSorted.length - bkBase, bkOverflowRoom);
|
|
73
|
+
const backstopServe = bkBase + bkOverflow;
|
|
74
|
+
remaining -= backstopServe;
|
|
75
|
+
const backstopOverdueRemaining = bkSorted.length - backstopServe;
|
|
76
|
+
const servePeri = Math.min(reservedPeri, remaining);
|
|
77
|
+
remaining -= servePeri;
|
|
78
|
+
// Main gets the elastic remainder, but must leave room for the birth reserve.
|
|
79
|
+
const mainSorted = peripherySorted
|
|
80
|
+
.slice(servePeri) // periphery skimmed the stalest `servePeri`; main gets the rest
|
|
81
|
+
.sort((a, b) => REASON_RANK[b.reason] - REASON_RANK[a.reason] ||
|
|
82
|
+
fragility(b.strength) - fragility(a.strength));
|
|
83
|
+
const serveMain = Math.min(mainSorted.length, Math.max(0, remaining - reservedBirth));
|
|
84
|
+
remaining -= serveMain;
|
|
85
|
+
const serveBirth = Math.min(birth.length, remaining);
|
|
86
|
+
const edgeItem = (d, slice) => ({
|
|
87
|
+
kind: "edge",
|
|
88
|
+
fromPath: d.fromPath,
|
|
89
|
+
toPath: d.toPath,
|
|
90
|
+
reason: d.reason,
|
|
91
|
+
slice,
|
|
92
|
+
});
|
|
93
|
+
const queue = [
|
|
94
|
+
...bkSorted.slice(0, backstopServe).map((d) => edgeItem(d, "backstop")),
|
|
95
|
+
...peripherySorted.slice(0, servePeri).map((d) => edgeItem(d, "periphery")),
|
|
96
|
+
...mainSorted.slice(0, serveMain).map((d) => edgeItem(d, "main")),
|
|
97
|
+
...birth
|
|
98
|
+
.slice(0, serveBirth)
|
|
99
|
+
.map((path) => ({ kind: "birth", path, slice: "birth" })),
|
|
100
|
+
];
|
|
101
|
+
return { queue, backstopOverdueRemaining };
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=priority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/consolidate/priority.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type ContestEdgeInput, type DerivesFromEdge, type ObserveEdgeInput } from "../curation/edges.js";
|
|
2
|
+
import type { LlmClient } from "../eval/llm.js";
|
|
3
|
+
import { type Result } from "../frontmatter/types.js";
|
|
4
|
+
import { type ConsolidatePromptTemplate } from "./constants.js";
|
|
5
|
+
import type { Admit } from "./envelope.js";
|
|
6
|
+
export interface RevisionDeps {
|
|
7
|
+
llm: LlmClient;
|
|
8
|
+
loadDoc: (path: string) => Promise<Result<{
|
|
9
|
+
path: string;
|
|
10
|
+
content: string;
|
|
11
|
+
}, Error>>;
|
|
12
|
+
admit: Admit;
|
|
13
|
+
observe: (input: ObserveEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
|
|
14
|
+
contest: (input: ContestEdgeInput) => Promise<Result<DerivesFromEdge, Error>>;
|
|
15
|
+
recordRevisionTrace: (row: RevisionTraceRow) => Promise<Result<void, Error>>;
|
|
16
|
+
}
|
|
17
|
+
export interface RevisionOpts {
|
|
18
|
+
vaultRoot: string;
|
|
19
|
+
agent: string;
|
|
20
|
+
panelSize: number;
|
|
21
|
+
budgetRemaining: number;
|
|
22
|
+
model: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RevisionVote {
|
|
25
|
+
axis: ConsolidatePromptTemplate;
|
|
26
|
+
verdict: "survives" | "fails";
|
|
27
|
+
reason: string;
|
|
28
|
+
}
|
|
29
|
+
export interface RevisionVoteError {
|
|
30
|
+
axis: ConsolidatePromptTemplate;
|
|
31
|
+
error: string;
|
|
32
|
+
}
|
|
33
|
+
export type RevisionDecision = "survives" | "fails" | "tie" | "no-vote" | "gated";
|
|
34
|
+
export interface RevisionTraceRow {
|
|
35
|
+
at: string;
|
|
36
|
+
fromPath: string;
|
|
37
|
+
toPath: string;
|
|
38
|
+
edgeStrengthAtStart: number;
|
|
39
|
+
kSurvivedAtStart: number;
|
|
40
|
+
lastRederivedAtStart: string;
|
|
41
|
+
model: string;
|
|
42
|
+
votes: Array<RevisionVote | RevisionVoteError>;
|
|
43
|
+
decision: RevisionDecision;
|
|
44
|
+
observedCount: number;
|
|
45
|
+
contestedCount: number;
|
|
46
|
+
gate?: "invariants" | "budget" | null;
|
|
47
|
+
gateReason?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface RevisionOutcome {
|
|
50
|
+
fromPath: string;
|
|
51
|
+
toPath: string;
|
|
52
|
+
votes: Array<RevisionVote | RevisionVoteError>;
|
|
53
|
+
decision: RevisionDecision;
|
|
54
|
+
observedCount: number;
|
|
55
|
+
contestedCount: number;
|
|
56
|
+
gate?: "invariants" | "budget" | null;
|
|
57
|
+
gateReason?: string;
|
|
58
|
+
writeErrors: Array<{
|
|
59
|
+
axis: ConsolidatePromptTemplate;
|
|
60
|
+
error: string;
|
|
61
|
+
}>;
|
|
62
|
+
llmCalls: number;
|
|
63
|
+
inputTokens: number;
|
|
64
|
+
outputTokens: number;
|
|
65
|
+
traceWritten: boolean;
|
|
66
|
+
traceError?: string;
|
|
67
|
+
}
|
|
68
|
+
export declare function parseRevisionVerdict(raw: unknown): Result<{
|
|
69
|
+
verdict: "survives" | "fails";
|
|
70
|
+
reason: string;
|
|
71
|
+
}, Error>;
|
|
72
|
+
export declare function revisionPanel(edge: {
|
|
73
|
+
fromPath: string;
|
|
74
|
+
toPath: string;
|
|
75
|
+
strength: number;
|
|
76
|
+
kSurvived: number;
|
|
77
|
+
lastRederived: string;
|
|
78
|
+
}, deps: RevisionDeps, opts: RevisionOpts): Promise<Result<RevisionOutcome, Error>>;
|
|
79
|
+
export declare function revisionTracePath(vaultRoot: string): string;
|
|
80
|
+
export declare function appendRevisionTrace(vaultRoot: string, row: RevisionTraceRow): Promise<Result<void, Error>>;
|
|
81
|
+
//# sourceMappingURL=revision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revision.d.ts","sourceRoot":"","sources":["../../src/consolidate/revision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
// Revision mode (spec §4.1, brief item 2). Cast a panel of M independent votes
|
|
2
|
+
// on a due edge — each vote uses a distinct prompt template so §11.3's replay
|
|
3
|
+
// guard counts them all as independent in one sitting. Each vote either
|
|
4
|
+
// survives (→ edge_observe, strength accrues) or fails-case-2 (→ edge_contest,
|
|
5
|
+
// revoke + tension). The §11.3 replay guard handles "same (observer, axis)
|
|
6
|
+
// pair within EDGE_REPLAY_GAP_DAYS"; this code uses distinct axes within the
|
|
7
|
+
// panel so the gap never trips.
|
|
8
|
+
//
|
|
9
|
+
// Case-1 vs case-2 simplification (v1): the LLM is asked to produce
|
|
10
|
+
// survives | fails — we treat every "fails" as case-2 (contest). The spec
|
|
11
|
+
// distinguishes case-1 (an endpoint *changed*, so failure isn't a fault of the
|
|
12
|
+
// derivation) but C's event clock already marks such edges due via git-diff;
|
|
13
|
+
// running the panel on them is the same retry path. If shadow data shows we're
|
|
14
|
+
// contesting edges whose endpoints had recent commits, add a case-1 detector
|
|
15
|
+
// (`git log --since=<lastRederived>` on each endpoint) and skip the contest.
|
|
16
|
+
// Tracked for Stage 5 calibration.
|
|
17
|
+
import { appendFileSync, mkdirSync } from "node:fs";
|
|
18
|
+
import { join, posix } from "node:path";
|
|
19
|
+
import { EDGE_AXES, } from "../curation/edges.js";
|
|
20
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
21
|
+
import { CONSOLIDATE_PROMPT_TEMPLATES } from "./constants.js";
|
|
22
|
+
// --- canon -------------------------------------------------------------------
|
|
23
|
+
function canon(p) {
|
|
24
|
+
return posix.normalize(p).replace(/^\.\//, "");
|
|
25
|
+
}
|
|
26
|
+
// Defensive wrapper around the injected admit (same rationale as birth.ts): the
|
|
27
|
+
// live makeAdmit does I/O and can throw; a thrown admit must NOT crash the panel
|
|
28
|
+
// (losing the votes + trace). Fail closed — a throw is a refusal on invariants.
|
|
29
|
+
async function safeAdmit(admit, action) {
|
|
30
|
+
try {
|
|
31
|
+
return await admit(action);
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return {
|
|
35
|
+
admit: false,
|
|
36
|
+
gate: "invariants",
|
|
37
|
+
reason: `admit threw: ${e instanceof Error ? e.message : String(e)}`,
|
|
38
|
+
impact: 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// --- verdict parsing ---------------------------------------------------------
|
|
43
|
+
const VALID_REVISION_VERDICTS = new Set(["survives", "fails"]);
|
|
44
|
+
export function parseRevisionVerdict(raw) {
|
|
45
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
46
|
+
return err(new Error("revision verdict: expected object"));
|
|
47
|
+
}
|
|
48
|
+
const obj = raw;
|
|
49
|
+
const v = obj.verdict;
|
|
50
|
+
const r = obj.reason;
|
|
51
|
+
if (typeof v !== "string" || !VALID_REVISION_VERDICTS.has(v)) {
|
|
52
|
+
return err(new Error(`revision verdict: expected 'survives' | 'fails', got ${JSON.stringify(v)}`));
|
|
53
|
+
}
|
|
54
|
+
if (typeof r !== "string" || r.trim().length === 0) {
|
|
55
|
+
return err(new Error("revision verdict: 'reason' is required"));
|
|
56
|
+
}
|
|
57
|
+
return ok({ verdict: v, reason: r });
|
|
58
|
+
}
|
|
59
|
+
// --- prompt construction -----------------------------------------------------
|
|
60
|
+
const VERDICT_SCHEMA = {
|
|
61
|
+
type: "object",
|
|
62
|
+
required: ["verdict", "reason"],
|
|
63
|
+
properties: {
|
|
64
|
+
verdict: { enum: ["survives", "fails"] },
|
|
65
|
+
reason: { type: "string", minLength: 1 },
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
const SYSTEM_BASE = "You re-evaluate whether one document's central claim still derives from another. " +
|
|
69
|
+
"You have re-derived this edge before — your job is to do it independently now, " +
|
|
70
|
+
"from the documents alone. Be conservative: only return 'survives' if the dependence is " +
|
|
71
|
+
"clear and load-bearing in the current text. Return 'fails' if the premise no longer " +
|
|
72
|
+
"supports the conclusion as previously claimed.";
|
|
73
|
+
const MAX_DOC_CHARS = 1500;
|
|
74
|
+
function truncate(s) {
|
|
75
|
+
return s.length <= MAX_DOC_CHARS ? s : `${s.slice(0, MAX_DOC_CHARS)}\n…[truncated]`;
|
|
76
|
+
}
|
|
77
|
+
// User body. The leading `[template:NAME]` marker is the post-hoc audit hook —
|
|
78
|
+
// it's how the trace + the decorrelation report (brief item 8) reconstruct
|
|
79
|
+
// which template each vote used without parsing prose. Tests rely on it too.
|
|
80
|
+
function userBody(axis, from, fromContent, to, toContent, edge) {
|
|
81
|
+
const tag = `[template:${axis}]`;
|
|
82
|
+
const meta = `Edge: ${from} derives_from ${to}. k_survived=${edge.kSurvived}, last_rederived=${edge.lastRederived}.`;
|
|
83
|
+
const fromBlock = `DOC FROM (${from}):\n${truncate(fromContent)}`;
|
|
84
|
+
const toBlock = `DOC TO (${to}):\n${truncate(toContent)}`;
|
|
85
|
+
switch (axis) {
|
|
86
|
+
case "forward":
|
|
87
|
+
return `${tag}\n${meta}\n\n${fromBlock}\n\n${toBlock}\n\nDoes DOC FROM still derive its central claim from DOC TO? Return JSON.`;
|
|
88
|
+
case "reverse":
|
|
89
|
+
return `${tag}\n${meta}\n\n${toBlock}\n\n${fromBlock}\n\nIs DOC FROM's central claim still load-bearing on DOC TO? Return JSON.`;
|
|
90
|
+
case "contrast":
|
|
91
|
+
return `${tag}\n${meta}\n\n${fromBlock}\n\n${toBlock}\n\nIf you had to defend or refute the edge "FROM derives_from TO" today, which would you do? Return JSON: 'survives' to defend, 'fails' to refute.`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// --- panel -------------------------------------------------------------------
|
|
95
|
+
// Pick the first N distinct prompt templates so M votes get M distinct
|
|
96
|
+
// (observer, axis) pairs. Validated by the constants test: panelSize cannot
|
|
97
|
+
// exceed CONSOLIDATE_PROMPT_TEMPLATES.length. We still defend at runtime in
|
|
98
|
+
// case a caller passes a runaway value.
|
|
99
|
+
function axesForPanel(panelSize) {
|
|
100
|
+
const k = Math.max(1, Math.min(panelSize, CONSOLIDATE_PROMPT_TEMPLATES.length));
|
|
101
|
+
return CONSOLIDATE_PROMPT_TEMPLATES.slice(0, k);
|
|
102
|
+
}
|
|
103
|
+
export async function revisionPanel(edge, deps, opts) {
|
|
104
|
+
const fromPath = canon(edge.fromPath);
|
|
105
|
+
const toPath = canon(edge.toPath);
|
|
106
|
+
const fromRes = await deps.loadDoc(fromPath);
|
|
107
|
+
if (!fromRes.ok)
|
|
108
|
+
return fromRes;
|
|
109
|
+
const toRes = await deps.loadDoc(toPath);
|
|
110
|
+
if (!toRes.ok)
|
|
111
|
+
return toRes;
|
|
112
|
+
const axes = axesForPanel(opts.panelSize);
|
|
113
|
+
const votes = [];
|
|
114
|
+
const writeErrors = [];
|
|
115
|
+
let llmCalls = 0;
|
|
116
|
+
let inputTokens = 0;
|
|
117
|
+
let outputTokens = 0;
|
|
118
|
+
// --- Phase 1: ELICIT all M votes (no writes). Aggregation must see the whole
|
|
119
|
+
// panel before deciding — applying writes per-vote let a single dissent revoke
|
|
120
|
+
// a healthy edge and a later survive re-seed it (order-dependent churn). ---
|
|
121
|
+
const surviving = [];
|
|
122
|
+
let failsCount = 0;
|
|
123
|
+
let firstFailReason = "re-derivation failed";
|
|
124
|
+
for (const axis of axes) {
|
|
125
|
+
if (llmCalls >= opts.budgetRemaining)
|
|
126
|
+
break;
|
|
127
|
+
const r = await deps.llm.completeJson({
|
|
128
|
+
model: opts.model,
|
|
129
|
+
system: SYSTEM_BASE,
|
|
130
|
+
user: userBody(axis, fromPath, fromRes.value.content, toPath, toRes.value.content, edge),
|
|
131
|
+
schema: VERDICT_SCHEMA,
|
|
132
|
+
});
|
|
133
|
+
llmCalls++;
|
|
134
|
+
if (!r.ok) {
|
|
135
|
+
votes.push({ axis, error: r.error.message });
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
inputTokens += r.value.input_tokens;
|
|
139
|
+
outputTokens += r.value.output_tokens;
|
|
140
|
+
const parsed = parseRevisionVerdict(r.value.parsed);
|
|
141
|
+
if (!parsed.ok) {
|
|
142
|
+
votes.push({ axis, error: parsed.error.message });
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
votes.push({ axis, verdict: parsed.value.verdict, reason: parsed.value.reason });
|
|
146
|
+
if (parsed.value.verdict === "survives") {
|
|
147
|
+
surviving.push({ axis, reason: parsed.value.reason });
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
if (failsCount === 0)
|
|
151
|
+
firstFailReason = parsed.value.reason;
|
|
152
|
+
failsCount++;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// --- Phase 2: AGGREGATE, then apply ONE decision (majority-decides). ---
|
|
156
|
+
const survivesCount = surviving.length;
|
|
157
|
+
let decision;
|
|
158
|
+
let observedCount = 0;
|
|
159
|
+
let contestedCount = 0;
|
|
160
|
+
let gate;
|
|
161
|
+
let gateReason;
|
|
162
|
+
if (survivesCount === 0 && failsCount === 0) {
|
|
163
|
+
decision = "no-vote"; // all errored / budget-starved — surface, write nothing
|
|
164
|
+
}
|
|
165
|
+
else if (failsCount > survivesCount) {
|
|
166
|
+
// Majority fails ⇒ ONE contest (revoke + tension). Satisfies the spec's
|
|
167
|
+
// multi-pass-agreement-for-contests: a lone dissent can no longer revoke.
|
|
168
|
+
// Consult the envelope ONCE for this panel decision (not per vote) before
|
|
169
|
+
// writing; on refuse the decision is gated and nothing is contested.
|
|
170
|
+
const verdict = await safeAdmit(deps.admit, { action: "edge-contest", fromPath, toPath });
|
|
171
|
+
if (!verdict.admit) {
|
|
172
|
+
decision = "gated";
|
|
173
|
+
gate = verdict.gate;
|
|
174
|
+
gateReason = verdict.reason;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
decision = "fails";
|
|
178
|
+
const con = await deps.contest({
|
|
179
|
+
fromPath,
|
|
180
|
+
toPath,
|
|
181
|
+
contestedBy: opts.agent,
|
|
182
|
+
reason: `revision panel (${failsCount}/${survivesCount + failsCount} fail): ${firstFailReason}`,
|
|
183
|
+
});
|
|
184
|
+
if (con.ok)
|
|
185
|
+
contestedCount = 1;
|
|
186
|
+
else
|
|
187
|
+
writeErrors.push({ axis: axes[0], error: `contest failed: ${con.error.message}` });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else if (survivesCount > failsCount) {
|
|
191
|
+
// Majority survives ⇒ accrue strength: each surviving vote observes with a
|
|
192
|
+
// DISTINCT store axis (EDGE_AXES), so the §11.3 replay guard counts them as
|
|
193
|
+
// independent in one sitting (panelSize ≤ EDGE_AXES.length ⇒ no collision).
|
|
194
|
+
// Consult the envelope ONCE for this panel decision (the per-vote observe
|
|
195
|
+
// loop is the mechanical accrual of the ONE admitted action); on refuse the
|
|
196
|
+
// decision is gated and NO observes are applied.
|
|
197
|
+
const verdict = await safeAdmit(deps.admit, { action: "edge-observe", fromPath, toPath });
|
|
198
|
+
if (!verdict.admit) {
|
|
199
|
+
decision = "gated";
|
|
200
|
+
gate = verdict.gate;
|
|
201
|
+
gateReason = verdict.reason;
|
|
202
|
+
surviving.length = 0; // ensure the loop below applies nothing
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
decision = "survives";
|
|
206
|
+
for (let i = 0; i < surviving.length; i++) {
|
|
207
|
+
const storeAxis = EDGE_AXES[i % EDGE_AXES.length];
|
|
208
|
+
const obs = await deps.observe({
|
|
209
|
+
fromPath,
|
|
210
|
+
toPath,
|
|
211
|
+
observedBy: opts.agent,
|
|
212
|
+
blind: true,
|
|
213
|
+
axis: storeAxis,
|
|
214
|
+
note: `revision/${surviving[i].axis}: ${surviving[i].reason}`,
|
|
215
|
+
});
|
|
216
|
+
if (obs.ok)
|
|
217
|
+
observedCount++;
|
|
218
|
+
else
|
|
219
|
+
writeErrors.push({
|
|
220
|
+
axis: surviving[i].axis,
|
|
221
|
+
error: `observe failed: ${obs.error.message}`,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
// Tie (survives === fails, both > 0): no majority ⇒ surface, write nothing.
|
|
228
|
+
decision = "tie";
|
|
229
|
+
}
|
|
230
|
+
const traceRes = await deps.recordRevisionTrace({
|
|
231
|
+
at: new Date().toISOString().replace(/\.\d{3}Z$/, "Z"),
|
|
232
|
+
fromPath,
|
|
233
|
+
toPath,
|
|
234
|
+
edgeStrengthAtStart: edge.strength,
|
|
235
|
+
kSurvivedAtStart: edge.kSurvived,
|
|
236
|
+
lastRederivedAtStart: edge.lastRederived,
|
|
237
|
+
model: opts.model,
|
|
238
|
+
votes,
|
|
239
|
+
decision,
|
|
240
|
+
observedCount,
|
|
241
|
+
contestedCount,
|
|
242
|
+
...(decision === "gated" ? { gate, gateReason } : {}),
|
|
243
|
+
});
|
|
244
|
+
return ok({
|
|
245
|
+
fromPath,
|
|
246
|
+
toPath,
|
|
247
|
+
votes,
|
|
248
|
+
decision,
|
|
249
|
+
observedCount,
|
|
250
|
+
contestedCount,
|
|
251
|
+
...(decision === "gated" ? { gate, gateReason } : {}),
|
|
252
|
+
writeErrors,
|
|
253
|
+
llmCalls,
|
|
254
|
+
inputTokens,
|
|
255
|
+
outputTokens,
|
|
256
|
+
traceWritten: traceRes.ok,
|
|
257
|
+
...(traceRes.ok ? {} : { traceError: traceRes.error.message }),
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// --- the CLI-wired trace recorder --------------------------------------------
|
|
261
|
+
export function revisionTracePath(vaultRoot) {
|
|
262
|
+
return join(vaultRoot, ".daftari", "revision-trace.jsonl");
|
|
263
|
+
}
|
|
264
|
+
export async function appendRevisionTrace(vaultRoot, row) {
|
|
265
|
+
try {
|
|
266
|
+
mkdirSync(join(vaultRoot, ".daftari"), { recursive: true });
|
|
267
|
+
appendFileSync(revisionTracePath(vaultRoot), `${JSON.stringify(row)}\n`);
|
|
268
|
+
return ok(undefined);
|
|
269
|
+
}
|
|
270
|
+
catch (e) {
|
|
271
|
+
return err(new Error(`cannot record revision trace: ${e instanceof Error ? e.message : String(e)}`));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=revision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revision.js","sourceRoot":"","sources":["../../src/consolidate/revision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Result } from "../frontmatter/types.js";
|
|
2
|
+
export interface ConsolidateState {
|
|
3
|
+
lastConsolidationCommit: string | null;
|
|
4
|
+
birthProcessed: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export declare function consolidateStatePath(vaultRoot: string): string;
|
|
7
|
+
export declare function docContentHash(content: string): string;
|
|
8
|
+
export declare function readConsolidateState(vaultRoot: string): ConsolidateState;
|
|
9
|
+
export declare function writeConsolidateState(vaultRoot: string, state: ConsolidateState): Result<void, Error>;
|
|
10
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/consolidate/state.ts"],"names":[],"mappings":"AASA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAMD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAYxE;AAKD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAarB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// .daftari/consolidate-state.json — the loop's ephemeral cross-session memory:
|
|
2
|
+
// the last consolidation commit (the event clock's baseline) and the
|
|
3
|
+
// birth-processed doc hashes (so an edited doc re-births, spec §4.0). Git-ignored
|
|
4
|
+
// and rebuildable: absent OR corrupt ⇒ the empty default, and the next session
|
|
5
|
+
// treats HEAD as its baseline (the nil path, §3.1/§7).
|
|
6
|
+
import { createHash } from "node:crypto";
|
|
7
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
10
|
+
function emptyState() {
|
|
11
|
+
return { lastConsolidationCommit: null, birthProcessed: {} };
|
|
12
|
+
}
|
|
13
|
+
export function consolidateStatePath(vaultRoot) {
|
|
14
|
+
return join(vaultRoot, ".daftari", "consolidate-state.json");
|
|
15
|
+
}
|
|
16
|
+
export function docContentHash(content) {
|
|
17
|
+
return createHash("sha256").update(content).digest("hex").slice(0, 16);
|
|
18
|
+
}
|
|
19
|
+
// Absent OR corrupt ⇒ the empty default. The state is ephemeral and rebuildable
|
|
20
|
+
// (an empty lastCommit just means the next session uses HEAD as its baseline).
|
|
21
|
+
export function readConsolidateState(vaultRoot) {
|
|
22
|
+
const p = consolidateStatePath(vaultRoot);
|
|
23
|
+
if (!existsSync(p))
|
|
24
|
+
return emptyState();
|
|
25
|
+
try {
|
|
26
|
+
const raw = JSON.parse(readFileSync(p, "utf-8"));
|
|
27
|
+
return {
|
|
28
|
+
lastConsolidationCommit: raw.lastConsolidationCommit ?? null,
|
|
29
|
+
birthProcessed: raw.birthProcessed ?? {},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return emptyState();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Returns a Result rather than throwing (CLAUDE.md house style): a full disk or
|
|
37
|
+
// a read-only .daftari is a recoverable degrade — the loop's state is ephemeral,
|
|
38
|
+
// so a failed write just means the next session re-baselines, not a crash.
|
|
39
|
+
export function writeConsolidateState(vaultRoot, state) {
|
|
40
|
+
if (typeof vaultRoot !== "string" || vaultRoot.trim().length === 0) {
|
|
41
|
+
return err(new Error("writeConsolidateState requires a non-empty vaultRoot"));
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const p = consolidateStatePath(vaultRoot);
|
|
45
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
46
|
+
writeFileSync(p, `${JSON.stringify(state, null, 2)}\n`);
|
|
47
|
+
return ok(undefined);
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
51
|
+
return err(new Error(`cannot write consolidate state: ${reason}`));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/consolidate/state.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,qEAAqE;AACrE,kFAAkF;AAClF,+EAA+E;AAC/E,uDAAuD;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAQ/D,SAAS,UAAU;IACjB,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,UAAU,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAA8B,CAAC;QAC9E,OAAO;YACL,uBAAuB,EAAE,GAAG,CAAC,uBAAuB,IAAI,IAAI;YAC5D,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE;SACzC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,iFAAiF;AACjF,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,KAAuB;IAEvB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC1C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,aAAa,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}
|