Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
3e1088a
docs(planning): scaffold v1.4.0 omp engine milestone
SomeRandmGuyy Oct 19, 2026
e7ee52b
feat(flow): add omp engine wire contract
SomeRandmGuyy Oct 19, 2026
c3445ca
docs(planning): record phase 1 discovery reports
SomeRandmGuyy Oct 19, 2026
b3cfdc9
feat(flow): add host response helpers and omp launch contract
SomeRandmGuyy Oct 19, 2026
cc044ac
docs(planning): record phase 1 context and locked decisions
SomeRandmGuyy Oct 19, 2026
a153ee9
feat(flow): add omp engine host, stage modules and terminal
SomeRandmGuyy Oct 19, 2026
135dd02
feat(flow): run cards on the omp engine with uplift, memory and swarm…
SomeRandmGuyy Oct 19, 2026
e0893df
refactor(flow): remove the opencode engine from the host and launchers
SomeRandmGuyy Oct 19, 2026
26c087f
feat(flow): copy omp logins into the openflow profile
SomeRandmGuyy Oct 19, 2026
f5bffb9
fix(flow): re-poll session waits in slices and trim omp notices
SomeRandmGuyy Oct 19, 2026
71a0d4e
fix(flow): make first run work on a profile with no logins
SomeRandmGuyy Oct 19, 2026
f5a41a4
chore(flow): drop stale opencode wording, templates and generated config
SomeRandmGuyy Oct 19, 2026
2fdc5ab
chore(flow): add the no-opencode gate and bump to 1.4.0
SomeRandmGuyy Oct 19, 2026
a097b75
docs(flow): describe the omp engine
SomeRandmGuyy Oct 19, 2026
9ffeda8
fix(flow): abort uplift and memory calls when a run is stopped
SomeRandmGuyy Oct 19, 2026
db04e87
fix(flow): settle the swarm status when a card session ends
SomeRandmGuyy Oct 19, 2026
27f88e7
fix(flow): close omp session races, bound startup and cap live sessions
SomeRandmGuyy Oct 19, 2026
3a1c86a
fix(flow): stop during session creation, protect gauntlet judges and …
SomeRandmGuyy Oct 19, 2026
a73f2c1
fix(flow): gate every host route against cross-site and rebinding req…
SomeRandmGuyy Oct 19, 2026
680ff2e
fix(flow): store hedged card outputs as todos instead of losing them
SomeRandmGuyy Oct 19, 2026
bf22d48
refactor(flow): remove the per-card MCP toggles that did nothing
SomeRandmGuyy Oct 19, 2026
abb940c
feat(flow): prune run state older than 30 days
SomeRandmGuyy Oct 19, 2026
46b7084
test(flow): add FakeEngine and a shared EngineApi contract suite
SomeRandmGuyy Oct 19, 2026
7f54a34
fix(flow): title sessions by role and task instead of the shared brie…
SomeRandmGuyy Oct 19, 2026
61ee96d
fix(flow): gate every case and dot variant of the host routes and kee…
SomeRandmGuyy Oct 19, 2026
01cba3b
fix(flow): evict idle sessions at the cap, claim runs during prune an…
SomeRandmGuyy Oct 19, 2026
785370f
fix(flow): abort session creation on Stop, key requests by session an…
SomeRandmGuyy Oct 19, 2026
ab74592
docs(planning): amend SWM-03 and TRM-01 and add the parity checklist
SomeRandmGuyy Oct 19, 2026
2daf46d
docs(flow): document the route gate, session limits, state pruning an…
SomeRandmGuyy Oct 19, 2026
b975f93
fix(flow): close the remaining gate gaps and shut the dev host down c…
SomeRandmGuyy Oct 19, 2026
c9d3889
refactor(flow): surface unenforceable tool toggles, drop the planner …
SomeRandmGuyy Oct 19, 2026
2c88373
docs(planning): add phase verifications, summaries and the integratio…
SomeRandmGuyy Oct 19, 2026
9491ea4
docs(flow): describe the final gate, shutdown and teardown behaviour
SomeRandmGuyy Oct 19, 2026
40dd917
docs(planning): refresh phase verifications at the final tree
SomeRandmGuyy Oct 19, 2026
38ab370
docs(planning): complete phases 1-7, record the milestone audit and r…
SomeRandmGuyy Oct 19, 2026
833d819
docs(planning): recompute stale verification digests without tracking…
SomeRandmGuyy Oct 19, 2026
2b0761d
fix(flow): address greptile review feedback
SomeRandmGuyy Oct 19, 2026
fefcb4e
fix(flow): close lifecycle, scoping and stale-state gaps found in review
SomeRandmGuyy Oct 19, 2026
f6038b6
fix(flow): scope sessions to the project and make name collisions exp…
SomeRandmGuyy Oct 19, 2026
029a02b
fix(flow): keep resume, the project lock and name collisions coherent
SomeRandmGuyy Oct 19, 2026
3fb5ee5
fix(flow): make resume non-destructive and treat run logs as untrusted
SomeRandmGuyy Oct 19, 2026
85698a1
fix(flow): keep briefings across retries and own live resumes
SomeRandmGuyy Oct 19, 2026
0a74c5c
fix(flow): protect legacy skill renames and keep briefings and delete…
SomeRandmGuyy Oct 19, 2026
65e9ff9
fix(flow): give request ids a per-process prefix and remember answere…
SomeRandmGuyy Oct 19, 2026
107ee81
fix(flow): let a replayed request reopen after a reply that never rea…
SomeRandmGuyy Oct 19, 2026
af91baa
feat(flow): rename the harness to Autonogrammer
SomeRandmGuyy Oct 20, 2026
f3abfa7
docs(planning): pair v1.4.0 summaries with plan files
SomeRandmGuyy Oct 20, 2026
ca17723
docs(planning): re-verify v1.4.0 phases at Autonogrammer HEAD
SomeRandmGuyy Oct 20, 2026
30727f0
refactor(flow): name the VolumeManager contract and type the optional…
SomeRandmGuyy Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 0 additions & 6 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "opencode-server",
"runtimeExecutable": "bun",
"runtimeArgs": ["run", "--cwd", "packages/opencode", "--conditions=browser", "src/index.ts", "serve", "--port", "4096"],
"port": 4096
},
{
"name": "openflow",
"runtimeExecutable": "bun",
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/openflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ jobs:
working-directory: packages/flow
run: bun run typecheck

# The migration's own rule: nothing but `src/graph/migrate.ts` may name the engine this fork left.
- name: Removed-engine gate
working-directory: packages/flow
run: bun run check:no-opencode

- name: Unit tests
working-directory: packages/flow
run: bun test
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,6 @@ FlappyBird/
!.openflow/generated/feature-build.opencode.json
!.openflow/generated/orchestrated-build.opencode.json

# Autonogrammer card volumes and harness secrets (outside the repo by default)
.autonogrammer/
secrets.json
61 changes: 0 additions & 61 deletions .openflow/generated/diamond.opencode.json

This file was deleted.

44 changes: 0 additions & 44 deletions .openflow/generated/feature-build.opencode.json

This file was deleted.

54 changes: 0 additions & 54 deletions .openflow/generated/orchestrated-build.opencode.json

This file was deleted.

12 changes: 4 additions & 8 deletions .openflow/pipelines/diamond.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
"write": false,
"edit": false,
"bash": false
},
"model": "opencode/nemotron-3.5-lightning-free"
}
},
"position": {
"x": 40,
Expand All @@ -34,8 +33,7 @@
"write": true,
"edit": true,
"bash": true
},
"model": "opencode/nemotron-3.5-lightning-free"
}
},
"position": {
"x": 340,
Expand All @@ -54,8 +52,7 @@
"write": true,
"edit": true,
"bash": true
},
"model": "opencode/nemotron-3.5-lightning-free"
}
},
"position": {
"x": 640,
Expand All @@ -74,8 +71,7 @@
"write": false,
"edit": false,
"bash": false
},
"model": "opencode/nemotron-3.5-lightning-free"
}
},
"position": {
"x": 40,
Expand Down
9 changes: 3 additions & 6 deletions .openflow/pipelines/feature-build.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
"write": false,
"edit": false,
"bash": false
},
"model": "opencode/nemotron-3.5-lightning-free"
}
},
"position": {
"x": 40,
Expand All @@ -34,8 +33,7 @@
"write": false,
"edit": false,
"bash": false
},
"model": "opencode/nemotron-3.5-lightning-free"
}
},
"position": {
"x": 340,
Expand All @@ -54,8 +52,7 @@
"write": true,
"edit": true,
"bash": true
},
"model": "opencode/nemotron-3.5-lightning-free"
}
},
"position": {
"x": 640,
Expand Down
71 changes: 71 additions & 0 deletions .planning/PROJECT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# OpenFlow (autonogrammer)

## What This Is

OpenFlow (`packages/flow`) is a node-based visual builder for multi-agent workflows, shipped as a fork-owned package inside a vendored OpenCode monorepo. Each card on the canvas is one full agent session; cards run in pipeline, swarm or orchestration modes. Today the engine behind every card is `opencode serve`; milestone v1.4.0 replaces it with the Omp engine.

## Core Value

A user writes a card prompt and gets it executed by Omp with prompt uplift, shared project memory and agent-swarm execution, with status, output, result and every failure visible in the card UI.

## Current Milestone: v1.4.0 Omp Engine

**Goal:** Replace the OpenCode engine in `packages/flow` with the Omp engine, add prompt uplift (claude-ultrathink), shared memory (agent-substrate), per-card agent-swarm execution, and an Omp settings UI plus PTY terminal; then remove OpenCode coupling from fork-owned code.

**Target features:**
- Engine port (`EngineApi`) with contract suite and `FakeEngine`; Omp adapter behind it (`omp --mode rpc`)
- Prompt uplift planner with persisted original + uplifted prompts
- Substrate-backed shared memory across all cards of a run
- Per-card agent-swarm execution via the agent-swarm omp extension
- Omp settings UI and in-app PTY terminal (bottom dock)
- Migration of persisted pipelines/runs/models and complete OpenCode removal from fork-owned paths

Tracking: Linear nodes SPE-16062..SPE-16069 (n1..n8) under Notion task https://app.notion.com/p/3febc1a0c7ae819ea148eeb0486f8185?pvs=204 (graph `ut-mvf9vsaa-a99417c4`). Package version today: 1.3.0; target 1.4.0.

## Requirements

### Validated

- ✓ Node-based canvas with pipeline / swarm / orchestration modes on the OpenCode engine — v1.0–v1.3.0

### Active

See `.planning/REQUIREMENTS.md` (ENG, UPL, MEM, SWM, CFG, TRM, MIG, QA — 28 requirements).

### Out of Scope

- Modifying any vendored upstream package — FLOW.md hard constraint (fork merges stay clean)
- Scrubbing `opencode` strings in upstream README/docs/source/`sst.config.ts`/`infra` — intentional per FLOW.md
- An OpenCode fallback flag or silent fallback engine — OpenCode is removed outright after parity
- Multiple concurrent terminal sessions or remote terminal access — single local session only

## Context

- Repo rules: read `FLOW.md` and `AGENTS.md` at the repo root first; `packages/flow/README.md` documents endpoints, run instructions and file layout.
- Fork-owned surfaces: `packages/flow`, `.github`, the LICENSE attribution line, `FLOW.md`, and the root OpenFlow launchers (`openflow.sh`, `openflow.ps1`, `openflow.ts`).
- Current architecture: one card = one full `opencode serve` primary session (`src/server/engine.ts`: createSession → prompt → waitForIdle → transcript), nodes run in topological layers via a parallel pool.
- Branch `omp-engine`; default branch of the repo is `dev`.

## Constraints

- **Upstream**: no edits to vendored packages — keeps fork merges clean
- **Boundaries**: UI, engine and cards depend on the `EngineApi` port, never on omp/substrate/swarm internals
- **Security**: terminal bound to loopback with a per-launch token only
- **Process hygiene**: cancel must terminate the whole omp/swarm process tree, no orphans
- **Degradation**: every failure mode (omp missing/wrong version, uplift failing, substrate down, swarm partial failure, PTY exit) surfaces a visible, actionable message

## Key Decisions

| Decision | Rationale | Outcome |
|----------|-----------|---------|
| Remove OpenCode outright after parity (no flag, no silent fallback) | Two engines doubles surface and hides regressions; parity checklist gates removal | — Pending |
| Vendored upstream packages untouched (FLOW.md hard constraint) | Keeps fork merges clean; OpenCode removal applies only to `packages/flow` and root openflow launchers | — Pending |
| Uplift failure blocks the card with an explicit "Run with original prompt" action | No silent degradation; user stays in control of what is sent | — Pending |
| Memory: read per project, write per card; retention per Substrate semantics; inspect/clear as Substrate supports | Later cards see earlier results without cards overwriting each other's scope | — Pending |
| Terminal = global bottom dock, single session, loopback + per-launch token | Smallest safe surface for an in-app shell | — Pending |
| Legacy cards: model ids migrated to the Omp catalog, unknown ones flagged, never crashing | Existing pipelines must load | — Pending |
| Omp driven via `omp --mode rpc` per card session with a hand-rolled JSONL client | Direct control of stream/cancel/permission events; no SDK coupling | — Pending |
| Uplift = host-side planner call (to be confirmed by Phase 1 discovery) | Keeps uplift outside the card session so original/uplifted prompts are both persisted | — Pending |

---
*Last updated: 2026-10-19 after milestone v1.4.0 initialization*
Loading