browser-use-sdk 1.1.0 → 1.1.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/CHANGELOG.md +4 -0
- package/README.md +20 -31
- package/internal/tslib.js +6 -6
- package/lib/parse.d.mts +2 -2
- package/lib/parse.d.mts.map +1 -1
- package/lib/parse.d.ts +2 -2
- package/lib/parse.d.ts.map +1 -1
- package/lib/parse.js +3 -3
- package/lib/parse.js.map +1 -1
- package/lib/parse.mjs +3 -3
- package/lib/parse.mjs.map +1 -1
- package/lib/stream.d.mts +6 -15
- package/lib/stream.d.mts.map +1 -1
- package/lib/stream.d.ts +6 -15
- package/lib/stream.d.ts.map +1 -1
- package/lib/stream.js +12 -54
- package/lib/stream.js.map +1 -1
- package/lib/stream.mjs +10 -53
- package/lib/stream.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/tasks.d.mts.map +1 -1
- package/resources/tasks.d.ts.map +1 -1
- package/resources/tasks.js +17 -12
- package/resources/tasks.js.map +1 -1
- package/resources/tasks.mjs +18 -13
- package/resources/tasks.mjs.map +1 -1
- package/src/lib/parse.ts +5 -5
- package/src/lib/stream.ts +13 -85
- package/src/resources/tasks.ts +18 -17
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.1.1 (2025-08-20)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.1.0...v1.1.1](https://github.com/browser-use/browser-use-node/compare/v1.1.0...v1.1.1)
|
|
6
|
+
|
|
3
7
|
## 1.1.0 (2025-08-20)
|
|
4
8
|
|
|
5
9
|
Full Changelog: [v1.0.0...v1.1.0](https://github.com/browser-use/browser-use-node/compare/v1.0.0...v1.1.0)
|
package/README.md
CHANGED
|
@@ -1,41 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
[>)](https://npmjs.org/package/browser-use-sdk) 
|
|
4
|
-
|
|
5
|
-
This library provides convenient access to the Browser Use REST API from server-side TypeScript or JavaScript.
|
|
6
|
-
|
|
7
|
-
The REST API documentation can be found on [docs.browser-use.com](https://docs.browser-use.com/cloud/). The full API of this library can be found in [api.md](api.md).
|
|
8
|
-
|
|
9
|
-
It is generated with [Stainless](https://www.stainless.com/).
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
1
|
+
<img src="./assets/cloud-banner-js.png" alt="Browser Use JS" width="full"/>
|
|
12
2
|
|
|
13
3
|
```sh
|
|
14
|
-
|
|
4
|
+
pnpm add browser-use-sdk
|
|
15
5
|
```
|
|
16
6
|
|
|
17
|
-
##
|
|
7
|
+
## QuickStart
|
|
18
8
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<!-- prettier-ignore -->
|
|
22
|
-
```js
|
|
9
|
+
```ts
|
|
23
10
|
import BrowserUse from 'browser-use-sdk';
|
|
24
11
|
|
|
25
|
-
const client = new BrowserUse(
|
|
26
|
-
apiKey: process.env['BROWSER_USE_API_KEY'], // This is the default and can be omitted
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// #1 - Run a task and get its result
|
|
12
|
+
const client = new BrowserUse();
|
|
30
13
|
|
|
31
|
-
const
|
|
14
|
+
const result = await client.tasks.run({
|
|
32
15
|
task: 'Search for the top 10 Hacker News posts and return the title and url.',
|
|
33
16
|
});
|
|
34
17
|
|
|
35
|
-
console.log(
|
|
18
|
+
console.log(result.doneOutput);
|
|
19
|
+
```
|
|
36
20
|
|
|
37
|
-
|
|
21
|
+
> The full API of this library can be found in [api.md](api.md).
|
|
38
22
|
|
|
23
|
+
### Structured Output with Zod
|
|
24
|
+
|
|
25
|
+
```ts
|
|
39
26
|
import z from 'zod';
|
|
40
27
|
|
|
41
28
|
const TaskOutput = z.object({
|
|
@@ -47,23 +34,25 @@ const TaskOutput = z.object({
|
|
|
47
34
|
),
|
|
48
35
|
});
|
|
49
36
|
|
|
50
|
-
const
|
|
37
|
+
const result = await client.tasks.run({
|
|
51
38
|
task: 'Search for the top 10 Hacker News posts and return the title and url.',
|
|
52
39
|
});
|
|
53
40
|
|
|
54
|
-
for (const post of
|
|
41
|
+
for (const post of result.parsedOutput.posts) {
|
|
55
42
|
console.log(`${post.title} - ${post.url}`);
|
|
56
43
|
}
|
|
44
|
+
```
|
|
57
45
|
|
|
58
|
-
|
|
46
|
+
### Streaming Agent Updates
|
|
59
47
|
|
|
60
|
-
|
|
48
|
+
```ts
|
|
49
|
+
const task = await browseruse.tasks.create({
|
|
61
50
|
task: 'Search for the top 10 Hacker News posts and return the title and url.',
|
|
62
51
|
schema: TaskOutput,
|
|
63
52
|
});
|
|
64
53
|
|
|
65
54
|
const stream = browseruse.tasks.stream({
|
|
66
|
-
taskId:
|
|
55
|
+
taskId: task.id,
|
|
67
56
|
schema: TaskOutput,
|
|
68
57
|
});
|
|
69
58
|
|
|
@@ -78,7 +67,7 @@ for await (const msg of stream) {
|
|
|
78
67
|
case 'finished':
|
|
79
68
|
console.log(`done:`);
|
|
80
69
|
|
|
81
|
-
for (const post of msg.
|
|
70
|
+
for (const post of msg.parsedOutput.posts) {
|
|
82
71
|
console.log(`${post.title} - ${post.url}`);
|
|
83
72
|
}
|
|
84
73
|
break;
|
package/internal/tslib.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.__setModuleDefault = exports.__createBinding = void 0;
|
|
4
4
|
exports.__importDefault = __importDefault;
|
|
5
|
+
exports.__exportStar = __exportStar;
|
|
5
6
|
exports.__importStar = __importStar;
|
|
6
7
|
exports.__classPrivateFieldSet = __classPrivateFieldSet;
|
|
7
8
|
exports.__classPrivateFieldGet = __classPrivateFieldGet;
|
|
8
|
-
exports.__exportStar = __exportStar;
|
|
9
9
|
function __importDefault(mod) {
|
|
10
10
|
return mod && mod.__esModule ? mod : { default: mod };
|
|
11
11
|
}
|
|
@@ -30,6 +30,11 @@ var __createBinding = Object.create
|
|
|
30
30
|
o[k2] = m[k];
|
|
31
31
|
};
|
|
32
32
|
exports.__createBinding = __createBinding;
|
|
33
|
+
function __exportStar(m, o) {
|
|
34
|
+
for (var p in m)
|
|
35
|
+
if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
|
|
36
|
+
__createBinding(o, m, p);
|
|
37
|
+
}
|
|
33
38
|
var __setModuleDefault = Object.create
|
|
34
39
|
? function (o, v) {
|
|
35
40
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
@@ -78,8 +83,3 @@ function __classPrivateFieldGet(receiver, state, kind, f) {
|
|
|
78
83
|
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
79
84
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
80
85
|
}
|
|
81
|
-
function __exportStar(m, o) {
|
|
82
|
-
for (var p in m)
|
|
83
|
-
if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
|
|
84
|
-
__createBinding(o, m, p);
|
|
85
|
-
}
|
package/lib/parse.d.mts
CHANGED
|
@@ -4,8 +4,8 @@ export type TaskCreateParamsWithSchema<T extends ZodType> = Omit<TaskCreateParam
|
|
|
4
4
|
schema: T;
|
|
5
5
|
};
|
|
6
6
|
export declare function stringifyStructuredOutput<T extends ZodType>(schema: T): string;
|
|
7
|
-
export type TaskViewWithSchema<T extends ZodType> =
|
|
8
|
-
|
|
7
|
+
export type TaskViewWithSchema<T extends ZodType> = TaskView & {
|
|
8
|
+
parsedOutput: z.output<T> | null;
|
|
9
9
|
};
|
|
10
10
|
export declare function parseStructuredTaskOutput<T extends ZodType>(res: TaskView, schema: T): TaskViewWithSchema<T>;
|
|
11
11
|
//# sourceMappingURL=parse.d.mts.map
|
package/lib/parse.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.mts","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":"OAAO,CAAC,EAAE,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK;OAC9B,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAI1C,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,GAAG;IAC3G,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAE9E;AAID,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"parse.d.mts","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":"OAAO,CAAC,EAAE,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK;OAC9B,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAI1C,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,GAAG;IAC3G,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAE9E;AAID,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,IAAI,QAAQ,GAAG;IAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,EACzD,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,CAAC,GACR,kBAAkB,CAAC,CAAC,CAAC,CAuBvB"}
|
package/lib/parse.d.ts
CHANGED
|
@@ -4,8 +4,8 @@ export type TaskCreateParamsWithSchema<T extends ZodType> = Omit<TaskCreateParam
|
|
|
4
4
|
schema: T;
|
|
5
5
|
};
|
|
6
6
|
export declare function stringifyStructuredOutput<T extends ZodType>(schema: T): string;
|
|
7
|
-
export type TaskViewWithSchema<T extends ZodType> =
|
|
8
|
-
|
|
7
|
+
export type TaskViewWithSchema<T extends ZodType> = TaskView & {
|
|
8
|
+
parsedOutput: z.output<T> | null;
|
|
9
9
|
};
|
|
10
10
|
export declare function parseStructuredTaskOutput<T extends ZodType>(res: TaskView, schema: T): TaskViewWithSchema<T>;
|
|
11
11
|
//# sourceMappingURL=parse.d.ts.map
|
package/lib/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":"OAAO,CAAC,EAAE,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK;OAC9B,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAI1C,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,GAAG;IAC3G,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAE9E;AAID,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":"OAAO,CAAC,EAAE,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK;OAC9B,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAI1C,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,GAAG;IAC3G,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAE9E;AAID,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,IAAI,QAAQ,GAAG;IAC7D,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,OAAO,EACzD,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,CAAC,GACR,kBAAkB,CAAC,CAAC,CAAC,CAuBvB"}
|
package/lib/parse.js
CHANGED
|
@@ -9,7 +9,7 @@ function stringifyStructuredOutput(schema) {
|
|
|
9
9
|
}
|
|
10
10
|
function parseStructuredTaskOutput(res, schema) {
|
|
11
11
|
if (res.doneOutput == null) {
|
|
12
|
-
return { ...res,
|
|
12
|
+
return { ...res, parsedOutput: null };
|
|
13
13
|
}
|
|
14
14
|
try {
|
|
15
15
|
const parsed = JSON.parse(res.doneOutput);
|
|
@@ -17,13 +17,13 @@ function parseStructuredTaskOutput(res, schema) {
|
|
|
17
17
|
if (!response.success) {
|
|
18
18
|
throw new Error(`Invalid structured output: ${response.error.message}`);
|
|
19
19
|
}
|
|
20
|
-
return { ...res,
|
|
20
|
+
return { ...res, parsedOutput: response.data };
|
|
21
21
|
}
|
|
22
22
|
catch (e) {
|
|
23
23
|
if (e instanceof SyntaxError) {
|
|
24
24
|
return {
|
|
25
25
|
...res,
|
|
26
|
-
|
|
26
|
+
parsedOutput: null,
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
throw e;
|
package/lib/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":";;AASA,8DAEC;AAQD,8DA0BC;;AA7CD,sDAAsC;AAStC,SAAgB,yBAAyB,CAAoB,MAAS;IACpE,OAAO,IAAI,CAAC,SAAS,CAAC,aAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAQD,SAAgB,yBAAyB,CACvC,GAAa,EACb,MAAS;IAET,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":";;AASA,8DAEC;AAQD,8DA0BC;;AA7CD,sDAAsC;AAStC,SAAgB,yBAAyB,CAAoB,MAAS;IACpE,OAAO,IAAI,CAAC,SAAS,CAAC,aAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAQD,SAAgB,yBAAyB,CACvC,GAAa,EACb,MAAS;IAET,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC;YAC7B,OAAO;gBACL,GAAG,GAAG;gBACN,YAAY,EAAE,IAAI;aACnB,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
package/lib/parse.mjs
CHANGED
|
@@ -4,7 +4,7 @@ export function stringifyStructuredOutput(schema) {
|
|
|
4
4
|
}
|
|
5
5
|
export function parseStructuredTaskOutput(res, schema) {
|
|
6
6
|
if (res.doneOutput == null) {
|
|
7
|
-
return { ...res,
|
|
7
|
+
return { ...res, parsedOutput: null };
|
|
8
8
|
}
|
|
9
9
|
try {
|
|
10
10
|
const parsed = JSON.parse(res.doneOutput);
|
|
@@ -12,13 +12,13 @@ export function parseStructuredTaskOutput(res, schema) {
|
|
|
12
12
|
if (!response.success) {
|
|
13
13
|
throw new Error(`Invalid structured output: ${response.error.message}`);
|
|
14
14
|
}
|
|
15
|
-
return { ...res,
|
|
15
|
+
return { ...res, parsedOutput: response.data };
|
|
16
16
|
}
|
|
17
17
|
catch (e) {
|
|
18
18
|
if (e instanceof SyntaxError) {
|
|
19
19
|
return {
|
|
20
20
|
...res,
|
|
21
|
-
|
|
21
|
+
parsedOutput: null,
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
throw e;
|
package/lib/parse.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.mjs","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":"OAAO,CAAmB,MAAM,KAAK;AASrC,MAAM,UAAU,yBAAyB,CAAoB,MAAS;IACpE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAQD,MAAM,UAAU,yBAAyB,CACvC,GAAa,EACb,MAAS;IAET,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"parse.mjs","sourceRoot":"","sources":["../src/lib/parse.ts"],"names":[],"mappings":"OAAO,CAAmB,MAAM,KAAK;AASrC,MAAM,UAAU,yBAAyB,CAAoB,MAAS;IACpE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAQD,MAAM,UAAU,yBAAyB,CACvC,GAAa,EACb,MAAS;IAET,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC;YAC7B,OAAO;gBACL,GAAG,GAAG;gBACN,YAAY,EAAE,IAAI;aACnB,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC"}
|
package/lib/stream.d.mts
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
import type { TaskView
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
steps: ReadonlyArray<TaskStepView>;
|
|
8
|
-
doneOutput: string | null;
|
|
9
|
-
}> | null;
|
|
10
|
-
type BrowserAction = {
|
|
11
|
-
kind: 'status';
|
|
12
|
-
status: TaskView;
|
|
13
|
-
};
|
|
14
|
-
export declare function reducer(state: BrowserState, action: BrowserAction): [BrowserState, ReducerEvent];
|
|
15
|
-
export {};
|
|
1
|
+
import type { TaskView } from "../resources.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Hashes the task view to detect changes.
|
|
4
|
+
* Uses fast-json-stable-stringify for deterministic JSON, then SHA-256.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getTaskViewHash(view: TaskView): string;
|
|
16
7
|
//# sourceMappingURL=stream.d.mts.map
|
package/lib/stream.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.mts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.d.mts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OAGO,KAAK,EAAE,QAAQ,EAAE;AAExB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAItD"}
|
package/lib/stream.d.ts
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
import type { TaskView
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
steps: ReadonlyArray<TaskStepView>;
|
|
8
|
-
doneOutput: string | null;
|
|
9
|
-
}> | null;
|
|
10
|
-
type BrowserAction = {
|
|
11
|
-
kind: 'status';
|
|
12
|
-
status: TaskView;
|
|
13
|
-
};
|
|
14
|
-
export declare function reducer(state: BrowserState, action: BrowserAction): [BrowserState, ReducerEvent];
|
|
15
|
-
export {};
|
|
1
|
+
import type { TaskView } from "../resources.js";
|
|
2
|
+
/**
|
|
3
|
+
* Hashes the task view to detect changes.
|
|
4
|
+
* Uses fast-json-stable-stringify for deterministic JSON, then SHA-256.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getTaskViewHash(view: TaskView): string;
|
|
16
7
|
//# sourceMappingURL=stream.d.ts.map
|
package/lib/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OAGO,KAAK,EAAE,QAAQ,EAAE;AAExB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAItD"}
|
package/lib/stream.js
CHANGED
|
@@ -1,58 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
liveUrl: liveUrl,
|
|
16
|
-
steps: action.status.steps,
|
|
17
|
-
doneOutput: doneOutput,
|
|
18
|
-
};
|
|
19
|
-
return [state, action.status];
|
|
20
|
-
}
|
|
21
|
-
// UPDATE
|
|
22
|
-
const liveUrl = action.status.session.liveUrl ?? state.liveUrl;
|
|
23
|
-
const doneOutput = action.status.doneOutput ?? state.doneOutput;
|
|
24
|
-
const steps = [...state.steps];
|
|
25
|
-
if (action.status.steps != null) {
|
|
26
|
-
const newSteps = action.status.steps.slice(state.steps.length);
|
|
27
|
-
for (const step of newSteps) {
|
|
28
|
-
steps.push(step);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const newState = {
|
|
32
|
-
...state,
|
|
33
|
-
liveUrl,
|
|
34
|
-
steps,
|
|
35
|
-
doneOutput,
|
|
36
|
-
};
|
|
37
|
-
// CHANGES
|
|
38
|
-
if ((state.liveUrl == null && liveUrl != null) ||
|
|
39
|
-
state.steps.length !== steps.length ||
|
|
40
|
-
state.doneOutput != doneOutput) {
|
|
41
|
-
const update = {
|
|
42
|
-
...action.status,
|
|
43
|
-
steps: newState.steps,
|
|
44
|
-
session: {
|
|
45
|
-
...action.status.session,
|
|
46
|
-
liveUrl: newState.liveUrl,
|
|
47
|
-
},
|
|
48
|
-
doneOutput: newState.doneOutput,
|
|
49
|
-
};
|
|
50
|
-
return [newState, update];
|
|
51
|
-
}
|
|
52
|
-
return [newState, null];
|
|
53
|
-
}
|
|
54
|
-
default:
|
|
55
|
-
throw new types_1.ExhaustiveSwitchCheck(action.kind);
|
|
56
|
-
}
|
|
3
|
+
exports.getTaskViewHash = getTaskViewHash;
|
|
4
|
+
const tslib_1 = require("../internal/tslib.js");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const fast_json_stable_stringify_1 = tslib_1.__importDefault(require("fast-json-stable-stringify"));
|
|
7
|
+
/**
|
|
8
|
+
* Hashes the task view to detect changes.
|
|
9
|
+
* Uses fast-json-stable-stringify for deterministic JSON, then SHA-256.
|
|
10
|
+
*/
|
|
11
|
+
function getTaskViewHash(view) {
|
|
12
|
+
const dump = (0, fast_json_stable_stringify_1.default)(view);
|
|
13
|
+
const hash = (0, crypto_1.createHash)('sha256').update(dump).digest('hex');
|
|
14
|
+
return hash;
|
|
57
15
|
}
|
|
58
16
|
//# sourceMappingURL=stream.js.map
|
package/lib/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":";;AASA,0CAIC;;AAbD,mCAAoC;AACpC,oGAAmD;AAInD;;;GAGG;AACH,SAAgB,eAAe,CAAC,IAAc;IAC5C,MAAM,IAAI,GAAG,IAAA,oCAAS,EAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/lib/stream.mjs
CHANGED
|
@@ -1,55 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
sessionId: action.status.sessionId,
|
|
12
|
-
liveUrl: liveUrl,
|
|
13
|
-
steps: action.status.steps,
|
|
14
|
-
doneOutput: doneOutput,
|
|
15
|
-
};
|
|
16
|
-
return [state, action.status];
|
|
17
|
-
}
|
|
18
|
-
// UPDATE
|
|
19
|
-
const liveUrl = action.status.session.liveUrl ?? state.liveUrl;
|
|
20
|
-
const doneOutput = action.status.doneOutput ?? state.doneOutput;
|
|
21
|
-
const steps = [...state.steps];
|
|
22
|
-
if (action.status.steps != null) {
|
|
23
|
-
const newSteps = action.status.steps.slice(state.steps.length);
|
|
24
|
-
for (const step of newSteps) {
|
|
25
|
-
steps.push(step);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
const newState = {
|
|
29
|
-
...state,
|
|
30
|
-
liveUrl,
|
|
31
|
-
steps,
|
|
32
|
-
doneOutput,
|
|
33
|
-
};
|
|
34
|
-
// CHANGES
|
|
35
|
-
if ((state.liveUrl == null && liveUrl != null) ||
|
|
36
|
-
state.steps.length !== steps.length ||
|
|
37
|
-
state.doneOutput != doneOutput) {
|
|
38
|
-
const update = {
|
|
39
|
-
...action.status,
|
|
40
|
-
steps: newState.steps,
|
|
41
|
-
session: {
|
|
42
|
-
...action.status.session,
|
|
43
|
-
liveUrl: newState.liveUrl,
|
|
44
|
-
},
|
|
45
|
-
doneOutput: newState.doneOutput,
|
|
46
|
-
};
|
|
47
|
-
return [newState, update];
|
|
48
|
-
}
|
|
49
|
-
return [newState, null];
|
|
50
|
-
}
|
|
51
|
-
default:
|
|
52
|
-
throw new ExhaustiveSwitchCheck(action.kind);
|
|
53
|
-
}
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
import stringify from 'fast-json-stable-stringify';
|
|
3
|
+
/**
|
|
4
|
+
* Hashes the task view to detect changes.
|
|
5
|
+
* Uses fast-json-stable-stringify for deterministic JSON, then SHA-256.
|
|
6
|
+
*/
|
|
7
|
+
export function getTaskViewHash(view) {
|
|
8
|
+
const dump = stringify(view);
|
|
9
|
+
const hash = createHash('sha256').update(dump).digest('hex');
|
|
10
|
+
return hash;
|
|
54
11
|
}
|
|
55
12
|
//# sourceMappingURL=stream.mjs.map
|
package/lib/stream.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.mjs","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.mjs","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ;OAC5B,SAAS,MAAM,4BAA4B;AAIlD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.mts","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK;OAE3B,EAAE,UAAU,EAAE;OACd,EAAE,WAAW,EAAE;OACf,EAAE,cAAc,EAAE;OAElB,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB;AAID,qBAAa,KAAM,SAAQ,WAAW;IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,MAAM,CAAC,CAAC,SAAS,OAAO,EACtB,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,kBAAkB,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAmBxF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxB,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,EAClC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;YAazD,KAAK;
|
|
1
|
+
{"version":3,"file":"tasks.d.mts","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":"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"}
|
package/resources/tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK;OAE3B,EAAE,UAAU,EAAE;OACd,EAAE,WAAW,EAAE;OACf,EAAE,cAAc,EAAE;OAElB,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB;AAID,qBAAa,KAAM,SAAQ,WAAW;IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,MAAM,CAAC,CAAC,SAAS,OAAO,EACtB,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,kBAAkB,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAmBxF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxB,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,EAClC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;YAazD,KAAK;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK;OAE3B,EAAE,UAAU,EAAE;OACd,EAAE,WAAW,EAAE;OACf,EAAE,cAAc,EAAE;OAElB,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACxB;AAID,qBAAa,KAAM,SAAQ,WAAW;IACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,MAAM,CAAC,CAAC,SAAS,OAAO,EACtB,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,kBAAkB,CAAC;IACjC,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAmBxF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxB,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,EAClC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;YAazD,KAAK;IAoCpB,MAAM,CAAC,CAAC,SAAS,OAAO,EACtB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,CAAC,CAAC;KACX,EACD,OAAO,CAAC,EAAE,cAAc,GACvB,cAAc,CAAC;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IACnE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IAqBrG;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,OAAO,EACnB,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;IAgC3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC;IAI9F;;;;;;;;;;;;;OAaG;IACH,IAAI,CACF,KAAK,GAAE,cAAc,GAAG,IAAI,GAAG,SAAc,EAC7C,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,gBAAgB,CAAC;IAI/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,mBAAmB,CAAC;IAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,yBAAyB,CAAC;IAKxC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,6BAA6B,EACrC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,+BAA+B,CAAC;CAI/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW,EAAE,OAAO,CAAC;IAErB,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;OAOG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC;IAEb,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3B,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEvE;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEvB,sBAAsB,EAAE,MAAM,CAAC;IAE/B,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,GAAG,EAAE,MAAM,CAAC;IAEZ,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW,EAAE,OAAO,CAAC;IAErB,GAAG,EAAE,MAAM,CAAC;IAEZ,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;IAE1B,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;OAOG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAE3B,IAAI,EAAE,MAAM,CAAC;IAEb,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEnC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3B,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACvC;AAED,yBAAiB,QAAQ,CAAC;IACxB;;;;;;;OAOG;IACH,UAAiB,OAAO;QACtB,EAAE,EAAE,MAAM,CAAC;QAEX,SAAS,EAAE,MAAM,CAAC;QAElB;;;;;WAKG;QACH,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;QAE7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAE3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB;CACF;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IAEX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAE3B,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,+BAA+B;IAC9C,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAE/C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC;IAEnD,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAEzC,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE5C,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE3C,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,yBAAiB,gBAAgB,CAAC;IAChC;;;;;;OAMG;IACH,UAAiB,aAAa;QAC5B,GAAG,CAAC,EACA,SAAS,GACT,cAAc,GACd,SAAS,GACT,IAAI,GACJ,kBAAkB,GAClB,gBAAgB,GAChB,0BAA0B,GAC1B,QAAQ,GACR,aAAa,GACb,oCAAoC,GACpC,4BAA4B,CAAC;QAEjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAE1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B;IAED;;;;;;OAMG;IACH,UAAiB,eAAe;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAE1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B;CACF;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,uBAAuB,CAAC;CAC/D;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAE7B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,OAAO,EACL,KAAK,QAAQ,IAAI,QAAQ,EACzB,KAAK,YAAY,IAAI,YAAY,EACjC,KAAK,UAAU,IAAI,UAAU,EAC7B,KAAK,YAAY,IAAI,YAAY,EACjC,KAAK,QAAQ,IAAI,QAAQ,EACzB,KAAK,kBAAkB,IAAI,kBAAkB,EAC7C,KAAK,gBAAgB,IAAI,gBAAgB,EACzC,KAAK,mBAAmB,IAAI,mBAAmB,EAC/C,KAAK,yBAAyB,IAAI,yBAAyB,EAC3D,KAAK,+BAA+B,IAAI,+BAA+B,EACvE,KAAK,gBAAgB,IAAI,gBAAgB,EACzC,KAAK,gBAAgB,IAAI,gBAAgB,EACzC,KAAK,cAAc,IAAI,cAAc,EACrC,KAAK,uBAAuB,IAAI,uBAAuB,EACvD,KAAK,6BAA6B,IAAI,6BAA6B,GACpE,CAAC;CACH"}
|
package/resources/tasks.js
CHANGED
|
@@ -6,6 +6,7 @@ const resource_1 = require("../core/resource.js");
|
|
|
6
6
|
const path_1 = require("../internal/utils/path.js");
|
|
7
7
|
const parse_1 = require("../lib/parse.js");
|
|
8
8
|
const stream_1 = require("../lib/stream.js");
|
|
9
|
+
const types_1 = require("../lib/types.js");
|
|
9
10
|
class Tasks extends resource_1.APIResource {
|
|
10
11
|
create(body, options) {
|
|
11
12
|
if ('schema' in body && body.schema != null && typeof body.schema === 'object') {
|
|
@@ -28,27 +29,31 @@ class Tasks extends resource_1.APIResource {
|
|
|
28
29
|
._thenUnwrap((rsp) => (0, parse_1.parseStructuredTaskOutput)(rsp, schema));
|
|
29
30
|
}
|
|
30
31
|
async *watch(taskId, config, options) {
|
|
31
|
-
const
|
|
32
|
-
const state = { current: null };
|
|
32
|
+
const hash = { current: null };
|
|
33
33
|
poll: do {
|
|
34
34
|
if (options?.signal?.aborted) {
|
|
35
35
|
break poll;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
yield { event: 'status', data:
|
|
42
|
-
|
|
37
|
+
const res = await this.retrieve(taskId);
|
|
38
|
+
const resHash = (0, stream_1.getTaskViewHash)(res);
|
|
39
|
+
if (hash.current == null || resHash !== hash.current) {
|
|
40
|
+
hash.current = resHash;
|
|
41
|
+
yield { event: 'status', data: res };
|
|
42
|
+
}
|
|
43
|
+
switch (res.status) {
|
|
44
|
+
case 'finished':
|
|
45
|
+
case 'stopped':
|
|
46
|
+
case 'paused':
|
|
47
|
+
break poll;
|
|
48
|
+
case 'started':
|
|
49
|
+
await new Promise((resolve) => setTimeout(resolve, config.interval));
|
|
43
50
|
break;
|
|
44
|
-
|
|
51
|
+
default:
|
|
52
|
+
throw new types_1.ExhaustiveSwitchCheck(res.status);
|
|
45
53
|
}
|
|
46
|
-
state.current = newState;
|
|
47
|
-
await new Promise((resolve) => setTimeout(resolve, config.interval));
|
|
48
54
|
} while (true);
|
|
49
55
|
}
|
|
50
56
|
async *stream(body, options) {
|
|
51
|
-
let req;
|
|
52
57
|
const taskId = typeof body === 'object' ? body.taskId : body;
|
|
53
58
|
for await (const msg of this.watch(taskId, { interval: 500 }, options)) {
|
|
54
59
|
if (options?.signal?.aborted) {
|
package/resources/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAKtF,kDAA+C;AAE/C,oDAA8C;AAC9C,2CAKsB;AACtB,
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":"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"}
|
package/resources/tasks.mjs
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { APIResource } from "../core/resource.mjs";
|
|
3
3
|
import { path } from "../internal/utils/path.mjs";
|
|
4
4
|
import { parseStructuredTaskOutput, stringifyStructuredOutput, } from "../lib/parse.mjs";
|
|
5
|
-
import {
|
|
5
|
+
import { getTaskViewHash } from "../lib/stream.mjs";
|
|
6
|
+
import { ExhaustiveSwitchCheck } from "../lib/types.mjs";
|
|
6
7
|
export class Tasks extends APIResource {
|
|
7
8
|
create(body, options) {
|
|
8
9
|
if ('schema' in body && body.schema != null && typeof body.schema === 'object') {
|
|
@@ -25,27 +26,31 @@ export class Tasks extends APIResource {
|
|
|
25
26
|
._thenUnwrap((rsp) => parseStructuredTaskOutput(rsp, schema));
|
|
26
27
|
}
|
|
27
28
|
async *watch(taskId, config, options) {
|
|
28
|
-
const
|
|
29
|
-
const state = { current: null };
|
|
29
|
+
const hash = { current: null };
|
|
30
30
|
poll: do {
|
|
31
31
|
if (options?.signal?.aborted) {
|
|
32
32
|
break poll;
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
yield { event: 'status', data:
|
|
39
|
-
|
|
34
|
+
const res = await this.retrieve(taskId);
|
|
35
|
+
const resHash = getTaskViewHash(res);
|
|
36
|
+
if (hash.current == null || resHash !== hash.current) {
|
|
37
|
+
hash.current = resHash;
|
|
38
|
+
yield { event: 'status', data: res };
|
|
39
|
+
}
|
|
40
|
+
switch (res.status) {
|
|
41
|
+
case 'finished':
|
|
42
|
+
case 'stopped':
|
|
43
|
+
case 'paused':
|
|
44
|
+
break poll;
|
|
45
|
+
case 'started':
|
|
46
|
+
await new Promise((resolve) => setTimeout(resolve, config.interval));
|
|
40
47
|
break;
|
|
41
|
-
|
|
48
|
+
default:
|
|
49
|
+
throw new ExhaustiveSwitchCheck(res.status);
|
|
42
50
|
}
|
|
43
|
-
state.current = newState;
|
|
44
|
-
await new Promise((resolve) => setTimeout(resolve, config.interval));
|
|
45
51
|
} while (true);
|
|
46
52
|
}
|
|
47
53
|
async *stream(body, options) {
|
|
48
|
-
let req;
|
|
49
54
|
const taskId = typeof body === 'object' ? body.taskId : body;
|
|
50
55
|
for await (const msg of this.watch(taskId, { interval: 500 }, options)) {
|
|
51
56
|
if (options?.signal?.aborted) {
|
package/resources/tasks.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.mjs","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAK/E,EAAE,WAAW,EAAE;OAEf,EAAE,IAAI,EAAE;OACR,EACL,yBAAyB,EACzB,yBAAyB,GAG1B;OACM,
|
|
1
|
+
{"version":3,"file":"tasks.mjs","sourceRoot":"","sources":["../src/resources/tasks.ts"],"names":[],"mappings":"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"}
|
package/src/lib/parse.ts
CHANGED
|
@@ -13,8 +13,8 @@ export function stringifyStructuredOutput<T extends ZodType>(schema: T): string
|
|
|
13
13
|
|
|
14
14
|
// RETRIEVE
|
|
15
15
|
|
|
16
|
-
export type TaskViewWithSchema<T extends ZodType> =
|
|
17
|
-
|
|
16
|
+
export type TaskViewWithSchema<T extends ZodType> = TaskView & {
|
|
17
|
+
parsedOutput: z.output<T> | null;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
export function parseStructuredTaskOutput<T extends ZodType>(
|
|
@@ -22,7 +22,7 @@ export function parseStructuredTaskOutput<T extends ZodType>(
|
|
|
22
22
|
schema: T,
|
|
23
23
|
): TaskViewWithSchema<T> {
|
|
24
24
|
if (res.doneOutput == null) {
|
|
25
|
-
return { ...res,
|
|
25
|
+
return { ...res, parsedOutput: null };
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
try {
|
|
@@ -33,12 +33,12 @@ export function parseStructuredTaskOutput<T extends ZodType>(
|
|
|
33
33
|
throw new Error(`Invalid structured output: ${response.error.message}`);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
return { ...res,
|
|
36
|
+
return { ...res, parsedOutput: response.data };
|
|
37
37
|
} catch (e) {
|
|
38
38
|
if (e instanceof SyntaxError) {
|
|
39
39
|
return {
|
|
40
40
|
...res,
|
|
41
|
-
|
|
41
|
+
parsedOutput: null,
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
throw e;
|
package/src/lib/stream.ts
CHANGED
|
@@ -1,86 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
type BrowserAction = {
|
|
16
|
-
kind: 'status';
|
|
17
|
-
status: TaskView;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export function reducer(state: BrowserState, action: BrowserAction): [BrowserState, ReducerEvent] {
|
|
21
|
-
switch (action.kind) {
|
|
22
|
-
case 'status': {
|
|
23
|
-
// INIT
|
|
24
|
-
|
|
25
|
-
if (state == null) {
|
|
26
|
-
const liveUrl = action.status.session.liveUrl ?? null;
|
|
27
|
-
const doneOutput = action.status.doneOutput ?? null;
|
|
28
|
-
|
|
29
|
-
const state: BrowserState = {
|
|
30
|
-
taskId: action.status.id,
|
|
31
|
-
sessionId: action.status.sessionId,
|
|
32
|
-
liveUrl: liveUrl,
|
|
33
|
-
steps: action.status.steps,
|
|
34
|
-
doneOutput: doneOutput,
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
return [state, action.status];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// UPDATE
|
|
41
|
-
|
|
42
|
-
const liveUrl = action.status.session.liveUrl ?? state.liveUrl;
|
|
43
|
-
const doneOutput = action.status.doneOutput ?? state.doneOutput;
|
|
44
|
-
|
|
45
|
-
const steps: TaskStepView[] = [...state.steps];
|
|
46
|
-
if (action.status.steps != null) {
|
|
47
|
-
const newSteps = action.status.steps.slice(state.steps.length);
|
|
48
|
-
|
|
49
|
-
for (const step of newSteps) {
|
|
50
|
-
steps.push(step);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const newState: DeepMutable<BrowserState> = {
|
|
55
|
-
...state,
|
|
56
|
-
liveUrl,
|
|
57
|
-
steps,
|
|
58
|
-
doneOutput,
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// CHANGES
|
|
62
|
-
|
|
63
|
-
if (
|
|
64
|
-
(state.liveUrl == null && liveUrl != null) ||
|
|
65
|
-
state.steps.length !== steps.length ||
|
|
66
|
-
state.doneOutput != doneOutput
|
|
67
|
-
) {
|
|
68
|
-
const update: ReducerEvent = {
|
|
69
|
-
...action.status,
|
|
70
|
-
steps: newState.steps,
|
|
71
|
-
session: {
|
|
72
|
-
...action.status.session,
|
|
73
|
-
liveUrl: newState.liveUrl,
|
|
74
|
-
},
|
|
75
|
-
doneOutput: newState.doneOutput,
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
return [newState, update];
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return [newState, null];
|
|
82
|
-
}
|
|
83
|
-
default:
|
|
84
|
-
throw new ExhaustiveSwitchCheck(action.kind);
|
|
85
|
-
}
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
import stringify from 'fast-json-stable-stringify';
|
|
3
|
+
|
|
4
|
+
import type { TaskView } from '../resources';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Hashes the task view to detect changes.
|
|
8
|
+
* Uses fast-json-stable-stringify for deterministic JSON, then SHA-256.
|
|
9
|
+
*/
|
|
10
|
+
export function getTaskViewHash(view: TaskView): string {
|
|
11
|
+
const dump = stringify(view);
|
|
12
|
+
const hash = createHash('sha256').update(dump).digest('hex');
|
|
13
|
+
return hash;
|
|
86
14
|
}
|
package/src/resources/tasks.ts
CHANGED
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
type TaskCreateParamsWithSchema,
|
|
13
13
|
type TaskViewWithSchema,
|
|
14
14
|
} from '../lib/parse';
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
15
|
+
import { getTaskViewHash } from '../lib/stream';
|
|
16
|
+
import { ExhaustiveSwitchCheck } from '../lib/types';
|
|
17
17
|
|
|
18
18
|
export class Tasks extends APIResource {
|
|
19
19
|
/**
|
|
@@ -132,31 +132,34 @@ export class Tasks extends APIResource {
|
|
|
132
132
|
config: { interval: number },
|
|
133
133
|
options?: RequestOptions,
|
|
134
134
|
): AsyncGenerator<{ event: 'status'; data: TaskView }> {
|
|
135
|
-
const
|
|
136
|
-
const state: { current: BrowserState } = { current: null };
|
|
135
|
+
const hash: { current: string | null } = { current: null };
|
|
137
136
|
|
|
138
137
|
poll: do {
|
|
139
138
|
if (options?.signal?.aborted) {
|
|
140
139
|
break poll;
|
|
141
140
|
}
|
|
142
141
|
|
|
143
|
-
|
|
142
|
+
const res = await this.retrieve(taskId);
|
|
144
143
|
|
|
145
|
-
const
|
|
144
|
+
const resHash = getTaskViewHash(res);
|
|
146
145
|
|
|
147
|
-
|
|
146
|
+
if (hash.current == null || resHash !== hash.current) {
|
|
147
|
+
hash.current = resHash;
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
yield { event: 'status', data: res };
|
|
150
|
+
}
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
switch (res.status) {
|
|
153
|
+
case 'finished':
|
|
154
|
+
case 'stopped':
|
|
155
|
+
case 'paused':
|
|
156
|
+
break poll;
|
|
157
|
+
case 'started':
|
|
158
|
+
await new Promise((resolve) => setTimeout(resolve, config.interval));
|
|
153
159
|
break;
|
|
154
|
-
|
|
160
|
+
default:
|
|
161
|
+
throw new ExhaustiveSwitchCheck(res.status);
|
|
155
162
|
}
|
|
156
|
-
|
|
157
|
-
state.current = newState;
|
|
158
|
-
|
|
159
|
-
await new Promise((resolve) => setTimeout(resolve, config.interval));
|
|
160
163
|
} while (true);
|
|
161
164
|
}
|
|
162
165
|
|
|
@@ -172,8 +175,6 @@ export class Tasks extends APIResource {
|
|
|
172
175
|
body: string | { taskId: string; schema: ZodType },
|
|
173
176
|
options?: RequestOptions,
|
|
174
177
|
): AsyncGenerator<unknown> {
|
|
175
|
-
let req: TaskCreateParams;
|
|
176
|
-
|
|
177
178
|
const taskId = typeof body === 'object' ? body.taskId : body;
|
|
178
179
|
|
|
179
180
|
for await (const msg of this.watch(taskId, { interval: 500 }, options)) {
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '1.1.
|
|
1
|
+
export const VERSION = '1.1.1'; // x-release-please-version
|
package/version.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.1.
|
|
1
|
+
export declare const VERSION = "1.1.1";
|
|
2
2
|
//# sourceMappingURL=version.d.mts.map
|
package/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.1.
|
|
1
|
+
export declare const VERSION = "1.1.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/version.js
CHANGED
package/version.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '1.1.
|
|
1
|
+
export const VERSION = '1.1.1'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.mjs.map
|