framlit-mcp 0.1.0 → 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 +100 -42
- package/dist/api/client.d.ts +10 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +13 -4
- package/dist/api/client.js.map +1 -1
- package/dist/cli/index.d.ts +26 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +439 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +15 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +41 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/core/handlers.d.ts +49 -0
- package/dist/core/handlers.d.ts.map +1 -0
- package/dist/core/handlers.js +148 -0
- package/dist/core/handlers.js.map +1 -0
- package/dist/core/registry.d.ts +25 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +221 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/schemas.d.ts +94 -0
- package/dist/core/schemas.d.ts.map +1 -0
- package/dist/core/schemas.js +69 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -178
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +143 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/tools/credits.js +2 -2
- package/dist/tools/generate.d.ts.map +1 -1
- package/dist/tools/generate.js +10 -2
- package/dist/tools/generate.js.map +1 -1
- package/dist/tools/preview.d.ts +15 -0
- package/dist/tools/preview.d.ts.map +1 -0
- package/dist/tools/preview.js +40 -0
- package/dist/tools/preview.js.map +1 -0
- package/dist/tools/projects.js +2 -2
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/templates.js +1 -1
- package/package.json +10 -6
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Framlit CLI
|
|
5
|
+
*
|
|
6
|
+
* Human-friendly and agent-friendly CLI for Framlit.
|
|
7
|
+
* Shares core logic with the MCP server.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* framlit generate <prompt> [--format landscape|portrait|square] [--output json|text] [--dry-run]
|
|
11
|
+
* framlit modify --code <code|file> --instruction <text> [--output json|text] [--dry-run]
|
|
12
|
+
* framlit projects list [--output json|text]
|
|
13
|
+
* framlit projects get <id>
|
|
14
|
+
* framlit projects create <name> --code <code|file> [--format landscape|portrait|square] [--dry-run]
|
|
15
|
+
* framlit projects update <id> [--name <name>] [--code <code|file>] [--dry-run]
|
|
16
|
+
* framlit render <projectId> [--dry-run]
|
|
17
|
+
* framlit render status <renderId> [--poll] [--output json|text]
|
|
18
|
+
* framlit templates [--category <cat>] [--official]
|
|
19
|
+
* framlit preview <code|file>
|
|
20
|
+
* framlit credits [--output json|text]
|
|
21
|
+
* framlit schema [tool-name]
|
|
22
|
+
* framlit mcp
|
|
23
|
+
* framlit version
|
|
24
|
+
* framlit help
|
|
25
|
+
*/
|
|
26
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
27
|
+
if (k2 === undefined) k2 = k;
|
|
28
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
29
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
30
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
31
|
+
}
|
|
32
|
+
Object.defineProperty(o, k2, desc);
|
|
33
|
+
}) : (function(o, m, k, k2) {
|
|
34
|
+
if (k2 === undefined) k2 = k;
|
|
35
|
+
o[k2] = m[k];
|
|
36
|
+
}));
|
|
37
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
38
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
39
|
+
}) : function(o, v) {
|
|
40
|
+
o["default"] = v;
|
|
41
|
+
});
|
|
42
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
43
|
+
var ownKeys = function(o) {
|
|
44
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
45
|
+
var ar = [];
|
|
46
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
47
|
+
return ar;
|
|
48
|
+
};
|
|
49
|
+
return ownKeys(o);
|
|
50
|
+
};
|
|
51
|
+
return function (mod) {
|
|
52
|
+
if (mod && mod.__esModule) return mod;
|
|
53
|
+
var result = {};
|
|
54
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
55
|
+
__setModuleDefault(result, mod);
|
|
56
|
+
return result;
|
|
57
|
+
};
|
|
58
|
+
})();
|
|
59
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
+
const node_util_1 = require("node:util");
|
|
61
|
+
const node_fs_1 = require("node:fs");
|
|
62
|
+
const client_js_1 = require("../api/client.js");
|
|
63
|
+
const registry_js_1 = require("../core/registry.js");
|
|
64
|
+
const handlers = __importStar(require("../core/handlers.js"));
|
|
65
|
+
const output_js_1 = require("./output.js");
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Helpers
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
const VERSION = '0.2.0';
|
|
70
|
+
function getApiKey() {
|
|
71
|
+
const key = process.env.FRAMLIT_API_KEY;
|
|
72
|
+
if (!key) {
|
|
73
|
+
console.error('Error: FRAMLIT_API_KEY environment variable is required');
|
|
74
|
+
console.error('Get your API key at https://framlit.app/settings/api-keys');
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
return key;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resolve a value that could be either inline text or a file path.
|
|
81
|
+
*/
|
|
82
|
+
function resolveCodeValue(value) {
|
|
83
|
+
if ((0, node_fs_1.existsSync)(value) && !value.includes('\n')) {
|
|
84
|
+
return (0, node_fs_1.readFileSync)(value, 'utf-8');
|
|
85
|
+
}
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
function printHelp() {
|
|
89
|
+
console.log(`Framlit CLI v${VERSION} — AI-powered video generation
|
|
90
|
+
|
|
91
|
+
USAGE
|
|
92
|
+
framlit <command> [options]
|
|
93
|
+
|
|
94
|
+
COMMANDS
|
|
95
|
+
generate <prompt> Generate Remotion video code from text
|
|
96
|
+
modify Modify existing Remotion code
|
|
97
|
+
projects list List your projects
|
|
98
|
+
projects get <id> Get project details
|
|
99
|
+
projects create <name> Create a new project
|
|
100
|
+
projects update <id> Update a project
|
|
101
|
+
render <projectId> Start video rendering
|
|
102
|
+
render status <id> Check render status
|
|
103
|
+
templates Browse video templates
|
|
104
|
+
preview <code|file> Create a preview URL
|
|
105
|
+
credits Check credit balance
|
|
106
|
+
schema [tool-name] Show tool schemas (agent discovery)
|
|
107
|
+
mcp Start MCP server (for IDE integration)
|
|
108
|
+
version Show version
|
|
109
|
+
help Show this help
|
|
110
|
+
|
|
111
|
+
GLOBAL OPTIONS
|
|
112
|
+
--output json|text Output format (auto: JSON when piped)
|
|
113
|
+
--json '{"key":"val"}' Raw JSON input (bypass arg parsing)
|
|
114
|
+
--dry-run Preview request without executing
|
|
115
|
+
|
|
116
|
+
EXAMPLES
|
|
117
|
+
framlit generate "Logo animation with rotating 3D text"
|
|
118
|
+
framlit generate "Product demo" --format portrait --output json
|
|
119
|
+
framlit modify --code ./video.tsx --instruction "Change background to blue"
|
|
120
|
+
framlit render abc123 --dry-run
|
|
121
|
+
framlit render status xyz789 --poll
|
|
122
|
+
framlit schema framlit_generate_code
|
|
123
|
+
echo '{"prompt":"test"}' | framlit generate --json -
|
|
124
|
+
|
|
125
|
+
ENVIRONMENT
|
|
126
|
+
FRAMLIT_API_KEY Your Framlit API key (required)
|
|
127
|
+
FRAMLIT_API_URL Custom API URL (optional, for development)
|
|
128
|
+
|
|
129
|
+
More info: https://framlit.app/developers`);
|
|
130
|
+
}
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// Command implementations
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
async function cmdGenerate(positionals, options) {
|
|
135
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
136
|
+
const jsonInput = options.json;
|
|
137
|
+
let prompt;
|
|
138
|
+
let format;
|
|
139
|
+
if (jsonInput) {
|
|
140
|
+
const input = jsonInput === '-'
|
|
141
|
+
? (0, node_fs_1.readFileSync)(0, 'utf-8')
|
|
142
|
+
: jsonInput;
|
|
143
|
+
const parsed = JSON.parse(input);
|
|
144
|
+
prompt = parsed.prompt;
|
|
145
|
+
format = parsed.format;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
prompt = positionals.join(' ');
|
|
149
|
+
format = options.format;
|
|
150
|
+
}
|
|
151
|
+
if (!prompt) {
|
|
152
|
+
console.error((0, output_js_1.formatError)('prompt is required. Usage: framlit generate <prompt>', outputMode));
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
if (options['dry-run']) {
|
|
156
|
+
const payload = { prompt, format: format ?? 'landscape' };
|
|
157
|
+
console.log((0, output_js_1.formatOutput)(payload, `[dry-run] Would generate code with prompt: "${prompt}"`, outputMode));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const client = new client_js_1.FramlitClient(getApiKey());
|
|
161
|
+
const result = await handlers.handleGenerateCode(client, { prompt, format });
|
|
162
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
163
|
+
}
|
|
164
|
+
async function cmdModify(positionals, options) {
|
|
165
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
166
|
+
const jsonInput = options.json;
|
|
167
|
+
let code;
|
|
168
|
+
let instruction;
|
|
169
|
+
if (jsonInput) {
|
|
170
|
+
const input = jsonInput === '-' ? (0, node_fs_1.readFileSync)(0, 'utf-8') : jsonInput;
|
|
171
|
+
const parsed = JSON.parse(input);
|
|
172
|
+
code = parsed.code;
|
|
173
|
+
instruction = parsed.instruction;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
code = resolveCodeValue(options.code || '');
|
|
177
|
+
instruction = options.instruction || positionals.join(' ');
|
|
178
|
+
}
|
|
179
|
+
if (!code || !instruction) {
|
|
180
|
+
console.error((0, output_js_1.formatError)('--code and --instruction are required', outputMode));
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
if (options['dry-run']) {
|
|
184
|
+
const payload = { code: code.substring(0, 100) + '...', instruction };
|
|
185
|
+
console.log((0, output_js_1.formatOutput)(payload, `[dry-run] Would modify code with instruction: "${instruction}"`, outputMode));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const client = new client_js_1.FramlitClient(getApiKey());
|
|
189
|
+
const result = await handlers.handleModifyCode(client, { code, instruction });
|
|
190
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
191
|
+
}
|
|
192
|
+
async function cmdProjects(positionals, options) {
|
|
193
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
194
|
+
const sub = positionals[0];
|
|
195
|
+
const client = new client_js_1.FramlitClient(getApiKey());
|
|
196
|
+
switch (sub) {
|
|
197
|
+
case 'list':
|
|
198
|
+
case undefined: {
|
|
199
|
+
const result = await handlers.handleListProjects(client);
|
|
200
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
case 'get': {
|
|
204
|
+
const id = positionals[1];
|
|
205
|
+
if (!id) {
|
|
206
|
+
console.error((0, output_js_1.formatError)('Project ID required', outputMode));
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
const result = await handlers.handleGetProject(client, { projectId: id });
|
|
210
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
case 'create': {
|
|
214
|
+
const name = positionals[1];
|
|
215
|
+
if (!name) {
|
|
216
|
+
console.error((0, output_js_1.formatError)('Project name required', outputMode));
|
|
217
|
+
process.exit(1);
|
|
218
|
+
}
|
|
219
|
+
const code = options.code ? resolveCodeValue(options.code) : undefined;
|
|
220
|
+
const format = options.format;
|
|
221
|
+
if (options['dry-run']) {
|
|
222
|
+
console.log((0, output_js_1.formatOutput)({ name, format: format ?? 'landscape', hasCode: !!code }, `[dry-run] Would create project: "${name}"`, outputMode));
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
const result = await handlers.handleCreateProject(client, { name, code, format });
|
|
226
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
case 'update': {
|
|
230
|
+
const id = positionals[1];
|
|
231
|
+
if (!id) {
|
|
232
|
+
console.error((0, output_js_1.formatError)('Project ID required', outputMode));
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
const name = options.name;
|
|
236
|
+
const code = options.code ? resolveCodeValue(options.code) : undefined;
|
|
237
|
+
if (options['dry-run']) {
|
|
238
|
+
console.log((0, output_js_1.formatOutput)({ projectId: id, name, hasCode: !!code }, `[dry-run] Would update project: ${id}`, outputMode));
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const result = await handlers.handleUpdateProject(client, { projectId: id, name, code });
|
|
242
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
default:
|
|
246
|
+
console.error((0, output_js_1.formatError)(`Unknown projects subcommand: ${sub}`, outputMode));
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async function cmdRender(positionals, options) {
|
|
251
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
252
|
+
const client = new client_js_1.FramlitClient(getApiKey());
|
|
253
|
+
// framlit render status <renderId>
|
|
254
|
+
if (positionals[0] === 'status') {
|
|
255
|
+
const renderId = positionals[1];
|
|
256
|
+
if (!renderId) {
|
|
257
|
+
console.error((0, output_js_1.formatError)('Render ID required', outputMode));
|
|
258
|
+
process.exit(1);
|
|
259
|
+
}
|
|
260
|
+
if (options.poll) {
|
|
261
|
+
// Poll mode: stream NDJSON until completion
|
|
262
|
+
let done = false;
|
|
263
|
+
while (!done) {
|
|
264
|
+
const result = await handlers.handleGetRenderStatus(client, { renderId });
|
|
265
|
+
const data = result.data;
|
|
266
|
+
(0, output_js_1.writeNdjsonLine)(result.data);
|
|
267
|
+
if (data.status === 'completed' || data.status === 'failed') {
|
|
268
|
+
done = true;
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
const result = await handlers.handleGetRenderStatus(client, { renderId });
|
|
277
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
278
|
+
}
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
// framlit render <projectId>
|
|
282
|
+
const projectId = positionals[0];
|
|
283
|
+
if (!projectId) {
|
|
284
|
+
console.error((0, output_js_1.formatError)('Project ID required', outputMode));
|
|
285
|
+
process.exit(1);
|
|
286
|
+
}
|
|
287
|
+
if (options['dry-run']) {
|
|
288
|
+
console.log((0, output_js_1.formatOutput)({ projectId }, `[dry-run] Would start render for project: ${projectId}`, outputMode));
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const result = await handlers.handleRenderVideo(client, { projectId });
|
|
292
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
293
|
+
}
|
|
294
|
+
async function cmdTemplates(_positionals, options) {
|
|
295
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
296
|
+
const client = new client_js_1.FramlitClient(getApiKey());
|
|
297
|
+
const category = options.category;
|
|
298
|
+
const official = options.official;
|
|
299
|
+
const result = await handlers.handleListTemplates(client, { category, official });
|
|
300
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
301
|
+
}
|
|
302
|
+
async function cmdPreview(positionals, options) {
|
|
303
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
304
|
+
const codeInput = positionals[0];
|
|
305
|
+
if (!codeInput) {
|
|
306
|
+
console.error((0, output_js_1.formatError)('Code or file path required', outputMode));
|
|
307
|
+
process.exit(1);
|
|
308
|
+
}
|
|
309
|
+
const code = resolveCodeValue(codeInput);
|
|
310
|
+
const client = new client_js_1.FramlitClient(getApiKey());
|
|
311
|
+
const result = await handlers.handlePreviewCode(client, { code });
|
|
312
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
313
|
+
}
|
|
314
|
+
async function cmdCredits(options) {
|
|
315
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
316
|
+
const client = new client_js_1.FramlitClient(getApiKey());
|
|
317
|
+
const result = await handlers.handleGetCredits(client);
|
|
318
|
+
console.log((0, output_js_1.formatOutput)(result.data, result.message, outputMode));
|
|
319
|
+
}
|
|
320
|
+
function cmdSchema(positionals, options) {
|
|
321
|
+
const outputMode = (0, output_js_1.detectOutputMode)(options.output);
|
|
322
|
+
const toolName = positionals[0];
|
|
323
|
+
if (toolName) {
|
|
324
|
+
const entry = (0, registry_js_1.getToolByName)(toolName);
|
|
325
|
+
if (!entry) {
|
|
326
|
+
console.error((0, output_js_1.formatError)(`Unknown tool: ${toolName}. Run "framlit schema" to list all tools.`, outputMode));
|
|
327
|
+
process.exit(1);
|
|
328
|
+
}
|
|
329
|
+
const schema = {
|
|
330
|
+
name: entry.name,
|
|
331
|
+
description: entry.description,
|
|
332
|
+
credits: entry.credits,
|
|
333
|
+
category: entry.category,
|
|
334
|
+
inputSchema: (0, registry_js_1.zodToJsonSchema)(entry.schema),
|
|
335
|
+
};
|
|
336
|
+
console.log(JSON.stringify(schema, null, 2));
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
// List all tools
|
|
340
|
+
const tools = registry_js_1.TOOL_REGISTRY.map((t) => ({
|
|
341
|
+
name: t.name,
|
|
342
|
+
description: t.description.split('\n')[0],
|
|
343
|
+
credits: t.credits,
|
|
344
|
+
category: t.category,
|
|
345
|
+
}));
|
|
346
|
+
if (outputMode === 'json') {
|
|
347
|
+
console.log(JSON.stringify(tools, null, 2));
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
console.log(`Available tools (${tools.length}):\n`);
|
|
351
|
+
for (const t of tools) {
|
|
352
|
+
const creditLabel = t.credits === 0 ? 'free' : `${t.credits} cr`;
|
|
353
|
+
console.log(` ${t.name.padEnd(30)} ${creditLabel.padEnd(8)} ${t.description}`);
|
|
354
|
+
}
|
|
355
|
+
console.log(`\nRun "framlit schema <tool-name>" for detailed schema.`);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// ---------------------------------------------------------------------------
|
|
360
|
+
// Main
|
|
361
|
+
// ---------------------------------------------------------------------------
|
|
362
|
+
async function main() {
|
|
363
|
+
const { values, positionals } = (0, node_util_1.parseArgs)({
|
|
364
|
+
allowPositionals: true,
|
|
365
|
+
strict: false,
|
|
366
|
+
options: {
|
|
367
|
+
// Global
|
|
368
|
+
output: { type: 'string', short: 'o' },
|
|
369
|
+
json: { type: 'string', short: 'j' },
|
|
370
|
+
'dry-run': { type: 'boolean' },
|
|
371
|
+
help: { type: 'boolean', short: 'h' },
|
|
372
|
+
// generate / projects create
|
|
373
|
+
format: { type: 'string', short: 'f' },
|
|
374
|
+
// modify
|
|
375
|
+
code: { type: 'string', short: 'c' },
|
|
376
|
+
instruction: { type: 'string', short: 'i' },
|
|
377
|
+
// projects update
|
|
378
|
+
name: { type: 'string', short: 'n' },
|
|
379
|
+
// templates
|
|
380
|
+
category: { type: 'string' },
|
|
381
|
+
official: { type: 'boolean' },
|
|
382
|
+
// render status
|
|
383
|
+
poll: { type: 'boolean' },
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
const command = positionals[0];
|
|
387
|
+
const rest = positionals.slice(1);
|
|
388
|
+
if (values.help || !command || command === 'help') {
|
|
389
|
+
printHelp();
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
try {
|
|
393
|
+
switch (command) {
|
|
394
|
+
case 'generate':
|
|
395
|
+
await cmdGenerate(rest, values);
|
|
396
|
+
break;
|
|
397
|
+
case 'modify':
|
|
398
|
+
await cmdModify(rest, values);
|
|
399
|
+
break;
|
|
400
|
+
case 'projects':
|
|
401
|
+
await cmdProjects(rest, values);
|
|
402
|
+
break;
|
|
403
|
+
case 'render':
|
|
404
|
+
await cmdRender(rest, values);
|
|
405
|
+
break;
|
|
406
|
+
case 'templates':
|
|
407
|
+
await cmdTemplates(rest, values);
|
|
408
|
+
break;
|
|
409
|
+
case 'preview':
|
|
410
|
+
await cmdPreview(rest, values);
|
|
411
|
+
break;
|
|
412
|
+
case 'credits':
|
|
413
|
+
await cmdCredits(values);
|
|
414
|
+
break;
|
|
415
|
+
case 'schema':
|
|
416
|
+
cmdSchema(rest, values);
|
|
417
|
+
break;
|
|
418
|
+
case 'mcp': {
|
|
419
|
+
// Start the MCP server — dynamic import to avoid loading MCP deps for CLI commands
|
|
420
|
+
await import('../mcp/server.js');
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
case 'version':
|
|
424
|
+
console.log(VERSION);
|
|
425
|
+
break;
|
|
426
|
+
default:
|
|
427
|
+
console.error(`Unknown command: ${command}\nRun "framlit help" for usage.`);
|
|
428
|
+
process.exit(1);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
catch (error) {
|
|
432
|
+
const mode = (0, output_js_1.detectOutputMode)(values.output);
|
|
433
|
+
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
434
|
+
console.error((0, output_js_1.formatError)(msg, mode));
|
|
435
|
+
process.exit(1);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
main();
|
|
439
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Output Formatters
|
|
3
|
+
*
|
|
4
|
+
* Handles text/JSON/NDJSON output for the CLI.
|
|
5
|
+
* Auto-detects piped output and defaults to JSON.
|
|
6
|
+
*/
|
|
7
|
+
export type OutputMode = 'text' | 'json';
|
|
8
|
+
export declare function detectOutputMode(explicit?: string): OutputMode;
|
|
9
|
+
export declare function formatOutput(data: unknown, message: string, mode: OutputMode): string;
|
|
10
|
+
export declare function formatError(error: string, mode: OutputMode): string;
|
|
11
|
+
/**
|
|
12
|
+
* Write a single NDJSON line to stdout (for --poll streaming).
|
|
13
|
+
*/
|
|
14
|
+
export declare function writeNdjsonLine(data: unknown): void;
|
|
15
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAM9D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAKrF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAKnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI Output Formatters
|
|
4
|
+
*
|
|
5
|
+
* Handles text/JSON/NDJSON output for the CLI.
|
|
6
|
+
* Auto-detects piped output and defaults to JSON.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.detectOutputMode = detectOutputMode;
|
|
10
|
+
exports.formatOutput = formatOutput;
|
|
11
|
+
exports.formatError = formatError;
|
|
12
|
+
exports.writeNdjsonLine = writeNdjsonLine;
|
|
13
|
+
function detectOutputMode(explicit) {
|
|
14
|
+
if (explicit === 'json')
|
|
15
|
+
return 'json';
|
|
16
|
+
if (explicit === 'text')
|
|
17
|
+
return 'text';
|
|
18
|
+
// If stdout is not a TTY (piped), default to JSON for agent-friendliness
|
|
19
|
+
if (!process.stdout.isTTY)
|
|
20
|
+
return 'json';
|
|
21
|
+
return 'text';
|
|
22
|
+
}
|
|
23
|
+
function formatOutput(data, message, mode) {
|
|
24
|
+
if (mode === 'json') {
|
|
25
|
+
return JSON.stringify(data, null, 2);
|
|
26
|
+
}
|
|
27
|
+
return message;
|
|
28
|
+
}
|
|
29
|
+
function formatError(error, mode) {
|
|
30
|
+
if (mode === 'json') {
|
|
31
|
+
return JSON.stringify({ error }, null, 2);
|
|
32
|
+
}
|
|
33
|
+
return `Error: ${error}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Write a single NDJSON line to stdout (for --poll streaming).
|
|
37
|
+
*/
|
|
38
|
+
function writeNdjsonLine(data) {
|
|
39
|
+
process.stdout.write(JSON.stringify(data) + '\n');
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAIH,4CAMC;AAED,oCAKC;AAED,kCAKC;AAKD,0CAEC;AA3BD,SAAgB,gBAAgB,CAAC,QAAiB;IAChD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACvC,yEAAyE;IACzE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,YAAY,CAAC,IAAa,EAAE,OAAe,EAAE,IAAgB;IAC3E,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,IAAgB;IACzD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,UAAU,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAa;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Handlers
|
|
3
|
+
*
|
|
4
|
+
* Pure handler functions shared by MCP and CLI.
|
|
5
|
+
* Each handler takes (client, args) and returns a HandlerResult.
|
|
6
|
+
*/
|
|
7
|
+
import { FramlitClient } from '../api/client.js';
|
|
8
|
+
export interface HandlerResult {
|
|
9
|
+
data: unknown;
|
|
10
|
+
message: string;
|
|
11
|
+
isError?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function handleGenerateCode(client: FramlitClient, args: {
|
|
14
|
+
prompt: string;
|
|
15
|
+
format?: 'landscape' | 'portrait' | 'square';
|
|
16
|
+
}): Promise<HandlerResult>;
|
|
17
|
+
export declare function handleModifyCode(client: FramlitClient, args: {
|
|
18
|
+
code: string;
|
|
19
|
+
instruction: string;
|
|
20
|
+
}): Promise<HandlerResult>;
|
|
21
|
+
export declare function handleListProjects(client: FramlitClient): Promise<HandlerResult>;
|
|
22
|
+
export declare function handleGetProject(client: FramlitClient, args: {
|
|
23
|
+
projectId: string;
|
|
24
|
+
}): Promise<HandlerResult>;
|
|
25
|
+
export declare function handleCreateProject(client: FramlitClient, args: {
|
|
26
|
+
name: string;
|
|
27
|
+
code?: string;
|
|
28
|
+
format?: 'landscape' | 'portrait' | 'square';
|
|
29
|
+
}): Promise<HandlerResult>;
|
|
30
|
+
export declare function handleUpdateProject(client: FramlitClient, args: {
|
|
31
|
+
projectId: string;
|
|
32
|
+
name?: string;
|
|
33
|
+
code?: string;
|
|
34
|
+
}): Promise<HandlerResult>;
|
|
35
|
+
export declare function handleRenderVideo(client: FramlitClient, args: {
|
|
36
|
+
projectId: string;
|
|
37
|
+
}): Promise<HandlerResult>;
|
|
38
|
+
export declare function handleGetRenderStatus(client: FramlitClient, args: {
|
|
39
|
+
renderId: string;
|
|
40
|
+
}): Promise<HandlerResult>;
|
|
41
|
+
export declare function handleListTemplates(client: FramlitClient, args: {
|
|
42
|
+
category?: string;
|
|
43
|
+
official?: boolean;
|
|
44
|
+
}): Promise<HandlerResult>;
|
|
45
|
+
export declare function handleGetCredits(client: FramlitClient): Promise<HandlerResult>;
|
|
46
|
+
export declare function handlePreviewCode(client: FramlitClient, args: {
|
|
47
|
+
code: string;
|
|
48
|
+
}): Promise<HandlerResult>;
|
|
49
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/core/handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAA;CAAE,GACrE,OAAO,CAAC,aAAa,CAAC,CASxB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC,aAAa,CAAC,CASxB;AAMD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CAYxB;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAA;CAAE,GAClF,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,aAAa,CAAC,CAQxB;AAMD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,aAAa,CAAC,CAcxB;AAMD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9C,OAAO,CAAC,aAAa,CAAC,CAexB;AAMD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAMD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GACrB,OAAO,CAAC,aAAa,CAAC,CAOxB"}
|