agent-tempo 1.2.0 → 1.4.0
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 +253 -219
- package/LICENSE +21 -21
- package/README.md +293 -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 → index-jmYe6rmS.js} +2 -2
- package/dashboard/dist/assets/index-jmYe6rmS.js.map +1 -0
- package/dashboard/dist/index.html +20 -20
- package/dashboard/package.json +47 -47
- package/dist/activities/outbox.d.ts +30 -1
- package/dist/activities/outbox.js +96 -3
- package/dist/adapters/base.js +5 -0
- package/dist/adapters/copilot/adapter.js +12 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.js +7 -0
- package/dist/adapters/pi/adapter.d.ts +2 -0
- package/dist/adapters/pi/adapter.js +43 -0
- package/dist/adapters/pi/index.d.ts +16 -0
- package/dist/adapters/pi/index.js +10 -0
- 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/client/core.js +9 -2
- package/dist/client/interface.d.ts +6 -0
- package/dist/config.d.ts +79 -0
- package/dist/config.js +74 -0
- package/dist/daemon.js +37 -1
- package/dist/http/aggregate.d.ts +22 -1
- package/dist/http/aggregate.js +41 -0
- package/dist/http/auth.d.ts +94 -8
- package/dist/http/auth.js +93 -9
- package/dist/http/body.d.ts +4 -1
- package/dist/http/body.js +6 -3
- package/dist/http/event-bus.js +1 -0
- package/dist/http/event-types.d.ts +34 -2
- package/dist/http/event-types.js +1 -0
- package/dist/http/gate-audit.d.ts +12 -0
- package/dist/http/gate-audit.js +95 -0
- package/dist/http/gate-registry.d.ts +167 -0
- package/dist/http/gate-registry.js +163 -0
- package/dist/http/gate-routes.d.ts +48 -0
- package/dist/http/gate-routes.js +102 -0
- package/dist/http/ingest-registry.d.ts +30 -0
- package/dist/http/ingest-registry.js +108 -0
- package/dist/http/inner-loop-routes.d.ts +66 -0
- package/dist/http/inner-loop-routes.js +182 -0
- package/dist/http/inner-loop.d.ts +92 -0
- package/dist/http/inner-loop.js +155 -0
- package/dist/http/server.d.ts +38 -3
- package/dist/http/server.js +211 -6
- package/dist/http/snapshot.d.ts +6 -0
- package/dist/http/snapshot.js +6 -0
- package/dist/pi/cue-pump.d.ts +61 -0
- package/dist/pi/cue-pump.js +95 -0
- package/dist/pi/extension.d.ts +45 -0
- package/dist/pi/extension.js +407 -0
- package/dist/pi/gate-client.d.ts +54 -0
- package/dist/pi/gate-client.js +136 -0
- package/dist/pi/headless.d.ts +85 -0
- package/dist/pi/headless.js +224 -0
- package/dist/pi/index.d.ts +28 -0
- package/dist/pi/index.js +43 -0
- package/dist/pi/inner-loop-client.d.ts +67 -0
- package/dist/pi/inner-loop-client.js +164 -0
- package/dist/pi/inner-loop-publisher.d.ts +187 -0
- package/dist/pi/inner-loop-publisher.js +236 -0
- package/dist/pi/lazy-proxy.d.ts +37 -0
- package/dist/pi/lazy-proxy.js +55 -0
- package/dist/pi/mission-control/actions.d.ts +48 -0
- package/dist/pi/mission-control/actions.js +98 -0
- package/dist/pi/mission-control/board.d.ts +53 -0
- package/dist/pi/mission-control/board.js +104 -0
- package/dist/pi/mission-control/extension.d.ts +44 -0
- package/dist/pi/mission-control/extension.js +251 -0
- package/dist/pi/mission-control/index.d.ts +15 -0
- package/dist/pi/mission-control/index.js +32 -0
- package/dist/pi/mission-control/inner-tail.d.ts +48 -0
- package/dist/pi/mission-control/inner-tail.js +76 -0
- package/dist/pi/mission-control/pi-ui.d.ts +43 -0
- package/dist/pi/mission-control/pi-ui.js +10 -0
- package/dist/pi/mission-control/render.d.ts +6 -0
- package/dist/pi/mission-control/render.js +95 -0
- package/dist/pi/phase-driver.d.ts +74 -0
- package/dist/pi/phase-driver.js +122 -0
- package/dist/pi/pi-types.d.ts +208 -0
- package/dist/pi/pi-types.js +21 -0
- package/dist/pi/probe.d.ts +80 -0
- package/dist/pi/probe.js +154 -0
- package/dist/pi/render-tools.d.ts +17 -0
- package/dist/pi/render-tools.js +51 -0
- package/dist/pi/reset-pump.d.ts +47 -0
- package/dist/pi/reset-pump.js +85 -0
- package/dist/pi/tool-capability.d.ts +60 -0
- package/dist/pi/tool-capability.js +156 -0
- package/dist/pi/workflow-client.d.ts +158 -0
- package/dist/pi/workflow-client.js +289 -0
- package/dist/pi/zod-to-typebox.d.ts +74 -0
- package/dist/pi/zod-to-typebox.js +191 -0
- package/dist/scripts/verify-daemon-isolation-guard.js +24 -24
- package/dist/server-tools.d.ts +2 -0
- package/dist/server-tools.js +50 -46
- package/dist/server.js +4 -0
- package/dist/spawn.d.ts +55 -0
- package/dist/spawn.js +84 -12
- package/dist/tools/agent-types.d.ts +2 -2
- package/dist/tools/agent-types.js +22 -17
- package/dist/tools/attachment-info.d.ts +2 -2
- package/dist/tools/attachment-info.js +38 -33
- package/dist/tools/broadcast.d.ts +2 -2
- package/dist/tools/broadcast.js +69 -64
- package/dist/tools/cancel-stage.d.ts +2 -2
- package/dist/tools/cancel-stage.js +20 -15
- package/dist/tools/clear-state.d.ts +2 -2
- package/dist/tools/clear-state.js +25 -20
- package/dist/tools/coat-check-evict.d.ts +2 -2
- package/dist/tools/coat-check-evict.js +30 -25
- package/dist/tools/coat-check-get.d.ts +2 -2
- package/dist/tools/coat-check-get.js +39 -34
- package/dist/tools/coat-check-list.d.ts +2 -2
- package/dist/tools/coat-check-list.js +48 -43
- package/dist/tools/coat-check-put.d.ts +2 -2
- package/dist/tools/coat-check-put.js +41 -36
- package/dist/tools/cue.d.ts +2 -2
- package/dist/tools/cue.js +57 -52
- package/dist/tools/descriptor.d.ts +72 -0
- package/dist/tools/descriptor.js +39 -0
- package/dist/tools/destroy.d.ts +2 -2
- package/dist/tools/destroy.js +153 -148
- package/dist/tools/ensemble.d.ts +2 -2
- package/dist/tools/ensemble.js +71 -66
- package/dist/tools/evaluate-gate.d.ts +2 -2
- package/dist/tools/evaluate-gate.js +33 -27
- package/dist/tools/fetch-state.d.ts +2 -2
- package/dist/tools/fetch-state.js +43 -38
- package/dist/tools/gates.d.ts +2 -2
- package/dist/tools/gates.js +39 -34
- package/dist/tools/hosts.d.ts +2 -2
- package/dist/tools/hosts.js +25 -20
- package/dist/tools/listen.d.ts +2 -2
- package/dist/tools/listen.js +23 -18
- package/dist/tools/load-lineup.d.ts +2 -2
- package/dist/tools/load-lineup.js +324 -319
- package/dist/tools/migrate.d.ts +2 -2
- package/dist/tools/migrate.js +45 -40
- package/dist/tools/pause.d.ts +2 -2
- package/dist/tools/pause.js +34 -29
- package/dist/tools/play.d.ts +2 -2
- package/dist/tools/play.js +53 -48
- package/dist/tools/quality-gate.d.ts +2 -2
- package/dist/tools/quality-gate.js +26 -21
- package/dist/tools/recall.d.ts +2 -2
- package/dist/tools/recall.js +32 -27
- package/dist/tools/recruit.d.ts +2 -2
- package/dist/tools/recruit.js +325 -256
- package/dist/tools/release.d.ts +2 -2
- package/dist/tools/release.js +85 -80
- package/dist/tools/report.d.ts +2 -2
- package/dist/tools/report.js +28 -23
- package/dist/tools/reset.d.ts +3 -0
- package/dist/tools/reset.js +51 -0
- package/dist/tools/restart.d.ts +2 -2
- package/dist/tools/restart.js +51 -46
- package/dist/tools/restore.d.ts +2 -2
- package/dist/tools/restore.js +76 -71
- package/dist/tools/save-lineup.d.ts +2 -2
- package/dist/tools/save-lineup.js +32 -27
- package/dist/tools/save-state.d.ts +2 -2
- package/dist/tools/save-state.js +43 -38
- package/dist/tools/schedule.d.ts +2 -2
- package/dist/tools/schedule.js +133 -128
- package/dist/tools/schedules.d.ts +2 -2
- package/dist/tools/schedules.js +41 -36
- package/dist/tools/set-ensemble-description.d.ts +2 -2
- package/dist/tools/set-ensemble-description.js +26 -21
- package/dist/tools/set-name.d.ts +2 -2
- package/dist/tools/set-name.js +38 -33
- package/dist/tools/set-part.d.ts +2 -2
- package/dist/tools/set-part.js +20 -15
- package/dist/tools/shutdown.d.ts +2 -2
- package/dist/tools/shutdown.js +39 -34
- package/dist/tools/stage.d.ts +2 -2
- package/dist/tools/stage.js +28 -23
- package/dist/tools/stages.d.ts +2 -2
- package/dist/tools/stages.js +36 -31
- package/dist/tools/unschedule.d.ts +2 -2
- package/dist/tools/unschedule.js +30 -25
- package/dist/tools/who-am-i.d.ts +2 -2
- package/dist/tools/who-am-i.js +36 -31
- package/dist/tools/worktree.d.ts +2 -2
- package/dist/tools/worktree.js +134 -129
- package/dist/tui/index.js +6 -6
- package/dist/types.d.ts +47 -2
- package/dist/types.js +1 -1
- package/dist/utils/default-part.js +1 -0
- package/dist/utils/grpc-shutdown-guard.d.ts +52 -0
- package/dist/utils/grpc-shutdown-guard.js +88 -0
- package/dist/utils/sdk-probe.d.ts +23 -0
- package/dist/utils/sdk-probe.js +46 -7
- package/dist/worker.d.ts +3 -1
- package/dist/worker.js +6 -2
- package/dist/workflows/session.js +70 -2
- package/dist/workflows/signals.d.ts +32 -2
- package/dist/workflows/signals.js +25 -2
- 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 +176 -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 +97 -6
- package/dashboard/dist/assets/index-D6Xyje_n.js.map +0 -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/helpers.d.ts +0 -21
- package/dist/tools/helpers.js +0 -25
- 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,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.
|
package/package.json
CHANGED
|
@@ -1,173 +1,176 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "agent-tempo",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Many agents, one tempo. Durable coordination for multi-agent work via Temporal.",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"mcp",
|
|
7
|
-
"claude",
|
|
8
|
-
"temporal",
|
|
9
|
-
"multi-agent",
|
|
10
|
-
"orchestration",
|
|
11
|
-
"claude-code"
|
|
12
|
-
],
|
|
13
|
-
"homepage": "https://github.com/vinceblank/agent-tempo",
|
|
14
|
-
"bugs": {
|
|
15
|
-
"url": "https://github.com/vinceblank/agent-tempo/issues"
|
|
16
|
-
},
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "https://github.com/vinceblank/agent-tempo.git"
|
|
20
|
-
},
|
|
21
|
-
"types": "./dist/server.d.ts",
|
|
22
|
-
"type": "commonjs",
|
|
23
|
-
"main": "dist/server.js",
|
|
24
|
-
"exports": {
|
|
25
|
-
".": "./dist/server.js",
|
|
26
|
-
"./types": {
|
|
27
|
-
"types": "./dist/types.d.ts",
|
|
28
|
-
"default": "./dist/types.js"
|
|
29
|
-
},
|
|
30
|
-
"./config": {
|
|
31
|
-
"types": "./dist/config.d.ts",
|
|
32
|
-
"default": "./dist/config.js"
|
|
33
|
-
},
|
|
34
|
-
"./spawn": {
|
|
35
|
-
"types": "./dist/spawn.d.ts",
|
|
36
|
-
"default": "./dist/spawn.js"
|
|
37
|
-
},
|
|
38
|
-
"./signals": {
|
|
39
|
-
"types": "./dist/workflows/signals.d.ts",
|
|
40
|
-
"default": "./dist/workflows/signals.js"
|
|
41
|
-
},
|
|
42
|
-
"./connection": {
|
|
43
|
-
"types": "./dist/connection.d.ts",
|
|
44
|
-
"default": "./dist/connection.js"
|
|
45
|
-
},
|
|
46
|
-
"./palette": {
|
|
47
|
-
"types": "./dist/palette/index.d.ts",
|
|
48
|
-
"default": "./dist/palette/index.js"
|
|
49
|
-
},
|
|
50
|
-
"./workflow-bundle": "./workflow-bundle.js",
|
|
51
|
-
"./package.json": "./package.json"
|
|
52
|
-
},
|
|
53
|
-
"bin": {
|
|
54
|
-
"agent-tempo": "dist/cli.js",
|
|
55
|
-
"agent-tempo-server": "dist/server.js"
|
|
56
|
-
},
|
|
57
|
-
"scripts": {
|
|
58
|
-
"build": "tsc && npm run build:scripts && npm run build:dashboard && node -e \"const{bundleWorkflowCode}=require('@temporalio/worker');const path=require('path');const fs=require('fs');bundleWorkflowCode({workflowsPath:path.resolve('dist/workflows/index.js')}).then(b=>{fs.writeFileSync('workflow-bundle.js',b.code);console.log('Workflow bundle created')})\"",
|
|
59
|
-
"build:scripts": "tsc -p scripts/tsconfig.json",
|
|
60
|
-
"build:dashboard": "npm --prefix dashboard ci && npm --prefix dashboard run build",
|
|
61
|
-
"size-limit": "size-limit",
|
|
62
|
-
"prepack": "node scripts/strip-mock-adapter.js",
|
|
63
|
-
"verify-tarball": "node scripts/verify-tarball.js",
|
|
64
|
-
"prepublishOnly": "npm run build && npm test && npm run verify-tarball",
|
|
65
|
-
"dev": "ts-node src/server.ts",
|
|
66
|
-
"copilot-bridge": "ts-node src/adapters/copilot/adapter.ts",
|
|
67
|
-
"clean:test": "node -e \"require('fs').rmSync('dist-test',{recursive:true,force:true})\"",
|
|
68
|
-
"build:test": "npm run clean:test && tsc -p test/tsconfig.json",
|
|
69
|
-
"pretest": "npm run build:test",
|
|
70
|
-
"test:tui": "vitest run",
|
|
71
|
-
"test:conformance": "npm run build:test && mocha --config .mocharc.conformance.yml",
|
|
72
|
-
"pretest:shard-1": "npm run build:test && npm run build:scripts",
|
|
73
|
-
"test:shard-1": "node dist/scripts/run-shard.js 1",
|
|
74
|
-
"pretest:shard-2": "npm run build:test && npm run build:scripts",
|
|
75
|
-
"test:shard-2": "node dist/scripts/run-shard.js 2",
|
|
76
|
-
"test": "mocha && vitest run",
|
|
77
|
-
"lint:surface-drift": "node scripts/check-surface-drift.js",
|
|
78
|
-
"lint:no-stale-scaffold": "node scripts/check-no-stale-scaffold.js",
|
|
79
|
-
"lint:test-ensemble-literals": "bash scripts/check-test-ensemble-literals.sh",
|
|
80
|
-
"lint:skip-reasons": "node scripts/lint-skip-reasons.js",
|
|
81
|
-
"lint:lockstep-version": "node -e \"const r=require('./package.json').version,d=require('./dashboard/package.json').version;if(r!==d){console.error('Version drift: root='+r+' dashboard='+d+'. Bump dashboard/package.json#version to match root.');process.exit(1);}console.log('Lockstep OK: '+r);\"",
|
|
82
|
-
"lint:lockfile-canonical": "bash scripts/check-lockfile-canonical.sh",
|
|
83
|
-
"lint:dashboard-css-sync": "npm run build:scripts && node dist/scripts/check-components-css-sync.js",
|
|
84
|
-
"check:all": "npm run lint:test-ensemble-literals && npm run lint:skip-reasons && npm run lint:lockstep-version && npm run lint:lockfile-canonical && npm run lint:surface-drift && npm run lint:no-stale-scaffold && npm run build && npm run lint:dashboard-css-sync && npm test && npm --prefix dashboard run lint && npm --prefix dashboard run test && npm run size-limit && npm run verify-tarball"
|
|
85
|
-
},
|
|
86
|
-
"optionalDependencies": {
|
|
87
|
-
"@
|
|
88
|
-
"@
|
|
89
|
-
"@
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"@
|
|
95
|
-
"@temporalio/
|
|
96
|
-
"@temporalio/
|
|
97
|
-
"@temporalio/
|
|
98
|
-
"@temporalio/
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"ink
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
"
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
"@
|
|
115
|
-
"@
|
|
116
|
-
"@types/
|
|
117
|
-
"@types/
|
|
118
|
-
"
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
"
|
|
133
|
-
"dist/
|
|
134
|
-
],
|
|
135
|
-
"
|
|
136
|
-
"dist/
|
|
137
|
-
],
|
|
138
|
-
"
|
|
139
|
-
"dist/
|
|
140
|
-
],
|
|
141
|
-
"
|
|
142
|
-
"dist/
|
|
143
|
-
],
|
|
144
|
-
"
|
|
145
|
-
"dist/
|
|
146
|
-
]
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"
|
|
159
|
-
"
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
"
|
|
163
|
-
|
|
164
|
-
"
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
"
|
|
171
|
-
|
|
172
|
-
"
|
|
173
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-tempo",
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "Many agents, one tempo. Durable coordination for multi-agent work via Temporal.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mcp",
|
|
7
|
+
"claude",
|
|
8
|
+
"temporal",
|
|
9
|
+
"multi-agent",
|
|
10
|
+
"orchestration",
|
|
11
|
+
"claude-code"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/vinceblank/agent-tempo",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/vinceblank/agent-tempo/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/vinceblank/agent-tempo.git"
|
|
20
|
+
},
|
|
21
|
+
"types": "./dist/server.d.ts",
|
|
22
|
+
"type": "commonjs",
|
|
23
|
+
"main": "dist/server.js",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": "./dist/server.js",
|
|
26
|
+
"./types": {
|
|
27
|
+
"types": "./dist/types.d.ts",
|
|
28
|
+
"default": "./dist/types.js"
|
|
29
|
+
},
|
|
30
|
+
"./config": {
|
|
31
|
+
"types": "./dist/config.d.ts",
|
|
32
|
+
"default": "./dist/config.js"
|
|
33
|
+
},
|
|
34
|
+
"./spawn": {
|
|
35
|
+
"types": "./dist/spawn.d.ts",
|
|
36
|
+
"default": "./dist/spawn.js"
|
|
37
|
+
},
|
|
38
|
+
"./signals": {
|
|
39
|
+
"types": "./dist/workflows/signals.d.ts",
|
|
40
|
+
"default": "./dist/workflows/signals.js"
|
|
41
|
+
},
|
|
42
|
+
"./connection": {
|
|
43
|
+
"types": "./dist/connection.d.ts",
|
|
44
|
+
"default": "./dist/connection.js"
|
|
45
|
+
},
|
|
46
|
+
"./palette": {
|
|
47
|
+
"types": "./dist/palette/index.d.ts",
|
|
48
|
+
"default": "./dist/palette/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./workflow-bundle": "./workflow-bundle.js",
|
|
51
|
+
"./package.json": "./package.json"
|
|
52
|
+
},
|
|
53
|
+
"bin": {
|
|
54
|
+
"agent-tempo": "dist/cli.js",
|
|
55
|
+
"agent-tempo-server": "dist/server.js"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "tsc && npm run build:scripts && npm run build:dashboard && node -e \"const{bundleWorkflowCode}=require('@temporalio/worker');const path=require('path');const fs=require('fs');bundleWorkflowCode({workflowsPath:path.resolve('dist/workflows/index.js')}).then(b=>{fs.writeFileSync('workflow-bundle.js',b.code);console.log('Workflow bundle created')})\"",
|
|
59
|
+
"build:scripts": "tsc -p scripts/tsconfig.json",
|
|
60
|
+
"build:dashboard": "npm --prefix dashboard ci && npm --prefix dashboard run build",
|
|
61
|
+
"size-limit": "size-limit",
|
|
62
|
+
"prepack": "node scripts/strip-mock-adapter.js",
|
|
63
|
+
"verify-tarball": "node scripts/verify-tarball.js",
|
|
64
|
+
"prepublishOnly": "npm run build && npm test && npm run verify-tarball",
|
|
65
|
+
"dev": "ts-node src/server.ts",
|
|
66
|
+
"copilot-bridge": "ts-node src/adapters/copilot/adapter.ts",
|
|
67
|
+
"clean:test": "node -e \"require('fs').rmSync('dist-test',{recursive:true,force:true})\"",
|
|
68
|
+
"build:test": "npm run clean:test && tsc -p test/tsconfig.json",
|
|
69
|
+
"pretest": "npm run build:test",
|
|
70
|
+
"test:tui": "vitest run",
|
|
71
|
+
"test:conformance": "npm run build:test && mocha --config .mocharc.conformance.yml",
|
|
72
|
+
"pretest:shard-1": "npm run build:test && npm run build:scripts",
|
|
73
|
+
"test:shard-1": "node dist/scripts/run-shard.js 1",
|
|
74
|
+
"pretest:shard-2": "npm run build:test && npm run build:scripts",
|
|
75
|
+
"test:shard-2": "node dist/scripts/run-shard.js 2",
|
|
76
|
+
"test": "mocha && vitest run",
|
|
77
|
+
"lint:surface-drift": "node scripts/check-surface-drift.js",
|
|
78
|
+
"lint:no-stale-scaffold": "node scripts/check-no-stale-scaffold.js",
|
|
79
|
+
"lint:test-ensemble-literals": "bash scripts/check-test-ensemble-literals.sh",
|
|
80
|
+
"lint:skip-reasons": "node scripts/lint-skip-reasons.js",
|
|
81
|
+
"lint:lockstep-version": "node -e \"const r=require('./package.json').version,d=require('./dashboard/package.json').version;if(r!==d){console.error('Version drift: root='+r+' dashboard='+d+'. Bump dashboard/package.json#version to match root.');process.exit(1);}console.log('Lockstep OK: '+r);\"",
|
|
82
|
+
"lint:lockfile-canonical": "bash scripts/check-lockfile-canonical.sh",
|
|
83
|
+
"lint:dashboard-css-sync": "npm run build:scripts && node dist/scripts/check-components-css-sync.js",
|
|
84
|
+
"check:all": "npm run lint:test-ensemble-literals && npm run lint:skip-reasons && npm run lint:lockstep-version && npm run lint:lockfile-canonical && npm run lint:surface-drift && npm run lint:no-stale-scaffold && npm run build && npm run lint:dashboard-css-sync && npm test && npm --prefix dashboard run lint && npm --prefix dashboard run test && npm run size-limit && npm run verify-tarball"
|
|
85
|
+
},
|
|
86
|
+
"optionalDependencies": {
|
|
87
|
+
"@anthropic-ai/sdk": "~0.91.1",
|
|
88
|
+
"@earendil-works/pi-ai": "~0.78",
|
|
89
|
+
"@earendil-works/pi-coding-agent": "~0.78",
|
|
90
|
+
"@github/copilot-sdk": "1.0.0-beta.6",
|
|
91
|
+
"@opencode-ai/sdk": "~1.14.29"
|
|
92
|
+
},
|
|
93
|
+
"dependencies": {
|
|
94
|
+
"@modelcontextprotocol/sdk": "~1.28.0",
|
|
95
|
+
"@temporalio/activity": "~1.15.0",
|
|
96
|
+
"@temporalio/client": "~1.15.0",
|
|
97
|
+
"@temporalio/common": "~1.15.0",
|
|
98
|
+
"@temporalio/proto": "~1.15.0",
|
|
99
|
+
"@temporalio/worker": "~1.15.0",
|
|
100
|
+
"@temporalio/workflow": "~1.15.0",
|
|
101
|
+
"croner": "^10.0.1",
|
|
102
|
+
"ink": "^6.8.0",
|
|
103
|
+
"ink-spinner": "^5.0.0",
|
|
104
|
+
"ink-text-input": "^6.0.0",
|
|
105
|
+
"p-limit": "^3.1.0",
|
|
106
|
+
"qrcode-terminal": "^0.12.0",
|
|
107
|
+
"react": "^19.2.4",
|
|
108
|
+
"semver": "^7.7.4",
|
|
109
|
+
"typebox": "^1.0.1",
|
|
110
|
+
"yaml": "^2.8.3",
|
|
111
|
+
"zod": "~3.25.76"
|
|
112
|
+
},
|
|
113
|
+
"devDependencies": {
|
|
114
|
+
"@size-limit/preset-app": "^12.1.0",
|
|
115
|
+
"@temporalio/testing": "~1.15.0",
|
|
116
|
+
"@types/chai": "^4.3.20",
|
|
117
|
+
"@types/mocha": "^10.0.10",
|
|
118
|
+
"@types/node": "^20.0.0",
|
|
119
|
+
"@types/react": "^19.2.14",
|
|
120
|
+
"@types/semver": "^7.7.1",
|
|
121
|
+
"chai": "^4.5.0",
|
|
122
|
+
"mocha": "^11.7.5",
|
|
123
|
+
"size-limit": "^12.1.0",
|
|
124
|
+
"ts-morph": "^28.0.0",
|
|
125
|
+
"ts-node": "^10.9.0",
|
|
126
|
+
"tsx": "^4.21.0",
|
|
127
|
+
"typescript": "^5.5.0",
|
|
128
|
+
"vitest": "^2.1.9"
|
|
129
|
+
},
|
|
130
|
+
"typesVersions": {
|
|
131
|
+
"*": {
|
|
132
|
+
"types": [
|
|
133
|
+
"dist/types.d.ts"
|
|
134
|
+
],
|
|
135
|
+
"config": [
|
|
136
|
+
"dist/config.d.ts"
|
|
137
|
+
],
|
|
138
|
+
"spawn": [
|
|
139
|
+
"dist/spawn.d.ts"
|
|
140
|
+
],
|
|
141
|
+
"signals": [
|
|
142
|
+
"dist/workflows/signals.d.ts"
|
|
143
|
+
],
|
|
144
|
+
"connection": [
|
|
145
|
+
"dist/connection.d.ts"
|
|
146
|
+
],
|
|
147
|
+
"palette": [
|
|
148
|
+
"dist/palette/index.d.ts"
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"files": [
|
|
153
|
+
"dist",
|
|
154
|
+
"workflow-bundle.js",
|
|
155
|
+
"assets",
|
|
156
|
+
"examples",
|
|
157
|
+
"packaging",
|
|
158
|
+
"scenarios",
|
|
159
|
+
"dashboard/dist",
|
|
160
|
+
"dashboard/package.json",
|
|
161
|
+
"CLAUDE.md",
|
|
162
|
+
"README.md"
|
|
163
|
+
],
|
|
164
|
+
"engines": {
|
|
165
|
+
"node": ">=20"
|
|
166
|
+
},
|
|
167
|
+
"license": "MIT",
|
|
168
|
+
"trustedDependencies": [
|
|
169
|
+
"@swc/core",
|
|
170
|
+
"protobufjs"
|
|
171
|
+
],
|
|
172
|
+
"overrides": {
|
|
173
|
+
"rxjs": "^7.8.1"
|
|
174
|
+
},
|
|
175
|
+
"packageManager": "npm@10.9.2"
|
|
176
|
+
}
|