@loom-framework/core 0.1.0-alpha.43 → 0.1.0-alpha.44
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/commands/generate-page.d.ts.map +1 -1
- package/dist/cli/commands/generate-page.js +38 -12
- package/dist/cli/commands/generate-page.js.map +1 -1
- package/dist/cli/commands/init.js +2 -2
- package/package.json +1 -1
- package/templates/skill/SKILL.md +10 -10
- package/templates/skill/references/README.md +45 -5
- package/templates/skill/references/data-model.md +10 -0
- package/templates/skill/references/troubleshooting.md +7 -0
|
@@ -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;
|
|
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;AAyQzC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4ElE"}
|
|
@@ -12,7 +12,7 @@ import { resolveProjectRoot } from '../utils.js';
|
|
|
12
12
|
import { toPascalCase } from '../helpers/naming.js';
|
|
13
13
|
import { fieldToFormItem } from '../helpers/field-template.js';
|
|
14
14
|
/** Generate table columns from model fields */
|
|
15
|
-
function generateColumns(fields, modelName) {
|
|
15
|
+
function generateColumns(fields, modelName, aiButtons) {
|
|
16
16
|
const cols = fields
|
|
17
17
|
.filter((f) => f.name !== 'id') // skip id column in form
|
|
18
18
|
.map((f) => {
|
|
@@ -40,16 +40,25 @@ ${extras.join('\n')}${renders.join('\n')} },`;
|
|
|
40
40
|
})
|
|
41
41
|
.join('\n');
|
|
42
42
|
// Add action column
|
|
43
|
+
const aiButtonMenuCode = aiButtons && aiButtons.length > 0
|
|
44
|
+
? `<Dropdown menu={{ items: aiButtonMenuItems(record) }}>
|
|
45
|
+
<Button type="link"><ThunderboltOutlined /> AI</Button>
|
|
46
|
+
</Dropdown>`
|
|
47
|
+
: '';
|
|
48
|
+
const actionButtons = [
|
|
49
|
+
`<Button type="link" onClick={() => handleEdit(record)}>编辑</Button>`,
|
|
50
|
+
aiButtonMenuCode,
|
|
51
|
+
`<Popconfirm title="确认删除?" onConfirm={() => handleDelete(record.id)}>
|
|
52
|
+
<Button type="link" danger>删除</Button>
|
|
53
|
+
</Popconfirm>`,
|
|
54
|
+
].filter(Boolean).join('\n ');
|
|
43
55
|
return `${cols}
|
|
44
56
|
{
|
|
45
57
|
title: '操作',
|
|
46
58
|
key: 'action',
|
|
47
59
|
render: (_: unknown, record: ${toPascalCase(modelName)}Record) => (
|
|
48
60
|
<Space>
|
|
49
|
-
|
|
50
|
-
<Popconfirm title="确认删除?" onConfirm={() => handleDelete(record.id)}>
|
|
51
|
-
<Button type="link" danger>删除</Button>
|
|
52
|
-
</Popconfirm>
|
|
61
|
+
${actionButtons}
|
|
53
62
|
</Space>
|
|
54
63
|
),
|
|
55
64
|
},`;
|
|
@@ -59,7 +68,7 @@ function buildLabel(description, pascalName) {
|
|
|
59
68
|
return description || pascalName;
|
|
60
69
|
}
|
|
61
70
|
/** Generate CRUD page template from model schema */
|
|
62
|
-
function crudPageTemplate(model) {
|
|
71
|
+
function crudPageTemplate(model, aiButtons) {
|
|
63
72
|
const pascalName = toPascalCase(model.name);
|
|
64
73
|
const recordType = `${pascalName}Record`;
|
|
65
74
|
// Detect field types for conditional logic
|
|
@@ -76,7 +85,7 @@ function crudPageTemplate(model) {
|
|
|
76
85
|
: 'string';
|
|
77
86
|
return ` ${f.name}${f.required ? '' : '?'}: ${tsType};`;
|
|
78
87
|
}).join('\n');
|
|
79
|
-
const columns = generateColumns(model.fields, model.name);
|
|
88
|
+
const columns = generateColumns(model.fields, model.name, aiButtons);
|
|
80
89
|
const formItems = model.fields
|
|
81
90
|
.filter((f) => f.name !== 'id') // id is auto-generated
|
|
82
91
|
.map((f) => fieldToFormItem(f, model.name))
|
|
@@ -131,10 +140,16 @@ ${dateFields.map(f => ` if (values.${f}) values.${f} = values.${f}.format('
|
|
|
131
140
|
}
|
|
132
141
|
};`;
|
|
133
142
|
const dayjsImport = hasDateFields ? `\nimport dayjs from 'dayjs';` : '';
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
143
|
+
const hasAIButtons = aiButtons && aiButtons.length > 0;
|
|
144
|
+
// Build imports — merge AI-specific imports into existing lines
|
|
145
|
+
const antdExtra = hasAIButtons ? ', Dropdown' : '';
|
|
146
|
+
const iconsExtra = hasAIButtons ? ', ThunderboltOutlined' : '';
|
|
147
|
+
const loomExtra = hasAIButtons ? ', AIContext' : '';
|
|
148
|
+
const reactExtra = hasAIButtons ? ', useContext' : '';
|
|
149
|
+
return `import React, { useEffect, useState${reactExtra} } from 'react';
|
|
150
|
+
import { Table, Button, Modal, Form, Input, InputNumber, Select, Switch, DatePicker, Space, Popconfirm, message${antdExtra} } from 'antd';
|
|
151
|
+
import { PlusOutlined${iconsExtra} } from '@ant-design/icons';
|
|
152
|
+
import { useData${loomExtra} } from '@loom-framework/frontend-antd';${dayjsImport}
|
|
138
153
|
|
|
139
154
|
interface ${recordType} {
|
|
140
155
|
${fieldDefs}
|
|
@@ -169,6 +184,17 @@ export function ${pascalName}Page(): React.ReactElement {
|
|
|
169
184
|
};
|
|
170
185
|
|
|
171
186
|
${handleSaveBody}
|
|
187
|
+
${hasAIButtons ? `
|
|
188
|
+
const ai = useContext(AIContext);
|
|
189
|
+
const aiButtonMenuItems = (record: ${recordType}) => [
|
|
190
|
+
${aiButtons.map(btn => {
|
|
191
|
+
const hasCtx = btn.promptTemplate || btn.prompt;
|
|
192
|
+
const promptExpr = hasCtx
|
|
193
|
+
? `\`${(btn.promptTemplate || btn.prompt || '').replace(/\{\{(\w+)\}\}/g, (_, v) => `\${record.${v} || ''}`)}\``
|
|
194
|
+
: `Object.entries(record).map(([k,v]) => k + ': ' + v).join('\\n')`;
|
|
195
|
+
return ` { key: '${btn.id}', label: '${btn.label}', onClick: () => ai?.triggerAI({ query: ${promptExpr}, buttonId: '${btn.id}' }) },`;
|
|
196
|
+
}).join('\n')}
|
|
197
|
+
];` : ''}
|
|
172
198
|
|
|
173
199
|
const columns = [
|
|
174
200
|
${columns}
|
|
@@ -263,7 +289,7 @@ export function registerGeneratePageCommand(program) {
|
|
|
263
289
|
const capResult = await generateCapabilities(projectRoot, config);
|
|
264
290
|
console.log(chalk.green('Capabilities generated'), chalk.dim(`(${capResult.filesWritten.length} files)`));
|
|
265
291
|
// Step 2: Generate CRUD page
|
|
266
|
-
template = crudPageTemplate(modelSchema);
|
|
292
|
+
template = crudPageTemplate(modelSchema, config.aiButtons);
|
|
267
293
|
}
|
|
268
294
|
else {
|
|
269
295
|
template = SKELETON_TEMPLATE(pascalName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-page.js","sourceRoot":"","sources":["../../../src/cli/commands/generate-page.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,+CAA+C;AAC/C,SAAS,eAAe,CAAC,MAAyB,EAAE,SAAiB;IACnE,MAAM,IAAI,GAAG,MAAM;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,yBAAyB;SACxD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC;QACtC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,mEAAmE;YACnE,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;QACD,OAAO;kBACK,KAAK;sBACD,CAAC,CAAC,IAAI;gBACZ,CAAC,CAAC,IAAI;EACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,oBAAoB;IACpB,OAAO,GAAG,IAAI;;;;qCAIqB,YAAY,CAAC,SAAS,CAAC;;;;;;;;OAQrD,CAAC;AACR,CAAC;AAED,iDAAiD;AACjD,SAAS,UAAU,CAAC,WAA+B,EAAE,UAAkB;IACrE,OAAO,WAAW,IAAI,UAAU,CAAC;AACnC,CAAC;AAED,oDAAoD;AACpD,SAAS,gBAAgB,CAAC,KAAkB;IAC1C,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,GAAG,UAAU,QAAQ,CAAC;IAEzC,2CAA2C;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAE5C,yCAAyC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU;YAC/C,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU;gBACpC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,yBAAyB;oBAC/C,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ;wBAChC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;4BAClC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ;gCAC9B,CAAC,CAAC,QAAQ,CAAC;QACb,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,GAAG,CAAC;IAC3D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,uBAAuB;SACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,2CAA2C;IAC3C,MAAM,cAAc,GAAG,aAAa;QAClC,CAAC,CAAC,+BAA+B,UAAU;;;EAG7C,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;KAGxG;QACD,CAAC,CAAC,+BAA+B,UAAU;;;;KAI1C,CAAC;IAEJ,8CAA8C;IAC9C,MAAM,cAAc,GAAG,aAAa;QAClC,CAAC,CAAC;;;EAGJ,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,YAAY,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;KAarG;QACD,CAAC,CAAC;;;;;;;;;;;;;;;KAeD,CAAC;IAEJ,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO;;;0DAGiD,WAAW;;YAEzD,UAAU;EACpB,SAAS;;;kBAGO,UAAU;uEAC2C,UAAU,MAAM,KAAK,CAAC,IAAI;;;uDAG1C,UAAU;;;;;;;;;;;;IAY7D,cAAc;;;;;;;;;;;;IAYd,cAAc;;;EAGhB,OAAO;;;;;;cAMK,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;EAsBrD,SAAS;;;;;;;iBAOM,UAAU;CAC1B,CAAC;AACF,CAAC;AAED,gDAAgD;AAChD,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAU,EAAE,CAAC;;mBAEvC,UAAU;;;;kBAIX,UAAU,WAAW,UAAU;;sBAE3B,UAAU,CAAC,WAAW,EAAE;YAClC,UAAU;;;;;;iBAML,UAAU;CAC1B,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,2GAA2G,CAAC;SACtI,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,UAA8B,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,MAAM,CAAC,CAAC;YAEzD,+BAA+B;YAC/B,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,UAAU,uBAAuB,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;YAED,IAAI,QAAgB,CAAC;YACrB,IAAI,UAAU,GAAG,UAAU,CAAC;YAE5B,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,oCAAoC;gBACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC7C,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,UAAU,CAAC,KAAK,+BAA+B,CAAC,CAAC,CAAC;oBACpF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBAE7D,sEAAsE;gBACtE,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;gBAE1G,6BAA6B;gBAC7B,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEhD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,UAAU,MAAM,CAAC,CAAC,CAAC;YAC7G,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;YAED,+CAA+C;YAC/C,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAC/F,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wFAAwF,CAAC,CAAC,CAAC;gBACtH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,WAAmB,EACnB,UAAkB,EAClB,QAAgB,EAChB,UAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAErE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,CAAC,QAAQ,CAAC,4BAA4B,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,UAAU,MAAM,CAAC,EAAE,CAAC;QAC1G,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,GAAG,OAAO,CAAC;IAEvB,2CAA2C;IAC3C,MAAM,UAAU,GAAG,UAAU,UAAU,iCAAiC,UAAU,IAAI,CAAC;IACvF,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/E,IAAI,aAAa,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IAExG,0DAA0D;IAC1D,MAAM,WAAW,GAAG,aAAa,QAAQ,cAAc,UAAU,MAAM,CAAC;IACxE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC9D,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;QACvB,wCAAwC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9D,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,iDAAiD;QACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QACjC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClE,sBAAsB;QACtB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,UAAU,CAAC;QACrB,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;YACxC,GAAG,EAAE,CAAC;QACR,CAAC;QACD,MAAM,cAAc,GAAG,GAAG,GAAG,CAAC,CAAC;QAC/B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrG,CAAC;IAED,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,eAAe,QAAQ,cAAc,UAAU,UAAU,CAAC;IAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,0CAA0C;IAC1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACrE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEpG,0EAA0E;IAC1E,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"generate-page.js","sourceRoot":"","sources":["../../../src/cli/commands/generate-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -167,8 +167,8 @@ async function createPackageJson(targetDir, options) {
|
|
|
167
167
|
generate: 'loom generate capabilities',
|
|
168
168
|
},
|
|
169
169
|
dependencies: {
|
|
170
|
-
'@loom-framework/core': '^0.1.0-alpha.
|
|
171
|
-
'@loom-framework/frontend-antd': '^0.1.0-alpha.
|
|
170
|
+
'@loom-framework/core': '^0.1.0-alpha.44',
|
|
171
|
+
'@loom-framework/frontend-antd': '^0.1.0-alpha.44',
|
|
172
172
|
'fastify': '^5.2.0',
|
|
173
173
|
'@ant-design/x': '^2.5.0',
|
|
174
174
|
'@ant-design/x-sdk': '^2.5.0',
|
package/package.json
CHANGED
package/templates/skill/SKILL.md
CHANGED
|
@@ -11,10 +11,10 @@ version: 0.1.0
|
|
|
11
11
|
|
|
12
12
|
## Quick Start
|
|
13
13
|
|
|
14
|
-
1. Confirm project scope: name, description, data models,
|
|
14
|
+
1. Confirm project scope: name, description, data models, AI buttons
|
|
15
15
|
2. Create project:
|
|
16
|
-
`npx @loom-framework/core
|
|
17
|
-
3. Define data models in `loom.config.ts` (see Schema below)
|
|
16
|
+
`npx -p @loom-framework/core loom init <name> --description <desc> --adapter <filesystem|sqlite>`
|
|
17
|
+
3. Define data models and AI buttons in `loom.config.ts` (see Schema below)
|
|
18
18
|
4. Generate pages: `loom generate page <Name> --model <model>`
|
|
19
19
|
5. Start dev: `loom dev` → http://localhost:5173 (frontend), http://localhost:3000 (backend)
|
|
20
20
|
|
|
@@ -26,7 +26,7 @@ version: 0.1.0
|
|
|
26
26
|
- `--skip-generate`, `--backend-only`, `--frontend-only`
|
|
27
27
|
- `loom build` - Build for production
|
|
28
28
|
- `loom generate capabilities` - Generate MCP Server + CLI from config
|
|
29
|
-
- `loom generate page <name> --model <model>` - Generate CRUD page (includes
|
|
29
|
+
- `loom generate page <name> --model <model>` - Generate CRUD page (includes AI buttons if configured)
|
|
30
30
|
- `loom generate skill <name>` - Generate skill scaffold
|
|
31
31
|
|
|
32
32
|
## Detailed Workflows
|
|
@@ -37,17 +37,17 @@ version: 0.1.0
|
|
|
37
37
|
2. Run `loom generate page <Name> --model <model-name>`
|
|
38
38
|
3. Model is immediately available via MCP Tools and `loom data` CLI
|
|
39
39
|
|
|
40
|
+
### Adding an AI Button
|
|
41
|
+
|
|
42
|
+
1. Edit `loom.config.ts` → add entry to `aiButtons` array (top-level, not inside `ai`)
|
|
43
|
+
2. Run `loom generate page <Name> --model <model-name>` — AI buttons are automatically integrated into the page
|
|
44
|
+
|
|
40
45
|
### Adding a New Skill
|
|
41
46
|
|
|
42
47
|
1. Create scaffold: `loom generate skill <name>`
|
|
43
48
|
2. Edit `.claude/skills/<name>/SKILL.md` (see `references/skill-development.md` for format)
|
|
44
49
|
3. Add reference prompts in `.claude/skills/<name>/references/`
|
|
45
50
|
|
|
46
|
-
### Adding an AI Button
|
|
47
|
-
|
|
48
|
-
1. Edit `loom.config.ts` → add entry to `aiButtons` array (top-level, not inside `ai`)
|
|
49
|
-
2. In frontend page, use `useAIButton('<button-id>')` or `<AIActionButton buttonId="<id>" />`
|
|
50
|
-
|
|
51
51
|
## loom.config.ts Schema (Core)
|
|
52
52
|
|
|
53
53
|
```typescript
|
|
@@ -86,6 +86,6 @@ For advanced config (`ai.claudeCode`, `server`, per-model `adapters`, `indexes`,
|
|
|
86
86
|
## Troubleshooting
|
|
87
87
|
|
|
88
88
|
- **`loom` commands fail "No loom.config.ts found"**: Run commands from the project directory, not the loom monorepo root
|
|
89
|
-
- **loom init fails**: Use `npx @loom-framework/core loom init <name> --description <desc> --adapter <filesystem|sqlite>`
|
|
89
|
+
- **loom init fails**: Use `npx -p @loom-framework/core loom init <name> --description <desc> --adapter <filesystem|sqlite>`
|
|
90
90
|
|
|
91
91
|
See `references/troubleshooting.md` for more issues.
|
|
@@ -13,16 +13,56 @@
|
|
|
13
13
|
| 类型 | 说明 | 实现方式 |
|
|
14
14
|
|------|------|---------|
|
|
15
15
|
| AI Chat | 自然语言对话 | HTTP SSE 流式,Claude Code 引擎 |
|
|
16
|
-
| AI Buttons | 一键 AI 动作 | 预定义 Prompt,`aiButtons`
|
|
16
|
+
| AI Buttons | 一键 AI 动作 | 预定义 Prompt,`aiButtons` 配置;点击后打开 ChatDrawer 自动提交 |
|
|
17
17
|
| CRUD | 结构化数据管理 | REST API,Schema 驱动自动生成 |
|
|
18
18
|
|
|
19
|
+
## 组件架构
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
AppShell(应用布局,自动包含 AI 入口)
|
|
23
|
+
├── Layout (Sider + Content)
|
|
24
|
+
└── AIBubble(浮动 AI 助手按钮)
|
|
25
|
+
└── ChatDrawer(AI 对话抽屉)
|
|
26
|
+
└── ChatPanel(聊天面板,SSE 流式通信)
|
|
27
|
+
├── LoomChatProvider + useXChat
|
|
28
|
+
├── MessageContent(thinking/content/tool_call 渲染)
|
|
29
|
+
└── Sender(输入框 + 文件上传)
|
|
30
|
+
|
|
31
|
+
AIActionButton(触发 AI 动作)
|
|
32
|
+
→ 通过 AIContext.triggerAI() 打开 ChatDrawer 并自动提交 prompt
|
|
33
|
+
|
|
34
|
+
useData(数据 CRUD hook)
|
|
35
|
+
→ 监听 loom:data-changed 事件,AI 通过工具修改数据后自动刷新
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### AI 按钮工作流
|
|
39
|
+
|
|
40
|
+
1. 用户点击 AI 按钮(表格操作列的 Dropdown 菜单项)
|
|
41
|
+
2. AIActionButton 调用 `AIContext.triggerAI({ query, buttonId, context })`
|
|
42
|
+
3. AIBubble 收到请求 → 打开 ChatDrawer → 设置 pendingRequest
|
|
43
|
+
4. ChatPanel 收到 pendingQuery → 自动提交给后端
|
|
44
|
+
5. 后端 AI 处理,可能通过工具调用进行 CRUD 操作
|
|
45
|
+
6. ChatPanel done 事件 → 触发 `loom:data-changed` 自定义事件
|
|
46
|
+
7. useData hook 监听事件 → 自动 refresh 刷新页面数据
|
|
47
|
+
|
|
48
|
+
### 前端组件导出
|
|
49
|
+
|
|
50
|
+
| 组件/Hook | 说明 |
|
|
51
|
+
|-----------|------|
|
|
52
|
+
| `AppShell` | 应用布局框架(含 AI 浮动入口) |
|
|
53
|
+
| `ChatDrawer` | AI 对话抽屉 |
|
|
54
|
+
| `AIBubble` | AI 浮动按钮(AppShell 已内置,无需单独使用) |
|
|
55
|
+
| `AIActionButton` | AI 动作按钮(通过 AIContext 触发 ChatDrawer) |
|
|
56
|
+
| `AIContext` | AI 上下文(AppShell 提供,子组件可调用 triggerAI) |
|
|
57
|
+
| `useData` | 数据 CRUD hook(自动响应 AI 数据变更) |
|
|
58
|
+
|
|
19
59
|
## 项目结构
|
|
20
60
|
|
|
21
61
|
```
|
|
22
62
|
my-loom-app/
|
|
23
63
|
├── loom.config.ts # 唯一配置源(模型、AI 按钮、服务器配置)
|
|
24
64
|
├── frontend/ # React + TypeScript + Vite
|
|
25
|
-
│ └── src/pages/
|
|
65
|
+
│ └── src/components/pages/ # 业务页面(CRUD + AI 按钮)
|
|
26
66
|
├── backend/src/ # Fastify + AI 通信(LoomServer)
|
|
27
67
|
├── .claude/skills/ # Skills(Prompt as Code)
|
|
28
68
|
├── cli/src/commands/ # CLI 业务命令扩展
|
|
@@ -37,7 +77,7 @@ my-loom-app/
|
|
|
37
77
|
| 包 | 说明 |
|
|
38
78
|
|---|---|
|
|
39
79
|
| `@loom-framework/core` | 运行时 + 开发时:DataAdapter、LoomServer、CLI(loom / loom-server) |
|
|
40
|
-
| `@loom-framework/frontend-antd` | 前端组件库:ChatDrawer、
|
|
80
|
+
| `@loom-framework/frontend-antd` | 前端组件库:AppShell、ChatDrawer、AIActionButton、useData、AIContext |
|
|
41
81
|
|
|
42
82
|
## CLI 命令速查
|
|
43
83
|
|
|
@@ -45,7 +85,7 @@ my-loom-app/
|
|
|
45
85
|
|
|
46
86
|
| 命令 | 说明 |
|
|
47
87
|
|------|------|
|
|
48
|
-
| `loom init <name> -d <desc> -a <adapter>` | 创建新项目 |
|
|
88
|
+
| `npx -p @loom-framework/core loom init <name> -d <desc> -a <adapter>` | 创建新项目 |
|
|
49
89
|
|
|
50
90
|
### 开发
|
|
51
91
|
|
|
@@ -58,7 +98,7 @@ my-loom-app/
|
|
|
58
98
|
|
|
59
99
|
| 命令 | 说明 |
|
|
60
100
|
|------|------|
|
|
61
|
-
| `loom generate page <Name> --model <model>` | 生成 CRUD
|
|
101
|
+
| `loom generate page <Name> --model <model>` | 生成 CRUD 页面(含 AI 按钮,若配置了 aiButtons) |
|
|
62
102
|
| `loom generate skill <name>` | 生成 Skill 脚手架 |
|
|
63
103
|
| `loom generate capabilities` | 重新生成 MCP Server + CLI |
|
|
64
104
|
|
|
@@ -76,11 +76,21 @@ aiButtons: [{
|
|
|
76
76
|
icon: 'FileTextOutlined', // optional: Ant Design icon name
|
|
77
77
|
prompt: '请总结以下内容', // required (or promptTemplate)
|
|
78
78
|
promptTemplate: 'Summarize {{content}}', // alternative to prompt, with {{vars}}
|
|
79
|
+
// {{vars}} are replaced with current row field values
|
|
79
80
|
contextVars: ['content'], // optional: variable names for promptTemplate
|
|
80
81
|
placement: 'page-header', // optional: UI placement hint
|
|
81
82
|
}],
|
|
82
83
|
```
|
|
83
84
|
|
|
85
|
+
### AI Button Behavior
|
|
86
|
+
|
|
87
|
+
When configured, AI buttons are automatically integrated into CRUD page action columns:
|
|
88
|
+
|
|
89
|
+
1. Each table row shows an "AI" dropdown button with all configured buttons as menu items
|
|
90
|
+
2. Clicking a button opens the ChatDrawer and auto-submits the composed prompt
|
|
91
|
+
3. If `promptTemplate` uses `{{fieldName}}`, it's replaced with the current row's field value
|
|
92
|
+
4. If AI performs CRUD via tool calls, the page auto-refreshes (via `loom:data-changed` event)
|
|
93
|
+
|
|
84
94
|
## Data Access in Skills
|
|
85
95
|
|
|
86
96
|
- **Prefer MCP Tools** for data CRUD: `read_<model>`, `write_<model>`, `update_<model>`, `delete_<model>`
|
|
@@ -6,6 +6,13 @@ Common issues when creating and running Loom projects.
|
|
|
6
6
|
|
|
7
7
|
Dependencies not installed. Run `npm install` from the project directory.
|
|
8
8
|
|
|
9
|
+
## `npx @loom-framework/core loom init` Fails
|
|
10
|
+
|
|
11
|
+
The `npx` command cannot find the executable. Use the `-p` flag to specify the package:
|
|
12
|
+
```bash
|
|
13
|
+
npx -p @loom-framework/core loom init <name> --description <desc> --adapter <adapter>
|
|
14
|
+
```
|
|
15
|
+
|
|
9
16
|
## `loom dev` Port Already in Use (EADDRINUSE)
|
|
10
17
|
|
|
11
18
|
Previous process still running. Kill it: `lsof -ti:3000 | xargs kill -9`
|