@atlashub/smartstack-cli 3.34.0 → 3.35.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/.documentation/init.html +409 -0
- package/dist/index.js +32 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +7 -24
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +1 -2
- package/templates/mcp-scaffolding/controller.cs.hbs +5 -1
- package/templates/skills/apex/SKILL.md +3 -3
- package/templates/skills/apex/references/post-checks.md +225 -0
- package/templates/skills/apex/references/smartstack-api.md +29 -1
- package/templates/skills/apex/references/smartstack-frontend.md +27 -0
- package/templates/skills/apex/references/smartstack-layers.md +18 -2
- package/templates/skills/apex/steps/step-00-init.md +73 -0
- package/templates/skills/apex/steps/step-01-analyze.md +21 -0
- package/templates/skills/apex/steps/step-03-execute.md +72 -5
- package/templates/skills/apex/steps/step-04-examine.md +7 -1
- package/templates/skills/business-analyse/SKILL.md +4 -3
- package/templates/skills/business-analyse/_shared.md +9 -0
- package/templates/skills/business-analyse/schemas/application-schema.json +13 -0
- package/templates/skills/business-analyse/steps/step-00-init.md +190 -34
- package/templates/skills/business-analyse/steps/step-01-cadrage.md +129 -10
- package/templates/skills/business-analyse/steps/step-01b-applications.md +184 -13
- package/templates/skills/business-analyse/steps/step-03c-compile.md +14 -2
- package/templates/skills/business-analyse/steps/step-03d-validate.md +5 -1
- package/templates/skills/ralph-loop/SKILL.md +5 -0
- package/templates/skills/ralph-loop/references/category-rules.md +29 -0
- package/templates/skills/ralph-loop/references/compact-loop.md +85 -2
- package/templates/skills/ralph-loop/references/section-splitting.md +439 -0
- package/templates/skills/ralph-loop/steps/step-01-task.md +27 -0
- package/templates/skills/ralph-loop/steps/step-02-execute.md +45 -1
- package/templates/skills/ralph-loop/steps/step-05-report.md +19 -0
- package/scripts/health-check.sh +0 -168
- package/scripts/postinstall.js +0 -18
package/dist/mcp-entry.mjs
CHANGED
|
@@ -27176,7 +27176,6 @@ async function validateControllerRoutes(structure, _config, result) {
|
|
|
27176
27176
|
const navRouteMatch = content.match(/\[NavRoute\s*\(\s*"([^"]+)"(?:\s*,\s*Suffix\s*=\s*"([^"]+)")?\s*\)\]/);
|
|
27177
27177
|
if (navRouteMatch) {
|
|
27178
27178
|
const routePath = navRouteMatch[1];
|
|
27179
|
-
const suffix = navRouteMatch[2];
|
|
27180
27179
|
const parts = routePath.split(".");
|
|
27181
27180
|
if (parts.length < 2) {
|
|
27182
27181
|
result.warnings.push({
|
|
@@ -27197,26 +27196,14 @@ async function validateControllerRoutes(structure, _config, result) {
|
|
|
27197
27196
|
suggestion: 'NavRoute paths must be lowercase (e.g., "platform.administration.users")'
|
|
27198
27197
|
});
|
|
27199
27198
|
}
|
|
27200
|
-
const expectedRoute = `api/${routePath.replace(/\./g, "/")}${suffix ? `/${suffix}` : ""}`;
|
|
27201
27199
|
const routeAttrMatch = content.match(/\[Route\s*\(\s*"([^"]+)"\s*\)\]/);
|
|
27202
27200
|
if (routeAttrMatch) {
|
|
27203
|
-
|
|
27204
|
-
|
|
27205
|
-
result.errors.push({
|
|
27206
|
-
type: "error",
|
|
27207
|
-
category: "controllers",
|
|
27208
|
-
message: `Controller "${fileName}" has [Route("${actualRoute}")] that doesn't match NavRoute "${routePath}". Expected [Route("${expectedRoute}")]`,
|
|
27209
|
-
file: path8.relative(structure.root, file),
|
|
27210
|
-
suggestion: `Change [Route] to [Route("${expectedRoute}")] to match the NavRoute convention`
|
|
27211
|
-
});
|
|
27212
|
-
}
|
|
27213
|
-
} else {
|
|
27214
|
-
result.warnings.push({
|
|
27215
|
-
type: "warning",
|
|
27201
|
+
result.errors.push({
|
|
27202
|
+
type: "error",
|
|
27216
27203
|
category: "controllers",
|
|
27217
|
-
message: `Controller "${fileName}" has [
|
|
27204
|
+
message: `Controller "${fileName}" has BOTH [Route("${routeAttrMatch[1]}")] and [NavRoute("${routePath}")]. Only [NavRoute] should be used.`,
|
|
27218
27205
|
file: path8.relative(structure.root, file),
|
|
27219
|
-
suggestion: `
|
|
27206
|
+
suggestion: `Remove [Route("${routeAttrMatch[1]}")] \u2014 [NavRoute("${routePath}")] resolves the route dynamically from the database at startup`
|
|
27220
27207
|
});
|
|
27221
27208
|
}
|
|
27222
27209
|
}
|
|
@@ -57631,7 +57618,6 @@ async function discoverNavRoutes(structure, scope, warnings) {
|
|
|
57631
57618
|
permissions.push(match2[1]);
|
|
57632
57619
|
}
|
|
57633
57620
|
const fullNavRoute = suffix ? `${navRoute}.${suffix}` : navRoute;
|
|
57634
|
-
const expectedRoute = `api/${navRouteToUrlPath(navRoute)}${suffix ? `/${toKebabCase(suffix)}` : ""}`;
|
|
57635
57621
|
routes.push({
|
|
57636
57622
|
navRoute: fullNavRoute,
|
|
57637
57623
|
apiPath: `/api/${navRouteToUrlPath(navRoute)}${suffix ? `/${toKebabCase(suffix)}` : ""}`,
|
|
@@ -57642,12 +57628,9 @@ async function discoverNavRoutes(structure, scope, warnings) {
|
|
|
57642
57628
|
});
|
|
57643
57629
|
const routeAttrMatch = content.match(/\[Route\s*\(\s*"([^"]+)"\s*\)\]/);
|
|
57644
57630
|
if (routeAttrMatch && warnings) {
|
|
57645
|
-
|
|
57646
|
-
|
|
57647
|
-
|
|
57648
|
-
`WARNING: ${controllerName}Controller has [Route("${actualRoute}")] that doesn't match NavRoute "${navRoute}". Expected [Route("${expectedRoute}")]`
|
|
57649
|
-
);
|
|
57650
|
-
}
|
|
57631
|
+
warnings.push(
|
|
57632
|
+
`WARNING: ${controllerName}Controller has [Route("${routeAttrMatch[1]}")] alongside [NavRoute]. Remove [Route] \u2014 NavRoute resolves routes dynamically from the database.`
|
|
57633
|
+
);
|
|
57651
57634
|
}
|
|
57652
57635
|
}
|
|
57653
57636
|
} catch {
|