feat: onboarding and improvements#198
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
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 selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
WalkthroughAdds onboarding lifecycle (contracts, handlers, storage, CLI, server wiring), a filesystem browse API, a prompt-stream refactor (execution vs delivery contexts, start frame, accepted turn id), public/internal agent filtering and onboarding provisioning, native tools for channels/agent creation, Codex onboarding home handling, OpenAPI/routes, tests, and site/UI adjustments. ChangesOnboarding lifecycle API, storage, CLI, server wiring, and OpenAPI
Filesystem directory browse API
Prompt streaming refactor: delivery context, start frame, accepted turn id
Public vs internal-managed agents and onboarding agent ensure
Native tools: network_channel_create and workspace/agent_create
Session pipeline: delivery context and lifecycle separation
Managed onboarding Codex home for providers
Site landing metrics/provider data and UI components
Assistant UI: virtualized thread messages hook
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
Actionable comments posted: 13
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
internal/tools/builtin/builtin_test.go (1)
39-57:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd explicit risk-flag assertions for the newly added tools.
ToolIDNetworkChannelCreateandToolIDAgentCreatewere added to MVP scope, but they are not explicitly covered in the risk-class assertion block. Please add directrequireDescriptorRisk(...)checks for both to prevent silent risk-policy drift.As per coding guidelines: "MUST test meaningful business logic" and "Focus on critical paths: workflow execution, state management, error handling".
🤖 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/tools/builtin/builtin_test.go` around lines 39 - 57, Add explicit risk assertions for the two newly added tools by calling requireDescriptorRisk for ToolIDNetworkChannelCreate and ToolIDAgentCreate in the risk-class assertion block of internal/tools/builtin/builtin_test.go; locate the existing requireDescriptorRisk(...) calls and insert matching lines for the symbols ToolIDNetworkChannelCreate and ToolIDAgentCreate so the test verifies their risk classifications explicitly and prevents silent risk-policy drift.internal/api/udsapi/handlers_test.go (1)
1677-1805:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAssert HTTP status and SSE output in both cancellation subtests.
These checks mostly validate context cancellation, and the second path doesn't assert the HTTP response at all. A regression that returns the wrong status or skips the accepted-turn start frame could still pass here.
Suggested assertions
+ if recorder.Code != http.StatusOK { + t.Fatalf("status = %d, want %d; body=%s", recorder.Code, http.StatusOK, recorder.Body.String()) + } + if body := recorder.Body.String(); !strings.Contains(body, `"type":"start","messageId":"turn-accepted"`) { + t.Fatalf("response body = %q, want early start frame with accepted turn id", body) + }As per coding guidelines,
**/*_test.go: Assert both HTTP status code AND response body in HTTP tests — status-code-only assertions are insufficient.🤖 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/api/udsapi/handlers_test.go` around lines 1677 - 1805, Add assertions in TestPromptSessionHandlerSeparatesPromptExecutionFromDelivery (both inner t.Run blocks "ShouldCancelDeliveryOnlyAfterRequestCancellation" and "ShouldCancelDeliveryOnlyWhenStreamShutsDown") to validate the HTTP response code and SSE output: assert recorder.Code equals the expected HTTP status (e.g., http.StatusOK) and assert recorder.Body.String() contains the early start frame string `"type":"start","messageId":"turn-accepted"`. Update the second subtest (ShouldCancelDeliveryOnlyWhenStreamShutsDown) which currently lacks response checks to include the same status and body assertions; reference the existing recorder and the earlier body assertion used in the first subtest.
🧹 Nitpick comments (6)
internal/session/provider_runtime_test.go (1)
126-208: ⚡ Quick winConsider documenting the agent-name-based isolation override.
The test configures
HomePolicy: aghconfig.ProviderHomePolicyOperatorbut expects isolation behavior because the session usesAgentName: aghconfig.OnboardingAgentName. This implicit override—where onboarding sessions receive managed isolation regardless of the configured home policy—is a critical contract that is not immediately obvious from the test structure.Adding a brief comment before the test explaining this override behavior would improve clarity for future maintainers.
📝 Suggested comment
+ // Onboarding sessions receive managed isolation regardless of home policy. + // The agent name triggers redirection to an AGH-owned runtime directory + // where only native auth files are copied from the operator codex home. t.Run("Should isolate onboarding codex home while preserving native auth", func(t *testing.T) {🤖 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/session/provider_runtime_test.go` around lines 126 - 208, Add a short clarifying comment above the test that the onboarding session name triggers an override in Manager.prepareProviderForStart: when Session.AgentName == aghconfig.OnboardingAgentName the provider home is forced to an isolated/managed path regardless of ResolvedAgent.HomePolicy (e.g., ProviderHomePolicyOperator), so the test intentionally expects managed CODEX_HOME; reference Manager.prepareProviderForStart, Session.AgentName, aghconfig.OnboardingAgentName and ResolvedAgent.HomePolicy in the comment.internal/api/httpapi/prompt.go (1)
25-31: ⚡ Quick winMove
acceptedPromptStreamTurnIDtocorepackage to avoid duplication.This helper is duplicated in
internal/api/udsapi/prompt.go. Per coding guidelines,internal/api/coreis the canonical handler home, and transport-duplicated parsing/validation should be avoided.♻️ Suggested refactor
Move to
internal/api/core/prompt_stream.go:+// AcceptedPromptStreamTurnID extracts and validates the turn ID from a +// SendPromptResult, returning an error if the turn ID is missing. +func AcceptedPromptStreamTurnID(result session.SendPromptResult) (string, error) { + turnID := strings.TrimSpace(result.NewTurnID) + if turnID == "" { + return "", errors.New("accepted prompt stream missing turn id") + } + return turnID, nil +}Then update both
httpapi/prompt.goandudsapi/prompt.goto callcore.AcceptedPromptStreamTurnID(result).As per coding guidelines: "
internal/api/coreis the canonical handler home. REST/UDS endpoints exist as sharedBaseHandlersmethods; HTTP and UDS only choose registration and authentication. No transport-duplicated parsing/validation."🤖 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/api/httpapi/prompt.go` around lines 25 - 31, Duplicate helper acceptedPromptStreamTurnID should be moved into the core package and used by both transports: create an exported function AcceptedPromptStreamTurnID(result session.SendPromptResult) (string, error) in the core package (e.g., core/prompt_stream.go) that performs the same TrimSpace + empty-check logic, replace calls in internal/api/httpapi/prompt.go and internal/api/udsapi/prompt.go to call core.AcceptedPromptStreamTurnID(result), remove the duplicated local acceptedPromptStreamTurnID implementations, and update imports to reference the core package.internal/api/httpapi/handlers_test.go (1)
1518-1550: 💤 Low valueConsider adding
t.Parallel()for consistency.Similar tests in this file mark the function level with
t.Parallel(). This test has no timing dependencies that would require sequential execution.Suggested fix
func TestPromptSessionHandlerRequiresAcceptedTurnIDForAISDKStream(t *testing.T) { + t.Parallel() + t.Run("ShouldRejectAcceptedStreamWithoutDurableTurnID", func(t *testing.T) { + t.Parallel() + homePaths := newTestHomePaths(t)🤖 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/api/httpapi/handlers_test.go` around lines 1518 - 1550, The test TestPromptSessionHandlerRequiresAcceptedTurnIDForAISDKStream is missing t.Parallel() like other tests; add a call to t.Parallel() at the start of the subtest function "ShouldRejectAcceptedStreamWithoutDurableTurnID" (or at the top of TestPromptSessionHandlerRequiresAcceptedTurnIDForAISDKStream) so the test runs in parallel with peers and maintains consistency with the rest of the file.internal/daemon/native_create_tools.go (1)
129-131: ⚡ Quick winNormalize the caller agent name before enforcing the onboarding global-scope guard.
The direct equality check can be brittle if caller identity formatting drifts. Normalize
scope.AgentNamebefore comparing toaghconfig.OnboardingAgentName.♻️ Suggested hardening
- if createReq.Scope == contract.AgentCreateScopeGlobal && - strings.TrimSpace(scope.AgentName) == aghconfig.OnboardingAgentName { + if createReq.Scope == contract.AgentCreateScopeGlobal && + aghconfig.NormalizeAgentName(scope.AgentName) == aghconfig.OnboardingAgentName {🤖 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/daemon/native_create_tools.go` around lines 129 - 131, The guard that blocks creating a global-scope onboarding agent compares scope.AgentName directly to aghconfig.OnboardingAgentName, which is brittle; normalize the caller name before the comparison (e.g., trim whitespace and apply the same casing normalization used elsewhere) and use that normalized value in the conditional that checks createReq.Scope == contract.AgentCreateScopeGlobal and compares against aghconfig.OnboardingAgentName so the check reliably detects the onboarding agent (refer to scope.AgentName, createReq.Scope, contract.AgentCreateScopeGlobal, and aghconfig.OnboardingAgentName).internal/config/bootstrap_test.go (1)
337-395: ⚡ Quick winWrap this case in a
t.Run("Should ...")subtest for policy compliance.Line 337 currently defines the scenario directly in the top-level test body; please nest it under a
t.Run("Should ...", ...)case.As per coding guidelines
**/*_test.go: MUST use t.Run("Should...") pattern for ALL test cases.🤖 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/config/bootstrap_test.go` around lines 337 - 395, Wrap the entire body of TestEnsureOnboardingAgentCreatesValidProvisioningAgent in a t.Run subtest (e.g. t.Run("Should create valid provisioning onboarding agent", func(t *testing.T) { ... })) and move t.Parallel() inside that subtest; keep all existing calls and assertions (EnsureOnboardingAgent, LoadAgentDef, OnboardingAgentName, slices.Equal checks, file ReadFile checks, second EnsureOnboardingAgent invocation) unchanged but nested so the test conforms to the t.Run("Should ...") pattern required by the test guidelines.internal/api/core/handlers_test.go (1)
805-808: ⚡ Quick winAssert error body content alongside 404 status in new endpoint checks.
These new HTTP assertions only check status; add body assertions to verify the failure reason/path and avoid false positives.
♻️ Suggested assertion pattern
onboardingResp := performRequest(t, fixture.Engine, http.MethodGet, "/agents/onboarding", nil) if onboardingResp.Code != http.StatusNotFound { t.Fatalf("get onboarding status = %d, want %d", onboardingResp.Code, http.StatusNotFound) } +if !strings.Contains(onboardingResp.Body.String(), "not found") { + t.Fatalf("get onboarding body = %q, want not found message", onboardingResp.Body.String()) +}As per coding guidelines: "Assert both HTTP status code AND response body in HTTP tests — status-code-only assertions are insufficient."
Also applies to: 1148-1151, 1270-1284
🤖 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/api/core/handlers_test.go` around lines 805 - 808, The test currently only asserts the 404 status for the GET /agents/onboarding call using performRequest and onboardingResp; update the test to also read and assert the response body (e.g., onboardingResp.Body.String()/bytes) contains the expected error message or path indicating why the resource is missing (for example an error code or "/agents/onboarding" failure reason) so the test fails only when both status AND body match; apply the same body-assertion pattern to the other similar checks referenced (around lines 1148-1151 and 1270-1284) to ensure both status and response payload are validated.
🤖 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/fs_browse_test.go`:
- Around line 136-157: The tests currently only assert rec.Code (status) and
must also validate the error payload; for each subtest that calls browse(t,
engine, url.Values{...}) (e.g. the "Should reject relative paths", "Should
return 404 for a missing directory", and "Should return 400 when the path is a
file" cases) read rec.Body (rec.Body.String() or ioutil.ReadAll(rec.Body)),
assert the body is valid JSON and contains the expected error field/message
(e.g. unmarshal into map[string]string and assert map["error"] or map["message"]
contains the expected substring) and include that assertion alongside the
existing status assertion (use the appropriate status constants
http.StatusBadRequest/http.StatusNotFound to pick the expected message).
In `@internal/api/core/onboarding_test.go`:
- Around line 170-172: The test currently only checks rec.Code; add an assertion
that reads the response body (rec.Body.String()) and verifies the error payload
matches expectations for the 503 path (for example assert the body contains the
expected error text like "service unavailable" or unmarshal the JSON and assert
a specific error field/value). Update the subtest (where rec and the status
check live) to set wantBody (or check substring) and call t.Fatalf with both
rec.Code and the body when the assertion fails so regressions in the error
payload are caught.
In `@internal/cli/helpers_test.go`:
- Around line 34-36: The three stub function fields getOnboardingStatusFn,
completeOnboardingFn, and resetOnboardingFn currently lack a context parameter;
update their signatures to accept context.Context as the first argument and
change their return types to match contract.OnboardingStatusResponse, error,
then update the stub methods CompleteOnboarding, CompleteOnboarding, and
ResetOnboarding (the methods around lines 405–424) to forward the received ctx
to these function fields so the field types and method implementations match and
context is propagated correctly.
In `@internal/config/bootstrap.go`:
- Around line 133-148: The current check-then-write (os.Stat ... os.WriteFile)
can be raced; replace that flow with an atomic create: ensure agentDir is
created and chmod'ed as currently done, then attempt to create the file using
os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_EXCL, privateFileMode) and write
contents to the returned file; if OpenFile fails with file-exists
(errors.Is(err, os.ErrExist) or syscall.EEXIST) return path, false, nil,
otherwise propagate the error with the same formatted messages; remove the
initial os.Stat branch and use os.OpenFile+write+close to guarantee no TOCTOU
overwrite for the managed agent file.
In `@internal/daemon/daemon_test.go`:
- Around line 2393-2415: Wrap the existing TestBootConfigEnsuresManagedAgents
body in a t.Run subtest (e.g., t.Run("Should ensure managed agents are present",
func(t *testing.T) { ... })) while preserving t.Parallel() and all
setup/assertions; move the homePaths, cfg, d, state, cleanup creation and the
call to d.bootConfig plus the loop that calls aghconfig.LoadAgentDef into the
subtest function. Ensure the outer TestBootConfigEnsuresManagedAgents remains as
the test entrypoint and only calls t.Run with the described subtest name.
In `@internal/daemon/native_create_tools_test.go`:
- Around line 177-199: Replace the weak nil-error assertions in the tests that
call registry.Call for toolspkg.ToolIDNetworkChannelCreate (the subtests "Should
reject an invalid channel name" and "Should require a purpose", and the similar
block at lines ~238-245) with specific error assertions: use testing helpers
like require.ErrorContains or errors.As/require.ErrorAs to assert the returned
error is the expected validation error type/class and that its message contains
the expected text (e.g., "invalid channel name" or "purpose cannot be blank");
locate the calls to registry.Call(t.Context(), toolspkg.Scope{},
toolspkg.CallRequest{...}) and replace the if err == nil { t.Fatal(...) } checks
with these targeted assertions referencing the validation error and expected
substring.
In `@internal/session/provider_runtime.go`:
- Around line 129-136: The gate in shouldUseManagedOnboardingCodexHome is using
resolved.Provider directly, which misses cases where resolved.RuntimeProvider is
set (alias/fallback); update shouldUseManagedOnboardingCodexHome to compute the
effective runtime provider (e.g., use resolved.RuntimeProvider if non-empty
otherwise resolved.Provider) and compare that value to runtimeProviderCodex
while keeping the other checks (sessionUsesManagedOnboardingAgent,
resolved.AuthMode, resolved.HomePolicy) unchanged; reference the
shouldUseManagedOnboardingCodexHome function and the runtimeProviderCodex symbol
so the comparison uses the effective provider rather than resolved.Provider
directly.
In `@internal/store/globaldb/global_db_app_metadata_test.go`:
- Around line 78-113: Wrap the existing test body of
TestAppMetadataReopenAfterRestart in a t.Run subtest (e.g. t.Run("Should reopen
and persist app metadata after restart", func(t *testing.T) { ... })) and move
t.Parallel() inside that subtest so the subtest uses the test runner's t; keep
the outer function name TestAppMetadataReopenAfterRestart but ensure all calls
(OpenGlobalDB, SetAppMetadata, Close, GetAppMetadata, t.Cleanup,
t.Fatalf/t.Errorf) use the subtest's t variable.
- Around line 55-61: The tests currently only assert non-nil errors for invalid
inputs in SetAppMetadata and GetAppMetadata; strengthen these by asserting the
specific error content or type: replace the err == nil checks in the "Should
reject blank keys" subtest (and the similar checks at lines 171-178) with
assertions that the error message contains an expected substring (e.g. "blank"
or "empty key") using ErrorContains, or match a sentinel error via errors.Is /
ErrorAs if the code exposes a specific error value (reference SetAppMetadata and
GetAppMetadata to locate where to change); ensure each invalid-input case
validates the exact error text/type rather than only non-nil.
In `@packages/site/components/landing/hero.tsx`:
- Around line 7-8: The computed additionalAgentCount can be negative when
SUPPORTED_AGENT_COUNT is less than featuredAgentNames.length; change the
calculation of additionalAgentCount to clamp to zero (e.g., use Math.max(0,
SUPPORTED_AGENT_COUNT - featuredAgentNames.length)) so the hero copy never
renders "and -N more." Update every place that computes or displays
additionalAgentCount (references: featuredAgentNames, additionalAgentCount,
SUPPORTED_AGENT_COUNT) to use the clamped value.
In `@packages/site/lib/__tests__/landing-truth.test.tsx`:
- Around line 127-136: The current string check using source.includes('from
"./supported-agents"') misses single-quote and aliased/path variants; replace it
with a regex test that matches import/require forms and any path segment ending
with "supported-agents" (e.g.
/from\s+['"][^'"]*\/?supported-agents(?:\/index)?['"]/ or include a require
variant) inside the test that iterates serverLandingMetricModules so the
violation triggers for single quotes, different relative paths, or alias
imports; update the code where source is checked in the test (the block
referencing serverLandingMetricModules and the includes call) to use this regex
instead.
In `@packages/ui/src/components/reui/stepper.tsx`:
- Around line 158-170: StepperRail and StepperBody currently destructure only
children and className and drop all other div props, preventing data-*, aria-*,
and event handlers from being passed through; update both components
(StepperRail and StepperBody) to accept the full ComponentProps<"div">, capture
remaining props via a rest parameter (e.g., ...props), merge className with cn
as before, and spread ...props onto the outer div so all attributes and handlers
(data-*, aria-*, events) are forwarded while preserving children and class
merging.
- Around line 145-146: The stepper component introduces ad-hoc arbitrary
Tailwind values (e.g., grid-cols-[26px_1fr], gap-x-[13px], and other occurrences
at the referenced ranges) which violate the tokens-only rule; replace each
arbitrary numeric utility in packages/ui/src/components/reui/stepper.tsx with
the corresponding design-token-backed utility from packages/ui/src/tokens.css
(refer to DESIGN.md for mappings) so the layout uses existing token
classes/variables (spacing, sizes, gaps, stroke widths, etc.) instead of raw
pixel brackets; update the className strings where grid-cols-[26px_1fr],
gap-x-[13px], and the other listed arbitrary values appear to use the proper
token names or CSS custom properties provided by the tokens file.
---
Outside diff comments:
In `@internal/api/udsapi/handlers_test.go`:
- Around line 1677-1805: Add assertions in
TestPromptSessionHandlerSeparatesPromptExecutionFromDelivery (both inner t.Run
blocks "ShouldCancelDeliveryOnlyAfterRequestCancellation" and
"ShouldCancelDeliveryOnlyWhenStreamShutsDown") to validate the HTTP response
code and SSE output: assert recorder.Code equals the expected HTTP status (e.g.,
http.StatusOK) and assert recorder.Body.String() contains the early start frame
string `"type":"start","messageId":"turn-accepted"`. Update the second subtest
(ShouldCancelDeliveryOnlyWhenStreamShutsDown) which currently lacks response
checks to include the same status and body assertions; reference the existing
recorder and the earlier body assertion used in the first subtest.
In `@internal/tools/builtin/builtin_test.go`:
- Around line 39-57: Add explicit risk assertions for the two newly added tools
by calling requireDescriptorRisk for ToolIDNetworkChannelCreate and
ToolIDAgentCreate in the risk-class assertion block of
internal/tools/builtin/builtin_test.go; locate the existing
requireDescriptorRisk(...) calls and insert matching lines for the symbols
ToolIDNetworkChannelCreate and ToolIDAgentCreate so the test verifies their risk
classifications explicitly and prevents silent risk-policy drift.
---
Nitpick comments:
In `@internal/api/core/handlers_test.go`:
- Around line 805-808: The test currently only asserts the 404 status for the
GET /agents/onboarding call using performRequest and onboardingResp; update the
test to also read and assert the response body (e.g.,
onboardingResp.Body.String()/bytes) contains the expected error message or path
indicating why the resource is missing (for example an error code or
"/agents/onboarding" failure reason) so the test fails only when both status AND
body match; apply the same body-assertion pattern to the other similar checks
referenced (around lines 1148-1151 and 1270-1284) to ensure both status and
response payload are validated.
In `@internal/api/httpapi/handlers_test.go`:
- Around line 1518-1550: The test
TestPromptSessionHandlerRequiresAcceptedTurnIDForAISDKStream is missing
t.Parallel() like other tests; add a call to t.Parallel() at the start of the
subtest function "ShouldRejectAcceptedStreamWithoutDurableTurnID" (or at the top
of TestPromptSessionHandlerRequiresAcceptedTurnIDForAISDKStream) so the test
runs in parallel with peers and maintains consistency with the rest of the file.
In `@internal/api/httpapi/prompt.go`:
- Around line 25-31: Duplicate helper acceptedPromptStreamTurnID should be moved
into the core package and used by both transports: create an exported function
AcceptedPromptStreamTurnID(result session.SendPromptResult) (string, error) in
the core package (e.g., core/prompt_stream.go) that performs the same TrimSpace
+ empty-check logic, replace calls in internal/api/httpapi/prompt.go and
internal/api/udsapi/prompt.go to call core.AcceptedPromptStreamTurnID(result),
remove the duplicated local acceptedPromptStreamTurnID implementations, and
update imports to reference the core package.
In `@internal/config/bootstrap_test.go`:
- Around line 337-395: Wrap the entire body of
TestEnsureOnboardingAgentCreatesValidProvisioningAgent in a t.Run subtest (e.g.
t.Run("Should create valid provisioning onboarding agent", func(t *testing.T) {
... })) and move t.Parallel() inside that subtest; keep all existing calls and
assertions (EnsureOnboardingAgent, LoadAgentDef, OnboardingAgentName,
slices.Equal checks, file ReadFile checks, second EnsureOnboardingAgent
invocation) unchanged but nested so the test conforms to the t.Run("Should ...")
pattern required by the test guidelines.
In `@internal/daemon/native_create_tools.go`:
- Around line 129-131: The guard that blocks creating a global-scope onboarding
agent compares scope.AgentName directly to aghconfig.OnboardingAgentName, which
is brittle; normalize the caller name before the comparison (e.g., trim
whitespace and apply the same casing normalization used elsewhere) and use that
normalized value in the conditional that checks createReq.Scope ==
contract.AgentCreateScopeGlobal and compares against
aghconfig.OnboardingAgentName so the check reliably detects the onboarding agent
(refer to scope.AgentName, createReq.Scope, contract.AgentCreateScopeGlobal, and
aghconfig.OnboardingAgentName).
In `@internal/session/provider_runtime_test.go`:
- Around line 126-208: Add a short clarifying comment above the test that the
onboarding session name triggers an override in Manager.prepareProviderForStart:
when Session.AgentName == aghconfig.OnboardingAgentName the provider home is
forced to an isolated/managed path regardless of ResolvedAgent.HomePolicy (e.g.,
ProviderHomePolicyOperator), so the test intentionally expects managed
CODEX_HOME; reference Manager.prepareProviderForStart, Session.AgentName,
aghconfig.OnboardingAgentName and ResolvedAgent.HomePolicy in the comment.
🪄 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: 4c2ce408-26a5-4b9d-b916-e3358d51c1e6
⛔ Files ignored due to path filters (74)
.agents/skills/humanizer/README.mdis excluded by!**/*.md,!.agents/**.agents/skills/humanizer/SKILL.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/SKILL.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/agents/impeccable-asset-producer.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/adapt.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/animate.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/audit.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/bolder.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/brand.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/clarify.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/codex.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/cognitive-load.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/color-and-contrast.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/colorize.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/craft.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/critique.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/delight.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/distill.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/document.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/extract.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/harden.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/heuristics-scoring.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/interaction-design.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/layout.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/live.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/motion-design.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/onboard.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/optimize.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/overdrive.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/personas.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/polish.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/product.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/quieter.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/responsive-design.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/shape.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/spatial-design.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/teach.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/typeset.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/typography.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/reference/ux-writing.mdis excluded by!**/*.md,!.agents/**.agents/skills/impeccable/scripts/cleanup-deprecated.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/command-metadata.jsonis excluded by!**/*.json,!.agents/**.agents/skills/impeccable/scripts/critique-storage.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/design-parser.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/detect-csp.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/detect.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/impeccable-paths.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/is-generated.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-accept.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-browser-session.jsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-browser.jsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-complete.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-completion.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-inject.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-poll.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-resume.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-server.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-session-store.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-status.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live-wrap.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/live.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/load-context.mjsis excluded by!.agents/**.agents/skills/impeccable/scripts/modern-screenshot.umd.jsis excluded by!.agents/**.agents/skills/impeccable/scripts/pin.mjsis excluded by!.agents/**COPY.mdis excluded by!**/*.mdinternal/tools/builtin/testdata/native-tool-catalog.jsonis excluded by!**/*.jsonopenapi/agh.jsonis excluded by!**/*.jsonpackages/site/content/runtime/api-reference/meta.jsonis excluded by!**/*.jsonpackages/site/content/runtime/core/agents/definitions.mdxis excluded by!**/*.mdxskills-lock.jsonis excluded by!**/*.jsonskills/agh/references/agent-definitions.mdis excluded by!**/*.mdskills/agh/references/native-tools.mdis excluded by!**/*.mdskills/agh/references/runtime-operations.mdis excluded by!**/*.mdweb/src/generated/agh-openapi.d.tsis excluded by!**/generated/**
📒 Files selected for processing (148)
internal/api/contract/fs.gointernal/api/contract/onboarding.gointernal/api/core/agent_create.gointernal/api/core/conversions.gointernal/api/core/fs_browse.gointernal/api/core/fs_browse_test.gointernal/api/core/handler_edge_cases_test.gointernal/api/core/handlers.gointernal/api/core/handlers_test.gointernal/api/core/interfaces.gointernal/api/core/memory_workspace_test.gointernal/api/core/onboarding.gointernal/api/core/onboarding_test.gointernal/api/core/prompt_stream.gointernal/api/core/prompt_stream_test.gointernal/api/core/workspaces.gointernal/api/httpapi/handlers.gointernal/api/httpapi/handlers_error_test.gointernal/api/httpapi/handlers_test.gointernal/api/httpapi/prompt.gointernal/api/httpapi/prompt_drain_test.gointernal/api/httpapi/routes.gointernal/api/httpapi/server.gointernal/api/httpapi/stream_helpers_test.gointernal/api/spec/spec.gointernal/api/udsapi/handlers_test.gointernal/api/udsapi/prompt.gointernal/api/udsapi/routes.gointernal/api/udsapi/server.gointernal/api/udsapi/server_test.gointernal/cli/agent.gointernal/cli/agent_commands_test.gointernal/cli/client.gointernal/cli/client_onboarding.gointernal/cli/helpers_test.gointernal/cli/install.gointernal/cli/onboarding.gointernal/cli/root.gointernal/config/agent.gointernal/config/bootstrap.gointernal/config/bootstrap_test.gointernal/daemon/agent_skill_resources.gointernal/daemon/agent_skill_resources_test.gointernal/daemon/boot.gointernal/daemon/daemon.gointernal/daemon/daemon_test.gointernal/daemon/native_create_tools.gointernal/daemon/native_create_tools_test.gointernal/daemon/native_tools.gointernal/providerenv/env.gointernal/session/interfaces.gointernal/session/manager_busy_input.gointernal/session/manager_prompt.gointernal/session/manager_prompt_lifetime_test.gointernal/session/provider_runtime.gointernal/session/provider_runtime_test.gointernal/store/globaldb/global_db.gointernal/store/globaldb/global_db_app_metadata.gointernal/store/globaldb/global_db_app_metadata_test.gointernal/store/globaldb/global_db_test.gointernal/store/store.gointernal/tools/builtin/builtin_test.gointernal/tools/builtin/descriptors.gointernal/tools/builtin/network.gointernal/tools/builtin/toolsets.gointernal/tools/builtin/workspace.gointernal/tools/builtin_ids.gopackages/site/components/landing/__tests__/landing.test.tsxpackages/site/components/landing/comparison.tsxpackages/site/components/landing/hero.tsxpackages/site/components/landing/provider-data.tspackages/site/components/landing/supported-agents.tsxpackages/site/lib/__tests__/landing-truth.test.tsxpackages/site/lib/runtime-navigation.tspackages/site/scripts/generate-openapi.tspackages/ui/src/components/custom/__tests__/tool-call-card.test.tsxpackages/ui/src/components/custom/stories/tool-call-card.stories.tsxpackages/ui/src/components/custom/tool-call-card.tsxpackages/ui/src/components/reui/stepper.tsxpackages/ui/src/index.tsweb/src/components/assistant-ui/hooks/use-virtualized-thread-messages.tsweb/src/components/assistant-ui/session-thread.tsxweb/src/components/assistant-ui/stories/session-thread.stories.tsxweb/src/hooks/routes/__tests__/use-session-page-controls.test.tsxweb/src/hooks/routes/use-session-detail-page.tsweb/src/hooks/routes/use-session-page-controls.tsweb/src/hooks/routes/use-session-topbar-slot.tsxweb/src/routes/__tests__/-_app.test.tsxweb/src/routes/_app.tsxweb/src/routes/_app/__tests__/-agents.$name.test.tsxweb/src/routes/_app/agents.$name.tsxweb/src/routes/_app/stories/-agents.$name.stories.tsxweb/src/routes/_app/stories/-index.stories.tsxweb/src/systems/agent/components/__tests__/agent-sessions-list.test.tsxweb/src/systems/agent/components/agent-category-tree.tsxweb/src/systems/agent/components/agent-sessions-list.tsxweb/src/systems/agent/hooks/use-agent-category-tree-model.tsweb/src/systems/agent/index.tsweb/src/systems/agent/lib/__tests__/session-view.test.tsweb/src/systems/agent/lib/session-status.tsweb/src/systems/agent/lib/session-view.tsweb/src/systems/onboarding/adapters/onboarding-api.tsweb/src/systems/onboarding/components/__tests__/step-onboarding-chat.test.tsxweb/src/systems/onboarding/components/directory-browser.tsxweb/src/systems/onboarding/components/onboarding-wizard.tsxweb/src/systems/onboarding/components/step-default-model.tsxweb/src/systems/onboarding/components/step-onboarding-chat.tsxweb/src/systems/onboarding/components/step-workspaces.tsxweb/src/systems/onboarding/components/stories/onboarding-steps.stories.tsxweb/src/systems/onboarding/hooks/__tests__/use-onboarding-chat.test.tsxweb/src/systems/onboarding/hooks/use-complete-onboarding.tsweb/src/systems/onboarding/hooks/use-directory-browser.tsweb/src/systems/onboarding/hooks/use-onboarding-chat.tsweb/src/systems/onboarding/hooks/use-onboarding-default-model.tsweb/src/systems/onboarding/hooks/use-onboarding-status.tsweb/src/systems/onboarding/hooks/use-onboarding-wizard.tsweb/src/systems/onboarding/hooks/use-onboarding-workspaces.tsweb/src/systems/onboarding/index.tsweb/src/systems/onboarding/lib/__tests__/provider-request.test.tsweb/src/systems/onboarding/lib/provider-request.tsweb/src/systems/onboarding/lib/query-keys.tsweb/src/systems/onboarding/lib/query-options.tsweb/src/systems/onboarding/stores/__tests__/use-onboarding-draft-store.test.tsweb/src/systems/onboarding/stores/use-onboarding-draft-store.tsweb/src/systems/onboarding/types.tsweb/src/systems/runtime/components/__tests__/app-sidebar.test.tsxweb/src/systems/runtime/components/app-sidebar.tsxweb/src/systems/session/adapters/__tests__/session-api.test.tsweb/src/systems/session/adapters/session-api.tsweb/src/systems/session/components/__tests__/session-chat-runtime-provider.test.tsxweb/src/systems/session/components/__tests__/tool-call-card.test.tsxweb/src/systems/session/components/permission-prompt.tsxweb/src/systems/session/components/runtime-activity-notice.tsxweb/src/systems/session/components/session-chat-runtime-provider.tsxweb/src/systems/session/components/session-resume-failure.tsxweb/src/systems/session/components/tool-call-card.tsxweb/src/systems/session/hooks/use-runtime-transcript-hydration.tsweb/src/systems/session/hooks/use-session-live-tail.tsweb/src/systems/session/hooks/use-session-transcript-thread-messages.tsweb/src/systems/session/index.tsweb/src/systems/session/lib/__tests__/tool-labels.test.tsweb/src/systems/session/lib/session-history-adapter.tsweb/src/systems/session/lib/session-running.tsweb/src/systems/session/lib/session-thread-repository.tsweb/src/systems/session/lib/session-toolkit.tsxweb/src/systems/session/lib/session-transcript-thread-context.tsxweb/src/systems/session/lib/session-visibility.tsweb/src/systems/session/lib/tool-labels.ts
💤 Files with no reviewable changes (3)
- internal/api/httpapi/prompt_drain_test.go
- internal/api/httpapi/stream_helpers_test.go
- internal/api/udsapi/server_test.go
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
internal/api/core/prompt_stream.go (1)
185-198:⚠️ Potential issue | 🟠 Major | ⚡ Quick winDefer
messageStartedstate mutation until afterWriteSSEsucceeds.
Start()marks the stream as started before the write. IfWriteSSEfails, retries are skipped and the encoder stays in an invalid state.Proposed fix
func (e *PromptStreamEncoder) Start(writer FlushWriter, messageID string) error { e.ensureInitialized() messageID = strings.TrimSpace(messageID) if messageID == "" { return errors.New("prompt stream start requires message id") } if e.messageStarted { return nil } - e.messageID = messageID - e.messageStarted = true - return WriteSSE(writer, SSEMessage{ - Data: promptStartPayload{Type: "start", MessageID: e.messageID}, - }) + if err := WriteSSE(writer, SSEMessage{ + Data: promptStartPayload{Type: "start", MessageID: messageID}, + }); err != nil { + return err + } + e.messageID = messageID + e.messageStarted = true + return nil }🤖 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/api/core/prompt_stream.go` around lines 185 - 198, The Start method currently sets e.messageStarted before attempting to write, so if WriteSSE fails the encoder remains marked started; change PromptStreamEncoder.Start to assign e.messageID (after trimming/validation) but defer setting e.messageStarted = true until after WriteSSE returns nil, i.e., call WriteSSE(writer, SSEMessage{...}) first and only on a successful (nil) return set e.messageStarted = true and then return nil; keep the existing early-return when e.messageStarted is true and ensure no state mutation occurs if WriteSSE errors.internal/session/provider_runtime.go (1)
194-218:⚠️ Potential issue | 🟠 Major | ⚡ Quick winRemove stale managed
auth.jsonwhen the operator Codex login disappears.If
CODEX_HOMEis unset or the operatorauth.jsonhas been removed, this returnsniland leaves any previously copiedcodexHome/auth.jsonin place. That allows managed onboarding to keep using stale native-CLI auth after the operator has logged out or switched accounts.🛠️ Suggested fix
func materializeOnboardingCodexAuth(env []string, codexHome string) error { sourceHome := operatorCodexHome(env) + targetAuth := filepath.Join(codexHome, codexAuthFileName) if sourceHome == "" { + if err := os.Remove(targetAuth); err != nil && !errors.Is(err, os.ErrNotExist) { + return fmt.Errorf("remove onboarding codex auth %q: %w", targetAuth, err) + } return nil } sourceAuth := filepath.Join(sourceHome, codexAuthFileName) - targetAuth := filepath.Join(codexHome, codexAuthFileName) if sourceAuth == targetAuth { return nil } payload, err := os.ReadFile(sourceAuth) if err != nil { if errors.Is(err, os.ErrNotExist) { + if rmErr := os.Remove(targetAuth); rmErr != nil && !errors.Is(rmErr, os.ErrNotExist) { + return fmt.Errorf("remove onboarding codex auth %q: %w", targetAuth, rmErr) + } return nil } return fmt.Errorf("read operator codex auth %q: %w", sourceAuth, err) }As per coding guidelines "Provider auth boundary. Native ACP providers (
auth_mode = native_cli) use provider-owned CLI login/session state and MUST NOT require AGH-bound API-keycredential_slots."🤖 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/session/provider_runtime.go` around lines 194 - 218, materializeOnboardingCodexAuth currently leaves a previously copied codex auth.json in place when the operator CLI login disappears; update the function so that when operatorCodexHome(env) returns empty or when os.ReadFile(sourceAuth) returns os.ErrNotExist it removes any existing targetAuth (filepath.Join(codexHome, codexAuthFileName)) before returning, handling and propagating remove errors (use os.Remove or equivalent and wrap errors with context like "remove onboarding codex auth %q"); keep the existing successful write/Chmod path unchanged.internal/api/httpapi/handlers_test.go (1)
1758-1772:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAssert the HTTP status in this cancellation-path test.
This only validates the SSE body. A regression that still writes the start frame but changes the response code would pass unnoticed.
💡 Suggested test tightening
select { case <-done: case <-time.After(time.Second): t.Fatal("handler did not return after request cancellation") } if err := executionCtx.Err(); err != nil { t.Fatalf("execution context err = %v, want nil after request cancellation", err) } if !errors.Is(deliveryCtx.Err(), context.Canceled) { t.Fatalf("delivery context err = %v, want context.Canceled", deliveryCtx.Err()) } + if recorder.Code != http.StatusOK { + t.Fatalf("status = %d, want %d; body=%s", recorder.Code, http.StatusOK, recorder.Body.String()) + } if body := recorder.Body.String(); !strings.Contains(body, `"type":"start","messageId":"turn-accepted"`) { t.Fatalf("response body = %q, want early start frame with accepted turn id", body) }As per coding guidelines "Assert both HTTP status code AND response body in HTTP tests — status-code-only assertions are insufficient."
🤖 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/api/httpapi/handlers_test.go` around lines 1758 - 1772, The test currently only checks the SSE body on request cancellation; add an assertion that the HTTP response status code is the expected value (e.g. http.StatusOK) before inspecting the body. Locate the test block using variables done, executionCtx, deliveryCtx and recorder and add a check like: if recorder.Code != http.StatusOK { t.Fatalf(...)} (or use recorder.Result().StatusCode) ensuring net/http's status constant is used and this assertion is placed prior to the body content check.
🤖 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.
Outside diff comments:
In `@internal/api/core/prompt_stream.go`:
- Around line 185-198: The Start method currently sets e.messageStarted before
attempting to write, so if WriteSSE fails the encoder remains marked started;
change PromptStreamEncoder.Start to assign e.messageID (after
trimming/validation) but defer setting e.messageStarted = true until after
WriteSSE returns nil, i.e., call WriteSSE(writer, SSEMessage{...}) first and
only on a successful (nil) return set e.messageStarted = true and then return
nil; keep the existing early-return when e.messageStarted is true and ensure no
state mutation occurs if WriteSSE errors.
In `@internal/api/httpapi/handlers_test.go`:
- Around line 1758-1772: The test currently only checks the SSE body on request
cancellation; add an assertion that the HTTP response status code is the
expected value (e.g. http.StatusOK) before inspecting the body. Locate the test
block using variables done, executionCtx, deliveryCtx and recorder and add a
check like: if recorder.Code != http.StatusOK { t.Fatalf(...)} (or use
recorder.Result().StatusCode) ensuring net/http's status constant is used and
this assertion is placed prior to the body content check.
In `@internal/session/provider_runtime.go`:
- Around line 194-218: materializeOnboardingCodexAuth currently leaves a
previously copied codex auth.json in place when the operator CLI login
disappears; update the function so that when operatorCodexHome(env) returns
empty or when os.ReadFile(sourceAuth) returns os.ErrNotExist it removes any
existing targetAuth (filepath.Join(codexHome, codexAuthFileName)) before
returning, handling and propagating remove errors (use os.Remove or equivalent
and wrap errors with context like "remove onboarding codex auth %q"); keep the
existing successful write/Chmod path unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 02ad325f-a035-4a23-a9aa-33d5b970c4a1
📒 Files selected for processing (21)
internal/api/core/fs_browse_test.gointernal/api/core/handlers_test.gointernal/api/core/onboarding_test.gointernal/api/core/prompt_stream.gointernal/api/httpapi/handlers_test.gointernal/api/httpapi/prompt.gointernal/api/udsapi/handlers_test.gointernal/api/udsapi/prompt.gointernal/cli/helpers_test.gointernal/config/bootstrap.gointernal/config/bootstrap_test.gointernal/daemon/daemon_test.gointernal/daemon/native_create_tools.gointernal/daemon/native_create_tools_test.gointernal/session/provider_runtime.gointernal/session/provider_runtime_test.gointernal/store/globaldb/global_db_app_metadata_test.gointernal/tools/builtin/builtin_test.gopackages/site/components/landing/hero.tsxpackages/site/lib/__tests__/landing-truth.test.tsxpackages/ui/src/components/reui/stepper.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
UI Evidence
AGH Impact Audit
Peer Review Follow-Up
Summary by CodeRabbit
New Features
Improvements