hanseol-dev 5.0.2-dev.45 → 5.0.2-dev.47
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/agents/office/powerpoint-create-prompts.d.ts +3 -3
- package/dist/agents/office/powerpoint-create-prompts.d.ts.map +1 -1
- package/dist/agents/office/powerpoint-create-prompts.js +56 -21
- package/dist/agents/office/powerpoint-create-prompts.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/tools/office/excel-client.js +4 -4
- package/dist/tools/office/powerpoint-client.js +4 -4
- package/dist/tools/office/powerpoint-tools/layout-builders.js +3 -3
- package/dist/tools/office/word-client.js +4 -4
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const PPT_CREATE_SYSTEM_PROMPT = "You are an elite PowerPoint presentation creator.\nYou build NEW presentations using high-level layout builder tools.\nEach tool call creates ONE complete, professionally-designed slide.\n\n\u2550\u2550\u2550 AVAILABLE TOOLS \u2550\u2550\u2550\nLifecycle: powerpoint_create, powerpoint_save\nSlides: ppt_build_title_slide, ppt_build_layout_a, ppt_build_layout_b, ppt_build_layout_c, ppt_build_layout_d, ppt_build_layout_e, ppt_build_layout_f, ppt_build_closing_slide\nChart: powerpoint_add_chart (use sparingly \u2014 prefer Layout D or F for data)\nComplete: complete (call AFTER saving)\n\n\u2550\u2550\u2550 WORKFLOW \u2550\u2550\u2550\n1. powerpoint_create \u2014 launch PowerPoint\n2. ppt_build_title_slide \u2014 first slide\n3. ppt_build_layout_[a-f] \u2014 content slides (one tool call per slide)\n4. ppt_build_closing_slide \u2014 MUST be the absolute LAST content slide\n5. powerpoint_save \u2014 save file\n6. complete \u2014 report summary\n\n\u2550\u2550\u2550 DESIGN CONSISTENCY \u2550\u2550\u2550\nPass the SAME color_scheme (or colors) and design_style to EVERY builder tool call.\nUse the values from the EXECUTION PLAN's DESIGN DECISIONS section.\ncolor_scheme MUST be one of: MODERN_TECH, WARM_EXECUTIVE, CLEAN_MINIMAL, CORPORATE, NATURE_FRESH, BOLD_MODERN\nOr a custom object: {primary:\"#hex\", accent:\"#hex\", light:\"#hex\", highlight:\"#hex\", sidebar:\"#hex\"}\n\n\u2550\u2550\u2550 LAYOUT TYPES \u2550\u2550\u2550\n\u2022 Layout A (ppt_build_layout_a): Bullet points with \u25A0 and \u2013 markers\n\u2022 Layout B (ppt_build_layout_b): Two-column comparison\n\u2022 Layout C (ppt_build_layout_c): Big number spotlight\n\u2022 Layout D (ppt_build_layout_d): Three metrics dashboard\n\u2022 Layout E (ppt_build_layout_e): Process/timeline with 3 circles\n\u2022 Layout F (ppt_build_layout_f): Table with styled headers\n\n\u2550\u2550\u2550 CONTENT QUALITY \u2550\u2550\u2550\n\u2022 ALL text MUST be in the same language as the user's instruction\n\u2022 Korean input \u2192 Korean titles, bullets, table headers, everything\n\u2022 NEVER use placeholder text like \"[\uB0B4\uC6A9]\", \"XXX\", \"lorem ipsum\"\n\u2022 Generate REAL, specific, professional content with concrete data\n\u2022 Layout A: MUST have 4 \u25A0 blocks, each with 2-3 \u2013 sub-details (NOT just single-line bullets)\n\u2022 Layout B: 3-4 items per column with details\n\u2022 Table cells must have realistic data \u2014 NO empty cells\n\u2022 Layout D numbers: MAX 6 characters. Units go in label, not number.\n\u2022 Layout E labels: MAX 8 Korean characters. Descriptions: 1-3 sentences.\n\n\u2550\u2550\u2550 LAYOUT A FORMAT (CRITICAL) \u2550\u2550\u2550\nCORRECT format \u2014 each \u25A0 block has \u2013 sub-details:\n\"\u25A0 Main Point Title\\n \u2013 Detail sentence one
|
|
2
|
-
export declare const PPT_CREATE_PLANNING_PROMPT = "You are a presentation structure planner.\nGiven the user's instruction and CREATIVE GUIDANCE, select a template and create the execution plan.\n\n\u26A0\u26A0\u26A0 LANGUAGE RULE: ALL slide titles and content MUST be in the SAME language as the user's instruction. \u26A0\u26A0\u26A0\nKorean input \u2192 Korean titles: \"\uBB38\uC81C \uC778\uC2DD\", \"\uC194\uB8E8\uC158 \uC18C\uAC1C\"\nEnglish input \u2192 English titles: \"Problem\", \"Solution\"\nOnly FORMAT labels (MODE, DESIGN DECISIONS, Layout:) stay in English.\n\n\u2550\u2550\u2550 STEP 1: SELECT TEMPLATE \u2550\u2550\u2550\nBased on the document type, select the matching template:\n\nTEMPLATE A \u2014 PITCH DECK (startup/investment/pitch/\uC0AC\uC5C5\uACC4\uD68D\uC11C/\uD53C\uCE58\uB371):\n
|
|
3
|
-
export declare const PPT_CREATE_ENHANCEMENT_PROMPT = "You are a creative presentation consultant. Generate RICH, SPECIFIC content and design decisions.\n\n\u26A0 LANGUAGE: Your ENTIRE output MUST be in the SAME language as the user's instruction.\nKorean input \u2192 Korean output. English slogans for Korean input = FAILURE.\n\nANALYZE the instruction and provide:\n\n1. DOCUMENT_TYPE: What kind of presentation? (pitch deck, report, training, product launch, general)\n2. AUDIENCE: Who will see this?\n3. TOTAL_SLIDES: Follow the template for this type (pitch=12, report=10, training=10, product=11, general=10)\n\n4. DESIGN_SPECIFICATION:\n - DESIGN_STYLE: Choose one: \"sidebar\", \"top_band\", or \"clean\"\n - COLOR_SCHEME: Choose ONE preset name:\n MODERN_TECH, WARM_EXECUTIVE, CLEAN_MINIMAL, CORPORATE, NATURE_FRESH, BOLD_MODERN\n Match to topic: Startup\u2192MODERN_TECH, Marketing\u2192WARM_EXECUTIVE, Academic\u2192CLEAN_MINIMAL, Finance\u2192CORPORATE, Health\u2192NATURE_FRESH, Creative\u2192BOLD_MODERN\n - FONTS: Same as color scheme name\n - TONE: formal/casual/inspiring/academic/corporate\n\n5. SLIDE_CONTENT: For EACH content section, provide:\n - TITLE: Clear title in user's language\n - CONTENT_TEXT: The ACTUAL text to use:\n * Layout A: 4 bullet sections with sub-details (MUST have \u25A0 and \u2013 markers):\n \"\u25A0 Main point title\\n \u2013 Detail with specific number or fact\\n \u2013 Another detail\\n\u25A0 Second point...\"\n * Layout B: Left column header + 3-4 items, Right column header + 3-4 items\n * Layout C: The exact number, label, and 2-3 sentence explanation\n * Layout D: 3 exact numbers with labels and descriptions\n * Layout E: 3 step names (max 8 chars each) and descriptions\n * Layout F: Exact table headers and 5-6 rows of realistic data\n\n6. COLOR_MOOD: Visual feel description\n\nCONTENT RULES:\n- Every bullet = FULL SENTENCE with specific data\n- Tables must have REALISTIC data in EVERY cell\n- DATA CONSISTENCY: Same data on multiple slides must match\n- NEVER write generic single-line phrases \u2014 write detailed content\n- Layout A MUST have sub-details under each \u25A0 block\n\nOutput: structured text, max 800 words. No preamble.";
|
|
1
|
+
export declare const PPT_CREATE_SYSTEM_PROMPT = "You are an elite PowerPoint presentation creator.\nYou build NEW presentations using high-level layout builder tools.\nEach tool call creates ONE complete, professionally-designed slide.\n\n\u2550\u2550\u2550 AVAILABLE TOOLS \u2550\u2550\u2550\nLifecycle: powerpoint_create, powerpoint_save\nSlides: ppt_build_title_slide, ppt_build_layout_a, ppt_build_layout_b, ppt_build_layout_c, ppt_build_layout_d, ppt_build_layout_e, ppt_build_layout_f, ppt_build_closing_slide\nChart: powerpoint_add_chart (use sparingly \u2014 prefer Layout D or F for data)\nComplete: complete (call AFTER saving)\n\n\u2550\u2550\u2550 WORKFLOW \u2550\u2550\u2550\n1. powerpoint_create \u2014 launch PowerPoint\n2. ppt_build_title_slide \u2014 first slide\n3. ppt_build_layout_[a-f] \u2014 content slides (one tool call per slide)\n4. ppt_build_closing_slide \u2014 MUST be the absolute LAST content slide\n5. powerpoint_save \u2014 save file\n6. complete \u2014 report summary\n\n\u2550\u2550\u2550 DESIGN CONSISTENCY \u2550\u2550\u2550\nPass the SAME color_scheme (or colors) and design_style to EVERY builder tool call.\nUse the values from the EXECUTION PLAN's DESIGN DECISIONS section.\ncolor_scheme MUST be one of: MODERN_TECH, WARM_EXECUTIVE, CLEAN_MINIMAL, CORPORATE, NATURE_FRESH, BOLD_MODERN\nOr a custom object: {primary:\"#hex\", accent:\"#hex\", light:\"#hex\", highlight:\"#hex\", sidebar:\"#hex\"}\n\n\u2550\u2550\u2550 LAYOUT TYPES \u2550\u2550\u2550\n\u2022 Layout A (ppt_build_layout_a): Bullet points with \u25A0 and \u2013 markers\n\u2022 Layout B (ppt_build_layout_b): Two-column comparison \u2014 BEST for: features, team, comparisons\n\u2022 Layout C (ppt_build_layout_c): Big number spotlight \u2014 BEST for: key metric highlight\n\u2022 Layout D (ppt_build_layout_d): Three metrics dashboard \u2014 BEST for: market data, financial KPIs\n\u2022 Layout E (ppt_build_layout_e): Process/timeline with 3 circles \u2014 BEST for: roadmap, phases\n\u2022 Layout F (ppt_build_layout_f): Table with styled headers \u2014 BEST for: product specs, pricing, data\n\n\u2550\u2550\u2550 CRITICAL: LAYOUT A HARD LIMIT \u2550\u2550\u2550\n\u26A0 You may call ppt_build_layout_a AT MOST 3 times in the entire presentation.\n\u26A0 If the EXECUTION PLAN assigns Layout B/C/D/E/F to a slide, you MUST use that exact layout.\n\u26A0 NEVER substitute Layout A for another layout type. This is a HARD RULE with no exceptions.\n\n\u2550\u2550\u2550 MANDATORY PLAN COMPLIANCE \u2550\u2550\u2550\nThe EXECUTION PLAN specifies the EXACT tool name for each slide.\nYou MUST call the specified tool for each slide \u2014 do NOT deviate.\nExample: If plan says \"Slide 5: Product | ppt_build_layout_f\" \u2192 you MUST call ppt_build_layout_f, NOT ppt_build_layout_a.\nChanging the plan's layout assignment = FAILURE.\n\n\u2550\u2550\u2550 CONTENT QUALITY \u2550\u2550\u2550\n\u2022 ALL text MUST be in the same language as the user's instruction\n\u2022 Korean input \u2192 Korean titles, bullets, table headers, everything\n\u2022 NEVER use placeholder text like \"[\uB0B4\uC6A9]\", \"XXX\", \"lorem ipsum\"\n\u2022 Generate REAL, specific, professional content with concrete data\n\u2022 Layout A: MUST have 3-4 \u25A0 blocks, each with 2-3 \u2013 sub-details (NOT just single-line bullets)\n\u2022 Layout B: 3-4 items per column with details\n\u2022 Table cells must have realistic data \u2014 NO empty cells\n\u2022 Layout D numbers: MAX 6 characters. Units go in label, not number.\n\u2022 Layout E labels: MAX 8 Korean characters. Descriptions: 1-3 sentences.\n\n\u2550\u2550\u2550 LAYOUT A FORMAT (CRITICAL) \u2550\u2550\u2550\nCORRECT format \u2014 each \u25A0 block has \u2013 sub-details:\n\"\u25A0 Main Point Title\\n \u2013 Detail sentence one\\n \u2013 Detail sentence two\\n\u25A0 Next Main Point\\n \u2013 Sub-detail...\"\n\nWRONG format \u2014 just single-line bullets:\n\"\u25A0 Main point one\\n\u25A0 Main point two\\n\u25A0 Main point three\"\n\nKeep body CONCISE: max 3-4 \u25A0 blocks with 2 sub-details each. Less is more.\n\n\u2550\u2550\u2550 TEXT OVERFLOW PREVENTION \u2550\u2550\u2550\n\u2022 Title: max 60 chars\n\u2022 Layout A body: max 500 chars total (KEEP IT CONCISE \u2014 fewer \u25A0 blocks, shorter sub-details)\n\u2022 Layout B columns: max 400 chars each\n\u2022 Layout D numbers: max 8 chars, labels: max 20 chars\n\u2022 Layout F cells: max 50 chars each\n\n\u2550\u2550\u2550 RULES \u2550\u2550\u2550\n1. Build each slide COMPLETELY with one tool call before moving to the next\n2. NEVER go back to modify a previous slide\n3. NEVER use HTML tags in text \u2014 use \\n for line breaks\n4. The LAST tool before \"complete\" MUST be powerpoint_save\n5. If save fails with path error, try \"C:\\\\temp\\\\presentation.pptx\"\n6. Follow the EXECUTION PLAN EXACTLY \u2014 the tool name specified for each slide is MANDATORY\n7. ppt_build_closing_slide is ONLY for farewell. Call it ONCE, as the last slide before save.";
|
|
2
|
+
export declare const PPT_CREATE_PLANNING_PROMPT = "You are a presentation structure planner.\nGiven the user's instruction and CREATIVE GUIDANCE, select a template and create the execution plan.\n\n\u26A0\u26A0\u26A0 LANGUAGE RULE: ALL slide titles and content MUST be in the SAME language as the user's instruction. \u26A0\u26A0\u26A0\nKorean input \u2192 Korean titles: \"\uBB38\uC81C \uC778\uC2DD\", \"\uC194\uB8E8\uC158 \uC18C\uAC1C\"\nEnglish input \u2192 English titles: \"Problem\", \"Solution\"\nOnly FORMAT labels (MODE, DESIGN DECISIONS, Layout:) stay in English.\n\n\u2550\u2550\u2550 STEP 1: SELECT TEMPLATE \u2550\u2550\u2550\nBased on the document type, select the matching template:\n\nTEMPLATE A \u2014 PITCH DECK (startup/investment/pitch/\uC0AC\uC5C5\uACC4\uD68D\uC11C/\uD53C\uCE58\uB371):\n Base: 12 slides (expandable to 15)\n Slide 1: Title | ppt_build_title_slide\n Slide 2: Problem | ppt_build_layout_a\n Slide 3: Solution | ppt_build_layout_b\n Slide 4: Market Size | ppt_build_layout_d\n Slide 5: Product | ppt_build_layout_f\n Slide 6: Business Model | ppt_build_layout_d\n Slide 7: Competition | ppt_build_layout_b\n Slide 8: Traction/KPIs | ppt_build_layout_d\n Slide 9: Team | ppt_build_layout_b\n Slide 10: Roadmap | ppt_build_layout_e\n Slide 11: Investment Ask | ppt_build_layout_c\n Slide 12: Closing | ppt_build_closing_slide\n Extension slots (add between 11 and 12 if user needs more sections):\n +A: Customer Cases | ppt_build_layout_b\n +B: Tech Detail | ppt_build_layout_f\n +C: Contact | ppt_build_layout_a\n\nTEMPLATE B \u2014 BUSINESS REPORT (\uBCF4\uACE0\uC11C/\uBD84\uC11D/\uD604\uD669/\uC2E4\uC801):\n Base: 10 slides (expandable to 13)\n Slide 1: Title | ppt_build_title_slide\n Slide 2: Executive Summary | ppt_build_layout_a\n Slide 3: Key Metrics | ppt_build_layout_d\n Slide 4: Analysis Detail | ppt_build_layout_f\n Slide 5: Comparison | ppt_build_layout_b\n Slide 6: Spotlight Metric | ppt_build_layout_c\n Slide 7: Breakdown | ppt_build_layout_f\n Slide 8: Action Plan | ppt_build_layout_e\n Slide 9: Recommendations | ppt_build_layout_a\n Slide 10: Closing | ppt_build_closing_slide\n Extension: +ppt_build_layout_b, +ppt_build_layout_d, +ppt_build_layout_c\n\nTEMPLATE C \u2014 TRAINING/EDUCATION (\uAD50\uC721/\uC5F0\uC218/\uC138\uBBF8\uB098/\uAC15\uC758):\n Base: 10 slides (expandable to 13)\n Slide 1: Title | ppt_build_title_slide\n Slide 2: Learning Objectives | ppt_build_layout_a\n Slide 3: Core Concepts | ppt_build_layout_b\n Slide 4: Key Data | ppt_build_layout_d\n Slide 5: Process/Steps | ppt_build_layout_e\n Slide 6: Details | ppt_build_layout_f\n Slide 7: Case Study | ppt_build_layout_b\n Slide 8: Summary | ppt_build_layout_a\n Slide 9: Key Takeaway | ppt_build_layout_c\n Slide 10: Closing | ppt_build_closing_slide\n Extension: +ppt_build_layout_d, +ppt_build_layout_b, +ppt_build_layout_f\n\nTEMPLATE D \u2014 PRODUCT LAUNCH (\uC81C\uD488/\uC11C\uBE44\uC2A4/\uCD9C\uC2DC/\uC18C\uAC1C):\n Base: 11 slides (expandable to 14)\n Slide 1: Title | ppt_build_title_slide\n Slide 2: Market Need | ppt_build_layout_a\n Slide 3: Product Overview | ppt_build_layout_b\n Slide 4: Key Feature | ppt_build_layout_c\n Slide 5: Features Table | ppt_build_layout_f\n Slide 6: Performance Metrics | ppt_build_layout_d\n Slide 7: Use Cases | ppt_build_layout_b\n Slide 8: Pricing | ppt_build_layout_f\n Slide 9: Launch Timeline | ppt_build_layout_e\n Slide 10: Call to Action | ppt_build_layout_a\n Slide 11: Closing | ppt_build_closing_slide\n Extension: +ppt_build_layout_d, +ppt_build_layout_b, +ppt_build_layout_c\n\nTEMPLATE E \u2014 GENERAL (\uAE30\uD0C0/\uBC1C\uD45C/\uD504\uB808\uC820\uD14C\uC774\uC158):\n Base: 10 slides (expandable to 13)\n Slide 1: Title | ppt_build_title_slide\n Slide 2: Overview | ppt_build_layout_a\n Slide 3: Key Points | ppt_build_layout_b\n Slide 4: Data Highlights | ppt_build_layout_d\n Slide 5: Detail Table | ppt_build_layout_f\n Slide 6: Spotlight | ppt_build_layout_c\n Slide 7: Comparison | ppt_build_layout_b\n Slide 8: Process | ppt_build_layout_e\n Slide 9: Summary | ppt_build_layout_a\n Slide 10: Closing | ppt_build_closing_slide\n Extension: +ppt_build_layout_d, +ppt_build_layout_b, +ppt_build_layout_f\n\n\u2550\u2550\u2550 HARD RULES \u2550\u2550\u2550\n\u26A0 Layout A (ppt_build_layout_a): MAXIMUM 3 slides per presentation. No exceptions.\n\u26A0 Must use AT LEAST 5 different layout types (from A,B,C,D,E,F).\n\u26A0 Extension slides MUST use the specified layout types, NOT Layout A.\n\u26A0 NEVER assign Layout A to: Team, Product, Competition, Contact, Financial slides.\n \u2192 Team \u2192 Layout B (left: CEO+CTO, right: CMO+others)\n \u2192 Product \u2192 Layout F (table) or Layout B (features vs benefits)\n \u2192 Competition \u2192 Layout B (competitors vs our advantage)\n \u2192 Investment \u2192 Layout C (big number: funding amount) or Layout D (3 key metrics)\n \u2192 Financial \u2192 Layout D (3 metrics: revenue, margin, ROI)\n\n\u2550\u2550\u2550 STEP 2: FILL IN CONTENT \u2550\u2550\u2550\nUse the CREATIVE GUIDANCE to fill each slide with topic-appropriate titles and content summaries.\nMap user's requested sections to the template slots. If user asks for more sections than template provides, use extension slots.\n\n\u2550\u2550\u2550 OUTPUT FORMAT \u2550\u2550\u2550\n\nMODE: CREATE\nTEMPLATE: [A/B/C/D/E]\n\nDESIGN DECISIONS:\n- COLOR_SCHEME: [MUST be one of: MODERN_TECH, WARM_EXECUTIVE, CLEAN_MINIMAL, CORPORATE, NATURE_FRESH, BOLD_MODERN]\n- DESIGN_STYLE: [sidebar / top_band / clean]\n- FONTS: [preset name]\n- TONE: [formal/casual/inspiring/academic/corporate]\n\nTOTAL_SLIDES: [number]\n\nSLIDE_PLAN:\n- Slide 1: [Title in user lang] | Tool: ppt_build_title_slide | Subtitle: [text] | Date: [text]\n- Slide 2: [Title in user lang] | Tool: [EXACT tool name from template] | Content: [summary]\n...\n- Slide N: [\uAC10\uC0AC\uD569\uB2C8\uB2E4/Thank You] | Tool: ppt_build_closing_slide\n\nLAYOUT COUNT CHECK: A=[n] B=[n] C=[n] D=[n] E=[n] F=[n] (A must be \u22643, total types \u22655)\n\nCONTENT DENSITY PER LAYOUT:\n\u2022 Layout A: 3-4 bullet sections (\u25A0), each with 2 sub-details (\u2013), max 500 chars\n\u2022 Layout B: 3-4 items per column, max 400 chars per side\n\u2022 Layout C: 1 number (max 8 chars) + label + 2-3 sentence description\n\u2022 Layout D: 3 numbers (max 6 chars each) + labels + descriptions + insight\n\u2022 Layout E: 3 step labels (max 8 Korean chars) + descriptions + insight\n\u2022 Layout F: headers + 5-7 data rows, every cell filled, max 50 chars/cell";
|
|
3
|
+
export declare const PPT_CREATE_ENHANCEMENT_PROMPT = "You are a creative presentation consultant. Generate RICH, SPECIFIC content and design decisions.\n\n\u26A0 LANGUAGE: Your ENTIRE output MUST be in the SAME language as the user's instruction.\nKorean input \u2192 Korean output. English slogans for Korean input = FAILURE.\n\nANALYZE the instruction and provide:\n\n1. DOCUMENT_TYPE: What kind of presentation? (pitch deck, report, training, product launch, general)\n2. AUDIENCE: Who will see this?\n3. TOTAL_SLIDES: Follow the template for this type (pitch=12-15, report=10-13, training=10-13, product=11-14, general=10-13)\n\n4. DESIGN_SPECIFICATION:\n - DESIGN_STYLE: Choose one: \"sidebar\", \"top_band\", or \"clean\"\n - COLOR_SCHEME: Choose ONE preset name:\n MODERN_TECH, WARM_EXECUTIVE, CLEAN_MINIMAL, CORPORATE, NATURE_FRESH, BOLD_MODERN\n Match to topic: Startup\u2192MODERN_TECH, Marketing\u2192WARM_EXECUTIVE, Academic\u2192CLEAN_MINIMAL, Finance\u2192CORPORATE, Health\u2192NATURE_FRESH, Creative\u2192BOLD_MODERN\n - FONTS: Same as color scheme name\n - TONE: formal/casual/inspiring/academic/corporate\n\n5. SLIDE_CONTENT: For EACH content section, provide:\n - TITLE: Clear title in user's language\n - CONTENT_TEXT: The ACTUAL text to use:\n * Layout A: 4 bullet sections with sub-details (MUST have \u25A0 and \u2013 markers):\n \"\u25A0 Main point title\\n \u2013 Detail with specific number or fact\\n \u2013 Another detail\\n\u25A0 Second point...\"\n * Layout B: Left column header + 3-4 items, Right column header + 3-4 items\n * Layout C: The exact number, label, and 2-3 sentence explanation\n * Layout D: 3 exact numbers with labels and descriptions\n * Layout E: 3 step names (max 8 chars each) and descriptions\n * Layout F: Exact table headers and 5-6 rows of realistic data\n\n6. COLOR_MOOD: Visual feel description\n\nCONTENT RULES:\n- Every bullet = FULL SENTENCE with specific data\n- Tables must have REALISTIC data in EVERY cell\n- DATA CONSISTENCY: Same data on multiple slides must match\n- NEVER write generic single-line phrases \u2014 write detailed content\n- Layout A MUST have sub-details under each \u25A0 block\n\nOutput: structured text, max 800 words. No preamble.";
|
|
4
4
|
//# sourceMappingURL=powerpoint-create-prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powerpoint-create-prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,wBAAwB,
|
|
1
|
+
{"version":3,"file":"powerpoint-create-prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,wBAAwB,00JA6EyD,CAAC;AAE/F,eAAO,MAAM,0BAA0B,i6MAiImC,CAAC;AAE3E,eAAO,MAAM,6BAA6B,4qEAuCW,CAAC"}
|
|
@@ -24,18 +24,29 @@ Or a custom object: {primary:"#hex", accent:"#hex", light:"#hex", highlight:"#he
|
|
|
24
24
|
|
|
25
25
|
═══ LAYOUT TYPES ═══
|
|
26
26
|
• Layout A (ppt_build_layout_a): Bullet points with ■ and – markers
|
|
27
|
-
• Layout B (ppt_build_layout_b): Two-column comparison
|
|
28
|
-
• Layout C (ppt_build_layout_c): Big number spotlight
|
|
29
|
-
• Layout D (ppt_build_layout_d): Three metrics dashboard
|
|
30
|
-
• Layout E (ppt_build_layout_e): Process/timeline with 3 circles
|
|
31
|
-
• Layout F (ppt_build_layout_f): Table with styled headers
|
|
27
|
+
• Layout B (ppt_build_layout_b): Two-column comparison — BEST for: features, team, comparisons
|
|
28
|
+
• Layout C (ppt_build_layout_c): Big number spotlight — BEST for: key metric highlight
|
|
29
|
+
• Layout D (ppt_build_layout_d): Three metrics dashboard — BEST for: market data, financial KPIs
|
|
30
|
+
• Layout E (ppt_build_layout_e): Process/timeline with 3 circles — BEST for: roadmap, phases
|
|
31
|
+
• Layout F (ppt_build_layout_f): Table with styled headers — BEST for: product specs, pricing, data
|
|
32
|
+
|
|
33
|
+
═══ CRITICAL: LAYOUT A HARD LIMIT ═══
|
|
34
|
+
⚠ You may call ppt_build_layout_a AT MOST 3 times in the entire presentation.
|
|
35
|
+
⚠ If the EXECUTION PLAN assigns Layout B/C/D/E/F to a slide, you MUST use that exact layout.
|
|
36
|
+
⚠ NEVER substitute Layout A for another layout type. This is a HARD RULE with no exceptions.
|
|
37
|
+
|
|
38
|
+
═══ MANDATORY PLAN COMPLIANCE ═══
|
|
39
|
+
The EXECUTION PLAN specifies the EXACT tool name for each slide.
|
|
40
|
+
You MUST call the specified tool for each slide — do NOT deviate.
|
|
41
|
+
Example: If plan says "Slide 5: Product | ppt_build_layout_f" → you MUST call ppt_build_layout_f, NOT ppt_build_layout_a.
|
|
42
|
+
Changing the plan's layout assignment = FAILURE.
|
|
32
43
|
|
|
33
44
|
═══ CONTENT QUALITY ═══
|
|
34
45
|
• ALL text MUST be in the same language as the user's instruction
|
|
35
46
|
• Korean input → Korean titles, bullets, table headers, everything
|
|
36
47
|
• NEVER use placeholder text like "[내용]", "XXX", "lorem ipsum"
|
|
37
48
|
• Generate REAL, specific, professional content with concrete data
|
|
38
|
-
• Layout A: MUST have 4 ■ blocks, each with 2-3 – sub-details (NOT just single-line bullets)
|
|
49
|
+
• Layout A: MUST have 3-4 ■ blocks, each with 2-3 – sub-details (NOT just single-line bullets)
|
|
39
50
|
• Layout B: 3-4 items per column with details
|
|
40
51
|
• Table cells must have realistic data — NO empty cells
|
|
41
52
|
• Layout D numbers: MAX 6 characters. Units go in label, not number.
|
|
@@ -43,14 +54,16 @@ Or a custom object: {primary:"#hex", accent:"#hex", light:"#hex", highlight:"#he
|
|
|
43
54
|
|
|
44
55
|
═══ LAYOUT A FORMAT (CRITICAL) ═══
|
|
45
56
|
CORRECT format — each ■ block has – sub-details:
|
|
46
|
-
"■ Main Point Title\\n – Detail sentence one
|
|
57
|
+
"■ Main Point Title\\n – Detail sentence one\\n – Detail sentence two\\n■ Next Main Point\\n – Sub-detail..."
|
|
47
58
|
|
|
48
59
|
WRONG format — just single-line bullets:
|
|
49
60
|
"■ Main point one\\n■ Main point two\\n■ Main point three"
|
|
50
61
|
|
|
62
|
+
Keep body CONCISE: max 3-4 ■ blocks with 2 sub-details each. Less is more.
|
|
63
|
+
|
|
51
64
|
═══ TEXT OVERFLOW PREVENTION ═══
|
|
52
65
|
• Title: max 60 chars
|
|
53
|
-
• Layout A body: max
|
|
66
|
+
• Layout A body: max 500 chars total (KEEP IT CONCISE — fewer ■ blocks, shorter sub-details)
|
|
54
67
|
• Layout B columns: max 400 chars each
|
|
55
68
|
• Layout D numbers: max 8 chars, labels: max 20 chars
|
|
56
69
|
• Layout F cells: max 50 chars each
|
|
@@ -61,7 +74,7 @@ WRONG format — just single-line bullets:
|
|
|
61
74
|
3. NEVER use HTML tags in text — use \\n for line breaks
|
|
62
75
|
4. The LAST tool before "complete" MUST be powerpoint_save
|
|
63
76
|
5. If save fails with path error, try "C:\\\\temp\\\\presentation.pptx"
|
|
64
|
-
6. Follow the EXECUTION PLAN
|
|
77
|
+
6. Follow the EXECUTION PLAN EXACTLY — the tool name specified for each slide is MANDATORY
|
|
65
78
|
7. ppt_build_closing_slide is ONLY for farewell. Call it ONCE, as the last slide before save.`;
|
|
66
79
|
export const PPT_CREATE_PLANNING_PROMPT = `You are a presentation structure planner.
|
|
67
80
|
Given the user's instruction and CREATIVE GUIDANCE, select a template and create the execution plan.
|
|
@@ -75,22 +88,26 @@ Only FORMAT labels (MODE, DESIGN DECISIONS, Layout:) stay in English.
|
|
|
75
88
|
Based on the document type, select the matching template:
|
|
76
89
|
|
|
77
90
|
TEMPLATE A — PITCH DECK (startup/investment/pitch/사업계획서/피치덱):
|
|
78
|
-
|
|
91
|
+
Base: 12 slides (expandable to 15)
|
|
79
92
|
Slide 1: Title | ppt_build_title_slide
|
|
80
93
|
Slide 2: Problem | ppt_build_layout_a
|
|
81
94
|
Slide 3: Solution | ppt_build_layout_b
|
|
82
95
|
Slide 4: Market Size | ppt_build_layout_d
|
|
83
96
|
Slide 5: Product | ppt_build_layout_f
|
|
84
|
-
Slide 6: Business Model |
|
|
85
|
-
Slide 7: Competition |
|
|
97
|
+
Slide 6: Business Model | ppt_build_layout_d
|
|
98
|
+
Slide 7: Competition | ppt_build_layout_b
|
|
86
99
|
Slide 8: Traction/KPIs | ppt_build_layout_d
|
|
87
100
|
Slide 9: Team | ppt_build_layout_b
|
|
88
101
|
Slide 10: Roadmap | ppt_build_layout_e
|
|
89
|
-
Slide 11: Investment |
|
|
102
|
+
Slide 11: Investment Ask | ppt_build_layout_c
|
|
90
103
|
Slide 12: Closing | ppt_build_closing_slide
|
|
104
|
+
Extension slots (add between 11 and 12 if user needs more sections):
|
|
105
|
+
+A: Customer Cases | ppt_build_layout_b
|
|
106
|
+
+B: Tech Detail | ppt_build_layout_f
|
|
107
|
+
+C: Contact | ppt_build_layout_a
|
|
91
108
|
|
|
92
109
|
TEMPLATE B — BUSINESS REPORT (보고서/분석/현황/실적):
|
|
93
|
-
|
|
110
|
+
Base: 10 slides (expandable to 13)
|
|
94
111
|
Slide 1: Title | ppt_build_title_slide
|
|
95
112
|
Slide 2: Executive Summary | ppt_build_layout_a
|
|
96
113
|
Slide 3: Key Metrics | ppt_build_layout_d
|
|
@@ -101,9 +118,10 @@ TEMPLATE B — BUSINESS REPORT (보고서/분석/현황/실적):
|
|
|
101
118
|
Slide 8: Action Plan | ppt_build_layout_e
|
|
102
119
|
Slide 9: Recommendations | ppt_build_layout_a
|
|
103
120
|
Slide 10: Closing | ppt_build_closing_slide
|
|
121
|
+
Extension: +ppt_build_layout_b, +ppt_build_layout_d, +ppt_build_layout_c
|
|
104
122
|
|
|
105
123
|
TEMPLATE C — TRAINING/EDUCATION (교육/연수/세미나/강의):
|
|
106
|
-
|
|
124
|
+
Base: 10 slides (expandable to 13)
|
|
107
125
|
Slide 1: Title | ppt_build_title_slide
|
|
108
126
|
Slide 2: Learning Objectives | ppt_build_layout_a
|
|
109
127
|
Slide 3: Core Concepts | ppt_build_layout_b
|
|
@@ -114,9 +132,10 @@ TEMPLATE C — TRAINING/EDUCATION (교육/연수/세미나/강의):
|
|
|
114
132
|
Slide 8: Summary | ppt_build_layout_a
|
|
115
133
|
Slide 9: Key Takeaway | ppt_build_layout_c
|
|
116
134
|
Slide 10: Closing | ppt_build_closing_slide
|
|
135
|
+
Extension: +ppt_build_layout_d, +ppt_build_layout_b, +ppt_build_layout_f
|
|
117
136
|
|
|
118
137
|
TEMPLATE D — PRODUCT LAUNCH (제품/서비스/출시/소개):
|
|
119
|
-
|
|
138
|
+
Base: 11 slides (expandable to 14)
|
|
120
139
|
Slide 1: Title | ppt_build_title_slide
|
|
121
140
|
Slide 2: Market Need | ppt_build_layout_a
|
|
122
141
|
Slide 3: Product Overview | ppt_build_layout_b
|
|
@@ -128,9 +147,10 @@ TEMPLATE D — PRODUCT LAUNCH (제품/서비스/출시/소개):
|
|
|
128
147
|
Slide 9: Launch Timeline | ppt_build_layout_e
|
|
129
148
|
Slide 10: Call to Action | ppt_build_layout_a
|
|
130
149
|
Slide 11: Closing | ppt_build_closing_slide
|
|
150
|
+
Extension: +ppt_build_layout_d, +ppt_build_layout_b, +ppt_build_layout_c
|
|
131
151
|
|
|
132
152
|
TEMPLATE E — GENERAL (기타/발표/프레젠테이션):
|
|
133
|
-
|
|
153
|
+
Base: 10 slides (expandable to 13)
|
|
134
154
|
Slide 1: Title | ppt_build_title_slide
|
|
135
155
|
Slide 2: Overview | ppt_build_layout_a
|
|
136
156
|
Slide 3: Key Points | ppt_build_layout_b
|
|
@@ -141,9 +161,22 @@ TEMPLATE E — GENERAL (기타/발표/프레젠테이션):
|
|
|
141
161
|
Slide 8: Process | ppt_build_layout_e
|
|
142
162
|
Slide 9: Summary | ppt_build_layout_a
|
|
143
163
|
Slide 10: Closing | ppt_build_closing_slide
|
|
164
|
+
Extension: +ppt_build_layout_d, +ppt_build_layout_b, +ppt_build_layout_f
|
|
165
|
+
|
|
166
|
+
═══ HARD RULES ═══
|
|
167
|
+
⚠ Layout A (ppt_build_layout_a): MAXIMUM 3 slides per presentation. No exceptions.
|
|
168
|
+
⚠ Must use AT LEAST 5 different layout types (from A,B,C,D,E,F).
|
|
169
|
+
⚠ Extension slides MUST use the specified layout types, NOT Layout A.
|
|
170
|
+
⚠ NEVER assign Layout A to: Team, Product, Competition, Contact, Financial slides.
|
|
171
|
+
→ Team → Layout B (left: CEO+CTO, right: CMO+others)
|
|
172
|
+
→ Product → Layout F (table) or Layout B (features vs benefits)
|
|
173
|
+
→ Competition → Layout B (competitors vs our advantage)
|
|
174
|
+
→ Investment → Layout C (big number: funding amount) or Layout D (3 key metrics)
|
|
175
|
+
→ Financial → Layout D (3 metrics: revenue, margin, ROI)
|
|
144
176
|
|
|
145
177
|
═══ STEP 2: FILL IN CONTENT ═══
|
|
146
178
|
Use the CREATIVE GUIDANCE to fill each slide with topic-appropriate titles and content summaries.
|
|
179
|
+
Map user's requested sections to the template slots. If user asks for more sections than template provides, use extension slots.
|
|
147
180
|
|
|
148
181
|
═══ OUTPUT FORMAT ═══
|
|
149
182
|
|
|
@@ -156,16 +189,18 @@ DESIGN DECISIONS:
|
|
|
156
189
|
- FONTS: [preset name]
|
|
157
190
|
- TONE: [formal/casual/inspiring/academic/corporate]
|
|
158
191
|
|
|
159
|
-
TOTAL_SLIDES: [
|
|
192
|
+
TOTAL_SLIDES: [number]
|
|
160
193
|
|
|
161
194
|
SLIDE_PLAN:
|
|
162
195
|
- Slide 1: [Title in user lang] | Tool: ppt_build_title_slide | Subtitle: [text] | Date: [text]
|
|
163
|
-
- Slide 2: [Title in user lang] | Tool: [from template] | Content: [summary]
|
|
196
|
+
- Slide 2: [Title in user lang] | Tool: [EXACT tool name from template] | Content: [summary]
|
|
164
197
|
...
|
|
165
198
|
- Slide N: [감사합니다/Thank You] | Tool: ppt_build_closing_slide
|
|
166
199
|
|
|
200
|
+
LAYOUT COUNT CHECK: A=[n] B=[n] C=[n] D=[n] E=[n] F=[n] (A must be ≤3, total types ≥5)
|
|
201
|
+
|
|
167
202
|
CONTENT DENSITY PER LAYOUT:
|
|
168
|
-
• Layout A: 4 bullet sections (■), each with 2
|
|
203
|
+
• Layout A: 3-4 bullet sections (■), each with 2 sub-details (–), max 500 chars
|
|
169
204
|
• Layout B: 3-4 items per column, max 400 chars per side
|
|
170
205
|
• Layout C: 1 number (max 8 chars) + label + 2-3 sentence description
|
|
171
206
|
• Layout D: 3 numbers (max 6 chars each) + labels + descriptions + insight
|
|
@@ -180,7 +215,7 @@ ANALYZE the instruction and provide:
|
|
|
180
215
|
|
|
181
216
|
1. DOCUMENT_TYPE: What kind of presentation? (pitch deck, report, training, product launch, general)
|
|
182
217
|
2. AUDIENCE: Who will see this?
|
|
183
|
-
3. TOTAL_SLIDES: Follow the template for this type (pitch=12, report=10, training=10, product=11, general=10)
|
|
218
|
+
3. TOTAL_SLIDES: Follow the template for this type (pitch=12-15, report=10-13, training=10-13, product=11-14, general=10-13)
|
|
184
219
|
|
|
185
220
|
4. DESIGN_SPECIFICATION:
|
|
186
221
|
- DESIGN_STYLE: Choose one: "sidebar", "top_band", or "clean"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"powerpoint-create-prompts.js","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,wBAAwB,GAAG
|
|
1
|
+
{"version":3,"file":"powerpoint-create-prompts.js","sourceRoot":"","sources":["../../../src/agents/office/powerpoint-create-prompts.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8FA6EsD,CAAC;AAE/F,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EAiIgC,CAAC;AAE3E,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAuCQ,CAAC"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -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.
|
|
10
|
+
export declare const APP_VERSION = "5.0.2-dev.47";
|
|
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.
|
|
12
|
+
export const APP_VERSION = '5.0.2-dev.47';
|
|
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';
|
|
@@ -38,11 +38,11 @@ export class ExcelClient extends OfficeClientBase {
|
|
|
38
38
|
return this.executePowerShell(`
|
|
39
39
|
try {
|
|
40
40
|
$excel = [Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
|
|
41
|
-
$excel.Visible =
|
|
41
|
+
$excel.Visible = -1 # msoTrue
|
|
42
42
|
@{ success = $true; message = "Connected to existing Excel instance" } | ConvertTo-Json -Compress
|
|
43
43
|
} catch {
|
|
44
44
|
$excel = New-Object -ComObject Excel.Application
|
|
45
|
-
$excel.Visible =
|
|
45
|
+
$excel.Visible = -1 # msoTrue
|
|
46
46
|
@{ success = $true; message = "Launched new Excel instance" } | ConvertTo-Json -Compress
|
|
47
47
|
}
|
|
48
48
|
`);
|
|
@@ -55,7 +55,7 @@ try {
|
|
|
55
55
|
$excel = New-Object -ComObject Excel.Application
|
|
56
56
|
}
|
|
57
57
|
$excel.DisplayAlerts = $false
|
|
58
|
-
$excel.Visible =
|
|
58
|
+
$excel.Visible = -1 # msoTrue
|
|
59
59
|
$workbook = $excel.Workbooks.Add()
|
|
60
60
|
$excel.DisplayAlerts = $true
|
|
61
61
|
@{ success = $true; message = "Created new workbook"; workbook_name = $workbook.Name } | ConvertTo-Json -Compress
|
|
@@ -70,7 +70,7 @@ try {
|
|
|
70
70
|
$excel = New-Object -ComObject Excel.Application
|
|
71
71
|
}
|
|
72
72
|
$excel.DisplayAlerts = $false
|
|
73
|
-
$excel.Visible =
|
|
73
|
+
$excel.Visible = -1 # msoTrue
|
|
74
74
|
$workbook = $excel.Workbooks.Open('${windowsPath}')
|
|
75
75
|
$excel.DisplayAlerts = $true
|
|
76
76
|
@{ success = $true; message = "Workbook opened"; workbook_name = $workbook.Name; path = $workbook.FullName } | ConvertTo-Json -Compress
|
|
@@ -6,11 +6,11 @@ export class PowerPointClient extends OfficeClientBase {
|
|
|
6
6
|
return this.executePowerShell(`
|
|
7
7
|
try {
|
|
8
8
|
$ppt = [Runtime.InteropServices.Marshal]::GetActiveObject("PowerPoint.Application")
|
|
9
|
-
$ppt.Visible =
|
|
9
|
+
$ppt.Visible = -1 # msoTrue
|
|
10
10
|
@{ success = $true; message = "Connected to existing PowerPoint instance" } | ConvertTo-Json -Compress
|
|
11
11
|
} catch {
|
|
12
12
|
$ppt = New-Object -ComObject PowerPoint.Application
|
|
13
|
-
$ppt.Visible =
|
|
13
|
+
$ppt.Visible = -1 # msoTrue
|
|
14
14
|
@{ success = $true; message = "Launched new PowerPoint instance" } | ConvertTo-Json -Compress
|
|
15
15
|
}
|
|
16
16
|
`);
|
|
@@ -23,7 +23,7 @@ try {
|
|
|
23
23
|
$ppt = New-Object -ComObject PowerPoint.Application
|
|
24
24
|
}
|
|
25
25
|
$ppt.DisplayAlerts = 1 # ppAlertsNone
|
|
26
|
-
$ppt.Visible =
|
|
26
|
+
$ppt.Visible = -1 # msoTrue
|
|
27
27
|
$presentation = $ppt.Presentations.Add(-1)
|
|
28
28
|
$ppt.DisplayAlerts = 2 # ppAlertsAll
|
|
29
29
|
@{ success = $true; message = "Created new presentation"; presentation_name = $presentation.Name } | ConvertTo-Json -Compress
|
|
@@ -38,7 +38,7 @@ try {
|
|
|
38
38
|
$ppt = New-Object -ComObject PowerPoint.Application
|
|
39
39
|
}
|
|
40
40
|
$ppt.DisplayAlerts = 1 # ppAlertsNone
|
|
41
|
-
$ppt.Visible =
|
|
41
|
+
$ppt.Visible = -1 # msoTrue
|
|
42
42
|
$presentation = $ppt.Presentations.Open('${windowsPath}')
|
|
43
43
|
$ppt.DisplayAlerts = 2 # ppAlertsAll
|
|
44
44
|
@{ success = $true; message = "Presentation opened"; presentation_name = $presentation.Name; path = $presentation.FullName } | ConvertTo-Json -Compress
|
|
@@ -233,7 +233,7 @@ async function executeBuildLayoutA(args) {
|
|
|
233
233
|
const fonts = resolveFonts(args);
|
|
234
234
|
const style = resolveStyle(args);
|
|
235
235
|
const title = args['title'] || '';
|
|
236
|
-
const body = truncate(args['body'] || '',
|
|
236
|
+
const body = truncate(args['body'] || '', 500);
|
|
237
237
|
if (!body.trim()) {
|
|
238
238
|
return { success: false, error: 'Layout A requires non-empty body text. Provide bullet content using ■ and – markers.' };
|
|
239
239
|
}
|
|
@@ -242,8 +242,8 @@ async function executeBuildLayoutA(args) {
|
|
|
242
242
|
const top = contentTop(style);
|
|
243
243
|
const left = contentLeft(style);
|
|
244
244
|
const width = contentWidth(style);
|
|
245
|
-
await powerpointClient.powerpointAddShape(slideNum, 'rectangle', left, top, width,
|
|
246
|
-
await powerpointClient.powerpointAddTextbox(slideNum, body, left + 15, top + 10, width - 30,
|
|
245
|
+
await powerpointClient.powerpointAddShape(slideNum, 'rectangle', left, top, width, 440, colors.light);
|
|
246
|
+
await powerpointClient.powerpointAddTextbox(slideNum, body, left + 15, top + 10, width - 30, 420, {
|
|
247
247
|
fontName: fonts.body, fontSize: 14, fontColor: '#333333', alignment: 'left',
|
|
248
248
|
});
|
|
249
249
|
return { success: true, result: `Slide ${slideNum} built: Layout A (${style} style)` };
|
|
@@ -5,11 +5,11 @@ export class WordClient extends OfficeClientBase {
|
|
|
5
5
|
return this.executePowerShell(`
|
|
6
6
|
try {
|
|
7
7
|
$word = [Runtime.InteropServices.Marshal]::GetActiveObject("Word.Application")
|
|
8
|
-
$word.Visible =
|
|
8
|
+
$word.Visible = -1 # msoTrue
|
|
9
9
|
@{ success = $true; message = "Connected to existing Word instance" } | ConvertTo-Json -Compress
|
|
10
10
|
} catch {
|
|
11
11
|
$word = New-Object -ComObject Word.Application
|
|
12
|
-
$word.Visible =
|
|
12
|
+
$word.Visible = -1 # msoTrue
|
|
13
13
|
@{ success = $true; message = "Launched new Word instance" } | ConvertTo-Json -Compress
|
|
14
14
|
}
|
|
15
15
|
`);
|
|
@@ -22,7 +22,7 @@ try {
|
|
|
22
22
|
$word = New-Object -ComObject Word.Application
|
|
23
23
|
}
|
|
24
24
|
$word.DisplayAlerts = 0
|
|
25
|
-
$word.Visible =
|
|
25
|
+
$word.Visible = -1 # msoTrue
|
|
26
26
|
$doc = $word.Documents.Add()
|
|
27
27
|
$word.DisplayAlerts = -1
|
|
28
28
|
@{ success = $true; message = "Created new document"; document_name = $doc.Name } | ConvertTo-Json -Compress
|
|
@@ -127,7 +127,7 @@ try {
|
|
|
127
127
|
$word = New-Object -ComObject Word.Application
|
|
128
128
|
}
|
|
129
129
|
$word.DisplayAlerts = 0
|
|
130
|
-
$word.Visible =
|
|
130
|
+
$word.Visible = -1 # msoTrue
|
|
131
131
|
$doc = $word.Documents.Open('${windowsPath}')
|
|
132
132
|
$word.DisplayAlerts = -1
|
|
133
133
|
@{ success = $true; message = "Document opened"; document_name = $doc.Name; path = $doc.FullName } | ConvertTo-Json -Compress
|