返回 oh-my-ppt
contract.ts
根目录 / src / main / product-skills / contract.ts
1 import { requireSlideSize, type SlideSizePreset } from '@shared/slide-size'
2
3 export const PRODUCT_SKILLS_ROUTE = '/.ohmyppt-skills/'
4 export const SYSTEM_SKILLS_SOURCE_PATH = '/system/'
5
6 export const LAYOUT_SKILL_NAME = 'oh-my-ppt-layout'
7 export const VERTICAL_9_16_LAYOUT_SKILL_NAME = 'vertical-9-16-layout-skill'
8 export const STANDARD_4_3_LAYOUT_SKILL_NAME = 'standard-4-3-layout-skill'
9 export const SQUARE_1_1_LAYOUT_SKILL_NAME = 'square-1-1-layout-skill'
10 export const VERTICAL_3_4_LAYOUT_SKILL_NAME = 'vertical-3-4-layout-skill'
11 export const RED_LAYOUT_SKILL_NAME = 'red-layout-skill'
12 export const DATA_ANIM_SKILL_NAME = 'oh-my-ppt-data-anim'
13 export const CHART_SKILL_NAME = 'oh-my-ppt-chart'
14 export const SOURCE_READING_SKILL_NAME = 'oh-my-ppt-source-reading'
15
16 export const REQUIRED_PRODUCT_SKILL_NAMES = [
17 LAYOUT_SKILL_NAME,
18 VERTICAL_9_16_LAYOUT_SKILL_NAME,
19 STANDARD_4_3_LAYOUT_SKILL_NAME,
20 SQUARE_1_1_LAYOUT_SKILL_NAME,
21 VERTICAL_3_4_LAYOUT_SKILL_NAME,
22 RED_LAYOUT_SKILL_NAME,
23 DATA_ANIM_SKILL_NAME,
24 CHART_SKILL_NAME,
25 SOURCE_READING_SKILL_NAME
26 ] as const
27
28 export type RequiredProductSkillName = (typeof REQUIRED_PRODUCT_SKILL_NAMES)[number]
29
30 export const formatSkillUsageRequirement = (skillName: RequiredProductSkillName): string =>
31 `Use the DeepAgents Skills System entry for ${skillName}; read that skill's SKILL.md before applying this capability.`
32
33 export const resolveLayoutSkillName = (input: SlideSizePreset): RequiredProductSkillName => {
34 const slideSize = requireSlideSize(input)
35 switch (slideSize.id) {
36 case 'wide-16-9':
37 return LAYOUT_SKILL_NAME
38 case 'vertical-9-16':
39 return VERTICAL_9_16_LAYOUT_SKILL_NAME
40 case 'standard-4-3':
41 return STANDARD_4_3_LAYOUT_SKILL_NAME
42 case 'square-1-1':
43 return SQUARE_1_1_LAYOUT_SKILL_NAME
44 case 'vertical-3-4':
45 return VERTICAL_3_4_LAYOUT_SKILL_NAME
46 case 'xiaohongshu-note':
47 return RED_LAYOUT_SKILL_NAME
48 }
49 }
50
51 export const getRequiredProductSkillNamesForSlideSize = (
52 input: SlideSizePreset
53 ): readonly RequiredProductSkillName[] => [
54 resolveLayoutSkillName(input),
55 DATA_ANIM_SKILL_NAME,
56 CHART_SKILL_NAME,
57 SOURCE_READING_SKILL_NAME
58 ]
59
59 lines TYPESCRIPT