agent-relay 2.3.4 → 2.3.6

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.
Files changed (297) hide show
  1. package/README.md +1 -1
  2. package/dist/src/cli/index.js +124 -7
  3. package/dist/src/cli/index.js.map +1 -1
  4. package/package.json +23 -26
  5. package/packages/acp-bridge/package.json +2 -2
  6. package/packages/bridge/package.json +7 -7
  7. package/packages/config/package.json +2 -2
  8. package/packages/continuity/package.json +2 -2
  9. package/packages/daemon/package.json +12 -12
  10. package/packages/hooks/package.json +4 -4
  11. package/packages/mcp/package.json +5 -5
  12. package/packages/memory/package.json +2 -2
  13. package/packages/policy/package.json +2 -2
  14. package/packages/protocol/package.json +1 -1
  15. package/packages/resiliency/package.json +1 -1
  16. package/packages/sdk/dist/index.d.ts +1 -29
  17. package/packages/sdk/dist/index.d.ts.map +1 -1
  18. package/packages/sdk/dist/index.js +1 -38
  19. package/packages/sdk/dist/index.js.map +1 -1
  20. package/packages/sdk/package.json +4 -25
  21. package/packages/sdk/src/index.ts +1 -69
  22. package/packages/sdk-py/README.md +56 -0
  23. package/packages/sdk-py/pyproject.toml +23 -0
  24. package/packages/sdk-py/src/agent_relay/__init__.py +27 -0
  25. package/packages/sdk-py/src/agent_relay/builder.py +367 -0
  26. package/packages/sdk-py/src/agent_relay/types.py +92 -0
  27. package/packages/sdk-py/tests/__init__.py +0 -0
  28. package/packages/sdk-py/tests/test_builder.py +101 -0
  29. package/packages/sdk-ts/dist/index.d.ts +1 -0
  30. package/packages/sdk-ts/dist/index.d.ts.map +1 -1
  31. package/packages/sdk-ts/dist/index.js +1 -0
  32. package/packages/sdk-ts/dist/index.js.map +1 -1
  33. package/packages/sdk-ts/dist/workflows/barrier.d.ts +72 -0
  34. package/packages/sdk-ts/dist/workflows/barrier.d.ts.map +1 -0
  35. package/packages/sdk-ts/dist/workflows/barrier.js +162 -0
  36. package/packages/sdk-ts/dist/workflows/barrier.js.map +1 -0
  37. package/packages/sdk-ts/dist/workflows/builder.d.ts +101 -0
  38. package/packages/sdk-ts/dist/workflows/builder.d.ts.map +1 -0
  39. package/packages/sdk-ts/dist/workflows/builder.js +179 -0
  40. package/packages/sdk-ts/dist/workflows/builder.js.map +1 -0
  41. package/packages/sdk-ts/dist/workflows/cli.d.ts +10 -0
  42. package/packages/sdk-ts/dist/workflows/cli.d.ts.map +1 -0
  43. package/packages/sdk-ts/dist/workflows/cli.js +82 -0
  44. package/packages/sdk-ts/dist/workflows/cli.js.map +1 -0
  45. package/packages/sdk-ts/dist/workflows/coordinator.d.ts +68 -0
  46. package/packages/sdk-ts/dist/workflows/coordinator.d.ts.map +1 -0
  47. package/packages/sdk-ts/dist/workflows/coordinator.js +353 -0
  48. package/packages/sdk-ts/dist/workflows/coordinator.js.map +1 -0
  49. package/packages/sdk-ts/dist/workflows/index.d.ts +10 -0
  50. package/packages/sdk-ts/dist/workflows/index.d.ts.map +1 -0
  51. package/packages/sdk-ts/dist/workflows/index.js +10 -0
  52. package/packages/sdk-ts/dist/workflows/index.js.map +1 -0
  53. package/packages/sdk-ts/dist/workflows/memory-db.d.ts +17 -0
  54. package/packages/sdk-ts/dist/workflows/memory-db.d.ts.map +1 -0
  55. package/packages/sdk-ts/dist/workflows/memory-db.js +33 -0
  56. package/packages/sdk-ts/dist/workflows/memory-db.js.map +1 -0
  57. package/packages/sdk-ts/dist/workflows/run.d.ts +31 -0
  58. package/packages/sdk-ts/dist/workflows/run.d.ts.map +1 -0
  59. package/packages/sdk-ts/dist/workflows/run.js +24 -0
  60. package/packages/sdk-ts/dist/workflows/run.js.map +1 -0
  61. package/packages/sdk-ts/dist/workflows/runner.d.ts +119 -0
  62. package/packages/sdk-ts/dist/workflows/runner.d.ts.map +1 -0
  63. package/packages/sdk-ts/dist/workflows/runner.js +650 -0
  64. package/packages/sdk-ts/dist/workflows/runner.js.map +1 -0
  65. package/packages/sdk-ts/dist/workflows/state.d.ts +77 -0
  66. package/packages/sdk-ts/dist/workflows/state.d.ts.map +1 -0
  67. package/packages/sdk-ts/dist/workflows/state.js +140 -0
  68. package/packages/sdk-ts/dist/workflows/state.js.map +1 -0
  69. package/packages/sdk-ts/dist/workflows/templates.d.ts +47 -0
  70. package/packages/sdk-ts/dist/workflows/templates.d.ts.map +1 -0
  71. package/packages/sdk-ts/dist/workflows/templates.js +395 -0
  72. package/packages/sdk-ts/dist/workflows/templates.js.map +1 -0
  73. package/packages/sdk-ts/dist/workflows/types.d.ts +126 -0
  74. package/packages/sdk-ts/dist/workflows/types.d.ts.map +1 -0
  75. package/packages/sdk-ts/dist/workflows/types.js +8 -0
  76. package/packages/sdk-ts/dist/workflows/types.js.map +1 -0
  77. package/packages/sdk-ts/package.json +8 -2
  78. package/packages/sdk-ts/src/__tests__/error-scenarios.test.ts +682 -0
  79. package/packages/sdk-ts/src/__tests__/swarm-coordinator.test.ts +416 -0
  80. package/packages/sdk-ts/src/__tests__/workflow-runner.test.ts +333 -0
  81. package/packages/sdk-ts/src/index.ts +1 -0
  82. package/packages/sdk-ts/src/workflows/README.md +450 -0
  83. package/packages/sdk-ts/src/workflows/barrier.ts +254 -0
  84. package/packages/sdk-ts/src/workflows/builder.ts +241 -0
  85. package/packages/sdk-ts/src/workflows/builtin-templates/bug-fix.yaml +75 -0
  86. package/packages/sdk-ts/src/workflows/builtin-templates/code-review.yaml +82 -0
  87. package/packages/sdk-ts/src/workflows/builtin-templates/documentation.yaml +70 -0
  88. package/packages/sdk-ts/src/workflows/builtin-templates/feature-dev.yaml +76 -0
  89. package/packages/sdk-ts/src/workflows/builtin-templates/refactor.yaml +82 -0
  90. package/packages/sdk-ts/src/workflows/builtin-templates/security-audit.yaml +84 -0
  91. package/packages/sdk-ts/src/workflows/cli.ts +93 -0
  92. package/packages/sdk-ts/src/workflows/coordinator.ts +520 -0
  93. package/packages/sdk-ts/src/workflows/index.ts +9 -0
  94. package/packages/sdk-ts/src/workflows/memory-db.ts +39 -0
  95. package/packages/sdk-ts/src/workflows/run.ts +47 -0
  96. package/packages/sdk-ts/src/workflows/runner.ts +873 -0
  97. package/packages/sdk-ts/src/workflows/schema.json +321 -0
  98. package/packages/sdk-ts/src/workflows/state.ts +279 -0
  99. package/packages/sdk-ts/src/workflows/templates.ts +544 -0
  100. package/packages/sdk-ts/src/workflows/types.ts +178 -0
  101. package/packages/sdk-ts/tsconfig.json +6 -1
  102. package/packages/spawner/package.json +1 -1
  103. package/packages/state/package.json +1 -1
  104. package/packages/storage/package.json +2 -2
  105. package/packages/telemetry/package.json +1 -1
  106. package/packages/trajectory/package.json +2 -2
  107. package/packages/user-directory/package.json +2 -2
  108. package/packages/utils/package.json +3 -3
  109. package/packages/wrapper/package.json +5 -6
  110. package/packages/api-types/.trajectories/active/traj_xbsvuzogscey.json +0 -15
  111. package/packages/api-types/.trajectories/index.json +0 -12
  112. package/packages/api-types/dist/index.d.ts +0 -21
  113. package/packages/api-types/dist/index.d.ts.map +0 -1
  114. package/packages/api-types/dist/index.js +0 -22
  115. package/packages/api-types/dist/index.js.map +0 -1
  116. package/packages/api-types/dist/schemas/agent.d.ts +0 -259
  117. package/packages/api-types/dist/schemas/agent.d.ts.map +0 -1
  118. package/packages/api-types/dist/schemas/agent.js +0 -102
  119. package/packages/api-types/dist/schemas/agent.js.map +0 -1
  120. package/packages/api-types/dist/schemas/api.d.ts +0 -290
  121. package/packages/api-types/dist/schemas/api.d.ts.map +0 -1
  122. package/packages/api-types/dist/schemas/api.js +0 -162
  123. package/packages/api-types/dist/schemas/api.js.map +0 -1
  124. package/packages/api-types/dist/schemas/decision.d.ts +0 -230
  125. package/packages/api-types/dist/schemas/decision.d.ts.map +0 -1
  126. package/packages/api-types/dist/schemas/decision.js +0 -104
  127. package/packages/api-types/dist/schemas/decision.js.map +0 -1
  128. package/packages/api-types/dist/schemas/fleet.d.ts +0 -615
  129. package/packages/api-types/dist/schemas/fleet.d.ts.map +0 -1
  130. package/packages/api-types/dist/schemas/fleet.js +0 -71
  131. package/packages/api-types/dist/schemas/fleet.js.map +0 -1
  132. package/packages/api-types/dist/schemas/history.d.ts +0 -180
  133. package/packages/api-types/dist/schemas/history.d.ts.map +0 -1
  134. package/packages/api-types/dist/schemas/history.js +0 -72
  135. package/packages/api-types/dist/schemas/history.js.map +0 -1
  136. package/packages/api-types/dist/schemas/index.d.ts +0 -14
  137. package/packages/api-types/dist/schemas/index.d.ts.map +0 -1
  138. package/packages/api-types/dist/schemas/index.js +0 -22
  139. package/packages/api-types/dist/schemas/index.js.map +0 -1
  140. package/packages/api-types/dist/schemas/message.d.ts +0 -456
  141. package/packages/api-types/dist/schemas/message.d.ts.map +0 -1
  142. package/packages/api-types/dist/schemas/message.js +0 -88
  143. package/packages/api-types/dist/schemas/message.js.map +0 -1
  144. package/packages/api-types/dist/schemas/session.d.ts +0 -60
  145. package/packages/api-types/dist/schemas/session.d.ts.map +0 -1
  146. package/packages/api-types/dist/schemas/session.js +0 -36
  147. package/packages/api-types/dist/schemas/session.js.map +0 -1
  148. package/packages/api-types/dist/schemas/task.d.ts +0 -111
  149. package/packages/api-types/dist/schemas/task.d.ts.map +0 -1
  150. package/packages/api-types/dist/schemas/task.js +0 -64
  151. package/packages/api-types/dist/schemas/task.js.map +0 -1
  152. package/packages/api-types/package.json +0 -61
  153. package/packages/api-types/scripts/generate-openapi.ts +0 -106
  154. package/packages/api-types/src/index.ts +0 -22
  155. package/packages/api-types/src/schemas/agent.test.ts +0 -164
  156. package/packages/api-types/src/schemas/agent.ts +0 -110
  157. package/packages/api-types/src/schemas/api.test.ts +0 -372
  158. package/packages/api-types/src/schemas/api.ts +0 -194
  159. package/packages/api-types/src/schemas/decision.test.ts +0 -324
  160. package/packages/api-types/src/schemas/decision.ts +0 -136
  161. package/packages/api-types/src/schemas/fleet.test.ts +0 -212
  162. package/packages/api-types/src/schemas/fleet.ts +0 -83
  163. package/packages/api-types/src/schemas/history.test.ts +0 -242
  164. package/packages/api-types/src/schemas/history.ts +0 -84
  165. package/packages/api-types/src/schemas/index.ts +0 -148
  166. package/packages/api-types/src/schemas/message.test.ts +0 -192
  167. package/packages/api-types/src/schemas/message.ts +0 -98
  168. package/packages/api-types/src/schemas/session.test.ts +0 -104
  169. package/packages/api-types/src/schemas/session.ts +0 -40
  170. package/packages/api-types/src/schemas/task.test.ts +0 -192
  171. package/packages/api-types/src/schemas/task.ts +0 -78
  172. package/packages/api-types/tsconfig.json +0 -19
  173. package/packages/api-types/vitest.config.ts +0 -9
  174. package/packages/benchmark/README.md +0 -200
  175. package/packages/benchmark/datasets/coding-tasks.yaml +0 -127
  176. package/packages/benchmark/datasets/coordination-tasks.yaml +0 -122
  177. package/packages/benchmark/datasets/quick-test.yaml +0 -20
  178. package/packages/benchmark/dist/benchmark.d.ts +0 -47
  179. package/packages/benchmark/dist/benchmark.d.ts.map +0 -1
  180. package/packages/benchmark/dist/benchmark.js +0 -224
  181. package/packages/benchmark/dist/benchmark.js.map +0 -1
  182. package/packages/benchmark/dist/cli.d.ts +0 -8
  183. package/packages/benchmark/dist/cli.d.ts.map +0 -1
  184. package/packages/benchmark/dist/cli.js +0 -185
  185. package/packages/benchmark/dist/cli.js.map +0 -1
  186. package/packages/benchmark/dist/harbor.d.ts +0 -53
  187. package/packages/benchmark/dist/harbor.d.ts.map +0 -1
  188. package/packages/benchmark/dist/harbor.js +0 -127
  189. package/packages/benchmark/dist/harbor.js.map +0 -1
  190. package/packages/benchmark/dist/index.d.ts +0 -48
  191. package/packages/benchmark/dist/index.d.ts.map +0 -1
  192. package/packages/benchmark/dist/index.js +0 -50
  193. package/packages/benchmark/dist/index.js.map +0 -1
  194. package/packages/benchmark/dist/runners/base.d.ts +0 -63
  195. package/packages/benchmark/dist/runners/base.d.ts.map +0 -1
  196. package/packages/benchmark/dist/runners/base.js +0 -156
  197. package/packages/benchmark/dist/runners/base.js.map +0 -1
  198. package/packages/benchmark/dist/runners/index.d.ts +0 -10
  199. package/packages/benchmark/dist/runners/index.d.ts.map +0 -1
  200. package/packages/benchmark/dist/runners/index.js +0 -10
  201. package/packages/benchmark/dist/runners/index.js.map +0 -1
  202. package/packages/benchmark/dist/runners/single.d.ts +0 -19
  203. package/packages/benchmark/dist/runners/single.d.ts.map +0 -1
  204. package/packages/benchmark/dist/runners/single.js +0 -111
  205. package/packages/benchmark/dist/runners/single.js.map +0 -1
  206. package/packages/benchmark/dist/runners/subagent.d.ts +0 -32
  207. package/packages/benchmark/dist/runners/subagent.d.ts.map +0 -1
  208. package/packages/benchmark/dist/runners/subagent.js +0 -212
  209. package/packages/benchmark/dist/runners/subagent.js.map +0 -1
  210. package/packages/benchmark/dist/runners/swarm.d.ts +0 -36
  211. package/packages/benchmark/dist/runners/swarm.d.ts.map +0 -1
  212. package/packages/benchmark/dist/runners/swarm.js +0 -273
  213. package/packages/benchmark/dist/runners/swarm.js.map +0 -1
  214. package/packages/benchmark/dist/types.d.ts +0 -178
  215. package/packages/benchmark/dist/types.d.ts.map +0 -1
  216. package/packages/benchmark/dist/types.js +0 -16
  217. package/packages/benchmark/dist/types.js.map +0 -1
  218. package/packages/benchmark/package.json +0 -80
  219. package/packages/benchmark/src/benchmark.ts +0 -298
  220. package/packages/benchmark/src/cli.ts +0 -240
  221. package/packages/benchmark/src/harbor.ts +0 -170
  222. package/packages/benchmark/src/index.ts +0 -73
  223. package/packages/benchmark/src/runners/base.ts +0 -205
  224. package/packages/benchmark/src/runners/index.ts +0 -10
  225. package/packages/benchmark/src/runners/single.ts +0 -121
  226. package/packages/benchmark/src/runners/subagent.ts +0 -240
  227. package/packages/benchmark/src/runners/swarm.ts +0 -326
  228. package/packages/benchmark/src/types.ts +0 -205
  229. package/packages/benchmark/tsconfig.json +0 -20
  230. package/packages/cli-tester/README.md +0 -277
  231. package/packages/cli-tester/dist/index.d.ts +0 -21
  232. package/packages/cli-tester/dist/index.d.ts.map +0 -1
  233. package/packages/cli-tester/dist/index.js +0 -21
  234. package/packages/cli-tester/dist/index.js.map +0 -1
  235. package/packages/cli-tester/dist/utils/credential-check.d.ts +0 -56
  236. package/packages/cli-tester/dist/utils/credential-check.d.ts.map +0 -1
  237. package/packages/cli-tester/dist/utils/credential-check.js +0 -230
  238. package/packages/cli-tester/dist/utils/credential-check.js.map +0 -1
  239. package/packages/cli-tester/dist/utils/socket-client.d.ts +0 -76
  240. package/packages/cli-tester/dist/utils/socket-client.d.ts.map +0 -1
  241. package/packages/cli-tester/dist/utils/socket-client.js +0 -153
  242. package/packages/cli-tester/dist/utils/socket-client.js.map +0 -1
  243. package/packages/cli-tester/docker/Dockerfile +0 -61
  244. package/packages/cli-tester/docker/docker-compose.yml +0 -71
  245. package/packages/cli-tester/docker/entrypoint.sh +0 -58
  246. package/packages/cli-tester/package.json +0 -32
  247. package/packages/cli-tester/scripts/clear-auth.sh +0 -101
  248. package/packages/cli-tester/scripts/inject-message.sh +0 -42
  249. package/packages/cli-tester/scripts/start.sh +0 -71
  250. package/packages/cli-tester/scripts/test-cli.sh +0 -56
  251. package/packages/cli-tester/scripts/test-full-spawn.sh +0 -238
  252. package/packages/cli-tester/scripts/test-registration.sh +0 -182
  253. package/packages/cli-tester/scripts/test-setup-flow.sh +0 -202
  254. package/packages/cli-tester/scripts/test-spawn.sh +0 -140
  255. package/packages/cli-tester/scripts/test-with-daemon.sh +0 -247
  256. package/packages/cli-tester/scripts/verify-auth.sh +0 -112
  257. package/packages/cli-tester/src/index.ts +0 -40
  258. package/packages/cli-tester/src/utils/credential-check.ts +0 -284
  259. package/packages/cli-tester/src/utils/socket-client.ts +0 -211
  260. package/packages/cli-tester/tests/credential-check.test.ts +0 -56
  261. package/packages/cli-tester/tsconfig.json +0 -11
  262. package/packages/sdk/dist/browser-client.d.ts +0 -212
  263. package/packages/sdk/dist/browser-client.d.ts.map +0 -1
  264. package/packages/sdk/dist/browser-client.js +0 -750
  265. package/packages/sdk/dist/browser-client.js.map +0 -1
  266. package/packages/sdk/dist/browser-framing.d.ts +0 -46
  267. package/packages/sdk/dist/browser-framing.d.ts.map +0 -1
  268. package/packages/sdk/dist/browser-framing.js +0 -122
  269. package/packages/sdk/dist/browser-framing.js.map +0 -1
  270. package/packages/sdk/dist/standalone.d.ts +0 -89
  271. package/packages/sdk/dist/standalone.d.ts.map +0 -1
  272. package/packages/sdk/dist/standalone.js +0 -131
  273. package/packages/sdk/dist/standalone.js.map +0 -1
  274. package/packages/sdk/dist/transports/index.d.ts +0 -92
  275. package/packages/sdk/dist/transports/index.d.ts.map +0 -1
  276. package/packages/sdk/dist/transports/index.js +0 -129
  277. package/packages/sdk/dist/transports/index.js.map +0 -1
  278. package/packages/sdk/dist/transports/socket-transport.d.ts +0 -30
  279. package/packages/sdk/dist/transports/socket-transport.d.ts.map +0 -1
  280. package/packages/sdk/dist/transports/socket-transport.js +0 -94
  281. package/packages/sdk/dist/transports/socket-transport.js.map +0 -1
  282. package/packages/sdk/dist/transports/types.d.ts +0 -69
  283. package/packages/sdk/dist/transports/types.d.ts.map +0 -1
  284. package/packages/sdk/dist/transports/types.js +0 -10
  285. package/packages/sdk/dist/transports/types.js.map +0 -1
  286. package/packages/sdk/dist/transports/websocket-transport.d.ts +0 -55
  287. package/packages/sdk/dist/transports/websocket-transport.d.ts.map +0 -1
  288. package/packages/sdk/dist/transports/websocket-transport.js +0 -180
  289. package/packages/sdk/dist/transports/websocket-transport.js.map +0 -1
  290. package/packages/sdk/src/browser-client.ts +0 -985
  291. package/packages/sdk/src/browser-framing.test.ts +0 -115
  292. package/packages/sdk/src/browser-framing.ts +0 -150
  293. package/packages/sdk/src/standalone.ts +0 -183
  294. package/packages/sdk/src/transports/index.ts +0 -197
  295. package/packages/sdk/src/transports/socket-transport.ts +0 -115
  296. package/packages/sdk/src/transports/types.ts +0 -77
  297. package/packages/sdk/src/transports/websocket-transport.ts +0 -245
@@ -1,32 +0,0 @@
1
- {
2
- "name": "@agent-relay/cli-tester",
3
- "version": "2.3.4",
4
- "description": "Manual interactive testing for CLI authentication flows",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "scripts": {
9
- "build": "tsc",
10
- "start": "./scripts/start.sh",
11
- "start:clean": "./scripts/start.sh --clean",
12
- "start:daemon": "./scripts/start.sh --daemon",
13
- "docker:build": "docker compose -f docker/docker-compose.yml build",
14
- "docker:up": "docker compose -f docker/docker-compose.yml up",
15
- "docker:up:daemon": "docker compose -f docker/docker-compose.yml --profile daemon up",
16
- "docker:down": "docker compose -f docker/docker-compose.yml down",
17
- "test": "vitest run",
18
- "test:watch": "vitest"
19
- },
20
- "keywords": [
21
- "cli",
22
- "testing",
23
- "authentication",
24
- "relay-pty"
25
- ],
26
- "author": "Agent Workforce",
27
- "license": "Apache-2.0",
28
- "devDependencies": {
29
- "typescript": "^5.3.3",
30
- "vitest": "^1.2.0"
31
- }
32
- }
@@ -1,101 +0,0 @@
1
- #!/bin/bash
2
- # Clear CLI credentials for fresh testing
3
- # Usage: ./clear-auth.sh <cli|all>
4
- # Example: ./clear-auth.sh claude
5
- # ./clear-auth.sh all
6
-
7
- CLI=${1:-}
8
-
9
- if [ -z "$CLI" ]; then
10
- echo "Usage: ./clear-auth.sh <cli|all>"
11
- echo ""
12
- echo "Options:"
13
- echo " claude - Clear Claude credentials"
14
- echo " codex - Clear Codex credentials"
15
- echo " gemini - Clear Gemini credentials"
16
- echo " cursor - Clear Cursor credentials"
17
- echo " opencode - Clear OpenCode credentials"
18
- echo " droid - Clear Droid credentials"
19
- echo " copilot - Clear GitHub Copilot credentials"
20
- echo " all - Clear all credentials"
21
- exit 1
22
- fi
23
-
24
- clear_cli() {
25
- local cli=$1
26
- local dir=""
27
- local files=()
28
-
29
- case $cli in
30
- claude)
31
- dir="$HOME/.claude"
32
- files=(".credentials.json" "settings.json" "settings.local.json")
33
- ;;
34
- codex)
35
- dir="$HOME/.codex"
36
- files=("auth.json" "config.json" "config.toml")
37
- ;;
38
- gemini)
39
- dir="$HOME/.gemini"
40
- files=("credentials.json" "settings.json")
41
- # Also check gcloud location
42
- if [ -f "$HOME/.config/gcloud/application_default_credentials.json" ]; then
43
- echo " Removing: $HOME/.config/gcloud/application_default_credentials.json"
44
- rm -f "$HOME/.config/gcloud/application_default_credentials.json"
45
- fi
46
- ;;
47
- cursor|agent)
48
- # Cursor CLI installs as 'agent', credentials in ~/.cursor/
49
- dir="$HOME/.cursor"
50
- files=("auth.json" "settings.json")
51
- ;;
52
- opencode)
53
- dir="$HOME/.local/share/opencode"
54
- files=("auth.json")
55
- ;;
56
- droid)
57
- dir="$HOME/.droid"
58
- files=("auth.json")
59
- ;;
60
- copilot)
61
- # GitHub Copilot uses gh CLI auth - stored in ~/.config/gh/
62
- dir="$HOME/.config/gh"
63
- files=("hosts.yml" "config.yml")
64
- ;;
65
- *)
66
- echo "Unknown CLI: $cli"
67
- return 1
68
- ;;
69
- esac
70
-
71
- echo "Clearing credentials for: $cli"
72
-
73
- if [ -d "$dir" ]; then
74
- for file in "${files[@]}"; do
75
- if [ -f "$dir/$file" ]; then
76
- echo " Removing: $dir/$file"
77
- rm -f "$dir/$file"
78
- fi
79
- done
80
- echo " ✓ Done"
81
- else
82
- echo " (no config directory found)"
83
- fi
84
- }
85
-
86
- echo "========================================"
87
- echo " Clearing CLI Credentials"
88
- echo "========================================"
89
- echo ""
90
-
91
- if [ "$CLI" = "all" ]; then
92
- for c in claude codex gemini cursor opencode droid copilot; do
93
- clear_cli "$c"
94
- echo ""
95
- done
96
- else
97
- clear_cli "$CLI"
98
- fi
99
-
100
- echo ""
101
- echo "Credentials cleared. Run test-cli.sh to test fresh authentication."
@@ -1,42 +0,0 @@
1
- #!/bin/bash
2
- # Send a message to a CLI via relay-pty socket
3
- # Usage: ./inject-message.sh <session-name> <message>
4
- # Example: ./inject-message.sh test-claude "What is 2+2?"
5
-
6
- NAME=${1:-test-claude}
7
- MESSAGE=${2:-"Test message from inject script"}
8
- SOCKET="/tmp/relay-pty-${NAME}.sock"
9
-
10
- if [ ! -S "$SOCKET" ]; then
11
- echo "Error: Socket not found: $SOCKET"
12
- echo ""
13
- echo "Make sure relay-pty is running with --name ${NAME}"
14
- echo "Run: test-cli.sh ${NAME#test-}"
15
- exit 1
16
- fi
17
-
18
- # Generate unique message ID
19
- MSG_ID="manual-$(date +%s)-$RANDOM"
20
-
21
- echo "Sending message to $NAME..."
22
- echo " Socket: $SOCKET"
23
- echo " Message ID: $MSG_ID"
24
- echo " Body: $MESSAGE"
25
- echo ""
26
-
27
- # Build JSON request
28
- REQUEST=$(cat <<EOF
29
- {"type":"inject","id":"$MSG_ID","from":"Tester","body":"$MESSAGE","priority":0}
30
- EOF
31
- )
32
-
33
- # Send request and read response
34
- # nc -U connects to Unix socket, -q 1 waits 1 second for response
35
- echo "$REQUEST" | nc -U "$SOCKET" -q 2 | while read -r line; do
36
- if [ -n "$line" ]; then
37
- echo "Response: $line" | jq '.' 2>/dev/null || echo "Response: $line"
38
- fi
39
- done
40
-
41
- echo ""
42
- echo "Message sent. Check the CLI session to see if it was delivered."
@@ -1,71 +0,0 @@
1
- #!/bin/bash
2
- # Start the CLI tester Docker environment
3
- # Usage: ./start.sh [--clean] [--build] [--daemon]
4
-
5
- set -e
6
-
7
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
- PACKAGE_DIR="$(dirname "$SCRIPT_DIR")"
9
- DOCKER_DIR="$PACKAGE_DIR/docker"
10
-
11
- # Parse arguments
12
- CLEAN=false
13
- BUILD=false
14
- WITH_DAEMON=false
15
- while [[ $# -gt 0 ]]; do
16
- case $1 in
17
- --clean)
18
- CLEAN=true
19
- shift
20
- ;;
21
- --build)
22
- BUILD=true
23
- shift
24
- ;;
25
- --daemon)
26
- WITH_DAEMON=true
27
- shift
28
- ;;
29
- *)
30
- echo "Unknown option: $1"
31
- echo "Usage: ./start.sh [--clean] [--build] [--daemon]"
32
- echo " --clean Remove credential volumes before starting"
33
- echo " --build Force rebuild of Docker image"
34
- echo " --daemon Start with relay daemon for full integration testing"
35
- exit 1
36
- ;;
37
- esac
38
- done
39
-
40
- cd "$DOCKER_DIR"
41
-
42
- # Clean volumes if requested
43
- if [ "$CLEAN" = true ]; then
44
- echo "Removing credential volumes..."
45
- docker compose down -v 2>/dev/null || true
46
- fi
47
-
48
- # Build compose args
49
- COMPOSE_ARGS=()
50
- if [ "$WITH_DAEMON" = true ]; then
51
- COMPOSE_ARGS+=(--profile daemon)
52
- fi
53
-
54
- # Build if requested or if image doesn't exist
55
- if [ "$BUILD" = true ]; then
56
- echo "Building Docker image..."
57
- docker compose "${COMPOSE_ARGS[@]}" build
58
- fi
59
-
60
- # Start the container interactively
61
- echo ""
62
- if [ "$WITH_DAEMON" = true ]; then
63
- echo "Starting CLI tester environment with daemon..."
64
- echo "The daemon will be available at http://daemon:3377"
65
- else
66
- echo "Starting CLI tester environment..."
67
- fi
68
- echo "Use Ctrl+D or 'exit' to leave the container."
69
- echo ""
70
-
71
- docker compose "${COMPOSE_ARGS[@]}" run --rm cli-tester
@@ -1,56 +0,0 @@
1
- #!/bin/bash
2
- # Test a specific CLI with relay-pty
3
- # Usage: ./test-cli.sh <cli> [extra-args...]
4
- # Example: ./test-cli.sh claude
5
- # ./test-cli.sh codex --device-auth
6
- # DEBUG=1 ./test-cli.sh cursor
7
-
8
- set -e
9
-
10
- CLI=${1:-claude}
11
- shift 2>/dev/null || true # Shift to get extra args, ignore if no more args
12
-
13
- # Map CLI name to actual command (cursor installs as 'agent')
14
- CLI_CMD="$CLI"
15
- if [ "$CLI" = "cursor" ]; then
16
- CLI_CMD="agent"
17
- fi
18
-
19
- NAME="test-${CLI}"
20
- SOCKET="/tmp/relay-pty-${NAME}.sock"
21
-
22
- # Remove stale socket if exists
23
- rm -f "$SOCKET"
24
-
25
- echo "========================================"
26
- echo " Testing: $CLI"
27
- echo "========================================"
28
- echo ""
29
- echo "Session name: $NAME"
30
- echo "Socket path: $SOCKET"
31
- echo ""
32
- echo "After authenticating, open another terminal and run:"
33
- echo " verify-auth.sh $CLI"
34
- echo " inject-message.sh $NAME 'Hello world'"
35
- echo ""
36
- echo "Press Ctrl+C to stop the session."
37
- echo "========================================"
38
- echo ""
39
-
40
- # Build relay-pty args
41
- RELAY_ARGS=(
42
- --name "$NAME"
43
- --socket "$SOCKET"
44
- --idle-timeout 500
45
- )
46
-
47
- # Add debug output if DEBUG is set
48
- if [ -n "$DEBUG" ]; then
49
- RELAY_ARGS+=(--json-output)
50
- echo "[DEBUG] JSON output enabled - relay commands will be printed to stderr"
51
- echo ""
52
- fi
53
-
54
- # Run relay-pty with the CLI
55
- # Pass through any extra arguments to the CLI
56
- exec relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "$@"
@@ -1,238 +0,0 @@
1
- #!/bin/bash
2
- # Full spawn simulation - replicates the EXACT spawner flow
3
- # This is the most accurate test for debugging registration timeouts
4
- #
5
- # Usage: ./test-full-spawn.sh <cli> [interactive]
6
- # Example: ./test-full-spawn.sh cursor # Non-interactive (with --force)
7
- # ./test-full-spawn.sh cursor true # Interactive (no --force, like setup terminal)
8
- # DEBUG=1 ./test-full-spawn.sh cursor true
9
-
10
- set -e
11
-
12
- CLI=${1:-cursor}
13
- INTERACTIVE=${2:-false}
14
-
15
- # Map CLI to command
16
- CLI_CMD="$CLI"
17
- if [ "$CLI" = "cursor" ]; then
18
- CLI_CMD="agent"
19
- fi
20
-
21
- # Generate name
22
- if [ "$INTERACTIVE" = "true" ]; then
23
- TIMESTAMP=$(date +%s | tail -c 8)
24
- RANDOM_SUFFIX=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c 4)
25
- NAME="__setup__${CLI}-${TIMESTAMP}${RANDOM_SUFFIX}"
26
- else
27
- NAME="spawn-test-${CLI}"
28
- fi
29
-
30
- SOCKET="/tmp/relay-pty-${NAME}.sock"
31
- LOG_FILE="/tmp/relay-spawn-${NAME}.log"
32
- REGISTRATION_TIMEOUT=30
33
-
34
- echo "========================================"
35
- echo " Full Spawn Simulation: $CLI"
36
- echo "========================================"
37
- echo ""
38
- echo "Mode: $([ "$INTERACTIVE" = "true" ] && echo "INTERACTIVE (setup terminal)" || echo "NON-INTERACTIVE (normal spawn)")"
39
- echo ""
40
- echo "Configuration:"
41
- echo " CLI: $CLI_CMD"
42
- echo " Agent name: $NAME"
43
- echo " Interactive: $INTERACTIVE"
44
- echo " Registration timeout: ${REGISTRATION_TIMEOUT}s"
45
- echo ""
46
-
47
- # Build CLI args based on mode
48
- CLI_ARGS=()
49
- if [ "$INTERACTIVE" != "true" ]; then
50
- case $CLI in
51
- cursor)
52
- CLI_ARGS+=(--force)
53
- echo " Adding: --force (non-interactive cursor)"
54
- ;;
55
- claude)
56
- CLI_ARGS+=(--dangerously-skip-permissions)
57
- echo " Adding: --dangerously-skip-permissions (non-interactive claude)"
58
- ;;
59
- copilot)
60
- # Copilot uses device flow for headless auth
61
- CLI_ARGS+=(auth login --device)
62
- echo " Adding: auth login --device (non-interactive copilot)"
63
- ;;
64
- codex)
65
- # Codex supports device flow
66
- CLI_ARGS+=(login --device-auth)
67
- echo " Adding: login --device-auth (non-interactive codex)"
68
- ;;
69
- esac
70
- else
71
- echo " No auto-accept flags (interactive mode)"
72
- # For interactive copilot, still need auth login command
73
- if [ "$CLI" = "copilot" ]; then
74
- CLI_ARGS+=(auth login)
75
- echo " Adding: auth login (interactive copilot)"
76
- fi
77
- fi
78
- echo ""
79
-
80
- # Cleanup
81
- cleanup() {
82
- echo ""
83
- echo "========================================"
84
- echo " Cleanup"
85
- echo "========================================"
86
- rm -f "$SOCKET"
87
- if [ -n "$PTY_PID" ] && kill -0 $PTY_PID 2>/dev/null; then
88
- echo "Stopping relay-pty (PID: $PTY_PID)..."
89
- kill $PTY_PID 2>/dev/null || true
90
- fi
91
- echo ""
92
- echo "Log file: $LOG_FILE"
93
- if [ -f "$LOG_FILE" ]; then
94
- echo ""
95
- echo "Last 30 lines of output:"
96
- echo "----------------------------------------"
97
- tail -30 "$LOG_FILE"
98
- echo "----------------------------------------"
99
- fi
100
- }
101
- trap cleanup EXIT
102
-
103
- # Remove stale files
104
- rm -f "$SOCKET" "$LOG_FILE"
105
-
106
- echo "========================================"
107
- echo " Phase 1: Start PTY"
108
- echo "========================================"
109
- echo ""
110
-
111
- # This is what spawner does: pty.start()
112
- RELAY_ARGS=(
113
- --name "$NAME"
114
- --socket "$SOCKET"
115
- --idle-timeout 300
116
- )
117
-
118
- if [ -n "$DEBUG" ]; then
119
- RELAY_ARGS+=(--json-output)
120
- fi
121
-
122
- echo "[$(date +%T)] Starting: relay-pty ${RELAY_ARGS[*]} -- $CLI_CMD ${CLI_ARGS[*]}"
123
- echo ""
124
-
125
- # Start relay-pty and capture output
126
- if [ ${#CLI_ARGS[@]} -gt 0 ]; then
127
- relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "${CLI_ARGS[@]}" > "$LOG_FILE" 2>&1 &
128
- else
129
- relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" > "$LOG_FILE" 2>&1 &
130
- fi
131
- PTY_PID=$!
132
-
133
- echo "[$(date +%T)] PTY started (PID: $PTY_PID)"
134
-
135
- # Brief wait for startup
136
- sleep 1
137
-
138
- if ! kill -0 $PTY_PID 2>/dev/null; then
139
- echo "[$(date +%T)] ERROR: PTY exited immediately!"
140
- echo ""
141
- cat "$LOG_FILE"
142
- exit 1
143
- fi
144
-
145
- echo "[$(date +%T)] PTY is running"
146
- echo ""
147
-
148
- echo "========================================"
149
- echo " Phase 2: Wait for Registration"
150
- echo "========================================"
151
- echo ""
152
- echo "In the real spawner, this calls waitForAgentRegistration()"
153
- echo "which polls connected-agents.json and agents.json for ${REGISTRATION_TIMEOUT}s"
154
- echo ""
155
- echo "Without a daemon, these files won't be updated, causing timeout."
156
- echo "But we can still see if the CLI starts successfully."
157
- echo ""
158
-
159
- # Simulate the spawner's registration polling
160
- START_TIME=$(date +%s)
161
- POLL_COUNT=0
162
-
163
- while true; do
164
- POLL_COUNT=$((POLL_COUNT + 1))
165
- CURRENT_TIME=$(date +%s)
166
- ELAPSED=$((CURRENT_TIME - START_TIME))
167
-
168
- # Check if PTY is still running
169
- if ! kill -0 $PTY_PID 2>/dev/null; then
170
- echo ""
171
- echo "[$(date +%T)] PTY exited after ${ELAPSED}s (${POLL_COUNT} polls)"
172
- echo ""
173
- echo "Exit could be normal (auth complete) or an error."
174
- echo "Check log output below."
175
- exit 0
176
- fi
177
-
178
- # Check socket status
179
- SOCKET_STATUS="no socket"
180
- if [ -S "$SOCKET" ]; then
181
- RESPONSE=$(echo '{"type":"status"}' | timeout 1 nc -U "$SOCKET" 2>/dev/null | head -1 || echo "")
182
- if [ -n "$RESPONSE" ]; then
183
- IDLE=$(echo "$RESPONSE" | grep -o '"agent_idle":[^,}]*' | cut -d: -f2 || echo "?")
184
- QUEUE=$(echo "$RESPONSE" | grep -o '"queue_length":[^,}]*' | cut -d: -f2 || echo "?")
185
- SOCKET_STATUS="idle=$IDLE queue=$QUEUE"
186
- else
187
- SOCKET_STATUS="no response"
188
- fi
189
- fi
190
-
191
- # Log poll (like spawner does for first 3 and every 10th)
192
- if [ $POLL_COUNT -le 3 ] || [ $((POLL_COUNT % 10)) -eq 0 ]; then
193
- echo "[$(date +%T)] Poll #$POLL_COUNT: elapsed=${ELAPSED}s socket=[$SOCKET_STATUS]"
194
- fi
195
-
196
- # Check registration timeout (what spawner does)
197
- if [ $ELAPSED -ge $REGISTRATION_TIMEOUT ]; then
198
- echo ""
199
- echo "========================================"
200
- echo " REGISTRATION TIMEOUT (${REGISTRATION_TIMEOUT}s)"
201
- echo "========================================"
202
- echo ""
203
- echo "This is where the real spawner would fail with:"
204
- echo " 'Agent registration timeout'"
205
- echo ""
206
- echo "The CLI started but didn't register with daemon."
207
- echo ""
208
- echo "Possible causes:"
209
- if [ "$INTERACTIVE" = "true" ]; then
210
- echo " 1. CLI is waiting for user input (trust prompt, auth)"
211
- echo " 2. No daemon running to register with"
212
- echo " 3. CLI crashed silently"
213
- else
214
- echo " 1. --force flag not working as expected"
215
- echo " 2. No daemon running to register with"
216
- echo " 3. CLI has other blocking prompts"
217
- fi
218
- echo ""
219
- echo "To see what the CLI is doing, check the log file:"
220
- echo " cat $LOG_FILE"
221
- echo ""
222
- echo "Or tail it live in another terminal:"
223
- echo " tail -f $LOG_FILE"
224
- echo ""
225
-
226
- # Show recent output
227
- echo "Recent output (last 20 lines):"
228
- echo "----------------------------------------"
229
- tail -20 "$LOG_FILE" 2>/dev/null || echo "(no output)"
230
- echo "----------------------------------------"
231
- echo ""
232
- echo "Process is still running. Press Enter to stop."
233
- read -r
234
- exit 1
235
- fi
236
-
237
- sleep 0.5
238
- done