agent-tempo 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +219 -219
- package/LICENSE +21 -21
- package/README.md +289 -289
- package/assets/icon-dark.svg +9 -9
- package/assets/icon.svg +9 -9
- package/assets/logo-dark.svg +11 -11
- package/assets/logo-light.svg +11 -11
- package/dashboard/README.md +91 -91
- package/dashboard/dist/assets/index-D6Xyje_n.js.map +1 -1
- package/dashboard/dist/index.html +19 -19
- package/dashboard/package.json +47 -47
- package/dist/adapters/copilot/adapter.js +12 -1
- package/dist/cli/global-wrapper.d.ts +19 -0
- package/dist/cli/global-wrapper.js +169 -0
- package/dist/cli/help-text.js +97 -97
- package/dist/cli/startup.js +11 -0
- package/dist/cli/upgrade-command.js +81 -81
- package/dist/cli.js +12 -0
- package/dist/daemon.js +5 -0
- package/dist/scripts/verify-daemon-isolation-guard.js +24 -24
- package/dist/server.js +4 -0
- package/dist/spawn.js +12 -12
- package/dist/tools/coat-check-evict.js +2 -2
- package/dist/tools/coat-check-get.js +2 -2
- package/dist/tools/coat-check-put.js +4 -4
- package/dist/tools/fetch-state.js +2 -2
- package/dist/tools/save-state.js +13 -13
- package/dist/utils/grpc-shutdown-guard.d.ts +52 -0
- package/dist/utils/grpc-shutdown-guard.js +88 -0
- package/examples/agents/tempo-composer.md +56 -56
- package/examples/agents/tempo-conductor.md +117 -117
- package/examples/agents/tempo-critic.md +73 -73
- package/examples/agents/tempo-improv.md +74 -74
- package/examples/agents/tempo-liner.md +75 -75
- package/examples/agents/tempo-roadie.md +61 -61
- package/examples/agents/tempo-soloist.md +71 -71
- package/examples/agents/tempo-tuner.md +94 -94
- package/examples/ensembles/tempo-big-band.yaml +146 -146
- package/examples/ensembles/tempo-dev-team.yaml +58 -58
- package/examples/ensembles/tempo-headless-jam.yaml +77 -77
- package/examples/ensembles/tempo-jam-session.yaml +41 -41
- package/examples/ensembles/tempo-mock-jam.yaml +79 -79
- package/examples/ensembles/tempo-review-squad.yaml +32 -32
- package/package.json +173 -173
- package/packaging/launchd/com.agent.tempo.plist +46 -46
- package/packaging/systemd/agent-tempo.service +32 -32
- package/packaging/windows/install-task.ps1 +71 -71
- package/scenarios/conductor-recruit-mock.yaml +33 -33
- package/scenarios/echo-roundtrip.yaml +15 -15
- package/scenarios/multi-player-handoff.yaml +38 -38
- package/scenarios/recruit-cascade.yaml +38 -38
- package/scenarios/two-player-conversation.yaml +33 -33
- package/workflow-bundle.js +1 -1
- package/dist/activities/claude-stop.d.ts +0 -21
- package/dist/activities/claude-stop.js +0 -94
- package/dist/channel.d.ts +0 -3
- package/dist/channel.js +0 -48
- package/dist/copilot-bridge.d.ts +0 -22
- package/dist/copilot-bridge.js +0 -565
- package/dist/scripts/258-spotcheck.js +0 -303
- package/dist/tools/detach.d.ts +0 -4
- package/dist/tools/detach.js +0 -45
- package/dist/tools/encore.d.ts +0 -4
- package/dist/tools/encore.js +0 -31
- package/dist/tools/pause-ensemble.d.ts +0 -4
- package/dist/tools/pause-ensemble.js +0 -58
- package/dist/tools/resume-ensemble.d.ts +0 -4
- package/dist/tools/resume-ensemble.js +0 -79
- package/dist/tools/stop.d.ts +0 -4
- package/dist/tools/stop.js +0 -29
- package/dist/tui/client.d.ts +0 -6
- package/dist/tui/client.js +0 -9
- package/dist/tui/components/ActivityLog.d.ts +0 -16
- package/dist/tui/components/ActivityLog.js +0 -36
- package/dist/tui/components/CommandOverlay.d.ts +0 -15
- package/dist/tui/components/CommandOverlay.js +0 -34
- package/dist/tui/components/ConductorChat.d.ts +0 -16
- package/dist/tui/components/ConductorChat.js +0 -32
- package/dist/tui/components/EnsembleListView.d.ts +0 -14
- package/dist/tui/components/EnsembleListView.js +0 -32
- package/dist/tui/components/EnsemblePanel.d.ts +0 -12
- package/dist/tui/components/EnsemblePanel.js +0 -40
- package/dist/tui/components/InputBar.d.ts +0 -13
- package/dist/tui/components/InputBar.js +0 -58
- package/dist/tui/components/ScheduleOverlay.d.ts +0 -13
- package/dist/tui/components/ScheduleOverlay.js +0 -113
- package/dist/tui/components/TopBar.d.ts +0 -12
- package/dist/tui/components/TopBar.js +0 -15
- package/dist/tui/core-api.d.ts +0 -26
- package/dist/tui/core-api.js +0 -67
- package/dist/tui/hooks/useEnsembleDiscovery.d.ts +0 -3
- package/dist/tui/hooks/useEnsembleDiscovery.js +0 -30
- package/dist/tui/hooks/useMaestroPoller.d.ts +0 -3
- package/dist/tui/hooks/useMaestroPoller.js +0 -36
- package/dist/tui/hooks/useSendCommand.d.ts +0 -7
- package/dist/tui/hooks/useSendCommand.js +0 -29
- package/dist/utils/bg-preflight.d.ts +0 -25
- package/dist/utils/bg-preflight.js +0 -154
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
name: tempo-headless-jam
|
|
2
|
-
description: >
|
|
3
|
-
Subscription-billed headless ensemble for scheduled / CI / background work
|
|
4
|
-
where you don't want to spawn visible terminals or burn Console workspace
|
|
5
|
-
credits. Every player runs `agent: claude-code-headless` — the host's
|
|
6
|
-
installed `claude` CLI is invoked per-turn via `claude -p`, so turns bill
|
|
7
|
-
against the operator's existing Claude Code subscription extra-usage
|
|
8
|
-
pool (Pro / Max plans), NOT a `sk-ant-api03-...` Console key.
|
|
9
|
-
|
|
10
|
-
Requires:
|
|
11
|
-
- `claude` binary on PATH (`npm install -g @anthropic-ai/claude-code`
|
|
12
|
-
or follow https://claude.com/download)
|
|
13
|
-
- Logged-in Claude Code session (`claude auth login`) — the recruit
|
|
14
|
-
pre-flight rejects with an actionable error if either check fails
|
|
15
|
-
|
|
16
|
-
Use cases:
|
|
17
|
-
- Scheduled cleanup PRs, doctor checks, gate evaluators that you want
|
|
18
|
-
to run without a human-in-the-loop terminal window
|
|
19
|
-
- CI / build-bot ensembles on hosts where the operator already has
|
|
20
|
-
a Pro / Max subscription and wants to use it instead of Console credits
|
|
21
|
-
- "Pair with claude-code-headless" runs where one headless explorer +
|
|
22
|
-
one headless prototyper iterate on a problem, with the operator
|
|
23
|
-
reading transcripts via the dashboard rather than driving via
|
|
24
|
-
terminal interactions
|
|
25
|
-
|
|
26
|
-
Headless players have FULL Claude Code tool access (Bash, Read, Write,
|
|
27
|
-
Edit, Glob, Grep, WebSearch, WebFetch) by inheritance from the spawned
|
|
28
|
-
CLI — strictly more capable than `claude-api` headless players (which
|
|
29
|
-
have MCP-only tool access).
|
|
30
|
-
|
|
31
|
-
See [docs/design/520-claude-code-headless-adapter.md](../../docs/design/520-claude-code-headless-adapter.md)
|
|
32
|
-
for the full design and §16 spike findings.
|
|
33
|
-
|
|
34
|
-
conductor:
|
|
35
|
-
type: tempo-conductor
|
|
36
|
-
agent: claude-code-headless
|
|
37
|
-
permissionMode: acceptEdits
|
|
38
|
-
instructions: >
|
|
39
|
-
You are driving a headless ensemble for scheduled or CI work. Your
|
|
40
|
-
players have full Claude Code tool access AND the agent-tempo MCP
|
|
41
|
-
surface. Decompose the operator's task, delegate to the explorer +
|
|
42
|
-
prototyper, synthesize results. Report cleanly via `report` —
|
|
43
|
-
operators read transcripts via the dashboard, not by joining a
|
|
44
|
-
terminal session.
|
|
45
|
-
|
|
46
|
-
players:
|
|
47
|
-
- name: explorer
|
|
48
|
-
type: tempo-improv
|
|
49
|
-
agent: claude-code-headless
|
|
50
|
-
permissionMode: acceptEdits
|
|
51
|
-
instructions: >
|
|
52
|
-
You are the headless researcher. Investigate the operator's task
|
|
53
|
-
via Read / Grep / Glob / WebSearch / WebFetch. Report findings
|
|
54
|
-
with structured comparisons (pros / cons / trade-offs / recommendation).
|
|
55
|
-
You have full file-read access — no per-tool gating beyond
|
|
56
|
-
Claude Code's default `acceptEdits` permission mode. Show your
|
|
57
|
-
work — document what you tried and what you ruled out.
|
|
58
|
-
|
|
59
|
-
- name: prototyper
|
|
60
|
-
type: tempo-soloist
|
|
61
|
-
agent: claude-code-headless
|
|
62
|
-
permissionMode: acceptEdits
|
|
63
|
-
instructions: >
|
|
64
|
-
You build small implementations to validate the explorer's
|
|
65
|
-
findings. Write minimal code with Bash + Edit + Write. Run tests
|
|
66
|
-
where appropriate. Don't over-engineer — focus on proving or
|
|
67
|
-
disproving the approach. Report what worked and what didn't.
|
|
68
|
-
|
|
69
|
-
# No `schedules` block — headless ensembles are typically driven by
|
|
70
|
-
# external triggers (cron, CI hooks) or operator cues from the dashboard.
|
|
71
|
-
# Add a `schedules:` block if you want a periodic progress check, e.g.:
|
|
72
|
-
#
|
|
73
|
-
# schedules:
|
|
74
|
-
# - name: progress-check
|
|
75
|
-
# message: "Share what you've found so far."
|
|
76
|
-
# target: all
|
|
77
|
-
# every: 30m
|
|
1
|
+
name: tempo-headless-jam
|
|
2
|
+
description: >
|
|
3
|
+
Subscription-billed headless ensemble for scheduled / CI / background work
|
|
4
|
+
where you don't want to spawn visible terminals or burn Console workspace
|
|
5
|
+
credits. Every player runs `agent: claude-code-headless` — the host's
|
|
6
|
+
installed `claude` CLI is invoked per-turn via `claude -p`, so turns bill
|
|
7
|
+
against the operator's existing Claude Code subscription extra-usage
|
|
8
|
+
pool (Pro / Max plans), NOT a `sk-ant-api03-...` Console key.
|
|
9
|
+
|
|
10
|
+
Requires:
|
|
11
|
+
- `claude` binary on PATH (`npm install -g @anthropic-ai/claude-code`
|
|
12
|
+
or follow https://claude.com/download)
|
|
13
|
+
- Logged-in Claude Code session (`claude auth login`) — the recruit
|
|
14
|
+
pre-flight rejects with an actionable error if either check fails
|
|
15
|
+
|
|
16
|
+
Use cases:
|
|
17
|
+
- Scheduled cleanup PRs, doctor checks, gate evaluators that you want
|
|
18
|
+
to run without a human-in-the-loop terminal window
|
|
19
|
+
- CI / build-bot ensembles on hosts where the operator already has
|
|
20
|
+
a Pro / Max subscription and wants to use it instead of Console credits
|
|
21
|
+
- "Pair with claude-code-headless" runs where one headless explorer +
|
|
22
|
+
one headless prototyper iterate on a problem, with the operator
|
|
23
|
+
reading transcripts via the dashboard rather than driving via
|
|
24
|
+
terminal interactions
|
|
25
|
+
|
|
26
|
+
Headless players have FULL Claude Code tool access (Bash, Read, Write,
|
|
27
|
+
Edit, Glob, Grep, WebSearch, WebFetch) by inheritance from the spawned
|
|
28
|
+
CLI — strictly more capable than `claude-api` headless players (which
|
|
29
|
+
have MCP-only tool access).
|
|
30
|
+
|
|
31
|
+
See [docs/design/520-claude-code-headless-adapter.md](../../docs/design/520-claude-code-headless-adapter.md)
|
|
32
|
+
for the full design and §16 spike findings.
|
|
33
|
+
|
|
34
|
+
conductor:
|
|
35
|
+
type: tempo-conductor
|
|
36
|
+
agent: claude-code-headless
|
|
37
|
+
permissionMode: acceptEdits
|
|
38
|
+
instructions: >
|
|
39
|
+
You are driving a headless ensemble for scheduled or CI work. Your
|
|
40
|
+
players have full Claude Code tool access AND the agent-tempo MCP
|
|
41
|
+
surface. Decompose the operator's task, delegate to the explorer +
|
|
42
|
+
prototyper, synthesize results. Report cleanly via `report` —
|
|
43
|
+
operators read transcripts via the dashboard, not by joining a
|
|
44
|
+
terminal session.
|
|
45
|
+
|
|
46
|
+
players:
|
|
47
|
+
- name: explorer
|
|
48
|
+
type: tempo-improv
|
|
49
|
+
agent: claude-code-headless
|
|
50
|
+
permissionMode: acceptEdits
|
|
51
|
+
instructions: >
|
|
52
|
+
You are the headless researcher. Investigate the operator's task
|
|
53
|
+
via Read / Grep / Glob / WebSearch / WebFetch. Report findings
|
|
54
|
+
with structured comparisons (pros / cons / trade-offs / recommendation).
|
|
55
|
+
You have full file-read access — no per-tool gating beyond
|
|
56
|
+
Claude Code's default `acceptEdits` permission mode. Show your
|
|
57
|
+
work — document what you tried and what you ruled out.
|
|
58
|
+
|
|
59
|
+
- name: prototyper
|
|
60
|
+
type: tempo-soloist
|
|
61
|
+
agent: claude-code-headless
|
|
62
|
+
permissionMode: acceptEdits
|
|
63
|
+
instructions: >
|
|
64
|
+
You build small implementations to validate the explorer's
|
|
65
|
+
findings. Write minimal code with Bash + Edit + Write. Run tests
|
|
66
|
+
where appropriate. Don't over-engineer — focus on proving or
|
|
67
|
+
disproving the approach. Report what worked and what didn't.
|
|
68
|
+
|
|
69
|
+
# No `schedules` block — headless ensembles are typically driven by
|
|
70
|
+
# external triggers (cron, CI hooks) or operator cues from the dashboard.
|
|
71
|
+
# Add a `schedules:` block if you want a periodic progress check, e.g.:
|
|
72
|
+
#
|
|
73
|
+
# schedules:
|
|
74
|
+
# - name: progress-check
|
|
75
|
+
# message: "Share what you've found so far."
|
|
76
|
+
# target: all
|
|
77
|
+
# every: 30m
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
name: tempo-jam-session
|
|
2
|
-
description: Exploratory ensemble for spikes, research, and problems where the path forward is unclear
|
|
3
|
-
|
|
4
|
-
conductor:
|
|
5
|
-
type: tempo-conductor
|
|
6
|
-
instructions: >
|
|
7
|
-
You are leading a jam session — the goal is exploration, not delivery. Break the
|
|
8
|
-
unknown into research questions, assign them to the improv player and soloist,
|
|
9
|
-
and have the composer evaluate findings architecturally. Synthesize discoveries
|
|
10
|
-
into a clear recommendation or next steps. Time-box aggressively — report
|
|
11
|
-
findings even if incomplete.
|
|
12
|
-
|
|
13
|
-
players:
|
|
14
|
-
- name: explorer
|
|
15
|
-
type: tempo-improv
|
|
16
|
-
instructions: >
|
|
17
|
-
You are the primary researcher. Investigate the unknown: read docs, explore
|
|
18
|
-
codebases, test hypotheses, evaluate options. Report findings with structured
|
|
19
|
-
comparisons (pros, cons, trade-offs, recommendation). Show your work —
|
|
20
|
-
document what you tried and what you ruled out.
|
|
21
|
-
|
|
22
|
-
- name: prototyper
|
|
23
|
-
type: tempo-soloist
|
|
24
|
-
instructions: >
|
|
25
|
-
You build throwaway prototypes to test hypotheses from the explorer's findings.
|
|
26
|
-
Write quick, minimal code to prove or disprove an approach. Don't over-engineer —
|
|
27
|
-
this is a spike, not production code. Report what worked and what didn't.
|
|
28
|
-
|
|
29
|
-
- name: composer
|
|
30
|
-
type: tempo-composer
|
|
31
|
-
instructions: >
|
|
32
|
-
Evaluate the explorer's findings and prototyper's results through an architectural
|
|
33
|
-
lens. Assess how each option would fit into the existing system. Identify risks,
|
|
34
|
-
integration challenges, and long-term implications. Provide a recommendation
|
|
35
|
-
to the conductor.
|
|
36
|
-
|
|
37
|
-
schedules:
|
|
38
|
-
- name: progress-check
|
|
39
|
-
message: "Share what you've found so far, even if incomplete. What have you tried? What looks promising? What's a dead end?"
|
|
40
|
-
target: all
|
|
41
|
-
every: 15m
|
|
1
|
+
name: tempo-jam-session
|
|
2
|
+
description: Exploratory ensemble for spikes, research, and problems where the path forward is unclear
|
|
3
|
+
|
|
4
|
+
conductor:
|
|
5
|
+
type: tempo-conductor
|
|
6
|
+
instructions: >
|
|
7
|
+
You are leading a jam session — the goal is exploration, not delivery. Break the
|
|
8
|
+
unknown into research questions, assign them to the improv player and soloist,
|
|
9
|
+
and have the composer evaluate findings architecturally. Synthesize discoveries
|
|
10
|
+
into a clear recommendation or next steps. Time-box aggressively — report
|
|
11
|
+
findings even if incomplete.
|
|
12
|
+
|
|
13
|
+
players:
|
|
14
|
+
- name: explorer
|
|
15
|
+
type: tempo-improv
|
|
16
|
+
instructions: >
|
|
17
|
+
You are the primary researcher. Investigate the unknown: read docs, explore
|
|
18
|
+
codebases, test hypotheses, evaluate options. Report findings with structured
|
|
19
|
+
comparisons (pros, cons, trade-offs, recommendation). Show your work —
|
|
20
|
+
document what you tried and what you ruled out.
|
|
21
|
+
|
|
22
|
+
- name: prototyper
|
|
23
|
+
type: tempo-soloist
|
|
24
|
+
instructions: >
|
|
25
|
+
You build throwaway prototypes to test hypotheses from the explorer's findings.
|
|
26
|
+
Write quick, minimal code to prove or disprove an approach. Don't over-engineer —
|
|
27
|
+
this is a spike, not production code. Report what worked and what didn't.
|
|
28
|
+
|
|
29
|
+
- name: composer
|
|
30
|
+
type: tempo-composer
|
|
31
|
+
instructions: >
|
|
32
|
+
Evaluate the explorer's findings and prototyper's results through an architectural
|
|
33
|
+
lens. Assess how each option would fit into the existing system. Identify risks,
|
|
34
|
+
integration challenges, and long-term implications. Provide a recommendation
|
|
35
|
+
to the conductor.
|
|
36
|
+
|
|
37
|
+
schedules:
|
|
38
|
+
- name: progress-check
|
|
39
|
+
message: "Share what you've found so far, even if incomplete. What have you tried? What looks promising? What's a dead end?"
|
|
40
|
+
target: all
|
|
41
|
+
every: 15m
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
name: tempo-mock-jam
|
|
2
|
-
description: >
|
|
3
|
-
All-mock ensemble for autonomous validation harnesses (ADR 0014 §5.5).
|
|
4
|
-
One-command spin-up of a multi-player dev environment with mixed modes —
|
|
5
|
-
no real LLM calls, no terminal windows, no "trust this folder" prompts.
|
|
6
|
-
Pair with `agent-tempo --dev up --lineup tempo-mock-jam` and drive via
|
|
7
|
-
Chrome MCP / dashboard / `cue`.
|
|
8
|
-
|
|
9
|
-
Mode mix exercises every PR-3 mock surface in one ensemble:
|
|
10
|
-
- conductor → scripted (conductor-recruit-mock scenario)
|
|
11
|
-
- alice → scripted (multi-player-handoff scenario)
|
|
12
|
-
- bob → echo (baseline round-trip; default mock behavior)
|
|
13
|
-
- silent-witness → silent (heartbeat-stale phase validation)
|
|
14
|
-
- chaos-monkey → chaos (probabilistic fail/crash injection)
|
|
15
|
-
|
|
16
|
-
All five slots are mock — zero real LLM calls, zero terminal windows,
|
|
17
|
-
zero "trust this folder" prompts. Use the dashboard / TUI / `cue` to
|
|
18
|
-
drive the ensemble from outside.
|
|
19
|
-
|
|
20
|
-
To swap the conductor back to real Claude (human-driven demo):
|
|
21
|
-
open the TUI (/recruit-conductor) or use the MCP `recruit` tool with
|
|
22
|
-
agent: "claude" — the mock conductor will be replaced on the next
|
|
23
|
-
`claimAttachment`.
|
|
24
|
-
|
|
25
|
-
Override the scripted player's scenario per-run via the CLI:
|
|
26
|
-
agent-tempo --dev up --lineup tempo-mock-jam --scenario echo-roundtrip
|
|
27
|
-
That forces EVERY mock player into `mockMode: scripted` with the named
|
|
28
|
-
scenario regardless of the per-player `mockMode` here. Useful for
|
|
29
|
-
one-command "all mocks reply via this scenario" runs.
|
|
30
|
-
|
|
31
|
-
conductor:
|
|
32
|
-
type: tempo-conductor
|
|
33
|
-
agent: mock
|
|
34
|
-
mockMode: scripted
|
|
35
|
-
mockScenario: conductor-recruit-mock
|
|
36
|
-
instructions: >
|
|
37
|
-
You're driving a mock-only ensemble for autonomous validation. The
|
|
38
|
-
players reply deterministically — no real LLM calls, no terminal
|
|
39
|
-
windows, no human-in-the-loop. Cue them, watch the dashboard, capture
|
|
40
|
-
bugs as scenario YAMLs.
|
|
41
|
-
|
|
42
|
-
players:
|
|
43
|
-
- name: alice
|
|
44
|
-
agent: mock
|
|
45
|
-
mockMode: scripted
|
|
46
|
-
mockScenario: multi-player-handoff
|
|
47
|
-
instructions: >
|
|
48
|
-
Scripted three-way handoff player. Try: `cue alice "ship feature
|
|
49
|
-
caching"`. Splits the task to bob + carol-shaped peers, reports
|
|
50
|
-
progress through the conductor's outbox.
|
|
51
|
-
|
|
52
|
-
- name: bob
|
|
53
|
-
agent: mock
|
|
54
|
-
mockMode: echo
|
|
55
|
-
instructions: >
|
|
56
|
-
Echo round-trip baseline. Used as the receiving end of multi-player
|
|
57
|
-
handoff scenarios; every inbound cue comes back as `[ECHO] <text>`.
|
|
58
|
-
|
|
59
|
-
- name: silent-witness
|
|
60
|
-
agent: mock
|
|
61
|
-
mockMode: silent
|
|
62
|
-
instructions: >
|
|
63
|
-
Drains messages without ever replying. The heartbeat watcher should
|
|
64
|
-
transition this player to `awaiting` after the staleness threshold;
|
|
65
|
-
the dashboard should render the staleness indicator. Useful for
|
|
66
|
-
validating timeout / encore / pause flows.
|
|
67
|
-
|
|
68
|
-
- name: chaos-monkey
|
|
69
|
-
agent: mock
|
|
70
|
-
mockMode: chaos
|
|
71
|
-
instructions: >
|
|
72
|
-
Probabilistic failure injection. Configure rates via env vars on the
|
|
73
|
-
daemon: `AGENT_TEMPO_MOCK_CHAOS_DELAY_MS`,
|
|
74
|
-
`AGENT_TEMPO_MOCK_CHAOS_FAIL_RATE`,
|
|
75
|
-
`AGENT_TEMPO_MOCK_CHAOS_CRASH_RATE`,
|
|
76
|
-
`AGENT_TEMPO_MOCK_CHAOS_SEED` (pin for reproducibility). Defaults
|
|
77
|
-
are conservative (5 % fail, 1 % crash, no delay) so an idle ensemble
|
|
78
|
-
doesn't churn — set higher rates explicitly to stress the
|
|
79
|
-
supervisor-restart + outbox-retry paths.
|
|
1
|
+
name: tempo-mock-jam
|
|
2
|
+
description: >
|
|
3
|
+
All-mock ensemble for autonomous validation harnesses (ADR 0014 §5.5).
|
|
4
|
+
One-command spin-up of a multi-player dev environment with mixed modes —
|
|
5
|
+
no real LLM calls, no terminal windows, no "trust this folder" prompts.
|
|
6
|
+
Pair with `agent-tempo --dev up --lineup tempo-mock-jam` and drive via
|
|
7
|
+
Chrome MCP / dashboard / `cue`.
|
|
8
|
+
|
|
9
|
+
Mode mix exercises every PR-3 mock surface in one ensemble:
|
|
10
|
+
- conductor → scripted (conductor-recruit-mock scenario)
|
|
11
|
+
- alice → scripted (multi-player-handoff scenario)
|
|
12
|
+
- bob → echo (baseline round-trip; default mock behavior)
|
|
13
|
+
- silent-witness → silent (heartbeat-stale phase validation)
|
|
14
|
+
- chaos-monkey → chaos (probabilistic fail/crash injection)
|
|
15
|
+
|
|
16
|
+
All five slots are mock — zero real LLM calls, zero terminal windows,
|
|
17
|
+
zero "trust this folder" prompts. Use the dashboard / TUI / `cue` to
|
|
18
|
+
drive the ensemble from outside.
|
|
19
|
+
|
|
20
|
+
To swap the conductor back to real Claude (human-driven demo):
|
|
21
|
+
open the TUI (/recruit-conductor) or use the MCP `recruit` tool with
|
|
22
|
+
agent: "claude" — the mock conductor will be replaced on the next
|
|
23
|
+
`claimAttachment`.
|
|
24
|
+
|
|
25
|
+
Override the scripted player's scenario per-run via the CLI:
|
|
26
|
+
agent-tempo --dev up --lineup tempo-mock-jam --scenario echo-roundtrip
|
|
27
|
+
That forces EVERY mock player into `mockMode: scripted` with the named
|
|
28
|
+
scenario regardless of the per-player `mockMode` here. Useful for
|
|
29
|
+
one-command "all mocks reply via this scenario" runs.
|
|
30
|
+
|
|
31
|
+
conductor:
|
|
32
|
+
type: tempo-conductor
|
|
33
|
+
agent: mock
|
|
34
|
+
mockMode: scripted
|
|
35
|
+
mockScenario: conductor-recruit-mock
|
|
36
|
+
instructions: >
|
|
37
|
+
You're driving a mock-only ensemble for autonomous validation. The
|
|
38
|
+
players reply deterministically — no real LLM calls, no terminal
|
|
39
|
+
windows, no human-in-the-loop. Cue them, watch the dashboard, capture
|
|
40
|
+
bugs as scenario YAMLs.
|
|
41
|
+
|
|
42
|
+
players:
|
|
43
|
+
- name: alice
|
|
44
|
+
agent: mock
|
|
45
|
+
mockMode: scripted
|
|
46
|
+
mockScenario: multi-player-handoff
|
|
47
|
+
instructions: >
|
|
48
|
+
Scripted three-way handoff player. Try: `cue alice "ship feature
|
|
49
|
+
caching"`. Splits the task to bob + carol-shaped peers, reports
|
|
50
|
+
progress through the conductor's outbox.
|
|
51
|
+
|
|
52
|
+
- name: bob
|
|
53
|
+
agent: mock
|
|
54
|
+
mockMode: echo
|
|
55
|
+
instructions: >
|
|
56
|
+
Echo round-trip baseline. Used as the receiving end of multi-player
|
|
57
|
+
handoff scenarios; every inbound cue comes back as `[ECHO] <text>`.
|
|
58
|
+
|
|
59
|
+
- name: silent-witness
|
|
60
|
+
agent: mock
|
|
61
|
+
mockMode: silent
|
|
62
|
+
instructions: >
|
|
63
|
+
Drains messages without ever replying. The heartbeat watcher should
|
|
64
|
+
transition this player to `awaiting` after the staleness threshold;
|
|
65
|
+
the dashboard should render the staleness indicator. Useful for
|
|
66
|
+
validating timeout / encore / pause flows.
|
|
67
|
+
|
|
68
|
+
- name: chaos-monkey
|
|
69
|
+
agent: mock
|
|
70
|
+
mockMode: chaos
|
|
71
|
+
instructions: >
|
|
72
|
+
Probabilistic failure injection. Configure rates via env vars on the
|
|
73
|
+
daemon: `AGENT_TEMPO_MOCK_CHAOS_DELAY_MS`,
|
|
74
|
+
`AGENT_TEMPO_MOCK_CHAOS_FAIL_RATE`,
|
|
75
|
+
`AGENT_TEMPO_MOCK_CHAOS_CRASH_RATE`,
|
|
76
|
+
`AGENT_TEMPO_MOCK_CHAOS_SEED` (pin for reproducibility). Defaults
|
|
77
|
+
are conservative (5 % fail, 1 % crash, no delay) so an idle ensemble
|
|
78
|
+
doesn't churn — set higher rates explicitly to stress the
|
|
79
|
+
supervisor-restart + outbox-retry paths.
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
name: tempo-review-squad
|
|
2
|
-
description: Three critics with different focus areas for thorough parallel code review
|
|
3
|
-
|
|
4
|
-
conductor:
|
|
5
|
-
type: tempo-conductor
|
|
6
|
-
instructions: >
|
|
7
|
-
You are coordinating a code review squad. Assign code areas or PRs to critics
|
|
8
|
-
based on their specialization. Each critic reviews the same changes but focuses
|
|
9
|
-
on their area. Collect their feedback, synthesize findings into a unified review,
|
|
10
|
-
and report the overall verdict.
|
|
11
|
-
|
|
12
|
-
players:
|
|
13
|
-
- name: security-critic
|
|
14
|
-
type: tempo-critic
|
|
15
|
-
instructions: >
|
|
16
|
-
Focus your review on security: input validation, authentication, authorization,
|
|
17
|
-
injection vulnerabilities, secrets handling, OWASP top 10, and dependency risks.
|
|
18
|
-
Flag anything that could be exploited. Blockers only for real vulnerabilities.
|
|
19
|
-
|
|
20
|
-
- name: perf-critic
|
|
21
|
-
type: tempo-critic
|
|
22
|
-
instructions: >
|
|
23
|
-
Focus your review on performance: algorithmic complexity, memory usage, unnecessary
|
|
24
|
-
allocations, N+1 queries, caching opportunities, bundle size, and hot paths.
|
|
25
|
-
Flag anything that would degrade user experience under load.
|
|
26
|
-
|
|
27
|
-
- name: quality-critic
|
|
28
|
-
type: tempo-critic
|
|
29
|
-
instructions: >
|
|
30
|
-
Focus your review on code quality: readability, maintainability, test coverage,
|
|
31
|
-
error handling, naming conventions, and adherence to project standards. Flag
|
|
32
|
-
anything that would make the code harder to work with in six months.
|
|
1
|
+
name: tempo-review-squad
|
|
2
|
+
description: Three critics with different focus areas for thorough parallel code review
|
|
3
|
+
|
|
4
|
+
conductor:
|
|
5
|
+
type: tempo-conductor
|
|
6
|
+
instructions: >
|
|
7
|
+
You are coordinating a code review squad. Assign code areas or PRs to critics
|
|
8
|
+
based on their specialization. Each critic reviews the same changes but focuses
|
|
9
|
+
on their area. Collect their feedback, synthesize findings into a unified review,
|
|
10
|
+
and report the overall verdict.
|
|
11
|
+
|
|
12
|
+
players:
|
|
13
|
+
- name: security-critic
|
|
14
|
+
type: tempo-critic
|
|
15
|
+
instructions: >
|
|
16
|
+
Focus your review on security: input validation, authentication, authorization,
|
|
17
|
+
injection vulnerabilities, secrets handling, OWASP top 10, and dependency risks.
|
|
18
|
+
Flag anything that could be exploited. Blockers only for real vulnerabilities.
|
|
19
|
+
|
|
20
|
+
- name: perf-critic
|
|
21
|
+
type: tempo-critic
|
|
22
|
+
instructions: >
|
|
23
|
+
Focus your review on performance: algorithmic complexity, memory usage, unnecessary
|
|
24
|
+
allocations, N+1 queries, caching opportunities, bundle size, and hot paths.
|
|
25
|
+
Flag anything that would degrade user experience under load.
|
|
26
|
+
|
|
27
|
+
- name: quality-critic
|
|
28
|
+
type: tempo-critic
|
|
29
|
+
instructions: >
|
|
30
|
+
Focus your review on code quality: readability, maintainability, test coverage,
|
|
31
|
+
error handling, naming conventions, and adherence to project standards. Flag
|
|
32
|
+
anything that would make the code harder to work with in six months.
|