Skip to content

Add Miro CLI subcommands: miro-init, miro-link, miro-sync#388

Draft
gx-ai-architect wants to merge 4 commits into
mainfrom
factory/run-2a813ce7
Draft

Add Miro CLI subcommands: miro-init, miro-link, miro-sync#388
gx-ai-architect wants to merge 4 commits into
mainfrom
factory/run-2a813ce7

Conversation

@gx-ai-architect
Copy link
Copy Markdown
Collaborator

@gx-ai-architect gx-ai-architect commented May 26, 2026

Changes

  • Added cmd_miro_init — creates a Miro board for a project, with token setup guidance if FACTORY_MIRO_TOKEN is not configured
  • Added cmd_miro_link — links an existing Miro board ID to a project by writing to .factory/config.json
  • Added cmd_miro_sync — syncs project state to a linked Miro board via factory.miro.sync.sync_board
  • Registered all three subcommands (miro-init, miro-link, miro-sync) in build_parser() and the handlers dict
  • Follows existing cli.py conventions: type annotations, docstrings, _run() for async, Path(args.path) conversion

gx-ai-architect and others added 2 commits May 25, 2026 23:43
- factory/miro/__init__.py: package marker
- factory/miro/templates.py: color maps (agent, drift, component, verdict),
  frame/shape dimensions, grid layout, connector style constants
- factory/miro/analyzer.py: AST-based codebase parser with ProjectStructure,
  ModuleInfo, ClassInfo, FunctionInfo, Dependency dataclasses; non-Python
  fallback to directory listing
- factory/miro/client.py: MiroClient with token resolution via factory config,
  exponential backoff on 429, dry-run mode, event emission
- factory/models.py: add miro_board_id field to FactoryConfig
- pyproject.toml: add miro-api dependency
- factory/user_config.py: add commented miro_token, miro_team_id to template

Closes #384

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- drift.py: Parses CLAUDE.md/README.md architecture sections and
  .factory/archive/ for documented components. Detects undocumented,
  phantom, and drifted items by comparing against ProjectStructure.
- layout.py: Pure coordinate math for 3x2 grid frame positioning,
  top-down item flow layout, and connector routing.
- board.py: BoardRenderer creates 6 frames (Overview, Agent Pipeline,
  Architecture Map, Drift Report, Experiment Timeline, Strategy State),
  populates with color-coded shapes, and draws dependency connectors.
  Creates frames before items per April 2025 Miro bug workaround.

Closes #385

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gx-ai-architect gx-ai-architect changed the title Miro Phase 1: Foundation — client, analyzer, templates, config Miro Phase 1+2: Foundation + Core — client, analyzer, templates, drift, layout, board May 26, 2026
…tion

Implements sync_board() for full pipeline (analyze → drift detect → render)
and update_experiment() for incremental updates after new experiments.
Non-blocking: all Miro API failures are logged but never propagated.

Closes #386

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gx-ai-architect gx-ai-architect changed the title Miro Phase 1+2: Foundation + Core — client, analyzer, templates, drift, layout, board Miro Phase 1+2+3: Foundation + Core + Sync orchestrator May 26, 2026
Add three new subcommands to factory CLI for Miro board integration:
- miro-init: Create a Miro board for a project (with token setup guidance)
- miro-link: Link an existing Miro board to a project via config.json
- miro-sync: Sync project state to a linked Miro board

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gx-ai-architect gx-ai-architect changed the title Miro Phase 1+2+3: Foundation + Core + Sync orchestrator Add Miro CLI subcommands: miro-init, miro-link, miro-sync May 26, 2026
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