Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion .github/workflows/ci-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
# ----------------------------------------------------------------------------
# Purpose : Run unit + Playwright e2e tests across Linux & Windows
# Trigger : Push to `main`/`dev`, PRs targeting `main`, manual dispatch
# Jobs : unit — `bun turbo test` on linux only (windows dropped — see
# Jobs : unit — `bun turbo test` + config_assistant Go tests on linux
# only (windows dropped — see
# unit-tests matrix comment; free windows-latest runners
# can't fit the suite in a reasonable CI budget)
# e2e — Playwright chromium on linux + windows (matrix)
Expand Down Expand Up @@ -68,6 +69,13 @@ jobs:
with:
node-version: "24"

- name: Setup Go
if: runner.os == 'Linux'
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version-file: config_assistant/go.mod
cache-dependency-path: config_assistant/go.sum

- name: Setup Bun
uses: ./.github/actions/setup-bun
with:
Expand Down Expand Up @@ -109,6 +117,11 @@ jobs:
env:
OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: ${{ runner.os == 'Windows' && 'true' || 'false' }}

- name: Run config assistant tests
if: runner.os == 'Linux'
working-directory: config_assistant
run: go test ./...

- name: Check generated client
if: runner.os == 'Linux'
working-directory: packages/client
Expand Down
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ Each node declares:
| `output_schema` | JSON Schema; the child agent must call `submit_result` with a matching structured payload |
| `required` | Failure of a required node fails the workflow |
| `report_to_parent` | Wake the parent agent when this node reaches a terminal state |
| `model` | Optional per-node model pin; otherwise resolves node → `node_defaults` → agent → `dag.jsonc` tier → parent session |
| `review` | `design` or `diff` review phase with an implementation-fingerprint contract (below) |

Workflow-level knobs: `max_concurrency` (default 5), `max_node_replan_attempts` (5), `max_total_nodes` (100), per-node `timeout_ms` (default 10 min, queue wait counts toward the deadline).
Expand Down Expand Up @@ -90,6 +89,7 @@ Workflow-level knobs: `max_concurrency` (default 5), `max_node_replan_attempts`
- **Tool robustness**: JSON repair for broken multi-byte Unicode escapes in LLM output, structured validation errors with field-level hints, expanded tool docs, child-process pipe fixes.
- **CJK & IME fixes**: corrections for Chinese/Japanese/Korean input in the terminal UI (IME composition flushing, full-width text handling), plus a Korean IME fix script under [`patches/`](./patches).
- **Worktree isolation**: per-workflow `git worktree` isolation, with experimental sandbox-worktree HTTP endpoints.
- **Configuration assistant**: a standalone Go TUI under [`config_assistant`](./config_assistant) for locating, validating, and editing opencode configuration (`cd config_assistant && go run ./cmd/ocfg`).
- An earlier "Goal auto-loop" and the `/goal`, `/subgoal`, `/workflow` slash commands are gone; autonomous execution now goes through the `workflow` tool and its wake mechanism.

All upstream capabilities (multi-provider, built-in LSP, client/server architecture, TUI/desktop/web clients) are preserved.
Expand Down Expand Up @@ -117,9 +117,8 @@ bun dev serve # headless API server (port 4096)

## Quality gates

- **CI**: typecheck on every PR; the `main` gate additionally runs the full unit suite (Linux), Playwright e2e (Linux + Windows), an HTTP API contract exerciser, and generated-SDK freshness checks.
- **CI**: typecheck on every PR; the `main` gate additionally runs the Bun/Turbo unit suite and config-assistant Go tests (Linux), Playwright e2e (Linux + Windows), an HTTP API contract exerciser, and generated-SDK freshness checks.
- **DAG-specific tests**: core scheduling unit tests, projector/state-machine drift tests, workflow lifecycle integration tests, and HTTP API exercise scenarios for every DAG route.
- **Specs**: engine behavior is pinned by [openspec](./openspec/specs) specifications (execution engine, state-machine enforcement, scheduler recovery, step semantics, structured output, replay idempotency, and more).

## License

Expand All @@ -135,7 +134,6 @@ Exact file boundaries are listed in [`NOTICE`](./NOTICE). The AGPL covers the DA
## Docs

- [`docs/harness-dag.md`](./docs/harness-dag.md) — deep-mode admission & review lifecycle
- [`openspec/specs`](./openspec/specs) — engine behavior specifications
- [`.opencode/dag-prompts`](./.opencode/dag-prompts) — built-in node prompt templates
- [`AGENTS.md`](./AGENTS.md) — contribution & development guide

Expand Down
6 changes: 2 additions & 4 deletions README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
| `output_schema` | JSON Schema;子智能体必须调用 `submit_result` 提交匹配的结构化结果 |
| `required` | 必需节点失败会使整个工作流失败 |
| `report_to_parent` | 节点到达终态时唤醒父智能体 |
| `model` | 可选的节点级模型指定;否则按 节点 → `node_defaults` → agent → `dag.jsonc` 分层 → 父会话 解析 |
| `review` | `design` 或 `diff` 审查阶段,带实现指纹契约(见下) |

工作流级参数:`max_concurrency`(默认 5)、`max_node_replan_attempts`(5)、`max_total_nodes`(100)、节点级 `timeout_ms`(默认 10 分钟,排队等待计入预算)。
Expand Down Expand Up @@ -90,6 +89,7 @@
- **工具健壮性**:修复 LLM 输出里损坏的多字节 Unicode 转义(JSON 修复),校验错误带字段级提示,工具文档扩充,子进程管道修复。
- **CJK 与 IME 修复**:终端 UI 里中日韩文输入的修正(IME 组字刷新、全角文本处理),另有 [`patches/`](./patches) 下的韩文 IME 修复脚本。
- **Worktree 隔离**:按工作流的 `git worktree` 隔离,附实验性的 sandbox-worktree HTTP 端点。
- **配置助手**:[`config_assistant`](./config_assistant) 下提供独立 Go TUI,用于定位、校验和编辑 opencode 配置(`cd config_assistant && go run ./cmd/ocfg`)。
- 早期的「Goal 自动循环」和 `/goal`、`/subgoal`、`/workflow` 斜杠命令已经移除,自主执行统一走 `workflow` 工具和它的唤醒机制。

上游全部能力(多 Provider、内置 LSP、客户端/服务器架构、TUI/桌面/Web 客户端)均完整保留。
Expand Down Expand Up @@ -117,9 +117,8 @@ bun dev serve # headless API 服务(端口 4096)

## 质量门禁

- **CI**:每个 PR 跑 typecheck;`main` 门禁额外运行全量单元测试(Linux)、Playwright e2e(Linux + Windows)、HTTP API 契约测试器、以及生成 SDK 的新鲜度校验。
- **CI**:每个 PR 跑 typecheck;`main` 门禁额外运行 Bun/Turbo 单元测试与配置助手 Go 测试(Linux)、Playwright e2e(Linux + Windows)、HTTP API 契约测试器、以及生成 SDK 的新鲜度校验。
- **DAG 专项测试**:核心调度单元测试、投影器/状态机漂移测试、工作流生命周期集成测试、每条 DAG 路由的 HTTP API 演练场景。
- **规范**:引擎行为由 [openspec](./openspec/specs) 规范固定(执行引擎、状态机强制、调度器恢复、单步语义、结构化输出、回放幂等性等)。

## 许可证

Expand All @@ -135,7 +134,6 @@ bun dev serve # headless API 服务(端口 4096)
## 文档

- [`docs/harness-dag.md`](./docs/harness-dag.md) —— deep 模式准入与审查生命周期
- [`openspec/specs`](./openspec/specs) —— 引擎行为规范
- [`.opencode/dag-prompts`](./.opencode/dag-prompts) —— 内置节点 prompt 模板
- [`AGENTS.md`](./AGENTS.md) —— 贡献与开发指南

Expand Down
2 changes: 0 additions & 2 deletions openspec/changes/dag-post-crash-continuation/.openspec.yaml

This file was deleted.

111 changes: 0 additions & 111 deletions openspec/changes/dag-post-crash-continuation/design.md

This file was deleted.

32 changes: 0 additions & 32 deletions openspec/changes/dag-post-crash-continuation/proposal.md

This file was deleted.

Loading
Loading