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,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unix/TCP Socket Transport for Node.js environments.
|
|
3
|
-
* @agent-relay/sdk
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import net from 'node:net';
|
|
7
|
-
import type { Transport, TransportConfig, TransportEvents, TransportState } from './types.js';
|
|
8
|
-
|
|
9
|
-
export interface SocketTransportConfig extends TransportConfig {
|
|
10
|
-
/** Unix socket path or TCP host:port */
|
|
11
|
-
socketPath: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Socket-based transport for Unix sockets and TCP connections.
|
|
16
|
-
* This is the default transport for Node.js environments.
|
|
17
|
-
*/
|
|
18
|
-
export class SocketTransport implements Transport {
|
|
19
|
-
private socket?: net.Socket;
|
|
20
|
-
private config: SocketTransportConfig;
|
|
21
|
-
private events: TransportEvents = {};
|
|
22
|
-
private _state: TransportState = 'disconnected';
|
|
23
|
-
|
|
24
|
-
constructor(config: SocketTransportConfig) {
|
|
25
|
-
this.config = {
|
|
26
|
-
connectTimeout: 5000,
|
|
27
|
-
...config,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
get state(): TransportState {
|
|
32
|
-
return this._state;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
setEvents(events: TransportEvents): void {
|
|
36
|
-
this.events = events;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
connect(): Promise<void> {
|
|
40
|
-
if (this._state !== 'disconnected') {
|
|
41
|
-
return Promise.resolve();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return new Promise((resolve, reject) => {
|
|
45
|
-
this._state = 'connecting';
|
|
46
|
-
|
|
47
|
-
const timeout = setTimeout(() => {
|
|
48
|
-
if (this._state === 'connecting') {
|
|
49
|
-
this.socket?.destroy();
|
|
50
|
-
this._state = 'disconnected';
|
|
51
|
-
reject(new Error('Connection timeout'));
|
|
52
|
-
}
|
|
53
|
-
}, this.config.connectTimeout);
|
|
54
|
-
|
|
55
|
-
this.socket = net.createConnection(this.config.socketPath, () => {
|
|
56
|
-
clearTimeout(timeout);
|
|
57
|
-
this._state = 'connected';
|
|
58
|
-
this.events.onConnect?.();
|
|
59
|
-
resolve();
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
this.socket.on('data', (data) => {
|
|
63
|
-
// Convert Buffer to Uint8Array for consistent interface
|
|
64
|
-
this.events.onData?.(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
this.socket.on('close', () => {
|
|
68
|
-
this._state = 'disconnected';
|
|
69
|
-
this.events.onClose?.();
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
this.socket.on('error', (err) => {
|
|
73
|
-
clearTimeout(timeout);
|
|
74
|
-
if (this._state === 'connecting') {
|
|
75
|
-
this._state = 'disconnected';
|
|
76
|
-
reject(err);
|
|
77
|
-
}
|
|
78
|
-
this.events.onError?.(err);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
disconnect(): void {
|
|
84
|
-
if (!this.socket || this._state === 'disconnected') {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
this._state = 'closing';
|
|
89
|
-
this.socket.end();
|
|
90
|
-
this.socket = undefined;
|
|
91
|
-
this._state = 'disconnected';
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
send(data: Uint8Array | Buffer): boolean {
|
|
95
|
-
if (!this.socket || this._state !== 'connected') {
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
try {
|
|
100
|
-
// Ensure we're sending a Buffer
|
|
101
|
-
const buffer = data instanceof Buffer ? data : Buffer.from(data);
|
|
102
|
-
this.socket.write(buffer);
|
|
103
|
-
return true;
|
|
104
|
-
} catch {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Create a socket transport for Unix/TCP connections.
|
|
112
|
-
*/
|
|
113
|
-
export function createSocketTransport(socketPath: string, config?: TransportConfig): SocketTransport {
|
|
114
|
-
return new SocketTransport({ socketPath, ...config });
|
|
115
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Transport abstraction for relay client communication.
|
|
3
|
-
* @agent-relay/sdk
|
|
4
|
-
*
|
|
5
|
-
* Defines the interface for different transport implementations:
|
|
6
|
-
* - SocketTransport: Unix/TCP sockets (Node.js)
|
|
7
|
-
* - WebSocketTransport: WebSocket connections (Node.js and Browser)
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Transport connection state.
|
|
12
|
-
*/
|
|
13
|
-
export type TransportState = 'disconnected' | 'connecting' | 'connected' | 'closing';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Transport event handlers.
|
|
17
|
-
*/
|
|
18
|
-
export interface TransportEvents {
|
|
19
|
-
/** Called when transport connects successfully */
|
|
20
|
-
onConnect?: () => void;
|
|
21
|
-
/** Called when transport receives data */
|
|
22
|
-
onData?: (data: Uint8Array) => void;
|
|
23
|
-
/** Called when transport disconnects */
|
|
24
|
-
onClose?: () => void;
|
|
25
|
-
/** Called when transport encounters an error */
|
|
26
|
-
onError?: (error: Error) => void;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Transport configuration options.
|
|
31
|
-
*/
|
|
32
|
-
export interface TransportConfig {
|
|
33
|
-
/** Connection timeout in milliseconds */
|
|
34
|
-
connectTimeout?: number;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Transport interface for relay client communication.
|
|
39
|
-
*
|
|
40
|
-
* Implementations must handle:
|
|
41
|
-
* - Connection lifecycle (connect, disconnect)
|
|
42
|
-
* - Binary data transmission
|
|
43
|
-
* - Event callbacks for state changes
|
|
44
|
-
*/
|
|
45
|
-
export interface Transport {
|
|
46
|
-
/** Current connection state */
|
|
47
|
-
readonly state: TransportState;
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Connect to the relay endpoint.
|
|
51
|
-
* @throws Error if connection fails
|
|
52
|
-
*/
|
|
53
|
-
connect(): Promise<void>;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Disconnect from the relay.
|
|
57
|
-
*/
|
|
58
|
-
disconnect(): void;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Send binary data to the relay.
|
|
62
|
-
* @param data - Data to send (Buffer or Uint8Array)
|
|
63
|
-
* @returns true if data was queued for sending
|
|
64
|
-
*/
|
|
65
|
-
send(data: Uint8Array | Buffer): boolean;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Set event handlers.
|
|
69
|
-
* @param events - Event handler callbacks
|
|
70
|
-
*/
|
|
71
|
-
setEvents(events: TransportEvents): void;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Transport factory function type.
|
|
76
|
-
*/
|
|
77
|
-
export type TransportFactory = (config?: TransportConfig) => Transport;
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Transport for browser and Node.js environments.
|
|
3
|
-
* @agent-relay/sdk
|
|
4
|
-
*
|
|
5
|
-
* Uses native WebSocket in browsers and 'ws' package in Node.js.
|
|
6
|
-
* The transport expects the daemon to have a WebSocket endpoint (e.g., /ws).
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { Transport, TransportConfig, TransportEvents, TransportState } from './types.js';
|
|
10
|
-
|
|
11
|
-
export interface WebSocketTransportConfig extends TransportConfig {
|
|
12
|
-
/** WebSocket URL (e.g., ws://localhost:3888/ws) */
|
|
13
|
-
url: string;
|
|
14
|
-
/** Protocols to use in WebSocket handshake */
|
|
15
|
-
protocols?: string | string[];
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// Simple close event type (works in both browser and Node.js)
|
|
19
|
-
interface CloseEventLike {
|
|
20
|
-
code?: number;
|
|
21
|
-
reason?: string;
|
|
22
|
-
wasClean?: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// Simple message event type (works in both browser and Node.js)
|
|
26
|
-
interface MessageEventLike {
|
|
27
|
-
data: ArrayBuffer | string | Buffer;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Type for WebSocket (works in both browser and Node.js with 'ws')
|
|
31
|
-
interface WebSocketLike {
|
|
32
|
-
readyState: number;
|
|
33
|
-
CONNECTING: number;
|
|
34
|
-
OPEN: number;
|
|
35
|
-
CLOSING: number;
|
|
36
|
-
CLOSED: number;
|
|
37
|
-
send(data: ArrayBuffer | Uint8Array | string): void;
|
|
38
|
-
close(): void;
|
|
39
|
-
onopen: ((ev: Event) => void) | null;
|
|
40
|
-
onclose: ((ev: CloseEventLike) => void) | null;
|
|
41
|
-
onerror: ((ev: Event | Error) => void) | null;
|
|
42
|
-
onmessage: ((ev: MessageEventLike) => void) | null;
|
|
43
|
-
binaryType: string;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Constructor type for WebSocket
|
|
47
|
-
type WebSocketConstructor = new (url: string, protocols?: string | string[]) => WebSocketLike;
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* WebSocket-based transport for browser and Node.js.
|
|
51
|
-
*
|
|
52
|
-
* In browsers, uses native WebSocket.
|
|
53
|
-
* In Node.js, requires 'ws' package (optional dependency).
|
|
54
|
-
*/
|
|
55
|
-
export class WebSocketTransport implements Transport {
|
|
56
|
-
private ws?: WebSocketLike;
|
|
57
|
-
private config: WebSocketTransportConfig;
|
|
58
|
-
private events: TransportEvents = {};
|
|
59
|
-
private _state: TransportState = 'disconnected';
|
|
60
|
-
private WebSocketImpl?: WebSocketConstructor;
|
|
61
|
-
|
|
62
|
-
constructor(config: WebSocketTransportConfig) {
|
|
63
|
-
this.config = {
|
|
64
|
-
connectTimeout: 5000,
|
|
65
|
-
...config,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
get state(): TransportState {
|
|
70
|
-
return this._state;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
setEvents(events: TransportEvents): void {
|
|
74
|
-
this.events = events;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Get WebSocket implementation (native or 'ws' package).
|
|
79
|
-
*/
|
|
80
|
-
private async getWebSocketImpl(): Promise<WebSocketConstructor> {
|
|
81
|
-
if (this.WebSocketImpl) {
|
|
82
|
-
return this.WebSocketImpl;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Check for browser environment
|
|
86
|
-
if (typeof globalThis !== 'undefined' && 'WebSocket' in globalThis) {
|
|
87
|
-
this.WebSocketImpl = (globalThis as { WebSocket: WebSocketConstructor }).WebSocket;
|
|
88
|
-
return this.WebSocketImpl;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Node.js environment - try to load 'ws' package
|
|
92
|
-
try {
|
|
93
|
-
// Dynamic import of 'ws' for Node.js
|
|
94
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
|
-
const wsModule = await import('ws' as any) as any;
|
|
96
|
-
const impl = wsModule.default || wsModule.WebSocket || wsModule;
|
|
97
|
-
if (!impl) {
|
|
98
|
-
throw new Error('ws module loaded but WebSocket constructor not found');
|
|
99
|
-
}
|
|
100
|
-
this.WebSocketImpl = impl as WebSocketConstructor;
|
|
101
|
-
return this.WebSocketImpl;
|
|
102
|
-
} catch {
|
|
103
|
-
throw new Error(
|
|
104
|
-
'WebSocket not available. In Node.js, install the "ws" package:\n' +
|
|
105
|
-
' npm install ws\n\n' +
|
|
106
|
-
'In browsers, native WebSocket should be available.'
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
async connect(): Promise<void> {
|
|
112
|
-
if (this._state !== 'disconnected') {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const WebSocketImpl = await this.getWebSocketImpl();
|
|
117
|
-
|
|
118
|
-
return new Promise((resolve, reject) => {
|
|
119
|
-
this._state = 'connecting';
|
|
120
|
-
|
|
121
|
-
const timeout = setTimeout(() => {
|
|
122
|
-
if (this._state === 'connecting') {
|
|
123
|
-
this.ws?.close();
|
|
124
|
-
this._state = 'disconnected';
|
|
125
|
-
reject(new Error('Connection timeout'));
|
|
126
|
-
}
|
|
127
|
-
}, this.config.connectTimeout);
|
|
128
|
-
|
|
129
|
-
try {
|
|
130
|
-
this.ws = new WebSocketImpl(this.config.url, this.config.protocols);
|
|
131
|
-
this.ws.binaryType = 'arraybuffer';
|
|
132
|
-
|
|
133
|
-
this.ws.onopen = () => {
|
|
134
|
-
clearTimeout(timeout);
|
|
135
|
-
this._state = 'connected';
|
|
136
|
-
this.events.onConnect?.();
|
|
137
|
-
resolve();
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
this.ws.onmessage = (event: MessageEventLike) => {
|
|
141
|
-
// Handle binary data
|
|
142
|
-
if (event.data instanceof ArrayBuffer) {
|
|
143
|
-
this.events.onData?.(new Uint8Array(event.data));
|
|
144
|
-
} else if (typeof event.data === 'string') {
|
|
145
|
-
// Convert string to Uint8Array (shouldn't happen with binaryType = 'arraybuffer')
|
|
146
|
-
const encoder = new TextEncoder();
|
|
147
|
-
this.events.onData?.(encoder.encode(event.data));
|
|
148
|
-
} else if (event.data && typeof (event.data as Buffer).buffer !== 'undefined') {
|
|
149
|
-
// Handle Node.js Buffer
|
|
150
|
-
const buf = event.data as Buffer;
|
|
151
|
-
this.events.onData?.(new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
this.ws.onclose = () => {
|
|
156
|
-
clearTimeout(timeout);
|
|
157
|
-
this._state = 'disconnected';
|
|
158
|
-
this.events.onClose?.();
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
this.ws.onerror = (event: Event | Error) => {
|
|
162
|
-
clearTimeout(timeout);
|
|
163
|
-
const error = event instanceof Error
|
|
164
|
-
? event
|
|
165
|
-
: new Error('WebSocket error');
|
|
166
|
-
if (this._state === 'connecting') {
|
|
167
|
-
this._state = 'disconnected';
|
|
168
|
-
reject(error);
|
|
169
|
-
}
|
|
170
|
-
this.events.onError?.(error);
|
|
171
|
-
};
|
|
172
|
-
} catch (err) {
|
|
173
|
-
clearTimeout(timeout);
|
|
174
|
-
this._state = 'disconnected';
|
|
175
|
-
reject(err instanceof Error ? err : new Error(String(err)));
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
disconnect(): void {
|
|
181
|
-
if (!this.ws || this._state === 'disconnected') {
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
this._state = 'closing';
|
|
186
|
-
this.ws.close();
|
|
187
|
-
this.ws = undefined;
|
|
188
|
-
this._state = 'disconnected';
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
send(data: Uint8Array | Buffer): boolean {
|
|
192
|
-
if (!this.ws || this._state !== 'connected') {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
try {
|
|
197
|
-
// WebSocket send accepts ArrayBuffer or Uint8Array
|
|
198
|
-
// Convert Buffer to Uint8Array for browser compatibility
|
|
199
|
-
let bytes: Uint8Array;
|
|
200
|
-
if (data instanceof Uint8Array) {
|
|
201
|
-
bytes = data;
|
|
202
|
-
} else {
|
|
203
|
-
// Handle Buffer (Node.js)
|
|
204
|
-
const buf = data as Buffer;
|
|
205
|
-
bytes = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
206
|
-
}
|
|
207
|
-
this.ws.send(bytes);
|
|
208
|
-
return true;
|
|
209
|
-
} catch {
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Create a WebSocket transport.
|
|
217
|
-
*
|
|
218
|
-
* @param url - WebSocket URL (e.g., ws://localhost:3888/ws)
|
|
219
|
-
* @param config - Additional configuration options
|
|
220
|
-
*/
|
|
221
|
-
export function createWebSocketTransport(
|
|
222
|
-
url: string,
|
|
223
|
-
config?: Omit<WebSocketTransportConfig, 'url'>
|
|
224
|
-
): WebSocketTransport {
|
|
225
|
-
return new WebSocketTransport({ url, ...config });
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Convert a socket path to WebSocket URL.
|
|
230
|
-
* Useful when daemon provides both Unix socket and WebSocket endpoints.
|
|
231
|
-
*
|
|
232
|
-
* @param host - Host address (default: localhost)
|
|
233
|
-
* @param port - Port number (default: 3888)
|
|
234
|
-
* @param path - WebSocket path (default: /ws)
|
|
235
|
-
* @param secure - Use wss:// instead of ws:// (default: false)
|
|
236
|
-
*/
|
|
237
|
-
export function socketPathToWsUrl(
|
|
238
|
-
host = 'localhost',
|
|
239
|
-
port = 3888,
|
|
240
|
-
path = '/ws',
|
|
241
|
-
secure = false
|
|
242
|
-
): string {
|
|
243
|
-
const protocol = secure ? 'wss' : 'ws';
|
|
244
|
-
return `${protocol}://${host}:${port}${path}`;
|
|
245
|
-
}
|