@vibe-agent-toolkit/vat-example-cat-agents 0.2.0-rc.6 → 0.2.0-rc.8

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.
Files changed (44) hide show
  1. package/README.md +32 -19
  2. package/dist/conversational-assistant/breed-advisor.d.ts.map +1 -1
  3. package/dist/conversational-assistant/breed-advisor.js +7 -2
  4. package/dist/conversational-assistant/breed-advisor.js.map +1 -1
  5. package/dist/external-event-integrator/human-approval.d.ts +6 -6
  6. package/dist/external-event-integrator/human-approval.d.ts.map +1 -1
  7. package/dist/external-event-integrator/human-approval.js +6 -6
  8. package/dist/external-event-integrator/human-approval.js.map +1 -1
  9. package/dist/generated/resources/agents/human-approval.js +3 -3
  10. package/dist/generated/resources/skills/SKILL.d.ts +1 -4
  11. package/dist/generated/resources/skills/SKILL.js +9 -24
  12. package/dist/generated/resources/skills/orchestration-patterns.d.ts +22 -0
  13. package/dist/generated/resources/skills/orchestration-patterns.js +30 -0
  14. package/dist/generated/resources/skills/workflow-orchestration.d.ts +19 -0
  15. package/dist/generated/resources/skills/workflow-orchestration.js +15 -0
  16. package/dist/one-shot-llm-analyzer/description-parser.d.ts +1 -1
  17. package/dist/one-shot-llm-analyzer/description-parser.d.ts.map +1 -1
  18. package/dist/one-shot-llm-analyzer/description-parser.js +1 -1
  19. package/dist/one-shot-llm-analyzer/description-parser.js.map +1 -1
  20. package/dist/one-shot-llm-analyzer/haiku-generator.d.ts +5 -5
  21. package/dist/one-shot-llm-analyzer/haiku-generator.d.ts.map +1 -1
  22. package/dist/one-shot-llm-analyzer/haiku-generator.js +1 -1
  23. package/dist/one-shot-llm-analyzer/haiku-generator.js.map +1 -1
  24. package/dist/one-shot-llm-analyzer/name-generator.d.ts +5 -5
  25. package/dist/one-shot-llm-analyzer/name-generator.d.ts.map +1 -1
  26. package/dist/one-shot-llm-analyzer/name-generator.js +1 -1
  27. package/dist/one-shot-llm-analyzer/name-generator.js.map +1 -1
  28. package/dist/one-shot-llm-analyzer/photo-analyzer.d.ts +1 -1
  29. package/dist/one-shot-llm-analyzer/photo-analyzer.d.ts.map +1 -1
  30. package/dist/one-shot-llm-analyzer/photo-analyzer.js +1 -1
  31. package/dist/one-shot-llm-analyzer/photo-analyzer.js.map +1 -1
  32. package/dist/pure-function-tool/name-validator.d.ts +5 -5
  33. package/dist/pure-function-tool/name-validator.d.ts.map +1 -1
  34. package/dist/pure-function-tool/name-validator.js +1 -1
  35. package/dist/pure-function-tool/name-validator.js.map +1 -1
  36. package/dist/skills/vat-example-cat-agents/SKILL.md +6 -316
  37. package/dist/skills/vat-example-cat-agents/resources/cat-breed-selection.md +233 -0
  38. package/dist/skills/vat-example-cat-agents/resources/orchestration-patterns.md +168 -0
  39. package/dist/skills/vat-example-cat-agents/resources/workflow-orchestration.md +158 -0
  40. package/dist/types/schemas.d.ts +31 -24
  41. package/dist/types/schemas.d.ts.map +1 -1
  42. package/dist/types/schemas.js +23 -20
  43. package/dist/types/schemas.js.map +1 -1
  44. package/package.json +15 -28
@@ -7,7 +7,7 @@ export const meta = {
7
7
  description: "Comprehensive orchestration guide for Claude Code using the vat-example-cat-agents toolkit"
8
8
  };
9
9
 
10
- export const text = "\n# VAT Example Cat Agents\n\nComprehensive orchestration guide for Claude Code using the vat-example-cat-agents toolkit.\n\n## Purpose: For Claude Code, Not the LLM\n\n**Key distinction:**\n- **This file** = Guidance for Claude Code (how to orchestrate agents)\n- **Agent resources** = Content for the LLM (what to say/know)\n\nThis skill references agent resources via markdown links but doesn\'t duplicate LLM prompts.\n\n## Agent Inventory\n\nThe vat-example-cat-agents package provides 8 agents across 4 archetypes:\n\n### Pure Function Tools (2 agents)\n- **haiku-validator** - Validates 5-7-5 syllable structure + kigo/kireji\n- **name-validator** - Quirky characteristic-based validation\n\n### One-Shot LLM Analyzers (4 agents)\n- **photo-analyzer** - Vision LLM extracts characteristics from images\n- **description-parser** - Text parsing extracts characteristics from descriptions\n- **name-generator** - Creates characteristic-based cat names\n- **haiku-generator** - Composes haikus about cats\n\n### Conversational Assistant (1 agent)\n- **breed-advisor** - Multi-turn breed selection through natural dialogue\n\n### External Event Integrator (1 agent)\n- **human-approval** - HITL approval gate (mockable)\n\n## When to Use This Skill\n\nTrigger this skill when:\n- User wants help selecting a cat breed\n- User has a cat photo and wants analysis\n- User needs a cat name suggestion\n- User wants a haiku about their cat\n- User needs validation of generated content (names, haikus)\n- User wants to combine multiple agents in a workflow\n\n## High-Level Orchestration Patterns\n\n### Pattern 1: Single Agent (Simple)\n\nUse when user has a straightforward request that maps to one agent.\n\n**Example workflows:**\n- \"What cat breed should I get?\" → [breed-advisor](../agents/breed-advisor.md)\n- \"Analyze this cat photo\" → [photo-analyzer](../agents/photo-analyzer.md)\n- \"Is this a valid haiku?\" → haiku-validator (pure function)\n\n### Pattern 2: Sequential Pipeline (Multi-Agent)\n\nUse when output of one agent feeds into another.\n\n**Example workflows:**\n1. Photo → Characteristics → Name\n - [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md)\n2. Photo → Characteristics → Haiku\n - [photo-analyzer](../agents/photo-analyzer.md) → [haiku-generator](../agents/haiku-generator.md)\n3. Description → Characteristics → Name → Validation\n - [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) → name-validator\n\n### Pattern 3: Generate-Validate Loop (Iterative)\n\nUse when generator produces content that needs validation with retry logic.\n\n**Example workflows:**\n1. Name generation with validation\n - Generate → Validate → If invalid, retry with feedback\n - Uses: [name-generator](../agents/name-generator.md) + name-validator\n2. Haiku generation with validation\n - Generate → Validate → If invalid, retry\n - Uses: [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n**Orchestration tip:** Generator agents have NO knowledge of validation rules. This is intentional - forces iteration and tests feedback loops.\n\n### Pattern 4: HITL Approval Gate (External Event)\n\nUse when decision requires human judgment.\n\n**Example workflows:**\n1. Breed application approval\n - Gather info → Generate application → [human-approval](../agents/human-approval.md) → Process result\n2. Name approval before finalization\n - Generate names → Present options → Human selects → Finalize\n\n## Detailed Workflow Orchestration\n\n### Workflow A: Breed Selection (Conversational)\n\n**When:** User wants help finding the right cat breed.\n\n**Agent:** [breed-advisor](../agents/breed-advisor.md)\n\n**Orchestration strategy:**\n1. **Phase 1 - Gathering** (see [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy))\n - Collect ≥4 factors including music preference\n - ONE question at a time (don\'t bombard)\n - Extract factors after each turn\n - Monitor readiness: \`factorsCollected >= 4 && musicPreference != null\`\n\n2. **Phase 2 - Recommendation**\n - Present 3-5 matched breeds\n - Allow exploration, questions, comparisons\n - Use conversational formatting (not data dump)\n\n3. **Phase 3 - Selection**\n - Detect selection signals (\"I\'ll take\", \"sounds good\")\n - Conclude gracefully\n - Provide next steps or exit instruction\n\n**Critical factor:** Music preference is the PRIMARY compatibility factor. Ask early, use as conversation anchor. See [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight) for mappings.\n\n**Reference implementation:** See [cat-breed-selection.md](./cat-breed-selection.md) for detailed breed selection orchestration.\n\n### Workflow B: Photo Analysis Pipeline\n\n**When:** User provides a cat photo and wants analysis, name, or haiku.\n\n**Agents:** [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Analyze Photo\n- Input: Image path/URL\n- Agent: photo-analyzer\n- Output: CatCharacteristics\n- Note: Supports mock mode (reads EXIF) for testing\n\nStep 2: Generate Content\n- Input: CatCharacteristics from Step 1\n- Agent: name-generator OR haiku-generator\n- Output: NameSuggestion OR Haiku\n\nOptional Step 3: Validate\n- Input: Generated content + original characteristics\n- Agent: name-validator OR haiku-validator (pure functions)\n- Output: Validation result\n- If invalid: Retry Step 2 with feedback\n\`\`\`\n\n**Mockable behavior:** photo-analyzer reads EXIF metadata in mock mode. For production, set \`mockable: false\` to use real vision API.\n\n### Workflow C: Text Description Pipeline\n\n**When:** User describes a cat in text (no photo).\n\n**Agents:** [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Parse Description\n- Input: Text description\n- Agent: description-parser\n- Output: CatCharacteristics (same schema as photo-analyzer!)\n\nStep 2-3: Same as Workflow B\n- Multi-modal convergence: photo and text produce same schema\n- Downstream agents (name-gen, haiku-gen) work with either\n\`\`\`\n\n**Key insight:** Photo and text paths converge at \`CatCharacteristics\` schema. This enables multi-modal workflows without agent changes.\n\n### Workflow D: Generate-Validate-Retry Loop\n\n**When:** Generator produces content that must pass validation rules.\n\n**Pattern:** Generator (LLM) + Validator (pure function) + Retry logic\n\n**Implementation:**\n\n\`\`\`typescript\n// Pseudo-code for orchestration\nlet attempts = 0;\nconst maxAttempts = 3;\n\nwhile (attempts < maxAttempts) {\n // Generate content\n const suggestion = await generator(characteristics);\n\n // Validate (pure function, instant)\n const validation = validator(suggestion, characteristics);\n\n if (validation.status === \'valid\') {\n return suggestion; // Success!\n }\n\n // Retry with feedback\n attempts++;\n // Optional: Adjust approach based on validation.reason\n}\n\nthrow new Error(\'Could not generate valid content after 3 attempts\');\n\`\`\`\n\n**Why this pattern works:**\n- Generator has NO knowledge of validation rules (isolated concerns)\n- Validator is deterministic (pure function, fast)\n- Feedback loop tests multi-turn orchestration\n- ~60-70% initial rejection rate forces iteration\n\n**Agents using this pattern:**\n- [name-generator](../agents/name-generator.md) + name-validator\n- [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n### Workflow E: HITL Approval Gate\n\n**When:** Decision requires human judgment (compliance, taste, ethics).\n\n**Agent:** [human-approval](../agents/human-approval.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Prepare Request\n- Gather all necessary context\n- Format clearly for human reviewer\n- Include relevant data (characteristics, generated content, reasoning)\n\nStep 2: Emit Approval Request\n- Agent: human-approval\n- Input: Request payload\n- Behavior: Blocks waiting for response\n- Timeout: Configurable (default: 60s)\n\nStep 3: Handle Response\n- Approved: Continue workflow\n- Rejected: Handle gracefully (retry, inform user, etc.)\n- Timeout: Fall back to safe default or escalate\n\`\`\`\n\n**Mockable behavior:** Set \`mockable: true\` to auto-approve without human (useful for testing).\n\n**Real-world uses:**\n- Breeding application approval\n- Name selection from alternatives\n- Content moderation decisions\n\n## CLI Exposure for Pure Functions\n\nPure function tools (validators) can be exposed via CLI for direct invocation.\n\n### Usage Pattern\n\n\`\`\`bash\n# Pass JSON input, get JSON/YAML output\necho \'{\"name\": \"Mr. Whiskers\", \"characteristics\": {...}}\' | vat agents validate-name\n\n# Output format (using 2>&1):\n# [stdout - complete output]\n# ---\n# [stderr - error messages]\n\`\`\`\n\n### Implementation Requirements\n\n1. **Input:** JSON on stdin\n2. **Output:** JSON or YAML on stdout (complete, flushed)\n3. **Errors:** stderr (separated with \`---\` when using \`2>&1\`)\n4. **Exit codes:** 0 = success, 1 = validation failure, 2 = error\n\n### Sequence Example\n\n\`\`\`\n[Start]\n↓\nRead stdin (JSON input)\n↓\nParse and validate input schema\n↓\nExecute pure function\n↓\nFlush stdout with complete result\n↓\nPrint \"---\" separator\n↓\nFlush stderr with any error messages\n↓\nExit with appropriate code\n\`\`\`\n\n### Benefits\n\n- MCP can map to CLI calls (fast, stateless)\n- No long-running processes for pure functions\n- Clear separation of output vs errors\n- Composable with other CLI tools\n\n### Applicable Agents\n\n- **name-validator** - \`vat agents validate-name\`\n- **haiku-validator** - \`vat agents validate-haiku\`\n- Future: Any pure function tool\n\n## What Claude Code Does vs What Agents Do\n\n### Claude Code\'s Role (This Skill):\n\n**Orchestration:**\n- Select which agent(s) to use\n- Chain agents in workflows (pipelines)\n- Manage state between agents (pass outputs as inputs)\n- Handle retries and error recovery\n\n**Monitoring:**\n- Track conversation phase (gathering, recommendation, selection)\n- Count validation attempts (retry limits)\n- Detect completion signals (phase transitions)\n- Monitor timeouts (HITL approvals)\n\n**Decision Making:**\n- When to transition between phases\n- When to retry vs give up\n- Which agent path to take (photo vs text)\n- How to present results to user\n\n### Agents\' Role (Agent Resources):\n\n**Pure Functions:**\n- Execute deterministic logic (validation rules)\n- Return results instantly\n- No side effects, no state\n\n**LLM Analyzers:**\n- Extract structured data from unstructured input\n- Apply domain knowledge to classification\n- Generate creative content (names, haikus)\n\n**Conversational Assistants:**\n- Conduct natural dialogue\n- Accumulate context over turns\n- Make recommendations based on collected factors\n\n**Event Integrators:**\n- Emit events to external systems\n- Block waiting for responses\n- Handle timeouts and errors\n\n**Key insight:** Agents are specialized, focused on their domain. Claude Code provides the glue, orchestration, and workflow logic.\n\n## Content Separation Guidelines\n\n### What Belongs in Agent Resources (LLM-Facing):\n\n✅ System prompts and LLM instructions\n✅ Domain knowledge (breed database, syllable counting rules, kigo lists)\n✅ Extraction formats (JSON schemas, output templates)\n✅ Examples for few-shot learning\n✅ Natural language mappings\n✅ Validation rules and constraints\n\n**Location:** \`resources/agents/*.md\`\n\n### What Belongs in Skills (Claude Code-Facing):\n\n✅ When to trigger agents (user intent signals)\n✅ How to chain agents (workflow patterns)\n✅ What to monitor (readiness criteria, retry limits)\n✅ Debugging guidance (common issues, pitfalls)\n✅ Meta-strategy (why photo first, when to retry)\n✅ CLI exposure patterns\n\n**Location:** \`resources/skills/*.md\` (this file)\n\n### Overlap (Reference, Don\'t Duplicate):\n\n⚠️ Workflow structure (skill explains orchestration, agent implements)\n⚠️ Phase transitions (skill monitors, agent executes)\n⚠️ Validation criteria (skill manages retries, agent defines rules)\n\n**Resolution:** Keep agent resources authoritative. Skills REFERENCE via links, don\'t duplicate.\n\n## Common Pitfalls\n\n### ❌ Don\'t: Call Agents Without Understanding Their Archetype\n\nEach archetype has different behavior:\n- Pure functions: Instant, deterministic\n- LLM analyzers: Single call, non-deterministic\n- Conversational: Multi-turn, stateful\n- Event integrators: Blocking, timeout handling\n\n### ✅ Do: Match Orchestration to Archetype\n\n\`\`\`\nPure function → Call directly, no retry needed\nLLM analyzer → Call once, parse result\nConversational → Multi-turn loop with state\nEvent integrator → Emit, wait, handle timeout\n\`\`\`\n\n### ❌ Don\'t: Skip Validation in Generate-Validate Loops\n\nValidators exist for a reason. Don\'t bypass them or assume LLM output is always valid.\n\n### ✅ Do: Embrace the Feedback Loop\n\n\`\`\`\nGenerate → Validate → If invalid, retry with feedback\n\`\`\`\n\nThis pattern tests real-world orchestration where first attempts often fail.\n\n### ❌ Don\'t: Mix Mock and Production Modes Accidentally\n\nMock mode (EXIF metadata) is fast and free. Production mode (real APIs) is slow and expensive. Be explicit about which mode you\'re using.\n\n### ✅ Do: Use Mock Mode for Development, Production for Deployment\n\n\`\`\`typescript\n// Development/testing\nconst result = await analyzePhoto(path, { mockable: true });\n\n// Production\nconst result = await analyzePhoto(path, { mockable: false });\n\`\`\`\n\n### ❌ Don\'t: Bombard Users with Questions in Conversational Flows\n\nOne question at a time. Give users space to think and respond naturally.\n\n### ✅ Do: Guide Conversation Gently\n\n\`\`\`\nBad: \"Tell me your music, living space, activity level, grooming, family, and allergies\"\nGood: \"What\'s your favorite type of music?\" → [response] → \"Great! Tell me about your living space...\"\n\`\`\`\n\n## Debugging: When Things Go Wrong\n\n### Issue: Photo Analysis Fails\n\n**Symptoms:** Vision API errors, unexpected characteristics\n\n**Debug steps:**\n1. Check if image path is valid\n2. Verify image is actually a photo (not text, PDF, etc.)\n3. Try mock mode first: \`{ mockable: true }\`\n4. Check API key and rate limits for production mode\n5. Verify EXIF metadata format if using mock mode\n\n### Issue: Name Validation Always Fails\n\n**Symptoms:** Name generator can\'t produce valid names after 3+ attempts\n\n**Debug steps:**\n1. Check validation rules: name-validator has quirky requirements\n2. Review characteristics: Validation rules depend on cat traits\n3. Verify characteristics schema: All required fields present?\n4. Check feedback loop: Is validation.reason being used for retries?\n\n**Common cause:** ~60-70% rejection rate is EXPECTED. This forces iteration and tests feedback loops.\n\n### Issue: Haiku Validation Rejects Everything\n\n**Symptoms:** Haiku generator struggles to meet 5-7-5 syllable structure\n\n**Debug steps:**\n1. Check syllable counting algorithm: May differ from LLM\'s internal counting\n2. Verify kigo (seasonal word) presence: Required for valid haiku\n3. Check kireji (cutting word) detection: Optional but improves score\n4. Review haiku format: Must be exactly 3 lines\n\n**Solution:** Allow multiple retry attempts (3-5). Haiku generation is hard.\n\n### Issue: Conversation Stalls in Breed Selection\n\n**Symptoms:** Agent doesn\'t transition to recommendations\n\n**Debug steps:**\n1. Check factor count: Need ≥4 factors collected\n2. Verify music preference: REQUIRED for transition\n3. Review conversation history: Are factors being extracted?\n4. Check readiness criteria: Session state vs actual factors\n\n**Solution:** Ensure extraction happens after each turn. Monitor \`factorsCollected\` metadata.\n\n### Issue: HITL Approval Times Out\n\n**Symptoms:** human-approval agent returns timeout status\n\n**Debug steps:**\n1. Check timeout value: Default 60s, may need adjustment\n2. Verify event emission: Is request actually sent?\n3. Check mock mode: Set \`mockable: true\` for testing\n4. Review request format: Is it clear what needs approval?\n\n**Solution:** For testing, use mock mode. For production, increase timeout or add retry logic.\n\n## Agent Resource Links\n\n### Pure Function Tools\n- name-validator (no agent resource - pure TypeScript logic)\n- haiku-validator (no agent resource - pure TypeScript logic)\n\n### One-Shot LLM Analyzers\n- [Photo Analyzer](../agents/photo-analyzer.md) - Vision analysis\n- [Description Parser](../agents/description-parser.md) - Text parsing\n- [Name Generator](../agents/name-generator.md) - Creative naming\n- [Haiku Generator](../agents/haiku-generator.md) - Haiku composition\n\n### Conversational Assistant\n- [Breed Advisor](../agents/breed-advisor.md) - Multi-turn breed selection\n - [Welcome Message](../agents/breed-advisor.md#welcome-message)\n - [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight)\n - [Factor Definitions](../agents/breed-advisor.md#factor-definitions)\n - [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy)\n - [Factor Extraction Prompt](../agents/breed-advisor.md#factor-extraction-prompt)\n - [Transition Message](../agents/breed-advisor.md#transition-message)\n - [Recommendation Presentation](../agents/breed-advisor.md#recommendation-presentation-prompt)\n - [Selection Extraction](../agents/breed-advisor.md#selection-extraction-prompt)\n - [Conclusion Prompt](../agents/breed-advisor.md#conclusion-prompt)\n\n### External Event Integrator\n- [Human Approval](../agents/human-approval.md) - HITL approval gate\n\n### Related Documentation\n- [Cat Breed Selection Skill](./cat-breed-selection.md) - Detailed breed advisor orchestration\n- [Package README](../../README.md) - Human-facing documentation\n- [Package Structure](../../docs/structure.md) - Technical organization\n\n## Success Criteria\n\nYour orchestration is successful when:\n\n**For Single Agents:**\n- Agent called with valid input schema\n- Output parsed and validated correctly\n- Errors handled gracefully\n- User receives clear, actionable results\n\n**For Pipelines:**\n- Data flows correctly between agents\n- Schema compatibility maintained (CatCharacteristics convergence)\n- Intermediate results stored appropriately\n- Final output meets user\'s original intent\n\n**For Loops:**\n- Retry logic prevents infinite loops (max attempts)\n- Feedback improves subsequent generations\n- User informed of progress (\"Generating... Attempt 2 of 3\")\n- Success achieved within reasonable attempts\n\n**For Conversational Flows:**\n- User feels heard, not interrogated\n- Natural dialogue rhythm maintained\n- Factors collected efficiently (4-6 turns typical)\n- Recommendations feel personalized\n- Selection confirmed clearly\n\n**For HITL Workflows:**\n- Request clearly formatted for human reviewer\n- Timeout handling prevents indefinite blocking\n- Approval/rejection handled appropriately\n- User understands what happened\n\n## Advanced Orchestration Patterns\n\n### Pattern: Parallel Execution\n\nWhen agents don\'t depend on each other, run them in parallel.\n\n**Example:** Generate both name and haiku from same characteristics\n\n\`\`\`typescript\nconst [name, haiku] = await Promise.all([\n generateCatName(characteristics),\n generateCatHaiku(characteristics),\n]);\n\`\`\`\n\n**Benefits:** Faster execution, better user experience\n\n### Pattern: Fallback Chain\n\nWhen one agent fails, try alternatives.\n\n**Example:** Photo analysis with text description fallback\n\n\`\`\`typescript\nlet characteristics;\ntry {\n characteristics = await analyzePhoto(imagePath);\n} catch {\n // Fallback to text description\n const description = await getUserDescription();\n characteristics = await parseDescription(description);\n}\n\`\`\`\n\n**Benefits:** Resilience, better error handling\n\n### Pattern: Conditional Routing\n\nChoose agent path based on user input type.\n\n**Example:** Multi-modal input handling\n\n\`\`\`typescript\nif (input.type === \'image\') {\n characteristics = await analyzePhoto(input.imagePath);\n} else if (input.type === \'text\') {\n characteristics = await parseDescription(input.description);\n} else {\n // Conversational gathering\n characteristics = await breedAdvisor.gather();\n}\n\`\`\`\n\n**Benefits:** Flexible input handling, better UX\n\n### Pattern: Staged Approval\n\nBreak complex workflows into approval stages.\n\n**Example:** Multi-stage breeding application\n\n\`\`\`typescript\n// Stage 1: Basic info approval\nconst basicApproval = await humanApproval({ stage: \'basic\', data });\nif (!basicApproval.approved) return;\n\n// Stage 2: Detailed questionnaire\nconst detailApproval = await humanApproval({ stage: \'detail\', data });\nif (!detailApproval.approved) return;\n\n// Stage 3: Final review\nconst finalApproval = await humanApproval({ stage: \'final\', data });\n\`\`\`\n\n**Benefits:** Checkpoints prevent wasted work, clearer decision points\n\n## CLI Integration Examples\n\n### Example 1: Validate Name via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"name\": \"Mr. Whiskers\",\n \"characteristics\": {\n \"physical\": {\n \"furColor\": \"Orange\",\n \"furPattern\": \"Tabby\",\n \"size\": \"medium\"\n },\n \"behavioral\": {\n \"personality\": [\"Playful\", \"Curious\"]\n }\n }\n}\' | vat agents validate-name\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"reason\": \"Name meets all quirky validation rules\",\n \"confidence\": 0.95\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 2: Validate Haiku via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"lines\": [\n \"Orange sunset fur\",\n \"Paws dance across the tatami\",\n \"Zen master purrs\"\n ]\n}\' | vat agents validate-haiku\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"syllableCounts\": [5, 7, 5],\n \"hasKigo\": true,\n \"kigo\": \"sunset\",\n \"hasKireji\": false,\n \"errors\": []\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 3: Error Handling\n\n\`\`\`bash\n# Invalid input\necho \'{\"invalid\": \"schema\"}\' | vat agents validate-name\n\n# Output\n# (stdout - empty)\n---\nError: Invalid input schema. Expected \'name\' and \'characteristics\' fields.\nSchema validation failed:\n - Missing required field: name\n - Missing required field: characteristics\n# (exit code: 2)\n\`\`\`\n\n## Next Steps\n\nOnce you\'ve successfully orchestrated agents:\n\n1. **Explore Combinations** - Try chaining agents in new ways\n2. **Add Custom Validation** - Create your own quirky validation rules\n3. **Build New Workflows** - Combine agents for complex use cases\n4. **Contribute Patterns** - Share successful orchestration strategies\n5. **Package Skills** - Create distributable skill packages with pure functions\n\n## Questions?\n\n- **For orchestration patterns:** This file (SKILL.md)\n- **For agent-specific details:** See individual agent resources\n- **For implementation examples:** See examples/ directory\n- **For archetype theory:** See package README.md\n";
10
+ export const text = "\n# VAT Example Cat Agents\n\nComprehensive orchestration guide for Claude Code using the vat-example-cat-agents toolkit.\n\n## Purpose: For Claude Code, Not the LLM\n\n**Key distinction:**\n- **This file** = Guidance for Claude Code (how to orchestrate agents)\n- **Agent resources** = Content for the LLM (what to say/know)\n\nThis skill references agent resources via markdown links but doesn\'t duplicate LLM prompts.\n\n## Agent Inventory\n\nThe vat-example-cat-agents package provides 8 agents across 4 archetypes:\n\n### Pure Function Tools (2 agents)\n- **haiku-validator** - Validates 5-7-5 syllable structure + kigo/kireji\n- **name-validator** - Quirky characteristic-based validation\n\n### One-Shot LLM Analyzers (4 agents)\n- **photo-analyzer** - Vision LLM extracts characteristics from images\n- **description-parser** - Text parsing extracts characteristics from descriptions\n- **name-generator** - Creates characteristic-based cat names\n- **haiku-generator** - Composes haikus about cats\n\n### Conversational Assistant (1 agent)\n- **breed-advisor** - Multi-turn breed selection through natural dialogue\n\n### External Event Integrator (1 agent)\n- **human-approval** - HITL approval gate (mockable)\n\n## When to Use This Skill\n\nTrigger this skill when:\n- User wants help selecting a cat breed\n- User has a cat photo and wants analysis\n- User needs a cat name suggestion\n- User wants a haiku about their cat\n- User needs validation of generated content (names, haikus)\n- User wants to combine multiple agents in a workflow\n\n## High-Level Orchestration Patterns\n\n### Pattern 1: Single Agent (Simple)\n\nUse when user has a straightforward request that maps to one agent.\n\n**Example workflows:**\n- \"What cat breed should I get?\" → [breed-advisor](../agents/breed-advisor.md)\n- \"Analyze this cat photo\" → [photo-analyzer](../agents/photo-analyzer.md)\n- \"Is this a valid haiku?\" → haiku-validator (pure function)\n\n### Pattern 2: Sequential Pipeline (Multi-Agent)\n\nUse when output of one agent feeds into another.\n\n**Example workflows:**\n1. Photo → Characteristics → Name\n - [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md)\n2. Photo → Characteristics → Haiku\n - [photo-analyzer](../agents/photo-analyzer.md) → [haiku-generator](../agents/haiku-generator.md)\n3. Description → Characteristics → Name → Validation\n - [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) → name-validator\n\n### Pattern 3: Generate-Validate Loop (Iterative)\n\nUse when generator produces content that needs validation with retry logic.\n\n**Example workflows:**\n1. Name generation with validation\n - Generate → Validate → If invalid, retry with feedback\n - Uses: [name-generator](../agents/name-generator.md) + name-validator\n2. Haiku generation with validation\n - Generate → Validate → If invalid, retry\n - Uses: [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n**Orchestration tip:** Generator agents have NO knowledge of validation rules. This is intentional - forces iteration and tests feedback loops.\n\n### Pattern 4: HITL Approval Gate (External Event)\n\nUse when decision requires human judgment.\n\n**Example workflows:**\n1. Breed application approval\n - Gather info → Generate application → [human-approval](../agents/human-approval.md) → Process result\n2. Name approval before finalization\n - Generate names → Present options → Human selects → Finalize\n\n## Detailed Workflow Orchestration\n\nStep-by-step orchestration for each archetype — inputs, hand-offs and failure handling — is in\n[workflow-orchestration.md](./workflow-orchestration.md).\n\n## CLI Exposure for Pure Functions\n\nPure function tools (validators) can be exposed via CLI for direct invocation.\n\n### Usage Pattern\n\n\`\`\`bash\n# Pass JSON input, get JSON/YAML output\necho \'{\"name\": \"Mr. Whiskers\", \"characteristics\": {...}}\' | vat agents validate-name\n\n# Output format (using 2>&1):\n# [stdout - complete output]\n# ---\n# [stderr - error messages]\n\`\`\`\n\n### Implementation Requirements\n\n1. **Input:** JSON on stdin\n2. **Output:** JSON or YAML on stdout (complete, flushed)\n3. **Errors:** stderr (separated with \`---\` when using \`2>&1\`)\n4. **Exit codes:** 0 = success, 1 = validation failure, 2 = error\n\n### Sequence Example\n\n\`\`\`\n[Start]\n↓\nRead stdin (JSON input)\n↓\nParse and validate input schema\n↓\nExecute pure function\n↓\nFlush stdout with complete result\n↓\nPrint \"---\" separator\n↓\nFlush stderr with any error messages\n↓\nExit with appropriate code\n\`\`\`\n\n### Benefits\n\n- MCP can map to CLI calls (fast, stateless)\n- No long-running processes for pure functions\n- Clear separation of output vs errors\n- Composable with other CLI tools\n\n### Applicable Agents\n\n- **name-validator** - \`vat agents validate-name\`\n- **haiku-validator** - \`vat agents validate-haiku\`\n- Future: Any pure function tool\n\n## What Claude Code Does vs What Agents Do\n\n### Claude Code\'s Role (This Skill):\n\n**Orchestration:**\n- Select which agent(s) to use\n- Chain agents in workflows (pipelines)\n- Manage state between agents (pass outputs as inputs)\n- Handle retries and error recovery\n\n**Monitoring:**\n- Track conversation phase (gathering, recommendation, selection)\n- Count validation attempts (retry limits)\n- Detect completion signals (phase transitions)\n- Monitor timeouts (HITL approvals)\n\n**Decision Making:**\n- When to transition between phases\n- When to retry vs give up\n- Which agent path to take (photo vs text)\n- How to present results to user\n\n### Agents\' Role (Agent Resources):\n\n**Pure Functions:**\n- Execute deterministic logic (validation rules)\n- Return results instantly\n- No side effects, no state\n\n**LLM Analyzers:**\n- Extract structured data from unstructured input\n- Apply domain knowledge to classification\n- Generate creative content (names, haikus)\n\n**Conversational Assistants:**\n- Conduct natural dialogue\n- Accumulate context over turns\n- Make recommendations based on collected factors\n\n**Event Integrators:**\n- Emit events to external systems\n- Block waiting for responses\n- Handle timeouts and errors\n\n**Key insight:** Agents are specialized, focused on their domain. Claude Code provides the glue, orchestration, and workflow logic.\n\n## Content Separation Guidelines\n\n### What Belongs in Agent Resources (LLM-Facing):\n\n✅ System prompts and LLM instructions\n✅ Domain knowledge (breed database, syllable counting rules, kigo lists)\n✅ Extraction formats (JSON schemas, output templates)\n✅ Examples for few-shot learning\n✅ Natural language mappings\n✅ Validation rules and constraints\n\n**Location:** \`resources/agents/*.md\`\n\n### What Belongs in Skills (Claude Code-Facing):\n\n✅ When to trigger agents (user intent signals)\n✅ How to chain agents (workflow patterns)\n✅ What to monitor (readiness criteria, retry limits)\n✅ Debugging guidance (common issues, pitfalls)\n✅ Meta-strategy (why photo first, when to retry)\n✅ CLI exposure patterns\n\n**Location:** \`resources/skills/*.md\` (this file)\n\n### Overlap (Reference, Don\'t Duplicate):\n\n⚠️ Workflow structure (skill explains orchestration, agent implements)\n⚠️ Phase transitions (skill monitors, agent executes)\n⚠️ Validation criteria (skill manages retries, agent defines rules)\n\n**Resolution:** Keep agent resources authoritative. Skills REFERENCE via links, don\'t duplicate.\n\n## Common Pitfalls\n\n### ❌ Don\'t: Call Agents Without Understanding Their Archetype\n\nEach archetype has different behavior:\n- Pure functions: Instant, deterministic\n- LLM analyzers: Single call, non-deterministic\n- Conversational: Multi-turn, stateful\n- Event integrators: Blocking, timeout handling\n\n### ✅ Do: Match Orchestration to Archetype\n\n\`\`\`\nPure function → Call directly, no retry needed\nLLM analyzer → Call once, parse result\nConversational → Multi-turn loop with state\nEvent integrator → Emit, wait, handle timeout\n\`\`\`\n\n### ❌ Don\'t: Skip Validation in Generate-Validate Loops\n\nValidators exist for a reason. Don\'t bypass them or assume LLM output is always valid.\n\n### ✅ Do: Embrace the Feedback Loop\n\n\`\`\`\nGenerate → Validate → If invalid, retry with feedback\n\`\`\`\n\nThis pattern tests real-world orchestration where first attempts often fail.\n\n### ❌ Don\'t: Mix Mock and Production Modes Accidentally\n\nMock mode (EXIF metadata) is fast and free. Production mode (real APIs) is slow and expensive. Be explicit about which mode you\'re using.\n\n### ✅ Do: Use Mock Mode for Development, Production for Deployment\n\n\`\`\`typescript\n// Development/testing\nconst result = await analyzePhoto(path, { mockable: true });\n\n// Production\nconst result = await analyzePhoto(path, { mockable: false });\n\`\`\`\n\n### ❌ Don\'t: Bombard Users with Questions in Conversational Flows\n\nOne question at a time. Give users space to think and respond naturally.\n\n### ✅ Do: Guide Conversation Gently\n\n\`\`\`\nBad: \"Tell me your music, living space, activity level, grooming, family, and allergies\"\nGood: \"What\'s your favorite type of music?\" → [response] → \"Great! Tell me about your living space...\"\n\`\`\`\n\n## Debugging: When Things Go Wrong\n\n### Issue: Photo Analysis Fails\n\n**Symptoms:** Vision API errors, unexpected characteristics\n\n**Debug steps:**\n1. Check if image path is valid\n2. Verify image is actually a photo (not text, PDF, etc.)\n3. Try mock mode first: \`{ mockable: true }\`\n4. Check API key and rate limits for production mode\n5. Verify EXIF metadata format if using mock mode\n\n### Issue: Name Validation Always Fails\n\n**Symptoms:** Name generator can\'t produce valid names after 3+ attempts\n\n**Debug steps:**\n1. Check validation rules: name-validator has quirky requirements\n2. Review characteristics: Validation rules depend on cat traits\n3. Verify characteristics schema: All required fields present?\n4. Check feedback loop: Is validation.reason being used for retries?\n\n**Common cause:** ~60-70% rejection rate is EXPECTED. This forces iteration and tests feedback loops.\n\n### Issue: Haiku Validation Rejects Everything\n\n**Symptoms:** Haiku generator struggles to meet 5-7-5 syllable structure\n\n**Debug steps:**\n1. Check syllable counting algorithm: May differ from LLM\'s internal counting\n2. Verify kigo (seasonal word) presence: Required for valid haiku\n3. Check kireji (cutting word) detection: Optional but improves score\n4. Review haiku format: Must be exactly 3 lines\n\n**Solution:** Allow multiple retry attempts (3-5). Haiku generation is hard.\n\n### Issue: Conversation Stalls in Breed Selection\n\n**Symptoms:** Agent doesn\'t transition to recommendations\n\n**Debug steps:**\n1. Check factor count: Need ≥4 factors collected\n2. Verify music preference: REQUIRED for transition\n3. Review conversation history: Are factors being extracted?\n4. Check readiness criteria: Session state vs actual factors\n\n**Solution:** Ensure extraction happens after each turn. Monitor \`factorsCollected\` metadata.\n\n### Issue: HITL Approval Times Out\n\n**Symptoms:** human-approval agent returns timeout status\n\n**Debug steps:**\n1. Check timeout value: Default 60s, may need adjustment\n2. Verify event emission: Is request actually sent?\n3. Check mock mode: Set \`mockable: true\` for testing\n4. Review request format: Is it clear what needs approval?\n\n**Solution:** For testing, use mock mode. For production, increase timeout or add retry logic.\n\n## Agent Resource Links\n\n### Pure Function Tools\n- name-validator (no agent resource - pure TypeScript logic)\n- haiku-validator (no agent resource - pure TypeScript logic)\n\n### One-Shot LLM Analyzers\n- [Photo Analyzer](../agents/photo-analyzer.md) - Vision analysis\n- [Description Parser](../agents/description-parser.md) - Text parsing\n- [Name Generator](../agents/name-generator.md) - Creative naming\n- [Haiku Generator](../agents/haiku-generator.md) - Haiku composition\n\n### Conversational Assistant\n- [Breed Advisor](../agents/breed-advisor.md) - Multi-turn breed selection\n - [Welcome Message](../agents/breed-advisor.md#welcome-message)\n - [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight)\n - [Factor Definitions](../agents/breed-advisor.md#factor-definitions)\n - [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy)\n - [Factor Extraction Prompt](../agents/breed-advisor.md#factor-extraction-prompt)\n - [Transition Message](../agents/breed-advisor.md#transition-message)\n - [Recommendation Presentation](../agents/breed-advisor.md#recommendation-presentation-prompt)\n - [Selection Extraction](../agents/breed-advisor.md#selection-extraction-prompt)\n - [Conclusion Prompt](../agents/breed-advisor.md#conclusion-prompt)\n\n### External Event Integrator\n- [Human Approval](../agents/human-approval.md) - HITL approval gate\n\n### Related Documentation\n- [Cat Breed Selection Skill](./cat-breed-selection.md) - Detailed breed advisor orchestration\n\n## Success Criteria\n\nYour orchestration is successful when:\n\n**For Single Agents:**\n- Agent called with valid input schema\n- Output parsed and validated correctly\n- Errors handled gracefully\n- User receives clear, actionable results\n\n**For Pipelines:**\n- Data flows correctly between agents\n- Schema compatibility maintained (CatCharacteristics convergence)\n- Intermediate results stored appropriately\n- Final output meets user\'s original intent\n\n**For Loops:**\n- Retry logic prevents infinite loops (max attempts)\n- Feedback improves subsequent generations\n- User informed of progress (\"Generating... Attempt 2 of 3\")\n- Success achieved within reasonable attempts\n\n**For Conversational Flows:**\n- User feels heard, not interrogated\n- Natural dialogue rhythm maintained\n- Factors collected efficiently (4-6 turns typical)\n- Recommendations feel personalized\n- Selection confirmed clearly\n\n**For HITL Workflows:**\n- Request clearly formatted for human reviewer\n- Timeout handling prevents indefinite blocking\n- Approval/rejection handled appropriately\n- User understands what happened\n\n## Advanced Patterns and CLI Integration\n\nParallel, conditional and checkpointed orchestration, plus worked CLI request/response pairs,\nare in [orchestration-patterns.md](./orchestration-patterns.md).\n";
11
11
 
12
12
  export const fragments = {
13
13
  purposeForClaudeCodeNotTheLlm: {
@@ -32,8 +32,8 @@ export const fragments = {
32
32
  },
33
33
  detailedWorkflowOrchestration: {
34
34
  header: "## Detailed Workflow Orchestration",
35
- body: "### Workflow A: Breed Selection (Conversational)\n\n**When:** User wants help finding the right cat breed.\n\n**Agent:** [breed-advisor](../agents/breed-advisor.md)\n\n**Orchestration strategy:**\n1. **Phase 1 - Gathering** (see [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy))\n - Collect ≥4 factors including music preference\n - ONE question at a time (don\'t bombard)\n - Extract factors after each turn\n - Monitor readiness: \`factorsCollected >= 4 && musicPreference != null\`\n\n2. **Phase 2 - Recommendation**\n - Present 3-5 matched breeds\n - Allow exploration, questions, comparisons\n - Use conversational formatting (not data dump)\n\n3. **Phase 3 - Selection**\n - Detect selection signals (\"I\'ll take\", \"sounds good\")\n - Conclude gracefully\n - Provide next steps or exit instruction\n\n**Critical factor:** Music preference is the PRIMARY compatibility factor. Ask early, use as conversation anchor. See [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight) for mappings.\n\n**Reference implementation:** See [cat-breed-selection.md](./cat-breed-selection.md) for detailed breed selection orchestration.\n\n### Workflow B: Photo Analysis Pipeline\n\n**When:** User provides a cat photo and wants analysis, name, or haiku.\n\n**Agents:** [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Analyze Photo\n- Input: Image path/URL\n- Agent: photo-analyzer\n- Output: CatCharacteristics\n- Note: Supports mock mode (reads EXIF) for testing\n\nStep 2: Generate Content\n- Input: CatCharacteristics from Step 1\n- Agent: name-generator OR haiku-generator\n- Output: NameSuggestion OR Haiku\n\nOptional Step 3: Validate\n- Input: Generated content + original characteristics\n- Agent: name-validator OR haiku-validator (pure functions)\n- Output: Validation result\n- If invalid: Retry Step 2 with feedback\n\`\`\`\n\n**Mockable behavior:** photo-analyzer reads EXIF metadata in mock mode. For production, set \`mockable: false\` to use real vision API.\n\n### Workflow C: Text Description Pipeline\n\n**When:** User describes a cat in text (no photo).\n\n**Agents:** [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Parse Description\n- Input: Text description\n- Agent: description-parser\n- Output: CatCharacteristics (same schema as photo-analyzer!)\n\nStep 2-3: Same as Workflow B\n- Multi-modal convergence: photo and text produce same schema\n- Downstream agents (name-gen, haiku-gen) work with either\n\`\`\`\n\n**Key insight:** Photo and text paths converge at \`CatCharacteristics\` schema. This enables multi-modal workflows without agent changes.\n\n### Workflow D: Generate-Validate-Retry Loop\n\n**When:** Generator produces content that must pass validation rules.\n\n**Pattern:** Generator (LLM) + Validator (pure function) + Retry logic\n\n**Implementation:**\n\n\`\`\`typescript\n// Pseudo-code for orchestration\nlet attempts = 0;\nconst maxAttempts = 3;\n\nwhile (attempts < maxAttempts) {\n // Generate content\n const suggestion = await generator(characteristics);\n\n // Validate (pure function, instant)\n const validation = validator(suggestion, characteristics);\n\n if (validation.status === \'valid\') {\n return suggestion; // Success!\n }\n\n // Retry with feedback\n attempts++;\n // Optional: Adjust approach based on validation.reason\n}\n\nthrow new Error(\'Could not generate valid content after 3 attempts\');\n\`\`\`\n\n**Why this pattern works:**\n- Generator has NO knowledge of validation rules (isolated concerns)\n- Validator is deterministic (pure function, fast)\n- Feedback loop tests multi-turn orchestration\n- ~60-70% initial rejection rate forces iteration\n\n**Agents using this pattern:**\n- [name-generator](../agents/name-generator.md) + name-validator\n- [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n### Workflow E: HITL Approval Gate\n\n**When:** Decision requires human judgment (compliance, taste, ethics).\n\n**Agent:** [human-approval](../agents/human-approval.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Prepare Request\n- Gather all necessary context\n- Format clearly for human reviewer\n- Include relevant data (characteristics, generated content, reasoning)\n\nStep 2: Emit Approval Request\n- Agent: human-approval\n- Input: Request payload\n- Behavior: Blocks waiting for response\n- Timeout: Configurable (default: 60s)\n\nStep 3: Handle Response\n- Approved: Continue workflow\n- Rejected: Handle gracefully (retry, inform user, etc.)\n- Timeout: Fall back to safe default or escalate\n\`\`\`\n\n**Mockable behavior:** Set \`mockable: true\` to auto-approve without human (useful for testing).\n\n**Real-world uses:**\n- Breeding application approval\n- Name selection from alternatives\n- Content moderation decisions",
36
- text: "## Detailed Workflow Orchestration\n\n### Workflow A: Breed Selection (Conversational)\n\n**When:** User wants help finding the right cat breed.\n\n**Agent:** [breed-advisor](../agents/breed-advisor.md)\n\n**Orchestration strategy:**\n1. **Phase 1 - Gathering** (see [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy))\n - Collect ≥4 factors including music preference\n - ONE question at a time (don\'t bombard)\n - Extract factors after each turn\n - Monitor readiness: \`factorsCollected >= 4 && musicPreference != null\`\n\n2. **Phase 2 - Recommendation**\n - Present 3-5 matched breeds\n - Allow exploration, questions, comparisons\n - Use conversational formatting (not data dump)\n\n3. **Phase 3 - Selection**\n - Detect selection signals (\"I\'ll take\", \"sounds good\")\n - Conclude gracefully\n - Provide next steps or exit instruction\n\n**Critical factor:** Music preference is the PRIMARY compatibility factor. Ask early, use as conversation anchor. See [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight) for mappings.\n\n**Reference implementation:** See [cat-breed-selection.md](./cat-breed-selection.md) for detailed breed selection orchestration.\n\n### Workflow B: Photo Analysis Pipeline\n\n**When:** User provides a cat photo and wants analysis, name, or haiku.\n\n**Agents:** [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Analyze Photo\n- Input: Image path/URL\n- Agent: photo-analyzer\n- Output: CatCharacteristics\n- Note: Supports mock mode (reads EXIF) for testing\n\nStep 2: Generate Content\n- Input: CatCharacteristics from Step 1\n- Agent: name-generator OR haiku-generator\n- Output: NameSuggestion OR Haiku\n\nOptional Step 3: Validate\n- Input: Generated content + original characteristics\n- Agent: name-validator OR haiku-validator (pure functions)\n- Output: Validation result\n- If invalid: Retry Step 2 with feedback\n\`\`\`\n\n**Mockable behavior:** photo-analyzer reads EXIF metadata in mock mode. For production, set \`mockable: false\` to use real vision API.\n\n### Workflow C: Text Description Pipeline\n\n**When:** User describes a cat in text (no photo).\n\n**Agents:** [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Parse Description\n- Input: Text description\n- Agent: description-parser\n- Output: CatCharacteristics (same schema as photo-analyzer!)\n\nStep 2-3: Same as Workflow B\n- Multi-modal convergence: photo and text produce same schema\n- Downstream agents (name-gen, haiku-gen) work with either\n\`\`\`\n\n**Key insight:** Photo and text paths converge at \`CatCharacteristics\` schema. This enables multi-modal workflows without agent changes.\n\n### Workflow D: Generate-Validate-Retry Loop\n\n**When:** Generator produces content that must pass validation rules.\n\n**Pattern:** Generator (LLM) + Validator (pure function) + Retry logic\n\n**Implementation:**\n\n\`\`\`typescript\n// Pseudo-code for orchestration\nlet attempts = 0;\nconst maxAttempts = 3;\n\nwhile (attempts < maxAttempts) {\n // Generate content\n const suggestion = await generator(characteristics);\n\n // Validate (pure function, instant)\n const validation = validator(suggestion, characteristics);\n\n if (validation.status === \'valid\') {\n return suggestion; // Success!\n }\n\n // Retry with feedback\n attempts++;\n // Optional: Adjust approach based on validation.reason\n}\n\nthrow new Error(\'Could not generate valid content after 3 attempts\');\n\`\`\`\n\n**Why this pattern works:**\n- Generator has NO knowledge of validation rules (isolated concerns)\n- Validator is deterministic (pure function, fast)\n- Feedback loop tests multi-turn orchestration\n- ~60-70% initial rejection rate forces iteration\n\n**Agents using this pattern:**\n- [name-generator](../agents/name-generator.md) + name-validator\n- [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n### Workflow E: HITL Approval Gate\n\n**When:** Decision requires human judgment (compliance, taste, ethics).\n\n**Agent:** [human-approval](../agents/human-approval.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Prepare Request\n- Gather all necessary context\n- Format clearly for human reviewer\n- Include relevant data (characteristics, generated content, reasoning)\n\nStep 2: Emit Approval Request\n- Agent: human-approval\n- Input: Request payload\n- Behavior: Blocks waiting for response\n- Timeout: Configurable (default: 60s)\n\nStep 3: Handle Response\n- Approved: Continue workflow\n- Rejected: Handle gracefully (retry, inform user, etc.)\n- Timeout: Fall back to safe default or escalate\n\`\`\`\n\n**Mockable behavior:** Set \`mockable: true\` to auto-approve without human (useful for testing).\n\n**Real-world uses:**\n- Breeding application approval\n- Name selection from alternatives\n- Content moderation decisions"
35
+ body: "Step-by-step orchestration for each archetype — inputs, hand-offs and failure handling — is in\n[workflow-orchestration.md](./workflow-orchestration.md).",
36
+ text: "## Detailed Workflow Orchestration\n\nStep-by-step orchestration for each archetype — inputs, hand-offs and failure handling — is in\n[workflow-orchestration.md](./workflow-orchestration.md)."
37
37
  },
38
38
  cliExposureForPureFunctions: {
39
39
  header: "## CLI Exposure for Pure Functions",
@@ -62,32 +62,17 @@ export const fragments = {
62
62
  },
63
63
  agentResourceLinks: {
64
64
  header: "## Agent Resource Links",
65
- body: "### Pure Function Tools\n- name-validator (no agent resource - pure TypeScript logic)\n- haiku-validator (no agent resource - pure TypeScript logic)\n\n### One-Shot LLM Analyzers\n- [Photo Analyzer](../agents/photo-analyzer.md) - Vision analysis\n- [Description Parser](../agents/description-parser.md) - Text parsing\n- [Name Generator](../agents/name-generator.md) - Creative naming\n- [Haiku Generator](../agents/haiku-generator.md) - Haiku composition\n\n### Conversational Assistant\n- [Breed Advisor](../agents/breed-advisor.md) - Multi-turn breed selection\n - [Welcome Message](../agents/breed-advisor.md#welcome-message)\n - [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight)\n - [Factor Definitions](../agents/breed-advisor.md#factor-definitions)\n - [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy)\n - [Factor Extraction Prompt](../agents/breed-advisor.md#factor-extraction-prompt)\n - [Transition Message](../agents/breed-advisor.md#transition-message)\n - [Recommendation Presentation](../agents/breed-advisor.md#recommendation-presentation-prompt)\n - [Selection Extraction](../agents/breed-advisor.md#selection-extraction-prompt)\n - [Conclusion Prompt](../agents/breed-advisor.md#conclusion-prompt)\n\n### External Event Integrator\n- [Human Approval](../agents/human-approval.md) - HITL approval gate\n\n### Related Documentation\n- [Cat Breed Selection Skill](./cat-breed-selection.md) - Detailed breed advisor orchestration\n- [Package README](../../README.md) - Human-facing documentation\n- [Package Structure](../../docs/structure.md) - Technical organization",
66
- text: "## Agent Resource Links\n\n### Pure Function Tools\n- name-validator (no agent resource - pure TypeScript logic)\n- haiku-validator (no agent resource - pure TypeScript logic)\n\n### One-Shot LLM Analyzers\n- [Photo Analyzer](../agents/photo-analyzer.md) - Vision analysis\n- [Description Parser](../agents/description-parser.md) - Text parsing\n- [Name Generator](../agents/name-generator.md) - Creative naming\n- [Haiku Generator](../agents/haiku-generator.md) - Haiku composition\n\n### Conversational Assistant\n- [Breed Advisor](../agents/breed-advisor.md) - Multi-turn breed selection\n - [Welcome Message](../agents/breed-advisor.md#welcome-message)\n - [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight)\n - [Factor Definitions](../agents/breed-advisor.md#factor-definitions)\n - [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy)\n - [Factor Extraction Prompt](../agents/breed-advisor.md#factor-extraction-prompt)\n - [Transition Message](../agents/breed-advisor.md#transition-message)\n - [Recommendation Presentation](../agents/breed-advisor.md#recommendation-presentation-prompt)\n - [Selection Extraction](../agents/breed-advisor.md#selection-extraction-prompt)\n - [Conclusion Prompt](../agents/breed-advisor.md#conclusion-prompt)\n\n### External Event Integrator\n- [Human Approval](../agents/human-approval.md) - HITL approval gate\n\n### Related Documentation\n- [Cat Breed Selection Skill](./cat-breed-selection.md) - Detailed breed advisor orchestration\n- [Package README](../../README.md) - Human-facing documentation\n- [Package Structure](../../docs/structure.md) - Technical organization"
65
+ body: "### Pure Function Tools\n- name-validator (no agent resource - pure TypeScript logic)\n- haiku-validator (no agent resource - pure TypeScript logic)\n\n### One-Shot LLM Analyzers\n- [Photo Analyzer](../agents/photo-analyzer.md) - Vision analysis\n- [Description Parser](../agents/description-parser.md) - Text parsing\n- [Name Generator](../agents/name-generator.md) - Creative naming\n- [Haiku Generator](../agents/haiku-generator.md) - Haiku composition\n\n### Conversational Assistant\n- [Breed Advisor](../agents/breed-advisor.md) - Multi-turn breed selection\n - [Welcome Message](../agents/breed-advisor.md#welcome-message)\n - [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight)\n - [Factor Definitions](../agents/breed-advisor.md#factor-definitions)\n - [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy)\n - [Factor Extraction Prompt](../agents/breed-advisor.md#factor-extraction-prompt)\n - [Transition Message](../agents/breed-advisor.md#transition-message)\n - [Recommendation Presentation](../agents/breed-advisor.md#recommendation-presentation-prompt)\n - [Selection Extraction](../agents/breed-advisor.md#selection-extraction-prompt)\n - [Conclusion Prompt](../agents/breed-advisor.md#conclusion-prompt)\n\n### External Event Integrator\n- [Human Approval](../agents/human-approval.md) - HITL approval gate\n\n### Related Documentation\n- [Cat Breed Selection Skill](./cat-breed-selection.md) - Detailed breed advisor orchestration",
66
+ text: "## Agent Resource Links\n\n### Pure Function Tools\n- name-validator (no agent resource - pure TypeScript logic)\n- haiku-validator (no agent resource - pure TypeScript logic)\n\n### One-Shot LLM Analyzers\n- [Photo Analyzer](../agents/photo-analyzer.md) - Vision analysis\n- [Description Parser](../agents/description-parser.md) - Text parsing\n- [Name Generator](../agents/name-generator.md) - Creative naming\n- [Haiku Generator](../agents/haiku-generator.md) - Haiku composition\n\n### Conversational Assistant\n- [Breed Advisor](../agents/breed-advisor.md) - Multi-turn breed selection\n - [Welcome Message](../agents/breed-advisor.md#welcome-message)\n - [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight)\n - [Factor Definitions](../agents/breed-advisor.md#factor-definitions)\n - [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy)\n - [Factor Extraction Prompt](../agents/breed-advisor.md#factor-extraction-prompt)\n - [Transition Message](../agents/breed-advisor.md#transition-message)\n - [Recommendation Presentation](../agents/breed-advisor.md#recommendation-presentation-prompt)\n - [Selection Extraction](../agents/breed-advisor.md#selection-extraction-prompt)\n - [Conclusion Prompt](../agents/breed-advisor.md#conclusion-prompt)\n\n### External Event Integrator\n- [Human Approval](../agents/human-approval.md) - HITL approval gate\n\n### Related Documentation\n- [Cat Breed Selection Skill](./cat-breed-selection.md) - Detailed breed advisor orchestration"
67
67
  },
68
68
  successCriteria: {
69
69
  header: "## Success Criteria",
70
70
  body: "Your orchestration is successful when:\n\n**For Single Agents:**\n- Agent called with valid input schema\n- Output parsed and validated correctly\n- Errors handled gracefully\n- User receives clear, actionable results\n\n**For Pipelines:**\n- Data flows correctly between agents\n- Schema compatibility maintained (CatCharacteristics convergence)\n- Intermediate results stored appropriately\n- Final output meets user\'s original intent\n\n**For Loops:**\n- Retry logic prevents infinite loops (max attempts)\n- Feedback improves subsequent generations\n- User informed of progress (\"Generating... Attempt 2 of 3\")\n- Success achieved within reasonable attempts\n\n**For Conversational Flows:**\n- User feels heard, not interrogated\n- Natural dialogue rhythm maintained\n- Factors collected efficiently (4-6 turns typical)\n- Recommendations feel personalized\n- Selection confirmed clearly\n\n**For HITL Workflows:**\n- Request clearly formatted for human reviewer\n- Timeout handling prevents indefinite blocking\n- Approval/rejection handled appropriately\n- User understands what happened",
71
71
  text: "## Success Criteria\n\nYour orchestration is successful when:\n\n**For Single Agents:**\n- Agent called with valid input schema\n- Output parsed and validated correctly\n- Errors handled gracefully\n- User receives clear, actionable results\n\n**For Pipelines:**\n- Data flows correctly between agents\n- Schema compatibility maintained (CatCharacteristics convergence)\n- Intermediate results stored appropriately\n- Final output meets user\'s original intent\n\n**For Loops:**\n- Retry logic prevents infinite loops (max attempts)\n- Feedback improves subsequent generations\n- User informed of progress (\"Generating... Attempt 2 of 3\")\n- Success achieved within reasonable attempts\n\n**For Conversational Flows:**\n- User feels heard, not interrogated\n- Natural dialogue rhythm maintained\n- Factors collected efficiently (4-6 turns typical)\n- Recommendations feel personalized\n- Selection confirmed clearly\n\n**For HITL Workflows:**\n- Request clearly formatted for human reviewer\n- Timeout handling prevents indefinite blocking\n- Approval/rejection handled appropriately\n- User understands what happened"
72
72
  },
73
- advancedOrchestrationPatterns: {
74
- header: "## Advanced Orchestration Patterns",
75
- body: "### Pattern: Parallel Execution\n\nWhen agents don\'t depend on each other, run them in parallel.\n\n**Example:** Generate both name and haiku from same characteristics\n\n\`\`\`typescript\nconst [name, haiku] = await Promise.all([\n generateCatName(characteristics),\n generateCatHaiku(characteristics),\n]);\n\`\`\`\n\n**Benefits:** Faster execution, better user experience\n\n### Pattern: Fallback Chain\n\nWhen one agent fails, try alternatives.\n\n**Example:** Photo analysis with text description fallback\n\n\`\`\`typescript\nlet characteristics;\ntry {\n characteristics = await analyzePhoto(imagePath);\n} catch {\n // Fallback to text description\n const description = await getUserDescription();\n characteristics = await parseDescription(description);\n}\n\`\`\`\n\n**Benefits:** Resilience, better error handling\n\n### Pattern: Conditional Routing\n\nChoose agent path based on user input type.\n\n**Example:** Multi-modal input handling\n\n\`\`\`typescript\nif (input.type === \'image\') {\n characteristics = await analyzePhoto(input.imagePath);\n} else if (input.type === \'text\') {\n characteristics = await parseDescription(input.description);\n} else {\n // Conversational gathering\n characteristics = await breedAdvisor.gather();\n}\n\`\`\`\n\n**Benefits:** Flexible input handling, better UX\n\n### Pattern: Staged Approval\n\nBreak complex workflows into approval stages.\n\n**Example:** Multi-stage breeding application\n\n\`\`\`typescript\n// Stage 1: Basic info approval\nconst basicApproval = await humanApproval({ stage: \'basic\', data });\nif (!basicApproval.approved) return;\n\n// Stage 2: Detailed questionnaire\nconst detailApproval = await humanApproval({ stage: \'detail\', data });\nif (!detailApproval.approved) return;\n\n// Stage 3: Final review\nconst finalApproval = await humanApproval({ stage: \'final\', data });\n\`\`\`\n\n**Benefits:** Checkpoints prevent wasted work, clearer decision points",
76
- text: "## Advanced Orchestration Patterns\n\n### Pattern: Parallel Execution\n\nWhen agents don\'t depend on each other, run them in parallel.\n\n**Example:** Generate both name and haiku from same characteristics\n\n\`\`\`typescript\nconst [name, haiku] = await Promise.all([\n generateCatName(characteristics),\n generateCatHaiku(characteristics),\n]);\n\`\`\`\n\n**Benefits:** Faster execution, better user experience\n\n### Pattern: Fallback Chain\n\nWhen one agent fails, try alternatives.\n\n**Example:** Photo analysis with text description fallback\n\n\`\`\`typescript\nlet characteristics;\ntry {\n characteristics = await analyzePhoto(imagePath);\n} catch {\n // Fallback to text description\n const description = await getUserDescription();\n characteristics = await parseDescription(description);\n}\n\`\`\`\n\n**Benefits:** Resilience, better error handling\n\n### Pattern: Conditional Routing\n\nChoose agent path based on user input type.\n\n**Example:** Multi-modal input handling\n\n\`\`\`typescript\nif (input.type === \'image\') {\n characteristics = await analyzePhoto(input.imagePath);\n} else if (input.type === \'text\') {\n characteristics = await parseDescription(input.description);\n} else {\n // Conversational gathering\n characteristics = await breedAdvisor.gather();\n}\n\`\`\`\n\n**Benefits:** Flexible input handling, better UX\n\n### Pattern: Staged Approval\n\nBreak complex workflows into approval stages.\n\n**Example:** Multi-stage breeding application\n\n\`\`\`typescript\n// Stage 1: Basic info approval\nconst basicApproval = await humanApproval({ stage: \'basic\', data });\nif (!basicApproval.approved) return;\n\n// Stage 2: Detailed questionnaire\nconst detailApproval = await humanApproval({ stage: \'detail\', data });\nif (!detailApproval.approved) return;\n\n// Stage 3: Final review\nconst finalApproval = await humanApproval({ stage: \'final\', data });\n\`\`\`\n\n**Benefits:** Checkpoints prevent wasted work, clearer decision points"
77
- },
78
- cliIntegrationExamples: {
79
- header: "## CLI Integration Examples",
80
- body: "### Example 1: Validate Name via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"name\": \"Mr. Whiskers\",\n \"characteristics\": {\n \"physical\": {\n \"furColor\": \"Orange\",\n \"furPattern\": \"Tabby\",\n \"size\": \"medium\"\n },\n \"behavioral\": {\n \"personality\": [\"Playful\", \"Curious\"]\n }\n }\n}\' | vat agents validate-name\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"reason\": \"Name meets all quirky validation rules\",\n \"confidence\": 0.95\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 2: Validate Haiku via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"lines\": [\n \"Orange sunset fur\",\n \"Paws dance across the tatami\",\n \"Zen master purrs\"\n ]\n}\' | vat agents validate-haiku\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"syllableCounts\": [5, 7, 5],\n \"hasKigo\": true,\n \"kigo\": \"sunset\",\n \"hasKireji\": false,\n \"errors\": []\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 3: Error Handling\n\n\`\`\`bash\n# Invalid input\necho \'{\"invalid\": \"schema\"}\' | vat agents validate-name\n\n# Output\n# (stdout - empty)\n---\nError: Invalid input schema. Expected \'name\' and \'characteristics\' fields.\nSchema validation failed:\n - Missing required field: name\n - Missing required field: characteristics\n# (exit code: 2)\n\`\`\`",
81
- text: "## CLI Integration Examples\n\n### Example 1: Validate Name via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"name\": \"Mr. Whiskers\",\n \"characteristics\": {\n \"physical\": {\n \"furColor\": \"Orange\",\n \"furPattern\": \"Tabby\",\n \"size\": \"medium\"\n },\n \"behavioral\": {\n \"personality\": [\"Playful\", \"Curious\"]\n }\n }\n}\' | vat agents validate-name\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"reason\": \"Name meets all quirky validation rules\",\n \"confidence\": 0.95\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 2: Validate Haiku via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"lines\": [\n \"Orange sunset fur\",\n \"Paws dance across the tatami\",\n \"Zen master purrs\"\n ]\n}\' | vat agents validate-haiku\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"syllableCounts\": [5, 7, 5],\n \"hasKigo\": true,\n \"kigo\": \"sunset\",\n \"hasKireji\": false,\n \"errors\": []\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 3: Error Handling\n\n\`\`\`bash\n# Invalid input\necho \'{\"invalid\": \"schema\"}\' | vat agents validate-name\n\n# Output\n# (stdout - empty)\n---\nError: Invalid input schema. Expected \'name\' and \'characteristics\' fields.\nSchema validation failed:\n - Missing required field: name\n - Missing required field: characteristics\n# (exit code: 2)\n\`\`\`"
82
- },
83
- nextSteps: {
84
- header: "## Next Steps",
85
- body: "Once you\'ve successfully orchestrated agents:\n\n1. **Explore Combinations** - Try chaining agents in new ways\n2. **Add Custom Validation** - Create your own quirky validation rules\n3. **Build New Workflows** - Combine agents for complex use cases\n4. **Contribute Patterns** - Share successful orchestration strategies\n5. **Package Skills** - Create distributable skill packages with pure functions",
86
- text: "## Next Steps\n\nOnce you\'ve successfully orchestrated agents:\n\n1. **Explore Combinations** - Try chaining agents in new ways\n2. **Add Custom Validation** - Create your own quirky validation rules\n3. **Build New Workflows** - Combine agents for complex use cases\n4. **Contribute Patterns** - Share successful orchestration strategies\n5. **Package Skills** - Create distributable skill packages with pure functions"
87
- },
88
- questions: {
89
- header: "## Questions?",
90
- body: "- **For orchestration patterns:** This file (SKILL.md)\n- **For agent-specific details:** See individual agent resources\n- **For implementation examples:** See examples/ directory\n- **For archetype theory:** See package README.md",
91
- text: "## Questions?\n\n- **For orchestration patterns:** This file (SKILL.md)\n- **For agent-specific details:** See individual agent resources\n- **For implementation examples:** See examples/ directory\n- **For archetype theory:** See package README.md"
73
+ advancedPatternsAndCliIntegration: {
74
+ header: "## Advanced Patterns and CLI Integration",
75
+ body: "Parallel, conditional and checkpointed orchestration, plus worked CLI request/response pairs,\nare in [orchestration-patterns.md](./orchestration-patterns.md).",
76
+ text: "## Advanced Patterns and CLI Integration\n\nParallel, conditional and checkpointed orchestration, plus worked CLI request/response pairs,\nare in [orchestration-patterns.md](./orchestration-patterns.md)."
92
77
  }
93
78
  };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Generated TypeScript declarations - DO NOT EDIT
3
+ */
4
+
5
+ export interface Fragment {
6
+ readonly header: string;
7
+ readonly body: string;
8
+ readonly text: string;
9
+ }
10
+
11
+ export const meta: {};
12
+
13
+ export const text: string;
14
+
15
+ export const fragments: {
16
+ readonly advancedOrchestrationPatterns: Fragment;
17
+ readonly cliIntegrationExamples: Fragment;
18
+ readonly nextSteps: Fragment;
19
+ readonly questions: Fragment;
20
+ };
21
+
22
+ export type FragmentName = keyof typeof fragments;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Generated from markdown file - DO NOT EDIT
3
+ */
4
+
5
+ export const meta = {};
6
+
7
+ export const text = "# Advanced Orchestration Patterns and CLI Integration\n\nReference material for [SKILL.md](./SKILL.md). Read this when you need the parallel,\nconditional and checkpointed orchestration shapes, or a worked CLI request/response pair.\n\n## Advanced Orchestration Patterns\n\n### Pattern: Parallel Execution\n\nWhen agents don\'t depend on each other, run them in parallel.\n\n**Example:** Generate both name and haiku from same characteristics\n\n\`\`\`typescript\nconst [name, haiku] = await Promise.all([\n generateCatName(characteristics),\n generateCatHaiku(characteristics),\n]);\n\`\`\`\n\n**Benefits:** Faster execution, better user experience\n\n### Pattern: Fallback Chain\n\nWhen one agent fails, try alternatives.\n\n**Example:** Photo analysis with text description fallback\n\n\`\`\`typescript\nlet characteristics;\ntry {\n characteristics = await analyzePhoto(imagePath);\n} catch {\n // Fallback to text description\n const description = await getUserDescription();\n characteristics = await parseDescription(description);\n}\n\`\`\`\n\n**Benefits:** Resilience, better error handling\n\n### Pattern: Conditional Routing\n\nChoose agent path based on user input type.\n\n**Example:** Multi-modal input handling\n\n\`\`\`typescript\nif (input.type === \'image\') {\n characteristics = await analyzePhoto(input.imagePath);\n} else if (input.type === \'text\') {\n characteristics = await parseDescription(input.description);\n} else {\n // Conversational gathering\n characteristics = await breedAdvisor.gather();\n}\n\`\`\`\n\n**Benefits:** Flexible input handling, better UX\n\n### Pattern: Staged Approval\n\nBreak complex workflows into approval stages.\n\n**Example:** Multi-stage breeding application\n\n\`\`\`typescript\n// Stage 1: Basic info approval\nconst basicApproval = await humanApproval({ stage: \'basic\', data });\nif (!basicApproval.approved) return;\n\n// Stage 2: Detailed questionnaire\nconst detailApproval = await humanApproval({ stage: \'detail\', data });\nif (!detailApproval.approved) return;\n\n// Stage 3: Final review\nconst finalApproval = await humanApproval({ stage: \'final\', data });\n\`\`\`\n\n**Benefits:** Checkpoints prevent wasted work, clearer decision points\n\n## CLI Integration Examples\n\n### Example 1: Validate Name via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"name\": \"Mr. Whiskers\",\n \"characteristics\": {\n \"physical\": {\n \"furColor\": \"Orange\",\n \"furPattern\": \"Tabby\",\n \"size\": \"medium\"\n },\n \"behavioral\": {\n \"personality\": [\"Playful\", \"Curious\"]\n }\n }\n}\' | vat agents validate-name\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"reason\": \"Name meets all quirky validation rules\",\n \"confidence\": 0.95\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 2: Validate Haiku via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"lines\": [\n \"Orange sunset fur\",\n \"Paws dance across the tatami\",\n \"Zen master purrs\"\n ]\n}\' | vat agents validate-haiku\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"syllableCounts\": [5, 7, 5],\n \"hasKigo\": true,\n \"kigo\": \"sunset\",\n \"hasKireji\": false,\n \"errors\": []\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 3: Error Handling\n\n\`\`\`bash\n# Invalid input\necho \'{\"invalid\": \"schema\"}\' | vat agents validate-name\n\n# Output\n# (stdout - empty)\n---\nError: Invalid input schema. Expected \'name\' and \'characteristics\' fields.\nSchema validation failed:\n - Missing required field: name\n - Missing required field: characteristics\n# (exit code: 2)\n\`\`\`\n\n## Next Steps\n\nOnce you\'ve successfully orchestrated agents:\n\n1. **Explore Combinations** - Try chaining agents in new ways\n2. **Add Custom Validation** - Create your own quirky validation rules\n3. **Build New Workflows** - Combine agents for complex use cases\n4. **Contribute Patterns** - Share successful orchestration strategies\n5. **Package Skills** - Create distributable skill packages with pure functions\n\n## Questions?\n\n- **For orchestration patterns:** This file (SKILL.md)\n- **For agent-specific details:** See individual agent resources\n- **For implementation examples:** See examples/ directory\n- **For archetype theory:** See package README.md\n";
8
+
9
+ export const fragments = {
10
+ advancedOrchestrationPatterns: {
11
+ header: "## Advanced Orchestration Patterns",
12
+ body: "### Pattern: Parallel Execution\n\nWhen agents don\'t depend on each other, run them in parallel.\n\n**Example:** Generate both name and haiku from same characteristics\n\n\`\`\`typescript\nconst [name, haiku] = await Promise.all([\n generateCatName(characteristics),\n generateCatHaiku(characteristics),\n]);\n\`\`\`\n\n**Benefits:** Faster execution, better user experience\n\n### Pattern: Fallback Chain\n\nWhen one agent fails, try alternatives.\n\n**Example:** Photo analysis with text description fallback\n\n\`\`\`typescript\nlet characteristics;\ntry {\n characteristics = await analyzePhoto(imagePath);\n} catch {\n // Fallback to text description\n const description = await getUserDescription();\n characteristics = await parseDescription(description);\n}\n\`\`\`\n\n**Benefits:** Resilience, better error handling\n\n### Pattern: Conditional Routing\n\nChoose agent path based on user input type.\n\n**Example:** Multi-modal input handling\n\n\`\`\`typescript\nif (input.type === \'image\') {\n characteristics = await analyzePhoto(input.imagePath);\n} else if (input.type === \'text\') {\n characteristics = await parseDescription(input.description);\n} else {\n // Conversational gathering\n characteristics = await breedAdvisor.gather();\n}\n\`\`\`\n\n**Benefits:** Flexible input handling, better UX\n\n### Pattern: Staged Approval\n\nBreak complex workflows into approval stages.\n\n**Example:** Multi-stage breeding application\n\n\`\`\`typescript\n// Stage 1: Basic info approval\nconst basicApproval = await humanApproval({ stage: \'basic\', data });\nif (!basicApproval.approved) return;\n\n// Stage 2: Detailed questionnaire\nconst detailApproval = await humanApproval({ stage: \'detail\', data });\nif (!detailApproval.approved) return;\n\n// Stage 3: Final review\nconst finalApproval = await humanApproval({ stage: \'final\', data });\n\`\`\`\n\n**Benefits:** Checkpoints prevent wasted work, clearer decision points",
13
+ text: "## Advanced Orchestration Patterns\n\n### Pattern: Parallel Execution\n\nWhen agents don\'t depend on each other, run them in parallel.\n\n**Example:** Generate both name and haiku from same characteristics\n\n\`\`\`typescript\nconst [name, haiku] = await Promise.all([\n generateCatName(characteristics),\n generateCatHaiku(characteristics),\n]);\n\`\`\`\n\n**Benefits:** Faster execution, better user experience\n\n### Pattern: Fallback Chain\n\nWhen one agent fails, try alternatives.\n\n**Example:** Photo analysis with text description fallback\n\n\`\`\`typescript\nlet characteristics;\ntry {\n characteristics = await analyzePhoto(imagePath);\n} catch {\n // Fallback to text description\n const description = await getUserDescription();\n characteristics = await parseDescription(description);\n}\n\`\`\`\n\n**Benefits:** Resilience, better error handling\n\n### Pattern: Conditional Routing\n\nChoose agent path based on user input type.\n\n**Example:** Multi-modal input handling\n\n\`\`\`typescript\nif (input.type === \'image\') {\n characteristics = await analyzePhoto(input.imagePath);\n} else if (input.type === \'text\') {\n characteristics = await parseDescription(input.description);\n} else {\n // Conversational gathering\n characteristics = await breedAdvisor.gather();\n}\n\`\`\`\n\n**Benefits:** Flexible input handling, better UX\n\n### Pattern: Staged Approval\n\nBreak complex workflows into approval stages.\n\n**Example:** Multi-stage breeding application\n\n\`\`\`typescript\n// Stage 1: Basic info approval\nconst basicApproval = await humanApproval({ stage: \'basic\', data });\nif (!basicApproval.approved) return;\n\n// Stage 2: Detailed questionnaire\nconst detailApproval = await humanApproval({ stage: \'detail\', data });\nif (!detailApproval.approved) return;\n\n// Stage 3: Final review\nconst finalApproval = await humanApproval({ stage: \'final\', data });\n\`\`\`\n\n**Benefits:** Checkpoints prevent wasted work, clearer decision points"
14
+ },
15
+ cliIntegrationExamples: {
16
+ header: "## CLI Integration Examples",
17
+ body: "### Example 1: Validate Name via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"name\": \"Mr. Whiskers\",\n \"characteristics\": {\n \"physical\": {\n \"furColor\": \"Orange\",\n \"furPattern\": \"Tabby\",\n \"size\": \"medium\"\n },\n \"behavioral\": {\n \"personality\": [\"Playful\", \"Curious\"]\n }\n }\n}\' | vat agents validate-name\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"reason\": \"Name meets all quirky validation rules\",\n \"confidence\": 0.95\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 2: Validate Haiku via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"lines\": [\n \"Orange sunset fur\",\n \"Paws dance across the tatami\",\n \"Zen master purrs\"\n ]\n}\' | vat agents validate-haiku\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"syllableCounts\": [5, 7, 5],\n \"hasKigo\": true,\n \"kigo\": \"sunset\",\n \"hasKireji\": false,\n \"errors\": []\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 3: Error Handling\n\n\`\`\`bash\n# Invalid input\necho \'{\"invalid\": \"schema\"}\' | vat agents validate-name\n\n# Output\n# (stdout - empty)\n---\nError: Invalid input schema. Expected \'name\' and \'characteristics\' fields.\nSchema validation failed:\n - Missing required field: name\n - Missing required field: characteristics\n# (exit code: 2)\n\`\`\`",
18
+ text: "## CLI Integration Examples\n\n### Example 1: Validate Name via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"name\": \"Mr. Whiskers\",\n \"characteristics\": {\n \"physical\": {\n \"furColor\": \"Orange\",\n \"furPattern\": \"Tabby\",\n \"size\": \"medium\"\n },\n \"behavioral\": {\n \"personality\": [\"Playful\", \"Curious\"]\n }\n }\n}\' | vat agents validate-name\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"reason\": \"Name meets all quirky validation rules\",\n \"confidence\": 0.95\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 2: Validate Haiku via CLI\n\n\`\`\`bash\n# Input\necho \'{\n \"lines\": [\n \"Orange sunset fur\",\n \"Paws dance across the tatami\",\n \"Zen master purrs\"\n ]\n}\' | vat agents validate-haiku\n\n# Output (stdout)\n{\n \"status\": \"valid\",\n \"syllableCounts\": [5, 7, 5],\n \"hasKigo\": true,\n \"kigo\": \"sunset\",\n \"hasKireji\": false,\n \"errors\": []\n}\n---\n# (stderr - empty if no errors)\n\`\`\`\n\n### Example 3: Error Handling\n\n\`\`\`bash\n# Invalid input\necho \'{\"invalid\": \"schema\"}\' | vat agents validate-name\n\n# Output\n# (stdout - empty)\n---\nError: Invalid input schema. Expected \'name\' and \'characteristics\' fields.\nSchema validation failed:\n - Missing required field: name\n - Missing required field: characteristics\n# (exit code: 2)\n\`\`\`"
19
+ },
20
+ nextSteps: {
21
+ header: "## Next Steps",
22
+ body: "Once you\'ve successfully orchestrated agents:\n\n1. **Explore Combinations** - Try chaining agents in new ways\n2. **Add Custom Validation** - Create your own quirky validation rules\n3. **Build New Workflows** - Combine agents for complex use cases\n4. **Contribute Patterns** - Share successful orchestration strategies\n5. **Package Skills** - Create distributable skill packages with pure functions",
23
+ text: "## Next Steps\n\nOnce you\'ve successfully orchestrated agents:\n\n1. **Explore Combinations** - Try chaining agents in new ways\n2. **Add Custom Validation** - Create your own quirky validation rules\n3. **Build New Workflows** - Combine agents for complex use cases\n4. **Contribute Patterns** - Share successful orchestration strategies\n5. **Package Skills** - Create distributable skill packages with pure functions"
24
+ },
25
+ questions: {
26
+ header: "## Questions?",
27
+ body: "- **For orchestration patterns:** This file (SKILL.md)\n- **For agent-specific details:** See individual agent resources\n- **For implementation examples:** See examples/ directory\n- **For archetype theory:** See package README.md",
28
+ text: "## Questions?\n\n- **For orchestration patterns:** This file (SKILL.md)\n- **For agent-specific details:** See individual agent resources\n- **For implementation examples:** See examples/ directory\n- **For archetype theory:** See package README.md"
29
+ }
30
+ };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Generated TypeScript declarations - DO NOT EDIT
3
+ */
4
+
5
+ export interface Fragment {
6
+ readonly header: string;
7
+ readonly body: string;
8
+ readonly text: string;
9
+ }
10
+
11
+ export const meta: {};
12
+
13
+ export const text: string;
14
+
15
+ export const fragments: {
16
+ readonly detailedWorkflowOrchestration: Fragment;
17
+ };
18
+
19
+ export type FragmentName = keyof typeof fragments;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Generated from markdown file - DO NOT EDIT
3
+ */
4
+
5
+ export const meta = {};
6
+
7
+ export const text = "# Detailed Workflow Orchestration\n\nReference material for [SKILL.md](./SKILL.md). Read this when you are implementing an\norchestration end to end rather than choosing between the high-level patterns.\n\n## Detailed Workflow Orchestration\n\n### Workflow A: Breed Selection (Conversational)\n\n**When:** User wants help finding the right cat breed.\n\n**Agent:** [breed-advisor](../agents/breed-advisor.md)\n\n**Orchestration strategy:**\n1. **Phase 1 - Gathering** (see [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy))\n - Collect ≥4 factors including music preference\n - ONE question at a time (don\'t bombard)\n - Extract factors after each turn\n - Monitor readiness: \`factorsCollected >= 4 && musicPreference != null\`\n\n2. **Phase 2 - Recommendation**\n - Present 3-5 matched breeds\n - Allow exploration, questions, comparisons\n - Use conversational formatting (not data dump)\n\n3. **Phase 3 - Selection**\n - Detect selection signals (\"I\'ll take\", \"sounds good\")\n - Conclude gracefully\n - Provide next steps or exit instruction\n\n**Critical factor:** Music preference is the PRIMARY compatibility factor. Ask early, use as conversation anchor. See [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight) for mappings.\n\n**Reference implementation:** See [cat-breed-selection.md](./cat-breed-selection.md) for detailed breed selection orchestration.\n\n### Workflow B: Photo Analysis Pipeline\n\n**When:** User provides a cat photo and wants analysis, name, or haiku.\n\n**Agents:** [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Analyze Photo\n- Input: Image path/URL\n- Agent: photo-analyzer\n- Output: CatCharacteristics\n- Note: Supports mock mode (reads EXIF) for testing\n\nStep 2: Generate Content\n- Input: CatCharacteristics from Step 1\n- Agent: name-generator OR haiku-generator\n- Output: NameSuggestion OR Haiku\n\nOptional Step 3: Validate\n- Input: Generated content + original characteristics\n- Agent: name-validator OR haiku-validator (pure functions)\n- Output: Validation result\n- If invalid: Retry Step 2 with feedback\n\`\`\`\n\n**Mockable behavior:** photo-analyzer reads EXIF metadata in mock mode. For production, set \`mockable: false\` to use real vision API.\n\n### Workflow C: Text Description Pipeline\n\n**When:** User describes a cat in text (no photo).\n\n**Agents:** [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Parse Description\n- Input: Text description\n- Agent: description-parser\n- Output: CatCharacteristics (same schema as photo-analyzer!)\n\nStep 2-3: Same as Workflow B\n- Multi-modal convergence: photo and text produce same schema\n- Downstream agents (name-gen, haiku-gen) work with either\n\`\`\`\n\n**Key insight:** Photo and text paths converge at \`CatCharacteristics\` schema. This enables multi-modal workflows without agent changes.\n\n### Workflow D: Generate-Validate-Retry Loop\n\n**When:** Generator produces content that must pass validation rules.\n\n**Pattern:** Generator (LLM) + Validator (pure function) + Retry logic\n\n**Implementation:**\n\n\`\`\`typescript\n// Pseudo-code for orchestration\nlet attempts = 0;\nconst maxAttempts = 3;\n\nwhile (attempts < maxAttempts) {\n // Generate content\n const suggestion = await generator(characteristics);\n\n // Validate (pure function, instant)\n const validation = validator(suggestion, characteristics);\n\n if (validation.status === \'valid\') {\n return suggestion; // Success!\n }\n\n // Retry with feedback\n attempts++;\n // Optional: Adjust approach based on validation.reason\n}\n\nthrow new Error(\'Could not generate valid content after 3 attempts\');\n\`\`\`\n\n**Why this pattern works:**\n- Generator has NO knowledge of validation rules (isolated concerns)\n- Validator is deterministic (pure function, fast)\n- Feedback loop tests multi-turn orchestration\n- ~60-70% initial rejection rate forces iteration\n\n**Agents using this pattern:**\n- [name-generator](../agents/name-generator.md) + name-validator\n- [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n### Workflow E: HITL Approval Gate\n\n**When:** Decision requires human judgment (compliance, taste, ethics).\n\n**Agent:** [human-approval](../agents/human-approval.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Prepare Request\n- Gather all necessary context\n- Format clearly for human reviewer\n- Include relevant data (characteristics, generated content, reasoning)\n\nStep 2: Emit Approval Request\n- Agent: human-approval\n- Input: Request payload\n- Behavior: Blocks waiting for response\n- Timeout: Configurable (default: 60s)\n\nStep 3: Handle Response\n- Approved: Continue workflow\n- Rejected: Handle gracefully (retry, inform user, etc.)\n- Timeout: Fall back to safe default or escalate\n\`\`\`\n\n**Mockable behavior:** Set \`mockable: true\` to auto-approve without human (useful for testing).\n\n**Real-world uses:**\n- Breeding application approval\n- Name selection from alternatives\n- Content moderation decisions\n";
8
+
9
+ export const fragments = {
10
+ detailedWorkflowOrchestration: {
11
+ header: "## Detailed Workflow Orchestration",
12
+ body: "### Workflow A: Breed Selection (Conversational)\n\n**When:** User wants help finding the right cat breed.\n\n**Agent:** [breed-advisor](../agents/breed-advisor.md)\n\n**Orchestration strategy:**\n1. **Phase 1 - Gathering** (see [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy))\n - Collect ≥4 factors including music preference\n - ONE question at a time (don\'t bombard)\n - Extract factors after each turn\n - Monitor readiness: \`factorsCollected >= 4 && musicPreference != null\`\n\n2. **Phase 2 - Recommendation**\n - Present 3-5 matched breeds\n - Allow exploration, questions, comparisons\n - Use conversational formatting (not data dump)\n\n3. **Phase 3 - Selection**\n - Detect selection signals (\"I\'ll take\", \"sounds good\")\n - Conclude gracefully\n - Provide next steps or exit instruction\n\n**Critical factor:** Music preference is the PRIMARY compatibility factor. Ask early, use as conversation anchor. See [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight) for mappings.\n\n**Reference implementation:** See [cat-breed-selection.md](./cat-breed-selection.md) for detailed breed selection orchestration.\n\n### Workflow B: Photo Analysis Pipeline\n\n**When:** User provides a cat photo and wants analysis, name, or haiku.\n\n**Agents:** [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Analyze Photo\n- Input: Image path/URL\n- Agent: photo-analyzer\n- Output: CatCharacteristics\n- Note: Supports mock mode (reads EXIF) for testing\n\nStep 2: Generate Content\n- Input: CatCharacteristics from Step 1\n- Agent: name-generator OR haiku-generator\n- Output: NameSuggestion OR Haiku\n\nOptional Step 3: Validate\n- Input: Generated content + original characteristics\n- Agent: name-validator OR haiku-validator (pure functions)\n- Output: Validation result\n- If invalid: Retry Step 2 with feedback\n\`\`\`\n\n**Mockable behavior:** photo-analyzer reads EXIF metadata in mock mode. For production, set \`mockable: false\` to use real vision API.\n\n### Workflow C: Text Description Pipeline\n\n**When:** User describes a cat in text (no photo).\n\n**Agents:** [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Parse Description\n- Input: Text description\n- Agent: description-parser\n- Output: CatCharacteristics (same schema as photo-analyzer!)\n\nStep 2-3: Same as Workflow B\n- Multi-modal convergence: photo and text produce same schema\n- Downstream agents (name-gen, haiku-gen) work with either\n\`\`\`\n\n**Key insight:** Photo and text paths converge at \`CatCharacteristics\` schema. This enables multi-modal workflows without agent changes.\n\n### Workflow D: Generate-Validate-Retry Loop\n\n**When:** Generator produces content that must pass validation rules.\n\n**Pattern:** Generator (LLM) + Validator (pure function) + Retry logic\n\n**Implementation:**\n\n\`\`\`typescript\n// Pseudo-code for orchestration\nlet attempts = 0;\nconst maxAttempts = 3;\n\nwhile (attempts < maxAttempts) {\n // Generate content\n const suggestion = await generator(characteristics);\n\n // Validate (pure function, instant)\n const validation = validator(suggestion, characteristics);\n\n if (validation.status === \'valid\') {\n return suggestion; // Success!\n }\n\n // Retry with feedback\n attempts++;\n // Optional: Adjust approach based on validation.reason\n}\n\nthrow new Error(\'Could not generate valid content after 3 attempts\');\n\`\`\`\n\n**Why this pattern works:**\n- Generator has NO knowledge of validation rules (isolated concerns)\n- Validator is deterministic (pure function, fast)\n- Feedback loop tests multi-turn orchestration\n- ~60-70% initial rejection rate forces iteration\n\n**Agents using this pattern:**\n- [name-generator](../agents/name-generator.md) + name-validator\n- [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n### Workflow E: HITL Approval Gate\n\n**When:** Decision requires human judgment (compliance, taste, ethics).\n\n**Agent:** [human-approval](../agents/human-approval.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Prepare Request\n- Gather all necessary context\n- Format clearly for human reviewer\n- Include relevant data (characteristics, generated content, reasoning)\n\nStep 2: Emit Approval Request\n- Agent: human-approval\n- Input: Request payload\n- Behavior: Blocks waiting for response\n- Timeout: Configurable (default: 60s)\n\nStep 3: Handle Response\n- Approved: Continue workflow\n- Rejected: Handle gracefully (retry, inform user, etc.)\n- Timeout: Fall back to safe default or escalate\n\`\`\`\n\n**Mockable behavior:** Set \`mockable: true\` to auto-approve without human (useful for testing).\n\n**Real-world uses:**\n- Breeding application approval\n- Name selection from alternatives\n- Content moderation decisions",
13
+ text: "## Detailed Workflow Orchestration\n\n### Workflow A: Breed Selection (Conversational)\n\n**When:** User wants help finding the right cat breed.\n\n**Agent:** [breed-advisor](../agents/breed-advisor.md)\n\n**Orchestration strategy:**\n1. **Phase 1 - Gathering** (see [Conversation Strategy](../agents/breed-advisor.md#conversation-strategy))\n - Collect ≥4 factors including music preference\n - ONE question at a time (don\'t bombard)\n - Extract factors after each turn\n - Monitor readiness: \`factorsCollected >= 4 && musicPreference != null\`\n\n2. **Phase 2 - Recommendation**\n - Present 3-5 matched breeds\n - Allow exploration, questions, comparisons\n - Use conversational formatting (not data dump)\n\n3. **Phase 3 - Selection**\n - Detect selection signals (\"I\'ll take\", \"sounds good\")\n - Conclude gracefully\n - Provide next steps or exit instruction\n\n**Critical factor:** Music preference is the PRIMARY compatibility factor. Ask early, use as conversation anchor. See [Music Preference Insight](../agents/breed-advisor.md#music-preference-insight) for mappings.\n\n**Reference implementation:** See [cat-breed-selection.md](./cat-breed-selection.md) for detailed breed selection orchestration.\n\n### Workflow B: Photo Analysis Pipeline\n\n**When:** User provides a cat photo and wants analysis, name, or haiku.\n\n**Agents:** [photo-analyzer](../agents/photo-analyzer.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Analyze Photo\n- Input: Image path/URL\n- Agent: photo-analyzer\n- Output: CatCharacteristics\n- Note: Supports mock mode (reads EXIF) for testing\n\nStep 2: Generate Content\n- Input: CatCharacteristics from Step 1\n- Agent: name-generator OR haiku-generator\n- Output: NameSuggestion OR Haiku\n\nOptional Step 3: Validate\n- Input: Generated content + original characteristics\n- Agent: name-validator OR haiku-validator (pure functions)\n- Output: Validation result\n- If invalid: Retry Step 2 with feedback\n\`\`\`\n\n**Mockable behavior:** photo-analyzer reads EXIF metadata in mock mode. For production, set \`mockable: false\` to use real vision API.\n\n### Workflow C: Text Description Pipeline\n\n**When:** User describes a cat in text (no photo).\n\n**Agents:** [description-parser](../agents/description-parser.md) → [name-generator](../agents/name-generator.md) OR [haiku-generator](../agents/haiku-generator.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Parse Description\n- Input: Text description\n- Agent: description-parser\n- Output: CatCharacteristics (same schema as photo-analyzer!)\n\nStep 2-3: Same as Workflow B\n- Multi-modal convergence: photo and text produce same schema\n- Downstream agents (name-gen, haiku-gen) work with either\n\`\`\`\n\n**Key insight:** Photo and text paths converge at \`CatCharacteristics\` schema. This enables multi-modal workflows without agent changes.\n\n### Workflow D: Generate-Validate-Retry Loop\n\n**When:** Generator produces content that must pass validation rules.\n\n**Pattern:** Generator (LLM) + Validator (pure function) + Retry logic\n\n**Implementation:**\n\n\`\`\`typescript\n// Pseudo-code for orchestration\nlet attempts = 0;\nconst maxAttempts = 3;\n\nwhile (attempts < maxAttempts) {\n // Generate content\n const suggestion = await generator(characteristics);\n\n // Validate (pure function, instant)\n const validation = validator(suggestion, characteristics);\n\n if (validation.status === \'valid\') {\n return suggestion; // Success!\n }\n\n // Retry with feedback\n attempts++;\n // Optional: Adjust approach based on validation.reason\n}\n\nthrow new Error(\'Could not generate valid content after 3 attempts\');\n\`\`\`\n\n**Why this pattern works:**\n- Generator has NO knowledge of validation rules (isolated concerns)\n- Validator is deterministic (pure function, fast)\n- Feedback loop tests multi-turn orchestration\n- ~60-70% initial rejection rate forces iteration\n\n**Agents using this pattern:**\n- [name-generator](../agents/name-generator.md) + name-validator\n- [haiku-generator](../agents/haiku-generator.md) + haiku-validator\n\n### Workflow E: HITL Approval Gate\n\n**When:** Decision requires human judgment (compliance, taste, ethics).\n\n**Agent:** [human-approval](../agents/human-approval.md)\n\n**Orchestration strategy:**\n\n\`\`\`\nStep 1: Prepare Request\n- Gather all necessary context\n- Format clearly for human reviewer\n- Include relevant data (characteristics, generated content, reasoning)\n\nStep 2: Emit Approval Request\n- Agent: human-approval\n- Input: Request payload\n- Behavior: Blocks waiting for response\n- Timeout: Configurable (default: 60s)\n\nStep 3: Handle Response\n- Approved: Continue workflow\n- Rejected: Handle gracefully (retry, inform user, etc.)\n- Timeout: Fall back to safe default or escalate\n\`\`\`\n\n**Mockable behavior:** Set \`mockable: true\` to auto-approve without human (useful for testing).\n\n**Real-world uses:**\n- Breeding application approval\n- Name selection from alternatives\n- Content moderation decisions"
14
+ }
15
+ };
@@ -7,7 +7,7 @@ import { type CatCharacteristics } from '../types/schemas.js';
7
7
  export declare const DescriptionParserInputSchema: z.ZodObject<{
8
8
  description: z.ZodString;
9
9
  mockable: z.ZodOptional<z.ZodBoolean>;
10
- }, "strip", z.ZodTypeAny, {
10
+ }, "strict", z.ZodTypeAny, {
11
11
  description: string;
12
12
  mockable?: boolean | undefined;
13
13
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"description-parser.d.ts","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/description-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGxF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;EAGvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAQ7B;AAgTD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CACxC,sBAAsB,EACtB,kBAAkB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CA0CjD,CAAC"}
1
+ {"version":3,"file":"description-parser.d.ts","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/description-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGxF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;EAG9B,CAAC;AAEZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAQ7B;AAgTD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,EAAE,KAAK,CACxC,sBAAsB,EACtB,kBAAkB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CA0CjD,CAAC"}
@@ -9,7 +9,7 @@ import { extractFurColor as extractFurColorUtil } from '../utils/color-extractio
9
9
  export const DescriptionParserInputSchema = z.object({
10
10
  description: z.string().describe('Text description of the cat (structured or unstructured)'),
11
11
  mockable: z.boolean().optional().describe('Whether to use mock mode (default: true)'),
12
- });
12
+ }).strict();
13
13
  /**
14
14
  * Parses a text description of a cat and extracts characteristics.
15
15
  *
@@ -1 +1 @@
1
- {"version":3,"file":"description-parser.js","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/description-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"description-parser.js","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/description-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,wBAAwB,EAA2B,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IAC5F,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACtF,CAAC,CAAC,MAAM,EAAE,CAAC;AAeZ;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,UAAoC,EAAE;IAEtC,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEpC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC3F,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAE5C,mCAAmC;IACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEpC,qCAAqC;IACrC,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEtD,mBAAmB;IACnB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO;QACL,QAAQ,EAAE;YACR,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,KAAK;YACL,IAAI;SACL;QACD,UAAU,EAAE;YACV,WAAW;YACX,MAAM;YACN,aAAa;SACd;QACD,QAAQ,EAAE,GAAG,IAAI,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;YACtC,GAAG;YACH,MAAM;YACN,UAAU;SACX,CAAC,CAAC,CAAC,SAAS;QACb,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3F,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS;QACvD,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY;QAC5D,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB;KACrE,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChF,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,kBAAkB;IAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/D,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3D,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAED,2BAA2B;IAC3B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1G,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxF,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpF,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,sEAAsE;IACtE,gGAAgG;IAChG,+EAA+E;IAC/E,6EAA6E;IAC7E,gFAAgF;IAChF,4EAA4E;IAC5E,gFAAgF;IAChF,MAAM,QAAQ,GAAG,+BAA+B,CAAC;IACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,uBAAuB,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACpF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxF,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzF,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAG/B;IACF,IAAI,EAAE,oBAAoB;IAC1B,QAAQ,EAAE;QACR,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,sEAAsE;QACnF,SAAS,EAAE,uBAAuB;QAClC,QAAQ,EAAE;YACR,MAAM,EAAE,iBAAiB;YACzB,WAAW,EAAE,wDAAwD;YACrE,mBAAmB,EAAE,IAAI;YACzB,KAAK,EAAE,kBAAkB;SAC1B;KACF;IACD,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;QAC/C,iBAAiB;QACjB,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE;aAC5D,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAErD,OAAO,kBAAkB,CAAC;YACxB,QAAQ;YACR,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,WAAW,CAAC;YAC/C,MAAM,EAAE,KAAK,IAAI,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;gBACzF,6CAA6C;gBAC7C,wEAAwE;gBACxE,8EAA8E;YAChF,CAAC;YACD,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAa,CAAC,CAAC;gBACzC,OAAO,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YACD,YAAY,EAAE,qBAAqB;SACpC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -12,7 +12,7 @@ export declare const HaikuGeneratorInputSchema: z.ZodObject<{
12
12
  eyeColor: z.ZodOptional<z.ZodString>;
13
13
  breed: z.ZodOptional<z.ZodString>;
14
14
  size: z.ZodOptional<z.ZodEnum<["tiny", "small", "medium", "large", "extra-large"]>>;
15
- }, "strip", z.ZodTypeAny, {
15
+ }, "strict", z.ZodTypeAny, {
16
16
  furColor: string;
17
17
  furPattern?: string | undefined;
18
18
  eyeColor?: string | undefined;
@@ -29,7 +29,7 @@ export declare const HaikuGeneratorInputSchema: z.ZodObject<{
29
29
  personality: z.ZodArray<z.ZodString, "many">;
30
30
  quirks: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
31
31
  vocalizations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
32
- }, "strip", z.ZodTypeAny, {
32
+ }, "strict", z.ZodTypeAny, {
33
33
  personality: string[];
34
34
  quirks?: string[] | undefined;
35
35
  vocalizations?: string[] | undefined;
@@ -42,7 +42,7 @@ export declare const HaikuGeneratorInputSchema: z.ZodObject<{
42
42
  origin: z.ZodOptional<z.ZodString>;
43
43
  age: z.ZodOptional<z.ZodString>;
44
44
  occupation: z.ZodOptional<z.ZodString>;
45
- }, "strip", z.ZodTypeAny, {
45
+ }, "strict", z.ZodTypeAny, {
46
46
  origin?: string | undefined;
47
47
  age?: string | undefined;
48
48
  occupation?: string | undefined;
@@ -53,7 +53,7 @@ export declare const HaikuGeneratorInputSchema: z.ZodObject<{
53
53
  }>>;
54
54
  notes: z.ZodOptional<z.ZodString>;
55
55
  description: z.ZodString;
56
- }, "strip", z.ZodTypeAny, {
56
+ }, "strict", z.ZodTypeAny, {
57
57
  physical: {
58
58
  furColor: string;
59
59
  furPattern?: string | undefined;
@@ -95,7 +95,7 @@ export declare const HaikuGeneratorInputSchema: z.ZodObject<{
95
95
  notes?: string | undefined;
96
96
  }>;
97
97
  mockable: z.ZodOptional<z.ZodBoolean>;
98
- }, "strip", z.ZodTypeAny, {
98
+ }, "strict", z.ZodTypeAny, {
99
99
  characteristics: {
100
100
  physical: {
101
101
  furColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"haiku-generator.d.ts","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/haiku-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAA4B,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAsB5E;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CACrC,mBAAmB,EACnB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAoCpC,CAAC"}
1
+ {"version":3,"file":"haiku-generator.d.ts","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/haiku-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAA4B,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG3B,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAsB5E;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CACrC,mBAAmB,EACnB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAoCpC,CAAC"}
@@ -7,7 +7,7 @@ import { CatCharacteristicsSchema } from '../types/schemas.js';
7
7
  export const HaikuGeneratorInputSchema = z.object({
8
8
  characteristics: CatCharacteristicsSchema.describe('Cat characteristics to inspire the haiku'),
9
9
  mockable: z.boolean().optional().describe('Whether to use mock mode (default: true)'),
10
- });
10
+ }).strict();
11
11
  /**
12
12
  * Mock implementation that generates simple haikus based on characteristics.
13
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"haiku-generator.js","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/haiku-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,wBAAwB,EAAc,MAAM,qBAAqB,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,eAAe,EAAE,wBAAwB,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC9F,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACtF,CAAC,CAAC;AAIH;;GAEG;AACH,SAAS,iBAAiB,CAAC,eAAyD;IAClF,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAE9E,wDAAwD;IACxD,OAAO;QACL,KAAK,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,oBAAoB;QACpD,KAAK,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,oBAAoB;QAC1D,KAAK,EAAE,0BAA0B;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAG5B;IACF,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,0EAA0E;QACvF,SAAS,EAAE,uBAAuB;QAClC,QAAQ,EAAE;YACR,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,wEAAwE;YACrF,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,GAAG;SACjB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,KAA0B,EAAE,EAAE;QAC5C,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,KAAK,EACL,yBAAyB,CAC1B,CAAC;QACF,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,gBAAgB,CAAC;QAE9D,OAAO,kBAAkB,CAAC;YACxB,QAAQ;YACR,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;YAChD,qBAAqB,EAAE,yEAAyE;YAChG,0CAA0C;YAC1C,qEAAqE;YACrE,2EAA2E;SAC5E,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"haiku-generator.js","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/haiku-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,wBAAwB,EAAc,MAAM,qBAAqB,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,eAAe,EAAE,wBAAwB,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC9F,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CACtF,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ;;GAEG;AACH,SAAS,iBAAiB,CAAC,eAAyD;IAClF,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAE9E,wDAAwD;IACxD,OAAO;QACL,KAAK,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,oBAAoB;QACpD,KAAK,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,oBAAoB;QAC1D,KAAK,EAAE,0BAA0B;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAG5B;IACF,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,0EAA0E;QACvF,SAAS,EAAE,uBAAuB;QAClC,QAAQ,EAAE;YACR,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,wEAAwE;YACrF,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,GAAG;SACjB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,KAA0B,EAAE,EAAE;QAC5C,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,KAAK,EACL,yBAAyB,CAC1B,CAAC;QACF,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACjC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,gBAAgB,CAAC;QAE9D,OAAO,kBAAkB,CAAC;YACxB,QAAQ;YACR,MAAM,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;YAChD,qBAAqB,EAAE,yEAAyE;YAChG,0CAA0C;YAC1C,qEAAqE;YACrE,2EAA2E;SAC5E,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -12,7 +12,7 @@ export declare const NameGeneratorInputSchema: z.ZodObject<{
12
12
  eyeColor: z.ZodOptional<z.ZodString>;
13
13
  breed: z.ZodOptional<z.ZodString>;
14
14
  size: z.ZodOptional<z.ZodEnum<["tiny", "small", "medium", "large", "extra-large"]>>;
15
- }, "strip", z.ZodTypeAny, {
15
+ }, "strict", z.ZodTypeAny, {
16
16
  furColor: string;
17
17
  furPattern?: string | undefined;
18
18
  eyeColor?: string | undefined;
@@ -29,7 +29,7 @@ export declare const NameGeneratorInputSchema: z.ZodObject<{
29
29
  personality: z.ZodArray<z.ZodString, "many">;
30
30
  quirks: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
31
31
  vocalizations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
32
- }, "strip", z.ZodTypeAny, {
32
+ }, "strict", z.ZodTypeAny, {
33
33
  personality: string[];
34
34
  quirks?: string[] | undefined;
35
35
  vocalizations?: string[] | undefined;
@@ -42,7 +42,7 @@ export declare const NameGeneratorInputSchema: z.ZodObject<{
42
42
  origin: z.ZodOptional<z.ZodString>;
43
43
  age: z.ZodOptional<z.ZodString>;
44
44
  occupation: z.ZodOptional<z.ZodString>;
45
- }, "strip", z.ZodTypeAny, {
45
+ }, "strict", z.ZodTypeAny, {
46
46
  origin?: string | undefined;
47
47
  age?: string | undefined;
48
48
  occupation?: string | undefined;
@@ -53,7 +53,7 @@ export declare const NameGeneratorInputSchema: z.ZodObject<{
53
53
  }>>;
54
54
  notes: z.ZodOptional<z.ZodString>;
55
55
  description: z.ZodString;
56
- }, "strip", z.ZodTypeAny, {
56
+ }, "strict", z.ZodTypeAny, {
57
57
  physical: {
58
58
  furColor: string;
59
59
  furPattern?: string | undefined;
@@ -95,7 +95,7 @@ export declare const NameGeneratorInputSchema: z.ZodObject<{
95
95
  notes?: string | undefined;
96
96
  }>;
97
97
  mockable: z.ZodOptional<z.ZodBoolean>;
98
- }, "strip", z.ZodTypeAny, {
98
+ }, "strict", z.ZodTypeAny, {
99
99
  characteristics: {
100
100
  physical: {
101
101
  furColor: string;
@@ -1 +1 @@
1
- {"version":3,"file":"name-generator.d.ts","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/name-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAoF1E;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CACpC,kBAAkB,EAClB,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAoC7C,CAAC"}
1
+ {"version":3,"file":"name-generator.d.ts","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/name-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG1B,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAoF1E;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CACpC,kBAAkB,EAClB,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAoC7C,CAAC"}
@@ -7,7 +7,7 @@ import { CatCharacteristicsSchema } from '../types/schemas.js';
7
7
  export const NameGeneratorInputSchema = z.object({
8
8
  characteristics: CatCharacteristicsSchema.describe('Cat characteristics to base name suggestions on'),
9
9
  mockable: z.boolean().optional().describe('Whether to use mock mode (default: true)'),
10
- });
10
+ }).strict();
11
11
  /**
12
12
  * Mock implementation that generates deterministic names based on characteristics.
13
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"name-generator.js","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/name-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"name-generator.js","sourceRoot":"","sources":["../../src/one-shot-llm-analyzer/name-generator.ts"],"names":[],"mappings":"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"}