@formlm/cli 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/smart.d.ts.map +1 -1
- package/dist/commands/smart.js +55 -23
- package/dist/commands/smart.js.map +1 -1
- package/dist/exec.d.ts +1 -1
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +48 -22
- package/dist/exec.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +137 -71
- package/dist/mcp.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.d.ts","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"smart.d.ts","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAuB5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6E1D"}
|
package/dist/commands/smart.js
CHANGED
|
@@ -6,7 +6,8 @@ import { escapeArg } from '../utils.js';
|
|
|
6
6
|
* Smart Pipeline Commands
|
|
7
7
|
*
|
|
8
8
|
* Wraps the server-side AssessAgent intelligent pipeline:
|
|
9
|
-
* - smart
|
|
9
|
+
* - smart plan: AssessAgent.plan() only — generate execution plan + appId
|
|
10
|
+
* - smart execute: execute a single module (form/scale/connect/report/expert/share)
|
|
10
11
|
*
|
|
11
12
|
* This is the RECOMMENDED entry point for AI agents (works with any MCP-compatible
|
|
12
13
|
* platform: Claude / Cursor / Codex CLI / Windsurf / etc., or direct CLI usage)
|
|
@@ -15,19 +16,20 @@ import { escapeArg } from '../utils.js';
|
|
|
15
16
|
*/
|
|
16
17
|
// ── Timeouts ──────────────────────────────────────────────────────────────────
|
|
17
18
|
// Must match mcp.ts constants to ensure CLI and MCP Server have identical behavior.
|
|
18
|
-
const
|
|
19
|
+
const TIMEOUT_PLAN = 120_000; // 2min for smart plan (Phase 1 only, ~10-30s)
|
|
20
|
+
const TIMEOUT_EXECUTE = 300_000; // 5min for smart execute (single module, ~30-120s)
|
|
19
21
|
export function registerSmartCommand(parent) {
|
|
20
22
|
const smart = parent.command('smart').description('Intelligent pipeline — natural language to live app (recommended for AI agents)');
|
|
21
|
-
// ── smart
|
|
23
|
+
// ── smart plan ───────────────────────────────────────────────
|
|
22
24
|
smart
|
|
23
|
-
.command('
|
|
24
|
-
.description('
|
|
25
|
-
.requiredOption('--input <text>', 'Natural language description of the app you want to build
|
|
26
|
-
.addOption(new Option('--plan-type <type>', 'Plan type
|
|
27
|
-
.option('--style <style>', 'Visual style preference
|
|
28
|
-
.addOption(new Option('--question-count <count>', 'Question count range
|
|
25
|
+
.command('plan')
|
|
26
|
+
.description('Generate execution plan only (Phase 1). Returns plan JSON + appId. Use with smart execute for step-by-step generation to avoid AI client timeouts.')
|
|
27
|
+
.requiredOption('--input <text>', 'Natural language description of the app you want to build')
|
|
28
|
+
.addOption(new Option('--plan-type <type>', 'Plan type').choices(['assessment', 'consultation', 'survey', 'exam', 'quiz', 'learn']))
|
|
29
|
+
.option('--style <style>', 'Visual style preference')
|
|
30
|
+
.addOption(new Option('--question-count <count>', 'Question count range').choices(['10-15', '15-20', '20-30']))
|
|
29
31
|
.action(async (opts) => {
|
|
30
|
-
let cmd = `assess smart
|
|
32
|
+
let cmd = `assess smart plan --input "${escapeArg(opts.input)}"`;
|
|
31
33
|
if (opts.planType)
|
|
32
34
|
cmd += ` --plan-type ${opts.planType}`;
|
|
33
35
|
if (opts.style)
|
|
@@ -35,31 +37,61 @@ export function registerSmartCommand(parent) {
|
|
|
35
37
|
if (opts.questionCount)
|
|
36
38
|
cmd += ` --question-count ${opts.questionCount}`;
|
|
37
39
|
cmd += ' --json';
|
|
38
|
-
const result = await execCommand(cmd, undefined,
|
|
40
|
+
const result = await execCommand(cmd, undefined, TIMEOUT_PLAN);
|
|
39
41
|
output(result);
|
|
40
|
-
// ── Next Steps guidance
|
|
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.
|
|
42
|
+
// ── Next Steps guidance ──────
|
|
43
43
|
if (result.code === 0 && result.data) {
|
|
44
44
|
try {
|
|
45
45
|
const parsed = JSON.parse(result.data);
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
if (parsed.appId && parsed.plan) {
|
|
47
|
+
console.log('');
|
|
48
|
+
console.log('💡 Next steps — execute modules sequentially:');
|
|
49
|
+
const modules = (parsed.tasks || []).map((t) => t.skill);
|
|
50
|
+
for (const m of modules) {
|
|
51
|
+
console.log(` formlm-cli smart execute --app ${parsed.appId} --module ${m} --plan '${parsed.plan}'`);
|
|
52
|
+
}
|
|
53
|
+
console.log(` Snapshot: formlm-cli snapshot --app ${parsed.appId}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// result.data was not JSON — skip guidance
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// ── smart execute ────────────────────────────────────────────
|
|
62
|
+
smart
|
|
63
|
+
.command('execute')
|
|
64
|
+
.description('Execute a single module from the plan. Each module completes within ~60s, well within AI client timeouts (~300s).')
|
|
65
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
66
|
+
.requiredOption('--module <name>', 'Module: form / scale / connect / report / expert / share')
|
|
67
|
+
.requiredOption('--plan <json>', 'Plan JSON from smart plan (or updated plan from previous smart execute)')
|
|
68
|
+
.action(async (opts) => {
|
|
69
|
+
let cmd = `assess smart execute --app ${opts.app} --module ${opts.module} --plan "${escapeArg(opts.plan)}" --json`;
|
|
70
|
+
const result = await execCommand(cmd, undefined, TIMEOUT_EXECUTE);
|
|
71
|
+
output(result);
|
|
72
|
+
// ── Next Steps guidance ──────
|
|
73
|
+
if (result.code === 0 && result.data) {
|
|
74
|
+
try {
|
|
75
|
+
const parsed = JSON.parse(result.data);
|
|
76
|
+
if (parsed.appId && parsed.plan) {
|
|
77
|
+
const moduleOrder = ['form', 'scale', 'connect', 'report', 'expert', 'share'];
|
|
78
|
+
const currentIdx = moduleOrder.indexOf(opts.module);
|
|
79
|
+
const nextModule = moduleOrder[currentIdx + 1];
|
|
48
80
|
console.log('');
|
|
49
81
|
console.log('💡 Next steps:');
|
|
50
|
-
if (
|
|
51
|
-
console.log(`
|
|
82
|
+
if (nextModule) {
|
|
83
|
+
console.log(` Execute next: formlm-cli smart execute --app ${parsed.appId} --module ${nextModule} --plan '${parsed.plan}'`);
|
|
52
84
|
}
|
|
53
85
|
else {
|
|
54
|
-
console.log(`
|
|
86
|
+
console.log(` ✅ All modules done!`);
|
|
87
|
+
console.log(` Editor: https://formlm.me/mypage/builder.html?id=${parsed.appId}`);
|
|
88
|
+
console.log(` Data: https://formlm.me/mypage/data.html?id=${parsed.appId}`);
|
|
89
|
+
console.log(` Snapshot: formlm-cli snapshot --app ${parsed.appId}`);
|
|
55
90
|
}
|
|
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
91
|
}
|
|
60
92
|
}
|
|
61
93
|
catch {
|
|
62
|
-
// result.data was not JSON —
|
|
94
|
+
// result.data was not JSON — skip guidance
|
|
63
95
|
}
|
|
64
96
|
}
|
|
65
97
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC
|
|
1
|
+
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"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"}
|
package/dist/exec.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export interface ExecResult {
|
|
|
11
11
|
* @param profileName Optional profile name override
|
|
12
12
|
* @param timeoutMs Request timeout in milliseconds.
|
|
13
13
|
* Default: 60_000 (60s) for most commands.
|
|
14
|
-
* Smart
|
|
14
|
+
* Smart plan should use 120_000 (2min), smart execute 300_000 (5min).
|
|
15
15
|
*/
|
|
16
16
|
export declare function execCommand(cmd: string, profileName?: string, timeoutMs?: number): Promise<ExecResult>;
|
|
17
17
|
/**
|
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
|
@@ -10,7 +10,7 @@ import { getBaseUrl, getToken } from './config.js';
|
|
|
10
10
|
* @param profileName Optional profile name override
|
|
11
11
|
* @param timeoutMs Request timeout in milliseconds.
|
|
12
12
|
* Default: 60_000 (60s) for most commands.
|
|
13
|
-
* Smart
|
|
13
|
+
* Smart plan should use 120_000 (2min), smart execute 300_000 (5min).
|
|
14
14
|
*/
|
|
15
15
|
export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
16
16
|
const baseUrl = getBaseUrl();
|
|
@@ -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();
|
|
@@ -54,22 +60,28 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
54
60
|
req.destroy();
|
|
55
61
|
const isSmart = timeoutMs > 120_000;
|
|
56
62
|
const hint = isSmart
|
|
57
|
-
? `Smart
|
|
63
|
+
? `Smart plan/execute may take up to 5min. ` +
|
|
58
64
|
`If timeout persists: 1) simplify the description (fewer dimensions/questions), ` +
|
|
59
|
-
`2) use formlm_snapshot to check
|
|
60
|
-
`3) use formlm_exec to complete
|
|
65
|
+
`2) use formlm_snapshot to check partial results, ` +
|
|
66
|
+
`3) use formlm_exec to complete remaining modules.`
|
|
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',
|
|
@@ -98,14 +115,14 @@ export async function authLogin(email, password) {
|
|
|
98
115
|
res.on('end', () => {
|
|
99
116
|
try {
|
|
100
117
|
const parsed = JSON.parse(data);
|
|
101
|
-
|
|
118
|
+
settle({
|
|
102
119
|
code: parsed.code ?? 0,
|
|
103
120
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
104
121
|
data: parsed.data ?? null,
|
|
105
122
|
});
|
|
106
123
|
}
|
|
107
124
|
catch {
|
|
108
|
-
|
|
125
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
109
126
|
}
|
|
110
127
|
// 释放 keep-alive socket,避免事件循环挂起
|
|
111
128
|
res.destroy();
|
|
@@ -113,13 +130,15 @@ export async function authLogin(email, password) {
|
|
|
113
130
|
});
|
|
114
131
|
req.on('timeout', () => {
|
|
115
132
|
req.destroy();
|
|
116
|
-
|
|
133
|
+
settle({ code: 408, message: 'Auth request timed out after 30s', data: null });
|
|
117
134
|
});
|
|
118
135
|
req.on('error', (err) => {
|
|
119
|
-
|
|
120
|
-
if (err.code === 'ECONNRESET')
|
|
136
|
+
if (settled)
|
|
121
137
|
return;
|
|
122
|
-
|
|
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 });
|
|
123
142
|
});
|
|
124
143
|
req.write(body);
|
|
125
144
|
req.end();
|
|
@@ -136,6 +155,11 @@ export async function authMe(profileName) {
|
|
|
136
155
|
}
|
|
137
156
|
const url = new URL('/api/v1/mcp/auth/me', baseUrl);
|
|
138
157
|
return new Promise((resolve) => {
|
|
158
|
+
let settled = false;
|
|
159
|
+
const settle = (r) => { if (!settled) {
|
|
160
|
+
settled = true;
|
|
161
|
+
resolve(r);
|
|
162
|
+
} };
|
|
139
163
|
const mod = url.protocol === 'https:' ? https : http;
|
|
140
164
|
const req = mod.request(url, {
|
|
141
165
|
method: 'GET',
|
|
@@ -149,14 +173,14 @@ export async function authMe(profileName) {
|
|
|
149
173
|
res.on('end', () => {
|
|
150
174
|
try {
|
|
151
175
|
const parsed = JSON.parse(data);
|
|
152
|
-
|
|
176
|
+
settle({
|
|
153
177
|
code: parsed.code ?? 0,
|
|
154
178
|
message: parsed.message ?? parsed.msg ?? 'ok',
|
|
155
179
|
data: parsed.data ?? null,
|
|
156
180
|
});
|
|
157
181
|
}
|
|
158
182
|
catch {
|
|
159
|
-
|
|
183
|
+
settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
160
184
|
}
|
|
161
185
|
// 释放 keep-alive socket,避免事件循环挂起
|
|
162
186
|
res.destroy();
|
|
@@ -164,13 +188,15 @@ export async function authMe(profileName) {
|
|
|
164
188
|
});
|
|
165
189
|
req.on('timeout', () => {
|
|
166
190
|
req.destroy();
|
|
167
|
-
|
|
191
|
+
settle({ code: 408, message: 'Auth check timed out after 15s', data: null });
|
|
168
192
|
});
|
|
169
193
|
req.on('error', (err) => {
|
|
170
|
-
|
|
171
|
-
if (err.code === 'ECONNRESET')
|
|
194
|
+
if (settled)
|
|
172
195
|
return;
|
|
173
|
-
|
|
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 });
|
|
174
200
|
});
|
|
175
201
|
req.end();
|
|
176
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
|
@@ -15,7 +15,7 @@ import { VERSION } from './version.js';
|
|
|
15
15
|
const program = new Command();
|
|
16
16
|
program
|
|
17
17
|
.name('formlm-cli')
|
|
18
|
-
.description('The official CLI & MCP Server for FormLM — https://formlm.me\n\n Quick start:\n formlm-cli smart
|
|
18
|
+
.description('The official CLI & MCP Server for FormLM — https://formlm.me\n\n Quick start:\n formlm-cli smart plan --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.)')
|
|
19
19
|
.version(VERSION)
|
|
20
20
|
.option('--profile <name>', 'Profile to use (overrides default)');
|
|
21
21
|
// ── Custom error handling (MUST be set BEFORE subcommand registration) ──────
|
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;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,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":"AAmEA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAkapD"}
|
package/dist/mcp.js
CHANGED
|
@@ -11,11 +11,9 @@ import { escapeArg } from './utils.js';
|
|
|
11
11
|
function toText(r) {
|
|
12
12
|
return r.code === 0 ? (r.data || r.message) : `❌ [${r.code}] ${r.message}`;
|
|
13
13
|
}
|
|
14
|
-
// ── Helper: format formlm_generate result for
|
|
15
|
-
// Extracts key fields (appId,
|
|
16
|
-
// and presents them
|
|
17
|
-
// The full raw JSON is intentionally NOT dumped here (it can be very long for
|
|
18
|
-
// multi-task pipelines) — use formlm_snapshot if full detail is needed.
|
|
14
|
+
// ── Helper: format formlm_generate (smart plan) result for AI consumption ──────
|
|
15
|
+
// Extracts key fields (appId, planType, tasks) from plan result
|
|
16
|
+
// and presents them with next-step guidance for sequential module execution.
|
|
19
17
|
function formatGenerateResult(r) {
|
|
20
18
|
if (r.code !== 0) {
|
|
21
19
|
return `❌ [${r.code}] ${r.message}`;
|
|
@@ -28,40 +26,29 @@ function formatGenerateResult(r) {
|
|
|
28
26
|
const parsed = JSON.parse(raw);
|
|
29
27
|
if (parsed && typeof parsed === 'object' && parsed.appId) {
|
|
30
28
|
const lines = [];
|
|
31
|
-
|
|
32
|
-
lines.push(
|
|
33
|
-
if (parsed.appId)
|
|
34
|
-
lines.push(`📋 App ID: ${parsed.appId}`);
|
|
29
|
+
lines.push('✅ Plan generated successfully');
|
|
30
|
+
lines.push(`📋 App ID: ${parsed.appId}`);
|
|
35
31
|
if (parsed.planType)
|
|
36
32
|
lines.push(`🎯 Type: ${parsed.planType}`);
|
|
37
33
|
if (parsed.description)
|
|
38
34
|
lines.push(`📝 Description: ${parsed.description}`);
|
|
39
35
|
if (parsed.taskCount != null)
|
|
40
36
|
lines.push(`📊 Tasks: ${parsed.taskCount}`);
|
|
41
|
-
if (parsed.shareUrl)
|
|
42
|
-
lines.push(`🔗 Fill-in URL: ${parsed.shareUrl}`);
|
|
43
|
-
if (parsed.builderUrl)
|
|
44
|
-
lines.push(`🎨 Editor URL: ${parsed.builderUrl}`);
|
|
45
|
-
if (parsed.dataUrl)
|
|
46
|
-
lines.push(`📊 Data URL: ${parsed.dataUrl}`);
|
|
47
37
|
if (parsed.tasks && Array.isArray(parsed.tasks)) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
lines.push(
|
|
52
|
-
if (Array.isArray(parsed.tasks)) {
|
|
53
|
-
const errorTasks = parsed.tasks.filter((t) => t.status === 'error');
|
|
54
|
-
for (const t of errorTasks) {
|
|
55
|
-
lines.push(` ✗ ${t.name || t.id || 'task'}: ${t.error || t.message || 'unknown error'}`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
38
|
+
lines.push('');
|
|
39
|
+
lines.push('Tasks:');
|
|
40
|
+
for (const t of parsed.tasks) {
|
|
41
|
+
lines.push(` ${t.seq}. [${t.skill}] ${t.title}`);
|
|
58
42
|
}
|
|
59
|
-
|
|
60
|
-
|
|
43
|
+
lines.push('');
|
|
44
|
+
lines.push('📋 Plan JSON (pass this to each smart execute call):');
|
|
45
|
+
lines.push(parsed.plan || '');
|
|
46
|
+
lines.push('');
|
|
47
|
+
lines.push('Next: Use formlm_execute to execute each module sequentially:');
|
|
48
|
+
for (const t of parsed.tasks) {
|
|
49
|
+
lines.push(` formlm_execute: appId=${parsed.appId}, module=${t.skill}, plan=<plan_json_above>`);
|
|
61
50
|
}
|
|
62
51
|
}
|
|
63
|
-
lines.push('');
|
|
64
|
-
lines.push('🔍 Use formlm_snapshot to see full app details (do not dump raw JSON to the user).');
|
|
65
52
|
return lines.join('\n');
|
|
66
53
|
}
|
|
67
54
|
}
|
|
@@ -74,7 +61,8 @@ function formatGenerateResult(r) {
|
|
|
74
61
|
// Most commands complete in < 5 seconds.
|
|
75
62
|
// Smart pipeline (AssessAgent) takes 30-300 seconds.
|
|
76
63
|
const TIMEOUT_DEFAULT = 60_000; // 60s for all direct CLI commands
|
|
77
|
-
const
|
|
64
|
+
const TIMEOUT_PLAN = 120_000; // 2min for smart plan (Phase 1 only, ~10-30s)
|
|
65
|
+
const TIMEOUT_EXECUTE = 300_000; // 5min for smart execute (single module, ~30-120s)
|
|
78
66
|
const TIMEOUT_STYLE = 600_000; // 10min for connect style apply/apply-all (AI-generated styles can take 60-120s)
|
|
79
67
|
export async function startMcpServer() {
|
|
80
68
|
const server = new McpServer({
|
|
@@ -113,14 +101,14 @@ export async function startMcpServer() {
|
|
|
113
101
|
});
|
|
114
102
|
}
|
|
115
103
|
// ════════════════════════════════════════════════════════════════
|
|
116
|
-
// MCP TOOLS — Layered Architecture (
|
|
104
|
+
// MCP TOOLS — Layered Architecture (7 tools)
|
|
117
105
|
//
|
|
118
|
-
// Recommended workflow:
|
|
106
|
+
// Recommended workflow (smart pipeline):
|
|
119
107
|
// 1. auth_login → authenticate
|
|
120
|
-
// 2. formlm_generate →
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
//
|
|
108
|
+
// 2. formlm_generate → generate plan (Phase 1, ~10-30s)
|
|
109
|
+
// 3. formlm_execute → execute each module sequentially (form→scale→connect→report→expert→share)
|
|
110
|
+
// 4. formlm_snapshot → verify the app
|
|
111
|
+
// 5. formlm_exec → fine-grained modifications (advanced)
|
|
124
112
|
// ════════════════════════════════════════════════════════════════
|
|
125
113
|
// ── Tier 0: Authentication ────────────────────────────────────
|
|
126
114
|
server.tool('auth_login', [
|
|
@@ -166,18 +154,14 @@ export async function startMcpServer() {
|
|
|
166
154
|
}
|
|
167
155
|
return { content: [{ type: 'text', text: `❌ Token invalid: ${result.message}` }] };
|
|
168
156
|
});
|
|
169
|
-
// ── Tier 1: Smart Pipeline (Natural Language →
|
|
157
|
+
// ── Tier 1: Smart Pipeline (Natural Language → Plan + Sequential Execute) ─
|
|
170
158
|
//
|
|
171
|
-
// This tool
|
|
172
|
-
//
|
|
173
|
-
// - Same engine that powers newapp.html (SKILL.md constraints, reference data injection, retry)
|
|
174
|
-
// - One call replaces 30+ sequential formlm_exec calls
|
|
175
|
-
// - Returns appId + full task execution log
|
|
176
|
-
// - WARNING: may take 60-300 seconds for complex apps (consultation: 6 tasks)
|
|
159
|
+
// This tool generates an execution plan (Phase 1 only, ~10-30s).
|
|
160
|
+
// After getting the plan, use formlm_exec to execute each module sequentially.
|
|
177
161
|
server.tool('formlm_generate', [
|
|
178
|
-
'
|
|
179
|
-
'Server runs: Plan AI (assess-plan.md) →
|
|
180
|
-
'
|
|
162
|
+
'Generate an execution plan from natural language description (Phase 1 only — does NOT execute any module).',
|
|
163
|
+
'Server runs: Plan AI (assess-plan.md) → generates task list for 6 modules (form/scale/connect/report/expert/share).',
|
|
164
|
+
'Returns: appId, planType, plan JSON, and task list. Takes ~10-30 seconds.',
|
|
181
165
|
'',
|
|
182
166
|
'## Scene Templates (when user description is vague, present these and ask them to choose):',
|
|
183
167
|
'1. assessment: 评估量表 — 多维度打分 + 分值区间解读报告 (MOST COMMON, for psych/workplace/health)',
|
|
@@ -187,30 +171,21 @@ export async function startMcpServer() {
|
|
|
187
171
|
'5. quiz: 趣味测试 — 轻松风格 + 结果分类 (for engagement / personality)',
|
|
188
172
|
'6. learn: 学习卡片 — 知识点 + 自测题 (for micro-learning)',
|
|
189
173
|
'',
|
|
190
|
-
'##
|
|
191
|
-
'
|
|
192
|
-
'
|
|
174
|
+
'## AFTER SUCCESS — execute modules sequentially via formlm_execute:',
|
|
175
|
+
'For each module in the task list (form → scale → connect → report → expert → share), call:',
|
|
176
|
+
' formlm_execute with appId, module, and the plan JSON from this result',
|
|
193
177
|
'',
|
|
194
|
-
'##
|
|
195
|
-
'
|
|
196
|
-
'
|
|
197
|
-
'
|
|
198
|
-
'
|
|
199
|
-
'2. Present ALL THREE URLs to the user prominently — they need all three to manage their app.',
|
|
200
|
-
'3. Use formlm_snapshot to verify the generated app if needed.',
|
|
201
|
-
'4. If the user needs the URLs again later, use formlm_exec: "assess app urls --app <appId> --json".',
|
|
178
|
+
'## USER FEEDBACK (IMPORTANT for good UX):',
|
|
179
|
+
'After getting the plan, tell the user: "✅ 计划已生成!" and list the modules.',
|
|
180
|
+
'Before each formlm_execute call, tell the user which module is being generated.',
|
|
181
|
+
'After each call, tell the user the module is done.',
|
|
182
|
+
'After the last module (share), the 3 app URLs are returned automatically — present them to the user.',
|
|
202
183
|
'',
|
|
203
|
-
'
|
|
204
|
-
'- If timeout: ask user to simplify the description (fewer dimensions, fewer questions).',
|
|
205
|
-
'- If partial success: use formlm_snapshot to check what was generated, then use formlm_exec to complete.',
|
|
206
|
-
'- Always offer to retry with a simplified description.',
|
|
184
|
+
'After all modules are executed, use formlm_snapshot to verify the app.',
|
|
207
185
|
'',
|
|
208
186
|
'## Reference Documents:',
|
|
209
187
|
'If the user has reference documents (questionnaire files, scoring criteria), ask them to paste the content',
|
|
210
|
-
'directly into the chat. The input supports up to 8000 characters.
|
|
211
|
-
'dimensions, question count, scoring rules.',
|
|
212
|
-
'',
|
|
213
|
-
'WARNING: Takes 60-300 seconds. Do NOT cancel — let it complete.',
|
|
188
|
+
'directly into the chat. The input supports up to 8000 characters.',
|
|
214
189
|
].join('\n'), {
|
|
215
190
|
input: z.string().describe('Natural language description of the app. Be specific: mention topic, audience, number of questions, dimensions/subscales, scoring, visual style. ' +
|
|
216
191
|
'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". ' +
|
|
@@ -232,7 +207,7 @@ export async function startMcpServer() {
|
|
|
232
207
|
'"15-20" (standard assessment, 5-8 min), ' +
|
|
233
208
|
'"20-30" (deep assessment, 8-15 min). Default: auto-decided by AI based on planType.'),
|
|
234
209
|
}, async (params) => {
|
|
235
|
-
let cmd = `assess smart
|
|
210
|
+
let cmd = `assess smart plan --input "${escapeArg(params.input)}"`;
|
|
236
211
|
if (params.planType)
|
|
237
212
|
cmd += ` --plan-type ${params.planType}`;
|
|
238
213
|
if (params.style)
|
|
@@ -240,10 +215,99 @@ export async function startMcpServer() {
|
|
|
240
215
|
if (params.questionCount)
|
|
241
216
|
cmd += ` --question-count ${params.questionCount}`;
|
|
242
217
|
cmd += ' --json';
|
|
243
|
-
const r = await execCommand(cmd, undefined,
|
|
218
|
+
const r = await execCommand(cmd, undefined, TIMEOUT_PLAN);
|
|
244
219
|
const text = formatGenerateResult(r);
|
|
245
220
|
return { content: [{ type: 'text', text }] };
|
|
246
221
|
});
|
|
222
|
+
// ── Tier 1b: Smart Execute (Single Module) ──────────────────────
|
|
223
|
+
//
|
|
224
|
+
// Executes one module at a time from the plan generated by formlm_generate.
|
|
225
|
+
// Takes structured params (appId, module, plan) — no manual JSON escaping needed.
|
|
226
|
+
// When the last module (share) completes, auto-fetches the 3 app URLs.
|
|
227
|
+
server.tool('formlm_execute', [
|
|
228
|
+
'Execute a single module from the plan generated by formlm_generate.',
|
|
229
|
+
'Call this sequentially for each module, following the task list order from formlm_generate.',
|
|
230
|
+
'Default order: form → scale → connect → report → expert → share.',
|
|
231
|
+
'Takes ~30-120 seconds per module. Do NOT cancel.',
|
|
232
|
+
'',
|
|
233
|
+
'## USER FEEDBACK (IMPORTANT for good UX):',
|
|
234
|
+
'Before calling, tell the user: "正在生成 [module] 模块..."',
|
|
235
|
+
'After calling, tell the user: "✅ [module] 模块完成"',
|
|
236
|
+
'After the last module (share), present the 3 URLs to the user.',
|
|
237
|
+
'',
|
|
238
|
+
'## PLAN PASSING:',
|
|
239
|
+
'Pass the plan JSON from formlm_generate (or the updated plan from the previous formlm_execute call).',
|
|
240
|
+
'The updated plan JSON is included in each response — use it for the next call.',
|
|
241
|
+
].join('\n'), {
|
|
242
|
+
appId: z.string().describe('App ID from formlm_generate result'),
|
|
243
|
+
module: z.string().describe('Module to execute: form / scale / connect / report / expert / share'),
|
|
244
|
+
plan: z.string().describe('Plan JSON from formlm_generate or previous formlm_execute response'),
|
|
245
|
+
}, async (params) => {
|
|
246
|
+
const cmd = `assess smart execute --app ${params.appId} --module ${params.module} --plan "${escapeArg(params.plan)}" --json`;
|
|
247
|
+
const r = await execCommand(cmd, undefined, TIMEOUT_EXECUTE);
|
|
248
|
+
if (r.code !== 0) {
|
|
249
|
+
return { content: [{ type: 'text', text: `❌ [${r.code}] ${r.message}` }] };
|
|
250
|
+
}
|
|
251
|
+
const raw = r.data || r.message;
|
|
252
|
+
let text;
|
|
253
|
+
try {
|
|
254
|
+
const parsed = JSON.parse(raw);
|
|
255
|
+
const lines = [];
|
|
256
|
+
const status = parsed.taskStatus || 'unknown';
|
|
257
|
+
if (status === 'error') {
|
|
258
|
+
lines.push(`❌ Module '${params.module}' failed (status: error)`);
|
|
259
|
+
if (parsed.error)
|
|
260
|
+
lines.push(`Error: ${parsed.error}`);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
lines.push(`✅ Module '${params.module}' completed (status: ${status})`);
|
|
264
|
+
}
|
|
265
|
+
// Include updated plan JSON for the next call
|
|
266
|
+
if (parsed.plan) {
|
|
267
|
+
lines.push('');
|
|
268
|
+
lines.push('📋 Updated Plan JSON (use this for the next formlm_execute call):');
|
|
269
|
+
lines.push(parsed.plan);
|
|
270
|
+
}
|
|
271
|
+
// If this is the share module (last one), auto-fetch URLs
|
|
272
|
+
if (params.module === 'share') {
|
|
273
|
+
const urlResult = await execCommand(`assess app urls --app ${params.appId} --json`, undefined, TIMEOUT_DEFAULT);
|
|
274
|
+
if (urlResult.code === 0) {
|
|
275
|
+
try {
|
|
276
|
+
const urls = JSON.parse(urlResult.data || urlResult.message);
|
|
277
|
+
lines.push('');
|
|
278
|
+
lines.push('🎉 All modules complete! Your app is ready:');
|
|
279
|
+
if (urls.shareUrl)
|
|
280
|
+
lines.push(`🔗 Fill-in URL: ${urls.shareUrl}`);
|
|
281
|
+
if (urls.builderUrl)
|
|
282
|
+
lines.push(`🎨 Editor URL: ${urls.builderUrl}`);
|
|
283
|
+
if (urls.dataUrl)
|
|
284
|
+
lines.push(`📊 Data URL: ${urls.dataUrl}`);
|
|
285
|
+
lines.push('');
|
|
286
|
+
lines.push(`App ID: ${params.appId}`);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
lines.push('');
|
|
290
|
+
lines.push('🎉 All modules complete!');
|
|
291
|
+
lines.push(`Use formlm_exec: "assess app urls --app ${params.appId} --json" to get the app URLs.`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
lines.push('');
|
|
296
|
+
lines.push('🎉 All modules complete!');
|
|
297
|
+
lines.push(`Use formlm_exec: "assess app urls --app ${params.appId} --json" to get the app URLs.`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
lines.push('');
|
|
302
|
+
lines.push('Next: Call formlm_execute with the next module and the updated plan JSON above.');
|
|
303
|
+
}
|
|
304
|
+
text = lines.join('\n');
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
text = raw || r.message;
|
|
308
|
+
}
|
|
309
|
+
return { content: [{ type: 'text', text }] };
|
|
310
|
+
});
|
|
247
311
|
// ── Tier 2: State & Knowledge ────────────────────────────────────
|
|
248
312
|
server.tool('formlm_snapshot', [
|
|
249
313
|
'Get aggregated snapshot of ALL 6 app modules in a single call.',
|
|
@@ -318,7 +382,7 @@ export async function startMcpServer() {
|
|
|
318
382
|
// assess report : query / find / update / page / widget / logic
|
|
319
383
|
// assess expert : query / find / config / set / avatar / remove / chat
|
|
320
384
|
// assess share : set / query / url
|
|
321
|
-
// assess smart :
|
|
385
|
+
// assess smart : plan / execute
|
|
322
386
|
// assess skill : form / scale / connect / report / expert / share
|
|
323
387
|
server.tool('formlm_exec', [
|
|
324
388
|
'Execute a raw FormLM CLI command directly.',
|
|
@@ -341,6 +405,7 @@ export async function startMcpServer() {
|
|
|
341
405
|
' Report: assess report query/find/update/page/widget/logic',
|
|
342
406
|
' Expert: assess expert query/find/config/set/avatar/remove/chat',
|
|
343
407
|
' Share: assess share set/query/url',
|
|
408
|
+
' Smart: assess smart plan/execute',
|
|
344
409
|
'',
|
|
345
410
|
'Common patterns:',
|
|
346
411
|
' "assess app list --json" (discover appId by name)',
|
|
@@ -372,14 +437,15 @@ export async function startMcpServer() {
|
|
|
372
437
|
}
|
|
373
438
|
// Use longer timeout for commands that trigger server-side AI generation
|
|
374
439
|
const isStyleCmd = params.command.includes('connect style apply');
|
|
375
|
-
const
|
|
376
|
-
const
|
|
440
|
+
const isSmartPlan = params.command.includes('smart plan');
|
|
441
|
+
const isSmartExecute = params.command.includes('smart execute');
|
|
442
|
+
const timeout = isStyleCmd ? TIMEOUT_STYLE : isSmartExecute ? TIMEOUT_EXECUTE : isSmartPlan ? TIMEOUT_PLAN : TIMEOUT_DEFAULT;
|
|
377
443
|
const r = await execCommand(params.command, undefined, timeout);
|
|
378
444
|
return { content: [{ type: 'text', text: toText(r) }] };
|
|
379
445
|
});
|
|
380
446
|
// ── Start Server ──────────────────────────────────────────────────
|
|
381
447
|
const transport = new StdioServerTransport();
|
|
382
448
|
await server.connect(transport);
|
|
383
|
-
console.error(`FormLM MCP Server v${VERSION} running on stdio (
|
|
449
|
+
console.error(`FormLM MCP Server v${VERSION} running on stdio (7 tools + 6 resources)`);
|
|
384
450
|
}
|
|
385
451
|
//# 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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"}
|