cerevox 2.31.0 → 2.32.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.
- package/dist/core/sandbox.d.ts +1 -0
- package/dist/core/sandbox.d.ts.map +1 -1
- package/dist/core/sandbox.js +5 -5
- package/dist/core/sandbox.js.map +1 -1
- package/dist/mcp/servers/prompts/rules/creative-ad.md +2 -2
- package/dist/mcp/servers/prompts/rules/freeform.md +40 -36
- package/dist/mcp/servers/prompts/rules/general-video.md +6 -6
- package/dist/mcp/servers/prompts/rules/material-creation.md +10 -0
- package/dist/mcp/servers/prompts/rules/music-video.md +2 -2
- package/dist/mcp/servers/prompts/rules/stage-play.md +2 -2
- package/dist/mcp/servers/prompts/rules/story-telling.md +2 -2
- package/dist/mcp/servers/prompts/skills/workflows/general-video.md +6 -6
- package/dist/mcp/servers/prompts/skills/workflows/music-video.md +2 -2
- package/dist/mcp/servers/prompts/zerocut-core.md +36 -37
- package/dist/mcp/servers/zerocut.d.ts.map +1 -1
- package/dist/mcp/servers/zerocut.js +63 -20
- package/dist/mcp/servers/zerocut.js.map +1 -1
- package/dist/utils/coze.d.ts.map +1 -1
- package/dist/utils/coze.js +12 -50
- package/dist/utils/coze.js.map +1 -1
- package/package.json +1 -1
- package/dist/mcp/servers/prompts/rules/anime-series.md +0 -182
|
@@ -152,8 +152,13 @@ function createErrorResponse(error, operation) {
|
|
|
152
152
|
}
|
|
153
153
|
// Session 状态检查
|
|
154
154
|
async function validateSession(operation) {
|
|
155
|
+
if (closeSessionTimerId) {
|
|
156
|
+
clearTimeout(closeSessionTimerId);
|
|
157
|
+
closeSessionTimerId = null;
|
|
158
|
+
}
|
|
155
159
|
if (!session || !(await session.isRunning())) {
|
|
156
|
-
|
|
160
|
+
session = null;
|
|
161
|
+
throw new Error(`Session not initialized. Please call 'project-open' first before using ${operation}.`);
|
|
157
162
|
}
|
|
158
163
|
return session;
|
|
159
164
|
}
|
|
@@ -409,6 +414,7 @@ let projectLocalDir = '.';
|
|
|
409
414
|
let checkStoryboardFlag = false;
|
|
410
415
|
let checkAudioVideoDurationFlag = false;
|
|
411
416
|
let checkStoryboardSubtitlesFlag = false;
|
|
417
|
+
let closeSessionTimerId = null;
|
|
412
418
|
// 注册 ZeroCut 指导规范 Prompt
|
|
413
419
|
server.registerPrompt('zerocut-guideline', {
|
|
414
420
|
title: 'ZeroCut 短视频创作指导规范',
|
|
@@ -443,15 +449,25 @@ server.registerTool('retrieve-rules-context', {
|
|
|
443
449
|
'general-video',
|
|
444
450
|
'music-video',
|
|
445
451
|
'stage-play',
|
|
446
|
-
'anime-series',
|
|
447
452
|
'story-telling',
|
|
448
453
|
'creative-ad',
|
|
449
454
|
'professional',
|
|
455
|
+
'material-creation',
|
|
450
456
|
'freeform',
|
|
451
457
|
'custom',
|
|
452
458
|
])
|
|
453
459
|
.default('general-video')
|
|
454
|
-
.describe(
|
|
460
|
+
.describe(`The purpose of the rules context to retrieve.
|
|
461
|
+
|
|
462
|
+
- general-video 创建通用视频
|
|
463
|
+
- music-video 创建音乐视频
|
|
464
|
+
- stage-play 创建舞台播放视频
|
|
465
|
+
- story-telling 创建故事讲述视频
|
|
466
|
+
- creative-ad 创建创意广告视频
|
|
467
|
+
- professional 创建专业视频
|
|
468
|
+
- material-creation 素材创作模式
|
|
469
|
+
- freeform 自由创作模式
|
|
470
|
+
- custom 自定义模式`),
|
|
455
471
|
},
|
|
456
472
|
}, async ({ purpose }) => {
|
|
457
473
|
const projectRulesFile = (0, node_path_1.resolve)(projectLocalDir, '.trae', 'rules', `project_rules.md`);
|
|
@@ -474,10 +490,10 @@ server.registerTool('retrieve-rules-context', {
|
|
|
474
490
|
if (purpose !== 'general-video' &&
|
|
475
491
|
purpose !== 'music-video' &&
|
|
476
492
|
purpose !== 'stage-play' &&
|
|
477
|
-
purpose !== 'anime-series' &&
|
|
478
493
|
purpose !== 'story-telling' &&
|
|
479
494
|
purpose !== 'creative-ad' &&
|
|
480
495
|
purpose !== 'professional' &&
|
|
496
|
+
purpose !== 'material-creation' &&
|
|
481
497
|
purpose !== 'freeform') {
|
|
482
498
|
return createErrorResponse(`Project rules file not found: ${projectRulesFile}`, 'retrieve-rules-context');
|
|
483
499
|
}
|
|
@@ -548,7 +564,7 @@ server.registerTool('retrieve-rules-context', {
|
|
|
548
564
|
return createErrorResponse(`Failed to load rules context prompt for ${purpose}: ${error}`, 'retrieve-rules-context');
|
|
549
565
|
}
|
|
550
566
|
});
|
|
551
|
-
server.registerTool('
|
|
567
|
+
server.registerTool('project-open', {
|
|
552
568
|
title: 'Open Project',
|
|
553
569
|
description: 'Launch a new Cerevox session with a Chromium browser instance and open a new project context. Supports smart file filtering to optimize upload performance.',
|
|
554
570
|
inputSchema: {
|
|
@@ -570,15 +586,32 @@ server.registerTool('zerocut-project-open', {
|
|
|
570
586
|
},
|
|
571
587
|
}, async ({ localDir, uploadAllFiles, tosFiles }, context) => {
|
|
572
588
|
try {
|
|
589
|
+
if (closeSessionTimerId) {
|
|
590
|
+
clearTimeout(closeSessionTimerId);
|
|
591
|
+
closeSessionTimerId = null;
|
|
592
|
+
}
|
|
573
593
|
// 检查是否已有活跃session
|
|
574
594
|
if (session) {
|
|
575
595
|
console.warn('Session already exists, closing previous session');
|
|
576
|
-
try {
|
|
577
|
-
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
596
|
+
// try {
|
|
597
|
+
// await session.close();
|
|
598
|
+
// } catch (closeError) {
|
|
599
|
+
// console.warn('Failed to close previous session:', closeError);
|
|
600
|
+
// }
|
|
601
|
+
const result = {
|
|
602
|
+
success: true,
|
|
603
|
+
sessionId: session.id,
|
|
604
|
+
workDir: `/home/user/cerevox-zerocut/projects/${session.terminal.id}`,
|
|
605
|
+
projectLocalDir,
|
|
606
|
+
};
|
|
607
|
+
return {
|
|
608
|
+
content: [
|
|
609
|
+
{
|
|
610
|
+
type: 'text',
|
|
611
|
+
text: JSON.stringify(result),
|
|
612
|
+
},
|
|
613
|
+
],
|
|
614
|
+
};
|
|
582
615
|
}
|
|
583
616
|
const apiKey = process.env.CEREVOX_API_KEY;
|
|
584
617
|
// 验证API密钥
|
|
@@ -678,19 +711,29 @@ server.registerTool('zerocut-project-open', {
|
|
|
678
711
|
}
|
|
679
712
|
catch (error) {
|
|
680
713
|
// 不自动关闭session,让agent根据异常信息自行处理
|
|
681
|
-
return createErrorResponse(error, '
|
|
714
|
+
return createErrorResponse(error, 'project-open');
|
|
682
715
|
}
|
|
683
716
|
});
|
|
684
|
-
server.registerTool('
|
|
717
|
+
server.registerTool('project-close', {
|
|
685
718
|
title: 'Close Project',
|
|
686
719
|
description: 'Close the current Cerevox session and release all resources.',
|
|
687
|
-
inputSchema: {
|
|
688
|
-
|
|
720
|
+
inputSchema: {
|
|
721
|
+
inMinutes: zod_1.z
|
|
722
|
+
.number()
|
|
723
|
+
.int()
|
|
724
|
+
.min(0)
|
|
725
|
+
.max(20)
|
|
726
|
+
.default(5)
|
|
727
|
+
.describe('Close the session after the specified number of minutes. Default is 5 minutes. 如果用户要求立即关闭会话,请将该参数设置为0!'),
|
|
728
|
+
},
|
|
729
|
+
}, async ({ inMinutes }) => {
|
|
689
730
|
try {
|
|
690
731
|
if (session) {
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
732
|
+
closeSessionTimerId = setTimeout(() => {
|
|
733
|
+
console.log('Closing Cerevox session...');
|
|
734
|
+
session?.close();
|
|
735
|
+
session = null;
|
|
736
|
+
}, inMinutes * 60 * 1000);
|
|
694
737
|
console.log('Session closed successfully');
|
|
695
738
|
}
|
|
696
739
|
else {
|
|
@@ -712,7 +755,7 @@ server.registerTool('zerocut-project-close', {
|
|
|
712
755
|
catch (error) {
|
|
713
756
|
// 即使关闭失败,也要清理session引用
|
|
714
757
|
session = null;
|
|
715
|
-
return createErrorResponse(error, '
|
|
758
|
+
return createErrorResponse(error, 'project-close');
|
|
716
759
|
}
|
|
717
760
|
});
|
|
718
761
|
// 列出项目下的所有文件
|
|
@@ -2673,7 +2716,7 @@ server.registerTool('compile-and-run', {
|
|
|
2673
2716
|
};
|
|
2674
2717
|
if (result.exitCode === 254) {
|
|
2675
2718
|
failureResult.message =
|
|
2676
|
-
'FFmpeg failed with code 254. Close current session and re-open a new session to try again.';
|
|
2719
|
+
'FFmpeg failed with code 254. Close current session immediately (inMinutes = 0) and re-open a new session to try again.';
|
|
2677
2720
|
}
|
|
2678
2721
|
return {
|
|
2679
2722
|
content: [
|