loopflow 0.8.6__tar.gz → 0.9.2__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.9.2/.github/workflows/auto-tag.yml +27 -0
- loopflow-0.9.2/.github/workflows/ci.yml +74 -0
- loopflow-0.9.2/.github/workflows/docker-e2e-nightly.yml +26 -0
- loopflow-0.9.2/.github/workflows/release.yml +228 -0
- loopflow-0.9.2/.gitignore +27 -0
- loopflow-0.9.2/.lf/config.yaml +27 -0
- loopflow-0.9.2/.lf/summary.md +1240 -0
- loopflow-0.9.2/Cargo.lock +3880 -0
- loopflow-0.9.2/PKG-INFO +246 -0
- loopflow-0.9.2/PROMPT_STYLE.md +199 -0
- loopflow-0.9.2/README.md +220 -0
- loopflow-0.9.2/RELEASE_NOTES.md +33 -0
- loopflow-0.9.2/STYLE.md +288 -0
- loopflow-0.9.2/TESTING.md +101 -0
- loopflow-0.9.2/bin/waves-start +11 -0
- loopflow-0.9.2/deploy/Caddyfile +17 -0
- loopflow-0.9.2/deploy/README.md +118 -0
- loopflow-0.9.2/deploy/docker-compose.prod.yml +28 -0
- loopflow-0.9.2/docker/.env.example +24 -0
- loopflow-0.9.2/docker/agent/Dockerfile +12 -0
- loopflow-0.9.2/docker/agent/install-loopflow.sh +130 -0
- loopflow-0.9.2/docker/docker-compose.yml +54 -0
- loopflow-0.9.2/docker/lfd/Dockerfile +26 -0
- loopflow-0.9.2/docs/config.md +414 -0
- loopflow-0.9.2/docs/getting-started.md +139 -0
- loopflow-0.9.2/docs/index.md +240 -0
- loopflow-0.9.2/docs/lf.md +184 -0
- loopflow-0.9.2/docs/lfd.md +309 -0
- loopflow-0.9.2/docs/lfops.md +258 -0
- loopflow-0.9.2/docs/troubleshooting.md +120 -0
- loopflow-0.9.2/docs/waves.md +187 -0
- loopflow-0.9.2/proto/fixtures/requests/create_wave.json +8 -0
- loopflow-0.9.2/proto/fixtures/requests/gather_context.json +25 -0
- loopflow-0.9.2/proto/fixtures/responses/analyze_tokens.json +67 -0
- loopflow-0.9.2/proto/fixtures/responses/create_wave.json +21 -0
- loopflow-0.9.2/proto/fixtures/responses/gather_context.json +50 -0
- loopflow-0.9.2/pyproject.toml +59 -0
- loopflow-0.9.2/python/loopflow/api.py +206 -0
- loopflow-0.9.2/python/loopflow/cli.py +144 -0
- loopflow-0.9.2/python/loopflow/client.py +360 -0
- loopflow-0.9.2/python/loopflow/models.py +89 -0
- loopflow-0.9.2/python/tests/conftest.py +74 -0
- loopflow-0.9.2/python/tests/test_client.py +356 -0
- loopflow-0.9.2/python/tests/test_models.py +92 -0
- loopflow-0.9.2/python/tests/test_remote_smoke_script.py +57 -0
- loopflow-0.9.2/rust/loopflow/Cargo.toml +79 -0
- loopflow-0.9.2/rust/loopflow/build.rs +281 -0
- loopflow-0.9.2/rust/loopflow/src/bin/lf-prompt.rs +76 -0
- loopflow-0.9.2/rust/loopflow/src/bin/lf.rs +284 -0
- loopflow-0.9.2/rust/loopflow/src/bin/lfd.rs +472 -0
- loopflow-0.9.2/rust/loopflow/src/engine/agent.rs +1259 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/LOOPFLOW.md +83 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ceo/focus.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ceo/immediacy.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ceo/truth.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/care.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/clarity.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/scale.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/simplicity.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/creativity/alive.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/creativity/living.md +5 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/creativity/musical.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/observability.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/performance.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/reliability.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/security.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/accessibility.md +10 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/aesthetics.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/affordance.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/consistency.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/dynamics.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/error-prevention.md +9 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/feedback.md +7 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/visibility.md +8 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/README.md +48 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/build.yaml +4 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/grind.yaml +4 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/incident.yaml +3 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/pair.yaml +2 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/ship-roadmap.yaml +5 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/ship-wave.yaml +2 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/ship.yaml +3 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/plan/wave-expand.yaml +7 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/plan/wave-polish.yaml +7 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/plan/wave-reduce.yaml +7 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/scan/scan.yaml +3 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/ops/docker_gen.md +110 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/ops/release_notes.md +42 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/code/ci-fix.md +59 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/code/gate.md +101 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/interactive/design.md +121 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/interactive/review-design.md +73 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/interactive/review.md +77 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/init.md +213 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/lint.md +18 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/rebase.md +59 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/release.md +36 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/split-wave.md +52 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/update-wave.md +39 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/validate.md +52 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/5whys.md +77 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/ingest.md +73 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/iterate.md +22 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/kickoff.md +73 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/wave-plan.md +106 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/scan/scan-plan.md +55 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/scan/scan-report.md +94 -0
- loopflow-0.9.2/rust/loopflow/src/engine/builtins.rs +95 -0
- loopflow-0.9.2/rust/loopflow/src/engine/config.rs +977 -0
- loopflow-0.9.2/rust/loopflow/src/engine/flow.rs +1074 -0
- loopflow-0.9.2/rust/loopflow/src/engine/fork.rs +177 -0
- loopflow-0.9.2/rust/loopflow/src/engine/git.rs +852 -0
- loopflow-0.9.2/rust/loopflow/src/engine/launch.rs +275 -0
- loopflow-0.9.2/rust/loopflow/src/engine/mod.rs +44 -0
- loopflow-0.9.2/rust/loopflow/src/engine/naming.rs +394 -0
- loopflow-0.9.2/rust/loopflow/src/engine/prompt.rs +2825 -0
- loopflow-0.9.2/rust/loopflow/src/engine/skills.rs +258 -0
- loopflow-0.9.2/rust/loopflow/src/engine/worktrees.rs +486 -0
- loopflow-0.9.2/rust/loopflow/src/lf/commands/flow.rs +283 -0
- loopflow-0.9.2/rust/loopflow/src/lf/commands/list.rs +309 -0
- loopflow-0.9.2/rust/loopflow/src/lf/commands/ops/mod.rs +947 -0
- loopflow-0.9.2/rust/loopflow/src/lf/commands/run.rs +317 -0
- loopflow-0.9.2/rust/loopflow/src/lf/discovery.rs +672 -0
- loopflow-0.9.2/rust/loopflow/src/lf/mod.rs +311 -0
- loopflow-0.9.2/rust/loopflow/src/lf/output.rs +257 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/auth.rs +635 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/config.rs +1140 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/events.rs +78 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/image.rs +228 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/io.rs +428 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/mod.rs +652 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/recovery.rs +324 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/tests.rs +673 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/workspace.rs +648 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/helpers.rs +484 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/local.rs +177 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/mod.rs +315 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/fork.rs +361 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/launch.rs +112 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/mod.rs +1404 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/sidecar.rs +169 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/summary.rs +143 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/github.rs +326 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/dto.rs +384 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/mod.rs +495 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/hooks.rs +642 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/mod.rs +612 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/repos.rs +76 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/sessions.rs +388 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/system.rs +209 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/wave_config.rs +63 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/wave_runs.rs +281 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/waves.rs +1280 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/worktrees.rs +70 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/ws.rs +230 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http/state.rs +32 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/http_client.rs +277 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/live_pr.rs +133 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/mod.rs +141 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/output.rs +160 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/queue.rs +804 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/redaction.rs +127 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/registration.rs +368 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/scheduler.rs +205 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/security.rs +276 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/service/compose.rs +350 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/service/linux.rs +260 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/service/macos.rs +308 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/service/mod.rs +93 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/session_token.rs +72 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/claude.rs +275 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/claude_mapping.rs +710 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/codex.rs +419 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/codex_mapping.rs +331 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/common.rs +44 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/conformance_tests.rs +279 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/mod.rs +127 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/opencode.rs +593 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/opencode_mapping.rs +652 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/claude_crash_mid_tool.ndjson +2 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/claude_multi_tool.ndjson +5 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/claude_normal_turn.ndjson +3 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/codex_error.jsonl +3 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/codex_normal_turn.jsonl +5 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/mod.rs +1711 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/opencode_runtime.rs +286 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/sessions/types.rs +274 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/catalog.rs +719 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/005_wave_run_lineage_live_pr_state.sql +77 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/006_wave_schema_provenance.sql +2 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/007_chat_memory_blocks.sql +11 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/008_chat_messages.sql +10 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/009_wave_queue_state.sql +26 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/010_sessions.sql +21 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/011_chords_data_model.sql +206 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/012_drop_wave_schema_columns.sql +2 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/013_remove_chord_tree.sql +71 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/014_rename_provider_to_harness.sql +1 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations.rs +235 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/mod.rs +1964 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/postgres.rs +1327 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/rows.rs +300 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/store/sqlite.rs +1161 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/common.rs +49 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/cron.rs +211 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/loop_ticker.rs +114 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/mod.rs +17 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/queue_reconcile.rs +40 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/recovery.rs +76 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/summary_refresh.rs +95 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/triggers/watch.rs +282 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/types/agent.rs +62 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/types/chat_memory.rs +14 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/types/chat_message.rs +14 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/types/event.rs +327 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/types/mod.rs +24 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/types/stimulus.rs +106 -0
- loopflow-0.9.2/rust/loopflow/src/lfd/types/wave.rs +418 -0
- loopflow-0.9.2/rust/loopflow/src/lib.rs +4 -0
- loopflow-0.9.2/rust/loopflow/src/ops/lint.rs +93 -0
- loopflow-0.9.2/rust/loopflow/src/ops/messages.rs +422 -0
- loopflow-0.9.2/rust/loopflow/src/ops/mod.rs +28 -0
- loopflow-0.9.2/rust/loopflow/src/ops/pr.rs +339 -0
- loopflow-0.9.2/rust/loopflow/src/ops/rebase.rs +111 -0
- loopflow-0.9.2/rust/loopflow/src/ops/release.rs +369 -0
- loopflow-0.9.2/rust/loopflow/tests/agent_tests.rs +178 -0
- loopflow-0.9.2/rust/loopflow/tests/commit_tests.rs +117 -0
- loopflow-0.9.2/rust/loopflow/tests/config_tests.rs +385 -0
- loopflow-0.9.2/rust/loopflow/tests/context_tests.rs +805 -0
- loopflow-0.9.2/rust/loopflow/tests/discovery_tests.rs +149 -0
- loopflow-0.9.2/rust/loopflow/tests/flow_tests.rs +285 -0
- loopflow-0.9.2/rust/loopflow/tests/golden_prompt.rs +100 -0
- loopflow-0.9.2/rust/loopflow/tests/land_tests.rs +163 -0
- loopflow-0.9.2/rust/loopflow/tests/release_tests.rs +116 -0
- loopflow-0.9.2/rust/loopflow/tests/wave_worktree_tests.rs +311 -0
- loopflow-0.9.2/scripts/check_swift_multiplatform_boundaries.py +151 -0
- loopflow-0.9.2/scripts/concerto-dev.py +1079 -0
- loopflow-0.9.2/scripts/install.py +277 -0
- loopflow-0.9.2/scripts/lib/__init__.py +0 -0
- loopflow-0.9.2/scripts/lib/api_harness.py +152 -0
- loopflow-0.9.2/scripts/lib/fork_scenarios.py +410 -0
- loopflow-0.9.2/scripts/lib/lfd_runtime.py +192 -0
- loopflow-0.9.2/scripts/lib/wave_scenarios.py +121 -0
- loopflow-0.9.2/scripts/review_agentapi_convergence.py +65 -0
- loopflow-0.9.2/scripts/test_api_smoke.py +66 -0
- loopflow-0.9.2/scripts/test_fork.py +78 -0
- loopflow-0.9.2/scripts/test_remote_smoke.py +466 -0
- loopflow-0.9.2/scripts/test_session.py +386 -0
- loopflow-0.9.2/swift/Concerto/AppIcon.icns +0 -0
- loopflow-0.9.2/swift/Concerto/ConcertoApp.swift +187 -0
- loopflow-0.9.2/swift/Concerto/Models/PortfolioRepo.swift +24 -0
- loopflow-0.9.2/swift/Concerto/Platform/iOS/ConnectionSetupView.swift +140 -0
- loopflow-0.9.2/swift/Concerto/Platform/iOS/MobileRootView.swift +170 -0
- loopflow-0.9.2/swift/Concerto/Platform/iOS/MobileWaveDetailView.swift +85 -0
- loopflow-0.9.2/swift/Concerto/Platform/iOS/MobileWaveListView.swift +52 -0
- loopflow-0.9.2/swift/Concerto/Platform/iOS/RepoState+iOS.swift +11 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/KeyboardRouter.swift +340 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/ShortcutAction.swift +301 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/ShortcutHelpOverlay.swift +119 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/WindowAccessor.swift +34 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/LocalShellCommandRunner.swift +38 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/RepoState+macOS.swift +16 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/ScriptCommands.swift +29 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/AppIconProvider.swift +96 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/BundledDaemonManager.swift +272 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/CLIInstallManager.swift +116 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/Ghostty/GhosttyManager.swift +257 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/Ghostty/GhosttyTerminalView.swift +606 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/Ghostty/GhosttyTypes.swift +26 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/PortfolioService.swift +64 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/RecentAreasService.swift +41 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/RepoScanner.swift +52 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/SetupService.swift +224 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/SnapshotService.swift +75 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/TerminalLauncher.swift +400 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/AreaTypeahead.swift +208 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/CommandPalette.swift +231 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ConnectionSettingsView.swift +368 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ContentView.swift +368 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/DiagnosticsView.swift +48 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/DirectionTypeahead.swift +171 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/EmbeddedTerminalPanel.swift +139 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/FlowProgressPills.swift +150 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/FlowTypeahead.swift +237 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/InteractiveSessionView.swift +182 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/IterationTimeline.swift +51 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/NextActionsBar.swift +108 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/PortfolioWindow.swift +456 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/RepoWindow.swift +79 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ScreenshotWindow.swift +158 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/SetupView.swift +179 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/StartWaveView.swift +106 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/StepRunner.swift +346 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/TerminalTestWindow.swift +103 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ThemePreview.swift +23 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/TypeaheadComponents.swift +202 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaitingStateCard.swift +143 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveDetailPanel.swift +867 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveRow.swift +218 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveRunsTab.swift +267 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveSidebar.swift +419 -0
- loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WorktreeRow.swift +87 -0
- loopflow-0.9.2/swift/Concerto/State/PortfolioRepoState.swift +139 -0
- loopflow-0.9.2/swift/Concerto/UX_DESIGN.md +116 -0
- loopflow-0.9.2/swift/Concerto/Views/LiveOutput.swift +56 -0
- loopflow-0.9.2/swift/Concerto/Views/WaveChatView.swift +250 -0
- loopflow-0.9.2/swift/ConcertoTests/CLIInstallManagerTests.swift +101 -0
- loopflow-0.9.2/swift/ConcertoTests/ChatStateTests.swift +668 -0
- loopflow-0.9.2/swift/ConcertoTests/ConnectionStoreTests.swift +72 -0
- loopflow-0.9.2/swift/ConcertoTests/FileTokenProviderTests.swift +68 -0
- loopflow-0.9.2/swift/ConcertoTests/KeyboardRouterTests.swift +214 -0
- loopflow-0.9.2/swift/ConcertoTests/PortfolioRepoStateTests.swift +111 -0
- loopflow-0.9.2/swift/ConcertoTests/PortfolioServiceTests.swift +66 -0
- loopflow-0.9.2/swift/ConcertoTests/RepoScannerTests.swift +42 -0
- loopflow-0.9.2/swift/ConcertoTests/RepoStateInteractiveSessionTests.swift +53 -0
- loopflow-0.9.2/swift/ConcertoTests/RunStoreTests.swift +80 -0
- loopflow-0.9.2/swift/ConcertoTests/ServerConnectionTests.swift +77 -0
- loopflow-0.9.2/swift/ConcertoTests/WaveContentParserTests.swift +98 -0
- loopflow-0.9.2/swift/ConcertoTests/WaveRowTests.swift +89 -0
- loopflow-0.9.2/swift/ConcertoTests/WaveStoreTests.swift +425 -0
- loopflow-0.9.2/swift/ConcertoTests/WaveTests.swift +731 -0
- loopflow-0.9.2/swift/LoopflowCore/Design/BrandColors.swift +82 -0
- loopflow-0.9.2/swift/LoopflowCore/Design/DesignSystem.swift +154 -0
- loopflow-0.9.2/swift/LoopflowCore/Models/AgentSession.swift +263 -0
- loopflow-0.9.2/swift/LoopflowCore/Models/ChatMemoryBlock.swift +21 -0
- loopflow-0.9.2/swift/LoopflowCore/Models/ChatTurn.swift +36 -0
- loopflow-0.9.2/swift/LoopflowCore/Models/ServerConnection.swift +194 -0
- loopflow-0.9.2/swift/LoopflowCore/Models/Wave.swift +224 -0
- loopflow-0.9.2/swift/LoopflowCore/Models/WaveContent.swift +37 -0
- loopflow-0.9.2/swift/LoopflowCore/Models/WaveViewModel.swift +222 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/CertificatePinningDelegate.swift +76 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/ConnectionSecretStore.swift +83 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/FileTokenProvider.swift +47 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/LocalEventService.swift +518 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/LocalWaveService.swift +1507 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/LoggingService.swift +84 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/WaveContentParser.swift +159 -0
- loopflow-0.9.2/swift/LoopflowCore/Services/WaveServiceProtocol.swift +45 -0
- loopflow-0.9.2/swift/LoopflowCore/State/ChatState.swift +831 -0
- loopflow-0.9.2/swift/LoopflowCore/State/ConnectionMode.swift +6 -0
- loopflow-0.9.2/swift/LoopflowCore/State/ConnectionStore.swift +273 -0
- loopflow-0.9.2/swift/LoopflowCore/State/OutputBuffer.swift +150 -0
- loopflow-0.9.2/swift/LoopflowCore/State/RepoState.swift +1139 -0
- loopflow-0.9.2/swift/LoopflowCore/State/RunStore.swift +25 -0
- loopflow-0.9.2/swift/LoopflowCore/State/WaveStore.swift +153 -0
- loopflow-0.9.2/swift/LoopflowCore/State/WorktreeStore.swift +24 -0
- loopflow-0.9.2/swift/Package.swift +66 -0
- loopflow-0.9.2/swift/README.md +196 -0
- loopflow-0.9.2/swift/project.yml +91 -0
- loopflow-0.9.2/tests/e2e/conftest.py +28 -0
- loopflow-0.9.2/tests/e2e/test_api_smoke.py +63 -0
- loopflow-0.9.2/tests/e2e/test_api_smoke.sh +4 -0
- loopflow-0.9.2/tests/e2e/test_fork.py +53 -0
- loopflow-0.9.2/tests/e2e/test_smoke.sh +62 -0
- loopflow-0.9.2/tests/goldens/basic.md +196 -0
- loopflow-0.9.2/tests/goldens/builtin_debug.md +234 -0
- loopflow-0.9.2/tests/goldens/builtin_debug.yaml +11 -0
- loopflow-0.9.2/tests/goldens/builtin_implement.md +240 -0
- loopflow-0.9.2/tests/goldens/builtin_implement.yaml +11 -0
- loopflow-0.9.2/tests/goldens/builtin_review.md +267 -0
- loopflow-0.9.2/tests/goldens/builtin_review.yaml +11 -0
- loopflow-0.9.2/tests/goldens/with_direction.md +203 -0
- loopflow-0.9.2/tests/goldens/with_direction_group.md +246 -0
- loopflow-0.9.2/tests/goldens/with_direction_group.yaml +12 -0
- loopflow-0.9.2/tests/goldens/with_lfdocs.md +256 -0
- loopflow-0.9.2/tests/parity/fixtures/with_direction_group/.lf/steps/test.md +1 -0
- loopflow-0.9.2/tests/parity/fixtures/with_lfdocs/wave/rust/MEMORY.md +2 -0
- loopflow-0.9.2/uv.lock +1398 -0
- loopflow-0.9.2/wave/agentapi/02-hardening.md +46 -0
- loopflow-0.9.2/wave/agentapi/README.md +83 -0
- loopflow-0.9.2/wave/chords/02-chord-crud.md +69 -0
- loopflow-0.9.2/wave/chords/03-listen-step.md +51 -0
- loopflow-0.9.2/wave/chords/04-concerto-ui.md +26 -0
- loopflow-0.9.2/wave/chords/README.md +98 -0
- loopflow-0.9.2/wave/infra/00-architecture-report.md +842 -0
- loopflow-0.9.2/wave/infra/03-orchestration-expansion.md +50 -0
- loopflow-0.9.2/wave/infra/04-lfd-direction-aliases.md +63 -0
- loopflow-0.9.2/wave/infra/README.md +79 -0
- loopflow-0.9.2/wave/living/README.md +84 -0
- loopflow-0.9.2/wave/living/living.yaml +6 -0
- loopflow-0.9.2/wave/loop/03-combine-prs-reconciliation.md +166 -0
- loopflow-0.9.2/wave/loop/04-queue-ux-review-artifacts.md +192 -0
- loopflow-0.9.2/wave/loop/README.md +57 -0
- loopflow-0.9.2/wave/mobile/01-multiplatform.md +217 -0
- loopflow-0.9.2/wave/mobile/02-action-buttons.md +188 -0
- loopflow-0.9.2/wave/mobile/03-multi-client.md +76 -0
- loopflow-0.9.2/wave/mobile/04-lfd-discovery.md +162 -0
- loopflow-0.9.2/wave/mobile/README.md +63 -0
- loopflow-0.9.2/wave/mobile/mobile.yaml +5 -0
- loopflow-0.9.2/wave/remote/02-mac-mini-dogfood.md +54 -0
- loopflow-0.9.2/wave/remote/03-fork-executor-cleanup.md +50 -0
- loopflow-0.9.2/wave/remote/04-studio-auth.md +72 -0
- loopflow-0.9.2/wave/remote/05-api-expansion.md +37 -0
- loopflow-0.9.2/wave/remote/06-hosted.md +31 -0
- loopflow-0.9.2/wave/remote/README.md +62 -0
- loopflow-0.8.6/.github/workflows/ci.yml +0 -56
- loopflow-0.8.6/.github/workflows/release.yml +0 -181
- loopflow-0.8.6/.gitignore +0 -26
- loopflow-0.8.6/.lf/config.yaml +0 -23
- loopflow-0.8.6/.lf/summary.md +0 -1240
- loopflow-0.8.6/Cargo.lock +0 -3559
- loopflow-0.8.6/PKG-INFO +0 -240
- loopflow-0.8.6/PROMPT_STYLE.md +0 -197
- loopflow-0.8.6/README.md +0 -214
- loopflow-0.8.6/RELEASE_NOTES.md +0 -9
- loopflow-0.8.6/STYLE.md +0 -318
- loopflow-0.8.6/TESTING.md +0 -74
- loopflow-0.8.6/bin/waves-start +0 -11
- loopflow-0.8.6/deploy/Caddyfile +0 -4
- loopflow-0.8.6/deploy/deploy.sh +0 -27
- loopflow-0.8.6/deploy/docker-compose.prod.yml +0 -25
- loopflow-0.8.6/docker/.env.example +0 -24
- loopflow-0.8.6/docker/agent/Dockerfile +0 -7
- loopflow-0.8.6/docker/agent/install-loopflow.sh +0 -127
- loopflow-0.8.6/docker/docker-compose.yml +0 -55
- loopflow-0.8.6/docker/lfd/Dockerfile +0 -20
- loopflow-0.8.6/docs/config.md +0 -395
- loopflow-0.8.6/docs/getting-started.md +0 -139
- loopflow-0.8.6/docs/index.md +0 -239
- loopflow-0.8.6/docs/lf.md +0 -194
- loopflow-0.8.6/docs/lfd.md +0 -131
- loopflow-0.8.6/docs/lfops.md +0 -248
- loopflow-0.8.6/docs/troubleshooting.md +0 -124
- loopflow-0.8.6/docs/waves.md +0 -169
- loopflow-0.8.6/proto/fixtures/requests/create_wave.json +0 -8
- loopflow-0.8.6/proto/fixtures/requests/gather_context.json +0 -25
- loopflow-0.8.6/proto/fixtures/responses/analyze_tokens.json +0 -67
- loopflow-0.8.6/proto/fixtures/responses/create_wave.json +0 -21
- loopflow-0.8.6/proto/fixtures/responses/gather_context.json +0 -50
- loopflow-0.8.6/pyproject.toml +0 -52
- loopflow-0.8.6/python/loopflow/api.py +0 -151
- loopflow-0.8.6/python/loopflow/cli.py +0 -144
- loopflow-0.8.6/python/loopflow/client.py +0 -242
- loopflow-0.8.6/python/loopflow/models.py +0 -63
- loopflow-0.8.6/python/tests/conftest.py +0 -51
- loopflow-0.8.6/python/tests/test_client.py +0 -191
- loopflow-0.8.6/python/tests/test_models.py +0 -67
- loopflow-0.8.6/rust/loopflow/Cargo.toml +0 -80
- loopflow-0.8.6/rust/loopflow/build.rs +0 -119
- loopflow-0.8.6/rust/loopflow/src/agent/anthropic.rs +0 -133
- loopflow-0.8.6/rust/loopflow/src/agent/context.rs +0 -110
- loopflow-0.8.6/rust/loopflow/src/agent/mod.rs +0 -4
- loopflow-0.8.6/rust/loopflow/src/agent/tools.rs +0 -1181
- loopflow-0.8.6/rust/loopflow/src/agent/turn.rs +0 -307
- loopflow-0.8.6/rust/loopflow/src/bin/lf-agent.rs +0 -80
- loopflow-0.8.6/rust/loopflow/src/bin/lf-prompt.rs +0 -75
- loopflow-0.8.6/rust/loopflow/src/bin/lf.rs +0 -278
- loopflow-0.8.6/rust/loopflow/src/bin/lfd.rs +0 -223
- loopflow-0.8.6/rust/loopflow/src/chat/completion.rs +0 -64
- loopflow-0.8.6/rust/loopflow/src/chat/contract.rs +0 -100
- loopflow-0.8.6/rust/loopflow/src/chat/contract_test.rs +0 -290
- loopflow-0.8.6/rust/loopflow/src/chat/mod.rs +0 -11
- loopflow-0.8.6/rust/loopflow/src/engine/agent.rs +0 -813
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/LOOPFLOW.md +0 -73
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/ceo.md +0 -37
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/designer.md +0 -30
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/infra-engineer.md +0 -24
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/product-engineer.md +0 -30
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/values/craft.md +0 -3
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/values/flow.md +0 -3
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/values/scale.md +0 -3
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/README.md +0 -50
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/grind.yaml +0 -4
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/incident.yaml +0 -3
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/pair.yaml +0 -2
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/ship-wave.yaml +0 -3
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/ship.yaml +0 -4
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/publish.yaml +0 -2
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/research.yaml +0 -3
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/wave-expand.yaml +0 -8
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/wave-polish.yaml +0 -8
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/wave-reduce.yaml +0 -8
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/scan/scan.yaml +0 -3
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/ops/docker_gen.md +0 -107
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/ops/release_notes.md +0 -41
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/code/gate.md +0 -93
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/interactive/design.md +0 -115
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/add-to-wave.md +0 -84
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/consolidate.md +0 -42
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/init.md +0 -213
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/lint.md +0 -46
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/rebase.md +0 -61
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/update-wave.md +0 -50
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/validate.md +0 -52
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/5whys.md +0 -77
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/ingest.md +0 -66
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/iterate.md +0 -22
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/kickoff.md +0 -74
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/wave-plan.md +0 -104
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/scan/cves.md +0 -61
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/scan/deps.md +0 -55
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/scan/upstream.md +0 -57
- loopflow-0.8.6/rust/loopflow/src/engine/builtins/waves/scan.yaml +0 -6
- loopflow-0.8.6/rust/loopflow/src/engine/builtins.rs +0 -76
- loopflow-0.8.6/rust/loopflow/src/engine/config.rs +0 -963
- loopflow-0.8.6/rust/loopflow/src/engine/flow.rs +0 -867
- loopflow-0.8.6/rust/loopflow/src/engine/fork.rs +0 -155
- loopflow-0.8.6/rust/loopflow/src/engine/git.rs +0 -801
- loopflow-0.8.6/rust/loopflow/src/engine/mod.rs +0 -38
- loopflow-0.8.6/rust/loopflow/src/engine/naming.rs +0 -236
- loopflow-0.8.6/rust/loopflow/src/engine/prompt.rs +0 -2429
- loopflow-0.8.6/rust/loopflow/src/engine/worktrees.rs +0 -408
- loopflow-0.8.6/rust/loopflow/src/lf/commands/flow.rs +0 -223
- loopflow-0.8.6/rust/loopflow/src/lf/commands/list.rs +0 -251
- loopflow-0.8.6/rust/loopflow/src/lf/commands/ops/mod.rs +0 -893
- loopflow-0.8.6/rust/loopflow/src/lf/commands/run.rs +0 -318
- loopflow-0.8.6/rust/loopflow/src/lf/discovery.rs +0 -579
- loopflow-0.8.6/rust/loopflow/src/lf/mod.rs +0 -238
- loopflow-0.8.6/rust/loopflow/src/lf/output.rs +0 -240
- loopflow-0.8.6/rust/loopflow/src/lfd/auth.rs +0 -128
- loopflow-0.8.6/rust/loopflow/src/lfd/config.rs +0 -353
- loopflow-0.8.6/rust/loopflow/src/lfd/events.rs +0 -76
- loopflow-0.8.6/rust/loopflow/src/lfd/executor.rs +0 -4043
- loopflow-0.8.6/rust/loopflow/src/lfd/github.rs +0 -194
- loopflow-0.8.6/rust/loopflow/src/lfd/http/dto.rs +0 -291
- loopflow-0.8.6/rust/loopflow/src/lfd/http/mod.rs +0 -131
- loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/hooks.rs +0 -418
- loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/mod.rs +0 -347
- loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/system.rs +0 -110
- loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/wave_runs.rs +0 -189
- loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/waves.rs +0 -1113
- loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/worktrees.rs +0 -65
- loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/ws.rs +0 -140
- loopflow-0.8.6/rust/loopflow/src/lfd/http/state.rs +0 -28
- loopflow-0.8.6/rust/loopflow/src/lfd/mod.rs +0 -113
- loopflow-0.8.6/rust/loopflow/src/lfd/output.rs +0 -108
- loopflow-0.8.6/rust/loopflow/src/lfd/registration.rs +0 -261
- loopflow-0.8.6/rust/loopflow/src/lfd/scheduler.rs +0 -157
- loopflow-0.8.6/rust/loopflow/src/lfd/service/linux.rs +0 -149
- loopflow-0.8.6/rust/loopflow/src/lfd/service/macos.rs +0 -177
- loopflow-0.8.6/rust/loopflow/src/lfd/service/mod.rs +0 -57
- loopflow-0.8.6/rust/loopflow/src/lfd/sessions.rs +0 -104
- loopflow-0.8.6/rust/loopflow/src/lfd/store/migrations.rs +0 -195
- loopflow-0.8.6/rust/loopflow/src/lfd/store/mod.rs +0 -463
- loopflow-0.8.6/rust/loopflow/src/lfd/store/postgres.rs +0 -970
- loopflow-0.8.6/rust/loopflow/src/lfd/store/rows.rs +0 -244
- loopflow-0.8.6/rust/loopflow/src/lfd/store/sqlite.rs +0 -824
- loopflow-0.8.6/rust/loopflow/src/lfd/triggers/common.rs +0 -52
- loopflow-0.8.6/rust/loopflow/src/lfd/triggers/cron.rs +0 -203
- loopflow-0.8.6/rust/loopflow/src/lfd/triggers/loop_ticker.rs +0 -100
- loopflow-0.8.6/rust/loopflow/src/lfd/triggers/mod.rs +0 -15
- loopflow-0.8.6/rust/loopflow/src/lfd/triggers/recovery.rs +0 -74
- loopflow-0.8.6/rust/loopflow/src/lfd/triggers/summary_refresh.rs +0 -95
- loopflow-0.8.6/rust/loopflow/src/lfd/triggers/watch.rs +0 -274
- loopflow-0.8.6/rust/loopflow/src/lfd/types/agent.rs +0 -81
- loopflow-0.8.6/rust/loopflow/src/lfd/types/event.rs +0 -294
- loopflow-0.8.6/rust/loopflow/src/lfd/types/mod.rs +0 -19
- loopflow-0.8.6/rust/loopflow/src/lfd/types/stimulus.rs +0 -91
- loopflow-0.8.6/rust/loopflow/src/lfd/types/wave.rs +0 -224
- loopflow-0.8.6/rust/loopflow/src/lib.rs +0 -6
- loopflow-0.8.6/rust/loopflow/src/ops/lint.rs +0 -141
- loopflow-0.8.6/rust/loopflow/src/ops/messages.rs +0 -268
- loopflow-0.8.6/rust/loopflow/src/ops/mod.rs +0 -26
- loopflow-0.8.6/rust/loopflow/src/ops/pr.rs +0 -352
- loopflow-0.8.6/rust/loopflow/src/ops/rebase.rs +0 -99
- loopflow-0.8.6/rust/loopflow/tests/agent_tests.rs +0 -144
- loopflow-0.8.6/rust/loopflow/tests/commit_tests.rs +0 -120
- loopflow-0.8.6/rust/loopflow/tests/config_tests.rs +0 -381
- loopflow-0.8.6/rust/loopflow/tests/context_tests.rs +0 -718
- loopflow-0.8.6/rust/loopflow/tests/discovery_tests.rs +0 -143
- loopflow-0.8.6/rust/loopflow/tests/flow_tests.rs +0 -269
- loopflow-0.8.6/rust/loopflow/tests/golden_prompt.rs +0 -95
- loopflow-0.8.6/rust/loopflow/tests/land_tests.rs +0 -166
- loopflow-0.8.6/rust/loopflow/tests/wave_worktree_tests.rs +0 -217
- loopflow-0.8.6/scripts/dev.py +0 -444
- loopflow-0.8.6/scripts/publish.py +0 -694
- loopflow-0.8.6/swift/Concerto/AppIcon.icns +0 -0
- loopflow-0.8.6/swift/Concerto/BrandColors.swift +0 -68
- loopflow-0.8.6/swift/Concerto/ConcertoApp.swift +0 -159
- loopflow-0.8.6/swift/Concerto/DesignSystem.swift +0 -174
- loopflow-0.8.6/swift/Concerto/Models/RecentRepo.swift +0 -13
- loopflow-0.8.6/swift/Concerto/ScriptCommands.swift +0 -28
- loopflow-0.8.6/swift/Concerto/Services/AppIconProvider.swift +0 -95
- loopflow-0.8.6/swift/Concerto/Services/Ghostty/GhosttyManager.swift +0 -256
- loopflow-0.8.6/swift/Concerto/Services/Ghostty/GhosttyTerminalView.swift +0 -604
- loopflow-0.8.6/swift/Concerto/Services/Ghostty/GhosttyTypes.swift +0 -25
- loopflow-0.8.6/swift/Concerto/Services/RecentAreasService.swift +0 -40
- loopflow-0.8.6/swift/Concerto/Services/RecentsService.swift +0 -61
- loopflow-0.8.6/swift/Concerto/Services/SetupService.swift +0 -223
- loopflow-0.8.6/swift/Concerto/Services/SnapshotService.swift +0 -74
- loopflow-0.8.6/swift/Concerto/Services/TerminalLauncher.swift +0 -326
- loopflow-0.8.6/swift/Concerto/State/OutputBuffer.swift +0 -130
- loopflow-0.8.6/swift/Concerto/State/RepoState.swift +0 -645
- loopflow-0.8.6/swift/Concerto/State/RunStore.swift +0 -24
- loopflow-0.8.6/swift/Concerto/State/WaveStore.swift +0 -147
- loopflow-0.8.6/swift/Concerto/State/WorktreeStore.swift +0 -23
- loopflow-0.8.6/swift/Concerto/UX_DESIGN.md +0 -115
- loopflow-0.8.6/swift/Concerto/Views/AreaTypeahead.swift +0 -200
- loopflow-0.8.6/swift/Concerto/Views/CommandPalette.swift +0 -226
- loopflow-0.8.6/swift/Concerto/Views/ContentView.swift +0 -119
- loopflow-0.8.6/swift/Concerto/Views/DiagnosticsView.swift +0 -42
- loopflow-0.8.6/swift/Concerto/Views/DirectionTypeahead.swift +0 -170
- loopflow-0.8.6/swift/Concerto/Views/EmbeddedTerminalPanel.swift +0 -137
- loopflow-0.8.6/swift/Concerto/Views/FlowProgressPills.swift +0 -150
- loopflow-0.8.6/swift/Concerto/Views/FlowTypeahead.swift +0 -231
- loopflow-0.8.6/swift/Concerto/Views/InteractiveSessionView.swift +0 -181
- loopflow-0.8.6/swift/Concerto/Views/IterationTimeline.swift +0 -48
- loopflow-0.8.6/swift/Concerto/Views/LiveOutput.swift +0 -56
- loopflow-0.8.6/swift/Concerto/Views/NextActionsBar.swift +0 -107
- loopflow-0.8.6/swift/Concerto/Views/RepoWindow.swift +0 -84
- loopflow-0.8.6/swift/Concerto/Views/ScreenshotWindow.swift +0 -176
- loopflow-0.8.6/swift/Concerto/Views/SetupView.swift +0 -177
- loopflow-0.8.6/swift/Concerto/Views/StartWaveView.swift +0 -80
- loopflow-0.8.6/swift/Concerto/Views/StepRunner.swift +0 -340
- loopflow-0.8.6/swift/Concerto/Views/TerminalTestWindow.swift +0 -100
- loopflow-0.8.6/swift/Concerto/Views/ThemePreview.swift +0 -22
- loopflow-0.8.6/swift/Concerto/Views/TypeaheadComponents.swift +0 -201
- loopflow-0.8.6/swift/Concerto/Views/WaitingStateCard.swift +0 -142
- loopflow-0.8.6/swift/Concerto/Views/WaveDetailPanel.swift +0 -692
- loopflow-0.8.6/swift/Concerto/Views/WaveRow.swift +0 -217
- loopflow-0.8.6/swift/Concerto/Views/WaveRunsTab.swift +0 -265
- loopflow-0.8.6/swift/Concerto/Views/WaveSidebar.swift +0 -340
- loopflow-0.8.6/swift/Concerto/Views/WelcomeWindow.swift +0 -101
- loopflow-0.8.6/swift/Concerto/Views/WorktreeRow.swift +0 -86
- loopflow-0.8.6/swift/ConcertoTests/GhosttyTests.swift +0 -153
- loopflow-0.8.6/swift/ConcertoTests/RunStoreTests.swift +0 -80
- loopflow-0.8.6/swift/ConcertoTests/WaveRowTests.swift +0 -89
- loopflow-0.8.6/swift/ConcertoTests/WaveStoreTests.swift +0 -425
- loopflow-0.8.6/swift/ConcertoTests/WaveTests.swift +0 -731
- loopflow-0.8.6/swift/LoopflowCore/Models/Wave.swift +0 -222
- loopflow-0.8.6/swift/LoopflowCore/Models/WaveViewModel.swift +0 -219
- loopflow-0.8.6/swift/LoopflowCore/Services/LocalEventService.swift +0 -273
- loopflow-0.8.6/swift/LoopflowCore/Services/LocalWaveService.swift +0 -950
- loopflow-0.8.6/swift/LoopflowCore/Services/LoggingService.swift +0 -83
- loopflow-0.8.6/swift/LoopflowCore/Services/WaveServiceProtocol.swift +0 -31
- loopflow-0.8.6/swift/Package.swift +0 -67
- loopflow-0.8.6/swift/README.md +0 -110
- loopflow-0.8.6/swift/SymphoniaTests/SymphoniaTests.swift +0 -11
- loopflow-0.8.6/swift/project.yml +0 -83
- loopflow-0.8.6/tests/e2e/test_smoke.sh +0 -57
- loopflow-0.8.6/tests/goldens/basic.md +0 -186
- loopflow-0.8.6/tests/goldens/with_direction.md +0 -193
- loopflow-0.8.6/tests/goldens/with_lfdocs.md +0 -218
- loopflow-0.8.6/uv.lock +0 -1148
- loopflow-0.8.6/wave/harness/README.md +0 -110
- loopflow-0.8.6/wave/remote/01-sandboxed-agents.md +0 -296
- loopflow-0.8.6/wave/remote/05-concerto-remote.md +0 -178
- loopflow-0.8.6/wave/remote/06-remote-file-access.md +0 -125
- loopflow-0.8.6/wave/remote/07-studio-auth.md +0 -248
- loopflow-0.8.6/wave/remote/08-api-expansion.md +0 -207
- loopflow-0.8.6/wave/remote/09-hosted.md +0 -63
- loopflow-0.8.6/wave/remote/README.md +0 -63
- loopflow-0.8.6/wave/ux/README.md +0 -50
- loopflow-0.8.6/wave/ux/built-in-waves.md +0 -67
- loopflow-0.8.6/wave/ux/wave-specs-launcher.md +0 -70
- {loopflow-0.8.6 → loopflow-0.9.2}/.claude/commands/ux-review.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/.claude/commands/ux-synthesize-concerto.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/.github/workflows/clear-scratch.yml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/.lf/directions/conductor.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/.lf/directions/improviser.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/.lf/directions/listener.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/.lf/env-setup.sh +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/AGENTS.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/CLAUDE.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/Cargo.toml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/VISUAL_DESIGN.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/bin/test-summaries +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/bin/waves-stop +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/_config.yml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-main-uitest.png +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-main.png +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-running-uitest.png +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-running.png +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-waiting-uitest.png +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-waiting.png +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/docs/stubs/lf-context +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/loopflow.code-workspace +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/README.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/VERSIONING.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/output_line.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/scheduler_slot_acquired.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/scheduler_slot_released.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/session_ended.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/session_started.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_activated.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_created.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_started.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_stopped.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_waiting.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/worktree_pruned.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/worktree_updated.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/requests/connect_wave.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/connect_wave.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/error_detail.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/get_health.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/get_status.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/list_worktrees.json +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/loopflow/control/v1/control.proto +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/proto/loopflow/engine/v1/engine.proto +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/python/loopflow/__init__.py +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/python/loopflow/errors.py +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/python/tests/test_cli.py +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/00-overview.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/01-platform.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/02-auth.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/03-conduct-ux.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/04-improvise-ux.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/05-remote-terminal.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/06-data-structures.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/07-ux-experiments.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/08-notifications.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/09-phasing.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/README.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto-vision.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/execution-architecture.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/landscape.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/lfd-reliability.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/rust-lfd.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/target-customer.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/teams-vision.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/terminal-reference.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/viz/README.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/viz/design-audit.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/reports/viz/visual-research.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/RLM.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/flows/code/design-and-ship.yaml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/flows/code/start.yaml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/ops/commit_message.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/ops/pr_message.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/ops/summarize.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/code/compress.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/code/debug.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/code/implement.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/interactive/explore.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/interactive/refine.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/ops/commit.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/ops/synthesize.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/plan/expand.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/plan/polish.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/plan/reduce.md +0 -0
- /loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/review.md → /loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/research.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/clipboard.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/command.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/error.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/event.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/platform.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/stream.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/worktree.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lf/commands/mod.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lf/commands/util.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/credentials.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/http/routes/flows.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/id.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/machine_id.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/obs.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/001_initial.sql +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/002_stimulus_enabled.sql +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/003_agent_container_id.sql +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/004_wave_run_kind.sql +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/triggers/ci_failure.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/types/summary.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/abandon.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/combine.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/commit.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/error.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/land.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/next.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/progress.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/trace.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/util.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/combine_tests.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/git_tests.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/next_tests.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/pr_tests.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/rebase_tests.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/support/mod.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/token_tests.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/worktree_tests.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow-test-support/Cargo.toml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow-test-support/src/lib.rs +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/scripts/dev-lf +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/scripts/generate_screenshots.py +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/scripts/screenshots.yaml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Concerto.sdef +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Flags.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/CormorantGaramond-Medium.otf +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/CormorantGaramond-Regular.otf +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/CormorantGaramond-SemiBold.otf +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/JetBrainsMono-Regular.ttf +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/Lato-Bold.ttf +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/Lato-Regular.ttf +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Info.plist +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Services/Ghostty/README.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/ConcertoTests/AuthServiceTests.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/ConcertoTests/WorktreeStoreTests.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/ConcertoUITests/ScreenshotPipelineTests.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/DESIGN.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Info.plist +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/LoopflowCore.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/AppPreferences.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/AppearanceMode.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/Flow.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/PullRequest.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/StatusColors.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/Step.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/WaveRun.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/WorktreeInfo.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/AuthError.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/AuthService.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/AuthState.swift +0 -0
- {loopflow-0.8.6/swift/Concerto → loopflow-0.9.2/swift/LoopflowCore}/Services/NameGenerator.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/NotificationService.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/TokenProvider.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Package.resolved +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Symphonia/SymphoniaApp.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/swift/Symphonia/Views/PlaceholderView.swift +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/e2e/test_full_cycle.sh +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/e2e/test_rebase_conflict.sh +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/goldens/basic.yaml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/goldens/with_direction.yaml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/goldens/with_lfdocs.yaml +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/basic/.lf/steps/test.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_direction/.lf/directions/thorough.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_direction/.lf/steps/test.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_lfdocs/.lf/steps/test.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_lfdocs/README.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_lfdocs/scratch/design.md +0 -0
- {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_lfdocs/wave/rust/README.md +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: Auto Tag Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths: [RELEASE_NOTES.md]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
tag:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
contents: write
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- name: Extract version and create tag
|
|
16
|
+
run: |
|
|
17
|
+
version=$(head -1 RELEASE_NOTES.md | sed -n 's/^# v\(.*\)/v\1/p')
|
|
18
|
+
if [ -z "$version" ]; then
|
|
19
|
+
echo "No version found in RELEASE_NOTES.md header"
|
|
20
|
+
exit 0
|
|
21
|
+
fi
|
|
22
|
+
if git ls-remote --tags origin "$version" | grep -q .; then
|
|
23
|
+
echo "Tag $version already exists"
|
|
24
|
+
exit 0
|
|
25
|
+
fi
|
|
26
|
+
git tag "$version"
|
|
27
|
+
git push origin "$version"
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
merge_group:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
rust-test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
15
|
+
- name: Run cargo fmt check
|
|
16
|
+
run: cargo fmt --all -- --check
|
|
17
|
+
- name: Run cargo clippy
|
|
18
|
+
run: cargo clippy --all-targets -- -D warnings
|
|
19
|
+
- name: Run Rust tests
|
|
20
|
+
run: cargo test --all
|
|
21
|
+
|
|
22
|
+
python-test:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
- uses: astral-sh/setup-uv@v4
|
|
27
|
+
- name: Run Python tests
|
|
28
|
+
run: uv run pytest python/tests/
|
|
29
|
+
|
|
30
|
+
e2e-smoke:
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
35
|
+
- uses: astral-sh/setup-uv@v4
|
|
36
|
+
- name: Run E2E smoke test
|
|
37
|
+
run: tests/e2e/test_smoke.sh
|
|
38
|
+
- name: Run API smoke test
|
|
39
|
+
run: uv run pytest tests/e2e/test_api_smoke.py -v
|
|
40
|
+
|
|
41
|
+
docker-smoke:
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v4
|
|
45
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
46
|
+
- name: Verify Docker is available
|
|
47
|
+
run: docker version
|
|
48
|
+
- name: Run Docker executor smoke tests
|
|
49
|
+
run: cargo test -p loopflow docker_ -- --nocapture
|
|
50
|
+
|
|
51
|
+
swift-test:
|
|
52
|
+
runs-on: macos-15
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/checkout@v4
|
|
55
|
+
with:
|
|
56
|
+
fetch-depth: 0
|
|
57
|
+
- uses: astral-sh/setup-uv@v4
|
|
58
|
+
- name: Run Swift tests
|
|
59
|
+
run: swift test --package-path swift
|
|
60
|
+
- name: Check Swift multiplatform boundaries
|
|
61
|
+
run: uv run python scripts/check_swift_multiplatform_boundaries.py
|
|
62
|
+
|
|
63
|
+
concerto-ui-test:
|
|
64
|
+
runs-on: macos-15
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@v4
|
|
67
|
+
- name: Install XcodeGen
|
|
68
|
+
run: brew install xcodegen
|
|
69
|
+
- name: Generate Xcode project
|
|
70
|
+
run: xcodegen generate
|
|
71
|
+
working-directory: swift
|
|
72
|
+
- name: Run Concerto UI tests
|
|
73
|
+
run: xcodebuild test -project LoopflowSwift.xcodeproj -scheme Concerto -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO
|
|
74
|
+
working-directory: swift
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: Docker E2E Nightly
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "0 8 * * *"
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
docker-e2e:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
14
|
+
- name: Verify Docker is available
|
|
15
|
+
run: docker version
|
|
16
|
+
- name: Run Docker recovery tests
|
|
17
|
+
run: |
|
|
18
|
+
cargo test -p loopflow docker_startup_rehydrates_running_agents_and_cleans_orphans -- --nocapture
|
|
19
|
+
cargo test -p loopflow docker_startup_lost_agent_does_not_flip_terminal_run_wave_status -- --nocapture
|
|
20
|
+
- name: Run fork hardening tests
|
|
21
|
+
run: |
|
|
22
|
+
cargo test -p loopflow execute_fork_success_cleans_worktrees_and_records -- --nocapture
|
|
23
|
+
cargo test -p loopflow execute_fork_failure_cleans_worktrees_and_releases_slots -- --nocapture
|
|
24
|
+
cargo test -p loopflow execute_fork_merges_directions_and_prefixes_branch_logs -- --nocapture
|
|
25
|
+
- name: Run smoke workflow
|
|
26
|
+
run: tests/e2e/test_smoke.sh
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
# Build native binaries (GitHub Releases, shell installer)
|
|
10
|
+
build-native:
|
|
11
|
+
strategy:
|
|
12
|
+
matrix:
|
|
13
|
+
include:
|
|
14
|
+
- os: macos-latest
|
|
15
|
+
target: aarch64-apple-darwin
|
|
16
|
+
- os: macos-15-intel
|
|
17
|
+
target: x86_64-apple-darwin
|
|
18
|
+
- os: ubuntu-latest
|
|
19
|
+
target: x86_64-unknown-linux-gnu
|
|
20
|
+
- os: ubuntu-24.04-arm
|
|
21
|
+
target: aarch64-unknown-linux-gnu
|
|
22
|
+
runs-on: ${{ matrix.os }}
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
- name: Set version from tag
|
|
26
|
+
run: sed -i.bak 's/^version = "0.0.0"/version = "'"${GITHUB_REF_NAME#v}"'"/' Cargo.toml && rm Cargo.toml.bak
|
|
27
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
28
|
+
with:
|
|
29
|
+
targets: ${{ matrix.target }}
|
|
30
|
+
- name: Build
|
|
31
|
+
run: cargo build --release --target ${{ matrix.target }} -p loopflow
|
|
32
|
+
- name: Package
|
|
33
|
+
run: |
|
|
34
|
+
cd target/${{ matrix.target }}/release
|
|
35
|
+
tar czf ../../../lf-${{ matrix.target }}.tar.gz lf lfd
|
|
36
|
+
- uses: actions/upload-artifact@v4
|
|
37
|
+
with:
|
|
38
|
+
name: native-${{ matrix.target }}
|
|
39
|
+
path: lf-*.tar.gz
|
|
40
|
+
|
|
41
|
+
# Publish to crates.io
|
|
42
|
+
publish-crates:
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v4
|
|
46
|
+
- name: Set version from tag
|
|
47
|
+
run: sed -i.bak 's/^version = "0.0.0"/version = "'"${GITHUB_REF_NAME#v}"'"/' Cargo.toml && rm Cargo.toml.bak
|
|
48
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
49
|
+
- name: Publish to crates.io
|
|
50
|
+
run: cargo publish -p loopflow --allow-dirty
|
|
51
|
+
env:
|
|
52
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
53
|
+
|
|
54
|
+
# Publish pure Python package to PyPI
|
|
55
|
+
publish-pypi:
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
environment: pypi
|
|
58
|
+
permissions:
|
|
59
|
+
id-token: write
|
|
60
|
+
steps:
|
|
61
|
+
- uses: actions/checkout@v4
|
|
62
|
+
with:
|
|
63
|
+
fetch-depth: 0
|
|
64
|
+
- uses: astral-sh/setup-uv@v4
|
|
65
|
+
- name: Build package
|
|
66
|
+
run: uv build
|
|
67
|
+
- name: Publish to PyPI
|
|
68
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
69
|
+
with:
|
|
70
|
+
packages-dir: dist/
|
|
71
|
+
|
|
72
|
+
# Build Concerto DMG and upload to R2
|
|
73
|
+
build-dmg:
|
|
74
|
+
runs-on: macos-latest
|
|
75
|
+
steps:
|
|
76
|
+
- uses: actions/checkout@v4
|
|
77
|
+
- name: Build DMG
|
|
78
|
+
run: python3 scripts/concerto-dev.py release
|
|
79
|
+
working-directory: ${{ github.workspace }}
|
|
80
|
+
- name: Upload DMG to R2
|
|
81
|
+
run: |
|
|
82
|
+
pip3 install boto3
|
|
83
|
+
python3 - <<'SCRIPT'
|
|
84
|
+
import boto3, os
|
|
85
|
+
version = os.environ["GITHUB_REF_NAME"].lstrip("v")
|
|
86
|
+
client = boto3.client(
|
|
87
|
+
"s3",
|
|
88
|
+
endpoint_url=f"https://{os.environ['R2_ACCOUNT_ID']}.r2.cloudflarestorage.com",
|
|
89
|
+
aws_access_key_id=os.environ["R2_ACCESS_KEY_ID"],
|
|
90
|
+
aws_secret_access_key=os.environ["R2_SECRET_ACCESS_KEY"],
|
|
91
|
+
region_name="auto",
|
|
92
|
+
)
|
|
93
|
+
bucket = "loopflow-downloads"
|
|
94
|
+
dmg = "swift/dist/LoopflowConcerto.dmg"
|
|
95
|
+
for key, cache in [
|
|
96
|
+
(f"LoopflowConcerto-{version}.dmg", "public, max-age=31536000, immutable"),
|
|
97
|
+
("LoopflowConcerto-latest.dmg", "public, max-age=60"),
|
|
98
|
+
]:
|
|
99
|
+
client.upload_file(dmg, bucket, key, ExtraArgs={
|
|
100
|
+
"ContentType": "application/x-apple-diskimage",
|
|
101
|
+
"CacheControl": cache,
|
|
102
|
+
})
|
|
103
|
+
print(f"Uploaded {key}")
|
|
104
|
+
SCRIPT
|
|
105
|
+
env:
|
|
106
|
+
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
|
|
107
|
+
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
|
|
108
|
+
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
|
|
109
|
+
- uses: actions/upload-artifact@v4
|
|
110
|
+
with:
|
|
111
|
+
name: dmg
|
|
112
|
+
path: swift/dist/LoopflowConcerto.dmg
|
|
113
|
+
|
|
114
|
+
# Create GitHub Release with native binaries
|
|
115
|
+
release:
|
|
116
|
+
needs: [build-native, build-dmg]
|
|
117
|
+
runs-on: ubuntu-latest
|
|
118
|
+
permissions:
|
|
119
|
+
contents: write
|
|
120
|
+
steps:
|
|
121
|
+
- uses: actions/checkout@v4
|
|
122
|
+
- uses: actions/download-artifact@v4
|
|
123
|
+
with:
|
|
124
|
+
pattern: native-*
|
|
125
|
+
merge-multiple: true
|
|
126
|
+
path: dist/native
|
|
127
|
+
- uses: actions/download-artifact@v4
|
|
128
|
+
with:
|
|
129
|
+
name: dmg
|
|
130
|
+
path: dist/dmg
|
|
131
|
+
- name: Generate shell installer
|
|
132
|
+
run: |
|
|
133
|
+
cat > dist/install.sh << 'INSTALLER'
|
|
134
|
+
#!/bin/sh
|
|
135
|
+
set -eu
|
|
136
|
+
|
|
137
|
+
REPO="loopflowstudio/loopflow"
|
|
138
|
+
DEFAULT_INSTALL_DIR="$HOME/.local/bin"
|
|
139
|
+
|
|
140
|
+
resolve_install_dir() {
|
|
141
|
+
if [ -n "${LF_INSTALL_DIR:-}" ]; then
|
|
142
|
+
echo "$LF_INSTALL_DIR"
|
|
143
|
+
return
|
|
144
|
+
fi
|
|
145
|
+
|
|
146
|
+
if command -v lf >/dev/null 2>&1; then
|
|
147
|
+
lf_path="$(command -v lf)"
|
|
148
|
+
lf_dir="$(dirname "$lf_path")"
|
|
149
|
+
case "$lf_dir" in
|
|
150
|
+
"$HOME/.lf/bin"|"$HOME/.local/bin")
|
|
151
|
+
echo "$lf_dir"
|
|
152
|
+
return
|
|
153
|
+
;;
|
|
154
|
+
esac
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
echo "$DEFAULT_INSTALL_DIR"
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
detect_target() {
|
|
161
|
+
os=$(uname -s)
|
|
162
|
+
arch=$(uname -m)
|
|
163
|
+
case "$os" in
|
|
164
|
+
Darwin)
|
|
165
|
+
case "$arch" in
|
|
166
|
+
arm64|aarch64) echo "aarch64-apple-darwin" ;;
|
|
167
|
+
x86_64) echo "x86_64-apple-darwin" ;;
|
|
168
|
+
*) echo "Unsupported architecture: $arch" >&2; exit 1 ;;
|
|
169
|
+
esac ;;
|
|
170
|
+
Linux)
|
|
171
|
+
case "$arch" in
|
|
172
|
+
aarch64) echo "aarch64-unknown-linux-gnu" ;;
|
|
173
|
+
x86_64) echo "x86_64-unknown-linux-gnu" ;;
|
|
174
|
+
*) echo "Unsupported architecture: $arch" >&2; exit 1 ;;
|
|
175
|
+
esac ;;
|
|
176
|
+
*) echo "Unsupported OS: $os" >&2; exit 1 ;;
|
|
177
|
+
esac
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
main() {
|
|
181
|
+
target=$(detect_target)
|
|
182
|
+
version="${1:-latest}"
|
|
183
|
+
install_dir="$(resolve_install_dir)"
|
|
184
|
+
|
|
185
|
+
if [ "$version" = "latest" ]; then
|
|
186
|
+
url="https://github.com/$REPO/releases/latest/download/lf-$target.tar.gz"
|
|
187
|
+
else
|
|
188
|
+
url="https://github.com/$REPO/releases/download/v$version/lf-$target.tar.gz"
|
|
189
|
+
fi
|
|
190
|
+
|
|
191
|
+
echo "Installing lf ($target)..."
|
|
192
|
+
mkdir -p "$install_dir"
|
|
193
|
+
|
|
194
|
+
tmpdir="$(mktemp -d)"
|
|
195
|
+
cleanup() {
|
|
196
|
+
rm -rf "$tmpdir"
|
|
197
|
+
}
|
|
198
|
+
trap cleanup EXIT INT TERM
|
|
199
|
+
|
|
200
|
+
curl -fsSL "$url" | tar xz -C "$tmpdir"
|
|
201
|
+
|
|
202
|
+
for bin in lf lfd; do
|
|
203
|
+
src="$tmpdir/$bin"
|
|
204
|
+
dst="$install_dir/$bin"
|
|
205
|
+
tmp="$install_dir/.${bin}.tmp.$$"
|
|
206
|
+
cp "$src" "$tmp"
|
|
207
|
+
chmod +x "$tmp"
|
|
208
|
+
mv -f "$tmp" "$dst"
|
|
209
|
+
done
|
|
210
|
+
|
|
211
|
+
echo "Installed to $install_dir/lf"
|
|
212
|
+
|
|
213
|
+
case ":$PATH:" in
|
|
214
|
+
*":$install_dir:"*) ;;
|
|
215
|
+
*) echo "Add to PATH: export PATH=\"$install_dir:\$PATH\"" ;;
|
|
216
|
+
esac
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
main "$@"
|
|
220
|
+
INSTALLER
|
|
221
|
+
- name: Create GitHub Release
|
|
222
|
+
uses: softprops/action-gh-release@v2
|
|
223
|
+
with:
|
|
224
|
+
body_path: RELEASE_NOTES.md
|
|
225
|
+
files: |
|
|
226
|
+
dist/native/*.tar.gz
|
|
227
|
+
dist/dmg/*.dmg
|
|
228
|
+
dist/install.sh
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
.pytest_cache/
|
|
4
|
+
|
|
5
|
+
# Swift
|
|
6
|
+
.build/
|
|
7
|
+
xcuserdata/
|
|
8
|
+
.swiftpm/xcode/
|
|
9
|
+
swift/*.xcodeproj/
|
|
10
|
+
dist/
|
|
11
|
+
swift/dist/
|
|
12
|
+
|
|
13
|
+
# Claude Code (personal state)
|
|
14
|
+
.claude/settings.local.json
|
|
15
|
+
|
|
16
|
+
# Loopflow (generated)
|
|
17
|
+
.lf/log/
|
|
18
|
+
.lf/logs/
|
|
19
|
+
.lf/rlm/
|
|
20
|
+
.lf/summaries/
|
|
21
|
+
*.profraw
|
|
22
|
+
*.actual.md
|
|
23
|
+
.DS_Store
|
|
24
|
+
target/
|
|
25
|
+
|
|
26
|
+
# Environment (secrets)
|
|
27
|
+
.env
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
agent_model: claude:opus
|
|
2
|
+
yolo: true
|
|
3
|
+
chrome: false
|
|
4
|
+
inject_skills: true
|
|
5
|
+
|
|
6
|
+
lint: "cargo fmt --all -- --check && cargo clippy --all-targets -- -D warnings"
|
|
7
|
+
test: "cargo test --all && uv run pytest python/tests/ && swift test --package-path swift && cd swift && xcodegen generate && xcodebuild test -project LoopflowSwift.xcodeproj -scheme Concerto -destination 'platform=macOS' && cd .. && tests/e2e/test_smoke.sh"
|
|
8
|
+
|
|
9
|
+
skill_sources:
|
|
10
|
+
- name: superpowers
|
|
11
|
+
prefix: sp
|
|
12
|
+
path: ~/.superpowers
|
|
13
|
+
exclude:
|
|
14
|
+
- uv.lock
|
|
15
|
+
push: true
|
|
16
|
+
|
|
17
|
+
summary_tokens: 25000
|
|
18
|
+
|
|
19
|
+
summaries:
|
|
20
|
+
- path: .
|
|
21
|
+
model: claude:sonnet
|
|
22
|
+
|
|
23
|
+
branch_names:
|
|
24
|
+
schema: "{user}.{name}.{ts}"
|
|
25
|
+
|
|
26
|
+
internal:
|
|
27
|
+
use_rust: true
|