agentera 3.0.0-dev.21 → 3.0.0-dev.23
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/README.md +7 -3
- package/bundle/.cursor/agents/agentera.md +1 -1
- package/bundle/.opencode/agents/agentera.md +1 -1
- package/bundle/CHANGELOG.md +11 -0
- package/bundle/references/analysis/evidence-tier-authority.yaml +516 -0
- package/bundle/references/artifacts/state-storage-authority.yaml +109 -3
- package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
- package/bundle/references/cli/agent-ready-state-contract.yaml +22 -14
- package/bundle/references/cli/prime-consumer-compatibility.yaml +676 -0
- package/bundle/references/cli/vocabulary-index.yaml +3 -3
- package/bundle/references/cli/vocabulary.md +10 -3
- package/bundle/skills/agentera/SKILL.md +7 -6
- package/bundle/skills/agentera/agents/audit.toml +1 -1
- package/bundle/skills/agentera/agents/build.toml +1 -1
- package/bundle/skills/agentera/agents/design.toml +1 -1
- package/bundle/skills/agentera/agents/discuss.toml +1 -1
- package/bundle/skills/agentera/agents/document.toml +1 -1
- package/bundle/skills/agentera/agents/optimize.toml +1 -1
- package/bundle/skills/agentera/agents/orchestrate.toml +1 -1
- package/bundle/skills/agentera/agents/plan.toml +1 -1
- package/bundle/skills/agentera/agents/profile.toml +1 -1
- package/bundle/skills/agentera/agents/research.toml +1 -1
- package/bundle/skills/agentera/agents/status.toml +1 -1
- package/bundle/skills/agentera/agents/vision.toml +1 -1
- package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +31 -3
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +1 -0
- package/dist/analytics/extractCorpus/cli.js +33 -5
- package/dist/analytics/extractCorpus/cli.js.map +1 -1
- package/dist/analytics/extractCorpus/evidenceTiers.js +561 -0
- package/dist/analytics/extractCorpus/evidenceTiers.js.map +1 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js +1 -0
- package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -1
- package/dist/analytics/extractCorpus/index.js +3 -0
- package/dist/analytics/extractCorpus/index.js.map +1 -1
- package/dist/analytics/extractCorpus/tierReader.js +109 -0
- package/dist/analytics/extractCorpus/tierReader.js.map +1 -0
- package/dist/analytics/profileSignals.js +212 -0
- package/dist/analytics/profileSignals.js.map +1 -0
- package/dist/analytics/usageStats.js +104 -20
- package/dist/analytics/usageStats.js.map +1 -1
- package/dist/capabilities/index.js +2 -1
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/profile/instructions.js +1 -1
- package/dist/capabilities/profile/instructions.js.map +1 -1
- package/dist/capabilities/status/startupInstructions.js +35 -0
- package/dist/capabilities/status/startupInstructions.js.map +1 -0
- package/dist/cli/capabilityContext/build.js +3 -3
- package/dist/cli/capabilityContext/build.js.map +1 -1
- package/dist/cli/capabilityContext/closeout.js +5 -5
- package/dist/cli/capabilityContext/closeout.js.map +1 -1
- package/dist/cli/capabilityContext/contract.js +4 -4
- package/dist/cli/capabilityContext/contract.js.map +1 -1
- package/dist/cli/capabilityContext/evidence.js +4 -4
- package/dist/cli/capabilityContext/evidence.js.map +1 -1
- package/dist/cli/capabilityContext/planState.js +7 -6
- package/dist/cli/capabilityContext/planState.js.map +1 -1
- package/dist/cli/capabilityContext/shared.js +1 -1
- package/dist/cli/capabilityContext/shared.js.map +1 -1
- package/dist/cli/capabilityContext/startup.js +4 -4
- package/dist/cli/capabilityContext/startup.js.map +1 -1
- package/dist/cli/commands/lint.js +10 -2
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/prime/briefOrientation.js +582 -0
- package/dist/cli/commands/prime/briefOrientation.js.map +1 -0
- package/dist/cli/commands/prime/collectOrientationState.js +3 -0
- package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
- package/dist/cli/commands/prime/orientationOutput.js +117 -23
- package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
- package/dist/cli/commands/prime.js +30 -3
- package/dist/cli/commands/prime.js.map +1 -1
- package/dist/cli/commands/report.js +55 -15
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/schema.js +3 -29
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/state/plan.js +3 -2
- package/dist/cli/commands/state/plan.js.map +1 -1
- package/dist/cli/help.js +1 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/orientation/corpusCoverage.js +32 -0
- package/dist/cli/orientation/corpusCoverage.js.map +1 -1
- package/dist/cli/orientation.js +3 -3
- package/dist/cli/orientation.js.map +1 -1
- package/dist/cli/startupCompletenessContract.js +3 -3
- package/dist/cli/startupCompletenessContract.js.map +1 -1
- package/dist/cli/stateQuery.js +37 -0
- package/dist/cli/stateQuery.js.map +1 -1
- package/dist/registries/evidenceTierContract.js +362 -0
- package/dist/registries/evidenceTierContract.js.map +1 -0
- package/dist/registries/verbosityBudgetContract.js +206 -0
- package/dist/registries/verbosityBudgetContract.js.map +1 -0
- package/dist/state/decisionLegacyValidation.js +185 -0
- package/dist/state/decisionLegacyValidation.js.map +1 -0
- package/dist/state/decisionOverlay.js +24 -1
- package/dist/state/decisionOverlay.js.map +1 -1
- package/dist/state/decisionRevision.js +622 -0
- package/dist/state/decisionRevision.js.map +1 -0
- package/dist/state/decisionRevisionPublication.js +532 -0
- package/dist/state/decisionRevisionPublication.js.map +1 -0
- package/dist/state/directRetrieval.js +55 -4
- package/dist/state/directRetrieval.js.map +1 -1
- package/dist/state/listRetrieval.js +42 -11
- package/dist/state/listRetrieval.js.map +1 -1
- package/dist/state/startupAnalysis/benchmark.js +70 -8
- package/dist/state/startupAnalysis/benchmark.js.map +1 -1
- package/dist/state/startupAnalysis/threshold.js +13 -0
- package/dist/state/startupAnalysis/threshold.js.map +1 -1
- package/dist/state/startupProjection.js +68 -1
- package/dist/state/startupProjection.js.map +1 -1
- package/dist/state/write/candidateMutation.js +331 -0
- package/dist/state/write/candidateMutation.js.map +1 -0
- package/dist/state/write/explain.js +36 -12
- package/dist/state/write/explain.js.map +1 -1
- package/dist/state/write/helpers.js +22 -0
- package/dist/state/write/helpers.js.map +1 -1
- package/dist/state/write/mutation.js +42 -0
- package/dist/state/write/mutation.js.map +1 -1
- package/dist/state/write/operations.js +49 -1
- package/dist/state/write/operations.js.map +1 -1
- package/dist/state/write/transaction.js +23 -357
- package/dist/state/write/transaction.js.map +1 -1
- package/dist/validate/lifecycleAdapters/lifecycleMain.js +154 -0
- package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +1 -0
- package/dist/validate/lifecycleAdapters.js +5 -156
- package/dist/validate/lifecycleAdapters.js.map +1 -1
- package/dist/validate/selfAudit.js +38 -43
- package/dist/validate/selfAudit.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { pyJsonIndentSorted } from "../../core/pyjson.js";
|
|
4
|
+
import { writeFileAtomic } from "../../core/atomicWriter.js";
|
|
5
|
+
import { stableId, defaultProfileDir } from "./core.js";
|
|
6
|
+
import { evidenceTierBounds, loadEvidenceTierContract } from "../../registries/evidenceTierContract.js";
|
|
7
|
+
/**
|
|
8
|
+
* Bounded tier publication and direct retrieval (plan Task 2).
|
|
9
|
+
*
|
|
10
|
+
* Task 1 fixed the authoritative tier model in
|
|
11
|
+
* `references/analysis/evidence-tier-authority.yaml`; this module implements
|
|
12
|
+
* the publication writer and the direct retrieval behavior that run against it.
|
|
13
|
+
* It projects the contract's families and bounds from the loader rather than
|
|
14
|
+
* re-declaring them, and reuses the extraction adapters' record shape so no
|
|
15
|
+
* source family, adapter, or evidence identity is changed.
|
|
16
|
+
*
|
|
17
|
+
* It does not migrate usage/report/prime/startup-analysis consumers (plan
|
|
18
|
+
* Task 3) or implement profile synthesis (plan Task 4). The smallest retrieval
|
|
19
|
+
* API those later consumers need is exposed here.
|
|
20
|
+
*/
|
|
21
|
+
export const TIER_SCHEMA_VERSION = "agentera.evidenceTiers.v1";
|
|
22
|
+
export const CURRENT_POINTER_VERSION = "agentera.evidenceTiers.current.v1";
|
|
23
|
+
export const FILESYSTEM_FAMILY = "filesystem";
|
|
24
|
+
const SIGNAL_SOURCE_KINDS = new Set([
|
|
25
|
+
"instruction_document",
|
|
26
|
+
"project_config_signal",
|
|
27
|
+
"conversation_turn",
|
|
28
|
+
"tool_call",
|
|
29
|
+
"history_prompt",
|
|
30
|
+
]);
|
|
31
|
+
const CLASSIFIED_SIGNAL_TYPES = new Set(["decision", "question", "correction"]);
|
|
32
|
+
/** Default tier directory co-located with the legacy corpus path. */
|
|
33
|
+
export function defaultTiersDir(env = process.env, platform = process.platform) {
|
|
34
|
+
return path.join(defaultProfileDir(env, platform), "intermediate", "tiers");
|
|
35
|
+
}
|
|
36
|
+
/** product -> source family, projected from the contract (single source). */
|
|
37
|
+
function productFamilyIndex(contractPath) {
|
|
38
|
+
const model = loadEvidenceTierContract(contractPath);
|
|
39
|
+
const index = new Map();
|
|
40
|
+
for (const [familyId, def] of model.families) {
|
|
41
|
+
for (const product of def.source_product)
|
|
42
|
+
index.set(product, familyId);
|
|
43
|
+
}
|
|
44
|
+
return index;
|
|
45
|
+
}
|
|
46
|
+
/** Map a full record to its source family for sharding. */
|
|
47
|
+
export function familyOf(record, productFamily) {
|
|
48
|
+
const product = typeof record.source_product === "string" ? record.source_product : "";
|
|
49
|
+
if (product === FILESYSTEM_FAMILY)
|
|
50
|
+
return FILESYSTEM_FAMILY;
|
|
51
|
+
return productFamily.get(product) ?? "unknown";
|
|
52
|
+
}
|
|
53
|
+
function asStringField(record, key) {
|
|
54
|
+
const v = record[key];
|
|
55
|
+
return typeof v === "string" ? v : "";
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Pure derivation of bounded signal records from full evidence. One signal
|
|
59
|
+
* record per full record; `signal_type` carries the classified semantic
|
|
60
|
+
* (decision/question/correction/instruction/configuration) or `record_identity`
|
|
61
|
+
* as the base citable-identity semantic. The signal's `source_id` equals its
|
|
62
|
+
* `evidence_anchor` so no signal invents an identity that does not resolve to a
|
|
63
|
+
* retained full-evidence shard.
|
|
64
|
+
*/
|
|
65
|
+
export function deriveSignalRecords(fullRecords) {
|
|
66
|
+
const out = [];
|
|
67
|
+
for (const r of fullRecords) {
|
|
68
|
+
const sourceKind = asStringField(r, "source_kind");
|
|
69
|
+
if (!SIGNAL_SOURCE_KINDS.has(sourceKind))
|
|
70
|
+
continue;
|
|
71
|
+
const data = r.data && typeof r.data === "object" && !Array.isArray(r.data) ? r.data : {};
|
|
72
|
+
let signalType = "record_identity";
|
|
73
|
+
if (sourceKind === "instruction_document")
|
|
74
|
+
signalType = "instruction";
|
|
75
|
+
else if (sourceKind === "project_config_signal")
|
|
76
|
+
signalType = "configuration";
|
|
77
|
+
else if (sourceKind === "conversation_turn") {
|
|
78
|
+
const classified = typeof data.signal_type === "string" ? data.signal_type : "";
|
|
79
|
+
signalType = CLASSIFIED_SIGNAL_TYPES.has(classified) ? classified : "record_identity";
|
|
80
|
+
}
|
|
81
|
+
const sourceId = asStringField(r, "source_id");
|
|
82
|
+
const rec = {
|
|
83
|
+
source_id: sourceId,
|
|
84
|
+
source_kind: sourceKind,
|
|
85
|
+
signal_type: signalType,
|
|
86
|
+
timestamp: asStringField(r, "timestamp"),
|
|
87
|
+
project_id: asStringField(r, "project_id"),
|
|
88
|
+
runtime: typeof r.runtime === "string" ? r.runtime : null,
|
|
89
|
+
source_product: asStringField(r, "source_product"),
|
|
90
|
+
evidence_anchor: sourceId,
|
|
91
|
+
};
|
|
92
|
+
if (typeof r.conversation_key === "string")
|
|
93
|
+
rec.conversation_key = r.conversation_key;
|
|
94
|
+
if (typeof r.session_id === "string")
|
|
95
|
+
rec.session_id = r.session_id;
|
|
96
|
+
out.push(rec);
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
/** Deterministic sort key for records and signals: (timestamp, source_id). */
|
|
101
|
+
function tierSortKey(a, b) {
|
|
102
|
+
const get = (o, key) => {
|
|
103
|
+
const v = o[key];
|
|
104
|
+
return typeof v === "string" ? v : "";
|
|
105
|
+
};
|
|
106
|
+
const at = get(a, "timestamp");
|
|
107
|
+
const bt = get(b, "timestamp");
|
|
108
|
+
const ai = get(a, "source_id");
|
|
109
|
+
const bi = get(b, "source_id");
|
|
110
|
+
if (at !== bt)
|
|
111
|
+
return at < bt ? -1 : 1;
|
|
112
|
+
if (ai !== bi)
|
|
113
|
+
return ai < bi ? -1 : 1;
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
function encodeSorted(value) {
|
|
117
|
+
return pyJsonIndentSorted(value);
|
|
118
|
+
}
|
|
119
|
+
function byteSize(text) {
|
|
120
|
+
return Buffer.byteLength(text, "utf-8");
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Split full evidence into family shards, each no larger than `shardByteCap`.
|
|
124
|
+
* A family whose records exceed the cap is split into numbered sub-shards; no
|
|
125
|
+
* record is dropped to fit a shard.
|
|
126
|
+
*/
|
|
127
|
+
export function shardFullEvidence(records, shardByteCap, productFamily) {
|
|
128
|
+
const byFamily = new Map();
|
|
129
|
+
for (const r of records) {
|
|
130
|
+
const family = familyOf(r, productFamily);
|
|
131
|
+
const list = byFamily.get(family) ?? [];
|
|
132
|
+
list.push(r);
|
|
133
|
+
byFamily.set(family, list);
|
|
134
|
+
}
|
|
135
|
+
const shards = [];
|
|
136
|
+
for (const family of [...byFamily.keys()].sort()) {
|
|
137
|
+
const familyRecords = byFamily.get(family).slice().sort(tierSortKey);
|
|
138
|
+
let current = [];
|
|
139
|
+
let currentIds = [];
|
|
140
|
+
let currentBytes = 0;
|
|
141
|
+
let index = 0;
|
|
142
|
+
const flush = () => {
|
|
143
|
+
if (current.length === 0)
|
|
144
|
+
return;
|
|
145
|
+
const encoded = encodeSorted({ records: current });
|
|
146
|
+
shards.push({ family, index, records: current, sourceIds: currentIds, bytes: byteSize(encoded) });
|
|
147
|
+
current = [];
|
|
148
|
+
currentIds = [];
|
|
149
|
+
currentBytes = 0;
|
|
150
|
+
index++;
|
|
151
|
+
};
|
|
152
|
+
for (const r of familyRecords) {
|
|
153
|
+
const id = asStringField(r, "source_id");
|
|
154
|
+
const recordByte = byteSize(encodeSorted(r));
|
|
155
|
+
// If a single record exceeds the cap, it forms its own (oversized) shard
|
|
156
|
+
// so the rest of the tier stays loadable; the oversized shard is reported
|
|
157
|
+
// via the compatibility state rather than silently dropped.
|
|
158
|
+
if (current.length > 0 && currentBytes + recordByte > shardByteCap) {
|
|
159
|
+
flush();
|
|
160
|
+
}
|
|
161
|
+
current.push(r);
|
|
162
|
+
currentIds.push(id);
|
|
163
|
+
currentBytes += recordByte;
|
|
164
|
+
}
|
|
165
|
+
flush();
|
|
166
|
+
}
|
|
167
|
+
return shards;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Deterministic signal selection applied only when the derived tier would
|
|
171
|
+
* exceed `signalByteCap`. Allocates a per-family record quota proportional to
|
|
172
|
+
* each family's share of the total (minimum one per family), keeps the most
|
|
173
|
+
* recent within each family, and reassembles in the stable tier order.
|
|
174
|
+
*/
|
|
175
|
+
export function selectSignalsForBound(signals, signalByteCap) {
|
|
176
|
+
const sorted = signals.slice().sort(tierSortKey);
|
|
177
|
+
const allEncoded = encodeSorted({ records: sorted });
|
|
178
|
+
const totalBytes = byteSize(allEncoded);
|
|
179
|
+
const perFamily = new Map();
|
|
180
|
+
for (const s of sorted) {
|
|
181
|
+
const list = perFamily.get(s.source_product) ?? [];
|
|
182
|
+
list.push(s);
|
|
183
|
+
perFamily.set(s.source_product, list);
|
|
184
|
+
}
|
|
185
|
+
const familyReport = [];
|
|
186
|
+
for (const family of [...perFamily.keys()].sort()) {
|
|
187
|
+
familyReport.push({ family, total: perFamily.get(family).length, retained: perFamily.get(family).length });
|
|
188
|
+
}
|
|
189
|
+
if (totalBytes <= signalByteCap) {
|
|
190
|
+
const selection = {
|
|
191
|
+
total: sorted.length,
|
|
192
|
+
retained: sorted.length,
|
|
193
|
+
capped: false,
|
|
194
|
+
per_family: familyReport,
|
|
195
|
+
};
|
|
196
|
+
return { records: sorted, selection };
|
|
197
|
+
}
|
|
198
|
+
// Per-record average from the encoded payload drives the record budget.
|
|
199
|
+
const avg = totalBytes / Math.max(sorted.length, 1);
|
|
200
|
+
const recordBudget = Math.max(1, Math.floor(signalByteCap / avg));
|
|
201
|
+
const families = [...perFamily.keys()].sort();
|
|
202
|
+
const totalFamilyRecords = sorted.length;
|
|
203
|
+
const retained = [];
|
|
204
|
+
const updatedFamilyReport = [];
|
|
205
|
+
let allocated = 0;
|
|
206
|
+
for (const family of families) {
|
|
207
|
+
const list = perFamily.get(family);
|
|
208
|
+
const quota = Math.max(1, Math.floor((recordBudget * list.length) / Math.max(totalFamilyRecords, 1)));
|
|
209
|
+
updatedFamilyReport.push({ family, total: list.length, retained: Math.min(quota, list.length) });
|
|
210
|
+
// Most recent first: timestamp desc, then source_id asc.
|
|
211
|
+
const kept = list
|
|
212
|
+
.slice()
|
|
213
|
+
.sort((a, b) => (a.timestamp !== b.timestamp ? (a.timestamp < b.timestamp ? 1 : -1) : a.source_id < b.source_id ? -1 : 1))
|
|
214
|
+
.slice(0, quota);
|
|
215
|
+
retained.push(...kept);
|
|
216
|
+
allocated += kept.length;
|
|
217
|
+
}
|
|
218
|
+
// If proportional allocation under-fills (rounding), top up most-recent
|
|
219
|
+
// across families until the budget is reached without exceeding the cap.
|
|
220
|
+
if (allocated < recordBudget) {
|
|
221
|
+
const have = new Set(retained.map((s) => s.source_id));
|
|
222
|
+
const pool = sorted
|
|
223
|
+
.filter((s) => !have.has(s.source_id))
|
|
224
|
+
.sort((a, b) => (a.timestamp !== b.timestamp ? (a.timestamp < b.timestamp ? 1 : -1) : a.source_id < b.source_id ? -1 : 1));
|
|
225
|
+
for (const s of pool) {
|
|
226
|
+
const candidate = encodeSorted({ records: [...retained, s] });
|
|
227
|
+
if (byteSize(candidate) > signalByteCap)
|
|
228
|
+
break;
|
|
229
|
+
retained.push(s);
|
|
230
|
+
allocated++;
|
|
231
|
+
if (allocated >= recordBudget)
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
retained.sort(tierSortKey);
|
|
236
|
+
const finalFamilyReport = updatedFamilyReport.map((f) => {
|
|
237
|
+
const count = retained.filter((s) => s.source_product === f.family).length;
|
|
238
|
+
return { ...f, retained: count };
|
|
239
|
+
});
|
|
240
|
+
const selection = {
|
|
241
|
+
total: sorted.length,
|
|
242
|
+
retained: retained.length,
|
|
243
|
+
capped: true,
|
|
244
|
+
per_family: finalFamilyReport,
|
|
245
|
+
};
|
|
246
|
+
return { records: retained, selection };
|
|
247
|
+
}
|
|
248
|
+
/** Deterministic, content-addressable generation identity. */
|
|
249
|
+
export function generationId(fullRecords, adapterVersion, shardByteCap, signalByteCap) {
|
|
250
|
+
const ids = fullRecords
|
|
251
|
+
.map((r) => asStringField(r, "source_id"))
|
|
252
|
+
.filter((id) => id)
|
|
253
|
+
.sort();
|
|
254
|
+
return stableId("evidenceTiers", adapterVersion, shardByteCap, signalByteCap, ids.join("\n"));
|
|
255
|
+
}
|
|
256
|
+
function coverageFromStatuses(runtimeStatuses) {
|
|
257
|
+
const families = [];
|
|
258
|
+
const available = [];
|
|
259
|
+
const selected = [];
|
|
260
|
+
const skipped = [];
|
|
261
|
+
// Post-extraction statuses use "ok" for a cleanly extracted source; discovery
|
|
262
|
+
// statuses use "available". Both mean the source was discovered and extracted,
|
|
263
|
+
// so a bounded consumer treats them as available. Sparse/missing/skipped/degraded
|
|
264
|
+
// are coverage gaps (the contract's incomplete state), so they surface in skipped
|
|
265
|
+
// rather than being silently absent from coverage.
|
|
266
|
+
const AVAILABLE = new Set(["ok", "available"]);
|
|
267
|
+
const GAP = new Set(["skipped", "sparse", "missing", "degraded"]);
|
|
268
|
+
for (const s of runtimeStatuses ?? []) {
|
|
269
|
+
const runtime = typeof s.runtime === "string" ? s.runtime : null;
|
|
270
|
+
const product = typeof s.source_product === "string" ? s.source_product : (runtime ?? "unknown");
|
|
271
|
+
const status = typeof s.status === "string" ? s.status : "";
|
|
272
|
+
const reason = typeof s.reason === "string" ? s.reason : "";
|
|
273
|
+
if (product && !families.includes(product))
|
|
274
|
+
families.push(product);
|
|
275
|
+
const isActiveRuntime = s.source_class === "active_runtime" && s.active_runtime !== false;
|
|
276
|
+
if (AVAILABLE.has(status)) {
|
|
277
|
+
available.push(product);
|
|
278
|
+
if (isActiveRuntime)
|
|
279
|
+
selected.push(product);
|
|
280
|
+
}
|
|
281
|
+
if (GAP.has(status)) {
|
|
282
|
+
const entry = { runtime, reason: reason || status };
|
|
283
|
+
if (typeof s.store_path === "string")
|
|
284
|
+
entry.store_path = s.store_path;
|
|
285
|
+
skipped.push(entry);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return { families: [...families].sort(), available: [...available].sort(), selected: [...selected].sort(), skipped };
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Publish bounded full-evidence shards and a bounded signal tier atomically. The
|
|
292
|
+
* whole generation is staged in a temp directory and revealed only by an atomic
|
|
293
|
+
* swap of the `current` pointer, so no consumer can observe a partially
|
|
294
|
+
* published generation. Returns the publication result.
|
|
295
|
+
*/
|
|
296
|
+
export function publishEvidenceTiers(records, opts, contractPath) {
|
|
297
|
+
const bounds = evidenceTierBounds(contractPath);
|
|
298
|
+
const productFamily = productFamilyIndex(contractPath);
|
|
299
|
+
const sortedRecords = records.slice().sort(tierSortKey);
|
|
300
|
+
const signals = deriveSignalRecords(sortedRecords);
|
|
301
|
+
const { records: selectedSignals, selection } = selectSignalsForBound(signals, bounds.signalByteCap);
|
|
302
|
+
const shards = shardFullEvidence(sortedRecords, bounds.shardByteCap, productFamily);
|
|
303
|
+
const gen = generationId(sortedRecords, opts.adapterVersion, bounds.shardByteCap, bounds.signalByteCap);
|
|
304
|
+
const publishedAt = opts.publishedAt ?? new Date().toISOString();
|
|
305
|
+
const generationsDir = path.join(opts.tiersDir, "generations");
|
|
306
|
+
const finalDir = path.join(generationsDir, gen);
|
|
307
|
+
const stageDir = path.join(opts.tiersDir, ".staging", `${gen}.${process.pid}.${Date.now()}`);
|
|
308
|
+
fs.mkdirSync(path.join(stageDir, "full-evidence"), { recursive: true });
|
|
309
|
+
fs.mkdirSync(generationsDir, { recursive: true });
|
|
310
|
+
const shardDescriptors = [];
|
|
311
|
+
const familiesAgg = {};
|
|
312
|
+
for (const shard of shards) {
|
|
313
|
+
const file = `${shard.family}-${String(shard.index).padStart(3, "0")}.json`;
|
|
314
|
+
const relPath = path.join("full-evidence", file);
|
|
315
|
+
const absPath = path.join(stageDir, relPath);
|
|
316
|
+
const encoded = encodeSorted({ records: shard.records });
|
|
317
|
+
writeFileAtomic(absPath, encoded + "\n");
|
|
318
|
+
shardDescriptors.push({
|
|
319
|
+
family: shard.family,
|
|
320
|
+
index: shard.index,
|
|
321
|
+
path: relPath,
|
|
322
|
+
record_count: shard.records.length,
|
|
323
|
+
bytes: byteSize(encoded),
|
|
324
|
+
source_ids: shard.sourceIds,
|
|
325
|
+
});
|
|
326
|
+
const agg = familiesAgg[shard.family] ?? { shards: 0, records: 0 };
|
|
327
|
+
agg.shards += 1;
|
|
328
|
+
agg.records += shard.records.length;
|
|
329
|
+
familiesAgg[shard.family] = agg;
|
|
330
|
+
}
|
|
331
|
+
const signalRel = "signal.json";
|
|
332
|
+
const signalEncoded = encodeSorted({ records: selectedSignals });
|
|
333
|
+
const signalBytes = byteSize(signalEncoded);
|
|
334
|
+
writeFileAtomic(path.join(stageDir, signalRel), signalEncoded + "\n");
|
|
335
|
+
const manifest = {
|
|
336
|
+
schema_version: TIER_SCHEMA_VERSION,
|
|
337
|
+
generation: gen,
|
|
338
|
+
adapter_version: opts.adapterVersion,
|
|
339
|
+
published_at: publishedAt,
|
|
340
|
+
bounds: { shard_byte_cap: bounds.shardByteCap, signal_byte_cap: bounds.signalByteCap },
|
|
341
|
+
total_records: sortedRecords.length,
|
|
342
|
+
families: familiesAgg,
|
|
343
|
+
shards: shardDescriptors,
|
|
344
|
+
signal: { path: signalRel, record_count: selectedSignals.length, bytes: signalBytes, selection },
|
|
345
|
+
coverage: coverageFromStatuses(opts.runtimeStatuses),
|
|
346
|
+
corpus_metadata: opts.corpusMetadata,
|
|
347
|
+
};
|
|
348
|
+
writeFileAtomic(path.join(stageDir, "manifest.json"), encodeSorted(manifest) + "\n");
|
|
349
|
+
// Reveal: rename staged dir onto the final generation dir, then atomically
|
|
350
|
+
// swap the current pointer. If interrupted before this point, the prior
|
|
351
|
+
// generation (or none) remains current.
|
|
352
|
+
const priorCurrent = readCurrentPointer(opts.tiersDir);
|
|
353
|
+
if (!fs.existsSync(finalDir)) {
|
|
354
|
+
fs.renameSync(stageDir, finalDir);
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
// Idempotent: identical content already published. Replace staging copy.
|
|
358
|
+
try {
|
|
359
|
+
fs.rmSync(stageDir, { recursive: true, force: true });
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
/* best-effort cleanup */
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
const currentPath = path.join(opts.tiersDir, "current.json");
|
|
366
|
+
writeFileAtomic(currentPath, encodeSorted({
|
|
367
|
+
schema_version: CURRENT_POINTER_VERSION,
|
|
368
|
+
generation: gen,
|
|
369
|
+
published_at: publishedAt,
|
|
370
|
+
adapter_version: opts.adapterVersion,
|
|
371
|
+
}) + "\n");
|
|
372
|
+
return {
|
|
373
|
+
tiers_dir: opts.tiersDir,
|
|
374
|
+
generation: gen,
|
|
375
|
+
manifest_path: path.join("generations", gen, "manifest.json"),
|
|
376
|
+
total_records: sortedRecords.length,
|
|
377
|
+
shard_count: shardDescriptors.length,
|
|
378
|
+
signal_count: selectedSignals.length,
|
|
379
|
+
signal_bytes: signalBytes,
|
|
380
|
+
signal_selection: selection,
|
|
381
|
+
families: familiesAgg,
|
|
382
|
+
superseded_generation: priorCurrent?.generation ?? null,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
/** Read the current generation pointer, or null when no tiers are published. */
|
|
386
|
+
export function readCurrentPointer(tiersDir) {
|
|
387
|
+
const p = path.join(tiersDir, "current.json");
|
|
388
|
+
if (!fs.existsSync(p))
|
|
389
|
+
return null;
|
|
390
|
+
try {
|
|
391
|
+
const data = JSON.parse(fs.readFileSync(p, "utf-8"));
|
|
392
|
+
if (data && typeof data === "object" && !Array.isArray(data)) {
|
|
393
|
+
const obj = data;
|
|
394
|
+
if (typeof obj.generation === "string" && typeof obj.schema_version === "string") {
|
|
395
|
+
return {
|
|
396
|
+
schema_version: obj.schema_version,
|
|
397
|
+
generation: obj.generation,
|
|
398
|
+
published_at: typeof obj.published_at === "string" ? obj.published_at : "",
|
|
399
|
+
adapter_version: typeof obj.adapter_version === "string" ? obj.adapter_version : "",
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
return null;
|
|
408
|
+
}
|
|
409
|
+
/** Resolve the current generation directory and manifest, or null. */
|
|
410
|
+
export function readCurrentGeneration(tiersDir) {
|
|
411
|
+
const pointer = readCurrentPointer(tiersDir);
|
|
412
|
+
if (!pointer)
|
|
413
|
+
return null;
|
|
414
|
+
const dir = path.join(tiersDir, "generations", pointer.generation);
|
|
415
|
+
const manifestPath = path.join(dir, "manifest.json");
|
|
416
|
+
if (!fs.existsSync(manifestPath))
|
|
417
|
+
return null;
|
|
418
|
+
try {
|
|
419
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
|
|
420
|
+
if (!manifest || typeof manifest !== "object" || !Array.isArray(manifest.shards))
|
|
421
|
+
return null;
|
|
422
|
+
return { pointer, dir, manifest };
|
|
423
|
+
}
|
|
424
|
+
catch {
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
/** Read the bounded signal tier records for the current generation. */
|
|
429
|
+
export function readSignalTier(tiersDir) {
|
|
430
|
+
const gen = readCurrentGeneration(tiersDir);
|
|
431
|
+
if (!gen)
|
|
432
|
+
return null;
|
|
433
|
+
const signalPath = path.join(gen.dir, gen.manifest.signal.path);
|
|
434
|
+
if (!fs.existsSync(signalPath))
|
|
435
|
+
return null;
|
|
436
|
+
try {
|
|
437
|
+
const data = JSON.parse(fs.readFileSync(signalPath, "utf-8"));
|
|
438
|
+
if (!data || !Array.isArray(data.records))
|
|
439
|
+
return null;
|
|
440
|
+
return { records: data.records, bytes: gen.manifest.signal.bytes, manifest: gen.manifest };
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/** Resolve a bounded signal's identity (evidence_anchor) to its full record. */
|
|
447
|
+
export function resolveEvidenceAnchor(anchor, tiersDir) {
|
|
448
|
+
return getFullRecord(anchor, tiersDir);
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Retrieve exactly one full-evidence record by `source_id`. Locates the owning
|
|
452
|
+
* shard via the manifest index, loads only that shard, and returns the record.
|
|
453
|
+
*/
|
|
454
|
+
export function getFullRecord(sourceId, tiersDir) {
|
|
455
|
+
if (!sourceId)
|
|
456
|
+
return null;
|
|
457
|
+
const gen = readCurrentGeneration(tiersDir);
|
|
458
|
+
if (!gen)
|
|
459
|
+
return null;
|
|
460
|
+
for (const shard of gen.manifest.shards) {
|
|
461
|
+
if (!shard.source_ids.includes(sourceId))
|
|
462
|
+
continue;
|
|
463
|
+
const shardPath = path.join(gen.dir, shard.path);
|
|
464
|
+
if (!fs.existsSync(shardPath))
|
|
465
|
+
return null;
|
|
466
|
+
try {
|
|
467
|
+
const data = JSON.parse(fs.readFileSync(shardPath, "utf-8"));
|
|
468
|
+
if (!data || !Array.isArray(data.records))
|
|
469
|
+
return null;
|
|
470
|
+
return data.records.find((r) => r && typeof r === "object" && asStringField(r, "source_id") === sourceId) ?? null;
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
return null;
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Direct-retrieval compatibility state, mirroring the contract's deterministic
|
|
480
|
+
* states. Callers report the matching recovery guidance from the authority.
|
|
481
|
+
*/
|
|
482
|
+
export function evidenceTierCompatibility(tiersDir, corpusPath) {
|
|
483
|
+
const pointer = readCurrentPointer(tiersDir);
|
|
484
|
+
if (!pointer) {
|
|
485
|
+
if (corpusPath && fs.existsSync(corpusPath)) {
|
|
486
|
+
return { state: "legacy", reason: "legacy_monolithic_state" };
|
|
487
|
+
}
|
|
488
|
+
return { state: "missing", reason: "no_evidence" };
|
|
489
|
+
}
|
|
490
|
+
const gen = readCurrentGeneration(tiersDir);
|
|
491
|
+
if (!gen) {
|
|
492
|
+
return { state: "corrupt", reason: "unreadable_or_schema_divergent" };
|
|
493
|
+
}
|
|
494
|
+
// Oversized: any shard or the signal tier exceeds its declared cap.
|
|
495
|
+
for (const shard of gen.manifest.shards) {
|
|
496
|
+
if (shard.bytes > gen.manifest.bounds.shard_byte_cap) {
|
|
497
|
+
return { state: "oversized", reason: "oversized", artifact: shard.path };
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
if (gen.manifest.signal.bytes > gen.manifest.bounds.signal_byte_cap) {
|
|
501
|
+
return { state: "oversized", reason: "oversized", artifact: gen.manifest.signal.path };
|
|
502
|
+
}
|
|
503
|
+
// Incomplete: a supported source family is skipped/sparse/missing.
|
|
504
|
+
const skipped = gen.manifest.coverage.skipped;
|
|
505
|
+
if (skipped.length > 0) {
|
|
506
|
+
return {
|
|
507
|
+
state: "incomplete",
|
|
508
|
+
reason: "coverage_gap_or_sparse",
|
|
509
|
+
detail: skipped.map((s) => `${s.runtime ?? "unknown"}: ${s.reason}`),
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
return { state: "current", generation: pointer.generation };
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Yield every full-evidence record across the current generation, reading one
|
|
516
|
+
* bounded shard at a time. No consumer observes a partially published generation
|
|
517
|
+
* (the atomic pointer swap already guarantees this), and no single read exceeds
|
|
518
|
+
* `shard_byte_cap` for a current/incomplete tier. Used by full-record consumers
|
|
519
|
+
* (usage analytics, startup analysis) so they analyze real scale without
|
|
520
|
+
* materializing the monolithic corpus envelope. Returns `null` when no current
|
|
521
|
+
* generation exists; callers then report the matching compatibility state.
|
|
522
|
+
*/
|
|
523
|
+
export function* iterTierRecords(tiersDir) {
|
|
524
|
+
const gen = readCurrentGeneration(tiersDir);
|
|
525
|
+
if (!gen)
|
|
526
|
+
return;
|
|
527
|
+
for (const shard of gen.manifest.shards) {
|
|
528
|
+
const shardPath = path.join(gen.dir, shard.path);
|
|
529
|
+
if (!fs.existsSync(shardPath))
|
|
530
|
+
continue;
|
|
531
|
+
let data;
|
|
532
|
+
try {
|
|
533
|
+
data = JSON.parse(fs.readFileSync(shardPath, "utf-8"));
|
|
534
|
+
}
|
|
535
|
+
catch {
|
|
536
|
+
// A single corrupt shard cannot crash the whole tier read; the
|
|
537
|
+
// compatibility surface flags it separately. Skip the unreadable shard.
|
|
538
|
+
continue;
|
|
539
|
+
}
|
|
540
|
+
if (!data || !Array.isArray(data.records))
|
|
541
|
+
continue;
|
|
542
|
+
for (const record of data.records) {
|
|
543
|
+
if (record && typeof record === "object" && !Array.isArray(record)) {
|
|
544
|
+
yield record;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Read the retained corpus metadata block for bounded metadata consumers
|
|
551
|
+
* (report status, prime coverage). Returns `null` when no current generation
|
|
552
|
+
* exists or the manifest predates the metadata block; callers fall back to the
|
|
553
|
+
* compatibility state and the signal tier.
|
|
554
|
+
*/
|
|
555
|
+
export function readTierCorpusMetadata(tiersDir) {
|
|
556
|
+
const gen = readCurrentGeneration(tiersDir);
|
|
557
|
+
if (!gen)
|
|
558
|
+
return null;
|
|
559
|
+
return gen.manifest.corpus_metadata ?? null;
|
|
560
|
+
}
|
|
561
|
+
//# sourceMappingURL=evidenceTiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidenceTiers.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/evidenceTiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,7 @@ export function opencodeParitySnapshot(dbPath) {
|
|
|
48
48
|
}
|
|
49
49
|
const audit = runCoverageAudit({
|
|
50
50
|
output: dbPath,
|
|
51
|
+
tierOutput: null,
|
|
51
52
|
projectRoot: [path.dirname(dbPath)],
|
|
52
53
|
codexSessionsDir: path.join(path.dirname(dbPath), "unused-codex"),
|
|
53
54
|
claudeProjectsDir: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractCorpusParity.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/extractCorpusParity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extractCorpusParity.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/extractCorpusParity.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,8 @@ export { ExtractionNotImplementedError, dedupeRecords, buildMetadata, buildCorpu
|
|
|
8
8
|
export { formatTruncationWarnings, resolveSqliteCaps, } from "./sqliteCaps.js";
|
|
9
9
|
export { COVERAGE_EXIT_FLAGGED, corpusEnvelopeCoverage, formatCoverageSummaryText, resolveRuntimeStoreConfigs, runCoverageAudit, } from "./coverageAudit.js";
|
|
10
10
|
export { parseExtractArgs, extractCorpusMain } from "./cli.js";
|
|
11
|
+
export { TIER_SCHEMA_VERSION, CURRENT_POINTER_VERSION, defaultTiersDir, familyOf, deriveSignalRecords, shardFullEvidence, selectSignalsForBound, generationId, publishEvidenceTiers, readCurrentPointer, readCurrentGeneration, readSignalTier, getFullRecord, resolveEvidenceAnchor, evidenceTierCompatibility, iterTierRecords, readTierCorpusMetadata, } from "./evidenceTiers.js";
|
|
12
|
+
export { tiersDirForCorpusPath, resolveTiersDir, isAnalyzable, recoveryForState, assessTiers, readBoundedMetadata, iterBoundedRecords, legacyCorpusReadable, } from "./tierReader.js";
|
|
11
13
|
export { EXTRACT_CORPUS_PARITY_SCHEMA, buildExtractCorpusParityManifest, opencodeParitySnapshot, } from "./extractCorpusParity.js";
|
|
14
|
+
export { readProfileSignals, resolveProfileEvidence, profileSignalsStatus, assessProfileSufficiency, } from "../profileSignals.js";
|
|
12
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvG,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,GAKjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,sBAAsB,GAIvB,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analytics/extractCorpus/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvG,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,GAKjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,sBAAsB,GAWvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,sBAAsB,GAIvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,GAKzB,MAAM,sBAAsB,CAAC"}
|