@agentuity/core 3.0.0-alpha.6 → 3.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/AGENTS.md +0 -1
  2. package/dist/index.d.ts +0 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +0 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/coder/api-reference.d.ts.map +1 -1
  7. package/dist/services/coder/api-reference.js +30 -1
  8. package/dist/services/coder/api-reference.js.map +1 -1
  9. package/dist/services/coder/client.d.ts +17 -1
  10. package/dist/services/coder/client.d.ts.map +1 -1
  11. package/dist/services/coder/client.js +30 -2
  12. package/dist/services/coder/client.js.map +1 -1
  13. package/dist/services/coder/index.d.ts +2 -2
  14. package/dist/services/coder/index.d.ts.map +1 -1
  15. package/dist/services/coder/index.js +1 -1
  16. package/dist/services/coder/index.js.map +1 -1
  17. package/dist/services/coder/protocol.d.ts +186 -5
  18. package/dist/services/coder/protocol.d.ts.map +1 -1
  19. package/dist/services/coder/protocol.js +125 -0
  20. package/dist/services/coder/protocol.js.map +1 -1
  21. package/dist/services/coder/sessions.d.ts +22 -0
  22. package/dist/services/coder/sessions.d.ts.map +1 -1
  23. package/dist/services/coder/sessions.js +10 -1
  24. package/dist/services/coder/sessions.js.map +1 -1
  25. package/dist/services/coder/sse.d.ts +2 -2
  26. package/dist/services/coder/sse.d.ts.map +1 -1
  27. package/dist/services/coder/sse.js +290 -178
  28. package/dist/services/coder/sse.js.map +1 -1
  29. package/dist/services/coder/types.d.ts +627 -0
  30. package/dist/services/coder/types.d.ts.map +1 -1
  31. package/dist/services/coder/types.js +221 -1
  32. package/dist/services/coder/types.js.map +1 -1
  33. package/dist/services/coder/workspaces.d.ts +11 -1
  34. package/dist/services/coder/workspaces.d.ts.map +1 -1
  35. package/dist/services/coder/workspaces.js +34 -1
  36. package/dist/services/coder/workspaces.js.map +1 -1
  37. package/dist/services/index.d.ts +0 -2
  38. package/dist/services/index.d.ts.map +1 -1
  39. package/dist/services/index.js +0 -2
  40. package/dist/services/index.js.map +1 -1
  41. package/dist/services/keyvalue/service.d.ts +9 -3
  42. package/dist/services/keyvalue/service.d.ts.map +1 -1
  43. package/dist/services/keyvalue/service.js +6 -3
  44. package/dist/services/keyvalue/service.js.map +1 -1
  45. package/dist/services/sandbox/api-reference.js +8 -8
  46. package/dist/services/sandbox/api-reference.js.map +1 -1
  47. package/dist/services/sandbox/client.d.ts +3 -2
  48. package/dist/services/sandbox/client.d.ts.map +1 -1
  49. package/dist/services/sandbox/client.js.map +1 -1
  50. package/dist/services/sandbox/create.d.ts +5 -0
  51. package/dist/services/sandbox/create.d.ts.map +1 -1
  52. package/dist/services/sandbox/create.js +8 -0
  53. package/dist/services/sandbox/create.js.map +1 -1
  54. package/dist/services/sandbox/get.d.ts +8 -4
  55. package/dist/services/sandbox/get.d.ts.map +1 -1
  56. package/dist/services/sandbox/get.js +28 -3
  57. package/dist/services/sandbox/get.js.map +1 -1
  58. package/dist/services/sandbox/getStatus.d.ts +3 -0
  59. package/dist/services/sandbox/getStatus.d.ts.map +1 -1
  60. package/dist/services/sandbox/getStatus.js +19 -2
  61. package/dist/services/sandbox/getStatus.js.map +1 -1
  62. package/dist/services/sandbox/index.d.ts +1 -1
  63. package/dist/services/sandbox/index.d.ts.map +1 -1
  64. package/dist/services/sandbox/list.d.ts +3 -0
  65. package/dist/services/sandbox/list.d.ts.map +1 -1
  66. package/dist/services/sandbox/list.js +5 -0
  67. package/dist/services/sandbox/list.js.map +1 -1
  68. package/dist/services/sandbox/pause.d.ts +17 -1
  69. package/dist/services/sandbox/pause.d.ts.map +1 -1
  70. package/dist/services/sandbox/pause.js +21 -3
  71. package/dist/services/sandbox/pause.js.map +1 -1
  72. package/dist/services/sandbox/run.d.ts +3 -2
  73. package/dist/services/sandbox/run.d.ts.map +1 -1
  74. package/dist/services/sandbox/run.js +244 -84
  75. package/dist/services/sandbox/run.js.map +1 -1
  76. package/dist/services/sandbox/types.d.ts +11 -4
  77. package/dist/services/sandbox/types.d.ts.map +1 -1
  78. package/dist/services/sandbox/types.js +12 -0
  79. package/dist/services/sandbox/types.js.map +1 -1
  80. package/dist/services/stream/namespaces.d.ts +2 -2
  81. package/dist/services/stream/namespaces.js +2 -2
  82. package/dist/services/stream/namespaces.js.map +1 -1
  83. package/dist/services/vector/service.d.ts +11 -11
  84. package/dist/services/vector/service.d.ts.map +1 -1
  85. package/dist/services/vector/service.js.map +1 -1
  86. package/package.json +3 -17
  87. package/src/index.ts +0 -15
  88. package/src/services/coder/api-reference.ts +31 -0
  89. package/src/services/coder/client.ts +46 -0
  90. package/src/services/coder/index.ts +3 -0
  91. package/src/services/coder/protocol.ts +133 -0
  92. package/src/services/coder/sessions.ts +26 -0
  93. package/src/services/coder/sse.ts +343 -184
  94. package/src/services/coder/types.ts +273 -1
  95. package/src/services/coder/workspaces.ts +74 -0
  96. package/src/services/index.ts +0 -2
  97. package/src/services/keyvalue/service.ts +16 -7
  98. package/src/services/sandbox/api-reference.ts +8 -8
  99. package/src/services/sandbox/client.ts +4 -4
  100. package/src/services/sandbox/create.ts +10 -0
  101. package/src/services/sandbox/get.ts +32 -3
  102. package/src/services/sandbox/getStatus.ts +23 -2
  103. package/src/services/sandbox/index.ts +1 -1
  104. package/src/services/sandbox/list.ts +5 -0
  105. package/src/services/sandbox/pause.ts +38 -4
  106. package/src/services/sandbox/run.ts +352 -105
  107. package/src/services/sandbox/types.ts +17 -2
  108. package/src/services/stream/namespaces.ts +2 -2
  109. package/src/services/vector/service.ts +11 -21
  110. package/dist/services/auth/index.d.ts +0 -7
  111. package/dist/services/auth/index.d.ts.map +0 -1
  112. package/dist/services/auth/index.js +0 -7
  113. package/dist/services/auth/index.js.map +0 -1
  114. package/dist/services/auth/types.d.ts +0 -192
  115. package/dist/services/auth/types.d.ts.map +0 -1
  116. package/dist/services/auth/types.js +0 -11
  117. package/dist/services/auth/types.js.map +0 -1
  118. package/dist/services/eval/api-reference.d.ts +0 -4
  119. package/dist/services/eval/api-reference.d.ts.map +0 -1
  120. package/dist/services/eval/api-reference.js +0 -121
  121. package/dist/services/eval/api-reference.js.map +0 -1
  122. package/dist/services/eval/events.d.ts +0 -93
  123. package/dist/services/eval/events.d.ts.map +0 -1
  124. package/dist/services/eval/events.js +0 -24
  125. package/dist/services/eval/events.js.map +0 -1
  126. package/dist/services/eval/get.d.ts +0 -36
  127. package/dist/services/eval/get.d.ts.map +0 -1
  128. package/dist/services/eval/get.js +0 -23
  129. package/dist/services/eval/get.js.map +0 -1
  130. package/dist/services/eval/index.d.ts +0 -6
  131. package/dist/services/eval/index.d.ts.map +0 -1
  132. package/dist/services/eval/index.js +0 -6
  133. package/dist/services/eval/index.js.map +0 -1
  134. package/dist/services/eval/list.d.ts +0 -50
  135. package/dist/services/eval/list.d.ts.map +0 -1
  136. package/dist/services/eval/list.js +0 -32
  137. package/dist/services/eval/list.js.map +0 -1
  138. package/dist/services/eval/run-get.d.ts +0 -48
  139. package/dist/services/eval/run-get.d.ts.map +0 -1
  140. package/dist/services/eval/run-get.js +0 -29
  141. package/dist/services/eval/run-get.js.map +0 -1
  142. package/dist/services/eval/run-list.d.ts +0 -70
  143. package/dist/services/eval/run-list.d.ts.map +0 -1
  144. package/dist/services/eval/run-list.js +0 -42
  145. package/dist/services/eval/run-list.js.map +0 -1
  146. package/dist/webrtc.d.ts +0 -243
  147. package/dist/webrtc.d.ts.map +0 -1
  148. package/dist/webrtc.js +0 -5
  149. package/dist/webrtc.js.map +0 -1
  150. package/dist/workbench-config.d.ts +0 -62
  151. package/dist/workbench-config.d.ts.map +0 -1
  152. package/dist/workbench-config.js +0 -58
  153. package/dist/workbench-config.js.map +0 -1
  154. package/dist/workbench.d.ts +0 -2
  155. package/dist/workbench.d.ts.map +0 -1
  156. package/dist/workbench.js +0 -2
  157. package/dist/workbench.js.map +0 -1
  158. package/src/services/auth/index.ts +0 -19
  159. package/src/services/auth/types.ts +0 -223
  160. package/src/services/eval/api-reference.ts +0 -124
  161. package/src/services/eval/events.ts +0 -92
  162. package/src/services/eval/get.ts +0 -33
  163. package/src/services/eval/index.ts +0 -29
  164. package/src/services/eval/list.ts +0 -49
  165. package/src/services/eval/run-get.ts +0 -39
  166. package/src/services/eval/run-list.ts +0 -59
  167. package/src/webrtc.ts +0 -259
  168. package/src/workbench-config.ts +0 -79
  169. package/src/workbench.ts +0 -1
@@ -1,49 +0,0 @@
1
- import { z } from 'zod';
2
- import { type APIClient, APIResponseSchema } from '../api.ts';
3
-
4
- export const EvaluationSchema = z.object({
5
- id: z.string().describe('Evaluation ID'),
6
- name: z.string().describe('Evaluation name'),
7
- description: z.string().nullable().describe('Evaluation description'),
8
- identifier: z.string().nullable().describe('Stable evaluation identifier'),
9
- agentIdentifier: z.string().describe('Agent identifier'),
10
- projectId: z.string().describe('Project ID'),
11
- devmode: z.boolean().describe('Whether this is a devmode evaluation'),
12
- createdAt: z.string().describe('Creation timestamp'),
13
- updatedAt: z.string().describe('Last updated timestamp'),
14
- });
15
-
16
- export const EvalListResponseData = z.array(EvaluationSchema);
17
- export const EvalListResponseSchema = APIResponseSchema(EvalListResponseData);
18
-
19
- export type Evaluation = z.infer<typeof EvaluationSchema>;
20
- export type EvaluationListRequest = {
21
- projectId?: string;
22
- agentId?: string;
23
- orgId?: string;
24
- };
25
-
26
- export async function evalList(
27
- client: APIClient,
28
- request: EvaluationListRequest = {}
29
- ): Promise<Evaluation[]> {
30
- const params = new URLSearchParams();
31
- if (request.orgId) params.set('orgId', request.orgId);
32
- if (request.projectId) params.set('projectId', request.projectId);
33
- if (request.agentId) params.set('agentId', request.agentId);
34
-
35
- const queryString = params.toString();
36
- const url = `/cli/eval${queryString ? `?${queryString}` : ''}`;
37
-
38
- const resp = await client.request<z.infer<typeof EvalListResponseSchema>>(
39
- 'GET',
40
- url,
41
- EvalListResponseSchema
42
- );
43
-
44
- if (resp.success) {
45
- return resp.data;
46
- }
47
-
48
- throw new Error(resp.message || 'Failed to list evaluations');
49
- }
@@ -1,39 +0,0 @@
1
- import { z } from 'zod';
2
- import { type APIClient, APIResponseSchema } from '../api.ts';
3
-
4
- export const EvalRunDetailSchema = z.object({
5
- id: z.string().describe('Eval run ID'),
6
- sessionId: z.string().describe('Session ID'),
7
- evalId: z.string().describe('Evaluation record ID'),
8
- evalIdentifier: z.string().nullable().describe('Stable evaluation identifier'),
9
- evalName: z.string().nullable().describe('Evaluation name'),
10
- agentIdentifier: z.string().nullable().describe('Agent identifier'),
11
- projectId: z.string().describe('Project ID'),
12
- orgId: z.string().describe('Organization ID'),
13
- deploymentId: z.string().nullable().describe('Deployment ID'),
14
- devmode: z.boolean().describe('Whether this is a devmode run'),
15
- pending: z.boolean().describe('Whether the eval run is pending'),
16
- success: z.boolean().describe('Whether the eval run succeeded'),
17
- error: z.string().nullable().describe('Error message if failed'),
18
- result: z.any().nullable().describe('Eval run result'),
19
- createdAt: z.string().describe('Creation timestamp'),
20
- updatedAt: z.string().describe('Last updated timestamp'),
21
- });
22
-
23
- export const EvalRunGetResponseSchema = APIResponseSchema(EvalRunDetailSchema);
24
-
25
- export type EvalRunDetail = z.infer<typeof EvalRunDetailSchema>;
26
-
27
- export async function evalRunGet(client: APIClient, id: string): Promise<EvalRunDetail> {
28
- const resp = await client.request<z.infer<typeof EvalRunGetResponseSchema>>(
29
- 'GET',
30
- `/cli/eval-run/${encodeURIComponent(id)}`,
31
- EvalRunGetResponseSchema
32
- );
33
-
34
- if (resp.success) {
35
- return resp.data;
36
- }
37
-
38
- throw new Error(resp.message || 'Failed to get eval run');
39
- }
@@ -1,59 +0,0 @@
1
- import { z } from 'zod';
2
- import { type APIClient, APIResponseSchema } from '../api.ts';
3
-
4
- export const EvalRunSchema = z.object({
5
- id: z.string().describe('Eval run ID'),
6
- sessionId: z.string().describe('Session ID'),
7
- evalId: z.string().describe('Evaluation record ID'),
8
- evalIdentifier: z.string().nullable().describe('Stable evaluation identifier'),
9
- evalName: z.string().nullable().describe('Evaluation name'),
10
- agentIdentifier: z.string().nullable().describe('Agent identifier'),
11
- projectId: z.string().describe('Project ID'),
12
- deploymentId: z.string().nullable().describe('Deployment ID'),
13
- devmode: z.boolean().describe('Whether this is a devmode run'),
14
- pending: z.boolean().describe('Whether the eval run is pending'),
15
- success: z.boolean().describe('Whether the eval run succeeded'),
16
- error: z.string().nullable().describe('Error message if failed'),
17
- result: z.any().nullable().describe('Eval run result'),
18
- createdAt: z.string().describe('Creation timestamp'),
19
- updatedAt: z.string().describe('Last updated timestamp'),
20
- });
21
-
22
- export const EvalRunListResponseData = z.array(EvalRunSchema);
23
- export const EvalRunListResponseSchema = APIResponseSchema(EvalRunListResponseData);
24
-
25
- export type EvalRunListItem = z.infer<typeof EvalRunSchema>;
26
- export type EvalRunListRequest = {
27
- projectId?: string;
28
- agentId?: string;
29
- evalId?: string;
30
- sessionId?: string;
31
- orgId?: string;
32
- };
33
-
34
- export async function evalRunList(
35
- client: APIClient,
36
- request: EvalRunListRequest = {}
37
- ): Promise<EvalRunListItem[]> {
38
- const params = new URLSearchParams();
39
- if (request.orgId) params.set('orgId', request.orgId);
40
- if (request.projectId) params.set('projectId', request.projectId);
41
- if (request.agentId) params.set('agentId', request.agentId);
42
- if (request.evalId) params.set('evalId', request.evalId);
43
- if (request.sessionId) params.set('sessionId', request.sessionId);
44
-
45
- const queryString = params.toString();
46
- const url = `/cli/eval-run${queryString ? `?${queryString}` : ''}`;
47
-
48
- const resp = await client.request<z.infer<typeof EvalRunListResponseSchema>>(
49
- 'GET',
50
- url,
51
- EvalRunListResponseSchema
52
- );
53
-
54
- if (resp.success) {
55
- return resp.data;
56
- }
57
-
58
- throw new Error(resp.message || 'Failed to list eval runs');
59
- }
package/src/webrtc.ts DELETED
@@ -1,259 +0,0 @@
1
- /**
2
- * WebRTC signaling types shared between server and client.
3
- */
4
-
5
- // =============================================================================
6
- // Signaling Protocol Types
7
- // =============================================================================
8
-
9
- /**
10
- * SDP (Session Description Protocol) description for WebRTC negotiation.
11
- */
12
- export interface SDPDescription {
13
- type: 'offer' | 'answer' | 'pranswer' | 'rollback';
14
- sdp?: string;
15
- }
16
-
17
- /**
18
- * ICE (Interactive Connectivity Establishment) candidate for NAT traversal.
19
- */
20
- export interface ICECandidate {
21
- candidate?: string;
22
- sdpMid?: string | null;
23
- sdpMLineIndex?: number | null;
24
- usernameFragment?: string | null;
25
- }
26
-
27
- /**
28
- * Signaling message protocol for WebRTC peer communication.
29
- *
30
- * Message types:
31
- * - `join`: Client requests to join a room
32
- * - `joined`: Server confirms join with peer ID and existing peers
33
- * - `peer-joined`: Server notifies when another peer joins the room
34
- * - `peer-left`: Server notifies when a peer leaves the room
35
- * - `sdp`: SDP offer/answer exchange between peers
36
- * - `ice`: ICE candidate exchange between peers
37
- * - `error`: Error message from server
38
- */
39
- export type SignalMessage =
40
- | { t: 'join'; roomId: string }
41
- | { t: 'joined'; peerId: string; roomId: string; peers: string[] }
42
- | { t: 'peer-joined'; peerId: string }
43
- | { t: 'peer-left'; peerId: string }
44
- | { t: 'sdp'; from: string; to?: string; description: SDPDescription }
45
- | { t: 'ice'; from: string; to?: string; candidate: ICECandidate }
46
- | { t: 'error'; message: string };
47
-
48
- /**
49
- * @deprecated Use `SignalMessage` instead. Alias for backwards compatibility.
50
- */
51
- export type SignalMsg = SignalMessage;
52
-
53
- // =============================================================================
54
- // Frontend State Machine Types
55
- // =============================================================================
56
-
57
- /**
58
- * WebRTC connection states for the frontend state machine.
59
- *
60
- * State transitions:
61
- * - idle → connecting: connect() called
62
- * - connecting → signaling: WebSocket opened, joined room
63
- * - connecting → idle: error or cancel
64
- * - signaling → negotiating: peer joined, SDP exchange started
65
- * - signaling → idle: hangup or WebSocket closed
66
- * - negotiating → connected: ICE complete, media flowing
67
- * - negotiating → signaling: peer left during negotiation
68
- * - negotiating → idle: error or hangup
69
- * - connected → negotiating: renegotiation needed
70
- * - connected → signaling: peer left
71
- * - connected → idle: hangup or WebSocket closed
72
- */
73
- export type WebRTCConnectionState =
74
- | 'idle'
75
- | 'connecting'
76
- | 'signaling'
77
- | 'negotiating'
78
- | 'connected';
79
-
80
- /**
81
- * Reasons for disconnection.
82
- */
83
- export type WebRTCDisconnectReason = 'hangup' | 'error' | 'peer-left' | 'timeout';
84
-
85
- // =============================================================================
86
- // Data Channel Types
87
- // =============================================================================
88
-
89
- /**
90
- * Configuration for creating a data channel.
91
- */
92
- export interface DataChannelConfig {
93
- /** Unique label for the channel */
94
- label: string;
95
- /** Whether messages are ordered (default: true) */
96
- ordered?: boolean;
97
- /** Maximum retransmit time in milliseconds */
98
- maxPacketLifeTime?: number;
99
- /** Maximum number of retransmissions */
100
- maxRetransmits?: number;
101
- /** Sub-protocol name */
102
- protocol?: string;
103
- }
104
-
105
- /**
106
- * Message types for data channel communication.
107
- */
108
- export type DataChannelMessage =
109
- | { type: 'string'; data: string }
110
- | { type: 'binary'; data: ArrayBuffer }
111
- | { type: 'json'; data: unknown };
112
-
113
- /**
114
- * Data channel state.
115
- */
116
- export type DataChannelState = 'connecting' | 'open' | 'closing' | 'closed';
117
-
118
- // =============================================================================
119
- // Connection Quality / Stats Types
120
- // =============================================================================
121
-
122
- /**
123
- * Normalized connection quality summary.
124
- * Derived from RTCPeerConnection.getStats() for easy consumption.
125
- */
126
- export interface ConnectionQualitySummary {
127
- /** Round-trip time in milliseconds */
128
- rtt?: number;
129
- /** Packet loss percentage (0-100) */
130
- packetLossPercent?: number;
131
- /** Jitter in milliseconds (audio) */
132
- jitter?: number;
133
- /** Current bitrate in bits per second */
134
- bitrate?: {
135
- audio?: { inbound?: number; outbound?: number };
136
- video?: { inbound?: number; outbound?: number };
137
- };
138
- /** Video metrics */
139
- video?: {
140
- framesPerSecond?: number;
141
- framesDropped?: number;
142
- frameWidth?: number;
143
- frameHeight?: number;
144
- };
145
- /** ICE candidate pair info */
146
- candidatePair?: {
147
- localType?: string;
148
- remoteType?: string;
149
- protocol?: string;
150
- usingRelay?: boolean;
151
- };
152
- /** Timestamp when stats were collected */
153
- timestamp: number;
154
- }
155
-
156
- /**
157
- * Recording options for MediaRecorder.
158
- */
159
- export interface RecordingOptions {
160
- /** MIME type for recording (default: 'video/webm;codecs=vp9,opus' or 'audio/webm;codecs=opus') */
161
- mimeType?: string;
162
- /** Audio bits per second */
163
- audioBitsPerSecond?: number;
164
- /** Video bits per second */
165
- videoBitsPerSecond?: number;
166
- }
167
-
168
- /**
169
- * Recording handle for controlling an active recording.
170
- */
171
- export interface RecordingHandle {
172
- /** Stop recording and get the blob */
173
- stop(): Promise<Blob>;
174
- /** Pause recording */
175
- pause(): void;
176
- /** Resume recording */
177
- resume(): void;
178
- /** Current recording state */
179
- readonly state: RecordingState;
180
- }
181
-
182
- /**
183
- * Recording state.
184
- */
185
- export type RecordingState = 'inactive' | 'recording' | 'paused';
186
-
187
- // =============================================================================
188
- // Track Source Types
189
- // =============================================================================
190
-
191
- /**
192
- * Abstract track source interface for custom media sources.
193
- * Implementations can provide camera, screen share, or custom tracks.
194
- *
195
- * Note: This interface is implemented in @agentuity/frontend where
196
- * browser APIs (MediaStream) are available.
197
- */
198
- export interface TrackSource {
199
- /** Get the media stream from this source (returns browser MediaStream) */
200
- getStream(): Promise<unknown>;
201
- /** Stop the source and release resources */
202
- stop(): void;
203
- /** Source type identifier */
204
- readonly type: 'user-media' | 'display-media' | 'custom';
205
- }
206
-
207
- // =============================================================================
208
- // Backend Signaling Callbacks
209
- // =============================================================================
210
-
211
- /**
212
- * Callbacks for WebRTC signaling server events.
213
- * All callbacks are optional - only subscribe to events you care about.
214
- */
215
- export interface WebRTCSignalingCallbacks {
216
- /**
217
- * Called when a new room is created.
218
- * @param roomId - The room ID
219
- */
220
- onRoomCreated?: (roomId: string) => void;
221
-
222
- /**
223
- * Called when a room is destroyed (last peer left).
224
- * @param roomId - The room ID
225
- */
226
- onRoomDestroyed?: (roomId: string) => void;
227
-
228
- /**
229
- * Called when a peer joins a room.
230
- * @param peerId - The peer's ID
231
- * @param roomId - The room ID
232
- */
233
- onPeerJoin?: (peerId: string, roomId: string) => void;
234
-
235
- /**
236
- * Called when a peer leaves a room.
237
- * @param peerId - The peer's ID
238
- * @param roomId - The room ID
239
- * @param reason - Why the peer left
240
- */
241
- onPeerLeave?: (peerId: string, roomId: string, reason: 'disconnect' | 'kicked') => void;
242
-
243
- /**
244
- * Called when a signaling message is relayed.
245
- * @param type - Message type ('sdp' or 'ice')
246
- * @param from - Sender peer ID
247
- * @param to - Target peer ID (undefined for broadcast)
248
- * @param roomId - The room ID
249
- */
250
- onMessage?: (type: 'sdp' | 'ice', from: string, to: string | undefined, roomId: string) => void;
251
-
252
- /**
253
- * Called when an error occurs.
254
- * @param error - The error that occurred
255
- * @param peerId - The peer ID if applicable
256
- * @param roomId - The room ID if applicable
257
- */
258
- onError?: (error: Error, peerId?: string, roomId?: string) => void;
259
- }
@@ -1,79 +0,0 @@
1
- import { StructuredError } from './error.ts';
2
-
3
- export const WorkbenchConfigError = StructuredError(
4
- 'WorkbenchConfigError',
5
- 'The workbench configuration is invalid'
6
- );
7
-
8
- export const WorkbenchNotFoundError = StructuredError(
9
- 'WorkbenchNotFoundError',
10
- 'Workbench config not found - build process did not inline config'
11
- );
12
-
13
- /**
14
- * Workbench configuration utilities shared across packages
15
- */
16
-
17
- export interface WorkbenchConfig {
18
- route?: string;
19
- headers?: Record<string, string>;
20
- apiKey?: string;
21
- baseUrl?: string | null;
22
- }
23
-
24
- /**
25
- * Encode workbench config to base64 for environment variable storage
26
- */
27
- export function encodeWorkbenchConfig(config: WorkbenchConfig): string {
28
- const json = JSON.stringify(config);
29
-
30
- // Use Node.js Buffer if available (build-time), otherwise browser btoa (shouldn't be called in browser)
31
- if (typeof Buffer !== 'undefined') {
32
- return Buffer.from(json).toString('base64');
33
- } else {
34
- return btoa(json);
35
- }
36
- }
37
-
38
- /**
39
- * Decode workbench config from base64 environment variable
40
- * Throws error if config is invalid
41
- */
42
- export function decodeWorkbenchConfig(encoded: string): WorkbenchConfig {
43
- try {
44
- let json: string;
45
-
46
- // Use appropriate decoding method based on environment
47
- if (typeof Buffer !== 'undefined') {
48
- // Node.js environment (build-time)
49
- json = Buffer.from(encoded, 'base64').toString('utf-8');
50
- } else if (typeof atob !== 'undefined') {
51
- // Browser environment (runtime)
52
- json = atob(encoded);
53
- } else {
54
- throw new Error('No base64 decoding method available');
55
- }
56
-
57
- const config = JSON.parse(json) as WorkbenchConfig;
58
- return config;
59
- } catch (error) {
60
- throw new WorkbenchConfigError({
61
- cause: error,
62
- });
63
- }
64
- }
65
-
66
- /**
67
- * Get workbench config from build-time variable
68
- * Throws error if config is not available or invalid
69
- */
70
- export function getWorkbenchConfig(): WorkbenchConfig {
71
- // This will be replaced at build time by Bun's define mechanism
72
- // @ts-expect-error - AGENTUITY_WORKBENCH_CONFIG_INLINE will be replaced at build time
73
- if (typeof AGENTUITY_WORKBENCH_CONFIG_INLINE === 'undefined') {
74
- throw new WorkbenchNotFoundError();
75
- }
76
-
77
- // @ts-expect-error - AGENTUITY_WORKBENCH_CONFIG_INLINE will be replaced at build time
78
- return decodeWorkbenchConfig(AGENTUITY_WORKBENCH_CONFIG_INLINE);
79
- }
package/src/workbench.ts DELETED
@@ -1 +0,0 @@
1
- export * from './workbench-config.ts';