From 81d56f999d037de313369a897716c62692ebcee1 Mon Sep 17 00:00:00 2001 From: insleker Date: Mon, 13 Apr 2026 11:20:06 +0800 Subject: [PATCH] docs: improve docs of config and readme --- README.assets/image.png | Bin 0 -> 97612 bytes README.md | 58 +++++++-------- bin/code_work_spawner.dart | 6 +- examples/simple-github.yaml | 7 +- lib/src/config/config.dart | 5 ++ skills-lock.json | 15 ++++ test/config/app_config_test.dart | 68 ++++++++---------- test/config/init_config_cli_test.dart | 4 +- test/core/concurrency_test.dart | 6 +- test/core/core_test.dart | 14 ++-- test/core/multi_project_test.dart | 10 +-- test/core/no_reply_acknowledgement_test.dart | 12 +--- test/core/retry_test.dart | 2 +- test/issue_event_source/test_helpers.dart | 2 +- .../webhook_forward_test.dart | 2 +- test/notifier/notifications_test.dart | 6 +- test/workspace/worktree_test.dart | 8 +-- 17 files changed, 111 insertions(+), 114 deletions(-) create mode 100644 README.assets/image.png diff --git a/README.assets/image.png b/README.assets/image.png new file mode 100644 index 0000000000000000000000000000000000000000..48c3910c4173cec4f9470628e704583148995a5e GIT binary patch literal 97612 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 S_Aqb-qN1pw@chpGp#K9;K$+42 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index d0b5ffe..6833f31 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,42 @@ # code_work_spawner -Repository issue thread assistant with an Agent Orchestrator style YAML config. +Repository issue thread assistant configured by YAML. -It consumes issue tracker events for configured GitHub, GitLab, Gitea, or OpenProject -projects, reads issue threads, and uses CLI responders such as `codex`, `opencode`, or -`copilot-cli` to decide when to reply. It supports -multi-repo config, responder fallback chains, and optional Discord webhook and -desktop notifications. Repository access is configured separately through each -project's `scm` block so tracker and checkout handling can evolve -independently. +It watches GitHub, GitLab, Gitea, or OpenProject issue events, reads threads, and triggers CLI responders such as `codex`, `opencode`, or `copilot-cli`. +Supports multi-repo config, responder fallback chains, isolated worktrees, and optional Discord or desktop notifications. + + ## Highlights -- Consume GitHub, GitLab, Gitea, and OpenProject issue events across multiple projects -- Trigger replies from mentions or meaningful thread updates -- Run planning and bug-verification flows in isolated worktrees -- Send optional Discord or desktop notifications for assistant events +- Track issue events across multiple repositories +- Reply on mentions or meaningful thread updates +- Run planning and bug verification in isolated worktrees +- Send optional Discord and desktop notifications ## Requirements - Dart SDK -- `gh`, `glab`, `tea`, and/or OpenProject API credentials authenticated for the target projects +- Authenticated `gh`, `glab`, `tea`, and/or OpenProject API credentials - Local checkouts for configured repositories -- Optional local responder CLIs such as `codex`, `opencode`, or `copilot-cli` +- Optional responder CLIs (`codex`, `opencode`, `copilot-cli`) ## Config -Create a local `agent-orchestrator.yaml` and use -[`examples/README.md`](examples/README.md) plus -[`examples/simple-github.yaml`](examples/simple-github.yaml), -[`examples/simple-gitlab.yaml`](examples/simple-gitlab.yaml), or -[`examples/simple-gitea.yaml`](examples/simple-gitea.yaml) as the reference. +Create `CWS_conf.yaml` using: +- [examples/README.md](examples/README.md) +- [examples/simple-github.yaml](examples/simple-github.yaml) +- [examples/simple-gitlab.yaml](examples/simple-gitlab.yaml) +- [examples/simple-gitea.yaml](examples/simple-gitea.yaml) -Environment placeholders such as `${CWS_DISCORD_WEBHOOK}` are resolved from the -process environment and from a `.env` file placed next to the selected config -file. Logging also supports `CWS_LOG_LEVEL` (or `LOG_LEVEL`) with values such -as `trace`, `debug`, `info`, `warning`, `error`, or `fatal`. See -[.env.example](.env.example) for a minimal starter file. +Environment placeholders (for example `${CWS_DISCORD_WEBHOOK}`) are resolved +from process env vars and from a `.env` file next to your config. -Generate a starter config: +Logging level can be set with `CWS_LOG_LEVEL` (or `LOG_LEVEL`): `trace`, +`debug`, `info`, `warning`, `error`, `fatal`. Minimal example: +[.env.example](.env.example). + +Generate starter config: ```bash dart run bin/code_work_spawner.dart init-config @@ -50,23 +48,25 @@ dart run bin/code_work_spawner.dart init-config --output agent-orchestrator.yaml ## Run +Generate code first: + ```bash dart run build_runner build --delete-conflicting-outputs ``` -Single event-source reconciliation cycle: +Run once: ```bash dart run bin/code_work_spawner.dart --once ``` -Long-running tracker runtime: +Run continuously: ```bash dart run bin/code_work_spawner.dart ``` -Override tracker CLI paths when needed: +Override CLI paths if needed: ```bash dart run bin/code_work_spawner.dart \ @@ -79,7 +79,7 @@ dart run bin/code_work_spawner.dart \ ## Install Binary -Install the latest matching release binary from GitHub Releases: +Install latest release binary: ```bash # export GH_TOKEN="$TOKEN" # If got 404, `GITHUB_TOKEN` also work diff --git a/bin/code_work_spawner.dart b/bin/code_work_spawner.dart index 7eaf156..0dc64fd 100644 --- a/bin/code_work_spawner.dart +++ b/bin/code_work_spawner.dart @@ -18,7 +18,7 @@ class _CodeWorkSpawnerCommandRunner extends CommandRunner { _CodeWorkSpawnerCommandRunner() : super( 'code_work_spawner', - 'Repository issue thread assistant with an Agent Orchestrator style YAML config.', + 'Repository issue thread assistant with a YAML config.', ) { argParser ..addFlag( @@ -30,8 +30,8 @@ class _CodeWorkSpawnerCommandRunner extends CommandRunner { ..addOption( 'config', abbr: 'c', - help: 'Path to agent-orchestrator.yaml.', - defaultsTo: 'agent-orchestrator.yaml', + help: 'Path to the YAML config file.', + defaultsTo: 'CWS_conf.yaml', ) ..addOption( 'db', diff --git a/examples/simple-github.yaml b/examples/simple-github.yaml index f6c4ff0..6489918 100644 --- a/examples/simple-github.yaml +++ b/examples/simple-github.yaml @@ -25,10 +25,15 @@ defaults: # Replace this with a responder available on your machine. - id: codex command: codex - args: ["exec", "--json"] + args: ["-s", "danger-full-access", "exec", "--json"] timeout: 10m # - id: opencode # command: opencode + # args: ["run", "-f", "json"] + # timeout: 10m + # - id: copilot-cli + # command: copilot + # args: ["--allow-all", "--autopilot", "-p", "--output-format", "json"] # timeout: 10m # notifications: # # Optional Discord notifications for assistant activity. diff --git a/lib/src/config/config.dart b/lib/src/config/config.dart index b49ee90..d2233ea 100644 --- a/lib/src/config/config.dart +++ b/lib/src/config/config.dart @@ -1081,6 +1081,11 @@ ${_commentBlock(defaultIssueAssistantPrompt, indent: ' # ')} # timeout: 10m # - id: opencode # command: opencode + # args: ["run", "-f", "json"] + # timeout: 10m + # - id: copilot-cli + # command: copilot + # args: ["--allow-all", "--autopilot", "-p", "--output-format", "json"] # timeout: 10m # notifications: # - type: discordWebhook diff --git a/skills-lock.json b/skills-lock.json index 6dcd056..e401c99 100644 --- a/skills-lock.json +++ b/skills-lock.json @@ -46,6 +46,11 @@ "sourceType": "github", "computedHash": "8bfae087ef27eb37092d94caf1da3406b500aa908756772bb1349a1ac70823dd" }, + "babysit-pr": { + "source": "openai/codex", + "sourceType": "github", + "computedHash": "8d952e21312ebf8573d9f5655c0e0eb3ad6e2ca14fcc6b95cbad046692eaf651" + }, "breakdown-epic-arch": { "source": "github/awesome-copilot", "sourceType": "github", @@ -101,6 +106,11 @@ "sourceType": "github", "computedHash": "a7d80450799b2141ddff9ec614477e237c1f50acb9eeade2dd869aeac3d004a9" }, + "codex": { + "source": "softaworks/agent-toolkit", + "sourceType": "github", + "computedHash": "4b7e8695807b567a7a7d467ab15b3da330aa0a847827067d79c654c540a72fe9" + }, "comment-code-generate-a-tutorial": { "source": "github/awesome-copilot", "sourceType": "github", @@ -121,6 +131,11 @@ "sourceType": "github", "computedHash": "934c017d41118a44f4db0e80b526db175cadcfdf8c5354fc9eceb0b3cb6beb50" }, + "copilot-cli-quickstart": { + "source": "github/awesome-copilot", + "sourceType": "github", + "computedHash": "720e848c508c9fccc0d9edbdb7a68ede333866e1e0a126b7d4b179e01d7ba5d7" + }, "create-agentsmd": { "source": "github/awesome-copilot", "sourceType": "github", diff --git a/test/config/app_config_test.dart b/test/config/app_config_test.dart index ed34540..a2a71a6 100644 --- a/test/config/app_config_test.dart +++ b/test/config/app_config_test.dart @@ -60,7 +60,7 @@ void main() { test('Merge defaults with project overrides', () async { // Given camelCase config with shared defaults and one project override. final tempDir = await Directory.systemTemp.createTemp('cws-config-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -120,7 +120,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-default-templates-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -163,7 +163,7 @@ projects: test('Resolve config placeholders from a colocated dotenv file', () async { // Given an orchestrator config with environment placeholders and a colocated dotenv file. final tempDir = await Directory.systemTemp.createTemp('cws-dotenv-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); final dotenvFile = File(p.join(tempDir.path, '.env')); addTearDown(AppEnvironment.resetForTest); await dotenvFile.writeAsString(''' @@ -211,7 +211,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-comment-template-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -249,7 +249,7 @@ projects: test('Normalize legacy codex json flag', () async { // Given an orchestrator config that still uses the legacy codex --json-output flag. final tempDir = await Directory.systemTemp.createTemp('cws-codex-args-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -285,7 +285,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-notification-config-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -340,7 +340,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-desktop-notification-config-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -379,7 +379,7 @@ projects: test('Load camelCase config with shared worktree root', () async { // Given camelCase config with dataDir, worktreeDir, and project settings. final tempDir = await Directory.systemTemp.createTemp('cws-camel-case-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' dataDir: ~/.agent-orchestrator worktreeDir: ~/.worktrees @@ -420,7 +420,7 @@ projects: test('Infer a Gitea issue tracker provider from the event source', () async { // Given a config whose project sets tea/polling as the event source type. final tempDir = await Directory.systemTemp.createTemp('cws-gitea-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -456,7 +456,7 @@ projects: test('Infer a GitLab issue tracker provider from the event source', () async { // Given a config whose project sets glab/polling as the event source type. final tempDir = await Directory.systemTemp.createTemp('cws-gitlab-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -497,9 +497,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-openproject-', ); - final configFile = File( - p.join(tempDir.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -542,7 +540,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-openproject-missing-scm-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -585,7 +583,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-openproject-project-name-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -621,7 +619,7 @@ projects: test('Load gh/gosmee as the issue event source', () async { // Given a GitHub project config that opts into gh/gosmee. final tempDir = await Directory.systemTemp.createTemp('cws-gh-gosmee-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -655,7 +653,7 @@ projects: test('Load glab/gosmee as the issue event source', () async { // Given a GitLab project config that opts into glab/gosmee. final tempDir = await Directory.systemTemp.createTemp('cws-glab-gosmee-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -693,9 +691,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-explicit-scm-', ); - final configFile = File( - p.join(tempDir.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -732,7 +728,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-legacy-provider-fallback-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -769,7 +765,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-gh-gosmee-gitea-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -813,9 +809,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-glab-gosmee-github-', ); - final configFile = File( - p.join(tempDir.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -860,7 +854,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-webhook-forward-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -896,7 +890,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-channel-reconcile-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -941,7 +935,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-legacy-channel-poll-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -985,9 +979,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-webhook-forward-gitea-', ); - final configFile = File( - p.join(tempDir.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -1028,7 +1020,7 @@ projects: test('Load tea/gosmee as the issue event source', () async { // Given a Gitea project config that opts into tea/gosmee. final tempDir = await Directory.systemTemp.createTemp('cws-gosmee-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -1066,9 +1058,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-gosmee-github-', ); - final configFile = File( - p.join(tempDir.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -1110,7 +1100,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-snake-case-invalid-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' worktree_dir: ~/.worktrees projects: @@ -1146,7 +1136,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-invalid-repo-slug-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: @@ -1180,7 +1170,7 @@ projects: test('Generate a starter config that parses as valid YAML', () async { // Given the built-in initial config renderer. final tempDir = await Directory.systemTemp.createTemp('cws-init-config-'); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); final contents = AppConfig.renderInitialConfig(); // When writing the generated starter config to disk. @@ -1220,7 +1210,7 @@ projects: final tempDir = await Directory.systemTemp.createTemp( 'cws-init-optional-', ); - final configFile = File(p.join(tempDir.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(tempDir.path, 'CWS_conf.yaml')); final contents = AppConfig.renderInitialConfig() .replaceFirst( ' # capabilities: ["planning", "bug_verification"]', diff --git a/test/config/init_config_cli_test.dart b/test/config/init_config_cli_test.dart index 5bd412b..8259328 100644 --- a/test/config/init_config_cli_test.dart +++ b/test/config/init_config_cli_test.dart @@ -115,7 +115,7 @@ void main() { test('Print the starter config to stdout', () async { // Given the CLI is executed with the init-config command. final sandbox = await Directory.systemTemp.createTemp('cws-cli-stdout-'); - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); final result = await runCli(['init-config']); // When the process completes successfully. @@ -164,7 +164,7 @@ void main() { test('Refuse overwrite unless force is provided', () async { // Given an existing output file for the init-config command. final sandbox = await Directory.systemTemp.createTemp('cws-cli-force-'); - final outputFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final outputFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await outputFile.writeAsString('original'); // When the CLI writes without the force flag and then with the force flag. diff --git a/test/core/concurrency_test.dart b/test/core/concurrency_test.dart index faa42b0..53806b9 100644 --- a/test/core/concurrency_test.dart +++ b/test/core/concurrency_test.dart @@ -124,7 +124,7 @@ void registerIssueAssistantAppRunOnceConcurrencyTests() { ); // And an orchestrator-style config with maxConcurrentIssues set to three. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -266,7 +266,7 @@ projects: }); // And a fake gh command that fails the authenticated user lookup. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -360,7 +360,7 @@ projects: ); // And an AO subset config that enables the assistant without defining responders. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' projects: sample: diff --git a/test/core/core_test.dart b/test/core/core_test.dart index 7c9efd8..c558645 100644 --- a/test/core/core_test.dart +++ b/test/core/core_test.dart @@ -79,7 +79,7 @@ void registerIssueAssistantAppRunOnceCoreTests() { }); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -189,9 +189,7 @@ projects: }); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -291,7 +289,7 @@ projects: }); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -419,9 +417,7 @@ projects: }); // And an orchestrator-style config limiting replies after a human comment to one. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -524,7 +520,7 @@ projects: }, stderr: 'codex diagnostic trace'); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: diff --git a/test/core/multi_project_test.dart b/test/core/multi_project_test.dart index 9417d68..33d8ceb 100644 --- a/test/core/multi_project_test.dart +++ b/test/core/multi_project_test.dart @@ -144,9 +144,7 @@ void registerIssueAssistantAppRunOnceMultiProjectTests() { }); // And an orchestrator-style config with both repositories enabled. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -293,7 +291,7 @@ projects: }); // And an orchestrator-style config that marks the project provider as gitea. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -392,9 +390,7 @@ CWS_GITEA_TOKEN=test-token }); // And an orchestrator-style config that uses an OpenProject project name. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: diff --git a/test/core/no_reply_acknowledgement_test.dart b/test/core/no_reply_acknowledgement_test.dart index 29b93bf..004915e 100644 --- a/test/core/no_reply_acknowledgement_test.dart +++ b/test/core/no_reply_acknowledgement_test.dart @@ -85,9 +85,7 @@ void main() { }); // And an orchestrator-style config that marks the project provider as gitea. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -212,9 +210,7 @@ CWS_GITEA_TOKEN=test-token }); // And an orchestrator-style config that marks the project provider as gitlab. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -315,9 +311,7 @@ projects: }); // And an orchestrator-style config that uses OpenProject as the tracker provider. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: diff --git a/test/core/retry_test.dart b/test/core/retry_test.dart index 5223a0a..2b8810d 100644 --- a/test/core/retry_test.dart +++ b/test/core/retry_test.dart @@ -67,7 +67,7 @@ void registerIssueAssistantAppRunRetryTests() { ); // And an orchestrator-style config with a short poll interval. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: diff --git a/test/issue_event_source/test_helpers.dart b/test/issue_event_source/test_helpers.dart index 52cdc60..1c87246 100644 --- a/test/issue_event_source/test_helpers.dart +++ b/test/issue_event_source/test_helpers.dart @@ -22,7 +22,7 @@ Future writeSingleProjectIssueAssistantConfig({ required String repoPath, required List eventSourceLines, }) async { - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); final eventSourceYaml = eventSourceLines .map((line) => ' $line') .join('\n'); diff --git a/test/issue_event_source/webhook_forward_test.dart b/test/issue_event_source/webhook_forward_test.dart index e72335c..330c23e 100644 --- a/test/issue_event_source/webhook_forward_test.dart +++ b/test/issue_event_source/webhook_forward_test.dart @@ -168,7 +168,7 @@ void registerIssueAssistantAppRunWebhookForwardTests() { }; // And an orchestrator-style config that uses gh/webhook-forward. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: diff --git a/test/notifier/notifications_test.dart b/test/notifier/notifications_test.dart index c72dc55..658f9d1 100644 --- a/test/notifier/notifications_test.dart +++ b/test/notifier/notifications_test.dart @@ -99,7 +99,7 @@ void registerIssueAssistantAppRunOnceNotificationTests() { }); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -225,9 +225,7 @@ projects: }()); // And an orchestrator-style config with a discord webhook notifier. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: diff --git a/test/workspace/worktree_test.dart b/test/workspace/worktree_test.dart index 88d9b1c..29faaee 100644 --- a/test/workspace/worktree_test.dart +++ b/test/workspace/worktree_test.dart @@ -88,9 +88,7 @@ void registerIssueAssistantAppRunOnceWorktreeTests() { ); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File( - p.join(sandbox.path, 'agent-orchestrator.yaml'), - ); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: @@ -212,7 +210,7 @@ projects: }, cwdCapture: cwdCapture); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' worktreeDir: ${worktreeRoot.path} defaults: @@ -312,7 +310,7 @@ projects: }); // And an orchestrator-style config pointing to the fake repo and responder. - final configFile = File(p.join(sandbox.path, 'agent-orchestrator.yaml')); + final configFile = File(p.join(sandbox.path, 'CWS_conf.yaml')); await configFile.writeAsString(''' defaults: issueAssistant: