fix: fix: disinto hire-an-agent + compose generator defects blocking multi-llama-dev parallel operation (#834)
Hiring a second llama-backed dev agent (e.g. `dev-qwen2`) alongside `dev-qwen` tripped four defects that prevented safe parallel operation. Gap 1 — hire-agent keyed per-agent token as FORGE_<ROLE>_TOKEN, so two dev-role agents overwrote each other's token in .env. Re-key by agent name via `tr 'a-z-' 'A-Z_'`: FORGE_TOKEN_<AGENT_UPPER>. Gap 2 — hire-agent generated a random FORGE_PASS but never wrote it to .env. The container's git credential helper needs both token and pass to push over HTTPS (#361). Persist FORGE_PASS_<AGENT_UPPER> with the same update-in-place idempotency as the token. Gap 3 — _generate_local_model_services hardcoded FORGE_TOKEN_LLAMA for every local-model service, forcing all hired llama agents to share one Forgejo identity. Derive USER_UPPER from the TOML's `forge_user` field and emit \${FORGE_TOKEN_<USER_UPPER>:-} per service. Gap 4 — every local-model service mounted the shared `project-repos` volume, so concurrent llama devs collided on /_factory worktree and state/.dev-active. Switch to per-agent `project-repos-<service_name>` and emit the matching top-level volume. Also escape embedded newlines in `$all_vols` before the sed insertion so multi-agent volume lists don't unterminate the substitute command. .env.example documents the new FORGE_TOKEN_<AGENT> / FORGE_PASS_<AGENT> naming convention (and preserves the legacy FORGE_TOKEN_LLAMA path used by the ENABLE_LLAMA_AGENT=1 singleton build). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
311e1926bb
commit
43dc86d84c
3 changed files with 63 additions and 16 deletions
12
.env.example
12
.env.example
|
|
@ -25,8 +25,16 @@ FORGE_URL=http://localhost:3000 # [CONFIG] local Forgejo instance
|
|||
# - FORGE_TOKEN_<BOT> = API token for REST calls (user identity via /api/v1/user)
|
||||
# - FORGE_PASS_<BOT> = password for git HTTP push (#361, Forgejo 11.x limitation)
|
||||
#
|
||||
# Local-model agents (agents-llama) use FORGE_TOKEN_LLAMA / FORGE_PASS_LLAMA
|
||||
# with FORGE_BOT_USER_LLAMA=dev-qwen to ensure correct attribution (#563).
|
||||
# Local-model agents hired with `disinto hire-an-agent` are keyed by *agent
|
||||
# name* (not role), so multiple local-model dev agents can coexist without
|
||||
# colliding on credentials (#834). For an agent named `dev-qwen2` the vars are:
|
||||
# - FORGE_TOKEN_DEV_QWEN2
|
||||
# - FORGE_PASS_DEV_QWEN2
|
||||
# Name conversion: tr 'a-z-' 'A-Z_' (lowercase→UPPER, hyphens→underscores).
|
||||
# The compose generator looks these up via the agent's `forge_user` field in
|
||||
# the project TOML. The pre-existing `dev-qwen` llama agent uses
|
||||
# FORGE_TOKEN_LLAMA / FORGE_PASS_LLAMA (kept for backwards-compat with the
|
||||
# legacy `ENABLE_LLAMA_AGENT=1` single-agent path).
|
||||
FORGE_TOKEN= # [SECRET] dev-bot API token (default for all agents)
|
||||
FORGE_PASS= # [SECRET] dev-bot password for git HTTP push (#361)
|
||||
FORGE_TOKEN_LLAMA= # [SECRET] dev-qwen API token (for agents-llama)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue