@formlm/cli 0.2.1 → 0.2.3
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/share.d.ts.map +1 -1
- package/dist/commands/share.js +25 -1
- package/dist/commands/share.js.map +1 -1
- package/dist/commands/smart.d.ts.map +1 -1
- package/dist/commands/smart.js +9 -54
- 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 +8 -2
- package/dist/exec.js.map +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +21 -152
- package/dist/mcp.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,9 +33,8 @@ With `formlm-cli`, you can control FormLM directly from your terminal or plug it
|
|
|
33
33
|
|
|
34
34
|
The MCP architecture has been completely redesigned from the ground up:
|
|
35
35
|
|
|
36
|
-
- **34 flat tools →
|
|
37
|
-
- **Intelligence Layer**: `
|
|
38
|
-
- **Chat-only Risk Confirmation**: `formlm_confirm` executes medium/high-risk `formlm_modify` plans after user approval — no web UI needed
|
|
36
|
+
- **34 flat tools → 6 layered tools + 6 knowledge resources**
|
|
37
|
+
- **Intelligence Layer**: `formlm_generate` wraps the server-side AssessAgent pipeline
|
|
39
38
|
- **Domain Knowledge**: 6 MCP resources expose SKILL.md files directly to AI agents
|
|
40
39
|
- **State Awareness**: `formlm_snapshot` aggregates all module states in one call
|
|
41
40
|
- **P0 Constraints**: Embedded directly in command descriptions — AI sees them every time
|
|
@@ -48,8 +47,7 @@ The MCP architecture has been completely redesigned from the ground up:
|
|
|
48
47
|
│ Codex CLI / Windsurf / Cline / ...) │
|
|
49
48
|
├─────────────────────────────────────────────────────────┤
|
|
50
49
|
│ Tier 0: auth_login, auth_status │
|
|
51
|
-
│ Tier 1:
|
|
52
|
-
│ formlm_modify, formlm_confirm ← Smart Pipeline │
|
|
50
|
+
│ Tier 1: formlm_generate ← Smart Pipeline │
|
|
53
51
|
│ Tier 2: formlm_snapshot, formlm_skill ← State + Knowledge│
|
|
54
52
|
│ Tier 3: formlm_exec ← Direct Commands │
|
|
55
53
|
├─────────────────────────────────────────────────────────┤
|
|
@@ -94,23 +92,13 @@ formlm-cli auth login --token <your-token>
|
|
|
94
92
|
### 2. Smart Pipeline (AI-recommended)
|
|
95
93
|
|
|
96
94
|
```bash
|
|
97
|
-
# Preview the plan before executing (optional, for user review)
|
|
98
|
-
formlm-cli smart plan --input "Create a workplace stress assessment with 10 questions, 3 dimensions"
|
|
99
|
-
|
|
100
95
|
# Generate a complete assessment app from natural language
|
|
101
96
|
# This includes form design, scale config, report pages, AND visual styling — all in one step.
|
|
102
97
|
# Expected time: 60-120s for assessment, 180-300s for consultation. Do NOT cancel.
|
|
103
|
-
formlm-cli smart
|
|
104
|
-
|
|
105
|
-
# Modify an existing app
|
|
106
|
-
formlm-cli smart modify --app <appId> --input "Add a new dimension for workplace social support"
|
|
107
|
-
|
|
108
|
-
# If the change is medium/high risk, smart modify returns a plan preview instead of executing.
|
|
109
|
-
# Show the plan to the user, then confirm and execute it (no web UI needed):
|
|
110
|
-
formlm-cli smart confirm --app <appId> --plan-json '<the exact "plan" JSON returned above>'
|
|
98
|
+
formlm-cli smart generate --input "Create a workplace stress assessment with 10 questions, 3 dimensions, and detailed score interpretations"
|
|
111
99
|
```
|
|
112
100
|
|
|
113
|
-
> **⚠️ Smart
|
|
101
|
+
> **⚠️ Smart generate already includes visual styling.** If you skip smart generate and use Direct Commands (below) instead, you MUST run `connect style apply-all` to beautify your form — otherwise it will use the default unstyled appearance.
|
|
114
102
|
|
|
115
103
|
### 3. Get All App URLs (after creating)
|
|
116
104
|
|
|
@@ -160,7 +148,7 @@ formlm-cli expert config --app <appId> --enableChat true
|
|
|
160
148
|
formlm-cli mcp
|
|
161
149
|
```
|
|
162
150
|
|
|
163
|
-
This starts the MCP Server (stdio transport) with
|
|
151
|
+
This starts the MCP Server (stdio transport) with 6 tools + 6 resources, ready for AI Agents to connect.
|
|
164
152
|
|
|
165
153
|
---
|
|
166
154
|
|
|
@@ -170,13 +158,7 @@ This starts the MCP Server (stdio transport) with 9 tools + 6 resources, ready f
|
|
|
170
158
|
|
|
171
159
|
```bash
|
|
172
160
|
# Generate a complete app from natural language
|
|
173
|
-
formlm-cli smart
|
|
174
|
-
|
|
175
|
-
# Modify an existing app
|
|
176
|
-
formlm-cli smart modify --app <appId> --input "..."
|
|
177
|
-
|
|
178
|
-
# Confirm and execute a medium/high risk plan returned by smart modify (skips Think/Plan, no web UI needed)
|
|
179
|
-
formlm-cli smart confirm --app <appId> --plan-json '<exact plan JSON from smart modify>'
|
|
161
|
+
formlm-cli smart generate --input "..." [--plan-type assessment] [--style "温暖亲切"] [--question-count 10-15]
|
|
180
162
|
```
|
|
181
163
|
|
|
182
164
|
### Snapshot
|
|
@@ -360,16 +342,13 @@ FormLM CLI works as a standard MCP Server over stdio and plugs into **any MCP-co
|
|
|
360
342
|
|
|
361
343
|
---
|
|
362
344
|
|
|
363
|
-
## Available MCP Tools (
|
|
345
|
+
## Available MCP Tools (6)
|
|
364
346
|
|
|
365
347
|
| Tier | Tool | Description |
|
|
366
348
|
|---|---|---|
|
|
367
349
|
| 0 | `auth_login` | Login with token or email + password |
|
|
368
350
|
| 0 | `auth_status` | Check current login status |
|
|
369
|
-
| 1 | `
|
|
370
|
-
| 1 | `formlm_create` | Generate a complete app from natural language (AssessAgent pipeline) |
|
|
371
|
-
| 1 | `formlm_modify` | Modify an existing app via natural language (BuilderAgent pipeline) |
|
|
372
|
-
| 1 | `formlm_confirm` | Confirm and execute a medium/high risk plan returned by `formlm_modify` — no web UI needed |
|
|
351
|
+
| 1 | `formlm_generate` | Generate a complete app from natural language (AssessAgent pipeline) |
|
|
373
352
|
| 2 | `formlm_snapshot` | Get aggregated state of all modules (form/scale/connect/report/expert/share) |
|
|
374
353
|
| 2 | `formlm_skill` | Fetch SKILL.md domain knowledge for a skill module |
|
|
375
354
|
| 3 | `formlm_exec` | Execute any whitelisted CLI command directly |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiF1D"}
|
package/dist/commands/share.js
CHANGED
|
@@ -1,12 +1,36 @@
|
|
|
1
1
|
import { execCommand } from '../exec.js';
|
|
2
2
|
import { output } from '../output.js';
|
|
3
|
+
// connect style apply-all triggers server-side AI generation (30-120s)
|
|
4
|
+
const TIMEOUT_STYLE = 600_000;
|
|
3
5
|
export function registerShareCommand(parent) {
|
|
4
6
|
const share = parent.command('share').description('Share & publish management — set command is naturally idempotent (safe to re-run)');
|
|
5
7
|
share
|
|
6
8
|
.command('publish')
|
|
7
|
-
.description('Publish the form for public access (each respondent can submit once; unlimited respondents; stays open until unpublished)')
|
|
9
|
+
.description('Publish the form for public access (each respondent can submit once; unlimited respondents; stays open until unpublished). Auto-applies visual style if not yet styled.')
|
|
8
10
|
.requiredOption('--app <appId>', 'App ID')
|
|
9
11
|
.action(async (opts) => {
|
|
12
|
+
// ── Connect style fallback: check if form has been styled ──
|
|
13
|
+
const queryResult = await execCommand(`assess connect query --app ${opts.app} --json`);
|
|
14
|
+
let needsStyle = true;
|
|
15
|
+
if (queryResult.code === 0 && queryResult.data) {
|
|
16
|
+
try {
|
|
17
|
+
const query = JSON.parse(queryResult.data);
|
|
18
|
+
if (query.styled === true)
|
|
19
|
+
needsStyle = false;
|
|
20
|
+
}
|
|
21
|
+
catch { }
|
|
22
|
+
}
|
|
23
|
+
if (needsStyle) {
|
|
24
|
+
console.log('🎨 No visual style detected. Auto-applying default style...');
|
|
25
|
+
const styleResult = await execCommand(`assess connect style apply-all --app ${opts.app} --theme minimalist --look "professional assessment form, clean modern design, clear typography, subtle color palette" --json`, undefined, TIMEOUT_STYLE);
|
|
26
|
+
if (styleResult.code === 0) {
|
|
27
|
+
console.log('✅ Visual style applied successfully.');
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
console.log(`⚠️ Style auto-apply skipped: ${styleResult.message}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// ── Publish the form ──
|
|
10
34
|
const cmd = `assess share set --app ${opts.app} --form-type all --form-perm 1 --form-day 3650000 --json`;
|
|
11
35
|
const result = await execCommand(cmd);
|
|
12
36
|
output(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,mFAAmF,CAAC,CAAC;IAEvI,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.d.ts","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"smart.d.ts","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAqB1D"}
|
package/dist/commands/smart.js
CHANGED
|
@@ -3,32 +3,29 @@ import { output } from '../output.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Smart Pipeline Commands
|
|
5
5
|
*
|
|
6
|
-
* Wraps the server-side AssessAgent
|
|
7
|
-
* - smart
|
|
8
|
-
* - smart plan: AssessAgent.plan() only — preview plan without executing
|
|
9
|
-
* - smart modify: BuilderAgent Think → Plan → Execute → Reflect — modify existing app
|
|
6
|
+
* Wraps the server-side AssessAgent intelligent pipeline:
|
|
7
|
+
* - smart generate: AssessAgent.plan() + execute() — natural language → full app
|
|
10
8
|
*
|
|
11
|
-
*
|
|
9
|
+
* This is the RECOMMENDED entry point for AI agents (works with any MCP-compatible
|
|
12
10
|
* platform: Claude / Cursor / Codex CLI / Windsurf / etc., or direct CLI usage)
|
|
13
|
-
* because
|
|
11
|
+
* because it embeds the full SKILL.md domain knowledge, reference data injection,
|
|
14
12
|
* and multi-step orchestration that newapp.html uses internally.
|
|
15
13
|
*/
|
|
16
14
|
// ── Timeouts ──────────────────────────────────────────────────────────────────
|
|
17
15
|
// Must match mcp.ts constants to ensure CLI and MCP Server have identical behavior.
|
|
18
|
-
const
|
|
19
|
-
const TIMEOUT_SMART = 600_000; // 10min for smart create / modify (full AI pipeline: plan → execute → reflect)
|
|
16
|
+
const TIMEOUT_SMART = 600_000; // 10min for smart generate (full AI pipeline: plan → execute)
|
|
20
17
|
export function registerSmartCommand(parent) {
|
|
21
18
|
const smart = parent.command('smart').description('Intelligent pipeline — natural language to live app (recommended for AI agents)');
|
|
22
|
-
// ── smart
|
|
19
|
+
// ── smart generate ───────────────────────────────────────────
|
|
23
20
|
smart
|
|
24
|
-
.command('
|
|
25
|
-
.description('Create a complete app from natural language description. The server runs AssessAgent: plan → execute
|
|
21
|
+
.command('generate')
|
|
22
|
+
.description('Create a complete app from natural language description. The server runs AssessAgent: plan → execute. This is the fastest way to get a production-ready assessment app. ⏱️ Estimated: 1-5 min (assessment 60-120s, consultation 180-300s, survey 30-60s). Do NOT cancel — let it complete.')
|
|
26
23
|
.requiredOption('--input <text>', 'Natural language description of the app you want to build (e.g. "a mental health screening questionnaire for college students")')
|
|
27
24
|
.option('--plan-type <type>', 'Plan type: assessment / consultation / survey / exam / quiz / learn (default: auto-detected by AI)')
|
|
28
25
|
.option('--style <style>', 'Visual style preference (e.g. "深色科技风" or "warm and friendly")')
|
|
29
26
|
.option('--question-count <count>', 'Question count range: 10-15 / 15-20 / 20-30')
|
|
30
27
|
.action(async (opts) => {
|
|
31
|
-
let cmd = `assess smart
|
|
28
|
+
let cmd = `assess smart generate --input "${opts.input}"`;
|
|
32
29
|
if (opts.planType)
|
|
33
30
|
cmd += ` --plan-type ${opts.planType}`;
|
|
34
31
|
if (opts.style)
|
|
@@ -39,47 +36,5 @@ export function registerSmartCommand(parent) {
|
|
|
39
36
|
const result = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
40
37
|
output(result);
|
|
41
38
|
});
|
|
42
|
-
// ── smart plan ───────────────────────────────────────────────
|
|
43
|
-
smart
|
|
44
|
-
.command('plan')
|
|
45
|
-
.description('Preview the execution plan WITHOUT executing it. Returns the task list for user review. Equivalent to newapp.html review stage')
|
|
46
|
-
.requiredOption('--input <text>', 'Natural language description of the app you want to build')
|
|
47
|
-
.option('--plan-type <type>', 'Plan type: assessment / consultation / survey / exam / quiz / learn (default: auto-detected by AI)')
|
|
48
|
-
.option('--style <style>', 'Visual style preference (e.g. "深色科技风" or "warm and friendly")')
|
|
49
|
-
.option('--question-count <count>', 'Question count range: 10-15 / 15-20 / 20-30')
|
|
50
|
-
.action(async (opts) => {
|
|
51
|
-
let cmd = `assess smart plan --input "${opts.input}"`;
|
|
52
|
-
if (opts.planType)
|
|
53
|
-
cmd += ` --plan-type ${opts.planType}`;
|
|
54
|
-
if (opts.style)
|
|
55
|
-
cmd += ` --style "${opts.style}"`;
|
|
56
|
-
if (opts.questionCount)
|
|
57
|
-
cmd += ` --question-count ${opts.questionCount}`;
|
|
58
|
-
cmd += ' --json';
|
|
59
|
-
const result = await execCommand(cmd, undefined, TIMEOUT_DEFAULT);
|
|
60
|
-
output(result);
|
|
61
|
-
});
|
|
62
|
-
// ── smart modify ──────────────────────────────────────────────
|
|
63
|
-
smart
|
|
64
|
-
.command('modify')
|
|
65
|
-
.description('Modify an existing app using natural language. The server runs BuilderAgent: think → plan → execute → reflect. Automatically queries current state, generates precise modification commands, and validates results')
|
|
66
|
-
.requiredOption('--app <appId>', 'App ID to modify')
|
|
67
|
-
.requiredOption('--input <text>', 'Natural language description of the change (e.g. "add a depression subscale" or "change the cover page to a dark blue gradient")')
|
|
68
|
-
.action(async (opts) => {
|
|
69
|
-
const cmd = `assess smart modify --app ${opts.app} --input "${opts.input}" --json`;
|
|
70
|
-
const result = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
71
|
-
output(result);
|
|
72
|
-
});
|
|
73
|
-
// ── smart confirm ───────────────────────────────────
|
|
74
|
-
smart
|
|
75
|
-
.command('confirm')
|
|
76
|
-
.description('Confirm and execute a medium/high risk plan previously returned by smart modify with planPreview=true. Pass the exact "plan" JSON unmodified. No web UI required')
|
|
77
|
-
.requiredOption('--app <appId>', 'App ID (same as used for smart modify)')
|
|
78
|
-
.requiredOption('--plan-json <json>', 'The exact "plan" field returned by smart modify (unmodified JSON)')
|
|
79
|
-
.action(async (opts) => {
|
|
80
|
-
const cmd = `assess smart confirm --app ${opts.app} --plan-json "${opts.planJson}" --json`;
|
|
81
|
-
const result = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
82
|
-
output(result);
|
|
83
|
-
});
|
|
84
39
|
}
|
|
85
40
|
//# sourceMappingURL=smart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC
|
|
1
|
+
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../src/commands/smart.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;;;;;;;GAUG;AAEH,iFAAiF;AACjF,oFAAoF;AACpF,MAAM,aAAa,GAAG,OAAO,CAAC,CAAG,8DAA8D;AAE/F,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iFAAiF,CAAC,CAAC;IAErI,gEAAgE;IAEhE,KAAK;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4RAA4R,CAAC;SACzS,cAAc,CAAC,gBAAgB,EAAE,iIAAiI,CAAC;SACnK,MAAM,CAAC,oBAAoB,EAAE,oGAAoG,CAAC;SAClI,MAAM,CAAC,iBAAiB,EAAE,+DAA+D,CAAC;SAC1F,MAAM,CAAC,0BAA0B,EAAE,6CAA6C,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,GAAG,GAAG,kCAAkC,IAAI,CAAC,KAAK,GAAG,CAAC;QAC1D,IAAI,IAAI,CAAC,QAAQ;YAAE,GAAG,IAAI,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,KAAK;YAAE,GAAG,IAAI,aAAa,IAAI,CAAC,KAAK,GAAG,CAAC;QAClD,IAAI,IAAI,CAAC,aAAa;YAAE,GAAG,IAAI,qBAAqB,IAAI,CAAC,aAAa,EAAE,CAAC;QACzE,GAAG,IAAI,SAAS,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
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 pipeline commands (assess smart
|
|
14
|
+
* Smart pipeline commands (assess smart generate) should use 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,CAkErB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAwCpF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA0CtE"}
|
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 pipeline commands (assess smart
|
|
13
|
+
* Smart pipeline commands (assess smart generate) should use 300_000 (5min).
|
|
14
14
|
*/
|
|
15
15
|
export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
16
16
|
const baseUrl = getBaseUrl();
|
|
@@ -45,6 +45,8 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
45
45
|
catch {
|
|
46
46
|
resolve({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
47
47
|
}
|
|
48
|
+
// 释放 keep-alive socket,避免事件循环挂起导致进程无法退出
|
|
49
|
+
res.destroy();
|
|
48
50
|
});
|
|
49
51
|
});
|
|
50
52
|
// Timeout handler: destroy socket and return timeout error
|
|
@@ -55,7 +57,7 @@ export async function execCommand(cmd, profileName, timeoutMs = 60_000) {
|
|
|
55
57
|
? `Smart pipeline may take 60-300s (consultation can take 5min+). ` +
|
|
56
58
|
`If timeout persists: 1) simplify the description (fewer dimensions/questions), ` +
|
|
57
59
|
`2) use formlm_snapshot to check if partially generated, ` +
|
|
58
|
-
`3) use
|
|
60
|
+
`3) use formlm_exec to complete partial results.`
|
|
59
61
|
: `Try again or simplify the command.`;
|
|
60
62
|
resolve({
|
|
61
63
|
code: 408,
|
|
@@ -104,6 +106,8 @@ export async function authLogin(email, password) {
|
|
|
104
106
|
catch {
|
|
105
107
|
resolve({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
106
108
|
}
|
|
109
|
+
// 释放 keep-alive socket,避免事件循环挂起
|
|
110
|
+
res.destroy();
|
|
107
111
|
});
|
|
108
112
|
});
|
|
109
113
|
req.on('error', (err) => {
|
|
@@ -145,6 +149,8 @@ export async function authMe(profileName) {
|
|
|
145
149
|
catch {
|
|
146
150
|
resolve({ code: 500, message: `Invalid response: ${data.substring(0, 200)}`, data: null });
|
|
147
151
|
}
|
|
152
|
+
// 释放 keep-alive socket,避免事件循环挂起
|
|
153
|
+
res.destroy();
|
|
148
154
|
});
|
|
149
155
|
});
|
|
150
156
|
req.on('error', (err) => {
|
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,OAAO,CAAC;wBACN,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;wBACtB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI;wBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;qBAC1B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7F,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import { registerSkillCommand } from './commands/skill.js';
|
|
|
14
14
|
const program = new Command();
|
|
15
15
|
program
|
|
16
16
|
.name('formlm-cli')
|
|
17
|
-
.description('The official CLI & MCP Server for FormLM — https://formlm.me\n\n Quick start:\n formlm-cli smart
|
|
17
|
+
.description('The official CLI & MCP Server for FormLM — https://formlm.me\n\n Quick start:\n formlm-cli smart generate --input "a mental health screening questionnaire"\n formlm-cli snapshot --app <appId>\n formlm-cli skill form\n formlm-cli mcp (start MCP server for any MCP client: Claude / Cursor / Codex CLI / Windsurf / etc.)')
|
|
18
18
|
.version('0.2.1')
|
|
19
19
|
.option('--profile <name>', 'Profile to use (overrides default)');
|
|
20
20
|
// ── Register command groups ────────────────────────────────────
|
|
@@ -34,7 +34,7 @@ registerProfileCommand(program);
|
|
|
34
34
|
// ── mcp subcommand: start MCP Server ───────────────────────────
|
|
35
35
|
program
|
|
36
36
|
.command('mcp')
|
|
37
|
-
.description('Start MCP Server (stdio mode) for any MCP-compatible AI platform (Claude / Cursor / Codex CLI / Windsurf / Cline / etc.). Exposes
|
|
37
|
+
.description('Start MCP Server (stdio mode) for any MCP-compatible AI platform (Claude / Cursor / Codex CLI / Windsurf / Cline / etc.). Exposes 6 tools + 6 resources.')
|
|
38
38
|
.action(async () => {
|
|
39
39
|
const { startMcpServer } = await import('./mcp.js');
|
|
40
40
|
await startMcpServer();
|
|
@@ -72,5 +72,14 @@ program.exitOverride((err) => {
|
|
|
72
72
|
// For other errors, re-throw
|
|
73
73
|
throw err;
|
|
74
74
|
});
|
|
75
|
-
|
|
75
|
+
// parseAsync ensures all async action handlers complete before exiting.
|
|
76
|
+
// For regular commands: resolves after action completes → process.exit(0).
|
|
77
|
+
// For MCP server mode: never resolves (server keeps running) → process stays alive.
|
|
78
|
+
program.parseAsync().then(() => {
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}).catch(() => {
|
|
81
|
+
// exitOverride already handles commander errors via process.exit(1).
|
|
82
|
+
// This catches any other unexpected errors.
|
|
83
|
+
process.exit(1);
|
|
84
|
+
});
|
|
76
85
|
//# 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":"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;AAE3D,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":"AAkFA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAgUpD"}
|
package/dist/mcp.js
CHANGED
|
@@ -19,12 +19,12 @@ function escapeArg(s) {
|
|
|
19
19
|
function toText(r) {
|
|
20
20
|
return r.code === 0 ? (r.data || r.message) : `❌ [${r.code}] ${r.message}`;
|
|
21
21
|
}
|
|
22
|
-
// ── Helper: format
|
|
22
|
+
// ── Helper: format formlm_generate result for better AI consumption ────────────
|
|
23
23
|
// Extracts key fields (appId, shareUrl, planType, taskCount) from JSON result
|
|
24
24
|
// and presents them in a structured summary for the AI Agent to relay to the user.
|
|
25
25
|
// The full raw JSON is intentionally NOT dumped here (it can be very long for
|
|
26
26
|
// multi-task pipelines) — use formlm_snapshot if full detail is needed.
|
|
27
|
-
function
|
|
27
|
+
function formatGenerateResult(r) {
|
|
28
28
|
if (r.code !== 0) {
|
|
29
29
|
return `❌ [${r.code}] ${r.message}`;
|
|
30
30
|
}
|
|
@@ -78,62 +78,11 @@ function formatCreateResult(r) {
|
|
|
78
78
|
}
|
|
79
79
|
return raw;
|
|
80
80
|
}
|
|
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
81
|
// ── MCP timeouts ─────────────────────────────────────────────────────────────
|
|
133
82
|
// Most commands complete in < 5 seconds.
|
|
134
|
-
// Smart pipeline (AssessAgent
|
|
83
|
+
// Smart pipeline (AssessAgent) takes 30-300 seconds.
|
|
135
84
|
const TIMEOUT_DEFAULT = 60_000; // 60s for all direct CLI commands
|
|
136
|
-
const TIMEOUT_SMART = 600_000; // 10min for
|
|
85
|
+
const TIMEOUT_SMART = 600_000; // 10min for formlm_generate (consultation can take 5min+)
|
|
137
86
|
const TIMEOUT_STYLE = 600_000; // 10min for connect style apply/apply-all (AI-generated styles can take 60-120s)
|
|
138
87
|
export async function startMcpServer() {
|
|
139
88
|
const server = new McpServer({
|
|
@@ -172,21 +121,20 @@ export async function startMcpServer() {
|
|
|
172
121
|
});
|
|
173
122
|
}
|
|
174
123
|
// ════════════════════════════════════════════════════════════════
|
|
175
|
-
// MCP TOOLS — Layered Architecture (
|
|
124
|
+
// MCP TOOLS — Layered Architecture (6 tools, down from 34)
|
|
176
125
|
//
|
|
177
126
|
// Recommended workflow:
|
|
178
127
|
// 1. auth_login → authenticate
|
|
179
|
-
// 2.
|
|
128
|
+
// 2. formlm_generate → build a complete new app from scratch, OR
|
|
180
129
|
// 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)
|
|
130
|
+
// 3. formlm_snapshot → check current state
|
|
131
|
+
// 4. formlm_exec → direct fine-grained commands for modifications
|
|
184
132
|
// ════════════════════════════════════════════════════════════════
|
|
185
133
|
// ── Tier 0: Authentication ────────────────────────────────────
|
|
186
134
|
server.tool('auth_login', [
|
|
187
135
|
'Login to FormLM with a token or email + password.',
|
|
188
136
|
'',
|
|
189
|
-
'IMPORTANT: At the START of any FormLM session (before calling
|
|
137
|
+
'IMPORTANT: At the START of any FormLM session (before calling formlm_generate/formlm_exec),',
|
|
190
138
|
'call auth_status first. If not logged in, call this tool immediately — ask the user for their email + password',
|
|
191
139
|
'(easiest, no browser needed) or a token. Do NOT wait for a 401 error before authenticating.',
|
|
192
140
|
].join('\n'), {
|
|
@@ -228,13 +176,13 @@ export async function startMcpServer() {
|
|
|
228
176
|
});
|
|
229
177
|
// ── Tier 1: Smart Pipeline (Natural Language → Full App) ────────
|
|
230
178
|
//
|
|
231
|
-
//
|
|
232
|
-
//
|
|
179
|
+
// This tool wraps the server-side AssessAgent intelligence.
|
|
180
|
+
// It is the RECOMMENDED entry point for AI agents:
|
|
233
181
|
// - Same engine that powers newapp.html (SKILL.md constraints, reference data injection, retry)
|
|
234
182
|
// - One call replaces 30+ sequential formlm_exec calls
|
|
235
183
|
// - Returns appId + full task execution log
|
|
236
184
|
// - WARNING: may take 60-300 seconds for complex apps (consultation: 6 tasks)
|
|
237
|
-
server.tool('
|
|
185
|
+
server.tool('formlm_generate', [
|
|
238
186
|
'Create a COMPLETE production-ready assessment app from natural language.',
|
|
239
187
|
'Server runs: Plan AI (assess-plan.md) → per-task SKILL.md injection → CLI execution → result collection.',
|
|
240
188
|
'Equivalent to the full newapp.html pipeline. Returns JSON with appId, planType, shareUrl, task statuses, and full execution log.',
|
|
@@ -262,7 +210,7 @@ export async function startMcpServer() {
|
|
|
262
210
|
'',
|
|
263
211
|
'## ON FAILURE:',
|
|
264
212
|
'- 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
|
|
213
|
+
'- If partial success: use formlm_snapshot to check what was generated, then use formlm_exec to complete.',
|
|
266
214
|
'- Always offer to retry with a simplified description.',
|
|
267
215
|
'',
|
|
268
216
|
'## Reference Documents:',
|
|
@@ -292,7 +240,7 @@ export async function startMcpServer() {
|
|
|
292
240
|
'"15-20" (standard assessment, 5-8 min), ' +
|
|
293
241
|
'"20-30" (deep assessment, 8-15 min). Default: auto-decided by AI based on planType.'),
|
|
294
242
|
}, async (params) => {
|
|
295
|
-
let cmd = `assess smart
|
|
243
|
+
let cmd = `assess smart generate --input "${escapeArg(params.input)}"`;
|
|
296
244
|
if (params.planType)
|
|
297
245
|
cmd += ` --plan-type ${params.planType}`;
|
|
298
246
|
if (params.style)
|
|
@@ -301,86 +249,7 @@ export async function startMcpServer() {
|
|
|
301
249
|
cmd += ` --question-count ${params.questionCount}`;
|
|
302
250
|
cmd += ' --json';
|
|
303
251
|
const r = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
304
|
-
const text =
|
|
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)}"`;
|
|
322
|
-
if (params.planType)
|
|
323
|
-
cmd += ` --plan-type ${params.planType}`;
|
|
324
|
-
if (params.style)
|
|
325
|
-
cmd += ` --style "${escapeArg(params.style)}"`;
|
|
326
|
-
if (params.questionCount)
|
|
327
|
-
cmd += ` --question-count ${params.questionCount}`;
|
|
328
|
-
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
|
-
const r = await execCommand(cmd, undefined, TIMEOUT_SMART);
|
|
383
|
-
const text = formatModifyResult(r);
|
|
252
|
+
const text = formatGenerateResult(r);
|
|
384
253
|
return { content: [{ type: 'text', text }] };
|
|
385
254
|
});
|
|
386
255
|
// ── Tier 2: State & Knowledge ────────────────────────────────────
|
|
@@ -388,8 +257,8 @@ export async function startMcpServer() {
|
|
|
388
257
|
'Get aggregated snapshot of ALL 6 app modules in a single call.',
|
|
389
258
|
'Returns: form fields, scale dimensions+ranges, connect page styles, report pages+widgets, expert config, share status.',
|
|
390
259
|
'',
|
|
391
|
-
'Call this BEFORE
|
|
392
|
-
'Call this AFTER
|
|
260
|
+
'Call this BEFORE making changes to understand what already exists.',
|
|
261
|
+
'Call this AFTER formlm_generate to verify the generated app.',
|
|
393
262
|
].join('\n'), {
|
|
394
263
|
appId: z.string().describe('App ID'),
|
|
395
264
|
module: z.string().optional().describe('Get only one module: form / scale / connect / report / expert / share (default: all 6)'),
|
|
@@ -428,7 +297,7 @@ export async function startMcpServer() {
|
|
|
428
297
|
});
|
|
429
298
|
server.tool('formlm_skill', [
|
|
430
299
|
'Get the full SKILL.md domain knowledge for a specific skill module.',
|
|
431
|
-
'Same documents that AssessAgent
|
|
300
|
+
'Same documents that AssessAgent loads internally — contains P0/P1/P2 constraints, parameter rules, examples.',
|
|
432
301
|
'',
|
|
433
302
|
'You can also read these via MCP resources: formlm://skills/<skillId>',
|
|
434
303
|
'READ the relevant skill BEFORE constructing formlm_exec commands manually.',
|
|
@@ -452,11 +321,11 @@ export async function startMcpServer() {
|
|
|
452
321
|
// assess report : query / find / update / page / widget / logic
|
|
453
322
|
// assess expert : query / find / config / set / avatar / remove / chat
|
|
454
323
|
// assess share : set / query / url
|
|
455
|
-
// assess smart :
|
|
324
|
+
// assess smart : generate
|
|
456
325
|
// assess skill : form / scale / connect / report / expert / share
|
|
457
326
|
server.tool('formlm_exec', [
|
|
458
327
|
'Execute a raw FormLM CLI command directly.',
|
|
459
|
-
'Use this for fine-grained control that
|
|
328
|
+
'Use this for fine-grained control that formlm_generate doesn\'t cover, or for modifying existing apps.',
|
|
460
329
|
'',
|
|
461
330
|
'IMPORTANT: All commands must start with "assess". Read formlm_skill first to ensure P0 compliance.',
|
|
462
331
|
'',
|
|
@@ -500,6 +369,6 @@ export async function startMcpServer() {
|
|
|
500
369
|
// ── Start Server ──────────────────────────────────────────────────
|
|
501
370
|
const transport = new StdioServerTransport();
|
|
502
371
|
await server.connect(transport);
|
|
503
|
-
console.error('FormLM MCP Server v0.2.0 running on stdio (
|
|
372
|
+
console.error('FormLM MCP Server v0.2.0 running on stdio (6 tools + 6 resources)');
|
|
504
373
|
}
|
|
505
374
|
//# 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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvE,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,mFAAmF;AACnF,SAAS,SAAS,CAAC,CAAS;IAC1B,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,+EAA+E;AAC/E,SAAS,MAAM,CAAC,CAA+C;IAC7D,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAC7E,CAAC;AAED,kFAAkF;AAClF,8EAA8E;AAC9E,mFAAmF;AACnF,8EAA8E;AAC9E,wEAAwE;AACxE,SAAS,oBAAoB,CAAC,CAA+C;IAC3E,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACzD,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;YACtF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,IAAI,MAAM,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5E,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1E,IAAI,MAAM,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,IAAI,MAAM,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;gBACzE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;gBAC5E,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,gBAAgB,MAAM,SAAS,CAAC,CAAC;oBAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;wBAChC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;wBACzE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;4BAC3B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;wBAC7F,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;YACjG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,yCAAyC;AACzC,qDAAqD;AACrD,MAAM,eAAe,GAAI,MAAM,CAAC,CAAG,kCAAkC;AACrE,MAAM,aAAa,GAAM,OAAO,CAAC,CAAE,0DAA0D;AAC7F,MAAM,aAAa,GAAM,OAAO,CAAC,CAAE,iFAAiF;AAEpH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,mEAAmE;IACnE,mDAAmD;IACnD,mEAAmE;IACnE,mEAAmE;IACnE,+CAA+C;IAC/C,oEAAoE;IACpE,mEAAmE;IAEnE,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;IACpF,MAAM,iBAAiB,GAA2B;QAChD,IAAI,EAAK,2JAA2J;QACpK,KAAK,EAAI,kJAAkJ;QAC3J,OAAO,EAAE,6LAA6L;QACtM,MAAM,EAAG,wJAAwJ;QACjK,MAAM,EAAG,iKAAiK;QAC1K,KAAK,EAAI,qKAAqK;KAC/K,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,CACb,OAAO,EACP,mBAAmB,OAAO,EAAE,EAC5B;YACE,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACvC,QAAQ,EAAE,eAAe;SAC1B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,gBAAgB,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACnF,OAAO;gBACL,QAAQ,EAAE,CAAC;wBACT,GAAG,EAAE,GAAG,CAAC,IAAI;wBACb,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,OAAO,EAAE;wBAChF,QAAQ,EAAE,eAAe;qBAC1B,CAAC;aACH,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,4DAA4D;IAC5D,EAAE;IACF,yBAAyB;IACzB,kCAAkC;IAClC,oEAAoE;IACpE,yEAAyE;IACzE,8CAA8C;IAC9C,qEAAqE;IACrE,mEAAmE;IAEnE,iEAAiE;IAEjE,MAAM,CAAC,IAAI,CAAC,YAAY,EACtB;QACE,mDAAmD;QACnD,EAAE;QACF,6FAA6F;QAC7F,gHAAgH;QAChH,6FAA6F;KAC9F,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;QAChH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACnF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACvF,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACtF,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC/F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,6BAA6B,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;YACjG,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2CAA2C,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QACrH,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,MAAM,CAAC,IAAY,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/F,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC/E,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mBAAmB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QAC7F,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAC,EAAE,CAAC;IACnH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,4BAA4B,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kDAAkD,EAAE,CAAC,EAAE,CAAC;QAC5G,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAC/F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,wBAAwB,OAAO,CAAC,GAAG,WAAW,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;QAClH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,EAAE;IACF,4DAA4D;IAC5D,mDAAmD;IACnD,kGAAkG;IAClG,yDAAyD;IACzD,8CAA8C;IAC9C,gFAAgF;IAEhF,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAC3B;QACE,0EAA0E;QAC1E,0GAA0G;QAC1G,kIAAkI;QAClI,EAAE;QACF,4FAA4F;QAC5F,kFAAkF;QAClF,sEAAsE;QACtE,uDAAuD;QACvD,wDAAwD;QACxD,4DAA4D;QAC5D,iDAAiD;QACjD,EAAE;QACF,sDAAsD;QACtD,kEAAkE;QAClE,gFAAgF;QAChF,EAAE;QACF,mBAAmB;QACnB,mFAAmF;QACnF,kEAAkE;QAClE,+EAA+E;QAC/E,mFAAmF;QACnF,8FAA8F;QAC9F,+DAA+D;QAC/D,qGAAqG;QACrG,EAAE;QACF,gBAAgB;QAChB,yFAAyF;QACzF,0GAA0G;QAC1G,wDAAwD;QACxD,EAAE;QACF,yBAAyB;QACzB,4GAA4G;QAC5G,+GAA+G;QAC/G,4CAA4C;QAC5C,EAAE;QACF,iEAAiE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACxB,mJAAmJ;YACnJ,kMAAkM;YAClM,wFAAwF,CACzF;QACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,yCAAyC;YACzC,sFAAsF;YACtF,8EAA8E;YAC9E,gDAAgD;YAChD,2DAA2D;YAC3D,kDAAkD;YAClD,6DAA6D;YAC7D,8DAA8D,CAC/D;QACD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnC,uFAAuF;YACvF,yDAAyD;YACzD,2CAA2C;YAC3C,+CAA+C;YAC/C,sEAAsE,CACvE;QACD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3C,mEAAmE;YACnE,0CAA0C;YAC1C,qFAAqF,CACtF;KACF,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,IAAI,GAAG,GAAG,kCAAkC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACvE,IAAI,MAAM,CAAC,QAAQ;YAAE,GAAG,IAAI,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC9D,IAAI,MAAM,CAAC,KAAK;YAAK,GAAG,IAAI,aAAa,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACpE,IAAI,MAAM,CAAC,aAAa;YAAE,GAAG,IAAI,qBAAqB,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7E,GAAG,IAAI,SAAS,CAAC;QACjB,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,oEAAoE;IAEpE,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAC3B;QACE,gEAAgE;QAChE,wHAAwH;QACxH,EAAE;QACF,oEAAoE;QACpE,8DAA8D;KAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wFAAwF,CAAC;KACjI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5G,MAAM,QAAQ,GAA2B;YACvC,IAAI,EAAK,2BAA2B,MAAM,CAAC,KAAK,SAAS;YACzD,KAAK,EAAI,4BAA4B,MAAM,CAAC,KAAK,SAAS;YAC1D,OAAO,EAAE,8BAA8B,MAAM,CAAC,KAAK,SAAS;YAC5D,MAAM,EAAG,6BAA6B,MAAM,CAAC,KAAK,SAAS;YAC3D,MAAM,EAAG,6BAA6B,MAAM,CAAC,KAAK,SAAS;YAC3D,KAAK,EAAI,4BAA4B,MAAM,CAAC,KAAK,SAAS;SAC3D,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,CACtG,CAAC;QAEF,MAAM,QAAQ,GAA4B,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAClE,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,iDAAiD;gBACjD,IAAI,CAAC;oBAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;gBACnD,MAAM,CAAC;oBAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC;gBAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;QAEpD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,cAAc,EACxB;QACE,qEAAqE;QACrE,8GAA8G;QAC9G,EAAE;QACF,sEAAsE;QACtE,4EAA4E;KAC7E,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;KAC3F,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1G,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC1F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,oEAAoE;IACpE,EAAE;IACF,6DAA6D;IAC7D,0DAA0D;IAC1D,gGAAgG;IAChG,8FAA8F;IAC9F,gGAAgG;IAChG,kEAAkE;IAClE,yEAAyE;IACzE,sCAAsC;IACtC,6BAA6B;IAC7B,qEAAqE;IAErE,MAAM,CAAC,IAAI,CAAC,aAAa,EACvB;QACE,4CAA4C;QAC5C,wGAAwG;QACxG,EAAE;QACF,oGAAoG;QACpG,EAAE;QACF,kDAAkD;QAClD,uFAAuF;QACvF,0FAA0F;QAC1F,wFAAwF;QACxF,2FAA2F;QAC3F,sFAAsF;QACtF,EAAE;QACF,uCAAuC;QACvC,0DAA0D;QAC1D,oFAAoF;QACpF,iFAAiF;QACjF,yFAAyF;QACzF,8DAA8D;QAC9D,mEAAmE;QACnE,uCAAuC;QACvC,EAAE;QACF,kBAAkB;QAClB,wHAAwH;QACxH,8HAA8H;QAC9H,0GAA0G;QAC1G,wGAAwG;QACxG,8EAA8E;QAC9E,6GAA6G;QAC7G,yFAAyF;QACzF,iCAAiC;QACjC,6HAA6H;QAC7H,iJAAiJ;KAClJ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC1B,mFAAmF;YACnF,sEAAsE,CACvE;KACF,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,yEAAyE;QACzE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC;QAC7D,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,qEAAqE;IAErE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;AACrF,CAAC"}
|