@loom-framework/core 0.1.0-alpha.146 → 0.1.0-alpha.147

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.
@@ -9,19 +9,21 @@ description: |
9
9
  version: 0.1.0
10
10
  ---
11
11
 
12
- # Loom - AI 原生全栈框架技能
12
+ # Loom - AI 平台开发框架
13
13
 
14
- ## 框架工作方式
14
+ ## 概览
15
15
 
16
- Loom 是**配置驱动、自动生成**的框架。工作流程为:
16
+ Loom 是**配置驱动的 AI 平台开发框架**——你描述需求,AI 通过本 Skill 执行 loom 命令来构建应用。
17
17
 
18
- 1. **写配置** — 编辑 `loom.config.ts`,定义数据模型和 AI 按钮
19
- 2. **跑命令** — CLI 读取配置,自动生成页面、API 和路由接线
18
+ 典型使用方式:
20
19
 
21
- `loom generate page` 会自动生成:CRUD 页面(含 AI 按钮)、App.tsx 路由接线、后端 API + 应用 Skill
22
- 生成的页面自带 AI 助手浮动按钮,支持流式对话、多会话和数据自动刷新。
20
+ 1. **用自然语言描述需求** 告诉 Claude Code(或其它支持Skill的 Agent) 你要做什么(如"用 loom 开发一个错题管理平台"),Claude Code 会调用本 Skill 读取配置、生成页面、启动服务
21
+ 2. **对话迭代** — 通过Claude Code 或 创建的项目 AI 对话面板改需求、加字段、调样式,AI 理解 loom 的工作方式,知道何时改配置、何时跑命令、何时直接改代码
22
+ 3. **日常运营** — 通过 AI 对话面板或 `loom data` CLI 查看、创建、更新数据
23
23
 
24
- 技术架构细节见 `references/README.md`。
24
+ 核心能力:`loom generate page` 生成 CRUD 页面,`loom generate capabilities` 生成应用 Skill(让 AI 理解项目业务),`loom generate dashboard` 生成数据概览。后端 API 由 `loom dev` 根据配置动态注册,无需手动编写。生成的页面自带 AI 助手,支持流式对话和多会话。
25
+
26
+ 完整使用手册见 `references/README.md`。
25
27
 
26
28
  ## 开发流程
27
29
 
@@ -51,21 +53,25 @@ npx -p @loom-framework/core loom init <name> --description <desc> --adapter <fil
51
53
  loom generate page <Name> --model <model-name>
52
54
  ```
53
55
 
54
- 此命令自动生成:CRUD 页面(含 AI 按钮)、App.tsx 路由接线、后端 API、应用 Skill。模型立即可通过 `loom data` CLI 和 AI 对话使用。
55
-
56
- ### 4. 生成 Dashboard(数据概览)
56
+ 此命令自动生成:CRUD 页面(含 AI 按钮)、App.tsx 路由接线。后端 API `loom dev` 启动时动态注册。模型立即可通过 `loom data` CLI 和 AI 对话使用。
57
57
 
58
- Dashboard 配置在 `loom.config.ts` `dashboards` 字段中定义。设计原则和配置 Schema 详见 `references/dashboard.md`。
58
+ ### 4. 生成并完善应用 Skill
59
59
 
60
60
  ```bash
61
- loom generate dashboard <name>
61
+ loom generate capabilities
62
62
  ```
63
63
 
64
- 此命令从 `loom.config.ts` `dashboards` 字段读取配置,自动生成 Dashboard 页面并接线 App.tsx。
64
+ 此命令读取 `loom.config.ts`,在 `.claude/skills/<项目名>/` 下生成以下文件:
65
+
66
+ | 文件 | 说明 | 覆盖策略 |
67
+ |------|------|---------|
68
+ | `SKILL.md` | Skill 主文档(含 TODO 模板) | 仅首次创建,不覆盖 |
69
+ | `references/models.md` | 数据模型字段表 + AI 按钮定义 + CLI 语法 | 每次重新生成 |
70
+ | `references/data-semantics.md` | 语义引导(示例数据、筛选规则、跨模型关联) | 每次重新生成 |
65
71
 
66
- ### 5. 完善 AI Skill(必须)
72
+ 每次修改数据模型或 AI 按钮后,重新运行此命令即可更新 `references/` 下的自动生成内容,`SKILL.md` 中手动补充的内容不会被覆盖。
67
73
 
68
- 步骤 3 会自动生成应用 Skill(`.claude/skills/<项目名>/SKILL.md`),但需要补充以下 TODOAI 对话才能正确理解项目业务语义:
74
+ 首次生成后,需要补充 `SKILL.md` 主文档中的 TODO 内容,AI 对话时才能正确理解项目业务语义:
69
75
 
70
76
  1. **frontmatter `description`**:写入用户在 AI 对话中会说的触发短语。格式参考:
71
77
  ```
@@ -79,6 +85,16 @@ loom generate dashboard <name>
79
85
  - `loom generate skill <name>` — 创建脚手架,然后编辑 `.claude/skills/<name>/SKILL.md`
80
86
  - 或直接复制一个已有的 Skill 目录到 `.claude/skills/` 下
81
87
 
88
+ ### 5. 生成 Dashboard(数据概览)
89
+
90
+ Dashboard 配置在 `loom.config.ts` 的 `dashboards` 字段中定义。设计原则和配置 Schema 详见 `references/dashboard.md`。
91
+
92
+ ```bash
93
+ loom generate dashboard <name>
94
+ ```
95
+
96
+ 此命令从 `loom.config.ts` 的 `dashboards` 字段读取配置,自动生成 Dashboard 页面并接线 App.tsx。
97
+
82
98
  ### 重启服务前必须询问用户
83
99
 
84
100
  修改 `loom.config.ts` 后如果需要重启后端服务(如增删 AI 按钮、修改 enum 值、新增模型等场景),**必须先询问用户是否可以重启**,得到确认后再执行 `loom dev` 或停止/重启服务。不要自动重启,因为用户可能正在使用页面或调试中。
@@ -98,10 +114,10 @@ loom dev
98
114
 
99
115
  | 变更类型 | 需要改页面吗 | 怎么做 |
100
116
  |---------|------------|--------|
101
- | 增删 AI 按钮 | 不需要 | 改配置 → 重启后端,按钮自动出现/消失 |
102
- | 修改 enum 值 | 不需要 | 改配置 → 重启后端,筛选和下拉自动更新 |
103
- | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate page <Name> --model <model>` → 重启后端 |
104
- | 新增/删除字段 | 需要 | 改配置 → `--force` 重建(默认,最快)或 AI 增量更新(有定制时保留修改)→ 更新CLAUDE.md |
117
+ | 增删 AI 按钮 | 不需要 | 改配置 → `loom generate capabilities` 更新 Skill → 重启后端,按钮自动出现/消失 |
118
+ | 修改 enum 值 | 不需要 | 改配置 → `loom generate capabilities` 更新 Skill → 重启后端,筛选和下拉自动更新 |
119
+ | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate capabilities` + `loom generate page <Name> --model <model>` → 重启后端 |
120
+ | 新增/删除字段 | 需要 | 改配置 → `--force` 重建(默认,最快)或 AI 增量更新(有定制时保留修改)→ `loom generate capabilities` 更新 Skill → 更新CLAUDE.md |
105
121
 
106
122
  **`--force` 重建(默认)**:字段变更时直接 `--force` 重建页面,是最快最干净的方式,页面与配置立即同步。`--force` 会自动将旧页面备份到 `.loom/backup/<时间戳>/` 目录,如需恢复直接复制回来即可。
107
123
 
@@ -126,13 +142,13 @@ loom generate page <Name> --model <model-name> --force
126
142
 
127
143
  | 命令 | 说明 |
128
144
  |------|------|
129
- | `loom dev` | 启动开发环境(`--skip-generate` `--backend-only` `--frontend-only`) |
145
+ | `loom dev` | 启动开发环境(`--backend-only` `--frontend-only`) |
130
146
  | `loom build` | 生产构建 |
131
- | `loom generate page <name> --model <model>` | 生成 CRUD 页面 + 应用 Skill(含 aiButtons 则自动集成) |
147
+ | `loom generate page <name> --model <model>` | 生成 CRUD 页面(含 aiButtons 则自动集成 AI 按钮) |
132
148
  | `loom generate page <name> --model <model> --force` | 重建页面(默认方式,自动备份旧文件到 `.loom/backup/`) |
149
+ | `loom generate capabilities` | 生成应用 Skill(`references/models.md` + `references/data-semantics.md`,`SKILL.md` 仅首次创建不覆盖) |
133
150
  | `loom generate dashboard <name>` | 从 loom.config.ts dashboards 生成 Dashboard 页面 |
134
151
  | `loom generate dashboard <name> --force` | 重建 Dashboard 页面(自动备份旧文件到 `.loom/backup/`) |
135
- | `loom generate capabilities` | 仅重新生成应用 Skill 的 `references/models.md` |
136
152
  | `loom generate skill <name>` | 生成自定义 Skill 脚架 |
137
153
 
138
154
  ## loom.config.ts Schema(核心)
@@ -16,7 +16,7 @@ Loom 项目的主要交互方式是**和 AI 对话**。你告诉 AI 想要什么
16
16
  两个入口,同一个 AI:
17
17
 
18
18
  - **终端 Claude Code** — 适合搭建阶段、大范围代码修改
19
- - **页面内对话框** — 适合日常操作数据、小范围页面调整
19
+ - **页面右侧 AI 面板** — 适合日常操作数据、小范围页面调整
20
20
 
21
21
  两个入口背后是同一个 Claude Code 引擎、同一套项目上下文。在哪边改都行。
22
22
 
@@ -37,8 +37,9 @@ AI 会读取 Loom Skill,自动执行:
37
37
  1. `loom init wrong-questions --adapter filesystem` — 创建项目
38
38
  2. 编写 `loom.config.ts` — 把你的需求转成配置
39
39
  3. `loom generate page` — 生成页面
40
- 4. `loom generate dashboard` — 生成数据概览
41
- 5. 补充项目级 AI Skill让 AI 理解你的业务语义
40
+ 4. `loom generate capabilities` — 生成应用 Skill
41
+ 5. `loom generate dashboard`生成数据概览
42
+ 6. 补充项目级 AI Skill — 让 AI 理解你的业务语义
42
43
 
43
44
  你也可以自己跑命令,但通过 Loom Skill 让 AI 来做更省事 — 它知道每一步该做什么。
44
45
 
@@ -50,10 +51,10 @@ loom dev
50
51
  ```
51
52
 
52
53
  打开 http://localhost:5173 ,你的平台已经能用了:
53
- - 左侧导航有「错题记录」和「复习计划」页面
54
+ - 顶部导航有「错题记录」和「复习计划」页面
54
55
  - 每个页面有新增、编辑、删除、筛选
55
56
  - 错题记录每行有 AI 按钮:分析错因、出类似题
56
- - 右下角有 AI 对话框,可以自然语言操作数据
57
+ - 右侧 AI 面板可以自然语言操作数据
57
58
 
58
59
  ### 第 3 步:继续和 AI 聊
59
60
 
@@ -75,24 +76,22 @@ loom dev
75
76
 
76
77
  | 变更类型 | 页面需要改吗 | 怎么做 |
77
78
  |---------|------------|--------|
78
- | 增删 AI 按钮 | 不需要 | 改配置 → 重启后端,按钮自动出现在页面 |
79
- | 修改 enum 值 | 不需要 | 改配置 → 重启后端,筛选和下拉自动更新 |
80
- | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate page <Name> --model <model>` → 重启后端 |
81
- | 新增/删除字段 | 需要 | 改配置 → `--force` 重建(默认,最快)或 AI 增量更新(有定制时保留修改) |
79
+ | 增删 AI 按钮 | 不需要 | 改配置 → `loom generate capabilities` 更新 Skill → 重启后端,按钮自动出现在页面 |
80
+ | 修改 enum 值 | 不需要 | 改配置 → `loom generate capabilities` 更新 Skill → 重启后端,筛选和下拉自动更新 |
81
+ | 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate capabilities` + `loom generate page <Name> --model <model>` → 重启后端 |
82
+ | 新增/删除字段 | 需要 | 改配置 → AI 更新页面(推荐)或 `--force` 重建 `loom generate capabilities` 更新 Skill |
82
83
 
83
- **`--force` 重建(默认)**:字段变更时直接 `--force` 重建页面,是最快最干净的方式,页面与配置立即同步。`--force` 会自动将旧页面备份到 `.loom/backup/<时间戳>/` 目录(每次 --force 生成独立时间戳目录,同一天多次执行互不影响),如需恢复直接复制回来即可。
84
+ **推荐:AI 辅助迭代**。告诉 AI 你改了什么(比如"我在配置里加了一个学期字段"),AI 会在页面中精确添加新字段的列和表单项,**保留你之前做的视觉定制代码**。
84
85
 
85
- **AI 增量更新(有定制时)**:如果用户说"保留我的定制"或明确表示页面有手动修改过,才让 AI 增量更新。告诉 AI 你改了什么(比如"我在配置里加了一个学期字段"),AI 会在页面中精确添加新字段的列和表单项,**保留你之前做的视觉定制代码**。
86
+ **谨慎使用 `--force`**。它会用最新配置全量覆盖页面,之前对页面做的任何定制修改都会丢失。
86
87
 
87
88
  ```bash
88
89
  # 只改了 AI 按钮或 enum → 重启后端即可,不用碰页面
89
- # 加了新字段 → --force 重建(默认)
90
- # 加了新字段,要保留页面定制让 AI 增量更新
90
+ # 加了新字段 → AI 更新页面
91
+ # 想重来一个干净页面--force
91
92
  loom generate page WrongQuestions --model wrong_questions --force
92
93
  ```
93
94
 
94
- **恢复备份**:`--force` 覆盖的文件自动备份到 `.loom/backup/<时间戳>/` 目录,如需恢复:`cp .loom/backup/<时间戳>/XXX.tsx frontend/src/components/pages/XXX.tsx`
95
-
96
95
  页面不存在时直接 `loom generate page` 即可,不需要 `--force`。
97
96
 
98
97
  ## 配置写法
@@ -103,47 +102,53 @@ loom generate page WrongQuestions --model wrong_questions --force
103
102
  import { defineConfig } from '@loom-framework/core';
104
103
 
105
104
  export default defineConfig({
106
- project: { name: 'my-app', description: '我的应用' },
105
+ project: { name: 'my-app', description: { 'zh-CN': '我的应用', 'en-US': 'My App' } },
107
106
  data: {
108
107
  defaultAdapter: 'filesystem',
109
108
  models: [{
110
109
  name: 'tasks',
111
- description: '任务管理',
110
+ description: { 'zh-CN': '任务管理', 'en-US': 'Tasks' },
112
111
  fields: [
113
- { name: 'title', type: 'string', required: true, description: '任务标题' },
114
- { name: 'status', type: 'string', enum: ['待办', '进行中', '已完成'], default: '待办' },
112
+ { name: 'title', type: 'string', required: true, description: { 'zh-CN': '任务标题', 'en-US': 'Title' } },
113
+ { name: 'status', type: 'string', enum: ['待办', '进行中', '已完成'], enumLabels: {
114
+ '待办': { 'zh-CN': '待办', 'en-US': 'Todo' },
115
+ '进行中': { 'zh-CN': '进行中', 'en-US': 'In Progress' },
116
+ '已完成': { 'zh-CN': '已完成', 'en-US': 'Done' },
117
+ }, default: '待办' },
115
118
  { name: 'priority', type: 'string', enum: ['低', '中', '高'] },
116
119
  ],
117
120
  }],
118
121
  },
119
122
  aiButtons: [{
120
123
  id: 'breakdown',
121
- label: '拆解任务',
124
+ label: { 'zh-CN': '拆解任务', 'en-US': 'Break Down Task' },
122
125
  prompt: '请将这个任务拆解为可执行的子步骤:{{title}}',
123
126
  placement: 'tasks',
124
127
  }],
125
128
  dashboards: [{
126
129
  name: 'overview',
127
- description: '数据概览',
130
+ description: { 'zh-CN': '数据概览', 'en-US': 'Overview' },
128
131
  models: ['tasks'],
129
132
  layout: [
130
133
  { row: [
131
- { type: 'stat', title: '任务总数', model: 'tasks', aggregate: 'count', span: 6 },
132
- { type: 'pie', title: '状态分布', model: 'tasks', groupBy: 'status', span: 8 },
133
- { type: 'bar', title: '优先级分布', model: 'tasks', groupBy: 'priority', span: 8 },
134
+ { type: 'stat', title: { 'zh-CN': '任务总数', 'en-US': 'Total Tasks' }, model: 'tasks', aggregate: 'count', span: 6 },
135
+ { type: 'pie', title: { 'zh-CN': '状态分布', 'en-US': 'Status Distribution' }, model: 'tasks', groupBy: 'status', span: 8 },
136
+ { type: 'bar', title: { 'zh-CN': '优先级分布', 'en-US': 'Priority Distribution' }, model: 'tasks', groupBy: 'priority', span: 8 },
134
137
  ]}
135
138
  ],
136
139
  }],
137
140
  });
138
141
  ```
139
142
 
143
+ - 所有展示文本(description、label、title)支持多语言:纯字符串 `'任务管理'` 或 `{ 'zh-CN': '任务管理', 'en-US': 'Tasks' }`
144
+ - `enum` 是存储值(所有语言一致),`enumLabels` 为每个值提供多语言显示文本
140
145
  - AI 按钮的 `prompt` 支持 `{{fieldName}}` 插值,运行时替换为当前行的字段值
141
146
  - `placement` 限制按钮只出现在指定模型页面,省略则全局显示
142
147
  - Dashboard 的 15 种图表类型和配置 Schema 见 `references/dashboard.md`
143
148
 
144
149
  ## 项目级 AI Skill
145
150
 
146
- 每个项目的 `.claude/skills/<项目名>/SKILL.md` 是 AI 理解你业务的入口。`loom generate page` 会自动生成骨架,但需要你补充三个地方:
151
+ 每个项目的 `.claude/skills/<项目名>/SKILL.md` 是 AI 理解你业务的入口。`loom generate capabilities` 生成骨架(`references/` 下的内容自动维护),但 SKILL.md 主文档需要你补充三个地方:
147
152
 
148
153
  1. **description**:写用户会说的话,如 `"记录错题", "查看错题", "分析错因"`
149
154
  2. **Overview**:2-3 句话描述平台做什么
@@ -184,6 +189,75 @@ await server.start();
184
189
 
185
190
  不需要时就是原来的 3 行。
186
191
 
192
+ ## AI 模型配置
193
+
194
+ 在**系统配置 > 模型管理**页面中配置 AI 模型。也可以直接编辑 `loom.config.ts`:
195
+
196
+ ```typescript
197
+ export default defineConfig({
198
+ ai: {
199
+ claudeCode: {
200
+ models: [
201
+ { name: 'claude-sonnet-4-20250514', isDefault: true },
202
+ { name: 'GLM-5.1', authToken: 'your-token', baseUrl: 'https://api.example.com' },
203
+ ],
204
+ },
205
+ },
206
+ });
207
+ ```
208
+
209
+ - `isDefault`:对话时默认使用的模型
210
+ - `authToken`:API 认证令牌,页面中显示脱敏,编辑时留空保持不变
211
+ - `baseUrl`:自定义 API 地址(适用于第三方模型)
212
+ - 页面和配置文件双向同步:在页面修改模型后会自动写入 `loom.config.ts`
213
+
214
+ 在 AI 面板顶部的模型选择器中切换当前对话使用的模型。
215
+
216
+ ## 文件上传
217
+
218
+ AI 对话支持上传文件,两种方式:
219
+
220
+ - **附件按钮** — 点击输入框左侧的回形针图标选择文件
221
+ - **粘贴上传** — 直接粘贴截图或复制的文件
222
+
223
+ 上传的文件会随对话发送给 AI 分析。图片在气泡中显示缩略图,其他文件显示为可下载的标签。文件大小上限约 30MB。
224
+
225
+ ## 页面功能控制
226
+
227
+ 通过 `crud` 配置字段控制生成页面的功能:
228
+
229
+ ```typescript
230
+ models: [{
231
+ name: 'tasks',
232
+ fields: [...],
233
+ crud: {
234
+ export: false, // 隐藏导出按钮
235
+ import: false, // 隐藏导入按钮
236
+ deleteWithUndo: false, // 删除改为确认对话框(而非撤销模式)
237
+ },
238
+ }],
239
+ ```
240
+
241
+ 省略 `crud` 字段时默认全部启用。
242
+
243
+ ## 日期分区
244
+
245
+ 数据可按日期字段自动分区存储,适合日志类数据:
246
+
247
+ ```typescript
248
+ models: [{
249
+ name: 'logs',
250
+ fields: [
251
+ { name: 'content', type: 'string' },
252
+ { name: 'createdAt', type: 'string' },
253
+ ],
254
+ datePattern: {
255
+ dateField: 'createdAt',
256
+ pattern: 'yyyy/MM', // 按月分区:data/logs/2026/04/*.json
257
+ },
258
+ }],
259
+ ```
260
+
187
261
  ## 常见问题
188
262
 
189
263
  **loom 命令报错 "No loom.config.ts found"**
@@ -202,9 +276,9 @@ await server.start();
202
276
  数据文件中的旧字段值不会删除,只是页面不再展示。如果之后加回同名字段,旧数据会自动恢复显示。
203
277
 
204
278
  **--force 会丢掉我的页面定制吗**
205
- 会。`--force` 全量覆盖页面文件,但会自动将旧文件备份到 `.loom/backup/<时间戳>/` 目录。如果页面有定制且需要保留,用 AI 增量更新;如果页面没有定制,直接 `--force` 即可,是最快的方式。
279
+ 会。`--force` 全量覆盖页面文件。如果你对页面做过视觉或交互定制,建议让 AI 辅助迭代而不是用 `--force`。
206
280
 
207
- **对话框里的 AI 能改代码吗**
281
+ **AI 面板里的 AI 能改代码吗**
208
282
  能。和终端 Claude Code 是同一个引擎,在哪边改都行。
209
283
 
210
284
  **如何部署到生产环境**
@@ -2,7 +2,6 @@
2
2
  * loom dev
3
3
  *
4
4
  * Concurrently start backend (tsx watch) and frontend (vite).
5
- * Auto-execute generate capabilities in dev mode.
6
5
  */
7
6
  import type { Command } from 'commander';
8
7
  export declare function registerDevCommand(program: Command): void;
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6GzD"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+FzD"}
@@ -2,37 +2,19 @@
2
2
  * loom dev
3
3
  *
4
4
  * Concurrently start backend (tsx watch) and frontend (vite).
5
- * Auto-execute generate capabilities in dev mode.
6
5
  */
7
6
  import chalk from 'chalk';
8
- import ora from 'ora';
9
7
  import { spawn } from 'child_process';
10
- import { loadConfig } from '../../config.js';
11
- import { generateCapabilities } from '../generators/capability-generator.js';
12
8
  import { resolveProjectRoot } from '../utils.js';
13
9
  export function registerDevCommand(program) {
14
10
  program
15
11
  .command('dev')
16
- .description('Start development mode (backend + frontend with auto-generate)')
17
- .option('--skip-generate', 'Skip auto-generate capabilities on start')
12
+ .description('Start development mode (backend + frontend)')
18
13
  .option('--backend-only', 'Start only the backend')
19
14
  .option('--frontend-only', 'Start only the frontend')
20
15
  .action(async (options) => {
21
16
  try {
22
17
  const projectRoot = await resolveProjectRoot();
23
- // Auto-generate capabilities unless skipped
24
- if (!options.skipGenerate) {
25
- const spinner = ora('Generating capabilities...').start();
26
- try {
27
- const config = await loadConfig(projectRoot);
28
- await generateCapabilities(projectRoot, config);
29
- spinner.succeed(chalk.green('Capabilities generated'));
30
- }
31
- catch (err) {
32
- const message = err instanceof Error ? err.message : String(err);
33
- spinner.warn(chalk.yellow(`Generate skipped: ${message}`));
34
- }
35
- }
36
18
  console.log();
37
19
  console.log(chalk.bold('Starting development servers...'));
38
20
  console.log(chalk.dim(` Project: ${projectRoot}`));
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * loom generate page <name>
3
3
  *
4
- * With --model: generate capabilities → CRUD page → auto-wire App.tsx
4
+ * With --model: generate CRUD page → auto-wire App.tsx
5
5
  * Without --model: generate minimal skeleton page
6
6
  */
7
7
  import type { Command } from 'commander';
@@ -1 +1 @@
1
- {"version":3,"file":"generate-page.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAczC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiGlE"}
1
+ {"version":3,"file":"generate-page.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate-page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6FlE"}
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * loom generate page <name>
3
3
  *
4
- * With --model: generate capabilities → CRUD page → auto-wire App.tsx
4
+ * With --model: generate CRUD page → auto-wire App.tsx
5
5
  * Without --model: generate minimal skeleton page
6
6
  */
7
7
  import chalk from 'chalk';
8
8
  import { promises as fs } from 'fs';
9
9
  import path from 'path';
10
10
  import { loadConfig, getModelSchema } from '../../config.js';
11
- import { generateCapabilities } from '../generators/capability-generator.js';
12
11
  import { resolveLocale } from '../../types/locale.js';
13
12
  import { resolveProjectRoot } from '../utils.js';
14
13
  import { toPascalCase } from '../helpers/naming.js';
@@ -58,10 +57,7 @@ export function registerGeneratePageCommand(program) {
58
57
  }
59
58
  modelLabel = buildLabel(modelSchema.description, pascalName);
60
59
  navLabelEn = resolveLocale(modelSchema.description, 'en-US') || pascalName;
61
- // Step 1: Auto-generate capabilities (Skill for data access via CLI)
62
- const capResult = await generateCapabilities(projectRoot, config);
63
- console.log(chalk.green('Capabilities generated'), chalk.dim(`(${capResult.filesWritten.length} files)`));
64
- // Step 2: Generate CRUD page — filter aiButtons by placement
60
+ // Generate CRUD page filter aiButtons by placement
65
61
  const modelAiButtons = config.aiButtons?.filter(btn => {
66
62
  // No placement = show on all pages (backward compatible)
67
63
  if (!btn.placement)
@@ -84,7 +80,7 @@ export function registerGeneratePageCommand(program) {
84
80
  if (cmdOptions.model) {
85
81
  console.log(chalk.bold(' Model:'), cmdOptions.model);
86
82
  }
87
- // Step 3: Auto-wire App.tsx when using --model
83
+ // Auto-wire App.tsx when using --model
88
84
  if (cmdOptions.model) {
89
85
  const wired = await wireAppTsxAutomatic(projectRoot, pascalName, cmdOptions.model, modelLabel, { navLabelEn });
90
86
  if (wired) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-page.js","sourceRoot":"","sources":["../../../src/cli/commands/generate-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-page.js","sourceRoot":"","sources":["../../../src/cli/commands/generate-page.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loom-framework/core",
3
- "version": "0.1.0-alpha.146",
3
+ "version": "0.1.0-alpha.147",
4
4
  "description": "Loom framework - DataAdapter, Capability Generator, config system, backend server, CLI",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",