* feat(#1355): detect-and-warn guard for claude-code agent-teams GSD's multi-agent orchestration can stall under claude-code's experimental agent-teams (a subagent's completion fails to route to the orchestrator). Per the maintainer decision, the accepted scope is a read-only detector + one non-fatal warning — NOT the declined run_in_background/TaskOutput conversion. - New Teams Status Module (src/teams-status.cts → gsd-core/bin/lib/teams-status.cjs): pure resolveTeamsStatus({runtime, env}) + thin CLI cmdTeamsStatus reusing resolveRuntime. active = strictly-truthy env flag AND runtime === 'claude'. - Wire `gsd-tools query teams-status [--active]` (read-only; no capability registration needed — conformance gates govern features, not query commands). - One non-fatal warning in plan-phase.md before the first Agent spawn, gated on `query teams-status --active`; zero behavior change on non-claude/teams-off. - Hermeticity: clear CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS in run-tests.cjs + SESSION_ENV_KEYS. Docs reference + CONTEXT.md glossary. Built lib gitignored. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(#1355): add changeset for teams-detect guard Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(#1355): bump plan-phase.md workflow size baseline (+407B for teams warning) The non-fatal agent-teams warning block added to plan-phase.md grew it 92759 → 93166 bytes, past its committed per-file baseline ratchet. The growth is small, deliberate, and still well under the workflow tier hard cap. Regenerate the baseline via `npm run size:baseline` (only plan-phase.md changed). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(#1355): register teams-status.cjs in the inventory manifest The new teams-status CLI module is a tracked surface; regenerate docs/INVENTORY-MANIFEST.json (cli_modules family) via gen-inventory-manifest.cjs --write so the inventory-manifest-sync gate passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -206,6 +206,48 @@ node gsd-tools.cjs capability set code-review --gate workflow.code_review=false
|
||||
|
||||
---
|
||||
|
||||
## Teams Status
|
||||
|
||||
### `query teams-status`
|
||||
|
||||
```bash
|
||||
node gsd-tools.cjs query teams-status [--active]
|
||||
```
|
||||
|
||||
Read-only detector for claude-code's experimental agent-teams feature (issue #1355). Resolves the runtime via the canonical `GSD_RUNTIME` → `config.runtime` → `'claude'` precedence, then checks `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`.
|
||||
|
||||
**Default (no flags):** prints a JSON object and exits 0:
|
||||
|
||||
```json
|
||||
{
|
||||
"active": false,
|
||||
"runtime": "claude",
|
||||
"env_present": false,
|
||||
"source": "off: flag absent"
|
||||
}
|
||||
```
|
||||
|
||||
Fields:
|
||||
|
||||
| Field | Type | Description |
|
||||
|---|---|---|
|
||||
| `active` | boolean | `true` only when `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` is strictly truthy (`"1"` or `"true"`, case-insensitive) **and** the resolved runtime is `"claude"` |
|
||||
| `runtime` | string | The resolved runtime name (e.g. `"claude"`, `"codex"`) |
|
||||
| `env_present` | boolean | `true` when the env flag is set to a strictly-truthy value |
|
||||
| `source` | string | One of: `"on: env"`, `"off: flag absent"`, `"off: non-claude"` |
|
||||
|
||||
**`--active` flag:** exits 0 if `active` is true, exits 1 otherwise. Prints nothing. Useful in bash conditionals:
|
||||
|
||||
```bash
|
||||
if gsd_run query teams-status --active >/dev/null 2>&1; then
|
||||
echo "agent-teams is on"
|
||||
fi
|
||||
```
|
||||
|
||||
This command is strictly read-only — no config writes, no disk mutation.
|
||||
|
||||
---
|
||||
|
||||
## Model Resolution
|
||||
|
||||
```bash
|
||||
|
||||
@@ -371,6 +371,7 @@
|
||||
"state.cjs",
|
||||
"surface.cjs",
|
||||
"task-command-router.cjs",
|
||||
"teams-status.cjs",
|
||||
"template.cjs",
|
||||
"uat-predicate.cjs",
|
||||
"uat.cjs",
|
||||
|
||||
Reference in New Issue
Block a user