@formlm/cli 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +231 -77
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +7 -4
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/connect.d.ts +3 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +555 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/expert.d.ts +3 -0
- package/dist/commands/expert.d.ts.map +1 -0
- package/dist/commands/expert.js +123 -0
- package/dist/commands/expert.js.map +1 -0
- package/dist/commands/field.d.ts.map +1 -1
- package/dist/commands/field.js +38 -21
- package/dist/commands/field.js.map +1 -1
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +4 -3
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/report.d.ts +3 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +507 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/scale.d.ts +3 -0
- package/dist/commands/scale.d.ts.map +1 -0
- package/dist/commands/scale.js +289 -0
- package/dist/commands/scale.js.map +1 -0
- package/dist/commands/share.js +2 -2
- package/dist/commands/share.js.map +1 -1
- package/dist/commands/skill.d.ts +15 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +31 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/smart.d.ts +16 -0
- package/dist/commands/smart.d.ts.map +1 -0
- package/dist/commands/smart.js +81 -0
- package/dist/commands/smart.js.map +1 -0
- package/dist/commands/snapshot.d.ts +13 -0
- package/dist/commands/snapshot.d.ts.map +1 -0
- package/dist/commands/snapshot.js +61 -0
- package/dist/commands/snapshot.js.map +1 -0
- package/dist/exec.d.ts +8 -2
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +28 -2
- package/dist/exec.js.map +1 -1
- package/dist/index.js +23 -8
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +444 -269
- package/dist/mcp.js.map +1 -1
- package/package.json +13 -5
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { execCommand } from '../exec.js';
|
|
2
|
+
import { output } from '../output.js';
|
|
3
|
+
export function registerExpertCommand(parent) {
|
|
4
|
+
const expert = parent.command('expert').description('AI expert agent configuration (chatbot on final page)');
|
|
5
|
+
// ========== Query & Find ==========
|
|
6
|
+
expert
|
|
7
|
+
.command('query')
|
|
8
|
+
.description('Query expert agent config (use --md for token-efficient markdown)')
|
|
9
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
10
|
+
.option('--md', 'Markdown table output (for AI)')
|
|
11
|
+
.option('--human', 'Humanized display')
|
|
12
|
+
.option('--filter <keyword>', 'Keyword filter (matches name/role/style/description)')
|
|
13
|
+
.action(async (opts) => {
|
|
14
|
+
let cmd = `assess expert query --app ${opts.app}`;
|
|
15
|
+
if (opts.md)
|
|
16
|
+
cmd += ' --md';
|
|
17
|
+
if (opts.human)
|
|
18
|
+
cmd += ' --human';
|
|
19
|
+
if (opts.filter)
|
|
20
|
+
cmd += ` --filter "${opts.filter}"`;
|
|
21
|
+
if (!opts.md && !opts.human)
|
|
22
|
+
cmd += ' --json';
|
|
23
|
+
output(await execCommand(cmd));
|
|
24
|
+
});
|
|
25
|
+
expert
|
|
26
|
+
.command('find')
|
|
27
|
+
.description('Get expert agent full config (including prompt/welcome/questions full text)')
|
|
28
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
29
|
+
.action(async (opts) => {
|
|
30
|
+
const cmd = `assess expert find --app ${opts.app} --json`;
|
|
31
|
+
output(await execCommand(cmd));
|
|
32
|
+
});
|
|
33
|
+
// ========== Config (Full Setup) ==========
|
|
34
|
+
expert
|
|
35
|
+
.command('config')
|
|
36
|
+
.description('Configure expert agent (full setup). Use this for initial configuration or bulk updates. For single-property changes, use "expert set"')
|
|
37
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
38
|
+
.option('--name <name>', 'Agent display name')
|
|
39
|
+
.option('--role <role>', 'Agent role (e.g. "心理健康顾问" or "Career Coach")')
|
|
40
|
+
.option('--description <desc>', 'Agent description')
|
|
41
|
+
.option('--style <style>', 'Communication style (e.g. "warm and professional" or "亲切专业")')
|
|
42
|
+
.option('--prompt <prompt>', 'Custom system prompt (role + knowledge boundary + communication style + behavior rules)')
|
|
43
|
+
.option('--welcome <text>', 'Welcome message shown when chat opens')
|
|
44
|
+
.option('--question1 <text>', 'Quick-start question 1')
|
|
45
|
+
.option('--question2 <text>', 'Quick-start question 2')
|
|
46
|
+
.option('--question3 <text>', 'Quick-start question 3')
|
|
47
|
+
.option('--theme <theme>', 'UI theme: Minimal/Fresh/Vibrant/Retro/Earthy/Soft/Clean/Noir/Warm/Classic/Airy/Mystic')
|
|
48
|
+
.option('--enable [value]', 'Enable agent (true/false, default: true)')
|
|
49
|
+
.requiredOption('--kbText <text>', 'Knowledge base text (required, max 500 chars, domain knowledge for this expert)')
|
|
50
|
+
.action(async (opts) => {
|
|
51
|
+
let cmd = `assess expert config --app ${opts.app}`;
|
|
52
|
+
if (opts.name)
|
|
53
|
+
cmd += ` --name "${opts.name}"`;
|
|
54
|
+
if (opts.role)
|
|
55
|
+
cmd += ` --role "${opts.role}"`;
|
|
56
|
+
if (opts.description)
|
|
57
|
+
cmd += ` --description "${opts.description}"`;
|
|
58
|
+
if (opts.style)
|
|
59
|
+
cmd += ` --style "${opts.style}"`;
|
|
60
|
+
if (opts.prompt)
|
|
61
|
+
cmd += ` --prompt "${opts.prompt}"`;
|
|
62
|
+
if (opts.welcome)
|
|
63
|
+
cmd += ` --welcome "${opts.welcome}"`;
|
|
64
|
+
if (opts.question1)
|
|
65
|
+
cmd += ` --question1 "${opts.question1}"`;
|
|
66
|
+
if (opts.question2)
|
|
67
|
+
cmd += ` --question2 "${opts.question2}"`;
|
|
68
|
+
if (opts.question3)
|
|
69
|
+
cmd += ` --question3 "${opts.question3}"`;
|
|
70
|
+
if (opts.theme)
|
|
71
|
+
cmd += ` --theme ${opts.theme}`;
|
|
72
|
+
if (opts.enable !== undefined)
|
|
73
|
+
cmd += ` --enable=${opts.enable === true || opts.enable === 'true'}`;
|
|
74
|
+
cmd += ` --kbText "${opts.kbText}"`;
|
|
75
|
+
cmd += ' --json';
|
|
76
|
+
output(await execCommand(cmd));
|
|
77
|
+
});
|
|
78
|
+
// ========== Set (Single Property) ==========
|
|
79
|
+
expert
|
|
80
|
+
.command('set')
|
|
81
|
+
.description('Set a single property on the expert agent (use "expert find" to see all available fields)')
|
|
82
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
83
|
+
.requiredOption('--property <property>', 'Property path: name/role/description/style/welcome/prompt/question1/question2/question3/kbText/theme/enable')
|
|
84
|
+
.requiredOption('--value <value>', 'New value')
|
|
85
|
+
.action(async (opts) => {
|
|
86
|
+
const cmd = `assess expert set --app ${opts.app} --property ${opts.property} --value "${opts.value}" --json`;
|
|
87
|
+
output(await execCommand(cmd));
|
|
88
|
+
});
|
|
89
|
+
// ========== Avatar ==========
|
|
90
|
+
expert
|
|
91
|
+
.command('avatar')
|
|
92
|
+
.description('Set expert agent avatar image')
|
|
93
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
94
|
+
.requiredOption('--url <url>', 'Avatar image URL')
|
|
95
|
+
.option('--enable [value]', 'Enable avatar display (true/false, default: false)')
|
|
96
|
+
.action(async (opts) => {
|
|
97
|
+
let cmd = `assess expert avatar --app ${opts.app} --url ${opts.url}`;
|
|
98
|
+
const e = opts.enable === true || opts.enable === 'true';
|
|
99
|
+
cmd += ` --enable=${e}`;
|
|
100
|
+
cmd += ' --json';
|
|
101
|
+
output(await execCommand(cmd));
|
|
102
|
+
});
|
|
103
|
+
// ========== Remove ==========
|
|
104
|
+
expert
|
|
105
|
+
.command('remove')
|
|
106
|
+
.description('Remove/reset expert agent configuration (can be reconfigured with "expert config")')
|
|
107
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
108
|
+
.action(async (opts) => {
|
|
109
|
+
const cmd = `assess expert remove --app ${opts.app} --json`;
|
|
110
|
+
output(await execCommand(cmd));
|
|
111
|
+
});
|
|
112
|
+
// ========== Chat (Test) ==========
|
|
113
|
+
expert
|
|
114
|
+
.command('chat')
|
|
115
|
+
.description('Send a test message to the expert agent and get a response')
|
|
116
|
+
.requiredOption('--app <appId>', 'App ID')
|
|
117
|
+
.requiredOption('--input <text>', 'Message to send')
|
|
118
|
+
.action(async (opts) => {
|
|
119
|
+
const cmd = `assess expert chat --app ${opts.app} --input "${opts.input}"`;
|
|
120
|
+
output(await execCommand(cmd));
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=expert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expert.js","sourceRoot":"","sources":["../../src/commands/expert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/commands/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/commands/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6M1D"}
|
package/dist/commands/field.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { execCommand } from '../exec.js';
|
|
2
2
|
import { output } from '../output.js';
|
|
3
|
+
// 将 commander 可选值布尔选项规范化为 true/false/undefined:
|
|
4
|
+
// --flag → opts.flag === true
|
|
5
|
+
// --flag=false → opts.flag === 'false'(字符串)
|
|
6
|
+
// 未传入 → opts.flag === undefined
|
|
7
|
+
function normBool(v) {
|
|
8
|
+
if (v === undefined)
|
|
9
|
+
return undefined;
|
|
10
|
+
if (typeof v === 'boolean')
|
|
11
|
+
return v;
|
|
12
|
+
return v === 'true' || v === '1';
|
|
13
|
+
}
|
|
3
14
|
export function registerFieldCommand(parent) {
|
|
4
|
-
const field = parent.command('field').description('
|
|
15
|
+
const field = parent.command('field').description('Form field management — P0: --id uses snake_case (e.g. q1_anxiety), --key uses X-prefix fieldKey (e.g. X1). NEVER mix --id and --key. Run "formlm-cli skill form" for full constraints');
|
|
5
16
|
field
|
|
6
17
|
.command('schema')
|
|
7
18
|
.description('List all supported field types')
|
|
@@ -46,14 +57,14 @@ export function registerFieldCommand(parent) {
|
|
|
46
57
|
});
|
|
47
58
|
field
|
|
48
59
|
.command('add')
|
|
49
|
-
.description('Add a new field')
|
|
60
|
+
.description('Add a new field. P0: --id must be semantic snake_case (e.g. q1_age, phq9_1). For scored fields (radio/select/checkbox), use --options with label:score format (e.g. "Never:0,Sometimes:1,Often:2")')
|
|
50
61
|
.requiredOption('--app <appId>', 'App ID')
|
|
51
62
|
.requiredOption('--id <id>', 'Field ID')
|
|
52
63
|
.option('--type <type>', 'Field type', 'input')
|
|
53
64
|
.option('--title <title>', 'Field title / question text')
|
|
54
65
|
.option('--name <name>', 'Field name')
|
|
55
66
|
.option('--options <options>', 'Options list, comma-separated, supports label:score')
|
|
56
|
-
.option('--required', 'Mark as required')
|
|
67
|
+
.option('--required [value]', 'Mark as required (true/false, default: true when flag present)')
|
|
57
68
|
.option('--score <score>', 'Question score')
|
|
58
69
|
.option('--min <min>', 'Min value')
|
|
59
70
|
.option('--max <max>', 'Max value')
|
|
@@ -63,8 +74,8 @@ export function registerFieldCommand(parent) {
|
|
|
63
74
|
.option('--answer <answer>', 'Correct answer')
|
|
64
75
|
.option('--explanation <explanation>', 'Answer explanation')
|
|
65
76
|
.option('--format <format>', 'Field format')
|
|
66
|
-
.option('--unique', 'Unique value validation')
|
|
67
|
-
.option('--shareable', 'Visible on share page')
|
|
77
|
+
.option('--unique [value]', 'Unique value validation (true/false)')
|
|
78
|
+
.option('--shareable [value]', 'Visible on share page (true/false)')
|
|
68
79
|
.action(async (opts) => {
|
|
69
80
|
let cmd = `assess form add --app ${opts.app} --id ${opts.id} --type ${opts.type}`;
|
|
70
81
|
if (opts.title)
|
|
@@ -73,8 +84,9 @@ export function registerFieldCommand(parent) {
|
|
|
73
84
|
cmd += ` --name "${opts.name}"`;
|
|
74
85
|
if (opts.options)
|
|
75
86
|
cmd += ` --options "${opts.options}"`;
|
|
76
|
-
|
|
77
|
-
|
|
87
|
+
const required = normBool(opts.required);
|
|
88
|
+
if (required !== undefined)
|
|
89
|
+
cmd += ` --required=${required}`;
|
|
78
90
|
if (opts.score !== undefined)
|
|
79
91
|
cmd += ` --score ${opts.score}`;
|
|
80
92
|
if (opts.min !== undefined)
|
|
@@ -93,17 +105,19 @@ export function registerFieldCommand(parent) {
|
|
|
93
105
|
cmd += ` --explanation "${opts.explanation}"`;
|
|
94
106
|
if (opts.format)
|
|
95
107
|
cmd += ` --format ${opts.format}`;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
108
|
+
const unique = normBool(opts.unique);
|
|
109
|
+
if (unique !== undefined)
|
|
110
|
+
cmd += ` --unique=${unique}`;
|
|
111
|
+
const shareable = normBool(opts.shareable);
|
|
112
|
+
if (shareable !== undefined)
|
|
113
|
+
cmd += ` --shareable=${shareable}`;
|
|
100
114
|
cmd += ' --json';
|
|
101
115
|
const result = await execCommand(cmd);
|
|
102
116
|
output(result);
|
|
103
117
|
});
|
|
104
118
|
field
|
|
105
119
|
.command('update')
|
|
106
|
-
.description('Update a field')
|
|
120
|
+
.description('Update a field. Use --id or --key to identify (never both). P0: --options replaces all existing options (use comma-separated label:score format)')
|
|
107
121
|
.requiredOption('--app <appId>', 'App ID')
|
|
108
122
|
.option('--id <fieldId>', 'Field ID')
|
|
109
123
|
.option('--key <fieldKey>', 'Field Key')
|
|
@@ -111,7 +125,7 @@ export function registerFieldCommand(parent) {
|
|
|
111
125
|
.option('--title <title>', 'Field title / question text')
|
|
112
126
|
.option('--name <name>', 'Field name')
|
|
113
127
|
.option('--options <options>', 'Options list — replaces existing options')
|
|
114
|
-
.option('--required', 'Mark as required')
|
|
128
|
+
.option('--required [value]', 'Mark as required (true/false)')
|
|
115
129
|
.option('--score <score>', 'Question score')
|
|
116
130
|
.option('--min <min>', 'Min value')
|
|
117
131
|
.option('--max <max>', 'Max value')
|
|
@@ -121,8 +135,8 @@ export function registerFieldCommand(parent) {
|
|
|
121
135
|
.option('--answer <answer>', 'Correct answer')
|
|
122
136
|
.option('--explanation <explanation>', 'Answer explanation')
|
|
123
137
|
.option('--format <format>', 'Field format')
|
|
124
|
-
.option('--unique', 'Unique value validation')
|
|
125
|
-
.option('--shareable', 'Visible on share page')
|
|
138
|
+
.option('--unique [value]', 'Unique value validation (true/false)')
|
|
139
|
+
.option('--shareable [value]', 'Visible on share page (true/false)')
|
|
126
140
|
.action(async (opts) => {
|
|
127
141
|
if (!opts.id && !opts.key) {
|
|
128
142
|
console.error('❌ Either --id or --key is required');
|
|
@@ -141,8 +155,9 @@ export function registerFieldCommand(parent) {
|
|
|
141
155
|
cmd += ` --name "${opts.name}"`;
|
|
142
156
|
if (opts.options)
|
|
143
157
|
cmd += ` --options "${opts.options}"`;
|
|
144
|
-
|
|
145
|
-
|
|
158
|
+
const required = normBool(opts.required);
|
|
159
|
+
if (required !== undefined)
|
|
160
|
+
cmd += ` --required=${required}`;
|
|
146
161
|
if (opts.score !== undefined)
|
|
147
162
|
cmd += ` --score ${opts.score}`;
|
|
148
163
|
if (opts.min !== undefined)
|
|
@@ -161,10 +176,12 @@ export function registerFieldCommand(parent) {
|
|
|
161
176
|
cmd += ` --explanation "${opts.explanation}"`;
|
|
162
177
|
if (opts.format)
|
|
163
178
|
cmd += ` --format ${opts.format}`;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
179
|
+
const unique = normBool(opts.unique);
|
|
180
|
+
if (unique !== undefined)
|
|
181
|
+
cmd += ` --unique=${unique}`;
|
|
182
|
+
const shareable = normBool(opts.shareable);
|
|
183
|
+
if (shareable !== undefined)
|
|
184
|
+
cmd += ` --shareable=${shareable}`;
|
|
168
185
|
cmd += ' --json';
|
|
169
186
|
const result = await execCommand(cmd);
|
|
170
187
|
output(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/commands/field.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,
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/commands/field.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,gDAAgD;AAChD,qCAAqC;AACrC,6CAA6C;AAC7C,oCAAoC;AACpC,SAAS,QAAQ,CAAC,CAAU;IAC1B,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;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,wLAAwL,CAAC,CAAC;IAE5O,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,6BAA6B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,kCAAkC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qCAAqC,CAAC;SAClD,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACvC,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,GAAG,GAAG,0BAA0B,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,EAAE;YAAE,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,IAAI,cAAc,IAAI,CAAC,MAAM,GAAG,CAAC;QACrD,GAAG,IAAI,SAAS,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oMAAoM,CAAC;SACjN,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC;SACvC,MAAM,CAAC,eAAe,EAAE,YAAY,EAAE,OAAO,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC;SACrC,MAAM,CAAC,qBAAqB,EAAE,qDAAqD,CAAC;SACpF,MAAM,CAAC,oBAAoB,EAAE,gEAAgE,CAAC;SAC9F,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;SAClC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;SAClC,MAAM,CAAC,6BAA6B,EAAE,kBAAkB,CAAC;SACzD,MAAM,CAAC,yBAAyB,EAAE,YAAY,CAAC;SAC/C,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;SAC7C,MAAM,CAAC,6BAA6B,EAAE,oBAAoB,CAAC;SAC3D,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;SAC3C,MAAM,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,GAAG,GAAG,yBAAyB,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;QAClF,IAAI,IAAI,CAAC,KAAK;YAAE,GAAG,IAAI,aAAa,IAAI,CAAC,KAAK,GAAG,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI;YAAE,GAAG,IAAI,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,IAAI,eAAe,IAAI,CAAC,OAAO,GAAG,CAAC;QACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS;YAAE,GAAG,IAAI,eAAe,QAAQ,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,GAAG,IAAI,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,WAAW;YAAE,GAAG,IAAI,mBAAmB,IAAI,CAAC,WAAW,GAAG,CAAC;QACpE,IAAI,IAAI,CAAC,SAAS;YAAE,GAAG,IAAI,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5D,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,IAAI,eAAe,IAAI,CAAC,OAAO,GAAG,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,IAAI,cAAc,IAAI,CAAC,MAAM,GAAG,CAAC;QACrD,IAAI,IAAI,CAAC,WAAW;YAAE,GAAG,IAAI,mBAAmB,IAAI,CAAC,WAAW,GAAG,CAAC;QACpE,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,IAAI,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,GAAG,IAAI,aAAa,MAAM,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,SAAS;YAAE,GAAG,IAAI,gBAAgB,SAAS,EAAE,CAAC;QAChE,GAAG,IAAI,SAAS,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kJAAkJ,CAAC;SAC/J,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACvC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC;SACrC,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC;SACrC,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;SACzE,MAAM,CAAC,oBAAoB,EAAE,+BAA+B,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC3C,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;SAClC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;SAClC,MAAM,CAAC,6BAA6B,EAAE,kBAAkB,CAAC;SACzD,MAAM,CAAC,yBAAyB,EAAE,YAAY,CAAC;SAC/C,MAAM,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;SAC7C,MAAM,CAAC,6BAA6B,EAAE,oBAAoB,CAAC;SAC3D,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;SAC3C,MAAM,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;SAClE,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,GAAG,4BAA4B,IAAI,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,EAAE;YAAE,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI;YAAE,GAAG,IAAI,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,KAAK;YAAE,GAAG,IAAI,aAAa,IAAI,CAAC,KAAK,GAAG,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI;YAAE,GAAG,IAAI,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,IAAI,eAAe,IAAI,CAAC,OAAO,GAAG,CAAC;QACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS;YAAE,GAAG,IAAI,eAAe,QAAQ,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,GAAG,IAAI,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,WAAW;YAAE,GAAG,IAAI,mBAAmB,IAAI,CAAC,WAAW,GAAG,CAAC;QACpE,IAAI,IAAI,CAAC,SAAS;YAAE,GAAG,IAAI,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5D,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,IAAI,eAAe,IAAI,CAAC,OAAO,GAAG,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,IAAI,cAAc,IAAI,CAAC,MAAM,GAAG,CAAC;QACrD,IAAI,IAAI,CAAC,WAAW;YAAE,GAAG,IAAI,mBAAmB,IAAI,CAAC,WAAW,GAAG,CAAC;QACpE,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,IAAI,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS;YAAE,GAAG,IAAI,aAAa,MAAM,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,SAAS;YAAE,GAAG,IAAI,gBAAgB,SAAS,EAAE,CAAC;QAChE,GAAG,IAAI,SAAS,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gBAAgB,CAAC;SAC7B,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,GAAG,4BAA4B,IAAI,CAAC,GAAG,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,EAAE;YAAE,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,GAAG,IAAI,SAAS,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,oCAAoC,CAAC;SACjD,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACvC,cAAc,CAAC,uBAAuB,EAAE,sCAAsC,CAAC;SAC/E,cAAc,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,GAAG,kCAAkC,IAAI,CAAC,GAAG,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,EAAE;YAAE,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,GAAG,IAAI,eAAe,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,KAAK,GAAG,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qCAAqC,CAAC;SAClD,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC;SACzC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACvC,cAAc,CAAC,aAAa,EAAE,2BAA2B,EAAE,QAAQ,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,GAAG,GAAG,0BAA0B,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,EAAE;YAAE,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,GAAG,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0D5D"}
|
package/dist/commands/profile.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import { loadConfig, addProfile, setActiveProfile, removeProfile } from '../config.js';
|
|
1
|
+
import { loadConfig, addProfile, setActiveProfile, removeProfile, getBaseUrl } from '../config.js';
|
|
2
2
|
export function registerProfileCommand(parent) {
|
|
3
3
|
const profile = parent.command('profile').description('Multi-account profile management');
|
|
4
4
|
profile
|
|
5
5
|
.command('add')
|
|
6
6
|
.description('Add a profile')
|
|
7
7
|
.option('--name <name>', 'Profile name', 'default')
|
|
8
|
-
.option('--url <url>', 'Server URL
|
|
8
|
+
.option('--url <url>', 'Server URL (defaults to FORMLM_BASE_URL env var or https://formlm.me)')
|
|
9
9
|
.option('--token <token>', 'Auth token')
|
|
10
10
|
.action((opts) => {
|
|
11
11
|
if (!opts.token) {
|
|
12
12
|
console.log('❌ --token is required. Get your token from FormLM website or run: formlm-cli auth login');
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
const url = opts.url || getBaseUrl();
|
|
16
|
+
addProfile({ name: opts.name, url, token: opts.token });
|
|
16
17
|
console.log(`✅ Profile "${opts.name}" added.`);
|
|
17
18
|
});
|
|
18
19
|
profile
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAoB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA6Z3D"}
|