@formlm/cli 0.3.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +326 -65
  2. package/dist/commands/app.d.ts.map +1 -1
  3. package/dist/commands/app.js +74 -16
  4. package/dist/commands/app.js.map +1 -1
  5. package/dist/commands/auth.d.ts.map +1 -1
  6. package/dist/commands/auth.js +186 -7
  7. package/dist/commands/auth.js.map +1 -1
  8. package/dist/commands/connect.js +3 -3
  9. package/dist/commands/connect.js.map +1 -1
  10. package/dist/commands/doctor.d.ts +11 -0
  11. package/dist/commands/doctor.d.ts.map +1 -0
  12. package/dist/commands/doctor.js +109 -0
  13. package/dist/commands/doctor.js.map +1 -0
  14. package/dist/commands/expert.d.ts.map +1 -1
  15. package/dist/commands/expert.js +42 -18
  16. package/dist/commands/expert.js.map +1 -1
  17. package/dist/commands/field.d.ts.map +1 -1
  18. package/dist/commands/field.js +9 -11
  19. package/dist/commands/field.js.map +1 -1
  20. package/dist/commands/profile.js +1 -1
  21. package/dist/commands/profile.js.map +1 -1
  22. package/dist/commands/report.d.ts.map +1 -1
  23. package/dist/commands/report.js +39 -12
  24. package/dist/commands/report.js.map +1 -1
  25. package/dist/commands/scale.d.ts.map +1 -1
  26. package/dist/commands/scale.js +4 -1
  27. package/dist/commands/scale.js.map +1 -1
  28. package/dist/commands/share.d.ts.map +1 -1
  29. package/dist/commands/share.js +258 -28
  30. package/dist/commands/share.js.map +1 -1
  31. package/dist/commands/skill.d.ts.map +1 -1
  32. package/dist/commands/skill.js +2 -3
  33. package/dist/commands/skill.js.map +1 -1
  34. package/dist/commands/smart.d.ts.map +1 -1
  35. package/dist/commands/smart.js +336 -61
  36. package/dist/commands/smart.js.map +1 -1
  37. package/dist/commands/snapshot.d.ts +0 -11
  38. package/dist/commands/snapshot.d.ts.map +1 -1
  39. package/dist/commands/snapshot.js +168 -42
  40. package/dist/commands/snapshot.js.map +1 -1
  41. package/dist/config.d.ts +1 -0
  42. package/dist/config.d.ts.map +1 -1
  43. package/dist/config.js +1 -1
  44. package/dist/config.js.map +1 -1
  45. package/dist/doctor.d.ts +51 -0
  46. package/dist/doctor.d.ts.map +1 -0
  47. package/dist/doctor.js +202 -0
  48. package/dist/doctor.js.map +1 -0
  49. package/dist/exec.d.ts +39 -1
  50. package/dist/exec.d.ts.map +1 -1
  51. package/dist/exec.js +309 -4
  52. package/dist/exec.js.map +1 -1
  53. package/dist/index.js +55 -6
  54. package/dist/index.js.map +1 -1
  55. package/dist/mcp.d.ts.map +1 -1
  56. package/dist/mcp.js +269 -49
  57. package/dist/mcp.js.map +1 -1
  58. package/dist/output.d.ts +23 -1
  59. package/dist/output.d.ts.map +1 -1
  60. package/dist/output.js +69 -7
  61. package/dist/output.js.map +1 -1
  62. package/dist/summary.d.ts +17 -0
  63. package/dist/summary.d.ts.map +1 -0
  64. package/dist/summary.js +64 -0
  65. package/dist/summary.js.map +1 -0
  66. package/dist/utils.d.ts +10 -2
  67. package/dist/utils.d.ts.map +1 -1
  68. package/dist/utils.js +45 -6
  69. package/dist/utils.js.map +1 -1
  70. package/package.json +11 -2
package/dist/exec.d.ts CHANGED
@@ -3,6 +3,8 @@ export interface ExecResult {
3
3
  message: string;
4
4
  data: any;
5
5
  }
6
+ export declare function demoteFalseSuccess(res: ExecResult): ExecResult;
7
+ export declare function isReadOnlyCommand(cmd: string): boolean;
6
8
  /**
7
9
  * POST /api/v1/mcp/exec
8
10
  * Send CLI command to server for execution.
@@ -12,12 +14,48 @@ export interface ExecResult {
12
14
  * @param timeoutMs Request timeout in milliseconds.
13
15
  * Default: 60_000 (60s) for most commands.
14
16
  * Smart plan should use 120_000 (2min), smart execute 300_000 (5min).
17
+ * Override globally with FORMLM_TIMEOUT_MS (useful for slow/congested servers).
18
+ * @param retries Max attempts for transient failures. Override with FORMLM_RETRIES.
15
19
  */
16
- export declare function execCommand(cmd: string, profileName?: string, timeoutMs?: number): Promise<ExecResult>;
20
+ export declare function execCommand(cmd: string, profileName?: string, timeoutMs?: number, retries?: number): Promise<ExecResult>;
17
21
  /**
18
22
  * POST /api/v1/mcp/auth/login
19
23
  */
20
24
  export declare function authLogin(email: string, password: string): Promise<ExecResult>;
25
+ /**
26
+ * GET /api/v1/code/captcha/{account}
27
+ * 拉取图片验证码(GIF),供邮箱验证码登录流程展示给用户识别。
28
+ * 图片存服务端 60s 有效,一次性消费。
29
+ */
30
+ export declare function fetchCaptchaImage(account: string): Promise<{
31
+ ok: boolean;
32
+ image?: Buffer;
33
+ message: string;
34
+ }>;
35
+ /**
36
+ * POST /api/v1/code/email
37
+ * 发送邮箱验证码(需先通过图片验证码)。服务端限制:同邮箱 60s 冷却、
38
+ * 每分钟 5 次/邮箱、每分钟 10 次/IP;验证码 5 分钟内有效。
39
+ */
40
+ export declare function authSendEmailCode(email: string, captcha: string): Promise<ExecResult>;
41
+ /**
42
+ * POST /api/v1/mcp/auth/login
43
+ * 邮箱验证码登录(无密码账号主路径)。验证码 5 分钟内有效,输错不作废可重试
44
+ * (连续 5 次失败账号锁 30 分钟,见服务端 McpV1Api)。
45
+ */
46
+ export declare function authLoginCode(email: string, code: string): Promise<ExecResult>;
47
+ /**
48
+ * Lightweight reachability probe for a public URL (used by `share verify` / `doctor`).
49
+ * Returns only the HTTP status + whether the shell answers — NOTE a 200 on the share page
50
+ * does NOT by itself prove anonymous access (the SPA shell answers 200 even behind the
51
+ * login gate), so callers must combine this with the authoritative share type/perm/day.
52
+ */
53
+ export interface ProbeResult {
54
+ ok: boolean;
55
+ status: number;
56
+ message: string;
57
+ }
58
+ export declare function probeUrl(url: string, timeoutMs?: number): Promise<ProbeResult>;
21
59
  /**
22
60
  * GET /api/v1/mcp/auth/me
23
61
  */
@@ -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,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"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;CACX;AAWD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAO9D;AAuBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,GAAE,MAAwD,EACnE,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CA0BrB;AA0FD;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuDpF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA6ClH;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsD3F;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsDpF;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBtF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAyDtE"}
package/dist/exec.js CHANGED
@@ -2,6 +2,74 @@ import * as crypto from 'node:crypto';
2
2
  import * as http from 'node:http';
3
3
  import * as https from 'node:https';
4
4
  import { getBaseUrl, getToken } from './config.js';
5
+ // Connection reuse within one process. A single CLI invocation barely notices, but the
6
+ // MCP server, `snapshot`/`doctor` (6-7 parallel queries) and in-process batch drivers
7
+ // (loop execCommand over dozens of apps) otherwise pay a TLS handshake per request.
8
+ // Responses are destroyed after reading, so no keep-alive socket holds the loop open.
9
+ const httpAgent = new http.Agent({ keepAlive: true, keepAliveMsecs: 1000, maxSockets: 16 });
10
+ const httpsAgent = new https.Agent({ keepAlive: true, keepAliveMsecs: 1000, maxSockets: 16 });
11
+ function agentFor(url) {
12
+ return url.protocol === 'https:' ? httpsAgent : httpAgent;
13
+ }
14
+ /**
15
+ * Compatibility guard for servers that predate the "picocli validation failure → code 400"
16
+ * mapping: those builds return parameter errors as plain text in `data` while the envelope
17
+ * still says code=0/"ok", so a script checking ok/code alone silently no-ops (measured in
18
+ * the field: `expert config --enable …` reported success and wrote nothing).
19
+ * Recognise the stderr signatures here and surface them as a real error.
20
+ */
21
+ const PICOCLI_ERROR_RE = /^\s*(Unknown option|Unknown options|Missing required option|Missing required argument|Invalid value for option|Too many positions|was specified once|Command failed with exit code)/m;
22
+ export function demoteFalseSuccess(res) {
23
+ if (res.code !== 0)
24
+ return res;
25
+ const text = typeof res.data === 'string' ? res.data : null;
26
+ if (text && PICOCLI_ERROR_RE.test(text)) {
27
+ return { code: 400, message: text.trim().slice(0, 500), data: null };
28
+ }
29
+ return res;
30
+ }
31
+ /**
32
+ * Read-only command registry for safe auto-retry.
33
+ * Exact command paths (module + action, up to 3 tokens deep) whose server methods only
34
+ * READ state — verified against the Java *Command classes, NOT inferred from names:
35
+ * form config / connect config = format documentation lookups (read)
36
+ * scale config / expert config = WRITE (excluded on purpose)
37
+ * scale keys|data groups contain add/update/remove → only their `list` leaf is read-only
38
+ * Only these are retried on 408/429/5xx; everything else (writes) stays single-shot.
39
+ */
40
+ const READ_ONLY_COMMAND_PATHS = new Set([
41
+ 'app list', 'app use', 'app current', 'app urls', 'app knowledge',
42
+ 'form query', 'form find', 'form types', 'form config',
43
+ 'scale query', 'scale find', 'scale keys list', 'scale data list',
44
+ 'connect query', 'connect find', 'connect types', 'connect config',
45
+ 'connect cover-page find', 'connect final-page find',
46
+ 'report query', 'report find', 'report widget list', 'report widget find',
47
+ 'report widget types', 'report widget config', 'report widget logic list',
48
+ 'expert query', 'expert find',
49
+ 'share query', 'share url',
50
+ ]);
51
+ export function isReadOnlyCommand(cmd) {
52
+ const parts = cmd.trim().split(/\s+/);
53
+ if (parts[0] !== 'assess' || parts.length < 3)
54
+ return false;
55
+ // Take the leading non-option tokens (module + action path, up to 4 deep for
56
+ // report widget logic list), stop at the first flag
57
+ const path = [];
58
+ for (const t of parts.slice(1)) {
59
+ if (t.startsWith('-'))
60
+ break;
61
+ path.push(t);
62
+ if (path.length >= 4)
63
+ break;
64
+ }
65
+ for (let n = path.length; n >= 2; n--) {
66
+ if (READ_ONLY_COMMAND_PATHS.has(path.slice(0, n).join(' ')))
67
+ return true;
68
+ }
69
+ if (path[0] === 'skill')
70
+ return true; // assess skill <id> is a documentation read
71
+ return false;
72
+ }
5
73
  /**
6
74
  * POST /api/v1/mcp/exec
7
75
  * Send CLI command to server for execution.
@@ -11,12 +79,46 @@ import { getBaseUrl, getToken } from './config.js';
11
79
  * @param timeoutMs Request timeout in milliseconds.
12
80
  * Default: 60_000 (60s) for most commands.
13
81
  * Smart plan should use 120_000 (2min), smart execute 300_000 (5min).
82
+ * Override globally with FORMLM_TIMEOUT_MS (useful for slow/congested servers).
83
+ * @param retries Max attempts for transient failures. Override with FORMLM_RETRIES.
14
84
  */
15
- export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
85
+ export async function execCommand(cmd, profileName, timeoutMs = Number(process.env.FORMLM_TIMEOUT_MS) || 60_000, retries) {
86
+ // Retry policy:
87
+ // 1) Pre-response transport errors (Request failed / Connection closed): the request was
88
+ // very likely NOT processed — safe to retry for ANY command.
89
+ // 2) Server congestion statuses (408 timeout / 429 / 5xx): only retried for READ-ONLY
90
+ // commands, because a timed-out WRITE may already have been applied server-side.
91
+ // Exponential backoff with jitter; honours FORMLM_RETRIES (default 3).
92
+ const envRetries = Number(process.env.FORMLM_RETRIES);
93
+ const maxAttempts = Math.max(1, retries ?? (Number.isInteger(envRetries) && envRetries > 0 ? envRetries : 3));
94
+ const readOnly = isReadOnlyCommand(cmd);
95
+ let last = { code: 500, message: 'not attempted', data: null };
96
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
97
+ last = await execOnce(cmd, profileName, timeoutMs);
98
+ if (last.code === 0)
99
+ return last;
100
+ const transport = /^(Request failed|Connection closed by server)/.test(last.message || '');
101
+ const congested = last.code === 408 || last.code === 429 || last.code >= 500;
102
+ const retryable = transport || (congested && readOnly);
103
+ if (!retryable || attempt === maxAttempts) {
104
+ if (congested && !readOnly && !transport) {
105
+ last = { ...last, message: `${last.message} (write command — NOT auto-retried to avoid double execution; re-run manually if safe)` };
106
+ }
107
+ return last;
108
+ }
109
+ await new Promise(r => setTimeout(r, Math.min(4000, 400 * (2 ** (attempt - 1))) + Math.floor(Math.random() * 200)));
110
+ }
111
+ return last;
112
+ }
113
+ async function execOnce(cmd, profileName, timeoutMs = 60_000) {
16
114
  const baseUrl = getBaseUrl();
17
115
  const token = getToken(profileName);
18
116
  if (!token) {
19
- return { code: 401, message: 'Not logged in. Run: formlm-cli auth login', data: null };
117
+ return {
118
+ code: 401,
119
+ message: 'Not logged in. Run: formlm-cli auth login (no password? copy your Access Token from formlm.me → Workspace → Account Settings, then: formlm-cli auth login --token <your-token>)',
120
+ data: null,
121
+ };
20
122
  }
21
123
  const url = new URL('/api/v1/mcp/exec', baseUrl);
22
124
  const body = JSON.stringify({ cmd });
@@ -30,6 +132,7 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
30
132
  const mod = url.protocol === 'https:' ? https : http;
31
133
  const req = mod.request(url, {
32
134
  method: 'POST',
135
+ agent: agentFor(url),
33
136
  headers: {
34
137
  'Content-Type': 'application/json',
35
138
  'Authorization': token,
@@ -42,11 +145,11 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
42
145
  res.on('end', () => {
43
146
  try {
44
147
  const parsed = JSON.parse(data);
45
- settle({
148
+ settle(demoteFalseSuccess({
46
149
  code: parsed.code ?? 0,
47
150
  message: parsed.message ?? parsed.msg ?? 'ok',
48
151
  data: parsed.data ?? null,
49
- });
152
+ }));
50
153
  }
51
154
  catch {
52
155
  settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
@@ -104,6 +207,7 @@ export async function authLogin(email, password) {
104
207
  const mod = url.protocol === 'https:' ? https : http;
105
208
  const req = mod.request(url, {
106
209
  method: 'POST',
210
+ agent: agentFor(url),
107
211
  headers: {
108
212
  'Content-Type': 'application/json',
109
213
  'Content-Length': Buffer.byteLength(body),
@@ -144,6 +248,206 @@ export async function authLogin(email, password) {
144
248
  req.end();
145
249
  });
146
250
  }
251
+ /**
252
+ * GET /api/v1/code/captcha/{account}
253
+ * 拉取图片验证码(GIF),供邮箱验证码登录流程展示给用户识别。
254
+ * 图片存服务端 60s 有效,一次性消费。
255
+ */
256
+ export async function fetchCaptchaImage(account) {
257
+ const baseUrl = getBaseUrl();
258
+ const url = new URL('/api/v1/code/captcha/' + encodeURIComponent(account), baseUrl);
259
+ return new Promise((resolve) => {
260
+ let settled = false;
261
+ const settle = (r) => { if (!settled) {
262
+ settled = true;
263
+ resolve(r);
264
+ } };
265
+ const mod = url.protocol === 'https:' ? https : http;
266
+ const req = mod.request(url, {
267
+ method: 'GET',
268
+ agent: agentFor(url),
269
+ timeout: 15_000,
270
+ }, (res) => {
271
+ const chunks = [];
272
+ res.on('data', (chunk) => { chunks.push(chunk); });
273
+ res.on('end', () => {
274
+ const image = Buffer.concat(chunks);
275
+ const contentType = String(res.headers['content-type'] || '');
276
+ if (res.statusCode === 200 && contentType.startsWith('image/')) {
277
+ settle({ ok: true, image, message: 'ok' });
278
+ }
279
+ else {
280
+ settle({ ok: false, message: `Unexpected response (${res.statusCode} ${contentType})` });
281
+ }
282
+ // 释放 keep-alive socket,避免事件循环挂起
283
+ res.destroy();
284
+ });
285
+ });
286
+ req.on('timeout', () => {
287
+ req.destroy();
288
+ settle({ ok: false, message: 'Captcha request timed out after 15s' });
289
+ });
290
+ req.on('error', (err) => {
291
+ if (settled)
292
+ return;
293
+ settle({ ok: false, message: `Request failed: ${err.message}` });
294
+ });
295
+ req.on('close', () => {
296
+ settle({ ok: false, message: 'Connection closed by server' });
297
+ });
298
+ req.end();
299
+ });
300
+ }
301
+ /**
302
+ * POST /api/v1/code/email
303
+ * 发送邮箱验证码(需先通过图片验证码)。服务端限制:同邮箱 60s 冷却、
304
+ * 每分钟 5 次/邮箱、每分钟 10 次/IP;验证码 5 分钟内有效。
305
+ */
306
+ export async function authSendEmailCode(email, captcha) {
307
+ const baseUrl = getBaseUrl();
308
+ const url = new URL('/api/v1/code/email', baseUrl);
309
+ const body = JSON.stringify({ account: email, captcha, lang: 'en' });
310
+ return new Promise((resolve) => {
311
+ let settled = false;
312
+ const settle = (r) => { if (!settled) {
313
+ settled = true;
314
+ resolve(r);
315
+ } };
316
+ const mod = url.protocol === 'https:' ? https : http;
317
+ const req = mod.request(url, {
318
+ method: 'POST',
319
+ agent: agentFor(url),
320
+ headers: {
321
+ 'Content-Type': 'application/json',
322
+ 'Content-Length': Buffer.byteLength(body),
323
+ },
324
+ timeout: 30_000, // 邮件发送可能秒级耗时,留足余量
325
+ }, (res) => {
326
+ let data = '';
327
+ res.on('data', (chunk) => { data += chunk; });
328
+ res.on('end', () => {
329
+ try {
330
+ const parsed = JSON.parse(data);
331
+ settle({
332
+ code: parsed.code ?? 0,
333
+ message: parsed.message ?? parsed.msg ?? 'ok',
334
+ data: parsed.data ?? null,
335
+ });
336
+ }
337
+ catch {
338
+ settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
339
+ }
340
+ // 释放 keep-alive socket,避免事件循环挂起
341
+ res.destroy();
342
+ });
343
+ });
344
+ req.on('timeout', () => {
345
+ req.destroy();
346
+ settle({ code: 408, message: 'Send code request timed out after 30s', data: null });
347
+ });
348
+ req.on('error', (err) => {
349
+ if (settled)
350
+ return;
351
+ settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
352
+ });
353
+ req.on('close', () => {
354
+ settle({ code: 500, message: 'Connection closed by server', data: null });
355
+ });
356
+ req.write(body);
357
+ req.end();
358
+ });
359
+ }
360
+ /**
361
+ * POST /api/v1/mcp/auth/login
362
+ * 邮箱验证码登录(无密码账号主路径)。验证码 5 分钟内有效,输错不作废可重试
363
+ * (连续 5 次失败账号锁 30 分钟,见服务端 McpV1Api)。
364
+ */
365
+ export async function authLoginCode(email, code) {
366
+ const baseUrl = getBaseUrl();
367
+ const url = new URL('/api/v1/mcp/auth/login', baseUrl);
368
+ const body = JSON.stringify({ email, code });
369
+ return new Promise((resolve) => {
370
+ let settled = false;
371
+ const settle = (r) => { if (!settled) {
372
+ settled = true;
373
+ resolve(r);
374
+ } };
375
+ const mod = url.protocol === 'https:' ? https : http;
376
+ const req = mod.request(url, {
377
+ method: 'POST',
378
+ agent: agentFor(url),
379
+ headers: {
380
+ 'Content-Type': 'application/json',
381
+ 'Content-Length': Buffer.byteLength(body),
382
+ },
383
+ timeout: 30_000,
384
+ }, (res) => {
385
+ let data = '';
386
+ res.on('data', (chunk) => { data += chunk; });
387
+ res.on('end', () => {
388
+ try {
389
+ const parsed = JSON.parse(data);
390
+ settle({
391
+ code: parsed.code ?? 0,
392
+ message: parsed.message ?? parsed.msg ?? 'ok',
393
+ data: parsed.data ?? null,
394
+ });
395
+ }
396
+ catch {
397
+ settle({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
398
+ }
399
+ // 释放 keep-alive socket,避免事件循环挂起
400
+ res.destroy();
401
+ });
402
+ });
403
+ req.on('timeout', () => {
404
+ req.destroy();
405
+ settle({ code: 408, message: 'Login request timed out after 30s', data: null });
406
+ });
407
+ req.on('error', (err) => {
408
+ if (settled)
409
+ return;
410
+ settle({ code: 500, message: `Request failed: ${err.message}`, data: null });
411
+ });
412
+ req.on('close', () => {
413
+ settle({ code: 500, message: 'Connection closed by server', data: null });
414
+ });
415
+ req.write(body);
416
+ req.end();
417
+ });
418
+ }
419
+ export function probeUrl(url, timeoutMs = 15_000) {
420
+ return new Promise((resolve) => {
421
+ let settled = false;
422
+ const settle = (r) => { if (!settled) {
423
+ settled = true;
424
+ resolve(r);
425
+ } };
426
+ let target;
427
+ try {
428
+ target = new URL(url);
429
+ }
430
+ catch {
431
+ return settle({ ok: false, status: 0, message: `Invalid URL: ${url}` });
432
+ }
433
+ const mod = target.protocol === 'https:' ? https : http;
434
+ const req = mod.get(target, { timeout: timeoutMs }, (res) => {
435
+ const status = res.statusCode ?? 0;
436
+ // Drain a small prefix so the socket can finish cleanly, then destroy it
437
+ res.setEncoding('utf-8');
438
+ res.on('data', () => { });
439
+ res.on('end', () => {
440
+ settle({ ok: status >= 200 && status < 400, status, message: `HTTP ${status}` });
441
+ res.destroy();
442
+ });
443
+ });
444
+ req.on('timeout', () => { req.destroy(); settle({ ok: false, status: 0, message: `Probe timed out after ${Math.round(timeoutMs / 1000)}s` }); });
445
+ req.on('error', (err) => { if (!settled)
446
+ settle({ ok: false, status: 0, message: `Request failed: ${err.message}` }); });
447
+ // Safety net: peer closed without a response and no error event fired
448
+ req.on('close', () => { settle({ ok: false, status: 0, message: 'Connection closed by server' }); });
449
+ });
450
+ }
147
451
  /**
148
452
  * GET /api/v1/mcp/auth/me
149
453
  */
@@ -163,6 +467,7 @@ export async function authMe(profileName) {
163
467
  const mod = url.protocol === 'https:' ? https : http;
164
468
  const req = mod.request(url, {
165
469
  method: 'GET',
470
+ agent: agentFor(url),
166
471
  headers: {
167
472
  'Authorization': token,
168
473
  },
package/dist/exec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,12 +10,24 @@ import { registerReportCommand } from './commands/report.js';
10
10
  import { registerExpertCommand } from './commands/expert.js';
11
11
  import { registerSmartCommand } from './commands/smart.js';
12
12
  import { registerSnapshotCommand } from './commands/snapshot.js';
13
+ import { registerDoctorCommand } from './commands/doctor.js';
13
14
  import { registerSkillCommand } from './commands/skill.js';
14
15
  import { VERSION } from './version.js';
16
+ // ── Global `--json` tolerance ────────────────────────────────────
17
+ // Accept `--json` at ANY position (before or after the subcommand) without every
18
+ // subcommand having to declare it. Commander would otherwise throw
19
+ // "unknown option '--json'" on subcommands that don't define it. We strip the
20
+ // token from argv before parsing and translate it into machine-output mode
21
+ // (FORMLM_JSON → the stable {ok,code,message,data} envelope in output.ts).
22
+ // Values are matched as whole argv tokens only, so `--plan <json>` is unaffected.
23
+ if (process.argv.includes('--json')) {
24
+ process.env.FORMLM_JSON = process.env.FORMLM_JSON || '1';
25
+ process.argv = process.argv.filter(a => a !== '--json');
26
+ }
15
27
  const program = new Command();
16
28
  program
17
29
  .name('formlm-cli')
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.)')
30
+ .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" --save-plan plan.json\n formlm-cli smart execute --app <appId> --module form [--plan-file plan.json]\n formlm-cli smart generate --input "a mental health screening questionnaire" --publish --doctor (one-shot wrapper)\n formlm-cli snapshot --app <appId> --summary\n formlm-cli doctor --app <appId> --expect-lang en\n formlm-cli share publish --app <appId> --access visitor (anonymous; --access all needs login)\n formlm-cli skill form\n formlm-cli mcp (start MCP server for any MCP client: Claude / Cursor / Codex CLI / Windsurf / etc.)\n\n Steps: smart plan → smart execute per module. \"smart generate\" wraps both in one call.')
19
31
  .version(VERSION)
20
32
  .option('--profile <name>', 'Profile to use (overrides default)');
21
33
  // ── Custom error handling (MUST be set BEFORE subcommand registration) ──────
@@ -45,23 +57,50 @@ program.exitOverride((err) => {
45
57
  'commander.invalidArgument', // bad .choices() value (e.g. --plan-type)
46
58
  'commander.conflictingOption',
47
59
  ];
60
+ // FORMLM_NO_EXIT=1: never kill the host process on a per-command input mistake —
61
+ // emit a parseable envelope (JSON mode) or a friendly error, then throw so the
62
+ // bottom-level catch swallows it. Batch drivers keep running.
63
+ if (process.env.FORMLM_NO_EXIT === '1') {
64
+ if (process.env.FORMLM_JSON === '1') {
65
+ console.log(JSON.stringify({ ok: false, code: 400, message: msg, data: null }));
66
+ }
67
+ else {
68
+ console.error();
69
+ console.error(`❌ ${msg}`);
70
+ const owning = err.commanderCommand || err.command || program;
71
+ const cmd = owning && typeof owning.helpInformation === 'function' ? owning : program;
72
+ if (inputMistakeCodes.includes(err.code) && cmd && cmd.helpInformation) {
73
+ console.error();
74
+ console.error('💡 Usage:');
75
+ const lines = cmd.helpInformation().split('\n').filter((l) => l.trim());
76
+ console.error(lines.slice(0, Math.min(lines.length, 12)).join('\n'));
77
+ }
78
+ }
79
+ throw err;
80
+ }
81
+ // Resolve the command the error actually belongs to. Commander attaches the owning
82
+ // command on `commanderCommand` (e.g. `field add` for a missing required option);
83
+ // the legacy `command` property is often the root program, which used to print the
84
+ // whole top-level help instead of the subcommand usage (noisy, slow to act on).
48
85
  console.error();
49
86
  console.error(`❌ ${msg}`);
50
- const cmd = err.command || program;
87
+ const owning = err.commanderCommand || err.command || program;
88
+ const cmd = owning && typeof owning.helpInformation === 'function' ? owning : program;
51
89
  if (inputMistakeCodes.includes(err.code) && cmd && cmd.helpInformation) {
52
90
  console.error();
53
91
  console.error('💡 Usage:');
54
92
  const help = cmd.helpInformation();
55
93
  const lines = help.split('\n').filter((l) => l.trim());
56
- const usageLines = lines.slice(0, Math.min(lines.length, 8));
94
+ const usageLines = lines.slice(0, Math.min(lines.length, 12));
57
95
  console.error(usageLines.join('\n'));
58
96
  }
59
97
  process.exit(err.exitCode ?? 1);
60
98
  });
61
99
  // ── Register command groups ────────────────────────────────────
62
- // Order: high-level (smart) → query (snapshot/skill) → modules → auth/profile
100
+ // Order: high-level (smart) → query (snapshot/doctor/skill) → modules → auth/profile
63
101
  registerSmartCommand(program);
64
102
  registerSnapshotCommand(program);
103
+ registerDoctorCommand(program);
65
104
  registerSkillCommand(program);
66
105
  registerAppCommand(program);
67
106
  registerFieldCommand(program);
@@ -91,11 +130,21 @@ program.hook('preAction', () => {
91
130
  // parseAsync ensures all async action handlers complete before exiting.
92
131
  // For regular commands: resolves after action completes → process.exit(0).
93
132
  // For MCP server mode: never resolves (server keeps running) → process stays alive.
133
+ // FORMLM_NO_EXIT=1 (batch/library mode) suppresses BOTH forced exits, so a single
134
+ // failing command cannot kill the host loop — matching output.ts semantics.
94
135
  program.parseAsync().then(() => {
136
+ if (process.env.FORMLM_NO_EXIT === '1')
137
+ return;
95
138
  process.exit(0);
96
- }).catch(() => {
139
+ }).catch((err) => {
97
140
  // exitOverride already handles commander errors via process.exit(1).
98
- // This catches any other unexpected errors.
141
+ // This catches any other unexpected errors (e.g. localFail throwing under NO_EXIT).
142
+ if (process.env.FORMLM_NO_EXIT === '1') {
143
+ // Envelope already printed by output()/localFail() in JSON mode; log detail for humans.
144
+ if (err && err.message && process.env.FORMLM_JSON !== '1')
145
+ console.error(`❌ ${err.message}`);
146
+ return;
147
+ }
99
148
  process.exit(1);
100
149
  });
101
150
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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":"AAiEA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA6ZpD"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AA2EA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAinBpD"}