loopflow 0.8.3__tar.gz → 0.8.4__tar.gz
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.
- {loopflow-0.8.3 → loopflow-0.8.4}/Cargo.lock +18 -161
- {loopflow-0.8.3 → loopflow-0.8.4}/PKG-INFO +4 -3
- {loopflow-0.8.3 → loopflow-0.8.4}/README.md +3 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/config.md +10 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/getting-started.md +1 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/lf.md +2 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/lfops.md +1 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/troubleshooting.md +1 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/python/loopflow/api.py +14 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/python/loopflow/client.py +17 -4
- {loopflow-0.8.3 → loopflow-0.8.4}/python/loopflow/models.py +3 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/python/tests/conftest.py +3 -20
- {loopflow-0.8.3 → loopflow-0.8.4}/python/tests/test_models.py +5 -2
- loopflow-0.8.4/roadmap/mobile/README.md +89 -0
- loopflow-0.8.4/roadmap/remote/01-sandboxed-agents.md +234 -0
- loopflow-0.8.4/roadmap/remote/02-compose-stack.md +145 -0
- loopflow-0.8.4/roadmap/remote/03-pre-shared-auth.md +126 -0
- loopflow-0.8.4/roadmap/remote/04-ec2.md +161 -0
- loopflow-0.8.4/roadmap/remote/05-concerto-remote.md +170 -0
- loopflow-0.8.4/roadmap/remote/06-remote-file-access.md +125 -0
- loopflow-0.8.4/roadmap/remote/07-studio-auth.md +124 -0
- loopflow-0.8.4/roadmap/remote/08-api-expansion.md +207 -0
- loopflow-0.8.4/roadmap/remote/09-hosted.md +63 -0
- loopflow-0.8.4/roadmap/remote/README.md +63 -0
- loopflow-0.8.4/roadmap/rust/README.md +44 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/Cargo.toml +0 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/bin/lf.rs +9 -4
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/agent.rs +136 -19
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/ops/summarize.md +3 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/config.rs +14 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/git.rs +55 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/platform.rs +8 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/stream.rs +88 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/commands/ops/mod.rs +2 -9
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/mod.rs +0 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/executor.rs +385 -26
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/dto.rs +39 -25
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/mod.rs +10 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/routes/flows.rs +1 -1
- loopflow-0.8.4/rust/loopflow/src/lfd/http/routes/mod.rs +346 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/routes/waves.rs +169 -64
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/routes/ws.rs +30 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/scheduler.rs +3 -2
- {loopflow-0.8.3/rust/loopflow/src/lfd/store/migrations/postgres → loopflow-0.8.4/rust/loopflow/src/lfd/store/migrations}/001_initial.sql +24 -27
- loopflow-0.8.4/rust/loopflow/src/lfd/store/migrations.rs +181 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/store/mod.rs +40 -62
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/store/postgres.rs +179 -593
- loopflow-0.8.4/rust/loopflow/src/lfd/store/rows.rs +236 -0
- loopflow-0.8.4/rust/loopflow/src/lfd/store/sqlite.rs +787 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/triggers/common.rs +6 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/triggers/cron.rs +1 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/triggers/loop_ticker.rs +0 -4
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/triggers/mod.rs +3 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/triggers/recovery.rs +8 -3
- loopflow-0.8.4/rust/loopflow/src/lfd/triggers/summary_refresh.rs +95 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/triggers/watch.rs +0 -4
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/types/event.rs +36 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/types/mod.rs +2 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/types/stimulus.rs +0 -2
- loopflow-0.8.4/rust/loopflow/src/lfd/types/summary.rs +16 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/mod.rs +1 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/next.rs +3 -76
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/pr.rs +1 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/rebase.rs +2 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/next_tests.rs +0 -4
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/State/RepoState.swift +158 -61
- loopflow-0.8.4/swift/Concerto/State/RunStore.swift +24 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/State/WaveStore.swift +69 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/ContentView.swift +1 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/NextActionsBar.swift +1 -2
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/ScreenshotWindow.swift +1 -0
- loopflow-0.8.4/swift/Concerto/Views/StepRunner.swift +342 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/WaveDetailPanel.swift +66 -77
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/WaveRow.swift +43 -24
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/WaveRunsTab.swift +33 -1
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/WaveSidebar.swift +1 -1
- loopflow-0.8.4/swift/ConcertoTests/RunStoreTests.swift +80 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/ConcertoTests/WaveRowTests.swift +4 -4
- loopflow-0.8.4/swift/ConcertoTests/WaveStoreTests.swift +424 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/ConcertoTests/WaveTests.swift +200 -29
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/Wave.swift +32 -20
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/WaveViewModel.swift +16 -14
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/LocalEventService.swift +9 -54
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/LocalWaveService.swift +70 -39
- loopflow-0.8.4/swift/LoopflowCore/Services/WaveServiceProtocol.swift +29 -0
- loopflow-0.8.3/roadmap/concerto/02-studio-auth-v0.md +0 -142
- loopflow-0.8.3/roadmap/concerto/03-mobile-client-v0.md +0 -238
- loopflow-0.8.3/roadmap/concerto/README.md +0 -88
- loopflow-0.8.3/roadmap/opencode/02-stream-parser.md +0 -194
- loopflow-0.8.3/roadmap/opencode/03-context-injection.md +0 -88
- loopflow-0.8.3/roadmap/opencode/04-tests-and-docs.md +0 -66
- loopflow-0.8.3/roadmap/opencode/README.md +0 -52
- loopflow-0.8.3/roadmap/rust/02b-summarize.md +0 -107
- loopflow-0.8.3/roadmap/rust/04-auth.md +0 -98
- loopflow-0.8.3/roadmap/rust/05-infrastructure.md +0 -122
- loopflow-0.8.3/roadmap/rust/06-hosted.md +0 -68
- loopflow-0.8.3/roadmap/rust/README.md +0 -91
- loopflow-0.8.3/roadmap/ux/02-optimistic-data-mutations.md +0 -74
- loopflow-0.8.3/roadmap/ux/03-event-driven-sync.md +0 -95
- loopflow-0.8.3/roadmap/ux/04-optimistic-create-delete.md +0 -110
- loopflow-0.8.3/roadmap/ux/05-responsive-actions.md +0 -83
- loopflow-0.8.3/roadmap/ux/06-run-store.md +0 -77
- loopflow-0.8.3/rust/loopflow/src/lfd/http/routes/mod.rs +0 -179
- loopflow-0.8.3/rust/loopflow/src/lfd/store/migrations/postgres/002_flow_parents.sql +0 -4
- loopflow-0.8.3/rust/loopflow/src/lfd/store/migrations/postgres/003_run_snapshots.sql +0 -27
- loopflow-0.8.3/rust/loopflow/src/lfd/store/schema.rs +0 -3
- loopflow-0.8.3/rust/loopflow/src/lfd/store/sqlite.rs +0 -1226
- loopflow-0.8.3/scripts/collapse_migrations.py +0 -87
- loopflow-0.8.3/swift/Concerto/Views/StepRunner.swift +0 -288
- {loopflow-0.8.3 → loopflow-0.8.4}/.claude/commands/ux-review.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.claude/commands/ux-synthesize-concerto.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.github/workflows/ci.yml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.github/workflows/clear-scratch.yml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.github/workflows/release.yml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.gitignore +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.lf/SUMMARIZE.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.lf/config.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.lf/directions/conductor.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.lf/directions/improviser.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/.lf/directions/listener.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/AGENTS.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/CLAUDE.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/Cargo.toml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/PROMPT_STYLE.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/RELEASE_NOTES.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/STYLE.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/TESTING.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/VISUAL_DESIGN.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/bin/test-summaries +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/bin/waves-start +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/bin/waves-stop +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/_config.yml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/index.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/lfd.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/screenshots/concerto-main-uitest.png +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/screenshots/concerto-main.png +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/screenshots/concerto-wave-running-uitest.png +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/screenshots/concerto-wave-running.png +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/screenshots/concerto-wave-waiting-uitest.png +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/screenshots/concerto-wave-waiting.png +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/stubs/lf-context +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/docs/waves.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/loopflow.code-workspace +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/VERSIONING.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/output_line.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/scheduler_slot_acquired.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/scheduler_slot_released.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/session_ended.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/session_started.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/wave_activated.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/wave_created.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/wave_started.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/wave_stopped.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/wave_waiting.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/worktree_pruned.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/events/worktree_updated.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/requests/connect_wave.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/requests/create_wave.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/requests/gather_context.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/analyze_tokens.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/connect_wave.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/create_wave.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/error_detail.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/gather_context.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/get_health.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/get_status.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/fixtures/responses/list_worktrees.json +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/loopflow/control/v1/control.proto +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/proto/loopflow/engine/v1/engine.proto +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/pyproject.toml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/python/loopflow/__init__.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/python/loopflow/cli.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/python/loopflow/errors.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/python/tests/test_cli.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/python/tests/test_client.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/cli/ux-polish.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/code-quality.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/00-overview.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/01-platform.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/02-auth.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/03-conduct-ux.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/04-improvise-ux.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/05-remote-terminal.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/06-data-structures.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/07-ux-experiments.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/08-notifications.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/09-phasing.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/concerto-vision.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/landscape.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/lfd-reliability.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/rust-lfd.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/target-customer.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/teams-vision.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/reports/terminal-reference.md +0 -0
- {loopflow-0.8.3/roadmap/concerto → loopflow-0.8.4/roadmap/mobile}/agent-harness.md +0 -0
- {loopflow-0.8.3/roadmap/concerto → loopflow-0.8.4/roadmap/mobile}/chat-experience.md +0 -0
- {loopflow-0.8.3/roadmap/concerto → loopflow-0.8.4/roadmap/mobile}/ios-conduct-ui.md +0 -0
- {loopflow-0.8.3/roadmap/concerto → loopflow-0.8.4/roadmap/mobile}/ios-improvise-ui.md +0 -0
- {loopflow-0.8.3/roadmap/concerto → loopflow-0.8.4/roadmap/mobile}/push-notifications.md +0 -0
- {loopflow-0.8.3/roadmap/concerto → loopflow-0.8.4/roadmap/mobile}/remote-terminal-view.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/rust/03-service.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/ux/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/01-decouple-screenshots.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/02-screenshot-coverage.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/03-visual-research.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/04-design-audit.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/05-docs-inventory.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/06-theming-system.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/07-polish.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/roadmap/viz/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/bin/lf-prompt.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/bin/lfd.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/LOOPFLOW.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/directions/roles/ceo.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/directions/roles/designer.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/directions/roles/infra-engineer.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/directions/roles/product-engineer.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/directions/values/craft.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/directions/values/flow.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/directions/values/scale.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/code/design-and-ship.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/code/grind.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/code/incident.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/code/pair.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/code/ship-roadmap.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/code/ship.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/code/start.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/plan/publish.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/plan/research.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/plan/roadmap-expand.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/plan/roadmap-polish.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/flows/plan/roadmap-reduce.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/ops/commit_message.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/ops/pr_message.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/ops/release_notes.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/code/compress.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/code/debug.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/code/gate.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/code/implement.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/interactive/design.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/interactive/explore.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/interactive/refine.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/add-to-roadmap.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/commit.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/consolidate.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/init.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/lint.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/rebase.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/synthesize.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/ops/validate.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/5whys.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/expand.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/ingest.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/iterate.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/kickoff.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/polish.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/reduce.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/review.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins/steps/plan/roadmap.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/builtins.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/clipboard.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/command.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/error.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/event.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/flow.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/mod.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/naming.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/prompt.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/worktree.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/engine/worktrees.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/commands/flow.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/commands/list.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/commands/mod.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/commands/run.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/commands/util.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/discovery.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lf/output.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/auth.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/config.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/credentials.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/events.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/routes/hooks.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/routes/system.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/routes/wave_runs.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/http/state.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/id.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/machine_id.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/mod.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/obs.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/output.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/registration.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/sessions.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/types/agent.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lfd/types/wave.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/lib.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/abandon.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/collapse.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/commit.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/error.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/land.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/lint.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/messages.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/progress.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/trace.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/src/ops/util.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/agent_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/collapse_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/commit_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/config_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/context_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/discovery_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/flow_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/git_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/golden_prompt.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/land_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/pr_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/rebase_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/support/mod.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/token_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/wave_worktree_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow/tests/worktree_tests.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow-test-support/Cargo.toml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/rust/loopflow-test-support/src/lib.rs +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/scripts/dev-lf +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/scripts/dev.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/scripts/generate_screenshots.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/scripts/publish.py +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/scripts/screenshots.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/AppIcon.icns +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/BrandColors.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Concerto.sdef +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/ConcertoApp.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/DesignSystem.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Flags.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Info.plist +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Models/RecentRepo.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/ScriptCommands.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/AppIconProvider.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/Ghostty/GhosttyManager.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/Ghostty/GhosttyTerminalView.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/Ghostty/GhosttyTypes.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/Ghostty/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/NameGenerator.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/RecentAreasService.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/RecentsService.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/SetupService.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/SnapshotService.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Services/TerminalLauncher.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/State/OutputBuffer.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/UX_DESIGN.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/AreaTypeahead.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/CommandPalette.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/DiagnosticsView.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/DirectionTypeahead.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/EmbeddedTerminalPanel.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/FlowProgressPills.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/FlowTypeahead.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/InteractiveSessionView.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/IterationTimeline.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/LiveOutput.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/QuickExperimentView.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/RepoWindow.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/SetupView.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/TerminalTestWindow.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/TypeaheadComponents.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/WaitingStateCard.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Concerto/Views/WelcomeWindow.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/ConcertoTests/AuthServiceTests.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/ConcertoTests/GhosttyTests.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/ConcertoUITests/ScreenshotPipelineTests.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/DESIGN.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Info.plist +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/LoopflowCore.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/AppPreferences.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/AppearanceMode.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/Flow.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/PullRequest.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/StatusColors.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/Step.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Models/WaveRun.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/AuthError.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/AuthService.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/AuthState.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/LoggingService.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/NotificationService.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/LoopflowCore/Services/TokenProvider.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Package.resolved +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Package.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Symphonia/SymphoniaApp.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/Symphonia/Views/PlaceholderView.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/SymphoniaTests/SymphoniaTests.swift +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/swift/project.yml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/e2e/test_full_cycle.sh +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/e2e/test_rebase_conflict.sh +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/e2e/test_smoke.sh +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/goldens/basic.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/goldens/basic.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/goldens/with_direction.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/goldens/with_direction.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/goldens/with_lfdocs.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/goldens/with_lfdocs.yaml +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/parity/fixtures/basic/.lf/steps/test.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/parity/fixtures/with_direction/.lf/directions/thorough.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/parity/fixtures/with_direction/.lf/steps/test.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/parity/fixtures/with_lfdocs/.lf/steps/test.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/parity/fixtures/with_lfdocs/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/parity/fixtures/with_lfdocs/roadmap/rust/README.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/tests/parity/fixtures/with_lfdocs/scratch/design.md +0 -0
- {loopflow-0.8.3 → loopflow-0.8.4}/uv.lock +0 -0
|
@@ -96,7 +96,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
|
|
|
96
96
|
dependencies = [
|
|
97
97
|
"proc-macro2",
|
|
98
98
|
"quote",
|
|
99
|
-
"syn
|
|
99
|
+
"syn",
|
|
100
100
|
]
|
|
101
101
|
|
|
102
102
|
[[package]]
|
|
@@ -237,16 +237,6 @@ dependencies = [
|
|
|
237
237
|
"objc2",
|
|
238
238
|
]
|
|
239
239
|
|
|
240
|
-
[[package]]
|
|
241
|
-
name = "bollard-stubs"
|
|
242
|
-
version = "1.42.0-rc.3"
|
|
243
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
244
|
-
checksum = "ed59b5c00048f48d7af971b71f800fdf23e858844a6f9e4d32ca72e9399e7864"
|
|
245
|
-
dependencies = [
|
|
246
|
-
"serde",
|
|
247
|
-
"serde_with",
|
|
248
|
-
]
|
|
249
|
-
|
|
250
240
|
[[package]]
|
|
251
241
|
name = "bstr"
|
|
252
242
|
version = "1.12.1"
|
|
@@ -331,7 +321,7 @@ dependencies = [
|
|
|
331
321
|
"anstream",
|
|
332
322
|
"anstyle",
|
|
333
323
|
"clap_lex",
|
|
334
|
-
"strsim
|
|
324
|
+
"strsim",
|
|
335
325
|
]
|
|
336
326
|
|
|
337
327
|
[[package]]
|
|
@@ -343,7 +333,7 @@ dependencies = [
|
|
|
343
333
|
"heck",
|
|
344
334
|
"proc-macro2",
|
|
345
335
|
"quote",
|
|
346
|
-
"syn
|
|
336
|
+
"syn",
|
|
347
337
|
]
|
|
348
338
|
|
|
349
339
|
[[package]]
|
|
@@ -440,41 +430,6 @@ dependencies = [
|
|
|
440
430
|
"windows-sys 0.61.2",
|
|
441
431
|
]
|
|
442
432
|
|
|
443
|
-
[[package]]
|
|
444
|
-
name = "darling"
|
|
445
|
-
version = "0.13.4"
|
|
446
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
447
|
-
checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
|
|
448
|
-
dependencies = [
|
|
449
|
-
"darling_core",
|
|
450
|
-
"darling_macro",
|
|
451
|
-
]
|
|
452
|
-
|
|
453
|
-
[[package]]
|
|
454
|
-
name = "darling_core"
|
|
455
|
-
version = "0.13.4"
|
|
456
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
457
|
-
checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
|
|
458
|
-
dependencies = [
|
|
459
|
-
"fnv",
|
|
460
|
-
"ident_case",
|
|
461
|
-
"proc-macro2",
|
|
462
|
-
"quote",
|
|
463
|
-
"strsim 0.10.0",
|
|
464
|
-
"syn 1.0.109",
|
|
465
|
-
]
|
|
466
|
-
|
|
467
|
-
[[package]]
|
|
468
|
-
name = "darling_macro"
|
|
469
|
-
version = "0.13.4"
|
|
470
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
471
|
-
checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
|
|
472
|
-
dependencies = [
|
|
473
|
-
"darling_core",
|
|
474
|
-
"quote",
|
|
475
|
-
"syn 1.0.109",
|
|
476
|
-
]
|
|
477
|
-
|
|
478
433
|
[[package]]
|
|
479
434
|
name = "data-encoding"
|
|
480
435
|
version = "2.10.0"
|
|
@@ -576,7 +531,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
|
|
|
576
531
|
dependencies = [
|
|
577
532
|
"proc-macro2",
|
|
578
533
|
"quote",
|
|
579
|
-
"syn
|
|
534
|
+
"syn",
|
|
580
535
|
]
|
|
581
536
|
|
|
582
537
|
[[package]]
|
|
@@ -692,21 +647,6 @@ dependencies = [
|
|
|
692
647
|
"percent-encoding",
|
|
693
648
|
]
|
|
694
649
|
|
|
695
|
-
[[package]]
|
|
696
|
-
name = "futures"
|
|
697
|
-
version = "0.3.31"
|
|
698
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
699
|
-
checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
|
|
700
|
-
dependencies = [
|
|
701
|
-
"futures-channel",
|
|
702
|
-
"futures-core",
|
|
703
|
-
"futures-executor",
|
|
704
|
-
"futures-io",
|
|
705
|
-
"futures-sink",
|
|
706
|
-
"futures-task",
|
|
707
|
-
"futures-util",
|
|
708
|
-
]
|
|
709
|
-
|
|
710
650
|
[[package]]
|
|
711
651
|
name = "futures-channel"
|
|
712
652
|
version = "0.3.31"
|
|
@@ -723,23 +663,6 @@ version = "0.3.31"
|
|
|
723
663
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
724
664
|
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
|
|
725
665
|
|
|
726
|
-
[[package]]
|
|
727
|
-
name = "futures-executor"
|
|
728
|
-
version = "0.3.31"
|
|
729
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
730
|
-
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
|
|
731
|
-
dependencies = [
|
|
732
|
-
"futures-core",
|
|
733
|
-
"futures-task",
|
|
734
|
-
"futures-util",
|
|
735
|
-
]
|
|
736
|
-
|
|
737
|
-
[[package]]
|
|
738
|
-
name = "futures-io"
|
|
739
|
-
version = "0.3.31"
|
|
740
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
741
|
-
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
|
|
742
|
-
|
|
743
666
|
[[package]]
|
|
744
667
|
name = "futures-macro"
|
|
745
668
|
version = "0.3.31"
|
|
@@ -748,7 +671,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
|
|
748
671
|
dependencies = [
|
|
749
672
|
"proc-macro2",
|
|
750
673
|
"quote",
|
|
751
|
-
"syn
|
|
674
|
+
"syn",
|
|
752
675
|
]
|
|
753
676
|
|
|
754
677
|
[[package]]
|
|
@@ -769,13 +692,10 @@ version = "0.3.31"
|
|
|
769
692
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
770
693
|
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
|
|
771
694
|
dependencies = [
|
|
772
|
-
"futures-channel",
|
|
773
695
|
"futures-core",
|
|
774
|
-
"futures-io",
|
|
775
696
|
"futures-macro",
|
|
776
697
|
"futures-sink",
|
|
777
698
|
"futures-task",
|
|
778
|
-
"memchr",
|
|
779
699
|
"pin-project-lite",
|
|
780
700
|
"pin-utils",
|
|
781
701
|
"slab",
|
|
@@ -1162,12 +1082,6 @@ dependencies = [
|
|
|
1162
1082
|
"zerovec",
|
|
1163
1083
|
]
|
|
1164
1084
|
|
|
1165
|
-
[[package]]
|
|
1166
|
-
name = "ident_case"
|
|
1167
|
-
version = "1.0.1"
|
|
1168
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1169
|
-
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
|
1170
|
-
|
|
1171
1085
|
[[package]]
|
|
1172
1086
|
name = "idna"
|
|
1173
1087
|
version = "1.1.0"
|
|
@@ -1403,7 +1317,6 @@ dependencies = [
|
|
|
1403
1317
|
"serde_yaml",
|
|
1404
1318
|
"sha2",
|
|
1405
1319
|
"tempfile",
|
|
1406
|
-
"testcontainers",
|
|
1407
1320
|
"thiserror",
|
|
1408
1321
|
"tiktoken-rs",
|
|
1409
1322
|
"time",
|
|
@@ -1624,7 +1537,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
|
|
1624
1537
|
dependencies = [
|
|
1625
1538
|
"proc-macro2",
|
|
1626
1539
|
"quote",
|
|
1627
|
-
"syn
|
|
1540
|
+
"syn",
|
|
1628
1541
|
]
|
|
1629
1542
|
|
|
1630
1543
|
[[package]]
|
|
@@ -2132,7 +2045,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
|
|
2132
2045
|
dependencies = [
|
|
2133
2046
|
"proc-macro2",
|
|
2134
2047
|
"quote",
|
|
2135
|
-
"syn
|
|
2048
|
+
"syn",
|
|
2136
2049
|
]
|
|
2137
2050
|
|
|
2138
2051
|
[[package]]
|
|
@@ -2171,28 +2084,6 @@ dependencies = [
|
|
|
2171
2084
|
"serde",
|
|
2172
2085
|
]
|
|
2173
2086
|
|
|
2174
|
-
[[package]]
|
|
2175
|
-
name = "serde_with"
|
|
2176
|
-
version = "1.14.0"
|
|
2177
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2178
|
-
checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff"
|
|
2179
|
-
dependencies = [
|
|
2180
|
-
"serde",
|
|
2181
|
-
"serde_with_macros",
|
|
2182
|
-
]
|
|
2183
|
-
|
|
2184
|
-
[[package]]
|
|
2185
|
-
name = "serde_with_macros"
|
|
2186
|
-
version = "1.5.2"
|
|
2187
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2188
|
-
checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082"
|
|
2189
|
-
dependencies = [
|
|
2190
|
-
"darling",
|
|
2191
|
-
"proc-macro2",
|
|
2192
|
-
"quote",
|
|
2193
|
-
"syn 1.0.109",
|
|
2194
|
-
]
|
|
2195
|
-
|
|
2196
2087
|
[[package]]
|
|
2197
2088
|
name = "serde_yaml"
|
|
2198
2089
|
version = "0.9.34+deprecated"
|
|
@@ -2356,12 +2247,6 @@ dependencies = [
|
|
|
2356
2247
|
"unicode-properties",
|
|
2357
2248
|
]
|
|
2358
2249
|
|
|
2359
|
-
[[package]]
|
|
2360
|
-
name = "strsim"
|
|
2361
|
-
version = "0.10.0"
|
|
2362
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2363
|
-
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
|
2364
|
-
|
|
2365
2250
|
[[package]]
|
|
2366
2251
|
name = "strsim"
|
|
2367
2252
|
version = "0.11.1"
|
|
@@ -2374,17 +2259,6 @@ version = "2.6.1"
|
|
|
2374
2259
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2375
2260
|
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
|
2376
2261
|
|
|
2377
|
-
[[package]]
|
|
2378
|
-
name = "syn"
|
|
2379
|
-
version = "1.0.109"
|
|
2380
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2381
|
-
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
|
2382
|
-
dependencies = [
|
|
2383
|
-
"proc-macro2",
|
|
2384
|
-
"quote",
|
|
2385
|
-
"unicode-ident",
|
|
2386
|
-
]
|
|
2387
|
-
|
|
2388
2262
|
[[package]]
|
|
2389
2263
|
name = "syn"
|
|
2390
2264
|
version = "2.0.114"
|
|
@@ -2413,7 +2287,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
|
|
|
2413
2287
|
dependencies = [
|
|
2414
2288
|
"proc-macro2",
|
|
2415
2289
|
"quote",
|
|
2416
|
-
"syn
|
|
2290
|
+
"syn",
|
|
2417
2291
|
]
|
|
2418
2292
|
|
|
2419
2293
|
[[package]]
|
|
@@ -2459,23 +2333,6 @@ dependencies = [
|
|
|
2459
2333
|
"libc",
|
|
2460
2334
|
]
|
|
2461
2335
|
|
|
2462
|
-
[[package]]
|
|
2463
|
-
name = "testcontainers"
|
|
2464
|
-
version = "0.15.0"
|
|
2465
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2466
|
-
checksum = "f83d2931d7f521af5bae989f716c3fa43a6af9af7ec7a5e21b59ae40878cec00"
|
|
2467
|
-
dependencies = [
|
|
2468
|
-
"bollard-stubs",
|
|
2469
|
-
"futures",
|
|
2470
|
-
"hex",
|
|
2471
|
-
"hmac",
|
|
2472
|
-
"log",
|
|
2473
|
-
"rand 0.8.5",
|
|
2474
|
-
"serde",
|
|
2475
|
-
"serde_json",
|
|
2476
|
-
"sha2",
|
|
2477
|
-
]
|
|
2478
|
-
|
|
2479
2336
|
[[package]]
|
|
2480
2337
|
name = "thiserror"
|
|
2481
2338
|
version = "1.0.69"
|
|
@@ -2493,7 +2350,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
|
|
2493
2350
|
dependencies = [
|
|
2494
2351
|
"proc-macro2",
|
|
2495
2352
|
"quote",
|
|
2496
|
-
"syn
|
|
2353
|
+
"syn",
|
|
2497
2354
|
]
|
|
2498
2355
|
|
|
2499
2356
|
[[package]]
|
|
@@ -2601,7 +2458,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
|
|
|
2601
2458
|
dependencies = [
|
|
2602
2459
|
"proc-macro2",
|
|
2603
2460
|
"quote",
|
|
2604
|
-
"syn
|
|
2461
|
+
"syn",
|
|
2605
2462
|
]
|
|
2606
2463
|
|
|
2607
2464
|
[[package]]
|
|
@@ -2771,7 +2628,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
|
|
|
2771
2628
|
dependencies = [
|
|
2772
2629
|
"proc-macro2",
|
|
2773
2630
|
"quote",
|
|
2774
|
-
"syn
|
|
2631
|
+
"syn",
|
|
2775
2632
|
]
|
|
2776
2633
|
|
|
2777
2634
|
[[package]]
|
|
@@ -3039,7 +2896,7 @@ dependencies = [
|
|
|
3039
2896
|
"bumpalo",
|
|
3040
2897
|
"proc-macro2",
|
|
3041
2898
|
"quote",
|
|
3042
|
-
"syn
|
|
2899
|
+
"syn",
|
|
3043
2900
|
"wasm-bindgen-shared",
|
|
3044
2901
|
]
|
|
3045
2902
|
|
|
@@ -3125,7 +2982,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
|
|
|
3125
2982
|
dependencies = [
|
|
3126
2983
|
"proc-macro2",
|
|
3127
2984
|
"quote",
|
|
3128
|
-
"syn
|
|
2985
|
+
"syn",
|
|
3129
2986
|
]
|
|
3130
2987
|
|
|
3131
2988
|
[[package]]
|
|
@@ -3136,7 +2993,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
|
|
|
3136
2993
|
dependencies = [
|
|
3137
2994
|
"proc-macro2",
|
|
3138
2995
|
"quote",
|
|
3139
|
-
"syn
|
|
2996
|
+
"syn",
|
|
3140
2997
|
]
|
|
3141
2998
|
|
|
3142
2999
|
[[package]]
|
|
@@ -3436,7 +3293,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
|
|
|
3436
3293
|
dependencies = [
|
|
3437
3294
|
"proc-macro2",
|
|
3438
3295
|
"quote",
|
|
3439
|
-
"syn
|
|
3296
|
+
"syn",
|
|
3440
3297
|
"synstructure",
|
|
3441
3298
|
]
|
|
3442
3299
|
|
|
@@ -3457,7 +3314,7 @@ checksum = "1328722bbf2115db7e19d69ebcc15e795719e2d66b60827c6a69a117365e37a0"
|
|
|
3457
3314
|
dependencies = [
|
|
3458
3315
|
"proc-macro2",
|
|
3459
3316
|
"quote",
|
|
3460
|
-
"syn
|
|
3317
|
+
"syn",
|
|
3461
3318
|
]
|
|
3462
3319
|
|
|
3463
3320
|
[[package]]
|
|
@@ -3477,7 +3334,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
|
|
|
3477
3334
|
dependencies = [
|
|
3478
3335
|
"proc-macro2",
|
|
3479
3336
|
"quote",
|
|
3480
|
-
"syn
|
|
3337
|
+
"syn",
|
|
3481
3338
|
"synstructure",
|
|
3482
3339
|
]
|
|
3483
3340
|
|
|
@@ -3517,7 +3374,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
|
|
|
3517
3374
|
dependencies = [
|
|
3518
3375
|
"proc-macro2",
|
|
3519
3376
|
"quote",
|
|
3520
|
-
"syn
|
|
3377
|
+
"syn",
|
|
3521
3378
|
]
|
|
3522
3379
|
|
|
3523
3380
|
[[package]]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: loopflow
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.4
|
|
4
4
|
Summary: Run LLM coding agents from reusable prompt files
|
|
5
5
|
Project-URL: Homepage, https://loopflowstudio.github.io/loopflow/
|
|
6
6
|
Project-URL: Repository, https://github.com/loopflowstudio/loopflow
|
|
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
|
|
|
26
26
|
|
|
27
27
|
# Loopflow
|
|
28
28
|
|
|
29
|
-
Loopflow helps you maintain flow and craft using coding agents (Claude Code, Codex, Gemini CLI) at high scale.
|
|
29
|
+
Loopflow helps you maintain flow and craft using coding agents (Claude Code, Codex, Gemini CLI, OpenCode) at high scale.
|
|
30
30
|
|
|
31
31
|
Loopflow helps you create and run **Waves**. Waves are chains of coding agents working together in pre-defined ways.
|
|
32
32
|
|
|
@@ -209,6 +209,7 @@ loopflow.run_wave("engbot")
|
|
|
209
209
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) — Anthropic's coding agent (default)
|
|
210
210
|
- [Codex CLI](https://github.com/openai/codex) — OpenAI's coding agent
|
|
211
211
|
- [Gemini CLI](https://github.com/google-gemini/gemini-cli) — Google's coding agent
|
|
212
|
+
- [OpenCode](https://github.com/anomalyco/opencode) — Open source coding agent
|
|
212
213
|
|
|
213
214
|
**Skill Libraries**
|
|
214
215
|
- [superpowers](https://github.com/obra/superpowers) — prompt library (`lf sp:<skill>`)
|
|
@@ -218,7 +219,7 @@ loopflow.run_wave("engbot")
|
|
|
218
219
|
## Requirements
|
|
219
220
|
|
|
220
221
|
- macOS
|
|
221
|
-
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex),
|
|
222
|
+
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [OpenCode](https://github.com/anomalyco/opencode)
|
|
222
223
|
|
|
223
224
|
## License
|
|
224
225
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Loopflow
|
|
2
2
|
|
|
3
|
-
Loopflow helps you maintain flow and craft using coding agents (Claude Code, Codex, Gemini CLI) at high scale.
|
|
3
|
+
Loopflow helps you maintain flow and craft using coding agents (Claude Code, Codex, Gemini CLI, OpenCode) at high scale.
|
|
4
4
|
|
|
5
5
|
Loopflow helps you create and run **Waves**. Waves are chains of coding agents working together in pre-defined ways.
|
|
6
6
|
|
|
@@ -183,6 +183,7 @@ loopflow.run_wave("engbot")
|
|
|
183
183
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) — Anthropic's coding agent (default)
|
|
184
184
|
- [Codex CLI](https://github.com/openai/codex) — OpenAI's coding agent
|
|
185
185
|
- [Gemini CLI](https://github.com/google-gemini/gemini-cli) — Google's coding agent
|
|
186
|
+
- [OpenCode](https://github.com/anomalyco/opencode) — Open source coding agent
|
|
186
187
|
|
|
187
188
|
**Skill Libraries**
|
|
188
189
|
- [superpowers](https://github.com/obra/superpowers) — prompt library (`lf sp:<skill>`)
|
|
@@ -192,7 +193,7 @@ loopflow.run_wave("engbot")
|
|
|
192
193
|
## Requirements
|
|
193
194
|
|
|
194
195
|
- macOS
|
|
195
|
-
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex),
|
|
196
|
+
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [OpenCode](https://github.com/anomalyco/opencode)
|
|
196
197
|
|
|
197
198
|
## License
|
|
198
199
|
|
|
@@ -198,7 +198,15 @@ Default model for all steps.
|
|
|
198
198
|
| **Config** | `agent_model: claude:opus` |
|
|
199
199
|
| **Default** | `claude:opus` |
|
|
200
200
|
|
|
201
|
-
Backends: `claude`, `codex`, `gemini`. Use `backend:variant` for specific models.
|
|
201
|
+
Backends: `claude`, `codex`, `gemini`, `opencode`. Use `backend:variant` for specific models.
|
|
202
|
+
|
|
203
|
+
OpenCode passes model strings through to its own provider system:
|
|
204
|
+
|
|
205
|
+
```yaml
|
|
206
|
+
agent_model: opencode # use opencode's default model
|
|
207
|
+
agent_model: opencode:anthropic/claude-sonnet # explicit model
|
|
208
|
+
agent_model: opencode:openai/gpt-4o # any provider opencode supports
|
|
209
|
+
```
|
|
202
210
|
|
|
203
211
|
### Run Mode
|
|
204
212
|
|
|
@@ -261,7 +269,7 @@ Skip permissions. Codex uses the danger-full-access sandbox.
|
|
|
261
269
|
| **Config** | `yolo: true` |
|
|
262
270
|
| **Default** | `false` |
|
|
263
271
|
|
|
264
|
-
Claude: `--dangerously-skip-permissions`. Codex: `--sandbox danger-full-access` with `approval_policy="never"`. Gemini: `--yolo`.
|
|
272
|
+
Claude: `--dangerously-skip-permissions`. Codex: `--sandbox danger-full-access` with `approval_policy="never"`. Gemini: `--yolo`. OpenCode: `permission: "allow"` via `OPENCODE_CONFIG_CONTENT`.
|
|
265
273
|
|
|
266
274
|
### Autoprune
|
|
267
275
|
|
|
@@ -20,7 +20,7 @@ Install the Python CLI/API (lfq + loopflow) separately:
|
|
|
20
20
|
uv tool install loopflow
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Requires macOS and one of: [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex),
|
|
23
|
+
Requires macOS and one of: [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex](https://github.com/openai/codex), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [OpenCode](https://github.com/anomalyco/opencode).
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -5,7 +5,7 @@ title: lf Command Reference
|
|
|
5
5
|
|
|
6
6
|
# lf Command Reference
|
|
7
7
|
|
|
8
|
-
`lf` is a prompt launcher. Every command launches a prompt—assembling context and passing it to Claude, Codex, or
|
|
8
|
+
`lf` is a prompt launcher. Every command launches a prompt—assembling context and passing it to Claude, Codex, Gemini, or OpenCode.
|
|
9
9
|
|
|
10
10
|
## Basic Usage
|
|
11
11
|
|
|
@@ -81,7 +81,7 @@ Inside step files, `{args}` is replaced with whatever comes after the colon.
|
|
|
81
81
|
|
|
82
82
|
| Flag | Description |
|
|
83
83
|
|------|-------------|
|
|
84
|
-
| `-m, --model MODEL` | Choose model (e.g., `claude:opus`, `codex`, `gemini`) |
|
|
84
|
+
| `-m, --model MODEL` | Choose model (e.g., `claude:opus`, `codex`, `gemini`, `opencode`) |
|
|
85
85
|
| `-d, --direction DIRECTION` | Apply direction (comma-separated for multiple) |
|
|
86
86
|
|
|
87
87
|
## Output Flags
|
|
@@ -72,7 +72,7 @@ Preserve the current worktree and create a fresh branch.
|
|
|
72
72
|
lf ops next
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
Commits and pushes current changes, optionally rebases, then creates and pushes a timestamped successor branch in the same worktree. If the current PR is already merged, it first resets to the default branch and syncs from origin before creating the next branch.
|
|
76
76
|
|
|
77
77
|
## lf ops commit
|
|
78
78
|
|
|
@@ -45,7 +45,7 @@ Check if the coding agent is stuck on a permission prompt or clarifying question
|
|
|
45
45
|
|
|
46
46
|
**Symptom:** Tasks fail with rate limit errors.
|
|
47
47
|
|
|
48
|
-
Claude, Codex, and
|
|
48
|
+
Claude, Codex, Gemini, and OpenCode have usage limits. Options:
|
|
49
49
|
|
|
50
50
|
- Wait and retry
|
|
51
51
|
- Reduce parallel waves
|
|
@@ -47,7 +47,6 @@ def update_wave(
|
|
|
47
47
|
flow: Optional[str] = None,
|
|
48
48
|
direction: Optional[list[str]] = None,
|
|
49
49
|
area: Optional[list[str]] = None,
|
|
50
|
-
stimulus: Optional[Stimulus] = None,
|
|
51
50
|
status: Optional[str] = None,
|
|
52
51
|
) -> Wave:
|
|
53
52
|
return _client().update_wave(
|
|
@@ -55,7 +54,6 @@ def update_wave(
|
|
|
55
54
|
flow=flow,
|
|
56
55
|
direction=direction,
|
|
57
56
|
area=area,
|
|
58
|
-
stimulus=stimulus,
|
|
59
57
|
status=status,
|
|
60
58
|
)
|
|
61
59
|
|
|
@@ -78,6 +76,18 @@ def run_wave(
|
|
|
78
76
|
)
|
|
79
77
|
|
|
80
78
|
|
|
79
|
+
def add_stimulus(
|
|
80
|
+
name_or_id: str,
|
|
81
|
+
kind: str,
|
|
82
|
+
cron: Optional[str] = None,
|
|
83
|
+
) -> dict[str, Any]:
|
|
84
|
+
return _client().add_stimulus(name_or_id, kind, cron=cron)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def remove_stimulus(name_or_id: str, stimulus_id: str) -> dict[str, Any]:
|
|
88
|
+
return _client().remove_stimulus(name_or_id, stimulus_id)
|
|
89
|
+
|
|
90
|
+
|
|
81
91
|
def stop_wave(name_or_id: str) -> dict[str, Any]:
|
|
82
92
|
return _client().stop_wave(name_or_id)
|
|
83
93
|
|
|
@@ -131,6 +141,8 @@ __all__ = [
|
|
|
131
141
|
"update_wave",
|
|
132
142
|
"delete_wave",
|
|
133
143
|
"run_wave",
|
|
144
|
+
"add_stimulus",
|
|
145
|
+
"remove_stimulus",
|
|
134
146
|
"stop_wave",
|
|
135
147
|
"land_wave",
|
|
136
148
|
"next_wave",
|
|
@@ -7,7 +7,7 @@ from typing import Any, Optional
|
|
|
7
7
|
import httpx
|
|
8
8
|
|
|
9
9
|
from .errors import LoopflowError, WaveAlreadyRunning
|
|
10
|
-
from .models import
|
|
10
|
+
from .models import Wave, WaveRun
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _resolve_base_url() -> str:
|
|
@@ -77,7 +77,6 @@ class Client:
|
|
|
77
77
|
flow: Optional[str] = None,
|
|
78
78
|
direction: Optional[list[str]] = None,
|
|
79
79
|
area: Optional[list[str]] = None,
|
|
80
|
-
stimulus: Optional[Stimulus] = None,
|
|
81
80
|
status: Optional[str] = None,
|
|
82
81
|
) -> Wave:
|
|
83
82
|
body: dict[str, Any] = {}
|
|
@@ -87,8 +86,6 @@ class Client:
|
|
|
87
86
|
body["direction"] = direction
|
|
88
87
|
if area is not None:
|
|
89
88
|
body["area"] = area
|
|
90
|
-
if stimulus is not None:
|
|
91
|
-
body["stimulus"] = stimulus.model_dump(exclude_none=True)
|
|
92
89
|
if status is not None:
|
|
93
90
|
body["status"] = status
|
|
94
91
|
payload = self._request_json("PATCH", f"/v0/waves/{name_or_id}", json=body)
|
|
@@ -113,6 +110,22 @@ class Client:
|
|
|
113
110
|
body["area"] = area
|
|
114
111
|
return self._request_json("POST", f"/v0/waves/{name_or_id}/run", json=body)
|
|
115
112
|
|
|
113
|
+
def add_stimulus(
|
|
114
|
+
self,
|
|
115
|
+
name_or_id: str,
|
|
116
|
+
kind: str,
|
|
117
|
+
cron: Optional[str] = None,
|
|
118
|
+
) -> dict[str, Any]:
|
|
119
|
+
body: dict[str, Any] = {"kind": kind}
|
|
120
|
+
if cron is not None:
|
|
121
|
+
body["cron"] = cron
|
|
122
|
+
return self._request_json("POST", f"/v0/waves/{name_or_id}/stimulus", json=body)
|
|
123
|
+
|
|
124
|
+
def remove_stimulus(self, name_or_id: str, stimulus_id: str) -> dict[str, Any]:
|
|
125
|
+
return self._request_json(
|
|
126
|
+
"DELETE", f"/v0/waves/{name_or_id}/stimulus/{stimulus_id}"
|
|
127
|
+
)
|
|
128
|
+
|
|
116
129
|
def stop_wave(self, name_or_id: str) -> dict[str, Any]:
|
|
117
130
|
return self._request_json("POST", f"/v0/waves/{name_or_id}/stop")
|
|
118
131
|
|
|
@@ -7,6 +7,7 @@ from pydantic import BaseModel, Field
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class Stimulus(BaseModel):
|
|
10
|
+
id: Optional[str] = None
|
|
10
11
|
kind: str
|
|
11
12
|
cron: Optional[str] = None
|
|
12
13
|
|
|
@@ -46,13 +47,14 @@ class Wave(BaseModel):
|
|
|
46
47
|
flow: str
|
|
47
48
|
direction: list[str]
|
|
48
49
|
area: list[str]
|
|
49
|
-
|
|
50
|
+
stimuli: list[Stimulus] = Field(default_factory=list)
|
|
50
51
|
status: str
|
|
51
52
|
iteration: int
|
|
52
53
|
local_worktree: Optional[str] = None
|
|
53
54
|
remote_branch: Optional[str] = None
|
|
54
55
|
commits: list[CommitEntry] = Field(default_factory=list)
|
|
55
56
|
diff_stat: Optional[str] = None
|
|
57
|
+
flow_steps: list[str] = Field(default_factory=list)
|
|
56
58
|
active_run: Optional[WaveRun] = None
|
|
57
59
|
created_at: Optional[datetime] = None
|
|
58
60
|
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"""Shared
|
|
1
|
+
"""Shared test payloads for Python tests."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
import pytest
|
|
6
|
-
|
|
7
|
-
|
|
8
5
|
WAVE_MINIMAL = {
|
|
9
6
|
"id": "abc-123",
|
|
10
7
|
"name": "reduce",
|
|
@@ -18,8 +15,9 @@ WAVE_MINIMAL = {
|
|
|
18
15
|
|
|
19
16
|
WAVE_FULL = {
|
|
20
17
|
**WAVE_MINIMAL,
|
|
21
|
-
"
|
|
18
|
+
"stimuli": [{"id": "stim-1", "kind": "loop"}],
|
|
22
19
|
"created_at": "2026-02-08T01:56:54Z",
|
|
20
|
+
"flow_steps": ["review", "iterate", "ship", "gate"],
|
|
23
21
|
"commits": [
|
|
24
22
|
{"sha": "a1b2c3d", "message": "implement: add retry logic"},
|
|
25
23
|
{"sha": "e4f5g6h", "message": "design: initial sketch"},
|
|
@@ -51,18 +49,3 @@ WAVE_RUN_MINIMAL = {
|
|
|
51
49
|
"local_worktree": "/tmp/wt",
|
|
52
50
|
"remote_branch": "wave/reduce",
|
|
53
51
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@pytest.fixture
|
|
57
|
-
def wave_minimal():
|
|
58
|
-
return WAVE_MINIMAL.copy()
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
@pytest.fixture
|
|
62
|
-
def wave_full():
|
|
63
|
-
return WAVE_FULL.copy()
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
@pytest.fixture
|
|
67
|
-
def wave_run_minimal():
|
|
68
|
-
return WAVE_RUN_MINIMAL.copy()
|