Skip to content

feat: add agent session route#80

Merged
pedronauck merged 4 commits into
mainfrom
agent-sessions
Apr 27, 2026
Merged

feat: add agent session route#80
pedronauck merged 4 commits into
mainfrom
agent-sessions

Conversation

@pedronauck
Copy link
Copy Markdown
Member

@pedronauck pedronauck commented Apr 26, 2026

Summary by CodeRabbit

  • New Features

    • Agent detail pages with header, stats, sessions list, and an info panel
    • Agent-scoped session pages and links (URLs include agent context)
    • Session-creation provider and hook for agent-focused session creation
  • Refactor

    • Sidebar simplified to flat agent links and active-state indicators; per-agent collapsible session lists and inline “new session” UI removed
    • Session routes reorganized under agent paths
  • Tests / Stories

    • Updated and added UI stories and tests for agent pages and components

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

coderabbitai Bot commented Apr 26, 2026

Walkthrough

Removed per-agent session UI from the sidebar and moved session-creation control into a SessionCreate provider; introduced agent-scoped routes (/agents/$name and /agents/$name/sessions/$id) with agent-detail pages and components, updated routing and navigation to use agent-scoped URLs, and added corresponding hooks, utilities, stories, and tests.

Changes

Cohort / File(s) Summary
Sidebar & tests
web/src/components/app-sidebar.tsx, web/src/components/app-sidebar.test.tsx, web/src/components/stories/app-sidebar.stories.tsx
Removed per-agent collapsible session lists and session-creation props; sidebar rows now link to /agents/$name. Tests/stories updated to drop new-session UI assertions.
Routing & route implementations
web/src/routeTree.gen.ts, web/src/routes/_app.tsx, web/src/routes/_app/agents.$name.tsx, web/src/routes/_app/agents.$name.sessions.$id.tsx, web/src/routes/_app/session.$id.tsx, web/src/routes/_app/-agents.$name.test.tsx, web/src/routes/_app/-agents.$name.sessions.$id.test.tsx
Added parameterized agent routes and nested session route; created agent-detail and agent-session pages; updated route tree and replaced prior session permalink behavior with agent-scoped routing and redirects.
SessionCreate context & hooks
web/src/systems/session/contexts/session-create-context.tsx, web/src/systems/session/hooks/use-session-create.ts, web/src/systems/session/hooks/use-session-create-dialog.ts, web/src/systems/session/hooks/use-session-create-dialog.test.tsx, web/src/systems/session/index.ts
Introduced SessionCreate context/provider and useSessionCreate hook; moved session-creation wiring from sidebar props into provider; navigation after creation now targets /agents/$name/sessions/$id.
Agent detail UI, components & stories
web/src/systems/agent/components/agent-page-header.tsx, web/src/systems/agent/components/agent-sessions-list.tsx, web/src/systems/agent/components/agent-info-panel.tsx, web/src/systems/agent/components/agent-stats-grid.tsx, web/src/systems/agent/components/stories/*, web/src/systems/agent/components/*.{test,stories}.tsx
Added AgentPageHeader, AgentSessionsList, AgentInfoPanel, AgentStatsGrid with stories and tests covering loading/empty/failure states and interactions (refresh, new session, navigation).
Agent session data & utilities
web/src/systems/agent/hooks/use-agent-sessions.ts, web/src/systems/agent/lib/session-status.ts, web/src/systems/agent/index.ts
Added useAgentSessions (filter+sort by recency), session-status utilities (getAgentSessionStatus, isAgentSessionFailure, types), and re-exported new components/hooks from agent index.
Removed grouping hook
web/src/hooks/use-sessions-by-agent.ts
Deleted prior useSessionsByAgent hook; agent-specific hooks/components now handle grouping/sorting.
Link updates across UI
web/src/systems/tasks/components/task-run-detail-header.tsx, web/src/systems/tasks/components/task-run-detail-panels.tsx
Updated session links to use agent-scoped route params ({ name, id }) and render links only when both values exist.
Storybook & loader tests
web/src/routes/_app/stories/*, web/src/storybook/web-storybook-stories-and-fixtures.test.tsx, web/src/systems/agent/storybook.ts, web/src/systems/agent/testing.ts, web/src/systems/session/testing.ts
Added/updated Storybook stories for agent routes and components; storybook loader test updated to include new agent story modules; testing re-exports added for fixtures.
Tests & router mocks
web/src/components/..., web/src/hooks/routes/use-app-layout.test.tsx, web/src/components/app-sidebar.test.tsx, other test files
Multiple tests updated to expect agent-scoped navigation and param-aware route matching; extended test router mocks (e.g., useMatchRoute accepts params).
UI tokens
packages/ui/src/tokens.css
Added inline typography tokens and mono tracking token used by new components and stories.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Sidebar
    participant Router
    participant AppLayout
    participant SessionCreateProvider as SessionCreateCtx
    participant AgentDetail
    participant API

    User->>Sidebar: Click agent row or New session
    Sidebar->>Router: Navigate to /agents/$name
    Router->>AppLayout: route change
    AppLayout->>SessionCreateCtx: provide session-create context
    User->>AgentDetail: Open /agents/$name
    AgentDetail->>SessionCreateCtx: useSessionCreate()
    User->>AgentDetail: Click "New session"
    AgentDetail->>SessionCreateCtx: openForAgent(name)
    SessionCreateCtx->>User: Show create dialog
    User->>SessionCreateCtx: Submit create
    SessionCreateCtx->>API: Create session (includes agent_name)
    API-->>SessionCreateCtx: Return created session (id, agent_name)
    SessionCreateCtx->>Router: Navigate to /agents/$name/sessions/$id
    Router->>AgentDetail: Load nested session page
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'feat: add agent session route' accurately summarizes the main change: introducing new agent-scoped session routes at /_app/agents/$name/sessions/$id and /_app/agents/$name, along with supporting components and routing infrastructure.
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: 5

🧹 Nitpick comments (8)
web/src/systems/agent/components/stories/agent-info-panel.stories.tsx (1)

36-36: Prefer an interface for Frame props.

Use a named interface for the component props instead of an inline object shape in the function signature.

♻️ Suggested refactor
+import type { ReactNode } from "react";
 import type { Meta, StoryObj } from "@storybook/react-vite";
@@
-function Frame({ children }: { children: React.ReactNode }) {
+interface FrameProps {
+  children: ReactNode;
+}
+
+function Frame({ children }: FrameProps) {

As per coding guidelines, **/*.{ts,tsx}: Use interface for defining object shapes in TypeScript instead of type declarations.

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

In `@web/src/systems/agent/components/stories/agent-info-panel.stories.tsx` at
line 36, Replace the inline prop type in the Frame component signature with a
named interface: define an interface FrameProps { children: React.ReactNode }
and update the component to use FrameProps in its parameter (function Frame({
children }: FrameProps)). Ensure the interface is exported if used elsewhere and
adjust any imports/usage accordingly.
web/src/systems/session/contexts/session-create-context.tsx (1)

12-18: Extract provider props into an interface.

The provider is fine functionally, but props should be modeled with a named interface instead of an inline object shape.

♻️ Suggested refactor
+import type { ReactNode } from "react";
 import { createContext } from "react";
@@
+interface SessionCreateProviderProps {
+  value: SessionCreateContextValue;
+  children: ReactNode;
+}
+
 export function SessionCreateProvider({
   value,
   children,
-}: {
-  value: SessionCreateContextValue;
-  children: React.ReactNode;
-}) {
+}: SessionCreateProviderProps) {
   return <SessionCreateContext.Provider value={value}>{children}</SessionCreateContext.Provider>;
 }

As per coding guidelines, **/*.{ts,tsx}: Use interface for defining object shapes in TypeScript instead of type declarations.

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

In `@web/src/systems/session/contexts/session-create-context.tsx` around lines 12
- 18, Refactor the inline props object for the SessionCreateProvider function
into a named interface: create an interface (e.g., SessionCreateProviderProps)
that defines value: SessionCreateContextValue and children: React.ReactNode,
then update the SessionCreateProvider signature to accept (props:
SessionCreateProviderProps) or destructure ({ value, children }:
SessionCreateProviderProps); ensure you reference the existing
SessionCreateContextValue type and keep behavior unchanged.
web/src/systems/agent/components/agent-stats-grid.tsx (1)

60-66: Share the failure predicate with session-status.ts.

This condition duplicates the stopped/failed classification from web/src/systems/agent/lib/session-status.ts. If one side changes, the badge in AgentSessionsList and this counter will drift. A shared helper would keep both views consistent.

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

In `@web/src/systems/agent/components/agent-stats-grid.tsx` around lines 60 - 66,
Extract the failure/stopped predicate into a shared function in
web/src/systems/agent/lib/session-status.ts (e.g., export function
isSessionFailed(session): boolean) that encapsulates the logic currently
duplicated, then import and use that helper in
web/src/systems/agent/components/agent-stats-grid.tsx (replace the inline if
condition) and also update AgentSessionsList to call the same function so both
views share the single source of truth.
web/src/routes/_app/agents.$name.tsx (1)

18-25: This still fetches agent detail data on nested session routes.

useAgentDetailPage(name) runs before the child-route early return, so /agents/$name/sessions/$id still pays for the agent + sessions queries even though this component renders only <Outlet />. The clean fix is to move the detail shell into an index child route and let this parent route stay as a layout route.

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

In `@web/src/routes/_app/agents`.$name.tsx around lines 18 - 25, AgentDetailPage
currently calls useAgentDetailPage(name) before returning early for nested
routes, causing unnecessary agent+sessions queries on child routes; fix by
making this parent a pure layout route that only reads Route.useParams() and
useChildMatches() and returns <Outlet /> without calling useAgentDetailPage,
then move the existing "detail shell" UI and the useAgentDetailPage(name) call
into a new index child route component (e.g., AgentDetailIndex or
AgentDetailShell) and wire it as the index child so only the index route runs
the agent queries while nested session routes render the parent layout without
fetching.
web/src/components/app-sidebar.test.tsx (1)

263-272: Make this route mock param-aware.

The current stub keys only on to, so setting matchedRouteFuzzy["/agents/$name"] = true would mark every agent row active. That makes this assertion non-discriminating for the name param handling you want to cover.

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

In `@web/src/components/app-sidebar.test.tsx` around lines 263 - 272, The test
sets matchedRouteFuzzy["/agents/$name"] which is not param-aware and thus marks
every agent active; update the stub to target the concrete agent route by using
the agent's name (e.g., set matchedRouteFuzzy["/agents/<agentName>"] = true for
the agent created in the test) so the assertion in the test ("highlights the
agent row whose route is active...") actually verifies name-specific matching;
change the assignment before calling renderSidebar (referencing
matchedRouteFuzzy and the agent created in renderSidebar/makeProps) to use the
specific agent route string.
web/src/routes/_app/stories/-agents.$name.stories.tsx (2)

87-104: Consider adding a play function to verify agent loading state.

Similar to SessionsLoading, the AgentLoading story would benefit from a play function to verify the loading UI is rendered.

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

In `@web/src/routes/_app/stories/-agents`.$name.stories.tsx around lines 87 - 104,
AgentLoading story lacks an automated check for the loading UI; add a play
function to the AgentLoading export that mirrors SessionsLoading's approach:
render via StorybookWorkspaceSetup, then use Testing Library queries (e.g.,
getByRole/getByText or findBy*) to assert loading indicators are present while
the mocked /api/agents/:name delay is active; update the AgentLoading object to
include a play async function that awaits the loading element and asserts its
visibility to verify the loading state.

68-85: Consider adding a play function to verify loading state.

The SessionsLoading story lacks a play function assertion to verify the loading UI renders. While the infinite delay ensures the loading state persists, adding an assertion would make the test more explicit.

🔧 Suggested addition
 export const SessionsLoading: Story = {
   args: {},
   parameters: {
     ...appRouteParameters(codexAgentRoute),
     ...storybookMswParameters({
       session: [
         http.get("/api/sessions", async () => {
           await delay("infinite");
           return HttpResponse.json({ sessions: [] });
         }),
       ],
     }),
   },
   render: () => <StorybookWorkspaceSetup />,
+  tags: ["play-fn"],
+  play: async ({ canvasElement }) => {
+    const canvas = within(canvasElement);
+    await expect(canvas.findByTestId("agent-sessions-loading")).resolves.toBeDefined();
+  },
 };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/routes/_app/stories/-agents`.$name.stories.tsx around lines 68 - 85,
The SessionsLoading story currently only simulates an infinite loading delay but
lacks a play function to assert the loading UI; add a play method on the
SessionsLoading export that mounts the rendered StorybookWorkspaceSetup and uses
testing-library queries (e.g., within canvasElement via screen.getByText or
getByRole) to assert the presence of the expected loading indicator text or
spinner (match the app's loading label), ensuring the test explicitly verifies
the loading state for SessionsLoading.
web/src/systems/agent/components/agent-sessions-list.tsx (1)

162-177: Consider memoizing Date.now() for consistent relative time.

formatRelativeTime calls Date.now() on each invocation (line 166). If multiple sessions render close together, they may get slightly different "now" values, causing inconsistent relative times within the same render pass. This is a minor visual inconsistency, not a bug.

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

In `@web/src/systems/agent/components/agent-sessions-list.tsx` around lines 162 -
177, The function formatRelativeTime currently calls Date.now() each time which
can yield slightly different "now" values across renders; update
formatRelativeTime to accept an optional now: number parameter (or a second
overload) and use that instead of calling Date.now() internally, and then
capture a single const now = Date.now() in the rendering scope (where sessions
are mapped) and pass that shared now into each formatRelativeTime call so all
session timestamps are computed against the same reference instant.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@web/src/routes/_app/agents`.$name.sessions.$id.tsx:
- Around line 125-136: The onDeleteSuccess handler uses the possibly-stale route
param name when navigating after deletion; change it to use the resolved agent
name from the session (e.g., session.agent_name ?? name) so the redirect is
canonical. Update the onDeleteSuccess in SessionPageContent's props to call
navigate({ to: "/agents/$name", params: { name: session.agent_name ?? name } })
(or compute a resolvedAgentName variable) to ensure consistent post-delete
routing.

In `@web/src/routes/_app/agents`.$name.tsx:
- Around line 79-85: AgentStatsGrid is currently rendered with page.sessions
even when session data is loading or errored, causing misleading
zero/placeholder metrics; update the render logic so AgentStatsGrid is only
shown when sessions are successfully loaded (i.e., !page.sessionsLoading &&
!page.sessionsError && page.sessions) or modify AgentStatsGrid to accept and
respect explicit loading/error props (e.g., sessionsLoading/sessionsError) and
render loading/error variants instead—mirror the same gating used by
AgentSessionsList (agentName, sessions, isLoading, isError) so the grid never
displays authoritative metrics while data is unresolved.

In `@web/src/systems/agent/components/stories/agent-sessions-list.stories.tsx`:
- Around line 13-33: codexSessionsWithFailure currently spreads codexSessions[0]
without checking its existence which will throw during module evaluation if
codexSessions no longer contains the expected fixture; update the construction
of codexSessionsWithFailure (and any use of codexSessions[0]) to either (a)
build the failure session from an explicit base fixture object (copy required
fields and override id/name/state/etc.) instead of spreading codexSessions[0],
or (b) first guard the lookup by checking that codexSessions &&
codexSessions.length > 0 and fall back to a safe default baseSession when
missing; adjust the identifier referenced (codexSessionsWithFailure,
codexSessions[0]) accordingly so the story never throws at import time.
- Around line 53-59: The Frame component uses React.ReactNode but
React/ReactNode isn't explicitly imported which breaks TypeScript with the
react-jsx runtime; update the top of the file to add an explicit type import
(e.g., import type { ReactNode } from "react") and then change the component
signature to use ReactNode ({ children }: { children: ReactNode }) — apply the
same explicit type import and replacement in other story files that use
React.ReactNode (e.g., tasks-kanban-board.stories.tsx,
tasks-list-panel.stories.tsx).

In `@web/src/systems/agent/components/stories/agent-stats-grid.stories.tsx`:
- Around line 45-63: The test fixture builds failedSessions by spreading
richSessions[0] without ensuring richSessions is non-empty, which can spread
undefined and crash; update the failedSessions construction (the failedSessions
constant that references richSessions[0]) to guard against an empty richSessions
– e.g., check richSessions.length and if empty use a safe fallback object (a
minimal session shape or the first item from sessionFixtures) or skip adding the
failure case so the fixture remains valid when no "codex-agent" sessions exist.

---

Nitpick comments:
In `@web/src/components/app-sidebar.test.tsx`:
- Around line 263-272: The test sets matchedRouteFuzzy["/agents/$name"] which is
not param-aware and thus marks every agent active; update the stub to target the
concrete agent route by using the agent's name (e.g., set
matchedRouteFuzzy["/agents/<agentName>"] = true for the agent created in the
test) so the assertion in the test ("highlights the agent row whose route is
active...") actually verifies name-specific matching; change the assignment
before calling renderSidebar (referencing matchedRouteFuzzy and the agent
created in renderSidebar/makeProps) to use the specific agent route string.

In `@web/src/routes/_app/agents`.$name.tsx:
- Around line 18-25: AgentDetailPage currently calls useAgentDetailPage(name)
before returning early for nested routes, causing unnecessary agent+sessions
queries on child routes; fix by making this parent a pure layout route that only
reads Route.useParams() and useChildMatches() and returns <Outlet /> without
calling useAgentDetailPage, then move the existing "detail shell" UI and the
useAgentDetailPage(name) call into a new index child route component (e.g.,
AgentDetailIndex or AgentDetailShell) and wire it as the index child so only the
index route runs the agent queries while nested session routes render the parent
layout without fetching.

In `@web/src/routes/_app/stories/-agents`.$name.stories.tsx:
- Around line 87-104: AgentLoading story lacks an automated check for the
loading UI; add a play function to the AgentLoading export that mirrors
SessionsLoading's approach: render via StorybookWorkspaceSetup, then use Testing
Library queries (e.g., getByRole/getByText or findBy*) to assert loading
indicators are present while the mocked /api/agents/:name delay is active;
update the AgentLoading object to include a play async function that awaits the
loading element and asserts its visibility to verify the loading state.
- Around line 68-85: The SessionsLoading story currently only simulates an
infinite loading delay but lacks a play function to assert the loading UI; add a
play method on the SessionsLoading export that mounts the rendered
StorybookWorkspaceSetup and uses testing-library queries (e.g., within
canvasElement via screen.getByText or getByRole) to assert the presence of the
expected loading indicator text or spinner (match the app's loading label),
ensuring the test explicitly verifies the loading state for SessionsLoading.

In `@web/src/systems/agent/components/agent-sessions-list.tsx`:
- Around line 162-177: The function formatRelativeTime currently calls
Date.now() each time which can yield slightly different "now" values across
renders; update formatRelativeTime to accept an optional now: number parameter
(or a second overload) and use that instead of calling Date.now() internally,
and then capture a single const now = Date.now() in the rendering scope (where
sessions are mapped) and pass that shared now into each formatRelativeTime call
so all session timestamps are computed against the same reference instant.

In `@web/src/systems/agent/components/agent-stats-grid.tsx`:
- Around line 60-66: Extract the failure/stopped predicate into a shared
function in web/src/systems/agent/lib/session-status.ts (e.g., export function
isSessionFailed(session): boolean) that encapsulates the logic currently
duplicated, then import and use that helper in
web/src/systems/agent/components/agent-stats-grid.tsx (replace the inline if
condition) and also update AgentSessionsList to call the same function so both
views share the single source of truth.

In `@web/src/systems/agent/components/stories/agent-info-panel.stories.tsx`:
- Line 36: Replace the inline prop type in the Frame component signature with a
named interface: define an interface FrameProps { children: React.ReactNode }
and update the component to use FrameProps in its parameter (function Frame({
children }: FrameProps)). Ensure the interface is exported if used elsewhere and
adjust any imports/usage accordingly.

In `@web/src/systems/session/contexts/session-create-context.tsx`:
- Around line 12-18: Refactor the inline props object for the
SessionCreateProvider function into a named interface: create an interface
(e.g., SessionCreateProviderProps) that defines value: SessionCreateContextValue
and children: React.ReactNode, then update the SessionCreateProvider signature
to accept (props: SessionCreateProviderProps) or destructure ({ value, children
}: SessionCreateProviderProps); ensure you reference the existing
SessionCreateContextValue type and keep behavior unchanged.
🪄 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: c530d969-c64c-4143-8b69-1b37ce232304

📥 Commits

Reviewing files that changed from the base of the PR and between 942e33e and 61bcdc5.

📒 Files selected for processing (34)
  • web/src/components/app-sidebar.test.tsx
  • web/src/components/app-sidebar.tsx
  • web/src/components/stories/app-sidebar.stories.tsx
  • web/src/hooks/routes/use-agent-detail-page.ts
  • web/src/hooks/routes/use-app-layout.test.tsx
  • web/src/hooks/routes/use-app-layout.ts
  • web/src/hooks/use-sessions-by-agent.ts
  • web/src/routeTree.gen.ts
  • web/src/routes/-_app.test.tsx
  • web/src/routes/_app.tsx
  • web/src/routes/_app/-agents.$name.sessions.$id.test.tsx
  • web/src/routes/_app/agents.$name.sessions.$id.tsx
  • web/src/routes/_app/agents.$name.tsx
  • web/src/routes/_app/session.$id.tsx
  • web/src/routes/_app/stories/-agents.$name.sessions.$id.stories.tsx
  • web/src/routes/_app/stories/-agents.$name.stories.tsx
  • web/src/systems/agent/components/agent-info-panel.tsx
  • web/src/systems/agent/components/agent-page-header.tsx
  • web/src/systems/agent/components/agent-sessions-list.tsx
  • web/src/systems/agent/components/agent-stats-grid.tsx
  • web/src/systems/agent/components/stories/agent-info-panel.stories.tsx
  • web/src/systems/agent/components/stories/agent-page-header.stories.tsx
  • web/src/systems/agent/components/stories/agent-sessions-list.stories.tsx
  • web/src/systems/agent/components/stories/agent-stats-grid.stories.tsx
  • web/src/systems/agent/hooks/use-agent-sessions.ts
  • web/src/systems/agent/index.ts
  • web/src/systems/agent/lib/session-status.ts
  • web/src/systems/session/contexts/session-create-context.tsx
  • web/src/systems/session/hooks/use-session-create-dialog.test.tsx
  • web/src/systems/session/hooks/use-session-create-dialog.ts
  • web/src/systems/session/hooks/use-session-create.ts
  • web/src/systems/session/index.ts
  • web/src/systems/tasks/components/task-run-detail-header.tsx
  • web/src/systems/tasks/components/task-run-detail-panels.tsx
💤 Files with no reviewable changes (3)
  • web/src/hooks/routes/use-app-layout.ts
  • web/src/hooks/use-sessions-by-agent.ts
  • web/src/components/stories/app-sidebar.stories.tsx

Comment thread web/src/routes/_app/agents.$name.sessions.$id.tsx
Comment thread web/src/routes/_app/agents.$name.tsx Outdated
Comment thread web/src/systems/agent/components/stories/agent-sessions-list.stories.tsx 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: 6

🧹 Nitpick comments (1)
web/src/storybook/web-storybook-stories-and-fixtures.test.tsx (1)

30-32: Avoid new deep cross-system imports for agent stories.

Lines 30-32 reach into @/systems/agent/components/stories/... internals from outside the agent system. Prefer importing through a public barrel (or an explicit @/systems/agent/storybook barrel) to keep boundaries stable.

As per coding guidelines, "Cross-system imports MUST only go through the public barrel (@/systems/<domain>). Never reach into another system's internals".

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

In `@web/src/storybook/web-storybook-stories-and-fixtures.test.tsx` around lines
30 - 32, The three deep imports importing
"@/systems/agent/components/stories/agent-info-panel.stories",
"@/systems/agent/components/stories/agent-sessions-list.stories", and
"@/systems/agent/components/stories/agent-stats-grid.stories" violate the
cross-system import rule; replace these with the public barrel export for the
agent system (e.g., import the stories from "@/systems/agent" or the explicit
"@/systems/agent/storybook" barrel) so external code only imports through the
system’s public surface; update the import statements in
web-storybook-stories-and-fixtures.test.tsx to reference the barrel that
re-exports agent stories (or add such a barrel in the agent system if missing)
and remove direct references to the internal components/stories paths.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@web/src/routes/_app/-agents`.$name.test.tsx:
- Around line 6-7: Replace the direct imports from internal mock modules with
the public system barrels: stop importing primaryAgentFixture from
"@/systems/agent/mocks" and primarySessionFixture from "@/systems/session/mocks"
and instead import those fixtures from their public barrels (e.g.,
"@/systems/agent" and "@/systems/session" or from the barrel export you add).
Update the import statements that reference primaryAgentFixture and
primarySessionFixture so they come from the respective public barrel exports; if
the fixtures aren’t yet re-exported from the public barrel, add re-exports for
primaryAgentFixture and primarySessionFixture in the systems' index barrel files
and then import them from those barrels.

In `@web/src/routes/_app/agents`.$name.sessions.$id.tsx:
- Around line 99-103: The redirect for a "Session not found" error inside the
useEffect should replace the history entry instead of pushing a new one; update
the navigate call in the useEffect (the branch that calls toast.error("Session
not found")) to include replace: true (i.e., navigate({ to: "/agents/$name",
params: { name }, replace: true })) so users can't hit Back into the broken
session URL—locate the useEffect handling error?.message.includes("not found")
and modify that navigate invocation.

In `@web/src/systems/agent/components/agent-sessions-list.test.tsx`:
- Around line 5-6: Tests are importing internal symbols directly
(primarySessionFixture and SessionPayload) from "@/systems/session/mocks" and
"@/systems/session/types"; update the test in agent-sessions-list.test.tsx to
import these symbols from the public barrel "@/systems/session" instead, and if
those exports are not yet re-exported from the barrel, add primarySessionFixture
and SessionPayload to the session module's public exports so the test can
consume them via "@/systems/session".

In `@web/src/systems/agent/components/agent-sessions-list.tsx`:
- Around line 68-124: The component AgentSessionRow uses ad-hoc Tailwind
utilities (w-[42%], text-[13px], text-[10px], text-[12px], tracking-[0.06em])
inside the TableHead and Link spans; replace those arbitrary sizes with the
design tokens from DESIGN.md / packages/ui/src/tokens.css (e.g., use
token-backed classes for widths, font sizes, tracking, and text color variables)
by updating the className values in AgentSessionRow (and the TableHead element)
to the corresponding token classes/vars (font-size token for the session title,
small-caps/mono token for provider and meta text, spacing tokens for gaps, and a
width token for the Session TableHead) so all sizing/typography references come
from the approved design tokens.
- Around line 145-148: formatDuration currently treats 0 as invalid because the
guard checks seconds <= 0, causing newly started sessions to show "—"; change
the validation in formatDuration to only reject negative or non-number values
(e.g., use seconds < 0 or explicitly test for negative numbers) or add a
special-case that returns "0s" when seconds === 0, so zero seconds render as
"0s" instead of "—" (update the function named formatDuration accordingly).

In `@web/src/systems/agent/components/agent-stats-grid.test.tsx`:
- Around line 4-6: The test is importing session internals directly
(primarySessionFixture, SessionPayload) instead of the public session barrel;
change the imports in agent-stats-grid.test.tsx to import these symbols from
"@/systems/session" (e.g. import { primarySessionFixture, type SessionPayload }
from "@/systems/session") and if those symbols are not currently re-exported by
the session barrel, add them to the session system's public index (re-export
primarySessionFixture and SessionPayload from the session module) so
cross-system imports use only the public barrel; keep the AgentStatsGrid import
as-is.

---

Nitpick comments:
In `@web/src/storybook/web-storybook-stories-and-fixtures.test.tsx`:
- Around line 30-32: The three deep imports importing
"@/systems/agent/components/stories/agent-info-panel.stories",
"@/systems/agent/components/stories/agent-sessions-list.stories", and
"@/systems/agent/components/stories/agent-stats-grid.stories" violate the
cross-system import rule; replace these with the public barrel export for the
agent system (e.g., import the stories from "@/systems/agent" or the explicit
"@/systems/agent/storybook" barrel) so external code only imports through the
system’s public surface; update the import statements in
web-storybook-stories-and-fixtures.test.tsx to reference the barrel that
re-exports agent stories (or add such a barrel in the agent system if missing)
and remove direct references to the internal components/stories paths.
🪄 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: 5cfdd11a-0344-4ef3-af35-c19bf6b84bbb

📥 Commits

Reviewing files that changed from the base of the PR and between 61bcdc5 and 95bb3cc.

⛔ Files ignored due to path filters (34)
  • .compozy/tasks/qa-rounds/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_024.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_025.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_026.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_027.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_028.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_029.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_030.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_031.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_032.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_033.md is excluded by !**/*.md
📒 Files selected for processing (16)
  • web/src/components/app-sidebar.test.tsx
  • web/src/routes/_app/-agents.$name.sessions.$id.test.tsx
  • web/src/routes/_app/-agents.$name.test.tsx
  • web/src/routes/_app/agents.$name.sessions.$id.tsx
  • web/src/routes/_app/agents.$name.tsx
  • web/src/routes/_app/stories/-agents.$name.stories.tsx
  • web/src/storybook/web-storybook-stories-and-fixtures.test.tsx
  • web/src/systems/agent/components/agent-sessions-list.test.tsx
  • web/src/systems/agent/components/agent-sessions-list.tsx
  • web/src/systems/agent/components/agent-stats-grid.test.tsx
  • web/src/systems/agent/components/agent-stats-grid.tsx
  • web/src/systems/agent/components/stories/agent-info-panel.stories.tsx
  • web/src/systems/agent/components/stories/agent-sessions-list.stories.tsx
  • web/src/systems/agent/components/stories/agent-stats-grid.stories.tsx
  • web/src/systems/agent/lib/session-status.ts
  • web/src/systems/session/contexts/session-create-context.tsx
✅ Files skipped from review due to trivial changes (2)
  • web/src/systems/session/contexts/session-create-context.tsx
  • web/src/systems/agent/components/stories/agent-sessions-list.stories.tsx
🚧 Files skipped from review as they are similar to previous changes (6)
  • web/src/routes/_app/-agents.$name.sessions.$id.test.tsx
  • web/src/systems/agent/components/agent-stats-grid.tsx
  • web/src/routes/_app/agents.$name.tsx
  • web/src/routes/_app/stories/-agents.$name.stories.tsx
  • web/src/systems/agent/components/stories/agent-stats-grid.stories.tsx
  • web/src/components/app-sidebar.test.tsx

Comment thread web/src/routes/_app/-agents.$name.test.tsx Outdated
Comment thread web/src/routes/_app/agents.$name.sessions.$id.tsx
Comment thread web/src/systems/agent/components/agent-sessions-list.test.tsx Outdated
Comment thread web/src/systems/agent/components/agent-sessions-list.tsx Outdated
Comment thread web/src/systems/agent/components/agent-sessions-list.tsx
Comment thread web/src/systems/agent/components/agent-stats-grid.test.tsx 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.

🧹 Nitpick comments (1)
web/src/systems/agent/components/agent-sessions-list.tsx (1)

64-65: Avoid nested horizontal-scroll containers.

Table already provides an overflow-x-auto container, so the outer wrapper adds a second scroll layer unnecessarily.

♻️ Suggested simplification
-  return (
-    <div className="overflow-x-auto" data-testid="agent-sessions-table-wrapper">
-      <Table data-testid="agent-sessions-table">
+  return (
+    <div data-testid="agent-sessions-table-wrapper">
+      <Table data-testid="agent-sessions-table">
         <TableHeader>
           <TableRow>
             <TableHead className="w-2/5">Session</TableHead>
             <TableHead>Status</TableHead>
             <TableHead className="text-right">Duration</TableHead>
             <TableHead className="text-right">Iterations</TableHead>
             <TableHead className="text-right">Last activity</TableHead>
           </TableRow>
         </TableHeader>
         <TableBody>
           {sessions.map(session => (
             <AgentSessionRow key={session.id} agentName={agentName} session={session} now={now} />
           ))}
         </TableBody>
       </Table>
     </div>
   );

Also applies to: 65-81

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

In `@web/src/systems/agent/components/agent-sessions-list.tsx` around lines 64 -
65, Remove the redundant outer horizontal-scroll container: delete the
surrounding <div className="overflow-x-auto"
data-testid="agent-sessions-table-wrapper"> and its closing tag so the Table
component is the sole scroll container; if you need the data-testid for tests,
move data-testid="agent-sessions-table-wrapper" (or keep tests pointing to
agent-sessions-table) onto the Table element (the <Table> in
agent-sessions-list.tsx) to avoid nested overflow-x-auto layers.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@web/src/systems/agent/components/agent-sessions-list.tsx`:
- Around line 64-65: Remove the redundant outer horizontal-scroll container:
delete the surrounding <div className="overflow-x-auto"
data-testid="agent-sessions-table-wrapper"> and its closing tag so the Table
component is the sole scroll container; if you need the data-testid for tests,
move data-testid="agent-sessions-table-wrapper" (or keep tests pointing to
agent-sessions-table) onto the Table element (the <Table> in
agent-sessions-list.tsx) to avoid nested overflow-x-auto layers.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 86ae2ff0-7ef7-4549-bee8-1e8463b4cd9f

📥 Commits

Reviewing files that changed from the base of the PR and between 95bb3cc and 01c242e.

⛔ Files ignored due to path filters (8)
  • .compozy/tasks/qa-rounds/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_007.md is excluded by !**/*.md
📒 Files selected for processing (11)
  • packages/ui/src/tokens.css
  • web/src/routes/_app/-agents.$name.sessions.$id.test.tsx
  • web/src/routes/_app/-agents.$name.test.tsx
  • web/src/routes/_app/agents.$name.sessions.$id.tsx
  • web/src/storybook/web-storybook-stories-and-fixtures.test.tsx
  • web/src/systems/agent/components/agent-sessions-list.test.tsx
  • web/src/systems/agent/components/agent-sessions-list.tsx
  • web/src/systems/agent/components/agent-stats-grid.test.tsx
  • web/src/systems/agent/storybook.ts
  • web/src/systems/agent/testing.ts
  • web/src/systems/session/testing.ts
✅ Files skipped from review due to trivial changes (2)
  • web/src/systems/session/testing.ts
  • web/src/systems/agent/testing.ts
🚧 Files skipped from review as they are similar to previous changes (5)
  • web/src/systems/agent/components/agent-sessions-list.test.tsx
  • web/src/storybook/web-storybook-stories-and-fixtures.test.tsx
  • web/src/systems/agent/components/agent-stats-grid.test.tsx
  • web/src/routes/_app/-agents.$name.sessions.$id.test.tsx
  • web/src/routes/_app/agents.$name.sessions.$id.tsx

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