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,372 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Request/Response Schema Tests
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { describe, it, expect } from 'vitest';
|
|
6
|
-
import {
|
|
7
|
-
SimpleApiResponseSchema,
|
|
8
|
-
SendMessageRequestSchema,
|
|
9
|
-
SpeakOnTriggerSchema,
|
|
10
|
-
ShadowModeSchema,
|
|
11
|
-
SpawnAgentRequestSchema,
|
|
12
|
-
SpawnAgentResponseSchema,
|
|
13
|
-
CreateTaskRequestSchema,
|
|
14
|
-
CreateBeadRequestSchema,
|
|
15
|
-
SendRelayMessageRequestSchema,
|
|
16
|
-
ActivityEventTypeSchema,
|
|
17
|
-
ActorTypeSchema,
|
|
18
|
-
ActivityEventSchema,
|
|
19
|
-
WSMessageTypeSchema,
|
|
20
|
-
WSMessageSchema,
|
|
21
|
-
DashboardStateSchema,
|
|
22
|
-
} from './api.js';
|
|
23
|
-
|
|
24
|
-
describe('API Schemas', () => {
|
|
25
|
-
describe('SimpleApiResponseSchema', () => {
|
|
26
|
-
it('should validate success response', () => {
|
|
27
|
-
const response = { success: true };
|
|
28
|
-
const result = SimpleApiResponseSchema.parse(response);
|
|
29
|
-
expect(result.success).toBe(true);
|
|
30
|
-
expect(result.error).toBeUndefined();
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('should validate error response', () => {
|
|
34
|
-
const response = { success: false, error: 'Something went wrong' };
|
|
35
|
-
const result = SimpleApiResponseSchema.parse(response);
|
|
36
|
-
expect(result.success).toBe(false);
|
|
37
|
-
expect(result.error).toBe('Something went wrong');
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
describe('SendMessageRequestSchema', () => {
|
|
42
|
-
it('should validate basic message', () => {
|
|
43
|
-
const request = {
|
|
44
|
-
to: 'Agent1',
|
|
45
|
-
message: 'Hello, Agent1!',
|
|
46
|
-
};
|
|
47
|
-
const result = SendMessageRequestSchema.parse(request);
|
|
48
|
-
expect(result.to).toBe('Agent1');
|
|
49
|
-
expect(result.message).toBe('Hello, Agent1!');
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('should validate message with thread', () => {
|
|
53
|
-
const request = {
|
|
54
|
-
to: '#general',
|
|
55
|
-
message: 'Channel message',
|
|
56
|
-
thread: 'thread-123',
|
|
57
|
-
};
|
|
58
|
-
const result = SendMessageRequestSchema.parse(request);
|
|
59
|
-
expect(result.thread).toBe('thread-123');
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('should validate message with attachments', () => {
|
|
63
|
-
const request = {
|
|
64
|
-
to: 'Agent2',
|
|
65
|
-
message: 'See attached files',
|
|
66
|
-
attachments: ['file-001', 'file-002'],
|
|
67
|
-
};
|
|
68
|
-
const result = SendMessageRequestSchema.parse(request);
|
|
69
|
-
expect(result.attachments).toHaveLength(2);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
describe('SpeakOnTriggerSchema', () => {
|
|
74
|
-
it('should validate all triggers', () => {
|
|
75
|
-
expect(SpeakOnTriggerSchema.parse('SESSION_END')).toBe('SESSION_END');
|
|
76
|
-
expect(SpeakOnTriggerSchema.parse('CODE_WRITTEN')).toBe('CODE_WRITTEN');
|
|
77
|
-
expect(SpeakOnTriggerSchema.parse('REVIEW_REQUEST')).toBe('REVIEW_REQUEST');
|
|
78
|
-
expect(SpeakOnTriggerSchema.parse('EXPLICIT_ASK')).toBe('EXPLICIT_ASK');
|
|
79
|
-
expect(SpeakOnTriggerSchema.parse('ALL_MESSAGES')).toBe('ALL_MESSAGES');
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
describe('ShadowModeSchema', () => {
|
|
84
|
-
it('should validate shadow modes', () => {
|
|
85
|
-
expect(ShadowModeSchema.parse('subagent')).toBe('subagent');
|
|
86
|
-
expect(ShadowModeSchema.parse('process')).toBe('process');
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
describe('SpawnAgentRequestSchema', () => {
|
|
91
|
-
it('should validate basic spawn request', () => {
|
|
92
|
-
const request = {
|
|
93
|
-
name: 'Worker1',
|
|
94
|
-
};
|
|
95
|
-
const result = SpawnAgentRequestSchema.parse(request);
|
|
96
|
-
expect(result.name).toBe('Worker1');
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it('should validate full spawn request', () => {
|
|
100
|
-
const request = {
|
|
101
|
-
name: 'ShadowAgent',
|
|
102
|
-
cli: 'claude',
|
|
103
|
-
task: 'Review code changes',
|
|
104
|
-
team: 'backend',
|
|
105
|
-
shadowMode: 'subagent',
|
|
106
|
-
shadowOf: 'FullStack',
|
|
107
|
-
shadowAgent: 'reviewer',
|
|
108
|
-
shadowTriggers: ['CODE_WRITTEN', 'REVIEW_REQUEST'],
|
|
109
|
-
shadowSpeakOn: ['SESSION_END'],
|
|
110
|
-
};
|
|
111
|
-
const result = SpawnAgentRequestSchema.parse(request);
|
|
112
|
-
expect(result.shadowMode).toBe('subagent');
|
|
113
|
-
expect(result.shadowOf).toBe('FullStack');
|
|
114
|
-
expect(result.shadowTriggers).toHaveLength(2);
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('should validate non-shadow spawn request', () => {
|
|
118
|
-
const request = {
|
|
119
|
-
name: 'Backend',
|
|
120
|
-
cli: 'codex',
|
|
121
|
-
task: 'Build API endpoints',
|
|
122
|
-
team: 'api',
|
|
123
|
-
};
|
|
124
|
-
const result = SpawnAgentRequestSchema.parse(request);
|
|
125
|
-
expect(result.cli).toBe('codex');
|
|
126
|
-
expect(result.shadowOf).toBeUndefined();
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
describe('SpawnAgentResponseSchema', () => {
|
|
131
|
-
it('should validate success response', () => {
|
|
132
|
-
const response = {
|
|
133
|
-
success: true,
|
|
134
|
-
name: 'Worker1',
|
|
135
|
-
};
|
|
136
|
-
const result = SpawnAgentResponseSchema.parse(response);
|
|
137
|
-
expect(result.success).toBe(true);
|
|
138
|
-
expect(result.name).toBe('Worker1');
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
it('should validate error response', () => {
|
|
142
|
-
const response = {
|
|
143
|
-
success: false,
|
|
144
|
-
name: 'Worker1',
|
|
145
|
-
error: 'Agent already exists',
|
|
146
|
-
};
|
|
147
|
-
const result = SpawnAgentResponseSchema.parse(response);
|
|
148
|
-
expect(result.success).toBe(false);
|
|
149
|
-
expect(result.error).toBe('Agent already exists');
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
describe('CreateTaskRequestSchema', () => {
|
|
154
|
-
it('should validate complete task request', () => {
|
|
155
|
-
const request = {
|
|
156
|
-
agentName: 'FullStack',
|
|
157
|
-
title: 'Implement feature X',
|
|
158
|
-
description: 'Build the new feature',
|
|
159
|
-
priority: 'high',
|
|
160
|
-
};
|
|
161
|
-
const result = CreateTaskRequestSchema.parse(request);
|
|
162
|
-
expect(result.agentName).toBe('FullStack');
|
|
163
|
-
expect(result.priority).toBe('high');
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it('should validate task without description', () => {
|
|
167
|
-
const request = {
|
|
168
|
-
agentName: 'Worker',
|
|
169
|
-
title: 'Quick fix',
|
|
170
|
-
priority: 'critical',
|
|
171
|
-
};
|
|
172
|
-
const result = CreateTaskRequestSchema.parse(request);
|
|
173
|
-
expect(result.description).toBeUndefined();
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
it('should reject invalid priority', () => {
|
|
177
|
-
const request = {
|
|
178
|
-
agentName: 'Worker',
|
|
179
|
-
title: 'Task',
|
|
180
|
-
priority: 'urgent',
|
|
181
|
-
};
|
|
182
|
-
expect(() => CreateTaskRequestSchema.parse(request)).toThrow();
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
describe('CreateBeadRequestSchema', () => {
|
|
187
|
-
it('should validate complete bead request', () => {
|
|
188
|
-
const request = {
|
|
189
|
-
title: 'New feature',
|
|
190
|
-
assignee: 'FullStack',
|
|
191
|
-
priority: 2,
|
|
192
|
-
type: 'feature',
|
|
193
|
-
description: 'Implement the new feature',
|
|
194
|
-
};
|
|
195
|
-
const result = CreateBeadRequestSchema.parse(request);
|
|
196
|
-
expect(result.title).toBe('New feature');
|
|
197
|
-
expect(result.priority).toBe(2);
|
|
198
|
-
expect(result.type).toBe('feature');
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
it('should validate minimal bead request', () => {
|
|
202
|
-
const request = {
|
|
203
|
-
title: 'Bug fix',
|
|
204
|
-
};
|
|
205
|
-
const result = CreateBeadRequestSchema.parse(request);
|
|
206
|
-
expect(result.assignee).toBeUndefined();
|
|
207
|
-
expect(result.type).toBeUndefined();
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
it('should reject invalid bead type', () => {
|
|
211
|
-
const request = {
|
|
212
|
-
title: 'Task',
|
|
213
|
-
type: 'epic',
|
|
214
|
-
};
|
|
215
|
-
expect(() => CreateBeadRequestSchema.parse(request)).toThrow();
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
describe('SendRelayMessageRequestSchema', () => {
|
|
220
|
-
it('should validate relay message', () => {
|
|
221
|
-
const request = {
|
|
222
|
-
to: 'Agent1',
|
|
223
|
-
content: 'Hello from relay',
|
|
224
|
-
thread: 'thread-456',
|
|
225
|
-
};
|
|
226
|
-
const result = SendRelayMessageRequestSchema.parse(request);
|
|
227
|
-
expect(result.to).toBe('Agent1');
|
|
228
|
-
expect(result.content).toBe('Hello from relay');
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
describe('ActivityEventTypeSchema', () => {
|
|
233
|
-
it('should validate all event types', () => {
|
|
234
|
-
expect(ActivityEventTypeSchema.parse('agent_spawned')).toBe('agent_spawned');
|
|
235
|
-
expect(ActivityEventTypeSchema.parse('agent_released')).toBe('agent_released');
|
|
236
|
-
expect(ActivityEventTypeSchema.parse('agent_online')).toBe('agent_online');
|
|
237
|
-
expect(ActivityEventTypeSchema.parse('agent_offline')).toBe('agent_offline');
|
|
238
|
-
expect(ActivityEventTypeSchema.parse('user_joined')).toBe('user_joined');
|
|
239
|
-
expect(ActivityEventTypeSchema.parse('user_left')).toBe('user_left');
|
|
240
|
-
expect(ActivityEventTypeSchema.parse('broadcast')).toBe('broadcast');
|
|
241
|
-
expect(ActivityEventTypeSchema.parse('error')).toBe('error');
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
describe('ActorTypeSchema', () => {
|
|
246
|
-
it('should validate actor types', () => {
|
|
247
|
-
expect(ActorTypeSchema.parse('user')).toBe('user');
|
|
248
|
-
expect(ActorTypeSchema.parse('agent')).toBe('agent');
|
|
249
|
-
expect(ActorTypeSchema.parse('system')).toBe('system');
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
describe('ActivityEventSchema', () => {
|
|
254
|
-
it('should validate complete activity event', () => {
|
|
255
|
-
const event = {
|
|
256
|
-
id: 'event-001',
|
|
257
|
-
type: 'agent_spawned',
|
|
258
|
-
timestamp: '2025-01-22T10:00:00Z',
|
|
259
|
-
actor: 'Lead',
|
|
260
|
-
actorAvatarUrl: 'https://example.com/avatar.png',
|
|
261
|
-
actorType: 'agent',
|
|
262
|
-
title: 'Agent Worker spawned',
|
|
263
|
-
description: 'New agent Worker was spawned by Lead',
|
|
264
|
-
metadata: { cli: 'claude', team: 'backend' },
|
|
265
|
-
};
|
|
266
|
-
const result = ActivityEventSchema.parse(event);
|
|
267
|
-
expect(result.type).toBe('agent_spawned');
|
|
268
|
-
expect(result.actorType).toBe('agent');
|
|
269
|
-
expect(result.metadata).toEqual({ cli: 'claude', team: 'backend' });
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
it('should validate user event', () => {
|
|
273
|
-
const event = {
|
|
274
|
-
id: 'event-002',
|
|
275
|
-
type: 'user_joined',
|
|
276
|
-
timestamp: '2025-01-22T09:00:00Z',
|
|
277
|
-
actor: 'john@example.com',
|
|
278
|
-
actorType: 'user',
|
|
279
|
-
title: 'User joined',
|
|
280
|
-
};
|
|
281
|
-
const result = ActivityEventSchema.parse(event);
|
|
282
|
-
expect(result.actorType).toBe('user');
|
|
283
|
-
expect(result.description).toBeUndefined();
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
it('should validate system event', () => {
|
|
287
|
-
const event = {
|
|
288
|
-
id: 'event-003',
|
|
289
|
-
type: 'error',
|
|
290
|
-
timestamp: '2025-01-22T10:30:00Z',
|
|
291
|
-
actor: 'system',
|
|
292
|
-
actorType: 'system',
|
|
293
|
-
title: 'Connection error',
|
|
294
|
-
description: 'Failed to connect to remote server',
|
|
295
|
-
};
|
|
296
|
-
const result = ActivityEventSchema.parse(event);
|
|
297
|
-
expect(result.type).toBe('error');
|
|
298
|
-
expect(result.actorType).toBe('system');
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
describe('WSMessageTypeSchema', () => {
|
|
303
|
-
it('should validate message types', () => {
|
|
304
|
-
expect(WSMessageTypeSchema.parse('data')).toBe('data');
|
|
305
|
-
expect(WSMessageTypeSchema.parse('agents')).toBe('agents');
|
|
306
|
-
expect(WSMessageTypeSchema.parse('messages')).toBe('messages');
|
|
307
|
-
expect(WSMessageTypeSchema.parse('fleet')).toBe('fleet');
|
|
308
|
-
expect(WSMessageTypeSchema.parse('error')).toBe('error');
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
describe('WSMessageSchema', () => {
|
|
313
|
-
it('should validate websocket message', () => {
|
|
314
|
-
const message = {
|
|
315
|
-
type: 'agents',
|
|
316
|
-
payload: [{ name: 'Agent1', status: 'online' }],
|
|
317
|
-
};
|
|
318
|
-
const result = WSMessageSchema.parse(message);
|
|
319
|
-
expect(result.type).toBe('agents');
|
|
320
|
-
});
|
|
321
|
-
|
|
322
|
-
it('should validate error message', () => {
|
|
323
|
-
const message = {
|
|
324
|
-
type: 'error',
|
|
325
|
-
payload: { code: 'UNAUTHORIZED', message: 'Not logged in' },
|
|
326
|
-
};
|
|
327
|
-
const result = WSMessageSchema.parse(message);
|
|
328
|
-
expect(result.type).toBe('error');
|
|
329
|
-
});
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
describe('DashboardStateSchema', () => {
|
|
333
|
-
it('should validate dashboard state', () => {
|
|
334
|
-
const state = {
|
|
335
|
-
agents: [{ name: 'Agent1', status: 'online' }],
|
|
336
|
-
messages: [],
|
|
337
|
-
currentChannel: '#general',
|
|
338
|
-
currentThread: null,
|
|
339
|
-
isConnected: true,
|
|
340
|
-
viewMode: 'local',
|
|
341
|
-
fleetData: null,
|
|
342
|
-
sessions: [],
|
|
343
|
-
summaries: [],
|
|
344
|
-
};
|
|
345
|
-
const result = DashboardStateSchema.parse(state);
|
|
346
|
-
expect(result.currentChannel).toBe('#general');
|
|
347
|
-
expect(result.isConnected).toBe(true);
|
|
348
|
-
expect(result.viewMode).toBe('local');
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
it('should validate fleet view state', () => {
|
|
352
|
-
const state = {
|
|
353
|
-
agents: [],
|
|
354
|
-
messages: [],
|
|
355
|
-
currentChannel: '#fleet',
|
|
356
|
-
currentThread: 'thread-123',
|
|
357
|
-
isConnected: true,
|
|
358
|
-
viewMode: 'fleet',
|
|
359
|
-
fleetData: {
|
|
360
|
-
servers: [],
|
|
361
|
-
agents: [],
|
|
362
|
-
totalMessages: 0,
|
|
363
|
-
},
|
|
364
|
-
sessions: [],
|
|
365
|
-
summaries: [],
|
|
366
|
-
};
|
|
367
|
-
const result = DashboardStateSchema.parse(state);
|
|
368
|
-
expect(result.viewMode).toBe('fleet');
|
|
369
|
-
expect(result.currentThread).toBe('thread-123');
|
|
370
|
-
});
|
|
371
|
-
});
|
|
372
|
-
});
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* API Request/Response Schemas
|
|
3
|
-
*
|
|
4
|
-
* Zod schemas for API request and response types.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { z } from 'zod';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Generic API response schema
|
|
11
|
-
*/
|
|
12
|
-
export const ApiResponseSchema = <T extends z.ZodTypeAny>(dataSchema: T) =>
|
|
13
|
-
z.object({
|
|
14
|
-
success: z.boolean(),
|
|
15
|
-
data: dataSchema.optional(),
|
|
16
|
-
error: z.string().optional(),
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Simple success/error response
|
|
21
|
-
*/
|
|
22
|
-
export const SimpleApiResponseSchema = z.object({
|
|
23
|
-
success: z.boolean(),
|
|
24
|
-
error: z.string().optional(),
|
|
25
|
-
});
|
|
26
|
-
export type SimpleApiResponse = z.infer<typeof SimpleApiResponseSchema>;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Send message request schema
|
|
30
|
-
*/
|
|
31
|
-
export const SendMessageRequestSchema = z.object({
|
|
32
|
-
to: z.string(),
|
|
33
|
-
message: z.string(),
|
|
34
|
-
thread: z.string().optional(),
|
|
35
|
-
/** Attachment IDs to include with the message */
|
|
36
|
-
attachments: z.array(z.string()).optional(),
|
|
37
|
-
});
|
|
38
|
-
export type SendMessageRequest = z.infer<typeof SendMessageRequestSchema>;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Speak on trigger enum (for shadow agents)
|
|
42
|
-
*/
|
|
43
|
-
export const SpeakOnTriggerSchema = z.enum([
|
|
44
|
-
'SESSION_END',
|
|
45
|
-
'CODE_WRITTEN',
|
|
46
|
-
'REVIEW_REQUEST',
|
|
47
|
-
'EXPLICIT_ASK',
|
|
48
|
-
'ALL_MESSAGES',
|
|
49
|
-
]);
|
|
50
|
-
export type SpeakOnTrigger = z.infer<typeof SpeakOnTriggerSchema>;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Shadow mode enum
|
|
54
|
-
*/
|
|
55
|
-
export const ShadowModeSchema = z.enum(['subagent', 'process']);
|
|
56
|
-
export type ShadowMode = z.infer<typeof ShadowModeSchema>;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Spawn agent request schema
|
|
60
|
-
*/
|
|
61
|
-
export const SpawnAgentRequestSchema = z.object({
|
|
62
|
-
name: z.string(),
|
|
63
|
-
cli: z.string().optional(),
|
|
64
|
-
task: z.string().optional(),
|
|
65
|
-
team: z.string().optional(),
|
|
66
|
-
/** Shadow execution mode */
|
|
67
|
-
shadowMode: ShadowModeSchema.optional(),
|
|
68
|
-
/** Primary agent to shadow */
|
|
69
|
-
shadowOf: z.string().optional(),
|
|
70
|
-
/** Shadow agent profile to use */
|
|
71
|
-
shadowAgent: z.string().optional(),
|
|
72
|
-
/** When the shadow should be invoked */
|
|
73
|
-
shadowTriggers: z.array(SpeakOnTriggerSchema).optional(),
|
|
74
|
-
/** When the shadow should speak */
|
|
75
|
-
shadowSpeakOn: z.array(SpeakOnTriggerSchema).optional(),
|
|
76
|
-
});
|
|
77
|
-
export type SpawnAgentRequest = z.infer<typeof SpawnAgentRequestSchema>;
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Spawn agent response schema
|
|
81
|
-
*/
|
|
82
|
-
export const SpawnAgentResponseSchema = z.object({
|
|
83
|
-
success: z.boolean(),
|
|
84
|
-
name: z.string(),
|
|
85
|
-
error: z.string().optional(),
|
|
86
|
-
});
|
|
87
|
-
export type SpawnAgentResponse = z.infer<typeof SpawnAgentResponseSchema>;
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Create task request schema
|
|
91
|
-
*/
|
|
92
|
-
export const CreateTaskRequestSchema = z.object({
|
|
93
|
-
agentName: z.string(),
|
|
94
|
-
title: z.string(),
|
|
95
|
-
description: z.string().optional(),
|
|
96
|
-
priority: z.enum(['low', 'medium', 'high', 'critical']),
|
|
97
|
-
});
|
|
98
|
-
export type CreateTaskRequest = z.infer<typeof CreateTaskRequestSchema>;
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Create bead request schema
|
|
102
|
-
*/
|
|
103
|
-
export const CreateBeadRequestSchema = z.object({
|
|
104
|
-
title: z.string(),
|
|
105
|
-
assignee: z.string().optional(),
|
|
106
|
-
priority: z.number().optional(),
|
|
107
|
-
type: z.enum(['task', 'bug', 'feature']).optional(),
|
|
108
|
-
description: z.string().optional(),
|
|
109
|
-
});
|
|
110
|
-
export type CreateBeadRequest = z.infer<typeof CreateBeadRequestSchema>;
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Send relay message request schema
|
|
114
|
-
*/
|
|
115
|
-
export const SendRelayMessageRequestSchema = z.object({
|
|
116
|
-
to: z.string(),
|
|
117
|
-
content: z.string(),
|
|
118
|
-
thread: z.string().optional(),
|
|
119
|
-
});
|
|
120
|
-
export type SendRelayMessageRequest = z.infer<typeof SendRelayMessageRequestSchema>;
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Activity event type enum
|
|
124
|
-
*/
|
|
125
|
-
export const ActivityEventTypeSchema = z.enum([
|
|
126
|
-
'agent_spawned',
|
|
127
|
-
'agent_released',
|
|
128
|
-
'agent_online',
|
|
129
|
-
'agent_offline',
|
|
130
|
-
'user_joined',
|
|
131
|
-
'user_left',
|
|
132
|
-
'broadcast',
|
|
133
|
-
'error',
|
|
134
|
-
]);
|
|
135
|
-
export type ActivityEventType = z.infer<typeof ActivityEventTypeSchema>;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Actor type enum
|
|
139
|
-
*/
|
|
140
|
-
export const ActorTypeSchema = z.enum(['user', 'agent', 'system']);
|
|
141
|
-
export type ActorType = z.infer<typeof ActorTypeSchema>;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Activity event schema
|
|
145
|
-
*/
|
|
146
|
-
export const ActivityEventSchema = z.object({
|
|
147
|
-
id: z.string(),
|
|
148
|
-
type: ActivityEventTypeSchema,
|
|
149
|
-
timestamp: z.string(),
|
|
150
|
-
/** Actor who triggered the event */
|
|
151
|
-
actor: z.string(),
|
|
152
|
-
/** Optional avatar URL for the actor */
|
|
153
|
-
actorAvatarUrl: z.string().optional(),
|
|
154
|
-
/** Whether actor is a user or agent */
|
|
155
|
-
actorType: ActorTypeSchema,
|
|
156
|
-
/** Event title for display */
|
|
157
|
-
title: z.string(),
|
|
158
|
-
/** Optional detailed description */
|
|
159
|
-
description: z.string().optional(),
|
|
160
|
-
/** Optional metadata */
|
|
161
|
-
metadata: z.record(z.unknown()).optional(),
|
|
162
|
-
});
|
|
163
|
-
export type ActivityEvent = z.infer<typeof ActivityEventSchema>;
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* WebSocket message type enum
|
|
167
|
-
*/
|
|
168
|
-
export const WSMessageTypeSchema = z.enum(['data', 'agents', 'messages', 'fleet', 'error']);
|
|
169
|
-
export type WSMessageType = z.infer<typeof WSMessageTypeSchema>;
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* WebSocket message schema
|
|
173
|
-
*/
|
|
174
|
-
export const WSMessageSchema = z.object({
|
|
175
|
-
type: WSMessageTypeSchema,
|
|
176
|
-
payload: z.unknown(),
|
|
177
|
-
});
|
|
178
|
-
export type WSMessage = z.infer<typeof WSMessageSchema>;
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Dashboard state schema
|
|
182
|
-
*/
|
|
183
|
-
export const DashboardStateSchema = z.object({
|
|
184
|
-
agents: z.array(z.lazy(() => z.any())), // References AgentSchema
|
|
185
|
-
messages: z.array(z.lazy(() => z.any())), // References MessageSchema
|
|
186
|
-
currentChannel: z.string(),
|
|
187
|
-
currentThread: z.string().nullable(),
|
|
188
|
-
isConnected: z.boolean(),
|
|
189
|
-
viewMode: z.enum(['local', 'fleet']),
|
|
190
|
-
fleetData: z.lazy(() => z.any()).nullable(), // References FleetDataSchema
|
|
191
|
-
sessions: z.array(z.lazy(() => z.any())), // References SessionSchema
|
|
192
|
-
summaries: z.array(z.lazy(() => z.any())), // References AgentSummarySchema
|
|
193
|
-
});
|
|
194
|
-
export type DashboardState = z.infer<typeof DashboardStateSchema>;
|