feat: agent categories#113
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (8)
📒 Files selected for processing (12)
✅ Files skipped from review due to trivial changes (10)
WalkthroughAdds agent category support end-to-end: parses/validates category_path in agent frontmatter, propagates CategoryPath through server payloads and bundles, surfaces categories in CLI and UI (tree, command pickers), makes agent queries workspace-aware, refactors sidebar/nav, and adds tests/fixtures across layers. Agent Categorization Feature
sequenceDiagram
actor User
participant File as Frontmatter File
participant Parser as Config Parser
participant Backend as Server/API
participant CLI as CLI
participant Web as Web App
participant UI as Tree / Command UI
User->>File: add agent with `category_path`
File->>Parser: parse frontmatter
Parser->>Parser: normalize & validate CategoryPath
Parser->>Backend: persist AgentDef with CategoryPath
Backend->>CLI: expose AgentPayloads including CategoryPath
CLI->>User: render Category column / labels
Backend->>Web: serve AgentPayloads with CategoryPath
Web->>UI: build hierarchical nodes and command groups
User->>Web: open picker / select agent
Web->>Backend: fetch agents (workspace-scoped)
Web->>Web: navigate / create session
🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
|
There was a problem hiding this comment.
Actionable comments posted: 9
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
internal/cli/agent_commands_test.go (1)
55-64:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAssert the raw JSON key, not just the decoded field.
Decoding straight back into
AgentRecordwon't fail if the CLI accidentally emitsCategoryPathinstead ofcategory_path, so this test can miss a wire-format regression. Please add one raw JSON assertion for the serialized key before or alongside the typed unmarshal.Suggested test tightening
var listed []AgentRecord + var rawListed []map[string]any + if err := json.Unmarshal([]byte(stdout), &rawListed); err != nil { + t.Fatalf("json.Unmarshal(agent list raw) error = %v", err) + } + if _, ok := rawListed[0]["category_path"]; !ok { + t.Fatalf("agent list raw json = %#v, want category_path key", rawListed[0]) + } if err := json.Unmarshal([]byte(stdout), &listed); err != nil { t.Fatalf("json.Unmarshal(agent list) error = %v", err) }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@internal/cli/agent_commands_test.go` around lines 55 - 64, The test decodes stdout into AgentRecord which won't catch a wire-format regression where the CLI emits "CategoryPath" instead of "category_path"; update the test around the json.Unmarshal of stdout and add a raw JSON assertion (e.g., unmarshal stdout into a map[string]interface{} or check for the exact key string) to assert the serialized key "category_path" is present before or alongside decoding into AgentRecord (references: stdout, AgentRecord, CategoryPath).
🧹 Nitpick comments (3)
packages/ui/src/index.ts (1)
258-258: ⚡ Quick winRe-export the Tree prop types from the package barrel.
The components are public via
@agh/ui, but their prop types still require a deep import into./components/reui/tree. Export theTree*Propstypes here too so consumers can stay on the public entrypoint.Suggested fix
export { Tree, TreeItem, TreeItemLabel, TreeDragLine } from "./components/reui/tree"; +export type { + TreeProps, + TreeItemProps, + TreeItemLabelProps, + TreeDragLineProps, +} from "./components/reui/tree";🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/index.ts` at line 258, Add re-exports for the Tree prop types so consumers can import types from the public barrel instead of deep-importing; update the same export line that currently exports Tree, TreeItem, TreeItemLabel, TreeDragLine to also export the type names (TreeProps, TreeItemProps, TreeItemLabelProps, TreeDragLineProps) from the "./components/reui/tree" module so typings are publicly available via the package entrypoint.web/src/systems/agent/lib/agent-category.ts (1)
3-18: ⚡ Quick winUse
interfacefor exported object-shape contracts.
AgentCategoryFolderNodeandAgentCategoryLeafNodeare object-shape APIs and should be declared asinterfaceto match repo TS conventions.♻️ Suggested change
-export type AgentCategoryFolderNode = { +export interface AgentCategoryFolderNode { kind: "folder"; id: string; label: string; segments: string[]; children: AgentCategoryNode[]; -}; +} -export type AgentCategoryLeafNode = { +export interface AgentCategoryLeafNode { kind: "leaf"; id: string; label: string; agent: AgentPayload; -}; +}As per coding guidelines:
**/*.{ts,tsx}: Use TypeScriptinterface(nottype) for defining object shapes.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/src/systems/agent/lib/agent-category.ts` around lines 3 - 18, Change the exported object-shape declarations AgentCategoryFolderNode and AgentCategoryLeafNode from type to interface (preserving their properties: kind, id, label, segments/children for folder, and agent for leaf) so they follow repo TS conventions; keep AgentCategoryNode as the discriminated union of those two interfaces (AgentCategoryFolderNode | AgentCategoryLeafNode) and ensure export modifiers remain.web/src/systems/agent/components/stories/agent-command-select.stories.tsx (1)
13-30: ⚡ Quick winExtract the categorized story fixture into a shared helper.
This category map is now duplicated here and in
web/src/components/stories/app-sidebar.stories.tsx. Keeping two copies will make the categorized demos drift over time, especially since this PR is using both stories to show the same feature surface.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx` around lines 13 - 30, Extract the category map and the categorized fixture creation into a single shared helper instead of duplicating it: move the categoryByName Record and the categorizedAgents logic (which uses agentFixtures) into a new exported helper function (e.g., getCategorizedAgents or categorizeAgents) in a shared stories/helpers module, export both the category map or the function, then update this file to import and use that helper (replacing categoryByName and categorizedAgents) and do the same in the other story that currently duplicates the map so both stories consume the single source of truth.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@internal/api/core/agent_category_payload_test.go`:
- Around line 20-28: The test currently compares payload.CategoryPath by joining
it into a string which would falsely pass for a single-element slice like
[]string{"Marketing,Sales"}; update the assertions in
internal/api/core/agent_category_payload_test.go to compare slices
element-by-element (or use reflect.DeepEqual) against the expected
[]string{"Marketing","Sales"} for payload.CategoryPath produced by
AgentPayloadFromDef, and apply the same change to the other assertion block
referenced (lines 40-43) so both tests verify true slice equality rather than a
joined string.
In `@internal/config/agent_category_test.go`:
- Around line 196-205: The helper equalStringSlicesForTest currently treats nil
and empty slices as equal; update it to preserve the nil vs empty distinction by
first checking if got==nil or want==nil and returning false if only one is nil,
returning true only when both are nil, then proceed to compare lengths and
elements (use the existing loop) so nil and []string{} are no longer considered
equal.
In `@internal/testutil/e2e/config_seed_category_test.go`:
- Around line 28-29: The test currently compares
strings.Join(agent.CategoryPath, ",") to "Engineering,Tools", which won't catch
a persisted single-element slice containing the comma; instead assert the slice
equality directly by comparing agent.CategoryPath to the expected
[]string{"Engineering","Tools"} (e.g. using reflect.DeepEqual or cmp.Diff) and
call t.Fatalf when they differ; reference agent.CategoryPath and replace the
join-based comparison with a direct slice comparison.
In `@packages/ui/src/components/reui/tree.tsx`:
- Around line 109-129: The defaultProps for the TreeItem row uses a real
<button> (see defaultProps and the useRender/mergeProps call) but doesn't set an
explicit type, so it defaults to type="submit" and can submit surrounding forms;
add type: "button" (as const) to the defaultProps object to ensure the rendered
button is non-submitting.
- Around line 64-66: Replace the current object-spread composition that does "{
...props, ...containerProps }" and "{ ...props, children, ...itemProps }" so
caller props aren't overwritten: call mergeProps<"div">(containerProps, props)
to compose container props and mergeProps<"button">(itemProps, { ...props,
children }) for item props, then extract style from both prop sets and
shallow-merge styles explicitly (e.g., combinedStyle = { ...callerStyle,
...containerStyle } / { ...callerStyle, ...itemStyle }) before passing to the
element; update uses of tree.getContainerProps(), containerProps, itemProps,
props and children accordingly so caller-provided onClick/aria/style values win.
In `@web/src/components/stories/app-sidebar.stories.tsx`:
- Around line 5-8: Replace the direct internal type import of AgentPayload from
"@/systems/agent/types" with the public barrel export from "@/systems/agent";
update the import line that currently brings in AgentPayload so it imports from
"@/systems/agent" alongside or instead of agentFixtures (and keep using
storyAgentNames, storyWorkspacePaths, sessionFixtures as before) to respect
cross-system boundaries and use the agent system's public API surface.
In `@web/src/systems/agent/components/agent-category-tree.tsx`:
- Around line 47-57: The current render collapses fetch errors into the
empty/install state: when agentsError is truthy we still show the "Run `agh
install`" message and drop any existing agents; update the render logic in
agent-category-tree (check agentsError and agents) to separate error vs empty
states—if agentsError render a distinct error UI (or at minimum return the error
state when agentsError is true), otherwise if !agentsError && (!agents ||
agents.length === 0) render the empty/install message; use the existing symbols
agentsError and agents (and the component AgentCategoryTree) to locate where to
branch the UI and ensure you do not discard stale agents when agentsError is set
during background refresh.
In `@web/src/systems/agent/components/agent-command-list.tsx`:
- Around line 101-109: The spans rendering agent.provider and the conditional
categoryLabel in AgentCommandList (the span elements with data-testid
agent-command-provider-{agent.name} and agent-command-category-{agent.name}) use
ad-hoc typography classes text-[10px] and tracking-[0.12em]; replace those with
the standardized design tokens/classes from your design system (e.g., the
tokenized font-size and letter-spacing utility names defined in DESIGN.md / your
tailwind config) so both className values use the approved typography utilities
instead of arbitrary values, keeping the rest of the existing classes
(font-mono, uppercase, text-muted-foreground, truncate, ml-auto) intact.
In `@web/src/systems/session/components/session-create-dialog.tsx`:
- Around line 111-119: The AgentCommandSelect is currently enabled when
agents.length > 0 even if no workspace is active; update its disabled and
placeholder logic to also consider the workspaceSelected flag (i.e., disabled
should be true when !workspaceSelected || !hasAgents || isSubmitting) and change
the placeholder to something like "Select a workspace first" when
!workspaceSelected; apply the same guard and placeholder change to the provider
picker component so both pickers are disabled and show the workspace-required
message when workspaceSelected is false (refer to AgentCommandSelect,
trimmedSelectedAgentName, onAgentChange, hasAgents, isSubmitting and the
provider picker component name in the file).
---
Outside diff comments:
In `@internal/cli/agent_commands_test.go`:
- Around line 55-64: The test decodes stdout into AgentRecord which won't catch
a wire-format regression where the CLI emits "CategoryPath" instead of
"category_path"; update the test around the json.Unmarshal of stdout and add a
raw JSON assertion (e.g., unmarshal stdout into a map[string]interface{} or
check for the exact key string) to assert the serialized key "category_path" is
present before or alongside decoding into AgentRecord (references: stdout,
AgentRecord, CategoryPath).
---
Nitpick comments:
In `@packages/ui/src/index.ts`:
- Line 258: Add re-exports for the Tree prop types so consumers can import types
from the public barrel instead of deep-importing; update the same export line
that currently exports Tree, TreeItem, TreeItemLabel, TreeDragLine to also
export the type names (TreeProps, TreeItemProps, TreeItemLabelProps,
TreeDragLineProps) from the "./components/reui/tree" module so typings are
publicly available via the package entrypoint.
In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx`:
- Around line 13-30: Extract the category map and the categorized fixture
creation into a single shared helper instead of duplicating it: move the
categoryByName Record and the categorizedAgents logic (which uses agentFixtures)
into a new exported helper function (e.g., getCategorizedAgents or
categorizeAgents) in a shared stories/helpers module, export both the category
map or the function, then update this file to import and use that helper
(replacing categoryByName and categorizedAgents) and do the same in the other
story that currently duplicates the map so both stories consume the single
source of truth.
In `@web/src/systems/agent/lib/agent-category.ts`:
- Around line 3-18: Change the exported object-shape declarations
AgentCategoryFolderNode and AgentCategoryLeafNode from type to interface
(preserving their properties: kind, id, label, segments/children for folder, and
agent for leaf) so they follow repo TS conventions; keep AgentCategoryNode as
the discriminated union of those two interfaces (AgentCategoryFolderNode |
AgentCategoryLeafNode) and ensure export modifiers remain.
🪄 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: 89de9692-03ed-4040-abc9-04fb61464e8b
⛔ Files ignored due to path filters (37)
.compozy/tasks/agent-categories/_techspec.mdis excluded by!**/*.md.compozy/tasks/agent-categories/opus-qa-report-prompt.mdis excluded by!**/*.md.compozy/tasks/agent-categories/opus-techspec-hardening-prompt.mdis excluded by!**/*.md.compozy/tasks/agent-categories/opus-ui-implementation-prompt.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/behavioral-scenario-charter.yamlis excluded by!**/*.yaml.compozy/tasks/agent-categories/qa/provider-attempt.jsonis excluded by!**/*.json.compozy/tasks/agent-categories/qa/qa-audit-report.jsonis excluded by!**/*.json.compozy/tasks/agent-categories/qa/qa-audit-report.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/scenario-contract.jsonis excluded by!**/*.json.compozy/tasks/agent-categories/qa/test-cases/SMOKE-001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-FUNC-001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-FUNC-002.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-FUNC-003.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-FUNC-004.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-INT-001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-INT-002.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-INT-003.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-REG-001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-REG-002.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-REG-003.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-SCEN-001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-UI-001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-cases/TC-UI-002.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/test-plans/agent-categories-test-plan.mdis excluded by!**/*.md.compozy/tasks/agent-categories/qa/verification-report.mdis excluded by!**/*.mdbun.lockis excluded by!**/*.lock,!**/*.lockinternal/skills/bundled/skills/agh-agent-setup/SKILL.mdis excluded by!**/*.mdinternal/testutil/acpmock/testdata/driver_fault_fixture.jsonis excluded by!**/*.jsonopenapi/agh.jsonis excluded by!**/*.jsonpackages/site/content/runtime/core/agents/definitions.mdxis excluded by!**/*.mdxpackages/site/content/runtime/core/configuration/agent-md.mdxis excluded by!**/*.mdxpackages/ui/README.mdis excluded by!**/*.mdpackages/ui/components.jsonis excluded by!**/*.jsonpackages/ui/package.jsonis excluded by!**/*.jsonweb/e2e/fixtures/runtime-seed.tsis excluded by!**/fixtures/**web/package.jsonis excluded by!**/*.jsonweb/src/generated/agh-openapi.d.tsis excluded by!**/generated/**
📒 Files selected for processing (64)
.compozy/tasks/agent-categories/qa/journey-log.jsonlinternal/api/contract/bundles.gointernal/api/contract/contract.gointernal/api/core/agent_category_payload_test.gointernal/api/core/bundle_category_payload_test.gointernal/api/core/bundles.gointernal/api/core/conversions.gointernal/cli/agent.gointernal/cli/agent_commands_test.gointernal/cli/format_test.gointernal/cli/workspace.gointernal/cli/workspace_test.gointernal/config/agent.gointernal/config/agent_category_test.gointernal/config/agent_clone.gointernal/config/agent_clone_test.gointernal/config/agent_edit.gointernal/config/agent_edit_test.gointernal/config/agent_resource.gointernal/config/agent_resource_test.gointernal/daemon/daemon_network_collaboration_integration_test.gointernal/extension/manager.gointernal/testutil/e2e/config_seed.gointernal/testutil/e2e/config_seed_category_test.gointernal/workspace/clone.gointernal/workspace/clone_test.gopackages/ui/src/components/reui/tree.test.tsxpackages/ui/src/components/reui/tree.tsxpackages/ui/src/components/stories/tree.stories.tsxpackages/ui/src/index.tsweb/e2e/agent-categories.spec.tsweb/e2e/network.spec.tsweb/e2e/session-onboarding.spec.tsweb/e2e/session-provider-override.spec.tsweb/e2e/tasks-coordinator-handoff.spec.tsweb/src/components/app-sidebar.test.tsxweb/src/components/app-sidebar.tsxweb/src/components/stories/app-sidebar.stories.tsxweb/src/hooks/routes/use-agent-detail-page.test.tsxweb/src/hooks/routes/use-agent-detail-page.tsweb/src/routes/_app/settings/-skills.test.tsxweb/src/routes/_app/settings/skills.tsxweb/src/systems/agent/adapters/agent-api.test.tsweb/src/systems/agent/adapters/agent-api.tsweb/src/systems/agent/components/agent-category-tree.test.tsxweb/src/systems/agent/components/agent-category-tree.tsxweb/src/systems/agent/components/agent-command-list.tsxweb/src/systems/agent/components/agent-command-multi-select.test.tsxweb/src/systems/agent/components/agent-command-multi-select.tsxweb/src/systems/agent/components/agent-command-select.test.tsxweb/src/systems/agent/components/agent-command-select.tsxweb/src/systems/agent/components/stories/agent-command-select.stories.tsxweb/src/systems/agent/hooks/use-agent-category-tree-model.tsweb/src/systems/agent/hooks/use-agents.tsweb/src/systems/agent/index.tsweb/src/systems/agent/lib/agent-category.test.tsweb/src/systems/agent/lib/agent-category.tsweb/src/systems/agent/lib/query-keys.tsweb/src/systems/agent/lib/query-options.tsweb/src/systems/network/components/network-create-channel-dialog.test.tsxweb/src/systems/network/components/network-create-channel-dialog.tsxweb/src/systems/network/components/stories/network-create-channel-dialog.stories.tsxweb/src/systems/session/components/session-create-dialog.test.tsxweb/src/systems/session/components/session-create-dialog.tsx
There was a problem hiding this comment.
♻️ Duplicate comments (1)
web/src/components/stories/app-sidebar.stories.tsx (1)
7-7:⚠️ Potential issue | 🟠 Major | ⚡ Quick winUse the agent public barrel instead of importing from an internal
.storiesmodule.Line 7 deep-imports another system internals (
@/systems/agent/components/stories/...). Please move this helper to a non-story public export and import via@/systems/agentto keep system boundaries stable.Suggested direction
-import { withStoryAgentCategories } from "@/systems/agent/components/stories/agent-command-select.stories"; +import { withStoryAgentCategories } from "@/systems/agent";As per coding guidelines,
Cross-system imports: Only through the public barrel (\@/systems/`). Never reach into another system's internals`.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/src/components/stories/app-sidebar.stories.tsx` at line 7, The story is deep-importing the helper withStoryAgentCategories from an internal stories module; export that helper from the agent system's public barrel and update the import to use the public entry (import { withStoryAgentCategories } from "@/systems/agent") so cross-system boundaries are respected. Locate the helper function named withStoryAgentCategories in the agent system (currently under components/stories/agent-command-select.stories), move or re-export it from the agent public index, add any necessary exports, and then replace the deep import in app-sidebar.stories.tsx with the public-barrel import.
🧹 Nitpick comments (2)
web/src/systems/agent/components/stories/agent-command-select.stories.tsx (2)
41-41: ⚡ Quick winReplace the ad-hoc width value with a design token.
At Line 41,
w-[420px]is an invented spacing value; please switch to a token-backed width utility/value from the design system.As per coding guidelines, "Pull every color, font, radius, spacing step, and motion value from
DESIGN.md— never invent tokens" and "web/**/*.{css,tsx}: Tokens live inpackages/ui/src/tokens.css; never override with ad-hoc hex values in components".🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx` at line 41, Replace the ad-hoc Tailwind width class "w-[420px]" in the AgentCommandSelect story wrapper with a design-token-backed width from the design system (use the width token defined in packages/ui/src/tokens.css), i.e., remove the hardcoded "w-[420px]" and swap it for the appropriate token-backed utility/class name so the component uses the canonical width token instead of an invented value.
93-95: ⚡ Quick winGrouped story description and assertions are slightly out of sync.
Lines 93-95 say uncategorized agents render in a root-level “Agents” group, but the play test only asserts categorized groups. Add one assertion for the root uncategorized group to lock in that behavior.
Also applies to: 111-118
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx` around lines 93 - 95, The story text says uncategorized agents should render in a root-level "Agents" group but the play tests for the Grouped story(s) only assert categorized groups; update the play functions for the Grouped story (and the other grouped story referenced nearby) in agent-command-select.stories.tsx to open the popover and add an assertion that a root-level "Agents" group is present (e.g. expect(screen.getByText('Agents')).toBeInTheDocument()) so the test locks in the uncategorized behavior for the AgentCommandSelect stories.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Duplicate comments:
In `@web/src/components/stories/app-sidebar.stories.tsx`:
- Line 7: The story is deep-importing the helper withStoryAgentCategories from
an internal stories module; export that helper from the agent system's public
barrel and update the import to use the public entry (import {
withStoryAgentCategories } from "@/systems/agent") so cross-system boundaries
are respected. Locate the helper function named withStoryAgentCategories in the
agent system (currently under components/stories/agent-command-select.stories),
move or re-export it from the agent public index, add any necessary exports, and
then replace the deep import in app-sidebar.stories.tsx with the public-barrel
import.
---
Nitpick comments:
In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx`:
- Line 41: Replace the ad-hoc Tailwind width class "w-[420px]" in the
AgentCommandSelect story wrapper with a design-token-backed width from the
design system (use the width token defined in packages/ui/src/tokens.css), i.e.,
remove the hardcoded "w-[420px]" and swap it for the appropriate token-backed
utility/class name so the component uses the canonical width token instead of an
invented value.
- Around line 93-95: The story text says uncategorized agents should render in a
root-level "Agents" group but the play tests for the Grouped story(s) only
assert categorized groups; update the play functions for the Grouped story (and
the other grouped story referenced nearby) in agent-command-select.stories.tsx
to open the popover and add an assertion that a root-level "Agents" group is
present (e.g. expect(screen.getByText('Agents')).toBeInTheDocument()) so the
test locks in the uncategorized behavior for the AgentCommandSelect stories.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 7480f490-5c92-4a98-81ae-f6909be8a6cb
⛔ Files ignored due to path filters (13)
.compozy/tasks/agent-categories/reviews-001/issue_001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_002.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_003.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_004.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_005.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_006.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_007.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_008.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_009.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_010.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_011.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-001/issue_012.mdis excluded by!**/*.mdpackages/ui/README.mdis excluded by!**/*.md
📒 Files selected for processing (15)
internal/api/core/agent_category_payload_test.gointernal/config/agent_category_test.gointernal/testutil/e2e/config_seed_category_test.gopackages/ui/src/components/reui/tree.test.tsxpackages/ui/src/components/reui/tree.tsxpackages/ui/src/index.tsweb/src/components/stories/app-sidebar.stories.tsxweb/src/systems/agent/components/agent-category-tree.test.tsxweb/src/systems/agent/components/agent-category-tree.tsxweb/src/systems/agent/components/agent-command-list.tsxweb/src/systems/agent/components/agent-command-select.test.tsxweb/src/systems/agent/components/stories/agent-command-select.stories.tsxweb/src/systems/agent/lib/agent-category.tsweb/src/systems/session/components/session-create-dialog.test.tsxweb/src/systems/session/components/session-create-dialog.tsx
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
web/src/systems/agent/components/stories/agent-command-select.stories.tsx (1)
29-30: ⚡ Quick winUse camelCase for the local variable and map to backend
category_pathexplicitly.On line 29,
category_pathis a local variable that should follow camelCase naming. When returning the object, explicitly map the renamed variable to the backend fieldcategory_path.Proposed change
export function withStoryAgentCategories(agents: AgentPayload[]): AgentPayload[] { return agents.map(agent => { - const category_path = categoryByName[agent.name]; - return category_path ? { ...agent, category_path } : agent; + const categoryPath = categoryByName[agent.name]; + return categoryPath ? { ...agent, category_path: categoryPath } : agent; }); }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx` around lines 29 - 30, Rename the local variable category_path to camelCase (e.g., categoryPath) where it's declared (const category_path = categoryByName[agent.name]) and update the return to explicitly map the camelCase local variable to the backend field by returning { ...agent, category_path: categoryPath } instead of spreading the camelCase name; update occurrences in the same expression in agent-command-select.stories.tsx (the const declaration and the conditional return).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx`:
- Line 46: The function Frame currently types its props inline; extract that
inline type into a named interface FrameProps and use it in the function
signature. Create interface FrameProps { children: React.ReactNode } (or
equivalent) and update function Frame({ children }: FrameProps) to reference the
new interface; ensure any exports or usages still compile with the renamed type.
---
Nitpick comments:
In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx`:
- Around line 29-30: Rename the local variable category_path to camelCase (e.g.,
categoryPath) where it's declared (const category_path =
categoryByName[agent.name]) and update the return to explicitly map the
camelCase local variable to the backend field by returning { ...agent,
category_path: categoryPath } instead of spreading the camelCase name; update
occurrences in the same expression in agent-command-select.stories.tsx (the
const declaration and the conditional return).
🪄 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: 7b896758-4f2f-49b3-ac6f-271d025b8d62
⛔ Files ignored due to path filters (2)
.compozy/tasks/agent-categories/reviews-002/issue_001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-002/issue_002.mdis excluded by!**/*.md
📒 Files selected for processing (1)
web/src/systems/agent/components/stories/agent-command-select.stories.tsx
There was a problem hiding this comment.
🧹 Nitpick comments (1)
web/src/systems/agent/components/stories/agent-command-select.stories.tsx (1)
37-44: ⚡ Quick winMake the “uncategorized” seed explicit to avoid brittle grouping behavior.
groupedAgentscurrently inherits all fields fromagentFixtures[0]. If that fixture later getscategory_path, this story can stop exercising the root “Agents” group scenario.Suggested patch
const groupedAgents: AgentPayload[] = [ { ...agentFixtures[0], + category_path: undefined, name: "launch-ops", prompt: "Coordinate uncategorized launch escalations and operator follow-up.", }, ...categorizedAgents, ];🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx` around lines 37 - 44, Replace the spreading of agentFixtures[0] into groupedAgents (which can accidentally pull in a category_path) with an explicit uncategorized seed object that lists the necessary fields (e.g., id, name, prompt, description, etc.) and explicitly sets category_path to an empty array or undefined; update the groupedAgents array construction (symbol: groupedAgents) so it no longer inherits from agentFixtures[0] but uses a small explicit object to guarantee the root "Agents" group scenario is exercised.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@web/src/systems/agent/components/stories/agent-command-select.stories.tsx`:
- Around line 37-44: Replace the spreading of agentFixtures[0] into
groupedAgents (which can accidentally pull in a category_path) with an explicit
uncategorized seed object that lists the necessary fields (e.g., id, name,
prompt, description, etc.) and explicitly sets category_path to an empty array
or undefined; update the groupedAgents array construction (symbol:
groupedAgents) so it no longer inherits from agentFixtures[0] but uses a small
explicit object to guarantee the root "Agents" group scenario is exercised.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: ee0a29a0-1bf0-4488-a5a7-2cfe3667c8b5
⛔ Files ignored due to path filters (2)
.compozy/tasks/agent-categories/reviews-003/issue_001.mdis excluded by!**/*.md.compozy/tasks/agent-categories/reviews-003/issue_002.mdis excluded by!**/*.md
📒 Files selected for processing (1)
web/src/systems/agent/components/stories/agent-command-select.stories.tsx
## 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>
## 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>
## 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>
## 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 --> [](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>
## 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 --> [](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>
Summary
Verification
Notes
Summary by CodeRabbit
New Features
Refactor
Tests