browser-use-sdk 0.2.2 → 0.4.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.
Files changed (97) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/client.d.mts +4 -4
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +4 -4
  5. package/client.d.ts.map +1 -1
  6. package/client.js.map +1 -1
  7. package/client.mjs.map +1 -1
  8. package/internal/detect-platform.js +1 -1
  9. package/internal/detect-platform.js.map +1 -1
  10. package/internal/detect-platform.mjs +1 -1
  11. package/internal/detect-platform.mjs.map +1 -1
  12. package/lib/bin/auth.d.mts +10 -0
  13. package/lib/bin/auth.d.mts.map +1 -0
  14. package/lib/bin/auth.d.ts +10 -0
  15. package/lib/bin/auth.d.ts.map +1 -0
  16. package/lib/bin/auth.js +52 -0
  17. package/lib/bin/auth.js.map +1 -0
  18. package/lib/bin/auth.mjs +47 -0
  19. package/lib/bin/auth.mjs.map +1 -0
  20. package/lib/bin/cli.d.mts +3 -0
  21. package/lib/bin/cli.d.mts.map +1 -0
  22. package/lib/bin/cli.d.ts +3 -0
  23. package/lib/bin/cli.d.ts.map +1 -0
  24. package/lib/bin/cli.js +12 -0
  25. package/lib/bin/cli.js.map +1 -0
  26. package/lib/bin/cli.mjs +10 -0
  27. package/lib/bin/cli.mjs.map +1 -0
  28. package/lib/bin/commands/listen.d.mts +3 -0
  29. package/lib/bin/commands/listen.d.mts.map +1 -0
  30. package/lib/bin/commands/listen.d.ts +3 -0
  31. package/lib/bin/commands/listen.d.ts.map +1 -0
  32. package/lib/bin/commands/listen.js +120 -0
  33. package/lib/bin/commands/listen.js.map +1 -0
  34. package/lib/bin/commands/listen.mjs +117 -0
  35. package/lib/bin/commands/listen.mjs.map +1 -0
  36. package/lib/stream.d.mts.map +1 -1
  37. package/lib/stream.d.ts.map +1 -1
  38. package/lib/stream.js +6 -3
  39. package/lib/stream.js.map +1 -1
  40. package/lib/stream.mjs +6 -3
  41. package/lib/stream.mjs.map +1 -1
  42. package/lib/webhooks.d.mts +73 -0
  43. package/lib/webhooks.d.mts.map +1 -0
  44. package/lib/webhooks.d.ts +73 -0
  45. package/lib/webhooks.d.ts.map +1 -0
  46. package/lib/webhooks.js +84 -0
  47. package/lib/webhooks.js.map +1 -0
  48. package/lib/webhooks.mjs +78 -0
  49. package/lib/webhooks.mjs.map +1 -0
  50. package/package.json +9 -2
  51. package/resources/index.d.mts +2 -2
  52. package/resources/index.d.mts.map +1 -1
  53. package/resources/index.d.ts +2 -2
  54. package/resources/index.d.ts.map +1 -1
  55. package/resources/index.js.map +1 -1
  56. package/resources/index.mjs.map +1 -1
  57. package/resources/sessions/index.d.mts +1 -1
  58. package/resources/sessions/index.d.mts.map +1 -1
  59. package/resources/sessions/index.d.ts +1 -1
  60. package/resources/sessions/index.d.ts.map +1 -1
  61. package/resources/sessions/index.js.map +1 -1
  62. package/resources/sessions/index.mjs.map +1 -1
  63. package/resources/sessions/sessions.d.mts +2 -8
  64. package/resources/sessions/sessions.d.mts.map +1 -1
  65. package/resources/sessions/sessions.d.ts +2 -8
  66. package/resources/sessions/sessions.d.ts.map +1 -1
  67. package/resources/sessions/sessions.js +2 -2
  68. package/resources/sessions/sessions.js.map +1 -1
  69. package/resources/sessions/sessions.mjs +2 -2
  70. package/resources/sessions/sessions.mjs.map +1 -1
  71. package/resources/tasks.d.mts +83 -40
  72. package/resources/tasks.d.mts.map +1 -1
  73. package/resources/tasks.d.ts +83 -40
  74. package/resources/tasks.d.ts.map +1 -1
  75. package/resources/tasks.js +17 -39
  76. package/resources/tasks.js.map +1 -1
  77. package/resources/tasks.mjs +17 -39
  78. package/resources/tasks.mjs.map +1 -1
  79. package/resources/users/me/files.d.mts +1 -1
  80. package/resources/users/me/files.d.ts +1 -1
  81. package/src/client.ts +4 -2
  82. package/src/internal/detect-platform.ts +1 -1
  83. package/src/lib/bin/auth.ts +63 -0
  84. package/src/lib/bin/cli.ts +11 -0
  85. package/src/lib/bin/commands/listen.ts +158 -0
  86. package/src/lib/stream.ts +6 -3
  87. package/src/lib/webhooks.ts +118 -0
  88. package/src/resources/index.ts +1 -1
  89. package/src/resources/sessions/index.ts +0 -1
  90. package/src/resources/sessions/sessions.ts +2 -16
  91. package/src/resources/tasks.ts +140 -119
  92. package/src/resources/users/me/files.ts +1 -1
  93. package/src/version.ts +1 -1
  94. package/version.d.mts +1 -1
  95. package/version.d.ts +1 -1
  96. package/version.js +1 -1
  97. package/version.mjs +1 -1
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listen = void 0;
4
+ const commander_1 = require("commander");
5
+ const webhooks_1 = require("../../webhooks.js");
6
+ const auth_1 = require("../auth.js");
7
+ // NOTE: We perform task list refresh to get all running tasks and then
8
+ const tickRef = { timeout: null, abort: null };
9
+ exports.listen = new commander_1.Command('listen')
10
+ .description(`Open a local webhook to receive Cloud API updates from the CLI on your local machine.`)
11
+ .option('-d, --dev <endpoint>', 'The endpoint to forward updates to.')
12
+ .action(async (options) => {
13
+ // Auth
14
+ const client = (0, auth_1.createBrowserUseClient)();
15
+ const secret = (0, auth_1.getBrowserUseWebhookSecret)();
16
+ // Proxy
17
+ const { dev: localTargetEndpoint } = options;
18
+ if (typeof localTargetEndpoint !== 'string') {
19
+ // NOTE: This should never happen because the command is validated by commander.
20
+ throw new Error('Something unexpected happened. Please report this issue. https://github.com/browser-use/browser-use-node/issues');
21
+ }
22
+ const localTargetURL = new URL(localTargetEndpoint);
23
+ //
24
+ const queue = { current: [] };
25
+ const runs = new Map();
26
+ tickRef.timeout = setInterval(async () => {
27
+ // NOTE: On next tick, we abort the current abort controller.
28
+ if (tickRef.abort != null) {
29
+ tickRef.abort.abort();
30
+ }
31
+ const controller = new AbortController();
32
+ tickRef.abort = controller;
33
+ console.log(`[polling] ${new Date().toISOString()} `.padEnd(100, '='));
34
+ const tasks = await client.tasks
35
+ .list({ pageSize: 10 }, {
36
+ signal: tickRef.abort.signal,
37
+ })
38
+ .then((res) => res.items)
39
+ .catch((_) => []);
40
+ for (const task of tasks) {
41
+ const currentTaskStatus = runs.get(task.id);
42
+ const timestamp = task.finishedAt ? task.finishedAt : task.startedAt;
43
+ if (currentTaskStatus == null) {
44
+ // NOTE: The task is new and the CLI hasn't yet captured it in the current run.
45
+ queue.current.push({
46
+ type: 'agent.task.status_update',
47
+ timestamp,
48
+ payload: {
49
+ session_id: task.sessionId,
50
+ task_id: task.id,
51
+ status: task.status,
52
+ metadata: task.metadata,
53
+ },
54
+ });
55
+ runs.set(task.id, task.status);
56
+ continue;
57
+ }
58
+ else {
59
+ // NOTE: CLI has registered the task in the registry and we need to compare.
60
+ if (task.status !== currentTaskStatus) {
61
+ queue.current.push({
62
+ type: 'agent.task.status_update',
63
+ timestamp,
64
+ payload: {
65
+ session_id: task.sessionId,
66
+ task_id: task.id,
67
+ status: task.status,
68
+ metadata: task.metadata,
69
+ },
70
+ });
71
+ runs.set(task.id, task.status);
72
+ continue;
73
+ }
74
+ }
75
+ }
76
+ if (queue.current.length === 0) {
77
+ return;
78
+ }
79
+ const promises = queue.current.map(async (update) => {
80
+ const body = JSON.stringify(update);
81
+ const signature = (0, webhooks_1.createWebhookSignature)({
82
+ payload: update.payload,
83
+ timestamp: update.timestamp,
84
+ secret,
85
+ });
86
+ try {
87
+ const res = await fetch(localTargetURL, {
88
+ method: 'POST',
89
+ body,
90
+ headers: {
91
+ 'Content-Type': 'application/json',
92
+ // https://docs.browser-use.com/cloud/webhooks#implementing-webhook-verification
93
+ 'X-Browser-Use-Timestamp': update.timestamp,
94
+ 'X-Browser-Use-Signature': signature,
95
+ },
96
+ signal: controller.signal,
97
+ });
98
+ console.log(`[update] ${update.timestamp} ${update.type} ${res.status}`);
99
+ return { delivery: 'fulfilled', update, status: res.status };
100
+ }
101
+ catch (err) {
102
+ console.log(`[update] ${update.timestamp} ${update.type} failed`);
103
+ return { delivery: 'rejected', update, error: err };
104
+ }
105
+ });
106
+ const delivery = await Promise.all(promises);
107
+ // NOTE: We preserve the rejected updates so we can retry them.
108
+ queue.current = delivery.filter((d) => d.delivery === 'rejected').map((d) => d.update);
109
+ }, 1000);
110
+ console.log(`Listening in dev mode at: ${localTargetEndpoint}`);
111
+ });
112
+ process.on('SIGINT', () => {
113
+ if (tickRef.abort != null) {
114
+ tickRef.abort.abort();
115
+ }
116
+ if (tickRef.timeout) {
117
+ clearInterval(tickRef.timeout);
118
+ }
119
+ });
120
+ //# sourceMappingURL=listen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen.js","sourceRoot":"","sources":["../../../src/lib/bin/commands/listen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { Command } from 'commander';
2
+ import { createWebhookSignature } from "../../webhooks.mjs";
3
+ import { createBrowserUseClient, getBrowserUseWebhookSecret } from "../auth.mjs";
4
+ // NOTE: We perform task list refresh to get all running tasks and then
5
+ const tickRef = { timeout: null, abort: null };
6
+ export const listen = new Command('listen')
7
+ .description(`Open a local webhook to receive Cloud API updates from the CLI on your local machine.`)
8
+ .option('-d, --dev <endpoint>', 'The endpoint to forward updates to.')
9
+ .action(async (options) => {
10
+ // Auth
11
+ const client = createBrowserUseClient();
12
+ const secret = getBrowserUseWebhookSecret();
13
+ // Proxy
14
+ const { dev: localTargetEndpoint } = options;
15
+ if (typeof localTargetEndpoint !== 'string') {
16
+ // NOTE: This should never happen because the command is validated by commander.
17
+ throw new Error('Something unexpected happened. Please report this issue. https://github.com/browser-use/browser-use-node/issues');
18
+ }
19
+ const localTargetURL = new URL(localTargetEndpoint);
20
+ //
21
+ const queue = { current: [] };
22
+ const runs = new Map();
23
+ tickRef.timeout = setInterval(async () => {
24
+ // NOTE: On next tick, we abort the current abort controller.
25
+ if (tickRef.abort != null) {
26
+ tickRef.abort.abort();
27
+ }
28
+ const controller = new AbortController();
29
+ tickRef.abort = controller;
30
+ console.log(`[polling] ${new Date().toISOString()} `.padEnd(100, '='));
31
+ const tasks = await client.tasks
32
+ .list({ pageSize: 10 }, {
33
+ signal: tickRef.abort.signal,
34
+ })
35
+ .then((res) => res.items)
36
+ .catch((_) => []);
37
+ for (const task of tasks) {
38
+ const currentTaskStatus = runs.get(task.id);
39
+ const timestamp = task.finishedAt ? task.finishedAt : task.startedAt;
40
+ if (currentTaskStatus == null) {
41
+ // NOTE: The task is new and the CLI hasn't yet captured it in the current run.
42
+ queue.current.push({
43
+ type: 'agent.task.status_update',
44
+ timestamp,
45
+ payload: {
46
+ session_id: task.sessionId,
47
+ task_id: task.id,
48
+ status: task.status,
49
+ metadata: task.metadata,
50
+ },
51
+ });
52
+ runs.set(task.id, task.status);
53
+ continue;
54
+ }
55
+ else {
56
+ // NOTE: CLI has registered the task in the registry and we need to compare.
57
+ if (task.status !== currentTaskStatus) {
58
+ queue.current.push({
59
+ type: 'agent.task.status_update',
60
+ timestamp,
61
+ payload: {
62
+ session_id: task.sessionId,
63
+ task_id: task.id,
64
+ status: task.status,
65
+ metadata: task.metadata,
66
+ },
67
+ });
68
+ runs.set(task.id, task.status);
69
+ continue;
70
+ }
71
+ }
72
+ }
73
+ if (queue.current.length === 0) {
74
+ return;
75
+ }
76
+ const promises = queue.current.map(async (update) => {
77
+ const body = JSON.stringify(update);
78
+ const signature = createWebhookSignature({
79
+ payload: update.payload,
80
+ timestamp: update.timestamp,
81
+ secret,
82
+ });
83
+ try {
84
+ const res = await fetch(localTargetURL, {
85
+ method: 'POST',
86
+ body,
87
+ headers: {
88
+ 'Content-Type': 'application/json',
89
+ // https://docs.browser-use.com/cloud/webhooks#implementing-webhook-verification
90
+ 'X-Browser-Use-Timestamp': update.timestamp,
91
+ 'X-Browser-Use-Signature': signature,
92
+ },
93
+ signal: controller.signal,
94
+ });
95
+ console.log(`[update] ${update.timestamp} ${update.type} ${res.status}`);
96
+ return { delivery: 'fulfilled', update, status: res.status };
97
+ }
98
+ catch (err) {
99
+ console.log(`[update] ${update.timestamp} ${update.type} failed`);
100
+ return { delivery: 'rejected', update, error: err };
101
+ }
102
+ });
103
+ const delivery = await Promise.all(promises);
104
+ // NOTE: We preserve the rejected updates so we can retry them.
105
+ queue.current = delivery.filter((d) => d.delivery === 'rejected').map((d) => d.update);
106
+ }, 1000);
107
+ console.log(`Listening in dev mode at: ${localTargetEndpoint}`);
108
+ });
109
+ process.on('SIGINT', () => {
110
+ if (tickRef.abort != null) {
111
+ tickRef.abort.abort();
112
+ }
113
+ if (tickRef.timeout) {
114
+ clearInterval(tickRef.timeout);
115
+ }
116
+ });
117
+ //# sourceMappingURL=listen.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen.mjs","sourceRoot":"","sources":["../../../src/lib/bin/commands/listen.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.mts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;AAGtC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,GAAG,IAAI,CAAC;AAEV,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CA+DhG"}
1
+ {"version":3,"file":"stream.d.mts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;AAGtC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,GAAG,IAAI,CAAC;AAEV,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAkEhG"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;AAGtC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,GAAG,IAAI,CAAC;AAEV,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CA+DhG"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE;AAGtC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC,GAAG,IAAI,CAAC;AAEV,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAkEhG"}
package/lib/stream.js CHANGED
@@ -7,7 +7,7 @@ function reducer(state, action) {
7
7
  case 'status': {
8
8
  // INIT
9
9
  if (state == null) {
10
- const liveUrl = action.status.sessionLiveUrl ?? null;
10
+ const liveUrl = action.status.session.liveUrl ?? null;
11
11
  const doneOutput = action.status.doneOutput ?? null;
12
12
  const state = {
13
13
  taskId: action.status.id,
@@ -19,7 +19,7 @@ function reducer(state, action) {
19
19
  return [state, action.status];
20
20
  }
21
21
  // UPDATE
22
- const liveUrl = action.status.sessionLiveUrl ?? state.liveUrl;
22
+ const liveUrl = action.status.session.liveUrl ?? state.liveUrl;
23
23
  const doneOutput = action.status.doneOutput ?? state.doneOutput;
24
24
  const steps = [...state.steps];
25
25
  if (action.status.steps != null) {
@@ -41,7 +41,10 @@ function reducer(state, action) {
41
41
  const update = {
42
42
  ...action.status,
43
43
  steps: newState.steps,
44
- sessionLiveUrl: newState.liveUrl,
44
+ session: {
45
+ ...action.status.session,
46
+ liveUrl: newState.liveUrl,
47
+ },
45
48
  doneOutput: newState.doneOutput,
46
49
  };
47
50
  return [newState, update];
package/lib/stream.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":";;AAmBA,0BA+DC;AAjFD,sCAAkE;AAkBlE,SAAgB,OAAO,CAAC,KAAmB,EAAE,MAAqB;IAChE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO;YAEP,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;gBAEpD,MAAM,KAAK,GAAiB;oBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;oBACxB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;oBAClC,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;oBAC1B,UAAU,EAAE,UAAU;iBACvB,CAAC;gBAEF,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,SAAS;YAET,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC;YAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;YAEhE,MAAM,KAAK,GAAmB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE/D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAA8B;gBAC1C,GAAG,KAAK;gBACR,OAAO;gBACP,KAAK;gBACL,UAAU;aACX,CAAC;YAEF,UAAU;YAEV,IACE,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;gBAC1C,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBACnC,KAAK,CAAC,UAAU,IAAI,UAAU,EAC9B,CAAC;gBACD,MAAM,MAAM,GAAiB;oBAC3B,GAAG,MAAM,CAAC,MAAM;oBAChB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,cAAc,EAAE,QAAQ,CAAC,OAAO;oBAChC,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC;gBAEF,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD;YACE,MAAM,IAAI,6BAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":";;AAmBA,0BAkEC;AApFD,sCAAkE;AAkBlE,SAAgB,OAAO,CAAC,KAAmB,EAAE,MAAqB;IAChE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO;YAEP,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;gBACtD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;gBAEpD,MAAM,KAAK,GAAiB;oBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;oBACxB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;oBAClC,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;oBAC1B,UAAU,EAAE,UAAU;iBACvB,CAAC;gBAEF,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,SAAS;YAET,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;YAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;YAEhE,MAAM,KAAK,GAAmB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE/D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAA8B;gBAC1C,GAAG,KAAK;gBACR,OAAO;gBACP,KAAK;gBACL,UAAU;aACX,CAAC;YAEF,UAAU;YAEV,IACE,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;gBAC1C,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBACnC,KAAK,CAAC,UAAU,IAAI,UAAU,EAC9B,CAAC;gBACD,MAAM,MAAM,GAAiB;oBAC3B,GAAG,MAAM,CAAC,MAAM;oBAChB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,OAAO,EAAE;wBACP,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO;wBACxB,OAAO,EAAE,QAAQ,CAAC,OAAO;qBAC1B;oBACD,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC;gBAEF,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD;YACE,MAAM,IAAI,6BAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
package/lib/stream.mjs CHANGED
@@ -4,7 +4,7 @@ export function reducer(state, action) {
4
4
  case 'status': {
5
5
  // INIT
6
6
  if (state == null) {
7
- const liveUrl = action.status.sessionLiveUrl ?? null;
7
+ const liveUrl = action.status.session.liveUrl ?? null;
8
8
  const doneOutput = action.status.doneOutput ?? null;
9
9
  const state = {
10
10
  taskId: action.status.id,
@@ -16,7 +16,7 @@ export function reducer(state, action) {
16
16
  return [state, action.status];
17
17
  }
18
18
  // UPDATE
19
- const liveUrl = action.status.sessionLiveUrl ?? state.liveUrl;
19
+ const liveUrl = action.status.session.liveUrl ?? state.liveUrl;
20
20
  const doneOutput = action.status.doneOutput ?? state.doneOutput;
21
21
  const steps = [...state.steps];
22
22
  if (action.status.steps != null) {
@@ -38,7 +38,10 @@ export function reducer(state, action) {
38
38
  const update = {
39
39
  ...action.status,
40
40
  steps: newState.steps,
41
- sessionLiveUrl: newState.liveUrl,
41
+ session: {
42
+ ...action.status.session,
43
+ liveUrl: newState.liveUrl,
44
+ },
42
45
  doneOutput: newState.doneOutput,
43
46
  };
44
47
  return [newState, update];
@@ -1 +1 @@
1
- {"version":3,"file":"stream.mjs","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OACO,EAAoB,qBAAqB,EAAE;AAkBlD,MAAM,UAAU,OAAO,CAAC,KAAmB,EAAE,MAAqB;IAChE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO;YAEP,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;gBAEpD,MAAM,KAAK,GAAiB;oBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;oBACxB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;oBAClC,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;oBAC1B,UAAU,EAAE,UAAU;iBACvB,CAAC;gBAEF,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,SAAS;YAET,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC;YAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;YAEhE,MAAM,KAAK,GAAmB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE/D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAA8B;gBAC1C,GAAG,KAAK;gBACR,OAAO;gBACP,KAAK;gBACL,UAAU;aACX,CAAC;YAEF,UAAU;YAEV,IACE,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;gBAC1C,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBACnC,KAAK,CAAC,UAAU,IAAI,UAAU,EAC9B,CAAC;gBACD,MAAM,MAAM,GAAiB;oBAC3B,GAAG,MAAM,CAAC,MAAM;oBAChB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,cAAc,EAAE,QAAQ,CAAC,OAAO;oBAChC,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC;gBAEF,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD;YACE,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"stream.mjs","sourceRoot":"","sources":["../src/lib/stream.ts"],"names":[],"mappings":"OACO,EAAoB,qBAAqB,EAAE;AAkBlD,MAAM,UAAU,OAAO,CAAC,KAAmB,EAAE,MAAqB;IAChE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO;YAEP,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;gBACtD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;gBAEpD,MAAM,KAAK,GAAiB;oBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;oBACxB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;oBAClC,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;oBAC1B,UAAU,EAAE,UAAU;iBACvB,CAAC;gBAEF,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YAED,SAAS;YAET,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;YAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;YAEhE,MAAM,KAAK,GAAmB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAE/D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAA8B;gBAC1C,GAAG,KAAK;gBACR,OAAO;gBACP,KAAK;gBACL,UAAU;aACX,CAAC;YAEF,UAAU;YAEV,IACE,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;gBAC1C,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;gBACnC,KAAK,CAAC,UAAU,IAAI,UAAU,EAC9B,CAAC;gBACD,MAAM,MAAM,GAAiB;oBAC3B,GAAG,MAAM,CAAC,MAAM;oBAChB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,OAAO,EAAE;wBACP,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO;wBACxB,OAAO,EAAE,QAAQ,CAAC,OAAO;qBAC1B;oBACD,UAAU,EAAE,QAAQ,CAAC,UAAU;iBAChC,CAAC;gBAEF,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD;YACE,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ export declare const zWebhookTimestamp: z.ZodISODateTime;
3
+ export declare const zWebhookTestPayload: z.ZodObject<{
4
+ test: z.ZodLiteral<"ok">;
5
+ }, z.core.$strip>;
6
+ export type WebhookTestPayload = z.infer<typeof zWebhookTestPayload>;
7
+ export declare const zWebhookTest: z.ZodObject<{
8
+ type: z.ZodLiteral<"test">;
9
+ timestamp: z.ZodISODateTime;
10
+ payload: z.ZodObject<{
11
+ test: z.ZodLiteral<"ok">;
12
+ }, z.core.$strip>;
13
+ }, z.core.$strip>;
14
+ export declare const zWebhookAgentTaskStatusUpdatePayloadMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
15
+ export declare const zWebhookAgentTaskStatusUpdatePayloadStatus: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
16
+ export declare const zWebhookAgentTaskStatusUpdatePayload: z.ZodObject<{
17
+ session_id: z.ZodString;
18
+ task_id: z.ZodString;
19
+ status: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
20
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
21
+ }, z.core.$strip>;
22
+ export type WebhookAgentTaskStatusUpdatePayload = z.infer<typeof zWebhookAgentTaskStatusUpdatePayload>;
23
+ export declare const zWebhookAgentTaskStatusUpdate: z.ZodObject<{
24
+ type: z.ZodLiteral<"agent.task.status_update">;
25
+ timestamp: z.ZodISODateTime;
26
+ payload: z.ZodObject<{
27
+ session_id: z.ZodString;
28
+ task_id: z.ZodString;
29
+ status: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
30
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
31
+ }, z.core.$strip>;
32
+ }, z.core.$strip>;
33
+ export declare const zWebhookSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
34
+ type: z.ZodLiteral<"test">;
35
+ timestamp: z.ZodISODateTime;
36
+ payload: z.ZodObject<{
37
+ test: z.ZodLiteral<"ok">;
38
+ }, z.core.$strip>;
39
+ }, z.core.$strip>, z.ZodObject<{
40
+ type: z.ZodLiteral<"agent.task.status_update">;
41
+ timestamp: z.ZodISODateTime;
42
+ payload: z.ZodObject<{
43
+ session_id: z.ZodString;
44
+ task_id: z.ZodString;
45
+ status: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
46
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
+ }, z.core.$strip>;
48
+ }, z.core.$strip>], "type">;
49
+ export type Webhook = z.infer<typeof zWebhookSchema>;
50
+ /**
51
+ * Utility function that validates the received Webhook event/
52
+ */
53
+ export declare function verifyWebhookEventSignature(evt: {
54
+ evt: string;
55
+ signature: string;
56
+ timestamp: string;
57
+ }, cfg: {
58
+ secret: string;
59
+ }): Promise<{
60
+ ok: true;
61
+ event: Webhook;
62
+ } | {
63
+ ok: false;
64
+ }>;
65
+ /**
66
+ * Creates a webhook signature for the given payload, timestamp, and secret.
67
+ */
68
+ export declare function createWebhookSignature({ payload, timestamp, secret, }: {
69
+ payload: unknown;
70
+ timestamp: string;
71
+ secret: string;
72
+ }): string;
73
+ //# sourceMappingURL=webhooks.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.mts","sourceRoot":"","sources":["../src/lib/webhooks.ts"],"names":[],"mappings":"OACO,EAAE,CAAC,EAAE,MAAM,KAAK;AAOvB,eAAO,MAAM,iBAAiB,kBAAgD,CAAC;AAI/E,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,eAAO,MAAM,YAAY;;;;;;iBAIvB,CAAC;AAIH,eAAO,MAAM,4CAA4C,uDAA+C,CAAC;AAEzG,eAAO,MAAM,0CAA0C,8EAMrD,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;iBAK/C,CAAC;AAEH,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAEvG,eAAO,MAAM,6BAA6B;;;;;;;;;iBAIxC,CAAC;AAIH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;2BAIzB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAIrD;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAwBvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,MAAM,GACP,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAOT"}
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+ export declare const zWebhookTimestamp: z.ZodISODateTime;
3
+ export declare const zWebhookTestPayload: z.ZodObject<{
4
+ test: z.ZodLiteral<"ok">;
5
+ }, z.core.$strip>;
6
+ export type WebhookTestPayload = z.infer<typeof zWebhookTestPayload>;
7
+ export declare const zWebhookTest: z.ZodObject<{
8
+ type: z.ZodLiteral<"test">;
9
+ timestamp: z.ZodISODateTime;
10
+ payload: z.ZodObject<{
11
+ test: z.ZodLiteral<"ok">;
12
+ }, z.core.$strip>;
13
+ }, z.core.$strip>;
14
+ export declare const zWebhookAgentTaskStatusUpdatePayloadMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
15
+ export declare const zWebhookAgentTaskStatusUpdatePayloadStatus: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
16
+ export declare const zWebhookAgentTaskStatusUpdatePayload: z.ZodObject<{
17
+ session_id: z.ZodString;
18
+ task_id: z.ZodString;
19
+ status: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
20
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
21
+ }, z.core.$strip>;
22
+ export type WebhookAgentTaskStatusUpdatePayload = z.infer<typeof zWebhookAgentTaskStatusUpdatePayload>;
23
+ export declare const zWebhookAgentTaskStatusUpdate: z.ZodObject<{
24
+ type: z.ZodLiteral<"agent.task.status_update">;
25
+ timestamp: z.ZodISODateTime;
26
+ payload: z.ZodObject<{
27
+ session_id: z.ZodString;
28
+ task_id: z.ZodString;
29
+ status: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
30
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
31
+ }, z.core.$strip>;
32
+ }, z.core.$strip>;
33
+ export declare const zWebhookSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
34
+ type: z.ZodLiteral<"test">;
35
+ timestamp: z.ZodISODateTime;
36
+ payload: z.ZodObject<{
37
+ test: z.ZodLiteral<"ok">;
38
+ }, z.core.$strip>;
39
+ }, z.core.$strip>, z.ZodObject<{
40
+ type: z.ZodLiteral<"agent.task.status_update">;
41
+ timestamp: z.ZodISODateTime;
42
+ payload: z.ZodObject<{
43
+ session_id: z.ZodString;
44
+ task_id: z.ZodString;
45
+ status: z.ZodLiteral<"started" | "paused" | "stopped" | "finished" | "initializing">;
46
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
+ }, z.core.$strip>;
48
+ }, z.core.$strip>], "type">;
49
+ export type Webhook = z.infer<typeof zWebhookSchema>;
50
+ /**
51
+ * Utility function that validates the received Webhook event/
52
+ */
53
+ export declare function verifyWebhookEventSignature(evt: {
54
+ evt: string;
55
+ signature: string;
56
+ timestamp: string;
57
+ }, cfg: {
58
+ secret: string;
59
+ }): Promise<{
60
+ ok: true;
61
+ event: Webhook;
62
+ } | {
63
+ ok: false;
64
+ }>;
65
+ /**
66
+ * Creates a webhook signature for the given payload, timestamp, and secret.
67
+ */
68
+ export declare function createWebhookSignature({ payload, timestamp, secret, }: {
69
+ payload: unknown;
70
+ timestamp: string;
71
+ secret: string;
72
+ }): string;
73
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/lib/webhooks.ts"],"names":[],"mappings":"OACO,EAAE,CAAC,EAAE,MAAM,KAAK;AAOvB,eAAO,MAAM,iBAAiB,kBAAgD,CAAC;AAI/E,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,eAAO,MAAM,YAAY;;;;;;iBAIvB,CAAC;AAIH,eAAO,MAAM,4CAA4C,uDAA+C,CAAC;AAEzG,eAAO,MAAM,0CAA0C,8EAMrD,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;iBAK/C,CAAC;AAEH,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAEvG,eAAO,MAAM,6BAA6B;;;;;;;;;iBAIxC,CAAC;AAIH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;2BAIzB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAIrD;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAwBvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,SAAS,EACT,MAAM,GACP,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAOT"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zWebhookSchema = exports.zWebhookAgentTaskStatusUpdate = exports.zWebhookAgentTaskStatusUpdatePayload = exports.zWebhookAgentTaskStatusUpdatePayloadStatus = exports.zWebhookAgentTaskStatusUpdatePayloadMetadata = exports.zWebhookTest = exports.zWebhookTestPayload = exports.zWebhookTimestamp = void 0;
4
+ exports.verifyWebhookEventSignature = verifyWebhookEventSignature;
5
+ exports.createWebhookSignature = createWebhookSignature;
6
+ const tslib_1 = require("../internal/tslib.js");
7
+ const crypto_1 = require("crypto");
8
+ const zod_1 = require("zod");
9
+ const fast_json_stable_stringify_1 = tslib_1.__importDefault(require("fast-json-stable-stringify"));
10
+ // https://docs.browser-use.com/cloud/webhooks
11
+ //
12
+ exports.zWebhookTimestamp = zod_1.z.iso.datetime({ offset: true, local: true });
13
+ // test
14
+ exports.zWebhookTestPayload = zod_1.z.object({
15
+ test: zod_1.z.literal('ok'),
16
+ });
17
+ exports.zWebhookTest = zod_1.z.object({
18
+ type: zod_1.z.literal('test'),
19
+ timestamp: zod_1.z.iso.datetime({ offset: true }),
20
+ payload: exports.zWebhookTestPayload,
21
+ });
22
+ // agent.task.status_update
23
+ exports.zWebhookAgentTaskStatusUpdatePayloadMetadata = zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional();
24
+ exports.zWebhookAgentTaskStatusUpdatePayloadStatus = zod_1.z.literal([
25
+ 'initializing',
26
+ 'started',
27
+ 'paused',
28
+ 'stopped',
29
+ 'finished',
30
+ ]);
31
+ exports.zWebhookAgentTaskStatusUpdatePayload = zod_1.z.object({
32
+ session_id: zod_1.z.string(),
33
+ task_id: zod_1.z.string(),
34
+ status: exports.zWebhookAgentTaskStatusUpdatePayloadStatus,
35
+ metadata: exports.zWebhookAgentTaskStatusUpdatePayloadMetadata,
36
+ });
37
+ exports.zWebhookAgentTaskStatusUpdate = zod_1.z.object({
38
+ type: zod_1.z.literal('agent.task.status_update'),
39
+ timestamp: exports.zWebhookTimestamp,
40
+ payload: exports.zWebhookAgentTaskStatusUpdatePayload,
41
+ });
42
+ //
43
+ exports.zWebhookSchema = zod_1.z.discriminatedUnion('type', [
44
+ //
45
+ exports.zWebhookTest,
46
+ exports.zWebhookAgentTaskStatusUpdate,
47
+ ]);
48
+ // Signature
49
+ /**
50
+ * Utility function that validates the received Webhook event/
51
+ */
52
+ async function verifyWebhookEventSignature(evt, cfg) {
53
+ try {
54
+ const event = await exports.zWebhookSchema.safeParseAsync(JSON.parse(evt.evt));
55
+ if (event.success === false) {
56
+ return { ok: false };
57
+ }
58
+ const signature = createWebhookSignature({
59
+ payload: event.data.payload,
60
+ timestamp: evt.timestamp,
61
+ secret: cfg.secret,
62
+ });
63
+ // Compare signatures using timing-safe comparison
64
+ if (evt.signature !== signature) {
65
+ return { ok: false };
66
+ }
67
+ return { ok: true, event: event.data };
68
+ }
69
+ catch (err) {
70
+ console.error(err);
71
+ return { ok: false };
72
+ }
73
+ }
74
+ /**
75
+ * Creates a webhook signature for the given payload, timestamp, and secret.
76
+ */
77
+ function createWebhookSignature({ payload, timestamp, secret, }) {
78
+ const dump = (0, fast_json_stable_stringify_1.default)(payload);
79
+ const message = `${timestamp}.${dump}`;
80
+ const hmac = (0, crypto_1.createHmac)('sha256', secret);
81
+ hmac.update(message);
82
+ return hmac.digest('hex');
83
+ }
84
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/lib/webhooks.ts"],"names":[],"mappings":"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"}