Skip to content

feat: production grade adjustments#66

Merged
pedronauck merged 9 commits into
mainfrom
release-adjustments
Apr 24, 2026
Merged

feat: production grade adjustments#66
pedronauck merged 9 commits into
mainfrom
release-adjustments

Conversation

@pedronauck
Copy link
Copy Markdown
Member

@pedronauck pedronauck commented Apr 24, 2026

Summary by CodeRabbit

  • New Features

    • Session runtime activity: heartbeat reporting, runtime progress/warning events, inline UI indicators, and activity metrics surfaced in health and session views.
    • New shared Logo component used across site.
  • Bug Fixes

    • Improved prompt lifecycle handling to safely drain events after request cancellation.
    • Delivery coordinator: exponential retry backoff and queue-overflow auditing.
  • Tests

    • Expanded coverage for supervision, retries, draining, storage migration, and integrations.
  • Chores

    • Dependency declarations updated.

@pedronauck pedronauck self-assigned this Apr 24, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 24, 2026

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: ce64d813-dcd5-45f7-a061-d0a00f3d72c0

📥 Commits

Reviewing files that changed from the base of the PR and between 67b8b9f and 26b30f0.

⛔ Files ignored due to path filters (26)
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_09c16361e516f5680169eba6bc21188198add7bac5828fbca2.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_09c16361e516f5680169ebab90ddf08198b15fcd89d4c9cd9e.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebaf1ffefc819b8cfd3b099de09c51.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebaf6609c0819bae8fa0c74631328a.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebafa46b98819bbb899f28da35e79c.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebafe22330819b81b5d1145ef948ad.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebb031770c819bb852bacad51dfc60.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebb320b728819b94407f608e8c7b68.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebb670efd0819ba418a96cbe80fe4a.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebb6ee53c8819b983633b9dba97009.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebb76fd51c819ba02008bddfa74854.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebb7e6d584819ba66fc4c18c2827bc.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc081-7246-7033-a8ce-516fc0777563/ig_0f01dc69a51d87a80169ebb84b2cbc819babb1d054a948e9af.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebb62a383c819a8376cc62dc36d864.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebb6ed8acc819aad454896ee85407f.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebb7b4b9b8819a82b4bae65f446e8a.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebb95f1354819aa5a10ca2d6fb5e4e.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebb997f1e8819a96ec30e924ad3abf.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebb9e721b0819aa0d55a7093eda343.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebba21ed9c819a872d856d9c9b18fb.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/runs/019dc0ba-deed-71b1-b6a6-3ebb27ab4788/ig_0422c056d5581df80169ebba5de4b8819aa22755a120ff451d.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • packages/site/public/images/bento-illustrations/bridges-v2.png is excluded by !**/*.png
  • packages/site/public/images/bento-illustrations/memory-v2.png is excluded by !**/*.png
  • packages/site/public/images/bento-illustrations/network-v2.png is excluded by !**/*.png
  • packages/site/public/images/bento-illustrations/runtime-v2.png is excluded by !**/*.png
  • packages/site/public/images/bento-illustrations/trace-v2.png is excluded by !**/*.png
📒 Files selected for processing (16)
  • internal/api/httpapi/handlers.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/httpapi/prompt.go
  • internal/api/httpapi/server.go
  • internal/api/httpapi/stream_helpers_test.go
  • internal/extension/teams_provider_integration_test.go
  • internal/network/delivery.go
  • internal/network/delivery_test.go
  • internal/session/manager_prompt.go
  • internal/session/manager_test.go
  • internal/store/globaldb/global_db_session.go
  • internal/store/globaldb/global_db_test.go
  • internal/testutil/e2e/runtime_harness.go
  • internal/testutil/e2e/runtime_harness_lifecycle_test.go
  • packages/site/lib/layout.shared.tsx
  • packages/ui/src/components/logo.tsx

Walkthrough

Introduces session runtime supervision and activity reporting: heartbeat emissions during prompts, runtime progress/warning events, persistent per-session activity metadata and DB schema, API and UI payloads, async prompt draining on request end, delivery retry backoff, and related config, tests, and wiring.

Changes

Cohort / File(s) Summary
Dependency
go.mod
Promotes github.com/google/uuid, github.com/pelletier/go-toml, and .../v2 from indirect to direct requirements.
ACP client & types
internal/acp/client.go, internal/acp/client_test.go, internal/acp/types.go, internal/acp/handlers_test.go
Adds conditional prompt activity heartbeat reporter, reporter tests, new RuntimeActivity types, runtime_progress/runtime_warning event kinds, reporter API and heartbeat validation.
Session supervision core
internal/session/prompt_activity.go, internal/session/prompt_activity_test.go, internal/session/manager_prompt.go, internal/session/prompt_activity.go
Implements promptActivitySupervisor: heartbeat/progress events, inactivity warning and timeout handling (cancel + StopWithCause), persistence of activity meta, and integration into prompt pump with runtime event channel.
Session manager & config
internal/session/manager.go, internal/config/config.go, internal/config/merge.go, internal/config/provider.go, internal/config/provider_test.go
Adds SessionSupervisionConfig, defaulting/validation, TOML overlay merge, manager option WithSessionSupervision, provider resolution tweak, and tests.
Store & DB persistence
internal/store/session_liveness.go, internal/store/globaldb/global_db.go, internal/store/globaldb/global_db_session.go, internal/store/globaldb/migrate_workspace.go, internal/store/globaldb/*_test.go
Adds SessionActivityMeta to liveness, JSON (activity_json) column, marshaling/unmarshaling in insert/update/scan, migration, validation, and tests for marshal/listing errors.
API contract & conversions
internal/api/contract/contract.go, internal/api/core/conversions.go, internal/api/core/settings.go, internal/api/core/coverage_helpers_test.go
Adds RuntimeActivityPayload, threads activity/runtime into session/event payloads and health responses, and provides conversion helpers mapping store/event activity to API payloads.
HTTP/UDS prompt handling
internal/api/httpapi/prompt.go, internal/api/udsapi/prompt.go, internal/api/httpapi/handlers_test.go, internal/api/udsapi/handlers_test.go, integration tests...
Changes prompt streaming cancellation semantics to support async draining (suppress deferred cancel when draining), exposes runtime in SSE agent events, adds drain helpers and wait, and updates stop endpoint to POST /api/sessions/{id}/stop with tests adjusted.
Health & observe
internal/observe/health.go, internal/observe/helpers_test.go, internal/observe/observer_test.go, internal/observe/reconcile.go
Replaces activeCounts with activeSnapshot to include per-session SessionActivityHealth items (idle/elapsed/stall/status) and exposes them in health payloads; reconciliation now populates liveness.
Network delivery & manager
internal/network/delivery.go, internal/network/delivery_test.go, internal/network/manager.go, internal/network/manager_test.go
Adds per-envelope retry attempts with exponential capped backoff and pluggable scheduler, onDropped hook for queue overflow (audited as rejected), and tests for scheduling and overflow auditing.
Daemon, restart & harness
internal/daemon/*, internal/testutil/e2e/runtime_harness.go, tests...
Wires supervision into boot/deps, adds ExitDrainWait for restart readiness handling, improves readiness retry logic (port/UDS reseed), and enriches runtime harness SSE predicate helpers and tests.
Session lifecycle & mapping
internal/session/session.go, internal/session/stop_cause.go, internal/session/stop_reason.go, internal/session/resume_repair.go
Refactors runtime activity observation/clearing, adds CauseTimeout and maps it to store.StopTimeout, adjusts resume/repair stop-reason behavior.
Transcript & UI payloads
internal/transcript/transcript.go, internal/transcript/ui_messages.go, web/src/systems/session/types.ts
Adds optional runtime activity to transcript envelopes and UI payloads with UTC normalization and cloning.
UI components & web changes
web/src/systems/session/components/..., web/src/systems/session/lib/..., web/src/..., packages/ui/src/components/logo.tsx, packages/site/*
Adds RuntimeActivityNotice and SessionActivityInline components, integrates activity display into chat header and session UI, message schema/type updates, many UI tests/e2e adjustments, and introduces a shared Logo component used across site packages.
Tests & test utilities
many files under internal/* and internal/testutil/e2e/*
Adds/updates extensive tests covering supervision, activity persistence, prompt drain semantics, retry scheduling, integration flows, and config seeding; adds SSE predicate-based helpers and PromptSessionUntil test utilities.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant Client as HTTP/UDS Client
    participant Handler as HTTP Handler
    participant Manager as Session Manager
    participant Supervisor as PromptActivitySupervisor
    participant Driver as Agent Driver
    participant Store as Session Store
    participant SSE as SSE Stream

    Client->>Handler: POST /api/sessions/{id}/prompt
    Handler->>Manager: submitPrompt(ctx, PromptRequest)
    Manager->>Supervisor: startSupervisor(heartbeat interval, reporter)
    activate Supervisor
    Supervisor->>Store: persist initial activity meta
    par Driver execution
        Manager->>Driver: run prompt driver
        Driver-->>Manager: agent events
    and Heartbeat loop
        loop every heartbeat interval
            Supervisor->>Store: persist Activity heartbeat (LastActivityAt)
            Supervisor->>Manager: emit runtime_progress event
            Manager->>SSE: write agent SSE event (runtime)
        end
    end
    alt inactivity timeout detected
        Supervisor->>Manager: cancel prompt (grace)
        Supervisor->>Store: persist stall state & activity
        Supervisor->>Manager: StopWithCause(timeout)
    else prompt completes
        Manager->>Supervisor: stopSupervisor()
    end
    deactivate Supervisor
    Manager->>Handler: finish prompt, drain events
    Handler->>Client: close SSE stream
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 7.59% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is vague and generic, using non-descriptive terms like "production grade adjustments" that do not convey specific information about the changeset. Replace with a specific summary of the main change, such as "feat: add session activity supervision and monitoring" or similar concrete description.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ 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.

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

Caution

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

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

535-610: ⚠️ Potential issue | 🟠 Major

Track retry goroutines in coordinator shutdown.

Lines 546 and 589 start background goroutines that are not counted in c.wg. After a delivery failure, wait() can return before the retry waiter/timer exits, so shutdown is not actually quiescent and the retry closure can still touch coordinator state after teardown.

As per coding guidelines, "Every goroutine must have explicit ownership and shutdown via context.Context cancellation" and "No fire-and-forget goroutines — track with sync.WaitGroup or equivalent".

internal/api/httpapi/prompt.go (1)

133-159: ⚠️ Potential issue | 🟠 Major

Cancel the prompt before detaching the drain.

Right now a broken client connection keeps the prompt alive until events closes. If the agent hangs, this goroutine and the prompt can outlive the request indefinitely with no consumer attached.

🛑 Safer direction
 		case <-c.Request.Context().Done():
-			h.drainPromptEventsAsync(events, cancelOnReturn)
-			cancelOnReturn = nil
+			cancelOnReturn()
+			cancelOnReturn = nil
+			h.drainPromptEventsAsync(events)
 			return
@@
 			if err := state.emit(writer, event); err != nil {
-				h.drainPromptEventsAsync(events, cancelOnReturn)
-				cancelOnReturn = nil
+				cancelOnReturn()
+				cancelOnReturn = nil
+				h.drainPromptEventsAsync(events)
 				return
 			}
 		}
 	}
 }
 
-func (h *Handlers) drainPromptEventsAsync(events <-chan acp.AgentEvent, cancelPrompt context.CancelFunc) {
+func (h *Handlers) drainPromptEventsAsync(events <-chan acp.AgentEvent) {
 	go func() {
-		defer cancelPrompt()
 		h.drainPromptEvents(events)
 	}()
 }

As per coding guidelines, "Every goroutine must have explicit ownership and shutdown via context.Context cancellation" and "No fire-and-forget goroutines — track with sync.WaitGroup or equivalent".

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

In `@internal/api/httpapi/prompt.go` around lines 133 - 159, The current
drainPromptEventsAsync launches a fire-and-forget goroutine that defers
cancelPrompt(), letting the prompt live while waiting on events; change it so
the prompt cancellation happens immediately before detaching the drain and do
not rely on deferred cancel inside the goroutine: in drainPromptEventsAsync,
call cancelPrompt() (if non-nil) prior to spawning the goroutine and remove the
defer cancel from inside the goroutine, and also ensure the spawned goroutine is
tracked/owned (e.g., accept a context or use an existing waitgroup) so it cannot
run without explicit shutdown; update usages accordingly (references:
drainPromptEventsAsync, drainPromptEvents, cancelPrompt).
internal/session/manager_prompt.go (1)

395-429: ⚠️ Potential issue | 🟠 Major

Drain buffered runtime events before leaving the prompt loop.

Both the closed-source path and the done/error path return immediately, even if runtime already has buffered supervision events ready. That makes late runtime_progress / warning / timeout events nondeterministically disappear from storage and notifier fan-out. Keep the loop alive until the runtime channel is stopped and drained as well.

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

In `@internal/session/manager_prompt.go` around lines 395 - 429, The prompt loop
currently returns immediately when the source channel closes or when a
Done/Error event is seen, which can drop buffered runtime supervision events on
the runtime channel; update the loop around the select and the Done/Error
handling to keep processing the runtime channel until it is closed and drained.
Concretely: when the source case sees !ok, only return if runtime is nil
(otherwise set source=nil to stop selecting it and continue); when the runtime
case sees !ok, set runtime=nil as you already do; when you observe
normalized.Type == acp.EventTypeDone || acp.EventTypeError, still call
m.dispatchTurnEnd(...) but do not return unless runtime == nil (i.e., wait until
the runtime channel becomes nil/closed and all its events are processed). Keep
using the same helpers (m.normalizeEvent, m.preparePromptEvent, m.recordEvent,
m.notifyAgentEvent, m.dispatchTurnEnd) and the runtime/source variables to gate
returning.
🧹 Nitpick comments (10)
web/e2e/automation.spec.ts (1)

38-38: Align the test name with current behavior.

The scenario no longer edits/saves automation; it validates prefilled form data and closes. Rename the test (or restore edit-save assertions) to keep intent explicit.

Suggested rename
-test("operator can edit automation, trigger a real run, and inspect the linked session transcript", async ({
+test("operator can inspect automation details, trigger a real run, and inspect the linked session transcript", async ({

Also applies to: 93-98

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

In `@web/e2e/automation.spec.ts` at line 38, The test title string in the
test(...) call that currently reads "operator can edit automation, trigger a
real run, and inspect the linked session transcript" no longer matches behavior
(the test only validates prefilled form data and closes); update the test title
to reflect the actual behavior (e.g., "operator can view prefilled automation
form and close without saving") and make the same rename for the other
occurrence around the second test block (the one at lines 93-98) so both test
names accurately describe validation-only behavior; locate the tests by the
test(...) call and change the string literals accordingly.
web/src/systems/bridges/components/bridge-detail-panel.test.tsx (1)

73-87: Consider unique defaults in makeRoute to avoid duplicate-key noise in tests.

If multiple default routes are generated in one test, repeated session_id/routing_key_hash can create duplicate row keys and flaky assertions.

🧪 Suggested improvement
+let routeSeed = 0;
+
 function makeRoute(overrides: Partial<BridgeRoute> = {}): BridgeRoute {
+  const seed = ++routeSeed;
   return {
     agent_name: "support-agent",
     bridge_instance_id: "brg_support",
     created_at: "2026-04-13T12:00:00Z",
     last_activity_at: "2026-04-13T12:15:00Z",
     peer_id: "peer_123",
-    routing_key_hash: "abc123",
+    routing_key_hash: `abc${seed}`,
     scope: "workspace",
-    session_id: "sess_123",
+    session_id: `sess_${seed}`,
     updated_at: "2026-04-13T12:15:00Z",
     workspace_id: "ws_test",
     ...overrides,
   };
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/bridges/components/bridge-detail-panel.test.tsx` around lines
73 - 87, The test helper makeRoute returns identical defaults for fields used as
row keys (session_id, routing_key_hash) which can cause duplicate-key noise when
multiple routes are created; update makeRoute (the helper that returns a
BridgeRoute) to generate unique default values for session_id and
routing_key_hash (e.g., append a short random/unique suffix or use a counter)
unless overridden so each call yields distinct keys and avoids flaky assertions.
web/src/systems/bridges/components/bridge-detail-panel.tsx (1)

375-383: Align the session metadata line with the metadata type rule.

The new session line is metadata; style the label with uppercase + tracking to match the design system.

🎯 Suggested tweak
-                    <div className="mt-1 break-all font-mono text-[11px] text-[color:var(--color-text-tertiary)]">
-                      session {route.session_id}
-                    </div>
+                    <div className="mt-1 flex flex-wrap items-baseline gap-1 break-all font-mono text-[11px] text-[color:var(--color-text-tertiary)]">
+                      <span className="uppercase tracking-[0.12em]">session</span>
+                      <span>{route.session_id}</span>
+                    </div>

As per coding guidelines, web/src/**/*.{tsx,css} requires JetBrains Mono for metadata with uppercase and tracking 0.06em+.

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

In `@web/src/systems/bridges/components/bridge-detail-panel.tsx` around lines 375
- 383, The "session {route.session_id}" metadata line must follow the metadata
rule: update the div that renders session (the one using font-mono) to
explicitly use JetBrains Mono, make the label uppercase and add tracking >=
0.06em; e.g. replace or augment the classList on that div (the element
referencing route.session_id) to use the JetBrains Mono font class used in the
app (replace font-mono with the project's JetBrains Mono utility, e.g.
font-jetbrains or font-jetbrains-mono), add uppercase and tracking-[0.06em] (or
the equivalent tracking utility in your CSS system), and keep the existing mt-1,
break-all and text color classes. Ensure only the label text (the whole "session
..." string) is affected.
go.mod (1)

25-26: Remove the unused github.com/pelletier/go-toml/v2 dependency.

The v2.2.4 version is not imported anywhere in the codebase, making it an orphaned direct dependency that bloats go.mod. Only the v1 version is actively used (in persistence.go and transport_parity_integration_test.go). Remove github.com/pelletier/go-toml/v2 v2.2.4 from go.mod.

As a secondary improvement, consider whether you can consolidate the two TOML libraries (github.com/BurntSushi/toml and github.com/pelletier/go-toml v1) to reduce the overall dependency footprint.

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

In `@go.mod` around lines 25 - 26, Remove the unused direct dependency entry for
"github.com/pelletier/go-toml/v2 v2.2.4" from go.mod, run "go mod tidy" to clean
up the module cache and ensure no remaining references, and run the test suite
to confirm nothing imports v2; the codebase currently uses
"github.com/pelletier/go-toml" (v1) in persistence.go and
transport_parity_integration_test.go, so verify those imports still resolve and
consider consolidating TOML usage by replacing "github.com/BurntSushi/toml" with
the pelletier v1 API (or vice versa) to reduce duplicate TOML libraries if
feasible.
internal/api/httpapi/handlers_test.go (1)

1339-1398: Use a t.Run("Should...") scenario wrapper for this test case.

The behavioral coverage is strong; please wrap this single scenario in the required subtest style for consistency.

As per coding guidelines "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/api/httpapi/handlers_test.go` around lines 1339 - 1398, The test
TestPromptSessionHandlerDrainsPromptAfterRequestCancellation should be converted
to a subtest using t.Run with a "Should..." name; wrap the existing test body
inside t.Run("Should cancel request but allow detached prompt drain to finish"
(or similar), func(t *testing.T) { ... }) so the function
TestPromptSessionHandlerDrainsPromptAfterRequestCancellation only calls that
t.Run, preserving all setup/teardown and referencing the same symbols
(stubSessionManager.PromptFn, newTestHandlers, newTestRouter, promptCtxCh,
events, recorder, done) unchanged.
internal/api/core/coverage_helpers_test.go (1)

471-500: Wrap this new test case in t.Run("Should...") to match test conventions.

The assertions are good, but this new test path should follow the repo’s required subtest naming pattern.

♻️ Suggested refactor
 func TestObserveHealthPayloadIncludesRuntimeActivity(t *testing.T) {
 	t.Parallel()
-
-	lastActivityAt := time.Date(2026, 4, 24, 12, 0, 0, 0, time.UTC)
-	health := ObserveHealthPayloadFromHealth(observepkg.Health{
-		Status:         "ok",
-		ActiveSessions: 1,
-		Activities: []observepkg.SessionActivityHealth{{
-			SessionID:        " sess-activity ",
-			TurnID:           " turn-activity ",
-			LastActivityAt:   &lastActivityAt,
-			LastActivityKind: "warning",
-			CurrentTool:      "delegate_task",
-			IdleSeconds:      900,
-			Status:           "warning",
-		}},
-	})
-
-	if got, want := len(health.Activities), 1; got != want {
-		t.Fatalf("len(Activities) = %d, want %d", got, want)
-	}
-	activity := health.Activities[0]
-	if activity.SessionID != "sess-activity" ||
-		activity.TurnID != "turn-activity" ||
-		activity.Status != "warning" ||
-		activity.CurrentTool != "delegate_task" ||
-		activity.IdleSeconds != 900 {
-		t.Fatalf("Activities[0] = %#v, want trimmed runtime activity", activity)
-	}
+	t.Run("ShouldIncludeRuntimeActivityInObserveHealthPayload", func(t *testing.T) {
+		t.Parallel()
+
+		lastActivityAt := time.Date(2026, 4, 24, 12, 0, 0, 0, time.UTC)
+		health := ObserveHealthPayloadFromHealth(observepkg.Health{
+			Status:         "ok",
+			ActiveSessions: 1,
+			Activities: []observepkg.SessionActivityHealth{{
+				SessionID:        " sess-activity ",
+				TurnID:           " turn-activity ",
+				LastActivityAt:   &lastActivityAt,
+				LastActivityKind: "warning",
+				CurrentTool:      "delegate_task",
+				IdleSeconds:      900,
+				Status:           "warning",
+			}},
+		})
+
+		if got, want := len(health.Activities), 1; got != want {
+			t.Fatalf("len(Activities) = %d, want %d", got, want)
+		}
+		activity := health.Activities[0]
+		if activity.SessionID != "sess-activity" ||
+			activity.TurnID != "turn-activity" ||
+			activity.Status != "warning" ||
+			activity.CurrentTool != "delegate_task" ||
+			activity.IdleSeconds != 900 {
+			t.Fatalf("Activities[0] = %#v, want trimmed runtime activity", activity)
+		}
+	})
 }

As per coding guidelines "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/api/core/coverage_helpers_test.go` around lines 471 - 500, Wrap the
test body of TestObserveHealthPayloadIncludesRuntimeActivity in a subtest using
t.Run with a descriptive "Should..." name (e.g., t.Run("Should include trimmed
runtime activity in ObserveHealthPayload", func(t *testing.T) { ... })), moving
the existing setup and assertions into that closure and keeping t.Parallel() at
the top of the outer test; ensure all references to
ObserveHealthPayloadFromHealth and the activity assertions remain unchanged
inside the subtest.
internal/testutil/e2e/config_seed_test.go (1)

85-118: Please convert this new test to t.Run("Should...") style.

Coverage is useful; only the test-case structure is out of line with the suite’s required pattern.

As per coding guidelines "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/testutil/e2e/config_seed_test.go` around lines 85 - 118, Wrap the
existing TestSeedConfigPersistsSessionSupervisionOverlay body in a t.Run subtest
using the "Should..." naming convention (e.g. t.Run("Should persist session
supervision overlay", func(t *testing.T) { ... })), keeping t.Parallel() at the
top of the outer test and moving assertions and the SeedConfig/LoadForHome logic
into the inner subtest; ensure you reference the same functions/variables
(SeedConfig, NewHomePaths, ConfigSeedOptions, aghconfig.LoadForHome and
loaded.Session.Supervision fields) so behavior and checks remain identical but
now execute inside the t.Run subtest.
internal/acp/client_test.go (1)

360-393: Wrap this in the repo’s required Should... subtest pattern.

The assertions look good, but this new test skips both t.Run("Should...") and t.Parallel() even though it is independent.

♻️ Suggested shape
-func TestPromptActivityReporterReportsWhilePromptIsInFlight(t *testing.T) {
-	ctx, cancel := context.WithCancel(testutil.Context(t))
-	defer cancel()
-
-	reports := make(chan PromptActivityReport, 4)
-	stop := startPromptActivityReporter(ctx, PromptRequest{
-		TurnID:                    "turn-reporter",
-		Message:                   "hello",
-		ActivityHeartbeatInterval: 5 * time.Millisecond,
-		ActivityReporter: func(report PromptActivityReport) {
-			select {
-			case reports <- report:
-			default:
-			}
-		},
-	})
-	defer stop()
-
-	first := readPromptActivityReport(t, reports)
-	if got, want := first.Kind, "agent_waiting"; got != want {
-		t.Fatalf("first report kind = %q, want %q", got, want)
-	}
-	if first.Timestamp.IsZero() {
-		t.Fatal("first report timestamp is zero")
-	}
-
-	second := readPromptActivityReport(t, reports)
-	if got, want := second.Kind, "agent_waiting"; got != want {
-		t.Fatalf("second report kind = %q, want %q", got, want)
-	}
-	if second.Timestamp.Before(first.Timestamp) {
-		t.Fatalf("second report timestamp %s before first %s", second.Timestamp, first.Timestamp)
-	}
+func TestPromptActivityReporter(t *testing.T) {
+	t.Run("ShouldReportWhilePromptIsInFlight", func(t *testing.T) {
+		t.Parallel()
+
+		ctx, cancel := context.WithCancel(testutil.Context(t))
+		defer cancel()
+
+		reports := make(chan PromptActivityReport, 4)
+		stop := startPromptActivityReporter(ctx, PromptRequest{
+			TurnID:                    "turn-reporter",
+			Message:                   "hello",
+			ActivityHeartbeatInterval: 5 * time.Millisecond,
+			ActivityReporter: func(report PromptActivityReport) {
+				select {
+				case reports <- report:
+				default:
+				}
+			},
+		})
+		defer stop()
+
+		first := readPromptActivityReport(t, reports)
+		if got, want := first.Kind, "agent_waiting"; got != want {
+			t.Fatalf("first report kind = %q, want %q", got, want)
+		}
+		if first.Timestamp.IsZero() {
+			t.Fatal("first report timestamp is zero")
+		}
+
+		second := readPromptActivityReport(t, reports)
+		if got, want := second.Kind, "agent_waiting"; got != want {
+			t.Fatalf("second report kind = %q, want %q", got, want)
+		}
+		if second.Timestamp.Before(first.Timestamp) {
+			t.Fatalf("second report timestamp %s before first %s", second.Timestamp, first.Timestamp)
+		}
+	})
 }

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

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

In `@internal/acp/client_test.go` around lines 360 - 393, Wrap the
TestPromptActivityReporterReportsWhilePromptIsInFlight body in a subtest using
t.Run with a "Should..." description and mark that subtest t.Parallel();
specifically, move the current assertions and setup (ctx/cancel, reports
channel, startPromptActivityReporter call, defer stop, and checks using
readPromptActivityReport) into t.Run("Should report activity while prompt is in
flight", func(t *testing.T) { t.Parallel(); ... }), keeping the test name
TestPromptActivityReporterReportsWhilePromptIsInFlight and preserving calls to
startPromptActivityReporter and readPromptActivityReport.
internal/testutil/e2e/runtime_harness.go (1)

419-433: Consider consolidating the "address already in use" detection.

The HTTP port retry check uses "address already in use" which could match both TCP and UDS errors on some systems. The UDS check is more specific with "listen unix" + "bind: file exists". This works but the overlap could cause both flags to be true for certain edge cases.

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

In `@internal/testutil/e2e/runtime_harness.go` around lines 419 - 433, In
readinessFailureRetryReasons, the HTTP port retry check ("address already in
use") can overlap with UDS errors; change the logic to first detect UDS using
the existing specific check (strings.Contains(processLog, "listen unix") &&
strings.Contains(processLog, "bind: file exists")) and only set retryHTTPPort
when either the log explicitly mentions a TCP listen/bind (e.g., "listen tcp" or
"bind: address already in use") or when "address already in use" appears and the
UDS-specific check is false; update the return/assignment logic that uses
processLog in readinessFailureRetryReasons to reflect this order so both flags
cannot be true for the same event.
internal/session/prompt_activity.go (1)

50-52: Reconsider context.Background() fallback.

The coding guidelines specify avoiding context.Background() outside main and focused tests. While this is defensive, consider requiring a non-nil context from callers instead.

🔧 Proposed alternative
 func newPromptActivitySupervisor(
 	ctx context.Context,
 	manager *Manager,
 	session *Session,
 	turnState *promptTurnDispatchState,
 	config aghconfig.SessionSupervisionConfig,
 ) *promptActivitySupervisor {
-	if ctx == nil {
-		ctx = context.Background()
+	if ctx == nil || manager == nil || session == nil {
+		return nil
 	}
 	supervisorCtx, cancel := context.WithCancel(ctx)

As per coding guidelines, "Include context.Context as first argument to functions crossing runtime boundaries — avoid context.Background() outside main and focused tests".

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

In `@internal/session/prompt_activity.go` around lines 50 - 52, Remove the
defensive fallback to context.Background() in
internal/session/prompt_activity.go (the code block checking if ctx == nil then
setting context.Background()); instead enforce a non-nil context by validating
ctx at the start of the enclosing function (the function that uses the local
variable ctx) and return an explicit error to the caller (or adjust the function
signature to propagate the error) when ctx is nil; this ensures callers must
supply a proper context rather than silently using context.Background().
🤖 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/acp/handlers_test.go`:
- Around line 1141-1147: Convert the anonymous negative-heartbeat check into a
named subtest (e.g., t.Run("ShouldRejectNegativeHeartbeat", func(t *testing.T) {
... })) and call PromptRequest{TurnID:"turn-negative-heartbeat",
Message:"hello", ActivityHeartbeatInterval:-time.Second}.Validate() inside it;
then assert the returned error specifically using ErrorContains/ErrorAs (for
example require.ErrorContains(t, err, "heartbeat") or errors.Is/As as
appropriate) instead of only checking err != nil so the test ensures the
validation failed for the negative ActivityHeartbeatInterval via
PromptRequest.Validate.

In `@internal/api/contract/contract.go`:
- Around line 53-67: The runtime metric fields in RuntimeActivityPayload
(IdleSeconds, ElapsedSeconds, IterationCurrent, IterationMax) are using
`omitempty`, which drops legitimate zero values; update the struct so clients
can distinguish 0 from absent by either removing `omitempty` from the json tags
for those fields or changing their types to pointers (e.g., *int, *int64) and
ensuring construction code sets nil vs zero appropriately; apply the same change
to the corresponding fields in the other related struct referenced around lines
188-205 so both payloads preserve zero-valued metrics.

In `@internal/api/udsapi/prompt.go`:
- Around line 73-78: The detached goroutine in Handlers.drainPromptEventsAsync
currently fires-and-forgets and only defers cancelPrompt(), which can hang if
events never close; change it to create a bounded child context (e.g.,
context.WithTimeout or context.WithCancel derived from the handler's lifecycle
context) and register the goroutine with the handler's shutdown tracking (e.g.,
h.wg.Add(1) / h.wg.Done() or equivalent) so the goroutine is owned and can be
cancelled on handler shutdown; inside the goroutine select on the child
ctx.Done() and the events channel and ensure cancelPrompt() is called and
wg.Done() on exit, and remove any untracked anonymous spawn so drainPromptEvents
is not left running indefinitely.

In `@internal/config/config.go`:
- Around line 783-809: The validator in SessionSupervisionConfig.Validate
currently allows InactivityWarningAfter to exceed InactivityTimeout; update
Validate (method SessionSupervisionConfig.Validate) to check when both
c.InactivityWarningAfter > 0 and c.InactivityTimeout > 0 that
c.InactivityWarningAfter <= c.InactivityTimeout and return a clear fmt.Errorf
indicating "session.supervision.inactivity_warning_after must be <=
inactivity_timeout" (include the offending values) if the check fails; keep this
check alongside the existing range checks for c.InactivityWarningAfter and
c.InactivityTimeout.

In `@internal/daemon/restart.go`:
- Around line 803-819: The readiness-wait path in restart.go is converting
context cancellations into timeout-style replacement failures; update the logic
around waitForProcessExitAfterReadyTimeout and the surrounding readiness wait to
detect when waitCtx.Done() is triggered and preserve/return that cancellation
error (or propagate the original context.Err()) instead of treating it as a
timeout and calling h.fail with errReplacementDaemonExitedBeforeReady;
specifically, change the post-wait handling in the block that calls
waitForProcessExitAfterReadyTimeout (and the similar block around the 844-863
range) to check for context cancellation (ctx.Err() or the cancellation cause)
and return/propagate that immediately, and ensure any long-running loops use
select { case <-waitCtx.Done(): ... } so the cancellation cause is not lost when
invoking h.fail(store, operationID, ...).

In `@internal/extension/teams_provider_integration_test.go`:
- Around line 65-73: Wrap each per-instance assertion into a t.Run subtest to
isolate failures: iterate expectedInstanceIDs and for each call
t.Run(instanceID, func(t *testing.T) { ... }) and move the existing checks
(calling teamsProviderLastStateForInstance(states, instanceID), verifying ok,
and comparing state.Status.Normalize() to bridgepkg.BridgeStatusReady and
state.Error) inside that subtest; ensure you use the loop variable correctly
(capture instanceID) so t.Fatalf remains inside the subtest to report only that
instance's failure.

In `@internal/network/delivery_test.go`:
- Around line 502-525: TestDeliveryCoordinatorRetryDelayUsesExponentialCap
should run each table-driven case as a named subtest: replace the direct loop
over cases with per-case t.Run calls (use the "Should ..." naming pattern) and
call t.Parallel() inside each subtest to run them concurrently; keep using the
same coordinator.retryDelayFor(...) and the same expected tc.want assertions but
move the comparison and t.Fatalf into the subtest body so failures show the
specific attempt name. Ensure you capture tc in the closure to avoid loop
variable capture and preserve the existing test logic and assertions.

In `@internal/network/manager_test.go`:
- Around line 489-563: Wrap the body of
TestManagerAuditsBusyQueueOverflowAsRejected in a t.Run subtest whose name
begins with "Should" (e.g. t.Run("Should audit busy queue overflow as rejected",
func(t *testing.T) { ... })). Move the existing test logic (context setup,
cfg/MAXQueueDepth, newFakeDeliveryPrompter, recordingAuditWriter, NewManager,
JoinChannel, Send calls, waitForCondition, auditor.rejectedForMessage and
manager.Status assertions) into that subtest, call t.Parallel() inside the
subtest (not just at the top-level), and keep existing cleanup/Shutdown logic
intact so behavior of NewManager, Send, JoinChannel, waitForCondition and
manager.Status is unchanged.

In `@internal/session/manager.go`:
- Around line 338-341: applyRuntimeDefaults() currently returns
m.supervision.Validate() directly, which loses the "session:" context from
NewManager on failures; change applyRuntimeDefaults so after setting defaults it
captures the error from m.supervision.Validate() and returns a wrapped error
(e.g. fmt.Errorf("session: %w", err)) so validation failures include the session
constructor context; reference m.supervision,
aghconfig.SessionSupervisionConfig{},
aghconfig.DefaultSessionSupervisionConfig(), applyRuntimeDefaults and Validate()
when making the change.

In `@internal/store/globaldb/global_db_session.go`:
- Around line 634-642: The helper sessionLivenessActivityJSON must stop
swallowing JSON marshal errors; change its signature to return (string, error),
have it return wrapped errors using fmt.Errorf("session liveness activity
marshal: %w", err) when json.Marshal fails (keep the nil checks and
CloneSessionActivityMeta), and update all callers such as RegisterSession and
UpdateSessionState to propagate and handle the error (returning it up the write
path so the caller can fail instead of writing an empty activity_json). Ensure
all propagated errors are wrapped with contextual messages per guidelines.

In `@web/e2e/automation.spec.ts`:
- Line 91: Remove the use of force:true on
automationUI.editAutomationButton.click so the test doesn't bypass actionability
checks; instead wait/assert the button is actionable (e.g.,
automationUI.editAutomationButton.should('be.visible').and('not.be.disabled') or
equivalent) and then call automationUI.editAutomationButton.click() normally,
ensuring any overlays/modals are closed before clicking and keeping the selector
automationUI.editAutomationButton as the target.
- Line 68: The assertion currently checks automationUI.runHistory at the panel
level and can match the wrong run; instead scope the check to the specific
seeded run row by locating the seeded row element (e.g., a helper or selector
like automationUI.getSeededRunRow(seedId) or find the row by the seeded run
name/id) and assert that that single row contains /completed/i (replace the
top-level automationUI.runHistory reference with the scoped seeded-run element
such as automationUI.getSeededRunRow(seedId) and call
toContainText(/completed/i) on it).

In `@web/e2e/tasks.spec.ts`:
- Around line 150-158: The URL assertion using a dynamic RegExp is brittle;
replace the final expect(appPage).toHaveURL(new RegExp(`${activeRunPath}$`))
with the same pathname-poll pattern used on line 163: use expect.poll to
repeatedly read appPage.url(), parse the URL's pathname, and assert it equals
activeRunPath so the test compares pathnames (referencing activeRunPath,
appPage, and tasksUI.runDetailContent for locating the assertion).

---

Outside diff comments:
In `@internal/api/httpapi/prompt.go`:
- Around line 133-159: The current drainPromptEventsAsync launches a
fire-and-forget goroutine that defers cancelPrompt(), letting the prompt live
while waiting on events; change it so the prompt cancellation happens
immediately before detaching the drain and do not rely on deferred cancel inside
the goroutine: in drainPromptEventsAsync, call cancelPrompt() (if non-nil) prior
to spawning the goroutine and remove the defer cancel from inside the goroutine,
and also ensure the spawned goroutine is tracked/owned (e.g., accept a context
or use an existing waitgroup) so it cannot run without explicit shutdown; update
usages accordingly (references: drainPromptEventsAsync, drainPromptEvents,
cancelPrompt).

In `@internal/session/manager_prompt.go`:
- Around line 395-429: The prompt loop currently returns immediately when the
source channel closes or when a Done/Error event is seen, which can drop
buffered runtime supervision events on the runtime channel; update the loop
around the select and the Done/Error handling to keep processing the runtime
channel until it is closed and drained. Concretely: when the source case sees
!ok, only return if runtime is nil (otherwise set source=nil to stop selecting
it and continue); when the runtime case sees !ok, set runtime=nil as you already
do; when you observe normalized.Type == acp.EventTypeDone || acp.EventTypeError,
still call m.dispatchTurnEnd(...) but do not return unless runtime == nil (i.e.,
wait until the runtime channel becomes nil/closed and all its events are
processed). Keep using the same helpers (m.normalizeEvent, m.preparePromptEvent,
m.recordEvent, m.notifyAgentEvent, m.dispatchTurnEnd) and the runtime/source
variables to gate returning.

---

Nitpick comments:
In `@go.mod`:
- Around line 25-26: Remove the unused direct dependency entry for
"github.com/pelletier/go-toml/v2 v2.2.4" from go.mod, run "go mod tidy" to clean
up the module cache and ensure no remaining references, and run the test suite
to confirm nothing imports v2; the codebase currently uses
"github.com/pelletier/go-toml" (v1) in persistence.go and
transport_parity_integration_test.go, so verify those imports still resolve and
consider consolidating TOML usage by replacing "github.com/BurntSushi/toml" with
the pelletier v1 API (or vice versa) to reduce duplicate TOML libraries if
feasible.

In `@internal/acp/client_test.go`:
- Around line 360-393: Wrap the
TestPromptActivityReporterReportsWhilePromptIsInFlight body in a subtest using
t.Run with a "Should..." description and mark that subtest t.Parallel();
specifically, move the current assertions and setup (ctx/cancel, reports
channel, startPromptActivityReporter call, defer stop, and checks using
readPromptActivityReport) into t.Run("Should report activity while prompt is in
flight", func(t *testing.T) { t.Parallel(); ... }), keeping the test name
TestPromptActivityReporterReportsWhilePromptIsInFlight and preserving calls to
startPromptActivityReporter and readPromptActivityReport.

In `@internal/api/core/coverage_helpers_test.go`:
- Around line 471-500: Wrap the test body of
TestObserveHealthPayloadIncludesRuntimeActivity in a subtest using t.Run with a
descriptive "Should..." name (e.g., t.Run("Should include trimmed runtime
activity in ObserveHealthPayload", func(t *testing.T) { ... })), moving the
existing setup and assertions into that closure and keeping t.Parallel() at the
top of the outer test; ensure all references to ObserveHealthPayloadFromHealth
and the activity assertions remain unchanged inside the subtest.

In `@internal/api/httpapi/handlers_test.go`:
- Around line 1339-1398: The test
TestPromptSessionHandlerDrainsPromptAfterRequestCancellation should be converted
to a subtest using t.Run with a "Should..." name; wrap the existing test body
inside t.Run("Should cancel request but allow detached prompt drain to finish"
(or similar), func(t *testing.T) { ... }) so the function
TestPromptSessionHandlerDrainsPromptAfterRequestCancellation only calls that
t.Run, preserving all setup/teardown and referencing the same symbols
(stubSessionManager.PromptFn, newTestHandlers, newTestRouter, promptCtxCh,
events, recorder, done) unchanged.

In `@internal/session/prompt_activity.go`:
- Around line 50-52: Remove the defensive fallback to context.Background() in
internal/session/prompt_activity.go (the code block checking if ctx == nil then
setting context.Background()); instead enforce a non-nil context by validating
ctx at the start of the enclosing function (the function that uses the local
variable ctx) and return an explicit error to the caller (or adjust the function
signature to propagate the error) when ctx is nil; this ensures callers must
supply a proper context rather than silently using context.Background().

In `@internal/testutil/e2e/config_seed_test.go`:
- Around line 85-118: Wrap the existing
TestSeedConfigPersistsSessionSupervisionOverlay body in a t.Run subtest using
the "Should..." naming convention (e.g. t.Run("Should persist session
supervision overlay", func(t *testing.T) { ... })), keeping t.Parallel() at the
top of the outer test and moving assertions and the SeedConfig/LoadForHome logic
into the inner subtest; ensure you reference the same functions/variables
(SeedConfig, NewHomePaths, ConfigSeedOptions, aghconfig.LoadForHome and
loaded.Session.Supervision fields) so behavior and checks remain identical but
now execute inside the t.Run subtest.

In `@internal/testutil/e2e/runtime_harness.go`:
- Around line 419-433: In readinessFailureRetryReasons, the HTTP port retry
check ("address already in use") can overlap with UDS errors; change the logic
to first detect UDS using the existing specific check
(strings.Contains(processLog, "listen unix") && strings.Contains(processLog,
"bind: file exists")) and only set retryHTTPPort when either the log explicitly
mentions a TCP listen/bind (e.g., "listen tcp" or "bind: address already in
use") or when "address already in use" appears and the UDS-specific check is
false; update the return/assignment logic that uses processLog in
readinessFailureRetryReasons to reflect this order so both flags cannot be true
for the same event.

In `@web/e2e/automation.spec.ts`:
- Line 38: The test title string in the test(...) call that currently reads
"operator can edit automation, trigger a real run, and inspect the linked
session transcript" no longer matches behavior (the test only validates
prefilled form data and closes); update the test title to reflect the actual
behavior (e.g., "operator can view prefilled automation form and close without
saving") and make the same rename for the other occurrence around the second
test block (the one at lines 93-98) so both test names accurately describe
validation-only behavior; locate the tests by the test(...) call and change the
string literals accordingly.

In `@web/src/systems/bridges/components/bridge-detail-panel.test.tsx`:
- Around line 73-87: The test helper makeRoute returns identical defaults for
fields used as row keys (session_id, routing_key_hash) which can cause
duplicate-key noise when multiple routes are created; update makeRoute (the
helper that returns a BridgeRoute) to generate unique default values for
session_id and routing_key_hash (e.g., append a short random/unique suffix or
use a counter) unless overridden so each call yields distinct keys and avoids
flaky assertions.

In `@web/src/systems/bridges/components/bridge-detail-panel.tsx`:
- Around line 375-383: The "session {route.session_id}" metadata line must
follow the metadata rule: update the div that renders session (the one using
font-mono) to explicitly use JetBrains Mono, make the label uppercase and add
tracking >= 0.06em; e.g. replace or augment the classList on that div (the
element referencing route.session_id) to use the JetBrains Mono font class used
in the app (replace font-mono with the project's JetBrains Mono utility, e.g.
font-jetbrains or font-jetbrains-mono), add uppercase and tracking-[0.06em] (or
the equivalent tracking utility in your CSS system), and keep the existing mt-1,
break-all and text color classes. Ensure only the label text (the whole "session
..." string) is affected.
🪄 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: 1cb40c8a-32c0-4679-88d6-75a63aeb404b

📥 Commits

Reviewing files that changed from the base of the PR and between 2e8b245 and 5e44bad.

⛔ Files ignored due to path filters (48)
  • .codex/plans/long-running-sessions.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/evidence/commands.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/evidence/hermes-comparison.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/reports/release-qa-report.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/test-cases/TC-LLM-001-real-agent-network-smoke.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/test-cases/TC-NET-001-network-routing-audit.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/test-cases/TC-NET-002-delivery-retry-backoff.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/test-cases/TC-NET-003-network-task-reentry.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/test-cases/TC-WEB-001-network-operator-ui.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/test-plans/release-network-regression.md is excluded by !**/*.md
  • .codex/qa/release-hermes/qa/test-plans/release-network-test-plan.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-cases/SMOKE-001.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-cases/TC-INT-001.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-cases/TC-INT-002.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-cases/TC-INT-003.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-cases/TC-LIVE-001.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-cases/TC-UI-001.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-plans/agh-release-openclaw-regression.md is excluded by !**/*.md
  • .codex/release-qa/qa/test-plans/agh-release-openclaw-test-plan.md is excluded by !**/*.md
  • .codex/release-qa/qa/verification-report.md is excluded by !**/*.md
  • .compozy/tasks/hermes/adrs/adr-001-hermes-hardening-tracks.md is excluded by !**/*.md
  • .compozy/tasks/hermes/adrs/adr-002-durable-automation-scheduler-state.md is excluded by !**/*.md
  • .compozy/tasks/hermes/adrs/adr-003-mcp-oauth-auth-subsystem.md is excluded by !**/*.md
  • .compozy/tasks/hermes/adrs/adr-004-shared-process-registry-and-interrupt-runtime.md is excluded by !**/*.md
  • .compozy/tasks/hermes/adrs/adr-005-memory-health-history-before-runtime-contextrefs.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis_acp_lifecycle.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis_cli_setup.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis_gateway_cron.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis_memory_context.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis_observability.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis_state_persistence.md is excluded by !**/*.md
  • .compozy/tasks/hermes/analysis/analysis_tools_security.md is excluded by !**/*.md
  • docs/design/generated/brandkit.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/hero.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/symbol.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • go.sum is excluded by !**/*.sum
  • openapi/agh.json is excluded by !**/*.json
  • packages/site/content/runtime/cli-reference/observe/health.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/configuration/config-toml.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/sessions/events.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/sessions/lifecycle.mdx is excluded by !**/*.mdx
  • sdk/typescript/src/generated/contracts.ts is excluded by !**/generated/**
  • web/e2e/fixtures/browser-artifact-session.test.ts is excluded by !**/fixtures/**
  • web/e2e/fixtures/browser-artifact-session.ts is excluded by !**/fixtures/**
  • web/e2e/fixtures/selectors.test.ts is excluded by !**/fixtures/**
  • web/e2e/fixtures/selectors.ts is excluded by !**/fixtures/**
  • web/src/generated/agh-openapi.d.ts is excluded by !**/generated/**
📒 Files selected for processing (81)
  • go.mod
  • internal/acp/client.go
  • internal/acp/client_test.go
  • internal/acp/handlers_test.go
  • internal/acp/types.go
  • internal/api/contract/contract.go
  • internal/api/core/conversions.go
  • internal/api/core/coverage_helpers_test.go
  • internal/api/core/settings.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/httpapi/httpapi_integration_test.go
  • internal/api/httpapi/prompt.go
  • internal/api/httpapi/transport_parity_integration_test.go
  • internal/api/udsapi/handlers_test.go
  • internal/api/udsapi/prompt.go
  • internal/api/udsapi/transport_parity_integration_test.go
  • internal/api/udsapi/udsapi_integration_test.go
  • internal/config/config.go
  • internal/config/merge.go
  • internal/config/provider.go
  • internal/config/provider_test.go
  • internal/daemon/boot.go
  • internal/daemon/daemon.go
  • internal/daemon/daemon_acpmock_faults_integration_test.go
  • internal/daemon/daemon_network_collaboration_integration_test.go
  • internal/daemon/restart.go
  • internal/daemon/task_runtime.go
  • internal/extension/bridge_delivery_notifier_test.go
  • internal/extension/teams_provider_integration_test.go
  • internal/network/delivery.go
  • internal/network/delivery_test.go
  • internal/network/manager.go
  • internal/network/manager_test.go
  • internal/observe/health.go
  • internal/observe/helpers_test.go
  • internal/observe/observer_test.go
  • internal/observe/reconcile.go
  • internal/session/liveness.go
  • internal/session/manager.go
  • internal/session/manager_prompt.go
  • internal/session/manager_test.go
  • internal/session/prompt_activity.go
  • internal/session/prompt_activity_test.go
  • internal/session/resume_repair.go
  • internal/session/session.go
  • internal/session/stop_cause.go
  • internal/session/stop_reason.go
  • internal/store/globaldb/global_db.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/task/interfaces_integration_test.go
  • internal/testutil/e2e/config_seed.go
  • internal/testutil/e2e/config_seed_test.go
  • internal/testutil/e2e/mock_agents.go
  • internal/testutil/e2e/runtime_harness.go
  • internal/testutil/e2e/runtime_harness_lifecycle_test.go
  • internal/transcript/transcript.go
  • internal/transcript/ui_messages.go
  • web/e2e/automation.spec.ts
  • web/e2e/bridges.spec.ts
  • web/e2e/session-onboarding.spec.ts
  • web/e2e/settings-transport.spec.ts
  • web/e2e/storybook-bootstrap.spec.ts
  • web/e2e/tasks.spec.ts
  • web/src/components/assistant-ui/session-thread.tsx
  • web/src/hooks/routes/use-bridges-page.ts
  • web/src/systems/bridges/components/bridge-detail-panel.test.tsx
  • web/src/systems/bridges/components/bridge-detail-panel.tsx
  • web/src/systems/session/components/chat-header.test.tsx
  • web/src/systems/session/components/chat-header.tsx
  • web/src/systems/session/components/runtime-activity-notice.test.tsx
  • web/src/systems/session/components/runtime-activity-notice.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/lib/message-schemas.ts
  • web/src/systems/session/lib/query-options.ts
  • web/src/systems/session/lib/session-toolkit.tsx
  • web/src/systems/session/types.ts

Comment thread internal/acp/handlers_test.go Outdated
Comment thread internal/api/contract/contract.go
Comment thread internal/api/udsapi/prompt.go Outdated
Comment thread internal/config/config.go
Comment thread internal/daemon/restart.go Outdated
Comment thread internal/session/manager.go Outdated
Comment thread internal/store/globaldb/global_db_session.go Outdated
Comment thread web/e2e/automation.spec.ts Outdated
Comment thread web/e2e/automation.spec.ts Outdated
Comment thread web/e2e/tasks.spec.ts Outdated
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: 7

🤖 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/udsapi/prompt.go`:
- Around line 89-93: The call h.promptDrainWG.Go(...) is invalid because
sync.WaitGroup has no Go method; replace it by calling h.promptDrainWG.Add(1)
before launching a goroutine and inside the goroutine `defer
h.promptDrainWG.Done()` so the wait group is decremented when the goroutine
exits; specifically, change the block that currently calls
h.promptDrainWG.Go(func() { defer cancelDrain(); defer cancelPrompt();
h.drainPromptEvents(drainCtx, events) }) to first call h.promptDrainWG.Add(1)
and then launch a go func() that defers h.promptDrainWG.Done(), defer
cancelDrain() and cancelPrompt(), and then calls h.drainPromptEvents(drainCtx,
events).

In `@internal/extension/teams_provider_integration_test.go`:
- Around line 67-75: The subtest "ShouldReportReadyStateFor_"+instanceID in
teams_provider_integration_test.go is independent and can be run concurrently;
add t.Parallel() at the start of that subtest's closure so it runs in parallel
with other subtests that only read the shared states variable. Locate the
anonymous func passed to t.Run for the name
"ShouldReportReadyStateFor_"+instanceID and insert t.Parallel() as the first
statement inside that function (the code that calls
teamsProviderLastStateForInstance and asserts state.Status should remain
unchanged).

In `@internal/store/globaldb/global_db_session.go`:
- Around line 590-595: Wrap the error returned by activity.Validate() with
parsing context so callers (e.g., ListSessions) know it originated from
activity_json decoding; specifically, update the validation error return in
global_db_session.go where activity.Validate() is called to return a wrapped
error like fmt.Errorf("store: parse session activity json: %w", err)
(referencing activity.Validate() and the activity variable) instead of returning
the raw validation error.

In `@internal/testutil/e2e/runtime_harness.go`:
- Around line 753-775: Add a nil check for predicate at the start of
RuntimeHarness.PromptSessionUntil and return an explicit error if predicate ==
nil before calling doRequest so we fail fast and do not mutate session state;
leave the existing defensive nil check in readSSERecordsUntil intact.
Specifically, in PromptSessionUntil (which calls doRequest and then
readSSERecordsUntil), validate predicate early and return an error if nil; apply
the same early validation pattern to the other helper with the same behavior
that currently delegates to readSSERecordsUntil.
- Around line 419-425: Define a sentinel error value
ErrDaemonExitedBeforeReadiness in the waitForReady context (e.g., var
ErrDaemonExitedBeforeReadiness = errors.New("daemon exited before readiness"))
and change readinessFailureRetryReasons to stop string-matching and instead use
errors.Is(err, ErrDaemonExitedBeforeReadiness) to detect that condition; ensure
the package imports the errors package and update waitForReady to return that
sentinel when the daemon exits before readiness so readinessFailureRetryReasons
(and any callers) can reliably match it.

In `@packages/site/lib/layout.shared.tsx`:
- Line 6: The home link currently renders the decorative Logo component (Logo)
with no accessible name; add a visually hidden text node (e.g. <span
className="sr-only">Home</span> or the site name) alongside the Logo inside the
title/home anchor so assistive tech can announce it. Locate the title prop or
the shared nav home anchor that renders Logo and insert the visually hidden span
after the Logo while keeping the decorative prop on Logo unchanged.

In `@packages/ui/src/components/logo.tsx`:
- Line 45: The logo SVG uses an off-by-one hex value for the accent fill (the
<rect ... fill="#E8572B" /> in components/logo.tsx); update that fill to the
canonical AGH accent `#E8572A` so the symbol background matches the brand color
everywhere (locate the <rect> element in the Logo component and replace the
current fill value with "#E8572A").
🪄 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: 8db8e3d5-e30f-44e6-9ebb-1a6b3f8fda70

📥 Commits

Reviewing files that changed from the base of the PR and between 5e44bad and 67b8b9f.

⛔ Files ignored due to path filters (44)
  • .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/**
  • .codex/plans/2026-04-24-shared-logo.md is excluded by !**/*.md
  • .compozy/tasks/hermes/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_023.md is excluded by !**/*.md
  • docs/design/generated/bento/bridges-v1.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/bento/memory-v1.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/bento/network-v1.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/bento/runtime-v1.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/bento/trace-v1.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/bento_grid.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • docs/design/generated/hero_illustration.png is excluded by !**/*.png, !**/generated/**, !docs/design/**/*
  • openapi/agh.json is excluded by !**/*.json
  • packages/ui/README.md is excluded by !**/*.md
  • web/src/generated/agh-openapi.d.ts is excluded by !**/generated/**
📒 Files selected for processing (40)
  • internal/acp/client_test.go
  • internal/acp/handlers_test.go
  • internal/api/contract/contract.go
  • internal/api/contract/contract_test.go
  • internal/api/core/coverage_helpers_test.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/udsapi/handlers_test.go
  • internal/api/udsapi/prompt.go
  • internal/api/udsapi/server.go
  • internal/config/config.go
  • internal/config/config_test.go
  • internal/daemon/restart.go
  • internal/daemon/restart_test.go
  • internal/extension/teams_provider_integration_test.go
  • internal/network/delivery_test.go
  • internal/network/manager_test.go
  • internal/session/additional_test.go
  • internal/session/manager.go
  • internal/session/prompt_activity.go
  • internal/store/globaldb/global_db_session.go
  • internal/store/globaldb/global_db_test.go
  • internal/testutil/e2e/config_seed_test.go
  • internal/testutil/e2e/runtime_harness.go
  • internal/testutil/e2e/runtime_harness_lifecycle_test.go
  • packages/site/components/logo.tsx
  • packages/site/components/site/home-header.test.tsx
  • packages/site/components/site/home-header.tsx
  • packages/site/lib/layout.shared.tsx
  • packages/site/remotion/hero/components/sidebar-rail.tsx
  • packages/ui/src/components/logo.test.tsx
  • packages/ui/src/components/logo.tsx
  • packages/ui/src/components/stories/logo.stories.tsx
  • packages/ui/src/index.ts
  • web/e2e/automation.spec.ts
  • web/e2e/tasks.spec.ts
  • web/src/components/app-sidebar.test.tsx
  • web/src/components/app-sidebar.tsx
  • web/src/systems/bridges/components/bridge-detail-panel.test.tsx
  • web/src/systems/bridges/components/bridge-detail-panel.tsx
  • web/src/systems/session/components/chat-header.test.tsx
💤 Files with no reviewable changes (1)
  • packages/site/components/logo.tsx
✅ Files skipped from review due to trivial changes (1)
  • packages/ui/src/index.ts
🚧 Files skipped from review as they are similar to previous changes (11)
  • web/src/systems/session/components/chat-header.test.tsx
  • internal/acp/handlers_test.go
  • web/src/systems/bridges/components/bridge-detail-panel.tsx
  • internal/api/core/coverage_helpers_test.go
  • internal/testutil/e2e/runtime_harness_lifecycle_test.go
  • internal/store/globaldb/global_db_test.go
  • internal/session/prompt_activity.go
  • internal/daemon/restart.go
  • internal/session/manager.go
  • internal/config/config.go
  • web/e2e/automation.spec.ts

Comment thread internal/api/udsapi/prompt.go
Comment thread internal/extension/teams_provider_integration_test.go
Comment thread internal/store/globaldb/global_db_session.go Outdated
Comment thread internal/testutil/e2e/runtime_harness.go
Comment thread internal/testutil/e2e/runtime_harness.go
Comment thread packages/site/lib/layout.shared.tsx Outdated
Comment thread packages/ui/src/components/logo.tsx Outdated
@pedronauck pedronauck merged commit 713c9f1 into main Apr 24, 2026
3 of 4 checks passed
@pedronauck pedronauck deleted the release-adjustments branch April 24, 2026 20:10
This was referenced Apr 26, 2026
This was referenced Apr 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



### 🧪 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