@nac3/forge-cli 1.21.4 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/bridge.d.ts +43 -1
- package/dist/chat/bridge.d.ts.map +1 -1
- package/dist/chat/bridge.js +176 -31
- package/dist/chat/bridge.js.map +1 -1
- package/dist/chat/bridge_inbox.d.ts +143 -0
- package/dist/chat/bridge_inbox.d.ts.map +1 -0
- package/dist/chat/bridge_inbox.js +219 -0
- package/dist/chat/bridge_inbox.js.map +1 -0
- package/dist/chat/claude.d.ts +10 -0
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +142 -15
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/recent_sessions_recap.d.ts.map +1 -1
- package/dist/chat/recent_sessions_recap.js +18 -6
- package/dist/chat/recent_sessions_recap.js.map +1 -1
- package/dist/chat/server.d.ts +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +346 -53
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/bridge_verbs.d.ts +10 -0
- package/dist/chat/tools/bridge_verbs.d.ts.map +1 -1
- package/dist/chat/tools/bridge_verbs.js +66 -3
- package/dist/chat/tools/bridge_verbs.js.map +1 -1
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
- package/dist/chat/tools/nac3_invoke.js +20 -3
- package/dist/chat/tools/nac3_invoke.js.map +1 -1
- package/dist/chat/tools/pending.d.ts.map +1 -1
- package/dist/chat/tools/pending.js +19 -2
- package/dist/chat/tools/pending.js.map +1 -1
- package/dist/chat/tools.d.ts +6 -0
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +4 -0
- package/dist/chat/tools.js.map +1 -1
- package/dist/chat/turn_control.d.ts +2 -0
- package/dist/chat/turn_control.d.ts.map +1 -1
- package/dist/chat/turn_control.js +30 -1
- package/dist/chat/turn_control.js.map +1 -1
- package/dist/commands/urazuke.d.ts.map +1 -1
- package/dist/commands/urazuke.js +68 -6
- package/dist/commands/urazuke.js.map +1 -1
- package/dist/core/cost_router.d.ts +7 -0
- package/dist/core/cost_router.d.ts.map +1 -1
- package/dist/core/cost_router.js +8 -5
- package/dist/core/cost_router.js.map +1 -1
- package/dist/core/limits_config.d.ts +37 -6
- package/dist/core/limits_config.d.ts.map +1 -1
- package/dist/core/limits_config.js +74 -8
- package/dist/core/limits_config.js.map +1 -1
- package/dist/nac3/danger_zone.d.ts +39 -0
- package/dist/nac3/danger_zone.d.ts.map +1 -0
- package/dist/nac3/danger_zone.js +31 -0
- package/dist/nac3/danger_zone.js.map +1 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +33 -0
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/pending/store.d.ts +7 -0
- package/dist/pending/store.d.ts.map +1 -1
- package/dist/pending/store.js +41 -0
- package/dist/pending/store.js.map +1 -1
- package/dist/urazuke/catalog.d.ts +1 -1
- package/dist/urazuke/catalog.d.ts.map +1 -1
- package/dist/urazuke/catalog.js.map +1 -1
- package/dist/urazuke/gate.d.ts.map +1 -1
- package/dist/urazuke/gate.js +98 -6
- package/dist/urazuke/gate.js.map +1 -1
- package/dist/urazuke/gates_data.d.ts +8 -1
- package/dist/urazuke/gates_data.d.ts.map +1 -1
- package/dist/urazuke/gates_data.js +25 -3
- package/dist/urazuke/gates_data.js.map +1 -1
- package/dist/urazuke/heuristics.d.ts +108 -0
- package/dist/urazuke/heuristics.d.ts.map +1 -0
- package/dist/urazuke/heuristics.js +248 -0
- package/dist/urazuke/heuristics.js.map +1 -0
- package/dist/urazuke/manual_cases.d.ts +31 -0
- package/dist/urazuke/manual_cases.d.ts.map +1 -0
- package/dist/urazuke/manual_cases.js +87 -0
- package/dist/urazuke/manual_cases.js.map +1 -0
- package/dist/urazuke/project_config.d.ts +25 -0
- package/dist/urazuke/project_config.d.ts.map +1 -0
- package/dist/urazuke/project_config.js +65 -0
- package/dist/urazuke/project_config.js.map +1 -0
- package/dist/urazuke/quality.d.ts +0 -8
- package/dist/urazuke/quality.d.ts.map +1 -1
- package/dist/urazuke/quality.js +4 -29
- package/dist/urazuke/quality.js.map +1 -1
- package/dist/urazuke/scoreboard.d.ts +85 -0
- package/dist/urazuke/scoreboard.d.ts.map +1 -0
- package/dist/urazuke/scoreboard.js +260 -0
- package/dist/urazuke/scoreboard.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/orchestrator.d.ts +7 -3
- package/dist/workflow/orchestrator.d.ts.map +1 -1
- package/dist/workflow/orchestrator.js +1 -1
- package/dist/workflow/orchestrator.js.map +1 -1
- package/package.json +1 -1
- package/src/i18n/catalogs/ar.json +558 -550
- package/src/i18n/catalogs/de.json +558 -550
- package/src/i18n/catalogs/en.json +558 -550
- package/src/i18n/catalogs/es.json +558 -550
- package/src/i18n/catalogs/fr.json +558 -550
- package/src/i18n/catalogs/hi.json +558 -550
- package/src/i18n/catalogs/it.json +558 -550
- package/src/i18n/catalogs/ja.json +558 -550
- package/src/i18n/catalogs/pt.json +558 -550
- package/src/i18n/catalogs/zh.json +558 -550
|
@@ -457,15 +457,33 @@ export function compiledAsPublishedFile() {
|
|
|
457
457
|
* refused frozen copy does NOT promote the portal and does not fail the
|
|
458
458
|
* read: it falls back to the compiled catalogue, which is the safe state
|
|
459
459
|
* (nothing can tighten without an install), and it says so. */
|
|
460
|
+
export async function readProjectConfig(projectRoot) {
|
|
461
|
+
const configPath = path.join(projectRoot, '.forge', 'project-settings.json');
|
|
462
|
+
try {
|
|
463
|
+
const raw = await fs.readFile(configPath, 'utf-8');
|
|
464
|
+
return JSON.parse(raw);
|
|
465
|
+
}
|
|
466
|
+
catch {
|
|
467
|
+
return undefined;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
460
470
|
export async function resolveGates(projectRoot) {
|
|
471
|
+
let projectConfig;
|
|
461
472
|
if (projectRoot) {
|
|
473
|
+
projectConfig = await readProjectConfig(projectRoot);
|
|
462
474
|
const frozen = await readFrozenGates(projectRoot);
|
|
463
|
-
if (frozen.gates)
|
|
464
|
-
|
|
475
|
+
if (frozen.gates) {
|
|
476
|
+
const gates = frozen.gates;
|
|
477
|
+
return {
|
|
478
|
+
...gates,
|
|
479
|
+
...(projectConfig ? { project_settings: projectConfig } : {}),
|
|
480
|
+
};
|
|
481
|
+
}
|
|
465
482
|
if (frozen.refused?.length) {
|
|
466
483
|
const base = compiledGatesResolved();
|
|
467
484
|
return {
|
|
468
485
|
...base,
|
|
486
|
+
...(projectConfig ? { project_settings: projectConfig } : {}),
|
|
469
487
|
notices: [
|
|
470
488
|
'the frozen gate definition of this project was REFUSED and the compiled catalogue is'
|
|
471
489
|
+ ' judging instead: ' + frozen.refused.join('; ')
|
|
@@ -475,7 +493,11 @@ export async function resolveGates(projectRoot) {
|
|
|
475
493
|
};
|
|
476
494
|
}
|
|
477
495
|
}
|
|
478
|
-
|
|
496
|
+
const base = compiledGatesResolved();
|
|
497
|
+
return {
|
|
498
|
+
...base,
|
|
499
|
+
...(projectConfig ? { project_settings: projectConfig } : {}),
|
|
500
|
+
};
|
|
479
501
|
}
|
|
480
502
|
/** Bring the published definition over the network.
|
|
481
503
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates_data.js","sourceRoot":"","sources":["../../src/urazuke/gates_data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,aAAa,EAAE,uBAAuB,GAEvC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAC3C,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAEtB;6CAC6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,0CAA0C,CAAC;AAE5E;;;;;;;;;;6EAU6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAE1E,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAED;;;6BAG6B;AAC7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAyJpC,gDAAgD;AAEhD;;;+DAG+D;AAC/D,MAAM,UAAU,cAAc,CAAC,IAAwB;IACrD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,GAAG,CAAC,CAAC,CAAC,GAAI,IAAgC,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,GAAG,CAAC;AACb,CAAC;AAaD;;;;0EAI0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5E,OAAO;QACL,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QACpE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;QACjC,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED,kDAAkD;AAElD,SAAS,eAAe,CAAC,CAAU;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,CAAuB,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAC7H,CAAC;AAED,SAAS,cAAc,CAAC,CAAU,EAAE,KAAa,EAAE,QAAkB;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IAClG,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,CAAoB,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAC,CAAC;YAAC,EAAE,GAAG,KAAK,CAAC;YAAC,SAAS;QAAC,CAAC;QACzG,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC,CAAC;YAAC,EAAE,GAAG,KAAK,CAAC;QAAC,CAAC;QACtG,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,uBAAuB,CAAC,CAAC;YAAC,EAAE,GAAG,KAAK,CAAC;QAAC,CAAC;QAC3G,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,yBAAyB,CAAC,CAAC;YAAC,EAAE,GAAG,KAAK,CAAC;QAAC,CAAC;QAC/G,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,qCAAqC,CAAC,CAAC;YAAC,EAAE,GAAG,KAAK,CAAC;QAAC,CAAC;QACpJ,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,wCAAwC,CAAC,CAAC;YAAC,EAAE,GAAG,KAAK,CAAC;QAAC,CAAC;QAC7J,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAQ,CAA2B,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC3H,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,sCAAsC,CAAC,CAAC;gBAC3E,EAAE,GAAG,KAAK,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAeD;;;;;4EAK4E;AAC5E,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,CAAC,GAAG,GAAyB,CAAC;IACpC,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAClG,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,eAAe;QAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1G,MAAM,EAAE,GAAG,CAAC,CAAC,YAAgD,CAAC;IAC9D,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ;WAC1D,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACxF,CAAC;SAAM,CAAC;QACN,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,IAAI,GAAG,oCAAoC,CAAC,CAAC;QAC7H,IAAI,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,cAAc,KAAK,+CAA+C,EAAE,CAAC;YAC/F,QAAQ,CAAC,IAAI,CAAC,iCAAiC,GAAG,EAAE,CAAC,cAAc,GAAG,6CAA6C,CAAC,CAAC;QACvH,CAAC;IACH,CAAC;IACD,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAEpD,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,4CAA4C,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;kBACnF,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;kBAC9C,6EAA6E,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,iEAAiE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;kBACvG,0EAA0E,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,GAAG,GAAqB,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpE,IAAI,CAAC,CAAC,cAAc,GAAG,kBAAkB;QAAE,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC;IAC/E,OAAO,GAAG,CAAC;AACb,CAAC;AAkED,SAAS,WAAW,CAAC,EAAmC;IACtD,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;0EAE0E;AAC1E,SAAS,QAAQ,CAAC,EAAyB;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAClC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1F,GAAG,CAAC,IAAI,CAAE,CAAsB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,EAAuC;IAC3D,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;QAC9B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;KAClC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,uBAAuB,CAAC,CAAgB;IAC/C,OAAO;QACL,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACnC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1B,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;KACvC,CAAC;AACJ,CAAC;AAED;kCACkC;AAClC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU;IACxE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB;IAC3E,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS;IAC5E,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe;CAC7D,CAAC,CAAC;AAEH;;;;;;;4CAO4C;AAC5C,MAAM,UAAU,gBAAgB,CAAC,IAAwB,EAAE,IAAY;IACrE,MAAM,GAAG,GAAI,IAAgC,CAAC,iBAAiB,CAAC,CAAC;IACjE,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAQ,GAAsB,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5F,MAAM,CAAC,GAAG,GAAqB,CAAC;QAChC,OAAO;YACL,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;YAChF,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAC1D,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,KAAK,4BAA4B,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvG,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,wDAAwD,GAAG,IAAI,CAAC,eAAe;kBAChF,wFAAwF;kBACxF,4EAA4E;SACjF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACvF,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,mBAAmB,CAAC,IAAwB,EAAE,MAAmB,EAAE,IAAY;IAC7F,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,cAAc,GAAG,kBAAkB,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,cAAc,GAAG,8BAA8B;cACjG,kBAAkB,GAAG,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,0BAA0B;cACxF,qHAAqH,CAAC,CAAC;IAC7H,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACxG,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAoC,CAAC;IACxE,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAkC,CAAC;IAClE,MAAM,cAAc,GAAG,GAAG,CAAC,gBAAgB,CAAuC,CAAC;IACnF,OAAO;QACL,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,eAAe;QAC7B,IAAI;QACJ,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC9C,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC5D,mBAAmB,EAAE,QAAQ;QAC7B,eAAe,EAAE,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;QAC7C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;mCAOmC;AACnC,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAuB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,4BAA4B;QACrC,IAAI,EAAE,iBAAiB,EAAE;QACzB,cAAc,EAAE,CAAC;QACjB,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO;YACxE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;YAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACrB,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;SAC7B,CAAC,CAAC;QACH,QAAQ,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;YAClF,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACrB,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;SAC7B,CAAC,CAAC;QACH,mBAAmB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;gBAC/B,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxC,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;aACnD,CAAC,CAAC,CAAC,IAAI,EAAE;QACV,eAAe,EAAE,wBAAwB;QACzC,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED;;;oBAGoB;AACpB,MAAM,wBAAwB,GAAmB;IAC/C,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,GAAG,EAAE,0CAA0C,GAAG,4BAA4B,GAAG,uBAAuB;UACpG,+FAA+F;UAC/F,2EAA2E;CAChF,CAAC;AAeF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,qCAAqC,GAAI,CAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACpG,CAAC;IACD,MAAM,CAAC,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED;;qCAEqC;AACrC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB,EAAE,IAAwB;IAClF,MAAM,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;6CAO6C;AAC7C,MAAM,UAAU,uBAAuB;IACrC,MAAM,CAAC,GAAG,qBAAqB,EAAE,CAAC;IAClC,MAAM,IAAI,GAA4B;QACpC,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,4BAA4B;QAC7C,UAAU,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5E,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO;YACxE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;YAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;YAC1D,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC5G,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;YAClF,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;YACxC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC5G,CAAC,CAAC;KACJ,CAAC;IACF;;;+DAG2D;IAC3D,IAAI,CAAC,iBAAiB,CAAC,GAAG,wBAAwB,CAAC;IACnD,MAAM,MAAM,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC3G,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IACxG,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,yEAAyE;cAC3E,6EAA6E;cAC7E,+EAA+E;cAC/E,sEAAsE;QAC1E,GAAG,IAAI;QACP,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,WAAW;YACrB,cAAc,EAAE,+CAA+C;YAC/D,MAAM;YACN,QAAQ;YACR,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,EAAE,uEAAuE;kBACzE,sEAAsE;SAC3E;KAC+B,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kDAAkD;AAElD;;;;;;gEAMgE;AAChE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAoB;IACrD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;QACtC,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,qBAAqB,EAAE,CAAC;YACrC,OAAO;gBACL,GAAG,IAAI;gBACP,OAAO,EAAE;oBACP,sFAAsF;0BACpF,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;0BAChD,qFAAqF;oBACvF,GAAG,IAAI,CAAC,OAAO;iBAChB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAUD;;;;;;;yBAOyB;AACzB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAA0B,EAAE;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,iBAAiB,CAAC;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACpF,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,WAAW,GAAI,CAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACtF,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,0EAA0E;AAE1E,wCAAwC;AACxC,MAAM,UAAU,iBAAiB,CAAC,CAAgB;IAChD,OAAO,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC,cAAc;UAC/D,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;UAC9B,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;AAC7E,CAAC"}
|
|
1
|
+
{"version":3,"file":"gates_data.js","sourceRoot":"","sources":["../../src/urazuke/gates_data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type ManualCaseLedger } from './manual_cases.js';
|
|
2
|
+
export * from './scoreboard.js';
|
|
3
|
+
export type Severity = 'blocks' | 'warns' | 'records';
|
|
4
|
+
export type RuleState = 'active' | 'switched_off' | 'group_off' | 'out_of_scope';
|
|
5
|
+
export type CheckerSource = 'adapter' | 'owner' | 'project' | 'not_published';
|
|
6
|
+
export interface SwitchOffRecord {
|
|
7
|
+
rule: string;
|
|
8
|
+
reason: string;
|
|
9
|
+
authorized_by: string;
|
|
10
|
+
review_date: string;
|
|
11
|
+
}
|
|
12
|
+
/** A group switch: `true`, or an off record without the `rule` field (the
|
|
13
|
+
* group name is the key). */
|
|
14
|
+
export type GroupSwitch = true | {
|
|
15
|
+
on: false;
|
|
16
|
+
reason?: string;
|
|
17
|
+
authorized_by?: string;
|
|
18
|
+
review_date?: string;
|
|
19
|
+
};
|
|
20
|
+
/** The per-project declarations, with the method's own field names. */
|
|
21
|
+
export interface ProjectSettings {
|
|
22
|
+
frontend?: string;
|
|
23
|
+
real_users?: boolean;
|
|
24
|
+
switches?: Record<string, GroupSwitch>;
|
|
25
|
+
switched_off?: unknown[];
|
|
26
|
+
thresholds?: Record<string, unknown>;
|
|
27
|
+
tools?: Record<string, string>;
|
|
28
|
+
}
|
|
29
|
+
export interface ResolvedRule {
|
|
30
|
+
id: string;
|
|
31
|
+
group: string;
|
|
32
|
+
family: string;
|
|
33
|
+
instrument: string[];
|
|
34
|
+
severity: Severity;
|
|
35
|
+
/** Where the severity came from. `catalog` is the normal answer; the
|
|
36
|
+
* point of recording it is that a hardcoded one would have to say so. */
|
|
37
|
+
severity_source: 'catalog' | 'escalated';
|
|
38
|
+
state: RuleState;
|
|
39
|
+
human_red: boolean;
|
|
40
|
+
/** Counted in the compliance percentage. False for the rules the method
|
|
41
|
+
* puts outside it (`human_outside_the_percentage`) and for anything a
|
|
42
|
+
* person judges. */
|
|
43
|
+
in_percentage: boolean;
|
|
44
|
+
/** Measured green. `false` covers both "measured and failing" and "not
|
|
45
|
+
* measured", which `measured` tells apart. */
|
|
46
|
+
passing: boolean;
|
|
47
|
+
measured: boolean;
|
|
48
|
+
/** Who declares what measures this rule, and whether it is reachable. */
|
|
49
|
+
checker: CheckerSource;
|
|
50
|
+
record?: SwitchOffRecord;
|
|
51
|
+
/** Why it is not active, in one phrase, for the report. */
|
|
52
|
+
why?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface ThresholdView {
|
|
55
|
+
id: string;
|
|
56
|
+
rule: string;
|
|
57
|
+
value: number | string | null;
|
|
58
|
+
declared: boolean;
|
|
59
|
+
source: 'annex' | 'project' | 'undeclared';
|
|
60
|
+
}
|
|
61
|
+
export interface RulesetValidity {
|
|
62
|
+
ok: boolean;
|
|
63
|
+
/** Everything worth saying about the declaration, invalidating or not. */
|
|
64
|
+
problems: string[];
|
|
65
|
+
/** The subset that makes the ruleset INVALID (a switch-off with no
|
|
66
|
+
* record). Carried as its own list because classifying it by matching
|
|
67
|
+
* the prose was a regex over a translatable string: the day the message
|
|
68
|
+
* changes language the gate silently stops emitting figures, or starts. */
|
|
69
|
+
invalidating: string[];
|
|
70
|
+
}
|
|
71
|
+
export interface Ruleset {
|
|
72
|
+
catalog_version: string;
|
|
73
|
+
adapter: string | null;
|
|
74
|
+
tools: Record<string, string>;
|
|
75
|
+
real_users: boolean;
|
|
76
|
+
rules: ResolvedRule[];
|
|
77
|
+
thresholds: ThresholdView[];
|
|
78
|
+
group_off: string[];
|
|
79
|
+
validity: RulesetValidity;
|
|
80
|
+
/** Things the gate has to say out loud rather than fold into a colour. */
|
|
81
|
+
could_not_verify: string[];
|
|
82
|
+
/** The human verdicts on record. Carried here so the scoreboard stays a
|
|
83
|
+
* pure function of the ruleset. */
|
|
84
|
+
manual_cases: ManualCaseLedger;
|
|
85
|
+
}
|
|
86
|
+
export interface ResolveRulesetOptions {
|
|
87
|
+
projectRoot: string;
|
|
88
|
+
/** The definition in force, as `resolveGates` returns it or as the
|
|
89
|
+
* published file. Both carry `heuristics` and `adapters`. */
|
|
90
|
+
gates: {
|
|
91
|
+
catalog_version?: string;
|
|
92
|
+
version?: string;
|
|
93
|
+
heuristics?: unknown;
|
|
94
|
+
adapters?: unknown;
|
|
95
|
+
};
|
|
96
|
+
settings?: ProjectSettings;
|
|
97
|
+
}
|
|
98
|
+
export declare function projectSettingsPath(root: string): string;
|
|
99
|
+
export declare function readProjectSettings(root: string): Promise<ProjectSettings | undefined>;
|
|
100
|
+
/** A switch-off record, or the list of what is missing from it. The method
|
|
101
|
+
* is explicit that an incomplete record is not a lenient switch-off: it is
|
|
102
|
+
* red, and it makes the whole ruleset invalid (D-046, D-047). */
|
|
103
|
+
export declare function switchOffProblems(entry: unknown, index: number): {
|
|
104
|
+
rule?: string;
|
|
105
|
+
problems: string[];
|
|
106
|
+
};
|
|
107
|
+
export declare function resolveRuleset(opts: ResolveRulesetOptions): Promise<Ruleset>;
|
|
108
|
+
//# sourceMappingURL=heuristics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heuristics.d.ts","sourceRoot":"","sources":["../../src/urazuke/heuristics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE FORTY-FIVE RULES, RESOLVED AGAINST THE DEFINITION IN FORCE
|
|
3
|
+
* (Annex H, layers 1 to 3 -- pieces 1, 2, 3 reaching the evaluator).
|
|
4
|
+
*
|
|
5
|
+
* Everything in here is READ from the gate definition the project is being
|
|
6
|
+
* measured by: the rule ids, the group they belong to, the instrument, the
|
|
7
|
+
* severity, which rules a machine may not judge (`human_red`), the
|
|
8
|
+
* thresholds and which of them the method declares. Nothing is a constant
|
|
9
|
+
* of Forge. That is the whole point: on 2026-10-27 this tool was measuring
|
|
10
|
+
* two thresholds it had invented (`max_complexity=10` standing in for
|
|
11
|
+
* CQ-04's undeclared `paths_per_function`, and a `dup_block_lines=8` with
|
|
12
|
+
* no rule id at all), which is the one thing the annex forbids outright.
|
|
13
|
+
*
|
|
14
|
+
* THE SHAPE OF THE PROJECT'S OWN DECLARATIONS is published too, and the
|
|
15
|
+
* field names are the method's, not ours: frontend, real_users, switches,
|
|
16
|
+
* switched_off, thresholds, tools (`project_config.fields`). They live in
|
|
17
|
+
* <root>/.forge/project-settings.json. They are the VALUES; the published
|
|
18
|
+
* `project_config` is the SCHEMA, and the two must not share a field --
|
|
19
|
+
* before this slice `resolveGates` wrote the values over the schema, so a
|
|
20
|
+
* consumer asking the definition for the field names got a project's
|
|
21
|
+
* answers instead.
|
|
22
|
+
*
|
|
23
|
+
* WHAT THIS MODULE REFUSES TO GUESS. The evaluator `heuristics` asks that
|
|
24
|
+
* every active rule have "an instrument, a severity and a checker". The
|
|
25
|
+
* data publishes the first two per rule. The third it does not: 29 of the
|
|
26
|
+
* 45 rules say `checker_declared_by: adapter`, and the adapter table is a
|
|
27
|
+
* POINTER -- `adapters.annex_columns.note` says the text of every cell
|
|
28
|
+
* lives only in the annex, and the pointer covers 6 rules of 45. The other
|
|
29
|
+
* 16 say `owner`, and the field name the owner would write it in is not
|
|
30
|
+
* published either (`adapters.measured_by.illustrative: true`, with the
|
|
31
|
+
* warning that an installation taking those names as defaults "is
|
|
32
|
+
* inventing layer 2"). So the checker resolves to `not_published` and the
|
|
33
|
+
* gate reports it as something it COULD NOT VERIFY. Not green, not red:
|
|
34
|
+
* named. Inventing the cell here would be the same defect this file was
|
|
35
|
+
* written to delete.
|
|
36
|
+
*
|
|
37
|
+
* ASCII-only.
|
|
38
|
+
*/
|
|
39
|
+
import fs from 'node:fs/promises';
|
|
40
|
+
import path from 'node:path';
|
|
41
|
+
import { readManualCases } from './manual_cases.js';
|
|
42
|
+
export * from './scoreboard.js';
|
|
43
|
+
export function projectSettingsPath(root) {
|
|
44
|
+
return path.join(root, '.forge', 'project-settings.json');
|
|
45
|
+
}
|
|
46
|
+
export async function readProjectSettings(root) {
|
|
47
|
+
try {
|
|
48
|
+
const parsed = JSON.parse(await fs.readFile(projectSettingsPath(root), 'utf8'));
|
|
49
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed))
|
|
50
|
+
return parsed;
|
|
51
|
+
}
|
|
52
|
+
catch { /* no declarations: that is a gap the report names, not an error */ }
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
function isRec(v) {
|
|
56
|
+
return v != null && typeof v === 'object' && !Array.isArray(v);
|
|
57
|
+
}
|
|
58
|
+
const RECORD_FIELDS = ['rule', 'reason', 'authorized_by', 'review_date'];
|
|
59
|
+
/** A switch-off record, or the list of what is missing from it. The method
|
|
60
|
+
* is explicit that an incomplete record is not a lenient switch-off: it is
|
|
61
|
+
* red, and it makes the whole ruleset invalid (D-046, D-047). */
|
|
62
|
+
export function switchOffProblems(entry, index) {
|
|
63
|
+
if (!isRec(entry)) {
|
|
64
|
+
return { problems: ['switched_off[' + index + '] no es un registro: ' + JSON.stringify(entry ?? null)] };
|
|
65
|
+
}
|
|
66
|
+
const rule = typeof entry['rule'] === 'string' ? entry['rule'] : undefined;
|
|
67
|
+
const problems = [];
|
|
68
|
+
for (const f of RECORD_FIELDS) {
|
|
69
|
+
const v = entry[f];
|
|
70
|
+
if (typeof v !== 'string' || v.trim() === '') {
|
|
71
|
+
problems.push('apagada sin un registro completo: ' + (rule ?? 'switched_off[' + index + ']')
|
|
72
|
+
+ ' no trae ' + f);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { ...(rule ? { rule } : {}), problems };
|
|
76
|
+
}
|
|
77
|
+
function severityOf(rule, realUsers, declaredThresholdIds) {
|
|
78
|
+
const base = String(rule['initial_severity'] ?? 'records');
|
|
79
|
+
const esc = rule['escalates_to'];
|
|
80
|
+
/* CQ-18 escalates to `blocks` when the product has users outside the
|
|
81
|
+
* organisation, and the method says the escalation "requires a
|
|
82
|
+
* declaration by the owner, through the same mechanism as any threshold"
|
|
83
|
+
* (D-048). So real_users alone does not escalate it: without the owner's
|
|
84
|
+
* declaration it stays where the catalogue put it, and the report says
|
|
85
|
+
* the escalation is pending a declaration. */
|
|
86
|
+
if (isRec(esc) && realUsers && declaredThresholdIds.has(String(rule['id']))) {
|
|
87
|
+
return { severity: String(esc['severity'] ?? base), source: 'escalated' };
|
|
88
|
+
}
|
|
89
|
+
return { severity: base, source: 'catalog' };
|
|
90
|
+
}
|
|
91
|
+
function thresholdsOf(adapters, settings) {
|
|
92
|
+
const declared = isRec(adapters) && Array.isArray(adapters['thresholds'])
|
|
93
|
+
? adapters['thresholds']
|
|
94
|
+
: [];
|
|
95
|
+
const own = settings?.thresholds ?? {};
|
|
96
|
+
return declared.filter(isRec).map((t) => {
|
|
97
|
+
const id = String(t['id']);
|
|
98
|
+
const rule = String(t['rule'] ?? '');
|
|
99
|
+
if (Object.prototype.hasOwnProperty.call(own, id) && own[id] != null) {
|
|
100
|
+
return { id, rule, value: own[id], declared: true, source: 'project' };
|
|
101
|
+
}
|
|
102
|
+
if (t['declared'] === true && t['value'] != null) {
|
|
103
|
+
return { id, rule, value: t['value'], declared: true, source: 'annex' };
|
|
104
|
+
}
|
|
105
|
+
/* Not declared anywhere: reported as undeclared. No approximating, no
|
|
106
|
+
* silent inheriting and no inventing (adapters.undeclared_threshold). */
|
|
107
|
+
return { id, rule, value: null, declared: false, source: 'undeclared' };
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
export async function resolveRuleset(opts) {
|
|
111
|
+
const settings = opts.settings ?? await readProjectSettings(opts.projectRoot);
|
|
112
|
+
const h = isRec(opts.gates.heuristics) ? opts.gates.heuristics : {};
|
|
113
|
+
const publishedRules = Array.isArray(h['rules']) ? h['rules'].filter(isRec) : [];
|
|
114
|
+
const scoreboard = isRec(h['scoreboard']) ? h['scoreboard'] : {};
|
|
115
|
+
const outsideNamed = new Set((Array.isArray(scoreboard['human_outside_the_percentage'])
|
|
116
|
+
? scoreboard['human_outside_the_percentage']
|
|
117
|
+
: []).filter((x) => typeof x === 'string' && /^[A-Z]{2}-\d\d$/.test(x)));
|
|
118
|
+
const realUsers = settings?.real_users === true;
|
|
119
|
+
/* ---- the switch-off list, and whether it is a valid ruleset ---- */
|
|
120
|
+
const problems = [];
|
|
121
|
+
const invalidating = [];
|
|
122
|
+
const offRecords = new Map();
|
|
123
|
+
const offIds = new Set();
|
|
124
|
+
const rawOff = Array.isArray(settings?.switched_off) ? settings?.switched_off : [];
|
|
125
|
+
rawOff.forEach((entry, i) => {
|
|
126
|
+
const r = switchOffProblems(entry, i);
|
|
127
|
+
if (r.rule)
|
|
128
|
+
offIds.add(r.rule);
|
|
129
|
+
if (r.problems.length) {
|
|
130
|
+
problems.push(...r.problems);
|
|
131
|
+
invalidating.push(...r.problems);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
offRecords.set(r.rule, entry);
|
|
135
|
+
});
|
|
136
|
+
/* ---- the group switches ---- */
|
|
137
|
+
const groupOff = [];
|
|
138
|
+
for (const [group, sw] of Object.entries(settings?.switches ?? {})) {
|
|
139
|
+
if (sw === true)
|
|
140
|
+
continue;
|
|
141
|
+
if (!isRec(sw)) {
|
|
142
|
+
const p = 'switches.' + group + ' no es ni true ni un registro de apagado';
|
|
143
|
+
problems.push(p);
|
|
144
|
+
invalidating.push(p);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const missing = ['reason', 'authorized_by', 'review_date']
|
|
148
|
+
.filter((f) => typeof sw[f] !== 'string' || String(sw[f]).trim() === '');
|
|
149
|
+
if (missing.length) {
|
|
150
|
+
const p = 'el grupo ' + group + ' esta apagado sin un registro completo: falta ' + missing.join(', ');
|
|
151
|
+
problems.push(p);
|
|
152
|
+
invalidating.push(p);
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
groupOff.push(group);
|
|
156
|
+
}
|
|
157
|
+
const thresholds = thresholdsOf(opts.gates.adapters, settings);
|
|
158
|
+
/* The escalation of a severity travels "through the same mechanism as any
|
|
159
|
+
* threshold" (D-048), so the owner declares it as a `thresholds` entry
|
|
160
|
+
* keyed by the rule id. The method publishes no threshold id for it, which
|
|
161
|
+
* is why this is the rule id and not one of the five published ones. */
|
|
162
|
+
const ownerDeclared = new Set(Object.keys(settings?.thresholds ?? {}));
|
|
163
|
+
const couldNotVerify = [];
|
|
164
|
+
const rules = publishedRules.map((raw) => {
|
|
165
|
+
const id = String(raw['id']);
|
|
166
|
+
const group = String(raw['group'] ?? '');
|
|
167
|
+
const instrument = Array.isArray(raw['instrument']) ? raw['instrument'].map(String) : [];
|
|
168
|
+
const humanRed = raw['human_red'] === true;
|
|
169
|
+
const { severity, source } = severityOf(raw, realUsers, ownerDeclared);
|
|
170
|
+
const appliesIf = typeof raw['applies_if'] === 'string' ? raw['applies_if'] : undefined;
|
|
171
|
+
let state = 'active';
|
|
172
|
+
let why;
|
|
173
|
+
if (groupOff.includes(group)) {
|
|
174
|
+
state = 'group_off';
|
|
175
|
+
why = 'the group ' + group + ' is switched off, and a switched-off group is never read as fulfilled';
|
|
176
|
+
}
|
|
177
|
+
else if (offRecords.has(id)) {
|
|
178
|
+
const rec = offRecords.get(id);
|
|
179
|
+
state = 'switched_off';
|
|
180
|
+
why = 'switched off by ' + rec.authorized_by + ', review ' + rec.review_date + ': ' + rec.reason;
|
|
181
|
+
}
|
|
182
|
+
else if (appliesIf === 'real_users' && !realUsers) {
|
|
183
|
+
state = 'out_of_scope';
|
|
184
|
+
why = 'applies_if real_users, and this project declares real_users=false: that is scope, not an exception';
|
|
185
|
+
}
|
|
186
|
+
/* `checker_declared_by` says WHO declares what measures the rule; the
|
|
187
|
+
* data does not carry the cell itself (see the header). */
|
|
188
|
+
const checker = 'not_published';
|
|
189
|
+
const outside = humanRed || instrument.includes('manual_case') || outsideNamed.has(id);
|
|
190
|
+
return {
|
|
191
|
+
id, group,
|
|
192
|
+
family: String(raw['family'] ?? ''),
|
|
193
|
+
instrument,
|
|
194
|
+
severity, severity_source: source,
|
|
195
|
+
state,
|
|
196
|
+
human_red: humanRed,
|
|
197
|
+
in_percentage: state === 'active' && !outside,
|
|
198
|
+
passing: false,
|
|
199
|
+
measured: false,
|
|
200
|
+
checker,
|
|
201
|
+
...(offRecords.has(id) ? { record: offRecords.get(id) } : {}),
|
|
202
|
+
...(why ? { why } : {}),
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
for (const r of publishedRules) {
|
|
206
|
+
if (isRec(r['escalates_to']) && realUsers && !ownerDeclared.has(String(r['id']))) {
|
|
207
|
+
couldNotVerify.push('la regla ' + String(r['id']) + ' escala su severidad cuando el producto tiene'
|
|
208
|
+
+ ' usuarios fuera de la organizacion, y la escalada necesita que el dueno la declare por el mismo'
|
|
209
|
+
+ ' mecanismo que cualquier umbral -- la definicion en vigor no publica ningun id de umbral para'
|
|
210
|
+
+ ' ella, asi que esta instalacion no distingue una escalada pendiente de una declinada.');
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const activeNeedingChecker = rules.filter((r) => r.state === 'active').length;
|
|
214
|
+
if (activeNeedingChecker > 0) {
|
|
215
|
+
couldNotVerify.push('con que se mide cada regla: la definicion en vigor no publica la celda del'
|
|
216
|
+
+ ' adaptador (adapters.annex_columns es un puntero al anexo y cubre 6 reglas de 45) ni publica el'
|
|
217
|
+
+ ' nombre del campo donde el dueno la declararia (adapters.measured_by.illustrative=true). '
|
|
218
|
+
+ activeNeedingChecker + ' reglas activas no tienen entonces NINGUN medidor alcanzable, y esta'
|
|
219
|
+
+ ' instalacion lo reporta en lugar de inventar uno.');
|
|
220
|
+
}
|
|
221
|
+
if (!settings) {
|
|
222
|
+
problems.push('este proyecto no declara nada: falta .forge/project-settings.json, asi que ningun grupo'
|
|
223
|
+
+ ' esta declarado activo y no hay umbral, adaptador ni version de herramienta en el registro');
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
for (const g of ['code_quality', 'usability']) {
|
|
227
|
+
if (!Object.prototype.hasOwnProperty.call(settings.switches ?? {}, g)) {
|
|
228
|
+
problems.push('el grupo ' + g + ' no esta declarado en switches: el metodo pide una entrada por grupo');
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/* A ruleset is INVALID only when something was switched off without its
|
|
233
|
+
* record (D-046/D-047). A missing declaration is a red verdict with the
|
|
234
|
+
* figures still emitted; an invalid ruleset emits no figures at all. */
|
|
235
|
+
return {
|
|
236
|
+
catalog_version: String(opts.gates.catalog_version ?? opts.gates.version ?? 'unknown'),
|
|
237
|
+
adapter: settings?.frontend ?? null,
|
|
238
|
+
tools: settings?.tools ?? {},
|
|
239
|
+
real_users: realUsers,
|
|
240
|
+
rules,
|
|
241
|
+
thresholds,
|
|
242
|
+
group_off: groupOff,
|
|
243
|
+
validity: { ok: invalidating.length === 0, problems, invalidating },
|
|
244
|
+
could_not_verify: couldNotVerify,
|
|
245
|
+
manual_cases: await readManualCases(opts.projectRoot),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=heuristics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heuristics.js","sourceRoot":"","sources":["../../src/urazuke/heuristics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type ManualVerdict = 'passed' | 'failed';
|
|
2
|
+
export interface ManualCase {
|
|
3
|
+
/** The rule id the verdict is about (CQ-12, UX-22, ...). */
|
|
4
|
+
rule: string;
|
|
5
|
+
verdict: ManualVerdict;
|
|
6
|
+
/** The person who judged it. Never a tool, never "the agent". */
|
|
7
|
+
judged_by: string;
|
|
8
|
+
/** ISO date (YYYY-MM-DD) or a full ISO timestamp. */
|
|
9
|
+
at: string;
|
|
10
|
+
/** The profile the case was run under, when the project has profiles.
|
|
11
|
+
* `manual_cases_per_profile` needs one run per affected profile; this
|
|
12
|
+
* field is what will let that evaluator be measured without a migration. */
|
|
13
|
+
profile?: string;
|
|
14
|
+
note?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ManualCaseLedger {
|
|
17
|
+
version: 1;
|
|
18
|
+
cases: ManualCase[];
|
|
19
|
+
}
|
|
20
|
+
export declare function manualCasesPath(root: string): string;
|
|
21
|
+
export declare function readManualCases(root: string): Promise<ManualCaseLedger>;
|
|
22
|
+
/** A stored entry only counts when it still carries the four things that
|
|
23
|
+
* make it a verdict. A hand-edited ledger that lost a name loses the
|
|
24
|
+
* verdict with it -- it does not inherit a green. */
|
|
25
|
+
export declare function isVerdict(c: unknown): c is ManualCase;
|
|
26
|
+
export declare function recordManualCase(root: string, c: ManualCase): Promise<ManualCaseLedger>;
|
|
27
|
+
/** The verdict in force for a rule: the LAST recorded one. Undefined means
|
|
28
|
+
* nobody signed, which is neither a pass nor a fail and must never be
|
|
29
|
+
* rendered as either. */
|
|
30
|
+
export declare function verdictFor(led: ManualCaseLedger, rule: string, profile?: string): ManualCase | undefined;
|
|
31
|
+
//# sourceMappingURL=manual_cases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual_cases.d.ts","sourceRoot":"","sources":["../../src/urazuke/manual_cases.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX;;iFAE6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQ7E;AAED;;sDAEsD;AACtD,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAOrD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB7F;AAED;;0BAE0B;AAC1B,wBAAgB,UAAU,CAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAGxG"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE HUMAN VERDICT ON RECORD (Annex H, pieza 5).
|
|
3
|
+
*
|
|
4
|
+
* Four of the forty-five rules carry `human_red: true` in the published
|
|
5
|
+
* data -- CQ-12, CQ-14, UX-22 and UX-27 as of catalog 2026.10.6 -- and the
|
|
6
|
+
* method's `manual_case` instrument says what such a verdict IS: "passed or
|
|
7
|
+
* failed, with a name and a date", judged by a person. The list is read
|
|
8
|
+
* from the definition in force, never from this file: a rule that gains
|
|
9
|
+
* `human_red` in a later catalogue is picked up without an install.
|
|
10
|
+
*
|
|
11
|
+
* Why a ledger and not a boolean. Before this module the `owner` state
|
|
12
|
+
* existed in the gate and signed nothing: a step with nothing mechanical to
|
|
13
|
+
* look at came out as "the owner verifies it", and the close gate let it
|
|
14
|
+
* through (`orchestrator.ts` treated only `red` and `unmeasured` as
|
|
15
|
+
* blocking). So the strongest claim in the method -- a person looked at
|
|
16
|
+
* this and said yes -- was the one claim with no evidence behind it. The
|
|
17
|
+
* ledger makes it a record with a name and a date, or it makes it absent.
|
|
18
|
+
*
|
|
19
|
+
* What is refused on write. A verdict with an empty `judged_by` or an empty
|
|
20
|
+
* `at` is not a verdict with a missing field, it is not a verdict: an
|
|
21
|
+
* anonymous or undated signature is exactly the "green without having
|
|
22
|
+
* looked" this whole slice exists to remove. `recordManualCase` throws
|
|
23
|
+
* instead of storing it.
|
|
24
|
+
*
|
|
25
|
+
* ASCII-only.
|
|
26
|
+
*/
|
|
27
|
+
import fs from 'node:fs/promises';
|
|
28
|
+
import path from 'node:path';
|
|
29
|
+
export function manualCasesPath(root) {
|
|
30
|
+
return path.join(root, '.forge', 'urazuke-manual-cases.json');
|
|
31
|
+
}
|
|
32
|
+
export async function readManualCases(root) {
|
|
33
|
+
try {
|
|
34
|
+
const parsed = JSON.parse(await fs.readFile(manualCasesPath(root), 'utf8'));
|
|
35
|
+
if (parsed && parsed.version === 1 && Array.isArray(parsed.cases)) {
|
|
36
|
+
return { version: 1, cases: parsed.cases.filter(isVerdict) };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch { /* no ledger yet: that is "nobody signed", not an error */ }
|
|
40
|
+
return { version: 1, cases: [] };
|
|
41
|
+
}
|
|
42
|
+
/** A stored entry only counts when it still carries the four things that
|
|
43
|
+
* make it a verdict. A hand-edited ledger that lost a name loses the
|
|
44
|
+
* verdict with it -- it does not inherit a green. */
|
|
45
|
+
export function isVerdict(c) {
|
|
46
|
+
if (c == null || typeof c !== 'object')
|
|
47
|
+
return false;
|
|
48
|
+
const r = c;
|
|
49
|
+
return typeof r['rule'] === 'string' && String(r['rule']).trim() !== ''
|
|
50
|
+
&& (r['verdict'] === 'passed' || r['verdict'] === 'failed')
|
|
51
|
+
&& typeof r['judged_by'] === 'string' && String(r['judged_by']).trim() !== ''
|
|
52
|
+
&& typeof r['at'] === 'string' && String(r['at']).trim() !== '';
|
|
53
|
+
}
|
|
54
|
+
export async function recordManualCase(root, c) {
|
|
55
|
+
if (!c || typeof c.rule !== 'string' || c.rule.trim() === '') {
|
|
56
|
+
throw new Error('a manual case needs the rule it judges');
|
|
57
|
+
}
|
|
58
|
+
if (c.verdict !== 'passed' && c.verdict !== 'failed') {
|
|
59
|
+
throw new Error('verdict has to be passed or failed: ' + String(c.verdict));
|
|
60
|
+
}
|
|
61
|
+
if (typeof c.judged_by !== 'string' || c.judged_by.trim() === '') {
|
|
62
|
+
throw new Error('judged_by is empty: an anonymous verdict is not a verdict (rule ' + c.rule + ')');
|
|
63
|
+
}
|
|
64
|
+
if (typeof c.at !== 'string' || c.at.trim() === '') {
|
|
65
|
+
throw new Error('at is empty: an undated verdict is not a verdict (rule ' + c.rule + ')');
|
|
66
|
+
}
|
|
67
|
+
const led = await readManualCases(root);
|
|
68
|
+
/* Append-only by design: the previous verdict stays visible, and the
|
|
69
|
+
* latest one for a (rule, profile) pair is the one that counts. The
|
|
70
|
+
* history is how a reviewer sees a red that turned green and when. */
|
|
71
|
+
led.cases.push({
|
|
72
|
+
rule: c.rule, verdict: c.verdict, judged_by: c.judged_by, at: c.at,
|
|
73
|
+
...(c.profile ? { profile: c.profile } : {}),
|
|
74
|
+
...(c.note ? { note: c.note } : {}),
|
|
75
|
+
});
|
|
76
|
+
await fs.mkdir(path.dirname(manualCasesPath(root)), { recursive: true });
|
|
77
|
+
await fs.writeFile(manualCasesPath(root), JSON.stringify(led, null, 2) + '\n', 'utf8');
|
|
78
|
+
return led;
|
|
79
|
+
}
|
|
80
|
+
/** The verdict in force for a rule: the LAST recorded one. Undefined means
|
|
81
|
+
* nobody signed, which is neither a pass nor a fail and must never be
|
|
82
|
+
* rendered as either. */
|
|
83
|
+
export function verdictFor(led, rule, profile) {
|
|
84
|
+
const matching = led.cases.filter((c) => c.rule === rule && (profile == null || c.profile === profile));
|
|
85
|
+
return matching.length ? matching[matching.length - 1] : undefined;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=manual_cases.js.map
|