@beeos-ai/bma-sdk 0.4.1 → 1.0.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/README.md +123 -35
- package/dist/core.d.ts +105 -0
- package/dist/core.js +406 -0
- package/dist/core.js.map +1 -0
- package/dist/errors.d.ts +77 -0
- package/dist/errors.js +109 -0
- package/dist/errors.js.map +1 -0
- package/dist/facade-extensions.d.ts +17 -61
- package/dist/facade-extensions.js +25 -112
- package/dist/facade-extensions.js.map +1 -1
- package/dist/generated/facade-extensions-operations.d.ts +133 -0
- package/dist/generated/facade-extensions-operations.js +11 -0
- package/dist/generated/facade-extensions-operations.js.map +1 -0
- package/dist/generated/facade-extensions-resources.d.ts +34 -0
- package/dist/generated/facade-extensions-resources.js +47 -0
- package/dist/generated/facade-extensions-resources.js.map +1 -0
- package/dist/generated/facade-extensions-types.d.ts +14 -0
- package/dist/generated/facade-extensions-types.js +2 -0
- package/dist/generated/facade-extensions-types.js.map +1 -0
- package/dist/generated/rest-operations.d.ts +4079 -0
- package/dist/generated/rest-operations.js +234 -0
- package/dist/generated/rest-operations.js.map +1 -0
- package/dist/generated/rest-resources.d.ts +666 -0
- package/dist/generated/rest-resources.js +1124 -0
- package/dist/generated/rest-resources.js.map +1 -0
- package/dist/generated/rest-types.d.ts +572 -0
- package/dist/generated/rest-types.js +2 -0
- package/dist/generated/rest-types.js.map +1 -0
- package/dist/generated/rest.d.ts +233 -10
- package/dist/index.d.ts +41 -76
- package/dist/index.js +49 -239
- package/dist/index.js.map +1 -1
- package/dist/lib/artifacts.d.ts +14 -0
- package/dist/lib/artifacts.js +56 -0
- package/dist/lib/artifacts.js.map +1 -0
- package/dist/lib/tool-runner.d.ts +99 -0
- package/dist/lib/tool-runner.js +140 -0
- package/dist/lib/tool-runner.js.map +1 -0
- package/dist/pagination.d.ts +31 -0
- package/dist/pagination.js +66 -0
- package/dist/pagination.js.map +1 -0
- package/dist/resource.d.ts +8 -0
- package/dist/resource.js +9 -0
- package/dist/resource.js.map +1 -0
- package/dist/streaming.d.ts +27 -0
- package/dist/streaming.js +89 -0
- package/dist/streaming.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { BmaError, ConflictError } from "../errors.js";
|
|
2
|
+
import { OP } from "../generated/rest-operations.js";
|
|
3
|
+
import { APIResource } from "../resource.js";
|
|
4
|
+
/** Throw from `run` to report a failed call with this content to the model. */
|
|
5
|
+
export class ToolError extends Error {
|
|
6
|
+
content;
|
|
7
|
+
constructor(content) {
|
|
8
|
+
super(typeof content === "string" ? content : "tool error");
|
|
9
|
+
this.name = "ToolError";
|
|
10
|
+
this.content = content;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Defines a custom tool from a Standard Schema (zod, valibot, arktype). The
|
|
15
|
+
* input is validated before `run` sees it; the JSON Schema for the agent
|
|
16
|
+
* config comes from the schema's Standard JSON Schema or `jsonSchema`.
|
|
17
|
+
*/
|
|
18
|
+
export function defineTool(options) {
|
|
19
|
+
const std = options.inputSchema["~standard"];
|
|
20
|
+
const schema = options.jsonSchema ?? std.jsonSchema?.input({ target: "draft-2020-12" });
|
|
21
|
+
if (!schema) {
|
|
22
|
+
throw new BmaError(`bma: cannot derive a JSON Schema from this ${std.vendor} schema; pass jsonSchema or use a library implementing Standard JSON Schema (zod >= 4.2)`);
|
|
23
|
+
}
|
|
24
|
+
if (schema.type !== "object")
|
|
25
|
+
throw new BmaError(`bma: input schema of tool ${options.name} must be an object`);
|
|
26
|
+
return {
|
|
27
|
+
name: options.name,
|
|
28
|
+
definition: {
|
|
29
|
+
type: "custom",
|
|
30
|
+
description: options.description,
|
|
31
|
+
input_schema: schema,
|
|
32
|
+
},
|
|
33
|
+
async parse(input) {
|
|
34
|
+
const result = await std.validate(input);
|
|
35
|
+
if (result.issues) {
|
|
36
|
+
const detail = result.issues
|
|
37
|
+
.slice(0, 5)
|
|
38
|
+
.map((i) => {
|
|
39
|
+
const path = (i.path ?? []).map((p) => String(typeof p === "object" ? p.key : p)).join(".");
|
|
40
|
+
return path ? `${path}: ${i.message}` : i.message;
|
|
41
|
+
})
|
|
42
|
+
.join("; ");
|
|
43
|
+
throw new ToolError(`invalid input for ${options.name}: ${detail}`);
|
|
44
|
+
}
|
|
45
|
+
return result.value;
|
|
46
|
+
},
|
|
47
|
+
run: options.run,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export class ToolCallsBase extends APIResource {
|
|
51
|
+
/**
|
|
52
|
+
* Runs custom tools for an agent: every `ready` custom call (of the agent
|
|
53
|
+
* and its subagents) whose name matches a tool is parsed, run, and its
|
|
54
|
+
* result submitted. Ready calls are listed on every (re)connection of the
|
|
55
|
+
* event stream, so calls that became ready while disconnected are not lost.
|
|
56
|
+
* A 409 on submit (another consumer answered the call first) counts as
|
|
57
|
+
* handled. `done()` rejects only with the error that stopped the runner.
|
|
58
|
+
*/
|
|
59
|
+
runner(agentId, params, options) {
|
|
60
|
+
const tools = new Map(params.tools.map((t) => [t.name, t]));
|
|
61
|
+
if (tools.size !== params.tools.length)
|
|
62
|
+
throw new BmaError("bma: tool names must be unique");
|
|
63
|
+
const scope = { org_id: params.org_id, project_id: params.project_id };
|
|
64
|
+
const controller = new AbortController();
|
|
65
|
+
options?.signal?.addEventListener("abort", () => controller.abort(), { once: true });
|
|
66
|
+
// Calls being run or submitted; a call leaves the set once its result is
|
|
67
|
+
// stored, after which the server no longer reports it as ready.
|
|
68
|
+
const inFlight = new Set();
|
|
69
|
+
const running = new Set();
|
|
70
|
+
let failure;
|
|
71
|
+
const fail = (error) => {
|
|
72
|
+
failure ??= error;
|
|
73
|
+
controller.abort();
|
|
74
|
+
};
|
|
75
|
+
const handle = (call) => {
|
|
76
|
+
const tool = tools.get(call.name);
|
|
77
|
+
if (call.type !== "custom" || call.state !== "ready" || !tool || inFlight.has(call.id))
|
|
78
|
+
return;
|
|
79
|
+
if (params.session_id && call.agent_id === agentId && call.session_id !== params.session_id)
|
|
80
|
+
return;
|
|
81
|
+
inFlight.add(call.id);
|
|
82
|
+
const task = (async () => {
|
|
83
|
+
let outcome = "succeeded";
|
|
84
|
+
let output;
|
|
85
|
+
try {
|
|
86
|
+
output = await tool.run(await tool.parse(call.input), { toolCall: call, signal: controller.signal });
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
outcome = "failed";
|
|
90
|
+
output = error instanceof ToolError ? error.content : error instanceof Error ? error.message : String(error);
|
|
91
|
+
}
|
|
92
|
+
const content_blocks = typeof output === "string" ? [{ type: "text", text: output }] : output;
|
|
93
|
+
try {
|
|
94
|
+
await this._client._request(OP.submitToolCallResult, { agentID: call.agent_id, toolCallID: call.id }, { ...scope, outcome, content_blocks }, { ...options, signal: undefined });
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (!(error instanceof ConflictError))
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
inFlight.delete(call.id);
|
|
102
|
+
}
|
|
103
|
+
})().catch(fail);
|
|
104
|
+
running.add(task);
|
|
105
|
+
void task.finally(() => running.delete(task));
|
|
106
|
+
};
|
|
107
|
+
const sweep = async () => {
|
|
108
|
+
const pages = this._client._page(OP.listToolCalls, { agentID: agentId }, { ...scope, state: "ready", type: "custom", include_subagents: true }, { ...options, signal: controller.signal });
|
|
109
|
+
for await (const call of pages)
|
|
110
|
+
handle(call);
|
|
111
|
+
};
|
|
112
|
+
const stream = this._client._stream(OP.streamEvents, { agentID: agentId }, { ...scope, ...(params.session_id ? { session_id: params.session_id } : {}) }, { ...options, signal: controller.signal }, { onOpen: () => void sweep().catch(fail), maxReconnects: params.max_reconnects ?? Number.POSITIVE_INFINITY });
|
|
113
|
+
const finished = (async () => {
|
|
114
|
+
try {
|
|
115
|
+
for await (const event of stream) {
|
|
116
|
+
if (event.event !== "tool_call_update" || event.data.state !== "ready")
|
|
117
|
+
continue;
|
|
118
|
+
const { tool_call } = await this._client._request(OP.getToolCall, { agentID: event.data.agent_id ?? agentId, toolCallID: event.data.tool_call_id }, scope, { ...options, signal: controller.signal });
|
|
119
|
+
handle(tool_call);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (!controller.signal.aborted)
|
|
124
|
+
fail(error);
|
|
125
|
+
}
|
|
126
|
+
while (running.size > 0)
|
|
127
|
+
await Promise.allSettled([...running]);
|
|
128
|
+
if (failure !== undefined)
|
|
129
|
+
throw failure;
|
|
130
|
+
})();
|
|
131
|
+
return {
|
|
132
|
+
done: () => finished,
|
|
133
|
+
stop: async () => {
|
|
134
|
+
controller.abort();
|
|
135
|
+
await finished;
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=tool-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-runner.js","sourceRoot":"","sources":["../../src/lib/tool-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** Response body of a paginated operation. */
|
|
2
|
+
export interface CursorPageBody {
|
|
3
|
+
data: unknown[];
|
|
4
|
+
}
|
|
5
|
+
export type PageItem<R extends CursorPageBody> = R["data"][number];
|
|
6
|
+
export interface PageMethods<R extends CursorPageBody> {
|
|
7
|
+
hasNextPage(): boolean;
|
|
8
|
+
/** Fetches the next page; throws when there is none. */
|
|
9
|
+
getNextPage(): Promise<Page<R>>;
|
|
10
|
+
/** This page and every following page. */
|
|
11
|
+
iterPages(): AsyncGenerator<Page<R>>;
|
|
12
|
+
/** Every item of this page and every following page. */
|
|
13
|
+
[Symbol.asyncIterator](): AsyncGenerator<PageItem<R>>;
|
|
14
|
+
}
|
|
15
|
+
/** One page: the response body plus navigation helpers. */
|
|
16
|
+
export type Page<R extends CursorPageBody> = R & PageMethods<R>;
|
|
17
|
+
type Cursor = string | number;
|
|
18
|
+
type FetchPage<R> = (cursor: Cursor | undefined) => Promise<R>;
|
|
19
|
+
type NextCursor = (body: CursorPageBody) => Cursor | undefined;
|
|
20
|
+
/** `await` for the first page, `for await` for every item. */
|
|
21
|
+
export declare class PagePromise<R extends CursorPageBody> implements Promise<Page<R>>, AsyncIterable<PageItem<R>> {
|
|
22
|
+
#private;
|
|
23
|
+
readonly [Symbol.toStringTag] = "PagePromise";
|
|
24
|
+
/** @internal */
|
|
25
|
+
constructor(fetchPage: FetchPage<R>, nextCursor: NextCursor);
|
|
26
|
+
then<A = Page<R>, B = never>(onfulfilled?: ((value: Page<R>) => A | PromiseLike<A>) | null, onrejected?: ((reason: unknown) => B | PromiseLike<B>) | null): Promise<A | B>;
|
|
27
|
+
catch<B = never>(onrejected?: ((reason: unknown) => B | PromiseLike<B>) | null): Promise<Page<R> | B>;
|
|
28
|
+
finally(onfinally?: (() => void) | null): Promise<Page<R>>;
|
|
29
|
+
[Symbol.asyncIterator](): AsyncGenerator<PageItem<R>>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Pagination. Mirrors the Stainless PagePromise of @anthropic-ai/sdk and
|
|
2
|
+
// openai: `await` resolves to the first page, `for await` walks every item
|
|
3
|
+
// across pages. Applies to every list whose response is
|
|
4
|
+
// `{ data: [...], next_<param> }` for a query parameter <param>: `cursor`,
|
|
5
|
+
// `page`, `before_id`/`after_id`, `before_sequence`/`after_sequence` (as the
|
|
6
|
+
// Anthropic Page supports before_id/after_id).
|
|
7
|
+
import { BmaError } from "./errors.js";
|
|
8
|
+
function makePage(body, fetchPage, nextCursor) {
|
|
9
|
+
const methods = {
|
|
10
|
+
hasNextPage: () => nextCursor(body) !== undefined,
|
|
11
|
+
getNextPage: async () => {
|
|
12
|
+
const next = nextCursor(body);
|
|
13
|
+
if (next === undefined)
|
|
14
|
+
throw new BmaError("bma: no next page; check hasNextPage() first");
|
|
15
|
+
return makePage(await fetchPage(next), fetchPage, nextCursor);
|
|
16
|
+
},
|
|
17
|
+
iterPages: async function* () {
|
|
18
|
+
let page = makePage(body, fetchPage, nextCursor);
|
|
19
|
+
yield page;
|
|
20
|
+
while (page.hasNextPage()) {
|
|
21
|
+
page = await page.getNextPage();
|
|
22
|
+
yield page;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
[Symbol.asyncIterator]: async function* () {
|
|
26
|
+
for await (const page of methods.iterPages())
|
|
27
|
+
yield* page.data;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
// Methods are non-enumerable so JSON.stringify(page) is the wire body.
|
|
31
|
+
const page = Object.create(null);
|
|
32
|
+
Object.assign(page, body);
|
|
33
|
+
for (const [key, value] of [...Object.entries(methods), [Symbol.asyncIterator, methods[Symbol.asyncIterator]]]) {
|
|
34
|
+
Object.defineProperty(page, key, { value, enumerable: false });
|
|
35
|
+
}
|
|
36
|
+
return page;
|
|
37
|
+
}
|
|
38
|
+
/** `await` for the first page, `for await` for every item. */
|
|
39
|
+
export class PagePromise {
|
|
40
|
+
[Symbol.toStringTag] = "PagePromise";
|
|
41
|
+
#first;
|
|
42
|
+
#fetchPage;
|
|
43
|
+
#nextCursor;
|
|
44
|
+
/** @internal */
|
|
45
|
+
constructor(fetchPage, nextCursor) {
|
|
46
|
+
this.#fetchPage = fetchPage;
|
|
47
|
+
this.#nextCursor = nextCursor;
|
|
48
|
+
}
|
|
49
|
+
#page() {
|
|
50
|
+
this.#first ??= this.#fetchPage(undefined).then((body) => makePage(body, this.#fetchPage, this.#nextCursor));
|
|
51
|
+
return this.#first;
|
|
52
|
+
}
|
|
53
|
+
then(onfulfilled, onrejected) {
|
|
54
|
+
return this.#page().then(onfulfilled, onrejected);
|
|
55
|
+
}
|
|
56
|
+
catch(onrejected) {
|
|
57
|
+
return this.#page().catch(onrejected);
|
|
58
|
+
}
|
|
59
|
+
finally(onfinally) {
|
|
60
|
+
return this.#page().finally(onfinally);
|
|
61
|
+
}
|
|
62
|
+
async *[Symbol.asyncIterator]() {
|
|
63
|
+
yield* await this.#page();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
|
package/dist/resource.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAIA,8CAA8C;AAC9C,MAAM,OAAO,WAAW;IACtB,gBAAgB;IACG,OAAO,CAAa;IAEvC,YAAY,MAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A typed event stream. Iterate it once with `for await`; `abort()` closes it.
|
|
3
|
+
* Like EventSource, the stream does not end when the server closes the
|
|
4
|
+
* connection: it reconnects from the last durable frame until the reconnect
|
|
5
|
+
* budget is spent, then throws.
|
|
6
|
+
*/
|
|
7
|
+
export declare class Stream<T> implements AsyncIterable<T> {
|
|
8
|
+
#private;
|
|
9
|
+
readonly controller: AbortController;
|
|
10
|
+
/** @internal */
|
|
11
|
+
constructor(iterate: (signal: AbortSignal) => AsyncGenerator<T>, controller: AbortController);
|
|
12
|
+
[Symbol.asyncIterator](): AsyncGenerator<T>;
|
|
13
|
+
/** Closes the connection; a pending iteration ends with APIUserAbortError. */
|
|
14
|
+
abort(): void;
|
|
15
|
+
}
|
|
16
|
+
/** @internal One raw SSE frame. */
|
|
17
|
+
export interface RawSSEFrame {
|
|
18
|
+
event: string;
|
|
19
|
+
id?: string;
|
|
20
|
+
data: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @internal Minimal text/event-stream parser (WHATWG HTML §9.2.6 field rules).
|
|
24
|
+
* A frame not terminated by a blank line when the body ends is discarded, as
|
|
25
|
+
* the spec requires. `onLine` runs for every line, comments included.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseSSE(body: ReadableStream<Uint8Array>, onLine?: () => void): AsyncGenerator<RawSSEFrame>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Server-sent event streams.
|
|
2
|
+
import { BmaError } from "./errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* A typed event stream. Iterate it once with `for await`; `abort()` closes it.
|
|
5
|
+
* Like EventSource, the stream does not end when the server closes the
|
|
6
|
+
* connection: it reconnects from the last durable frame until the reconnect
|
|
7
|
+
* budget is spent, then throws.
|
|
8
|
+
*/
|
|
9
|
+
export class Stream {
|
|
10
|
+
controller;
|
|
11
|
+
#iterate;
|
|
12
|
+
#used = false;
|
|
13
|
+
/** @internal */
|
|
14
|
+
constructor(iterate, controller) {
|
|
15
|
+
this.#iterate = iterate;
|
|
16
|
+
this.controller = controller;
|
|
17
|
+
}
|
|
18
|
+
[Symbol.asyncIterator]() {
|
|
19
|
+
if (this.#used)
|
|
20
|
+
throw new BmaError("bma: a Stream can be iterated only once");
|
|
21
|
+
this.#used = true;
|
|
22
|
+
return this.#iterate(this.controller.signal);
|
|
23
|
+
}
|
|
24
|
+
/** Closes the connection; a pending iteration ends with APIUserAbortError. */
|
|
25
|
+
abort() {
|
|
26
|
+
this.controller.abort();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @internal Minimal text/event-stream parser (WHATWG HTML §9.2.6 field rules).
|
|
31
|
+
* A frame not terminated by a blank line when the body ends is discarded, as
|
|
32
|
+
* the spec requires. `onLine` runs for every line, comments included.
|
|
33
|
+
*/
|
|
34
|
+
export async function* parseSSE(body, onLine) {
|
|
35
|
+
const decoder = new TextDecoder();
|
|
36
|
+
let buffer = "";
|
|
37
|
+
let event = "";
|
|
38
|
+
let id;
|
|
39
|
+
let data = [];
|
|
40
|
+
const dispatch = () => {
|
|
41
|
+
const frame = data.length > 0 ? { event: event || "message", id, data: data.join("\n") } : undefined;
|
|
42
|
+
event = "";
|
|
43
|
+
id = undefined;
|
|
44
|
+
data = [];
|
|
45
|
+
return frame;
|
|
46
|
+
};
|
|
47
|
+
const reader = body.getReader();
|
|
48
|
+
try {
|
|
49
|
+
for (;;) {
|
|
50
|
+
const { done, value } = await reader.read();
|
|
51
|
+
buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });
|
|
52
|
+
let newline;
|
|
53
|
+
while ((newline = buffer.search(/\r\n|\r|\n/)) >= 0) {
|
|
54
|
+
// A trailing \r may be the first half of a \r\n split across chunks.
|
|
55
|
+
if (!done && newline === buffer.length - 1 && buffer.endsWith("\r"))
|
|
56
|
+
break;
|
|
57
|
+
const line = buffer.slice(0, newline);
|
|
58
|
+
buffer = buffer.slice(newline + (buffer.startsWith("\r\n", newline) ? 2 : 1));
|
|
59
|
+
onLine?.();
|
|
60
|
+
if (line === "") {
|
|
61
|
+
const frame = dispatch();
|
|
62
|
+
if (frame)
|
|
63
|
+
yield frame;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (line.startsWith(":"))
|
|
67
|
+
continue;
|
|
68
|
+
const colon = line.indexOf(":");
|
|
69
|
+
const name = colon < 0 ? line : line.slice(0, colon);
|
|
70
|
+
let value = colon < 0 ? "" : line.slice(colon + 1);
|
|
71
|
+
if (value.startsWith(" "))
|
|
72
|
+
value = value.slice(1);
|
|
73
|
+
if (name === "event")
|
|
74
|
+
event = value;
|
|
75
|
+
else if (name === "id")
|
|
76
|
+
id = value;
|
|
77
|
+
else if (name === "data")
|
|
78
|
+
data.push(value);
|
|
79
|
+
}
|
|
80
|
+
if (done)
|
|
81
|
+
return; // an unterminated frame is discarded
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
await reader.cancel().catch(() => undefined);
|
|
86
|
+
reader.releaseLock();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SDK_VERSION = "1.0.0";
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beeos-ai/bma-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "TypeScript client for the BMA REST API and the BMA extensions to the Anthropic Managed Agents API.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "git+https://github.com/beeos-ai/bma-
|
|
8
|
+
"url": "git+https://github.com/beeos-ai/bma-sdk.git",
|
|
9
9
|
"directory": "typescript"
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
@@ -36,7 +36,9 @@
|
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^22.0.0",
|
|
39
|
+
"expect-type": "1.4.0",
|
|
39
40
|
"openapi-typescript": "7.13.0",
|
|
40
|
-
"typescript": "5.9.3"
|
|
41
|
+
"typescript": "5.9.3",
|
|
42
|
+
"zod": "4.6.7"
|
|
41
43
|
}
|
|
42
44
|
}
|