@formlm/cli 0.2.3 → 0.2.5
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/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +4 -3
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +64 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +34 -41
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/expert.d.ts.map +1 -1
- package/dist/commands/expert.js +15 -14
- package/dist/commands/expert.js.map +1 -1
- package/dist/commands/field.d.ts.map +1 -1
- package/dist/commands/field.js +17 -27
- package/dist/commands/field.js.map +1 -1
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +21 -27
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/scale.d.ts.map +1 -1
- package/dist/commands/scale.js +13 -19
- package/dist/commands/scale.js.map +1 -1
- package/dist/commands/smart.d.ts.map +1 -1
- package/dist/commands/smart.js +31 -4
- package/dist/commands/smart.js.map +1 -1
- package/dist/commands/snapshot.d.ts.map +1 -1
- package/dist/commands/snapshot.js +7 -1
- package/dist/commands/snapshot.js.map +1 -1
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +54 -12
- package/dist/exec.js.map +1 -1
- package/dist/index.js +42 -26
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +31 -20
- package/dist/mcp.js.map +1 -1
- package/dist/utils.d.ts +18 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +34 -0
- package/dist/utils.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +11 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/smart.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { Option } from 'commander';
|
|
1
2
|
import { execCommand } from '../exec.js';
|
|
2
3
|
import { output } from '../output.js';
|
|
4
|
+
import { escapeArg } from '../utils.js';
|
|
3
5
|
/**
|
|
4
6
|
* Smart Pipeline Commands
|
|
5
7
|
*
|
|
@@ -21,20 +23,45 @@ export function registerSmartCommand(parent) {
|
|
|
21
23
|
.command('generate')
|
|
22
24
|
.description('Create a complete app from natural language description. The server runs AssessAgent: plan → execute. This is the fastest way to get a production-ready assessment app. ⏱️ Estimated: 1-5 min (assessment 60-120s, consultation 180-300s, survey 30-60s). Do NOT cancel — let it complete.')
|
|
23
25
|
.requiredOption('--input <text>', 'Natural language description of the app you want to build (e.g. "a mental health screening questionnaire for college students")')
|
|
24
|
-
.
|
|
26
|
+
.addOption(new Option('--plan-type <type>', 'Plan type: assessment / consultation / survey / exam / quiz / learn (default: auto-detected by AI)').choices(['assessment', 'consultation', 'survey', 'exam', 'quiz', 'learn']))
|
|
25
27
|
.option('--style <style>', 'Visual style preference (e.g. "深色科技风" or "warm and friendly")')
|
|
26
|
-
.
|
|
28
|
+
.addOption(new Option('--question-count <count>', 'Question count range: 10-15 / 15-20 / 20-30').choices(['10-15', '15-20', '20-30']))
|
|
27
29
|
.action(async (opts) => {
|
|
28
|
-
let cmd = `assess smart generate --input "${opts.input}"`;
|
|
30
|
+
let cmd = `assess smart generate --input "${escapeArg(opts.input)}"`;
|
|
29
31
|
if (opts.planType)
|
|
30
32
|
cmd += ` --plan-type ${opts.planType}`;
|
|
31
33
|
if (opts.style)
|
|
32
|
-
cmd += ` --style "${opts.style}"`;
|
|
34
|
+
cmd += ` --style "${escapeArg(opts.style)}"`;
|
|
33
35
|
if (opts.questionCount)
|
|
34
36
|
cmd += ` --question-count ${opts.questionCount}`;
|
|
35
37
|
cmd += ' --json';
|
|
36
38
|
const result = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
37
39
|
output(result);
|
|
40
|
+
// ── Next Steps guidance (mirrors `app create` behavior) ──────
|
|
41
|
+
// The pipeline returns JSON with appId + URLs. When shareUrl is empty
|
|
42
|
+
// the app is not published yet, so guide the user to publish first.
|
|
43
|
+
if (result.code === 0 && result.data) {
|
|
44
|
+
try {
|
|
45
|
+
const parsed = JSON.parse(result.data);
|
|
46
|
+
const appId = parsed.appId;
|
|
47
|
+
if (appId) {
|
|
48
|
+
console.log('');
|
|
49
|
+
console.log('💡 Next steps:');
|
|
50
|
+
if (!parsed.shareUrl) {
|
|
51
|
+
console.log(` Publish: formlm-cli share publish --app ${appId}`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(` Fill-in: ${parsed.shareUrl}`);
|
|
55
|
+
}
|
|
56
|
+
console.log(` Editor: ${parsed.builderUrl || `http://formlm.me/mypage/builder.html?id=${appId}`}`);
|
|
57
|
+
console.log(` Data: ${parsed.dataUrl || `http://formlm.me/mypage/data.html?id=${appId}`}`);
|
|
58
|
+
console.log(` Snapshot: formlm-cli snapshot --app ${appId}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// result.data was not JSON — nothing to extract, skip guidance
|
|
63
|
+
}
|
|
64
|
+
}
|
|
38
65
|
});
|
|
39
66
|
}
|
|
40
67
|
//# sourceMappingURL=smart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA4D7D"}
|
|
@@ -18,9 +18,15 @@ export function registerSnapshotCommand(parent) {
|
|
|
18
18
|
.option('--module <name>', 'Get only a specific module: form / scale / connect / report / expert / share (default: all)')
|
|
19
19
|
.option('--md', 'Output all modules in Markdown format (token-efficient for AI, default: JSON)')
|
|
20
20
|
.action(async (opts) => {
|
|
21
|
+
const validModules = ['form', 'scale', 'connect', 'report', 'expert', 'share'];
|
|
22
|
+
// Validate module name early — prevent silent empty snapshot
|
|
23
|
+
if (opts.module && !validModules.includes(opts.module)) {
|
|
24
|
+
console.error(`❌ Invalid module "${opts.module}". Valid: ${validModules.join(', ')}`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
21
27
|
const modules = opts.module
|
|
22
28
|
? [opts.module]
|
|
23
|
-
:
|
|
29
|
+
: validModules;
|
|
24
30
|
const format = opts.md ? '--md' : '--json';
|
|
25
31
|
const commands = {
|
|
26
32
|
form: `assess form query --app ${opts.app} ${format}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAe;IACrD,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,wHAAwH,CAAC;SACrI,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,MAAM,CAAC,iBAAiB,EAAE,6FAA6F,CAAC;SACxH,MAAM,CAAC,MAAM,EAAE,+EAA+E,CAAC;SAC/F,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/commands/snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,UAAU,CAAC,CA6ErB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsDpF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAwDtE"}
|
package/dist/exec.js
CHANGED
|
@@ -21,6 +21,12 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
21
21
|
const url = new URL('/api/v1/mcp/exec', baseUrl);
|
|
22
22
|
const body = JSON.stringify({ cmd });
|
|
23
23
|
return new Promise((resolve) => {
|
|
24
|
+
// settled 标志防止 timeout / error / end / close 之间重复 resolve
|
|
25
|
+
let settled = false;
|
|
26
|
+
const settle = (r) => { if (!settled) {
|
|
27
|
+
settled = true;
|
|
28
|
+
resolve(r);
|
|
29
|
+
} };
|
|
24
30
|
const mod = url.protocol === 'https:' ? https : http;
|
|
25
31
|
const req = mod.request(url, {
|
|
26
32
|
method: 'POST',
|
|
@@ -36,14 +42,14 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
36
42
|
res.on('end', () => {
|
|
37
43
|
try {
|
|
38
44
|
const parsed = JSON.parse(data);
|
|
39
|
-
|
|
45
|
+
settle({
|
|
40
46
|
code: parsed.code ?? 0,
|
|
41
47
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
42
48
|
data: parsed.data ?? null,
|
|
43
49
|
});
|
|
44
50
|
}
|
|
45
51
|
catch {
|
|
46
|
-
|
|
52
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
47
53
|
}
|
|
48
54
|
// 释放 keep-alive socket,避免事件循环挂起导致进程无法退出
|
|
49
55
|
res.destroy();
|
|
@@ -59,17 +65,23 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
59
65
|
`2) use formlm_snapshot to check if partially generated, ` +
|
|
60
66
|
`3) use formlm_exec to complete partial results.`
|
|
61
67
|
: `Try again or simplify the command.`;
|
|
62
|
-
|
|
68
|
+
settle({
|
|
63
69
|
code: 408,
|
|
64
70
|
message: `Request timed out after ${Math.round(timeoutMs / 1000)}s. ${hint}`,
|
|
65
71
|
data: null,
|
|
66
72
|
});
|
|
67
73
|
});
|
|
74
|
+
// Error handler: 当 timeout 已 settle 则忽略后续 error(含 req.destroy() 产生的
|
|
75
|
+
// ECONNRESET);否则(代理层提前断连等)正常 settle 错误,防止 Promise 永远挂起。
|
|
68
76
|
req.on('error', (err) => {
|
|
69
|
-
|
|
70
|
-
if (err.code === 'ECONNRESET')
|
|
77
|
+
if (settled)
|
|
71
78
|
return;
|
|
72
|
-
|
|
79
|
+
settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
|
|
80
|
+
});
|
|
81
|
+
// Safety net: 连接被对端关闭且未触发 error(如 nginx 静默断连 FIN),
|
|
82
|
+
// 防止 Promise 永不 resolve。
|
|
83
|
+
req.on('close', () => {
|
|
84
|
+
settle({ code: 500, message: 'Connection closed by server', data: null });
|
|
73
85
|
});
|
|
74
86
|
req.write(body);
|
|
75
87
|
req.end();
|
|
@@ -84,6 +96,11 @@ export async function authLogin(email, password) {
|
|
|
84
96
|
const md5Password = crypto.createHash('md5').update(password).digest('hex');
|
|
85
97
|
const body = JSON.stringify({ email, password: md5Password });
|
|
86
98
|
return new Promise((resolve) => {
|
|
99
|
+
let settled = false;
|
|
100
|
+
const settle = (r) => { if (!settled) {
|
|
101
|
+
settled = true;
|
|
102
|
+
resolve(r);
|
|
103
|
+
} };
|
|
87
104
|
const mod = url.protocol === 'https:' ? https : http;
|
|
88
105
|
const req = mod.request(url, {
|
|
89
106
|
method: 'POST',
|
|
@@ -91,27 +108,37 @@ export async function authLogin(email, password) {
|
|
|
91
108
|
'Content-Type': 'application/json',
|
|
92
109
|
'Content-Length': Buffer.byteLength(body),
|
|
93
110
|
},
|
|
111
|
+
timeout: 30_000, // 30s — auth should be fast; prevent indefinite hang
|
|
94
112
|
}, (res) => {
|
|
95
113
|
let data = '';
|
|
96
114
|
res.on('data', (chunk) => { data += chunk; });
|
|
97
115
|
res.on('end', () => {
|
|
98
116
|
try {
|
|
99
117
|
const parsed = JSON.parse(data);
|
|
100
|
-
|
|
118
|
+
settle({
|
|
101
119
|
code: parsed.code ?? 0,
|
|
102
120
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
103
121
|
data: parsed.data ?? null,
|
|
104
122
|
});
|
|
105
123
|
}
|
|
106
124
|
catch {
|
|
107
|
-
|
|
125
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
108
126
|
}
|
|
109
127
|
// 释放 keep-alive socket,避免事件循环挂起
|
|
110
128
|
res.destroy();
|
|
111
129
|
});
|
|
112
130
|
});
|
|
131
|
+
req.on('timeout', () => {
|
|
132
|
+
req.destroy();
|
|
133
|
+
settle({ code: 408, message: 'Auth request timed out after 30s', data: null });
|
|
134
|
+
});
|
|
113
135
|
req.on('error', (err) => {
|
|
114
|
-
|
|
136
|
+
if (settled)
|
|
137
|
+
return;
|
|
138
|
+
settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
|
|
139
|
+
});
|
|
140
|
+
req.on('close', () => {
|
|
141
|
+
settle({ code: 500, message: 'Connection closed by server', data: null });
|
|
115
142
|
});
|
|
116
143
|
req.write(body);
|
|
117
144
|
req.end();
|
|
@@ -128,33 +155,48 @@ export async function authMe(profileName) {
|
|
|
128
155
|
}
|
|
129
156
|
const url = new URL('/api/v1/mcp/auth/me', baseUrl);
|
|
130
157
|
return new Promise((resolve) => {
|
|
158
|
+
let settled = false;
|
|
159
|
+
const settle = (r) => { if (!settled) {
|
|
160
|
+
settled = true;
|
|
161
|
+
resolve(r);
|
|
162
|
+
} };
|
|
131
163
|
const mod = url.protocol === 'https:' ? https : http;
|
|
132
164
|
const req = mod.request(url, {
|
|
133
165
|
method: 'GET',
|
|
134
166
|
headers: {
|
|
135
167
|
'Authorization': token,
|
|
136
168
|
},
|
|
169
|
+
timeout: 15_000, // 15s — token check should be fast; prevent indefinite hang
|
|
137
170
|
}, (res) => {
|
|
138
171
|
let data = '';
|
|
139
172
|
res.on('data', (chunk) => { data += chunk; });
|
|
140
173
|
res.on('end', () => {
|
|
141
174
|
try {
|
|
142
175
|
const parsed = JSON.parse(data);
|
|
143
|
-
|
|
176
|
+
settle({
|
|
144
177
|
code: parsed.code ?? 0,
|
|
145
178
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
146
179
|
data: parsed.data ?? null,
|
|
147
180
|
});
|
|
148
181
|
}
|
|
149
182
|
catch {
|
|
150
|
-
|
|
183
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
151
184
|
}
|
|
152
185
|
// 释放 keep-alive socket,避免事件循环挂起
|
|
153
186
|
res.destroy();
|
|
154
187
|
});
|
|
155
188
|
});
|
|
189
|
+
req.on('timeout', () => {
|
|
190
|
+
req.destroy();
|
|
191
|
+
settle({ code: 408, message: 'Auth check timed out after 15s', data: null });
|
|
192
|
+
});
|
|
156
193
|
req.on('error', (err) => {
|
|
157
|
-
|
|
194
|
+
if (settled)
|
|
195
|
+
return;
|
|
196
|
+
settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
|
|
197
|
+
});
|
|
198
|
+
req.on('close', () => {
|
|
199
|
+
settle({ code: 500, message: 'Connection closed by server', data: null });
|
|
158
200
|
});
|
|
159
201
|
req.end();
|
|
160
202
|
});
|
package/dist/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQnD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,WAAoB,EACpB,YAAoB,MAAM;IAE1B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,2CAA2C,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,KAAK;gBACtB,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;aAC1C;YACD,OAAO,EAAE,SAAS;SACnB,EAAE,CAAC,GAAG,EAAE,EAAE;YACT,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,12 +11,53 @@ import { registerExpertCommand } from './commands/expert.js';
|
|
|
11
11
|
import { registerSmartCommand } from './commands/smart.js';
|
|
12
12
|
import { registerSnapshotCommand } from './commands/snapshot.js';
|
|
13
13
|
import { registerSkillCommand } from './commands/skill.js';
|
|
14
|
+
import { VERSION } from './version.js';
|
|
14
15
|
const program = new Command();
|
|
15
16
|
program
|
|
16
17
|
.name('formlm-cli')
|
|
17
18
|
.description('The official CLI & MCP Server for FormLM — https://formlm.me\n\n Quick start:\n formlm-cli smart generate --input "a mental health screening questionnaire"\n formlm-cli snapshot --app <appId>\n formlm-cli skill form\n formlm-cli mcp (start MCP server for any MCP client: Claude / Cursor / Codex CLI / Windsurf / etc.)')
|
|
18
|
-
.version(
|
|
19
|
+
.version(VERSION)
|
|
19
20
|
.option('--profile <name>', 'Profile to use (overrides default)');
|
|
21
|
+
// ── Custom error handling (MUST be set BEFORE subcommand registration) ──────
|
|
22
|
+
// Commander subcommands copy the parent's _exitCallback at creation time
|
|
23
|
+
// (copyInheritedSettings in lib/command.js), so exitOverride MUST be installed
|
|
24
|
+
// before any program.command() call. Otherwise subcommand errors bypass this
|
|
25
|
+
// handler and hit the default process.exit, losing the friendly ❌ + Usage view.
|
|
26
|
+
// We also suppress Commander's default `error:` output (via outputError) since
|
|
27
|
+
// this handler owns the full error presentation, avoiding duplicate lines.
|
|
28
|
+
program.configureOutput({
|
|
29
|
+
outputError: () => { },
|
|
30
|
+
});
|
|
31
|
+
program.exitOverride((err) => {
|
|
32
|
+
const msg = String(err.message || '').replace(/^error:\s*/, '');
|
|
33
|
+
// Normal exits (help/version display) — exit cleanly with Commander's code.
|
|
34
|
+
if (err.code === 'commander.helpDisplayed' || err.code === 'commander.version') {
|
|
35
|
+
process.exit(err.exitCode ?? 0);
|
|
36
|
+
}
|
|
37
|
+
// Input-mistake errors — show friendly message + usage hint, then exit 1.
|
|
38
|
+
const inputMistakeCodes = [
|
|
39
|
+
'commander.missingArgument',
|
|
40
|
+
'commander.missingRequiredArgument',
|
|
41
|
+
'commander.missingMandatoryOptionValue', // requiredOption omitted (e.g. --input)
|
|
42
|
+
'commander.optionMissingArgument',
|
|
43
|
+
'commander.unknownOption',
|
|
44
|
+
'commander.unknownCommand',
|
|
45
|
+
'commander.invalidArgument', // bad .choices() value (e.g. --plan-type)
|
|
46
|
+
'commander.conflictingOption',
|
|
47
|
+
];
|
|
48
|
+
console.error();
|
|
49
|
+
console.error(`❌ ${msg}`);
|
|
50
|
+
const cmd = err.command || program;
|
|
51
|
+
if (inputMistakeCodes.includes(err.code) && cmd && cmd.helpInformation) {
|
|
52
|
+
console.error();
|
|
53
|
+
console.error('💡 Usage:');
|
|
54
|
+
const help = cmd.helpInformation();
|
|
55
|
+
const lines = help.split('\n').filter((l) => l.trim());
|
|
56
|
+
const usageLines = lines.slice(0, Math.min(lines.length, 8));
|
|
57
|
+
console.error(usageLines.join('\n'));
|
|
58
|
+
}
|
|
59
|
+
process.exit(err.exitCode ?? 1);
|
|
60
|
+
});
|
|
20
61
|
// ── Register command groups ────────────────────────────────────
|
|
21
62
|
// Order: high-level (smart) → query (snapshot/skill) → modules → auth/profile
|
|
22
63
|
registerSmartCommand(program);
|
|
@@ -47,31 +88,6 @@ program.hook('preAction', () => {
|
|
|
47
88
|
setRuntimeProfile(opts.profile);
|
|
48
89
|
}
|
|
49
90
|
});
|
|
50
|
-
// ── Custom error handling: enhance missing-option errors with usage tips ───
|
|
51
|
-
// Commander's default error message for missing options is:
|
|
52
|
-
// error: required option '--name <name>' not specified
|
|
53
|
-
// We intercept it to add a usage example.
|
|
54
|
-
program.exitOverride((err) => {
|
|
55
|
-
// commander errors have code property; only intercept option-missing errors
|
|
56
|
-
if (err.code === 'commander.missingArgument' || err.code === 'commander.missingRequiredArgument' || err.code === 'commander.unknownOption') {
|
|
57
|
-
console.error();
|
|
58
|
-
console.error(`❌ ${err.message}`);
|
|
59
|
-
// Find the command that caused the error to show its help
|
|
60
|
-
const cmd = err.command || program;
|
|
61
|
-
if (cmd && cmd.helpInformation) {
|
|
62
|
-
console.error();
|
|
63
|
-
console.error('💡 Usage:');
|
|
64
|
-
// Show only the first few lines of help (usage + options)
|
|
65
|
-
const help = cmd.helpInformation();
|
|
66
|
-
const lines = help.split('\n').filter((l) => l.trim());
|
|
67
|
-
const usageLines = lines.slice(0, Math.min(lines.length, 8));
|
|
68
|
-
console.error(usageLines.join('\n'));
|
|
69
|
-
}
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
// For other errors, re-throw
|
|
73
|
-
throw err;
|
|
74
|
-
});
|
|
75
91
|
// parseAsync ensures all async action handlers complete before exiting.
|
|
76
92
|
// For regular commands: resolves after action completes → process.exit(0).
|
|
77
93
|
// For MCP server mode: never resolves (server keeps running) → process stays alive.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AA0EA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAmVpD"}
|
package/dist/mcp.js
CHANGED
|
@@ -3,18 +3,10 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { execCommand, authLogin, authMe } from './exec.js';
|
|
5
5
|
import { addProfile, getActiveProfile, getBaseUrl } from './config.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
function escapeArg(s) {
|
|
11
|
-
return s
|
|
12
|
-
.replace(/\\/g, '\\\\') // \ → \\ (must be first)
|
|
13
|
-
.replace(/"/g, '\\"') // " → \"
|
|
14
|
-
.replace(/\r?\n|\r/g, ' ') // newlines → space
|
|
15
|
-
.replace(/\t/g, ' ') // tabs → space
|
|
16
|
-
.trim();
|
|
17
|
-
}
|
|
6
|
+
import { VERSION } from './version.js';
|
|
7
|
+
import { escapeArg } from './utils.js';
|
|
8
|
+
// escapeArg now lives in ./utils.js (shared with commands/smart.ts) so that the
|
|
9
|
+
// direct CLI and the MCP Server use a single, consistent escaping implementation.
|
|
18
10
|
// ── Helper: format exec result as MCP text content ──────────────────────────
|
|
19
11
|
function toText(r) {
|
|
20
12
|
return r.code === 0 ? (r.data || r.message) : `❌ [${r.code}] ${r.message}`;
|
|
@@ -87,7 +79,7 @@ const TIMEOUT_STYLE = 600_000; // 10min for connect style apply/apply-all (AI-ge
|
|
|
87
79
|
export async function startMcpServer() {
|
|
88
80
|
const server = new McpServer({
|
|
89
81
|
name: 'formlm',
|
|
90
|
-
version:
|
|
82
|
+
version: VERSION,
|
|
91
83
|
});
|
|
92
84
|
// ════════════════════════════════════════════════════════════════
|
|
93
85
|
// MCP RESOURCES — Domain Knowledge (SKILL.md × 6)
|
|
@@ -223,7 +215,7 @@ export async function startMcpServer() {
|
|
|
223
215
|
input: z.string().describe('Natural language description of the app. Be specific: mention topic, audience, number of questions, dimensions/subscales, scoring, visual style. ' +
|
|
224
216
|
'Example: "A workplace stress assessment for office workers with 3 dimensions (workload, autonomy, support), 15 questions, score 0-60, detailed result interpretation, dark professional style". ' +
|
|
225
217
|
'Supports up to 8000 characters. If user pastes reference documents, include them here.'),
|
|
226
|
-
planType: z.
|
|
218
|
+
planType: z.enum(['assessment', 'consultation', 'survey', 'exam', 'quiz', 'learn']).optional().describe('Plan type. Choose based on user needs: ' +
|
|
227
219
|
'"assessment" (scoring+report, for psych/workplace/health evaluations, MOST COMMON), ' +
|
|
228
220
|
'"consultation" (scoring+report+AI expert chat, for mental health/coaching), ' +
|
|
229
221
|
'"survey" (no scoring, for feedback/research), ' +
|
|
@@ -236,7 +228,7 @@ export async function startMcpServer() {
|
|
|
236
228
|
'"简洁直接" (minimal clean, for general use), ' +
|
|
237
229
|
'"轻松活泼" (lively playful, for quiz/education). ' +
|
|
238
230
|
'Or custom: "深色科技风" / "warm friendly pastel" / "minimal clean white".'),
|
|
239
|
-
questionCount: z.
|
|
231
|
+
questionCount: z.enum(['10-15', '15-20', '20-30']).optional().describe('Target question count range: "10-15" (quick screening, 3-5 min), ' +
|
|
240
232
|
'"15-20" (standard assessment, 5-8 min), ' +
|
|
241
233
|
'"20-30" (deep assessment, 8-15 min). Default: auto-decided by AI based on planType.'),
|
|
242
234
|
}, async (params) => {
|
|
@@ -263,7 +255,12 @@ export async function startMcpServer() {
|
|
|
263
255
|
appId: z.string().describe('App ID'),
|
|
264
256
|
module: z.string().optional().describe('Get only one module: form / scale / connect / report / expert / share (default: all 6)'),
|
|
265
257
|
}, async (params) => {
|
|
266
|
-
const
|
|
258
|
+
const validModules = ['form', 'scale', 'connect', 'report', 'expert', 'share'];
|
|
259
|
+
const modules = params.module ? [params.module] : validModules;
|
|
260
|
+
// Validate module name early — prevent silent empty results
|
|
261
|
+
if (params.module && !validModules.includes(params.module)) {
|
|
262
|
+
return { content: [{ type: 'text', text: `❌ Invalid module "${params.module}". Valid: ${validModules.join(', ')}` }] };
|
|
263
|
+
}
|
|
267
264
|
const commands = {
|
|
268
265
|
form: `assess form query --app ${params.appId} --json`,
|
|
269
266
|
scale: `assess scale query --app ${params.appId} --json`,
|
|
@@ -313,7 +310,7 @@ export async function startMcpServer() {
|
|
|
313
310
|
});
|
|
314
311
|
// ── Tier 3: Direct Execution (Advanced) ──────────────────────────
|
|
315
312
|
//
|
|
316
|
-
// Whitelisted command prefixes (first
|
|
313
|
+
// Whitelisted command prefixes (first 2 tokens are checked):
|
|
317
314
|
// assess app : list / create / use / update / remove
|
|
318
315
|
// assess form : query / find / types / config / add / update / remove / move / set-property
|
|
319
316
|
// assess scale : query / find / add / update / set / remove / clear / config / keys / data
|
|
@@ -336,7 +333,7 @@ export async function startMcpServer() {
|
|
|
336
333
|
' NEVER call a remove command based on a vague reference ("delete it", "remove that one")',
|
|
337
334
|
' without first resolving and confirming the exact target. Deletion is irreversible.',
|
|
338
335
|
'',
|
|
339
|
-
'Whitelisted prefixes (
|
|
336
|
+
'Whitelisted prefixes (2-token match):',
|
|
340
337
|
' App: assess app list/create/use/update/remove/urls',
|
|
341
338
|
' Form: assess form query/find/types/config/add/update/remove/move/set-property',
|
|
342
339
|
' Scale: assess scale query/find/add/update/set/remove/clear/config/keys/data',
|
|
@@ -360,15 +357,29 @@ export async function startMcpServer() {
|
|
|
360
357
|
command: z.string().describe('Full CLI command starting with "assess". Do NOT include the "formlm-cli" prefix. ' +
|
|
361
358
|
'Add --json flag for structured output. Escape inner quotes with \\".'),
|
|
362
359
|
}, async (params) => {
|
|
360
|
+
// Defense-in-depth: enforce the documented whitelisted command prefixes
|
|
361
|
+
// before sending anything to the server. Prevents LLM hallucinations from
|
|
362
|
+
// issuing arbitrary commands and avoids wasteful network round-trips.
|
|
363
|
+
const head = params.command.trim().split(/\s+/).slice(0, 2).join(' ');
|
|
364
|
+
const allowedPrefixes = ['assess app', 'assess form', 'assess scale', 'assess connect', 'assess report', 'assess expert', 'assess share', 'assess smart', 'assess skill'];
|
|
365
|
+
if (!allowedPrefixes.includes(head)) {
|
|
366
|
+
return {
|
|
367
|
+
content: [{
|
|
368
|
+
type: 'text',
|
|
369
|
+
text: `❌ Command must start with one of the whitelisted prefixes (assess app/form/scale/connect/report/expert/share/smart/skill). Got: "${params.command.substring(0, 80)}"`,
|
|
370
|
+
}],
|
|
371
|
+
};
|
|
372
|
+
}
|
|
363
373
|
// Use longer timeout for commands that trigger server-side AI generation
|
|
364
374
|
const isStyleCmd = params.command.includes('connect style apply');
|
|
365
|
-
const
|
|
375
|
+
const isSmartCmd = params.command.includes('smart generate');
|
|
376
|
+
const timeout = (isStyleCmd || isSmartCmd) ? TIMEOUT_STYLE : TIMEOUT_DEFAULT;
|
|
366
377
|
const r = await execCommand(params.command, undefined, timeout);
|
|
367
378
|
return { content: [{ type: 'text', text: toText(r) }] };
|
|
368
379
|
});
|
|
369
380
|
// ── Start Server ──────────────────────────────────────────────────
|
|
370
381
|
const transport = new StdioServerTransport();
|
|
371
382
|
await server.connect(transport);
|
|
372
|
-
console.error(
|
|
383
|
+
console.error(`FormLM MCP Server v${VERSION} running on stdio (6 tools + 6 resources)`);
|
|
373
384
|
}
|
|
374
385
|
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|