@loom-framework/core 0.1.0-alpha.165 → 0.1.0-alpha.166

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.
Files changed (57) hide show
  1. package/builtin-skills/loom/SKILL.md +9 -6
  2. package/builtin-skills/loom/references/eject.md +102 -0
  3. package/dist/cli/commands/eject.d.ts.map +1 -1
  4. package/dist/cli/commands/eject.js +52 -285
  5. package/dist/cli/commands/eject.js.map +1 -1
  6. package/dist/cli/commands/generate-system-settings.d.ts +3 -3
  7. package/dist/cli/commands/generate-system-settings.d.ts.map +1 -1
  8. package/dist/cli/commands/generate-system-settings.js +29 -204
  9. package/dist/cli/commands/generate-system-settings.js.map +1 -1
  10. package/dist/cli/commands/init.d.ts.map +1 -1
  11. package/dist/cli/commands/init.js +27 -44
  12. package/dist/cli/commands/init.js.map +1 -1
  13. package/dist/cli/helpers/app-tsx-utils.d.ts +12 -0
  14. package/dist/cli/helpers/app-tsx-utils.d.ts.map +1 -0
  15. package/dist/cli/helpers/app-tsx-utils.js +22 -0
  16. package/dist/cli/helpers/app-tsx-utils.js.map +1 -0
  17. package/dist/cli/helpers/app-tsx-wiring-engine.d.ts +70 -0
  18. package/dist/cli/helpers/app-tsx-wiring-engine.d.ts.map +1 -0
  19. package/dist/cli/helpers/app-tsx-wiring-engine.js +546 -0
  20. package/dist/cli/helpers/app-tsx-wiring-engine.js.map +1 -0
  21. package/dist/cli/helpers/app-tsx-wiring.d.ts +4 -39
  22. package/dist/cli/helpers/app-tsx-wiring.d.ts.map +1 -1
  23. package/dist/cli/helpers/app-tsx-wiring.js +5 -608
  24. package/dist/cli/helpers/app-tsx-wiring.js.map +1 -1
  25. package/dist/cli/helpers/system-page-config.d.ts +27 -0
  26. package/dist/cli/helpers/system-page-config.d.ts.map +1 -0
  27. package/dist/cli/helpers/system-page-config.js +73 -0
  28. package/dist/cli/helpers/system-page-config.js.map +1 -0
  29. package/dist/cli/templates/login-page.d.ts +2 -3
  30. package/dist/cli/templates/login-page.d.ts.map +1 -1
  31. package/dist/cli/templates/login-page.js +18 -29
  32. package/dist/cli/templates/login-page.js.map +1 -1
  33. package/dist/cli/templates/model-management-page.d.ts +2 -3
  34. package/dist/cli/templates/model-management-page.d.ts.map +1 -1
  35. package/dist/cli/templates/model-management-page.js +11 -9
  36. package/dist/cli/templates/model-management-page.js.map +1 -1
  37. package/dist/cli/templates/notification-center-page.d.ts +2 -3
  38. package/dist/cli/templates/notification-center-page.d.ts.map +1 -1
  39. package/dist/cli/templates/notification-center-page.js +25 -62
  40. package/dist/cli/templates/notification-center-page.js.map +1 -1
  41. package/dist/cli/templates/notification-detail-page.d.ts +2 -3
  42. package/dist/cli/templates/notification-detail-page.d.ts.map +1 -1
  43. package/dist/cli/templates/notification-detail-page.js +13 -41
  44. package/dist/cli/templates/notification-detail-page.js.map +1 -1
  45. package/dist/cli/templates/process-management-page.d.ts +3 -3
  46. package/dist/cli/templates/process-management-page.d.ts.map +1 -1
  47. package/dist/cli/templates/process-management-page.js +75 -565
  48. package/dist/cli/templates/process-management-page.js.map +1 -1
  49. package/dist/cli/templates/skill-management-page.d.ts +2 -3
  50. package/dist/cli/templates/skill-management-page.d.ts.map +1 -1
  51. package/dist/cli/templates/skill-management-page.js +12 -15
  52. package/dist/cli/templates/skill-management-page.js.map +1 -1
  53. package/dist/cli/templates/user-management-page.d.ts +2 -4
  54. package/dist/cli/templates/user-management-page.d.ts.map +1 -1
  55. package/dist/cli/templates/user-management-page.js +21 -22
  56. package/dist/cli/templates/user-management-page.js.map +1 -1
  57. package/package.json +4 -2
@@ -35,7 +35,7 @@ Loom 是**配置驱动的 AI 平台开发框架**——你描述需求,AI 通
35
35
  npx -p @loom-framework/core loom init <name> --description <desc> --adapter <filesystem|sqlite>
36
36
  ```
37
37
 
38
- 项目初始化时自动生成系统管理页面(模型管理、技能管理、用户管理、过程管理),并以子菜单形式接入导航。同时自动安装以下内置 Skill:
38
+ 项目初始化时自动生成系统管理页面(模型管理、技能管理、用户管理、过程管理、通知中心),并以子菜单形式接入导航。同时自动安装以下内置 Skill:
39
39
 
40
40
  | Skill | 触发场景 | 说明 |
41
41
  |-------|---------|------|
@@ -107,7 +107,7 @@ loom generate capabilities
107
107
  1. **询问需求**:是否需要登录功能?有哪些角色?每个角色能做什么?
108
108
  2. **编辑配置**:在 `loom.config.ts` 中添加 `auth` 字段(Schema 见上方)。至少定义一个 `admin` 角色
109
109
  3. **设置密钥**:`secret` 推荐 `env:JWT_SECRET`,不要硬编码。提醒用户设置环境变量 `export JWT_SECRET=your-secret`
110
- 4. **生成认证页面**:`loom generate system-settings user` — 自动生成用户管理页、登录页,并接入 AuthProvider 路由守卫
110
+ 4. **生成认证页面**:`loom generate system-settings user` — 自动接入用户管理页和登录页的 npm import,并接入 AuthProvider 路由守卫
111
111
  5. **重启后端**:auth 配置需要重启后端生效(**必须先询问用户**)
112
112
  6. **首次登录**:默认创建 admin 用户(密码 `admin123`),**提醒用户立即修改密码**
113
113
  7. **生成 app-skill**:`loom generate capabilities` 更新 Skill 中的 auth.md
@@ -153,6 +153,10 @@ loom generate page <Name> --model <model-name> --force
153
153
 
154
154
  **恢复备份**:`--force` 覆盖的文件自动备份到项目 `.loom/backup/<时间戳>/` 目录(每次 --force 生成独立时间戳目录,同一天多次执行互不影响),如需恢复:`cp .loom/backup/<时间戳>/XXX.tsx frontend/src/components/pages/XXX.tsx`
155
155
 
156
+ ### 6. 系统页面定制(Eject)
157
+
158
+ 系统管理页面默认以 npm 组件接入,无法直接修改。需要定制时 eject 为本地文件,恢复时 uneject。详见 `references/eject.md`。
159
+
156
160
  ### 内置 Skill 使用原则
157
161
 
158
162
  - 涉及前端页面开发 → 先用 `/antd` 查询组件 API,不要凭记忆写代码
@@ -170,11 +174,10 @@ loom generate page <Name> --model <model-name> --force
170
174
  | `loom generate capabilities` | 生成应用 Skill(`references/models.md` + `references/data-semantics.md`,`SKILL.md` 仅首次创建不覆盖) |
171
175
  | `loom generate dashboard <name>` | 从 loom.config.ts dashboards 生成 Dashboard 页面 |
172
176
  | `loom generate dashboard <name> --force` | 重建 Dashboard 页面(自动备份旧文件到 `.loom/backup/`) |
173
- | `loom generate system-settings <model\|skill\|user\|process>` | 生成系统管理页面(模型管理、技能管理、用户管理或过程管理),首次调用创建子菜单,后续调用追加子页面;`user` 类型同时生成登录页和 AuthProvider 接线 |
174
- | `loom generate system-settings <model\|skill\|user\|process> --force` | 重建系统管理页面(自动备份旧文件到 `.loom/backup/`) |
177
+ | `loom generate system-settings <type>` | 将系统页面接入 App.tsx(npm import 接线),type: `model`/`skill`/`user`/`login`/`process`/`notification`;`user` 同时接入 AuthProvider 路由守卫,`notification` 同时接入 NotificationCenterProvider |
175
178
  | `loom generate skill <name>` | 生成自定义 Skill 脚架 |
176
- | `loom eject system-settings <type>` | 将系统页面从 npm 组件切换为本地文件(可自由编辑),type: `model`/`skill`/`user`/`login`/`process`/`notification` |
177
- | `loom uneject system-settings <type>` | 删除本地文件,恢复为 npm 组件(修改过的需 `--force`,操作前自动备份) |
179
+ | `loom eject system-settings <type>` | 将系统页面从 npm 组件切换为本地文件(可自由编辑),type: `model`/`skill`/`user`/`login`/`process`/`notification`。详见 `references/eject.md` |
180
+ | `loom uneject system-settings <type>` | 删除本地文件,恢复为 npm 组件(修改过的需 `--force`,操作前自动备份)。详见 `references/eject.md` |
178
181
  | `loom data read <model>` | 查询数据(`--filter` 筛选、`--limit` 限制条数、`--sort` 排序) |
179
182
  | `loom data write <model> --data '<json>'` | 创建记录 |
180
183
  | `loom data update <model> <id> --data '<json>'` | 更新记录 |
@@ -0,0 +1,102 @@
1
+ # System Page Eject — 定制化参考
2
+
3
+ 系统管理页面默认以 npm 组件形式接入 App.tsx,不支持直接修改。Eject 机制将页面输出为本地 .tsx 文件,切换 import 来源,使页面可自由定制。
4
+
5
+ ## 页面类型
6
+
7
+ | type | 组件名 | npmComponent | 接线方式 | 说明 |
8
+ |--------------|---------------------|---------------------------|---------------|-----------------------------------|
9
+ | model | ModelManagement | ModelManagementPage | sidebar-nav | 系统配置子菜单 |
10
+ | skill | SkillManagement | SkillManagementPage | sidebar-nav | 系统配置子菜单 |
11
+ | user | UserManagement | UserManagementPage | sidebar-nav | 自动接入 AuthProvider |
12
+ | login | Login | LoginPage | auth-fallback | AuthGuard 的 fallback,无导航入口 |
13
+ | process | ProcessManagement | ProcessManagementPage | sidebar-nav | 系统配置子菜单 |
14
+ | notification | NotificationCenter | NotificationCenterPage | skip-nav | 通知铃铛触发,无导航入口 |
15
+
16
+ notification eject 时同时生成 NotificationCenter + NotificationDetail 两个文件。
17
+
18
+ ## 命令
19
+
20
+ ```bash
21
+ # eject: npm 组件 → 本地文件(可编辑)
22
+ loom eject system-settings <type>
23
+
24
+ # uneject: 本地文件 → npm 组件(已修改需 --force)
25
+ loom uneject system-settings <type> [--force]
26
+
27
+ # 接入 App.tsx(npm import 接线,init 时自动执行)
28
+ loom generate system-settings <type>
29
+ ```
30
+
31
+ ## Eject/Uneject 对 App.tsx 的影响
32
+
33
+ ### eject 前
34
+
35
+ ```tsx
36
+ import { ModelManagementPage } from '@loom-framework/frontend-antd';
37
+ // ...
38
+ case 'model-management': return <ModelManagementPage />;
39
+ ```
40
+
41
+ ### eject 后
42
+
43
+ ```tsx
44
+ import ModelManagementPage from './components/pages/ModelManagement';
45
+ // ...
46
+ case 'model-management': return <ModelManagementPage />;
47
+ ```
48
+
49
+ 本地文件出现在 `frontend/src/components/pages/<PascalName>.tsx`。
50
+
51
+ ### uneject 后
52
+
53
+ 本地文件删除,import 恢复为 npm 路径。
54
+
55
+ ## 定制化操作指南
56
+
57
+ ### 修改页面布局或样式
58
+
59
+ 1. 执行 `loom eject system-settings <type>`
60
+ 2. 编辑 `frontend/src/components/pages/` 下的 .tsx 文件
61
+ 3. 运行 `loom dev` 查看效果
62
+
63
+ ### 使用框架子组件
64
+
65
+ eject 后的文件 import 来自 `@loom-framework/frontend-antd`,可直接使用框架子组件:
66
+
67
+ ```tsx
68
+ import { ProcessTree, ProcessOverview, ProcessLogs, ProcessMetrics } from '@loom-framework/frontend-antd';
69
+ ```
70
+
71
+ 可用的 hook:`useData`, `useSchema`, `useLocale`, `useModels`, `useChartData`。
72
+
73
+ ### 替换子组件
74
+
75
+ 将 import 替换为自定义实现:
76
+
77
+ ```tsx
78
+ // 替换前
79
+ import { ProcessTree } from '@loom-framework/frontend-antd';
80
+ // 替换后
81
+ import { MyCustomTree } from './MyCustomTree';
82
+ ```
83
+
84
+ ### 添加自定义管理页面
85
+
86
+ 内置的 6 种系统页面 type(model/skill/user/login/process/notification)由框架预定义,用户无法新增 type。如需框架未提供的管理页面,根据场景选择:
87
+
88
+ **数据驱动页面**(对应一个数据模型,需要增删改查)→ 在 `loom.config.ts` 中添加模型定义,然后 `loom generate page <Name> --model <model>` 生成 CRUD 页面 + API + 导航
89
+
90
+ **纯 UI 页面**(不对应数据模型,如审批流程、配置向导)→ 手动创建 `frontend/src/components/pages/MyPage.tsx`,然后在 App.tsx 中添加 import、导航项和路由
91
+
92
+ ## 安全机制
93
+
94
+ - eject 时自动保存校验和到 `.loom/checksums/`
95
+ - uneject 时校验:未修改可直接删除,已修改需 `--force`
96
+ - 所有操作前自动备份到 `.loom/backup/`
97
+
98
+ ## WiringMode 说明
99
+
100
+ - **sidebar-nav**: 添加到系统配置子菜单,有导航入口、switch case、breadcrumb
101
+ - **auth-fallback**: 作为 `<AuthGuard fallback={<Login />}>` 注入,无导航入口
102
+ - **skip-nav**: 无导航入口(通过其他 UI 触发),但有 switch case 和 breadcrumb
@@ -1 +1 @@
1
- {"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eject.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwYzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0I3D"}
1
+ {"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eject.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6G3D"}
@@ -14,72 +14,29 @@ import crypto from 'crypto';
14
14
  import { resolveProjectRoot } from '../utils.js';
15
15
  import { modelManagementPageTemplate, skillManagementPageTemplate, userManagementPageTemplate, processManagementPageTemplate, loginPageTemplate, notificationCenterPageTemplate, notificationDetailPageTemplate } from '../templates/index.js';
16
16
  import { backupFile } from '../helpers/backup.js';
17
- const PAGE_CONFIG = {
18
- model: {
19
- pascalName: 'ModelManagement',
20
- fileName: 'ModelManagement.tsx',
21
- navKey: 'model-management',
22
- navLabelZh: '模型管理',
23
- navLabelEn: 'Model Management',
24
- npmComponent: 'ModelManagementPage',
25
- template: modelManagementPageTemplate,
26
- },
27
- skill: {
28
- pascalName: 'SkillManagement',
29
- fileName: 'SkillManagement.tsx',
30
- navKey: 'skill-management',
31
- navLabelZh: '技能管理',
32
- navLabelEn: 'Skill Management',
33
- npmComponent: 'SkillManagementPage',
34
- template: skillManagementPageTemplate,
35
- },
36
- user: {
37
- pascalName: 'UserManagement',
38
- fileName: 'UserManagement.tsx',
39
- navKey: 'user-management',
40
- navLabelZh: '用户管理',
41
- navLabelEn: 'User Management',
42
- npmComponent: 'UserManagementPage',
43
- template: userManagementPageTemplate,
44
- },
45
- login: {
46
- pascalName: 'Login',
47
- fileName: 'Login.tsx',
48
- // No navKey — Login is rendered by AuthGuard fallback, not in navigation
49
- npmComponent: 'LoginPage',
50
- template: loginPageTemplate,
51
- },
52
- process: {
53
- pascalName: 'ProcessManagement',
54
- fileName: 'ProcessManagement.tsx',
55
- navKey: 'process-management',
56
- navLabelZh: '过程管理',
57
- navLabelEn: 'Process Management',
58
- npmComponent: 'ProcessManagementPage',
59
- template: processManagementPageTemplate,
60
- },
61
- notification: {
62
- pascalName: 'NotificationCenter',
63
- fileName: 'NotificationCenter.tsx',
64
- navKey: 'notifications',
65
- navLabelZh: '通知',
66
- navLabelEn: 'Notifications',
67
- npmComponent: 'NotificationCenterPage',
68
- template: notificationCenterPageTemplate,
69
- extraFiles: [{
70
- pascalName: 'NotificationDetail',
71
- fileName: 'NotificationDetail.tsx',
72
- navKey: 'notification-detail',
73
- navLabelZh: '通知详情',
74
- navLabelEn: 'Notification Detail',
75
- npmComponent: 'NotificationDetailPage',
76
- template: notificationDetailPageTemplate,
77
- }],
78
- },
17
+ import { SYSTEM_PAGE_CONFIG, VALID_SYSTEM_PAGE_TYPES } from '../helpers/system-page-config.js';
18
+ import { wireAppTsx } from '../helpers/app-tsx-wiring-engine.js';
19
+ /** Template map — resolves page type to its template function. */
20
+ const TEMPLATE_MAP = {
21
+ model: modelManagementPageTemplate,
22
+ skill: skillManagementPageTemplate,
23
+ user: userManagementPageTemplate,
24
+ login: loginPageTemplate,
25
+ process: processManagementPageTemplate,
26
+ notification: notificationCenterPageTemplate,
79
27
  };
80
- const VALID_TYPES = Object.keys(PAGE_CONFIG);
28
+ const EXTRA_TEMPLATE_MAP = {
29
+ NotificationDetail: notificationDetailPageTemplate,
30
+ };
31
+ /** Get template function for a config entry (main or extra file). */
32
+ function getTemplateFn(config, pageType) {
33
+ if (pageType && TEMPLATE_MAP[pageType] && SYSTEM_PAGE_CONFIG[pageType].pascalName === config.pascalName) {
34
+ return TEMPLATE_MAP[pageType];
35
+ }
36
+ return EXTRA_TEMPLATE_MAP[config.pascalName];
37
+ }
81
38
  function parsePageType(type) {
82
- if (VALID_TYPES.includes(type))
39
+ if (VALID_SYSTEM_PAGE_TYPES.includes(type))
83
40
  return type;
84
41
  return null;
85
42
  }
@@ -105,132 +62,8 @@ async function deleteChecksum(projectRoot, pascalName) {
105
62
  }
106
63
  catch { /* ignore */ }
107
64
  }
108
- function findLastImportEnd(content) {
109
- const importRegex = /^import\s.+;?\s*$/gm;
110
- let lastMatch = null;
111
- let m;
112
- while ((m = importRegex.exec(content)) !== null) {
113
- lastMatch = m;
114
- }
115
- if (!lastMatch)
116
- return null;
117
- return lastMatch.index + lastMatch[0].length;
118
- }
119
- /**
120
- * Add a name to the npm import from @loom-framework/frontend-antd.
121
- * If the name already exists in any npm import, no-op.
122
- * If no npm import exists, creates a new one.
123
- */
124
- function addNpmImportName(content, name) {
125
- const existingNpmImport = content.match(/import\s*\{([^}]+)\}\s*from\s*'@loom-framework\/frontend-antd';/);
126
- if (existingNpmImport) {
127
- const currentNames = existingNpmImport[1].split(',').map(s => s.trim()).filter(Boolean);
128
- if (currentNames.includes(name))
129
- return content;
130
- const newNames = [...currentNames, name].join(', ');
131
- const newImport = `import { ${newNames} } from '@loom-framework/frontend-antd';`;
132
- return content.replace(existingNpmImport[0], newImport);
133
- }
134
- const importLine = `import { ${name} } from '@loom-framework/frontend-antd';`;
135
- const lastImportEnd = findLastImportEnd(content);
136
- if (lastImportEnd === null)
137
- return content;
138
- return content.slice(0, lastImportEnd) + '\n' + importLine + content.slice(lastImportEnd);
139
- }
140
- /**
141
- * Remove a name from the npm import from @loom-framework/frontend-antd.
142
- */
143
- function removeNpmImportName(content, name) {
144
- const npmImportMatches = content.match(/import\s*\{([^}]+)\}\s*from\s*'@loom-framework\/frontend-antd';/g);
145
- if (!npmImportMatches)
146
- return content;
147
- let modified = content;
148
- for (const importLine of npmImportMatches) {
149
- if (!importLine.includes(name))
150
- continue;
151
- const namesMatch = importLine.match(/import\s*\{([^}]+)\}/);
152
- if (!namesMatch)
153
- continue;
154
- const importNames = namesMatch[1].split(',').map(s => s.trim()).filter(Boolean);
155
- const filtered = importNames.filter(n => n !== name);
156
- if (filtered.length > 0) {
157
- const newImport = `import { ${filtered.join(', ')} } from '@loom-framework/frontend-antd';`;
158
- modified = modified.replace(importLine, newImport);
159
- }
160
- else {
161
- modified = modified.replace(importLine, '');
162
- }
163
- }
164
- return modified;
165
- }
166
- /**
167
- * Add a local import line: import XPage from './components/pages/X';
168
- */
169
- function addLocalImportLine(content, pascalName) {
170
- const importLine = `import ${pascalName}Page from './components/pages/${pascalName}';`;
171
- if (content.includes(importLine))
172
- return content;
173
- const lastImportEnd = findLastImportEnd(content);
174
- if (lastImportEnd === null)
175
- return content;
176
- return content.slice(0, lastImportEnd) + '\n' + importLine + content.slice(lastImportEnd);
177
- }
178
- /**
179
- * Remove a local import line.
180
- */
181
- function removeLocalImportLine(content, pascalName) {
182
- const regex = new RegExp(`import\\s+${pascalName}Page\\s+from\\s*'\\.\\/components\\/pages\\/${pascalName}';\\n?`, 'g');
183
- return content.replace(regex, '');
184
- }
185
- /**
186
- * Replace the switch case for a page.
187
- */
188
- function replaceSwitchCase(content, navKey, oldComponent, newComponent) {
189
- const oldCaseRegex = new RegExp(`case\\s*'${navKey}':\\s*return\\s*<${oldComponent}\\s*\\/?>;`, 'g');
190
- return content.replace(oldCaseRegex, `case '${navKey}': return <${newComponent} />;`);
191
- }
192
- /**
193
- * Remove the switch case for a page.
194
- */
195
- function removeSwitchCase(content, navKey, componentPatterns) {
196
- let modified = content;
197
- for (const pattern of componentPatterns) {
198
- const regex = new RegExp(`\\s*case\\s*'${navKey}':\\s*return\\s*<${pattern}\\s*\\/?>;\\n?`, 'g');
199
- modified = modified.replace(regex, '');
200
- }
201
- return modified;
202
- }
203
- /**
204
- * Add a switch case before the default case.
205
- */
206
- function addSwitchCase(content, navKey, componentName) {
207
- if (content.includes(`case '${navKey}':`))
208
- return content;
209
- const caseLine = ` case '${navKey}': return <${componentName} />;`;
210
- const defaultIdx = content.indexOf('default:');
211
- if (defaultIdx === -1)
212
- return content;
213
- const lineStart = content.lastIndexOf('\n', defaultIdx) + 1;
214
- return content.slice(0, lineStart) + caseLine + '\n' + content.slice(lineStart);
215
- }
216
- /**
217
- * For login eject: add fallback prop to AuthGuard
218
- * <AuthGuard> → <AuthGuard fallback={<Login />}>
219
- */
220
- function addAuthGuardFallback(content) {
221
- if (content.includes('fallback={<Login'))
222
- return content;
223
- return content.replace(/<AuthGuard>/g, '<AuthGuard fallback={<Login />}>');
224
- }
225
- /**
226
- * For login uneject: remove fallback prop from AuthGuard
227
- * <AuthGuard fallback={<Login />}> → <AuthGuard>
228
- */
229
- function removeAuthGuardFallback(content) {
230
- return content.replace(/<AuthGuard\s+fallback=\{<Login\s*\/>\}>/g, '<AuthGuard>');
231
- }
232
- async function ejectSingleFile(projectRoot, pageDir, fileConfig, initialAppContent, force) {
233
- const { pascalName, fileName, navKey, npmComponent, template, isLogin } = fileConfig;
65
+ /** Write a local page file from template and save its checksum. */
66
+ async function writeLocalPage(projectRoot, pageDir, pascalName, fileName, templateFn, force) {
234
67
  const pagePath = path.join(pageDir, fileName);
235
68
  // Check if local file already exists
236
69
  try {
@@ -248,34 +81,14 @@ async function ejectSingleFile(projectRoot, pageDir, fileConfig, initialAppConte
248
81
  catch {
249
82
  // File does not exist, proceed
250
83
  }
251
- // Generate local file from template
252
- const templateContent = template();
84
+ const templateContent = templateFn();
253
85
  await fs.mkdir(pageDir, { recursive: true });
254
86
  await fs.writeFile(pagePath, templateContent, 'utf-8');
255
87
  await saveChecksum(projectRoot, pascalName, templateContent);
256
88
  console.log(chalk.green(' ✓'), `Local file created: ${path.relative(projectRoot, pagePath)}`);
257
- // Modify App.tsx content passed in
258
- let appContent = initialAppContent;
259
- let modified = false;
260
- if (isLogin) {
261
- appContent = addLocalImportLine(appContent, pascalName);
262
- appContent = addAuthGuardFallback(appContent);
263
- appContent = removeNpmImportName(appContent, npmComponent);
264
- modified = true;
265
- }
266
- else if (navKey) {
267
- appContent = removeNpmImportName(appContent, npmComponent);
268
- appContent = addLocalImportLine(appContent, pascalName);
269
- appContent = replaceSwitchCase(appContent, navKey, npmComponent, `${pascalName}Page`);
270
- if (!appContent.includes(`case '${navKey}':`)) {
271
- appContent = addSwitchCase(appContent, navKey, `${pascalName}Page`);
272
- }
273
- modified = true;
274
- }
275
- return { appContent, modified };
276
89
  }
277
- async function unejectSingleFile(projectRoot, pageDir, fileConfig, initialAppContent, force) {
278
- const { pascalName, fileName, navKey, npmComponent, isLogin } = fileConfig;
90
+ /** Delete a local page file after checksum verification. */
91
+ async function deleteLocalPage(projectRoot, pageDir, pascalName, fileName, force) {
279
92
  const pagePath = path.join(pageDir, fileName);
280
93
  // Confirm local file exists
281
94
  try {
@@ -303,25 +116,6 @@ async function unejectSingleFile(projectRoot, pageDir, fileConfig, initialAppCon
303
116
  await fs.unlink(pagePath);
304
117
  await deleteChecksum(projectRoot, pascalName);
305
118
  console.log(chalk.green(' ✓'), `Local file removed: ${path.relative(projectRoot, pagePath)}`);
306
- // Modify App.tsx content passed in
307
- let appContent = initialAppContent;
308
- let modified = false;
309
- if (isLogin) {
310
- appContent = removeLocalImportLine(appContent, pascalName);
311
- appContent = removeAuthGuardFallback(appContent);
312
- appContent = addNpmImportName(appContent, npmComponent);
313
- modified = true;
314
- }
315
- else if (navKey) {
316
- appContent = removeLocalImportLine(appContent, pascalName);
317
- appContent = addNpmImportName(appContent, npmComponent);
318
- appContent = replaceSwitchCase(appContent, navKey, `${pascalName}Page`, npmComponent);
319
- if (!appContent.includes(`case '${navKey}':`)) {
320
- appContent = addSwitchCase(appContent, navKey, npmComponent);
321
- }
322
- modified = true;
323
- }
324
- return { appContent, modified };
325
119
  }
326
120
  // ── Register commands ──
327
121
  export function registerEjectCommand(program) {
@@ -335,10 +129,10 @@ export function registerEjectCommand(program) {
335
129
  .action(async (type, cmdOptions) => {
336
130
  const pageType = parsePageType(type);
337
131
  if (!pageType) {
338
- console.error(chalk.red(`Invalid type "${type}". Use: ${VALID_TYPES.join(', ')}.`));
132
+ console.error(chalk.red(`Invalid type "${type}". Use: ${VALID_SYSTEM_PAGE_TYPES.join(', ')}.`));
339
133
  process.exit(1);
340
134
  }
341
- const config = PAGE_CONFIG[pageType];
135
+ const config = SYSTEM_PAGE_CONFIG[pageType];
342
136
  try {
343
137
  const projectRoot = await resolveProjectRoot();
344
138
  const pageDir = path.join(projectRoot, 'frontend', 'src', 'components', 'pages');
@@ -347,33 +141,23 @@ export function registerEjectCommand(program) {
347
141
  const appBackup = await backupFile(projectRoot, appTsxPath);
348
142
  if (appBackup)
349
143
  console.log(chalk.dim(` App.tsx backup: ${path.relative(projectRoot, appBackup)}`));
350
- // Read App.tsx content once
351
- let appContent = await fs.readFile(appTsxPath, 'utf-8');
352
- let anyModified = false;
353
- // Eject main file
354
- const mainResult = await ejectSingleFile(projectRoot, pageDir, {
355
- ...config,
356
- isLogin: pageType === 'login',
357
- }, appContent, cmdOptions.force);
358
- if (mainResult.modified) {
359
- appContent = mainResult.appContent;
360
- anyModified = true;
144
+ // Write main page file from template
145
+ const mainTemplateFn = getTemplateFn(config, pageType);
146
+ if (mainTemplateFn) {
147
+ await writeLocalPage(projectRoot, pageDir, config.pascalName, config.fileName, mainTemplateFn, cmdOptions.force);
361
148
  }
362
- // Eject extra files (e.g., NotificationDetail for notification type)
149
+ // Write extra files (e.g., NotificationDetail for notification type)
363
150
  if (config.extraFiles) {
364
151
  for (const extra of config.extraFiles) {
365
- const result = await ejectSingleFile(projectRoot, pageDir, {
366
- ...extra,
367
- isLogin: false,
368
- }, appContent, cmdOptions.force);
369
- if (result.modified) {
370
- appContent = result.appContent;
371
- anyModified = true;
152
+ const extraTemplateFn = getTemplateFn(extra);
153
+ if (extraTemplateFn) {
154
+ await writeLocalPage(projectRoot, pageDir, extra.pascalName, extra.fileName, extraTemplateFn, cmdOptions.force);
372
155
  }
373
156
  }
374
157
  }
375
- if (anyModified) {
376
- await fs.writeFile(appTsxPath, appContent, 'utf-8');
158
+ // Wire App.tsx using the engine
159
+ const result = await wireAppTsx({ projectRoot, pageConfig: config, action: 'eject', force: cmdOptions.force });
160
+ if (result.modified) {
377
161
  console.log(chalk.green(' ✓'), 'App.tsx switched to local import');
378
162
  }
379
163
  console.log();
@@ -396,45 +180,28 @@ export function registerEjectCommand(program) {
396
180
  .action(async (type, cmdOptions) => {
397
181
  const pageType = parsePageType(type);
398
182
  if (!pageType) {
399
- console.error(chalk.red(`Invalid type "${type}". Use: ${VALID_TYPES.join(', ')}.`));
183
+ console.error(chalk.red(`Invalid type "${type}". Use: ${VALID_SYSTEM_PAGE_TYPES.join(', ')}.`));
400
184
  process.exit(1);
401
185
  }
402
- const config = PAGE_CONFIG[pageType];
186
+ const config = SYSTEM_PAGE_CONFIG[pageType];
403
187
  try {
404
188
  const projectRoot = await resolveProjectRoot();
405
189
  const pageDir = path.join(projectRoot, 'frontend', 'src', 'components', 'pages');
406
- const appTsxPath = path.join(projectRoot, 'frontend', 'src', 'App.tsx');
407
- // Backup App.tsx
408
- const appBackup = await backupFile(projectRoot, appTsxPath);
409
- if (appBackup)
410
- console.log(chalk.dim(` App.tsx backup: ${path.relative(projectRoot, appBackup)}`));
411
- // Read App.tsx content once
412
- let appContent = await fs.readFile(appTsxPath, 'utf-8');
413
- let anyModified = false;
414
- // Uneject main file
415
- const mainResult = await unejectSingleFile(projectRoot, pageDir, {
416
- ...config,
417
- isLogin: pageType === 'login',
418
- }, appContent, cmdOptions.force);
419
- if (mainResult.modified) {
420
- appContent = mainResult.appContent;
421
- anyModified = true;
422
- }
423
- // Uneject extra files
190
+ // Delete main page file
191
+ await deleteLocalPage(projectRoot, pageDir, config.pascalName, config.fileName, cmdOptions.force);
192
+ // Delete extra files
424
193
  if (config.extraFiles) {
425
194
  for (const extra of config.extraFiles) {
426
- const result = await unejectSingleFile(projectRoot, pageDir, {
427
- ...extra,
428
- isLogin: false,
429
- }, appContent, cmdOptions.force);
430
- if (result.modified) {
431
- appContent = result.appContent;
432
- anyModified = true;
433
- }
195
+ await deleteLocalPage(projectRoot, pageDir, extra.pascalName, extra.fileName, cmdOptions.force);
434
196
  }
435
197
  }
436
- if (anyModified) {
437
- await fs.writeFile(appTsxPath, appContent, 'utf-8');
198
+ // Wire App.tsx using the engine
199
+ const appTsxPath = path.join(projectRoot, 'frontend', 'src', 'App.tsx');
200
+ const appBackup = await backupFile(projectRoot, appTsxPath);
201
+ if (appBackup)
202
+ console.log(chalk.dim(` App.tsx backup: ${path.relative(projectRoot, appBackup)}`));
203
+ const result = await wireAppTsx({ projectRoot, pageConfig: config, action: 'uneject', force: cmdOptions.force });
204
+ if (result.modified) {
438
205
  console.log(chalk.green(' ✓'), 'App.tsx switched back to npm import');
439
206
  }
440
207
  console.log();
@@ -1 +1 @@
1
- {"version":3,"file":"eject.js","sourceRoot":"","sources":["../../../src/cli/commands/eject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eject.js","sourceRoot":"","sources":["../../../src/cli/commands/eject.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * loom generate system-settings <model|skill|user|login|process|notification>
3
3
  *
4
- * System management pages are now built into @loom-framework/frontend-antd.
5
- * Default behavior: wire npm imports into App.tsx (no local files).
6
- * Use --local to generate local source files for customization (eject).
4
+ * System management pages are built into @loom-framework/frontend-antd.
5
+ * This command wires npm imports into App.tsx.
6
+ * Use `loom eject system-settings <type>` to create a local editable copy.
7
7
  */
8
8
  import type { Command } from 'commander';
9
9
  export declare function registerGenerateSystemSettingsCommand(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-system-settings.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-system-settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgGzC,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F5E"}
1
+ {"version":3,"file":"generate-system-settings.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-system-settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD5E"}