Commit graph

663 commits

Author SHA1 Message Date
A
de46a17d00
docs: Add refactoring service architecture guide to CLAUDE.md (#158)
Documents the dual-mode cycle system (issue vs refactor), concurrency
model, worktree isolation, and guidance for modifying the service.
Also adds trigger service files to the file structure convention.

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:16:27 -08:00
B
462cd367e0 chore: Switch from npm lockfile to bun lockfile
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-10 06:16:19 +00:00
A
cffd1f4ef3
feat: Add oracle/codex.sh (#157)
Implement Codex CLI agent deployment on Oracle Cloud Infrastructure.
Installs @openai/codex via npm, configures OpenRouter API integration
via OPENAI_BASE_URL proxy.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:15:59 -08:00
A
9acd24c721
feat: Add vastai/cline.sh (#154)
Implement Cline deployment on Vast.ai GPU instances.
Installs cline via npm, injects OpenRouter credentials
(OPENAI_API_KEY, OPENAI_BASE_URL).

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:15:51 -08:00
A
116683812d
feat: Add vastai/kilocode.sh (#155)
Implement Kilo Code agent deployment on Vast.ai. Installs via npm
and configures OpenRouter provider type with API key.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:15:46 -08:00
A
6ec6e1f699
feat: Add oracle/kilocode.sh (#153)
Implement Kilo Code agent deployment on Oracle Cloud Infrastructure.
Sets KILO_PROVIDER_TYPE=openrouter and KILO_OPEN_ROUTER_API_KEY env vars.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:15:43 -08:00
A
d35574bb07
feat: Add oracle/cline.sh (#152)
Implement Cline agent script for Oracle Cloud Infrastructure.
Installs cline via npm, configures OpenRouter API keys,
and launches interactive cline session.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:15:33 -08:00
A
7ace2695e6
feat: Run issue-fix cycles concurrently with refactor cycles (#145)
Issue triggers now spawn lightweight 2-agent runs (15-min timeout) in
isolated worktrees, while refactor cycles continue independently with
the full 6-agent team (30-min timeout). Duplicate issue runs are
rejected with 409.

- trigger-server.ts: pass SPAWN_ISSUE/SPAWN_REASON env vars to script,
  add issue dedup (409), include issue in health/trigger responses
- refactor.sh: dual-mode (issue vs refactor) with isolated worktrees,
  mode-specific prompts and timeouts, scoped cleanup
- start-refactor.sh: set MAX_CONCURRENT=3 (gitignored, local only)
- refactor.yml: handle 409 alongside existing 429

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:15:19 -08:00
A
0c185085cc
feat: Add oracle/nanoclaw.sh (#151)
Implement NanoClaw agent deployment on Oracle Cloud Infrastructure.
Installs tsx and clones nanoclaw repo, configures .env with Anthropic
API key proxied through OpenRouter, launches WhatsApp QR auth flow.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:15:05 -08:00
A
021352dba5
feat: Add vastai/plandex.sh (#149)
Implement Plandex agent deployment on Vast.ai. Installs via official
install script and verifies installation before launching.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:14:55 -08:00
A
dacc5c2a63
feat: Add vastai/nanoclaw.sh (#150)
Implement NanoClaw (WhatsApp AI agent) deployment on Vast.ai GPU instances.
Sources vastai/lib/common.sh, installs tsx and clones nanoclaw repo,
creates .env with Anthropic API key, and launches with npm run dev.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:14:51 -08:00
A
f79a650b02
feat: Add vastai/amazonq.sh (#146)
Implement Amazon Q CLI deployment on Vast.ai GPU instances.
Installs via amazon-q-cli-install.sh, injects OpenRouter credentials
(OPENAI_API_KEY, OPENAI_BASE_URL).

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:14:46 -08:00
A
31489f13de
feat: Add oracle/plandex.sh (#148)
Implement Plandex agent deployment on Oracle Cloud Infrastructure.
Includes installation verification step.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:14:39 -08:00
A
ae89c06459
feat: Add oracle/amazonq.sh (#147)
Implement Amazon Q CLI agent script for Oracle Cloud Infrastructure.
Installs Amazon Q via official installer, configures OpenRouter API keys,
and launches interactive q chat session.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:14:36 -08:00
A
64b0bb602a
feat: Add oracle/openclaw.sh (#144)
Implement OpenClaw agent deployment on Oracle Cloud Infrastructure.
Uses OCI CLI for provisioning, installs openclaw via bun, configures
OpenRouter API integration with gateway+TUI launch.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:13:57 -08:00
A
503c92e17c
feat: Add vastai/openclaw.sh (#140)
Implement OpenClaw deployment on Vast.ai GPU instances.
Sources vastai/lib/common.sh, installs openclaw via bun,
configures OpenRouter API with model selection, starts
gateway in background and launches TUI.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:13:55 -08:00
A
50f550404a
feat: Add vastai/opencode.sh (#141)
Implement OpenCode agent deployment on Vast.ai. Uses opencode_install_cmd
from shared/common.sh for installation and injects OpenRouter API key.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:13:48 -08:00
A
cef924d189
feat: Add oracle/opencode.sh (#143)
Implement OpenCode agent deployment on Oracle Cloud Infrastructure.
Uses opencode_install_cmd helper from shared/common.sh.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:13:46 -08:00
A
a43034432f
feat: Add oracle/gemini.sh (#142)
Implement Gemini CLI agent script for Oracle Cloud Infrastructure.
Installs @google/gemini-cli via npm, configures OpenRouter API keys,
and launches interactive gemini session.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:13:42 -08:00
A
1c5e79a7d1
feat: Add vastai/gemini.sh (#139)
Implement Gemini CLI deployment on Vast.ai GPU instances.
Installs @google/gemini-cli via npm, injects OpenRouter credentials
(GEMINI_API_KEY, OPENAI_API_KEY, OPENAI_BASE_URL).

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
2026-02-09 22:13:39 -08:00
A
619837687e
fix: Correct OpenClaw description in manifest (#138)
Fixes #137 - The description incorrectly stated OpenClaw was "OpenRouter's
agent framework". OpenClaw is a personal AI assistant, not created by
OpenRouter.

Agent: team-lead

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:11:53 -08:00
A
26b049cb56
refactor: Reduce complexity in shared/common.sh (#136)
- Extract _generate_csrf_state() from try_oauth_flow() (8-line conditional -> 1-line call)
- Deduplicate retry loop: extract _cloud_api_retry_loop() shared by generic_cloud_api() and generic_cloud_api_custom_auth() (removed 26 duplicated lines)
- Extract OAuth HTML into bash variables with shared CSS, reducing inline string complexity in start_oauth_server()

Net reduction: 11 lines, eliminates copy-paste duplication in the API retry logic.

Agent: complexity-hunter

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:04:08 -08:00
A
6f7d684e69
test: Add 17 tests for cmdUpdate and script download/execution paths (#135)
Covers previously untested critical paths in commands.ts:
- cmdUpdate version checking (up-to-date, update available, fetch failures)
- downloadScriptWithFallback (primary/fallback URLs, 404, 500, network errors)
- reportDownloadFailure error messaging (404 vs server error)
- execScript script validation (shebang, dangerous patterns)
- runBash environment variables (SPAWN_PROMPT, SPAWN_MODE)

Agent: test-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-09 22:03:48 -08:00
A
d22719910c
fix: Add ASCII fallback for terminal unicode rendering (#134)
Fixes #132 - Some terminals can't render the unicode characters used by
@clack/prompts for bullets, selectors, and box drawing. This adds a
unicode detection module that runs before @clack/prompts is imported,
forcing ASCII mode when:
- SPAWN_NO_UNICODE=1 or SPAWN_ASCII=1 is set (explicit override)
- TERM is "dumb" or unset (common in basic terminals)

Also adds a troubleshooting hint in the help text.

Agent: ux-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:03:04 -08:00
B
65d28ba5f5 fix: Increase RUN_TIMEOUT_MS default to 4 hours
Discovery cycles run 1-2h+, 2h was too aggressive. 4h gives headroom
while still catching truly hung processes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-10 05:53:35 +00:00
A
dae37fded0
test: Add 31 tests for commands.ts error/validation paths (#133)
Tests the actual exported cmdRun and cmdAgentInfo functions (not inline
replicas) for their process.exit error paths: identifier validation
(injection, path traversal, length), unknown agent/cloud handling,
unimplemented combination suggestions, prompt security validation,
and empty input handling.

Agent: test-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 21:45:39 -08:00
A
5cb837bbe3
feat: Add Vast.ai GPU marketplace as cloud provider with 3 agent scripts (#131)
Adds Vast.ai as a new cloud provider (GPU marketplace with per-hour pricing).
Implements vastai/lib/common.sh with provider primitives using the vastai CLI,
and adds 3 initial agent scripts (claude, aider, codex). Remaining 11 agents
added as "missing" matrix entries.

Agent: cloud-scout

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:53:22 -08:00
A
76c824c12d
feat: Add Oracle Cloud Infrastructure provider with 3 agent scripts (#130)
Add OCI as a new cloud provider using the OCI CLI for compute instance
provisioning. Includes lib/common.sh with full lifecycle management
(create, SSH, cloud-init, destroy) and auto-creates VCN/subnet if needed.
Implements claude, aider, and goose agent scripts. Supports Always Free
tier shapes (VM.Standard.E2.1.Micro) and flex shapes.

Agent: cloud-scout

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:52:29 -08:00
A
88bc5e458f
docs: Update README matrix to reflect 294/294 complete matrix (#129)
All 14 agents are now implemented on all 21 clouds.
Previously the OVH column showed gaps and Kilo Code
showed only Sprite — now every cell is checked.

Agent: team-lead

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:24:38 -08:00
A
c1b1330ec1
test: Add 34 tests for command output functions (cmdList, cmdAgents, cmdClouds, cmdAgentInfo, cmdHelp) (#128)
Tests the actual exported command functions end-to-end using mock.module
for @clack/prompts and loadManifest(true) to force cache refresh with
mocked fetch data. Covers matrix display, agent/cloud listing, agent
info output, and help text content verification.

Agent: test-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-09 20:22:12 -08:00
A
dcf41c63ea
fix: Prevent Python injection in Modal provider via env vars (#127)
MODAL_SANDBOX_ID and sandbox name were interpolated directly into
Python code strings, allowing potential code injection. Now all
user-controlled values are passed via environment variables and
read with os.environ in Python.

Changes:
- create_server: pass name/image via _MODAL_NAME/_MODAL_IMAGE env vars,
  use getattr() for image lookup, add sandbox name validation
- run_server: pass sandbox ID and command via env vars
- interactive_session: pass sandbox ID and command via env vars
- destroy_server: pass sandbox ID via env var
- Add validate_sandbox_id() to enforce sb-<alphanumeric> format
- upload_file: remove printf '%q' escaping (base64 is safe)

Agent: security-auditor

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:22:08 -08:00
A
009f3454fc
feat: Add Cline and gptme on OVHcloud (#126)
Implement ovh/cline.sh and ovh/gptme.sh using OVH
primitives. Both scripts provision an OVHcloud instance,
install the agent, inject OpenRouter credentials, and
launch an interactive session.

Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:18:28 -08:00
A
9493fcb973
fix: Improve error messages with better context and actionable guidance (#125)
- OAuth failures now explain WHY they failed (timeout, port conflict,
  no runtime, network) and suggest specific fixes
- Add duration hints to long-running operations (SSH wait: 30-90s,
  OAuth: 10-30s) so users know what to expect
- validateImplementation shows exact `spawn <agent> <cloud>` commands
  users can run instead of just listing cloud names
- SSH wait failure suggests checking cloud provider dashboard

Agent: ux-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:18:26 -08:00
A
8a780e933b
refactor: Extract helpers from civo and kamatera create_server functions (#124)
Civo: Extract build_create_instance_body() for JSON body construction
and wait_for_civo_instance() for the status polling loop, reducing
create_server() from 113 to 53 lines.

Kamatera: Extract validate_kamatera_params() for input validation and
build_kamatera_server_body() for JSON body construction, reducing
create_server() from 107 to 62 lines.

Agent: complexity-hunter

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:18:15 -08:00
A
05fa33ead3
feat: Add Goose and Open Interpreter on OVHcloud (#123)
Implement ovh/goose.sh and ovh/interpreter.sh using OVH
primitives. Both scripts provision an OVHcloud instance,
install the agent, inject OpenRouter credentials, and
launch an interactive session.

Agent: gap-filler-2

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:17:21 -08:00
A
9efa451326
feat: Add OpenCode and Plandex on OVHcloud (#122)
Implement ovh/opencode.sh and ovh/plandex.sh using OVH
primitives. Both scripts provision an OVHcloud instance,
install the agent, inject OpenRouter credentials, and
launch an interactive session.

Agent: gap-filler-5

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:17:02 -08:00
A
9b4cb00a40
feat: Add Gemini CLI and Amazon Q CLI on OVHcloud (#121)
Implement ovh/gemini.sh and ovh/amazonq.sh using OVH
primitives. Both scripts provision an OVHcloud instance,
install the agent, inject OpenRouter credentials, and
launch an interactive session.

Agent: gap-filler-3

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:16:22 -08:00
A
c302bc010d
feat: Add OpenClaw and NanoClaw on OVHcloud (#120)
Implement ovh/openclaw.sh and ovh/nanoclaw.sh using OVH
primitives from lib/common.sh. Both scripts provision an
OVHcloud instance, install the agent, inject OpenRouter
credentials, and launch an interactive session.

Agent: gap-filler-1

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 20:16:12 -08:00
B
c2e83a4453 feat: Add RUN_TIMEOUT_MS tuning guide and set default to 2 hours
- Default RUN_TIMEOUT_MS increased to 7200000 (2h) based on observed
  team cycle durations of 1-2 hours
- SKILL.md now documents the data-driven tuning approach: start high
  (6-12h), collect log data, then tune down to 2x longest observed cycle
- Updated health/trigger response docs and workflow template with
  429-tolerant curl pattern

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-10 04:05:22 +00:00
A
1451d51784
fix: Add hard 20-minute timeout to refactor cycles (#119)
The prompt-based 15-minute time budget was advisory only — cycles could
run for hours (9.5h observed on Feb 9). Now:

- refactor.sh wraps `claude -p` in `timeout 1200` (20 min) with SIGTERM
  then SIGKILL after 60s grace. Distinguishes timeout vs failure in logs.
- trigger-server.ts adds a 60-second interval timer that proactively
  reaps stale runs instead of only checking on incoming requests.

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:58:23 -08:00
A
16ee8e3461
refactor: Extract helpers from complex cloud provider functions (#118)
- kamatera: Replace 65-line kamatera_api() with generic_cloud_api_custom_auth (65 -> 8 lines)
- kamatera: Extract _load_kamatera_config() and _validate_kamatera_credentials() from ensure_kamatera_token()
- ovh: Extract _load_ovh_config() and _save_ovh_config() from ensure_ovh_authenticated() (79 -> 47 lines)
- upcloud: Extract _load_upcloud_config() from ensure_upcloud_credentials() (69 -> 49 lines)
- upcloud: Extract _wait_for_upcloud_server_ip() from create_server() (58 -> 39 lines)

Agent: complexity-hunter

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:51:31 -08:00
A
425767d1bd
test: Add 52 tests for manifest cache lifecycle edge cases (#117)
Cover critical untested paths in manifest.ts:
- isValidManifest with 19 input type variations (null, arrays, falsy values)
- Cache corruption recovery (invalid JSON, wrong types, partial data)
- HTTP error fallbacks (403, 500, json() failures, TypeError)
- matrixStatus key composition (hyphens, slashes, empty strings, long keys)
- countImplemented case sensitivity and non-standard statuses
- agentKeys/cloudKeys insertion order preservation
- In-memory cache forceRefresh bypass behavior
- Combined fallback chain: invalid fetch + stale cache recovery

Agent: test-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:50:13 -08:00
A
2cc4e079eb
fix: Polish CLI UX with better hints, legends, and descriptions (#116)
- Add legend to `spawn list` matrix output (+ implemented, - not yet available)
- Show cloud identifier keys in `spawn <agent>` info output for easy copy-paste
- Add CLI shortcut hint in interactive mode after selection
- Add agent descriptions to `spawn agents` output
- Add agent counts to `spawn clouds` output for consistency
- Fix misleading "Updating" spinner in `spawn update` (it only checks)
- Add `spawn help` to help text command listing
- Improve footer hints in agents/clouds output with actionable commands

Agent: ux-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:48:17 -08:00
B
c799c79ae2 fix: Add process liveness checks and timeout-based stale run reaping
Before checking concurrency, the trigger server now:
- Checks if tracked processes are actually alive (kill -0)
- Reaps dead processes that exited without cleanup
- Kills runs that exceed RUN_TIMEOUT_MS (default 30min)

Health endpoint now reports per-run details (pid, age, reason).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-10 03:47:02 +00:00
A
e533a0c365
feat: Add kilocode scripts for runpod, upcloud, binarylane, genesiscloud, latitude, ovh, kamatera (#115)
Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:46:31 -08:00
A
fc48279ecb
feat: Add kilocode scripts for hetzner, digitalocean, vultr, linode, lambda, aws-lightsail, gcp (#114)
Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:46:21 -08:00
A
086bc76c8d
feat: Add kilocode scripts for e2b, modal, fly, civo, scaleway, daytona (#113)
Agent: gap-filler

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:45:51 -08:00
B
6b5a547e2d fix: Treat 429 (cycle already running) as success in workflows
When MAX_CONCURRENT=1 and a cycle is in progress, the trigger server
returns 429. This is expected behavior, not an error — the previous
curl -f treated it as failure (exit code 22).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-10 03:43:32 +00:00
A
5db68ea8d8
refactor: Extract helpers from long cloud provider functions (#112)
- runpod: Extract wait_for_pod_ready() from create_server() (96 -> 44 lines)
- latitude: Extract extract_latitude_server_ip() from wait_for_server_ready() (72 -> 38 lines)
- kamatera: Extract parse_command_ids() and get_kamatera_server_ip() from create_server() (164 -> 77 lines)
- kamatera: Deduplicate command ID parsing between create_server and destroy_server

Agent: complexity-hunter

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-09 19:25:53 -08:00
A
e2d71807b6
test: Add 41 tests for CLI flag extraction pipeline (#111)
Tests the extractFlagValue generic function and the full CLI flag
extraction pipeline (--prompt/-p and --prompt-file). Existing tests
in index-parsing.test.ts and index-edge-cases.test.ts use simplified
re-implementations; these tests cover the exact behavior including
error messages, process.exit on missing values, startsWith("-") guard,
sequential two-pass extraction, and edge cases with flag-like values.

Agent: test-engineer

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 19:25:18 -08:00