@formlm/cli 0.2.2 → 0.2.4
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/README.md +9 -30
- 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 +39 -57
- 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 +1 -1
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +18 -2
- package/dist/exec.js.map +1 -1
- package/dist/index.js +44 -28
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +51 -171
- 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/mcp.js
CHANGED
|
@@ -3,28 +3,20 @@ 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}`;
|
|
21
13
|
}
|
|
22
|
-
// ── Helper: format
|
|
14
|
+
// ── Helper: format formlm_generate result for better AI consumption ────────────
|
|
23
15
|
// Extracts key fields (appId, shareUrl, planType, taskCount) from JSON result
|
|
24
16
|
// and presents them in a structured summary for the AI Agent to relay to the user.
|
|
25
17
|
// The full raw JSON is intentionally NOT dumped here (it can be very long for
|
|
26
18
|
// multi-task pipelines) — use formlm_snapshot if full detail is needed.
|
|
27
|
-
function
|
|
19
|
+
function formatGenerateResult(r) {
|
|
28
20
|
if (r.code !== 0) {
|
|
29
21
|
return `❌ [${r.code}] ${r.message}`;
|
|
30
22
|
}
|
|
@@ -78,67 +70,16 @@ function formatCreateResult(r) {
|
|
|
78
70
|
}
|
|
79
71
|
return raw;
|
|
80
72
|
}
|
|
81
|
-
// ── Helper: format formlm_modify result, surfacing plan-preview payloads ──────
|
|
82
|
-
// When a medium/high risk change is detected server-side, execution pauses and
|
|
83
|
-
// returns { planPreview: true, riskLevel, plan }. This formats that into a
|
|
84
|
-
// human-reviewable task list and tells the AI exactly how to proceed (call
|
|
85
|
-
// formlm_confirm with the SAME plan object) — no web UI needed.
|
|
86
|
-
function formatModifyResult(r) {
|
|
87
|
-
if (r.code !== 0) {
|
|
88
|
-
return `❌ [${r.code}] ${r.message}`;
|
|
89
|
-
}
|
|
90
|
-
const raw = r.data || r.message;
|
|
91
|
-
if (typeof raw !== 'string') {
|
|
92
|
-
return String(raw);
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
const parsed = JSON.parse(raw);
|
|
96
|
-
if (parsed && typeof parsed === 'object' && parsed.planPreview === true && parsed.plan) {
|
|
97
|
-
const lines = [];
|
|
98
|
-
lines.push(`⏸️ Plan Preview — Confirmation Required (risk level: ${parsed.riskLevel || parsed.plan.riskLevel || 'unknown'})`);
|
|
99
|
-
lines.push('');
|
|
100
|
-
lines.push('This change was classified as medium/high risk and was NOT executed yet.');
|
|
101
|
-
lines.push('Show this task list to the user and ask for explicit confirmation before proceeding:');
|
|
102
|
-
lines.push('');
|
|
103
|
-
const tasks = Array.isArray(parsed.plan.tasks) ? parsed.plan.tasks : [];
|
|
104
|
-
for (const t of tasks) {
|
|
105
|
-
lines.push(` ${t.seq}. [${t.skill}] ${t.title}`);
|
|
106
|
-
}
|
|
107
|
-
lines.push('');
|
|
108
|
-
lines.push(`If the user confirms, call formlm_confirm with appId="${parsed.appId || ''}" and plan=<the exact JSON below, unmodified>:`);
|
|
109
|
-
lines.push('');
|
|
110
|
-
lines.push(JSON.stringify(parsed.plan));
|
|
111
|
-
return lines.join('\n');
|
|
112
|
-
}
|
|
113
|
-
if (parsed && typeof parsed === 'object' && parsed.status) {
|
|
114
|
-
const lines = [];
|
|
115
|
-
lines.push(parsed.status === 'partial_error' ? '⚠️ Partial Success' : '✅ Success');
|
|
116
|
-
if (parsed.appId)
|
|
117
|
-
lines.push(`📋 App ID: ${parsed.appId}`);
|
|
118
|
-
if (parsed.operationType)
|
|
119
|
-
lines.push(`🔧 Operation: ${parsed.operationType}`);
|
|
120
|
-
if (parsed.output) {
|
|
121
|
-
lines.push('');
|
|
122
|
-
lines.push(parsed.output);
|
|
123
|
-
}
|
|
124
|
-
return lines.join('\n');
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
// Not JSON, return as-is
|
|
129
|
-
}
|
|
130
|
-
return raw;
|
|
131
|
-
}
|
|
132
73
|
// ── MCP timeouts ─────────────────────────────────────────────────────────────
|
|
133
74
|
// Most commands complete in < 5 seconds.
|
|
134
|
-
// Smart pipeline (AssessAgent
|
|
75
|
+
// Smart pipeline (AssessAgent) takes 30-300 seconds.
|
|
135
76
|
const TIMEOUT_DEFAULT = 60_000; // 60s for all direct CLI commands
|
|
136
|
-
const TIMEOUT_SMART = 600_000; // 10min for
|
|
77
|
+
const TIMEOUT_SMART = 600_000; // 10min for formlm_generate (consultation can take 5min+)
|
|
137
78
|
const TIMEOUT_STYLE = 600_000; // 10min for connect style apply/apply-all (AI-generated styles can take 60-120s)
|
|
138
79
|
export async function startMcpServer() {
|
|
139
80
|
const server = new McpServer({
|
|
140
81
|
name: 'formlm',
|
|
141
|
-
version:
|
|
82
|
+
version: VERSION,
|
|
142
83
|
});
|
|
143
84
|
// ════════════════════════════════════════════════════════════════
|
|
144
85
|
// MCP RESOURCES — Domain Knowledge (SKILL.md × 6)
|
|
@@ -172,21 +113,20 @@ export async function startMcpServer() {
|
|
|
172
113
|
});
|
|
173
114
|
}
|
|
174
115
|
// ════════════════════════════════════════════════════════════════
|
|
175
|
-
// MCP TOOLS — Layered Architecture (
|
|
116
|
+
// MCP TOOLS — Layered Architecture (6 tools, down from 34)
|
|
176
117
|
//
|
|
177
118
|
// Recommended workflow:
|
|
178
119
|
// 1. auth_login → authenticate
|
|
179
|
-
// 2.
|
|
120
|
+
// 2. formlm_generate → build a complete new app from scratch, OR
|
|
180
121
|
// formlm_skill (read domain rules) + formlm_exec (direct commands)
|
|
181
|
-
// 3. formlm_snapshot → check current state
|
|
182
|
-
// 4.
|
|
183
|
-
// formlm_exec (direct fine-grained commands)
|
|
122
|
+
// 3. formlm_snapshot → check current state
|
|
123
|
+
// 4. formlm_exec → direct fine-grained commands for modifications
|
|
184
124
|
// ════════════════════════════════════════════════════════════════
|
|
185
125
|
// ── Tier 0: Authentication ────────────────────────────────────
|
|
186
126
|
server.tool('auth_login', [
|
|
187
127
|
'Login to FormLM with a token or email + password.',
|
|
188
128
|
'',
|
|
189
|
-
'IMPORTANT: At the START of any FormLM session (before calling
|
|
129
|
+
'IMPORTANT: At the START of any FormLM session (before calling formlm_generate/formlm_exec),',
|
|
190
130
|
'call auth_status first. If not logged in, call this tool immediately — ask the user for their email + password',
|
|
191
131
|
'(easiest, no browser needed) or a token. Do NOT wait for a 401 error before authenticating.',
|
|
192
132
|
].join('\n'), {
|
|
@@ -228,13 +168,13 @@ export async function startMcpServer() {
|
|
|
228
168
|
});
|
|
229
169
|
// ── Tier 1: Smart Pipeline (Natural Language → Full App) ────────
|
|
230
170
|
//
|
|
231
|
-
//
|
|
232
|
-
//
|
|
171
|
+
// This tool wraps the server-side AssessAgent intelligence.
|
|
172
|
+
// It is the RECOMMENDED entry point for AI agents:
|
|
233
173
|
// - Same engine that powers newapp.html (SKILL.md constraints, reference data injection, retry)
|
|
234
174
|
// - One call replaces 30+ sequential formlm_exec calls
|
|
235
175
|
// - Returns appId + full task execution log
|
|
236
176
|
// - WARNING: may take 60-300 seconds for complex apps (consultation: 6 tasks)
|
|
237
|
-
server.tool('
|
|
177
|
+
server.tool('formlm_generate', [
|
|
238
178
|
'Create a COMPLETE production-ready assessment app from natural language.',
|
|
239
179
|
'Server runs: Plan AI (assess-plan.md) → per-task SKILL.md injection → CLI execution → result collection.',
|
|
240
180
|
'Equivalent to the full newapp.html pipeline. Returns JSON with appId, planType, shareUrl, task statuses, and full execution log.',
|
|
@@ -262,7 +202,7 @@ export async function startMcpServer() {
|
|
|
262
202
|
'',
|
|
263
203
|
'## ON FAILURE:',
|
|
264
204
|
'- If timeout: ask user to simplify the description (fewer dimensions, fewer questions).',
|
|
265
|
-
'- If partial success: use formlm_snapshot to check what was generated, then
|
|
205
|
+
'- If partial success: use formlm_snapshot to check what was generated, then use formlm_exec to complete.',
|
|
266
206
|
'- Always offer to retry with a simplified description.',
|
|
267
207
|
'',
|
|
268
208
|
'## Reference Documents:',
|
|
@@ -275,7 +215,7 @@ export async function startMcpServer() {
|
|
|
275
215
|
input: z.string().describe('Natural language description of the app. Be specific: mention topic, audience, number of questions, dimensions/subscales, scoring, visual style. ' +
|
|
276
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". ' +
|
|
277
217
|
'Supports up to 8000 characters. If user pastes reference documents, include them here.'),
|
|
278
|
-
planType: z.
|
|
218
|
+
planType: z.enum(['assessment', 'consultation', 'survey', 'exam', 'quiz', 'learn']).optional().describe('Plan type. Choose based on user needs: ' +
|
|
279
219
|
'"assessment" (scoring+report, for psych/workplace/health evaluations, MOST COMMON), ' +
|
|
280
220
|
'"consultation" (scoring+report+AI expert chat, for mental health/coaching), ' +
|
|
281
221
|
'"survey" (no scoring, for feedback/research), ' +
|
|
@@ -288,37 +228,11 @@ export async function startMcpServer() {
|
|
|
288
228
|
'"简洁直接" (minimal clean, for general use), ' +
|
|
289
229
|
'"轻松活泼" (lively playful, for quiz/education). ' +
|
|
290
230
|
'Or custom: "深色科技风" / "warm friendly pastel" / "minimal clean white".'),
|
|
291
|
-
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), ' +
|
|
292
232
|
'"15-20" (standard assessment, 5-8 min), ' +
|
|
293
233
|
'"20-30" (deep assessment, 8-15 min). Default: auto-decided by AI based on planType.'),
|
|
294
234
|
}, async (params) => {
|
|
295
|
-
let cmd = `assess smart
|
|
296
|
-
if (params.planType)
|
|
297
|
-
cmd += ` --plan-type ${params.planType}`;
|
|
298
|
-
if (params.style)
|
|
299
|
-
cmd += ` --style "${escapeArg(params.style)}"`;
|
|
300
|
-
if (params.questionCount)
|
|
301
|
-
cmd += ` --question-count ${params.questionCount}`;
|
|
302
|
-
cmd += ' --json';
|
|
303
|
-
const r = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
304
|
-
const text = formatCreateResult(r);
|
|
305
|
-
return { content: [{ type: 'text', text }] };
|
|
306
|
-
});
|
|
307
|
-
server.tool('formlm_plan', [
|
|
308
|
-
'Preview the execution plan WITHOUT executing it.',
|
|
309
|
-
'Server runs: Plan AI (assess-plan.md) only — returns the task list for user review.',
|
|
310
|
-
'Equivalent to newapp.html review stage. Use this BEFORE formlm_create when the user wants to review the plan first.',
|
|
311
|
-
'',
|
|
312
|
-
'WORKFLOW: formlm_plan → user reviews tasks → formlm_create (with same input to execute)',
|
|
313
|
-
'',
|
|
314
|
-
'Takes 10-30 seconds (only the Plan phase, no execution).',
|
|
315
|
-
].join('\n'), {
|
|
316
|
-
input: z.string().describe('Same natural language description you would pass to formlm_create'),
|
|
317
|
-
planType: z.string().optional().describe('Same as formlm_create planType parameter'),
|
|
318
|
-
style: z.string().optional().describe('Same as formlm_create style parameter'),
|
|
319
|
-
questionCount: z.string().optional().describe('Same as formlm_create questionCount parameter'),
|
|
320
|
-
}, async (params) => {
|
|
321
|
-
let cmd = `assess smart plan --input "${escapeArg(params.input)}"`;
|
|
235
|
+
let cmd = `assess smart generate --input "${escapeArg(params.input)}"`;
|
|
322
236
|
if (params.planType)
|
|
323
237
|
cmd += ` --plan-type ${params.planType}`;
|
|
324
238
|
if (params.style)
|
|
@@ -326,61 +240,8 @@ export async function startMcpServer() {
|
|
|
326
240
|
if (params.questionCount)
|
|
327
241
|
cmd += ` --question-count ${params.questionCount}`;
|
|
328
242
|
cmd += ' --json';
|
|
329
|
-
const r = await execCommand(cmd, undefined, TIMEOUT_DEFAULT);
|
|
330
|
-
return { content: [{ type: 'text', text: toText(r) }] };
|
|
331
|
-
});
|
|
332
|
-
server.tool('formlm_modify', [
|
|
333
|
-
'Modify an EXISTING app using natural language.',
|
|
334
|
-
'Server runs: Think (query current state → analyze intent) → Plan (PATCH task list with risk assessment) → Execute (SKILL.md constraints + reference injection) → Reflect (validate results).',
|
|
335
|
-
'Equivalent to newapp.html\'s modification chat. Returns JSON with operationType, task statuses, and AI reflection summary.',
|
|
336
|
-
'',
|
|
337
|
-
'BEFORE calling: use formlm_snapshot to understand current state.',
|
|
338
|
-
'AFTER calling: use formlm_snapshot to verify changes.',
|
|
339
|
-
'',
|
|
340
|
-
'MEDIUM/HIGH risk changes (5+ tasks, or form→scale cascades, or question/dimension deletion) are NOT executed immediately.',
|
|
341
|
-
'Instead the response has planPreview=true and a full "plan" object (task list + riskLevel).',
|
|
342
|
-
'When this happens:',
|
|
343
|
-
' 1. Show the task list and riskLevel to the user in plain language.',
|
|
344
|
-
' 2. Ask for explicit confirmation ("Should I proceed with these N changes?").',
|
|
345
|
-
' 3. If the user confirms, call formlm_confirm with the SAME appId and the exact "plan" object (unmodified) to execute it.',
|
|
346
|
-
' 4. If the user declines or wants changes, do NOT call formlm_confirm — just call formlm_modify again with a revised input.',
|
|
347
|
-
'This entire flow works purely through chat — no web UI is required at any step.',
|
|
348
|
-
'',
|
|
349
|
-
'Common use cases:',
|
|
350
|
-
'- "Add a social support subscale with 5 questions"',
|
|
351
|
-
'- "Change the cover page to dark blue with a professional theme"',
|
|
352
|
-
'- "Update the expert agent to use a warmer communication style"',
|
|
353
|
-
'- "Add a new report page showing dimension comparison"',
|
|
354
|
-
'',
|
|
355
|
-
'WARNING: Takes 30-120 seconds. Do NOT cancel — let it complete.',
|
|
356
|
-
].join('\n'), {
|
|
357
|
-
appId: z.string().describe('App ID to modify (get it from app list or previous formlm_create result)'),
|
|
358
|
-
input: z.string().describe('Natural language description of the change. Be specific about WHAT to change. ' +
|
|
359
|
-
'Examples: "Add a social support subscale with 5 questions" / ' +
|
|
360
|
-
'"Change the cover page to dark blue with a professional theme" / ' +
|
|
361
|
-
'"Update the expert agent to use a warmer communication style"'),
|
|
362
|
-
}, async (params) => {
|
|
363
|
-
const cmd = `assess smart modify --app ${params.appId} --input "${escapeArg(params.input)}" --json`;
|
|
364
|
-
const r = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
365
|
-
const text = formatModifyResult(r);
|
|
366
|
-
return { content: [{ type: 'text', text }] };
|
|
367
|
-
});
|
|
368
|
-
server.tool('formlm_confirm', [
|
|
369
|
-
'Confirm and execute a MEDIUM/HIGH risk change plan that was previously returned by formlm_modify with planPreview=true.',
|
|
370
|
-
'Server runs: Execute (skip Think/Plan) → Reflect, using the exact plan you pass in.',
|
|
371
|
-
'This lets the user approve risky changes entirely through chat — no web UI needed.',
|
|
372
|
-
'',
|
|
373
|
-
'ONLY call this after the user has seen the task list from formlm_modify\'s planPreview response and explicitly confirmed.',
|
|
374
|
-
'The "plan" argument MUST be the exact JSON object formlm_modify returned (do not edit, reformat, or hand-write it).',
|
|
375
|
-
'',
|
|
376
|
-
'WARNING: Takes 30-120 seconds. Do NOT cancel — let it complete.',
|
|
377
|
-
].join('\n'), {
|
|
378
|
-
appId: z.string().describe('App ID (same as passed to the preceding formlm_modify call)'),
|
|
379
|
-
plan: z.string().describe('The exact "plan" JSON object returned by formlm_modify, passed through unmodified as a JSON string'),
|
|
380
|
-
}, async (params) => {
|
|
381
|
-
const cmd = `assess smart confirm --app ${params.appId} --plan-json "${escapeArg(params.plan)}" --json`;
|
|
382
243
|
const r = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
383
|
-
const text =
|
|
244
|
+
const text = formatGenerateResult(r);
|
|
384
245
|
return { content: [{ type: 'text', text }] };
|
|
385
246
|
});
|
|
386
247
|
// ── Tier 2: State & Knowledge ────────────────────────────────────
|
|
@@ -388,13 +249,18 @@ export async function startMcpServer() {
|
|
|
388
249
|
'Get aggregated snapshot of ALL 6 app modules in a single call.',
|
|
389
250
|
'Returns: form fields, scale dimensions+ranges, connect page styles, report pages+widgets, expert config, share status.',
|
|
390
251
|
'',
|
|
391
|
-
'Call this BEFORE
|
|
392
|
-
'Call this AFTER
|
|
252
|
+
'Call this BEFORE making changes to understand what already exists.',
|
|
253
|
+
'Call this AFTER formlm_generate to verify the generated app.',
|
|
393
254
|
].join('\n'), {
|
|
394
255
|
appId: z.string().describe('App ID'),
|
|
395
256
|
module: z.string().optional().describe('Get only one module: form / scale / connect / report / expert / share (default: all 6)'),
|
|
396
257
|
}, async (params) => {
|
|
397
|
-
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
|
+
}
|
|
398
264
|
const commands = {
|
|
399
265
|
form: `assess form query --app ${params.appId} --json`,
|
|
400
266
|
scale: `assess scale query --app ${params.appId} --json`,
|
|
@@ -428,7 +294,7 @@ export async function startMcpServer() {
|
|
|
428
294
|
});
|
|
429
295
|
server.tool('formlm_skill', [
|
|
430
296
|
'Get the full SKILL.md domain knowledge for a specific skill module.',
|
|
431
|
-
'Same documents that AssessAgent
|
|
297
|
+
'Same documents that AssessAgent loads internally — contains P0/P1/P2 constraints, parameter rules, examples.',
|
|
432
298
|
'',
|
|
433
299
|
'You can also read these via MCP resources: formlm://skills/<skillId>',
|
|
434
300
|
'READ the relevant skill BEFORE constructing formlm_exec commands manually.',
|
|
@@ -444,7 +310,7 @@ export async function startMcpServer() {
|
|
|
444
310
|
});
|
|
445
311
|
// ── Tier 3: Direct Execution (Advanced) ──────────────────────────
|
|
446
312
|
//
|
|
447
|
-
// Whitelisted command prefixes (first
|
|
313
|
+
// Whitelisted command prefixes (first 2 tokens are checked):
|
|
448
314
|
// assess app : list / create / use / update / remove
|
|
449
315
|
// assess form : query / find / types / config / add / update / remove / move / set-property
|
|
450
316
|
// assess scale : query / find / add / update / set / remove / clear / config / keys / data
|
|
@@ -452,11 +318,11 @@ export async function startMcpServer() {
|
|
|
452
318
|
// assess report : query / find / update / page / widget / logic
|
|
453
319
|
// assess expert : query / find / config / set / avatar / remove / chat
|
|
454
320
|
// assess share : set / query / url
|
|
455
|
-
// assess smart :
|
|
321
|
+
// assess smart : generate
|
|
456
322
|
// assess skill : form / scale / connect / report / expert / share
|
|
457
323
|
server.tool('formlm_exec', [
|
|
458
324
|
'Execute a raw FormLM CLI command directly.',
|
|
459
|
-
'Use this for fine-grained control that
|
|
325
|
+
'Use this for fine-grained control that formlm_generate doesn\'t cover, or for modifying existing apps.',
|
|
460
326
|
'',
|
|
461
327
|
'IMPORTANT: All commands must start with "assess". Read formlm_skill first to ensure P0 compliance.',
|
|
462
328
|
'',
|
|
@@ -467,7 +333,7 @@ export async function startMcpServer() {
|
|
|
467
333
|
' NEVER call a remove command based on a vague reference ("delete it", "remove that one")',
|
|
468
334
|
' without first resolving and confirming the exact target. Deletion is irreversible.',
|
|
469
335
|
'',
|
|
470
|
-
'Whitelisted prefixes (
|
|
336
|
+
'Whitelisted prefixes (2-token match):',
|
|
471
337
|
' App: assess app list/create/use/update/remove/urls',
|
|
472
338
|
' Form: assess form query/find/types/config/add/update/remove/move/set-property',
|
|
473
339
|
' Scale: assess scale query/find/add/update/set/remove/clear/config/keys/data',
|
|
@@ -491,15 +357,29 @@ export async function startMcpServer() {
|
|
|
491
357
|
command: z.string().describe('Full CLI command starting with "assess". Do NOT include the "formlm-cli" prefix. ' +
|
|
492
358
|
'Add --json flag for structured output. Escape inner quotes with \\".'),
|
|
493
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
|
+
}
|
|
494
373
|
// Use longer timeout for commands that trigger server-side AI generation
|
|
495
374
|
const isStyleCmd = params.command.includes('connect style apply');
|
|
496
|
-
const
|
|
375
|
+
const isSmartCmd = params.command.includes('smart generate');
|
|
376
|
+
const timeout = (isStyleCmd || isSmartCmd) ? TIMEOUT_STYLE : TIMEOUT_DEFAULT;
|
|
497
377
|
const r = await execCommand(params.command, undefined, timeout);
|
|
498
378
|
return { content: [{ type: 'text', text: toText(r) }] };
|
|
499
379
|
});
|
|
500
380
|
// ── Start Server ──────────────────────────────────────────────────
|
|
501
381
|
const transport = new StdioServerTransport();
|
|
502
382
|
await server.connect(transport);
|
|
503
|
-
console.error(
|
|
383
|
+
console.error(`FormLM MCP Server v${VERSION} running on stdio (6 tools + 6 resources)`);
|
|
504
384
|
}
|
|
505
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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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared CLI utilities.
|
|
3
|
+
*
|
|
4
|
+
* escapeArg is the single source of truth for escaping user-supplied input
|
|
5
|
+
* before it is embedded into a command string. Both the direct CLI
|
|
6
|
+
* (commands/smart.ts) and the MCP Server (mcp.ts) must use it to prevent
|
|
7
|
+
* argument-boundary breakage when input contains double quotes etc.
|
|
8
|
+
*/
|
|
9
|
+
export declare function escapeArg(s: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Normalize commander optional boolean flags to true/false/undefined.
|
|
12
|
+
* --flag → true
|
|
13
|
+
* --flag=false → false (string)
|
|
14
|
+
* --flag=true → true (string)
|
|
15
|
+
* not passed → undefined
|
|
16
|
+
*/
|
|
17
|
+
export declare function normBool(v: unknown): boolean | undefined;
|
|
18
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAIxD"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared CLI utilities.
|
|
3
|
+
*
|
|
4
|
+
* escapeArg is the single source of truth for escaping user-supplied input
|
|
5
|
+
* before it is embedded into a command string. Both the direct CLI
|
|
6
|
+
* (commands/smart.ts) and the MCP Server (mcp.ts) must use it to prevent
|
|
7
|
+
* argument-boundary breakage when input contains double quotes etc.
|
|
8
|
+
*/
|
|
9
|
+
// tokenizeCommand (server-side PipelineFilterCommand) supports \" as an escaped
|
|
10
|
+
// double-quote inside a quoted arg. Backslashes must be escaped first.
|
|
11
|
+
// Newlines / tabs are normalized to spaces since CLI commands are single-line.
|
|
12
|
+
export function escapeArg(s) {
|
|
13
|
+
return s
|
|
14
|
+
.replace(/\\/g, '\\\\') // \ → \\ (must be first)
|
|
15
|
+
.replace(/"/g, '\\"') // " → \"
|
|
16
|
+
.replace(/\r?\n|\r/g, ' ') // newlines → space
|
|
17
|
+
.replace(/\t/g, ' ') // tabs → space
|
|
18
|
+
.trim();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Normalize commander optional boolean flags to true/false/undefined.
|
|
22
|
+
* --flag → true
|
|
23
|
+
* --flag=false → false (string)
|
|
24
|
+
* --flag=true → true (string)
|
|
25
|
+
* not passed → undefined
|
|
26
|
+
*/
|
|
27
|
+
export function normBool(v) {
|
|
28
|
+
if (v === undefined)
|
|
29
|
+
return undefined;
|
|
30
|
+
if (typeof v === 'boolean')
|
|
31
|
+
return v;
|
|
32
|
+
return v === 'true' || v === '1';
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gFAAgF;AAChF,uEAAuE;AACvE,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,OAAO,CAAC;SACL,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAG,0BAA0B;SACnD,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAM,SAAS;SACnC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,mBAAmB;SAC7C,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAO,eAAe;SACzC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAU;IACjC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
// package.json is the Single Source of Truth for the version number.
|
|
3
|
+
// Use createRequire (runtime) instead of a static JSON import so that
|
|
4
|
+
// `rootDir: ./src` does not complain about a file outside the src tree.
|
|
5
|
+
// After compilation dist/version.js → ../package.json resolves to the
|
|
6
|
+
// package root both in development and in the published npm tarball
|
|
7
|
+
// (npm always includes package.json regardless of the `files` field).
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
const pkg = require('../package.json');
|
|
10
|
+
export const VERSION = pkg.version;
|
|
11
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,qEAAqE;AACrE,sEAAsE;AACtE,wEAAwE;AACxE,sEAAsE;AACtE,oEAAoE;AACpE,sEAAsE;AACtE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC"}
|