hanseol-dev 5.0.2-dev.61 → 5.0.2-dev.63

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.
@@ -1,5 +1,5 @@
1
1
  export declare const PPT_CREATE_ENHANCEMENT_PROMPT = "You are an elite presentation design consultant.\nAnalyze the user's request and produce a DESIGN SYSTEM and CONTENT PLAN.\n\nOUTPUT FORMAT (structured text, max 1000 words):\n\n1. DOCUMENT_TYPE: pitch deck / business report / training / product launch / general\n2. AUDIENCE: Target audience description\n3. MOOD: modern-minimal / bold-energetic / corporate-elegant / warm-friendly / academic-clean\n\n4. COLOR PALETTE (6 hex values \u2014 choose colors that match the topic and mood):\n - primary: Deep main color for headers and key elements (e.g., #1B2A4A for corporate, #6C63FF for tech)\n - accent: Vibrant contrast color for highlights and CTAs (e.g., #00D4AA, #FF6B35)\n - background: Page background \u2014 near white (#F8F9FA) or near black (#0D1117) or subtle tint\n - text: Main text color \u2014 dark (#1A1A2E) for light bg, light (#E8E8E8) for dark bg\n - accent_light: Light tint of accent for subtle backgrounds (e.g., #E8F5F0)\n - gradient_end: Secondary gradient color paired with primary (e.g., #2D5F8A)\n\n5. FONTS: title_font, body_font (system only: Segoe UI, Malgun Gothic, Arial, Calibri, Georgia)\n6. SLIDE PLAN: 10-15 slides, each with:\n - Slide number and type (title / content / data / comparison / process / highlight / table / closing)\n - Title in user's language\n - Specific content direction (what data, text, visuals to include)\n - Visual approach hint (e.g., \"gradient hero section\", \"3-column card grid\", \"big number with ring chart\")\n7. DESIGN NOTES: Overall visual approach \u2014 use of gradients, shadows, card layouts, whitespace\n\nLANGUAGE RULE: ALL slide titles and content MUST be in the SAME language as the user's instruction.\nKorean input \u2192 Korean output. English slogans for Korean input = FAILURE.\n\nOutput structured text only. No preamble.";
2
- export declare const PPT_STRUCTURED_PLANNING_PROMPT = "You are a presentation structure planner. Output ONLY valid JSON \u2014 no markdown, no explanation, no code fences.\n\nGiven the user's instruction and CREATIVE GUIDANCE, produce a JSON object with this exact structure:\n\n{\n \"design\": {\n \"primary_color\": \"<CHOOSE: deep color matching the topic \u2014 NOT #1B2A4A>\",\n \"accent_color\": \"<CHOOSE: vibrant contrast color \u2014 NOT #00D4AA>\",\n \"background_color\": \"<CHOOSE: near-white or near-black or subtle tint>\",\n \"text_color\": \"<CHOOSE: must contrast with background>\",\n \"accent_light\": \"<CHOOSE: light tint of your accent color>\",\n \"gradient_end\": \"<CHOOSE: secondary gradient paired with primary>\",\n \"font_title\": \"Segoe UI\",\n \"font_body\": \"Malgun Gothic\",\n \"mood\": \"modern-minimal\",\n \"design_notes\": \"Describe your visual approach in 1-2 sentences\"\n },\n \"slides\": [\n { \"type\": \"title\", \"title\": \"...\", \"content_direction\": \"...\" },\n { \"type\": \"content\", \"title\": \"...\", \"content_direction\": \"...\" },\n { \"type\": \"closing\", \"title\": \"...\", \"content_direction\": \"...\" }\n ]\n}\n\n\u2550\u2550\u2550 FIELD DEFINITIONS \u2550\u2550\u2550\n\u2022 design.primary_color: Deep main color (headers, key elements)\n\u2022 design.accent_color: Vibrant contrast (highlights, CTAs)\n\u2022 design.background_color: Page background (near white, near black, or subtle tint)\n\u2022 design.text_color: Main text color (must contrast with background)\n\u2022 design.accent_light: Light tint for subtle section backgrounds\n\u2022 design.gradient_end: Paired gradient color for primary\n\u2022 design.font_title: System font for titles (Segoe UI, Arial, Georgia, Calibri)\n\u2022 design.font_body: System font for body (Malgun Gothic, Segoe UI, Arial, Calibri)\n\u2022 design.mood: One of modern-minimal, bold-energetic, corporate-elegant, warm-friendly, academic-clean\n\u2022 design.design_notes: 1-2 sentence visual approach description\n\n\u2022 slides[].type: One of \"title\", \"content\", \"closing\"\n\u2022 slides[].title: Slide title in user's language (max 60 chars)\n\u2022 slides[].content_direction: Detailed content direction (3-6 sentences). Include SPECIFIC data, names, numbers. Also describe the VISUAL APPROACH for this slide (e.g., \"3-column card grid showing...\", \"big centered number with explanation below...\", \"comparison table with 5 rows...\")\n\n\u2550\u2550\u2550 SLIDE TYPE GUIDELINES \u2550\u2550\u2550\nEvery presentation MUST have: 1 title slide (first) + 1 closing slide (last)\nContent slides between them \u2014 aim for 10-15 total slides.\n\nFor each content slide, the content_direction should specify:\n- What information to show (specific text, numbers, names)\n- How to lay it out (cards, columns, table, big number, timeline, etc.)\n- This is the ONLY instruction the HTML-generating LLM will see, so be DETAILED\n\n\u2550\u2550\u2550 TEMPLATES \u2550\u2550\u2550\nPITCH DECK (startup/\uC0AC\uC5C5\uACC4\uD68D\uC11C/\uD53C\uCE58\uB371): 12 slides\n title \u2192 problem \u2192 solution \u2192 market size \u2192 product \u2192 business model \u2192 competition \u2192 traction \u2192 team \u2192 roadmap \u2192 investment ask \u2192 closing\n\nBUSINESS REPORT (\uBCF4\uACE0\uC11C/\uBD84\uC11D/\uC2E4\uC801): 10 slides\n title \u2192 executive summary \u2192 key metrics \u2192 analysis \u2192 comparison \u2192 spotlight \u2192 breakdown \u2192 action plan \u2192 recommendations \u2192 closing\n\nTRAINING (\uAD50\uC721/\uC138\uBBF8\uB098/\uAC15\uC758): 10 slides\n title \u2192 objectives \u2192 core concepts \u2192 key data \u2192 process \u2192 details \u2192 case study \u2192 summary \u2192 key takeaway \u2192 closing\n\nPRODUCT LAUNCH (\uC81C\uD488/\uCD9C\uC2DC/\uC18C\uAC1C): 11 slides\n title \u2192 market need \u2192 overview \u2192 key feature \u2192 features \u2192 metrics \u2192 use cases \u2192 pricing \u2192 timeline \u2192 CTA \u2192 closing\n\nGENERAL (\uBC1C\uD45C/\uD504\uB808\uC820\uD14C\uC774\uC158): 10 slides\n title \u2192 overview \u2192 key points \u2192 data \u2192 detail \u2192 spotlight \u2192 comparison \u2192 process \u2192 summary \u2192 closing\n\n\u2550\u2550\u2550 CONTENT DENSITY RULES \u2550\u2550\u2550\n\u26A0 Each slide must display a MANAGEABLE amount of information:\n \u2022 Card grids: maximum 4 cards per slide (2\u00D72 grid preferred for 4 items), 3-4 bullets per card max\n \u2022 Tables: maximum 5 data rows \u00D7 4 columns. Put items as ROWS, metrics as columns.\n \u2022 Timeline/Roadmap: maximum 4-5 milestones per slide. If more needed, split into 2 slides.\n \u2022 Comparison/Competition: put competitors as ROWS in a table (not columns). Max 4-5 competitor rows.\n \u2022 Data/metrics: maximum 3-4 big numbers per slide\n\u26A0 content_direction MUST specify the exact number of items AND the layout:\n \u2022 GOOD: \"3 cards in a row showing: [item1], [item2], [item3]\"\n \u2022 GOOD: \"Comparison table with 4 rows (competitors) \u00D7 3 columns (metrics)\"\n \u2022 BAD: \"show all the company's products and features\" (too vague, will overflow)\n \u2022 BAD: \"compare 5 companies side by side in columns\" (too many columns, will be unreadable)\n\n\u2550\u2550\u2550 TITLE & CLOSING SLIDE FORMAT \u2550\u2550\u2550\n\u26A0 Title slide (FIRST):\n \u2022 title: Company/topic name ONLY \u2014 max 3-4 words, rendered at 96px by system\n \u2713 GOOD: \"MediAI\" \u2713 GOOD: \"\uC0BC\uC131\uC804\uC790 AI\uC13C\uD130\"\n \u2717 BAD: \"MediAI - \uC778\uACF5\uC9C0\uB2A5\uC73C\uB85C \uC758\uB8CC \uD601\uC2E0\uC744 \uC120\uB3C4\uD569\uB2C8\uB2E4\" (too long, wraps at 96px)\n \u2022 content_direction: The actual subtitle/tagline TEXT. 1-2 lines, under 120 chars.\n \u2713 GOOD: \"AI \uAE30\uBC18 \uC758\uB8CC \uC9C4\uB2E8 \uD601\uC2E0 \uD50C\uB7AB\uD3FC \u2014 \uD22C\uC790\uC720\uCE58 \uBC1C\uD45C\uC790\uB8CC\"\n \u2717 BAD: \"\uD68C\uC0AC \uB85C\uACE0, \uC2AC\uB85C\uAC74, \uC5F0\uB77D\uCC98 \uC815\uBCF4\" (instruction, not subtitle)\n \u2022 Do NOT include visual/layout instructions \u2014 title uses a fixed premium template\n\u26A0 Closing slide (LAST):\n \u2022 title: \"\uAC10\uC0AC\uD569\uB2C8\uB2E4\" (Korean) or \"Thank You\" (English)\n \u2022 content_direction: Same company/topic name as title slide\n \u2022 Do NOT include visual/layout instructions \u2014 closing uses a fixed premium template\n\n\u2550\u2550\u2550 LAYOUT VARIETY \u2550\u2550\u2550\n\u26A0 Vary the visual approach across slides. Do NOT use the same card-grid layout for every slide.\n Suggested variety: hero section, 2-column split, 3-card row, 2\u00D72 grid, big-number spotlight,\n comparison table, timeline with icons, full-width data bar, centered quote/highlight\n\n\u2550\u2550\u2550 COLOR PALETTE RULES \u2550\u2550\u2550\n\u26A0 NEVER use placeholder/example colors. EVERY presentation must have a UNIQUE palette:\n \u2022 Medical/Health: blues + greens (#0B5394, #27AE60)\n \u2022 Tech/AI: purples + cyans (#6C63FF, #00BCD4)\n \u2022 Finance: navy + gold (#1A237E, #F4A300)\n \u2022 Education: teal + orange (#00796B, #FF7043)\n \u2022 Marketing: coral + purple (#FF6B6B, #7C3AED)\n\u26A0 Choose colors that MATCH the specific topic. Generic blue = LAZY.\n\u26A0 Ensure accent_color has HIGH contrast with primary_color.\n\n\u2550\u2550\u2550 HARD RULES \u2550\u2550\u2550\n\u26A0 First slide MUST be type \"title\"\n\u26A0 Last slide MUST be type \"closing\" with \"\uAC10\uC0AC\uD569\uB2C8\uB2E4\"/\"Thank You\" as title\n\u26A0 ALL titles and content_direction MUST be in the SAME language as the user's instruction\n\u26A0 content_direction: include SPECIFIC data, names, numbers AND visual layout hints AND item count\n\u26A0 HARD MAXIMUM: 15 slides total. Slides beyond 15 are DISCARDED by the system. Aim for 10-12.\n\u26A0 Each slide's content_direction must be unique and substantive \u2014 no generic placeholders\n\nOutput ONLY the JSON object. No preamble, no markdown fences, no explanation.";
2
+ export declare const PPT_STRUCTURED_PLANNING_PROMPT = "You are a presentation structure planner. Output ONLY valid JSON \u2014 no markdown, no explanation, no code fences.\n\nGiven the user's instruction and CREATIVE GUIDANCE, produce a JSON object with this exact structure:\n\n{\n \"design\": {\n \"primary_color\": \"<CHOOSE: deep color matching the topic \u2014 NOT #1B2A4A>\",\n \"accent_color\": \"<CHOOSE: vibrant contrast color \u2014 NOT #00D4AA>\",\n \"background_color\": \"<CHOOSE: near-white or near-black or subtle tint>\",\n \"text_color\": \"<CHOOSE: must contrast with background>\",\n \"accent_light\": \"<CHOOSE: light tint of your accent color>\",\n \"gradient_end\": \"<CHOOSE: secondary gradient paired with primary>\",\n \"font_title\": \"Segoe UI\",\n \"font_body\": \"Malgun Gothic\",\n \"mood\": \"modern-minimal\",\n \"design_notes\": \"Describe your visual approach in 1-2 sentences\"\n },\n \"slides\": [\n { \"type\": \"title\", \"title\": \"...\", \"content_direction\": \"...\" },\n { \"type\": \"content\", \"title\": \"...\", \"content_direction\": \"...\" },\n { \"type\": \"closing\", \"title\": \"...\", \"content_direction\": \"...\" }\n ]\n}\n\n\u2550\u2550\u2550 FIELD DEFINITIONS \u2550\u2550\u2550\n\u2022 design.primary_color: Deep main color (headers, key elements)\n\u2022 design.accent_color: Vibrant contrast (highlights, CTAs)\n\u2022 design.background_color: Page background (near white, near black, or subtle tint)\n\u2022 design.text_color: Main text color (must contrast with background)\n\u2022 design.accent_light: Light tint for subtle section backgrounds\n\u2022 design.gradient_end: Paired gradient color for primary\n\u2022 design.font_title: System font for titles (Segoe UI, Arial, Georgia, Calibri)\n\u2022 design.font_body: System font for body (Malgun Gothic, Segoe UI, Arial, Calibri)\n\u2022 design.mood: One of modern-minimal, bold-energetic, corporate-elegant, warm-friendly, academic-clean\n\u2022 design.design_notes: 1-2 sentence visual approach description\n\n\u2022 slides[].type: One of \"title\", \"content\", \"closing\"\n\u2022 slides[].title: Slide title in user's language (max 60 chars)\n\u2022 slides[].content_direction: Detailed content direction (3-6 sentences). Include SPECIFIC data, names, numbers. Also describe the VISUAL APPROACH for this slide (e.g., \"3-column card grid showing...\", \"big centered number with explanation below...\", \"comparison table with 5 rows...\")\n\n\u2550\u2550\u2550 SLIDE TYPE GUIDELINES \u2550\u2550\u2550\nEvery presentation MUST have: 1 title slide (first) + 1 closing slide (last)\nContent slides between them \u2014 aim for 10-15 total slides.\n\nFor each content slide, the content_direction should specify:\n- What information to show (specific text, numbers, names)\n- How to lay it out (cards, columns, table, big number, timeline, etc.)\n- This is the ONLY instruction the HTML-generating LLM will see, so be DETAILED\n\n\u2550\u2550\u2550 TEMPLATES \u2550\u2550\u2550\nPITCH DECK (startup/\uC0AC\uC5C5\uACC4\uD68D\uC11C/\uD53C\uCE58\uB371): 12 slides\n title \u2192 problem \u2192 solution \u2192 market size \u2192 product \u2192 business model \u2192 competition \u2192 traction \u2192 team \u2192 roadmap \u2192 investment ask \u2192 closing\n\nBUSINESS REPORT (\uBCF4\uACE0\uC11C/\uBD84\uC11D/\uC2E4\uC801): 10 slides\n title \u2192 executive summary \u2192 key metrics \u2192 analysis \u2192 comparison \u2192 spotlight \u2192 breakdown \u2192 action plan \u2192 recommendations \u2192 closing\n\nTRAINING (\uAD50\uC721/\uC138\uBBF8\uB098/\uAC15\uC758): 10 slides\n title \u2192 objectives \u2192 core concepts \u2192 key data \u2192 process \u2192 details \u2192 case study \u2192 summary \u2192 key takeaway \u2192 closing\n\nPRODUCT LAUNCH (\uC81C\uD488/\uCD9C\uC2DC/\uC18C\uAC1C): 11 slides\n title \u2192 market need \u2192 overview \u2192 key feature \u2192 features \u2192 metrics \u2192 use cases \u2192 pricing \u2192 timeline \u2192 CTA \u2192 closing\n\nGENERAL (\uBC1C\uD45C/\uD504\uB808\uC820\uD14C\uC774\uC158): 10 slides\n title \u2192 overview \u2192 key points \u2192 data \u2192 detail \u2192 spotlight \u2192 comparison \u2192 process \u2192 summary \u2192 closing\n\n\u2550\u2550\u2550 CONTENT DENSITY RULES \u2014 STRICT LIMITS \u2550\u2550\u2550\n\u26A0 MAXIMUM 3 descriptive cards per slide. NEVER 4, 5, or 6 cards with descriptions.\n \u2022 3 items: 3-column card row (preferred)\n \u2022 4 items: 2\u00D72 grid BUT each card has title + 1-line subtitle ONLY (no paragraphs)\n \u2022 5+ items: split into 2 slides, OR use a compact table/list instead of cards\n\u26A0 Team/People: MAXIMUM 3 people per slide. Show name, role, 1-line bio.\n\u26A0 Tables: maximum 4 data rows \u00D7 4 columns. Put items as ROWS, metrics as columns.\n\u26A0 Timeline/Roadmap: maximum 3-4 milestones per slide.\n\u26A0 Comparison/Competition: MUST use a proper HTML table with competitors as ROWS. Example layout:\n | Company | Metric1 | Metric2 | Metric3 | \u2190 column headers\n | CompA | value | value | value | \u2190 each competitor = one row\n | CompB | value | value | value |\n Max 4 competitor rows \u00D7 3-4 metric columns. content_direction MUST describe this exact structure.\n\u26A0 Data/metrics: maximum 3 big numbers per slide. ONE chart type only (bar OR pie, not both).\n\u26A0 Each slide = ONE visual approach. NEVER mix table + chart, chart + cards, or pricing + strategy on same slide.\n\u26A0 Business model: Show EITHER revenue model OR pricing table \u2014 NOT both. Split into 2 slides if needed.\n\u26A0 Market data: Show EITHER a bar chart OR metric cards \u2014 NOT bar chart + pie chart together.\n\u26A0 content_direction MUST specify the exact number of items AND the layout:\n \u2022 GOOD: \"3 cards in a row showing: [item1], [item2], [item3]\"\n \u2022 GOOD: \"Comparison table with 4 rows (competitors) \u00D7 3 columns (metrics)\"\n \u2022 BAD: \"show all the company's products and features\" (too vague, will overflow)\n \u2022 BAD: \"5 team member cards with detailed bios\" (too many, will overflow)\n\n\u2550\u2550\u2550 TITLE & CLOSING SLIDE FORMAT \u2550\u2550\u2550\n\u26A0 Title slide (FIRST):\n \u2022 title: Company/topic name ONLY \u2014 max 3-4 words, rendered at 96px by system\n \u2713 GOOD: \"MediAI\" \u2713 GOOD: \"\uC0BC\uC131\uC804\uC790 AI\uC13C\uD130\"\n \u2717 BAD: \"MediAI - \uC778\uACF5\uC9C0\uB2A5\uC73C\uB85C \uC758\uB8CC \uD601\uC2E0\uC744 \uC120\uB3C4\uD569\uB2C8\uB2E4\" (too long, wraps at 96px)\n \u2022 content_direction: The actual subtitle/tagline TEXT. 1-2 lines, under 120 chars.\n \u2713 GOOD: \"AI \uAE30\uBC18 \uC758\uB8CC \uC9C4\uB2E8 \uD601\uC2E0 \uD50C\uB7AB\uD3FC \u2014 \uD22C\uC790\uC720\uCE58 \uBC1C\uD45C\uC790\uB8CC\"\n \u2717 BAD: \"\uD68C\uC0AC \uB85C\uACE0, \uC2AC\uB85C\uAC74, \uC5F0\uB77D\uCC98 \uC815\uBCF4\" (instruction, not subtitle)\n \u2022 Do NOT include visual/layout instructions \u2014 title uses a fixed premium template\n\u26A0 Closing slide (LAST):\n \u2022 title: \"\uAC10\uC0AC\uD569\uB2C8\uB2E4\" (Korean) or \"Thank You\" (English)\n \u2022 content_direction: Same company/topic name as title slide\n \u2022 Do NOT include visual/layout instructions \u2014 closing uses a fixed premium template\n\n\u2550\u2550\u2550 LAYOUT VARIETY \u2550\u2550\u2550\n\u26A0 Vary the visual approach across slides. Do NOT use the same card-grid layout for every slide.\n Suggested variety: hero section, 2-column split, 3-card row, 2\u00D72 grid, big-number spotlight,\n comparison table, timeline with icons, full-width data bar, centered quote/highlight\n\n\u2550\u2550\u2550 COLOR PALETTE RULES \u2550\u2550\u2550\n\u26A0 NEVER use placeholder/example colors. EVERY presentation must have a UNIQUE palette:\n \u2022 Medical/Health: blues + greens (#0B5394, #27AE60)\n \u2022 Tech/AI: purples + cyans (#6C63FF, #00BCD4)\n \u2022 Finance: navy + gold (#1A237E, #F4A300)\n \u2022 Education: teal + orange (#00796B, #FF7043)\n \u2022 Marketing: coral + purple (#FF6B6B, #7C3AED)\n\u26A0 Choose colors that MATCH the specific topic. Generic blue = LAZY.\n\u26A0 Ensure accent_color has HIGH contrast with primary_color.\n\n\u2550\u2550\u2550 HARD RULES \u2550\u2550\u2550\n\u26A0 First slide MUST be type \"title\"\n\u26A0 Last slide MUST be type \"closing\" with \"\uAC10\uC0AC\uD569\uB2C8\uB2E4\"/\"Thank You\" as title\n\u26A0 ALL titles and content_direction MUST be in the SAME language as the user's instruction\n\u26A0 content_direction: include SPECIFIC data, names, numbers AND visual layout hints AND item count\n\u26A0 HARD MAXIMUM: 15 slides total. Slides beyond 15 are DISCARDED by the system. Aim for 10-12.\n\u26A0 Each slide's content_direction must be unique and substantive \u2014 no generic placeholders\n\nOutput ONLY the JSON object. No preamble, no markdown fences, no explanation.";
3
3
  export interface DesignSystem {
4
4
  primary_color: string;
5
5
  accent_color: string;
@@ -1 +1 @@
1
- {"version":3,"file":"powerpoint-create-prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,6BAA6B,yyDA4BA,CAAC;AAM3C,eAAO,MAAM,8BAA8B,q2PAmHmC,CAAC;AAM/E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAgFR;AAMD,eAAO,MAAM,wBAAwB,2pDA6BmC,CAAC;AAEzE,eAAO,MAAM,0BAA0B,wlBAaqB,CAAC;AAG7D,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAqBR"}
1
+ {"version":3,"file":"powerpoint-create-prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,6BAA6B,yyDA4BA,CAAC;AAM3C,eAAO,MAAM,8BAA8B,wrRA6HmC,CAAC;AAM/E,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAyFR;AAMD,eAAO,MAAM,wBAAwB,2pDA6BmC,CAAC;AAEzE,eAAO,MAAM,0BAA0B,wlBAaqB,CAAC;AAG7D,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,GACpB,MAAM,CAqBR"}
@@ -92,18 +92,28 @@ PRODUCT LAUNCH (제품/출시/소개): 11 slides
92
92
  GENERAL (발표/프레젠테이션): 10 slides
93
93
  title → overview → key points → data → detail → spotlight → comparison → process → summary → closing
94
94
 
95
- ═══ CONTENT DENSITY RULES ═══
96
- Each slide must display a MANAGEABLE amount of information:
97
- Card grids: maximum 4 cards per slide (2×2 grid preferred for 4 items), 3-4 bullets per card max
98
- Tables: maximum 5 data rows × 4 columns. Put items as ROWS, metrics as columns.
99
- Timeline/Roadmap: maximum 4-5 milestones per slide. If more needed, split into 2 slides.
100
- Comparison/Competition: put competitors as ROWS in a table (not columns). Max 4-5 competitor rows.
101
- Data/metrics: maximum 3-4 big numbers per slide
95
+ ═══ CONTENT DENSITY RULES — STRICT LIMITS ═══
96
+ MAXIMUM 3 descriptive cards per slide. NEVER 4, 5, or 6 cards with descriptions.
97
+ 3 items: 3-column card row (preferred)
98
+ 4 items: 2×2 grid BUT each card has title + 1-line subtitle ONLY (no paragraphs)
99
+ 5+ items: split into 2 slides, OR use a compact table/list instead of cards
100
+ Team/People: MAXIMUM 3 people per slide. Show name, role, 1-line bio.
101
+ Tables: maximum 4 data rows × 4 columns. Put items as ROWS, metrics as columns.
102
+ ⚠ Timeline/Roadmap: maximum 3-4 milestones per slide.
103
+ ⚠ Comparison/Competition: MUST use a proper HTML table with competitors as ROWS. Example layout:
104
+ | Company | Metric1 | Metric2 | Metric3 | ← column headers
105
+ | CompA | value | value | value | ← each competitor = one row
106
+ | CompB | value | value | value |
107
+ Max 4 competitor rows × 3-4 metric columns. content_direction MUST describe this exact structure.
108
+ ⚠ Data/metrics: maximum 3 big numbers per slide. ONE chart type only (bar OR pie, not both).
109
+ ⚠ Each slide = ONE visual approach. NEVER mix table + chart, chart + cards, or pricing + strategy on same slide.
110
+ ⚠ Business model: Show EITHER revenue model OR pricing table — NOT both. Split into 2 slides if needed.
111
+ ⚠ Market data: Show EITHER a bar chart OR metric cards — NOT bar chart + pie chart together.
102
112
  ⚠ content_direction MUST specify the exact number of items AND the layout:
103
113
  • GOOD: "3 cards in a row showing: [item1], [item2], [item3]"
104
114
  • GOOD: "Comparison table with 4 rows (competitors) × 3 columns (metrics)"
105
115
  • BAD: "show all the company's products and features" (too vague, will overflow)
106
- • BAD: "compare 5 companies side by side in columns" (too many columns, will be unreadable)
116
+ • BAD: "5 team member cards with detailed bios" (too many, will overflow)
107
117
 
108
118
  ═══ TITLE & CLOSING SLIDE FORMAT ═══
109
119
  ⚠ Title slide (FIRST):
@@ -193,30 +203,39 @@ Notes: ${design.design_notes}
193
203
  13. All visual elements (bars, charts, numbers) must have at least 20px gap between them — NO overlapping
194
204
 
195
205
  ═══ ABSOLUTE LAYOUT LIMITS — VIOLATION = FAILURE ═══
206
+ • CRITICAL: Wrap ALL slide content in a single container div with: max-height: 960px; overflow: hidden; padding: 60px 80px;
207
+ This guarantees nothing overflows the 1080px viewport.
208
+ • MAXIMUM 3 descriptive cards per slide. Each card: title (24-28px bold) + 2-3 bullet points (20-22px).
209
+ - If you need 4+ items, use a 2×2 grid with ONLY title + 1-line subtitle per card (no bullets).
210
+ - NEVER put 5 or 6 detailed cards on one slide.
196
211
  • MAXIMUM 3 items side by side in any horizontal row. NEVER 4, 5, 6, or 7 columns.
197
212
  - 2 items: use 2-column (50/50 or 60/40) split
198
213
  - 3 items: use 3-column with min 350px each
199
- - 4 items: use 2×2 GRID (2 rows × 2 columns), NOT 4 columns in a row
200
- - 5+ items: use 3 grid or vertical list NEVER put all in one row
201
- • Comparison/Competition tables: put competitors as ROWS (vertical), NOT columns. Example:
202
- | Company | Metric 1 | Metric 2 | Metric 3 |
203
- Put EACH competitor as one ROW. Do NOT create 5+ columns for companies.
204
- • Timeline/Roadmap: MAXIMUM 4 steps in a horizontal row. Use vertical layout for 5+.
205
- Table: MAXIMUM 5 data rows. Minimum cell padding: 12px. Min column width: 150px.
206
- Cards: MAXIMUM 3-4 bullet points per card. Each bullet MUST be 1 line only.
207
- • Minimum element width: 300px for cards, 150px for table columns
208
- ALL content must end ABOVE y=980px leave 100px bottom margin. If content overflows, REDUCE item count.
214
+ - 4 items: use 2×2 GRID (2 rows × 2 columns), NOT 4 columns
215
+ Team/People: MAXIMUM 3 people per slide. Circle avatar + name + role + 1-line bio.
216
+ • Comparison/Competition tables: MUST use standard HTML <table> with competitors as ROWS:
217
+ <table> header row: empty | Metric1 | Metric2 | Metric3
218
+ Each data row: CompanyName | value | value | value
219
+ Style: header row with dark bg + white text, data rows with alternating light bg.
220
+ Max 4 data rows × 3-4 columns. Highlight "our company" row with accent background.
221
+ Timeline/Roadmap: MAXIMUM 4 steps. Use 2×2 grid or vertical list.
222
+ Table: MAXIMUM 4 data rows. Minimum cell padding: 12px. Min column width: 150px.
223
+ Cards: MAXIMUM 3 bullet points per card. Each bullet MUST be 1 line only (max 40 chars).
224
+ • Minimum element width: 350px for cards, 150px for table columns
225
+ • Minimum text size: body text 22px, bullets 20px, card titles 24px. NEVER go below 20px.
226
+ • ALL content must end ABOVE y=960px. If content overflows, REMOVE items — do NOT shrink text.
209
227
  • NEVER create bar chart labels that overlap with bars — position labels ABOVE or BELOW
210
- If your content doesn't fit, REMOVE items rather than shrinking text below 20px
228
+ ONE visual approach per slide. Do NOT combine table + chart, or metrics row + card grid.
211
229
 
212
230
  ═══ CONTENT RULES ═══
213
231
  • ${langRule}
214
232
  • Generate REAL, specific, professional content — NO placeholders like "[내용]" or "Lorem ipsum"
215
233
  • Fill ALL areas with actual content — no empty sections
216
- • Keep text readable: sufficient contrast, appropriate sizes, minimum 20px for body text
217
- • Balance text and whitespace — do not overcrowd. Max 70% content area, 30% whitespace.
218
- Maximum 2 visual sections per slide. A metrics row + a card grid = TOO MUCH. Choose ONE main visual approach.
219
- • Bar/column chart labels: position text ABOVE each bar with enough gap. Never let labels overlap bars or each other.
234
+ • Keep text readable: sufficient contrast, appropriate sizes. MINIMUM body text: 22px. MINIMUM any text: 20px.
235
+ • Balance text and whitespace — do not overcrowd. Max 60% content area, 40% whitespace.
236
+ ONE visual approach per slide. A metrics row + a card grid = TOO MUCH. Choose ONE.
237
+ • Bar/column chart labels: position text ABOVE each bar with enough gap. Never let labels overlap.
238
+ • LESS IS MORE: 3 well-designed cards > 6 cramped cards. Remove items to improve quality.
220
239
 
221
240
  ═══ SLIDE PAGE NUMBER ═══
222
241
  Add a small page number "${slideIndex + 1}" in the bottom-right corner (12px, opacity 0.4)
@@ -1 +1 @@
1
- {"version":3,"file":"powerpoint-create-prompts.js","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA4BH,CAAC;AAM3C,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EAmHgC,CAAC;AAuB/E,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,gBAAwB,EACxB,MAAoB,EACpB,UAAkB,EAClB,WAAmB,EACnB,QAAqB;IAErB,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI;QAChC,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,sCAAsC,CAAC;IAE3C,OAAO;;;;UAIC,UAAU;QACZ,UAAU,GAAG,CAAC,OAAO,WAAW;;;EAGtC,gBAAgB;;;WAGP,MAAM,CAAC,aAAa;UACrB,MAAM,CAAC,YAAY;cACf,MAAM,CAAC,gBAAgB;QAC7B,MAAM,CAAC,UAAU;gBACT,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,YAAY;cACrB,MAAM,CAAC,UAAU;aAClB,MAAM,CAAC,SAAS;QACrB,MAAM,CAAC,IAAI;SACV,MAAM,CAAC,YAAY;;;;;;yBAMH,MAAM,CAAC,UAAU,OAAO,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqC7D,QAAQ;;;;;;;;;2BASe,UAAU,GAAG,CAAC;;wFAE+C,CAAC;AACzF,CAAC;AAMD,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEA6BgC,CAAC;AAEzE,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;4DAakB,CAAC;AAG7D,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,KAAa,EACb,SAAiB,EACjB,QAAgB,EAChB,QAAqB;IAErB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI;QAChC,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,8BAA8B,CAAC;IAEnC,OAAO,2BAA2B,KAAK;;;;EAIvC,SAAS;;;EAGT,QAAQ;;;IAGN,QAAQ;;;0DAG8C,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"powerpoint-create-prompts.js","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA4BH,CAAC;AAM3C,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA6HgC,CAAC;AAuB/E,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,gBAAwB,EACxB,MAAoB,EACpB,UAAkB,EAClB,WAAmB,EACnB,QAAqB;IAErB,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI;QAChC,CAAC,CAAC,gEAAgE;QAClE,CAAC,CAAC,sCAAsC,CAAC;IAE3C,OAAO;;;;UAIC,UAAU;QACZ,UAAU,GAAG,CAAC,OAAO,WAAW;;;EAGtC,gBAAgB;;;WAGP,MAAM,CAAC,aAAa;UACrB,MAAM,CAAC,YAAY;cACf,MAAM,CAAC,gBAAgB;QAC7B,MAAM,CAAC,UAAU;gBACT,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,YAAY;cACrB,MAAM,CAAC,UAAU;aAClB,MAAM,CAAC,SAAS;QACrB,MAAM,CAAC,IAAI;SACV,MAAM,CAAC,YAAY;;;;;;yBAMH,MAAM,CAAC,UAAU,OAAO,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6C7D,QAAQ;;;;;;;;;;2BAUe,UAAU,GAAG,CAAC;;wFAE+C,CAAC;AACzF,CAAC;AAMD,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEA6BgC,CAAC;AAEzE,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;4DAakB,CAAC;AAG7D,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,KAAa,EACb,SAAiB,EACjB,QAAgB,EAChB,QAAqB;IAErB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI;QAChC,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,8BAA8B,CAAC;IAEnC,OAAO,2BAA2B,KAAK;;;;EAIvC,SAAS;;;EAGT,QAAQ;;;IAGN,QAAQ;;;0DAG8C,CAAC;AAC3D,CAAC"}
@@ -7,7 +7,7 @@ export declare const PROJECTS_DIR: string;
7
7
  export declare const CREDENTIALS_FILE_PATH: string;
8
8
  export declare const APP_NAME = "hanseol-dev";
9
9
  export declare const SERVICE_ID = "hanseol";
10
- export declare const APP_VERSION = "5.0.2-dev.61";
10
+ export declare const APP_VERSION = "5.0.2-dev.63";
11
11
  export declare const DASHBOARD_URL = "https://52.78.246.50.nip.io";
12
12
  export declare const ONCE_URL = "https://52.78.246.50.nip.io:5090";
13
13
  export declare const FREE_URL = "https://52.78.246.50.nip.io:6090";
package/dist/constants.js CHANGED
@@ -9,7 +9,7 @@ export const PROJECTS_DIR = path.join(LOCAL_HOME_DIR, 'projects');
9
9
  export const CREDENTIALS_FILE_PATH = path.join(LOCAL_HOME_DIR, 'credentials.json');
10
10
  export const APP_NAME = 'hanseol-dev';
11
11
  export const SERVICE_ID = 'hanseol';
12
- export const APP_VERSION = '5.0.2-dev.61';
12
+ export const APP_VERSION = '5.0.2-dev.63';
13
13
  export const DASHBOARD_URL = 'https://52.78.246.50.nip.io';
14
14
  export const ONCE_URL = 'https://52.78.246.50.nip.io:5090';
15
15
  export const FREE_URL = 'https://52.78.246.50.nip.io:6090';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hanseol-dev",
3
- "version": "5.0.2-dev.61",
3
+ "version": "5.0.2-dev.63",
4
4
  "description": "Hanseol - OpenAI-Compatible Coding Agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",