Repository navigation
feat(acp): add IBM Bob as a builtin Registry ACP agent - #1031
Open
kaizhou-lab wants to merge 1 commit into
Open
kaizhou-lab wants to merge 1 commit into
kaizhou-lab wants to merge 1 commit into
Conversation
IBM Bob (https://bob.ibm.com) is listed on the public ACP Registry with an npx distribution, `@ibm/bob` launched with `acp`. This seeds it as a builtin agent the same way MiniMax Code was added in migration 044. - Migration 045 seeds the `bob` row: npx bridge argv `-y @ibm/bob acp`, product CLI `bob` for PATH detection, and the `agent_capabilities` and `auth_methods` that ACP `initialize` returned, stored in the snake_case form of migration 003. The ON CONFLICT set lists launch fields only. - The exact version (2.0.7) is pinned in the npx release lock, never in metadata. - The official Registry SVG is embedded as `acp-registry/bob.svg`. - `yolo_id` stays NULL: Bob's session modes are agent/plan/ask and none bypasses approvals. - `native_skills_dirs` declares `.bob/skills`, a provisional source-level mapping taken from Bob's workspace skills loader. - The stored argv deliberately omits `--trust`, so a workspace must be trusted in Bob Shell before its first ACP session. Count and enumeration guards that track builtin rows, release-lock entries, ACP rows, Registry logos, and seeded handshake columns are updated, and a dedicated migration test covers the seed, the lock pin, the argv bad paths, and identity aliases.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
IBM Bob is now listed on the public ACP Registry with an npx distribution. This PR seeds it as a builtin ACP agent, following the migration 044 (MiniMax Code) pattern:
crates/aionui-db/migrations/045_add_bob_builtin_agent.sqladds thebobrow.@ibm/bob@2.0.7is pinned in the npx release lock. No version is stored in metadata.acp-registry/bob.svg.This is not a lock-only change, so it is left open for human review. Two decisions below are yours.
Identity
title="Bob",href="https://bob.ibm.com", "IBM Bob is your AI-Powered Development Partner", 2.0.7v2026.10.14-5f08813)bob, name Bob, website https://bob.ibm.com,npx @ibm/bob@2.0.7, args["acp"], license proprietary@ibm/bob, homepage https://bob.ibm.com/, binbob, engines node >= 22initializeagentInfo {name: "bob-shell", title: "Bob", version: "2.0.7"}backend = "bob": the product name and also the canonical CLI the vendor documents. It coincides with the CDN JSON lookup id but is not derived from it. The JSON id appeared one day before the public page card (2026-10-14). It was held until the page listed it.Seeded fields and evidence
command/argsnpx/["-y","@ibm/bob","acp"]ACP.md: "bob acpstarts Bob Shell as an ACP server"binary_namebobnpm install -g @ibm/bob.bob --version(clean HOME) exits 0 printing2.0.7and acommit:line, so noskip_version_probeagent_capabilities_meta.bob/extensionsinitialize, per the migration 003 contractauth_methods[{"id":"sso",...}]initializeyolo_idagent(default),plan,ask. None bypasses approvals.ACP.md: protected operations "still require explicit approval" even with the--auto-approvelaunch flagnative_skills_dirs[".bob/skills"]WorkspaceSkillsManagerscans.bob/skills,.bob/plugins/*/skills,.agents/skillsand.claude/skills. Not loaded end to end, because that needs an authenticated session.skill_deliverystays NULL (injected)behavior_policy{"supports_side_question":false}descriptionProbe evidence
Serial ACP probes against
@ibm/bob@2.0.7, clean temporary HOME, no credentials:initializesession/newnpx -y @ibm/bob@2.0.7 acp-32600"Workspace … is not trusted. Pass --trust …, or run Bob Shell interactively in this folder and choose a trust level"npx -y @ibm/bob@2.0.7 acp --trust-32000"Authentication required"Decisions for the reviewer
--trustis not in the stored argv. With the Registry argv, every new workspace failssession/newuntil the user trusts it once in Bob Shell, which is exactly what Bob's error message instructs. Adding--trustwould make the ACP server auto-trust every workspace it opens. That is a security trade-off this PR deliberately does not make. If you want it, it is a one-line argv change, andlaunch_argv_does_not_trust_workspaces_or_auto_approveexists so it has to be deliberate.045_*migration. Whichever merges later must renumber.Known limitations
These are shared with every agent whose
yolo_idis NULL and has nofull_auto_mode_idarm, for example minimax-code. They are not fixed here because the scope is metadata-only.yolo_idfalls back to"yolo", which Bob does not advertise. Nothing invalid reaches the wire:AcpSession::clear_invalid_desired_modedrops it, and cron's full-auto path only applies advertised modes. However, a cron-bound conversation persists"yolo"as its runtime mode (cron/src/executor.rs), and asession/loadresume then reports it as the current mode (agent_session_flow.rs). This affects state and display only.mcp_capabilities.http). AionCore auto-approves aionui-team tool calls only when the permission request carriesraw_input.server_nameor anmcp__<server>__title (permission_router.rs). Bob's source suggests its requests use a "Running ()" title and raw tool arguments. If so, Bob teammates would prompt for each team tool call. This comes from reading the bundle, not from the wire: confirming it needs an authenticated capture.Validation
cargo test -p aionui-db --test bob_builtin_agent_migration: 6 passed (includes argv and alias bad paths).cargo test -p aionui-db --test team_capability_criteria_migration: 4 passed.cargo test -p aionui-db --test minimax_code_builtin_agent_migration: 4 passed.cargo test -p aionui-db --lib -- sqlite_agent_metadata: 20 passed.cargo test -p aionui-runtime --lib -- registry_npx_lock: 5 passed.cargo test -p aionui-assets --lib -- registry_agent_logos_are_embedded_as_svg: 1 passed.cargo test -p aionui-ai-agent --lib -- registry::tests: 30 passed.cargo clippy -p aionui-db -p aionui-runtime -p aionui-assets -p aionui-ai-agent --all-targets -- -D warnings,just lint-fix,just fmt,just migration-check: clean.yolofallback's runtime path. Its confirmed findings were fixed:bobwas added to the seeded auth-methods guard, and the comment's version and fallback wording was corrected. The two limitations above came from that review.No AionUi issues are linked (scheduled-run policy).
Logging
No logging change. This is a metadata-only addition; existing startup and session errors already identify a failing agent by backend.