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.
Files changed (818) hide show
  1. loopflow-0.9.2/.github/workflows/auto-tag.yml +27 -0
  2. loopflow-0.9.2/.github/workflows/ci.yml +74 -0
  3. loopflow-0.9.2/.github/workflows/docker-e2e-nightly.yml +26 -0
  4. loopflow-0.9.2/.github/workflows/release.yml +228 -0
  5. loopflow-0.9.2/.gitignore +27 -0
  6. loopflow-0.9.2/.lf/config.yaml +27 -0
  7. loopflow-0.9.2/.lf/summary.md +1240 -0
  8. loopflow-0.9.2/Cargo.lock +3880 -0
  9. loopflow-0.9.2/PKG-INFO +246 -0
  10. loopflow-0.9.2/PROMPT_STYLE.md +199 -0
  11. loopflow-0.9.2/README.md +220 -0
  12. loopflow-0.9.2/RELEASE_NOTES.md +33 -0
  13. loopflow-0.9.2/STYLE.md +288 -0
  14. loopflow-0.9.2/TESTING.md +101 -0
  15. loopflow-0.9.2/bin/waves-start +11 -0
  16. loopflow-0.9.2/deploy/Caddyfile +17 -0
  17. loopflow-0.9.2/deploy/README.md +118 -0
  18. loopflow-0.9.2/deploy/docker-compose.prod.yml +28 -0
  19. loopflow-0.9.2/docker/.env.example +24 -0
  20. loopflow-0.9.2/docker/agent/Dockerfile +12 -0
  21. loopflow-0.9.2/docker/agent/install-loopflow.sh +130 -0
  22. loopflow-0.9.2/docker/docker-compose.yml +54 -0
  23. loopflow-0.9.2/docker/lfd/Dockerfile +26 -0
  24. loopflow-0.9.2/docs/config.md +414 -0
  25. loopflow-0.9.2/docs/getting-started.md +139 -0
  26. loopflow-0.9.2/docs/index.md +240 -0
  27. loopflow-0.9.2/docs/lf.md +184 -0
  28. loopflow-0.9.2/docs/lfd.md +309 -0
  29. loopflow-0.9.2/docs/lfops.md +258 -0
  30. loopflow-0.9.2/docs/troubleshooting.md +120 -0
  31. loopflow-0.9.2/docs/waves.md +187 -0
  32. loopflow-0.9.2/proto/fixtures/requests/create_wave.json +8 -0
  33. loopflow-0.9.2/proto/fixtures/requests/gather_context.json +25 -0
  34. loopflow-0.9.2/proto/fixtures/responses/analyze_tokens.json +67 -0
  35. loopflow-0.9.2/proto/fixtures/responses/create_wave.json +21 -0
  36. loopflow-0.9.2/proto/fixtures/responses/gather_context.json +50 -0
  37. loopflow-0.9.2/pyproject.toml +59 -0
  38. loopflow-0.9.2/python/loopflow/api.py +206 -0
  39. loopflow-0.9.2/python/loopflow/cli.py +144 -0
  40. loopflow-0.9.2/python/loopflow/client.py +360 -0
  41. loopflow-0.9.2/python/loopflow/models.py +89 -0
  42. loopflow-0.9.2/python/tests/conftest.py +74 -0
  43. loopflow-0.9.2/python/tests/test_client.py +356 -0
  44. loopflow-0.9.2/python/tests/test_models.py +92 -0
  45. loopflow-0.9.2/python/tests/test_remote_smoke_script.py +57 -0
  46. loopflow-0.9.2/rust/loopflow/Cargo.toml +79 -0
  47. loopflow-0.9.2/rust/loopflow/build.rs +281 -0
  48. loopflow-0.9.2/rust/loopflow/src/bin/lf-prompt.rs +76 -0
  49. loopflow-0.9.2/rust/loopflow/src/bin/lf.rs +284 -0
  50. loopflow-0.9.2/rust/loopflow/src/bin/lfd.rs +472 -0
  51. loopflow-0.9.2/rust/loopflow/src/engine/agent.rs +1259 -0
  52. loopflow-0.9.2/rust/loopflow/src/engine/builtins/LOOPFLOW.md +83 -0
  53. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ceo/focus.md +9 -0
  54. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ceo/immediacy.md +8 -0
  55. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ceo/truth.md +9 -0
  56. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/care.md +9 -0
  57. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/clarity.md +8 -0
  58. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/scale.md +8 -0
  59. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/craft/simplicity.md +8 -0
  60. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/creativity/alive.md +9 -0
  61. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/creativity/living.md +5 -0
  62. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/creativity/musical.md +8 -0
  63. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/observability.md +9 -0
  64. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/performance.md +8 -0
  65. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/reliability.md +9 -0
  66. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/infra/security.md +9 -0
  67. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/accessibility.md +10 -0
  68. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/aesthetics.md +9 -0
  69. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/affordance.md +8 -0
  70. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/consistency.md +8 -0
  71. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/dynamics.md +9 -0
  72. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/error-prevention.md +9 -0
  73. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/feedback.md +7 -0
  74. loopflow-0.9.2/rust/loopflow/src/engine/builtins/directions/ux/visibility.md +8 -0
  75. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/README.md +48 -0
  76. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/build.yaml +4 -0
  77. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/grind.yaml +4 -0
  78. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/incident.yaml +3 -0
  79. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/pair.yaml +2 -0
  80. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/ship-roadmap.yaml +5 -0
  81. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/ship-wave.yaml +2 -0
  82. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/code/ship.yaml +3 -0
  83. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/plan/wave-expand.yaml +7 -0
  84. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/plan/wave-polish.yaml +7 -0
  85. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/plan/wave-reduce.yaml +7 -0
  86. loopflow-0.9.2/rust/loopflow/src/engine/builtins/flows/scan/scan.yaml +3 -0
  87. loopflow-0.9.2/rust/loopflow/src/engine/builtins/ops/docker_gen.md +110 -0
  88. loopflow-0.9.2/rust/loopflow/src/engine/builtins/ops/release_notes.md +42 -0
  89. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/code/ci-fix.md +59 -0
  90. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/code/gate.md +101 -0
  91. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/interactive/design.md +121 -0
  92. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/interactive/review-design.md +73 -0
  93. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/interactive/review.md +77 -0
  94. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/init.md +213 -0
  95. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/lint.md +18 -0
  96. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/rebase.md +59 -0
  97. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/release.md +36 -0
  98. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/split-wave.md +52 -0
  99. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/update-wave.md +39 -0
  100. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/ops/validate.md +52 -0
  101. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/5whys.md +77 -0
  102. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/ingest.md +73 -0
  103. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/iterate.md +22 -0
  104. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/kickoff.md +73 -0
  105. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/plan/wave-plan.md +106 -0
  106. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/scan/scan-plan.md +55 -0
  107. loopflow-0.9.2/rust/loopflow/src/engine/builtins/steps/scan/scan-report.md +94 -0
  108. loopflow-0.9.2/rust/loopflow/src/engine/builtins.rs +95 -0
  109. loopflow-0.9.2/rust/loopflow/src/engine/config.rs +977 -0
  110. loopflow-0.9.2/rust/loopflow/src/engine/flow.rs +1074 -0
  111. loopflow-0.9.2/rust/loopflow/src/engine/fork.rs +177 -0
  112. loopflow-0.9.2/rust/loopflow/src/engine/git.rs +852 -0
  113. loopflow-0.9.2/rust/loopflow/src/engine/launch.rs +275 -0
  114. loopflow-0.9.2/rust/loopflow/src/engine/mod.rs +44 -0
  115. loopflow-0.9.2/rust/loopflow/src/engine/naming.rs +394 -0
  116. loopflow-0.9.2/rust/loopflow/src/engine/prompt.rs +2825 -0
  117. loopflow-0.9.2/rust/loopflow/src/engine/skills.rs +258 -0
  118. loopflow-0.9.2/rust/loopflow/src/engine/worktrees.rs +486 -0
  119. loopflow-0.9.2/rust/loopflow/src/lf/commands/flow.rs +283 -0
  120. loopflow-0.9.2/rust/loopflow/src/lf/commands/list.rs +309 -0
  121. loopflow-0.9.2/rust/loopflow/src/lf/commands/ops/mod.rs +947 -0
  122. loopflow-0.9.2/rust/loopflow/src/lf/commands/run.rs +317 -0
  123. loopflow-0.9.2/rust/loopflow/src/lf/discovery.rs +672 -0
  124. loopflow-0.9.2/rust/loopflow/src/lf/mod.rs +311 -0
  125. loopflow-0.9.2/rust/loopflow/src/lf/output.rs +257 -0
  126. loopflow-0.9.2/rust/loopflow/src/lfd/auth.rs +635 -0
  127. loopflow-0.9.2/rust/loopflow/src/lfd/config.rs +1140 -0
  128. loopflow-0.9.2/rust/loopflow/src/lfd/events.rs +78 -0
  129. loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/image.rs +228 -0
  130. loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/io.rs +428 -0
  131. loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/mod.rs +652 -0
  132. loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/recovery.rs +324 -0
  133. loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/tests.rs +673 -0
  134. loopflow-0.9.2/rust/loopflow/src/lfd/executor/docker/workspace.rs +648 -0
  135. loopflow-0.9.2/rust/loopflow/src/lfd/executor/helpers.rs +484 -0
  136. loopflow-0.9.2/rust/loopflow/src/lfd/executor/local.rs +177 -0
  137. loopflow-0.9.2/rust/loopflow/src/lfd/executor/mod.rs +315 -0
  138. loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/fork.rs +361 -0
  139. loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/launch.rs +112 -0
  140. loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/mod.rs +1404 -0
  141. loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/sidecar.rs +169 -0
  142. loopflow-0.9.2/rust/loopflow/src/lfd/executor/wave/summary.rs +143 -0
  143. loopflow-0.9.2/rust/loopflow/src/lfd/github.rs +326 -0
  144. loopflow-0.9.2/rust/loopflow/src/lfd/http/dto.rs +384 -0
  145. loopflow-0.9.2/rust/loopflow/src/lfd/http/mod.rs +495 -0
  146. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/hooks.rs +642 -0
  147. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/mod.rs +612 -0
  148. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/repos.rs +76 -0
  149. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/sessions.rs +388 -0
  150. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/system.rs +209 -0
  151. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/wave_config.rs +63 -0
  152. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/wave_runs.rs +281 -0
  153. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/waves.rs +1280 -0
  154. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/worktrees.rs +70 -0
  155. loopflow-0.9.2/rust/loopflow/src/lfd/http/routes/ws.rs +230 -0
  156. loopflow-0.9.2/rust/loopflow/src/lfd/http/state.rs +32 -0
  157. loopflow-0.9.2/rust/loopflow/src/lfd/http_client.rs +277 -0
  158. loopflow-0.9.2/rust/loopflow/src/lfd/live_pr.rs +133 -0
  159. loopflow-0.9.2/rust/loopflow/src/lfd/mod.rs +141 -0
  160. loopflow-0.9.2/rust/loopflow/src/lfd/output.rs +160 -0
  161. loopflow-0.9.2/rust/loopflow/src/lfd/queue.rs +804 -0
  162. loopflow-0.9.2/rust/loopflow/src/lfd/redaction.rs +127 -0
  163. loopflow-0.9.2/rust/loopflow/src/lfd/registration.rs +368 -0
  164. loopflow-0.9.2/rust/loopflow/src/lfd/scheduler.rs +205 -0
  165. loopflow-0.9.2/rust/loopflow/src/lfd/security.rs +276 -0
  166. loopflow-0.9.2/rust/loopflow/src/lfd/service/compose.rs +350 -0
  167. loopflow-0.9.2/rust/loopflow/src/lfd/service/linux.rs +260 -0
  168. loopflow-0.9.2/rust/loopflow/src/lfd/service/macos.rs +308 -0
  169. loopflow-0.9.2/rust/loopflow/src/lfd/service/mod.rs +93 -0
  170. loopflow-0.9.2/rust/loopflow/src/lfd/session_token.rs +72 -0
  171. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/claude.rs +275 -0
  172. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/claude_mapping.rs +710 -0
  173. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/codex.rs +419 -0
  174. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/codex_mapping.rs +331 -0
  175. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/common.rs +44 -0
  176. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/conformance_tests.rs +279 -0
  177. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/mod.rs +127 -0
  178. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/opencode.rs +593 -0
  179. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/opencode_mapping.rs +652 -0
  180. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/claude_crash_mid_tool.ndjson +2 -0
  181. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/claude_multi_tool.ndjson +5 -0
  182. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/claude_normal_turn.ndjson +3 -0
  183. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/codex_error.jsonl +3 -0
  184. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/harness/testdata/codex_normal_turn.jsonl +5 -0
  185. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/mod.rs +1711 -0
  186. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/opencode_runtime.rs +286 -0
  187. loopflow-0.9.2/rust/loopflow/src/lfd/sessions/types.rs +274 -0
  188. loopflow-0.9.2/rust/loopflow/src/lfd/store/catalog.rs +719 -0
  189. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/005_wave_run_lineage_live_pr_state.sql +77 -0
  190. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/006_wave_schema_provenance.sql +2 -0
  191. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/007_chat_memory_blocks.sql +11 -0
  192. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/008_chat_messages.sql +10 -0
  193. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/009_wave_queue_state.sql +26 -0
  194. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/010_sessions.sql +21 -0
  195. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/011_chords_data_model.sql +206 -0
  196. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/012_drop_wave_schema_columns.sql +2 -0
  197. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/013_remove_chord_tree.sql +71 -0
  198. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations/014_rename_provider_to_harness.sql +1 -0
  199. loopflow-0.9.2/rust/loopflow/src/lfd/store/migrations.rs +235 -0
  200. loopflow-0.9.2/rust/loopflow/src/lfd/store/mod.rs +1964 -0
  201. loopflow-0.9.2/rust/loopflow/src/lfd/store/postgres.rs +1327 -0
  202. loopflow-0.9.2/rust/loopflow/src/lfd/store/rows.rs +300 -0
  203. loopflow-0.9.2/rust/loopflow/src/lfd/store/sqlite.rs +1161 -0
  204. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/common.rs +49 -0
  205. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/cron.rs +211 -0
  206. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/loop_ticker.rs +114 -0
  207. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/mod.rs +17 -0
  208. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/queue_reconcile.rs +40 -0
  209. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/recovery.rs +76 -0
  210. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/summary_refresh.rs +95 -0
  211. loopflow-0.9.2/rust/loopflow/src/lfd/triggers/watch.rs +282 -0
  212. loopflow-0.9.2/rust/loopflow/src/lfd/types/agent.rs +62 -0
  213. loopflow-0.9.2/rust/loopflow/src/lfd/types/chat_memory.rs +14 -0
  214. loopflow-0.9.2/rust/loopflow/src/lfd/types/chat_message.rs +14 -0
  215. loopflow-0.9.2/rust/loopflow/src/lfd/types/event.rs +327 -0
  216. loopflow-0.9.2/rust/loopflow/src/lfd/types/mod.rs +24 -0
  217. loopflow-0.9.2/rust/loopflow/src/lfd/types/stimulus.rs +106 -0
  218. loopflow-0.9.2/rust/loopflow/src/lfd/types/wave.rs +418 -0
  219. loopflow-0.9.2/rust/loopflow/src/lib.rs +4 -0
  220. loopflow-0.9.2/rust/loopflow/src/ops/lint.rs +93 -0
  221. loopflow-0.9.2/rust/loopflow/src/ops/messages.rs +422 -0
  222. loopflow-0.9.2/rust/loopflow/src/ops/mod.rs +28 -0
  223. loopflow-0.9.2/rust/loopflow/src/ops/pr.rs +339 -0
  224. loopflow-0.9.2/rust/loopflow/src/ops/rebase.rs +111 -0
  225. loopflow-0.9.2/rust/loopflow/src/ops/release.rs +369 -0
  226. loopflow-0.9.2/rust/loopflow/tests/agent_tests.rs +178 -0
  227. loopflow-0.9.2/rust/loopflow/tests/commit_tests.rs +117 -0
  228. loopflow-0.9.2/rust/loopflow/tests/config_tests.rs +385 -0
  229. loopflow-0.9.2/rust/loopflow/tests/context_tests.rs +805 -0
  230. loopflow-0.9.2/rust/loopflow/tests/discovery_tests.rs +149 -0
  231. loopflow-0.9.2/rust/loopflow/tests/flow_tests.rs +285 -0
  232. loopflow-0.9.2/rust/loopflow/tests/golden_prompt.rs +100 -0
  233. loopflow-0.9.2/rust/loopflow/tests/land_tests.rs +163 -0
  234. loopflow-0.9.2/rust/loopflow/tests/release_tests.rs +116 -0
  235. loopflow-0.9.2/rust/loopflow/tests/wave_worktree_tests.rs +311 -0
  236. loopflow-0.9.2/scripts/check_swift_multiplatform_boundaries.py +151 -0
  237. loopflow-0.9.2/scripts/concerto-dev.py +1079 -0
  238. loopflow-0.9.2/scripts/install.py +277 -0
  239. loopflow-0.9.2/scripts/lib/__init__.py +0 -0
  240. loopflow-0.9.2/scripts/lib/api_harness.py +152 -0
  241. loopflow-0.9.2/scripts/lib/fork_scenarios.py +410 -0
  242. loopflow-0.9.2/scripts/lib/lfd_runtime.py +192 -0
  243. loopflow-0.9.2/scripts/lib/wave_scenarios.py +121 -0
  244. loopflow-0.9.2/scripts/review_agentapi_convergence.py +65 -0
  245. loopflow-0.9.2/scripts/test_api_smoke.py +66 -0
  246. loopflow-0.9.2/scripts/test_fork.py +78 -0
  247. loopflow-0.9.2/scripts/test_remote_smoke.py +466 -0
  248. loopflow-0.9.2/scripts/test_session.py +386 -0
  249. loopflow-0.9.2/swift/Concerto/AppIcon.icns +0 -0
  250. loopflow-0.9.2/swift/Concerto/ConcertoApp.swift +187 -0
  251. loopflow-0.9.2/swift/Concerto/Models/PortfolioRepo.swift +24 -0
  252. loopflow-0.9.2/swift/Concerto/Platform/iOS/ConnectionSetupView.swift +140 -0
  253. loopflow-0.9.2/swift/Concerto/Platform/iOS/MobileRootView.swift +170 -0
  254. loopflow-0.9.2/swift/Concerto/Platform/iOS/MobileWaveDetailView.swift +85 -0
  255. loopflow-0.9.2/swift/Concerto/Platform/iOS/MobileWaveListView.swift +52 -0
  256. loopflow-0.9.2/swift/Concerto/Platform/iOS/RepoState+iOS.swift +11 -0
  257. loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/KeyboardRouter.swift +340 -0
  258. loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/ShortcutAction.swift +301 -0
  259. loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/ShortcutHelpOverlay.swift +119 -0
  260. loopflow-0.9.2/swift/Concerto/Platform/macOS/Keyboard/WindowAccessor.swift +34 -0
  261. loopflow-0.9.2/swift/Concerto/Platform/macOS/LocalShellCommandRunner.swift +38 -0
  262. loopflow-0.9.2/swift/Concerto/Platform/macOS/RepoState+macOS.swift +16 -0
  263. loopflow-0.9.2/swift/Concerto/Platform/macOS/ScriptCommands.swift +29 -0
  264. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/AppIconProvider.swift +96 -0
  265. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/BundledDaemonManager.swift +272 -0
  266. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/CLIInstallManager.swift +116 -0
  267. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/Ghostty/GhosttyManager.swift +257 -0
  268. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/Ghostty/GhosttyTerminalView.swift +606 -0
  269. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/Ghostty/GhosttyTypes.swift +26 -0
  270. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/PortfolioService.swift +64 -0
  271. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/RecentAreasService.swift +41 -0
  272. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/RepoScanner.swift +52 -0
  273. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/SetupService.swift +224 -0
  274. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/SnapshotService.swift +75 -0
  275. loopflow-0.9.2/swift/Concerto/Platform/macOS/Services/TerminalLauncher.swift +400 -0
  276. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/AreaTypeahead.swift +208 -0
  277. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/CommandPalette.swift +231 -0
  278. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ConnectionSettingsView.swift +368 -0
  279. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ContentView.swift +368 -0
  280. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/DiagnosticsView.swift +48 -0
  281. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/DirectionTypeahead.swift +171 -0
  282. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/EmbeddedTerminalPanel.swift +139 -0
  283. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/FlowProgressPills.swift +150 -0
  284. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/FlowTypeahead.swift +237 -0
  285. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/InteractiveSessionView.swift +182 -0
  286. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/IterationTimeline.swift +51 -0
  287. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/NextActionsBar.swift +108 -0
  288. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/PortfolioWindow.swift +456 -0
  289. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/RepoWindow.swift +79 -0
  290. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ScreenshotWindow.swift +158 -0
  291. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/SetupView.swift +179 -0
  292. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/StartWaveView.swift +106 -0
  293. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/StepRunner.swift +346 -0
  294. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/TerminalTestWindow.swift +103 -0
  295. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/ThemePreview.swift +23 -0
  296. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/TypeaheadComponents.swift +202 -0
  297. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaitingStateCard.swift +143 -0
  298. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveDetailPanel.swift +867 -0
  299. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveRow.swift +218 -0
  300. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveRunsTab.swift +267 -0
  301. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WaveSidebar.swift +419 -0
  302. loopflow-0.9.2/swift/Concerto/Platform/macOS/Views/WorktreeRow.swift +87 -0
  303. loopflow-0.9.2/swift/Concerto/State/PortfolioRepoState.swift +139 -0
  304. loopflow-0.9.2/swift/Concerto/UX_DESIGN.md +116 -0
  305. loopflow-0.9.2/swift/Concerto/Views/LiveOutput.swift +56 -0
  306. loopflow-0.9.2/swift/Concerto/Views/WaveChatView.swift +250 -0
  307. loopflow-0.9.2/swift/ConcertoTests/CLIInstallManagerTests.swift +101 -0
  308. loopflow-0.9.2/swift/ConcertoTests/ChatStateTests.swift +668 -0
  309. loopflow-0.9.2/swift/ConcertoTests/ConnectionStoreTests.swift +72 -0
  310. loopflow-0.9.2/swift/ConcertoTests/FileTokenProviderTests.swift +68 -0
  311. loopflow-0.9.2/swift/ConcertoTests/KeyboardRouterTests.swift +214 -0
  312. loopflow-0.9.2/swift/ConcertoTests/PortfolioRepoStateTests.swift +111 -0
  313. loopflow-0.9.2/swift/ConcertoTests/PortfolioServiceTests.swift +66 -0
  314. loopflow-0.9.2/swift/ConcertoTests/RepoScannerTests.swift +42 -0
  315. loopflow-0.9.2/swift/ConcertoTests/RepoStateInteractiveSessionTests.swift +53 -0
  316. loopflow-0.9.2/swift/ConcertoTests/RunStoreTests.swift +80 -0
  317. loopflow-0.9.2/swift/ConcertoTests/ServerConnectionTests.swift +77 -0
  318. loopflow-0.9.2/swift/ConcertoTests/WaveContentParserTests.swift +98 -0
  319. loopflow-0.9.2/swift/ConcertoTests/WaveRowTests.swift +89 -0
  320. loopflow-0.9.2/swift/ConcertoTests/WaveStoreTests.swift +425 -0
  321. loopflow-0.9.2/swift/ConcertoTests/WaveTests.swift +731 -0
  322. loopflow-0.9.2/swift/LoopflowCore/Design/BrandColors.swift +82 -0
  323. loopflow-0.9.2/swift/LoopflowCore/Design/DesignSystem.swift +154 -0
  324. loopflow-0.9.2/swift/LoopflowCore/Models/AgentSession.swift +263 -0
  325. loopflow-0.9.2/swift/LoopflowCore/Models/ChatMemoryBlock.swift +21 -0
  326. loopflow-0.9.2/swift/LoopflowCore/Models/ChatTurn.swift +36 -0
  327. loopflow-0.9.2/swift/LoopflowCore/Models/ServerConnection.swift +194 -0
  328. loopflow-0.9.2/swift/LoopflowCore/Models/Wave.swift +224 -0
  329. loopflow-0.9.2/swift/LoopflowCore/Models/WaveContent.swift +37 -0
  330. loopflow-0.9.2/swift/LoopflowCore/Models/WaveViewModel.swift +222 -0
  331. loopflow-0.9.2/swift/LoopflowCore/Services/CertificatePinningDelegate.swift +76 -0
  332. loopflow-0.9.2/swift/LoopflowCore/Services/ConnectionSecretStore.swift +83 -0
  333. loopflow-0.9.2/swift/LoopflowCore/Services/FileTokenProvider.swift +47 -0
  334. loopflow-0.9.2/swift/LoopflowCore/Services/LocalEventService.swift +518 -0
  335. loopflow-0.9.2/swift/LoopflowCore/Services/LocalWaveService.swift +1507 -0
  336. loopflow-0.9.2/swift/LoopflowCore/Services/LoggingService.swift +84 -0
  337. loopflow-0.9.2/swift/LoopflowCore/Services/WaveContentParser.swift +159 -0
  338. loopflow-0.9.2/swift/LoopflowCore/Services/WaveServiceProtocol.swift +45 -0
  339. loopflow-0.9.2/swift/LoopflowCore/State/ChatState.swift +831 -0
  340. loopflow-0.9.2/swift/LoopflowCore/State/ConnectionMode.swift +6 -0
  341. loopflow-0.9.2/swift/LoopflowCore/State/ConnectionStore.swift +273 -0
  342. loopflow-0.9.2/swift/LoopflowCore/State/OutputBuffer.swift +150 -0
  343. loopflow-0.9.2/swift/LoopflowCore/State/RepoState.swift +1139 -0
  344. loopflow-0.9.2/swift/LoopflowCore/State/RunStore.swift +25 -0
  345. loopflow-0.9.2/swift/LoopflowCore/State/WaveStore.swift +153 -0
  346. loopflow-0.9.2/swift/LoopflowCore/State/WorktreeStore.swift +24 -0
  347. loopflow-0.9.2/swift/Package.swift +66 -0
  348. loopflow-0.9.2/swift/README.md +196 -0
  349. loopflow-0.9.2/swift/project.yml +91 -0
  350. loopflow-0.9.2/tests/e2e/conftest.py +28 -0
  351. loopflow-0.9.2/tests/e2e/test_api_smoke.py +63 -0
  352. loopflow-0.9.2/tests/e2e/test_api_smoke.sh +4 -0
  353. loopflow-0.9.2/tests/e2e/test_fork.py +53 -0
  354. loopflow-0.9.2/tests/e2e/test_smoke.sh +62 -0
  355. loopflow-0.9.2/tests/goldens/basic.md +196 -0
  356. loopflow-0.9.2/tests/goldens/builtin_debug.md +234 -0
  357. loopflow-0.9.2/tests/goldens/builtin_debug.yaml +11 -0
  358. loopflow-0.9.2/tests/goldens/builtin_implement.md +240 -0
  359. loopflow-0.9.2/tests/goldens/builtin_implement.yaml +11 -0
  360. loopflow-0.9.2/tests/goldens/builtin_review.md +267 -0
  361. loopflow-0.9.2/tests/goldens/builtin_review.yaml +11 -0
  362. loopflow-0.9.2/tests/goldens/with_direction.md +203 -0
  363. loopflow-0.9.2/tests/goldens/with_direction_group.md +246 -0
  364. loopflow-0.9.2/tests/goldens/with_direction_group.yaml +12 -0
  365. loopflow-0.9.2/tests/goldens/with_lfdocs.md +256 -0
  366. loopflow-0.9.2/tests/parity/fixtures/with_direction_group/.lf/steps/test.md +1 -0
  367. loopflow-0.9.2/tests/parity/fixtures/with_lfdocs/wave/rust/MEMORY.md +2 -0
  368. loopflow-0.9.2/uv.lock +1398 -0
  369. loopflow-0.9.2/wave/agentapi/02-hardening.md +46 -0
  370. loopflow-0.9.2/wave/agentapi/README.md +83 -0
  371. loopflow-0.9.2/wave/chords/02-chord-crud.md +69 -0
  372. loopflow-0.9.2/wave/chords/03-listen-step.md +51 -0
  373. loopflow-0.9.2/wave/chords/04-concerto-ui.md +26 -0
  374. loopflow-0.9.2/wave/chords/README.md +98 -0
  375. loopflow-0.9.2/wave/infra/00-architecture-report.md +842 -0
  376. loopflow-0.9.2/wave/infra/03-orchestration-expansion.md +50 -0
  377. loopflow-0.9.2/wave/infra/04-lfd-direction-aliases.md +63 -0
  378. loopflow-0.9.2/wave/infra/README.md +79 -0
  379. loopflow-0.9.2/wave/living/README.md +84 -0
  380. loopflow-0.9.2/wave/living/living.yaml +6 -0
  381. loopflow-0.9.2/wave/loop/03-combine-prs-reconciliation.md +166 -0
  382. loopflow-0.9.2/wave/loop/04-queue-ux-review-artifacts.md +192 -0
  383. loopflow-0.9.2/wave/loop/README.md +57 -0
  384. loopflow-0.9.2/wave/mobile/01-multiplatform.md +217 -0
  385. loopflow-0.9.2/wave/mobile/02-action-buttons.md +188 -0
  386. loopflow-0.9.2/wave/mobile/03-multi-client.md +76 -0
  387. loopflow-0.9.2/wave/mobile/04-lfd-discovery.md +162 -0
  388. loopflow-0.9.2/wave/mobile/README.md +63 -0
  389. loopflow-0.9.2/wave/mobile/mobile.yaml +5 -0
  390. loopflow-0.9.2/wave/remote/02-mac-mini-dogfood.md +54 -0
  391. loopflow-0.9.2/wave/remote/03-fork-executor-cleanup.md +50 -0
  392. loopflow-0.9.2/wave/remote/04-studio-auth.md +72 -0
  393. loopflow-0.9.2/wave/remote/05-api-expansion.md +37 -0
  394. loopflow-0.9.2/wave/remote/06-hosted.md +31 -0
  395. loopflow-0.9.2/wave/remote/README.md +62 -0
  396. loopflow-0.8.6/.github/workflows/ci.yml +0 -56
  397. loopflow-0.8.6/.github/workflows/release.yml +0 -181
  398. loopflow-0.8.6/.gitignore +0 -26
  399. loopflow-0.8.6/.lf/config.yaml +0 -23
  400. loopflow-0.8.6/.lf/summary.md +0 -1240
  401. loopflow-0.8.6/Cargo.lock +0 -3559
  402. loopflow-0.8.6/PKG-INFO +0 -240
  403. loopflow-0.8.6/PROMPT_STYLE.md +0 -197
  404. loopflow-0.8.6/README.md +0 -214
  405. loopflow-0.8.6/RELEASE_NOTES.md +0 -9
  406. loopflow-0.8.6/STYLE.md +0 -318
  407. loopflow-0.8.6/TESTING.md +0 -74
  408. loopflow-0.8.6/bin/waves-start +0 -11
  409. loopflow-0.8.6/deploy/Caddyfile +0 -4
  410. loopflow-0.8.6/deploy/deploy.sh +0 -27
  411. loopflow-0.8.6/deploy/docker-compose.prod.yml +0 -25
  412. loopflow-0.8.6/docker/.env.example +0 -24
  413. loopflow-0.8.6/docker/agent/Dockerfile +0 -7
  414. loopflow-0.8.6/docker/agent/install-loopflow.sh +0 -127
  415. loopflow-0.8.6/docker/docker-compose.yml +0 -55
  416. loopflow-0.8.6/docker/lfd/Dockerfile +0 -20
  417. loopflow-0.8.6/docs/config.md +0 -395
  418. loopflow-0.8.6/docs/getting-started.md +0 -139
  419. loopflow-0.8.6/docs/index.md +0 -239
  420. loopflow-0.8.6/docs/lf.md +0 -194
  421. loopflow-0.8.6/docs/lfd.md +0 -131
  422. loopflow-0.8.6/docs/lfops.md +0 -248
  423. loopflow-0.8.6/docs/troubleshooting.md +0 -124
  424. loopflow-0.8.6/docs/waves.md +0 -169
  425. loopflow-0.8.6/proto/fixtures/requests/create_wave.json +0 -8
  426. loopflow-0.8.6/proto/fixtures/requests/gather_context.json +0 -25
  427. loopflow-0.8.6/proto/fixtures/responses/analyze_tokens.json +0 -67
  428. loopflow-0.8.6/proto/fixtures/responses/create_wave.json +0 -21
  429. loopflow-0.8.6/proto/fixtures/responses/gather_context.json +0 -50
  430. loopflow-0.8.6/pyproject.toml +0 -52
  431. loopflow-0.8.6/python/loopflow/api.py +0 -151
  432. loopflow-0.8.6/python/loopflow/cli.py +0 -144
  433. loopflow-0.8.6/python/loopflow/client.py +0 -242
  434. loopflow-0.8.6/python/loopflow/models.py +0 -63
  435. loopflow-0.8.6/python/tests/conftest.py +0 -51
  436. loopflow-0.8.6/python/tests/test_client.py +0 -191
  437. loopflow-0.8.6/python/tests/test_models.py +0 -67
  438. loopflow-0.8.6/rust/loopflow/Cargo.toml +0 -80
  439. loopflow-0.8.6/rust/loopflow/build.rs +0 -119
  440. loopflow-0.8.6/rust/loopflow/src/agent/anthropic.rs +0 -133
  441. loopflow-0.8.6/rust/loopflow/src/agent/context.rs +0 -110
  442. loopflow-0.8.6/rust/loopflow/src/agent/mod.rs +0 -4
  443. loopflow-0.8.6/rust/loopflow/src/agent/tools.rs +0 -1181
  444. loopflow-0.8.6/rust/loopflow/src/agent/turn.rs +0 -307
  445. loopflow-0.8.6/rust/loopflow/src/bin/lf-agent.rs +0 -80
  446. loopflow-0.8.6/rust/loopflow/src/bin/lf-prompt.rs +0 -75
  447. loopflow-0.8.6/rust/loopflow/src/bin/lf.rs +0 -278
  448. loopflow-0.8.6/rust/loopflow/src/bin/lfd.rs +0 -223
  449. loopflow-0.8.6/rust/loopflow/src/chat/completion.rs +0 -64
  450. loopflow-0.8.6/rust/loopflow/src/chat/contract.rs +0 -100
  451. loopflow-0.8.6/rust/loopflow/src/chat/contract_test.rs +0 -290
  452. loopflow-0.8.6/rust/loopflow/src/chat/mod.rs +0 -11
  453. loopflow-0.8.6/rust/loopflow/src/engine/agent.rs +0 -813
  454. loopflow-0.8.6/rust/loopflow/src/engine/builtins/LOOPFLOW.md +0 -73
  455. loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/ceo.md +0 -37
  456. loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/designer.md +0 -30
  457. loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/infra-engineer.md +0 -24
  458. loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/roles/product-engineer.md +0 -30
  459. loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/values/craft.md +0 -3
  460. loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/values/flow.md +0 -3
  461. loopflow-0.8.6/rust/loopflow/src/engine/builtins/directions/values/scale.md +0 -3
  462. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/README.md +0 -50
  463. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/grind.yaml +0 -4
  464. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/incident.yaml +0 -3
  465. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/pair.yaml +0 -2
  466. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/ship-wave.yaml +0 -3
  467. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/code/ship.yaml +0 -4
  468. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/publish.yaml +0 -2
  469. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/research.yaml +0 -3
  470. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/wave-expand.yaml +0 -8
  471. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/wave-polish.yaml +0 -8
  472. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/plan/wave-reduce.yaml +0 -8
  473. loopflow-0.8.6/rust/loopflow/src/engine/builtins/flows/scan/scan.yaml +0 -3
  474. loopflow-0.8.6/rust/loopflow/src/engine/builtins/ops/docker_gen.md +0 -107
  475. loopflow-0.8.6/rust/loopflow/src/engine/builtins/ops/release_notes.md +0 -41
  476. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/code/gate.md +0 -93
  477. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/interactive/design.md +0 -115
  478. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/add-to-wave.md +0 -84
  479. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/consolidate.md +0 -42
  480. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/init.md +0 -213
  481. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/lint.md +0 -46
  482. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/rebase.md +0 -61
  483. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/update-wave.md +0 -50
  484. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/ops/validate.md +0 -52
  485. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/5whys.md +0 -77
  486. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/ingest.md +0 -66
  487. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/iterate.md +0 -22
  488. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/kickoff.md +0 -74
  489. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/plan/wave-plan.md +0 -104
  490. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/scan/cves.md +0 -61
  491. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/scan/deps.md +0 -55
  492. loopflow-0.8.6/rust/loopflow/src/engine/builtins/steps/scan/upstream.md +0 -57
  493. loopflow-0.8.6/rust/loopflow/src/engine/builtins/waves/scan.yaml +0 -6
  494. loopflow-0.8.6/rust/loopflow/src/engine/builtins.rs +0 -76
  495. loopflow-0.8.6/rust/loopflow/src/engine/config.rs +0 -963
  496. loopflow-0.8.6/rust/loopflow/src/engine/flow.rs +0 -867
  497. loopflow-0.8.6/rust/loopflow/src/engine/fork.rs +0 -155
  498. loopflow-0.8.6/rust/loopflow/src/engine/git.rs +0 -801
  499. loopflow-0.8.6/rust/loopflow/src/engine/mod.rs +0 -38
  500. loopflow-0.8.6/rust/loopflow/src/engine/naming.rs +0 -236
  501. loopflow-0.8.6/rust/loopflow/src/engine/prompt.rs +0 -2429
  502. loopflow-0.8.6/rust/loopflow/src/engine/worktrees.rs +0 -408
  503. loopflow-0.8.6/rust/loopflow/src/lf/commands/flow.rs +0 -223
  504. loopflow-0.8.6/rust/loopflow/src/lf/commands/list.rs +0 -251
  505. loopflow-0.8.6/rust/loopflow/src/lf/commands/ops/mod.rs +0 -893
  506. loopflow-0.8.6/rust/loopflow/src/lf/commands/run.rs +0 -318
  507. loopflow-0.8.6/rust/loopflow/src/lf/discovery.rs +0 -579
  508. loopflow-0.8.6/rust/loopflow/src/lf/mod.rs +0 -238
  509. loopflow-0.8.6/rust/loopflow/src/lf/output.rs +0 -240
  510. loopflow-0.8.6/rust/loopflow/src/lfd/auth.rs +0 -128
  511. loopflow-0.8.6/rust/loopflow/src/lfd/config.rs +0 -353
  512. loopflow-0.8.6/rust/loopflow/src/lfd/events.rs +0 -76
  513. loopflow-0.8.6/rust/loopflow/src/lfd/executor.rs +0 -4043
  514. loopflow-0.8.6/rust/loopflow/src/lfd/github.rs +0 -194
  515. loopflow-0.8.6/rust/loopflow/src/lfd/http/dto.rs +0 -291
  516. loopflow-0.8.6/rust/loopflow/src/lfd/http/mod.rs +0 -131
  517. loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/hooks.rs +0 -418
  518. loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/mod.rs +0 -347
  519. loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/system.rs +0 -110
  520. loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/wave_runs.rs +0 -189
  521. loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/waves.rs +0 -1113
  522. loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/worktrees.rs +0 -65
  523. loopflow-0.8.6/rust/loopflow/src/lfd/http/routes/ws.rs +0 -140
  524. loopflow-0.8.6/rust/loopflow/src/lfd/http/state.rs +0 -28
  525. loopflow-0.8.6/rust/loopflow/src/lfd/mod.rs +0 -113
  526. loopflow-0.8.6/rust/loopflow/src/lfd/output.rs +0 -108
  527. loopflow-0.8.6/rust/loopflow/src/lfd/registration.rs +0 -261
  528. loopflow-0.8.6/rust/loopflow/src/lfd/scheduler.rs +0 -157
  529. loopflow-0.8.6/rust/loopflow/src/lfd/service/linux.rs +0 -149
  530. loopflow-0.8.6/rust/loopflow/src/lfd/service/macos.rs +0 -177
  531. loopflow-0.8.6/rust/loopflow/src/lfd/service/mod.rs +0 -57
  532. loopflow-0.8.6/rust/loopflow/src/lfd/sessions.rs +0 -104
  533. loopflow-0.8.6/rust/loopflow/src/lfd/store/migrations.rs +0 -195
  534. loopflow-0.8.6/rust/loopflow/src/lfd/store/mod.rs +0 -463
  535. loopflow-0.8.6/rust/loopflow/src/lfd/store/postgres.rs +0 -970
  536. loopflow-0.8.6/rust/loopflow/src/lfd/store/rows.rs +0 -244
  537. loopflow-0.8.6/rust/loopflow/src/lfd/store/sqlite.rs +0 -824
  538. loopflow-0.8.6/rust/loopflow/src/lfd/triggers/common.rs +0 -52
  539. loopflow-0.8.6/rust/loopflow/src/lfd/triggers/cron.rs +0 -203
  540. loopflow-0.8.6/rust/loopflow/src/lfd/triggers/loop_ticker.rs +0 -100
  541. loopflow-0.8.6/rust/loopflow/src/lfd/triggers/mod.rs +0 -15
  542. loopflow-0.8.6/rust/loopflow/src/lfd/triggers/recovery.rs +0 -74
  543. loopflow-0.8.6/rust/loopflow/src/lfd/triggers/summary_refresh.rs +0 -95
  544. loopflow-0.8.6/rust/loopflow/src/lfd/triggers/watch.rs +0 -274
  545. loopflow-0.8.6/rust/loopflow/src/lfd/types/agent.rs +0 -81
  546. loopflow-0.8.6/rust/loopflow/src/lfd/types/event.rs +0 -294
  547. loopflow-0.8.6/rust/loopflow/src/lfd/types/mod.rs +0 -19
  548. loopflow-0.8.6/rust/loopflow/src/lfd/types/stimulus.rs +0 -91
  549. loopflow-0.8.6/rust/loopflow/src/lfd/types/wave.rs +0 -224
  550. loopflow-0.8.6/rust/loopflow/src/lib.rs +0 -6
  551. loopflow-0.8.6/rust/loopflow/src/ops/lint.rs +0 -141
  552. loopflow-0.8.6/rust/loopflow/src/ops/messages.rs +0 -268
  553. loopflow-0.8.6/rust/loopflow/src/ops/mod.rs +0 -26
  554. loopflow-0.8.6/rust/loopflow/src/ops/pr.rs +0 -352
  555. loopflow-0.8.6/rust/loopflow/src/ops/rebase.rs +0 -99
  556. loopflow-0.8.6/rust/loopflow/tests/agent_tests.rs +0 -144
  557. loopflow-0.8.6/rust/loopflow/tests/commit_tests.rs +0 -120
  558. loopflow-0.8.6/rust/loopflow/tests/config_tests.rs +0 -381
  559. loopflow-0.8.6/rust/loopflow/tests/context_tests.rs +0 -718
  560. loopflow-0.8.6/rust/loopflow/tests/discovery_tests.rs +0 -143
  561. loopflow-0.8.6/rust/loopflow/tests/flow_tests.rs +0 -269
  562. loopflow-0.8.6/rust/loopflow/tests/golden_prompt.rs +0 -95
  563. loopflow-0.8.6/rust/loopflow/tests/land_tests.rs +0 -166
  564. loopflow-0.8.6/rust/loopflow/tests/wave_worktree_tests.rs +0 -217
  565. loopflow-0.8.6/scripts/dev.py +0 -444
  566. loopflow-0.8.6/scripts/publish.py +0 -694
  567. loopflow-0.8.6/swift/Concerto/AppIcon.icns +0 -0
  568. loopflow-0.8.6/swift/Concerto/BrandColors.swift +0 -68
  569. loopflow-0.8.6/swift/Concerto/ConcertoApp.swift +0 -159
  570. loopflow-0.8.6/swift/Concerto/DesignSystem.swift +0 -174
  571. loopflow-0.8.6/swift/Concerto/Models/RecentRepo.swift +0 -13
  572. loopflow-0.8.6/swift/Concerto/ScriptCommands.swift +0 -28
  573. loopflow-0.8.6/swift/Concerto/Services/AppIconProvider.swift +0 -95
  574. loopflow-0.8.6/swift/Concerto/Services/Ghostty/GhosttyManager.swift +0 -256
  575. loopflow-0.8.6/swift/Concerto/Services/Ghostty/GhosttyTerminalView.swift +0 -604
  576. loopflow-0.8.6/swift/Concerto/Services/Ghostty/GhosttyTypes.swift +0 -25
  577. loopflow-0.8.6/swift/Concerto/Services/RecentAreasService.swift +0 -40
  578. loopflow-0.8.6/swift/Concerto/Services/RecentsService.swift +0 -61
  579. loopflow-0.8.6/swift/Concerto/Services/SetupService.swift +0 -223
  580. loopflow-0.8.6/swift/Concerto/Services/SnapshotService.swift +0 -74
  581. loopflow-0.8.6/swift/Concerto/Services/TerminalLauncher.swift +0 -326
  582. loopflow-0.8.6/swift/Concerto/State/OutputBuffer.swift +0 -130
  583. loopflow-0.8.6/swift/Concerto/State/RepoState.swift +0 -645
  584. loopflow-0.8.6/swift/Concerto/State/RunStore.swift +0 -24
  585. loopflow-0.8.6/swift/Concerto/State/WaveStore.swift +0 -147
  586. loopflow-0.8.6/swift/Concerto/State/WorktreeStore.swift +0 -23
  587. loopflow-0.8.6/swift/Concerto/UX_DESIGN.md +0 -115
  588. loopflow-0.8.6/swift/Concerto/Views/AreaTypeahead.swift +0 -200
  589. loopflow-0.8.6/swift/Concerto/Views/CommandPalette.swift +0 -226
  590. loopflow-0.8.6/swift/Concerto/Views/ContentView.swift +0 -119
  591. loopflow-0.8.6/swift/Concerto/Views/DiagnosticsView.swift +0 -42
  592. loopflow-0.8.6/swift/Concerto/Views/DirectionTypeahead.swift +0 -170
  593. loopflow-0.8.6/swift/Concerto/Views/EmbeddedTerminalPanel.swift +0 -137
  594. loopflow-0.8.6/swift/Concerto/Views/FlowProgressPills.swift +0 -150
  595. loopflow-0.8.6/swift/Concerto/Views/FlowTypeahead.swift +0 -231
  596. loopflow-0.8.6/swift/Concerto/Views/InteractiveSessionView.swift +0 -181
  597. loopflow-0.8.6/swift/Concerto/Views/IterationTimeline.swift +0 -48
  598. loopflow-0.8.6/swift/Concerto/Views/LiveOutput.swift +0 -56
  599. loopflow-0.8.6/swift/Concerto/Views/NextActionsBar.swift +0 -107
  600. loopflow-0.8.6/swift/Concerto/Views/RepoWindow.swift +0 -84
  601. loopflow-0.8.6/swift/Concerto/Views/ScreenshotWindow.swift +0 -176
  602. loopflow-0.8.6/swift/Concerto/Views/SetupView.swift +0 -177
  603. loopflow-0.8.6/swift/Concerto/Views/StartWaveView.swift +0 -80
  604. loopflow-0.8.6/swift/Concerto/Views/StepRunner.swift +0 -340
  605. loopflow-0.8.6/swift/Concerto/Views/TerminalTestWindow.swift +0 -100
  606. loopflow-0.8.6/swift/Concerto/Views/ThemePreview.swift +0 -22
  607. loopflow-0.8.6/swift/Concerto/Views/TypeaheadComponents.swift +0 -201
  608. loopflow-0.8.6/swift/Concerto/Views/WaitingStateCard.swift +0 -142
  609. loopflow-0.8.6/swift/Concerto/Views/WaveDetailPanel.swift +0 -692
  610. loopflow-0.8.6/swift/Concerto/Views/WaveRow.swift +0 -217
  611. loopflow-0.8.6/swift/Concerto/Views/WaveRunsTab.swift +0 -265
  612. loopflow-0.8.6/swift/Concerto/Views/WaveSidebar.swift +0 -340
  613. loopflow-0.8.6/swift/Concerto/Views/WelcomeWindow.swift +0 -101
  614. loopflow-0.8.6/swift/Concerto/Views/WorktreeRow.swift +0 -86
  615. loopflow-0.8.6/swift/ConcertoTests/GhosttyTests.swift +0 -153
  616. loopflow-0.8.6/swift/ConcertoTests/RunStoreTests.swift +0 -80
  617. loopflow-0.8.6/swift/ConcertoTests/WaveRowTests.swift +0 -89
  618. loopflow-0.8.6/swift/ConcertoTests/WaveStoreTests.swift +0 -425
  619. loopflow-0.8.6/swift/ConcertoTests/WaveTests.swift +0 -731
  620. loopflow-0.8.6/swift/LoopflowCore/Models/Wave.swift +0 -222
  621. loopflow-0.8.6/swift/LoopflowCore/Models/WaveViewModel.swift +0 -219
  622. loopflow-0.8.6/swift/LoopflowCore/Services/LocalEventService.swift +0 -273
  623. loopflow-0.8.6/swift/LoopflowCore/Services/LocalWaveService.swift +0 -950
  624. loopflow-0.8.6/swift/LoopflowCore/Services/LoggingService.swift +0 -83
  625. loopflow-0.8.6/swift/LoopflowCore/Services/WaveServiceProtocol.swift +0 -31
  626. loopflow-0.8.6/swift/Package.swift +0 -67
  627. loopflow-0.8.6/swift/README.md +0 -110
  628. loopflow-0.8.6/swift/SymphoniaTests/SymphoniaTests.swift +0 -11
  629. loopflow-0.8.6/swift/project.yml +0 -83
  630. loopflow-0.8.6/tests/e2e/test_smoke.sh +0 -57
  631. loopflow-0.8.6/tests/goldens/basic.md +0 -186
  632. loopflow-0.8.6/tests/goldens/with_direction.md +0 -193
  633. loopflow-0.8.6/tests/goldens/with_lfdocs.md +0 -218
  634. loopflow-0.8.6/uv.lock +0 -1148
  635. loopflow-0.8.6/wave/harness/README.md +0 -110
  636. loopflow-0.8.6/wave/remote/01-sandboxed-agents.md +0 -296
  637. loopflow-0.8.6/wave/remote/05-concerto-remote.md +0 -178
  638. loopflow-0.8.6/wave/remote/06-remote-file-access.md +0 -125
  639. loopflow-0.8.6/wave/remote/07-studio-auth.md +0 -248
  640. loopflow-0.8.6/wave/remote/08-api-expansion.md +0 -207
  641. loopflow-0.8.6/wave/remote/09-hosted.md +0 -63
  642. loopflow-0.8.6/wave/remote/README.md +0 -63
  643. loopflow-0.8.6/wave/ux/README.md +0 -50
  644. loopflow-0.8.6/wave/ux/built-in-waves.md +0 -67
  645. loopflow-0.8.6/wave/ux/wave-specs-launcher.md +0 -70
  646. {loopflow-0.8.6 → loopflow-0.9.2}/.claude/commands/ux-review.md +0 -0
  647. {loopflow-0.8.6 → loopflow-0.9.2}/.claude/commands/ux-synthesize-concerto.md +0 -0
  648. {loopflow-0.8.6 → loopflow-0.9.2}/.github/workflows/clear-scratch.yml +0 -0
  649. {loopflow-0.8.6 → loopflow-0.9.2}/.lf/directions/conductor.md +0 -0
  650. {loopflow-0.8.6 → loopflow-0.9.2}/.lf/directions/improviser.md +0 -0
  651. {loopflow-0.8.6 → loopflow-0.9.2}/.lf/directions/listener.md +0 -0
  652. {loopflow-0.8.6 → loopflow-0.9.2}/.lf/env-setup.sh +0 -0
  653. {loopflow-0.8.6 → loopflow-0.9.2}/AGENTS.md +0 -0
  654. {loopflow-0.8.6 → loopflow-0.9.2}/CLAUDE.md +0 -0
  655. {loopflow-0.8.6 → loopflow-0.9.2}/Cargo.toml +0 -0
  656. {loopflow-0.8.6 → loopflow-0.9.2}/VISUAL_DESIGN.md +0 -0
  657. {loopflow-0.8.6 → loopflow-0.9.2}/bin/test-summaries +0 -0
  658. {loopflow-0.8.6 → loopflow-0.9.2}/bin/waves-stop +0 -0
  659. {loopflow-0.8.6 → loopflow-0.9.2}/docs/_config.yml +0 -0
  660. {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-main-uitest.png +0 -0
  661. {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-main.png +0 -0
  662. {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-running-uitest.png +0 -0
  663. {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-running.png +0 -0
  664. {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-waiting-uitest.png +0 -0
  665. {loopflow-0.8.6 → loopflow-0.9.2}/docs/screenshots/concerto-wave-waiting.png +0 -0
  666. {loopflow-0.8.6 → loopflow-0.9.2}/docs/stubs/lf-context +0 -0
  667. {loopflow-0.8.6 → loopflow-0.9.2}/loopflow.code-workspace +0 -0
  668. {loopflow-0.8.6 → loopflow-0.9.2}/proto/README.md +0 -0
  669. {loopflow-0.8.6 → loopflow-0.9.2}/proto/VERSIONING.md +0 -0
  670. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/output_line.json +0 -0
  671. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/scheduler_slot_acquired.json +0 -0
  672. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/scheduler_slot_released.json +0 -0
  673. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/session_ended.json +0 -0
  674. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/session_started.json +0 -0
  675. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_activated.json +0 -0
  676. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_created.json +0 -0
  677. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_started.json +0 -0
  678. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_stopped.json +0 -0
  679. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/wave_waiting.json +0 -0
  680. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/worktree_pruned.json +0 -0
  681. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/events/worktree_updated.json +0 -0
  682. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/requests/connect_wave.json +0 -0
  683. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/connect_wave.json +0 -0
  684. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/error_detail.json +0 -0
  685. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/get_health.json +0 -0
  686. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/get_status.json +0 -0
  687. {loopflow-0.8.6 → loopflow-0.9.2}/proto/fixtures/responses/list_worktrees.json +0 -0
  688. {loopflow-0.8.6 → loopflow-0.9.2}/proto/loopflow/control/v1/control.proto +0 -0
  689. {loopflow-0.8.6 → loopflow-0.9.2}/proto/loopflow/engine/v1/engine.proto +0 -0
  690. {loopflow-0.8.6 → loopflow-0.9.2}/python/loopflow/__init__.py +0 -0
  691. {loopflow-0.8.6 → loopflow-0.9.2}/python/loopflow/errors.py +0 -0
  692. {loopflow-0.8.6 → loopflow-0.9.2}/python/tests/test_cli.py +0 -0
  693. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/00-overview.md +0 -0
  694. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/01-platform.md +0 -0
  695. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/02-auth.md +0 -0
  696. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/03-conduct-ux.md +0 -0
  697. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/04-improvise-ux.md +0 -0
  698. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/05-remote-terminal.md +0 -0
  699. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/06-data-structures.md +0 -0
  700. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/07-ux-experiments.md +0 -0
  701. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/08-notifications.md +0 -0
  702. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/09-phasing.md +0 -0
  703. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto/README.md +0 -0
  704. {loopflow-0.8.6 → loopflow-0.9.2}/reports/concerto-vision.md +0 -0
  705. {loopflow-0.8.6 → loopflow-0.9.2}/reports/execution-architecture.md +0 -0
  706. {loopflow-0.8.6 → loopflow-0.9.2}/reports/landscape.md +0 -0
  707. {loopflow-0.8.6 → loopflow-0.9.2}/reports/lfd-reliability.md +0 -0
  708. {loopflow-0.8.6 → loopflow-0.9.2}/reports/rust-lfd.md +0 -0
  709. {loopflow-0.8.6 → loopflow-0.9.2}/reports/target-customer.md +0 -0
  710. {loopflow-0.8.6 → loopflow-0.9.2}/reports/teams-vision.md +0 -0
  711. {loopflow-0.8.6 → loopflow-0.9.2}/reports/terminal-reference.md +0 -0
  712. {loopflow-0.8.6 → loopflow-0.9.2}/reports/viz/README.md +0 -0
  713. {loopflow-0.8.6 → loopflow-0.9.2}/reports/viz/design-audit.md +0 -0
  714. {loopflow-0.8.6 → loopflow-0.9.2}/reports/viz/visual-research.md +0 -0
  715. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/RLM.md +0 -0
  716. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/flows/code/design-and-ship.yaml +0 -0
  717. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/flows/code/start.yaml +0 -0
  718. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/ops/commit_message.md +0 -0
  719. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/ops/pr_message.md +0 -0
  720. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/ops/summarize.md +0 -0
  721. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/code/compress.md +0 -0
  722. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/code/debug.md +0 -0
  723. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/code/implement.md +0 -0
  724. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/interactive/explore.md +0 -0
  725. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/interactive/refine.md +0 -0
  726. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/ops/commit.md +0 -0
  727. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/ops/synthesize.md +0 -0
  728. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/plan/expand.md +0 -0
  729. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/plan/polish.md +0 -0
  730. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/builtins/steps/plan/reduce.md +0 -0
  731. /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
  732. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/clipboard.rs +0 -0
  733. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/command.rs +0 -0
  734. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/error.rs +0 -0
  735. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/event.rs +0 -0
  736. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/platform.rs +0 -0
  737. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/stream.rs +0 -0
  738. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/engine/worktree.rs +0 -0
  739. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lf/commands/mod.rs +0 -0
  740. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lf/commands/util.rs +0 -0
  741. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/credentials.rs +0 -0
  742. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/http/routes/flows.rs +0 -0
  743. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/id.rs +0 -0
  744. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/machine_id.rs +0 -0
  745. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/obs.rs +0 -0
  746. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/001_initial.sql +0 -0
  747. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/002_stimulus_enabled.sql +0 -0
  748. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/003_agent_container_id.sql +0 -0
  749. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/store/migrations/004_wave_run_kind.sql +0 -0
  750. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/triggers/ci_failure.rs +0 -0
  751. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/lfd/types/summary.rs +0 -0
  752. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/abandon.rs +0 -0
  753. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/combine.rs +0 -0
  754. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/commit.rs +0 -0
  755. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/error.rs +0 -0
  756. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/land.rs +0 -0
  757. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/next.rs +0 -0
  758. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/progress.rs +0 -0
  759. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/trace.rs +0 -0
  760. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/src/ops/util.rs +0 -0
  761. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/combine_tests.rs +0 -0
  762. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/git_tests.rs +0 -0
  763. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/next_tests.rs +0 -0
  764. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/pr_tests.rs +0 -0
  765. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/rebase_tests.rs +0 -0
  766. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/support/mod.rs +0 -0
  767. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/token_tests.rs +0 -0
  768. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow/tests/worktree_tests.rs +0 -0
  769. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow-test-support/Cargo.toml +0 -0
  770. {loopflow-0.8.6 → loopflow-0.9.2}/rust/loopflow-test-support/src/lib.rs +0 -0
  771. {loopflow-0.8.6 → loopflow-0.9.2}/scripts/dev-lf +0 -0
  772. {loopflow-0.8.6 → loopflow-0.9.2}/scripts/generate_screenshots.py +0 -0
  773. {loopflow-0.8.6 → loopflow-0.9.2}/scripts/screenshots.yaml +0 -0
  774. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Concerto.sdef +0 -0
  775. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Flags.swift +0 -0
  776. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/CormorantGaramond-Medium.otf +0 -0
  777. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/CormorantGaramond-Regular.otf +0 -0
  778. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/CormorantGaramond-SemiBold.otf +0 -0
  779. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/JetBrainsMono-Regular.ttf +0 -0
  780. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/Lato-Bold.ttf +0 -0
  781. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Fonts/Lato-Regular.ttf +0 -0
  782. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Info.plist +0 -0
  783. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Concerto/Services/Ghostty/README.md +0 -0
  784. {loopflow-0.8.6 → loopflow-0.9.2}/swift/ConcertoTests/AuthServiceTests.swift +0 -0
  785. {loopflow-0.8.6 → loopflow-0.9.2}/swift/ConcertoTests/WorktreeStoreTests.swift +0 -0
  786. {loopflow-0.8.6 → loopflow-0.9.2}/swift/ConcertoUITests/ScreenshotPipelineTests.swift +0 -0
  787. {loopflow-0.8.6 → loopflow-0.9.2}/swift/DESIGN.md +0 -0
  788. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Info.plist +0 -0
  789. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/LoopflowCore.swift +0 -0
  790. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/AppPreferences.swift +0 -0
  791. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/AppearanceMode.swift +0 -0
  792. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/Flow.swift +0 -0
  793. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/PullRequest.swift +0 -0
  794. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/StatusColors.swift +0 -0
  795. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/Step.swift +0 -0
  796. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/WaveRun.swift +0 -0
  797. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Models/WorktreeInfo.swift +0 -0
  798. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/AuthError.swift +0 -0
  799. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/AuthService.swift +0 -0
  800. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/AuthState.swift +0 -0
  801. {loopflow-0.8.6/swift/Concerto → loopflow-0.9.2/swift/LoopflowCore}/Services/NameGenerator.swift +0 -0
  802. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/NotificationService.swift +0 -0
  803. {loopflow-0.8.6 → loopflow-0.9.2}/swift/LoopflowCore/Services/TokenProvider.swift +0 -0
  804. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Package.resolved +0 -0
  805. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Symphonia/SymphoniaApp.swift +0 -0
  806. {loopflow-0.8.6 → loopflow-0.9.2}/swift/Symphonia/Views/PlaceholderView.swift +0 -0
  807. {loopflow-0.8.6 → loopflow-0.9.2}/tests/e2e/test_full_cycle.sh +0 -0
  808. {loopflow-0.8.6 → loopflow-0.9.2}/tests/e2e/test_rebase_conflict.sh +0 -0
  809. {loopflow-0.8.6 → loopflow-0.9.2}/tests/goldens/basic.yaml +0 -0
  810. {loopflow-0.8.6 → loopflow-0.9.2}/tests/goldens/with_direction.yaml +0 -0
  811. {loopflow-0.8.6 → loopflow-0.9.2}/tests/goldens/with_lfdocs.yaml +0 -0
  812. {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/basic/.lf/steps/test.md +0 -0
  813. {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_direction/.lf/directions/thorough.md +0 -0
  814. {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_direction/.lf/steps/test.md +0 -0
  815. {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_lfdocs/.lf/steps/test.md +0 -0
  816. {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_lfdocs/README.md +0 -0
  817. {loopflow-0.8.6 → loopflow-0.9.2}/tests/parity/fixtures/with_lfdocs/scratch/design.md +0 -0
  818. {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