agent-nuvira 3.3.17 → 3.3.19
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/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +10 -2
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/agents/prompt-assembly.js +2 -2
- package/dist/agents/prompt-assembly.js.map +1 -1
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +25 -2
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +5 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +68 -10
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/state.d.ts +22 -0
- package/dist/cli/state.d.ts.map +1 -0
- package/dist/cli/state.js +156 -0
- package/dist/cli/state.js.map +1 -0
- package/dist/inference/model-validator.d.ts.map +1 -1
- package/dist/inference/model-validator.js +64 -2
- package/dist/inference/model-validator.js.map +1 -1
- package/dist/learning/failure-bookkeeping.d.ts +5 -2
- package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
- package/dist/learning/failure-bookkeeping.js +30 -2
- package/dist/learning/failure-bookkeeping.js.map +1 -1
- package/dist/learning/provider-fallback.d.ts +6 -3
- package/dist/learning/provider-fallback.d.ts.map +1 -1
- package/dist/learning/provider-fallback.js +22 -0
- package/dist/learning/provider-fallback.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +17 -1
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +8 -0
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/turn-report.d.ts +37 -1
- package/dist/learning/turn-report.d.ts.map +1 -1
- package/dist/learning/turn-report.js +61 -3
- package/dist/learning/turn-report.js.map +1 -1
- package/dist/learning/working-state.d.ts +79 -3
- package/dist/learning/working-state.d.ts.map +1 -1
- package/dist/learning/working-state.js +199 -6
- package/dist/learning/working-state.js.map +1 -1
- package/dist/tools/child-agent-runtime.js +3 -2
- package/dist/tools/child-agent-runtime.js.map +1 -1
- package/dist/tools/edit-verification.d.ts +60 -5
- package/dist/tools/edit-verification.d.ts.map +1 -1
- package/dist/tools/edit-verification.js +333 -48
- package/dist/tools/edit-verification.js.map +1 -1
- package/dist/tools/loop-project-context.js +2 -2
- package/dist/tools/loop-project-context.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +34 -0
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +83 -6
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +47 -3
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +21 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/{index-goRHl73H.js → index-Bz7QqQ_N.js} +86 -86
- package/src/web-dashboard/public/assets/index-Bz7QqQ_N.js.map +1 -0
- package/src/web-dashboard/public/assets/{index-tK8Y2qHB.css → index-cBWT2qxn.css} +1 -1
- package/src/web-dashboard/public/index.html +2 -2
- package/src/web-dashboard/public/assets/index-goRHl73H.js.map +0 -1
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* a model — because "the strongest check" is a property of THIS project, and a
|
|
26
26
|
* nudge that names it is actionable where a generic preference order is not.
|
|
27
27
|
*/
|
|
28
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
29
|
-
import { join } from 'node:path';
|
|
28
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
29
|
+
import { dirname, join, relative, resolve } from 'node:path';
|
|
30
30
|
/**
|
|
31
31
|
* Tools that CHANGE the workspace. A turn that ran one of these has produced
|
|
32
32
|
* a claim about reality that only a verification run can support.
|
|
@@ -89,7 +89,7 @@ export function classifyEditActivity(toolsRun) {
|
|
|
89
89
|
* session report "verified" after running `node -c script.js`. See
|
|
90
90
|
* `PARSE_ONLY_RE` below for why that cannot count.
|
|
91
91
|
*/
|
|
92
|
-
const GENERIC_VERIFY_RE = /\b(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?(?:test|build|lint|typecheck|check|ci)\b|\b(?:tsc|vitest|jest|pytest|mocha|cargo\s+test|go\s+test|gradle|mvn|make)\b/i;
|
|
92
|
+
const GENERIC_VERIFY_RE = /\b(?:npm|pnpm|yarn|bun)\s+(?:--prefix[=\s]+\S+\s+)?(?:run\s+)?(?:test|build|lint|typecheck|check|ci)\b|\b(?:tsc|vitest|jest|pytest|mocha|cargo\s+test|go\s+test|gradle|mvn|make)\b/i;
|
|
93
93
|
/**
|
|
94
94
|
* Commands that only PARSE the files they are handed. They prove the source is
|
|
95
95
|
* syntactically valid and nothing else.
|
|
@@ -130,6 +130,216 @@ export function isParseOnlyCheck(evidence) {
|
|
|
130
130
|
const text = evidenceText(evidence);
|
|
131
131
|
return PARSE_ONLY_RE.test(text) && !GENERIC_VERIFY_RE.test(text);
|
|
132
132
|
}
|
|
133
|
+
// ─── WHICH CHECK COVERS WHICH FILE (the nested-package rule) ────────────────
|
|
134
|
+
/**
|
|
135
|
+
* Runner configs that mean "this directory has its OWN suite", script or not.
|
|
136
|
+
* Mirrors the markers `detectAvailableChecks` already accepts one level down.
|
|
137
|
+
*/
|
|
138
|
+
const OWN_TEST_CONFIG_FILES = [
|
|
139
|
+
'vitest.config.ts', 'vitest.config.mts', 'vitest.config.js', 'vitest.config.mjs',
|
|
140
|
+
'jest.config.js', 'jest.config.ts', 'jest.config.cjs', 'jest.config.mjs',
|
|
141
|
+
'pytest.ini', 'Cargo.toml', 'go.mod',
|
|
142
|
+
];
|
|
143
|
+
/** Does this path exist as a file? (Never throws.) */
|
|
144
|
+
function fileExists(path) {
|
|
145
|
+
try {
|
|
146
|
+
return existsSync(path);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Does this directory declare its OWN test command — i.e. a suite that an
|
|
154
|
+
* ANCESTOR's generic check will not run? Deliberately test-shaped only: a bare
|
|
155
|
+
* `package.json` (a deps-only stub) has no suite, so a change under it is still
|
|
156
|
+
* judged the old, permissive way.
|
|
157
|
+
*/
|
|
158
|
+
function packageHasOwnTests(dir) {
|
|
159
|
+
if (!fileExists(join(dir, 'package.json'))) {
|
|
160
|
+
// No manifest, but a runner config is still a suite of its own.
|
|
161
|
+
return OWN_TEST_CONFIG_FILES.some((f) => fileExists(join(dir, f)));
|
|
162
|
+
}
|
|
163
|
+
const pkg = readJsonSafe(join(dir, 'package.json'));
|
|
164
|
+
const scripts = (pkg?.scripts ?? {});
|
|
165
|
+
for (const k of ['test', 'tests']) {
|
|
166
|
+
if (typeof scripts[k] === 'string' && String(scripts[k]).trim().length > 0)
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
return OWN_TEST_CONFIG_FILES.some((f) => fileExists(join(dir, f)));
|
|
170
|
+
}
|
|
171
|
+
/** Memoized package-script bodies, so the gate does not re-read per changed file. */
|
|
172
|
+
const packageScriptCache = new Map();
|
|
173
|
+
/** The `scripts` object of a package, or {} (memoized, never throws). */
|
|
174
|
+
function packageScripts(dir) {
|
|
175
|
+
const cached = packageScriptCache.get(dir);
|
|
176
|
+
if (cached)
|
|
177
|
+
return cached;
|
|
178
|
+
const pkg = fileExists(join(dir, 'package.json')) ? readJsonSafe(join(dir, 'package.json')) : null;
|
|
179
|
+
const scripts = (pkg?.scripts ?? {}) || {};
|
|
180
|
+
packageScriptCache.set(dir, scripts);
|
|
181
|
+
return scripts;
|
|
182
|
+
}
|
|
183
|
+
/** npm/pnpm/yarn subcommands that are NOT package scripts. */
|
|
184
|
+
const RESERVED_SUBCOMMANDS = new Set([
|
|
185
|
+
'install', 'i', 'ci', 'ls', 'list', 'view', 'info', 'show', 'publish', 'pack', 'exec', 'x',
|
|
186
|
+
'audit', 'outdated', 'why', 'init', 'create', 'config', 'link', 'unlink', 'update', 'up',
|
|
187
|
+
'dedupe', 'prune', 'fund', 'doctor', 'cache', 'login', 'logout', 'owner', 'root', 'prefix',
|
|
188
|
+
'add', 'remove', 'rm', 'dlx', 'import', 'rebuild', 'help',
|
|
189
|
+
]);
|
|
190
|
+
/** The script a `npm run <name>` / `npm test` style command invokes, or null. */
|
|
191
|
+
function scriptNameOf(text) {
|
|
192
|
+
const m = /^\s*(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?([A-Za-z0-9:_-]+)\b/.exec(text.trim());
|
|
193
|
+
if (!m)
|
|
194
|
+
return null;
|
|
195
|
+
const name = m[1];
|
|
196
|
+
return RESERVED_SUBCOMMANDS.has(name) ? null : name;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Where do this command's checks actually RUN?
|
|
200
|
+
*
|
|
201
|
+
* `cd src/web-dashboard && npm test` → that package. `npm --prefix x run test`
|
|
202
|
+
* → x. `npm run test:dashboard` → wherever the root script it names goes, which
|
|
203
|
+
* is how a project declares the canonical check for a nested package. Anything
|
|
204
|
+
* else runs at `cwd`.
|
|
205
|
+
*
|
|
206
|
+
* One level of script indirection only (depth < 2), so a self-referential or
|
|
207
|
+
* pathological chain cannot loop.
|
|
208
|
+
*/
|
|
209
|
+
export function checkRootFor(command, cwd, depth = 0) {
|
|
210
|
+
const text = String(command ?? '');
|
|
211
|
+
const cd = /\bcd\s+(?:--\s+)?(?:"([^"]+)"|'([^']+)'|([^\s&;|)]+))/.exec(text);
|
|
212
|
+
const cdTarget = cd?.[1] ?? cd?.[2] ?? cd?.[3];
|
|
213
|
+
if (cdTarget)
|
|
214
|
+
return resolve(cwd, cdTarget);
|
|
215
|
+
const prefix = /--prefix[=\s]+(?:"([^"]+)"|'([^']+)'|([^\s&;|)]+))/.exec(text);
|
|
216
|
+
const prefixTarget = prefix?.[1] ?? prefix?.[2] ?? prefix?.[3];
|
|
217
|
+
if (prefixTarget)
|
|
218
|
+
return resolve(cwd, prefixTarget);
|
|
219
|
+
if (depth < 2) {
|
|
220
|
+
const name = scriptNameOf(text);
|
|
221
|
+
if (name) {
|
|
222
|
+
const body = packageScripts(cwd)[name];
|
|
223
|
+
if (typeof body === 'string' && body.trim())
|
|
224
|
+
return checkRootFor(body, cwd, depth + 1);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return resolve(cwd);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Is `fileAbs` covered by a generic check rooted at `rootAbs`?
|
|
231
|
+
*
|
|
232
|
+
* The walk is the whole rule: start at the file's own directory and climb to
|
|
233
|
+
* the check root; if any package on the way declares its OWN test command, the
|
|
234
|
+
* ancestor's check does not run it, so the answer is NO.
|
|
235
|
+
*/
|
|
236
|
+
function pathCoveredByRoot(fileAbs, rootAbs) {
|
|
237
|
+
const under = relative(rootAbs, fileAbs);
|
|
238
|
+
if (under === '' || under.startsWith('..'))
|
|
239
|
+
return false;
|
|
240
|
+
let cur = dirname(fileAbs);
|
|
241
|
+
for (;;) {
|
|
242
|
+
const rel = relative(rootAbs, cur);
|
|
243
|
+
if (rel === '' || rel.startsWith('..'))
|
|
244
|
+
return true; // reached (or passed) the check root
|
|
245
|
+
if (packageHasOwnTests(cur))
|
|
246
|
+
return false;
|
|
247
|
+
const parent = dirname(cur);
|
|
248
|
+
if (parent === cur)
|
|
249
|
+
return true;
|
|
250
|
+
cur = parent;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Does this command's check cover this changed file?
|
|
255
|
+
*
|
|
256
|
+
* `foreign` = the file is outside the project root entirely. We do not judge
|
|
257
|
+
* those (there is nothing to compare against), so the previous permissive
|
|
258
|
+
* answer stands rather than inventing a stricter rule with no evidence behind
|
|
259
|
+
* it — the same stance the empty-`changedFiles` fallback takes.
|
|
260
|
+
*/
|
|
261
|
+
function commandCoversFile(command, fileAbs, cwdAbs, foreign) {
|
|
262
|
+
if (foreign)
|
|
263
|
+
return true;
|
|
264
|
+
const root = checkRootFor(command, cwdAbs);
|
|
265
|
+
return pathCoveredByRoot(fileAbs, root);
|
|
266
|
+
}
|
|
267
|
+
/** The `command` argument of an executed run (falls back to the result text). */
|
|
268
|
+
function commandOf(e) {
|
|
269
|
+
const a = e.args;
|
|
270
|
+
const c = a?.command ?? a?.cmd;
|
|
271
|
+
return typeof c === 'string' ? c : (e.result ?? '');
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* WHICH of the changed files did this turn's verification actually EXERCISE?
|
|
275
|
+
*
|
|
276
|
+
* This is the per-file truth the gate's boolean and the working-state ledger's
|
|
277
|
+
* debt both derive from, so the two can never disagree about what was covered.
|
|
278
|
+
*
|
|
279
|
+
* A file counts when some successful observation either:
|
|
280
|
+
* - NAMES it (`grep … style.css`, `node --check script.js` — the parse filter
|
|
281
|
+
* below removes the syntax-only shapes), OR
|
|
282
|
+
* - is the `test` pipeline, judged by the same coverage rule as a generic
|
|
283
|
+
* command at the project root (see {@link checkRootFor}), OR
|
|
284
|
+
* - is a real `browser` run — a live observation of the running app, which is
|
|
285
|
+
* precisely the check a component change needs, so it is never narrowed, OR
|
|
286
|
+
* - is a generic project check whose ROOT covers the file (`npm test` at the
|
|
287
|
+
* root covers root files; the nested package's own script covers its own).
|
|
288
|
+
*/
|
|
289
|
+
/**
|
|
290
|
+
* NOTE ON `needsVerification` vs the per-file split. The gate asks ONE question —
|
|
291
|
+
* "did anything observe this turn's result?" — and spends one bounded nudge; the
|
|
292
|
+
* split says WHICH files are still owed a check. They are deliberately not the
|
|
293
|
+
* same predicate: a turn that covered three of four files is not a turn with no
|
|
294
|
+
* verification at all, and firing the nudge on it would ask again for work the
|
|
295
|
+
* model already did. The outstanding file is carried by `unverifiedPaths`
|
|
296
|
+
* instead (the ledger's debt and the next turn's block), which is where it can
|
|
297
|
+
* be acted on; `needsVerification` stays what it always was.
|
|
298
|
+
*/
|
|
299
|
+
export function verifiedPathsFor(evidence, changedFiles, cwd = process.cwd()) {
|
|
300
|
+
const observed = evidence.filter((e) => !isParseOnlyCheck(e));
|
|
301
|
+
if (observed.length === 0)
|
|
302
|
+
return [];
|
|
303
|
+
const cwdAbs = resolve(cwd);
|
|
304
|
+
const covered = [];
|
|
305
|
+
for (const f of changedFiles) {
|
|
306
|
+
if (!f)
|
|
307
|
+
continue;
|
|
308
|
+
const fileAbs = resolve(cwdAbs, f);
|
|
309
|
+
const foreign = relative(cwdAbs, fileAbs).startsWith('..');
|
|
310
|
+
const base = f.split(/[\\/]/).pop() ?? '';
|
|
311
|
+
let hit = false;
|
|
312
|
+
for (const e of observed) {
|
|
313
|
+
if (e.tool === 'browser') {
|
|
314
|
+
hit = true;
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
if (e.tool === 'test') {
|
|
318
|
+
if (commandCoversFile('npm test', fileAbs, cwdAbs, foreign)) {
|
|
319
|
+
hit = true;
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
324
|
+
const text = evidenceText(e);
|
|
325
|
+
if (base && text.includes(base)) {
|
|
326
|
+
hit = true;
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
if (f && text.includes(f)) {
|
|
330
|
+
hit = true;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
if (GENERIC_VERIFY_RE.test(text) && commandCoversFile(commandOf(e), fileAbs, cwdAbs, foreign)) {
|
|
334
|
+
hit = true;
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (hit)
|
|
339
|
+
covered.push(f);
|
|
340
|
+
}
|
|
341
|
+
return covered;
|
|
342
|
+
}
|
|
133
343
|
/**
|
|
134
344
|
* Did this turn's verification actually EXERCISE the artifact it changed?
|
|
135
345
|
*
|
|
@@ -137,55 +347,50 @@ export function isParseOnlyCheck(evidence) {
|
|
|
137
347
|
* marked a turn "verified" (the same class of false positive the gate exists to
|
|
138
348
|
* prevent). A run counts only when it:
|
|
139
349
|
* - is the `test` pipeline or a real `browser` run (inherently project-wide), OR
|
|
140
|
-
* - runs a generic project check (`npm test`, typecheck, build, linter)
|
|
141
|
-
*
|
|
142
|
-
*
|
|
350
|
+
* - runs a generic project check (`npm test`, typecheck, build, linter) that
|
|
351
|
+
* COVERS the changed file (see {@link checkRootFor} for the nested-package
|
|
352
|
+
* rule this gained), OR
|
|
353
|
+
* - names one of the files the turn changed (e.g. `grep … style.css`).
|
|
143
354
|
*
|
|
144
355
|
* When the turn's changed paths are UNKNOWN, it falls back to "any successful
|
|
145
356
|
* verification counts" — the pre-strictening behaviour — so an unidentifiable
|
|
146
357
|
* mutation is never falsely flagged.
|
|
358
|
+
*
|
|
359
|
+
* Delegates to {@link verifiedPathsFor} rather than re-implementing the rule, so
|
|
360
|
+
* the gate and the per-file debt cannot drift apart.
|
|
147
361
|
*/
|
|
148
|
-
export function verificationExercisedArtifact(evidence, changedFiles) {
|
|
362
|
+
export function verificationExercisedArtifact(evidence, changedFiles, cwd = process.cwd()) {
|
|
149
363
|
// A parse check observes syntax, never behaviour — drop it before judging,
|
|
150
364
|
// so it can satisfy neither the relevance match nor the file-name match.
|
|
151
|
-
|
|
152
|
-
if (observed.length === 0)
|
|
365
|
+
if (evidence.filter((e) => !isParseOnlyCheck(e)).length === 0)
|
|
153
366
|
return false;
|
|
154
367
|
// Unknown changed paths → cannot judge relevance; don't cry wolf.
|
|
155
368
|
if (changedFiles.length === 0)
|
|
156
369
|
return true;
|
|
157
|
-
|
|
158
|
-
for (const f of changedFiles) {
|
|
159
|
-
if (!f)
|
|
160
|
-
continue;
|
|
161
|
-
names.add(f);
|
|
162
|
-
const base = f.split(/[\\/]/).pop();
|
|
163
|
-
if (base)
|
|
164
|
-
names.add(base);
|
|
165
|
-
}
|
|
166
|
-
for (const e of observed) {
|
|
167
|
-
if (e.tool === 'test' || e.tool === 'browser')
|
|
168
|
-
return true;
|
|
169
|
-
const text = evidenceText(e);
|
|
170
|
-
if (GENERIC_VERIFY_RE.test(text))
|
|
171
|
-
return true;
|
|
172
|
-
for (const n of names) {
|
|
173
|
-
if (n && text.includes(n))
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return false;
|
|
370
|
+
return verifiedPathsFor(evidence, changedFiles, cwd).length > 0;
|
|
178
371
|
}
|
|
179
372
|
/**
|
|
180
373
|
* Full edit assessment for a turn: what mutated, what verified, and whether a
|
|
181
374
|
* verification still OWED. This is the single call the loop uses so the gate,
|
|
182
375
|
* the nudge and the honesty flag can never disagree.
|
|
376
|
+
*
|
|
377
|
+
* `verifiedPaths` / `unverifiedPaths` are the PER-FILE split of the same
|
|
378
|
+
* judgement; the caller records them in the working-state ledger so the debt it
|
|
379
|
+
* owes is a set of paths rather than a bare count.
|
|
183
380
|
*/
|
|
184
|
-
export function assessEditActivity(toolsRun, evidence = [], changedFiles = []) {
|
|
381
|
+
export function assessEditActivity(toolsRun, evidence = [], changedFiles = [], cwd = process.cwd()) {
|
|
185
382
|
const base = classifyEditActivity(toolsRun);
|
|
186
|
-
if (base.mutations.length === 0)
|
|
187
|
-
return { ...base, needsVerification: false };
|
|
188
|
-
|
|
383
|
+
if (base.mutations.length === 0) {
|
|
384
|
+
return { ...base, needsVerification: false, verifiedPaths: [], unverifiedPaths: [] };
|
|
385
|
+
}
|
|
386
|
+
const verifiedPaths = verifiedPathsFor(evidence, changedFiles, cwd);
|
|
387
|
+
const covered = new Set(verifiedPaths);
|
|
388
|
+
return {
|
|
389
|
+
...base,
|
|
390
|
+
needsVerification: !verificationExercisedArtifact(evidence, changedFiles, cwd),
|
|
391
|
+
verifiedPaths,
|
|
392
|
+
unverifiedPaths: changedFiles.filter((f) => f && !covered.has(f)),
|
|
393
|
+
};
|
|
189
394
|
}
|
|
190
395
|
/** A sentence that is future/interrogative/negated is NOT a completed claim. */
|
|
191
396
|
const NON_CLAIM_CONTEXT_RE = /\b(?:not|n't|never|unable|cannot|can't|couldn't|didn't|won't|will|would|should|could|can|may|might|going to|about to|try(?:ing)? to|attempt|if you|let me|shall i|should i|do you want|i'?ll|next|then)\b/i;
|
|
@@ -255,14 +460,42 @@ function readJsonSafe(path) {
|
|
|
255
460
|
return null;
|
|
256
461
|
}
|
|
257
462
|
}
|
|
258
|
-
/**
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
463
|
+
/** Directories never walked looking for nested packages. */
|
|
464
|
+
const NESTED_SKIP_DIRS = new Set([
|
|
465
|
+
'node_modules', 'dist', 'build', 'out', 'coverage', 'vendor', 'target', '.git', '.next',
|
|
466
|
+
]);
|
|
467
|
+
/** How deep a nested package may sit (`src/web-dashboard`, `examples/sdk` = 2). */
|
|
468
|
+
const NESTED_MAX_DEPTH = 2;
|
|
469
|
+
/**
|
|
470
|
+
* Relative paths of packages nested under `cwd` (bounded depth, no vendor dirs).
|
|
471
|
+
* Dot-directories are skipped, so a checked-in toolchain cache (`.vscode-test`)
|
|
472
|
+
* is never mistaken for a package in the project.
|
|
473
|
+
*/
|
|
474
|
+
function findNestedPackages(cwd) {
|
|
475
|
+
const found = [];
|
|
476
|
+
const walk = (rel, depth) => {
|
|
477
|
+
if (depth > NESTED_MAX_DEPTH)
|
|
478
|
+
return;
|
|
479
|
+
let entries = [];
|
|
480
|
+
try {
|
|
481
|
+
entries = readdirSync(join(cwd, rel), { withFileTypes: true });
|
|
482
|
+
}
|
|
483
|
+
catch {
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
for (const entry of entries) {
|
|
487
|
+
if (!entry.isDirectory())
|
|
488
|
+
continue;
|
|
489
|
+
if (entry.name.startsWith('.') || NESTED_SKIP_DIRS.has(entry.name))
|
|
490
|
+
continue;
|
|
491
|
+
const child = rel ? `${rel}/${entry.name}` : entry.name;
|
|
492
|
+
if (fileExists(join(cwd, child, 'package.json')))
|
|
493
|
+
found.push(child);
|
|
494
|
+
walk(child, depth + 1);
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
walk('', 1);
|
|
498
|
+
return found;
|
|
266
499
|
}
|
|
267
500
|
/**
|
|
268
501
|
* Which verification checks does THIS project actually have?
|
|
@@ -280,10 +513,11 @@ function fileExists(path) {
|
|
|
280
513
|
*/
|
|
281
514
|
export function detectAvailableChecks(cwd) {
|
|
282
515
|
const checks = [];
|
|
283
|
-
const add = (command, label, strength) => {
|
|
516
|
+
const add = (command, label, strength, root) => {
|
|
284
517
|
if (!checks.some((c) => c.command === command))
|
|
285
|
-
checks.push({ command, label, strength });
|
|
518
|
+
checks.push({ command, label, strength, ...(root ? { root } : {}) });
|
|
286
519
|
};
|
|
520
|
+
const cwdAbs = resolve(cwd);
|
|
287
521
|
const pkg = fileExists(join(cwd, 'package.json')) ? readJsonSafe(join(cwd, 'package.json')) : null;
|
|
288
522
|
const scripts = (pkg?.scripts ?? {}) || {};
|
|
289
523
|
const hasScript = (k) => typeof scripts[k] === 'string' && String(scripts[k]).trim().length > 0;
|
|
@@ -327,6 +561,33 @@ export function detectAvailableChecks(cwd) {
|
|
|
327
561
|
// A typechecker with no script is still the strongest static observation.
|
|
328
562
|
if (fileExists(join(cwd, 'tsconfig.json')))
|
|
329
563
|
add('npx tsc --noEmit', 'a tsconfig.json', 70);
|
|
564
|
+
// ── NESTED PACKAGES (a monorepo's own suites) ───────────────────────────
|
|
565
|
+
// A root `npm test` does NOT run a nested package's suite, so a project that
|
|
566
|
+
// has one has already declared the command that does — a root script that
|
|
567
|
+
// `cd`s into it (`"test:dashboard": "cd src/web-dashboard && npm test"`).
|
|
568
|
+
// Name THAT: it is the canonical way this project checks that package, so the
|
|
569
|
+
// model has nothing to invent.
|
|
570
|
+
const coveredRoots = new Set();
|
|
571
|
+
for (const [name, body] of Object.entries(scripts)) {
|
|
572
|
+
if (typeof body !== 'string' || !body.trim())
|
|
573
|
+
continue;
|
|
574
|
+
if (!GENERIC_VERIFY_RE.test(body))
|
|
575
|
+
continue;
|
|
576
|
+
const root = checkRootFor(body, cwdAbs);
|
|
577
|
+
if (root === cwdAbs || !fileExists(join(root, 'package.json')))
|
|
578
|
+
continue;
|
|
579
|
+
coveredRoots.add(root);
|
|
580
|
+
const where = relative(cwdAbs, root) || '.';
|
|
581
|
+
add(`npm run ${name}`, `the "${name}" script in package.json (covers ${where})`, 100, root);
|
|
582
|
+
}
|
|
583
|
+
// A nested package with its own suite and NO root script for it: the suite
|
|
584
|
+
// exists, so name the direct command instead of leaving it invisible.
|
|
585
|
+
for (const rel of findNestedPackages(cwdAbs)) {
|
|
586
|
+
const abs = join(cwdAbs, rel);
|
|
587
|
+
if (coveredRoots.has(abs) || !packageHasOwnTests(abs))
|
|
588
|
+
continue;
|
|
589
|
+
add(`cd ${rel} && npm test`, `the project in ${rel} (its own test command)`, 100, abs);
|
|
590
|
+
}
|
|
330
591
|
return checks.sort((a, b) => b.strength - a.strength);
|
|
331
592
|
}
|
|
332
593
|
/**
|
|
@@ -377,9 +638,25 @@ export function isProseArtifactPath(path) {
|
|
|
377
638
|
return PROSE_ARTIFACT_EXTENSIONS.has(clean.slice(dot));
|
|
378
639
|
}
|
|
379
640
|
export function verificationNudgeFor(cwd, changedFiles = []) {
|
|
380
|
-
const
|
|
641
|
+
const cwdAbs = resolve(cwd);
|
|
381
642
|
const allChanged = changedFiles.filter(Boolean);
|
|
382
643
|
const changed = allChanged.slice(0, 5);
|
|
644
|
+
// ORDER BY RELEVANCE, not strength alone. In a monorepo the strongest check
|
|
645
|
+
// for the project (`npm test`) is not the check that covers the file that
|
|
646
|
+
// changed — the nested package's own suite is. Preferring a check the files are
|
|
647
|
+
// not under would send the model to run a suite that cannot see its change.
|
|
648
|
+
const coversChanged = (c) => {
|
|
649
|
+
if (allChanged.length === 0)
|
|
650
|
+
return false;
|
|
651
|
+
const root = c.root ?? cwdAbs;
|
|
652
|
+
return allChanged.some((f) => {
|
|
653
|
+
const abs = resolve(cwdAbs, f);
|
|
654
|
+
if (relative(cwdAbs, abs).startsWith('..'))
|
|
655
|
+
return false;
|
|
656
|
+
return pathCoveredByRoot(abs, root) && relative(root, abs) !== '';
|
|
657
|
+
});
|
|
658
|
+
};
|
|
659
|
+
const checks = [...detectAvailableChecks(cwd)].sort((a, b) => Number(coversChanged(b)) - Number(coversChanged(a)) || b.strength - a.strength);
|
|
383
660
|
// A WRITING deliverable is verified by its CONTENT, not by a test/build/run —
|
|
384
661
|
// none of those apply to prose, and asking for them sent a weak model into
|
|
385
662
|
// empty retries. Say what the check actually is, so it converges in one step.
|
|
@@ -405,12 +682,20 @@ export function verificationNudgeFor(cwd, changedFiles = []) {
|
|
|
405
682
|
'report what it showed. If even that is impossible, say so explicitly and do NOT claim ' +
|
|
406
683
|
'the change works.');
|
|
407
684
|
}
|
|
408
|
-
const
|
|
409
|
-
|
|
685
|
+
const best = checks.slice(0, 3);
|
|
686
|
+
const list = best
|
|
410
687
|
.map((c, i) => ` ${i + 1}. \`${c.command}\` — ${c.label}`)
|
|
411
688
|
.join('\n');
|
|
689
|
+
// Say WHEN the first check is the one that covers this change, so a monorepo
|
|
690
|
+
// turn does not answer a nested package's change with the root suite (a suite
|
|
691
|
+
// that cannot see it). Only asserted when it is true of the files shown.
|
|
692
|
+
const top = best[0];
|
|
693
|
+
const coversLine = top && coversChanged(top)
|
|
694
|
+
? `\n\`${top.command}\` is the check that COVERS the file(s) you changed; the others ` +
|
|
695
|
+
'run a different part of the repository and cannot observe this change.\n'
|
|
696
|
+
: '';
|
|
412
697
|
return (`${head}\n` +
|
|
413
|
-
`This project's strongest available checks, best first
|
|
698
|
+
`This project's strongest available checks, best first:${coversLine}\n${list}\n` +
|
|
414
699
|
'Run the strongest one and report what it showed. If it does not apply to this change, say ' +
|
|
415
700
|
'which you tried and why. If none of them runs, say so explicitly and do NOT claim the ' +
|
|
416
701
|
'change works.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-verification.js","sourceRoot":"","sources":["../../src/tools/edit-verification.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edit-verification.js","sourceRoot":"","sources":["../../src/tools/edit-verification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAExF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,cAAc;IACd,MAAM;IACN,SAAS;IACT,SAAS;CACV,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA2B;IAK9D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1C,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO;QACL,SAAS;QACT,aAAa;QACb,oEAAoE;QACpE,iBAAiB,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;KACtE,CAAC;AACJ,CAAC;AAUD;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GACrB,qLAAqL,CAAC;AAExL;;;;;;;;;;;;;;GAcG;AACH,MAAM,aAAa,GACjB,sKAAsK,CAAC;AAEzK,+EAA+E;AAC/E,SAAS,YAAY,CAAC,CAAmB;IACvC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,IAAI,CAAC;YACH,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA0B;IACzD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,qBAAqB,GAAG;IAC5B,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB;IAChF,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB;IACxE,YAAY,EAAE,YAAY,EAAE,QAAQ;CAC5B,CAAC;AAEX,sDAAsD;AACtD,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC3C,gEAAgE;QAChE,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAA4B,CAAC;IAChE,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAClC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1F,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,qFAAqF;AACrF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAmC,CAAC;AAEtE,yEAAyE;AACzE,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,MAAM,OAAO,GAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAA6B,IAAI,EAAE,CAAC;IACxE,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8DAA8D;AAC9D,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;IAC1F,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;IACxF,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;IAC1F,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;CAC1D,CAAC,CAAC;AAEH,iFAAiF;AACjF,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,CAAC,GAAG,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,KAAK,GAAG,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,uDAAuD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,QAAQ;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,oDAAoD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,YAAY;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,OAAe,EAAE,OAAe;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,SAAS,CAAC;QACR,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,qCAAqC;QAC1F,IAAI,kBAAkB,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc,EAAE,OAAgB;IAC3F,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAAC,CAAmB;IACpC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAwD,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,QAAqC,EACrC,YAA+B,EAC/B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACzB,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM;YACR,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtB,IAAI,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC5D,GAAG,GAAG,IAAI,CAAC;oBACX,MAAM;gBACR,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1B,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM;YACR,CAAC;YACD,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC9F,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAAqC,EACrC,YAA+B,EAC/B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,2EAA2E;IAC3E,yEAAyE;IACzE,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,kEAAkE;IAClE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA2B,EAC3B,WAAwC,EAAE,EAC1C,eAAkC,EAAE,EACpC,MAAc,OAAO,CAAC,GAAG,EAAE;IAQ3B,MAAM,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACvF,CAAC;IACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACvC,OAAO;QACL,GAAG,IAAI;QACP,iBAAiB,EAAE,CAAC,6BAA6B,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC;QAC9E,aAAa;QACb,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,oBAAoB,GACxB,4MAA4M,CAAC;AAE/M;;;;;;;GAOG;AACH,MAAM,cAAc,GAAsB;IACxC,yEAAyE;IACzE,uTAAuT;IACvT,wCAAwC;IACxC,6JAA6J;IAC7J,kFAAkF;IAClF,wTAAwT;IACxT,gEAAgE;IAChE,8OAA8O;IAC9O,mEAAmE;IACnE,yOAAyO;IACzO,yCAAyC;IACzC,mIAAmI;IACnI,uCAAuC;IACvC,+GAA+G;CAChH,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAe,EACf,YAA+B,EAC/B,gBAAmC;IAEnC,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,kEAAkE;IAClE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,2DAA2D;IAC3D,IAAI,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACpE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,SAAS;QACjD,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAuBD,kFAAkF;AAClF,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAA4B,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;CACxF,CAAC,CAAC;AACH,mFAAmF;AACnF,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;QAChD,IAAI,KAAK,GAAG,gBAAgB;YAAE,OAAO;QACrC,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACxD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,QAAgB,EAAE,IAAa,EAAQ,EAAE;QACpF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnG,MAAM,OAAO,GAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAA6B,IAAI,EAAE,CAAC;IACxE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjH,wEAAwE;IACxE,IAAI,SAAS,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,UAAU,EAAE,mCAAmC,EAAE,GAAG,CAAC,CAAC;IACjF,IAAI,SAAS,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,UAAU,EAAE,oCAAoC,EAAE,GAAG,CAAC,CAAC;IACnF,IAAI,SAAS,CAAC,WAAW,CAAC;QAAE,GAAG,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,EAAE,CAAC,CAAC;IACnG,IAAI,SAAS,CAAC,YAAY,CAAC;QAAE,GAAG,CAAC,oBAAoB,EAAE,yCAAyC,EAAE,EAAE,CAAC,CAAC;IACtG,IAAI,SAAS,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,eAAe,EAAE,oCAAoC,EAAE,EAAE,CAAC,CAAC;IACvF,IAAI,SAAS,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,cAAc,EAAE,mCAAmC,EAAE,EAAE,CAAC,CAAC;IACpF,IAAI,SAAS,CAAC,OAAO,CAAC;QAAE,GAAG,CAAC,eAAe,EAAE,oCAAoC,EAAE,EAAE,CAAC,CAAC;IAEvF,6EAA6E;IAC7E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAAE,CAAC;YACjF,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvC,MAAM;YACR,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAC9F,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjC,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAAE,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAClF,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAAE,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,0EAA0E;IAC1E,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAAE,GAAG,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAE3F,2EAA2E;IAC3E,6EAA6E;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,8EAA8E;IAC9E,+BAA+B;IAC/B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QACvD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAC5C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAAE,SAAS;QACzE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;QAC5C,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,IAAI,oCAAoC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9F,CAAC;IACD,2EAA2E;IAC3E,sEAAsE;IACtE,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAAE,SAAS;QAChE,GAAG,CAAC,MAAM,GAAG,cAAc,EAAE,kBAAkB,GAAG,yBAAyB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,+EAA+E;IAC/E,gFAAgF;IAChF,+EAA+E;IAC/E,gFAAgF;IAChF,qFAAqF;IACrF,6EAA6E;IAC7E,gFAAgF;IAChF,8EAA8E;IAC9E,sDAAsD,CAAC;AAEzD;;;;;;;;;;GAUG;AACH;;;;;;;GAOG;AACH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;CAC7E,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,eAAkC,EAAE;IACpF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvC,4EAA4E;IAC5E,0EAA0E;IAC1E,gFAAgF;IAChF,4EAA4E;IAC5E,MAAM,aAAa,GAAG,CAAC,CAAiB,EAAW,EAAE;QACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;QAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/B,IAAI,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzD,OAAO,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CACzF,CAAC;IAEF,8EAA8E;IAC9E,2EAA2E;IAC3E,8EAA8E;IAC9E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,CACL,8CAA8C;YAC9C,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,oFAAoF;YACpF,0FAA0F;YAC1F,+FAA+F;YAC/F,6FAA6F;YAC7F,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GACR,6BAA6B;QAC7B,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,wFAAwF;QACxF,4FAA4F;QAC5F,uEAAuE,CAAC;IAE1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CACL,GAAG,IAAI,IAAI;YACX,wFAAwF;YACxF,0FAA0F;YAC1F,0FAA0F;YAC1F,wFAAwF;YACxF,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;SAC1D,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,UAAU,GACd,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC;QACvB,CAAC,CAAC,OAAO,GAAG,CAAC,OAAO,kEAAkE;YACpF,0EAA0E;QAC5E,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,CACL,GAAG,IAAI,IAAI;QACX,yDAAyD,UAAU,KAAK,IAAI,IAAI;QAChF,4FAA4F;QAC5F,wFAAwF;QACxF,eAAe,CAChB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,yFAAyF;IACzF,wFAAwF;IACxF,2FAA2F;IAC3F,gCAAgC,CAAC;AAEnC,MAAM,CAAC,MAAM,qBAAqB,GAChC,gFAAgF;IAChF,kFAAkF;IAClF,oFAAoF;IACpF,sFAAsF;IACtF,+EAA+E;IAC/E,kFAAkF;IAClF,uDAAuD,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAsB;IACrD,MAAM,WAAW,GAAG,aAAa;QAC/B,CAAC,CAAC,uEAAuE,aAAa,EAAE;QACxF,CAAC,CAAC,sFAAsF,CAAC;IAC3F,OAAO,CACL,gGAAgG;QAChG,oGAAoG;QACpG,uBAAuB,GAAG,WAAW,GAAG,4DAA4D;QACpG,qFAAqF,CACtF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,8EAA8E;IAC9E,gFAAgF;IAChF,gBAAgB,CAAC"}
|
|
@@ -31,7 +31,7 @@ import { buildGitStateDigest } from './git-digest.js';
|
|
|
31
31
|
import { assessProject } from '../agents/prompt-assembly.js';
|
|
32
32
|
import { handoffBlockFor } from '../agents/step-handoff.js';
|
|
33
33
|
import { describeProjectInterpreter } from '../utils/project-env.js';
|
|
34
|
-
import {
|
|
34
|
+
import { workingStateBlock as readWorkingStateBlock } from '../learning/working-state.js';
|
|
35
35
|
import { formatCrossSessionMemory } from '../learning/context-assembly.js';
|
|
36
36
|
/** Hard budget: the tree block is truncated to this many lines (~1.5K tokens). */
|
|
37
37
|
const MAX_TREE_LINES = 60;
|
|
@@ -166,7 +166,7 @@ export async function buildLoopProjectContext(dir, opts = {}) {
|
|
|
166
166
|
// closes the drift where the orchestrator remembered across turns and the
|
|
167
167
|
// loop did not. Self-labelled and self-bounded; omits itself when empty.
|
|
168
168
|
try {
|
|
169
|
-
const workingState =
|
|
169
|
+
const workingState = readWorkingStateBlock(dir);
|
|
170
170
|
if (workingState)
|
|
171
171
|
lines.push(workingState);
|
|
172
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop-project-context.js","sourceRoot":"","sources":["../../src/tools/loop-project-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"loop-project-context.js","sourceRoot":"","sources":["../../src/tools/loop-project-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -487,6 +487,17 @@ export interface ToolLoopResult {
|
|
|
487
487
|
* about an outbound DELIVERY), this is about a CODE change.
|
|
488
488
|
*/
|
|
489
489
|
unverifiedEdit?: boolean;
|
|
490
|
+
/**
|
|
491
|
+
* PER-FILE verification truth, from `assessEditActivity`. `verifiedPaths` are
|
|
492
|
+
* the changed paths a check actually exercised this turn; `unverifiedPaths`
|
|
493
|
+
* are the ones nothing did. The caller records both in the working-state
|
|
494
|
+
* ledger, so the debt it owes is a set of paths — a whole-turn boolean cannot
|
|
495
|
+
* say which change still needs a look, and (in a monorepo) cannot tell a root
|
|
496
|
+
* check from the nested package's own suite that never ran.
|
|
497
|
+
*/
|
|
498
|
+
verifiedPaths?: string[];
|
|
499
|
+
/** @see ToolLoopResult.verifiedPaths */
|
|
500
|
+
unverifiedPaths?: string[];
|
|
490
501
|
/**
|
|
491
502
|
* HONESTY FLAG (G13b) — the request asked for an AUTHORED deliverable to be
|
|
492
503
|
* PRODUCED and this turn wrote NOTHING to disk, so the answer is prose about
|
|
@@ -1005,6 +1016,29 @@ export declare function planContextBlock(plan: {
|
|
|
1005
1016
|
}>;
|
|
1006
1017
|
revision: number;
|
|
1007
1018
|
}): string;
|
|
1019
|
+
/**
|
|
1020
|
+
* The bounded PLAN CLOSE-OUT nudge — the loop asking the model to settle the
|
|
1021
|
+
* plan it opened this turn before the turn ends.
|
|
1022
|
+
*
|
|
1023
|
+
* WHY. The plan is the checklist the user watches, and a plan left with steps
|
|
1024
|
+
* `running`/`pending` at the end of a turn that engaged it is exactly the failure
|
|
1025
|
+
* the tracker exists to prevent: measured 2026-10-09
|
|
1026
|
+
* (trace-1791542886258-pg42ox), a plan sat frozen at "1/7 steps" for two days and
|
|
1027
|
+
* was only advanced after the user asked why. One nudge, once, naming the open
|
|
1028
|
+
* steps and requiring a REAL status (done, or blocked with a one-line note)
|
|
1029
|
+
* closes it. It fires only when this turn DECLARED or UPDATED the plan — never on
|
|
1030
|
+
* a turn that merely carried one, so an unrelated turn is not asked to advance
|
|
1031
|
+
* somebody else's checklist (the report labels a carried plan instead).
|
|
1032
|
+
*/
|
|
1033
|
+
export declare function planCloseoutNudge(plan: {
|
|
1034
|
+
goal: string;
|
|
1035
|
+
steps: Array<{
|
|
1036
|
+
id: string;
|
|
1037
|
+
description: string;
|
|
1038
|
+
status: string;
|
|
1039
|
+
note?: string;
|
|
1040
|
+
}>;
|
|
1041
|
+
}): string;
|
|
1008
1042
|
/**
|
|
1009
1043
|
* The refusal a tool call gets when its ARGUMENTS never arrived.
|
|
1010
1044
|
*
|