@wildorder/nightshift 0.6.0 → 0.7.1
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/LICENSE +21 -21
- package/dist/author.d.ts +13 -0
- package/dist/author.d.ts.map +1 -1
- package/dist/author.js +46 -13
- package/dist/author.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/decide.d.ts +13 -5
- package/dist/decide.d.ts.map +1 -1
- package/dist/decide.js +50 -35
- package/dist/decide.js.map +1 -1
- package/dist/decider-review.d.ts +68 -1
- package/dist/decider-review.d.ts.map +1 -1
- package/dist/decider-review.js +211 -3
- package/dist/decider-review.js.map +1 -1
- package/dist/decision-ledger.d.ts +79 -1
- package/dist/decision-ledger.d.ts.map +1 -1
- package/dist/decision-ledger.js +118 -11
- package/dist/decision-ledger.js.map +1 -1
- package/dist/decision-view.d.ts +41 -0
- package/dist/decision-view.d.ts.map +1 -0
- package/dist/decision-view.js +264 -0
- package/dist/decision-view.js.map +1 -0
- package/dist/findings.d.ts +3 -0
- package/dist/findings.d.ts.map +1 -1
- package/dist/findings.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +2 -2
- package/dist/programs-dir.d.ts +27 -0
- package/dist/programs-dir.d.ts.map +1 -0
- package/dist/programs-dir.js +52 -0
- package/dist/programs-dir.js.map +1 -0
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +21 -32
- package/dist/publish.js.map +1 -1
- package/dist/review-pass.d.ts +33 -1
- package/dist/review-pass.d.ts.map +1 -1
- package/dist/review-pass.js +94 -42
- package/dist/review-pass.js.map +1 -1
- package/dist/run-program.d.ts +25 -3
- package/dist/run-program.d.ts.map +1 -1
- package/dist/run-program.js +382 -42
- package/dist/run-program.js.map +1 -1
- package/package.json +3 -3
- package/templates/AGENTS.md +29 -29
- package/templates/CLAUDE.md +7 -7
- package/templates/vision.md +46 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-ledger.js","sourceRoot":"","sources":["../src/decision-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"decision-ledger.js","sourceRoot":"","sources":["../src/decision-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { DecisionLedgerView, DecisionRecord, FindingRecord } from "./decision-ledger.js";
|
|
2
|
+
/**
|
|
3
|
+
* The canonical human view of a decision or a finding — the single module
|
|
4
|
+
* every surface renders through (SC-04). Two densities, both kinds of
|
|
5
|
+
* record, and the one implementation of the `nightshift decide` flip
|
|
6
|
+
* command. Nothing here calls a forge or writes a file: it returns markdown
|
|
7
|
+
* `string[]`, matching `renderPassReport`'s convention — the caller splices
|
|
8
|
+
* the lines under its own heading.
|
|
9
|
+
*
|
|
10
|
+
* This module renders and nothing else: it never calls a forge, spawns an
|
|
11
|
+
* agent, or writes a file. Both surfaces render through it — the run report
|
|
12
|
+
* (`run-program.ts`) and the pull request's escalation comments
|
|
13
|
+
* (`publish.ts`) — and the hand-rolled renderers they each used to carry are
|
|
14
|
+
* gone, which is what keeps one decision from reading three ways (SC-04).
|
|
15
|
+
*/
|
|
16
|
+
export type Density = "compact" | "full";
|
|
17
|
+
export interface RenderOptions {
|
|
18
|
+
density: Density;
|
|
19
|
+
programId: string;
|
|
20
|
+
}
|
|
21
|
+
export type RenderableRecord = DecisionRecord | FindingRecord;
|
|
22
|
+
/**
|
|
23
|
+
* Everything the decider escalated — an agent's decision and a routed
|
|
24
|
+
* finding alike. The one definition of "needs your attention", shared by the
|
|
25
|
+
* run report's section, the pull request's escalation comments, and the
|
|
26
|
+
* count the CLI prints when a run ends, so the three can never disagree
|
|
27
|
+
* about how many things are waiting for the human.
|
|
28
|
+
*/
|
|
29
|
+
export declare function escalatedRecords(ledger: DecisionLedgerView): RenderableRecord[];
|
|
30
|
+
/** A `DecisionRecord` written by a pre-decision-legibility conversion of a finding. */
|
|
31
|
+
export declare function isLegacyFinding(record: DecisionRecord): boolean;
|
|
32
|
+
/** The single implementation of the `nightshift decide` flip command. */
|
|
33
|
+
export declare function flipCommand(programId: string, decisionId: string, chooseLabel: string, reason: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Dispatches: a `FindingRecord` renders as a finding; a legacy synthetic
|
|
36
|
+
* finding (a `DecisionRecord` whose title is `"Reviewer finding: …"`) renders
|
|
37
|
+
* as the history it is; any other `DecisionRecord` renders as an agent
|
|
38
|
+
* decision.
|
|
39
|
+
*/
|
|
40
|
+
export declare function renderRecord(record: RenderableRecord, opts: RenderOptions): string[];
|
|
41
|
+
//# sourceMappingURL=decision-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-view.d.ts","sourceRoot":"","sources":["../src/decision-view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAG9B;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,EAAE,CAK/E;AAID,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE/D;AAWD,yEAAyE;AACzE,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AAsQD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,aAAa,GAClB,MAAM,EAAE,CAgBV"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Everything the decider escalated — an agent's decision and a routed
|
|
3
|
+
* finding alike. The one definition of "needs your attention", shared by the
|
|
4
|
+
* run report's section, the pull request's escalation comments, and the
|
|
5
|
+
* count the CLI prints when a run ends, so the three can never disagree
|
|
6
|
+
* about how many things are waiting for the human.
|
|
7
|
+
*/
|
|
8
|
+
export function escalatedRecords(ledger) {
|
|
9
|
+
return [
|
|
10
|
+
...ledger.decisions.filter((record) => record.status === "escalated"),
|
|
11
|
+
...ledger.findings.filter((record) => record.status === "escalated"),
|
|
12
|
+
];
|
|
13
|
+
}
|
|
14
|
+
const LEGACY_FINDING_TITLE_PREFIX = "Reviewer finding: ";
|
|
15
|
+
/** A `DecisionRecord` written by a pre-decision-legibility conversion of a finding. */
|
|
16
|
+
export function isLegacyFinding(record) {
|
|
17
|
+
return record.decision.title.startsWith(LEGACY_FINDING_TITLE_PREFIX);
|
|
18
|
+
}
|
|
19
|
+
function isFindingRecord(record) {
|
|
20
|
+
return "origin" in record && record.origin === "finding";
|
|
21
|
+
}
|
|
22
|
+
/** POSIX single-quote escaping: wraps in `'...'`, replacing each `'` with `'\''`. */
|
|
23
|
+
function shellQuoteSingle(value) {
|
|
24
|
+
return `'${value.replaceAll("'", String.raw `'\''`)}'`;
|
|
25
|
+
}
|
|
26
|
+
/** The single implementation of the `nightshift decide` flip command. */
|
|
27
|
+
export function flipCommand(programId, decisionId, chooseLabel, reason) {
|
|
28
|
+
return (`npx --yes @wildorder/nightshift decide ${programId} ${decisionId} ` +
|
|
29
|
+
`--choose ${shellQuoteSingle(chooseLabel)} --reason ${shellQuoteSingle(reason)}`);
|
|
30
|
+
}
|
|
31
|
+
function flipCommandBlock(command) {
|
|
32
|
+
return ["```", command, "```", ""];
|
|
33
|
+
}
|
|
34
|
+
function renderEvidenceLine(evidence) {
|
|
35
|
+
if (evidence.kind === "location") {
|
|
36
|
+
const range = evidence.endLine === undefined
|
|
37
|
+
? `${evidence.startLine}`
|
|
38
|
+
: `${evidence.startLine}-${evidence.endLine}`;
|
|
39
|
+
const location = `${evidence.file}:${range}`;
|
|
40
|
+
return evidence.excerpt === undefined
|
|
41
|
+
? location
|
|
42
|
+
: `${location} — ${evidence.excerpt}`;
|
|
43
|
+
}
|
|
44
|
+
if (evidence.kind === "concern") {
|
|
45
|
+
return evidence.detail === undefined
|
|
46
|
+
? evidence.named
|
|
47
|
+
: `${evidence.named} — ${evidence.detail}`;
|
|
48
|
+
}
|
|
49
|
+
return `${evidence.metric}: ${evidence.value}`;
|
|
50
|
+
}
|
|
51
|
+
function renderEvidenceList(evidence) {
|
|
52
|
+
if (evidence.length === 0)
|
|
53
|
+
return [];
|
|
54
|
+
return evidence.map((item) => `- ${renderEvidenceLine(item)}`);
|
|
55
|
+
}
|
|
56
|
+
const DECISION_STATUS_LABEL = {
|
|
57
|
+
unratified: "unratified",
|
|
58
|
+
ratified: "ratified",
|
|
59
|
+
escalated: "escalated",
|
|
60
|
+
"human-decided": "human-decided",
|
|
61
|
+
};
|
|
62
|
+
const FINDING_STATUS_LABEL = {
|
|
63
|
+
open: "open",
|
|
64
|
+
"fix-now": "fix-now",
|
|
65
|
+
accepted: "accepted",
|
|
66
|
+
escalated: "escalated",
|
|
67
|
+
"human-decided": "human-decided",
|
|
68
|
+
};
|
|
69
|
+
/** The triage vocabulary a finding can be flipped between (WS-05 wires decide's acceptance of it). */
|
|
70
|
+
const TRIAGE_LABELS = ["fix-now", "accept", "escalate"];
|
|
71
|
+
function currentFindingDisposition(record) {
|
|
72
|
+
if (record.humanChosen !== undefined)
|
|
73
|
+
return record.humanChosen;
|
|
74
|
+
switch (record.status) {
|
|
75
|
+
case "fix-now":
|
|
76
|
+
return "fix-now";
|
|
77
|
+
case "accepted":
|
|
78
|
+
return "accept";
|
|
79
|
+
case "escalated":
|
|
80
|
+
return "escalate";
|
|
81
|
+
default:
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// Decisions
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
function renderDecisionCompact(record) {
|
|
89
|
+
const oneWay = record.oneWay ? " · one-way door" : "";
|
|
90
|
+
const chosen = record.humanChosen ?? record.decision.chosen;
|
|
91
|
+
const lines = [
|
|
92
|
+
`- **${record.decision.title}** (\`${record.id}\`) — ${DECISION_STATUS_LABEL[record.status]}`,
|
|
93
|
+
` - Workstream: ${record.workstream}${oneWay}`,
|
|
94
|
+
` - Chosen: ${chosen}`,
|
|
95
|
+
];
|
|
96
|
+
if (record.baseCommit !== undefined) {
|
|
97
|
+
lines.push(` - Anchor: \`${record.baseCommit}\``);
|
|
98
|
+
}
|
|
99
|
+
return lines;
|
|
100
|
+
}
|
|
101
|
+
function renderDecisionFull(record, opts) {
|
|
102
|
+
const oneWay = record.oneWay ? " · one-way door" : "";
|
|
103
|
+
const chosen = record.humanChosen ?? record.decision.chosen;
|
|
104
|
+
const alternatives = record.decision.options.filter((option) => option.label !== chosen);
|
|
105
|
+
const lines = [
|
|
106
|
+
`### ${record.decision.title} (\`${record.id}\`)`,
|
|
107
|
+
"",
|
|
108
|
+
`- **Status:** ${DECISION_STATUS_LABEL[record.status]}`,
|
|
109
|
+
`- **Workstream:** ${record.workstream}${oneWay}`,
|
|
110
|
+
`- **Context:** ${record.decision.context}`,
|
|
111
|
+
`- **Chosen:** ${chosen} — ${record.decision.rationale}`,
|
|
112
|
+
];
|
|
113
|
+
if (alternatives.length > 0) {
|
|
114
|
+
lines.push(`- **Alternatives:** ${alternatives
|
|
115
|
+
.map((option) => option.description === undefined
|
|
116
|
+
? option.label
|
|
117
|
+
: `${option.label} — ${option.description}`)
|
|
118
|
+
.join("; ")}`);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
lines.push("- **Alternatives:** (none listed)");
|
|
122
|
+
}
|
|
123
|
+
lines.push(`- **Decider says:** ${record.reviewRationale ?? "(no rationale recorded)"}`);
|
|
124
|
+
if (record.baseCommit !== undefined) {
|
|
125
|
+
lines.push(`- **Anchor commit:** \`${record.baseCommit}\``);
|
|
126
|
+
}
|
|
127
|
+
lines.push("");
|
|
128
|
+
if (alternatives.length > 0) {
|
|
129
|
+
lines.push("To flip this decision:", "");
|
|
130
|
+
for (const option of alternatives) {
|
|
131
|
+
const reason = `Overriding nightshift's choice for "${record.decision.title}" after review`;
|
|
132
|
+
lines.push(...flipCommandBlock(flipCommand(opts.programId, record.id, option.label, reason)));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return lines;
|
|
136
|
+
}
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Findings
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
function renderFindingCompact(record) {
|
|
141
|
+
const disposition = currentFindingDisposition(record) ?? "not yet triaged";
|
|
142
|
+
const lines = [
|
|
143
|
+
`- **${record.subject}** (\`${record.id}\`) — ${FINDING_STATUS_LABEL[record.status]}`,
|
|
144
|
+
` - Workstream: ${record.workstream}`,
|
|
145
|
+
` - Severity: ${record.severity} · Triage: ${disposition}`,
|
|
146
|
+
];
|
|
147
|
+
if (record.baseCommit !== undefined) {
|
|
148
|
+
lines.push(` - Anchor: \`${record.baseCommit}\``);
|
|
149
|
+
}
|
|
150
|
+
return lines;
|
|
151
|
+
}
|
|
152
|
+
function renderFindingFull(record, opts) {
|
|
153
|
+
const lines = [
|
|
154
|
+
`### ${record.subject} (\`${record.id}\`)`,
|
|
155
|
+
"",
|
|
156
|
+
`- **Status:** ${FINDING_STATUS_LABEL[record.status]}`,
|
|
157
|
+
`- **Severity:** ${record.severity}`,
|
|
158
|
+
`- **Category:** ${record.category}`,
|
|
159
|
+
`- **Workstream:** ${record.workstream}`,
|
|
160
|
+
`- **Why this is here:** ${record.message}`,
|
|
161
|
+
];
|
|
162
|
+
const evidenceLines = renderEvidenceList(record.evidence);
|
|
163
|
+
if (evidenceLines.length > 0) {
|
|
164
|
+
lines.push("- **Evidence:**", ...evidenceLines.map((line) => ` ${line}`));
|
|
165
|
+
}
|
|
166
|
+
if (record.status === "escalated") {
|
|
167
|
+
if (record.escalationAlternatives !== undefined && record.escalationAlternatives.length > 0) {
|
|
168
|
+
lines.push(`- **Alternatives:** ${record.escalationAlternatives
|
|
169
|
+
.map((option) => option.description === undefined
|
|
170
|
+
? option.label
|
|
171
|
+
: `${option.label} — ${option.description}`)
|
|
172
|
+
.join("; ")}`);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
lines.push("- **Alternatives:** (no alternatives were composed)");
|
|
176
|
+
}
|
|
177
|
+
const question = record.escalationQuestion?.trim();
|
|
178
|
+
lines.push(`- **Question:** ${question === undefined || question === "" ? "(no question was composed)" : record.escalationQuestion}`);
|
|
179
|
+
}
|
|
180
|
+
lines.push(`- **Decider says:** ${record.triageRationale ?? "(not yet triaged)"}`);
|
|
181
|
+
if (record.baseCommit !== undefined) {
|
|
182
|
+
lines.push(`- **Anchor commit:** \`${record.baseCommit}\``);
|
|
183
|
+
}
|
|
184
|
+
lines.push("");
|
|
185
|
+
const current = currentFindingDisposition(record);
|
|
186
|
+
const flipLabels = TRIAGE_LABELS.filter((label) => label !== current);
|
|
187
|
+
if (flipLabels.length > 0) {
|
|
188
|
+
lines.push("To flip this triage:", "");
|
|
189
|
+
for (const label of flipLabels) {
|
|
190
|
+
const reason = `Overriding nightshift's triage of "${record.subject}" after review`;
|
|
191
|
+
lines.push(...flipCommandBlock(flipCommand(opts.programId, record.id, label, reason)));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return lines;
|
|
195
|
+
}
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
// Legacy synthetic findings (a `DecisionRecord` from before finding-recorded)
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
function legacySubject(record) {
|
|
200
|
+
return record.decision.title.slice(LEGACY_FINDING_TITLE_PREFIX.length);
|
|
201
|
+
}
|
|
202
|
+
/** Only blocker/major ever routed; reversible:false was the one-way (blocker) marker. */
|
|
203
|
+
function legacySeverity(record) {
|
|
204
|
+
return record.oneWay ? "blocker" : "major";
|
|
205
|
+
}
|
|
206
|
+
function renderLegacyFindingCompact(record) {
|
|
207
|
+
const lines = [
|
|
208
|
+
`- **${legacySubject(record)}** (\`${record.id}\`) — ${DECISION_STATUS_LABEL[record.status]}`,
|
|
209
|
+
` - Workstream: ${record.workstream}`,
|
|
210
|
+
` - Severity: ${legacySeverity(record)} (legacy record)`,
|
|
211
|
+
];
|
|
212
|
+
if (record.baseCommit !== undefined) {
|
|
213
|
+
lines.push(` - Anchor: \`${record.baseCommit}\``);
|
|
214
|
+
}
|
|
215
|
+
return lines;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Renders the honest history a legacy finding actually carries: never the
|
|
219
|
+
* synthetic proceed/fix-now options or the invented `chosen: "proceed"` as
|
|
220
|
+
* though an agent weighed them (SC-06) — no flip command either, since that
|
|
221
|
+
* would offer the same fabricated choice back. Evidence was only ever a
|
|
222
|
+
* lossy parenthetical in the old shape, so the context prose is shown as-is.
|
|
223
|
+
*/
|
|
224
|
+
function renderLegacyFindingFull(record) {
|
|
225
|
+
const lines = [
|
|
226
|
+
`### ${legacySubject(record)} (\`${record.id}\`)`,
|
|
227
|
+
"",
|
|
228
|
+
`- **Status:** ${DECISION_STATUS_LABEL[record.status]}`,
|
|
229
|
+
`- **Severity:** ${legacySeverity(record)} (derived; recorded before findings carried structured severity)`,
|
|
230
|
+
`- **Workstream:** ${record.workstream}`,
|
|
231
|
+
`- **Why this is here:** ${record.decision.context}`,
|
|
232
|
+
"- **Evidence:** (recorded before findings carried structured evidence; see the prose above)",
|
|
233
|
+
`- **Decider says:** ${record.reviewRationale ?? "(no rationale recorded)"}`,
|
|
234
|
+
];
|
|
235
|
+
if (record.baseCommit !== undefined) {
|
|
236
|
+
lines.push(`- **Anchor commit:** \`${record.baseCommit}\``);
|
|
237
|
+
}
|
|
238
|
+
return lines;
|
|
239
|
+
}
|
|
240
|
+
// ---------------------------------------------------------------------------
|
|
241
|
+
// Dispatch
|
|
242
|
+
// ---------------------------------------------------------------------------
|
|
243
|
+
/**
|
|
244
|
+
* Dispatches: a `FindingRecord` renders as a finding; a legacy synthetic
|
|
245
|
+
* finding (a `DecisionRecord` whose title is `"Reviewer finding: …"`) renders
|
|
246
|
+
* as the history it is; any other `DecisionRecord` renders as an agent
|
|
247
|
+
* decision.
|
|
248
|
+
*/
|
|
249
|
+
export function renderRecord(record, opts) {
|
|
250
|
+
if (isFindingRecord(record)) {
|
|
251
|
+
return opts.density === "compact"
|
|
252
|
+
? renderFindingCompact(record)
|
|
253
|
+
: renderFindingFull(record, opts);
|
|
254
|
+
}
|
|
255
|
+
if (isLegacyFinding(record)) {
|
|
256
|
+
return opts.density === "compact"
|
|
257
|
+
? renderLegacyFindingCompact(record)
|
|
258
|
+
: renderLegacyFindingFull(record);
|
|
259
|
+
}
|
|
260
|
+
return opts.density === "compact"
|
|
261
|
+
? renderDecisionCompact(record)
|
|
262
|
+
: renderDecisionFull(record, opts);
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=decision-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-view.js","sourceRoot":"","sources":["../src/decision-view.ts"],"names":[],"mappings":"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"}
|
package/dist/findings.d.ts
CHANGED
|
@@ -23,6 +23,9 @@ export type Evidence = {
|
|
|
23
23
|
startLine: number;
|
|
24
24
|
endLine?: number;
|
|
25
25
|
excerpt?: string;
|
|
26
|
+
/** Set by the runner's deterministic existence check when `file` does not
|
|
27
|
+
* resolve to a path inside the repository. Never set by the reviewer. */
|
|
28
|
+
unverifiable?: boolean;
|
|
26
29
|
} | {
|
|
27
30
|
kind: "concern";
|
|
28
31
|
named: string;
|
package/dist/findings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAElE,eAAO,MAAM,cAAc,EAAE,SAAS,QAAQ,EAKpC,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,8KAWrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAElE,eAAO,MAAM,cAAc,EAAE,SAAS,QAAQ,EAKpC,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,8KAWrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;8EAC0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,iBAAiB,CAE5D;AAID;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAIhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAOpD;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAS1B;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAKtE;AAED,oEAAoE;AACpE,eAAO,MAAM,EAAE,GACb,MAAM,MAAM,EACZ,WAAW,MAAM,EACjB,UAAU,MAAM,KACf,QAKD,CAAC;AAEH,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,KAAG,QAIvD,CAAC;AAEH,eAAO,MAAM,QAAQ,GACnB,QAAQ,WAAW,GAAG,WAAW,EACjC,OAAO,MAAM,KACZ,QAAoD,CAAC"}
|
package/dist/findings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,SAAS;IACT,OAAO;IACP,OAAO;IACP,UAAU;CACF,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,UAAU;IACV,cAAc;IACd,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,cAAc;IACd,qBAAqB;IACrB,YAAY;IACZ,iBAAiB;CACT,CAAC;
|
|
1
|
+
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export * from "./worktree-guard.js";
|
|
|
10
10
|
export * from "./detect-package-manager.js";
|
|
11
11
|
export * from "./decision.js";
|
|
12
12
|
export * from "./decision-ledger.js";
|
|
13
|
+
export type { FindingStatus } from "./decision-ledger.js";
|
|
14
|
+
export * from "./decision-view.js";
|
|
13
15
|
export * from "./manifest.js";
|
|
14
16
|
export * from "./author.js";
|
|
15
17
|
export * from "./run-program.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAIrC,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export * from "./worktree-guard.js";
|
|
|
10
10
|
export * from "./detect-package-manager.js";
|
|
11
11
|
export * from "./decision.js";
|
|
12
12
|
export * from "./decision-ledger.js";
|
|
13
|
+
export * from "./decision-view.js";
|
|
13
14
|
export * from "./manifest.js";
|
|
14
15
|
export * from "./author.js";
|
|
15
16
|
export * from "./run-program.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAKrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -12,10 +12,10 @@ declare const workstreamSchema: z.ZodObject<{
|
|
|
12
12
|
name: z.ZodString;
|
|
13
13
|
taskFile: z.ZodString;
|
|
14
14
|
status: z.ZodDefault<z.ZodEnum<{
|
|
15
|
+
failed: "failed";
|
|
15
16
|
not_started: "not_started";
|
|
16
17
|
in_progress: "in_progress";
|
|
17
18
|
complete: "complete";
|
|
18
|
-
failed: "failed";
|
|
19
19
|
parked: "parked";
|
|
20
20
|
}>>;
|
|
21
21
|
commit: z.ZodOptional<z.ZodString>;
|
|
@@ -51,10 +51,10 @@ declare const manifestSchema: z.ZodObject<{
|
|
|
51
51
|
name: z.ZodString;
|
|
52
52
|
taskFile: z.ZodString;
|
|
53
53
|
status: z.ZodDefault<z.ZodEnum<{
|
|
54
|
+
failed: "failed";
|
|
54
55
|
not_started: "not_started";
|
|
55
56
|
in_progress: "in_progress";
|
|
56
57
|
complete: "complete";
|
|
57
|
-
failed: "failed";
|
|
58
58
|
parked: "parked";
|
|
59
59
|
}>>;
|
|
60
60
|
commit: z.ZodOptional<z.ZodString>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `docs/programs` — the runner's own bookkeeping: the manifest, the append-only
|
|
3
|
+
* decision ledger, and the run report. Nothing an agent is asked to build ever
|
|
4
|
+
* lives here, which is why `diffSince` excludes it from every diff a reviewer
|
|
5
|
+
* or decider sees.
|
|
6
|
+
*
|
|
7
|
+
* It is also the one directory a `git reset --hard` must never take with it.
|
|
8
|
+
* Both rollback seams — `decide`'s replay and the runner's failed-fix reset —
|
|
9
|
+
* roll *code* back to an anchor commit while the journal explaining why must
|
|
10
|
+
* survive: the ledger is append-only by contract, and a rollback that
|
|
11
|
+
* truncated it would erase the very record the human is meant to rule on.
|
|
12
|
+
* Snapshot before the reset, restore after.
|
|
13
|
+
*/
|
|
14
|
+
export declare const PROGRAMS_DIR: string;
|
|
15
|
+
export interface FileSnapshot {
|
|
16
|
+
relPath: string;
|
|
17
|
+
content: Buffer;
|
|
18
|
+
}
|
|
19
|
+
/** Every file under `docs/programs`, in memory. A missing directory is an empty snapshot. */
|
|
20
|
+
export declare function snapshotProgramsDir(root: string): Promise<FileSnapshot[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Write a snapshot back. Purely additive: a file the reset removed is
|
|
23
|
+
* restored, a file written after the snapshot is left alone — nothing under
|
|
24
|
+
* `docs/programs` is ever deleted here.
|
|
25
|
+
*/
|
|
26
|
+
export declare function restoreProgramsDir(root: string, snapshot: FileSnapshot[]): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=programs-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"programs-dir.d.ts","sourceRoot":"","sources":["../src/programs-dir.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,YAAY,QAA2B,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6FAA6F;AAC7F,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmB/E;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join, relative } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* `docs/programs` — the runner's own bookkeeping: the manifest, the append-only
|
|
5
|
+
* decision ledger, and the run report. Nothing an agent is asked to build ever
|
|
6
|
+
* lives here, which is why `diffSince` excludes it from every diff a reviewer
|
|
7
|
+
* or decider sees.
|
|
8
|
+
*
|
|
9
|
+
* It is also the one directory a `git reset --hard` must never take with it.
|
|
10
|
+
* Both rollback seams — `decide`'s replay and the runner's failed-fix reset —
|
|
11
|
+
* roll *code* back to an anchor commit while the journal explaining why must
|
|
12
|
+
* survive: the ledger is append-only by contract, and a rollback that
|
|
13
|
+
* truncated it would erase the very record the human is meant to rule on.
|
|
14
|
+
* Snapshot before the reset, restore after.
|
|
15
|
+
*/
|
|
16
|
+
export const PROGRAMS_DIR = join("docs", "programs");
|
|
17
|
+
/** Every file under `docs/programs`, in memory. A missing directory is an empty snapshot. */
|
|
18
|
+
export async function snapshotProgramsDir(root) {
|
|
19
|
+
const dir = join(root, PROGRAMS_DIR);
|
|
20
|
+
let entries;
|
|
21
|
+
try {
|
|
22
|
+
entries = await readdir(dir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const snapshots = [];
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
const full = join(dir, entry);
|
|
30
|
+
const info = await stat(full);
|
|
31
|
+
if (!info.isFile())
|
|
32
|
+
continue;
|
|
33
|
+
snapshots.push({
|
|
34
|
+
relPath: relative(root, full),
|
|
35
|
+
content: await readFile(full),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return snapshots;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Write a snapshot back. Purely additive: a file the reset removed is
|
|
42
|
+
* restored, a file written after the snapshot is left alone — nothing under
|
|
43
|
+
* `docs/programs` is ever deleted here.
|
|
44
|
+
*/
|
|
45
|
+
export async function restoreProgramsDir(root, snapshot) {
|
|
46
|
+
for (const file of snapshot) {
|
|
47
|
+
const full = join(root, file.relPath);
|
|
48
|
+
await mkdir(dirname(full), { recursive: true });
|
|
49
|
+
await writeFile(full, file.content);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=programs-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"programs-dir.js","sourceRoot":"","sources":["../src/programs-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAOrD,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,SAAS;QAC7B,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;YAC7B,OAAO,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,QAAwB;IAExB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
|
package/dist/publish.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;GAYG;AAGH,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAa3C,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;;;OAKG;IACH,mBAAmB,CACjB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IACtC,wEAAwE;IACxE,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAC7E,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,kFAAkF;IAClF,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAChE,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,uDAAuD;IACvD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,8FAA8F;IAC9F,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,4EAA4E;IAC5E,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,iBAAiB,EAAE,UA8B/B,CAAC;AA0EF,eAAO,MAAM,eAAe,EAAE,QAiL7B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,sDAAsD;IACtD,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,iDAAiD;IACjD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mFAAmF;IACnF,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAID,UAAU,WAAW;IACnB,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,aAAa,EAAE,OAAO,CAAC;CACxB;AA8FD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAmCnE;AAgGD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkG7E"}
|