cerevox 2.43.1 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/core/ai.d.ts +26 -3
  2. package/dist/core/ai.d.ts.map +1 -1
  3. package/dist/core/ai.js +14 -12
  4. package/dist/core/ai.js.map +1 -1
  5. package/dist/mcp/servers/prompts/actions/storyboard_optimization.md +5 -5
  6. package/dist/{utils/videoproject-schema.json → mcp/servers/prompts/draft_content-schema.json} +3 -3
  7. package/dist/mcp/servers/prompts/rules/creative-ad.md +6 -6
  8. package/dist/mcp/servers/prompts/rules/expert.md +25 -25
  9. package/dist/mcp/servers/prompts/rules/freeform.md +2 -3
  10. package/dist/mcp/servers/prompts/rules/general-video.md +10 -10
  11. package/dist/mcp/servers/prompts/rules/material-creation.md +2 -2
  12. package/dist/mcp/servers/prompts/rules/music-video.md +3 -3
  13. package/dist/mcp/servers/prompts/rules/stage-play.md +4 -4
  14. package/dist/mcp/servers/prompts/rules/story-telling.md +8 -8
  15. package/dist/mcp/servers/prompts/skills/storyboard/storyboard-optimization-skill.md +5 -5
  16. package/dist/mcp/servers/prompts/skills/video/continuity-techniques.md +1 -1
  17. package/dist/mcp/servers/prompts/skills/workflows/general-video.md +10 -10
  18. package/dist/mcp/servers/prompts/skills/workflows/music-video.md +3 -3
  19. package/dist/mcp/servers/prompts/zerocut-core.md +26 -27
  20. package/dist/mcp/servers/zerocut.d.ts.map +1 -1
  21. package/dist/mcp/servers/zerocut.js +383 -427
  22. package/dist/mcp/servers/zerocut.js.map +1 -1
  23. package/dist/utils/coze.d.ts +1 -0
  24. package/dist/utils/coze.d.ts.map +1 -1
  25. package/dist/utils/coze.js +19 -0
  26. package/dist/utils/coze.js.map +1 -1
  27. package/package.json +2 -2
  28. package/dist/timeline-editor/index.d.ts +0 -42
  29. package/dist/timeline-editor/index.d.ts.map +0 -1
  30. package/dist/timeline-editor/index.js +0 -82
  31. package/dist/timeline-editor/index.js.map +0 -1
  32. package/dist/timeline-editor/public/app.js +0 -2086
  33. package/dist/timeline-editor/public/index.html +0 -141
  34. package/dist/timeline-editor/public/style.css +0 -695
  35. package/dist/timeline-editor/server.d.ts +0 -137
  36. package/dist/timeline-editor/server.d.ts.map +0 -1
  37. package/dist/timeline-editor/server.js +0 -418
  38. package/dist/timeline-editor/server.js.map +0 -1
  39. /package/dist/{utils → mcp/servers/prompts}/storyboard-schema.json +0 -0
@@ -1,137 +0,0 @@
1
- /**
2
- * Timeline server configuration
3
- */
4
- export interface TimelineServerConfig {
5
- port: number;
6
- host: string;
7
- projectDir: string;
8
- draftFile: string;
9
- }
10
- /**
11
- * Draft content structure
12
- */
13
- export interface DraftContent {
14
- version: string;
15
- project: {
16
- name: string;
17
- id: string;
18
- };
19
- settings: {
20
- fps: number;
21
- resolution: {
22
- width: number;
23
- height: number;
24
- };
25
- pixelFormat: string;
26
- sampleRate: number;
27
- channels: number;
28
- timebase: string;
29
- };
30
- assets: Array<{
31
- id: string;
32
- type: 'video' | 'audio' | 'image';
33
- uri: string;
34
- durationMs?: number;
35
- fps?: number;
36
- resolution?: {
37
- width: number;
38
- height: number;
39
- };
40
- }>;
41
- timeline: {
42
- tracks: Array<{
43
- id: string;
44
- type: 'video' | 'audio' | 'subtitle';
45
- clips: Array<{
46
- id: string;
47
- assetId: string;
48
- startMs: number;
49
- inMs: number;
50
- durationMs: number;
51
- transitionIn?: {
52
- name: string;
53
- durationMs: number;
54
- };
55
- effects?: Array<{
56
- name: string;
57
- params: Record<string, any>;
58
- }>;
59
- }>;
60
- }>;
61
- };
62
- subtitles?: Array<{
63
- id: string;
64
- text: string;
65
- startMs: number;
66
- endMs: number;
67
- style?: Record<string, any>;
68
- }>;
69
- export: {
70
- container: string;
71
- videoCodec: string;
72
- audioCodec: string;
73
- crf?: number;
74
- preset?: string;
75
- };
76
- }
77
- /**
78
- * Timeline editor server
79
- */
80
- export declare class TimelineEditorServer {
81
- private server;
82
- private config;
83
- constructor(config: TimelineServerConfig);
84
- /**
85
- * Handle update draft API requests
86
- */
87
- private handleUpdateDraftApi;
88
- /**
89
- * Start the server
90
- */
91
- start(): Promise<void>;
92
- /**
93
- * Stop the server
94
- */
95
- stop(): Promise<void>;
96
- /**
97
- * Handle incoming requests
98
- */
99
- private handleRequest;
100
- /**
101
- * Serve the main index page
102
- */
103
- private serveIndexPage;
104
- /**
105
- * Handle draft API requests
106
- */
107
- private handleDraftApi;
108
- /**
109
- * Handle assets API requests
110
- */
111
- private handleAssetsApi;
112
- /**
113
- * Serve material files
114
- */
115
- private serveMaterialFile;
116
- /**
117
- * Serve static files
118
- */
119
- private serveStaticFile;
120
- /**
121
- * Read request body
122
- */
123
- private readRequestBody;
124
- /**
125
- * Handle health check endpoint
126
- */
127
- private handleHealthCheck;
128
- /**
129
- * Send 404 response
130
- */
131
- private send404;
132
- /**
133
- * Send error response
134
- */
135
- private sendError;
136
- }
137
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/timeline-editor/server.ts"],"names":[],"mappings":"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"}
@@ -1,418 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimelineEditorServer = void 0;
4
- const http_1 = require("http");
5
- const promises_1 = require("fs/promises");
6
- const fs_1 = require("fs");
7
- const path_1 = require("path");
8
- const url_1 = require("url");
9
- /**
10
- * Timeline editor server
11
- */
12
- class TimelineEditorServer {
13
- constructor(config) {
14
- this.server = null;
15
- this.config = config;
16
- }
17
- /**
18
- * Handle update draft API requests
19
- */
20
- async handleUpdateDraftApi(req, res, method) {
21
- if (method !== 'POST') {
22
- this.sendError(res, 405, 'Method not allowed');
23
- return;
24
- }
25
- try {
26
- const body = await this.readRequestBody(req);
27
- const projectData = JSON.parse(body);
28
- const draftPath = (0, path_1.resolve)(this.config.draftFile);
29
- // 读取现有的draft文件
30
- let existingDraft;
31
- if ((0, fs_1.existsSync)(draftPath)) {
32
- const content = await (0, promises_1.readFile)(draftPath, 'utf-8');
33
- existingDraft = JSON.parse(content);
34
- }
35
- else {
36
- // 如果文件不存在,创建基本结构
37
- existingDraft = {
38
- version: '1.0.0',
39
- project: {
40
- name: 'Timeline Project',
41
- id: 'timeline-' + Date.now(),
42
- },
43
- settings: {
44
- fps: 30,
45
- resolution: { width: 1920, height: 1080 },
46
- pixelFormat: 'yuv420p',
47
- sampleRate: 44100,
48
- channels: 2,
49
- timebase: '1/30',
50
- },
51
- assets: [],
52
- timeline: { tracks: [] },
53
- subtitles: [],
54
- export: {
55
- container: 'mp4',
56
- videoCodec: 'h264',
57
- audioCodec: 'aac',
58
- crf: 23,
59
- preset: 'medium',
60
- },
61
- };
62
- }
63
- // 更新相关字段
64
- if (projectData.assets) {
65
- existingDraft.assets = projectData.assets;
66
- }
67
- if (projectData.tracks) {
68
- existingDraft.timeline = existingDraft.timeline || {};
69
- existingDraft.timeline.tracks = projectData.tracks;
70
- }
71
- if (projectData.subtitles) {
72
- existingDraft.subtitles = projectData.subtitles;
73
- }
74
- // 写入文件
75
- await (0, promises_1.writeFile)(draftPath, JSON.stringify(existingDraft, null, 2));
76
- res.writeHead(200, { 'Content-Type': 'application/json' });
77
- res.end(JSON.stringify({
78
- success: true,
79
- message: 'Draft updated successfully',
80
- path: draftPath,
81
- }));
82
- }
83
- catch (error) {
84
- console.error('Failed to update draft file:', error);
85
- this.sendError(res, 500, 'Failed to update draft file');
86
- }
87
- }
88
- /**
89
- * Start the server
90
- */
91
- async start() {
92
- if (this.server) {
93
- throw new Error('Server is already running');
94
- }
95
- this.server = (0, http_1.createServer)((req, res) => {
96
- this.handleRequest(req, res).catch(error => {
97
- console.error('Request handling error:', error);
98
- this.sendError(res, 500, 'Internal Server Error');
99
- });
100
- });
101
- return new Promise((resolve, reject) => {
102
- this.server.listen(this.config.port, this.config.host, () => {
103
- console.log(`Timeline editor server running at http://${this.config.host}:${this.config.port}`);
104
- resolve();
105
- });
106
- this.server.on('error', reject);
107
- });
108
- }
109
- /**
110
- * Stop the server
111
- */
112
- async stop() {
113
- if (!this.server) {
114
- return;
115
- }
116
- return new Promise(resolve => {
117
- this.server.close(() => {
118
- this.server = null;
119
- console.log('Timeline editor server stopped');
120
- resolve();
121
- });
122
- });
123
- }
124
- /**
125
- * Handle incoming requests
126
- */
127
- async handleRequest(req, res) {
128
- try {
129
- const url = (0, url_1.parse)(req.url || '', true);
130
- const pathname = url.pathname || '/';
131
- const method = req.method || 'GET';
132
- // 设置CORS头
133
- res.setHeader('Access-Control-Allow-Origin', '*');
134
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
135
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
136
- if (method === 'OPTIONS') {
137
- res.writeHead(200);
138
- res.end();
139
- return;
140
- }
141
- // 路由处理
142
- if (pathname === '/') {
143
- await this.serveIndexPage(res);
144
- }
145
- else if (pathname === '/health') {
146
- await this.handleHealthCheck(res);
147
- }
148
- else if (pathname === '/api/draft') {
149
- await this.handleDraftApi(req, res, method);
150
- }
151
- else if (pathname === '/api/update-draft') {
152
- await this.handleUpdateDraftApi(req, res, method);
153
- }
154
- else if (pathname === '/api/assets') {
155
- await this.handleAssetsApi(req, res);
156
- }
157
- else if (pathname.startsWith('/materials/')) {
158
- await this.serveMaterialFile(pathname, res);
159
- }
160
- else if (pathname.startsWith('/static/')) {
161
- await this.serveStaticFile(pathname, res);
162
- }
163
- else {
164
- this.send404(res);
165
- }
166
- }
167
- catch (error) {
168
- console.error('Request handling error:', error);
169
- this.sendError(res, 500, 'Internal Server Error');
170
- }
171
- }
172
- /**
173
- * Serve the main index page
174
- */
175
- async serveIndexPage(res) {
176
- try {
177
- // 尝试读取 public/index.html 文件
178
- const publicDir = (0, path_1.join)(__dirname, '..', '..', 'dist', 'timeline-editor', 'public');
179
- const indexPath = (0, path_1.join)(publicDir, 'index.html');
180
- if ((0, fs_1.existsSync)(indexPath)) {
181
- const html = await (0, promises_1.readFile)(indexPath, 'utf-8');
182
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
183
- res.end(html);
184
- return;
185
- }
186
- }
187
- catch (error) {
188
- console.warn('Failed to load public/index.html, using fallback:', error);
189
- }
190
- // 如果读取失败,使用简化的fallback HTML
191
- const html = `
192
- <!DOCTYPE html>
193
- <html lang="zh-CN">
194
- <head>
195
- <meta charset="UTF-8">
196
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
197
- <title>ZeroCut Timeline Editor</title>
198
- <style>
199
- * { margin: 0; padding: 0; box-sizing: border-box; }
200
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #1a1a1a; color: #fff; }
201
- .loading { display: flex; align-items: center; justify-content: center; height: 100vh; color: #aaa; }
202
- </style>
203
- </head>
204
- <body>
205
- <div class="loading">Loading Timeline Editor...</div>
206
- <script>
207
- // 尝试重新加载页面以获取正确的HTML
208
- setTimeout(() => {
209
- window.location.reload();
210
- }, 1000);
211
- </script>
212
- </body>
213
- </html>`;
214
- res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
215
- res.end(html);
216
- }
217
- /**
218
- * Handle draft API requests
219
- */
220
- async handleDraftApi(req, res, method) {
221
- const draftPath = (0, path_1.resolve)(this.config.draftFile);
222
- if (method === 'GET') {
223
- try {
224
- if (!(0, fs_1.existsSync)(draftPath)) {
225
- this.sendError(res, 404, `Draft file not found: ${draftPath}`);
226
- return;
227
- }
228
- const content = await (0, promises_1.readFile)(draftPath, 'utf-8');
229
- const draftData = JSON.parse(content);
230
- res.writeHead(200, { 'Content-Type': 'application/json' });
231
- res.end(JSON.stringify(draftData));
232
- }
233
- catch (error) {
234
- console.error('Failed to read draft file:', error);
235
- this.sendError(res, 500, 'Failed to read draft file');
236
- }
237
- }
238
- else if (method === 'POST') {
239
- try {
240
- const body = await this.readRequestBody(req);
241
- const draftData = JSON.parse(body);
242
- await (0, promises_1.writeFile)(draftPath, JSON.stringify(draftData, null, 2));
243
- res.writeHead(200, { 'Content-Type': 'application/json' });
244
- res.end(JSON.stringify({ success: true }));
245
- }
246
- catch (error) {
247
- console.error('Failed to save draft file:', error);
248
- this.sendError(res, 500, 'Failed to save draft file');
249
- }
250
- }
251
- else {
252
- this.sendError(res, 405, 'Method not allowed');
253
- }
254
- }
255
- /**
256
- * Handle assets API requests
257
- */
258
- async handleAssetsApi(req, res) {
259
- try {
260
- const draftPath = (0, path_1.resolve)(this.config.draftFile);
261
- if (!(0, fs_1.existsSync)(draftPath)) {
262
- res.writeHead(200, { 'Content-Type': 'application/json' });
263
- res.end(JSON.stringify([]));
264
- return;
265
- }
266
- const content = await (0, promises_1.readFile)(draftPath, 'utf-8');
267
- const draftData = JSON.parse(content);
268
- res.writeHead(200, { 'Content-Type': 'application/json' });
269
- res.end(JSON.stringify(draftData.assets || []));
270
- }
271
- catch (error) {
272
- console.error('Failed to load assets:', error);
273
- this.sendError(res, 500, 'Failed to load assets');
274
- }
275
- }
276
- /**
277
- * Serve material files
278
- */
279
- async serveMaterialFile(pathname, res) {
280
- try {
281
- const materialPath = pathname.replace('/materials/', '');
282
- const fullPath = (0, path_1.join)(this.config.projectDir, materialPath);
283
- if (!(0, fs_1.existsSync)(fullPath)) {
284
- this.send404(res);
285
- return;
286
- }
287
- const stats = await (0, promises_1.stat)(fullPath);
288
- if (!stats.isFile()) {
289
- this.send404(res);
290
- return;
291
- }
292
- const ext = (0, path_1.extname)(fullPath).toLowerCase();
293
- const mimeTypes = {
294
- '.mp4': 'video/mp4',
295
- '.webm': 'video/webm',
296
- '.mov': 'video/quicktime',
297
- '.mp3': 'audio/mpeg',
298
- '.wav': 'audio/wav',
299
- '.jpg': 'image/jpeg',
300
- '.jpeg': 'image/jpeg',
301
- '.png': 'image/png',
302
- '.gif': 'image/gif',
303
- };
304
- const contentType = mimeTypes[ext] || 'application/octet-stream';
305
- const content = await (0, promises_1.readFile)(fullPath);
306
- res.writeHead(200, { 'Content-Type': contentType });
307
- res.end(content);
308
- }
309
- catch (error) {
310
- console.error('Failed to serve material file:', error);
311
- this.send404(res);
312
- }
313
- }
314
- /**
315
- * Serve static files
316
- */
317
- async serveStaticFile(pathname, res) {
318
- try {
319
- // 移除 /static/ 前缀
320
- const relativePath = pathname.replace('/static/', '');
321
- let filePath;
322
- // 如果是 materials/ 开头,从项目根目录提供服务
323
- if (relativePath.startsWith('materials/')) {
324
- filePath = (0, path_1.join)(this.config.projectDir, relativePath);
325
- }
326
- else {
327
- // 其他静态文件从 public 目录提供服务
328
- const publicDir = (0, path_1.join)(__dirname, '..', '..', 'dist', 'timeline-editor', 'public');
329
- filePath = (0, path_1.join)(publicDir, relativePath);
330
- }
331
- if (!(0, fs_1.existsSync)(filePath)) {
332
- console.log(`File not found: ${filePath}`);
333
- this.send404(res);
334
- return;
335
- }
336
- const stats = await (0, promises_1.stat)(filePath);
337
- if (!stats.isFile()) {
338
- this.send404(res);
339
- return;
340
- }
341
- const ext = (0, path_1.extname)(filePath).toLowerCase();
342
- const mimeTypes = {
343
- '.css': 'text/css',
344
- '.js': 'application/javascript',
345
- '.json': 'application/json',
346
- '.png': 'image/png',
347
- '.jpg': 'image/jpeg',
348
- '.jpeg': 'image/jpeg',
349
- '.gif': 'image/gif',
350
- '.svg': 'image/svg+xml',
351
- '.mp4': 'video/mp4',
352
- '.webm': 'video/webm',
353
- '.mov': 'video/quicktime',
354
- '.avi': 'video/x-msvideo',
355
- '.mp3': 'audio/mpeg',
356
- '.wav': 'audio/wav',
357
- '.ogg': 'audio/ogg',
358
- '.m4a': 'audio/mp4',
359
- };
360
- const contentType = mimeTypes[ext] || 'application/octet-stream';
361
- const content = await (0, promises_1.readFile)(filePath);
362
- res.writeHead(200, {
363
- 'Content-Type': contentType,
364
- 'Content-Length': content.length,
365
- 'Accept-Ranges': 'bytes',
366
- });
367
- res.end(content);
368
- }
369
- catch (error) {
370
- console.error('Failed to serve static file:', error);
371
- this.send404(res);
372
- }
373
- }
374
- /**
375
- * Read request body
376
- */
377
- async readRequestBody(req) {
378
- return new Promise((resolve, reject) => {
379
- let body = '';
380
- req.on('data', chunk => {
381
- body += chunk.toString();
382
- });
383
- req.on('end', () => {
384
- resolve(body);
385
- });
386
- req.on('error', reject);
387
- });
388
- }
389
- /**
390
- * Handle health check endpoint
391
- */
392
- async handleHealthCheck(res) {
393
- const healthData = {
394
- status: 'ok',
395
- timestamp: new Date().toISOString(),
396
- uptime: process.uptime(),
397
- service: 'timeline-editor',
398
- };
399
- res.writeHead(200, { 'Content-Type': 'application/json' });
400
- res.end(JSON.stringify(healthData));
401
- }
402
- /**
403
- * Send 404 response
404
- */
405
- send404(res) {
406
- res.writeHead(404, { 'Content-Type': 'text/plain' });
407
- res.end('Not Found');
408
- }
409
- /**
410
- * Send error response
411
- */
412
- sendError(res, statusCode, message) {
413
- res.writeHead(statusCode, { 'Content-Type': 'application/json' });
414
- res.end(JSON.stringify({ error: message }));
415
- }
416
- }
417
- exports.TimelineEditorServer = TimelineEditorServer;
418
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/timeline-editor/server.ts"],"names":[],"mappings":"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"}