Skip to content
This repository was archived by the owner on Aug 10, 2026. It is now read-only.

feat: agent capabilities - #49

Merged
pedronauck merged 12 commits into
mainfrom
agent-capabilities
Apr 20, 2026
Merged

pedronauck merged 12 commits into
mainfrom
agent-capabilities

Conversation

@pedronauck

@pedronauck pedronauck commented Apr 19, 2026 •

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • New Features

    • Agents can publish per-agent capability catalogs; WHOIS discovery can return full catalogs or filtered capability lists.
    • Peer discovery/greetings include compact capability briefs for lightweight display.
    • Network joins now carry and preserve peer capability information.
  • Bug Fixes / Reliability

    • Improved validation and clearer error responses for invalid requests and oversized responses.
  • Tests

    • Expanded unit and integration tests covering capability loading, projection, discovery, and network behavior.

@pedronauck pedronauck self-assigned this Apr 19, 2026
@coderabbitai

coderabbitai Bot commented Apr 19, 2026 •

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d30ba2e1-86ce-4496-b5f4-9da3ac982d41

📥 Commits

Reviewing files that changed from the base of the PR and between ded2127 and 1601230.

⛔ Files ignored due to path filters (84)
  • .compozy/tasks/agent-capabilities/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/issues/BUG-001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-FUNC-014.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-004.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-005.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-006.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-007.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-008.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-009.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-010.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-011.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-012.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-013.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-plans/agent-capabilities-regression.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-plans/agent-capabilities-test-plan.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-004/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-004/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-004/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-004/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-004/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_01.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_02.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_03.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_04.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_05.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_06.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_07.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/adrs/adr-001.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/adrs/adr-002.md is excluded by !**/*.md
  • .compozy/tasks/unified-capabilities/adrs/adr-003.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
  • docs/agents/capabilities.md is excluded by !**/*.md
  • docs/rfcs/001_agent-md-with-skills-memory.md is excluded by !**/*.md
  • docs/rfcs/003_agh-network-v0.md is excluded by !**/*.md
  • packages/site/content/protocol/capability-discovery.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/meta.json is excluded by !**/*.json
  • packages/site/content/protocol/overview.mdx is excluded by !**/*.mdx
  • packages/site/content/protocol/peer-discovery.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/agents/meta.json is excluded by !**/*.json
  • packages/site/content/runtime/core/configuration/agent-md.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/configuration/index.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/overview/what-is-agh.mdx is excluded by !**/*.mdx
📒 Files selected for processing (35)
  • .compozy/tasks/agent-capabilities/qa/issues/.gitkeep
  • .compozy/tasks/agent-capabilities/qa/screenshots/.gitkeep
  • internal/api/core/network_test.go
  • internal/config/agent.go
  • internal/config/agent_capabilities_test.go
  • internal/config/agent_resource.go
  • internal/config/agent_resource_test.go
  • internal/config/capabilities.go
  • internal/config/capabilities_test.go
  • internal/config/mcpjson.go
  • internal/daemon/agent_skill_resources.go
  • internal/daemon/daemon_integration_test.go
  • internal/daemon/daemon_test.go
  • internal/extension/manager.go
  • internal/network/capability_brief.go
  • internal/network/capability_catalog.go
  • internal/network/capability_catalog_test.go
  • internal/network/manager.go
  • internal/network/manager_integration_test.go
  • internal/network/manager_test.go
  • internal/network/peer.go
  • internal/network/peer_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/session/interfaces.go
  • internal/session/manager_helpers.go
  • internal/session/manager_hooks_test.go
  • internal/session/manager_integration_test.go
  • internal/session/manager_start.go
  • internal/session/manager_test.go
  • internal/session/network_peer.go
  • internal/workspace/clone.go

Walkthrough

Adds an agent capability catalog model and loader, propagates capability data through agent config and session start, extends network peer join API to carry capability catalogs, projects capability briefs into peer cards and WHOIS responses, updates registry/manager cloning, and adds comprehensive tests and QA placeholders.

Changes

Cohort / File(s) Summary
Capability model & loader
internal/config/capabilities.go, internal/config/capabilities_test.go
New exported types and loader: strict TOML/JSON parsing, single-file or directory modes, normalization, validation (required fields, duplicates), cloning, and unit tests.
Agent config integration & validation
internal/config/agent.go, internal/config/agent_capabilities_test.go, internal/config/agent_resource.go, internal/config/agent_resource_test.go
AgentDef gains Capabilities *CapabilityCatalog; loader populates and normalizes catalogs; validation and resource validation updated and tested for precedence and in-place normalization.
Session API & runtime plumbing
internal/session/interfaces.go, internal/session/network_peer.go, internal/session/manager_helpers.go, internal/session/manager_start.go, internal/session/manager_test.go, internal/session/manager_hooks_test.go, internal/session/manager_integration_test.go, internal/session/network_peer.go
Introduces NetworkPeerCapability and NetworkPeerJoin, changes JoinChannel to accept NetworkPeerJoin, projects and clones capability catalogs for joins, updates session start/runtime to include network capability projection, and updates tests/integration.
Network manager, peer registry & peer model
internal/network/manager.go, internal/network/manager_test.go, internal/network/manager_integration_test.go, internal/network/peer.go, internal/network/peer_test.go
Manager.JoinChannel signature changed to accept join struct; local registration stores cloned capability catalogs; PeerCard now may include capability-brief ext; tests added/updated to assert cloning and payload preservation.
Capability projection & WHOIS catalog
internal/network/capability_brief.go, internal/network/capability_catalog.go, internal/network/capability_catalog_test.go
Implements capability-brief projection (agh.capabilities_brief), WHOIS rich-discovery parsing/filtering (agh.include, agh.capability_ids), response construction, envelope size checking, and related utilities/tests.
Router WHOIS refactor & tests
internal/network/router.go, internal/network/router_test.go, internal/network/router_integration_test.go
Factors whois responder selection and per-responder response building into helpers; integrates capability-catalog extension building/filtering and envelope size limiting; adds unit and integration tests for rich discovery.
Envelope validation & errors
internal/network/validate.go, internal/network/validate_test.go
Adds ErrEnvelopeTooLarge sentinel and updates ext round-trip tests to include capability-catalog payloads.
Daemon, extension manager & clone updates
internal/daemon/agent_skill_resources.go, internal/daemon/daemon_test.go, internal/daemon/daemon_integration_test.go, internal/extension/manager.go, internal/workspace/clone.go
Clone routines updated to deep-clone Capabilities; fakes/tests updated to record and assert cloned capability data; integration tests updated to use struct-based join calls.
API tests & minor JSON helper change
internal/api/core/network_test.go, internal/config/mcpjson.go, internal/network/validate_test.go
HTTP handler tests extended to assert agh.capabilities_brief; mcpjson.go delegates EOF check to shared helper.
Capability QA placeholders
.compozy/tasks/agent-capabilities/qa/issues/.gitkeep, .compozy/tasks/agent-capabilities/qa/screenshots/.gitkeep
Added .gitkeep files to preserve QA directories.

Sequence Diagram

sequenceDiagram
    participant Agent as Agent Config
    participant Session as Session Manager
    participant Network as Network Manager
    participant Registry as Peer Registry
    participant Router as Network Router
    participant Remote as Remote Peer

    Agent->>Agent: Load & normalize capability catalog
    Session->>Network: JoinChannel(NetworkPeerJoin{SessionID,PeerID,Channel,Capabilities})
    Network->>Network: Project capability brief (IDs + summaries)
    Network->>Registry: RegisterLocalWithCapabilityCatalog(PeerCard, CapabilityCatalog)
    Registry->>Registry: Clone & store capability catalog
    Network->>Router: Publish KindGreet with capability brief ext
    Router->>Remote: Broadcast peer card + capability brief
    Remote->>Router: Send KindWhois (may request capability catalog/filter)
    Router->>Registry: Retrieve peer & capability catalog
    Router->>Router: Filter/project catalog per request & check envelope size
    Router->>Remote: Reply with whois response including capability-catalog ext
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 2.46% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: agent capabilities' is concise and clearly summarizes the main feature addition - introducing agent capability catalog support throughout the system.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

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

⚠️ Outside diff range comments (1)
internal/network/manager.go (1)

412-431: ⚠️ Potential issue | 🟠 Major

Refresh peer metadata when the same session re-joins with new capabilities.

This idempotency check still only compares sessionID/peerID/channel. If JoinChannel() is called again for the same peer with an updated capability catalog, the method returns alreadyJoined and never reaches RegisterLocalWithCapabilityCatalog, so WHOIS/greet discovery keeps serving the old capability projection. Capabilities need to participate in the equality check, or the existing peer should be re-registered when they change.

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

In `@internal/network/manager.go` around lines 412 - 431, The idempotency check in
sessionSnapshot/JoinChannel presently skips capability changes; update the
equality logic so that if the incoming request.capabilities differ from the
current peer's capabilities the code does not short-circuit; specifically, when
sessionSnapshot(request.sessionID) returns current, compare current.capabilities
(or its projection) to request.capabilities and if they differ call
m.LeaveChannel(ctx, request.sessionID) and proceed to run
localPeerCardFromJoinRequest(...) and
m.peers.RegisterLocalWithCapabilityCatalog(...), ensuring the peer is
re-registered with the new capability catalog.
🧹 Nitpick comments (3)
internal/daemon/daemon_test.go (1)

4464-4471: Deep-clone recorded capabilities in the fake join log.

Line 4471 only copies the top-level slice. session.NetworkPeerCapability still carries nested slice aliases, so later mutation can bleed into recorded assertions. This fake will be more stable if it snapshots the nested fields too, like the session test fake does.

🤖 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 4464 - 4471, The
fakeNetworkRuntime.JoinChannel currently shallow-copies the capabilities slice
(in the join handling that appends a fakeNetworkJoinCall from
session.NetworkPeerJoin), which allows nested slice/field mutations to bleed
into test assertions; change it to deep-clone each session.NetworkPeerCapability
before appending by allocating a new []session.NetworkPeerCapability, iterating
over join.Capabilities, and for each capability creating a fresh copy of the
struct and separately copying any nested slices or maps (e.g. supported protocol
lists or other slice fields) so the fakeNetworkJoinCall stores independent
snapshots of capabilities.
internal/network/manager_integration_test.go (1)

16-16: Add t.Parallel() for independent integration test.

Per coding guidelines, add t.Parallel() to independent tests. This integration test is self-contained and can run concurrently with other tests.

Suggested change
 func TestManagerJoinPublishesProjectedCapabilityBriefInInitialAndReconnectGreets(t *testing.T) {
+	t.Parallel()
+
 	ctx, cancel := context.WithTimeout(t.Context(), 5*time.Second)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/network/manager_integration_test.go` at line 16, The test
TestManagerJoinPublishesProjectedCapabilityBriefInInitialAndReconnectGreets
should be made parallel by adding t.Parallel() as the first statement in the
test body so it can run concurrently with other independent tests; locate the
TestManagerJoinPublishesProjectedCapabilityBriefInInitialAndReconnectGreets
function and insert t.Parallel() immediately after the function's opening line.
internal/network/router_integration_test.go (1)

196-198: Add t.Parallel() for independent integration tests.

The new integration tests are self-contained and can run concurrently. Per coding guidelines, independent tests should use t.Parallel().

Suggested changes
 func TestDirectedWhoisRichDiscoveryDeliversPeerCardAndCapabilityCatalog(t *testing.T) {
+	t.Parallel()
+
 	ctx, cancel := context.WithTimeout(testutil.Context(t), 10*time.Second)
 func TestDirectedWhoisRichDiscoveryFilteringRefreshesRemotePresence(t *testing.T) {
+	t.Parallel()
+
 	ctx, cancel := context.WithTimeout(testutil.Context(t), 10*time.Second)
🤖 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 196 - 198, Add
t.Parallel() to the start of the test function
TestDirectedWhoisRichDiscoveryDeliversPeerCardAndCapabilityCatalog so the
integration test runs concurrently; open the function and insert a call to
t.Parallel() as the first statement (before creating ctx/cancel) in
TestDirectedWhoisRichDiscoveryDeliversPeerCardAndCapabilityCatalog and ensure
there are no shared mutable globals that would prevent safe parallel execution.
🤖 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/core/network_test.go`:
- Around line 1570-1624: Add t.Parallel() at the start of each subtest ("Should
return not found when a channel has no presence or history" and "Should reject
invalid channel message limits"), and after performing the request decode the
JSON error payload from resp.Body and assert the error message contains the
expected text (e.g., for the first case assert error contains "not found" or "no
presence or history" and for the second assert it contains "invalid limit" or
"bad request"); use the existing performRequest result and the response body to
unmarshal into the error shape used by the handlers and use ErrorContains-style
assertions rather than only checking resp.Code so the tests validate the
specific error path.

In `@internal/config/agent.go`:
- Around line 272-274: The code calls normalizeCapabilityCatalog(a.Capabilities,
"agent.capabilities") but discards its normalized return value; update AgentDef
by assigning the returned canonical catalog back to a.Capabilities (handling the
returned error as before) so Validate() persists the cleaned/trimmed capability
list; specifically, capture the first return value from
normalizeCapabilityCatalog and set a.Capabilities = <normalizedCatalog> before
returning nil or the error.

In `@internal/config/capabilities.go`:
- Around line 167-186: The two helpers existingCapabilityCatalogFile and
existingCapabilityCatalogDir currently treat a path existing with the wrong type
as “not present” and return (false, nil); change them to fail fast by returning
a descriptive error when the path exists but is the wrong kind (e.g.,
existingCapabilityCatalogFile should return an error if os.Stat succeeds but
info.IsDir() is true, and existingCapabilityCatalogDir should return an error if
os.Stat succeeds but info.IsDir() is false), and ensure callers such as
LoadAgentCapabilities propagate that error instead of treating it as absent.

In `@internal/network/capability_catalog.go`:
- Around line 39-49: parseWhoisCapabilityDiscoveryRequest collapses a malformed
agh.capability_ids into nil (indistinguishable from "missing") so requests are
treated as unfiltered; fix by checking whether the extension key
whoisCapabilityIDsExtKey is present in the ExtensionMap before trusting
decodeExtensionStringList: if the key is present and decodeExtensionStringList
returns nil, treat that as a malformed/empty projection by setting
request.capabilityIDs to an empty slice (not nil) or return an error (choose one
policy), and if the key is absent leave capabilityIDs nil; apply the same
presence-check + empty-slice-on-malformed behavior to the analogous code
referenced at lines 143-157 so malformed JSON does not become "no filter."

---

Outside diff comments:
In `@internal/network/manager.go`:
- Around line 412-431: The idempotency check in sessionSnapshot/JoinChannel
presently skips capability changes; update the equality logic so that if the
incoming request.capabilities differ from the current peer's capabilities the
code does not short-circuit; specifically, when
sessionSnapshot(request.sessionID) returns current, compare current.capabilities
(or its projection) to request.capabilities and if they differ call
m.LeaveChannel(ctx, request.sessionID) and proceed to run
localPeerCardFromJoinRequest(...) and
m.peers.RegisterLocalWithCapabilityCatalog(...), ensuring the peer is
re-registered with the new capability catalog.

---

Nitpick comments:
In `@internal/daemon/daemon_test.go`:
- Around line 4464-4471: The fakeNetworkRuntime.JoinChannel currently
shallow-copies the capabilities slice (in the join handling that appends a
fakeNetworkJoinCall from session.NetworkPeerJoin), which allows nested
slice/field mutations to bleed into test assertions; change it to deep-clone
each session.NetworkPeerCapability before appending by allocating a new
[]session.NetworkPeerCapability, iterating over join.Capabilities, and for each
capability creating a fresh copy of the struct and separately copying any nested
slices or maps (e.g. supported protocol lists or other slice fields) so the
fakeNetworkJoinCall stores independent snapshots of capabilities.

In `@internal/network/manager_integration_test.go`:
- Line 16: The test
TestManagerJoinPublishesProjectedCapabilityBriefInInitialAndReconnectGreets
should be made parallel by adding t.Parallel() as the first statement in the
test body so it can run concurrently with other independent tests; locate the
TestManagerJoinPublishesProjectedCapabilityBriefInInitialAndReconnectGreets
function and insert t.Parallel() immediately after the function's opening line.

In `@internal/network/router_integration_test.go`:
- Around line 196-198: Add t.Parallel() to the start of the test function
TestDirectedWhoisRichDiscoveryDeliversPeerCardAndCapabilityCatalog so the
integration test runs concurrently; open the function and insert a call to
t.Parallel() as the first statement (before creating ctx/cancel) in
TestDirectedWhoisRichDiscoveryDeliversPeerCardAndCapabilityCatalog and ensure
there are no shared mutable globals that would prevent safe parallel execution.
🪄 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: b92f17e1-9e08-4ba9-8758-9debd8acb978

📥 Commits

Reviewing files that changed from the base of the PR and between fd44501 and 27fa979.

⛔ Files ignored due to path filters (46)
  • .agents/skills/compozy/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/compozy/references/cli-reference.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/compozy/references/config-reference.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/compozy/references/skills-reference.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/compozy/references/workflow-guide.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/cy-create-tasks/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/cy-fix-reviews/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/cy-review-round/SKILL.md is excluded by !**/*.md, !.agents/**
  • .compozy/tasks/agent-capabilities/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/MEMORY.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_01.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_02.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_03.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_04.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_05.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_06.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/memory/task_07.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/issues/BUG-001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-FUNC-014.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-004.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-005.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-006.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-007.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-008.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-009.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-010.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-011.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-012.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-cases/TC-INT-013.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-plans/agent-capabilities-regression.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/test-plans/agent-capabilities-test-plan.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_01.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_02.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_03.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_04.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_05.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_06.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/task_07.md is excluded by !**/*.md
  • docs/agents/capabilities.md is excluded by !**/*.md
  • docs/rfcs/001_agent-md-with-skills-memory.md is excluded by !**/*.md
  • docs/rfcs/003_agh-network-v0.md is excluded by !**/*.md
📒 Files selected for processing (34)
  • .compozy/tasks/agent-capabilities/qa/issues/.gitkeep
  • .compozy/tasks/agent-capabilities/qa/screenshots/.gitkeep
  • internal/api/core/network_test.go
  • internal/config/agent.go
  • internal/config/agent_capabilities_test.go
  • internal/config/agent_resource.go
  • internal/config/agent_resource_test.go
  • internal/config/capabilities.go
  • internal/config/capabilities_test.go
  • internal/config/mcpjson.go
  • internal/daemon/agent_skill_resources.go
  • internal/daemon/daemon_integration_test.go
  • internal/daemon/daemon_test.go
  • internal/extension/manager.go
  • internal/network/capability_brief.go
  • internal/network/capability_catalog.go
  • internal/network/manager.go
  • internal/network/manager_integration_test.go
  • internal/network/manager_test.go
  • internal/network/peer.go
  • internal/network/peer_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/session/interfaces.go
  • internal/session/manager_helpers.go
  • internal/session/manager_hooks_test.go
  • internal/session/manager_integration_test.go
  • internal/session/manager_start.go
  • internal/session/manager_test.go
  • internal/session/network_peer.go
  • internal/workspace/clone.go

Comment thread internal/api/core/network_test.go
Comment thread internal/config/agent.go Outdated
Comment thread internal/config/capabilities.go Outdated
Comment thread internal/network/capability_catalog.go

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
internal/config/agent_capabilities_test.go (1)

131-157: Consider using subtests for each agent assertion.

Each agent check (coder, pairer, reviewer) is logically independent. Using t.Run would improve failure isolation and make it clearer which precedence case failed.

♻️ Suggested refactor
-	coder := findAgentByName(t, agents, "coder")
-	if got, want := coder.Model, "workspace"; got != want {
-		t.Fatalf("coder.Model = %q, want %q", got, want)
-	}
-	if coder.Capabilities != nil {
-		t.Fatalf(
-			"coder.Capabilities = %#v, want nil because winning workspace definition has no catalog",
-			coder.Capabilities,
-		)
-	}
+	t.Run("Should use workspace coder without capabilities", func(t *testing.T) {
+		coder := findAgentByName(t, agents, "coder")
+		if got, want := coder.Model, "workspace"; got != want {
+			t.Fatalf("coder.Model = %q, want %q", got, want)
+		}
+		if coder.Capabilities != nil {
+			t.Fatalf(
+				"coder.Capabilities = %#v, want nil because winning workspace definition has no catalog",
+				coder.Capabilities,
+			)
+		}
+	})

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/config/agent_capabilities_test.go` around lines 131 - 157, Split the
three independent agent checks into separate subtests using t.Run to improve
failure isolation: wrap the assertions for coder (using findAgentByName and
checking coder.Model and coder.Capabilities), pairer (checking
pairer.Capabilities and pairer.Capabilities.Capabilities[0].ID ==
"review-copy"), and reviewer (checking reviewer.Capabilities and
reviewer.Capabilities.Capabilities[0].ID == "triage-pr") each in their own t.Run
with a descriptive name; move shared setup (agents lookup) outside or into a
helper if needed and keep each subtest focused only on its assertions so
failures report which agent failed.
internal/config/capabilities.go (1)

229-231: Symlinks are silently skipped.

info.Mode().IsRegular() returns false for symlinks, so capability files that are symlinks will be silently ignored. If this is intentional (for security or simplicity), consider documenting this behavior. If symlinks should be followed, use os.Stat on the path instead of entry.Info().

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

In `@internal/config/capabilities.go` around lines 229 - 231, The loop currently
uses entry.Info() and skips anything where info.Mode().IsRegular() is false,
which silently ignores symlinked capability files; change this to follow
symlinks by calling os.Stat(path) on the full entry path (build from the
directory + entry.Name()), handle any stat error, then use the returned
FileInfo.Mode().IsRegular() to decide whether to continue; update variable names
(e.g., info -> fi or statInfo) and ensure errors from os.Stat are handled/logged
appropriately.
🤖 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/network/capability_catalog_test.go`:
- Around line 61-63: Rename the subtest names to the required "Should..."
pattern by updating the test table entries and the t.Run call that iterates over
tests; locate the tests table (variable tests) and the t.Run(tc.name, func(t
*testing.T) { ... }) invocation in capability_catalog_test.go and ensure each
tc.name is a "Should ..." string (or change the t.Run to use fmt.Sprintf("Should
%s", tc.name) so all subtests conform), including entries referenced around the
current tc loop and the ones at lines ~120-123.

In `@internal/network/router_integration_test.go`:
- Around line 215-220: The tests create peer registries with too-short expiry
windows (NewPeerRegistry called for registryA, registryB and the other registry
instances) using 50 * time.Millisecond which makes the integration tests flaky
under CI jitter; change those NewPeerRegistry calls to use a longer timeout
(e.g., time.Second) for each instance (registryA, registryB and the other
NewPeerRegistry invocations referenced) so remotes do not expire before
assertions complete.

---

Nitpick comments:
In `@internal/config/agent_capabilities_test.go`:
- Around line 131-157: Split the three independent agent checks into separate
subtests using t.Run to improve failure isolation: wrap the assertions for coder
(using findAgentByName and checking coder.Model and coder.Capabilities), pairer
(checking pairer.Capabilities and pairer.Capabilities.Capabilities[0].ID ==
"review-copy"), and reviewer (checking reviewer.Capabilities and
reviewer.Capabilities.Capabilities[0].ID == "triage-pr") each in their own t.Run
with a descriptive name; move shared setup (agents lookup) outside or into a
helper if needed and keep each subtest focused only on its assertions so
failures report which agent failed.

In `@internal/config/capabilities.go`:
- Around line 229-231: The loop currently uses entry.Info() and skips anything
where info.Mode().IsRegular() is false, which silently ignores symlinked
capability files; change this to follow symlinks by calling os.Stat(path) on the
full entry path (build from the directory + entry.Name()), handle any stat
error, then use the returned FileInfo.Mode().IsRegular() to decide whether to
continue; update variable names (e.g., info -> fi or statInfo) and ensure errors
from os.Stat are handled/logged appropriately.
🪄 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: 7a796b00-7907-401d-a0f3-bc5d3611822b

📥 Commits

Reviewing files that changed from the base of the PR and between 27fa979 and b50dbf0.

⛔ Files ignored due to path filters (17)
  • .compozy/tasks/agent-capabilities/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/agent-capabilities/reviews-003/issue_007.md is excluded by !**/*.md
📒 Files selected for processing (10)
  • internal/api/core/network_test.go
  • internal/config/agent.go
  • internal/config/agent_capabilities_test.go
  • internal/config/capabilities.go
  • internal/config/capabilities_test.go
  • internal/daemon/daemon_test.go
  • internal/network/capability_catalog.go
  • internal/network/capability_catalog_test.go
  • internal/network/manager_integration_test.go
  • internal/network/router_integration_test.go
✅ Files skipped from review due to trivial changes (2)
  • internal/network/capability_catalog.go
  • internal/config/capabilities_test.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • internal/network/manager_integration_test.go
  • internal/daemon/daemon_test.go
  • internal/config/agent.go
  • internal/api/core/network_test.go

Comment thread internal/network/capability_catalog_test.go
Comment thread internal/network/router_integration_test.go Outdated
@pedronauck
pedronauck merged commit 0bdd840 into main Apr 20, 2026
4 of 5 checks passed
@pedronauck
pedronauck deleted the agent-capabilities branch April 20, 2026 19:10
This was referenced Apr 20, 2026
@coderabbitai coderabbitai Bot mentioned this pull request Apr 21, 2026
This was referenced Apr 21, 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



### 🧪 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 subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant