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
package/package.json
CHANGED
|
@@ -1,173 +1,173 @@
|
|
|
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
|
-
"@opencode-ai/sdk": "~1.14.29"
|
|
90
|
-
},
|
|
91
|
-
"dependencies": {
|
|
92
|
-
"@modelcontextprotocol/sdk": "~1.28.0",
|
|
93
|
-
"@temporalio/activity": "~1.15.0",
|
|
94
|
-
"@temporalio/client": "~1.15.0",
|
|
95
|
-
"@temporalio/common": "~1.15.0",
|
|
96
|
-
"@temporalio/proto": "~1.15.0",
|
|
97
|
-
"@temporalio/worker": "~1.15.0",
|
|
98
|
-
"@temporalio/workflow": "~1.15.0",
|
|
99
|
-
"croner": "^10.0.1",
|
|
100
|
-
"ink": "^6.8.0",
|
|
101
|
-
"ink-spinner": "^5.0.0",
|
|
102
|
-
"ink-text-input": "^6.0.0",
|
|
103
|
-
"p-limit": "^3.1.0",
|
|
104
|
-
"qrcode-terminal": "^0.12.0",
|
|
105
|
-
"react": "^19.2.4",
|
|
106
|
-
"semver": "^7.7.4",
|
|
107
|
-
"yaml": "^2.8.3",
|
|
108
|
-
"zod": "~3.25.76"
|
|
109
|
-
},
|
|
110
|
-
"devDependencies": {
|
|
111
|
-
"@size-limit/preset-app": "^12.1.0",
|
|
112
|
-
"@temporalio/testing": "~1.15.0",
|
|
113
|
-
"@types/chai": "^4.3.20",
|
|
114
|
-
"@types/mocha": "^10.0.10",
|
|
115
|
-
"@types/node": "^20.0.0",
|
|
116
|
-
"@types/react": "^19.2.14",
|
|
117
|
-
"@types/semver": "^7.7.1",
|
|
118
|
-
"chai": "^4.5.0",
|
|
119
|
-
"mocha": "^11.7.5",
|
|
120
|
-
"size-limit": "^12.1.0",
|
|
121
|
-
"ts-morph": "^28.0.0",
|
|
122
|
-
"ts-node": "^10.9.0",
|
|
123
|
-
"tsx": "^4.21.0",
|
|
124
|
-
"typescript": "^5.5.0",
|
|
125
|
-
"vitest": "^2.1.9"
|
|
126
|
-
},
|
|
127
|
-
"typesVersions": {
|
|
128
|
-
"*": {
|
|
129
|
-
"types": [
|
|
130
|
-
"dist/types.d.ts"
|
|
131
|
-
],
|
|
132
|
-
"config": [
|
|
133
|
-
"dist/config.d.ts"
|
|
134
|
-
],
|
|
135
|
-
"spawn": [
|
|
136
|
-
"dist/spawn.d.ts"
|
|
137
|
-
],
|
|
138
|
-
"signals": [
|
|
139
|
-
"dist/workflows/signals.d.ts"
|
|
140
|
-
],
|
|
141
|
-
"connection": [
|
|
142
|
-
"dist/connection.d.ts"
|
|
143
|
-
],
|
|
144
|
-
"palette": [
|
|
145
|
-
"dist/palette/index.d.ts"
|
|
146
|
-
]
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
"files": [
|
|
150
|
-
"dist",
|
|
151
|
-
"workflow-bundle.js",
|
|
152
|
-
"assets",
|
|
153
|
-
"examples",
|
|
154
|
-
"packaging",
|
|
155
|
-
"scenarios",
|
|
156
|
-
"dashboard/dist",
|
|
157
|
-
"dashboard/package.json",
|
|
158
|
-
"CLAUDE.md",
|
|
159
|
-
"README.md"
|
|
160
|
-
],
|
|
161
|
-
"engines": {
|
|
162
|
-
"node": ">=20"
|
|
163
|
-
},
|
|
164
|
-
"license": "MIT",
|
|
165
|
-
"trustedDependencies": [
|
|
166
|
-
"@swc/core",
|
|
167
|
-
"protobufjs"
|
|
168
|
-
],
|
|
169
|
-
"overrides": {
|
|
170
|
-
"rxjs": "^7.8.1"
|
|
171
|
-
},
|
|
172
|
-
"packageManager": "npm@10.9.2"
|
|
173
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-tempo",
|
|
3
|
+
"version": "1.3.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
|
+
"@anthropic-ai/sdk": "~0.91.1",
|
|
88
|
+
"@github/copilot-sdk": "1.0.0-beta.6",
|
|
89
|
+
"@opencode-ai/sdk": "~1.14.29"
|
|
90
|
+
},
|
|
91
|
+
"dependencies": {
|
|
92
|
+
"@modelcontextprotocol/sdk": "~1.28.0",
|
|
93
|
+
"@temporalio/activity": "~1.15.0",
|
|
94
|
+
"@temporalio/client": "~1.15.0",
|
|
95
|
+
"@temporalio/common": "~1.15.0",
|
|
96
|
+
"@temporalio/proto": "~1.15.0",
|
|
97
|
+
"@temporalio/worker": "~1.15.0",
|
|
98
|
+
"@temporalio/workflow": "~1.15.0",
|
|
99
|
+
"croner": "^10.0.1",
|
|
100
|
+
"ink": "^6.8.0",
|
|
101
|
+
"ink-spinner": "^5.0.0",
|
|
102
|
+
"ink-text-input": "^6.0.0",
|
|
103
|
+
"p-limit": "^3.1.0",
|
|
104
|
+
"qrcode-terminal": "^0.12.0",
|
|
105
|
+
"react": "^19.2.4",
|
|
106
|
+
"semver": "^7.7.4",
|
|
107
|
+
"yaml": "^2.8.3",
|
|
108
|
+
"zod": "~3.25.76"
|
|
109
|
+
},
|
|
110
|
+
"devDependencies": {
|
|
111
|
+
"@size-limit/preset-app": "^12.1.0",
|
|
112
|
+
"@temporalio/testing": "~1.15.0",
|
|
113
|
+
"@types/chai": "^4.3.20",
|
|
114
|
+
"@types/mocha": "^10.0.10",
|
|
115
|
+
"@types/node": "^20.0.0",
|
|
116
|
+
"@types/react": "^19.2.14",
|
|
117
|
+
"@types/semver": "^7.7.1",
|
|
118
|
+
"chai": "^4.5.0",
|
|
119
|
+
"mocha": "^11.7.5",
|
|
120
|
+
"size-limit": "^12.1.0",
|
|
121
|
+
"ts-morph": "^28.0.0",
|
|
122
|
+
"ts-node": "^10.9.0",
|
|
123
|
+
"tsx": "^4.21.0",
|
|
124
|
+
"typescript": "^5.5.0",
|
|
125
|
+
"vitest": "^2.1.9"
|
|
126
|
+
},
|
|
127
|
+
"typesVersions": {
|
|
128
|
+
"*": {
|
|
129
|
+
"types": [
|
|
130
|
+
"dist/types.d.ts"
|
|
131
|
+
],
|
|
132
|
+
"config": [
|
|
133
|
+
"dist/config.d.ts"
|
|
134
|
+
],
|
|
135
|
+
"spawn": [
|
|
136
|
+
"dist/spawn.d.ts"
|
|
137
|
+
],
|
|
138
|
+
"signals": [
|
|
139
|
+
"dist/workflows/signals.d.ts"
|
|
140
|
+
],
|
|
141
|
+
"connection": [
|
|
142
|
+
"dist/connection.d.ts"
|
|
143
|
+
],
|
|
144
|
+
"palette": [
|
|
145
|
+
"dist/palette/index.d.ts"
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"files": [
|
|
150
|
+
"dist",
|
|
151
|
+
"workflow-bundle.js",
|
|
152
|
+
"assets",
|
|
153
|
+
"examples",
|
|
154
|
+
"packaging",
|
|
155
|
+
"scenarios",
|
|
156
|
+
"dashboard/dist",
|
|
157
|
+
"dashboard/package.json",
|
|
158
|
+
"CLAUDE.md",
|
|
159
|
+
"README.md"
|
|
160
|
+
],
|
|
161
|
+
"engines": {
|
|
162
|
+
"node": ">=20"
|
|
163
|
+
},
|
|
164
|
+
"license": "MIT",
|
|
165
|
+
"trustedDependencies": [
|
|
166
|
+
"@swc/core",
|
|
167
|
+
"protobufjs"
|
|
168
|
+
],
|
|
169
|
+
"overrides": {
|
|
170
|
+
"rxjs": "^7.8.1"
|
|
171
|
+
},
|
|
172
|
+
"packageManager": "npm@10.9.2"
|
|
173
|
+
}
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!--
|
|
3
|
-
agent-tempo daemon — launchd user agent.
|
|
4
|
-
|
|
5
|
-
NOTE: macOS launchd integration ships best-effort untested in v0.25.0-beta.1
|
|
6
|
-
(PR-E §8 answer 4). Feedback welcome at https://github.com/vinceblank/agent-tempo/issues.
|
|
7
|
-
|
|
8
|
-
Installed to ~/Library/LaunchAgents/com.agent.tempo.plist by
|
|
9
|
-
`agent-tempo daemon install`. Load with:
|
|
10
|
-
|
|
11
|
-
launchctl load ~/Library/LaunchAgents/com.agent.tempo.plist
|
|
12
|
-
|
|
13
|
-
User-level only (no sudo). `RunAtLoad` + `KeepAlive` bounce the daemon
|
|
14
|
-
if it crashes; `ThrottleInterval` guards against restart loops.
|
|
15
|
-
-->
|
|
16
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
17
|
-
<plist version="1.0">
|
|
18
|
-
<dict>
|
|
19
|
-
<key>Label</key>
|
|
20
|
-
<string>com.agent.tempo</string>
|
|
21
|
-
|
|
22
|
-
<key>ProgramArguments</key>
|
|
23
|
-
<array>
|
|
24
|
-
<string>/usr/bin/env</string>
|
|
25
|
-
<string>agent-tempo</string>
|
|
26
|
-
<string>daemon</string>
|
|
27
|
-
<string>start</string>
|
|
28
|
-
<string>--foreground</string>
|
|
29
|
-
</array>
|
|
30
|
-
|
|
31
|
-
<key>RunAtLoad</key>
|
|
32
|
-
<true/>
|
|
33
|
-
|
|
34
|
-
<key>KeepAlive</key>
|
|
35
|
-
<true/>
|
|
36
|
-
|
|
37
|
-
<key>ThrottleInterval</key>
|
|
38
|
-
<integer>10</integer>
|
|
39
|
-
|
|
40
|
-
<key>StandardOutPath</key>
|
|
41
|
-
<string>/tmp/agent-tempo-daemon.stdout.log</string>
|
|
42
|
-
|
|
43
|
-
<key>StandardErrorPath</key>
|
|
44
|
-
<string>/tmp/agent-tempo-daemon.stderr.log</string>
|
|
45
|
-
</dict>
|
|
46
|
-
</plist>
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
agent-tempo daemon — launchd user agent.
|
|
4
|
+
|
|
5
|
+
NOTE: macOS launchd integration ships best-effort untested in v0.25.0-beta.1
|
|
6
|
+
(PR-E §8 answer 4). Feedback welcome at https://github.com/vinceblank/agent-tempo/issues.
|
|
7
|
+
|
|
8
|
+
Installed to ~/Library/LaunchAgents/com.agent.tempo.plist by
|
|
9
|
+
`agent-tempo daemon install`. Load with:
|
|
10
|
+
|
|
11
|
+
launchctl load ~/Library/LaunchAgents/com.agent.tempo.plist
|
|
12
|
+
|
|
13
|
+
User-level only (no sudo). `RunAtLoad` + `KeepAlive` bounce the daemon
|
|
14
|
+
if it crashes; `ThrottleInterval` guards against restart loops.
|
|
15
|
+
-->
|
|
16
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
17
|
+
<plist version="1.0">
|
|
18
|
+
<dict>
|
|
19
|
+
<key>Label</key>
|
|
20
|
+
<string>com.agent.tempo</string>
|
|
21
|
+
|
|
22
|
+
<key>ProgramArguments</key>
|
|
23
|
+
<array>
|
|
24
|
+
<string>/usr/bin/env</string>
|
|
25
|
+
<string>agent-tempo</string>
|
|
26
|
+
<string>daemon</string>
|
|
27
|
+
<string>start</string>
|
|
28
|
+
<string>--foreground</string>
|
|
29
|
+
</array>
|
|
30
|
+
|
|
31
|
+
<key>RunAtLoad</key>
|
|
32
|
+
<true/>
|
|
33
|
+
|
|
34
|
+
<key>KeepAlive</key>
|
|
35
|
+
<true/>
|
|
36
|
+
|
|
37
|
+
<key>ThrottleInterval</key>
|
|
38
|
+
<integer>10</integer>
|
|
39
|
+
|
|
40
|
+
<key>StandardOutPath</key>
|
|
41
|
+
<string>/tmp/agent-tempo-daemon.stdout.log</string>
|
|
42
|
+
|
|
43
|
+
<key>StandardErrorPath</key>
|
|
44
|
+
<string>/tmp/agent-tempo-daemon.stderr.log</string>
|
|
45
|
+
</dict>
|
|
46
|
+
</plist>
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# agent-tempo daemon — systemd --user unit
|
|
2
|
-
#
|
|
3
|
-
# Installed to ~/.config/systemd/user/agent-tempo.service by
|
|
4
|
-
# `agent-tempo daemon install`. Enable with:
|
|
5
|
-
#
|
|
6
|
-
# systemctl --user daemon-reload
|
|
7
|
-
# systemctl --user enable --now agent-tempo
|
|
8
|
-
#
|
|
9
|
-
# User-level only (no sudo). The daemon process claims
|
|
10
|
-
# ~/.agent-tempo/daemon.pid; systemd restarts on crash.
|
|
11
|
-
#
|
|
12
|
-
# Environment variables (Temporal connection overrides) can be added via
|
|
13
|
-
# EnvironmentFile or Environment= lines here — by default the daemon reads
|
|
14
|
-
# ~/.agent-tempo/config.json or falls back to temporal CLI config.
|
|
15
|
-
|
|
16
|
-
[Unit]
|
|
17
|
-
Description=agent-tempo daemon (Temporal workers + reconcile loop)
|
|
18
|
-
After=network-online.target
|
|
19
|
-
Wants=network-online.target
|
|
20
|
-
|
|
21
|
-
[Service]
|
|
22
|
-
Type=simple
|
|
23
|
-
ExecStart=/usr/bin/env agent-tempo daemon start --foreground
|
|
24
|
-
ExecStop=/usr/bin/env agent-tempo daemon stop
|
|
25
|
-
Restart=on-failure
|
|
26
|
-
RestartSec=10s
|
|
27
|
-
# Prevent runaway restart loops from a broken config file.
|
|
28
|
-
StartLimitIntervalSec=120
|
|
29
|
-
StartLimitBurst=5
|
|
30
|
-
|
|
31
|
-
[Install]
|
|
32
|
-
WantedBy=default.target
|
|
1
|
+
# agent-tempo daemon — systemd --user unit
|
|
2
|
+
#
|
|
3
|
+
# Installed to ~/.config/systemd/user/agent-tempo.service by
|
|
4
|
+
# `agent-tempo daemon install`. Enable with:
|
|
5
|
+
#
|
|
6
|
+
# systemctl --user daemon-reload
|
|
7
|
+
# systemctl --user enable --now agent-tempo
|
|
8
|
+
#
|
|
9
|
+
# User-level only (no sudo). The daemon process claims
|
|
10
|
+
# ~/.agent-tempo/daemon.pid; systemd restarts on crash.
|
|
11
|
+
#
|
|
12
|
+
# Environment variables (Temporal connection overrides) can be added via
|
|
13
|
+
# EnvironmentFile or Environment= lines here — by default the daemon reads
|
|
14
|
+
# ~/.agent-tempo/config.json or falls back to temporal CLI config.
|
|
15
|
+
|
|
16
|
+
[Unit]
|
|
17
|
+
Description=agent-tempo daemon (Temporal workers + reconcile loop)
|
|
18
|
+
After=network-online.target
|
|
19
|
+
Wants=network-online.target
|
|
20
|
+
|
|
21
|
+
[Service]
|
|
22
|
+
Type=simple
|
|
23
|
+
ExecStart=/usr/bin/env agent-tempo daemon start --foreground
|
|
24
|
+
ExecStop=/usr/bin/env agent-tempo daemon stop
|
|
25
|
+
Restart=on-failure
|
|
26
|
+
RestartSec=10s
|
|
27
|
+
# Prevent runaway restart loops from a broken config file.
|
|
28
|
+
StartLimitIntervalSec=120
|
|
29
|
+
StartLimitBurst=5
|
|
30
|
+
|
|
31
|
+
[Install]
|
|
32
|
+
WantedBy=default.target
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
# agent-tempo daemon — Windows Task Scheduler install script
|
|
2
|
-
#
|
|
3
|
-
# Registers a per-user scheduled task that starts the daemon at logon and
|
|
4
|
-
# keeps it running. User-level only (current user scope; does not require
|
|
5
|
-
# Administrator).
|
|
6
|
-
#
|
|
7
|
-
# Usage:
|
|
8
|
-
# powershell -File install-task.ps1 # install (idempotent)
|
|
9
|
-
# powershell -File install-task.ps1 -Uninstall # remove
|
|
10
|
-
|
|
11
|
-
param(
|
|
12
|
-
[switch]$Uninstall
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
$TaskName = 'agent-tempo-daemon'
|
|
16
|
-
$TaskDescription = 'agent-tempo daemon — Temporal workers + reconcile loop'
|
|
17
|
-
|
|
18
|
-
if ($Uninstall) {
|
|
19
|
-
$existing = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
20
|
-
if ($existing) {
|
|
21
|
-
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
|
|
22
|
-
Write-Output "Unregistered scheduled task: $TaskName"
|
|
23
|
-
} else {
|
|
24
|
-
Write-Output "No scheduled task named $TaskName was registered."
|
|
25
|
-
}
|
|
26
|
-
exit 0
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
# Resolve agent-tempo.cmd (the npm-installed shim on PATH).
|
|
30
|
-
$claudeTempo = (Get-Command agent-tempo -ErrorAction SilentlyContinue).Source
|
|
31
|
-
if (-not $claudeTempo) {
|
|
32
|
-
Write-Error "agent-tempo not found on PATH. Install it first (`npm i -g agent-tempo`)."
|
|
33
|
-
exit 1
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
# Replace any prior registration so re-runs are idempotent.
|
|
37
|
-
$existing = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
38
|
-
if ($existing) {
|
|
39
|
-
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
$action = New-ScheduledTaskAction `
|
|
43
|
-
-Execute $claudeTempo `
|
|
44
|
-
-Argument 'daemon start --foreground'
|
|
45
|
-
|
|
46
|
-
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
|
|
47
|
-
|
|
48
|
-
$settings = New-ScheduledTaskSettingsSet `
|
|
49
|
-
-AllowStartIfOnBatteries `
|
|
50
|
-
-DontStopIfGoingOnBatteries `
|
|
51
|
-
-StartWhenAvailable `
|
|
52
|
-
-RestartCount 3 `
|
|
53
|
-
-RestartInterval (New-TimeSpan -Minutes 1)
|
|
54
|
-
|
|
55
|
-
$principal = New-ScheduledTaskPrincipal `
|
|
56
|
-
-UserId $env:USERNAME `
|
|
57
|
-
-LogonType Interactive `
|
|
58
|
-
-RunLevel Limited
|
|
59
|
-
|
|
60
|
-
Register-ScheduledTask `
|
|
61
|
-
-TaskName $TaskName `
|
|
62
|
-
-Description $TaskDescription `
|
|
63
|
-
-Action $action `
|
|
64
|
-
-Trigger $trigger `
|
|
65
|
-
-Settings $settings `
|
|
66
|
-
-Principal $principal | Out-Null
|
|
67
|
-
|
|
68
|
-
Write-Output "Registered scheduled task: $TaskName"
|
|
69
|
-
Write-Output " Exec: $claudeTempo daemon start --foreground"
|
|
70
|
-
Write-Output " User: $env:USERNAME (Interactive, limited)"
|
|
71
|
-
Write-Output " Trigger: at logon"
|
|
1
|
+
# agent-tempo daemon — Windows Task Scheduler install script
|
|
2
|
+
#
|
|
3
|
+
# Registers a per-user scheduled task that starts the daemon at logon and
|
|
4
|
+
# keeps it running. User-level only (current user scope; does not require
|
|
5
|
+
# Administrator).
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# powershell -File install-task.ps1 # install (idempotent)
|
|
9
|
+
# powershell -File install-task.ps1 -Uninstall # remove
|
|
10
|
+
|
|
11
|
+
param(
|
|
12
|
+
[switch]$Uninstall
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
$TaskName = 'agent-tempo-daemon'
|
|
16
|
+
$TaskDescription = 'agent-tempo daemon — Temporal workers + reconcile loop'
|
|
17
|
+
|
|
18
|
+
if ($Uninstall) {
|
|
19
|
+
$existing = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
20
|
+
if ($existing) {
|
|
21
|
+
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
|
|
22
|
+
Write-Output "Unregistered scheduled task: $TaskName"
|
|
23
|
+
} else {
|
|
24
|
+
Write-Output "No scheduled task named $TaskName was registered."
|
|
25
|
+
}
|
|
26
|
+
exit 0
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# Resolve agent-tempo.cmd (the npm-installed shim on PATH).
|
|
30
|
+
$claudeTempo = (Get-Command agent-tempo -ErrorAction SilentlyContinue).Source
|
|
31
|
+
if (-not $claudeTempo) {
|
|
32
|
+
Write-Error "agent-tempo not found on PATH. Install it first (`npm i -g agent-tempo`)."
|
|
33
|
+
exit 1
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Replace any prior registration so re-runs are idempotent.
|
|
37
|
+
$existing = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
|
|
38
|
+
if ($existing) {
|
|
39
|
+
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
$action = New-ScheduledTaskAction `
|
|
43
|
+
-Execute $claudeTempo `
|
|
44
|
+
-Argument 'daemon start --foreground'
|
|
45
|
+
|
|
46
|
+
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
|
|
47
|
+
|
|
48
|
+
$settings = New-ScheduledTaskSettingsSet `
|
|
49
|
+
-AllowStartIfOnBatteries `
|
|
50
|
+
-DontStopIfGoingOnBatteries `
|
|
51
|
+
-StartWhenAvailable `
|
|
52
|
+
-RestartCount 3 `
|
|
53
|
+
-RestartInterval (New-TimeSpan -Minutes 1)
|
|
54
|
+
|
|
55
|
+
$principal = New-ScheduledTaskPrincipal `
|
|
56
|
+
-UserId $env:USERNAME `
|
|
57
|
+
-LogonType Interactive `
|
|
58
|
+
-RunLevel Limited
|
|
59
|
+
|
|
60
|
+
Register-ScheduledTask `
|
|
61
|
+
-TaskName $TaskName `
|
|
62
|
+
-Description $TaskDescription `
|
|
63
|
+
-Action $action `
|
|
64
|
+
-Trigger $trigger `
|
|
65
|
+
-Settings $settings `
|
|
66
|
+
-Principal $principal | Out-Null
|
|
67
|
+
|
|
68
|
+
Write-Output "Registered scheduled task: $TaskName"
|
|
69
|
+
Write-Output " Exec: $claudeTempo daemon start --foreground"
|
|
70
|
+
Write-Output " User: $env:USERNAME (Interactive, limited)"
|
|
71
|
+
Write-Output " Trigger: at logon"
|