@introspection-sdk/introspection-node 0.4.2 → 0.4.3
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-check-types.log +4 -0
- package/.turbo/turbo-lint.log +5 -0
- package/dist/client.d.ts +42 -132
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +67 -366
- package/dist/client.js.map +1 -0
- package/dist/converters/claude.d.ts +4 -0
- package/dist/converters/claude.d.ts.map +1 -1
- package/dist/converters/claude.js +7 -0
- package/dist/converters/claude.js.map +1 -0
- package/dist/converters/gemini.d.ts +90 -0
- package/dist/converters/gemini.d.ts.map +1 -0
- package/dist/converters/gemini.js +171 -0
- package/dist/converters/gemini.js.map +1 -0
- package/dist/converters/index.d.ts +1 -1
- package/dist/converters/index.d.ts.map +1 -1
- package/dist/converters/index.js +2 -1
- package/dist/converters/index.js.map +1 -0
- package/dist/converters/openai.js +1 -0
- package/dist/converters/openai.js.map +1 -0
- package/dist/converters/openclaw.d.ts +16 -0
- package/dist/converters/openclaw.d.ts.map +1 -0
- package/dist/converters/openclaw.js +49 -0
- package/dist/converters/openinference.js +1 -0
- package/dist/converters/openinference.js.map +1 -0
- package/dist/converters/vercel.d.ts.map +1 -1
- package/dist/converters/vercel.js +31 -3
- package/dist/converters/vercel.js.map +1 -0
- package/dist/http.d.ts +36 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +145 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +24 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -32
- package/dist/index.js.map +1 -0
- package/dist/otel/anthropic.d.ts +62 -0
- package/dist/otel/anthropic.d.ts.map +1 -0
- package/dist/otel/anthropic.js +425 -0
- package/dist/otel/anthropic.js.map +1 -0
- package/dist/otel/claude-hooks.d.ts +346 -0
- package/dist/otel/claude-hooks.d.ts.map +1 -0
- package/dist/otel/claude-hooks.js +645 -0
- package/dist/otel/claude-hooks.js.map +1 -0
- package/dist/otel/claude-wrapper.d.ts +93 -0
- package/dist/otel/claude-wrapper.d.ts.map +1 -0
- package/dist/otel/claude-wrapper.js +155 -0
- package/dist/otel/claude-wrapper.js.map +1 -0
- package/dist/otel/gemini.d.ts +48 -0
- package/dist/otel/gemini.d.ts.map +1 -0
- package/dist/otel/gemini.js +297 -0
- package/dist/otel/gemini.js.map +1 -0
- package/dist/otel/index.d.ts +27 -0
- package/dist/otel/index.d.ts.map +1 -0
- package/dist/otel/index.js +33 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/otel/langchain-handler.d.ts +112 -0
- package/dist/otel/langchain-handler.d.ts.map +1 -0
- package/dist/otel/langchain-handler.js +555 -0
- package/dist/otel/langchain-handler.js.map +1 -0
- package/dist/otel/logs.d.ts +82 -0
- package/dist/otel/logs.d.ts.map +1 -0
- package/dist/otel/logs.js +271 -0
- package/dist/otel/logs.js.map +1 -0
- package/dist/otel/mastra-exporter.d.ts +87 -0
- package/dist/otel/mastra-exporter.d.ts.map +1 -0
- package/dist/otel/mastra-exporter.js +525 -0
- package/dist/otel/mastra-exporter.js.map +1 -0
- package/dist/otel/pi.d.ts +59 -0
- package/dist/otel/pi.d.ts.map +1 -0
- package/dist/otel/pi.js +67 -0
- package/dist/otel/pi.js.map +1 -0
- package/dist/otel/setup.d.ts +23 -0
- package/dist/otel/setup.d.ts.map +1 -0
- package/dist/otel/setup.js +127 -0
- package/dist/otel/setup.js.map +1 -0
- package/dist/otel/span-processor.d.ts +62 -0
- package/dist/otel/span-processor.d.ts.map +1 -0
- package/dist/otel/span-processor.js +319 -0
- package/dist/otel/span-processor.js.map +1 -0
- package/dist/otel/tracing-processor.d.ts +139 -0
- package/dist/otel/tracing-processor.d.ts.map +1 -0
- package/dist/otel/tracing-processor.js +418 -0
- package/dist/otel/tracing-processor.js.map +1 -0
- package/dist/resources/experiments.d.ts +31 -0
- package/dist/resources/experiments.d.ts.map +1 -0
- package/dist/resources/experiments.js +133 -0
- package/dist/resources/experiments.js.map +1 -0
- package/dist/resources/recipes.d.ts +22 -0
- package/dist/resources/recipes.d.ts.map +1 -0
- package/dist/resources/recipes.js +61 -0
- package/dist/resources/recipes.js.map +1 -0
- package/dist/resources/runtimes.d.ts +76 -0
- package/dist/resources/runtimes.d.ts.map +1 -0
- package/dist/resources/runtimes.js +179 -0
- package/dist/resources/runtimes.js.map +1 -0
- package/dist/runner-resources/files.d.ts +35 -0
- package/dist/runner-resources/files.d.ts.map +1 -0
- package/dist/runner-resources/files.js +131 -0
- package/dist/runner-resources/files.js.map +1 -0
- package/dist/runner-resources/tasks.d.ts +39 -0
- package/dist/runner-resources/tasks.d.ts.map +1 -0
- package/dist/runner-resources/tasks.js +129 -0
- package/dist/runner-resources/tasks.js.map +1 -0
- package/dist/runner.d.ts +80 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +159 -0
- package/dist/runner.js.map +1 -0
- package/dist/streaming.d.ts +8 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +67 -0
- package/dist/streaming.js.map +1 -0
- package/dist/types/genai.d.ts +165 -0
- package/dist/types/genai.d.ts.map +1 -0
- package/dist/types/genai.js +82 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -0
- package/dist/version.js +1 -0
- package/dist/version.js.map +1 -0
- package/package.json +81 -24
- package/src/client.ts +76 -473
- package/src/converters/claude.ts +10 -0
- package/src/converters/gemini.ts +243 -0
- package/src/converters/index.ts +13 -7
- package/src/converters/vercel.ts +41 -3
- package/src/http.ts +163 -0
- package/src/index.ts +110 -75
- package/src/{anthropic.ts → otel/anthropic.ts} +95 -8
- package/src/{claude-hooks.ts → otel/claude-hooks.ts} +119 -20
- package/src/{claude-wrapper.ts → otel/claude-wrapper.ts} +1 -1
- package/src/otel/gemini.ts +397 -0
- package/src/otel/index.ts +80 -0
- package/src/{langchain-handler.ts → otel/langchain-handler.ts} +53 -6
- package/src/otel/logs.ts +394 -0
- package/src/{mastra-exporter.ts → otel/mastra-exporter.ts} +83 -22
- package/src/otel/pi.ts +88 -0
- package/src/otel/setup.ts +174 -0
- package/src/{span-processor.ts → otel/span-processor.ts} +11 -6
- package/src/{tracing-processor.ts → otel/tracing-processor.ts} +94 -19
- package/src/resources/experiments.ts +170 -0
- package/src/resources/recipes.ts +73 -0
- package/src/resources/runtimes.ts +231 -0
- package/src/runner-resources/files.ts +163 -0
- package/src/runner-resources/tasks.ts +156 -0
- package/src/runner.ts +194 -0
- package/src/streaming.ts +57 -0
- package/src/ai-sdk-integration.ts +0 -691
- package/src/converters/ai-sdk.ts +0 -323
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export class FileVersionsApi {
|
|
2
|
+
http;
|
|
3
|
+
constructor(http) {
|
|
4
|
+
this.http = http;
|
|
5
|
+
}
|
|
6
|
+
list(fileId, params) {
|
|
7
|
+
return this.http.request({
|
|
8
|
+
method: "GET",
|
|
9
|
+
path: `/v1/files/${encodeURIComponent(fileId)}/versions`,
|
|
10
|
+
query: params,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async *listAll(fileId, params) {
|
|
14
|
+
let next = params?.next;
|
|
15
|
+
do {
|
|
16
|
+
const page = await this.list(fileId, { ...params, next });
|
|
17
|
+
for (const f of page.records)
|
|
18
|
+
yield f;
|
|
19
|
+
next = page.next ?? undefined;
|
|
20
|
+
} while (next);
|
|
21
|
+
}
|
|
22
|
+
get(fileId, versionId) {
|
|
23
|
+
return this.http.request({
|
|
24
|
+
method: "GET",
|
|
25
|
+
path: `/v1/files/${encodeURIComponent(fileId)}/versions/${encodeURIComponent(versionId)}`,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
create(fileId, body) {
|
|
29
|
+
const form = toFormData(body);
|
|
30
|
+
return this.http.request({
|
|
31
|
+
method: "POST",
|
|
32
|
+
path: `/v1/files/${encodeURIComponent(fileId)}/versions`,
|
|
33
|
+
body: form,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class FilesApi {
|
|
38
|
+
http;
|
|
39
|
+
versions;
|
|
40
|
+
constructor(http) {
|
|
41
|
+
this.http = http;
|
|
42
|
+
this.versions = new FileVersionsApi(http);
|
|
43
|
+
}
|
|
44
|
+
list(params) {
|
|
45
|
+
return this.http.request({
|
|
46
|
+
method: "GET",
|
|
47
|
+
path: "/v1/files",
|
|
48
|
+
query: params,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async *listAll(params) {
|
|
52
|
+
let next = params?.next;
|
|
53
|
+
do {
|
|
54
|
+
const page = await this.list({ ...params, next });
|
|
55
|
+
for (const f of page.records)
|
|
56
|
+
yield f;
|
|
57
|
+
next = page.next ?? undefined;
|
|
58
|
+
} while (next);
|
|
59
|
+
}
|
|
60
|
+
upload(body) {
|
|
61
|
+
const form = toFormData(body);
|
|
62
|
+
return this.http.request({
|
|
63
|
+
method: "POST",
|
|
64
|
+
path: "/v1/files",
|
|
65
|
+
body: form,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
createText(body) {
|
|
69
|
+
return this.http.request({
|
|
70
|
+
method: "POST",
|
|
71
|
+
path: "/v1/files",
|
|
72
|
+
body,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
get(fileId) {
|
|
76
|
+
return this.http.request({
|
|
77
|
+
method: "GET",
|
|
78
|
+
path: `/v1/files/${encodeURIComponent(fileId)}`,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
update(fileId, body) {
|
|
82
|
+
return this.http.request({
|
|
83
|
+
method: "PATCH",
|
|
84
|
+
path: `/v1/files/${encodeURIComponent(fileId)}`,
|
|
85
|
+
body,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
delete(fileId) {
|
|
89
|
+
return this.http.request({
|
|
90
|
+
method: "DELETE",
|
|
91
|
+
path: `/v1/files/${encodeURIComponent(fileId)}`,
|
|
92
|
+
expect: "empty",
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
download(fileId) {
|
|
96
|
+
return this.http.request({
|
|
97
|
+
method: "GET",
|
|
98
|
+
path: `/v1/files/${encodeURIComponent(fileId)}/content`,
|
|
99
|
+
expect: "bytes",
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
downloadStream(fileId) {
|
|
103
|
+
return this.http.request({
|
|
104
|
+
method: "GET",
|
|
105
|
+
path: `/v1/files/${encodeURIComponent(fileId)}/content`,
|
|
106
|
+
expect: "stream",
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function toFormData(body) {
|
|
111
|
+
const fd = new FormData();
|
|
112
|
+
if ("file" in body && body.file instanceof Blob) {
|
|
113
|
+
fd.append("file", body.file, body.name);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Uint8Array branch — copy into a fresh ArrayBuffer so the Blob
|
|
117
|
+
// constructor sees a concrete ArrayBuffer (not ArrayBufferLike,
|
|
118
|
+
// which TS rejects under nodenext lib).
|
|
119
|
+
const u8 = body.file;
|
|
120
|
+
const ct = body.contentType ??
|
|
121
|
+
"application/octet-stream";
|
|
122
|
+
const ab = u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength);
|
|
123
|
+
fd.append("file", new Blob([ab], { type: ct }), body.name);
|
|
124
|
+
}
|
|
125
|
+
if (body.name)
|
|
126
|
+
fd.append("name", body.name);
|
|
127
|
+
if (body.file_type)
|
|
128
|
+
fd.append("file_type", body.file_type);
|
|
129
|
+
return fd;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/runner-resources/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Paginated, SseEvent, Task, TaskCancelResponse, TaskCreateParams, TaskCreateResponse, TaskListParams, TaskRun, TaskRunCreateParams, TaskUpdateParams } from "@introspection-sdk/types";
|
|
2
|
+
import { HttpClient } from "../http.js";
|
|
3
|
+
export interface StartParams extends TaskCreateParams {
|
|
4
|
+
prompt: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class RunHandle {
|
|
7
|
+
readonly task: Task | null;
|
|
8
|
+
readonly run: TaskRun;
|
|
9
|
+
private readonly runs;
|
|
10
|
+
constructor(task: Task | null, run: TaskRun, runs: TaskRunsApi);
|
|
11
|
+
stream(): AsyncIterable<SseEvent>;
|
|
12
|
+
cancel(): Promise<TaskCancelResponse>;
|
|
13
|
+
/** Convenience: collect `data` from `event: text`-style frames into a string. */
|
|
14
|
+
text(): Promise<string>;
|
|
15
|
+
}
|
|
16
|
+
export declare class TaskRunsApi {
|
|
17
|
+
private readonly http;
|
|
18
|
+
constructor(http: HttpClient);
|
|
19
|
+
create(taskId: string, body: TaskRunCreateParams): Promise<RunHandle>;
|
|
20
|
+
get(taskId: string, runId: string): Promise<TaskRun>;
|
|
21
|
+
cancel(taskId: string, runId: string): Promise<TaskCancelResponse>;
|
|
22
|
+
stream(taskId: string, runId: string): AsyncIterable<SseEvent>;
|
|
23
|
+
}
|
|
24
|
+
export declare class TasksApi {
|
|
25
|
+
private readonly http;
|
|
26
|
+
readonly runs: TaskRunsApi;
|
|
27
|
+
constructor(http: HttpClient);
|
|
28
|
+
list(params?: TaskListParams): Promise<Paginated<Task>>;
|
|
29
|
+
listAll(params?: TaskListParams): AsyncIterable<Task>;
|
|
30
|
+
create(body: TaskCreateParams): Promise<TaskCreateResponse>;
|
|
31
|
+
get(taskId: string): Promise<Task>;
|
|
32
|
+
update(taskId: string, body: TaskUpdateParams): Promise<Task>;
|
|
33
|
+
delete(taskId: string): Promise<void>;
|
|
34
|
+
archive(taskId: string): Promise<void>;
|
|
35
|
+
unarchive(taskId: string): Promise<void>;
|
|
36
|
+
/** Cursor-style sugar: create a task + return a handle on its initial run. */
|
|
37
|
+
start(params: StartParams): Promise<RunHandle>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/runner-resources/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,mBAAmB,EAEnB,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAS;aAEF,IAAI,EAAE,IAAI,GAAG,IAAI;aACjB,GAAG,EAAE,OAAO;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFL,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,GAAG,EAAE,OAAO,EACX,IAAI,EAAE,WAAW;IAGpC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;IAIjC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIrC,iFAAiF;IAC3E,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CAO9B;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAS3E,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAO3D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;CAMtE;AAED,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;gBAEE,IAAI,EAAE,UAAU;IAI7C,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAQhD,OAAO,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC;IAS5D,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQ3D,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,8EAA8E;IACxE,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;CAIrD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { parseSse } from "../streaming.js";
|
|
2
|
+
export class RunHandle {
|
|
3
|
+
task;
|
|
4
|
+
run;
|
|
5
|
+
runs;
|
|
6
|
+
constructor(task, run, runs) {
|
|
7
|
+
this.task = task;
|
|
8
|
+
this.run = run;
|
|
9
|
+
this.runs = runs;
|
|
10
|
+
}
|
|
11
|
+
stream() {
|
|
12
|
+
return this.runs.stream(this.run.task_id, this.run.id);
|
|
13
|
+
}
|
|
14
|
+
cancel() {
|
|
15
|
+
return this.runs.cancel(this.run.task_id, this.run.id);
|
|
16
|
+
}
|
|
17
|
+
/** Convenience: collect `data` from `event: text`-style frames into a string. */
|
|
18
|
+
async text() {
|
|
19
|
+
let out = "";
|
|
20
|
+
for await (const ev of this.stream()) {
|
|
21
|
+
if (ev.event === "text" || ev.event === "message")
|
|
22
|
+
out += ev.data;
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class TaskRunsApi {
|
|
28
|
+
http;
|
|
29
|
+
constructor(http) {
|
|
30
|
+
this.http = http;
|
|
31
|
+
}
|
|
32
|
+
async create(taskId, body) {
|
|
33
|
+
const res = await this.http.request({
|
|
34
|
+
method: "POST",
|
|
35
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}/runs`,
|
|
36
|
+
body,
|
|
37
|
+
});
|
|
38
|
+
return new RunHandle(null, res.run, this);
|
|
39
|
+
}
|
|
40
|
+
get(taskId, runId) {
|
|
41
|
+
return this.http.request({
|
|
42
|
+
method: "GET",
|
|
43
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}/runs/${encodeURIComponent(runId)}`,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
cancel(taskId, runId) {
|
|
47
|
+
return this.http.request({
|
|
48
|
+
method: "POST",
|
|
49
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}/runs/${encodeURIComponent(runId)}/cancel`,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async *stream(taskId, runId) {
|
|
53
|
+
const res = await this.http.stream({
|
|
54
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}/runs/${encodeURIComponent(runId)}/stream`,
|
|
55
|
+
});
|
|
56
|
+
yield* parseSse(res);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export class TasksApi {
|
|
60
|
+
http;
|
|
61
|
+
runs;
|
|
62
|
+
constructor(http) {
|
|
63
|
+
this.http = http;
|
|
64
|
+
this.runs = new TaskRunsApi(http);
|
|
65
|
+
}
|
|
66
|
+
list(params) {
|
|
67
|
+
return this.http.request({
|
|
68
|
+
method: "GET",
|
|
69
|
+
path: "/v1/tasks",
|
|
70
|
+
query: params,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async *listAll(params) {
|
|
74
|
+
let next = params?.next;
|
|
75
|
+
do {
|
|
76
|
+
const page = await this.list({ ...params, next });
|
|
77
|
+
for (const t of page.records)
|
|
78
|
+
yield t;
|
|
79
|
+
next = page.next ?? undefined;
|
|
80
|
+
} while (next);
|
|
81
|
+
}
|
|
82
|
+
create(body) {
|
|
83
|
+
return this.http.request({
|
|
84
|
+
method: "POST",
|
|
85
|
+
path: "/v1/tasks",
|
|
86
|
+
body,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
get(taskId) {
|
|
90
|
+
return this.http.request({
|
|
91
|
+
method: "GET",
|
|
92
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}`,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
update(taskId, body) {
|
|
96
|
+
return this.http.request({
|
|
97
|
+
method: "PATCH",
|
|
98
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}`,
|
|
99
|
+
body,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
delete(taskId) {
|
|
103
|
+
return this.http.request({
|
|
104
|
+
method: "DELETE",
|
|
105
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}`,
|
|
106
|
+
expect: "empty",
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
archive(taskId) {
|
|
110
|
+
return this.http.request({
|
|
111
|
+
method: "POST",
|
|
112
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}/archive`,
|
|
113
|
+
expect: "empty",
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
unarchive(taskId) {
|
|
117
|
+
return this.http.request({
|
|
118
|
+
method: "POST",
|
|
119
|
+
path: `/v1/tasks/${encodeURIComponent(taskId)}/unarchive`,
|
|
120
|
+
expect: "empty",
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/** Cursor-style sugar: create a task + return a handle on its initial run. */
|
|
124
|
+
async start(params) {
|
|
125
|
+
const res = await this.create(params);
|
|
126
|
+
return new RunHandle(res.task, res.run, this.runs);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/runner-resources/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type RunnerContext, type RunnerDeployment, type RunnerSpec, type RunRequest, type Uuid } from "@introspection-sdk/types";
|
|
2
|
+
import { TasksApi } from "./runner-resources/tasks.js";
|
|
3
|
+
import { FilesApi } from "./runner-resources/files.js";
|
|
4
|
+
import type { IntrospectionClient } from "./client.js";
|
|
5
|
+
/**
|
|
6
|
+
* Where this Runner came from, so `refresh()` can call CP again with the
|
|
7
|
+
* same arguments to obtain a fresh `RunnerSpec` (manual escape hatch only;
|
|
8
|
+
* not auto-scheduled).
|
|
9
|
+
*/
|
|
10
|
+
export type RunnerSource = {
|
|
11
|
+
kind: "runtime";
|
|
12
|
+
id: Uuid;
|
|
13
|
+
options?: RunRequest;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "experiment";
|
|
16
|
+
id: Uuid;
|
|
17
|
+
options?: RunRequest;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Live handle to a Data Plane sandbox. Holds the bearer JWT, the DP
|
|
21
|
+
* endpoint URL, and the runtime/experiment context, and exposes the
|
|
22
|
+
* runner-bound `tasks` and `files` namespaces.
|
|
23
|
+
*
|
|
24
|
+
* In v1 of the agent-session-based design, token refresh is handled
|
|
25
|
+
* server-side by the DP materializer attached to the agent session — the
|
|
26
|
+
* SDK does NOT auto-refresh and does NOT install a 401 safety-net. The
|
|
27
|
+
* `refresh()` method is kept as a manual escape hatch that re-calls the
|
|
28
|
+
* CP `/run` route to mint a brand-new spec.
|
|
29
|
+
*/
|
|
30
|
+
export declare class Runner {
|
|
31
|
+
private readonly client;
|
|
32
|
+
private readonly source;
|
|
33
|
+
private spec;
|
|
34
|
+
private http;
|
|
35
|
+
private closed;
|
|
36
|
+
readonly tasks: TasksApi;
|
|
37
|
+
readonly files: FilesApi;
|
|
38
|
+
constructor(client: IntrospectionClient, source: RunnerSource, spec: RunnerSpec);
|
|
39
|
+
/** DP REST base URL the runner is bound to. */
|
|
40
|
+
get dpEndpoint(): string;
|
|
41
|
+
/** Routing target — DP endpoint / slug / region. */
|
|
42
|
+
get deployment(): Readonly<RunnerDeployment>;
|
|
43
|
+
/** Session lifetime (ISO-8601 string). */
|
|
44
|
+
get expires_at(): string;
|
|
45
|
+
/** Session ID assigned by CP. */
|
|
46
|
+
get session_id(): string;
|
|
47
|
+
/** Resolved runtime / arm / recipe / identity / caller context. */
|
|
48
|
+
get context(): Readonly<RunnerContext>;
|
|
49
|
+
/** True once `close()` has been called. */
|
|
50
|
+
get isClosed(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Manual escape hatch: re-call CP `/v1/runtimes/{id}/run` or
|
|
53
|
+
* `/v1/experiments/{id}/run` with the original `RunRequest` and replace
|
|
54
|
+
* this runner's in-memory spec with a fresh one.
|
|
55
|
+
*
|
|
56
|
+
* Not auto-scheduled — in v1 the DP materializer refreshes the
|
|
57
|
+
* underlying access token transparently for the agent-session-backed
|
|
58
|
+
* runner. Call this only if you have an explicit reason to mint a new
|
|
59
|
+
* session (e.g. you held a runner across a very long pause).
|
|
60
|
+
*/
|
|
61
|
+
refresh(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Best-effort close — flips a local `isClosed` flag so subsequent
|
|
64
|
+
* `runner.tasks` / `runner.files` calls throw a friendly error. No
|
|
65
|
+
* server-side revoke is performed; future work will route a revoke via
|
|
66
|
+
* the CP locator-token path.
|
|
67
|
+
*/
|
|
68
|
+
close(): Promise<void>;
|
|
69
|
+
private buildHttp;
|
|
70
|
+
/**
|
|
71
|
+
* Wrap an HttpClient so that calls after `close()` fail with a clear
|
|
72
|
+
* `RunnerExpiredError` instead of hitting the network with a stale
|
|
73
|
+
* bearer. No 401 retry / refresh logic — that is the DP materializer's
|
|
74
|
+
* job in v1.
|
|
75
|
+
*/
|
|
76
|
+
private guardedHttp;
|
|
77
|
+
private assertOpen;
|
|
78
|
+
private requestFreshSpec;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,IAAI,EACV,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,qBAAa,MAAM;IAUf,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAS;IAGvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAGN,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACrC,IAAI,EAAE,UAAU;IAUlB,+CAA+C;IAC/C,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,oDAAoD;IACpD,IAAI,UAAU,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAE3C;IAED,0CAA0C;IAC1C,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,iCAAiC;IACjC,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,mEAAmE;IACnE,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,CAErC;IAED,2CAA2C;IAC3C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAID;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,SAAS;IAUjB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,UAAU;YAUJ,gBAAgB;CAgB/B"}
|
package/dist/runner.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { RunnerExpiredError, } from "@introspection-sdk/types";
|
|
2
|
+
import { HttpClient } from "./http.js";
|
|
3
|
+
import { TasksApi } from "./runner-resources/tasks.js";
|
|
4
|
+
import { FilesApi } from "./runner-resources/files.js";
|
|
5
|
+
/**
|
|
6
|
+
* Live handle to a Data Plane sandbox. Holds the bearer JWT, the DP
|
|
7
|
+
* endpoint URL, and the runtime/experiment context, and exposes the
|
|
8
|
+
* runner-bound `tasks` and `files` namespaces.
|
|
9
|
+
*
|
|
10
|
+
* In v1 of the agent-session-based design, token refresh is handled
|
|
11
|
+
* server-side by the DP materializer attached to the agent session — the
|
|
12
|
+
* SDK does NOT auto-refresh and does NOT install a 401 safety-net. The
|
|
13
|
+
* `refresh()` method is kept as a manual escape hatch that re-calls the
|
|
14
|
+
* CP `/run` route to mint a brand-new spec.
|
|
15
|
+
*/
|
|
16
|
+
export class Runner {
|
|
17
|
+
client;
|
|
18
|
+
source;
|
|
19
|
+
spec;
|
|
20
|
+
http;
|
|
21
|
+
closed = false;
|
|
22
|
+
// Public API surfaces.
|
|
23
|
+
tasks;
|
|
24
|
+
files;
|
|
25
|
+
constructor(client, source, spec) {
|
|
26
|
+
this.client = client;
|
|
27
|
+
this.source = source;
|
|
28
|
+
this.spec = spec;
|
|
29
|
+
this.http = this.buildHttp();
|
|
30
|
+
this.tasks = new TasksApi(this.guardedHttp(this.http));
|
|
31
|
+
this.files = new FilesApi(this.guardedHttp(this.http));
|
|
32
|
+
}
|
|
33
|
+
// --- public accessors ---
|
|
34
|
+
/** DP REST base URL the runner is bound to. */
|
|
35
|
+
get dpEndpoint() {
|
|
36
|
+
return this.spec.deployment.endpoint;
|
|
37
|
+
}
|
|
38
|
+
/** Routing target — DP endpoint / slug / region. */
|
|
39
|
+
get deployment() {
|
|
40
|
+
return Object.freeze({ ...this.spec.deployment });
|
|
41
|
+
}
|
|
42
|
+
/** Session lifetime (ISO-8601 string). */
|
|
43
|
+
get expires_at() {
|
|
44
|
+
return this.spec.expires_at;
|
|
45
|
+
}
|
|
46
|
+
/** Session ID assigned by CP. */
|
|
47
|
+
get session_id() {
|
|
48
|
+
return this.spec.session_id;
|
|
49
|
+
}
|
|
50
|
+
/** Resolved runtime / arm / recipe / identity / caller context. */
|
|
51
|
+
get context() {
|
|
52
|
+
return Object.freeze({ ...this.spec.runtime_context });
|
|
53
|
+
}
|
|
54
|
+
/** True once `close()` has been called. */
|
|
55
|
+
get isClosed() {
|
|
56
|
+
return this.closed;
|
|
57
|
+
}
|
|
58
|
+
// --- lifecycle ---
|
|
59
|
+
/**
|
|
60
|
+
* Manual escape hatch: re-call CP `/v1/runtimes/{id}/run` or
|
|
61
|
+
* `/v1/experiments/{id}/run` with the original `RunRequest` and replace
|
|
62
|
+
* this runner's in-memory spec with a fresh one.
|
|
63
|
+
*
|
|
64
|
+
* Not auto-scheduled — in v1 the DP materializer refreshes the
|
|
65
|
+
* underlying access token transparently for the agent-session-backed
|
|
66
|
+
* runner. Call this only if you have an explicit reason to mint a new
|
|
67
|
+
* session (e.g. you held a runner across a very long pause).
|
|
68
|
+
*/
|
|
69
|
+
async refresh() {
|
|
70
|
+
if (this.closed) {
|
|
71
|
+
throw new RunnerExpiredError({
|
|
72
|
+
message: "Runner has been closed",
|
|
73
|
+
status: 401,
|
|
74
|
+
code: "runner_expired",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const fresh = await this.requestFreshSpec();
|
|
78
|
+
this.spec = fresh;
|
|
79
|
+
// Note: we intentionally don't swap the underlying `http` here — the
|
|
80
|
+
// constructor-time bindings stay stable for the lifetime of the Runner.
|
|
81
|
+
// Callers wanting a freshly-bound Runner should call
|
|
82
|
+
// `client.runtimes(id).run(...)` again.
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Best-effort close — flips a local `isClosed` flag so subsequent
|
|
86
|
+
* `runner.tasks` / `runner.files` calls throw a friendly error. No
|
|
87
|
+
* server-side revoke is performed; future work will route a revoke via
|
|
88
|
+
* the CP locator-token path.
|
|
89
|
+
*/
|
|
90
|
+
async close() {
|
|
91
|
+
this.closed = true;
|
|
92
|
+
}
|
|
93
|
+
// --- internals ---
|
|
94
|
+
buildHttp() {
|
|
95
|
+
const advanced = this.client.advancedOptions;
|
|
96
|
+
return new HttpClient({
|
|
97
|
+
apiUrl: this.spec.deployment.endpoint,
|
|
98
|
+
token: this.spec.session_token,
|
|
99
|
+
additionalHeaders: advanced.additionalHeaders,
|
|
100
|
+
fetch: advanced.fetch,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Wrap an HttpClient so that calls after `close()` fail with a clear
|
|
105
|
+
* `RunnerExpiredError` instead of hitting the network with a stale
|
|
106
|
+
* bearer. No 401 retry / refresh logic — that is the DP materializer's
|
|
107
|
+
* job in v1.
|
|
108
|
+
*/
|
|
109
|
+
guardedHttp(http) {
|
|
110
|
+
const proxy = Object.create(http);
|
|
111
|
+
proxy.request = async (opts) => {
|
|
112
|
+
this.assertOpen();
|
|
113
|
+
return http.request(opts);
|
|
114
|
+
};
|
|
115
|
+
proxy.stream = async (opts) => {
|
|
116
|
+
this.assertOpen();
|
|
117
|
+
return http.stream(opts);
|
|
118
|
+
};
|
|
119
|
+
return proxy;
|
|
120
|
+
}
|
|
121
|
+
assertOpen() {
|
|
122
|
+
if (this.closed) {
|
|
123
|
+
throw new RunnerExpiredError({
|
|
124
|
+
message: "Runner has been closed",
|
|
125
|
+
status: 401,
|
|
126
|
+
code: "runner_expired",
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async requestFreshSpec() {
|
|
131
|
+
const http = this.client.cpHttp;
|
|
132
|
+
const body = toRunBody(this.source.options);
|
|
133
|
+
if (this.source.kind === "runtime") {
|
|
134
|
+
return await http.request({
|
|
135
|
+
method: "POST",
|
|
136
|
+
path: `/v1/runtimes/${encodeURIComponent(this.source.id)}/run`,
|
|
137
|
+
body,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
return await http.request({
|
|
141
|
+
method: "POST",
|
|
142
|
+
path: `/v1/experiments/${encodeURIComponent(this.source.id)}/run`,
|
|
143
|
+
body,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function toRunBody(opts) {
|
|
148
|
+
if (!opts)
|
|
149
|
+
return {};
|
|
150
|
+
const out = {};
|
|
151
|
+
if (opts.identity)
|
|
152
|
+
out.identity = opts.identity;
|
|
153
|
+
if (opts.caller)
|
|
154
|
+
out.caller = opts.caller;
|
|
155
|
+
if (opts.ttl_seconds !== undefined)
|
|
156
|
+
out.ttl_seconds = opts.ttl_seconds;
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SseEvent } from "@introspection-sdk/types";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a `text/event-stream` Response into an async-iterable of SSE
|
|
4
|
+
* events. Minimal parser: handles `event:`, `data:` (multi-line),
|
|
5
|
+
* `id:`, `retry:`; ignores comments and unknown fields.
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseSse(res: Response): AsyncIterable<SseEvent>;
|
|
8
|
+
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD;;;;GAIG;AACH,wBAAuB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAiDtE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a `text/event-stream` Response into an async-iterable of SSE
|
|
3
|
+
* events. Minimal parser: handles `event:`, `data:` (multi-line),
|
|
4
|
+
* `id:`, `retry:`; ignores comments and unknown fields.
|
|
5
|
+
*/
|
|
6
|
+
export async function* parseSse(res) {
|
|
7
|
+
if (!res.body)
|
|
8
|
+
return;
|
|
9
|
+
const reader = res.body.getReader();
|
|
10
|
+
const decoder = new TextDecoder();
|
|
11
|
+
let buf = "";
|
|
12
|
+
let event = "message";
|
|
13
|
+
let data = [];
|
|
14
|
+
let id;
|
|
15
|
+
let retry;
|
|
16
|
+
const flush = () => {
|
|
17
|
+
if (data.length === 0 && event === "message" && id === undefined)
|
|
18
|
+
return null;
|
|
19
|
+
const ev = { event, data: data.join("\n") };
|
|
20
|
+
if (id !== undefined)
|
|
21
|
+
ev.id = id;
|
|
22
|
+
if (retry !== undefined)
|
|
23
|
+
ev.retry = retry;
|
|
24
|
+
event = "message";
|
|
25
|
+
data = [];
|
|
26
|
+
id = undefined;
|
|
27
|
+
retry = undefined;
|
|
28
|
+
return ev;
|
|
29
|
+
};
|
|
30
|
+
while (true) {
|
|
31
|
+
const { value, done } = await reader.read();
|
|
32
|
+
if (done)
|
|
33
|
+
break;
|
|
34
|
+
buf += decoder.decode(value, { stream: true });
|
|
35
|
+
let nl;
|
|
36
|
+
while ((nl = buf.indexOf("\n")) >= 0) {
|
|
37
|
+
const line = buf.slice(0, nl).replace(/\r$/, "");
|
|
38
|
+
buf = buf.slice(nl + 1);
|
|
39
|
+
if (line === "") {
|
|
40
|
+
const ev = flush();
|
|
41
|
+
if (ev)
|
|
42
|
+
yield ev;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (line.startsWith(":"))
|
|
46
|
+
continue;
|
|
47
|
+
const colon = line.indexOf(":");
|
|
48
|
+
const field = colon < 0 ? line : line.slice(0, colon);
|
|
49
|
+
const valueRaw = colon < 0 ? "" : line.slice(colon + 1).replace(/^ /, "");
|
|
50
|
+
if (field === "event")
|
|
51
|
+
event = valueRaw;
|
|
52
|
+
else if (field === "data")
|
|
53
|
+
data.push(valueRaw);
|
|
54
|
+
else if (field === "id")
|
|
55
|
+
id = valueRaw;
|
|
56
|
+
else if (field === "retry") {
|
|
57
|
+
const n = Number(valueRaw);
|
|
58
|
+
if (Number.isFinite(n))
|
|
59
|
+
retry = n;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const ev = flush();
|
|
64
|
+
if (ev)
|
|
65
|
+
yield ev;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"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"}
|