@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 +113 -49
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +98 -44
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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.
|
|
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
|
|
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
|
|
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: () =>
|
|
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
|
|
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
|
|
15046
|
-
const chainingParent = crossTree !== "off" && issues.some(
|
|
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
|
|
15050
|
-
|
|
15051
|
-
const
|
|
15052
|
-
if (
|
|
15053
|
-
|
|
15054
|
-
|
|
15055
|
-
|
|
15056
|
-
|
|
15057
|
-
|
|
15058
|
-
|
|
15059
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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 ?
|
|
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 ?
|
|
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:
|
|
16486
|
-
subsystem:
|
|
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:
|
|
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:
|
|
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:
|
|
16514
|
-
subsystem: t.subsystem ?
|
|
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:
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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
|
|
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 =
|
|
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
|
|
42952
|
+
await listRules3();
|
|
42889
42953
|
}
|
|
42890
42954
|
async function runPatterns() {
|
|
42891
42955
|
await listPatterns();
|