@rkat/sdk 0.3.4 → 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.
package/dist/index.d.ts CHANGED
@@ -1,11 +1,33 @@
1
1
  /**
2
- * Meerkat TypeScript SDK — communicate with the Meerkat agent runtime via JSON-RPC.
2
+ * Meerkat TypeScript SDK — communicate with the Meerkat agent runtime.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { MeerkatClient } from "@rkat/sdk";
7
+ *
8
+ * const client = new MeerkatClient();
9
+ * await client.connect();
10
+ *
11
+ * const session = await client.createSession("Hello!");
12
+ * console.log(session.text);
13
+ *
14
+ * for await (const event of session.stream("Tell me a joke")) {
15
+ * if (event.type === "text_delta") {
16
+ * process.stdout.write(event.delta);
17
+ * }
18
+ * }
19
+ *
20
+ * await client.close();
21
+ * ```
3
22
  */
4
23
  export { MeerkatClient } from "./client.js";
5
- export { CapabilityChecker } from "./capabilities.js";
6
- export { EventStream } from "./streaming.js";
7
- export { SkillHelper } from "./skills.js";
24
+ export type { ConnectOptions } from "./client.js";
25
+ export { Session } from "./session.js";
26
+ export { CommsEventStream, EventStream } from "./streaming.js";
27
+ export type { Capability, RunResult, SchemaWarning, SessionInfo, SessionOptions, SkillQuarantineDiagnostic, SkillRuntimeDiagnostics, SkillKey, SkillRef, SourceHealthSnapshot, Usage, } from "./types.js";
8
28
  export { MeerkatError, CapabilityUnavailableError, SessionNotFoundError, SkillNotFoundError, } from "./generated/errors.js";
9
- export type { WireUsage, WireRunResult, WireEvent, CapabilitiesResponse, CapabilityEntry, } from "./generated/types.js";
10
29
  export { CONTRACT_VERSION } from "./generated/types.js";
30
+ export type { McpAddParams, McpRemoveParams, McpReloadParams, McpLiveOpResponse, } from "./generated/types.js";
31
+ export type { AgentEvent, CoreAgentEvent, StreamEvent, ScopedAgentEvent, StreamScopeFrame, RunStartedEvent, RunCompletedEvent, RunFailedEvent, TurnStartedEvent, TextDeltaEvent, TextCompleteEvent, ToolCallRequestedEvent, ToolResultReceivedEvent, TurnCompletedEvent, ToolExecutionStartedEvent, ToolExecutionCompletedEvent, ToolExecutionTimedOutEvent, CompactionStartedEvent, CompactionCompletedEvent, CompactionFailedEvent, BudgetWarningEvent, RetryingEvent, HookStartedEvent, HookCompletedEvent, HookFailedEvent, HookDeniedEvent, HookRewriteAppliedEvent, HookPatchPublishedEvent, SkillsResolvedEvent, SkillResolutionFailedEvent, InteractionCompleteEvent, InteractionFailedEvent, StreamTruncatedEvent, ToolConfigChangedEvent, ToolConfigChangedPayload, ToolConfigChangeOperation, UnknownEvent, StopReason, BudgetType, HookPoint, } from "./events.js";
32
+ export { parseEvent, parseCoreEvent, isTextDelta, isTextComplete, isTurnCompleted, isToolCallRequested, isRunCompleted, isRunFailed, } from "./events.js";
11
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG/D,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,uBAAuB,EACvB,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,KAAK,GACN,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,UAAU,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,GACV,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,33 @@
1
1
  /**
2
- * Meerkat TypeScript SDK — communicate with the Meerkat agent runtime via JSON-RPC.
2
+ * Meerkat TypeScript SDK — communicate with the Meerkat agent runtime.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { MeerkatClient } from "@rkat/sdk";
7
+ *
8
+ * const client = new MeerkatClient();
9
+ * await client.connect();
10
+ *
11
+ * const session = await client.createSession("Hello!");
12
+ * console.log(session.text);
13
+ *
14
+ * for await (const event of session.stream("Tell me a joke")) {
15
+ * if (event.type === "text_delta") {
16
+ * process.stdout.write(event.delta);
17
+ * }
18
+ * }
19
+ *
20
+ * await client.close();
21
+ * ```
3
22
  */
23
+ // Core client and session
4
24
  export { MeerkatClient } from "./client.js";
5
- export { CapabilityChecker } from "./capabilities.js";
6
- export { EventStream } from "./streaming.js";
7
- export { SkillHelper } from "./skills.js";
25
+ export { Session } from "./session.js";
26
+ export { CommsEventStream, EventStream } from "./streaming.js";
27
+ // Error hierarchy
8
28
  export { MeerkatError, CapabilityUnavailableError, SessionNotFoundError, SkillNotFoundError, } from "./generated/errors.js";
29
+ // Contract version
9
30
  export { CONTRACT_VERSION } from "./generated/types.js";
31
+ // Event utilities
32
+ export { parseEvent, parseCoreEvent, isTextDelta, isTextComplete, isTurnCompleted, isToolCallRequested, isRunCompleted, isRunFailed, } from "./events.js";
10
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAiB/D,kBAAkB;AAClB,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAoDxD,kBAAkB;AAClB,OAAO,EACL,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Session — the first-class handle for multi-turn agent conversations.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const client = await Meerkat.connect();
7
+ * const session = await client.createSession("Summarise this repo");
8
+ * console.log(session.text);
9
+ *
10
+ * // Multi-turn
11
+ * const result = await session.turn("Now list the open issues");
12
+ *
13
+ * // Streaming
14
+ * for await (const event of session.stream("Explain the CI pipeline")) {
15
+ * if (event.type === "text_delta") {
16
+ * process.stdout.write(event.delta);
17
+ * }
18
+ * }
19
+ * ```
20
+ */
21
+ import type { RunResult, SkillRef, TurnToolOverlay } from "./types.js";
22
+ import type { MeerkatClient } from "./client.js";
23
+ import type { CommsEventStream, EventStream } from "./streaming.js";
24
+ export declare class Session {
25
+ /** @internal */
26
+ _lastResult: RunResult;
27
+ private readonly _client;
28
+ private readonly _id;
29
+ private readonly _ref;
30
+ /** @internal — constructed by MeerkatClient, not directly. */
31
+ constructor(client: MeerkatClient, result: RunResult);
32
+ /** The stable UUID for this session. */
33
+ get id(): string;
34
+ /** Optional human-readable session reference. */
35
+ get ref(): string | undefined;
36
+ /** The most recent {@link RunResult}. */
37
+ get lastResult(): RunResult;
38
+ /** The assistant's text from the last turn. */
39
+ get text(): string;
40
+ /** Token usage from the last turn. */
41
+ get usage(): import("./events.js").Usage;
42
+ /** Number of LLM turns in the last run. */
43
+ get turns(): number;
44
+ /** Number of tool calls in the last run. */
45
+ get toolCalls(): number;
46
+ /** Structured output from the last run, if requested. */
47
+ get structuredOutput(): unknown;
48
+ /** Run another turn on this session (non-streaming). */
49
+ turn(prompt: string, options?: {
50
+ skillRefs?: SkillRef[];
51
+ skillReferences?: string[];
52
+ flowToolOverlay?: TurnToolOverlay;
53
+ }): Promise<RunResult>;
54
+ /**
55
+ * Run another turn on this session with streaming events.
56
+ *
57
+ * Returns an {@link EventStream} `AsyncIterable<AgentEvent>`.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * for await (const event of session.stream("prompt")) {
62
+ * // ...
63
+ * }
64
+ * ```
65
+ */
66
+ stream(prompt: string, options?: {
67
+ skillRefs?: SkillRef[];
68
+ skillReferences?: string[];
69
+ flowToolOverlay?: TurnToolOverlay;
70
+ }): EventStream;
71
+ /** Cancel the currently running turn, if any. */
72
+ interrupt(): Promise<void>;
73
+ /** Archive (remove) this session from the server. */
74
+ archive(): Promise<void>;
75
+ /**
76
+ * Invoke a skill in this session.
77
+ *
78
+ * Accepts a {@link SkillKey} or a legacy string reference.
79
+ * Sends the structured `skill_refs` parameter to the runtime.
80
+ */
81
+ invokeSkill(skillRef: SkillRef, prompt: string): Promise<RunResult>;
82
+ /** Send a comms command scoped to this session. */
83
+ send(command: Record<string, unknown>): Promise<Record<string, unknown>>;
84
+ /** List peers visible to this session's comms runtime. */
85
+ peers(): Promise<Array<Record<string, unknown>>>;
86
+ openCommsStream(options?: {
87
+ scope?: "session" | "interaction";
88
+ interactionId?: string;
89
+ }): Promise<CommsEventStream>;
90
+ sendAndStream(command: Record<string, unknown>): Promise<{
91
+ receipt: Record<string, unknown>;
92
+ stream: CommsEventStream;
93
+ }>;
94
+ toString(): string;
95
+ }
96
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEpE,qBAAa,OAAO;IAClB,gBAAgB;IAChB,WAAW,EAAE,SAAS,CAAC;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAE1C,8DAA8D;gBAClD,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS;IASpD,wCAAwC;IACxC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,iDAAiD;IACjD,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAID,yCAAyC;IACzC,IAAI,UAAU,IAAI,SAAS,CAE1B;IAED,+CAA+C;IAC/C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,sCAAsC;IACtC,IAAI,KAAK,gCAER;IAED,2CAA2C;IAC3C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,4CAA4C;IAC5C,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,yDAAyD;IACzD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAID,wDAAwD;IAClD,IAAI,CACR,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,GACA,OAAO,CAAC,SAAS,CAAC;IAUrB;;;;;;;;;;;OAWG;IACH,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,GACA,WAAW;IAWd,iDAAiD;IAC3C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,qDAAqD;IAC/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B;;;;;OAKG;IACG,WAAW,CACf,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC;IAOrB,mDAAmD;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9E,0DAA0D;IACpD,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAKhD,eAAe,CACnB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACtE,OAAO,CAAC,gBAAgB,CAAC;IAItB,aAAa,CACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAI1E,QAAQ,IAAI,MAAM;CAInB"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Session — the first-class handle for multi-turn agent conversations.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const client = await Meerkat.connect();
7
+ * const session = await client.createSession("Summarise this repo");
8
+ * console.log(session.text);
9
+ *
10
+ * // Multi-turn
11
+ * const result = await session.turn("Now list the open issues");
12
+ *
13
+ * // Streaming
14
+ * for await (const event of session.stream("Explain the CI pipeline")) {
15
+ * if (event.type === "text_delta") {
16
+ * process.stdout.write(event.delta);
17
+ * }
18
+ * }
19
+ * ```
20
+ */
21
+ export class Session {
22
+ /** @internal */
23
+ _lastResult;
24
+ _client;
25
+ _id;
26
+ _ref;
27
+ /** @internal — constructed by MeerkatClient, not directly. */
28
+ constructor(client, result) {
29
+ this._client = client;
30
+ this._id = result.sessionId;
31
+ this._ref = result.sessionRef;
32
+ this._lastResult = result;
33
+ }
34
+ // -- Identity -----------------------------------------------------------
35
+ /** The stable UUID for this session. */
36
+ get id() {
37
+ return this._id;
38
+ }
39
+ /** Optional human-readable session reference. */
40
+ get ref() {
41
+ return this._ref;
42
+ }
43
+ // -- Last result shortcuts ----------------------------------------------
44
+ /** The most recent {@link RunResult}. */
45
+ get lastResult() {
46
+ return this._lastResult;
47
+ }
48
+ /** The assistant's text from the last turn. */
49
+ get text() {
50
+ return this._lastResult.text;
51
+ }
52
+ /** Token usage from the last turn. */
53
+ get usage() {
54
+ return this._lastResult.usage;
55
+ }
56
+ /** Number of LLM turns in the last run. */
57
+ get turns() {
58
+ return this._lastResult.turns;
59
+ }
60
+ /** Number of tool calls in the last run. */
61
+ get toolCalls() {
62
+ return this._lastResult.toolCalls;
63
+ }
64
+ /** Structured output from the last run, if requested. */
65
+ get structuredOutput() {
66
+ return this._lastResult.structuredOutput;
67
+ }
68
+ // -- Multi-turn ---------------------------------------------------------
69
+ /** Run another turn on this session (non-streaming). */
70
+ async turn(prompt, options) {
71
+ const result = await this._client._startTurn(this._id, prompt, options);
72
+ this._lastResult = result;
73
+ return result;
74
+ }
75
+ /**
76
+ * Run another turn on this session with streaming events.
77
+ *
78
+ * Returns an {@link EventStream} `AsyncIterable<AgentEvent>`.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * for await (const event of session.stream("prompt")) {
83
+ * // ...
84
+ * }
85
+ * ```
86
+ */
87
+ stream(prompt, options) {
88
+ return this._client._startTurnStreaming(this._id, prompt, options, this);
89
+ }
90
+ // -- Lifecycle ----------------------------------------------------------
91
+ /** Cancel the currently running turn, if any. */
92
+ async interrupt() {
93
+ await this._client._interrupt(this._id);
94
+ }
95
+ /** Archive (remove) this session from the server. */
96
+ async archive() {
97
+ await this._client._archive(this._id);
98
+ }
99
+ // -- Skills convenience -------------------------------------------------
100
+ /**
101
+ * Invoke a skill in this session.
102
+ *
103
+ * Accepts a {@link SkillKey} or a legacy string reference.
104
+ * Sends the structured `skill_refs` parameter to the runtime.
105
+ */
106
+ async invokeSkill(skillRef, prompt) {
107
+ this._client.requireCapability("skills");
108
+ return this.turn(prompt, { skillRefs: [skillRef] });
109
+ }
110
+ // -- Comms convenience --------------------------------------------------
111
+ /** Send a comms command scoped to this session. */
112
+ async send(command) {
113
+ return this._client._send(this._id, command);
114
+ }
115
+ /** List peers visible to this session's comms runtime. */
116
+ async peers() {
117
+ const result = await this._client._peers(this._id);
118
+ return (result.peers ?? []);
119
+ }
120
+ async openCommsStream(options) {
121
+ return this._client.openCommsStream(this._id, options);
122
+ }
123
+ async sendAndStream(command) {
124
+ return this._client.sendAndStream(this._id, command);
125
+ }
126
+ toString() {
127
+ const ref = this._ref ? ` ref=${this._ref}` : "";
128
+ return `Session(id=${this._id}${ref})`;
129
+ }
130
+ }
131
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,80 @@
1
1
  /**
2
- * Async event stream over JSON-RPC notifications from rkat-rpc.
3
- */
4
- import type { Interface as ReadlineInterface } from "node:readline";
5
- import type { WireEvent } from "./generated/types.js";
6
- /**
7
- * Async iterator that yields WireEvent objects from JSON-RPC notifications.
2
+ * Streaming API for the Meerkat TypeScript SDK.
8
3
  *
9
- * Skips response messages (which have an `id` field) and only yields
10
- * notification payloads parsed as WireEvent.
4
+ * {@link EventStream} is an `AsyncIterable<StreamEvent>` that yields typed
5
+ * events from a running turn, with access to the final {@link RunResult}
6
+ * after iteration.
11
7
  *
12
8
  * @example
13
9
  * ```ts
14
- * for await (const event of new EventStream(readline)) {
15
- * console.log(event.session_id, event.event);
10
+ * for await (const event of session.stream("prompt")) {
11
+ * if (event.type === "text_delta") {
12
+ * process.stdout.write(event.delta);
13
+ * }
16
14
  * }
15
+ * console.log(stream.result.usage.inputTokens);
17
16
  * ```
18
17
  */
19
- export declare class EventStream implements AsyncIterable<WireEvent> {
18
+ import type { StreamEvent } from "./events.js";
19
+ import type { RunResult } from "./types.js";
20
+ import type { Session } from "./session.js";
21
+ /** @internal Queue with promise-based get(). */
22
+ declare class AsyncQueue<T> {
20
23
  private buffer;
21
24
  private waiters;
22
- private closed;
23
- constructor(rl: ReadlineInterface);
24
- [Symbol.asyncIterator](): AsyncIterator<WireEvent>;
25
+ put(item: T): void;
26
+ get(): Promise<T>;
27
+ tryGet(): T | undefined;
28
+ get isEmpty(): boolean;
29
+ failAll(error: Error): void;
30
+ }
31
+ /**
32
+ * Typed async iterable of {@link StreamEvent} objects from a running turn.
33
+ *
34
+ * After iteration completes, the {@link result} getter returns the final
35
+ * {@link RunResult}.
36
+ */
37
+ export declare class EventStream implements AsyncIterable<StreamEvent> {
38
+ /** @internal */ _sessionId: string;
39
+ private readonly _eventQueue;
40
+ private readonly _responsePromise;
41
+ private readonly _parseResult;
42
+ private _result;
43
+ private readonly _session;
44
+ /** @internal — constructed by MeerkatClient, not directly. */
45
+ constructor(opts: {
46
+ sessionId: string;
47
+ eventQueue: AsyncQueue<Record<string, unknown> | null>;
48
+ responsePromise: Promise<Record<string, unknown>>;
49
+ parseResult: (raw: Record<string, unknown>) => RunResult;
50
+ session?: Session;
51
+ });
52
+ /** The session ID for this turn. */
53
+ get sessionId(): string;
54
+ /** The final {@link RunResult}. Available after iteration completes. */
55
+ get result(): RunResult;
56
+ [Symbol.asyncIterator](): AsyncGenerator<StreamEvent, void, undefined>;
57
+ /** Consume all events silently and return the final result. */
58
+ collect(): Promise<RunResult>;
59
+ /** Consume events, accumulate text deltas, return `[fullText, result]`. */
60
+ collectText(): Promise<[string, RunResult]>;
61
+ private _finalise;
62
+ }
63
+ /**
64
+ * Async iterable of raw comms stream notifications emitted via `comms/stream_event`.
65
+ */
66
+ export declare class CommsEventStream implements AsyncIterable<Record<string, unknown>> {
67
+ private readonly _streamId;
68
+ private readonly _eventQueue;
69
+ private readonly _onClose;
70
+ constructor(opts: {
71
+ streamId: string;
72
+ eventQueue: AsyncQueue<Record<string, unknown> | null>;
73
+ onClose: (streamId: string) => Promise<void>;
74
+ });
75
+ get streamId(): string;
76
+ [Symbol.asyncIterator](): AsyncGenerator<Record<string, unknown>, void, undefined>;
77
+ close(): Promise<void>;
25
78
  }
79
+ export { AsyncQueue };
26
80
  //# sourceMappingURL=streaming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,YAAW,aAAa,CAAC,SAAS,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAyD;IACxE,OAAO,CAAC,MAAM,CAAS;gBAEX,EAAE,EAAE,iBAAiB;IAoCjC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC;CAqBnD"}
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,gDAAgD;AAChD,cAAM,UAAU,CAAC,CAAC;IAChB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAiC;IAEhD,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAQlB,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;IASjB,MAAM,IAAI,CAAC,GAAG,SAAS;IAIvB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAQ5B;AAKD;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,aAAa,CAAC,WAAW,CAAC;IAC5D,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IACzE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8C;IAC3E,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,8DAA8D;gBAClD,IAAI,EAAE;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClD,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;QACzD,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;IAQD,oCAAoC;IACpC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,wEAAwE;IACxE,IAAI,MAAM,IAAI,SAAS,CAQtB;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC;IA0C7E,+DAA+D;IACzD,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAOnC,2EAA2E;IACrE,WAAW,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAUjD,OAAO,CAAC,SAAS;CASlB;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6C;IACzE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;gBAEnD,IAAI,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9C;IAMD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IAQnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAGD,OAAO,EAAE,UAAU,EAAE,CAAC"}