Skip to content

V1.3 mcp app test#2

Merged
Kaenn merged 343 commits intomainfrom
v1.3-mcp-app-test
Jan 30, 2026
Merged

V1.3 mcp app test#2
Kaenn merged 343 commits intomainfrom
v1.3-mcp-app-test

Conversation

@Kaenn
Copy link
Owner

@Kaenn Kaenn commented Jan 30, 2026

No description provided.

Kaenn and others added 30 commits January 22, 2026 08:17
Quick task completed:
- Updated docs/agent.md with TOutput documentation
- Added PhaseResearcherOutput to gsd-phase-researcher.tsx
- Added SimpleOrchestratorOutput to simple-orchestrator-agent.tsx
- Updated STATE.md with quick task record

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 15: Command Output Handling
- useOutput hook pattern documented
- OnStatus component architecture defined
- IR node structure (OnStatusNode) specified
- Emitter output format established
- Field interpolation pattern documented

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 15: Command Output Handling
- 3 plan(s) in 3 wave(s)
- Sequential execution (wave dependencies)
- Ready for execution

Plans:
- 15-01: useOutput hook and OutputRef type (JSX layer)
- 15-02: OnStatus component parsing and IR (Parser/IR layer)
- 15-03: Emitter for status-based conditional blocks

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add OutputRef<T> interface with agent name and typed field() accessor
- Add useOutput<T> hook returning OutputRef for status-based handling
- Add OnStatusProps interface with output and status props
- Add OnStatus component for conditional agent status handling
- Export new types and components from index.ts
- Also add missing If/Else/AgentStatus/BaseOutput exports

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tasks completed: 2/2
- Add OutputRef interface and useOutput hook
- Add OnStatus component and props

SUMMARY: .planning/phases/15-command-output-handling/15-01-SUMMARY.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add OutputReference interface for agent output binding
- Add OnStatusNode with outputRef, status, and children fields
- Add OnStatusNode to BlockNode union
- Add emitter stub for OnStatusNode (throws not yet implemented)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add OnStatusNode to imports
- Add 'OnStatus' to SPECIAL_COMPONENTS set
- Add outputs map for tracking useOutput declarations
- Add extractOutputDeclarations method to parse useOutput calls
- Add transformOnStatus method with:
  - Output prop extraction and validation (must be identifier from useOutput)
  - Status prop extraction and validation (SUCCESS/BLOCKED/NOT_FOUND/ERROR/CHECKPOINT)
  - Agent name resolution via outputs map
  - Children transformed as block content

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tasks completed: 2/2
- Add OnStatusNode to IR
- Add transformOnStatus to transformer

SUMMARY: .planning/phases/15-command-output-handling/15-02-SUMMARY.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Import OnStatusNode type from IR
- Update emitBlock switch to call emitOnStatus
- Add emitOnStatus method following emitIf/emitElse pattern
- Output format: **On {STATUS}:** followed by content
Add helper functions that generate shell test expressions from VariableRef:
- fileExists(varRef) → [ -f $VAR ]
- dirExists(varRef) → [ -d $VAR ]
- isEmpty(varRef) → [ -z $VAR ]
- notEmpty(varRef) → [ -n $VAR ]
- equals(varRef, value) → [ $VAR = value ]
- and(...tests) / or(...tests) → composable operators

Enables type-safe conditional tests instead of raw shell strings:
  <If test={fileExists(outputFile)}>
  vs
  <If test="[ -f $OUTPUT_FILE ]">

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Quick task completed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add useOutput and OnStatus imports
- Declare researchOutput binding to gsd-phase-researcher
- Add OnStatus blocks for SUCCESS/BLOCKED/ERROR handling
- Fix extractOutputDeclarations to use forEachDescendant
- Add field expression handling in transformToInline

Auto-fixed blocking issues:
- extractOutputDeclarations only found module-level declarations
- transformToInline ignored non-string JSX expressions
Tasks completed: 2/2
- Task 1: Add emitOnStatus to emitter
- Task 2: Create test command with OnStatus

SUMMARY: .planning/phases/15-command-output-handling/15-03-SUMMARY.md

Phase 15 complete - v1.5 Command Output Handling ready for release
- Document useOutput hook for typed agent output references
- Document OnStatus component for status-based conditional rendering
- Document output.field() method for compile-time interpolation
- Add complete example showing SpawnAgent + OnStatus pattern
- Update Tips section with OnStatus best practices
…trator.tsx

- Import useOutput, OnStatus from jsx.js
- Import SimpleOrchestratorOutput type from agent file
- Add useOutput declaration for agent output tracking
- Add OnStatus handlers for SUCCESS and ERROR states
- Demonstrates pattern alongside existing If/Else conditionals
- Add 'Related: OnStatus' section after Tips
- Link to communication.md#handling-agent-output
- Add comparison table differentiating If/Else from OnStatus
Tasks completed: 3/3
- communication.md: Handling Agent Output section
- test-simple-orchestrator.tsx: useOutput/OnStatus example
- conditionals.md: OnStatus reference section

SUMMARY: .planning/quick/004-update-docs-and-tsx-files-for-plan-15-co/004-SUMMARY.md
Quick task completed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 16: Skill Component
- Standard stack identified (reuse existing deps)
- Architecture patterns documented (SkillDocument IR, multi-file output)
- Pitfalls catalogued (YAML naming, path resolution, validation)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 16: Skill Component
- 5 plans in 4 waves
- Wave 1: IR + JSX types (16-01)
- Wave 2: Transformer (16-02)
- Wave 3: Emitter + build + exports (16-03, 16-04)
- Wave 4: Test + docs (16-05)
- Ready for execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SkillFrontmatterNode: YAML frontmatter for skill metadata
- SkillFileNode: generated files within skill directory
- SkillStaticNode: static file copy instructions
- SkillDocumentNode: document root with frontmatter, children, files, statics
- IRNode union updated to include all new skill types
- SkillProps: name, description, disableModelInvocation, userInvocable, allowedTools, argumentHint, model, context, agent
- SkillFileProps: name, children for generated files
- SkillStaticProps: src, dest for static file copying
- Skill(), SkillFile(), SkillStatic() stub functions returning null
- JSDoc documentation with examples following Agent/Command pattern
Tasks completed: 2/2
- Skill IR node types in nodes.ts
- Skill component exports in jsx.ts

SUMMARY: .planning/phases/16-skill-component/16-01-SUMMARY.md
- Add 'Skill', 'SkillFile', 'SkillStatic' to SPECIAL_COMPONENTS
- Update imports for Skill IR node types
- Add transformSkill method with frontmatter extraction
- Add getBooleanAttribute helper for boolean props
- Validate skill name (lowercase, numbers, hyphens only)
- Add processSkillChildren stub (implemented in Task 2)
- Update transform() return type to include SkillDocumentNode
…atics

- Replace processSkillChildren stub with full implementation
- Separate SkillFile and SkillStatic from body content
- Add transformSkillFile method (extracts name, transforms children)
- Add transformSkillStatic method (extracts src, optional dest)
- Body content handled via existing transformToBlock
Tasks completed: 2/2
- Add transformSkill method following transformAgent pattern
- Add processSkillChildren to separate body, files, and statics

SUMMARY: .planning/phases/16-skill-component/16-02-SUMMARY.md
- Add imports for SkillDocumentNode, SkillFileNode, SkillFrontmatterNode
- Add emitSkillFrontmatter method (maps camelCase to kebab-case YAML)
- Add emitSkill method for SKILL.md content generation
- Add emitSkillFile method for supporting file content
- Add convenience functions emitSkill and emitSkillFile
- Export new functions from emitter/index.ts
- Add copyFile import for static file handling
- Add emitSkill, emitSkillFile imports from emitter
- Add SkillDocumentNode type import
- Add processSkill function for multi-file skill output
- Extend BuildResult with optional statics array
- Update runBuild to handle skillDocument type
- Add static file copying in write phase
- Build creates .claude/skills/{name}/ directory structure
Kaenn and others added 29 commits January 28, 2026 09:00
- Add Agent component CLI support for building agent TSX files
- Extend Command component with `arguments` prop for arrays of objects
- Fix template literal extraction in XmlBlock children (both V1 and V3)
- Use custom YAML emitter to avoid unnecessary quoting in frontmatter
- Handle array of objects in runtime transformer for arguments arrays
- Prevent trailing whitespace newlines from formatting between content and closing tags
- Preserve intentional trailing newlines/whitespace in content

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@Kaenn Kaenn merged commit d4370db into main Jan 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant