@avernet-plugin/deepseek-harness-channel-bcn 0.1.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.
- package/LEGAL.md +9 -0
- package/LICENSE +176 -0
- package/README.md +242 -0
- package/cordis.patch.yml +5 -0
- package/dist/bridge.d.ts +51 -0
- package/dist/bridge.d.ts.map +1 -0
- package/dist/bridge.js +695 -0
- package/dist/bridge.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +60 -0
- package/dist/config.js.map +1 -0
- package/dist/configure.d.ts +18 -0
- package/dist/configure.d.ts.map +1 -0
- package/dist/configure.js +207 -0
- package/dist/configure.js.map +1 -0
- package/dist/credentials.d.ts +15 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +44 -0
- package/dist/credentials.js.map +1 -0
- package/dist/endpoint.d.ts +21 -0
- package/dist/endpoint.d.ts.map +1 -0
- package/dist/endpoint.js +156 -0
- package/dist/endpoint.js.map +1 -0
- package/dist/http-client.d.ts +28 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +106 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol.d.ts +107 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +157 -0
- package/dist/protocol.js.map +1 -0
- package/dist/route-tool.d.ts +5 -0
- package/dist/route-tool.d.ts.map +1 -0
- package/dist/route-tool.js +38 -0
- package/dist/route-tool.js.map +1 -0
- package/dist/session-identity.d.ts +22 -0
- package/dist/session-identity.d.ts.map +1 -0
- package/dist/session-identity.js +35 -0
- package/dist/session-identity.js.map +1 -0
- package/dist/task-tools.d.ts +9 -0
- package/dist/task-tools.d.ts.map +1 -0
- package/dist/task-tools.js +81 -0
- package/dist/task-tools.js.map +1 -0
- package/dist/ws-client.d.ts +62 -0
- package/dist/ws-client.d.ts.map +1 -0
- package/dist/ws-client.js +433 -0
- package/dist/ws-client.js.map +1 -0
- package/install-dsh.sh +95 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ToolDefinition } from '@deepseek-ai/dsh-tools';
|
|
2
|
+
import type { BcnBridge } from './bridge.js';
|
|
3
|
+
export declare const BCS_ROUTE_TOOL_NAME = "bcs_route";
|
|
4
|
+
export declare function createBcsRouteTool(bridge: BcnBridge): ToolDefinition;
|
|
5
|
+
//# sourceMappingURL=route-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-tool.d.ts","sourceRoot":"","sources":["../src/route-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAE/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAmCpE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { defineTool } from '@deepseek-ai/dsh-tools';
|
|
2
|
+
export const BCS_ROUTE_TOOL_NAME = 'bcs_route';
|
|
3
|
+
export function createBcsRouteTool(bridge) {
|
|
4
|
+
return defineTool({
|
|
5
|
+
name: BCS_ROUTE_TOOL_NAME,
|
|
6
|
+
description: 'Specify which bot or bots in the current BCN group should respond next. ' +
|
|
7
|
+
'The routing intent is attached to the current final reply; do not duplicate it with @mentions.',
|
|
8
|
+
parameters: {
|
|
9
|
+
to: {
|
|
10
|
+
type: 'array',
|
|
11
|
+
required: true,
|
|
12
|
+
description: 'One or more Bot display-name or bot_uuid selectors.',
|
|
13
|
+
items: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
additionalProperties: false,
|
|
16
|
+
properties: {
|
|
17
|
+
type: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
enum: ['name', 'bot'],
|
|
20
|
+
required: true,
|
|
21
|
+
description: "Use 'name' for a Bot display name or 'bot' for a bot_uuid.",
|
|
22
|
+
},
|
|
23
|
+
value: { type: 'string', required: true },
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
reason: { type: 'string', required: true, description: 'Why this routing is needed.' },
|
|
28
|
+
},
|
|
29
|
+
output: {
|
|
30
|
+
schema: { type: 'json' },
|
|
31
|
+
render: (_args, value) => [{ type: 'text', text: JSON.stringify(value) }],
|
|
32
|
+
},
|
|
33
|
+
async execute(args, exec) {
|
|
34
|
+
return bridge.captureRoute(exec.agent, args.to, args.reason, exec.signal);
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=route-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-tool.js","sourceRoot":"","sources":["../src/route-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,wBAAwB,CAAC;AAGzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,0EAA0E;YAC1E,gGAAgG;QAClG,UAAU,EAAE;YACV,EAAE,EAAE;gBACF,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,qDAAqD;gBAClE,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,KAAK;oBAC3B,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;4BACrB,QAAQ,EAAE,IAAI;4BACd,WAAW,EAAE,4DAA4D;yBAC1E;wBACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;qBAC1C;iBACF;aACF;YACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,6BAA6B,EAAE;SACvF;QACD,MAAM,EAAE;YACN,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACxB,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;SAC1E;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;YACtB,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SessionId } from '@deepseek-ai/dsh-session';
|
|
2
|
+
export interface BcnSessionIdentityInput {
|
|
3
|
+
sessionKey: string;
|
|
4
|
+
groupId: string;
|
|
5
|
+
bcsSessionId?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the BCN identity that owns one DSH conversation.
|
|
9
|
+
*
|
|
10
|
+
* V3 supplies the canonical session explicitly. V2 keeps a group-scoped
|
|
11
|
+
* `session_key`, but carries the concrete non-legacy session in
|
|
12
|
+
* `bcs_group_id`. Frames without either session discriminator retain the
|
|
13
|
+
* historical `session_key` mapping.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveBcnSessionIdentity(input: BcnSessionIdentityInput): string;
|
|
16
|
+
/**
|
|
17
|
+
* Convert the resolved BCN identity to a fixed-size DSH Session ID.
|
|
18
|
+
* Keeping this translation isolated lets a later canonical V3-only adapter
|
|
19
|
+
* change the wire selection without touching DSH persistence.
|
|
20
|
+
*/
|
|
21
|
+
export declare function dshSessionIdForV2(sessionIdentity: string): SessionId;
|
|
22
|
+
//# sourceMappingURL=session-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-identity.d.ts","sourceRoot":"","sources":["../src/session-identity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAWhF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAKpE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { SessionId } from '@deepseek-ai/dsh-session';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the BCN identity that owns one DSH conversation.
|
|
5
|
+
*
|
|
6
|
+
* V3 supplies the canonical session explicitly. V2 keeps a group-scoped
|
|
7
|
+
* `session_key`, but carries the concrete non-legacy session in
|
|
8
|
+
* `bcs_group_id`. Frames without either session discriminator retain the
|
|
9
|
+
* historical `session_key` mapping.
|
|
10
|
+
*/
|
|
11
|
+
export function resolveBcnSessionIdentity(input) {
|
|
12
|
+
const canonicalSessionId = input.bcsSessionId?.trim();
|
|
13
|
+
if (canonicalSessionId)
|
|
14
|
+
return canonicalSessionId;
|
|
15
|
+
const wireGroupId = input.groupId.trim();
|
|
16
|
+
const separator = wireGroupId.indexOf(':');
|
|
17
|
+
if (separator > 0 && separator < wireGroupId.length - 1)
|
|
18
|
+
return wireGroupId;
|
|
19
|
+
const legacySessionKey = input.sessionKey.trim();
|
|
20
|
+
if (!legacySessionKey)
|
|
21
|
+
throw new Error('BCN session identity requires a non-empty session_key');
|
|
22
|
+
return legacySessionKey;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Convert the resolved BCN identity to a fixed-size DSH Session ID.
|
|
26
|
+
* Keeping this translation isolated lets a later canonical V3-only adapter
|
|
27
|
+
* change the wire selection without touching DSH persistence.
|
|
28
|
+
*/
|
|
29
|
+
export function dshSessionIdForV2(sessionIdentity) {
|
|
30
|
+
// COSEC: hash the server-delivered identity before it reaches DSH's
|
|
31
|
+
// filesystem-backed Session ID boundary; raw protocol text never becomes a path segment.
|
|
32
|
+
const digest = createHash('sha256').update(sessionIdentity, 'utf8').digest('hex');
|
|
33
|
+
return SessionId(`bcn-v2-${digest}`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=session-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-identity.js","sourceRoot":"","sources":["../src/session-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAQrD;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAA8B;IACtE,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAElD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC;IAE5E,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,gBAAgB;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAChG,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,eAAuB;IACvD,oEAAoE;IACpE,yFAAyF;IACzF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,SAAS,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ToolDefinition } from '@deepseek-ai/dsh-tools';
|
|
2
|
+
import type { BcnBridge } from './bridge.js';
|
|
3
|
+
export declare const BCS_ASSIGN_TASK_TOOL_NAME = "bcs_assign_task";
|
|
4
|
+
export declare const BCS_SEND_TASK_MESSAGE_TOOL_NAME = "bcs_send_task_message";
|
|
5
|
+
export declare const BCS_TASK_COMPLETE_TOOL_NAME = "bcs_task_complete";
|
|
6
|
+
export declare function createBcsAssignTaskTool(bridge: BcnBridge): ToolDefinition;
|
|
7
|
+
export declare function createBcsSendTaskMessageTool(bridge: BcnBridge): ToolDefinition;
|
|
8
|
+
export declare function createBcsTaskCompleteTool(bridge: BcnBridge): ToolDefinition;
|
|
9
|
+
//# sourceMappingURL=task-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-tools.d.ts","sourceRoot":"","sources":["../src/task-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,+BAA+B,0BAA0B,CAAC;AACvE,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAE/D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CA0CzE;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAqB9E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAqB3E"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { defineTool } from '@deepseek-ai/dsh-tools';
|
|
2
|
+
export const BCS_ASSIGN_TASK_TOOL_NAME = 'bcs_assign_task';
|
|
3
|
+
export const BCS_SEND_TASK_MESSAGE_TOOL_NAME = 'bcs_send_task_message';
|
|
4
|
+
export const BCS_TASK_COMPLETE_TOOL_NAME = 'bcs_task_complete';
|
|
5
|
+
export function createBcsAssignTaskTool(bridge) {
|
|
6
|
+
return defineTool({
|
|
7
|
+
name: BCS_ASSIGN_TASK_TOOL_NAME,
|
|
8
|
+
description: 'Dispatch a task to a sub bot in this task group. Returns immediately; ' +
|
|
9
|
+
"the sub bot's response will arrive as a follow-up message. " +
|
|
10
|
+
'You can dispatch multiple sub bots in parallel.',
|
|
11
|
+
parameters: {
|
|
12
|
+
target_bot: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
required: true,
|
|
15
|
+
description: "Target bot name (for example 'DBA') or bot ID (for example 'bot_abc123'). " +
|
|
16
|
+
"Use one or the other, not a combined 'name(id)' value.",
|
|
17
|
+
},
|
|
18
|
+
message: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
required: true,
|
|
21
|
+
description: 'The task description or instruction to send to the sub bot.',
|
|
22
|
+
},
|
|
23
|
+
response_mode: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
enum: ['after-last-tool-call', 'full'],
|
|
26
|
+
description: "Use 'after-last-tool-call' for the final answer after tool calls (default), " +
|
|
27
|
+
"or 'full' for the complete response text.",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
output: {
|
|
31
|
+
schema: { type: 'json' },
|
|
32
|
+
render: (_args, value) => [{ type: 'text', text: JSON.stringify(value) }],
|
|
33
|
+
},
|
|
34
|
+
async execute(args, exec) {
|
|
35
|
+
return bridge.assignTask(exec.agent, args.target_bot, args.message, args.response_mode, exec.signal);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function createBcsSendTaskMessageTool(bridge) {
|
|
40
|
+
return defineTool({
|
|
41
|
+
name: BCS_SEND_TASK_MESSAGE_TOOL_NAME,
|
|
42
|
+
description: 'Send a task-scoped message from this worker bot to the manager bot. ' +
|
|
43
|
+
'Use this for progress updates, blockers, intermediate findings, or supplemental information.',
|
|
44
|
+
parameters: {
|
|
45
|
+
message: {
|
|
46
|
+
type: 'string',
|
|
47
|
+
required: true,
|
|
48
|
+
description: 'The task-scoped message to send to the manager bot.',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
output: {
|
|
52
|
+
schema: { type: 'json' },
|
|
53
|
+
render: (_args, value) => [{ type: 'text', text: JSON.stringify(value) }],
|
|
54
|
+
},
|
|
55
|
+
async execute(args, exec) {
|
|
56
|
+
return bridge.sendTaskMessage(exec.agent, args.message, exec.signal);
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
export function createBcsTaskCompleteTool(bridge) {
|
|
61
|
+
return defineTool({
|
|
62
|
+
name: BCS_TASK_COMPLETE_TOOL_NAME,
|
|
63
|
+
description: "Signal that the task group's work is fully done. Only call this after receiving replies " +
|
|
64
|
+
'from all sub bots and completing the final analysis. Provide a comprehensive summary of all results.',
|
|
65
|
+
parameters: {
|
|
66
|
+
summary: {
|
|
67
|
+
type: 'string',
|
|
68
|
+
required: true,
|
|
69
|
+
description: "Final summary of the task group's work and results.",
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
output: {
|
|
73
|
+
schema: { type: 'json' },
|
|
74
|
+
render: (_args, value) => [{ type: 'text', text: JSON.stringify(value) }],
|
|
75
|
+
},
|
|
76
|
+
async execute(args, exec) {
|
|
77
|
+
return bridge.completeTask(exec.agent, args.summary, exec.signal);
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=task-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-tools.js","sourceRoot":"","sources":["../src/task-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Config } from './config.js';
|
|
2
|
+
import type { ResolvedEndpoint } from './endpoint.js';
|
|
3
|
+
import { type BotSession, type EventFrame, type RequestFrame, type ResponseFrame } from './protocol.js';
|
|
4
|
+
type RequestHandler = (frame: RequestFrame) => Promise<void>;
|
|
5
|
+
type EventHandler = (frame: EventFrame) => Promise<void>;
|
|
6
|
+
export interface BcnWsClientOptions {
|
|
7
|
+
endpoint: ResolvedEndpoint;
|
|
8
|
+
session: BotSession;
|
|
9
|
+
config: Config;
|
|
10
|
+
onSessionChanged: (session: BotSession) => Promise<void>;
|
|
11
|
+
status?: () => 'idle' | 'busy';
|
|
12
|
+
log?: {
|
|
13
|
+
info(message: string): void;
|
|
14
|
+
warn(message: string): void;
|
|
15
|
+
error(message: string): void;
|
|
16
|
+
debug?(message: string): void;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare class BcnWsClient {
|
|
20
|
+
private readonly options;
|
|
21
|
+
private socket;
|
|
22
|
+
private openingSocket;
|
|
23
|
+
private connectedState;
|
|
24
|
+
private stopped;
|
|
25
|
+
private connecting;
|
|
26
|
+
private reconnectDelayMs;
|
|
27
|
+
private reconnectTimer;
|
|
28
|
+
private heartbeatTimer;
|
|
29
|
+
private requestCounter;
|
|
30
|
+
private eventSequence;
|
|
31
|
+
private pending;
|
|
32
|
+
private requestHandlers;
|
|
33
|
+
private eventHandlers;
|
|
34
|
+
private queuedEvents;
|
|
35
|
+
private queuedEventBytes;
|
|
36
|
+
private session;
|
|
37
|
+
constructor(options: BcnWsClientOptions);
|
|
38
|
+
get connected(): boolean;
|
|
39
|
+
get botSession(): BotSession;
|
|
40
|
+
start(): void;
|
|
41
|
+
stop(): Promise<void>;
|
|
42
|
+
onRequest(method: string, handler: RequestHandler): () => void;
|
|
43
|
+
onEvent(event: string, handler: EventHandler): () => void;
|
|
44
|
+
sendResponse(id: string, ok: boolean, payload?: Record<string, unknown>, error?: ResponseFrame['error']): void;
|
|
45
|
+
sendEvent(event: string, payload: Record<string, unknown>): void;
|
|
46
|
+
sendRequest(method: string, params: Record<string, unknown>, timeoutMs?: number, signal?: AbortSignal): Promise<ResponseFrame>;
|
|
47
|
+
private scheduleConnect;
|
|
48
|
+
private connectOnce;
|
|
49
|
+
private openSocket;
|
|
50
|
+
private installSocketListeners;
|
|
51
|
+
private handleMessage;
|
|
52
|
+
private handleResponse;
|
|
53
|
+
private handleRequest;
|
|
54
|
+
private handleEvent;
|
|
55
|
+
private startHeartbeat;
|
|
56
|
+
private flushQueuedEvents;
|
|
57
|
+
private sendFrameNow;
|
|
58
|
+
private rejectPending;
|
|
59
|
+
private nextRequestId;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=ws-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|