| 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 |