@rkat/mobkit-sdk 0.4.9
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/dist/agent-builder.d.ts +44 -0
- package/dist/agent-builder.d.ts.map +1 -0
- package/dist/agent-builder.js +111 -0
- package/dist/agent-builder.js.map +1 -0
- package/dist/builder.d.ts +74 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +145 -0
- package/dist/builder.js.map +1 -0
- package/dist/cjs/agent-builder.cjs +114 -0
- package/dist/cjs/builder.cjs +182 -0
- package/dist/cjs/client.cjs +182 -0
- package/dist/cjs/config/auth.cjs +44 -0
- package/dist/cjs/config/index.cjs +51 -0
- package/dist/cjs/config/memory.cjs +28 -0
- package/dist/cjs/config/session-store.cjs +41 -0
- package/dist/cjs/errors.cjs +82 -0
- package/dist/cjs/events.cjs +176 -0
- package/dist/cjs/helpers.cjs +72 -0
- package/dist/cjs/index.cjs +130 -0
- package/dist/cjs/models.cjs +124 -0
- package/dist/cjs/runtime.cjs +476 -0
- package/dist/cjs/sse.cjs +79 -0
- package/dist/cjs/transport.cjs +282 -0
- package/dist/cjs/types.cjs +376 -0
- package/dist/client.d.ts +79 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +178 -0
- package/dist/client.js.map +1 -0
- package/dist/config/auth.d.ts +28 -0
- package/dist/config/auth.d.ts.map +1 -0
- package/dist/config/auth.js +39 -0
- package/dist/config/auth.js.map +1 -0
- package/dist/config/index.d.ts +16 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +16 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/memory.d.ts +16 -0
- package/dist/config/memory.d.ts.map +1 -0
- package/dist/config/memory.js +25 -0
- package/dist/config/memory.js.map +1 -0
- package/dist/config/session-store.d.ts +23 -0
- package/dist/config/session-store.d.ts.map +1 -0
- package/dist/config/session-store.js +36 -0
- package/dist/config/session-store.js.map +1 -0
- package/dist/errors.d.ts +48 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +74 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +126 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +164 -0
- package/dist/events.js.map +1 -0
- package/dist/helpers.d.ts +58 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +62 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +61 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +118 -0
- package/dist/models.js.map +1 -0
- package/dist/runtime.d.ts +131 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +470 -0
- package/dist/runtime.js.map +1 -0
- package/dist/sse.d.ts +21 -0
- package/dist/sse.d.ts.map +1 -0
- package/dist/sse.js +76 -0
- package/dist/sse.js.map +1 -0
- package/dist/transport.d.ts +84 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +275 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +209 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +348 -0
- package/dist/types.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SessionAgentBuilder protocol and CallbackDispatcher.
|
|
3
|
+
*
|
|
4
|
+
* The builder protocol uses imperative mutation: buildAgent receives a
|
|
5
|
+
* mutable SessionBuildOptions and modifies it in place.
|
|
6
|
+
*/
|
|
7
|
+
import { SessionBuildOptions } from "./models.js";
|
|
8
|
+
import { type ErrorEvent } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Protocol for building agents during session creation.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const builder: SessionAgentBuilder = {
|
|
15
|
+
* async buildAgent(opts) {
|
|
16
|
+
* opts.profileName = "assistant";
|
|
17
|
+
* opts.registerTool("search", searchHandler);
|
|
18
|
+
* },
|
|
19
|
+
* };
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export interface SessionAgentBuilder {
|
|
23
|
+
buildAgent(options: SessionBuildOptions): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export type ErrorCallback = (event: ErrorEvent) => void | Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Routes incoming JSON-RPC callbacks from the Rust runtime to the
|
|
28
|
+
* registered SessionAgentBuilder and tool handlers.
|
|
29
|
+
*
|
|
30
|
+
* Tool handlers are scoped by a build-level scope_id to prevent
|
|
31
|
+
* cross-session handler bleed in concurrent sessions.
|
|
32
|
+
*/
|
|
33
|
+
export declare class CallbackDispatcher {
|
|
34
|
+
private _builder;
|
|
35
|
+
private _errorCallback;
|
|
36
|
+
private readonly _toolHandlers;
|
|
37
|
+
private readonly _scopeTools;
|
|
38
|
+
registerBuilder(builder: SessionAgentBuilder): void;
|
|
39
|
+
registerErrorCallback(callback: ErrorCallback): void;
|
|
40
|
+
/** Remove all tool handlers for a scope. Call when a session ends. */
|
|
41
|
+
releaseScope(scopeId: string): void;
|
|
42
|
+
handleCallback(method: string, params: Record<string, unknown>): Promise<unknown>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=agent-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-builder.d.ts","sourceRoot":"","sources":["../src/agent-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAoB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAI9D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAIxE;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAInD,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIpD,sEAAsE;IACtE,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU7B,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC;CAwFpB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SessionAgentBuilder protocol and CallbackDispatcher.
|
|
3
|
+
*
|
|
4
|
+
* The builder protocol uses imperative mutation: buildAgent receives a
|
|
5
|
+
* mutable SessionBuildOptions and modifies it in place.
|
|
6
|
+
*/
|
|
7
|
+
import { SessionBuildOptions } from "./models.js";
|
|
8
|
+
import { parseErrorEvent } from "./types.js";
|
|
9
|
+
// -- CallbackDispatcher ---------------------------------------------------
|
|
10
|
+
/**
|
|
11
|
+
* Routes incoming JSON-RPC callbacks from the Rust runtime to the
|
|
12
|
+
* registered SessionAgentBuilder and tool handlers.
|
|
13
|
+
*
|
|
14
|
+
* Tool handlers are scoped by a build-level scope_id to prevent
|
|
15
|
+
* cross-session handler bleed in concurrent sessions.
|
|
16
|
+
*/
|
|
17
|
+
export class CallbackDispatcher {
|
|
18
|
+
_builder = null;
|
|
19
|
+
_errorCallback = null;
|
|
20
|
+
_toolHandlers = new Map();
|
|
21
|
+
_scopeTools = new Map();
|
|
22
|
+
registerBuilder(builder) {
|
|
23
|
+
this._builder = builder;
|
|
24
|
+
}
|
|
25
|
+
registerErrorCallback(callback) {
|
|
26
|
+
this._errorCallback = callback;
|
|
27
|
+
}
|
|
28
|
+
/** Remove all tool handlers for a scope. Call when a session ends. */
|
|
29
|
+
releaseScope(scopeId) {
|
|
30
|
+
const tools = this._scopeTools.get(scopeId);
|
|
31
|
+
if (tools) {
|
|
32
|
+
for (const toolName of tools) {
|
|
33
|
+
this._toolHandlers.delete(`${scopeId}:${toolName}`);
|
|
34
|
+
}
|
|
35
|
+
this._scopeTools.delete(scopeId);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async handleCallback(method, params) {
|
|
39
|
+
if (method === "mobkit/on_error") {
|
|
40
|
+
if (this._errorCallback !== null) {
|
|
41
|
+
const event = parseErrorEvent(params);
|
|
42
|
+
try {
|
|
43
|
+
await this._errorCallback(event);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Fire-and-forget — swallow error callback failures
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
if (method === "callback/build_agent") {
|
|
52
|
+
if (this._builder === null) {
|
|
53
|
+
throw new Error("no SessionAgentBuilder registered");
|
|
54
|
+
}
|
|
55
|
+
const rawOptions = {
|
|
56
|
+
...(typeof params.options === "object" && params.options !== null
|
|
57
|
+
? params.options
|
|
58
|
+
: {}),
|
|
59
|
+
};
|
|
60
|
+
const scopeId = String(rawOptions.scope_id ?? "");
|
|
61
|
+
if (!scopeId) {
|
|
62
|
+
throw new Error("callback/build_agent requires scope_id in options");
|
|
63
|
+
}
|
|
64
|
+
delete rawOptions.scope_id;
|
|
65
|
+
const opts = new SessionBuildOptions();
|
|
66
|
+
if (rawOptions.app_context !== undefined) {
|
|
67
|
+
opts.appContext = rawOptions.app_context;
|
|
68
|
+
}
|
|
69
|
+
if (Array.isArray(rawOptions.additional_instructions)) {
|
|
70
|
+
opts.additionalInstructions = rawOptions.additional_instructions.filter((v) => typeof v === "string");
|
|
71
|
+
}
|
|
72
|
+
if (typeof rawOptions.session_id === "string") {
|
|
73
|
+
opts.sessionId = rawOptions.session_id;
|
|
74
|
+
}
|
|
75
|
+
if (typeof rawOptions.labels === "object" &&
|
|
76
|
+
rawOptions.labels !== null) {
|
|
77
|
+
opts.labels = rawOptions.labels;
|
|
78
|
+
}
|
|
79
|
+
if (typeof rawOptions.profile_name === "string") {
|
|
80
|
+
opts.profileName = rawOptions.profile_name;
|
|
81
|
+
}
|
|
82
|
+
await this._builder.buildAgent(opts);
|
|
83
|
+
// Capture tool handlers scoped to this build
|
|
84
|
+
const toolNames = [];
|
|
85
|
+
for (const [name, handler] of opts.toolHandlers) {
|
|
86
|
+
this._toolHandlers.set(`${scopeId}:${name}`, handler);
|
|
87
|
+
toolNames.push(name);
|
|
88
|
+
}
|
|
89
|
+
this._scopeTools.set(scopeId, toolNames);
|
|
90
|
+
return opts.toDict();
|
|
91
|
+
}
|
|
92
|
+
if (method === "callback/call_tool") {
|
|
93
|
+
const scopeId = String(params.scope_id ?? "");
|
|
94
|
+
if (!scopeId) {
|
|
95
|
+
throw new Error("callback/call_tool requires scope_id");
|
|
96
|
+
}
|
|
97
|
+
const toolName = String(params.tool ?? "");
|
|
98
|
+
const args = (typeof params.arguments === "object" && params.arguments !== null
|
|
99
|
+
? params.arguments
|
|
100
|
+
: {});
|
|
101
|
+
const handler = this._toolHandlers.get(`${scopeId}:${toolName}`);
|
|
102
|
+
if (!handler) {
|
|
103
|
+
throw new Error(`no handler registered for tool: ${toolName} (scope: ${scopeId})`);
|
|
104
|
+
}
|
|
105
|
+
const result = await handler(args);
|
|
106
|
+
return { content: result };
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`unknown callback method: ${method}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=agent-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-builder.js","sourceRoot":"","sources":["../src/agent-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MobKit builder chain — chainable configuration for the runtime.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { MobKit } from "@rkat/mobkit-sdk";
|
|
7
|
+
*
|
|
8
|
+
* const rt = await MobKit.builder()
|
|
9
|
+
* .mob("config/mob.toml")
|
|
10
|
+
* .sessionService(builder, store)
|
|
11
|
+
* .discovery(discoverFn)
|
|
12
|
+
* .build();
|
|
13
|
+
*
|
|
14
|
+
* const handle = rt.mobHandle();
|
|
15
|
+
* const status = await handle.status();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { SessionAgentBuilder, ErrorCallback } from "./agent-builder.js";
|
|
19
|
+
import type { MobKitRuntime } from "./runtime.js";
|
|
20
|
+
export interface MobKitBuilderConfig {
|
|
21
|
+
mobConfigPath: string | null;
|
|
22
|
+
sessionBuilder: SessionAgentBuilder | null;
|
|
23
|
+
sessionStore: unknown;
|
|
24
|
+
discoveryCallback: unknown;
|
|
25
|
+
preSpawnCallback: unknown;
|
|
26
|
+
errorCallback: ErrorCallback | null;
|
|
27
|
+
eventLog: Record<string, unknown> | null;
|
|
28
|
+
gatingConfigPath: string | null;
|
|
29
|
+
routingConfigPath: string | null;
|
|
30
|
+
schedulingFiles: string[];
|
|
31
|
+
memoryConfig: unknown;
|
|
32
|
+
authConfig: unknown;
|
|
33
|
+
gatewayBin: string | null;
|
|
34
|
+
modules: unknown[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Chainable builder for MobKit runtime configuration.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const rt = await MobKit.builder()
|
|
42
|
+
* .mob("config/mob.toml")
|
|
43
|
+
* .gateway("./target/release/phase0b_rpc_gateway")
|
|
44
|
+
* .build();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare class MobKitBuilder {
|
|
48
|
+
/** @internal */
|
|
49
|
+
readonly _config: MobKitBuilderConfig;
|
|
50
|
+
mob(configPath: string): this;
|
|
51
|
+
sessionService(builder: SessionAgentBuilder, store?: unknown): this;
|
|
52
|
+
discovery(callback: unknown): this;
|
|
53
|
+
preSpawn(callback: unknown): this;
|
|
54
|
+
eventLog(options: {
|
|
55
|
+
storage: unknown;
|
|
56
|
+
[key: string]: unknown;
|
|
57
|
+
}): this;
|
|
58
|
+
onError(callback: ErrorCallback): this;
|
|
59
|
+
gating(configPath: string): this;
|
|
60
|
+
routing(configPath: string): this;
|
|
61
|
+
scheduling(...scheduleFiles: string[]): this;
|
|
62
|
+
memory(config?: unknown, options?: {
|
|
63
|
+
stores?: string[];
|
|
64
|
+
}): this;
|
|
65
|
+
auth(config: unknown): this;
|
|
66
|
+
gateway(binPath: string): this;
|
|
67
|
+
modules(moduleSpecs: unknown[]): this;
|
|
68
|
+
build(): Promise<MobKitRuntime>;
|
|
69
|
+
private _applyConventionDefaults;
|
|
70
|
+
}
|
|
71
|
+
export declare class MobKit {
|
|
72
|
+
static builder(): MobKitBuilder;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAuBD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,gBAAgB;IAChB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAmB;IAExD,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK7B,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAMnE,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKlC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAKjC,QAAQ,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI;IAKpE,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKtC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKhC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKjC,UAAU,CAAC,GAAG,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI;IAK5C,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAM/D,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAK3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/B,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC;IAOrC,OAAO,CAAC,wBAAwB;CA0BjC;AAID,qBAAa,MAAM;IACjB,MAAM,CAAC,OAAO,IAAI,aAAa;CAGhC"}
|
package/dist/builder.js
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MobKit builder chain — chainable configuration for the runtime.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { MobKit } from "@rkat/mobkit-sdk";
|
|
7
|
+
*
|
|
8
|
+
* const rt = await MobKit.builder()
|
|
9
|
+
* .mob("config/mob.toml")
|
|
10
|
+
* .sessionService(builder, store)
|
|
11
|
+
* .discovery(discoverFn)
|
|
12
|
+
* .build();
|
|
13
|
+
*
|
|
14
|
+
* const handle = rt.mobHandle();
|
|
15
|
+
* const status = await handle.status();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync } from "node:fs";
|
|
19
|
+
function defaultConfig() {
|
|
20
|
+
return {
|
|
21
|
+
mobConfigPath: null,
|
|
22
|
+
sessionBuilder: null,
|
|
23
|
+
sessionStore: null,
|
|
24
|
+
discoveryCallback: null,
|
|
25
|
+
preSpawnCallback: null,
|
|
26
|
+
errorCallback: null,
|
|
27
|
+
eventLog: null,
|
|
28
|
+
gatingConfigPath: null,
|
|
29
|
+
routingConfigPath: null,
|
|
30
|
+
schedulingFiles: [],
|
|
31
|
+
memoryConfig: null,
|
|
32
|
+
authConfig: null,
|
|
33
|
+
gatewayBin: null,
|
|
34
|
+
modules: [],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// -- MobKitBuilder --------------------------------------------------------
|
|
38
|
+
/**
|
|
39
|
+
* Chainable builder for MobKit runtime configuration.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* const rt = await MobKit.builder()
|
|
44
|
+
* .mob("config/mob.toml")
|
|
45
|
+
* .gateway("./target/release/phase0b_rpc_gateway")
|
|
46
|
+
* .build();
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export class MobKitBuilder {
|
|
50
|
+
/** @internal */
|
|
51
|
+
_config = defaultConfig();
|
|
52
|
+
mob(configPath) {
|
|
53
|
+
this._config.mobConfigPath = configPath;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
sessionService(builder, store) {
|
|
57
|
+
this._config.sessionBuilder = builder;
|
|
58
|
+
this._config.sessionStore = store ?? null;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
discovery(callback) {
|
|
62
|
+
this._config.discoveryCallback = callback;
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
preSpawn(callback) {
|
|
66
|
+
this._config.preSpawnCallback = callback;
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
eventLog(options) {
|
|
70
|
+
this._config.eventLog = { ...options };
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
onError(callback) {
|
|
74
|
+
this._config.errorCallback = callback;
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
gating(configPath) {
|
|
78
|
+
this._config.gatingConfigPath = configPath;
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
routing(configPath) {
|
|
82
|
+
this._config.routingConfigPath = configPath;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
scheduling(...scheduleFiles) {
|
|
86
|
+
this._config.schedulingFiles = scheduleFiles;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
memory(config, options) {
|
|
90
|
+
this._config.memoryConfig =
|
|
91
|
+
config ?? { stores: options?.stores ?? [] };
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
auth(config) {
|
|
95
|
+
this._config.authConfig = config;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
gateway(binPath) {
|
|
99
|
+
this._config.gatewayBin = binPath;
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
modules(moduleSpecs) {
|
|
103
|
+
this._config.modules = moduleSpecs;
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
async build() {
|
|
107
|
+
this._applyConventionDefaults();
|
|
108
|
+
// Dynamic import to break circular dep (runtime imports from builder config type)
|
|
109
|
+
const { MobKitRuntime } = await import("./runtime.js");
|
|
110
|
+
return MobKitRuntime._create(this._config);
|
|
111
|
+
}
|
|
112
|
+
_applyConventionDefaults() {
|
|
113
|
+
if (this._config.gatingConfigPath === null) {
|
|
114
|
+
const candidate = "config/gating.toml";
|
|
115
|
+
if (existsSync(candidate)) {
|
|
116
|
+
this._config.gatingConfigPath = candidate;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (this._config.routingConfigPath === null) {
|
|
120
|
+
const candidate = "deployment/routing.toml";
|
|
121
|
+
if (existsSync(candidate)) {
|
|
122
|
+
this._config.routingConfigPath = candidate;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (this._config.schedulingFiles.length === 0) {
|
|
126
|
+
const files = [];
|
|
127
|
+
const defaultFile = "config/defaults/schedules.toml";
|
|
128
|
+
if (existsSync(defaultFile))
|
|
129
|
+
files.push(defaultFile);
|
|
130
|
+
const overrideFile = "deployment/schedules.toml";
|
|
131
|
+
if (existsSync(overrideFile))
|
|
132
|
+
files.push(overrideFile);
|
|
133
|
+
if (files.length > 0) {
|
|
134
|
+
this._config.schedulingFiles = files;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// -- MobKit static factory ------------------------------------------------
|
|
140
|
+
export class MobKit {
|
|
141
|
+
static builder() {
|
|
142
|
+
return new MobKitBuilder();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SessionAgentBuilder protocol and CallbackDispatcher.
|
|
4
|
+
*
|
|
5
|
+
* The builder protocol uses imperative mutation: buildAgent receives a
|
|
6
|
+
* mutable SessionBuildOptions and modifies it in place.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.CallbackDispatcher = void 0;
|
|
10
|
+
const models_js_1 = require("./models.cjs");
|
|
11
|
+
const types_js_1 = require("./types.cjs");
|
|
12
|
+
// -- CallbackDispatcher ---------------------------------------------------
|
|
13
|
+
/**
|
|
14
|
+
* Routes incoming JSON-RPC callbacks from the Rust runtime to the
|
|
15
|
+
* registered SessionAgentBuilder and tool handlers.
|
|
16
|
+
*
|
|
17
|
+
* Tool handlers are scoped by a build-level scope_id to prevent
|
|
18
|
+
* cross-session handler bleed in concurrent sessions.
|
|
19
|
+
*/
|
|
20
|
+
class CallbackDispatcher {
|
|
21
|
+
_builder = null;
|
|
22
|
+
_errorCallback = null;
|
|
23
|
+
_toolHandlers = new Map();
|
|
24
|
+
_scopeTools = new Map();
|
|
25
|
+
registerBuilder(builder) {
|
|
26
|
+
this._builder = builder;
|
|
27
|
+
}
|
|
28
|
+
registerErrorCallback(callback) {
|
|
29
|
+
this._errorCallback = callback;
|
|
30
|
+
}
|
|
31
|
+
/** Remove all tool handlers for a scope. Call when a session ends. */
|
|
32
|
+
releaseScope(scopeId) {
|
|
33
|
+
const tools = this._scopeTools.get(scopeId);
|
|
34
|
+
if (tools) {
|
|
35
|
+
for (const toolName of tools) {
|
|
36
|
+
this._toolHandlers.delete(`${scopeId}:${toolName}`);
|
|
37
|
+
}
|
|
38
|
+
this._scopeTools.delete(scopeId);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async handleCallback(method, params) {
|
|
42
|
+
if (method === "mobkit/on_error") {
|
|
43
|
+
if (this._errorCallback !== null) {
|
|
44
|
+
const event = (0, types_js_1.parseErrorEvent)(params);
|
|
45
|
+
try {
|
|
46
|
+
await this._errorCallback(event);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Fire-and-forget — swallow error callback failures
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
if (method === "callback/build_agent") {
|
|
55
|
+
if (this._builder === null) {
|
|
56
|
+
throw new Error("no SessionAgentBuilder registered");
|
|
57
|
+
}
|
|
58
|
+
const rawOptions = {
|
|
59
|
+
...(typeof params.options === "object" && params.options !== null
|
|
60
|
+
? params.options
|
|
61
|
+
: {}),
|
|
62
|
+
};
|
|
63
|
+
const scopeId = String(rawOptions.scope_id ?? "");
|
|
64
|
+
if (!scopeId) {
|
|
65
|
+
throw new Error("callback/build_agent requires scope_id in options");
|
|
66
|
+
}
|
|
67
|
+
delete rawOptions.scope_id;
|
|
68
|
+
const opts = new models_js_1.SessionBuildOptions();
|
|
69
|
+
if (rawOptions.app_context !== undefined) {
|
|
70
|
+
opts.appContext = rawOptions.app_context;
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(rawOptions.additional_instructions)) {
|
|
73
|
+
opts.additionalInstructions = rawOptions.additional_instructions.filter((v) => typeof v === "string");
|
|
74
|
+
}
|
|
75
|
+
if (typeof rawOptions.session_id === "string") {
|
|
76
|
+
opts.sessionId = rawOptions.session_id;
|
|
77
|
+
}
|
|
78
|
+
if (typeof rawOptions.labels === "object" &&
|
|
79
|
+
rawOptions.labels !== null) {
|
|
80
|
+
opts.labels = rawOptions.labels;
|
|
81
|
+
}
|
|
82
|
+
if (typeof rawOptions.profile_name === "string") {
|
|
83
|
+
opts.profileName = rawOptions.profile_name;
|
|
84
|
+
}
|
|
85
|
+
await this._builder.buildAgent(opts);
|
|
86
|
+
// Capture tool handlers scoped to this build
|
|
87
|
+
const toolNames = [];
|
|
88
|
+
for (const [name, handler] of opts.toolHandlers) {
|
|
89
|
+
this._toolHandlers.set(`${scopeId}:${name}`, handler);
|
|
90
|
+
toolNames.push(name);
|
|
91
|
+
}
|
|
92
|
+
this._scopeTools.set(scopeId, toolNames);
|
|
93
|
+
return opts.toDict();
|
|
94
|
+
}
|
|
95
|
+
if (method === "callback/call_tool") {
|
|
96
|
+
const scopeId = String(params.scope_id ?? "");
|
|
97
|
+
if (!scopeId) {
|
|
98
|
+
throw new Error("callback/call_tool requires scope_id");
|
|
99
|
+
}
|
|
100
|
+
const toolName = String(params.tool ?? "");
|
|
101
|
+
const args = (typeof params.arguments === "object" && params.arguments !== null
|
|
102
|
+
? params.arguments
|
|
103
|
+
: {});
|
|
104
|
+
const handler = this._toolHandlers.get(`${scopeId}:${toolName}`);
|
|
105
|
+
if (!handler) {
|
|
106
|
+
throw new Error(`no handler registered for tool: ${toolName} (scope: ${scopeId})`);
|
|
107
|
+
}
|
|
108
|
+
const result = await handler(args);
|
|
109
|
+
return { content: result };
|
|
110
|
+
}
|
|
111
|
+
throw new Error(`unknown callback method: ${method}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.CallbackDispatcher = CallbackDispatcher;
|