de9bd7eb83
Operators can now declare:
agent_provider:
template: claude
auth_token: BOT_BOTTLE_CLAUDE_OAUTH_TOKEN
and the provisioner injects a provider-owned api.anthropic.com egress
route (Bearer, tls_passthrough) rather than requiring a manually
declared route with the former claude_code_oauth role.
Changes:
- Add auth_token field to AgentProvider; validate claude-only.
- Remove claude_code_oauth from EGRESS_ROLES / PROVIDER_EGRESS_ROLES.
Manifests that declare the role now fail at parse time with "unknown
role" — the provisioner owns the route.
- agent_provision_plan: replace manifest_egress_routes/has_provider_auth
with auth_token; Claude branch injects the api.anthropic.com route,
placeholder env, and nonessential-traffic flags when auth_token is set.
- Add hidden_env_names: frozenset[str] to AgentProvisionPlan; Claude
branch populates it with CLAUDE_CODE_OAUTH_TOKEN.
- Remove auth_role from AgentProviderRuntime and placeholder_env_for().
- print_util.visible_agent_env_names: accept hidden_env_names from the
plan instead of dispatching on agent_provider_template.
- Both backends: drop manifest_egress_routes call, pass auth_token.
- PRD 0029 rescoped to cover both Codex and Claude provider auth.
Assisted-by: Claude Code
32 lines
863 B
Python
32 lines
863 B
Python
"""Unit: shared preflight print helpers."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from bot_bottle.backend.print_util import visible_agent_env_names
|
|
|
|
|
|
class TestVisibleAgentEnvNames(unittest.TestCase):
|
|
def test_shows_all_when_no_hidden_names(self):
|
|
self.assertEqual(
|
|
["CUSTOM", "OPENAI_API_KEY"],
|
|
visible_agent_env_names(
|
|
["OPENAI_API_KEY", "CUSTOM"],
|
|
hidden_env_names=frozenset(),
|
|
),
|
|
)
|
|
|
|
def test_hides_provider_placeholder(self):
|
|
self.assertEqual(
|
|
["CUSTOM", "OPENAI_API_KEY"],
|
|
visible_agent_env_names(
|
|
["CLAUDE_CODE_OAUTH_TOKEN", "OPENAI_API_KEY", "CUSTOM"],
|
|
hidden_env_names=frozenset({"CLAUDE_CODE_OAUTH_TOKEN"}),
|
|
),
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|