agent-relay 2.3.2 → 2.3.5
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/README.md +1 -1
- package/dist/index.cjs +1 -1
- package/dist/src/cli/index.js +124 -7
- package/dist/src/cli/index.js.map +1 -1
- package/package.json +20 -26
- package/packages/acp-bridge/package.json +2 -2
- package/packages/bridge/package.json +7 -7
- package/packages/config/dist/cloud-config.d.ts +1 -1
- package/packages/config/dist/cloud-config.d.ts.map +1 -1
- package/packages/config/dist/cloud-config.js.map +1 -1
- package/packages/config/dist/schemas.d.ts +5 -5
- package/packages/config/dist/schemas.js +1 -1
- package/packages/config/dist/schemas.js.map +1 -1
- package/packages/config/package.json +2 -2
- package/packages/config/src/cloud-config.ts +2 -2
- package/packages/config/src/schemas.test.ts +48 -0
- package/packages/config/src/schemas.ts +1 -1
- package/packages/continuity/package.json +2 -2
- package/packages/daemon/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/package.json +5 -5
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/dist/index.d.ts +1 -29
- package/packages/sdk/dist/index.d.ts.map +1 -1
- package/packages/sdk/dist/index.js +1 -38
- package/packages/sdk/dist/index.js.map +1 -1
- package/packages/sdk/package.json +4 -25
- package/packages/sdk/src/index.ts +1 -69
- package/packages/sdk-py/README.md +56 -0
- package/packages/sdk-py/pyproject.toml +23 -0
- package/packages/sdk-py/src/agent_relay/__init__.py +27 -0
- package/packages/sdk-py/src/agent_relay/builder.py +367 -0
- package/packages/sdk-py/src/agent_relay/types.py +92 -0
- package/packages/sdk-py/tests/__init__.py +0 -0
- package/packages/sdk-py/tests/test_builder.py +101 -0
- package/packages/sdk-ts/dist/__tests__/facade.test.d.ts +2 -0
- package/packages/sdk-ts/dist/__tests__/facade.test.d.ts.map +1 -0
- package/packages/sdk-ts/dist/__tests__/facade.test.js +257 -0
- package/packages/sdk-ts/dist/__tests__/facade.test.js.map +1 -0
- package/packages/sdk-ts/dist/__tests__/unit.test.d.ts +2 -0
- package/packages/sdk-ts/dist/__tests__/unit.test.d.ts.map +1 -0
- package/packages/sdk-ts/dist/__tests__/unit.test.js +124 -0
- package/packages/sdk-ts/dist/__tests__/unit.test.js.map +1 -0
- package/packages/sdk-ts/dist/client.d.ts +2 -0
- package/packages/sdk-ts/dist/client.d.ts.map +1 -1
- package/packages/sdk-ts/dist/client.js +2 -0
- package/packages/sdk-ts/dist/client.js.map +1 -1
- package/packages/sdk-ts/dist/index.d.ts +1 -0
- package/packages/sdk-ts/dist/index.d.ts.map +1 -1
- package/packages/sdk-ts/dist/index.js +1 -0
- package/packages/sdk-ts/dist/index.js.map +1 -1
- package/packages/sdk-ts/dist/protocol.d.ts +1 -0
- package/packages/sdk-ts/dist/protocol.d.ts.map +1 -1
- package/packages/sdk-ts/dist/relay.d.ts +44 -0
- package/packages/sdk-ts/dist/relay.d.ts.map +1 -1
- package/packages/sdk-ts/dist/relay.js +89 -11
- package/packages/sdk-ts/dist/relay.js.map +1 -1
- package/packages/sdk-ts/dist/relaycast.js +2 -2
- package/packages/sdk-ts/dist/relaycast.js.map +1 -1
- package/packages/sdk-ts/dist/workflows/barrier.d.ts +72 -0
- package/packages/sdk-ts/dist/workflows/barrier.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/barrier.js +162 -0
- package/packages/sdk-ts/dist/workflows/barrier.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/builder.d.ts +101 -0
- package/packages/sdk-ts/dist/workflows/builder.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/builder.js +179 -0
- package/packages/sdk-ts/dist/workflows/builder.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/cli.d.ts +10 -0
- package/packages/sdk-ts/dist/workflows/cli.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/cli.js +82 -0
- package/packages/sdk-ts/dist/workflows/cli.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/coordinator.d.ts +68 -0
- package/packages/sdk-ts/dist/workflows/coordinator.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/coordinator.js +353 -0
- package/packages/sdk-ts/dist/workflows/coordinator.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/index.d.ts +10 -0
- package/packages/sdk-ts/dist/workflows/index.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/index.js +10 -0
- package/packages/sdk-ts/dist/workflows/index.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/memory-db.d.ts +17 -0
- package/packages/sdk-ts/dist/workflows/memory-db.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/memory-db.js +33 -0
- package/packages/sdk-ts/dist/workflows/memory-db.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/run.d.ts +31 -0
- package/packages/sdk-ts/dist/workflows/run.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/run.js +24 -0
- package/packages/sdk-ts/dist/workflows/run.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/runner.d.ts +119 -0
- package/packages/sdk-ts/dist/workflows/runner.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/runner.js +650 -0
- package/packages/sdk-ts/dist/workflows/runner.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/state.d.ts +77 -0
- package/packages/sdk-ts/dist/workflows/state.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/state.js +140 -0
- package/packages/sdk-ts/dist/workflows/state.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/templates.d.ts +47 -0
- package/packages/sdk-ts/dist/workflows/templates.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/templates.js +395 -0
- package/packages/sdk-ts/dist/workflows/templates.js.map +1 -0
- package/packages/sdk-ts/dist/workflows/types.d.ts +126 -0
- package/packages/sdk-ts/dist/workflows/types.d.ts.map +1 -0
- package/packages/sdk-ts/dist/workflows/types.js +8 -0
- package/packages/sdk-ts/dist/workflows/types.js.map +1 -0
- package/packages/sdk-ts/package.json +9 -3
- package/packages/sdk-ts/src/__tests__/error-scenarios.test.ts +682 -0
- package/packages/sdk-ts/src/__tests__/facade.test.ts +296 -0
- package/packages/sdk-ts/src/__tests__/swarm-coordinator.test.ts +416 -0
- package/packages/sdk-ts/src/__tests__/unit.test.ts +152 -0
- package/packages/sdk-ts/src/__tests__/workflow-runner.test.ts +333 -0
- package/packages/sdk-ts/src/client.ts +4 -0
- package/packages/sdk-ts/src/index.ts +1 -0
- package/packages/sdk-ts/src/protocol.ts +1 -1
- package/packages/sdk-ts/src/relay.ts +112 -11
- package/packages/sdk-ts/src/relaycast.ts +2 -2
- package/packages/sdk-ts/src/workflows/README.md +450 -0
- package/packages/sdk-ts/src/workflows/barrier.ts +254 -0
- package/packages/sdk-ts/src/workflows/builder.ts +241 -0
- package/packages/sdk-ts/src/workflows/builtin-templates/bug-fix.yaml +75 -0
- package/packages/sdk-ts/src/workflows/builtin-templates/code-review.yaml +82 -0
- package/packages/sdk-ts/src/workflows/builtin-templates/documentation.yaml +70 -0
- package/packages/sdk-ts/src/workflows/builtin-templates/feature-dev.yaml +76 -0
- package/packages/sdk-ts/src/workflows/builtin-templates/refactor.yaml +82 -0
- package/packages/sdk-ts/src/workflows/builtin-templates/security-audit.yaml +84 -0
- package/packages/sdk-ts/src/workflows/cli.ts +93 -0
- package/packages/sdk-ts/src/workflows/coordinator.ts +520 -0
- package/packages/sdk-ts/src/workflows/index.ts +9 -0
- package/packages/sdk-ts/src/workflows/memory-db.ts +39 -0
- package/packages/sdk-ts/src/workflows/run.ts +47 -0
- package/packages/sdk-ts/src/workflows/runner.ts +873 -0
- package/packages/sdk-ts/src/workflows/schema.json +321 -0
- package/packages/sdk-ts/src/workflows/state.ts +279 -0
- package/packages/sdk-ts/src/workflows/templates.ts +544 -0
- package/packages/sdk-ts/src/workflows/types.ts +178 -0
- package/packages/sdk-ts/tsconfig.json +6 -1
- package/packages/spawner/package.json +1 -1
- package/packages/state/package.json +1 -1
- package/packages/storage/package.json +2 -2
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +3 -3
- package/packages/wrapper/package.json +5 -6
- package/scripts/postinstall.js +106 -2
- package/packages/api-types/.trajectories/active/traj_xbsvuzogscey.json +0 -15
- package/packages/api-types/.trajectories/index.json +0 -12
- package/packages/api-types/dist/index.d.ts +0 -21
- package/packages/api-types/dist/index.d.ts.map +0 -1
- package/packages/api-types/dist/index.js +0 -22
- package/packages/api-types/dist/index.js.map +0 -1
- package/packages/api-types/dist/schemas/agent.d.ts +0 -259
- package/packages/api-types/dist/schemas/agent.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/agent.js +0 -102
- package/packages/api-types/dist/schemas/agent.js.map +0 -1
- package/packages/api-types/dist/schemas/api.d.ts +0 -290
- package/packages/api-types/dist/schemas/api.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/api.js +0 -162
- package/packages/api-types/dist/schemas/api.js.map +0 -1
- package/packages/api-types/dist/schemas/decision.d.ts +0 -230
- package/packages/api-types/dist/schemas/decision.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/decision.js +0 -104
- package/packages/api-types/dist/schemas/decision.js.map +0 -1
- package/packages/api-types/dist/schemas/fleet.d.ts +0 -615
- package/packages/api-types/dist/schemas/fleet.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/fleet.js +0 -71
- package/packages/api-types/dist/schemas/fleet.js.map +0 -1
- package/packages/api-types/dist/schemas/history.d.ts +0 -180
- package/packages/api-types/dist/schemas/history.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/history.js +0 -72
- package/packages/api-types/dist/schemas/history.js.map +0 -1
- package/packages/api-types/dist/schemas/index.d.ts +0 -14
- package/packages/api-types/dist/schemas/index.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/index.js +0 -22
- package/packages/api-types/dist/schemas/index.js.map +0 -1
- package/packages/api-types/dist/schemas/message.d.ts +0 -456
- package/packages/api-types/dist/schemas/message.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/message.js +0 -88
- package/packages/api-types/dist/schemas/message.js.map +0 -1
- package/packages/api-types/dist/schemas/session.d.ts +0 -60
- package/packages/api-types/dist/schemas/session.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/session.js +0 -36
- package/packages/api-types/dist/schemas/session.js.map +0 -1
- package/packages/api-types/dist/schemas/task.d.ts +0 -111
- package/packages/api-types/dist/schemas/task.d.ts.map +0 -1
- package/packages/api-types/dist/schemas/task.js +0 -64
- package/packages/api-types/dist/schemas/task.js.map +0 -1
- package/packages/api-types/package.json +0 -61
- package/packages/api-types/scripts/generate-openapi.ts +0 -106
- package/packages/api-types/src/index.ts +0 -22
- package/packages/api-types/src/schemas/agent.test.ts +0 -164
- package/packages/api-types/src/schemas/agent.ts +0 -110
- package/packages/api-types/src/schemas/api.test.ts +0 -372
- package/packages/api-types/src/schemas/api.ts +0 -194
- package/packages/api-types/src/schemas/decision.test.ts +0 -324
- package/packages/api-types/src/schemas/decision.ts +0 -136
- package/packages/api-types/src/schemas/fleet.test.ts +0 -212
- package/packages/api-types/src/schemas/fleet.ts +0 -83
- package/packages/api-types/src/schemas/history.test.ts +0 -242
- package/packages/api-types/src/schemas/history.ts +0 -84
- package/packages/api-types/src/schemas/index.ts +0 -148
- package/packages/api-types/src/schemas/message.test.ts +0 -192
- package/packages/api-types/src/schemas/message.ts +0 -98
- package/packages/api-types/src/schemas/session.test.ts +0 -104
- package/packages/api-types/src/schemas/session.ts +0 -40
- package/packages/api-types/src/schemas/task.test.ts +0 -192
- package/packages/api-types/src/schemas/task.ts +0 -78
- package/packages/api-types/tsconfig.json +0 -19
- package/packages/api-types/vitest.config.ts +0 -9
- package/packages/benchmark/README.md +0 -200
- package/packages/benchmark/datasets/coding-tasks.yaml +0 -127
- package/packages/benchmark/datasets/coordination-tasks.yaml +0 -122
- package/packages/benchmark/datasets/quick-test.yaml +0 -20
- package/packages/benchmark/dist/benchmark.d.ts +0 -47
- package/packages/benchmark/dist/benchmark.d.ts.map +0 -1
- package/packages/benchmark/dist/benchmark.js +0 -224
- package/packages/benchmark/dist/benchmark.js.map +0 -1
- package/packages/benchmark/dist/cli.d.ts +0 -8
- package/packages/benchmark/dist/cli.d.ts.map +0 -1
- package/packages/benchmark/dist/cli.js +0 -185
- package/packages/benchmark/dist/cli.js.map +0 -1
- package/packages/benchmark/dist/harbor.d.ts +0 -53
- package/packages/benchmark/dist/harbor.d.ts.map +0 -1
- package/packages/benchmark/dist/harbor.js +0 -127
- package/packages/benchmark/dist/harbor.js.map +0 -1
- package/packages/benchmark/dist/index.d.ts +0 -48
- package/packages/benchmark/dist/index.d.ts.map +0 -1
- package/packages/benchmark/dist/index.js +0 -50
- package/packages/benchmark/dist/index.js.map +0 -1
- package/packages/benchmark/dist/runners/base.d.ts +0 -63
- package/packages/benchmark/dist/runners/base.d.ts.map +0 -1
- package/packages/benchmark/dist/runners/base.js +0 -156
- package/packages/benchmark/dist/runners/base.js.map +0 -1
- package/packages/benchmark/dist/runners/index.d.ts +0 -10
- package/packages/benchmark/dist/runners/index.d.ts.map +0 -1
- package/packages/benchmark/dist/runners/index.js +0 -10
- package/packages/benchmark/dist/runners/index.js.map +0 -1
- package/packages/benchmark/dist/runners/single.d.ts +0 -19
- package/packages/benchmark/dist/runners/single.d.ts.map +0 -1
- package/packages/benchmark/dist/runners/single.js +0 -111
- package/packages/benchmark/dist/runners/single.js.map +0 -1
- package/packages/benchmark/dist/runners/subagent.d.ts +0 -32
- package/packages/benchmark/dist/runners/subagent.d.ts.map +0 -1
- package/packages/benchmark/dist/runners/subagent.js +0 -212
- package/packages/benchmark/dist/runners/subagent.js.map +0 -1
- package/packages/benchmark/dist/runners/swarm.d.ts +0 -36
- package/packages/benchmark/dist/runners/swarm.d.ts.map +0 -1
- package/packages/benchmark/dist/runners/swarm.js +0 -273
- package/packages/benchmark/dist/runners/swarm.js.map +0 -1
- package/packages/benchmark/dist/types.d.ts +0 -178
- package/packages/benchmark/dist/types.d.ts.map +0 -1
- package/packages/benchmark/dist/types.js +0 -16
- package/packages/benchmark/dist/types.js.map +0 -1
- package/packages/benchmark/package.json +0 -80
- package/packages/benchmark/src/benchmark.ts +0 -298
- package/packages/benchmark/src/cli.ts +0 -240
- package/packages/benchmark/src/harbor.ts +0 -170
- package/packages/benchmark/src/index.ts +0 -73
- package/packages/benchmark/src/runners/base.ts +0 -205
- package/packages/benchmark/src/runners/index.ts +0 -10
- package/packages/benchmark/src/runners/single.ts +0 -121
- package/packages/benchmark/src/runners/subagent.ts +0 -240
- package/packages/benchmark/src/runners/swarm.ts +0 -326
- package/packages/benchmark/src/types.ts +0 -205
- package/packages/benchmark/tsconfig.json +0 -20
- package/packages/cli-tester/README.md +0 -277
- package/packages/cli-tester/dist/index.d.ts +0 -21
- package/packages/cli-tester/dist/index.d.ts.map +0 -1
- package/packages/cli-tester/dist/index.js +0 -21
- package/packages/cli-tester/dist/index.js.map +0 -1
- package/packages/cli-tester/dist/utils/credential-check.d.ts +0 -56
- package/packages/cli-tester/dist/utils/credential-check.d.ts.map +0 -1
- package/packages/cli-tester/dist/utils/credential-check.js +0 -230
- package/packages/cli-tester/dist/utils/credential-check.js.map +0 -1
- package/packages/cli-tester/dist/utils/socket-client.d.ts +0 -76
- package/packages/cli-tester/dist/utils/socket-client.d.ts.map +0 -1
- package/packages/cli-tester/dist/utils/socket-client.js +0 -153
- package/packages/cli-tester/dist/utils/socket-client.js.map +0 -1
- package/packages/cli-tester/docker/Dockerfile +0 -61
- package/packages/cli-tester/docker/docker-compose.yml +0 -71
- package/packages/cli-tester/docker/entrypoint.sh +0 -58
- package/packages/cli-tester/package.json +0 -32
- package/packages/cli-tester/scripts/clear-auth.sh +0 -101
- package/packages/cli-tester/scripts/inject-message.sh +0 -42
- package/packages/cli-tester/scripts/start.sh +0 -71
- package/packages/cli-tester/scripts/test-cli.sh +0 -56
- package/packages/cli-tester/scripts/test-full-spawn.sh +0 -238
- package/packages/cli-tester/scripts/test-registration.sh +0 -182
- package/packages/cli-tester/scripts/test-setup-flow.sh +0 -202
- package/packages/cli-tester/scripts/test-spawn.sh +0 -140
- package/packages/cli-tester/scripts/test-with-daemon.sh +0 -247
- package/packages/cli-tester/scripts/verify-auth.sh +0 -112
- package/packages/cli-tester/src/index.ts +0 -40
- package/packages/cli-tester/src/utils/credential-check.ts +0 -284
- package/packages/cli-tester/src/utils/socket-client.ts +0 -211
- package/packages/cli-tester/tests/credential-check.test.ts +0 -56
- package/packages/cli-tester/tsconfig.json +0 -11
- package/packages/sdk/dist/browser-client.d.ts +0 -212
- package/packages/sdk/dist/browser-client.d.ts.map +0 -1
- package/packages/sdk/dist/browser-client.js +0 -750
- package/packages/sdk/dist/browser-client.js.map +0 -1
- package/packages/sdk/dist/browser-framing.d.ts +0 -46
- package/packages/sdk/dist/browser-framing.d.ts.map +0 -1
- package/packages/sdk/dist/browser-framing.js +0 -122
- package/packages/sdk/dist/browser-framing.js.map +0 -1
- package/packages/sdk/dist/standalone.d.ts +0 -89
- package/packages/sdk/dist/standalone.d.ts.map +0 -1
- package/packages/sdk/dist/standalone.js +0 -131
- package/packages/sdk/dist/standalone.js.map +0 -1
- package/packages/sdk/dist/transports/index.d.ts +0 -92
- package/packages/sdk/dist/transports/index.d.ts.map +0 -1
- package/packages/sdk/dist/transports/index.js +0 -129
- package/packages/sdk/dist/transports/index.js.map +0 -1
- package/packages/sdk/dist/transports/socket-transport.d.ts +0 -30
- package/packages/sdk/dist/transports/socket-transport.d.ts.map +0 -1
- package/packages/sdk/dist/transports/socket-transport.js +0 -94
- package/packages/sdk/dist/transports/socket-transport.js.map +0 -1
- package/packages/sdk/dist/transports/types.d.ts +0 -69
- package/packages/sdk/dist/transports/types.d.ts.map +0 -1
- package/packages/sdk/dist/transports/types.js +0 -10
- package/packages/sdk/dist/transports/types.js.map +0 -1
- package/packages/sdk/dist/transports/websocket-transport.d.ts +0 -55
- package/packages/sdk/dist/transports/websocket-transport.d.ts.map +0 -1
- package/packages/sdk/dist/transports/websocket-transport.js +0 -180
- package/packages/sdk/dist/transports/websocket-transport.js.map +0 -1
- package/packages/sdk/src/browser-client.ts +0 -985
- package/packages/sdk/src/browser-framing.test.ts +0 -115
- package/packages/sdk/src/browser-framing.ts +0 -150
- package/packages/sdk/src/standalone.ts +0 -183
- package/packages/sdk/src/transports/index.ts +0 -197
- package/packages/sdk/src/transports/socket-transport.ts +0 -115
- package/packages/sdk/src/transports/types.ts +0 -77
- package/packages/sdk/src/transports/websocket-transport.ts +0 -245
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Test agent registration flow - monitors what happens during spawn
|
|
3
|
-
# This tests the critical registration step that's timing out for cursor
|
|
4
|
-
#
|
|
5
|
-
# Usage: ./test-registration.sh <cli> [timeout_seconds]
|
|
6
|
-
# Example: ./test-registration.sh cursor 60
|
|
7
|
-
# DEBUG_SPAWN=1 ./test-registration.sh cursor
|
|
8
|
-
|
|
9
|
-
set -e
|
|
10
|
-
|
|
11
|
-
CLI=${1:-cursor}
|
|
12
|
-
TIMEOUT_SEC=${2:-60}
|
|
13
|
-
|
|
14
|
-
# Map CLI name to actual command
|
|
15
|
-
CLI_CMD="$CLI"
|
|
16
|
-
if [ "$CLI" = "cursor" ]; then
|
|
17
|
-
CLI_CMD="agent"
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
|
-
NAME="reg-test-${CLI}"
|
|
21
|
-
SOCKET="/tmp/relay-pty-${NAME}.sock"
|
|
22
|
-
|
|
23
|
-
# Test data directories (mimic real daemon structure)
|
|
24
|
-
TEST_DATA_DIR="/tmp/relay-registration-test"
|
|
25
|
-
AGENTS_FILE="$TEST_DATA_DIR/agents.json"
|
|
26
|
-
CONNECTED_FILE="$TEST_DATA_DIR/connected-agents.json"
|
|
27
|
-
|
|
28
|
-
# Create directories
|
|
29
|
-
mkdir -p "$TEST_DATA_DIR"
|
|
30
|
-
|
|
31
|
-
# Initialize empty registration files
|
|
32
|
-
echo '{"agents":[],"updatedAt":'$(date +%s000)'}' > "$CONNECTED_FILE"
|
|
33
|
-
echo '{}' > "$AGENTS_FILE"
|
|
34
|
-
|
|
35
|
-
# Cleanup function
|
|
36
|
-
cleanup() {
|
|
37
|
-
echo ""
|
|
38
|
-
echo "========================================"
|
|
39
|
-
echo " Final State"
|
|
40
|
-
echo "========================================"
|
|
41
|
-
echo ""
|
|
42
|
-
echo "Connected agents file ($CONNECTED_FILE):"
|
|
43
|
-
cat "$CONNECTED_FILE" 2>/dev/null | jq . 2>/dev/null || cat "$CONNECTED_FILE" 2>/dev/null || echo " (empty/missing)"
|
|
44
|
-
echo ""
|
|
45
|
-
echo "Agents registry file ($AGENTS_FILE):"
|
|
46
|
-
cat "$AGENTS_FILE" 2>/dev/null | jq . 2>/dev/null || cat "$AGENTS_FILE" 2>/dev/null || echo " (empty/missing)"
|
|
47
|
-
echo ""
|
|
48
|
-
echo "Cleaning up processes..."
|
|
49
|
-
rm -f "$SOCKET"
|
|
50
|
-
pkill -f "relay-pty.*${NAME}" 2>/dev/null || true
|
|
51
|
-
}
|
|
52
|
-
trap cleanup EXIT
|
|
53
|
-
|
|
54
|
-
# Remove stale socket
|
|
55
|
-
rm -f "$SOCKET"
|
|
56
|
-
|
|
57
|
-
echo "========================================"
|
|
58
|
-
echo " Registration Flow Test: $CLI"
|
|
59
|
-
echo "========================================"
|
|
60
|
-
echo ""
|
|
61
|
-
echo "This test monitors the registration files that the spawner polls."
|
|
62
|
-
echo "When the spawner times out, it's because these files don't show"
|
|
63
|
-
echo "the agent as registered within 30 seconds."
|
|
64
|
-
echo ""
|
|
65
|
-
echo "Test config:"
|
|
66
|
-
echo " CLI: $CLI_CMD"
|
|
67
|
-
echo " Name: $NAME"
|
|
68
|
-
echo " Socket: $SOCKET"
|
|
69
|
-
echo " Timeout: ${TIMEOUT_SEC}s"
|
|
70
|
-
echo " Connected file: $CONNECTED_FILE"
|
|
71
|
-
echo " Agents file: $AGENTS_FILE"
|
|
72
|
-
echo ""
|
|
73
|
-
|
|
74
|
-
# Build CLI arguments
|
|
75
|
-
CLI_ARGS=()
|
|
76
|
-
case $CLI in
|
|
77
|
-
claude)
|
|
78
|
-
CLI_ARGS+=(--dangerously-skip-permissions)
|
|
79
|
-
;;
|
|
80
|
-
cursor)
|
|
81
|
-
CLI_ARGS+=(--force)
|
|
82
|
-
;;
|
|
83
|
-
esac
|
|
84
|
-
|
|
85
|
-
echo "Command: $CLI_CMD ${CLI_ARGS[*]}"
|
|
86
|
-
echo ""
|
|
87
|
-
echo "========================================"
|
|
88
|
-
echo " Phase 1: Starting CLI"
|
|
89
|
-
echo "========================================"
|
|
90
|
-
echo ""
|
|
91
|
-
|
|
92
|
-
# Start relay-pty in background
|
|
93
|
-
RELAY_ARGS=(
|
|
94
|
-
--name "$NAME"
|
|
95
|
-
--socket "$SOCKET"
|
|
96
|
-
--idle-timeout 300
|
|
97
|
-
--json-output
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
if [ ${#CLI_ARGS[@]} -gt 0 ]; then
|
|
101
|
-
relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "${CLI_ARGS[@]}" 2>&1 &
|
|
102
|
-
else
|
|
103
|
-
relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" 2>&1 &
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
PTY_PID=$!
|
|
107
|
-
echo "[$(date +%T)] Started relay-pty (PID: $PTY_PID)"
|
|
108
|
-
|
|
109
|
-
# Give it a moment to start
|
|
110
|
-
sleep 1
|
|
111
|
-
|
|
112
|
-
# Check if process is still running
|
|
113
|
-
if ! kill -0 $PTY_PID 2>/dev/null; then
|
|
114
|
-
echo "[$(date +%T)] ERROR: relay-pty exited immediately"
|
|
115
|
-
wait $PTY_PID || true
|
|
116
|
-
exit 1
|
|
117
|
-
fi
|
|
118
|
-
|
|
119
|
-
echo "[$(date +%T)] relay-pty is running"
|
|
120
|
-
echo ""
|
|
121
|
-
|
|
122
|
-
echo "========================================"
|
|
123
|
-
echo " Phase 2: Monitoring Registration"
|
|
124
|
-
echo "========================================"
|
|
125
|
-
echo ""
|
|
126
|
-
echo "Polling for agent registration (timeout: ${TIMEOUT_SEC}s)..."
|
|
127
|
-
echo "In a real spawn, the daemon would update these files."
|
|
128
|
-
echo ""
|
|
129
|
-
|
|
130
|
-
# Poll for registration (simulating what spawner does)
|
|
131
|
-
START_TIME=$(date +%s)
|
|
132
|
-
POLL_COUNT=0
|
|
133
|
-
|
|
134
|
-
while true; do
|
|
135
|
-
POLL_COUNT=$((POLL_COUNT + 1))
|
|
136
|
-
CURRENT_TIME=$(date +%s)
|
|
137
|
-
ELAPSED=$((CURRENT_TIME - START_TIME))
|
|
138
|
-
|
|
139
|
-
# Check if process is still running
|
|
140
|
-
if ! kill -0 $PTY_PID 2>/dev/null; then
|
|
141
|
-
echo ""
|
|
142
|
-
echo "[$(date +%T)] ERROR: relay-pty exited after ${ELAPSED}s"
|
|
143
|
-
echo ""
|
|
144
|
-
echo "This is likely the issue - the CLI crashed or exited before registration."
|
|
145
|
-
echo "Check the output above for error messages."
|
|
146
|
-
wait $PTY_PID || true
|
|
147
|
-
exit 1
|
|
148
|
-
fi
|
|
149
|
-
|
|
150
|
-
# Check socket exists
|
|
151
|
-
if [ -S "$SOCKET" ]; then
|
|
152
|
-
# Try to get status from socket
|
|
153
|
-
STATUS=$(echo '{"type":"status"}' | timeout 2 nc -U "$SOCKET" 2>/dev/null || echo "timeout")
|
|
154
|
-
if [ "$STATUS" != "timeout" ]; then
|
|
155
|
-
echo "[$(date +%T)] Poll #$POLL_COUNT: Socket active, status: $(echo "$STATUS" | head -c 100)..."
|
|
156
|
-
else
|
|
157
|
-
echo "[$(date +%T)] Poll #$POLL_COUNT: Socket exists but no response"
|
|
158
|
-
fi
|
|
159
|
-
else
|
|
160
|
-
echo "[$(date +%T)] Poll #$POLL_COUNT: Socket not yet created"
|
|
161
|
-
fi
|
|
162
|
-
|
|
163
|
-
# Check timeout
|
|
164
|
-
if [ $ELAPSED -ge $TIMEOUT_SEC ]; then
|
|
165
|
-
echo ""
|
|
166
|
-
echo "========================================"
|
|
167
|
-
echo " TIMEOUT after ${ELAPSED}s"
|
|
168
|
-
echo "========================================"
|
|
169
|
-
echo ""
|
|
170
|
-
echo "This simulates what happens when the spawner times out."
|
|
171
|
-
echo "In a real scenario, the daemon would need to see this agent"
|
|
172
|
-
echo "and update the registration files within 30 seconds."
|
|
173
|
-
echo ""
|
|
174
|
-
echo "To debug further:"
|
|
175
|
-
echo " 1. Check if the CLI started correctly (auth issues?)"
|
|
176
|
-
echo " 2. Check if relay-pty connected to the daemon"
|
|
177
|
-
echo " 3. Check daemon logs for this agent name"
|
|
178
|
-
exit 1
|
|
179
|
-
fi
|
|
180
|
-
|
|
181
|
-
sleep 1
|
|
182
|
-
done
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Test the EXACT setup terminal flow used for provider onboarding
|
|
3
|
-
# This replicates what TerminalProviderSetup.tsx does when you click "Connect"
|
|
4
|
-
#
|
|
5
|
-
# The setup flow:
|
|
6
|
-
# 1. Frontend calls POST /api/workspaces/{id}/agents with { name, provider, interactive: true }
|
|
7
|
-
# 2. Spawner runs: relay-pty --name __setup__cursor-xxx -- agent (NO --force flag!)
|
|
8
|
-
# 3. Spawner waits up to 30s for agent to register with daemon
|
|
9
|
-
# 4. If timeout, spawn fails with "Agent registration timeout"
|
|
10
|
-
#
|
|
11
|
-
# Usage: ./test-setup-flow.sh <cli> [timeout_seconds]
|
|
12
|
-
# Example: ./test-setup-flow.sh cursor 60
|
|
13
|
-
# DEBUG=1 ./test-setup-flow.sh cursor
|
|
14
|
-
|
|
15
|
-
set -e
|
|
16
|
-
|
|
17
|
-
CLI=${1:-cursor}
|
|
18
|
-
TIMEOUT_SEC=${2:-60}
|
|
19
|
-
|
|
20
|
-
# Generate setup agent name like frontend does
|
|
21
|
-
TIMESTAMP=$(date +%s | tail -c 8)
|
|
22
|
-
RANDOM_SUFFIX=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c 4)
|
|
23
|
-
NAME="__setup__${CLI}-${TIMESTAMP}${RANDOM_SUFFIX}"
|
|
24
|
-
|
|
25
|
-
# Map CLI to command
|
|
26
|
-
CLI_CMD="$CLI"
|
|
27
|
-
if [ "$CLI" = "cursor" ]; then
|
|
28
|
-
CLI_CMD="agent"
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
SOCKET="/tmp/relay-pty-${NAME}.sock"
|
|
32
|
-
|
|
33
|
-
echo "========================================"
|
|
34
|
-
echo " Setup Terminal Flow Test: $CLI"
|
|
35
|
-
echo "========================================"
|
|
36
|
-
echo ""
|
|
37
|
-
echo "This test replicates the EXACT flow from TerminalProviderSetup.tsx"
|
|
38
|
-
echo ""
|
|
39
|
-
echo "Key difference from test-spawn.sh:"
|
|
40
|
-
echo " - interactive=true means NO auto-accept flags (--force, etc.)"
|
|
41
|
-
echo " - This is how setup terminals work - user must respond to prompts"
|
|
42
|
-
echo ""
|
|
43
|
-
echo "Configuration:"
|
|
44
|
-
echo " CLI: $CLI_CMD"
|
|
45
|
-
echo " Agent name: $NAME"
|
|
46
|
-
echo " Socket: $SOCKET"
|
|
47
|
-
echo " Interactive: true (no --force, no --dangerously-skip-permissions)"
|
|
48
|
-
echo " Timeout: ${TIMEOUT_SEC}s"
|
|
49
|
-
echo ""
|
|
50
|
-
|
|
51
|
-
# Interactive mode - no auto-accept flags, but some CLIs need auth subcommands
|
|
52
|
-
CLI_ARGS=()
|
|
53
|
-
case $CLI in
|
|
54
|
-
copilot)
|
|
55
|
-
CLI_ARGS+=(auth login)
|
|
56
|
-
;;
|
|
57
|
-
opencode)
|
|
58
|
-
CLI_ARGS+=(auth login)
|
|
59
|
-
;;
|
|
60
|
-
droid)
|
|
61
|
-
CLI_ARGS+=(--login)
|
|
62
|
-
;;
|
|
63
|
-
codex)
|
|
64
|
-
CLI_ARGS+=(login)
|
|
65
|
-
;;
|
|
66
|
-
esac
|
|
67
|
-
|
|
68
|
-
if [ ${#CLI_ARGS[@]} -gt 0 ]; then
|
|
69
|
-
echo "Command: relay-pty --name $NAME -- $CLI_CMD ${CLI_ARGS[*]}"
|
|
70
|
-
else
|
|
71
|
-
echo "Command: relay-pty --name $NAME -- $CLI_CMD"
|
|
72
|
-
fi
|
|
73
|
-
echo " (no auto-accept flags because interactive=true)"
|
|
74
|
-
echo ""
|
|
75
|
-
|
|
76
|
-
# Cleanup
|
|
77
|
-
cleanup() {
|
|
78
|
-
echo ""
|
|
79
|
-
echo "Cleaning up..."
|
|
80
|
-
rm -f "$SOCKET"
|
|
81
|
-
if [ -n "$PTY_PID" ]; then
|
|
82
|
-
kill $PTY_PID 2>/dev/null || true
|
|
83
|
-
fi
|
|
84
|
-
}
|
|
85
|
-
trap cleanup EXIT
|
|
86
|
-
|
|
87
|
-
# Remove stale socket
|
|
88
|
-
rm -f "$SOCKET"
|
|
89
|
-
|
|
90
|
-
echo "========================================"
|
|
91
|
-
echo " Starting Setup Terminal"
|
|
92
|
-
echo "========================================"
|
|
93
|
-
echo ""
|
|
94
|
-
|
|
95
|
-
# Build relay-pty args
|
|
96
|
-
RELAY_ARGS=(
|
|
97
|
-
--name "$NAME"
|
|
98
|
-
--socket "$SOCKET"
|
|
99
|
-
--idle-timeout 300
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
# Add verbose output
|
|
103
|
-
if [ -n "$DEBUG" ]; then
|
|
104
|
-
RELAY_ARGS+=(--json-output)
|
|
105
|
-
echo "[DEBUG] JSON output enabled"
|
|
106
|
-
echo ""
|
|
107
|
-
fi
|
|
108
|
-
|
|
109
|
-
# Start in background so we can monitor
|
|
110
|
-
if [ ${#CLI_ARGS[@]} -gt 0 ]; then
|
|
111
|
-
relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "${CLI_ARGS[@]}" 2>&1 &
|
|
112
|
-
else
|
|
113
|
-
relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" 2>&1 &
|
|
114
|
-
fi
|
|
115
|
-
PTY_PID=$!
|
|
116
|
-
|
|
117
|
-
echo "[$(date +%T)] Started relay-pty (PID: $PTY_PID)"
|
|
118
|
-
echo ""
|
|
119
|
-
echo "The CLI is now running. In a real setup flow, you would see"
|
|
120
|
-
echo "the terminal output in the browser and respond to prompts there."
|
|
121
|
-
echo ""
|
|
122
|
-
echo "Watch for:"
|
|
123
|
-
echo " - Trust prompts (workspace trust, etc.)"
|
|
124
|
-
echo " - Auth URL being printed"
|
|
125
|
-
echo " - Any errors or crashes"
|
|
126
|
-
echo ""
|
|
127
|
-
|
|
128
|
-
# Give it a moment
|
|
129
|
-
sleep 2
|
|
130
|
-
|
|
131
|
-
# Check if still running
|
|
132
|
-
if ! kill -0 $PTY_PID 2>/dev/null; then
|
|
133
|
-
echo "[$(date +%T)] ERROR: relay-pty exited immediately!"
|
|
134
|
-
echo ""
|
|
135
|
-
echo "This means the CLI crashed on startup."
|
|
136
|
-
echo "Common causes:"
|
|
137
|
-
echo " - CLI not installed"
|
|
138
|
-
echo " - Missing dependencies"
|
|
139
|
-
echo " - Permission issues"
|
|
140
|
-
exit 1
|
|
141
|
-
fi
|
|
142
|
-
|
|
143
|
-
echo "========================================"
|
|
144
|
-
echo " Monitoring (${TIMEOUT_SEC}s timeout)"
|
|
145
|
-
echo "========================================"
|
|
146
|
-
echo ""
|
|
147
|
-
echo "In a real spawn, the spawner would poll registration files here."
|
|
148
|
-
echo "The timeout you're seeing is because this polling fails."
|
|
149
|
-
echo ""
|
|
150
|
-
echo "Press Ctrl+C to stop, or wait for timeout."
|
|
151
|
-
echo ""
|
|
152
|
-
|
|
153
|
-
START_TIME=$(date +%s)
|
|
154
|
-
|
|
155
|
-
while true; do
|
|
156
|
-
CURRENT_TIME=$(date +%s)
|
|
157
|
-
ELAPSED=$((CURRENT_TIME - START_TIME))
|
|
158
|
-
|
|
159
|
-
# Check process
|
|
160
|
-
if ! kill -0 $PTY_PID 2>/dev/null; then
|
|
161
|
-
echo ""
|
|
162
|
-
echo "[$(date +%T)] CLI exited after ${ELAPSED}s"
|
|
163
|
-
echo ""
|
|
164
|
-
echo "If this was unexpected, check the output above for errors."
|
|
165
|
-
echo "If the CLI authenticated and exited normally, that's OK."
|
|
166
|
-
exit 0
|
|
167
|
-
fi
|
|
168
|
-
|
|
169
|
-
# Check socket
|
|
170
|
-
if [ -S "$SOCKET" ]; then
|
|
171
|
-
STATUS=$(echo '{"type":"status"}' | timeout 2 nc -U "$SOCKET" 2>/dev/null | head -1 || echo "")
|
|
172
|
-
if [ -n "$STATUS" ]; then
|
|
173
|
-
IDLE=$(echo "$STATUS" | grep -o '"agent_idle":[^,}]*' | cut -d: -f2 || echo "unknown")
|
|
174
|
-
echo "[$(date +%T)] +${ELAPSED}s: Socket OK, idle=$IDLE"
|
|
175
|
-
else
|
|
176
|
-
echo "[$(date +%T)] +${ELAPSED}s: Socket exists, no status response"
|
|
177
|
-
fi
|
|
178
|
-
else
|
|
179
|
-
echo "[$(date +%T)] +${ELAPSED}s: Waiting for socket..."
|
|
180
|
-
fi
|
|
181
|
-
|
|
182
|
-
# Timeout check
|
|
183
|
-
if [ $ELAPSED -ge $TIMEOUT_SEC ]; then
|
|
184
|
-
echo ""
|
|
185
|
-
echo "========================================"
|
|
186
|
-
echo " Test Complete (${TIMEOUT_SEC}s elapsed)"
|
|
187
|
-
echo "========================================"
|
|
188
|
-
echo ""
|
|
189
|
-
echo "The CLI ran for ${TIMEOUT_SEC}s without exiting."
|
|
190
|
-
echo ""
|
|
191
|
-
echo "If this were a real spawn:"
|
|
192
|
-
echo " - The spawner would have timed out at 30s"
|
|
193
|
-
echo " - You'd see 'Agent registration timeout' error"
|
|
194
|
-
echo ""
|
|
195
|
-
echo "To continue interacting with the CLI, the process"
|
|
196
|
-
echo "is still running. Press Enter to stop it."
|
|
197
|
-
read -r
|
|
198
|
-
exit 0
|
|
199
|
-
fi
|
|
200
|
-
|
|
201
|
-
sleep 3
|
|
202
|
-
done
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Test CLI spawn flow - simulates real spawner behavior
|
|
3
|
-
# This is a more realistic test that mimics what AgentSpawner does
|
|
4
|
-
#
|
|
5
|
-
# Usage: ./test-spawn.sh <cli> [--interactive]
|
|
6
|
-
# Example: ./test-spawn.sh cursor
|
|
7
|
-
# ./test-spawn.sh cursor --interactive
|
|
8
|
-
# DEBUG_SPAWN=1 ./test-spawn.sh cursor
|
|
9
|
-
|
|
10
|
-
set -e
|
|
11
|
-
|
|
12
|
-
CLI=${1:-cursor}
|
|
13
|
-
INTERACTIVE=""
|
|
14
|
-
if [ "$2" = "--interactive" ]; then
|
|
15
|
-
INTERACTIVE="1"
|
|
16
|
-
fi
|
|
17
|
-
|
|
18
|
-
# Map CLI name to actual command (cursor installs as 'agent')
|
|
19
|
-
CLI_CMD="$CLI"
|
|
20
|
-
if [ "$CLI" = "cursor" ]; then
|
|
21
|
-
CLI_CMD="agent"
|
|
22
|
-
fi
|
|
23
|
-
|
|
24
|
-
NAME="spawn-test-${CLI}"
|
|
25
|
-
SOCKET="/tmp/relay-pty-${NAME}.sock"
|
|
26
|
-
RELAY_DATA_DIR="/tmp/relay-test-data"
|
|
27
|
-
|
|
28
|
-
# Create test data directories
|
|
29
|
-
mkdir -p "$RELAY_DATA_DIR"
|
|
30
|
-
|
|
31
|
-
# Cleanup function
|
|
32
|
-
cleanup() {
|
|
33
|
-
echo ""
|
|
34
|
-
echo "Cleaning up..."
|
|
35
|
-
rm -f "$SOCKET"
|
|
36
|
-
pkill -f "relay-pty.*${NAME}" 2>/dev/null || true
|
|
37
|
-
}
|
|
38
|
-
trap cleanup EXIT
|
|
39
|
-
|
|
40
|
-
# Remove stale socket if exists
|
|
41
|
-
rm -f "$SOCKET"
|
|
42
|
-
|
|
43
|
-
echo "========================================"
|
|
44
|
-
echo " Spawn Flow Test: $CLI"
|
|
45
|
-
echo "========================================"
|
|
46
|
-
echo ""
|
|
47
|
-
echo "This test simulates what AgentSpawner.spawn() does:"
|
|
48
|
-
echo " 1. Builds command with appropriate flags"
|
|
49
|
-
echo " 2. Starts relay-pty with the CLI"
|
|
50
|
-
echo " 3. Monitors for daemon registration"
|
|
51
|
-
echo ""
|
|
52
|
-
echo "Session name: $NAME"
|
|
53
|
-
echo "Socket path: $SOCKET"
|
|
54
|
-
echo "Data dir: $RELAY_DATA_DIR"
|
|
55
|
-
echo ""
|
|
56
|
-
|
|
57
|
-
# Build CLI arguments exactly like spawner does
|
|
58
|
-
CLI_ARGS=()
|
|
59
|
-
|
|
60
|
-
# Add args based on CLI type
|
|
61
|
-
case $CLI in
|
|
62
|
-
claude)
|
|
63
|
-
# Claude: add --dangerously-skip-permissions in non-interactive mode
|
|
64
|
-
if [ -z "$INTERACTIVE" ]; then
|
|
65
|
-
CLI_ARGS+=(--dangerously-skip-permissions)
|
|
66
|
-
echo "[spawn] Adding --dangerously-skip-permissions (non-interactive mode)"
|
|
67
|
-
fi
|
|
68
|
-
;;
|
|
69
|
-
cursor)
|
|
70
|
-
# Cursor: add --force in non-interactive mode
|
|
71
|
-
if [ -z "$INTERACTIVE" ]; then
|
|
72
|
-
CLI_ARGS+=(--force)
|
|
73
|
-
echo "[spawn] Adding --force (non-interactive mode)"
|
|
74
|
-
fi
|
|
75
|
-
;;
|
|
76
|
-
codex)
|
|
77
|
-
# Codex: supports device flow for headless
|
|
78
|
-
if [ -z "$INTERACTIVE" ]; then
|
|
79
|
-
CLI_ARGS+=(login --device-auth)
|
|
80
|
-
echo "[spawn] Adding login --device-auth (non-interactive mode)"
|
|
81
|
-
fi
|
|
82
|
-
;;
|
|
83
|
-
copilot)
|
|
84
|
-
# Copilot: needs auth login command, device flow for headless
|
|
85
|
-
if [ -z "$INTERACTIVE" ]; then
|
|
86
|
-
CLI_ARGS+=(auth login --device)
|
|
87
|
-
echo "[spawn] Adding auth login --device (non-interactive mode)"
|
|
88
|
-
else
|
|
89
|
-
CLI_ARGS+=(auth login)
|
|
90
|
-
echo "[spawn] Adding auth login (interactive mode)"
|
|
91
|
-
fi
|
|
92
|
-
;;
|
|
93
|
-
opencode)
|
|
94
|
-
# OpenCode: needs auth login command
|
|
95
|
-
CLI_ARGS+=(auth login)
|
|
96
|
-
echo "[spawn] Adding auth login"
|
|
97
|
-
;;
|
|
98
|
-
droid)
|
|
99
|
-
# Droid: needs --login flag
|
|
100
|
-
CLI_ARGS+=(--login)
|
|
101
|
-
echo "[spawn] Adding --login"
|
|
102
|
-
;;
|
|
103
|
-
esac
|
|
104
|
-
|
|
105
|
-
echo ""
|
|
106
|
-
echo "Command: $CLI_CMD ${CLI_ARGS[*]}"
|
|
107
|
-
echo ""
|
|
108
|
-
|
|
109
|
-
# Build relay-pty args
|
|
110
|
-
RELAY_ARGS=(
|
|
111
|
-
--name "$NAME"
|
|
112
|
-
--socket "$SOCKET"
|
|
113
|
-
--idle-timeout 300
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
# Enable JSON output for debugging
|
|
117
|
-
if [ -n "$DEBUG_SPAWN" ] || [ -n "$DEBUG" ]; then
|
|
118
|
-
RELAY_ARGS+=(--json-output)
|
|
119
|
-
echo "[debug] JSON output enabled"
|
|
120
|
-
fi
|
|
121
|
-
|
|
122
|
-
echo "========================================"
|
|
123
|
-
echo " Starting CLI with relay-pty"
|
|
124
|
-
echo "========================================"
|
|
125
|
-
echo ""
|
|
126
|
-
echo "Press Ctrl+C to stop."
|
|
127
|
-
echo ""
|
|
128
|
-
echo "In another terminal, you can:"
|
|
129
|
-
echo " - Check socket status: echo '{\"type\":\"status\"}' | nc -U $SOCKET"
|
|
130
|
-
echo " - Inject message: echo '{\"type\":\"inject\",\"body\":\"test\"}' | nc -U $SOCKET"
|
|
131
|
-
echo " - Monitor registration: watch -n1 'cat $RELAY_DATA_DIR/*.json 2>/dev/null || echo no files'"
|
|
132
|
-
echo ""
|
|
133
|
-
|
|
134
|
-
# Start the CLI with relay-pty
|
|
135
|
-
# In a real spawn, this would be done via AgentSpawner which handles registration waiting
|
|
136
|
-
if [ ${#CLI_ARGS[@]} -gt 0 ]; then
|
|
137
|
-
exec relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD" "${CLI_ARGS[@]}"
|
|
138
|
-
else
|
|
139
|
-
exec relay-pty "${RELAY_ARGS[@]}" -- "$CLI_CMD"
|
|
140
|
-
fi
|