@blade-hq/agent-client 1.1.1

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 (39) hide show
  1. package/README.md +351 -0
  2. package/dist/auth-login.d.ts +29 -0
  3. package/dist/auth.d.ts +8 -0
  4. package/dist/blade-client.d.ts +113 -0
  5. package/dist/commands/embedded.d.ts +32 -0
  6. package/dist/commands/protocol.d.ts +38 -0
  7. package/dist/commands/registry.d.ts +21 -0
  8. package/dist/index.d.ts +37 -0
  9. package/dist/index.js +4182 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/resources/auth.d.ts +34 -0
  12. package/dist/resources/headless.d.ts +33 -0
  13. package/dist/resources/sessions.d.ts +263 -0
  14. package/dist/rest.d.ts +21 -0
  15. package/dist/schemas/background.d.ts +16 -0
  16. package/dist/schemas/event.d.ts +51 -0
  17. package/dist/schemas/message-utils.d.ts +48 -0
  18. package/dist/schemas/message.d.ts +83 -0
  19. package/dist/schemas/projection.d.ts +87 -0
  20. package/dist/schemas/session.d.ts +126 -0
  21. package/dist/schemas/solution.d.ts +101 -0
  22. package/dist/schemas/task.d.ts +12 -0
  23. package/dist/session/agent-session.d.ts +179 -0
  24. package/dist/session/events.d.ts +143 -0
  25. package/dist/session/hub.d.ts +44 -0
  26. package/dist/session/state.d.ts +57 -0
  27. package/dist/shared/projection/builder.d.ts +59 -0
  28. package/dist/shared/projection/helpers.d.ts +34 -0
  29. package/dist/shared/projection/history.d.ts +12 -0
  30. package/dist/shared/projection/index.d.ts +3 -0
  31. package/dist/shared/projection/state.d.ts +22 -0
  32. package/dist/socket.d.ts +9 -0
  33. package/dist/types/index.d.ts +8 -0
  34. package/dist/types/rest.d.ts +17315 -0
  35. package/dist/types/sdk-profile.d.ts +47 -0
  36. package/dist/types/socket-events.d.ts +401 -0
  37. package/dist/version.d.ts +45 -0
  38. package/package.json +29 -0
  39. package/public-api.md +1103 -0
@@ -0,0 +1,47 @@
1
+ export interface ExistingSolutionRef {
2
+ kind: "existing";
3
+ solutionId: string;
4
+ bizRoleId?: string;
5
+ }
6
+ export interface PreparedSolutionAsset {
7
+ kind: "prepared";
8
+ assetId: string;
9
+ bizRoleId?: string;
10
+ }
11
+ export type SolutionRef = ExistingSolutionRef | PreparedSolutionAsset;
12
+ export interface SessionProfile {
13
+ solution?: SolutionRef;
14
+ model?: string;
15
+ compactionRatio?: number;
16
+ enableThinking?: boolean;
17
+ memoryEnabled?: boolean;
18
+ disableTools?: string[];
19
+ env?: Record<string, string>;
20
+ }
21
+ export interface RunOptions {
22
+ headless?: boolean;
23
+ outputSchema?: Record<string, unknown>;
24
+ runtimeEnv?: Record<string, string>;
25
+ timeoutMs?: number;
26
+ trace?: boolean;
27
+ compactionRatio?: number;
28
+ model?: string;
29
+ }
30
+ export interface PreparedSolution extends PreparedSolutionAsset {
31
+ assetId: string;
32
+ solutionId: string;
33
+ roles: string[];
34
+ expiresAt: string;
35
+ }
36
+ export interface RunResult {
37
+ sessionId: string;
38
+ chatRunId?: string;
39
+ result: unknown;
40
+ events: unknown[];
41
+ }
42
+ export interface RunTrace {
43
+ events: unknown[];
44
+ history: unknown[];
45
+ result: unknown;
46
+ configSnapshot: Record<string, unknown>;
47
+ }
@@ -0,0 +1,401 @@
1
+ /**
2
+ * 语音识别音频帧。后端(socketio_handlers.py)两种都收:
3
+ * 裸二进制,或带 request_id 的对象——一条连接上并发多个识别会话时,
4
+ * 只有带 request_id 才能区分是哪一路的音频。
5
+ */
6
+ export type AsrAudioPayload = ArrayBuffer | Uint8Array | {
7
+ pcm: ArrayBuffer | Uint8Array;
8
+ request_id?: string;
9
+ };
10
+ export declare namespace ChatSendPayloadSchema {
11
+ type SessionId = string;
12
+ type Mode = (("planning" | "executing") | null);
13
+ type AskuserAnswer = ({
14
+ [k: string]: unknown;
15
+ } | null);
16
+ type Model = (string | null);
17
+ type ThinkingOverride = (boolean | null);
18
+ type Headless = boolean;
19
+ type OutputSchema = ({
20
+ [k: string]: unknown;
21
+ } | null);
22
+ type FromStep = (number | string | null);
23
+ type Quotes = (unknown[] | null);
24
+ type DeprecateEntryIds = (string[] | null);
25
+ type ReplayDecision = (string | null);
26
+ type RuntimeEnv = ({
27
+ [k: string]: string;
28
+ } | null);
29
+ type CompactionRatio = (number | null);
30
+ interface ChatSendPayload {
31
+ session_id: SessionId;
32
+ message: Message;
33
+ mode?: Mode;
34
+ askuser_answer?: AskuserAnswer;
35
+ model?: Model;
36
+ thinking_override?: ThinkingOverride;
37
+ headless?: Headless;
38
+ output_schema?: OutputSchema;
39
+ whatif?: (WhatIfPayload | null);
40
+ replay_decision?: ReplayDecision;
41
+ runtime_env?: RuntimeEnv;
42
+ compaction_ratio?: CompactionRatio;
43
+ [k: string]: unknown;
44
+ }
45
+ interface Message {
46
+ [k: string]: unknown;
47
+ }
48
+ interface WhatIfPayload {
49
+ from_step?: FromStep;
50
+ quotes?: Quotes;
51
+ deprecate_entry_ids?: DeprecateEntryIds;
52
+ [k: string]: unknown;
53
+ }
54
+ }
55
+ export type ChatSendPayload = ChatSendPayloadSchema.ChatSendPayload;
56
+ export declare namespace ChatStopPayloadSchema {
57
+ type SessionId = string;
58
+ interface ChatStopPayload {
59
+ session_id: SessionId;
60
+ [k: string]: unknown;
61
+ }
62
+ }
63
+ export type ChatStopPayload = ChatStopPayloadSchema.ChatStopPayload;
64
+ export declare namespace ChatAppendPayloadSchema {
65
+ type SessionId = string;
66
+ type Message = string;
67
+ interface ChatAppendPayload {
68
+ session_id: SessionId;
69
+ message: Message;
70
+ [k: string]: unknown;
71
+ }
72
+ }
73
+ export type ChatAppendPayload = ChatAppendPayloadSchema.ChatAppendPayload;
74
+ export declare namespace ChatCompactPayloadSchema {
75
+ type SessionId = string;
76
+ interface ChatCompactPayload {
77
+ session_id: SessionId;
78
+ [k: string]: unknown;
79
+ }
80
+ }
81
+ export type ChatCompactPayload = ChatCompactPayloadSchema.ChatCompactPayload;
82
+ export declare namespace SessionSubscribePayloadSchema {
83
+ type SessionId = string;
84
+ type Mode = string;
85
+ type EventFormat = "raw";
86
+ type AfterSequence = number;
87
+ type Resume = boolean;
88
+ interface SessionSubscribePayload {
89
+ session_id: SessionId;
90
+ mode?: Mode;
91
+ event_format?: EventFormat;
92
+ after_sequence?: AfterSequence;
93
+ resume?: Resume;
94
+ [k: string]: unknown;
95
+ }
96
+ }
97
+ export type SessionSubscribePayload = SessionSubscribePayloadSchema.SessionSubscribePayload;
98
+ export declare namespace SessionSubscribeBatchPayloadSchema {
99
+ /**
100
+ * @minItems 1
101
+ * @maxItems 200
102
+ */
103
+ type Sessions = [SessionSubscribe, ...(SessionSubscribe)[]];
104
+ type SessionId = string;
105
+ type Mode = string;
106
+ type EventFormat = "raw";
107
+ type AfterSequence = number;
108
+ type Resume = boolean;
109
+ interface SessionSubscribeBatchPayload {
110
+ sessions: Sessions;
111
+ [k: string]: unknown;
112
+ }
113
+ interface SessionSubscribe {
114
+ session_id: SessionId;
115
+ mode?: Mode;
116
+ event_format?: EventFormat;
117
+ after_sequence?: AfterSequence;
118
+ resume?: Resume;
119
+ [k: string]: unknown;
120
+ }
121
+ }
122
+ export type SessionSubscribeBatchPayload = SessionSubscribeBatchPayloadSchema.SessionSubscribeBatchPayload;
123
+ export declare namespace SessionUnsubscribePayloadSchema {
124
+ type SessionId = string;
125
+ interface SessionUnsubscribePayload {
126
+ session_id: SessionId;
127
+ [k: string]: unknown;
128
+ }
129
+ }
130
+ export type SessionUnsubscribePayload = SessionUnsubscribePayloadSchema.SessionUnsubscribePayload;
131
+ export declare namespace AgentBoardProjectSubscribePayloadSchema {
132
+ type ProjectId = number;
133
+ interface AgentBoardProjectSubscribePayload {
134
+ project_id: ProjectId;
135
+ [k: string]: unknown;
136
+ }
137
+ }
138
+ export type AgentBoardProjectSubscribePayload = AgentBoardProjectSubscribePayloadSchema.AgentBoardProjectSubscribePayload;
139
+ export declare namespace AgentBoardProjectUnsubscribePayloadSchema {
140
+ type ProjectId = number;
141
+ interface AgentBoardProjectUnsubscribePayload {
142
+ project_id: ProjectId;
143
+ [k: string]: unknown;
144
+ }
145
+ }
146
+ export type AgentBoardProjectUnsubscribePayload = AgentBoardProjectUnsubscribePayloadSchema.AgentBoardProjectUnsubscribePayload;
147
+ export declare namespace ChatStartPayloadSchema {
148
+ type SessionId = (string | null);
149
+ interface ChatStartPayload {
150
+ session_id?: SessionId;
151
+ [k: string]: unknown;
152
+ }
153
+ }
154
+ export type ChatStartPayload = ChatStartPayloadSchema.ChatStartPayload;
155
+ export declare namespace ChatEndPayloadSchema {
156
+ type SessionId = (string | null);
157
+ type Status = (string | null);
158
+ type FinishReason = (string | null);
159
+ type ChatRunId = (string | null);
160
+ interface ChatEndPayload {
161
+ session_id?: SessionId;
162
+ status?: Status;
163
+ result?: unknown;
164
+ finish_reason?: FinishReason;
165
+ chat_run_id?: ChatRunId;
166
+ [k: string]: unknown;
167
+ }
168
+ }
169
+ export type ChatEndPayload = ChatEndPayloadSchema.ChatEndPayload;
170
+ export declare namespace SessionUpdatedPayloadSchema {
171
+ type SessionId = string;
172
+ type Model = (string | null);
173
+ type ReplayState = ({
174
+ [k: string]: unknown;
175
+ } | null);
176
+ type Intent = (string | null);
177
+ type ProjectId = (number | null);
178
+ type ProjectName = (string | null);
179
+ interface SessionUpdatedPayload {
180
+ session_id: SessionId;
181
+ model?: Model;
182
+ replay_state?: ReplayState;
183
+ intent?: Intent;
184
+ project_id?: ProjectId;
185
+ project_name?: ProjectName;
186
+ [k: string]: unknown;
187
+ }
188
+ }
189
+ export type SessionUpdatedPayload = SessionUpdatedPayloadSchema.SessionUpdatedPayload;
190
+ export declare namespace WorkspaceFilesChangedPayloadSchema {
191
+ type SessionId = string;
192
+ type FilePath = (string | null);
193
+ interface WorkspaceFilesChangedPayload {
194
+ session_id: SessionId;
195
+ file_path?: FilePath;
196
+ [k: string]: unknown;
197
+ }
198
+ }
199
+ export type WorkspaceFilesChangedPayload = WorkspaceFilesChangedPayloadSchema.WorkspaceFilesChangedPayload;
200
+ export declare namespace SystemErrorPayloadSchema {
201
+ type Message = string;
202
+ type SessionId = (string | null);
203
+ type Code = (string | number | null);
204
+ interface SystemErrorPayload {
205
+ message: Message;
206
+ session_id?: SessionId;
207
+ code?: Code;
208
+ detail?: Detail;
209
+ [k: string]: unknown;
210
+ }
211
+ interface Detail {
212
+ [k: string]: unknown;
213
+ }
214
+ }
215
+ export type SystemErrorPayload = SystemErrorPayloadSchema.SystemErrorPayload;
216
+ export declare namespace SystemNotificationPayloadSchema {
217
+ type SessionId = (string | null);
218
+ type NotificationType = string;
219
+ type Title = string;
220
+ type Detail = (string | null);
221
+ type Status = (string | null);
222
+ type Metadata = ({
223
+ [k: string]: unknown;
224
+ } | null);
225
+ interface SystemNotificationPayload {
226
+ session_id?: SessionId;
227
+ notification_type: NotificationType;
228
+ title: Title;
229
+ detail?: Detail;
230
+ status?: Status;
231
+ metadata?: Metadata;
232
+ [k: string]: unknown;
233
+ }
234
+ }
235
+ export type SystemNotificationPayload = SystemNotificationPayloadSchema.SystemNotificationPayload;
236
+ export declare namespace TurnEventsPayloadSchema {
237
+ type SessionId = string;
238
+ type Type = string;
239
+ type StreamSequence = (number | null);
240
+ type Events = RawWireEvent[];
241
+ interface TurnEventsPayload {
242
+ session_id: SessionId;
243
+ events: Events;
244
+ [k: string]: unknown;
245
+ }
246
+ interface RawWireEvent {
247
+ type: Type;
248
+ payload: Payload;
249
+ stream_sequence?: StreamSequence;
250
+ [k: string]: unknown;
251
+ }
252
+ interface Payload {
253
+ [k: string]: unknown;
254
+ }
255
+ }
256
+ export type TurnEventsPayload = TurnEventsPayloadSchema.TurnEventsPayload;
257
+ export declare namespace AsrReadyPayloadSchema {
258
+ type RequestId = string;
259
+ type Provider = string;
260
+ interface AsrReadyPayload {
261
+ request_id: RequestId;
262
+ provider: Provider;
263
+ [k: string]: unknown;
264
+ }
265
+ }
266
+ export type AsrReadyPayload = AsrReadyPayloadSchema.AsrReadyPayload;
267
+ export declare namespace AsrTextPayloadSchema {
268
+ type Text = string;
269
+ type RequestId = (string | null);
270
+ interface AsrTextPayload {
271
+ text: Text;
272
+ request_id?: RequestId;
273
+ [k: string]: unknown;
274
+ }
275
+ }
276
+ export type AsrTextPayload = AsrTextPayloadSchema.AsrTextPayload;
277
+ export declare namespace AsrClosedPayloadSchema {
278
+ type RequestId = string;
279
+ interface AsrClosedPayload {
280
+ request_id: RequestId;
281
+ [k: string]: unknown;
282
+ }
283
+ }
284
+ export type AsrClosedPayload = AsrClosedPayloadSchema.AsrClosedPayload;
285
+ export declare namespace AsrErrorPayloadSchema {
286
+ type Message = string;
287
+ type RequestId = (string | null);
288
+ interface AsrErrorPayload {
289
+ message: Message;
290
+ request_id?: RequestId;
291
+ [k: string]: unknown;
292
+ }
293
+ }
294
+ export type AsrErrorPayload = AsrErrorPayloadSchema.AsrErrorPayload;
295
+ export declare namespace AgentBoardBoardTaskChangedPayloadSchema {
296
+ type ProjectId = number;
297
+ type Action = ("created" | "updated" | "deleted");
298
+ interface AgentBoardBoardTaskChangedPayload {
299
+ project_id: ProjectId;
300
+ action: Action;
301
+ task: Task;
302
+ [k: string]: unknown;
303
+ }
304
+ interface Task {
305
+ [k: string]: unknown;
306
+ }
307
+ }
308
+ export type AgentBoardBoardTaskChangedPayload = AgentBoardBoardTaskChangedPayloadSchema.AgentBoardBoardTaskChangedPayload;
309
+ export declare namespace AgentBoardFileOpPayloadSchema {
310
+ type ProjectId = number;
311
+ type SessionId = string;
312
+ type ToolCallId = (string | null);
313
+ type Action = string;
314
+ type FilePath = string;
315
+ type Description = (string | null);
316
+ type ContentPreview = (string | null);
317
+ type FinalContent = (string | null);
318
+ type ContentDelta = (boolean | null);
319
+ type IsFinal = (boolean | null);
320
+ type CreatedAt = string;
321
+ interface AgentBoardFileOpPayload {
322
+ project_id: ProjectId;
323
+ session_id: SessionId;
324
+ tool_call_id?: ToolCallId;
325
+ action: Action;
326
+ file_path: FilePath;
327
+ description?: Description;
328
+ content_preview?: ContentPreview;
329
+ final_content?: FinalContent;
330
+ content_delta?: ContentDelta;
331
+ is_final?: IsFinal;
332
+ created_at: CreatedAt;
333
+ [k: string]: unknown;
334
+ }
335
+ }
336
+ export type AgentBoardFileOpPayload = AgentBoardFileOpPayloadSchema.AgentBoardFileOpPayload;
337
+ export declare namespace ChatStopAckSchema {
338
+ type Status = string;
339
+ type Message = (string | null);
340
+ type Code = (string | number | null);
341
+ interface ChatStopAck {
342
+ status: Status;
343
+ message?: Message;
344
+ code?: Code;
345
+ [k: string]: unknown;
346
+ }
347
+ }
348
+ export type ChatStopAck = ChatStopAckSchema.ChatStopAck;
349
+ export declare namespace ChatCompactAckSchema {
350
+ type Status = string;
351
+ type Message = (string | null);
352
+ type Code = (string | number | null);
353
+ interface ChatCompactAck {
354
+ status: Status;
355
+ message?: Message;
356
+ code?: Code;
357
+ [k: string]: unknown;
358
+ }
359
+ }
360
+ export type ChatCompactAck = ChatCompactAckSchema.ChatCompactAck;
361
+ export interface ClientToServerEvents {
362
+ "chat:send": (payload: ChatSendPayload) => void;
363
+ "chat:stop": (payload: ChatStopPayload, ack: (response: ChatStopAck) => void) => void;
364
+ "chat:append": (payload: ChatAppendPayload) => void;
365
+ "chat:compact": (payload: ChatCompactPayload, ack: (response: ChatCompactAck) => void) => void;
366
+ "session:subscribe": (payload: SessionSubscribePayload) => void;
367
+ "session:subscribe_batch": (payload: SessionSubscribeBatchPayload) => void;
368
+ "session:unsubscribe": (payload: SessionUnsubscribePayload) => void;
369
+ "agent-board:project:subscribe": (payload: AgentBoardProjectSubscribePayload) => void;
370
+ "agent-board:project:unsubscribe": (payload: AgentBoardProjectUnsubscribePayload) => void;
371
+ "asr:start": (payload: unknown) => void;
372
+ "asr:audio": (payload: AsrAudioPayload) => void;
373
+ "asr:stop": (payload: unknown) => void;
374
+ "gis.event.analysis.request": (payload: unknown, ack: (response: unknown) => void) => void;
375
+ }
376
+ export interface ServerToClientEvents {
377
+ "chat:start": (payload: ChatStartPayload) => void;
378
+ "chat:end": (payload: ChatEndPayload) => void;
379
+ "chat:append:ack": (payload: unknown) => void;
380
+ "session:updated": (payload: SessionUpdatedPayload) => void;
381
+ "workspace:files_changed": (payload: WorkspaceFilesChangedPayload) => void;
382
+ "system:error": (payload: SystemErrorPayload) => void;
383
+ "system:notification": (payload: SystemNotificationPayload) => void;
384
+ "turn:events": (payload: TurnEventsPayload) => void;
385
+ "task:updated": (payload: unknown) => void;
386
+ "task:synced": (payload: unknown) => void;
387
+ "artifact:created": (payload: unknown) => void;
388
+ "artifact:updated": (payload: unknown) => void;
389
+ "bg:started": (payload: unknown) => void;
390
+ "bg:tasks_completed": (payload: unknown) => void;
391
+ "skills:changed": (payload: unknown) => void;
392
+ "session:rewind": (payload: unknown) => void;
393
+ "asr:ready": (payload: AsrReadyPayload) => void;
394
+ "asr:partial": (payload: AsrTextPayload) => void;
395
+ "asr:final": (payload: AsrTextPayload) => void;
396
+ "asr:closed": (payload: AsrClosedPayload) => void;
397
+ "asr:error": (payload: AsrErrorPayload) => void;
398
+ "replay:input_mismatch": (payload: unknown) => void;
399
+ "agent-board:board-task:changed": (payload: AgentBoardBoardTaskChangedPayload) => void;
400
+ "agent-board:file-op": (payload: AgentBoardFileOpPayload) => void;
401
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * SDK 与 Server 的版本握手。
3
+ *
4
+ * 本次 SDK 拆分是一次性破坏性升级:旧 agent-kit 与新 Server、新 SDK 与旧 Server
5
+ * 都不能工作。握手的目的不是兼容,而是把「新旧组合失配」从难以理解的运行时异常
6
+ * 变成一句明确的升级指引。
7
+ *
8
+ * 方向一(本文件):SDK 在首次连接前查询 Server 版本,不匹配就拒绝连接。
9
+ * 方向二(Server 侧):Server 校验请求头 X-Blade-SDK,旧客户端收到结构化错误。
10
+ */
11
+ /** 本 SDK 的名称与版本,随请求头与 Socket.IO 握手一并声明。 */
12
+ export declare const SDK_NAME = "agent-client";
13
+ export declare const SDK_VERSION = "2.0.0";
14
+ /** REST 请求与 Socket 握手中声明 SDK 身份的标头名。 */
15
+ export declare const SDK_HEADER = "X-Blade-SDK";
16
+ /** 新协议起始的 Server 版本;低于此版本的正式版 Server 只能配 agent-kit 1.1.0。 */
17
+ export declare const MIN_SERVER_VERSION = "1.1.1";
18
+ export interface ServerVersionInfo {
19
+ /** Server 自身版本号,如 "1.1.1"。 */
20
+ version: string;
21
+ /**
22
+ * Server 要求的最低 SDK 版本。未来再出现协议不兼容时,Server 抬高本字段即可,
23
+ * SDK 侧无需改判断逻辑——这是避免下一次破坏性升级再痛一遍的关键。
24
+ */
25
+ min_sdk?: string;
26
+ }
27
+ export declare class VersionMismatchError extends Error {
28
+ readonly serverVersion: string | null;
29
+ readonly sdkVersion: string;
30
+ readonly hint: string;
31
+ constructor(options: {
32
+ serverVersion: string | null;
33
+ hint: string;
34
+ });
35
+ }
36
+ /** 预发布/开发版(如 1.1.1-dev.3、0.0.0+local)不参与拦截,避免卡住开发环境。 */
37
+ export declare function isPrerelease(version: string): boolean;
38
+ /** a < b 返回负数,相等返回 0,a > b 返回正数。无法解析时返回 0。 */
39
+ export declare function compareVersions(a: string, b: string): number;
40
+ /**
41
+ * 校验 Server 版本信息。不匹配抛 VersionMismatchError,匹配则正常返回。
42
+ *
43
+ * @param info Server /api/version 的响应;null 表示该接口不存在或不可达(旧 Server)。
44
+ */
45
+ export declare function assertVersionCompatible(info: ServerVersionInfo | null): void;
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@blade-hq/agent-client",
3
+ "version": "1.1.1",
4
+ "description": "Blade Agent 框架无关客户端:会话实时状态机、REST 通道、弹窗登录、页面协作。浏览器与 Node.js 通用。",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md",
17
+ "public-api.md"
18
+ ],
19
+ "sideEffects": [
20
+ "**/*.css"
21
+ ],
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "dependencies": {
26
+ "arktype": "^2.1.0",
27
+ "socket.io-client": "^4.8.0"
28
+ }
29
+ }