@wairon/cli 5.1.1-dev.11 → 5.1.1-dev.12

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/cli/index.js CHANGED
@@ -65,7 +65,7 @@ var init_defaults = __esm({
65
65
  copilot: ".github/prompts",
66
66
  codex: ".codex/agents"
67
67
  };
68
- WAIRON_VERSION = "5.1.1-dev.11";
68
+ WAIRON_VERSION = "5.1.1-dev.12";
69
69
  GITHUB_REPO = "SYW-Apps/Waffle-AIron";
70
70
  ARCHITECT_AGENT_ID = "agent-architect";
71
71
  ARCHITECT_TEMPLATE_ID = "architect";
@@ -5399,12 +5399,12 @@ var init_stereotype_deps = __esm({
5399
5399
  }
5400
5400
  }
5401
5401
  if (comp.componentType === "Specialist") {
5402
- const forbiddenTypes = ["Portal", "Observer", "Orchestrator", "Store", "Supervisor"];
5402
+ const forbiddenTypes = ["Portal", "Observer", "Orchestrator", "Store", "Registry", "Supervisor", "Actor"];
5403
5403
  if (forbiddenTypes.includes(depComp.componentType)) {
5404
5404
  ctx.addIssue(
5405
5405
  "error",
5406
5406
  "ARCHITECTURE_VIOLATION_SPECIALIST_DEP",
5407
- `Architectural violation: Specialist component "${comp.id}" cannot depend on "${depComp.componentType}" component "${depComp.id}". Specialists are narrow capabilities \u2014 they may use Repositories, Indexes, and Adapters, but not Orchestrators, Supervisors, Stores, Portals, or Observers.` + (depComp.componentType === "Store" ? storeResolutionHint(comp.componentType, depComp.id) : ""),
5407
+ `Architectural violation: Specialist component "${comp.id}" cannot depend on "${depComp.componentType}" component "${depComp.id}". Specialists are pure capabilities \u2014 they may use Repository facades, Indexes, and Adapters, but never workflow/runtime blocks (Orchestrators, Supervisors, Actors) and never persistence directly (Stores, Registries \u2014 all storage, even in-memory, is reached through a Repository facade), nor Portals or Observers.` + (depComp.componentType === "Store" ? storeResolutionHint(comp.componentType, depComp.id) : ""),
5408
5408
  comp.id,
5409
5409
  isDraftCtx || ctx.isComponentDraft(depComp.id)
5410
5410
  );
@@ -8676,7 +8676,7 @@ function buildRuleContext(opts) {
8676
8676
  for (const i of interfaces) collectAllows(i.id, i.lint);
8677
8677
  for (const im of implementations) collectAllows(im.id, im.lint);
8678
8678
  for (const t of types) collectAllows(t.id, t.lint);
8679
- const knownIssueCodes = /* @__PURE__ */ new Set([
8679
+ const knownIssueCodes2 = /* @__PURE__ */ new Set([
8680
8680
  ...[...SDD_RULES, ...extensions.rules].flatMap((r) => r.codes.map((c) => c.code)),
8681
8681
  // Declarative assertions bring their own namespaced codes — lint.allow
8682
8682
  // and severity overrides treat them exactly like builtins.
@@ -8739,7 +8739,7 @@ function buildRuleContext(opts) {
8739
8739
  mountSurfaceSnapshots: opts.mountSurfaceSnapshots ?? [],
8740
8740
  codeModel: opts.codeModel ?? emptyCodeModel(),
8741
8741
  lintAllows,
8742
- knownIssueCodes,
8742
+ knownIssueCodes: knownIssueCodes2,
8743
8743
  addIssue
8744
8744
  };
8745
8745
  }
@@ -14015,6 +14015,9 @@ var MODEL = __MODEL_JSON__;
14015
14015
  function addRule(rule) {
14016
14016
  ruleSet.push(rule);
14017
14017
  }
14018
+ function listRules() {
14019
+ return ruleSet;
14020
+ }
14018
14021
  function registerBuiltinRules() {
14019
14022
  ruleSet = [];
14020
14023
  for (const rule of SDD_RULES) addRule(rule);
@@ -14029,6 +14032,9 @@ function ruleSequence() {
14029
14032
  function specScopedRules() {
14030
14033
  return ruleSequence().filter((r) => r.scope === "spec");
14031
14034
  }
14035
+ function knownIssueCodes() {
14036
+ return listRules().flatMap((r) => r.codes);
14037
+ }
14032
14038
  var ruleSet;
14033
14039
  var init_repository = __esm({
14034
14040
  "src/core/rules/repository.ts"() {
@@ -14848,7 +14854,7 @@ var init_approval = __esm({
14848
14854
  // src/core/validation.ts
14849
14855
  var validation_exports = {};
14850
14856
  __export(validation_exports, {
14851
- listRules: () => listRules,
14857
+ listRules: () => listRules2,
14852
14858
  validateAsComplete: () => validateAsComplete,
14853
14859
  validateProjectConfig: () => validateProjectConfig,
14854
14860
  validateRegistry: () => validateRegistry,
@@ -14861,6 +14867,32 @@ function projectPackSelections() {
14861
14867
  return [];
14862
14868
  }
14863
14869
  }
14870
+ function issueKey(issue2) {
14871
+ return `${issue2.code}|${issue2.specId ?? ""}`;
14872
+ }
14873
+ function worstByKey(issues) {
14874
+ const worst = /* @__PURE__ */ new Map();
14875
+ for (const issue2 of issues) {
14876
+ const key = issueKey(issue2);
14877
+ const seen = worst.get(key);
14878
+ if (!seen || SEVERITY_RANK[issue2.severity] > SEVERITY_RANK[seen]) worst.set(key, issue2.severity);
14879
+ }
14880
+ return worst;
14881
+ }
14882
+ function stricterSeverities(parent, child) {
14883
+ const fromParent = parent?.sddRuleSeverity ?? {};
14884
+ const fromChild = child?.sddRuleSeverity ?? {};
14885
+ const codes = /* @__PURE__ */ new Set([...Object.keys(fromParent), ...Object.keys(fromChild)]);
14886
+ if (codes.size === 0) return parent ?? child;
14887
+ const defaults = new Map(knownIssueCodes().map((rc) => [rc.code, rc.defaultSeverity]));
14888
+ const merged = {};
14889
+ for (const code of codes) {
14890
+ const p = fromParent[code] ?? defaults.get(code);
14891
+ const c = fromChild[code] ?? defaults.get(code);
14892
+ merged[code] = p === void 0 || c === void 0 ? p ?? c : SEVERITY_RANK[p] >= SEVERITY_RANK[c] ? p : c;
14893
+ }
14894
+ return { ...parent ?? child, sddRuleSeverity: merged };
14895
+ }
14864
14896
  function issue(severity, code, message, agentId, specId) {
14865
14897
  return { severity, code, message, agentId, specId };
14866
14898
  }
@@ -14942,7 +14974,7 @@ function validateProjectConfig(config) {
14942
14974
  issues
14943
14975
  };
14944
14976
  }
14945
- function listRules() {
14977
+ function listRules2() {
14946
14978
  const extensions = loadProjectExtensions();
14947
14979
  registerBuiltinRules();
14948
14980
  registerPackRules(extensions.rules);
@@ -15042,21 +15074,22 @@ function validateSddTree(rulesOrOptions, projectType = "backend") {
15042
15074
  for (const rule of ruleSequence()) {
15043
15075
  rule.check(ctx);
15044
15076
  }
15045
- const uncovered = (i) => SUBPROJECT_REFERENCE_CODES.has(i.code) && !i.surfaceResolved;
15046
- const chainingParent = crossTree !== "off" && issues.some(uncovered) ? findChainingParent(getProjectRoot()) : null;
15047
- const resolution = chainingParent ? resolveThroughParent(getProjectRoot(), treatAllAsComplete) : null;
15077
+ const unresolved = (i) => RESOLUTION_FAILURE_CODES.has(i.code) && !i.surfaceResolved;
15078
+ const chainingParent = crossTree !== "off" && issues.some(unresolved) ? findChainingParent(getProjectRoot()) : null;
15079
+ const resolution = chainingParent ? resolveThroughParent(getProjectRoot(), treatAllAsComplete, rules) : null;
15048
15080
  if (resolution) {
15049
- const parentSeverity = /* @__PURE__ */ new Map();
15050
- for (const i of resolution.issues) {
15051
- const key = `${i.code}|${i.specId ?? ""}`;
15052
- if (i.severity === "error" || !parentSeverity.has(key)) parentSeverity.set(key, i.severity);
15053
- }
15054
- const rejudged = (i) => {
15055
- const judged = parentSeverity.get(`${i.code}|${i.specId ?? ""}`);
15056
- return judged === "error" || judged === "warning" && i.severity === "warning";
15057
- };
15058
- const kept = issues.filter((i) => !uncovered(i) && !(i.surfaceResolved && rejudged(i)));
15059
- const merged = dedupeIssues([...kept, ...resolution.issues]);
15081
+ const judgedByParent = worstByKey(resolution.issues);
15082
+ const kept = issues.filter((i) => {
15083
+ const judged = judgedByParent.get(issueKey(i));
15084
+ if (judged !== void 0) return SEVERITY_RANK[judged] < SEVERITY_RANK[i.severity];
15085
+ return !unresolved(i);
15086
+ });
15087
+ const keptByChild = worstByKey(kept);
15088
+ const added = resolution.issues.filter((i) => {
15089
+ const own = keptByChild.get(issueKey(i));
15090
+ return own === void 0 || SEVERITY_RANK[own] <= SEVERITY_RANK[i.severity];
15091
+ });
15092
+ const merged = dedupeIssues([...kept, ...added]);
15060
15093
  return {
15061
15094
  valid: merged.every((i) => i.severity !== "error"),
15062
15095
  issues: merged,
@@ -15073,7 +15106,7 @@ function validateSddTree(rulesOrOptions, projectType = "backend") {
15073
15106
  });
15074
15107
  }
15075
15108
  }
15076
- function resolveThroughParent(boundRoot, treatAllAsComplete) {
15109
+ function resolveThroughParent(boundRoot, treatAllAsComplete, childRules) {
15077
15110
  const reach = getRequestParentReach();
15078
15111
  if (reach && !reach.parentReach) return null;
15079
15112
  const ceiling = reach?.topRoot ? path18.resolve(reach.topRoot) : void 0;
@@ -15091,10 +15124,10 @@ function resolveThroughParent(boundRoot, treatAllAsComplete) {
15091
15124
  const scope = chain.join("::");
15092
15125
  const inner = runWithProjectRoot(top, () => {
15093
15126
  invalidateSpecCache();
15094
- let governing = {};
15127
+ let governing = { rules: stricterSeverities(void 0, childRules) };
15095
15128
  try {
15096
15129
  const config = loadProjectConfig();
15097
- governing = { rules: config.rules, projectType: config.projectType };
15130
+ governing = { rules: stricterSeverities(config.rules, childRules), projectType: config.projectType };
15098
15131
  } catch {
15099
15132
  }
15100
15133
  return validateSddTree({
@@ -15168,7 +15201,7 @@ function settledStatusBearing(loaded) {
15168
15201
  function validateAsComplete(options) {
15169
15202
  return validateSddTree({ ...options ?? {}, treatAllAsComplete: true });
15170
15203
  }
15171
- var path18, SUBPROJECT_REFERENCE_CODES;
15204
+ var path18, RESOLUTION_FAILURE_CODES, SEVERITY_RANK;
15172
15205
  var init_validation = __esm({
15173
15206
  "src/core/validation.ts"() {
15174
15207
  "use strict";
@@ -15184,16 +15217,15 @@ var init_validation = __esm({
15184
15217
  init_fs();
15185
15218
  path18 = __toESM(require("path"));
15186
15219
  init_approval();
15187
- SUBPROJECT_REFERENCE_CODES = /* @__PURE__ */ new Set([
15220
+ RESOLUTION_FAILURE_CODES = /* @__PURE__ */ new Set([
15188
15221
  "UNDEFINED_TYPE_REFERENCE",
15189
15222
  "INVALID_DEPENDENCY_REFERENCE",
15190
15223
  "INVALID_TARGET_COMPONENT_REFERENCE",
15191
15224
  "INVALID_SUBSYSTEM_REFERENCE",
15192
- "UNDECLARED_DEPENDENCY_CALL",
15193
15225
  "INVALID_TRUSTED_LINK",
15194
- "CROSS_SUBSYSTEM_NON_ADAPTER",
15195
15226
  "CROSS_TREE_REF_UNRESOLVED"
15196
15227
  ]);
15228
+ SEVERITY_RANK = { off: 0, warning: 1, error: 2 };
15197
15229
  }
15198
15230
  });
15199
15231
 
@@ -15828,6 +15860,20 @@ function qualifyId(id, prefix, rootSubsystems) {
15828
15860
  }
15829
15861
  return prefix ? `${prefix}::${id}` : id;
15830
15862
  }
15863
+ function qualifyDeclaredId(id, prefix, mountRealization = false) {
15864
+ if (!id || !prefix) return id;
15865
+ if (id.startsWith("::") || id.startsWith("super::")) {
15866
+ return qualifyId(id, prefix, NO_ROOT_SUBSYSTEMS);
15867
+ }
15868
+ if (mountRealization && id === prefix.split("::").pop()) {
15869
+ return prefix;
15870
+ }
15871
+ return `${prefix}::${id}`;
15872
+ }
15873
+ function qualifySubsystemRef(id, prefix, rootSubsystems) {
15874
+ if (prefix && !id.includes("::") && id === prefix.split("::").pop()) return prefix;
15875
+ return qualifyId(id, prefix, rootSubsystems);
15876
+ }
15831
15877
  function splitNamespace(qualifiedId2) {
15832
15878
  if (!qualifiedId2.includes("::")) {
15833
15879
  return { prefix: "", localId: qualifiedId2 };
@@ -16228,7 +16274,14 @@ function buildProjectGraph(level) {
16228
16274
  return buildGraphModel(level);
16229
16275
  }
16230
16276
  function resolveChainingParent() {
16231
- return findChainingParent(getProjectRoot());
16277
+ const reach = getRequestParentReach();
16278
+ if (reach && !reach.parentReach) return null;
16279
+ const parent = findChainingParent(getProjectRoot());
16280
+ if (parent && reach?.topRoot) {
16281
+ const fromTop = path19.relative(path19.resolve(reach.topRoot), path19.resolve(parent.parentRoot));
16282
+ if (fromTop === ".." || fromTop.startsWith(`..${path19.sep}`) || path19.isAbsolute(fromTop)) return null;
16283
+ }
16284
+ return parent;
16232
16285
  }
16233
16286
  function computeGateStateId() {
16234
16287
  let gate = {};
@@ -16293,7 +16346,7 @@ function findLegacySpecFiles() {
16293
16346
  function updateSpec(kind, id, delta, hooks) {
16294
16347
  return current().updateSpec(kind, id, delta, hooks);
16295
16348
  }
16296
- var fs13, path19, SIGNATURE_TTL_MS, SpecWorkspace, workspaces;
16349
+ var fs13, path19, NO_ROOT_SUBSYSTEMS, SIGNATURE_TTL_MS, SpecWorkspace, workspaces;
16297
16350
  var init_specs2 = __esm({
16298
16351
  "src/core/specs.ts"() {
16299
16352
  "use strict";
@@ -16308,6 +16361,7 @@ var init_specs2 = __esm({
16308
16361
  init_models();
16309
16362
  init_narrative_labels();
16310
16363
  init_diagram();
16364
+ NO_ROOT_SUBSYSTEMS = /* @__PURE__ */ new Set();
16311
16365
  SIGNATURE_TTL_MS = 2e3;
16312
16366
  SpecWorkspace = class {
16313
16367
  constructor(rootDir) {
@@ -16457,7 +16511,7 @@ var init_specs2 = __esm({
16457
16511
  }
16458
16512
  }
16459
16513
  index.subsystems = index.subsystems.map((sub) => {
16460
- const qualifiedSubId = namespacePrefix ? qualifyId(sub.id, namespacePrefix, this.rootSubsystems) : sub.id;
16514
+ const qualifiedSubId = namespacePrefix ? qualifyDeclaredId(sub.id, namespacePrefix, true) : sub.id;
16461
16515
  const componentPrefix = sub.projectPath ? qualifiedSubId : namespacePrefix;
16462
16516
  return {
16463
16517
  ...sub,
@@ -16476,14 +16530,14 @@ var init_specs2 = __esm({
16476
16530
  const originalSubsystemPaths = index.paths.subsystem;
16477
16531
  index.paths.subsystem = {};
16478
16532
  for (const [k, v] of Object.entries(originalSubsystemPaths)) {
16479
- const qualifiedK = namespacePrefix ? qualifyId(k, namespacePrefix, this.rootSubsystems) : k;
16533
+ const qualifiedK = namespacePrefix ? qualifyDeclaredId(k, namespacePrefix, true) : k;
16480
16534
  index.paths.subsystem[qualifiedK] = v;
16481
16535
  }
16482
16536
  if (namespacePrefix) {
16483
16537
  index.components = index.components.map((comp) => ({
16484
16538
  ...comp,
16485
- id: qualifyId(comp.id, namespacePrefix, this.rootSubsystems),
16486
- subsystem: qualifyId(comp.subsystem, namespacePrefix, this.rootSubsystems),
16539
+ id: qualifyDeclaredId(comp.id, namespacePrefix),
16540
+ subsystem: qualifySubsystemRef(comp.subsystem, namespacePrefix, this.rootSubsystems),
16487
16541
  owns: comp.owns.map((o) => qualifyId(o, namespacePrefix, this.rootSubsystems)),
16488
16542
  dependsOn: comp.dependsOn.map((d) => qualifyId(d, namespacePrefix, this.rootSubsystems)),
16489
16543
  dispatch: comp.dispatch?.map((b) => ({
@@ -16493,12 +16547,12 @@ var init_specs2 = __esm({
16493
16547
  }));
16494
16548
  index.interfaces = index.interfaces.map((intf) => ({
16495
16549
  ...intf,
16496
- id: qualifyId(intf.id, namespacePrefix, this.rootSubsystems),
16550
+ id: qualifyDeclaredId(intf.id, namespacePrefix),
16497
16551
  component: qualifyId(intf.component, namespacePrefix, this.rootSubsystems)
16498
16552
  }));
16499
16553
  index.implementations = index.implementations.map((impl) => ({
16500
16554
  ...impl,
16501
- id: qualifyId(impl.id, namespacePrefix, this.rootSubsystems),
16555
+ id: qualifyDeclaredId(impl.id, namespacePrefix),
16502
16556
  contract: qualifyId(impl.contract, namespacePrefix, this.rootSubsystems),
16503
16557
  methods: impl.methods.map((m) => ({
16504
16558
  ...m,
@@ -16510,13 +16564,13 @@ var init_specs2 = __esm({
16510
16564
  }));
16511
16565
  index.types = index.types.map((t) => ({
16512
16566
  ...t,
16513
- id: qualifyId(t.id, namespacePrefix, this.rootSubsystems),
16514
- subsystem: t.subsystem ? qualifyId(t.subsystem, namespacePrefix, this.rootSubsystems) : void 0,
16567
+ id: qualifyDeclaredId(t.id, namespacePrefix),
16568
+ subsystem: t.subsystem ? qualifySubsystemRef(t.subsystem, namespacePrefix, this.rootSubsystems) : void 0,
16515
16569
  group: t.group ? qualifyId(t.group, namespacePrefix, this.rootSubsystems) : void 0
16516
16570
  }));
16517
16571
  index.groups = index.groups.map((g) => ({
16518
16572
  ...g,
16519
- id: qualifyId(g.id, namespacePrefix, this.rootSubsystems)
16573
+ id: qualifyDeclaredId(g.id, namespacePrefix)
16520
16574
  }));
16521
16575
  const originalPaths = index.paths;
16522
16576
  index.paths = {
@@ -16528,19 +16582,19 @@ var init_specs2 = __esm({
16528
16582
  group: {}
16529
16583
  };
16530
16584
  for (const [k, v] of Object.entries(originalPaths.component)) {
16531
- index.paths.component[qualifyId(k, namespacePrefix, this.rootSubsystems)] = v;
16585
+ index.paths.component[qualifyDeclaredId(k, namespacePrefix)] = v;
16532
16586
  }
16533
16587
  for (const [k, v] of Object.entries(originalPaths.interface)) {
16534
- index.paths.interface[qualifyId(k, namespacePrefix, this.rootSubsystems)] = v;
16588
+ index.paths.interface[qualifyDeclaredId(k, namespacePrefix)] = v;
16535
16589
  }
16536
16590
  for (const [k, v] of Object.entries(originalPaths.implementation)) {
16537
- index.paths.implementation[qualifyId(k, namespacePrefix, this.rootSubsystems)] = v;
16591
+ index.paths.implementation[qualifyDeclaredId(k, namespacePrefix)] = v;
16538
16592
  }
16539
16593
  for (const [k, v] of Object.entries(originalPaths.type)) {
16540
- index.paths.type[qualifyId(k, namespacePrefix, this.rootSubsystems)] = v;
16594
+ index.paths.type[qualifyDeclaredId(k, namespacePrefix)] = v;
16541
16595
  }
16542
16596
  for (const [k, v] of Object.entries(originalPaths.group)) {
16543
- index.paths.group[qualifyId(k, namespacePrefix, this.rootSubsystems)] = v;
16597
+ index.paths.group[qualifyDeclaredId(k, namespacePrefix)] = v;
16544
16598
  }
16545
16599
  }
16546
16600
  if (currentDepth < maxDepth) {
@@ -26254,6 +26308,7 @@ init_loader();
26254
26308
  init_validation();
26255
26309
  function isCiDraftWaivable(issue2) {
26256
26310
  if (issue2.severity !== "warning") return false;
26311
+ if (issue2.code === "DRAFT_SUBSYSTEM_WARNING") return true;
26257
26312
  if (issue2.code === "DRAFT_COMPONENT_WARNING") return true;
26258
26313
  if (issue2.code === "UNUSED_COMPONENT") return issue2.draftContext === true;
26259
26314
  return false;
@@ -27727,7 +27782,7 @@ init_logger();
27727
27782
  init_validation();
27728
27783
  init_extensions();
27729
27784
  init_loader();
27730
- async function listRules2() {
27785
+ async function listRules3() {
27731
27786
  let overrides = {};
27732
27787
  if (isProjectInitialized()) {
27733
27788
  try {
@@ -27742,7 +27797,7 @@ async function listRules2() {
27742
27797
  };
27743
27798
  const ext = loadProjectExtensions();
27744
27799
  const packRuleNames = new Set(ext.rules.map((r) => r.name));
27745
- const active = listRules();
27800
+ const active = listRules2();
27746
27801
  const builtin = active.filter((r) => !packRuleNames.has(r.name));
27747
27802
  const packRules = active.filter((r) => packRuleNames.has(r.name));
27748
27803
  const groups = [
@@ -39902,7 +39957,8 @@ var PROJECT_RECORD_TOOLS = /* @__PURE__ */ new Set([
39902
39957
  "sdd_host_initialize_project",
39903
39958
  "sdd_host_get_approval_status",
39904
39959
  "sdd_host_await_approval",
39905
- ...PROJECT_OPS_TOOLS
39960
+ ...PROJECT_OPS_TOOLS,
39961
+ ...LANDSCAPE_DISCOVERY_TOOLS
39906
39962
  ]);
39907
39963
  function jsonRpcRequests(body) {
39908
39964
  const arr = Array.isArray(body) ? body : [body];
@@ -39930,8 +39986,16 @@ var WRITE_TOOL_PREFIXES = [
39930
39986
  "sdd_move_"
39931
39987
  ];
39932
39988
  var READ_TOOL_PREFIXES = ["sdd_get_", "sdd_validate_"];
39989
+ var READ_TOOL_NAMES = /* @__PURE__ */ new Set([
39990
+ "sdd_list_external_interfaces",
39991
+ "listAgents",
39992
+ "getAgent",
39993
+ "listDomains",
39994
+ "validateTopology",
39995
+ "getProjectConfig"
39996
+ ]);
39933
39997
  function requiredDataPlaneCapability(toolName) {
39934
- if (READ_TOOL_PREFIXES.some((p) => toolName.startsWith(p))) return "project:read";
39998
+ if (READ_TOOL_NAMES.has(toolName) || READ_TOOL_PREFIXES.some((p) => toolName.startsWith(p))) return "project:read";
39935
39999
  if (WRITE_TOOL_PREFIXES.some((p) => toolName.startsWith(p))) return "project:write";
39936
40000
  return "project:write";
39937
40001
  }
@@ -42885,7 +42949,7 @@ program.command("doctor").description("Health check: flags stale generated guide
42885
42949
  await runDoctor({ fix: opts.fix });
42886
42950
  });
42887
42951
  async function runRules() {
42888
- await listRules2();
42952
+ await listRules3();
42889
42953
  }
42890
42954
  async function runPatterns() {
42891
42955
  await listPatterns();