@atlashub/smartstack-cli 4.35.0 → 4.36.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/index.js +28 -32
- package/dist/index.js.map +1 -1
- package/dist/mcp-entry.mjs +29 -10
- package/dist/mcp-entry.mjs.map +1 -1
- package/package.json +1 -1
- package/templates/skills/apex/references/checks/seed-checks.sh +1 -1
- package/templates/skills/apex/references/core-seed-data.md +39 -21
- package/templates/skills/application/references/application-roles-template.md +14 -8
- package/templates/skills/application/references/provider-template.md +32 -20
- package/templates/skills/application/templates-frontend.md +294 -2
- package/templates/skills/application/templates-seed.md +23 -11
- package/templates/skills/audit-route/SKILL.md +107 -0
- package/templates/skills/audit-route/references/routing-pattern.md +129 -0
- package/templates/skills/audit-route/steps/step-00-init.md +128 -0
- package/templates/skills/audit-route/steps/step-01-inventory.md +157 -0
- package/templates/skills/audit-route/steps/step-02-conformity.md +193 -0
- package/templates/skills/audit-route/steps/step-03-report.md +201 -0
- package/templates/skills/dev-start/SKILL.md +12 -2
- package/templates/skills/efcore/SKILL.md +219 -67
- package/templates/agents/efcore/conflicts.md +0 -114
- package/templates/agents/efcore/db-deploy.md +0 -86
- package/templates/agents/efcore/db-reset.md +0 -98
- package/templates/agents/efcore/db-seed.md +0 -73
- package/templates/agents/efcore/db-status.md +0 -97
- package/templates/agents/efcore/scan.md +0 -124
- package/templates/skills/efcore/references/both-contexts.md +0 -32
- package/templates/skills/efcore/references/destructive-operations.md +0 -38
- package/templates/skills/efcore/steps/db/step-deploy.md +0 -217
- package/templates/skills/efcore/steps/db/step-reset.md +0 -186
- package/templates/skills/efcore/steps/db/step-seed.md +0 -166
- package/templates/skills/efcore/steps/db/step-status.md +0 -173
- package/templates/skills/efcore/steps/migration/step-00-init.md +0 -102
- package/templates/skills/efcore/steps/migration/step-01-check.md +0 -164
- package/templates/skills/efcore/steps/migration/step-02-create.md +0 -160
- package/templates/skills/efcore/steps/migration/step-03-validate.md +0 -168
- package/templates/skills/efcore/steps/rebase-snapshot/step-00-init.md +0 -173
- package/templates/skills/efcore/steps/rebase-snapshot/step-01-backup.md +0 -100
- package/templates/skills/efcore/steps/rebase-snapshot/step-02-fetch.md +0 -115
- package/templates/skills/efcore/steps/rebase-snapshot/step-03-create.md +0 -112
- package/templates/skills/efcore/steps/rebase-snapshot/step-04-validate.md +0 -157
- package/templates/skills/efcore/steps/shared/step-00-init.md +0 -131
- package/templates/skills/efcore/steps/squash/step-00-init.md +0 -141
- package/templates/skills/efcore/steps/squash/step-01-backup.md +0 -120
- package/templates/skills/efcore/steps/squash/step-02-fetch.md +0 -168
- package/templates/skills/efcore/steps/squash/step-03-create.md +0 -184
- package/templates/skills/efcore/steps/squash/step-04-validate.md +0 -174
package/dist/index.js
CHANGED
|
@@ -117240,6 +117240,7 @@ async function createFrontendStructure(config, state, dryRun) {
|
|
|
117240
117240
|
await import_fs_extra6.default.ensureDir((0, import_path7.join)(webDir, "src", "hooks"));
|
|
117241
117241
|
await import_fs_extra6.default.ensureDir((0, import_path7.join)(webDir, "src", "types"));
|
|
117242
117242
|
await import_fs_extra6.default.ensureDir((0, import_path7.join)(webDir, "src", "i18n"));
|
|
117243
|
+
await import_fs_extra6.default.ensureDir((0, import_path7.join)(webDir, "src", "extensions"));
|
|
117243
117244
|
await import_fs_extra6.default.ensureDir((0, import_path7.join)(webDir, "public"));
|
|
117244
117245
|
const packageJson = {
|
|
117245
117246
|
name: `${projectName.toLowerCase()}-web`,
|
|
@@ -117464,6 +117465,7 @@ import { createRoot } from 'react-dom/client';
|
|
|
117464
117465
|
import { BrowserRouter } from 'react-router-dom';
|
|
117465
117466
|
import { SmartStackProvider } from '@atlashub/smartstack';
|
|
117466
117467
|
import '@atlashub/smartstack/styles.css';
|
|
117468
|
+
import './extensions/componentRegistry.generated';
|
|
117467
117469
|
import App from './App';
|
|
117468
117470
|
import './index.css';
|
|
117469
117471
|
import './i18n';
|
|
@@ -117487,43 +117489,22 @@ createRoot(document.getElementById('root')!).render(
|
|
|
117487
117489
|
const main_result = await safeWriteFile((0, import_path7.join)(webDir, "src", "main.tsx"), mainTsx, findKnownHash(state, "frontend", main_relPath));
|
|
117488
117490
|
logSafeWriteResult(main_relPath, main_result);
|
|
117489
117491
|
recordFile(state, "frontend", main_relPath, main_result.hash);
|
|
117490
|
-
const appTsx = `import {
|
|
117491
|
-
import { mergeRoutes } from '@atlashub/smartstack';
|
|
117492
|
-
import type { RouteConfig, ApplicationRouteExtensions } from '@atlashub/smartstack';
|
|
117493
|
-
|
|
117494
|
-
/**
|
|
117495
|
-
* Client-specific routes (outside SmartStack locked applications)
|
|
117496
|
-
* Add your custom routes here. Locked SmartStack paths cannot be overridden.
|
|
117497
|
-
*/
|
|
117498
|
-
const clientRoutes: RouteConfig[] = [
|
|
117499
|
-
// Redirect root to login page
|
|
117500
|
-
{ path: '/', element: <Navigate to="/login" replace /> },
|
|
117501
|
-
// Add your custom routes below:
|
|
117502
|
-
// { path: '/about', element: <AboutPage /> },
|
|
117503
|
-
];
|
|
117504
|
-
|
|
117505
|
-
/**
|
|
117506
|
-
* Application-scoped route extensions
|
|
117507
|
-
* Add your routes here.
|
|
117508
|
-
* Paths are RELATIVE to the application root.
|
|
117509
|
-
* Example: 'users/list' (NOT '/administration/users/list')
|
|
117510
|
-
*/
|
|
117511
|
-
const applicationRoutes: ApplicationRouteExtensions = {
|
|
117512
|
-
// sales: [],
|
|
117513
|
-
// administration: [],
|
|
117514
|
-
};
|
|
117515
|
-
|
|
117516
|
-
/**
|
|
117517
|
-
* Merged routes combining client, application extensions, and SmartStack core routes
|
|
117518
|
-
*/
|
|
117519
|
-
const routes = mergeRoutes(clientRoutes, applicationRoutes);
|
|
117492
|
+
const appTsx = `import { DynamicRouter } from '@atlashub/smartstack';
|
|
117520
117493
|
|
|
117521
117494
|
/**
|
|
117522
117495
|
* App - Main application component
|
|
117496
|
+
*
|
|
117497
|
+
* DynamicRouter generates routes from the /api/navigation/menu response.
|
|
117498
|
+
* Pages are resolved via PageRegistry \u2014 register them in componentRegistry.generated.ts.
|
|
117499
|
+
*
|
|
117500
|
+
* To add custom pages:
|
|
117501
|
+
* 1. Create your page component in src/pages/
|
|
117502
|
+
* 2. Register it with PageRegistry.register('your.page.key', lazy(() => import('./pages/YourPage')))
|
|
117503
|
+
* 3. Add navigation seed data with matching ComponentKey in the backend
|
|
117504
|
+
* 4. DynamicRouter resolves it automatically \u2014 no manual route wiring needed
|
|
117523
117505
|
*/
|
|
117524
117506
|
function App() {
|
|
117525
|
-
|
|
117526
|
-
return element;
|
|
117507
|
+
return <DynamicRouter />;
|
|
117527
117508
|
}
|
|
117528
117509
|
|
|
117529
117510
|
export default App;
|
|
@@ -117532,6 +117513,21 @@ export default App;
|
|
|
117532
117513
|
const app_result = await safeWriteFile((0, import_path7.join)(webDir, "src", "App.tsx"), appTsx, findKnownHash(state, "frontend", app_relPath));
|
|
117533
117514
|
logSafeWriteResult(app_relPath, app_result);
|
|
117534
117515
|
recordFile(state, "frontend", app_relPath, app_result.hash);
|
|
117516
|
+
const componentRegistryTs = `/**
|
|
117517
|
+
* Component Registry
|
|
117518
|
+
*
|
|
117519
|
+
* Auto-generated by SmartStack MCP - DO NOT EDIT MANUALLY
|
|
117520
|
+
* Run \`scaffold_routes\` to regenerate with your project's pages.
|
|
117521
|
+
*/
|
|
117522
|
+
import { PageRegistry } from '@atlashub/smartstack';
|
|
117523
|
+
|
|
117524
|
+
// Register your pages here (auto-generated by scaffold_routes):
|
|
117525
|
+
// PageRegistry.register('your.page.key', lazy(() => import('./pages/YourPage').then(m => ({ default: m.YourPage }))));
|
|
117526
|
+
`;
|
|
117527
|
+
const registry_relPath = `${webRelPrefix}/src/extensions/componentRegistry.generated.ts`;
|
|
117528
|
+
const registry_result = await safeWriteFile((0, import_path7.join)(webDir, "src", "extensions", "componentRegistry.generated.ts"), componentRegistryTs, findKnownHash(state, "frontend", registry_relPath));
|
|
117529
|
+
logSafeWriteResult(registry_relPath, registry_result);
|
|
117530
|
+
recordFile(state, "frontend", registry_relPath, registry_result.hash);
|
|
117535
117531
|
const indexCss = `@import "tailwindcss";
|
|
117536
117532
|
@source "../node_modules/@atlashub/smartstack/dist/**/*.js";
|
|
117537
117533
|
@custom-variant dark (&:where(.dark, .dark *));
|