Skip to content

feat: unify capability#53

Merged
pedronauck merged 21 commits into
mainfrom
unify-capability
Apr 21, 2026
Merged

feat: unify capability#53
pedronauck merged 21 commits into
mainfrom
unify-capability

Conversation

@pedronauck
Copy link
Copy Markdown
Member

@pedronauck pedronauck commented Apr 21, 2026

Summary by CodeRabbit

  • New Features

    • Clear session conversation (restart session context while keeping same session ID)
    • Cancel in-flight prompts
    • Network capabilities exposed as structured entries (id, summary, outcome, version/digest, requirements)
    • Protocol exchanges now use "capability" messages instead of "recipe"
  • Improvements

    • Better session recovery classification (crashed, orphaned, stalled) and liveness tracking
    • Persistent subprocess health and stall metadata
  • Tests

    • Expanded coverage across session, network, codegen, and integration flows

pedronauck and others added 15 commits April 20, 2026 19:52
Replace the old recipe-era peer-card KindChip row with a unified capability
list that merges `peer_card.capabilities` briefs and the typed
`capability_catalog` into one view model. Swap `recipe` for `capability` in
the protocol-kind registries (channel detail, design showcase, kind-chip
story) and refresh fixtures plus route/panel tests to cover the detailed and
brief-only fallbacks.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@pedronauck pedronauck self-assigned this Apr 21, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 21, 2026

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

💤 Files selected but had no reviewable changes (4)
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/issues/.gitkeep
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/screenshots/.gitkeep
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/issues/.gitkeep
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/screenshots/.gitkeep
⛔ Files ignored due to path filters (270)
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-REG-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-plans/harness-regression.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-plans/harness-test-plan.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_024.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_025.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_026.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_027.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_028.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_029.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_030.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_12.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_13.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_14.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_15.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_16.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_17.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_18.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_19.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_20.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_21.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_22.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_23.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_24.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_25.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_26.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_27.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_28.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_29.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_30.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_31.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_32.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_12.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_13.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_14.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_15.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_16.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_17.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_18.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_19.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_20.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_21.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_22.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_23.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_24.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_25.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_26.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_27.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_28.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_29.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_30.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_31.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_32.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_024.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_025.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_026.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_027.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_028.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_029.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_030.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_031.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_032.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_033.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/issues/BUG-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-FUNC-014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-plans/agent-capabilities-regression.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-plans/agent-capabilities-test-plan.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_004.md is excluded by !**/*.md
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 627dd04f-bbd8-402f-99ff-f56d34750e97

📥 Commits

Reviewing files that changed from the base of the PR and between df064be and 7771a70.

⛔ Files ignored due to path filters (270)
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/memory/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-INT-007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-cases/TC-REG-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-plans/harness-regression.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/test-plans/harness-test-plan.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_024.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_025.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_026.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_027.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_028.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_029.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-001/issue_030.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-002/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/adrs/adr-005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_12.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_13.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_14.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_15.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_16.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_17.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_18.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_19.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_20.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_21.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_22.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_23.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_24.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_25.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_26.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_27.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_28.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_29.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_30.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_31.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/memory/task_32.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_12.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_13.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_14.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_15.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_16.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_17.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_18.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_19.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_20.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_21.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_22.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_23.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_24.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_25.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_26.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_27.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_28.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_29.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_30.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_31.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383759-3e7caf89-redesign/task_32.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/memory/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_024.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_025.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_026.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_027.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_028.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_029.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_030.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_031.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_032.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-001/issue_033.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/reviews-002/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_08.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_09.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_10.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776788383760-75819bb6-storybook-stories/task_11.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/issues/BUG-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-FUNC-014.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-004.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-005.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-006.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-007.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-008.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-009.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-010.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-011.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-012.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-cases/TC-INT-013.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-plans/agent-capabilities-regression.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/test-plans/agent-capabilities-test-plan.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/reviews-003/issue_004.md is excluded by !**/*.md
📒 Files selected for processing (4)
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/issues/.gitkeep
  • .compozy/tasks/_archived/1776788383758-7ec49d11-harness/qa/screenshots/.gitkeep
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/issues/.gitkeep
  • .compozy/tasks/_archived/1776789714756-4ddeaeed-agent-capabilities/qa/screenshots/.gitkeep

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

Adds capability-first networking (replacing recipe), richer capability metadata and discovery, session control endpoints (clear conversation, cancel prompt) with manager implementations, session liveness/stall tracking and recovery classification, transcript UI message migration, OpenAPI TypeScript codegen tooling, many tests, and DB schema additions for session liveness.

Changes

Cohort / File(s) Summary
Codegen CLI & tests
cmd/agh-codegen/main.go, cmd/agh-codegen/main_test.go
Refactored run to runWithPaths allowing explicit paths; expanded tests covering write/check flows and stale-file detection.
OpenAPI TypeScript generator
internal/codegen/openapits/generate.go, internal/codegen/openapits/generate_test.go
New openapits package: Generate/Check artifacts, run external commands, and tests for generation/validation and command error reporting.
Capability model & config
internal/config/capabilities.go, internal/config/capabilities_test.go
CapabilityDef gains Version/Requirements/Digest; normalization, validation, canonical digest computation and tests added.
Network capability DTOs & contract
internal/api/contract/contract.go, internal/api/contract/contract_test.go
Added NetworkCapabilityBriefPayload/NetworkCapabilityPayload/Catalog types; Peer payloads now expose typed capability briefs and capability_catalog in details.
Envelope/kind → capability
internal/network/envelope.go, internal/network/validate.go, internal/network/validate_test.go, internal/network/envelope_integration_test.go
Introduced KindCapability, replaced RecipeBody with CapabilityBody, added normalization and canonical-digest verification, and ErrVerificationFailed.
Capability catalog projection & decoding
internal/network/capability_catalog.go, internal/network/capability_catalog_test.go
Refactored catalog selection/projection, decode helpers, and preserved unified fields (version/digest/requirements).
Peer discovery & brief/catalog wiring
internal/network/peer.go, internal/api/core/network.go, internal/api/core/network_details.go, internal/api/core/network_test.go, internal/network/peer_test.go
Added capability catalog storage/known flags, RefreshRemoteWithCapabilityCatalog, generation of brief payloads from peer ext, and removal of raw ext keys in responses.
Router/lifecycle & delivery
internal/network/router.go, internal/network/lifecycle.go, internal/network/delivery.go, internal/network/router_test.go, internal/network/router_integration_test.go
Switched lifecycle handling to include capabilities, added validation for capability digest, adjusted lifecycle evaluation/sync logic, and updated tests and whois response wiring.
Manager & messaging updates
internal/network/manager.go, internal/network/manager_test.go, internal/network/manager_deliveries...
Ensure ArtifactsSupported includes capability; tests updated for capability-aware peer preparation and trace lifecycle deliveries.
Session transcript → UI messages
internal/session/transcript.go, many tests and handlers (internal/api/..., internal/udsapi/..., internal/daemon/...)
Transcript API changed from []transcript.Message to []transcript.UIMessage across interface, stubs, handlers, and tests; tests and helpers updated to use UI message helpers.
Prompt streaming & tool input handling
internal/api/httpapi/prompt.go, internal/api/udsapi/prompt.go
Decoupled prompt context from request (WithoutCancel), added tool-input readiness tracking, removed SSE Name fields, and adjusted emission order for tool events.
Session control handlers & routes
internal/api/core/handlers.go, internal/api/httpapi/routes.go, internal/api/udsapi/routes.go, internal/api/httpapi/sessions.go, internal/api/udsapi/sessions.go
Added ClearSessionConversation handler and cancelSessionPrompt endpoint handlers and route registrations.
Manager: ClearConversation & CancelPrompt
internal/session/manager_clear.go, internal/session/manager_clear_test.go, internal/session/manager_prompt.go, internal/session/manager_test.go
Implemented Manager.ClearConversation with DB backup/restore safety and restart semantics; implemented Manager.CancelPrompt to cancel active prompts; tests added.
Session liveness & recovery classification
internal/session/liveness.go, internal/session/session.go, internal/session/query.go, internal/session/resume_repair.go, related tests
Added SessionLivenessMeta persistence, classification helpers (stalled/orphaned/crashed/etc.), observe/mark liveness on prompt events, and integrate classification into resume/repair flows and tests.
DB schema & store liveness integration
internal/store/globaldb/*, internal/store/session_liveness.go, internal/store/types.go
Added sessions table columns (subprocess_pid, subprocess_started_at, last_update_at, stall_state, stall_reason); implemented SessionLivenessMeta, serialization/parsing, and validations.
Process start-time helpers
internal/procutil/*
Added StartedAt implementations (unix/windows), MatchesStartTime with tolerance, and tests.
Task recovery payloads & runtime changes
internal/task/*, internal/daemon/task_runtime.go
Added classification/detail fields to RunBootRecovery metadata and propagation into task boot-recovery planning and tests.
Windows no-op helpers
internal/acp/process_tree_windows.go, internal/hooks/executor_subprocess_windows.go, internal/subprocess/signals_windows.go
Added placeholder Windows force-exit functions to satisfy builds.
Tests, integration, and e2e updates
many internal/..._test.go files across API, UDS, daemon, network, e2e lanes, CLI tests
Extensive test updates to reflect capability kind, UI transcript messages, new session endpoints, liveness behavior, and codegen wiring; added many new tests.
Misc (QA placeholders)
.compozy/tasks/unified-capabilities/qa/issues/.gitkeep, .compozy/tasks/unified-capabilities/qa/screenshots/.gitkeep
Added .gitkeep files to preserve QA directories.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant HTTP_Handler as HTTP Handler
    participant SessionMgr as SessionManager
    participant Driver
    participant Store
    Client->>HTTP_Handler: POST /api/sessions/:id/prompt/cancel
    HTTP_Handler->>SessionMgr: CancelPrompt(ctx, id)
    SessionMgr->>SessionMgr: locate session / load meta
    alt session prompting
        SessionMgr->>Driver: Cancel(ctx, proc)
        Driver-->>SessionMgr: ack
        SessionMgr->>Store: writeMeta(liveness update)
        Store-->>SessionMgr: ok
        SessionMgr-->>HTTP_Handler: success
        HTTP_Handler-->>Client: 200 OK
    else not prompting
        SessionMgr-->>HTTP_Handler: success (no-op)
        HTTP_Handler-->>Client: 200 OK
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
internal/observe/reconcile.go (1)

62-81: ⚠️ Potential issue | 🟠 Major

Preserve liveness when rebuilding store.SessionInfo.

This path now normalizes recovered store.SessionMeta, but the appended store.SessionInfo still copies only the core fields/environment. That means a reconcile from disk can drop Liveness data like subprocess PID, last-update time, and stall classification even when it exists in metadata, which undercuts the new recovery/stall reporting.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/observe/reconcile.go` around lines 62 - 81, The code builds a
store.SessionInfo from normalized meta but omits the Liveness field, so
recovered liveness (subprocess PID, last-update time, stall classification) is
lost; update the append to include the Liveness from normalized (e.g., set
Liveness: normalized.Liveness or a deep-cloned equivalent) alongside Environment
(or use a helper to clone liveness if needed) so that normalizeRecoveredMeta ->
store.SessionInfo preserves liveness data during reconcile.
internal/daemon/network_e2e_assertions_test.go (1)

45-61: ⚠️ Potential issue | 🟠 Major

Only validate completed message parts to avoid masking split-part regressions.

UIMessageText(message) concatenates all text parts regardless of their State field (streaming vs. done), allowing attributes split across incomplete parts to satisfy all needles. For E2E assertions, only check message.Parts where Type == "text" and State == "done" independently, ensuring the final message state actually contains the expected correlated attributes rather than just their presence across transient parts.

Suggested fix
for _, message := range messages {
+	for _, part := range message.Parts {
+		if part.Type != "text" || part.State != "done" {
+			continue
+		}
+		content := strings.TrimSpace(part.Text)
+		if content == "" {
+			continue
+		}
+
		allPresent := true
		for _, check := range checks {
			if check.needle != "" && !strings.Contains(content, check.needle) {
				allPresent = false
				break
			}
		}
		if allPresent {
			matched = true
+			break
+		}
+	}
+	if matched {
		break
	}
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/daemon/network_e2e_assertions_test.go` around lines 45 - 61, Replace
the current per-message check that uses transcript.UIMessageText(message) with
logic that iterates message.Parts and only considers parts where part.Type ==
"text" and part.State == "done"; for each such done text part, trim its text and
verify that all checks' needles are contained within that single part (rather
than across different parts) and mark matched true only when a single done text
part satisfies all needles; reference message.Parts, part.Type, part.State, and
the checks/needle variables when updating the loop.
internal/session/session.go (1)

312-324: ⚠️ Potential issue | 🟠 Major

Add markExited() to markSessionStopped() before persisting metadata.

markSessionStopped() calls clearProcess() and writeMeta() without clearing Liveness. While persistStopClassification() happens to call markExited() earlier in the same flow, this creates an implicit dependency. If the code path changes or diverges, stale SubprocessPID/SubprocessStartedAt will feed the recovery classifier incorrect evidence.

Each teardown path should independently ensure Liveness is cleared before writeMeta() is called:

func (m *Manager) markSessionStopped(session *Session) error {
	now := m.now()
	session.markExited(now)      // Add this
	session.clearProcess(now)
	if err := session.markStopped(now); err != nil {
		return err
	}
	return m.writeMeta(session)
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/session/session.go` around lines 312 - 324, markSessionStopped
currently clears process and writes metadata without ensuring Liveness is
cleared, creating an implicit dependency; update the markSessionStopped function
to call session.markExited(now) before session.clearProcess(now) and before
invoking session.markStopped(now) and m.writeMeta(session) so
SubprocessPID/SubprocessStartedAt/Liveness are cleared locally (referencing
markSessionStopped, markExited, clearProcess, markStopped, writeMeta).
internal/network/router.go (1)

272-283: ⚠️ Potential issue | 🔴 Critical

Send lifecycle validation is now racy.

validateSendLifecycle() only reads the interaction state, then publish happens, and the actual mutation is deferred to syncSentLifecycle(). Two concurrent sends on the same interaction_id can both pass the preflight and publish, even though the second one should be rejected once the first closes the interaction. The post-publish sync then drops its error, so the caller still sees success.

Also applies to: 818-850

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/network/router.go` around lines 272 - 283, The race happens because
validateSendLifecycle(envelope) only reads state, publishEnvelope(...) happens,
and syncSentLifecycle(envelope, now) mutates state later (and its error is
dropped), allowing two concurrent sends to both publish; fix by making the
validation + reservation atomic: introduce or use a per-interaction lock or an
atomic "reserve send" operation (e.g., a new method like
reserveSendLifecycle(interactionID, now) or extend validateSendLifecycle to
mutate state) so that the send path performs validate+reserve before calling
publishEnvelope; ensure syncSentLifecycle still finalizes state but its error is
propagated to the caller and causes the send to fail if the finalize step
detects the interaction has closed. Reference validateSendLifecycle,
syncSentLifecycle, publishEnvelope, subjectForEnvelope, and the SendResult
return path when updating the code.
🟡 Minor comments (9)
cmd/agh-codegen/main_test.go-461-474 (1)

461-474: ⚠️ Potential issue | 🟡 Minor

Wrap TestMarshalOpenAPI assertions in a t.Run("Should...") subtest.

This is the only new test case in the file not following the required Should... subtest pattern.

As per coding guidelines, "MUST use t.Run("Should...") pattern for ALL test cases."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@cmd/agh-codegen/main_test.go` around lines 461 - 474, Update
TestMarshalOpenAPI to use the required t.Run("Should...") subtest pattern by
wrapping the current assertions inside a t.Run call; locate the
TestMarshalOpenAPI function and call t.Run with a descriptive "Should ..." name
(e.g., "Should marshal OpenAPI with version and daemon route"), then move the
marshalOpenAPI invocation and the two bytes.Contains checks into that subtest
body so the test follows the project's subtest naming convention.
internal/codegen/openapits/generate_test.go-47-203 (1)

47-203: ⚠️ Potential issue | 🟡 Minor

Rename subtests to the required Should... convention.

Subtests in this range (for example, accepts matching generated output, rejects stale generated output) do not follow the required t.Run("Should...") pattern.

As per coding guidelines, "MUST use t.Run("Should...") pattern for ALL test cases."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/codegen/openapits/generate_test.go` around lines 47 - 203, Rename
all t.Run subtest name strings to the "Should ..." convention: change "accepts
matching generated output" → "Should accept matching generated output", "rejects
stale generated output" → "Should reject stale generated output", "rejects
missing generated output" → "Should reject missing generated output" (in the
first test group and the same three titles inside TestCheckGeneratedFile), and
in TestRunCommand rename "succeeds for zero exit status" → "Should succeed for
zero exit status", "prefers stderr details" → "Should prefer stderr details",
"falls back to stdout details" → "Should fall back to stdout details", and
"reports raw execution errors when the command cannot start" → "Should report
raw execution errors when the command cannot start"; update the t.Run string
literals only (no logic changes) in the functions and helper tests that call
t.Run and keep the existing test bodies (references: checkGeneratedFile,
runCommand, writeTestSpec, writeExecutableScript).
internal/codegen/openapits/generate.go-49-49 (1)

49-49: ⚠️ Potential issue | 🟡 Minor

Handle temporary-file cleanup errors in Check.

Line 49 ignores os.Remove errors entirely, which can silently leak temp files and violates the project’s error-handling rule.

Suggested fix
-func Check(ctx context.Context, artifact Artifact) error {
+func Check(ctx context.Context, artifact Artifact) (retErr error) {
 	file, err := os.CreateTemp("", "openapi-types-*.d.ts")
 	if err != nil {
 		return fmt.Errorf("create temporary output for %q: %w", artifact.OutputPath, err)
 	}
@@
-	defer os.Remove(file.Name())
+	defer func() {
+		if rmErr := os.Remove(file.Name()); rmErr != nil && !errors.Is(rmErr, os.ErrNotExist) {
+			rmErr = fmt.Errorf("remove temporary output %q: %w", file.Name(), rmErr)
+			if retErr == nil {
+				retErr = rmErr
+			} else {
+				retErr = errors.Join(retErr, rmErr)
+			}
+		}
+	}()

As per coding guidelines, "Never ignore errors with _ — every error must be handled or have a written justification."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/codegen/openapits/generate.go` at line 49, The defer
os.Remove(file.Name()) call in Check currently ignores any error; change it to a
deferred closure that captures the temp file name and checks the returned error
from os.Remove(name), handling it per project rules (e.g., if the function has a
named error return, wrap/append the remove error to the Check error; otherwise
log the error or ignore only when os.IsNotExist(err) with a comment). Locate
this in the Check function and replace the direct os.Remove call with a defer
func() { if err := os.Remove(name); err != nil { /* handle: wrap/return/log or
ignore only when IsNotExist with justification */ } }(), where name is obtained
from file.Name().
internal/daemon/daemon_test.go-4196-4220 (1)

4196-4220: ⚠️ Potential issue | 🟡 Minor

ClearConversation fallback is currently unreachable for missing sessions.

At Line 4201-Line 4203, any Status error returns immediately, so the fallback at Line 4205 never handles not-found cases. This can break tests expecting clear-conversation to succeed for absent sessions.

💡 Suggested fix
 func (f *fakeSessionManager) ClearConversation(
 	ctx context.Context,
 	id string,
 ) (*session.Session, error) {
 	info, err := f.Status(ctx, id)
 	if err != nil {
+		if errors.Is(err, session.ErrSessionNotFound) {
+			return &session.Session{ID: id, State: session.StateActive}, nil
+		}
 		return nil, err
 	}
 	if info == nil {
 		return &session.Session{ID: id, State: session.StateActive}, nil
 	}

As per coding guidelines, "Use errors.Is() and errors.As() for error matching — never compare error strings".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/daemon/daemon_test.go` around lines 4196 - 4220, The
ClearConversation implementation returns immediately on any Status error, making
the intended "missing session" fallback unreachable; update
fakeSessionManager.ClearConversation to detect a not-found error from f.Status
using errors.Is (or errors.As) and only return the fallback session when the
error indicates "not found" (e.g., compare err with the repository/session
not-found sentinel), while still returning other errors as before; keep
references to f.Status and fakeSessionManager.ClearConversation when making the
change.
internal/session/manager_test.go-942-1018 (1)

942-1018: ⚠️ Potential issue | 🟡 Minor

Rename subtests to the required Should... pattern.

Coverage is good, but the subtest labels should use the mandated naming convention.

✏️ Suggested subtest label updates
-	t.Run("active prompting session cancels driver prompt", func(t *testing.T) {
+	t.Run("Should cancel driver prompt for an active prompting session", func(t *testing.T) {
...
-	t.Run("active session without prompt is a no-op", func(t *testing.T) {
+	t.Run("Should no-op when session is active but not prompting", func(t *testing.T) {
...
-	t.Run("known stopped session is a no-op", func(t *testing.T) {
+	t.Run("Should no-op when session is already stopped", func(t *testing.T) {
...
-	t.Run("unknown session returns ErrSessionNotFound", func(t *testing.T) {
+	t.Run("Should return ErrSessionNotFound for unknown session", func(t *testing.T) {

As per coding guidelines "MUST use t.Run("Should...") pattern for ALL test cases".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/session/manager_test.go` around lines 942 - 1018, Rename the subtest
labels to follow the "Should..." pattern: change t.Run("active prompting session
cancels driver prompt", ...) to something like t.Run("Should cancel driver
prompt for active prompting session", ...); change t.Run("active session without
prompt is a no-op", ...) to t.Run("Should be no-op for active session without
prompt", ...); change t.Run("known stopped session is a no-op", ...) to
t.Run("Should be no-op for known stopped session", ...); and change
t.Run("unknown session returns ErrSessionNotFound", ...) to t.Run("Should return
ErrSessionNotFound for unknown session", ...). Keep the test bodies unchanged
(they exercise manager.CancelPrompt, h.driver.cancelCalls, h.manager.Stop,
etc.). Ensure all four t.Run labels in manager_test.go are updated to the new
"Should..." phrasing.
internal/network/audit_test.go-238-266 (1)

238-266: ⚠️ Potential issue | 🟡 Minor

Wrap this case in a t.Run("Should...") subtest to match test conventions.

The test logic is good, but the new case should follow the project’s required subtest naming pattern.

♻️ Suggested structure change
 func TestAuditWriterRecordsCapabilityTransfersAsCapabilityAudits(t *testing.T) {
 	t.Parallel()
-
-	storeSink := &recordingAuditStore{}
-	writer, err := NewAuditWriter("", storeSink)
-	if err != nil {
-		t.Fatalf("NewAuditWriter() error = %v", err)
-	}
-	recordedAt := time.Date(2026, 4, 20, 12, 0, 0, 0, time.UTC)
-	writer.now = func() time.Time { return recordedAt }
-
-	if err := writer.RecordReceived(context.Background(), "sess-audit", testCapabilityAuditEnvelope(t)); err != nil {
-		t.Fatalf("RecordReceived(capability) error = %v", err)
-	}
-
-	if got, want := len(storeSink.entries), 1; got != want {
-		t.Fatalf("len(store entries) = %d, want %d", got, want)
-	}
-	entry := storeSink.entries[0]
-	if got, want := entry.Kind, string(KindCapability); got != want {
-		t.Fatalf("entry.Kind = %q, want %q", got, want)
-	}
-	if got, want := entry.Direction, AuditDirectionReceived; got != want {
-		t.Fatalf("entry.Direction = %q, want %q", got, want)
-	}
-	if got := len(storeSink.messages); got != 0 {
-		t.Fatalf("len(store timeline messages) = %d, want 0 for capability transfers", got)
-	}
+	t.Run("Should record capability transfers as audits without timeline entries", func(t *testing.T) {
+		storeSink := &recordingAuditStore{}
+		writer, err := NewAuditWriter("", storeSink)
+		if err != nil {
+			t.Fatalf("NewAuditWriter() error = %v", err)
+		}
+		recordedAt := time.Date(2026, 4, 20, 12, 0, 0, 0, time.UTC)
+		writer.now = func() time.Time { return recordedAt }
+
+		if err := writer.RecordReceived(context.Background(), "sess-audit", testCapabilityAuditEnvelope(t)); err != nil {
+			t.Fatalf("RecordReceived(capability) error = %v", err)
+		}
+
+		if got, want := len(storeSink.entries), 1; got != want {
+			t.Fatalf("len(store entries) = %d, want %d", got, want)
+		}
+		entry := storeSink.entries[0]
+		if got, want := entry.Kind, string(KindCapability); got != want {
+			t.Fatalf("entry.Kind = %q, want %q", got, want)
+		}
+		if got, want := entry.Direction, AuditDirectionReceived; got != want {
+			t.Fatalf("entry.Direction = %q, want %q", got, want)
+		}
+		if got := len(storeSink.messages); got != 0 {
+			t.Fatalf("len(store timeline messages) = %d, want 0 for capability transfers", got)
+		}
+	})
 }

As per coding guidelines "MUST use t.Run("Should...") pattern for ALL test cases".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/network/audit_test.go` around lines 238 - 266, Wrap the existing
test body of TestAuditWriterRecordsCapabilityTransfersAsCapabilityAudits in a
t.Run subtest using the "Should..." naming pattern (e.g., t.Run("Should record
capability transfers as capability audits", func(t *testing.T) { ... })),
leaving all assertions and setup (storeSink := &recordingAuditStore{},
NewAuditWriter, writer.now override, writer.RecordReceived call, and the
subsequent checks on storeSink.entries, entry.Kind, entry.Direction and
storeSink.messages) unchanged but moved inside the t.Run closure; ensure you
pass t to the closure and keep t.Parallel() at the top of the parent test if
parallelization is still desired.
internal/daemon/task_runtime.go-517-532 (1)

517-532: ⚠️ Potential issue | 🟡 Minor

Don't classify orphaned/stalled sessions from PID liveness alone.

These branches only check procutil.Alive(liveness.SubprocessPID). After a reboot, PID reuse can make an unrelated process look like the old session subprocess, so the new recovery metadata can report orphaned or stalled for the wrong process. You already persist SubprocessStartedAt; use it to confirm process identity before emitting those classifications.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/daemon/task_runtime.go` around lines 517 - 532, The code currently
classifies stalled/orphaned based solely on
procutil.Alive(liveness.SubprocessPID); change it to verify process identity by
comparing the live process start time to the persisted
liveness.SubprocessStartedAt before returning taskRecoveryClassificationStalled
or taskRecoveryClassificationOrphaned. Use procutil (e.g., procutil.StartTime or
equivalent API) to fetch the process start time for liveness.SubprocessPID,
require that liveness.SubprocessStartedAt is non-nil/non-zero and matches the
fetched start time (allowing for appropriate time-zone/precision normalization),
and only then emit the stalled/orphaned classification (calling
firstTaskRecoveryDetail or fmt.Sprintf as before). If procutil fails or the
start times do not match, do not classify based on PID liveness alone.
internal/daemon/daemon_network_collaboration_integration_test.go-353-356 (1)

353-356: ⚠️ Potential issue | 🟡 Minor

The broadcast assertion only checks the sender transcript.

If fan-out to curatorSession regresses, this scenario still passes because every later step is directed. Please add a recipient-side transcript check here so the "capability say delivery" step still validates broadcast delivery.

Possible assertion tweak
 waitForRuntimeCondition(t, "capability say delivery", 10*time.Second, func() bool {
 	return channelHasMessageID(ctx, harness, "capabilities", "msg_capability_say_01") &&
-		sessionTranscriptHasNeedle(ctx, harness, releaseSession.ID, attributeNeedle("kind", "say"))
+		sessionTranscriptHasNeedle(ctx, harness, releaseSession.ID, attributeNeedle("id", "msg_capability_say_01")) &&
+		sessionTranscriptHasNeedle(ctx, harness, curatorSession.ID, attributeNeedle("id", "msg_capability_say_01"))
 })
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/daemon/daemon_network_collaboration_integration_test.go` around
lines 353 - 356, The current waitForRuntimeCondition call only verifies the
sender transcript and channel ("capability say delivery") using
channelHasMessageID and sessionTranscriptHasNeedle(releaseSession.ID,...); add a
second transcript check for the recipient (curatorSession) so broadcast fan-out
is validated: update the predicate to also require
sessionTranscriptHasNeedle(ctx, harness, curatorSession.ID,
attributeNeedle("kind","say")) (keeping the existing channelHasMessageID and
releaseSession check) so the waitForRuntimeCondition asserts delivery to both
sender and recipient transcripts.
internal/network/envelope.go-275-288 (1)

275-288: ⚠️ Potential issue | 🟡 Minor

Inconsistent omitempty on Digest field.

Digest at line 281 lacks omitempty, but the corresponding NetworkCapabilityPayload in contract.go (line 330) uses omitempty for the same field. This inconsistency may cause unexpected behavior when capabilities are serialized without a digest.

🔧 Suggested fix for consistency
 type CapabilityEnvelopePayload struct {
 	ID                string   `json:"id"`
 	Summary           string   `json:"summary"`
 	Outcome           string   `json:"outcome"`
 	Version           string   `json:"version,omitempty"`
-	Digest            string   `json:"digest"`
+	Digest            string   `json:"digest,omitempty"`
 	ContextNeeded     []string `json:"context_needed,omitempty"`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/network/envelope.go` around lines 275 - 288, The JSON tag for
CapabilityEnvelopePayload.Digest is missing "omitempty", making serialization
inconsistent with NetworkCapabilityPayload; update the struct field Digest in
CapabilityEnvelopePayload to include `omitempty` in its json tag so it matches
NetworkCapabilityPayload (ensure the change is made on the Digest field of the
CapabilityEnvelopePayload type).
🧹 Nitpick comments (10)
internal/e2elane/lanes_test.go (1)

163-183: Wrap this new case in t.Run("Should...") (table/subtest style).

This test is valid functionally, but it bypasses the required subtest pattern used in this repo for Go tests. Please convert it to a table-driven/subtest form (even with one case) and use a Should... subtest name.

As per coding guidelines, **/*_test.go: "Use table-driven tests with subtests (t.Run) as default pattern for Go tests" and "MUST use t.Run("Should...") pattern for ALL test cases".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/e2elane/lanes_test.go` around lines 163 - 183, Wrap
TestRuntimeLaneIncludesHarnessPackageCoverage in a table-driven subtest using
t.Run with a "Should..." name: convert the body into a test case struct (even a
single case) and call t.Run("Should include harness package coverage", func(t
*testing.T) { t.Parallel(); ... }) where you invoke PlanForLane(LaneRuntime) and
assert against plan.GoSuites and HarnessRuntimeE2EPattern; keep the existing
checks for the single-package match and the Run pattern but move them inside the
subtest closure so the test follows the repository's table/subtest style and
naming conventions while preserving
TestRuntimeLaneIncludesHarnessPackageCoverage semantics.
internal/extension/host_api_test.go (1)

4849-4863: Consider using t.Errorf instead of t.Fatalf in cleanup hooks.

Using t.Fatalf inside t.Cleanup stops execution of subsequent cleanup hooks and can produce confusing output since the test has already completed. Cleanup errors are typically informational—you want to report them but allow other cleanup hooks to run.

♻️ Suggested change
 	t.Cleanup(func() {
 		ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 		defer cancel()
 		for _, info := range sessions.List() {
 			if info == nil {
 				continue
 			}
 			if err := sessions.Stop(ctx, info.ID); err != nil && !errors.Is(err, session.ErrSessionNotFound) {
-				t.Fatalf("sessions.Stop(%q) cleanup error = %v", info.ID, err)
+				t.Errorf("sessions.Stop(%q) cleanup error = %v", info.ID, err)
 			}
 		}
 		if err := sessions.WaitForFinalizations(ctx); err != nil {
-			t.Fatalf("sessions.WaitForFinalizations() cleanup error = %v", err)
+			t.Errorf("sessions.WaitForFinalizations() cleanup error = %v", err)
 		}
 	})
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/extension/host_api_test.go` around lines 4849 - 4863, In the
t.Cleanup closure replace calls to t.Fatalf with t.Errorf so cleanup errors are
reported without aborting other cleanup hooks: specifically, in the loop that
iterates sessions.List() and calls sessions.Stop(ctx, info.ID) (checking
!errors.Is(err, session.ErrSessionNotFound)) and in the
sessions.WaitForFinalizations(ctx) error check, change the failure reporting to
use t.Errorf with the same message text so cleanup can continue.
internal/codegen/openapits/generate_test.go (1)

13-42: Use t.Run("Should...") for TestGenerate to match default test structure.

TestGenerate is a single-case top-level test; wrapping it in a Should... subtest keeps this file aligned with the repository’s required test style.

As per coding guidelines, "Use table-driven tests with subtests (t.Run) as default pattern for Go tests."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/codegen/openapits/generate_test.go` around lines 13 - 42, Wrap the
existing TestGenerate body in a single subtest using t.Run — keep the
TestGenerate function as the top-level test but replace its direct test logic
with t.Run("Should generate types from spec", func(t *testing.T) { ... }) and
move the current t.Parallel(), temp dir setup, writeTestSpec, call to Generate,
file read, and assertions into that subtest; ensure t.Parallel() is called
inside the subtest, and retain references to Artifact, Generate, and
writeTestSpec so behavior and assertions remain unchanged.
internal/store/globaldb/global_db_session_test.go (1)

29-46: Assert the two new liveness timestamps too.

This query now includes subprocess_started_at and last_update_at, but the test only checks PID/stall fields. A column-order regression can mis-wire either timestamp and still pass, so please assert both parsed values as part of the new scan contract.

As per coding guidelines, Focus on critical paths: workflow execution, state management, error handling and Ensure tests verify behavior outcomes, not just function calls.

Also applies to: 70-81

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/store/globaldb/global_db_session_test.go` around lines 29 - 46, The
test in global_db_session_test.go that builds the row with formatTimestamp(...)
must also assert the parsed subprocess_started_at and last_update_at values
rather than only PID/stall fields; update the relevant test (the one currently
asserting PID/stall) to add assertions that the returned session's
SubprocessStartedAt and LastUpdateAt (or similarly named struct fields) equal
the two formatTimestamp values (2026-04-03T12:03:00Z and 2026-04-03T12:04:00Z /
12:04:30Z as appropriate), ensuring both liveness timestamps are validated
alongside existing checks so column-order regressions fail the test.
internal/api/httpapi/session-clear_test.go (1)

12-49: Use the repo’s standard t.Run("Should...") subtest pattern here.

These are new handler cases, and they look independent enough to be grouped as subtests and run in parallel. That would align this file with the rest of the Go test conventions the repo asks for.

As per coding guidelines, Use table-driven tests with subtests (\t.Run`) as default pattern for Go tests, Add t.Parallel() for independent subtests in Go, and MUST use t.Run("Should...") pattern for ALL test cases`.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/api/httpapi/session-clear_test.go` around lines 12 - 49, Combine the
two independent tests into a single TestClearSessionConversationHandler that
uses t.Run("Should return session", func(t *testing.T){ t.Parallel(); ... }) and
t.Run("Should return conflict for prompt in progress", func(t *testing.T){
t.Parallel(); ... }) subtests, preserving the existing setup and assertions from
TestClearSessionConversationHandlerReturnsSession and
TestClearSessionConversationHandlerReturnsConflictForPromptInProgress (keep the
stubSessionManager ClearFn behavior, newTestRouter/newTestHandlers usage,
performRequest and assertions intact) so each subtest runs in parallel and
follows the repo's "Should..." naming convention.
internal/store/globaldb/global_db_test.go (1)

991-996: Round-trip the other new liveness fields too.

This fixture now populates LastUpdateAt and StallState, but the assertions only verify SubprocessPID and StallReason. A regression in the last_update_at or stall_state read/write path would still pass this test.

Also applies to: 1038-1046

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/store/globaldb/global_db_test.go` around lines 991 - 996, The test
populates store.SessionLivenessMeta with LastUpdateAt and StallState but only
asserts SubprocessPID and StallReason; update the assertions in the tests that
exercise SessionLivenessMeta (the block creating store.SessionLivenessMeta and
the other occurrence around the 1038–1046 area) to also verify LastUpdateAt is
equal to the original ptrTime value and StallState equals
store.SessionStallStateDetected so the LastUpdateAt and StallState read/write
paths are round-tripped and validated.
internal/session/manager_integration_test.go (1)

164-173: Compute the expected digest instead of reading it from the fixture.

capabilityAgent.Capabilities.Capabilities[0].Digest starts empty in this literal, so this assertion only verifies digest projection if some earlier helper mutated the catalog in place. Deriving the expected value with aghconfig.CanonicalCapabilityDigest(...) makes the new check deterministic.

Example tweak
+	digest, err := aghconfig.CanonicalCapabilityDigest(capabilityAgent.Capabilities.Capabilities[0])
+	if err != nil {
+		t.Fatalf("CanonicalCapabilityDigest() error = %v", err)
+	}
 	wantCapabilities := []NetworkPeerCapability{{
  		ID:                "review-pr",
  		Summary:           "Review pull requests",
  		Outcome:           "Deliver actionable pull request feedback",
  		Version:           "1.0.0",
- 		Digest:            capabilityAgent.Capabilities.Capabilities[0].Digest,
+ 		Digest:            digest,
  		ContextNeeded:     []string{"Pull request diff", "Acceptance criteria"},
  		ArtifactsExpected: []string{"Review summary"},
  		Requirements:      []string{"review-guidelines", "workspace-write"},
 	}}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/session/manager_integration_test.go` around lines 164 - 173, The
test builds wantCapabilities with an empty Digest pulled from
capabilityAgent.Capabilities.Capabilities[0].Digest; instead compute the
expected digest deterministically using aghconfig.CanonicalCapabilityDigest on
the capability's canonical form and assign that value to the Digest field in
wantCapabilities (referencing NetworkPeerCapability, wantCapabilities, and
capabilityAgent.Capabilities.Capabilities[0]); this ensures the assertion uses a
computed canonical digest rather than relying on a mutated fixture.
internal/session/manager_clear_test.go (1)

12-118: Prefer t.Run("Should...") subtests for the new clear-conversation coverage.

These two scenarios exercise the same API with duplicated harness/prompt setup. Folding them into table-driven subtests would make the new file easier to extend with more clear/reset cases.

As per coding guidelines, "Use table-driven tests with subtests (t.Run) as default pattern for Go tests" and "**/*_test.go: MUST use t.Run("Should...") pattern for ALL test cases".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/session/manager_clear_test.go` around lines 12 - 118, Refactor the
two top-level tests TestClearConversationRestartsSameSessionWithFreshContext and
TestClearConversationRejectsPromptInProgress into a table-driven test that uses
t.Run("Should...") subtests: keep the shared setup (newHarness, createSession)
factored once and moved into a per-case setup routine, and for each case set any
case-specific state (e.g., set h.driver.promptHook for the "prompt in progress"
case, or leave it default for the "restart fresh context" case), call
h.manager.ClearConversation and run the existing assertions inside the
corresponding t.Run body; factor repeated helpers (collectEvents,
readStoredEvents, waitForCondition) into local helper functions and ensure each
subtest uses t.Parallel() as appropriate to preserve concurrency semantics.
internal/network/router_integration_test.go (1)

119-411: Wrap these new scenarios in t.Run("Should...") subtests.

Both tests add more capability lifecycle coverage, but they still use standalone test bodies instead of the repo’s required subtest pattern. Moving these into t.Run("Should ...") blocks will also make the repeated router setup easier to extend for future cases.

As per coding guidelines, MUST use t.Run("Should...") pattern for ALL test cases.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/network/router_integration_test.go` around lines 119 - 411, Both
TestRoutersExchangeBroadcastCapabilityTransfers and
TestRoutersPreserveCapabilityLifecycleAcrossPeers must be converted to use the
repo's required subtest pattern: wrap the existing test bodies in t.Run("Should
...", func(t *testing.T){ ... }) subtests (move t.Parallel() into the subtest if
needed) so each scenario becomes a named "Should ..." subtest; update the
top-level test functions (TestRoutersExchangeBroadcastCapabilityTransfers and
TestRoutersPreserveCapabilityLifecycleAcrossPeers) to call t.Run with
descriptive titles (e.g. "Should exchange broadcast capability transfers" and
"Should preserve capability lifecycle across peers") and place the current
contents inside the corresponding anonymous func(t *testing.T) while preserving
all calls to NewTransport, NewPeerRegistry, NewRouter, subscribeRouter,
routerA.Send/PublishGreet, waitForRouterCondition, waitForDelivery, and the
final errCh select.
internal/session/liveness.go (1)

124-138: Consider removing unnecessary cloning in equality check.

CloneSessionLivenessMeta creates copies but only field reads follow—no mutation occurs. The cloning adds allocation overhead without benefit.

♻️ Suggested simplification
 func sessionLivenessEqual(left *store.SessionLivenessMeta, right *store.SessionLivenessMeta) bool {
-	lhs := store.CloneSessionLivenessMeta(left)
-	rhs := store.CloneSessionLivenessMeta(right)
 	switch {
-	case lhs == nil && rhs == nil:
+	case left == nil && right == nil:
 		return true
-	case lhs == nil || rhs == nil:
+	case left == nil || right == nil:
 		return false
 	}
-	return lhs.SubprocessPID == rhs.SubprocessPID &&
-		timesEqual(lhs.SubprocessStartedAt, rhs.SubprocessStartedAt) &&
-		timesEqual(lhs.LastUpdateAt, rhs.LastUpdateAt) &&
-		lhs.StallState == rhs.StallState &&
-		lhs.StallReason == rhs.StallReason
+	return left.SubprocessPID == right.SubprocessPID &&
+		timesEqual(left.SubprocessStartedAt, right.SubprocessStartedAt) &&
+		timesEqual(left.LastUpdateAt, right.LastUpdateAt) &&
+		left.StallState == right.StallState &&
+		left.StallReason == right.StallReason
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/session/liveness.go` around lines 124 - 138, The equality function
sessionLivenessEqual currently calls store.CloneSessionLivenessMeta for both
inputs but never mutates them; remove those clones and compare the input
pointers/fields directly: use left and right (handle nil cases the same way) and
then compare SubprocessPID, SubprocessStartedAt, LastUpdateAt, StallState, and
StallReason (using timesEqual for time fields) without allocating cloned copies
or calling CloneSessionLivenessMeta.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 921adb09-d901-4be1-ba9f-3d89bbc28eeb

📥 Commits

Reviewing files that changed from the base of the PR and between f76709a and 7770c40.

⛔ Files ignored due to path filters (109)
  • .agents/skills/assistant-ui/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/references/architecture.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/references/packages.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/primitives/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/primitives/references/action-bar.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/primitives/references/composer.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/primitives/references/message.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/primitives/references/thread.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/runtime/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/runtime/references/external-store.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/runtime/references/local-runtime.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/runtime/references/state-hooks.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/runtime/references/thread-list.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/runtime/references/types.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/streaming/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/streaming/references/assistant-transport.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/streaming/references/data-stream.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/streaming/references/encoders.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/tools/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/tools/references/human-in-loop.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/tools/references/make-tool.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/tools/references/tool-ui.md is excluded by !**/*.md, !.agents/**
  • .codex/plans/2026-04-20-prompt-stream-stall.md is excluded by !**/*.md
  • .codex/plans/2026-04-20-session-chat-production-hardening.md is excluded by !**/*.md
  • .codex/plans/2026-04-20-session-creation-feedback.md is excluded by !**/*.md
  • .codex/plans/2026-04-21-assistant-ui-hard-cut.md is excluded by !**/*.md
  • .compozy/tasks/assistant-ui/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/assistant-ui/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/assistant-ui/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/assistant-ui/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/assistant-ui/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/assistant-ui/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/assistant-ui/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/adrs/adr-003.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/adrs/adr-004.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/adrs/adr-005.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_01.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_02.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_03.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_04.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_05.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_06.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_07.md is excluded by !**/*.md
  • .compozy/tasks/session-driver-override/task_08.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_08.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_09.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/memory/task_10.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/issues/BUG-001.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/issues/BUG-002.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/issues/BUG-003.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-cases/TC-INT-004.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-cases/TC-REG-001.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-cases/TC-REG-002.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-cases/TC-UI-001.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-plans/unified-capabilities-regression.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/test-plans/unified-capabilities-test-plan.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_01.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_02.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_03.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_04.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_05.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_06.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_07.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_08.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_09.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/task_10.md is excluded by !**/*.md
  • bun.lock is excluded by !**/*.lock
  • docs/agents/capabilities.md is excluded by !**/*.md
  • docs/rfcs/003_agh-network-v0.md is excluded by !**/*.md
  • openapi/agh.json is excluded by !**/*.json
  • openapi/compozy-daemon.json is excluded by !**/*.json
  • packages/site/content/protocol/capability-discovery.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/envelope.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/examples.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/index.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/interactions.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/message-kinds.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/meta.json is excluded by !**/*.json
  • packages/site/content/protocol/nats.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/overview.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/peer-discovery.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/recipes.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/agents/capabilities.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/agents/definitions.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/configuration/agent-md.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/skills/bundled.mdx is excluded by !**/*.mdx
  • packages/ui/README.md is excluded by !**/*.md
  • skills-lock.json is excluded by !**/*.json
  • turbo.json is excluded by !**/*.json
  • web/package.json is excluded by !**/*.json
  • web/src/generated/agh-openapi.d.ts is excluded by !**/generated/**
  • web/src/generated/compozy-openapi.d.ts is excluded by !**/generated/**
📒 Files selected for processing (191)
  • .compozy/tasks/unified-capabilities/qa/issues/.gitkeep
  • .compozy/tasks/unified-capabilities/qa/screenshots/.gitkeep
  • cmd/agh-codegen/main.go
  • cmd/agh-codegen/main_test.go
  • internal/acp/process_tree_windows.go
  • internal/api/contract/contract.go
  • internal/api/contract/contract_test.go
  • internal/api/contract/responses.go
  • internal/api/core/error_paths_test.go
  • internal/api/core/handlers.go
  • internal/api/core/handlers_internal_test.go
  • internal/api/core/handlers_test.go
  • internal/api/core/interfaces.go
  • internal/api/core/network.go
  • internal/api/core/network_details.go
  • internal/api/core/network_test.go
  • internal/api/core/session_workspace.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/httpapi/httpapi_integration_test.go
  • internal/api/httpapi/prompt.go
  • internal/api/httpapi/routes.go
  • internal/api/httpapi/session-clear_test.go
  • internal/api/httpapi/sessions.go
  • internal/api/testutil/apitest.go
  • internal/api/udsapi/handlers_test.go
  • internal/api/udsapi/network_test.go
  • internal/api/udsapi/prompt.go
  • internal/api/udsapi/routes.go
  • internal/api/udsapi/sessions.go
  • internal/api/udsapi/transport_parity_integration_test.go
  • internal/api/udsapi/udsapi_integration_test.go
  • internal/cli/network_client_test.go
  • internal/cli/network_test.go
  • internal/codegen/openapits/generate.go
  • internal/codegen/openapits/generate_test.go
  • internal/config/agent_capabilities_test.go
  • internal/config/capabilities.go
  • internal/config/capabilities_test.go
  • internal/daemon/daemon_acpmock_faults_integration_test.go
  • internal/daemon/daemon_acpmock_helpers_integration_test.go
  • internal/daemon/daemon_network_collaboration_integration_test.go
  • internal/daemon/daemon_test.go
  • internal/daemon/network_e2e_assertions_test.go
  • internal/daemon/task_runtime.go
  • internal/daemon/task_runtime_test.go
  • internal/e2elane/command_wiring_test.go
  • internal/e2elane/lanes.go
  • internal/e2elane/lanes_test.go
  • internal/extension/host_api_test.go
  • internal/hooks/executor_subprocess_windows.go
  • internal/network/audit_test.go
  • internal/network/capability_catalog.go
  • internal/network/capability_catalog_test.go
  • internal/network/delivery.go
  • internal/network/delivery_test.go
  • internal/network/envelope.go
  • internal/network/envelope_integration_test.go
  • internal/network/helpers_test.go
  • internal/network/lifecycle.go
  • internal/network/lifecycle_test.go
  • internal/network/manager.go
  • internal/network/manager_test.go
  • internal/network/peer.go
  • internal/network/peer_test.go
  • internal/network/perf_bench_test.go
  • internal/network/router.go
  • internal/network/router_integration_test.go
  • internal/network/router_test.go
  • internal/network/validate.go
  • internal/network/validate_test.go
  • internal/observe/observer.go
  • internal/observe/reconcile.go
  • internal/session/interfaces.go
  • internal/session/liveness.go
  • internal/session/manager.go
  • internal/session/manager_clear.go
  • internal/session/manager_clear_test.go
  • internal/session/manager_integration_test.go
  • internal/session/manager_lifecycle.go
  • internal/session/manager_prompt.go
  • internal/session/manager_test.go
  • internal/session/network_peer.go
  • internal/session/network_peer_test.go
  • internal/session/query.go
  • internal/session/query_test.go
  • internal/session/resume_repair.go
  • internal/session/session.go
  • internal/session/transcript.go
  • internal/session/transcript_test.go
  • internal/store/globaldb/global_db.go
  • internal/store/globaldb/global_db_extra_test.go
  • internal/store/globaldb/global_db_session.go
  • internal/store/globaldb/global_db_session_test.go
  • internal/store/globaldb/global_db_test.go
  • internal/store/globaldb/migrate_workspace.go
  • internal/store/session_liveness.go
  • internal/store/types.go
  • internal/subprocess/signals_windows.go
  • internal/task/manager.go
  • internal/task/types.go
  • internal/testutil/e2e/artifacts.go
  • internal/testutil/e2e/artifacts_test.go
  • internal/testutil/e2e/config_seed.go
  • internal/testutil/e2e/config_seed_test.go
  • internal/testutil/e2e/runtime_harness.go
  • internal/testutil/e2e/runtime_harness_helpers_test.go
  • internal/testutil/e2e/runtime_harness_integration_test.go
  • internal/testutil/e2e/runtime_harness_lifecycle_test.go
  • internal/testutil/e2e/runtime_harness_test.go
  • internal/testutil/e2e/transport_parity.go
  • internal/testutil/e2e/transport_parity_test.go
  • internal/transcript/ui_messages.go
  • magefile.go
  • packages/site/components/landing/__tests__/landing.test.tsx
  • packages/site/components/landing/network-protocol-visual.tsx
  • packages/site/components/landing/network-section.tsx
  • packages/site/components/landing/primitives/kind-chip.tsx
  • packages/ui/src/components/card.tsx
  • packages/ui/src/components/dialog.test.tsx
  • packages/ui/src/components/dialog.tsx
  • packages/ui/src/components/empty.test.tsx
  • packages/ui/src/components/empty.tsx
  • packages/ui/src/components/kind-chip.tsx
  • packages/ui/src/components/stories/card.stories.tsx
  • packages/ui/src/components/stories/kind-chip.stories.tsx
  • packages/ui/src/index.ts
  • web/.storybook/preview.ts
  • web/src/components/app-header.test.tsx
  • web/src/components/app-header.tsx
  • web/src/components/app-sidebar.test.tsx
  • web/src/components/app-sidebar.tsx
  • web/src/components/assistant-ui/hooks/use-session-composer-state.ts
  • web/src/components/assistant-ui/session-thread.tsx
  • web/src/components/design-system-showcase.tsx
  • web/src/hooks/routes/use-app-layout.test.tsx
  • web/src/hooks/routes/use-app-layout.ts
  • web/src/hooks/routes/use-session-page-controls.ts
  • web/src/hooks/routes/use-session-page.ts
  • web/src/lib/api-client.test.ts
  • web/src/lib/api-client.ts
  • web/src/lib/api-contract.ts
  • web/src/lib/daemon-api-contract.test.ts
  • web/src/routes/-__root.test.tsx
  • web/src/routes/-_app.test.tsx
  • web/src/routes/__root.tsx
  • web/src/routes/_app.tsx
  • web/src/routes/_app/-network.test.tsx
  • web/src/routes/_app/-session.$id.test.tsx
  • web/src/routes/_app/-tasks.$id.runs.$runId.test.tsx
  • web/src/routes/_app/-tasks.$id.test.tsx
  • web/src/routes/_app/session.$id.tsx
  • web/src/routes/_app/stories/-session.stories.tsx
  • web/src/routes/_app/tasks.$id.runs.$runId.tsx
  • web/src/routes/_app/tasks.$id.tsx
  • web/src/storybook/route-story.tsx
  • web/src/systems/automation/components/automation-run-history.tsx
  • web/src/systems/network/components/network-channel-detail-panel.tsx
  • web/src/systems/network/components/network-peer-detail-panel.test.tsx
  • web/src/systems/network/components/network-peer-detail-panel.tsx
  • web/src/systems/network/index.ts
  • web/src/systems/network/lib/network-formatters.test.ts
  • web/src/systems/network/lib/network-formatters.ts
  • web/src/systems/network/mocks/fixtures.ts
  • web/src/systems/network/types.ts
  • web/src/systems/session/adapters/session-api.test.ts
  • web/src/systems/session/adapters/session-api.ts
  • web/src/systems/session/components/chat-header.test.tsx
  • web/src/systems/session/components/chat-header.tsx
  • web/src/systems/session/components/chat-view.integration.test.tsx
  • web/src/systems/session/components/chat-view.test.ts
  • web/src/systems/session/components/chat-view.tsx
  • web/src/systems/session/components/message-bubble.test.tsx
  • web/src/systems/session/components/message-bubble.tsx
  • web/src/systems/session/components/message-composer.test.tsx
  • web/src/systems/session/components/message-composer.tsx
  • web/src/systems/session/components/permission-prompt.integration.test.tsx
  • web/src/systems/session/components/permission-prompt.tsx
  • web/src/systems/session/components/processing-indicator.tsx
  • web/src/systems/session/components/session-chat-runtime-provider.test.tsx
  • web/src/systems/session/components/session-chat-runtime-provider.tsx
  • web/src/systems/session/components/session-inspector.integration.test.tsx
  • web/src/systems/session/components/session-inspector.test.tsx
  • web/src/systems/session/components/session-inspector.tsx
  • web/src/systems/session/components/stories/chat-header.stories.tsx
  • web/src/systems/session/components/stories/chat-view.stories.tsx
  • web/src/systems/session/components/stories/message-bubble.stories.tsx
  • web/src/systems/session/components/stories/message-composer.stories.tsx
  • web/src/systems/session/components/stories/session-inspector.stories.tsx
  • web/src/systems/session/components/stories/tool-group-section.stories.tsx
  • web/src/systems/session/components/tool-group-section.tsx
  • web/src/systems/session/hooks/use-chat-view-content.ts

Comment thread internal/acp/process_tree_windows.go
Comment thread internal/api/core/network.go
Comment thread internal/api/httpapi/prompt.go Outdated
Comment thread internal/api/udsapi/prompt.go Outdated
Comment thread internal/e2elane/command_wiring_test.go
Comment thread internal/network/envelope_integration_test.go Outdated
Comment thread internal/session/manager_clear.go
Comment thread internal/session/manager_prompt.go Outdated
Comment thread internal/store/session_liveness.go
Comment thread internal/subprocess/signals_windows.go
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (4)
internal/network/capability_catalog.go (1)

203-205: Consider logging malformed extension data for observability.

JSON unmarshal errors are silently converted to "unknown" status. While this is appropriate for defensive handling of external/untrusted extension data, logging at debug level would aid troubleshooting when capability catalogs fail to decode.

💡 Optional: Add debug logging for parse failures
 	var payload whoisCapabilityCatalogPayload
 	if err := json.Unmarshal(raw, &payload); err != nil {
+		// Could add: slog.Debug("network: decode whois capability catalog extension", "error", err)
 		return nil, false
 	}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/network/capability_catalog.go` around lines 203 - 205, The
json.Unmarshal error is being swallowed when decoding extension payloads (the
raw and payload variables), which hampers observability; update the error
handling in the block that calls json.Unmarshal(raw, &payload) to log the parse
failure at debug level (including the error message and the raw bytes/string)
before returning nil, false so malformed extension data is visible for
troubleshooting (use the existing logger instance in scope or the package logger
and ensure sensitive data is truncated if necessary).
internal/codegen/openapits/generate.go (1)

29-34: Avoid hardcoding external codegen command/tool names.

bunx, openapi-typescript, and oxfmt are embedded in code. Consider injecting these via options/config to keep tooling portable and environment-safe.

As per coding guidelines, "Never hardcode configuration — use TOML config or functional options."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/codegen/openapits/generate.go` around lines 29 - 34, The calls to
runCommand in generate.go currently hardcode tool names ("bunx",
"openapi-typescript", "oxfmt") which violates the no-hardcoded-configuration
guideline; refactor to accept these tool names via configuration or functional
options (e.g., add a CodegenConfig or options struct with fields like BunxCmd,
OpenAPITypesCmd, OxfmtCmd and default values) and update the code that invokes
runCommand in the generate function to use config.BunxCmd,
config.OpenAPITypesCmd and config.OxfmtCmd when running commands against
artifact.SpecPath and artifact.OutputPath; ensure callers are updated to pass
the config (or load defaults from TOML/env) so behavior remains
backward-compatible.
internal/daemon/daemon_test.go (1)

4222-4239: Wrap this case in a t.Run("Should...") subtest.

The scenario is useful, but the new coverage doesn't follow the test shape required for new Go test cases in this repo.

As per coding guidelines, **/*_test.go: MUST use t.Run("Should...") pattern for ALL test cases.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/daemon/daemon_test.go` around lines 4222 - 4239, Wrap the existing
test body of
TestFakeSessionManagerClearConversationTreatsMissingSessionAsFreshConversation
in a t.Run subtest with a "Should..." description (for example: t.Run("Should
treat missing session as fresh conversation", func(t *testing.T) { ... })), move
the existing assertions and call to manager.ClearConversation into that subtest,
and call t.Parallel() inside the subtest (or keep outer t.Parallel() and also
call it inside if desired) so the test conforms to the repo's t.Run("Should...")
pattern; refer to the test name
TestFakeSessionManagerClearConversationTreatsMissingSessionAsFreshConversation
and the fakeSessionManager.ClearConversation call to locate the code to change.
internal/api/udsapi/handlers_test.go (1)

1053-1124: Use t.Run("Should...") for the new UDS handler cases.

Both added tests are standalone bodies, but new Go test coverage in this repo is expected to use named Should... subtests.

As per coding guidelines, **/*_test.go: MUST use t.Run("Should...") pattern for ALL test cases.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/api/udsapi/handlers_test.go` around lines 1053 - 1124, Two new tests
(TestPromptSessionHandlerCancelsDetachedPromptContextWhenRequestEnds and
TestCancelSessionPromptHandlerReturnsOK) must be converted into named subtests
using the t.Run("Should...") pattern; wrap the existing test bodies inside t.Run
calls with descriptive "Should..." names (e.g. t.Run("Should cancel prompt
context when request ends", func(t *testing.T){ ... }) and t.Run("Should return
OK when cancelling session prompt", func(t *testing.T){ ... })), keeping all
existing setup and assertions intact and only moving their code into the t.Run
closures so the tests follow the repository's required test naming convention.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@internal/api/httpapi/prompt.go`:
- Around line 79-80: The code currently treats a forced empty tool input ("{}"
with force=true) as final and immediately marks the tool as ready, which
prevents any later real tool_call from being recorded; update the logic around
toolInputsReady and toolNames so that a forced/empty input does NOT mark the
tool as ready or override existing/non-empty inputs: when receiving a
tool_result with force=true and an empty args payload, do not insert into
toolInputsReady or set toolNames (or, alternatively, store it as a
provisional/forced marker that can be replaced), and ensure the handler that
processes later tool_call events (the same code paths referenced at
toolInputsReady/toolNames and the regions you noted: 117-119, 242-249, 326-352)
will overwrite provisional/forced entries with real arguments and then mark the
tool as ready. Ensure checks reference the force flag (or emptiness) to decide
whether to mark ready or defer.

In `@internal/codegen/openapits/generate_test.go`:
- Around line 103-109: Add a sentinel error and wrap filesystem-not-found
errors, then update tests to use errors.Is: declare a package-level var
ErrMissingGeneratedFile = errors.New("generated file is missing") in the
generate.go file, change the os.IsNotExist(err) return to wrap that sentinel
(e.g., return fmt.Errorf("%s: %w", path, ErrMissingGeneratedFile)) in the code
path used by Check, and update the tests in generate_test.go (the TestCheck...
assertions around Check(context.Background(), artifact) and the
TestCheckGeneratedFile case) to use errors.Is(err, ErrMissingGeneratedFile) (and
remove string-based contains checks) so tests assert the typed wrapped error
instead of matching substrings.

In `@internal/codegen/openapits/generate.go`:
- Around line 72-77: In checkGeneratedFile, replace the os.IsNotExist(err) usage
with errors.Is(err, os.ErrNotExist) and introduce a new sentinel error
ErrMissingGeneratedFile (mirroring ErrStaleGeneratedFile) to represent a missing
generated file; when the file read fails due to not-exist, return a wrapped
error using the sentinel (e.g., fmt.Errorf("%w: %s", ErrMissingGeneratedFile,
path)) so callers can use errors.Is to detect the missing-file case instead of
string matching.

In `@internal/procutil/process_started_at_unix.go`:
- Around line 26-54: The ps output must be forced to the C locale before
parsing; change the execabs.CommandContext invocation that runs "ps -o lstart=
-p strconv.Itoa(pid)" so you create a cmd variable (using
execabs.CommandContext), set cmd.Env = append(os.Environ(), "LC_ALL=C") and then
call cmd.Output(); keep existing error handling and use psStartedAtLayout, pid
and startedAtText as before so parsing remains identical but now deterministic
across locales.
- Around line 23-24: The function in process_started_at_unix.go should accept a
context.Context parameter and use it instead of context.Background(): change the
function signature to take ctx context.Context, replace
context.WithTimeout(context.Background(), 2*time.Second) with
context.WithTimeout(ctx, 2*time.Second), and pass that ctx into
execabs.CommandContext; then update callers (MatchesStartTime,
taskSessionMatchesRecordedSubprocess, classifyRecoveredTaskSession and related
tests) to forward their context (e.g., the context available via
inspectTaskSessionRecovery) so cancellation propagates correctly and tests are
adjusted to provide a context.

In `@internal/procutil/procutil_test.go`:
- Around line 58-86: Wrap TestStartedAtCurrentProcess's assertions inside a
single t.Run subtest (e.g., t.Run("ShouldReturnNonZeroPastStartTime", ...)) and
call StartedAt(os.Getpid()) inside that subtest; convert
TestMatchesStartTimeCurrentProcess into a table-driven test that iterates
scenarios (e.g., {"matches", startedAt, want true}, {"mismatch",
startedAt.Add(-time.Hour), want false}) and run each row as its own t.Run
subtest, invoking MatchesStartTime(os.Getpid(), ...) inside each subtest and
asserting the expected boolean result; keep references to StartedAt and
MatchesStartTime and preserve existing error handling/assert messages within the
new subtests.

---

Nitpick comments:
In `@internal/api/udsapi/handlers_test.go`:
- Around line 1053-1124: Two new tests
(TestPromptSessionHandlerCancelsDetachedPromptContextWhenRequestEnds and
TestCancelSessionPromptHandlerReturnsOK) must be converted into named subtests
using the t.Run("Should...") pattern; wrap the existing test bodies inside t.Run
calls with descriptive "Should..." names (e.g. t.Run("Should cancel prompt
context when request ends", func(t *testing.T){ ... }) and t.Run("Should return
OK when cancelling session prompt", func(t *testing.T){ ... })), keeping all
existing setup and assertions intact and only moving their code into the t.Run
closures so the tests follow the repository's required test naming convention.

In `@internal/codegen/openapits/generate.go`:
- Around line 29-34: The calls to runCommand in generate.go currently hardcode
tool names ("bunx", "openapi-typescript", "oxfmt") which violates the
no-hardcoded-configuration guideline; refactor to accept these tool names via
configuration or functional options (e.g., add a CodegenConfig or options struct
with fields like BunxCmd, OpenAPITypesCmd, OxfmtCmd and default values) and
update the code that invokes runCommand in the generate function to use
config.BunxCmd, config.OpenAPITypesCmd and config.OxfmtCmd when running commands
against artifact.SpecPath and artifact.OutputPath; ensure callers are updated to
pass the config (or load defaults from TOML/env) so behavior remains
backward-compatible.

In `@internal/daemon/daemon_test.go`:
- Around line 4222-4239: Wrap the existing test body of
TestFakeSessionManagerClearConversationTreatsMissingSessionAsFreshConversation
in a t.Run subtest with a "Should..." description (for example: t.Run("Should
treat missing session as fresh conversation", func(t *testing.T) { ... })), move
the existing assertions and call to manager.ClearConversation into that subtest,
and call t.Parallel() inside the subtest (or keep outer t.Parallel() and also
call it inside if desired) so the test conforms to the repo's t.Run("Should...")
pattern; refer to the test name
TestFakeSessionManagerClearConversationTreatsMissingSessionAsFreshConversation
and the fakeSessionManager.ClearConversation call to locate the code to change.

In `@internal/network/capability_catalog.go`:
- Around line 203-205: The json.Unmarshal error is being swallowed when decoding
extension payloads (the raw and payload variables), which hampers observability;
update the error handling in the block that calls json.Unmarshal(raw, &payload)
to log the parse failure at debug level (including the error message and the raw
bytes/string) before returning nil, false so malformed extension data is visible
for troubleshooting (use the existing logger instance in scope or the package
logger and ensure sensitive data is truncated if necessary).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 82747a1a-08a1-4289-b6e9-9dc6e8db6f87

📥 Commits

Reviewing files that changed from the base of the PR and between 7770c40 and df064be.

⛔ Files ignored due to path filters (34)
  • .compozy/tasks/unified-capabilities/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_024.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_025.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_026.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_027.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_028.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_029.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_030.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_031.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/reviews-002/issue_032.md is excluded by !**/*.md
📒 Files selected for processing (36)
  • cmd/agh-codegen/main_test.go
  • internal/api/core/network.go
  • internal/api/core/network_test.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/httpapi/prompt.go
  • internal/api/httpapi/session-clear_test.go
  • internal/api/udsapi/handlers_test.go
  • internal/api/udsapi/prompt.go
  • internal/codegen/openapits/generate.go
  • internal/codegen/openapits/generate_test.go
  • internal/daemon/daemon_network_collaboration_integration_test.go
  • internal/daemon/daemon_test.go
  • internal/daemon/task_runtime.go
  • internal/daemon/task_runtime_test.go
  • internal/e2elane/command_wiring_test.go
  • internal/e2elane/lanes_test.go
  • internal/extension/host_api_test.go
  • internal/network/audit_test.go
  • internal/network/capability_catalog.go
  • internal/network/capability_catalog_test.go
  • internal/network/envelope_integration_test.go
  • internal/network/router_integration_test.go
  • internal/procutil/process_started_at.go
  • internal/procutil/process_started_at_unix.go
  • internal/procutil/process_started_at_windows.go
  • internal/procutil/procutil_test.go
  • internal/session/liveness.go
  • internal/session/manager_clear.go
  • internal/session/manager_clear_test.go
  • internal/session/manager_integration_test.go
  • internal/session/manager_prompt.go
  • internal/session/manager_test.go
  • internal/store/globaldb/global_db_session_test.go
  • internal/store/globaldb/global_db_test.go
  • internal/store/session_liveness.go
  • internal/subprocess/signals_windows.go
✅ Files skipped from review due to trivial changes (4)
  • internal/api/httpapi/session-clear_test.go
  • internal/network/envelope_integration_test.go
  • internal/e2elane/command_wiring_test.go
  • internal/daemon/daemon_network_collaboration_integration_test.go
🚧 Files skipped from review as they are similar to previous changes (11)
  • internal/api/udsapi/prompt.go
  • internal/e2elane/lanes_test.go
  • internal/network/audit_test.go
  • internal/network/capability_catalog_test.go
  • internal/api/core/network_test.go
  • internal/daemon/task_runtime.go
  • internal/api/httpapi/handlers_test.go
  • internal/network/router_integration_test.go
  • internal/daemon/task_runtime_test.go
  • cmd/agh-codegen/main_test.go
  • internal/extension/host_api_test.go

Comment thread internal/api/httpapi/prompt.go
Comment thread internal/codegen/openapits/generate_test.go
Comment thread internal/codegen/openapits/generate.go
Comment thread internal/procutil/process_started_at_unix.go
Comment thread internal/procutil/process_started_at_unix.go Outdated
Comment thread internal/procutil/procutil_test.go
@pedronauck pedronauck merged commit 731414f into main Apr 21, 2026
4 of 5 checks passed
@pedronauck pedronauck deleted the unify-capability branch April 21, 2026 16:59
pedronauck added a commit that referenced this pull request May 26, 2026
## Release v0.0.1

This PR prepares the release of version v0.0.1.

### Changelog

## 0.0.1 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This was referenced May 26, 2026
pedronauck added a commit that referenced this pull request May 26, 2026
## Release v0.0.1

This PR prepares the release of version v0.0.1.

### Changelog

## 0.0.1 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pedronauck added a commit that referenced this pull request May 26, 2026
## Release v0.0.2

This PR prepares the release of version v0.0.2.

### Changelog

## 0.0.2 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release
- Fix release process



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows
- Improve suite speed

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pedronauck added a commit that referenced this pull request May 27, 2026
## Release v0.0.2

This PR prepares the release of version v0.0.2.

### Changelog

## 0.0.2 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release
- Fix release process
- Fix release sync
- Decouple release dry-run npm auth
- Persist web assets git auth



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows
- Improve suite speed


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Updated web assets dependency to a newer version for improved
stability and performance.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/compozy/agh/pull/211?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pedronauck added a commit that referenced this pull request May 27, 2026
## Release v0.0.2

This PR prepares the release of version v0.0.2.

### Changelog

## 0.0.2 - 2026-05-27



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout
- Fix release dry-run token contract



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release
- Fix release process
- Fix release sync
- Decouple release dry-run npm auth
- Persist web assets git auth
- Require npm auth before release merge



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows
- Improve suite speed


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
  * Updated dependencies to latest versions.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/compozy/agh/pull/214?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant