@rkat/web 0.4.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.
@@ -0,0 +1,56 @@
1
+ /** A direct (non-mob) agent session. */
2
+ export class Session {
3
+ /** @internal — WASM session handle. */
4
+ handle;
5
+ startTurnFn;
6
+ getStateFn;
7
+ destroyFn;
8
+ pollFn;
9
+ destroyed = false;
10
+ /** @internal — use MeerkatRuntime.createSession() instead. */
11
+ constructor(handle, startTurnFn, getStateFn, destroyFn, pollFn) {
12
+ this.handle = handle;
13
+ this.startTurnFn = startTurnFn;
14
+ this.getStateFn = getStateFn;
15
+ this.destroyFn = destroyFn;
16
+ this.pollFn = pollFn;
17
+ }
18
+ /** Run a turn through the agent loop. */
19
+ async turn(prompt, options) {
20
+ if (this.destroyed)
21
+ throw new Error('Session has been destroyed');
22
+ const opts = options
23
+ ? JSON.stringify({
24
+ additional_instructions: options.additionalInstructions,
25
+ })
26
+ : '{}';
27
+ const json = await this.startTurnFn(this.handle, prompt, opts);
28
+ return JSON.parse(json);
29
+ }
30
+ /** Get the current session state. */
31
+ getState() {
32
+ if (this.destroyed)
33
+ throw new Error('Session has been destroyed');
34
+ return JSON.parse(this.getStateFn(this.handle));
35
+ }
36
+ /** Poll buffered agent events from the last turn. */
37
+ pollEvents() {
38
+ if (this.destroyed)
39
+ return [];
40
+ const json = this.pollFn(this.handle);
41
+ const parsed = JSON.parse(json);
42
+ return Array.isArray(parsed) ? parsed : [];
43
+ }
44
+ /** Destroy the session and release resources. */
45
+ destroy() {
46
+ if (this.destroyed)
47
+ return;
48
+ this.destroyed = true;
49
+ this.destroyFn(this.handle);
50
+ }
51
+ /** Whether this session has been destroyed. */
52
+ get isDestroyed() {
53
+ return this.destroyed;
54
+ }
55
+ }
56
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAQA,wCAAwC;AACxC,MAAM,OAAO,OAAO;IAClB,uCAAuC;IAC9B,MAAM,CAAS;IAEhB,WAAW,CAAc;IACzB,UAAU,CAAoB;IAC9B,SAAS,CAAmB;IAC5B,MAAM,CAAe;IACrB,SAAS,GAAG,KAAK,CAAC;IAE1B,8DAA8D;IAC9D,YACE,MAAc,EACd,WAAwB,EACxB,UAA6B,EAC7B,SAA2B,EAC3B,MAAoB;QAEpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAAqB;QAC9C,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBACb,uBAAuB,EAAE,OAAO,CAAC,sBAAsB;aACxD,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;IACxC,CAAC;IAED,qCAAqC;IACrC,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,qDAAqD;IACrD,UAAU;QACR,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,iDAAiD;IACjD,OAAO;QACL,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,+CAA+C;IAC/C,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,278 @@
1
+ /** Configuration for {@link MeerkatRuntime.init}. */
2
+ export interface RuntimeConfig {
3
+ /** Backward-compat single API key (treated as Anthropic fallback). */
4
+ apiKey?: string;
5
+ /** Anthropic API key. */
6
+ anthropicApiKey?: string;
7
+ /** OpenAI API key. */
8
+ openaiApiKey?: string;
9
+ /** Gemini API key. */
10
+ geminiApiKey?: string;
11
+ /** Default model for new sessions. */
12
+ model?: string;
13
+ /** Maximum concurrent sessions. Default: 64. */
14
+ maxSessions?: number;
15
+ /** Backward-compat single base URL (mapped to default model's provider). */
16
+ baseUrl?: string;
17
+ /** Anthropic base URL (e.g. for proxy deployments). */
18
+ anthropicBaseUrl?: string;
19
+ /** OpenAI base URL. */
20
+ openaiBaseUrl?: string;
21
+ /** Gemini base URL. */
22
+ geminiBaseUrl?: string;
23
+ }
24
+ /** Result from runtime initialization. */
25
+ export interface InitResult {
26
+ status: 'initialized';
27
+ model: string;
28
+ providers: string[];
29
+ max_sessions?: number;
30
+ }
31
+ /** Configuration for creating a direct (non-mob) session. */
32
+ export interface SessionConfig {
33
+ /** LLM model identifier. */
34
+ model: string;
35
+ /** API key for the model's provider. */
36
+ apiKey: string;
37
+ /** System prompt. */
38
+ systemPrompt?: string;
39
+ /** Max tokens per response. Default: 4096. */
40
+ maxTokens?: number;
41
+ /** Backward-compat single base URL. */
42
+ baseUrl?: string;
43
+ /** Anthropic base URL. */
44
+ anthropicBaseUrl?: string;
45
+ /** OpenAI base URL. */
46
+ openaiBaseUrl?: string;
47
+ /** Gemini base URL. */
48
+ geminiBaseUrl?: string;
49
+ /** Enable comms for this session. */
50
+ commsName?: string;
51
+ /** Whether this session runs in host mode. */
52
+ hostMode?: boolean;
53
+ /** Application-defined labels. */
54
+ labels?: Record<string, string>;
55
+ /** Additional instruction sections appended to the system prompt. */
56
+ additionalInstructions?: string[];
57
+ /** Opaque application context. */
58
+ appContext?: unknown;
59
+ }
60
+ /** Options for a single turn. */
61
+ export interface TurnOptions {
62
+ /** Additional instructions for this turn only. */
63
+ additionalInstructions?: string[];
64
+ }
65
+ /** Result of a turn execution. */
66
+ export interface TurnResult {
67
+ response: string;
68
+ usage: Usage;
69
+ tool_calls: number;
70
+ }
71
+ export interface Usage {
72
+ input_tokens: number;
73
+ output_tokens: number;
74
+ }
75
+ /**
76
+ * Mob definition passed to {@link MeerkatRuntime.createMob}.
77
+ *
78
+ * Matches Rust `MobDefinition` in `meerkat-mob/src/definition.rs`.
79
+ */
80
+ export interface MobDefinition {
81
+ id: string;
82
+ profiles: Record<string, Profile>;
83
+ /** Wiring rules for automatic peer connections. */
84
+ wiring?: WiringRules;
85
+ /** Named flow definitions. */
86
+ flows?: Record<string, unknown>;
87
+ /** Named MCP server configurations. */
88
+ mcp_servers?: Record<string, unknown>;
89
+ /** Named skill sources. */
90
+ skills?: Record<string, unknown>;
91
+ /** Orchestrator configuration. */
92
+ orchestrator?: unknown;
93
+ /** Backend selection config. */
94
+ backend?: unknown;
95
+ }
96
+ /**
97
+ * Profile template for spawning agents.
98
+ *
99
+ * Matches Rust `Profile` in `meerkat-mob/src/profile.rs`.
100
+ * Note: there is NO `system_prompt` field — prompts are built from skills.
101
+ */
102
+ export interface Profile {
103
+ /** LLM model name (e.g. "claude-sonnet-4-5"). */
104
+ model: string;
105
+ /** Skill references to load. */
106
+ skills?: string[];
107
+ /** Tool configuration. */
108
+ tools?: ToolConfig;
109
+ /** Human-readable role description visible to peers. */
110
+ peer_description?: string;
111
+ /** Whether this agent can receive turns from external callers. */
112
+ external_addressable?: boolean;
113
+ /** Runtime mode: 'turn_driven' or 'autonomous_host'. */
114
+ runtime_mode?: string;
115
+ /** Max peer-count threshold for inline peer lifecycle notifications. */
116
+ max_inline_peer_notifications?: number;
117
+ /** JSON Schema for structured output extraction. */
118
+ output_schema?: unknown;
119
+ /** Provider-specific parameters (e.g. thinking_budget, reasoning_effort). */
120
+ provider_params?: unknown;
121
+ }
122
+ /** Tool configuration for a profile. Matches Rust `ToolConfig`. */
123
+ export interface ToolConfig {
124
+ /** Enable built-in tools (file read, etc.). */
125
+ builtins?: boolean;
126
+ /** Enable shell execution tool. */
127
+ shell?: boolean;
128
+ /** Enable comms tools (peer messaging). */
129
+ comms?: boolean;
130
+ /** Enable memory/semantic search tools. */
131
+ memory?: boolean;
132
+ /** Enable mob management tools (spawn, retire, wire, unwire, list). */
133
+ mob?: boolean;
134
+ /** Enable shared task list tools. */
135
+ mob_tasks?: boolean;
136
+ /** MCP server names this profile connects to. */
137
+ mcp?: string[];
138
+ /** Named Rust tool bundles (re-registered at mob construction time). */
139
+ rust_bundles?: string[];
140
+ }
141
+ /** Wiring rules controlling automatic peer connections. */
142
+ export interface WiringRules {
143
+ /** Automatically wire every spawned agent to the orchestrator. */
144
+ auto_wire_orchestrator?: boolean;
145
+ /** Fan-out wiring rules between profile roles. */
146
+ role_wiring?: RoleWiringRule[];
147
+ }
148
+ /** Wiring rule between two profile roles. */
149
+ export interface RoleWiringRule {
150
+ /** First profile name. */
151
+ a: string;
152
+ /** Second profile name. */
153
+ b: string;
154
+ }
155
+ /** Spawn specification for a single agent within a mob. */
156
+ export interface SpawnSpec {
157
+ profile: string;
158
+ meerkat_id: string;
159
+ runtime_mode?: 'turn_driven' | 'autonomous_host';
160
+ initial_message?: string;
161
+ labels?: Record<string, string>;
162
+ }
163
+ /** Result of a spawn operation. */
164
+ export interface SpawnResult {
165
+ meerkat_id: string;
166
+ status: string;
167
+ }
168
+ /** A mob member entry from listMembers. */
169
+ export interface MobMember {
170
+ meerkat_id: string;
171
+ profile: string;
172
+ status: string;
173
+ }
174
+ /** Mob status. */
175
+ export interface MobStatus {
176
+ mob_id: string;
177
+ status: string;
178
+ member_count: number;
179
+ }
180
+ /** Mob lifecycle actions. */
181
+ export type MobLifecycleAction = 'stop' | 'resume' | 'complete' | 'destroy';
182
+ /** Envelope wrapping an agent event with metadata. */
183
+ export interface EventEnvelope {
184
+ session_id?: string;
185
+ meerkat_id?: string;
186
+ cursor?: string;
187
+ event: AgentEvent | {
188
+ type: string;
189
+ [key: string]: unknown;
190
+ };
191
+ }
192
+ /**
193
+ * Known agent event types (discriminated union on `type`).
194
+ *
195
+ * Matches Rust `AgentEvent` with `#[serde(tag = "type", rename_all = "snake_case")]`.
196
+ */
197
+ export type AgentEvent = TextDeltaEvent | TextCompleteEvent | ToolCallRequestedEvent | ToolResultReceivedEvent | TurnStartedEvent | TurnCompletedEvent | RunCompletedEvent | RunFailedEvent | ToolExecutionStartedEvent | ToolExecutionCompletedEvent | ReasoningDeltaEvent | ReasoningCompleteEvent;
198
+ export interface TextDeltaEvent {
199
+ type: 'text_delta';
200
+ delta: string;
201
+ }
202
+ export interface TextCompleteEvent {
203
+ type: 'text_complete';
204
+ content: string;
205
+ }
206
+ export interface ToolCallRequestedEvent {
207
+ type: 'tool_call_requested';
208
+ id: string;
209
+ name: string;
210
+ args: unknown;
211
+ }
212
+ export interface ToolResultReceivedEvent {
213
+ type: 'tool_result_received';
214
+ id: string;
215
+ name: string;
216
+ is_error: boolean;
217
+ }
218
+ export interface TurnStartedEvent {
219
+ type: 'turn_started';
220
+ turn_number: number;
221
+ }
222
+ export interface TurnCompletedEvent {
223
+ type: 'turn_completed';
224
+ stop_reason: string;
225
+ usage: Usage;
226
+ }
227
+ export interface RunCompletedEvent {
228
+ type: 'run_completed';
229
+ session_id: string;
230
+ result: string;
231
+ usage: Usage;
232
+ }
233
+ export interface RunFailedEvent {
234
+ type: 'run_failed';
235
+ session_id: string;
236
+ error: string;
237
+ }
238
+ export interface ToolExecutionStartedEvent {
239
+ type: 'tool_execution_started';
240
+ id: string;
241
+ name: string;
242
+ }
243
+ export interface ToolExecutionCompletedEvent {
244
+ type: 'tool_execution_completed';
245
+ id: string;
246
+ name: string;
247
+ result: string;
248
+ is_error: boolean;
249
+ duration_ms: number;
250
+ }
251
+ export interface ReasoningDeltaEvent {
252
+ type: 'reasoning_delta';
253
+ delta: string;
254
+ }
255
+ export interface ReasoningCompleteEvent {
256
+ type: 'reasoning_complete';
257
+ content: string;
258
+ }
259
+ /** Type guard for known event types. */
260
+ export declare function isKnownEvent(event: {
261
+ type: string;
262
+ }): event is AgentEvent;
263
+ /** JSON schema object for tool input. */
264
+ export type JsonSchema = Record<string, unknown>;
265
+ /** Result returned from a tool callback. */
266
+ export interface ToolCallbackResult {
267
+ content: string;
268
+ is_error: boolean;
269
+ }
270
+ /** A tool callback function. */
271
+ export type ToolCallback = (args: string) => Promise<ToolCallbackResult>;
272
+ /** Status of a running flow. */
273
+ export interface FlowStatus {
274
+ run_id: string;
275
+ status: string;
276
+ [key: string]: unknown;
277
+ }
278
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,11 @@
1
+ // ─── Bootstrap config ───────────────────────────────────────────
2
+ /** Type guard for known event types. */
3
+ export function isKnownEvent(event) {
4
+ return [
5
+ 'text_delta', 'text_complete', 'tool_call_requested', 'tool_result_received',
6
+ 'turn_started', 'turn_completed', 'run_completed', 'run_failed',
7
+ 'tool_execution_started', 'tool_execution_completed',
8
+ 'reasoning_delta', 'reasoning_complete',
9
+ ].includes(event.type);
10
+ }
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAqPnE,wCAAwC;AACxC,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,OAAO;QACL,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB;QAC5E,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY;QAC/D,wBAAwB,EAAE,0BAA0B;QACpD,iBAAiB,EAAE,oBAAoB;KACxC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@rkat/web",
3
+ "version": "0.4.1",
4
+ "description": "Browser SDK for Meerkat agent runtime (WASM)",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "rkat-web-proxy": "./proxy/cli.mjs"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ },
16
+ "./proxy": {
17
+ "import": "./proxy/index.mjs"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "wasm",
23
+ "proxy"
24
+ ],
25
+ "scripts": {
26
+ "build:wasm": "RUSTFLAGS='--cfg getrandom_backend=\"wasm_js\"' wasm-pack build ../../meerkat-web-runtime --target web --out-dir ../../sdks/web/wasm",
27
+ "build:ts": "tsc",
28
+ "build": "npm run build:wasm && npm run build:ts",
29
+ "prepublishOnly": "npm run build",
30
+ "test": "tsc --noEmit -p tests/tsconfig.json"
31
+ },
32
+ "license": "MIT OR Apache-2.0",
33
+ "devDependencies": {
34
+ "typescript": "^5.5"
35
+ }
36
+ }
package/proxy/cli.mjs ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Standalone CLI for the @rkat/web provider proxy.
5
+ *
6
+ * Usage:
7
+ * ANTHROPIC_API_KEY=sk-... npx @rkat/web proxy
8
+ * ANTHROPIC_API_KEY=sk-... npx @rkat/web proxy --port 3100
9
+ * ANTHROPIC_API_KEY=sk-... npx @rkat/web proxy --port 3100 --cors-origin http://localhost:5173
10
+ */
11
+
12
+ import { startProxy } from './index.mjs';
13
+
14
+ function parseArgs(args) {
15
+ const opts = {};
16
+ for (let i = 0; i < args.length; i++) {
17
+ if (args[i] === '--port' && args[i + 1]) {
18
+ opts.port = parseInt(args[i + 1], 10);
19
+ i++;
20
+ } else if (args[i] === '--cors-origin' && args[i + 1]) {
21
+ opts.allowOrigin = args[i + 1];
22
+ i++;
23
+ } else if (args[i] === '--help' || args[i] === '-h') {
24
+ console.log(`@rkat/web proxy — auth-injecting reverse proxy for LLM providers
25
+
26
+ Usage:
27
+ npx @rkat/web proxy [options]
28
+
29
+ Options:
30
+ --port <number> Port to listen on (default: 3100, or PORT env var)
31
+ --cors-origin <origin> CORS allowed origin (default: *)
32
+ -h, --help Show this help
33
+
34
+ Environment variables:
35
+ ANTHROPIC_API_KEY Anthropic API key (enables /anthropic/* routes)
36
+ OPENAI_API_KEY OpenAI API key (enables /openai/* routes)
37
+ GEMINI_API_KEY Gemini API key (enables /gemini/* routes)
38
+ PORT Port to listen on (overridden by --port)
39
+
40
+ The WASM client uses per-provider base URLs to point at this proxy:
41
+ anthropicBaseUrl: 'http://localhost:3100/anthropic'
42
+ openaiBaseUrl: 'http://localhost:3100/openai'
43
+ geminiBaseUrl: 'http://localhost:3100/gemini'
44
+ `);
45
+ process.exit(0);
46
+ }
47
+ }
48
+ return opts;
49
+ }
50
+
51
+ const opts = parseArgs(process.argv.slice(2));
52
+ startProxy(opts);