Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
8c0b91b
MAESTRO: Add Symphony IPC handlers for token donation feature
pedramamini Dec 29, 2025
f0ef56d
MAESTRO: Add Symphony React hooks for Phase 3 implementation
pedramamini Dec 29, 2025
dcad818
MAESTRO: Add Symphony UI components for Phase 4 implementation
pedramamini Dec 29, 2025
91a75a8
MAESTRO: Complete Symphony Phase 5 - App Integration & Entry Points
pedramamini Dec 29, 2025
d545e83
MAESTRO: Complete Symphony Phase 6 - Registry & GitHub Integration
pedramamini Dec 29, 2025
961f89d
fix(symphony): Address security and error handling issues from PR review
pedramamini Dec 30, 2025
8b778e5
## CHANGES
pedramamini Jan 8, 2026
12cad90
## CHANGES
pedramamini Jan 8, 2026
641f2ac
## CHANGES
pedramamini Jan 8, 2026
eba1e26
- Launched **Maestro Symphony** to browse curated OSS issues and cont…
pedramamini Jan 9, 2026
7f16270
## CHANGES
pedramamini Jan 9, 2026
bbb2cb8
MAESTRO: Add comprehensive test coverage for Symphony IPC handlers
pedramamini Jan 9, 2026
cac53de
MAESTRO: Add State Operations tests for Symphony IPC handlers
pedramamini Jan 9, 2026
9f9ab70
MAESTRO: Add Contribution Start tests for Symphony IPC handlers
pedramamini Jan 9, 2026
658214a
MAESTRO: Add Register Active tests for Symphony IPC handlers
pedramamini Jan 9, 2026
c91e8bf
MAESTRO: Add Update Status tests for Symphony IPC handlers
pedramamini Jan 9, 2026
917ca3f
MAESTRO: Add Complete and Cancel tests for Symphony IPC handlers
pedramamini Jan 9, 2026
3003cae
MAESTRO: Add Check PR Statuses tests for Symphony IPC handlers
pedramamini Jan 9, 2026
f523edc
MAESTRO: Add Clone Repo tests for Symphony IPC handlers
pedramamini Jan 9, 2026
92fba35
MAESTRO: Add Start Contribution tests for Symphony IPC handlers
pedramamini Jan 9, 2026
2155d68
MAESTRO: Add Create Draft PR tests for Symphony IPC handlers
pedramamini Jan 9, 2026
5476cb8
MAESTRO: Add Fetch Document Content and Git Helper tests for Symphony…
pedramamini Jan 9, 2026
391badd
MAESTRO: Add comprehensive Symphony Runner service tests
pedramamini Jan 9, 2026
a3cb695
MAESTRO: Add Symphony constants and types test coverage
pedramamini Jan 9, 2026
a3b6c2e
MAESTRO: Add comprehensive useSymphony hook tests
pedramamini Jan 9, 2026
350df48
MAESTRO: Add Symphony integration tests with minimal mocking
pedramamini Jan 9, 2026
cb08416
MAESTRO: Add MAX_BODY_SIZE edge case tests for Symphony issue body pa…
pedramamini Jan 9, 2026
0949147
MAESTRO: Add git push conflict edge case tests for Symphony integration
pedramamini Jan 9, 2026
ec99e5b
MAESTRO: Add git hooks edge case tests for Symphony integration
pedramamini Jan 9, 2026
881b845
MAESTRO: Add Symphony state edge case tests
pedramamini Jan 9, 2026
8e58548
MAESTRO: Add Document Handling Edge Cases tests for Symphony integration
pedramamini Jan 9, 2026
a87e4d1
MAESTRO: Add PR Status Edge Case tests for Symphony integration
pedramamini Jan 9, 2026
73b6449
MAESTRO: Add embedded path traversal security test for Symphony integ…
pedramamini Jan 9, 2026
21a8471
MAESTRO: Add external URL domain validation for Symphony documents
pedramamini Jan 9, 2026
8f963f0
MAESTRO: Add security and performance tests for Symphony integration
pedramamini Jan 9, 2026
459bb0f
MAESTRO: docs: Fix incorrect Keyboard Mastery information in achievem…
pedramamini Jan 11, 2026
3f50625
MAESTRO: Fix incorrect auto-save documentation in autorun-playbooks.md
pedramamini Jan 11, 2026
716056a
MAESTRO: Fix CLI documentation accuracy issues
pedramamini Jan 11, 2026
1ca62f1
MAESTRO: Fix Settings tab documentation in configuration.md
pedramamini Jan 11, 2026
58d0b40
MAESTRO: docs: Fix context-management.md accuracy issues
pedramamini Jan 11, 2026
48363a4
MAESTRO: Fix document-graph.md documentation accuracy
pedramamini Jan 11, 2026
b880349
docs: fix features.md accuracy - correct theme count and provider list
pedramamini Jan 11, 2026
625ccdb
MAESTRO: Fix general-usage.md documentation accuracy issues
pedramamini Jan 11, 2026
650e8a9
MAESTRO: Fix provider name in getting-started.md documentation
pedramamini Jan 11, 2026
01f5f02
MAESTRO: Fix git-worktrees.md documentation inaccuracies
pedramamini Jan 11, 2026
8ccc0dc
MAESTRO: docs: Fix and expand group-chat.md documentation accuracy
pedramamini Jan 11, 2026
d295c92
MAESTRO: Fix index.md agent naming to match source code
pedramamini Jan 11, 2026
733e6c5
MAESTRO: Fix installation.md documentation inaccuracies
pedramamini Jan 11, 2026
8489b3a
MAESTRO: Fix releases.md documentation inaccuracies
pedramamini Jan 11, 2026
0ef72d6
- Symphony now tracks PR status for any active contribution with PRs 🧭
pedramamini Jan 11, 2026
d974be7
## CHANGES
pedramamini Jan 11, 2026
1aad878
## CHANGES
pedramamini Jan 11, 2026
856d860
## CHANGES
pedramamini Jan 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ useEffect(() => {
}, [isOpen, registerLayer, unregisterLayer]);
```

**Note:** `SymphonyModal.tsx` and `MarketplaceModal.tsx` should maintain consistent styling (same width: 1200px, same left column width: w-80, same overall layout). When modifying one, check if the other needs matching updates.

### 5. Theme Colors

Themes have 13 required colors. Use inline styles for theme colors:
Expand Down Expand Up @@ -385,6 +387,79 @@ const isRemote = !!session.sshRemoteId;
const isRemote = !!session.sshRemoteId || !!session.sessionSshRemoteConfig?.enabled;
```

### 11. Symphony (Token Donations)

Symphony connects open source projects with AI-powered contributors. Sessions can be "Symphony sessions" that track contribution metadata.

**Architecture:**
```
src/main/ipc/handlers/symphony.ts # IPC handlers for Symphony operations
src/renderer/components/SymphonyModal.tsx # Main Symphony UI
src/renderer/hooks/symphony/useSymphony.ts # Symphony state management hook
src/shared/symphony-types.ts # Type definitions
src/shared/symphony-constants.ts # Constants (URLs, labels, etc.)
```

**Session Metadata:**
```typescript
// Sessions with symphonyMetadata are Symphony contributions
session.symphonyMetadata?: {
isSymphonySession: true;
contributionId: string; // Unique contribution ID
repoSlug: string; // e.g., "owner/repo"
issueNumber: number;
issueTitle: string;
draftPrNumber?: number; // Set after first commit
draftPrUrl?: string;
documentPaths: string[];
status: ContributionStatus;
};
```

**Deferred PR Creation Flow:**
Symphony uses a deferred PR strategy to avoid "no commits between branches" errors:

1. `symphony:startContribution` - Clones repo, creates branch, sets up Auto Run docs, writes metadata
2. Agent works and makes commits
3. On AI task completion (`onProcessExit`), if session has `symphonyMetadata.contributionId` but no `draftPrNumber`:
- Calls `symphony:createDraftPR`
- Backend checks for commits via `git rev-list --count {baseBranch}..HEAD`
- If commits exist, pushes branch and creates draft PR
- Broadcasts `symphony:prCreated` event
4. App.tsx listens to `symphony:prCreated` and updates session metadata

**Auto-Completion Flow:**
When Auto Run batch finishes successfully for a Symphony session:

1. `onComplete` callback in `useBatchProcessor` fires
2. If session has `symphonyMetadata.draftPrNumber` and batch wasn't stopped:
- Calls `symphony:complete` with runtime stats (tokens, cost, time, tasks)
- Backend marks PR as ready for review via `gh pr ready`
- Posts PR comment with contribution summary and Maestro/Symphony attribution
- Updates session `symphonyMetadata.status` to `'ready_for_review'`
3. Shows toast notification on success/failure

**Key IPC Handlers:**
| Handler | Purpose |
|---------|---------|
| `symphony:getRegistry` | Fetch registered projects (cached 2hr) |
| `symphony:getIssues` | Fetch issues for a repo (cached 5min) |
| `symphony:cloneRepo` | Clone a repository |
| `symphony:startContribution` | Create branch, set up docs, write metadata |
| `symphony:createDraftPR` | Create draft PR on first commit |
| `symphony:complete` | Mark PR as ready, post stats comment |
| `symphony:cancel` | Cancel and cleanup contribution |

**External Docs Storage:**
Documents attached to GitHub issues (external URLs) are downloaded to a cache directory rather than the repo:
```
{userData}/symphony/contributions/{contributionId}/
├── docs/ # Downloaded external documents
└── metadata.json # Contribution tracking
```

Repo-internal documents (paths like `.maestro/autorun/task.md`) are referenced in place.

## Code Conventions

### TypeScript
Expand Down
11 changes: 11 additions & 0 deletions docs/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<claude-mem-context>
# Recent Activity

<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->

### Jan 11, 2026

| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #413 | 5:34 AM | 🔵 | History Documentation Content Loaded for Verification | ~412 |
</claude-mem-context>
176 changes: 176 additions & 0 deletions docs/SYMPHONY_ISSUES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
# Creating Symphony Issues

Maintainers create GitHub Issues to define contribution opportunities for the Symphony community.

## Overview

Symphony issues are standard GitHub issues with the `runmaestro.ai` label. The issue body contains paths to Auto Run documents that define the work to be done. When a contributor starts working on an issue, a draft PR is automatically created to claim it.

## Issue Requirements

1. **Label**: Add the `runmaestro.ai` label to the issue
2. **Title**: Clear description of the contribution (e.g., "Add unit tests for user module")
3. **Body**: List the Auto Run document paths (one per line)

## Issue Body Format

Simply list the paths to your Auto Run documents:

```
.maestro/autorun/add-user-tests.md
.maestro/autorun/add-user-tests-2.md
```

That's it! No special formatting required. The system will:
- Parse the `.md` file paths from the issue body
- Clone your repository when a contributor starts
- Run each document in sequence via Auto Run
- Create a PR with all changes

### Supported Path Formats

The following formats are recognized:

```markdown
# Bare paths (recommended)
.maestro/autorun/task-1.md
.maestro/autorun/task-2.md

# Markdown list items
- .maestro/autorun/task-1.md
- `.maestro/autorun/task-2.md`

# Numbered lists
1. .maestro/autorun/task-1.md
2. .maestro/autorun/task-2.md
```

## Example Issue

**Title**: Add comprehensive tests for the authentication module

**Labels**: `runmaestro.ai`

**Body**:
```markdown
Add test coverage for the authentication module.

Documents to process:
.maestro/autorun/auth-unit-tests.md
.maestro/autorun/auth-integration-tests.md
.maestro/autorun/auth-e2e-tests.md

## Context

The `src/auth/` module currently has low test coverage. These documents will guide the AI to add comprehensive tests following our existing patterns.

## Expected Outcome

- Unit tests for all public functions
- Integration tests for auth flow
- E2E tests for login/logout

Estimated time: ~45 minutes of AI agent time.
```

## Auto Run Document Format

Each `.md` file should be a complete Auto Run document:

```markdown
# Task: Add Unit Tests for Auth Module

## Context
The authentication module at `src/auth/` needs test coverage.

## Objectives
- [ ] Create `src/__tests__/auth.test.ts`
- [ ] Add tests for `login()` function
- [ ] Add tests for `logout()` function
- [ ] Add tests for `refreshToken()` function
- [ ] Ensure `npm test` passes
- [ ] Verify coverage > 80%

## Constraints
- Use Jest testing framework
- Follow existing test patterns in the codebase
- Do not modify production code
```

### Document Best Practices

1. **Small, focused tasks**: Each document should be ~30-60 minutes of AI time
2. **Clear objectives**: Use checkboxes (`- [ ]`) for verification steps
3. **Provide context**: Include file paths, existing patterns, constraints
4. **Verification steps**: Include test commands, linting checks
5. **Independence**: Each document should be self-contained

## Issue Availability

An issue is **available** for contribution when:
- It has the `runmaestro.ai` label
- It is **open** (not closed)
- There is **no open PR** with "Closes #N" in the body

When a contributor starts working on an issue, a draft PR is immediately created with "Closes #N" in the body. This claims the issue and prevents duplicate work.

### Claim Flow

```
1. Contributor clicks "Start Symphony" on an issue
2. Repository is cloned locally
3. A new branch is created (symphony/issue-{number}-{timestamp})
4. An empty commit is made
5. The branch is pushed to origin
6. A draft PR is created with "Closes #{issue}" in the body
7. Auto Run begins processing documents
8. When complete, contributor clicks "Finalize PR"
9. Draft PR is converted to "Ready for Review"
```

## Creating Good Issues

### Do

- ✅ Break large tasks into multiple smaller issues
- ✅ Include all necessary context in the documents
- ✅ Provide clear acceptance criteria
- ✅ Estimate the expected time/complexity
- ✅ Link to relevant documentation or examples

### Don't

- ❌ Create issues that require human judgment calls
- ❌ Include tasks that need external credentials/access
- ❌ Bundle unrelated tasks in a single issue
- ❌ Assume contributors know your codebase intimately
- ❌ Create documents with ambiguous requirements

## Example Document Structure

For complex tasks, organize your documents like this:

```
.maestro/autorun/
├── feature-1-setup.md # First: Set up files/structure
├── feature-1-implement.md # Second: Implement the feature
├── feature-1-tests.md # Third: Add tests
└── feature-1-docs.md # Fourth: Update documentation
```

Each document builds on the previous one, and contributors can see the full scope in the issue body.

## Monitoring Contributions

As a maintainer:

1. You'll receive a GitHub notification when a draft PR is created
2. Watch the PR for progress as the contributor works
3. Review and provide feedback once the PR is ready
4. Merge when satisfied

## Questions?

- See [SYMPHONY_REGISTRY.md](SYMPHONY_REGISTRY.md) for registry information
- Check the [Maestro documentation](https://docs.runmaestro.ai) for Auto Run guides
- Open an issue on the Maestro repository for support
Loading