Skip to content

Add agents remove vibekanban#7

Merged
koudis merged 5 commits into
mainfrom
add_agents_remove_vibekanban
Jun 20, 2026
Merged

Add agents remove vibekanban#7
koudis merged 5 commits into
mainfrom
add_agents_remove_vibekanban

Conversation

@koudis

@koudis koudis commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Added Codex agent for OpenAI Codex integration
    • Added OpenCode agent for OpenCode coding workflows
    • Build Resources agent expanded with additional development tools (graphify, tree, btop)
    • Improved session summary to display agent-provided information
  • Removed Features

    • Vibe Kanban agent support removed

@coderabbitai

coderabbitai Bot commented Jun 20, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@koudis, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 32 minutes and 35 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: aec000d2-a139-4f87-b3cd-f8b0cfe0c870

📥 Commits

Reviewing files that changed from the base of the PR and between ab0320e and b8752b5.

📒 Files selected for processing (3)
  • .kiro/specs/bootstrap-ai-coding/design-build-resources.md
  • internal/agents/codex/codex_test.go
  • internal/agents/opencode/opencode_test.go
📝 Walkthrough

Walkthrough

Vibe Kanban agent is removed and replaced with new Codex and OpenCode agents, each self-registering via init() with full credential, health-check, and AdditionalMounter support. Build Resources gains tree, btop, and graphify. Agent Summary Info is generalized to a KeyValue/AgentInfo model. Constants, main.go, and runStart are updated accordingly.

Changes

Agent Replacement, Extension, and Core Generalization

Layer / File(s) Summary
Constants, AdditionalMounter interface, and core wiring
internal/constants/constants.go, internal/agent/mounter.go, internal/cmd/root.go, internal/cmd/root_test.go, internal/docker/builder_test.go, main.go
VibeKanbanAgentName removed; CodexAgentName and OpenCodeAgentName added. New AdditionalMounter interface introduced. runStart checks each enabled agent for AdditionalMounter, collects extra mounts, and ensures host directories exist. SessionSummary tests updated to use generic AgentInfo []agent.KeyValue. Vibe Kanban blank import replaced with codex and opencode.
Build Resources: tree, btop, and graphify
internal/agents/buildresources/buildresources.go, internal/agents/buildresources/buildresources_test.go, internal/agents/buildresources/integration_test.go
aptPackages extended with tree and btop; Install gains uv tool install graphifyy and graphify install steps; HealthCheck adds version checks for all three tools; unit tests assert new packages and graphify commands; three new integration tests verify tool availability in the shared container.
Codex agent implementation, unit tests, and integration tests
internal/agents/codex/codex.go, internal/agents/codex/codex_test.go, internal/agents/codex/integration_test.go
New codexAgent self-registers in init(); implements full agent interface including Node.js 22 deduplication, @openai/codex install, auth.json-based credential detection, codex --version health check, and nil SummaryInfo. Property-based and unit tests cover all branches. Integration test suite builds a shared container and validates binary presence and health check.
OpenCode agent implementation, unit tests, and integration tests
internal/agents/opencode/opencode.go, internal/agents/opencode/opencode_test.go, internal/agents/opencode/integration_test.go
New opencodeAgent self-registers in init(); implements full agent interface including opencode-ai npm install, auth.json size-based credential detection, opencode --version health check, nil SummaryInfo, and AdditionalMounts for ~/.config/opencode. Property-based and unit tests cover all branches including AdditionalMounter. Integration tests validate binary, health check, and both credential mount directories.
Vibe Kanban agent removal
internal/agents/vibekanban/vibekanban.go, internal/agents/vibekanban/vibekanban_test.go, internal/agents/vibekanban/integration_test.go
Agent registration, Dockerfile steps, supervisor/ENTRYPOINT logic, port-file SummaryInfo, health checks, and all unit and integration test functions are deleted.
Specs, requirements, design docs, and README updates
.kiro/specs/bootstrap-ai-coding/agents/*, .kiro/specs/bootstrap-ai-coding/design*.md, .kiro/specs/bootstrap-ai-coding/requirements*.md, .kiro/specs/bootstrap-ai-coding/tasks.md, .kiro/steering/constants.md, README.md
New per-agent requirement specs added for Augment Code, Build Resources, Claude Code, Codex, and OpenCode. requirements-agents.md restructured with a general contract table. design-vibekanban.md deleted. Agent Summary Info design and requirements generalized to KeyValue/AgentInfo. Build Resources design and tasks updated for tree/btop/graphify. All Vibe Kanban references removed from README, steering, and index docs.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • koudis/bootstrap-ai-coding#6: Directly introduces the agent.KeyValue type and Agent.SummaryInfo method, and updates SessionSummary/FormatSessionSummary in internal/cmd/root.go to use generic AgentInfo—the same interface and struct fields this PR builds upon and tests.

Poem

🐰 Goodbye, Vibe Kanban, you served your time,
Now Codex and OpenCode step up sublime!
With auth.json checked and --version run,
Extra mounts bind-mounted, all under the sun. 🌟
Build Resources grows with tree, btop, graphify too —
A sprightly new agent family, fresh and brand new!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is vague and uses generic phrasing that doesn't clearly convey the primary change; 'Add agents remove vibekanban' lacks specificity about which agents are being added and the scope of removal. Use a more specific title like 'Add Codex and OpenCode agents, remove Vibe Kanban' or 'Replace Vibe Kanban with Codex and OpenCode agents' to clearly indicate the primary change.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed Docstring coverage is 82.35% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch add_agents_remove_vibekanban

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🧹 Nitpick comments (2)
.kiro/specs/bootstrap-ai-coding/requirements-agent-summary-info.md (1)

57-79: ⚡ Quick win

Vary sentence starters in Requirement SI-4 acceptance criteria.

Lines 63–66 (acceptance criteria 1–4) all begin with "THE", creating repetitive phrasing flagged by style analysis. Reword to vary the sentence starters while preserving the technical meaning:

Example reworded criteria (feel free to adjust wording):

  • ①: SessionSummary struct in internal/cmd/root.go SHALL NOT contain agent-specific fields.
  • ②: Core functions SHALL NOT discover or query individual agent state.
  • ③: Agent interaction SHALL go through the Agent_Interface; core SHALL NOT reference agents by name.
  • ④: FormatSessionSummary SHALL contain no conditional logic specific to any individual 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 @.kiro/specs/bootstrap-ai-coding/requirements-agent-summary-info.md around
lines 57 - 79, The acceptance criteria for Requirement SI-4 (lines starting with
criteria 1-4) all begin with "THE", creating repetitive phrasing. Reword each of
the four acceptance criteria to vary the sentence starters while maintaining the
technical meaning and requirements intent. Use the provided example rewording as
guidance, adjusting where appropriate, so that each criterion begins with
different phrasing such as removing "THE" from some criteria, restructuring to
start with the subject directly (e.g., "SessionSummary struct"), or starting
with action verbs (e.g., "Core functions SHALL NOT"). Ensure all four criteria
maintain their technical content about removing agent-specific logic from the
core, avoiding hardcoded agent discovery, preventing agent name references, and
keeping FormatSessionSummary logic agent-agnostic.

Source: Linters/SAST tools

internal/cmd/root.go (1)

727-733: ⚡ Quick win

Normalize additional mount host paths before ensuring/appending them.

Primary credential mounts are resolved via datadir.ResolveCredentialPath, but additional mounts use extra.HostPath as-is. If an agent returns ~ or a relative path, the wrong host directory can be created/mounted.

Proposed fix
 		if mounter, ok := s.a.(agent.AdditionalMounter); ok {
 			for _, extra := range mounter.AdditionalMounts(info.HomeDir) {
-				if err := datadir.EnsureCredentialDir(extra.HostPath); err != nil {
+				resolvedExtra := datadir.ResolveCredentialPath(extra.HostPath, "")
+				if err := datadir.EnsureCredentialDir(resolvedExtra); err != nil {
 					return fmt.Errorf("ensuring additional credential dir for %s: %w", s.a.ID(), err)
 				}
+				extra.HostPath = resolvedExtra
 				mounts = append(mounts, extra)
 			}
 		}
🤖 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/cmd/root.go` around lines 727 - 733, The additional mount host paths
in the loop iterating over mounter.AdditionalMounts() are being used directly
from extra.HostPath without normalization, whereas primary credential mounts are
resolved via datadir.ResolveCredentialPath. This can cause issues if an agent
returns paths containing ~ or relative paths. Before passing extra.HostPath to
datadir.EnsureCredentialDir and before appending the mount to the mounts slice,
normalize the path using the same resolution mechanism applied to primary
credential paths to ensure consistent handling of tilde and relative path
expansion.
🤖 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 @.kiro/specs/bootstrap-ai-coding/design-build-resources.md:
- Line 22: In the design-build-resources.md file on line 22, update the
requirement notation in the "Validates:" statement to use the correct
sub-requirement identifiers. Replace the inconsistent "AC-9, AC-10" references
(which do not exist in the Augment Code requirements) with "BR-2.9, BR-2.10"
which properly reference the tree, btop, and graphify installation
sub-requirements as defined in the requirements-build-resources.md file. The
corrected text should read: "Validates: BR-1 through BR-6 (including BR-2.9,
BR-2.10 for tree/btop/graphify and BR-4 updated health checks)".

In `@internal/agents/codex/codex.go`:
- Around line 46-47: The CredentialStorePath() function is ignoring the error
returned by os.UserHomeDir() on line 46, which can result in an empty home path
and degrade to a relative .codex path instead of an absolute path. Capture the
error returned by os.UserHomeDir() instead of discarding it with an underscore,
then check if the error is not nil and handle it appropriately (either by
returning an error from CredentialStorePath() or by logging and handling the
failure gracefully) before proceeding to filepath.Join().

In `@internal/agents/codex/integration_test.go`:
- Around line 65-70: The temporary directory created by os.MkdirTemp() in the
setupSharedContainer() function is not being cleaned up after use, causing
filesystem leaks in integration tests. After successfully creating the temp
directory with os.MkdirTemp() and storing it in projectDir, add a defer
statement to remove the directory using os.RemoveAll(projectDir) to ensure
cleanup happens when the function returns. Apply this same cleanup pattern to
any other locations mentioned in the code where temp directories are created
(referenced at lines 190-205) to maintain consistency across all temporary
workspace allocations.

In `@internal/agents/opencode/integration_test.go`:
- Around line 65-69: The integration test creates temporary directories using
os.MkdirTemp for projectDir, credAuthDir, and credConfigDir but never removes
them, causing temp file leaks. Add cleanup logic using t.Cleanup() or
os.RemoveAll() to remove each of these temporary directories after they are
created. Reference the three locations where these directories are created and
ensure proper cleanup is registered for each one to guarantee removal even if
the test fails.

In `@internal/agents/opencode/opencode_test.go`:
- Around line 430-431: The test assertion in the default-agent check is using
the hardcoded string "open-code" instead of the actual registered agent
identifier constant, which causes the test to be ineffective at catching
accidental additions of OpenCode to defaults. Replace the hardcoded "open-code"
string in the require.False call with the constants.OpenCodeAgentName constant
to ensure the test validates against the correct agent ID that is actually used
for registration.
- Around line 325-343: The test uses chmod to remove directory permissions to
trigger a stat error, which is flaky across different environments. Make the
test deterministic by replacing the directory permission approach with a
non-directory store path. Instead of creating a directory with t.TempDir() and
removing its permissions, create a regular file at a temporary location. Then
pass this file path (not a directory path) to the HasCredentials method in the
test, so when HasCredentials attempts to stat the auth.json file nested inside
what it expects to be a directory but is actually a file, it will reliably fail
with a deterministic error regardless of the environment. Remove the os.Chmod
calls and the associated t.Cleanup function that restores permissions.

---

Nitpick comments:
In @.kiro/specs/bootstrap-ai-coding/requirements-agent-summary-info.md:
- Around line 57-79: The acceptance criteria for Requirement SI-4 (lines
starting with criteria 1-4) all begin with "THE", creating repetitive phrasing.
Reword each of the four acceptance criteria to vary the sentence starters while
maintaining the technical meaning and requirements intent. Use the provided
example rewording as guidance, adjusting where appropriate, so that each
criterion begins with different phrasing such as removing "THE" from some
criteria, restructuring to start with the subject directly (e.g.,
"SessionSummary struct"), or starting with action verbs (e.g., "Core functions
SHALL NOT"). Ensure all four criteria maintain their technical content about
removing agent-specific logic from the core, avoiding hardcoded agent discovery,
preventing agent name references, and keeping FormatSessionSummary logic
agent-agnostic.

In `@internal/cmd/root.go`:
- Around line 727-733: The additional mount host paths in the loop iterating
over mounter.AdditionalMounts() are being used directly from extra.HostPath
without normalization, whereas primary credential mounts are resolved via
datadir.ResolveCredentialPath. This can cause issues if an agent returns paths
containing ~ or relative paths. Before passing extra.HostPath to
datadir.EnsureCredentialDir and before appending the mount to the mounts slice,
normalize the path using the same resolution mechanism applied to primary
credential paths to ensure consistent handling of tilde and relative path
expansion.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ffeb85f9-12ca-4b38-9d7b-0055adec0796

📥 Commits

Reviewing files that changed from the base of the PR and between 67ef64a and ab0320e.

📒 Files selected for processing (34)
  • .kiro/specs/bootstrap-ai-coding/agents/requirements-augment-code.md
  • .kiro/specs/bootstrap-ai-coding/agents/requirements-build-resources.md
  • .kiro/specs/bootstrap-ai-coding/agents/requirements-claude-code.md
  • .kiro/specs/bootstrap-ai-coding/agents/requirements-codex.md
  • .kiro/specs/bootstrap-ai-coding/agents/requirements-opencode.md
  • .kiro/specs/bootstrap-ai-coding/design-agent-summary-info.md
  • .kiro/specs/bootstrap-ai-coding/design-build-resources.md
  • .kiro/specs/bootstrap-ai-coding/design-vibekanban.md
  • .kiro/specs/bootstrap-ai-coding/design.md
  • .kiro/specs/bootstrap-ai-coding/requirements-agent-summary-info.md
  • .kiro/specs/bootstrap-ai-coding/requirements-agents.md
  • .kiro/specs/bootstrap-ai-coding/requirements-core.md
  • .kiro/specs/bootstrap-ai-coding/requirements.md
  • .kiro/specs/bootstrap-ai-coding/tasks.md
  • .kiro/steering/constants.md
  • README.md
  • internal/agent/mounter.go
  • internal/agents/buildresources/buildresources.go
  • internal/agents/buildresources/buildresources_test.go
  • internal/agents/buildresources/integration_test.go
  • internal/agents/codex/codex.go
  • internal/agents/codex/codex_test.go
  • internal/agents/codex/integration_test.go
  • internal/agents/opencode/integration_test.go
  • internal/agents/opencode/opencode.go
  • internal/agents/opencode/opencode_test.go
  • internal/agents/vibekanban/integration_test.go
  • internal/agents/vibekanban/vibekanban.go
  • internal/agents/vibekanban/vibekanban_test.go
  • internal/cmd/root.go
  • internal/cmd/root_test.go
  • internal/constants/constants.go
  • internal/docker/builder_test.go
  • main.go
💤 Files with no reviewable changes (6)
  • .kiro/specs/bootstrap-ai-coding/design-vibekanban.md
  • internal/docker/builder_test.go
  • internal/agents/vibekanban/vibekanban.go
  • .kiro/steering/constants.md
  • internal/agents/vibekanban/integration_test.go
  • internal/agents/vibekanban/vibekanban_test.go

Comment thread .kiro/specs/bootstrap-ai-coding/design-build-resources.md Outdated
Comment thread internal/agents/codex/codex.go
Comment thread internal/agents/codex/integration_test.go
Comment thread internal/agents/opencode/integration_test.go
Comment thread internal/agents/opencode/opencode_test.go Outdated
Comment thread internal/agents/opencode/opencode_test.go Outdated
@koudis koudis merged commit 5ec0da3 into main Jun 20, 2026
3 checks passed
@koudis koudis deleted the add_agents_remove_vibekanban branch June 20, 2026 20:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant