@cardor/agent-harness-kit 1.1.7 → 1.2.0

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.
package/README.md CHANGED
@@ -44,7 +44,7 @@ npx ahk init
44
44
  - [What you can customize](#what-you-can-customize)
45
45
  - [`agent-harness-kit.config.ts`](#agent-harness-kitconfigts)
46
46
  - [`health.sh`](#healthsh)
47
- - [Agent definition files (`.claude/agents/*.md` or `.opencode/agents/*.md`)](#agent-definition-files-claudeagentsmd-or-opencodeagentsmd)
47
+ - [Agent definition files](#agent-definition-files)
48
48
  - [`.harness/feature_list.json`](#harnessfeature_listjson)
49
49
  - [MCP tools (for agents)](#mcp-tools-for-agents)
50
50
  - [Agent roles](#agent-roles)
@@ -78,7 +78,7 @@ ahk init
78
78
  └── creates config, agent definitions, task backlog, health check
79
79
 
80
80
  AI tool opens your project
81
- └── reads .claude/mcp.json or opencode.json
81
+ └── reads .claude/mcp.json, opencode.json, or .codex/config.toml
82
82
  └── spawns: npx ahk serve (stdio MCP server)
83
83
 
84
84
  Agent starts working
@@ -99,7 +99,7 @@ Everything is stored locally in a SQLite database (`.harness/harness.db`). No cl
99
99
 
100
100
  ## Features
101
101
 
102
- - **Provider-agnostic** — works with Claude Code, OpenCode, or any MCP-compatible AI tool. Switch providers without losing your task history or reconfiguring your workflow.
102
+ - **Provider-agnostic** — works with Claude Code, OpenCode, Codex CLI, or any MCP-compatible AI tool. Switch providers without losing your task history or reconfiguring your workflow.
103
103
  - **Structured 4-agent workflow** — Lead, Explorer, Builder, and Reviewer each have defined responsibilities and can only act within their role.
104
104
  - **Atomic task claiming** — agents use `tasks.claim()` which uses a SQLite transaction to prevent two agents from picking up the same task at the same time.
105
105
  - **Full audit trail** — every action, file touched, tool used, and section written is stored in SQLite and queryable.
@@ -151,11 +151,12 @@ ahk init
151
151
 
152
152
  # Skip prompts with flags
153
153
  ahk init --name "my-app" --provider claude-code --docs ./docs --tasks local
154
+ ahk init --name "my-app" --provider codex-cli --docs ./docs --tasks local
154
155
  ```
155
156
 
156
157
  Run this once per project. Safe to re-run — it will not overwrite files you've customized.
157
158
 
158
- **Global installation** — if you answer yes to "Install globally?", files go to `~/.claude` (Claude Code) or `~/.config/opencode` (OpenCode). This lets you share one harness config across all your projects.
159
+ **Global installation** — if you answer yes to "Install globally?", files go to `~/.claude` (Claude Code), `~/.config/opencode` (OpenCode), or `~/.codex` (Codex CLI). This lets you share one harness config across all your projects.
159
160
 
160
161
  ---
161
162
 
@@ -182,18 +183,17 @@ ahk dashboard --no-open # start server without opening browser
182
183
 
183
184
  The dashboard includes:
184
185
 
185
- | View | What it shows |
186
- |------|--------------|
187
- | **Overview** | Status counts, active tasks with acceptance progress, recent agent activity |
188
- | **Tasks** | Full task list, filterable by status, with acceptance progress bars |
189
- | **Task detail** | Acceptance criteria, action timeline per agent, files touched, tools used |
190
- | **Agents** | Per-role breakdown: actions, tasks worked, files touched, completion rate |
191
- | **Tools** | Top tools bar chart + full log of recent tool calls with args and results |
192
- | **Files** | Most-touched files with operation breakdown + recent file operation log |
186
+ | View | What it shows |
187
+ | --------------- | --------------------------------------------------------------------------- |
188
+ | **Overview** | Status counts, active tasks with acceptance progress, recent agent activity |
189
+ | **Tasks** | Full task list, filterable by status, with acceptance progress bars |
190
+ | **Task detail** | Acceptance criteria, action timeline per agent, files touched, tools used |
191
+ | **Agents** | Per-role breakdown: actions, tasks worked, files touched, completion rate |
192
+ | **Tools** | Top tools bar chart + full log of recent tool calls with args and results |
193
+ | **Files** | Most-touched files with operation breakdown + recent file operation log |
193
194
 
194
195
  ![Dashboard](./assets/ahk-dashboard.png)
195
196
 
196
-
197
197
  ---
198
198
 
199
199
  ### `ahk status`
@@ -285,14 +285,16 @@ Clears harness data interactively. Only SQLite databases are managed by this com
285
285
  ```bash
286
286
  ahk reset # interactive — asks before deleting each item
287
287
  ahk reset --force # skip all confirmation prompts
288
- ahk reset --provider claude-code # also delete agent .md files for this provider
288
+ ahk reset --provider claude-code # also delete agent files for this provider
289
289
  ahk reset --provider opencode
290
+ ahk reset --provider codex-cli
290
291
  ```
291
292
 
292
293
  What it can reset:
294
+
293
295
  - The SQLite `.db` file (plus WAL and SHM files if present)
294
296
  - `.harness/feature_list.json`
295
- - Agent `.md` files in `.claude/agents/` or `.opencode/agents/`
297
+ - Agent definition files in `.claude/agents/`, `.opencode/agents/`, or `.codex/agents/`
296
298
 
297
299
  After a reset, run `ahk init` to scaffold a fresh harness.
298
300
 
@@ -305,6 +307,7 @@ Migrates provider-specific files from one AI provider to another. Useful when sw
305
307
  ```bash
306
308
  ahk migrate --to opencode
307
309
  ahk migrate --to claude-code
310
+ ahk migrate --to codex-cli
308
311
  ```
309
312
 
310
313
  ---
@@ -324,36 +327,80 @@ ahk export --sql --output dump.sql # SQL dump to file
324
327
 
325
328
  ## Files created by `ahk init`
326
329
 
330
+ **Claude Code** (`provider: 'claude-code'`):
331
+
327
332
  ```
328
333
  your-project/
329
- ├── agent-harness-kit.config.ts ← main config (edit freely)
330
- ├── AGENTS.md ← navigation map regenerated from config
331
- ├── health.sh ← implement your health checks here
334
+ ├── agent-harness-kit.config.ts
335
+ ├── AGENTS.md
336
+ ├── CLAUDE.md
337
+ ├── health.sh
332
338
  ├── .harness/
333
- │ ├── harness.db ← SQLite source of truth (gitignored)
334
- │ ├── current.md ← auto-generated session snapshot (gitignored)
335
- │ └── feature_list.json ← human-editable task backlog (commit this)
336
- └── .claude/ ← or .opencode/ depending on your provider
339
+ │ ├── harness.db ← gitignored
340
+ │ ├── current.md ← gitignored
341
+ │ └── feature_list.json
342
+ └── .claude/
337
343
  ├── agents/
338
344
  │ ├── lead.md
339
345
  │ ├── explorer.md
340
346
  │ ├── builder.md
341
347
  │ └── reviewer.md
342
- └── mcp.json ← tells Claude Code to spawn ahk serve
348
+ ├── mcp.json ← MCP server registration
349
+ └── settings.json ← sets `agent: "lead"` as the default session agent
350
+ ```
351
+
352
+ **OpenCode** (`provider: 'opencode'`):
353
+
354
+ ```
355
+ your-project/
356
+ ├── agent-harness-kit.config.ts
357
+ ├── AGENTS.md
358
+ ├── health.sh
359
+ ├── opencode.json ← MCP server + default_agent + compaction config
360
+ ├── .harness/
361
+ └── .opencode/
362
+ └── agents/
363
+ ├── lead.md
364
+ ├── explorer.md
365
+ ├── builder.md
366
+ └── reviewer.md
367
+ ```
368
+
369
+ **Codex CLI** (`provider: 'codex-cli'`):
370
+
371
+ ```
372
+ your-project/
373
+ ├── agent-harness-kit.config.ts
374
+ ├── AGENTS.md
375
+ ├── health.sh
376
+ ├── .harness/
377
+ └── .codex/
378
+ ├── config.toml ← MCP server registration
379
+ └── agents/
380
+ ├── lead.toml
381
+ ├── explorer.toml
382
+ ├── builder.toml
383
+ ├── reviewer.toml
384
+ └── default.toml ← overrides Codex's built-in default agent → routes to lead
343
385
  ```
344
386
 
345
387
  ### What each file does
346
388
 
347
- | File | Purpose | Edit it? |
348
- |------|---------|----------|
349
- | `agent-harness-kit.config.ts` | Defines project metadata, provider, storage paths, MCP port | Yes — it's yours |
350
- | `AGENTS.md` | Navigation map agents read first. Regenerated by `ahk build` | No — changes will be overwritten |
351
- | `health.sh` | Shell script agents run before starting work. Must exit 0 | **Yes — implement your checks here** |
352
- | `.harness/feature_list.json` | Task backlog in JSON. Humans edit this, `ahk sync` loads it into SQLite | Yes — add tasks here |
353
- | `.harness/harness.db` | SQLite database. Source of truth for tasks, actions, sections | No — managed by the harness |
354
- | `.harness/current.md` | Auto-generated session snapshot for agents without MCP access | No — regenerated automatically |
355
- | `.claude/agents/*.md` | Agent role definitions. Created once, never overwritten | **Yes — customize agent behavior** |
356
- | `.claude/mcp.json` | MCP server config. Merged (not overwritten) by `ahk build` | Yes, carefully — don't remove the `agent-harness-kit` entry |
389
+ | File | Purpose | Edit it? |
390
+ | ----------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
391
+ | `agent-harness-kit.config.ts` | Defines project metadata, provider, storage paths, MCP port | Yes — it's yours |
392
+ | `AGENTS.md` | Navigation map agents read first. Regenerated by `ahk build` | No — changes will be overwritten |
393
+ | `health.sh` | Shell script agents run before starting work. Must exit 0 | **Yes — implement your checks here** |
394
+ | `.harness/feature_list.json` | Task backlog in JSON. Humans edit this, `ahk sync` loads it into SQLite | Yes — add tasks here |
395
+ | `.harness/harness.db` | SQLite database. Source of truth for tasks, actions, sections | No — managed by the harness |
396
+ | `.harness/current.md` | Auto-generated session snapshot for agents without MCP access | No — regenerated automatically |
397
+ | `.claude/agents/*.md` | Agent role definitions (Claude Code). Created once, never overwritten | **Yes — customize agent behavior** |
398
+ | `.claude/mcp.json` | MCP server registration for Claude Code. Merged by `ahk build` | Yes, carefully — don't remove the `agent-harness-kit` entry |
399
+ | `.claude/settings.json` | Sets `agent: "lead"` so lead runs as the default session agent. Merged by `ahk build` | Yes, carefully |
400
+ | `.opencode/agents/*.md` | Agent role definitions (OpenCode). Created once, never overwritten | **Yes — customize agent behavior** |
401
+ | `opencode.json` | MCP server + `default_agent` + compaction config for OpenCode. Merged by `ahk build` | Yes, carefully |
402
+ | `.codex/agents/*.toml` | Agent role definitions (Codex CLI). Created once, never overwritten | **Yes — customize agent behavior** |
403
+ | `.codex/config.toml` | MCP server registration for Codex CLI. Merged by `ahk build` | Yes, carefully |
357
404
 
358
405
  ---
359
406
 
@@ -370,17 +417,17 @@ export default defineHarness({
370
417
  project: {
371
418
  name: 'My App',
372
419
  description: 'What this project does',
373
- docsPath: './docs', // where agents search for documentation
420
+ docsPath: './docs', // where agents search for documentation
374
421
  },
375
422
 
376
- provider: 'claude-code', // 'claude-code' | 'opencode'
423
+ provider: 'claude-code', // 'claude-code' | 'opencode' | 'codex-cli'
377
424
 
378
425
  agents: {
379
- lead: { instructionsPath: null },
426
+ lead: { instructionsPath: null },
380
427
  explorer: { instructionsPath: null, allowedPaths: ['./docs', './src'] },
381
- builder: { instructionsPath: null, writablePaths: ['./src', './tests'] },
428
+ builder: { instructionsPath: null, writablePaths: ['./src', './tests'] },
382
429
  reviewer: { instructionsPath: null },
383
- custom: [], // define extra agents here
430
+ custom: [], // define extra agents here
384
431
  },
385
432
 
386
433
  // ── Database ──────────────────────────────────────────────────────────────
@@ -394,25 +441,25 @@ export default defineHarness({
394
441
  // database: { type: 'mysql', connectionString: process.env.DATABASE_URL },
395
442
 
396
443
  storage: {
397
- dir: '.harness',
398
- tasks: { adapter: 'local' }, // 'local' | 'jira' | 'linear' | 'mcp'
444
+ dir: '.harness',
445
+ tasks: { adapter: 'local' }, // 'local' | 'jira' | 'linear' | 'mcp'
399
446
  sections: {
400
- toolsUsed: true, // log which tools agents used
401
- filesModified: true, // log which files were touched
402
- result: true, // log action results
403
- blockers: true, // log blockers agents hit
404
- nextSteps: false, // optional next steps field
447
+ toolsUsed: true, // log which tools agents used
448
+ filesModified: true, // log which files were touched
449
+ result: true, // log action results
450
+ blockers: true, // log blockers agents hit
451
+ nextSteps: false, // optional next steps field
405
452
  },
406
453
  markdownFallback: { enabled: true, path: '.harness/current.md' },
407
454
  },
408
455
 
409
456
  health: {
410
457
  scriptPath: './health.sh',
411
- required: true, // set to false to skip health checks
458
+ required: true, // set to false to skip health checks
412
459
  },
413
460
 
414
461
  tools: {
415
- mcp: { enabled: true, port: 3742 },
462
+ mcp: { enabled: true, port: 3742 },
416
463
  scripts: { enabled: true, outputDir: './.harness/scripts' },
417
464
  },
418
465
  })
@@ -437,19 +484,22 @@ psql "$DATABASE_URL" -c "SELECT 1" > /dev/null 2>&1 || exit 1
437
484
  echo "All checks passed."
438
485
  ```
439
486
 
440
- ### Agent definition files (`.claude/agents/*.md` or `.opencode/agents/*.md`)
487
+ ### Agent definition files
441
488
 
442
- These are Markdown files with a YAML frontmatter and free-form instructions. They are created once and **never overwritten** by `ahk build` — so any edits you make are permanent.
489
+ Created once and **never overwritten** by `ahk build` — your edits are permanent.
443
490
 
444
- You can:
445
- - Add domain-specific context (e.g. "this project uses hexagonal architecture")
446
- - Restrict what the agent is allowed to do
447
- - Add project-specific conventions the agent must follow
448
- - Reference specific files or docs the agent should read first
491
+ **Claude Code** (`.claude/agents/*.md`) and **OpenCode** (`.opencode/agents/*.md`) use Markdown with YAML frontmatter:
449
492
 
450
493
  ```markdown
451
494
  ---
495
+ name: builder
452
496
  description: Builder agent — implements the plan produced by explorer and lead
497
+ tools:
498
+ read: true
499
+ write: true
500
+ edit: true
501
+ bash: true
502
+ permissionMode: acceptEdits
453
503
  ---
454
504
 
455
505
  # Builder Agent
@@ -462,6 +512,29 @@ You are the builder agent for MyApp. Follow these rules:
462
512
  - Use the existing error handling pattern from `src/lib/errors.ts`
463
513
  ```
464
514
 
515
+ **Codex CLI** (`.codex/agents/*.toml`) uses TOML format:
516
+
517
+ ```toml
518
+ name = "builder"
519
+ sandbox_mode = "workspace-write"
520
+
521
+ description = """
522
+ Builder agent — implements the plan produced by explorer and lead.
523
+ """
524
+
525
+ developer_instructions = """
526
+ # Builder Agent
527
+
528
+ You are the builder agent for MyApp. Follow these rules:
529
+
530
+ - All API endpoints must be defined in `src/routes/`
531
+ - Never modify `src/core/` without lead approval
532
+ - Run `npm test` after every change and fix failures before completing
533
+ """
534
+ ```
535
+
536
+ The `sandbox_mode` field controls Codex's filesystem permissions per agent: `"read-only"` for lead, explorer, and reviewer; `"workspace-write"` for builder. The `permissionMode` field in Claude Code agent files enforces the same constraints at the session level (`plan` for read-only roles, `acceptEdits` for builder).
537
+
465
538
  ### `.harness/feature_list.json`
466
539
 
467
540
  The human-editable task backlog. Add tasks here, then run `ahk sync` to load them into SQLite.
@@ -490,46 +563,52 @@ Good acceptance criteria make the difference — the reviewer agent uses them to
490
563
 
491
564
  The harness exposes these tools via MCP. Agents use them instead of reading files directly.
492
565
 
493
- | Tool | Parameters | Description |
494
- |------|-----------|-------------|
495
- | `tasks.get` | `status?` | List tasks, optionally filtered by `pending \| in_progress \| done \| blocked` |
496
- | `tasks.claim` | `id, agent` | Atomically claim a pending task. Returns `task_already_claimed` if another agent got it first |
497
- | `tasks.update` | `id, status` | Change task status |
498
- | `tasks.add` | `title, slug?, description?, acceptance?` | Create a new task directly from MCP (agents can queue work on the fly) |
499
- | `tasks.acceptance.update` | `criterionId` | Mark an acceptance criterion as met. Criterion IDs come from `tasks.get` |
500
- | `actions.start` | `taskId, agent` | Start a new action, returns `actionId` |
501
- | `actions.write` | `actionId, sectionType, content` | Record a text section: `result \| tools_used \| blockers \| next_steps`. Does **not** populate the Files dashboard — use `actions.record_file` for that |
502
- | `actions.complete` | `actionId, summary` | Close an action with a one-line summary |
503
- | `actions.get` | `taskId` | Full action history for a task (all agents, all sections) |
504
- | `actions.record_file` | `actionId, filePath, operation, notes?` | Register a file touch. The **only** way to populate the Files dashboard. `operation`: `read \| created \| modified \| deleted` |
505
- | `actions.record_tool` | `actionId, toolName, argsJson?, resultSummary?` | Register a tool call. The **only** way to populate the Tools dashboard |
506
- | `docs.search` | `query` | Search the `docsPath` folder for content matching the query |
566
+ | Tool | Parameters | Description |
567
+ | ------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
568
+ | `tasks.get` | `status?` | List tasks, optionally filtered by `pending \| in_progress \| done \| blocked` |
569
+ | `tasks.claim` | `id, agent` | Atomically claim a pending task. Returns `task_already_claimed` if another agent got it first |
570
+ | `tasks.update` | `id, status` | Change task status |
571
+ | `tasks.add` | `title, slug?, description?, acceptance?` | Create a new task directly from MCP (agents can queue work on the fly) |
572
+ | `tasks.acceptance.update` | `criterionId` | Mark an acceptance criterion as met. Criterion IDs come from `tasks.get` |
573
+ | `actions.start` | `taskId, agent` | Start a new action, returns `actionId` |
574
+ | `actions.write` | `actionId, sectionType, content` | Record a text section: `result \| tools_used \| blockers \| next_steps`. Does **not** populate the Files dashboard — use `actions.record_file` for that |
575
+ | `actions.complete` | `actionId, summary` | Close an action with a one-line summary |
576
+ | `actions.get` | `taskId` | Full action history for a task (all agents, all sections) |
577
+ | `actions.record_file` | `actionId, filePath, operation, notes?` | Register a file touch. The **only** way to populate the Files dashboard. `operation`: `read \| created \| modified \| deleted` |
578
+ | `actions.record_tool` | `actionId, toolName, argsJson?, resultSummary?` | Register a tool call. The **only** way to populate the Tools dashboard |
579
+ | `docs.search` | `query` | Search the `docsPath` folder for content matching the query |
507
580
 
508
581
  ---
509
582
 
510
583
  ## Agent roles
511
584
 
512
- | Role | Responsibility |
513
- |------|---------------|
514
- | **lead** | Decomposes the task into a plan, assigns sub-agents. Does not write code or read source files. |
515
- | **explorer** | Reads and maps the codebase. Never writes files. Records every file read. |
516
- | **builder** | Implements the plan. Only writes to `writablePaths`. Records every file modified. |
585
+ | Role | Responsibility |
586
+ | ------------ | ------------------------------------------------------------------------------------------------- |
587
+ | **lead** | Decomposes the task into a plan, assigns sub-agents. Does not write code or read source files. |
588
+ | **explorer** | Reads and maps the codebase. Never writes files. Records every file read. |
589
+ | **builder** | Implements the plan. Only writes to `writablePaths`. Records every file modified. |
517
590
  | **reviewer** | Verifies all acceptance criteria are met. Approves or blocks. Runs health check before approving. |
518
591
 
519
592
  ---
520
593
 
521
594
  ## What to commit
522
595
 
523
- | File | Commit? |
524
- |------|---------|
525
- | `agent-harness-kit.config.ts` | Yes |
526
- | `AGENTS.md` | Yes |
527
- | `health.sh` | Yes |
528
- | `.harness/feature_list.json` | Yes |
529
- | `.claude/agents/*.md` | Yes |
530
- | `.claude/mcp.json` / `opencode.json` | Yes |
531
- | `.harness/harness.db` | **No** (gitignored) |
532
- | `.harness/current.md` | **No** (gitignored) |
596
+ | File | Commit? |
597
+ | ----------------------------- | ------------------- |
598
+ | `agent-harness-kit.config.ts` | Yes |
599
+ | `AGENTS.md` | Yes |
600
+ | `CLAUDE.md` | Yes |
601
+ | `health.sh` | Yes |
602
+ | `.harness/feature_list.json` | Yes |
603
+ | `.claude/agents/*.md` | Yes |
604
+ | `.claude/mcp.json` | Yes |
605
+ | `.claude/settings.json` | Yes |
606
+ | `.opencode/agents/*.md` | Yes |
607
+ | `opencode.json` | Yes |
608
+ | `.codex/agents/*.toml` | Yes |
609
+ | `.codex/config.toml` | Yes |
610
+ | `.harness/harness.db` | **No** (gitignored) |
611
+ | `.harness/current.md` | **No** (gitignored) |
533
612
 
534
613
  The rule: commit inputs (config, task definitions, agent instructions). Ignore outputs (DB, auto-generated snapshots).
535
614
 
@@ -537,11 +616,11 @@ The rule: commit inputs (config, task definitions, agent instructions). Ignore o
537
616
 
538
617
  ## Runtime compatibility
539
618
 
540
- | Runtime | SQLite | PostgreSQL | MySQL |
541
- |---------|--------|-----------|-------|
542
- | Node.js ≥ 22 | ✅ uses `node:sqlite` built-in | ✅ via `postgres` package | ✅ via `mysql2` package |
543
- | Bun (any recent) | ✅ uses `bun:sqlite` built-in | ✅ via `postgres` package | ✅ via `mysql2` package |
544
- | Node.js < 22 | ❌ `node:sqlite` not available | ✅ | ✅ |
619
+ | Runtime | SQLite | PostgreSQL | MySQL |
620
+ | ---------------- | ------------------------------ | ------------------------- | ----------------------- |
621
+ | Node.js ≥ 22 | ✅ uses `node:sqlite` built-in | ✅ via `postgres` package | ✅ via `mysql2` package |
622
+ | Bun (any recent) | ✅ uses `bun:sqlite` built-in | ✅ via `postgres` package | ✅ via `mysql2` package |
623
+ | Node.js < 22 | ❌ `node:sqlite` not available | ✅ | ✅ |
545
624
 
546
625
  SQLite requires no additional packages. For PostgreSQL install `postgres`, for MySQL install `mysql2`:
547
626
 
@@ -627,6 +706,7 @@ Types: `feat fix chore refactor docs test perf style build ci revert`
627
706
  - ✅ **`tasks.add` via MCP** — agents can create new tasks on the fly without leaving the conversation.
628
707
  - ✅ **Global installation** — `ahk init` can install the harness to your home directory, shared across projects.
629
708
  - ✅ **Input validation** — all CLI prompts validate and retry on bad values.
709
+ - ✅ **Codex CLI provider** — full support for OpenAI Codex CLI. Generates `.codex/agents/*.toml` files with proper `sandbox_mode` per role and merges `.codex/config.toml` for MCP registration. Overrides the built-in `default` agent so the harness lead runs by default.
630
710
  - **Graphify integration** — connect the harness to Graphify to visualize agent workflows, task dependencies, and action timelines as interactive graphs.
631
711
  - **Open Telemetry integration** — emit OpenTelemetry spans for all agent actions, file operations, and tool calls.
632
712
  - **Jira task adapter** — pull tasks directly from Jira instead of maintaining `feature_list.json` manually.
@@ -10,6 +10,7 @@ tools:
10
10
  write: true
11
11
  edit: true
12
12
  bash: true
13
+ permissionMode: acceptEdits
13
14
  ---
14
15
 
15
16
  # Builder Agent — {{projectName}}
@@ -10,6 +10,7 @@ tools:
10
10
  write: false
11
11
  edit: false
12
12
  bash: true
13
+ permissionMode: plan
13
14
  ---
14
15
 
15
16
  # Explorer Agent — {{projectName}}
@@ -10,6 +10,7 @@ tools:
10
10
  write: false
11
11
  edit: false
12
12
  bash: true
13
+ permissionMode: plan
13
14
  ---
14
15
 
15
16
  # Reviewer Agent — {{projectName}}