@elizaos/plugin-browser 2.0.3-beta.2 → 2.0.3-beta.4

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 (48) hide show
  1. package/dist/actions/browser.d.ts.map +1 -1
  2. package/dist/actions/browser.js +264 -7
  3. package/dist/actions/browser.js.map +1 -1
  4. package/dist/actions/wait-for-url-predicate.d.ts +34 -0
  5. package/dist/actions/wait-for-url-predicate.d.ts.map +1 -0
  6. package/dist/actions/wait-for-url-predicate.js +33 -0
  7. package/dist/actions/wait-for-url-predicate.js.map +1 -0
  8. package/dist/actions/wait-for-url.d.ts +64 -0
  9. package/dist/actions/wait-for-url.d.ts.map +1 -0
  10. package/dist/actions/wait-for-url.js +89 -0
  11. package/dist/actions/wait-for-url.js.map +1 -0
  12. package/dist/index.d.ts +4 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +27 -8
  15. package/dist/index.js.map +1 -1
  16. package/dist/parity/browser-matrix.d.ts +45 -0
  17. package/dist/parity/browser-matrix.d.ts.map +1 -0
  18. package/dist/parity/browser-matrix.js +361 -0
  19. package/dist/parity/browser-matrix.js.map +1 -0
  20. package/dist/parity/index.d.ts +5 -0
  21. package/dist/parity/index.d.ts.map +1 -0
  22. package/dist/parity/index.js +13 -0
  23. package/dist/parity/index.js.map +1 -0
  24. package/dist/routes/workspace.d.ts.map +1 -1
  25. package/dist/routes/workspace.js +42 -2
  26. package/dist/routes/workspace.js.map +1 -1
  27. package/dist/workspace/browser-capture.d.ts.map +1 -1
  28. package/dist/workspace/browser-capture.js +33 -1
  29. package/dist/workspace/browser-capture.js.map +1 -1
  30. package/dist/workspace/browser-workspace-desktop.d.ts.map +1 -1
  31. package/dist/workspace/browser-workspace-desktop.js +19 -5
  32. package/dist/workspace/browser-workspace-desktop.js.map +1 -1
  33. package/dist/workspace/browser-workspace-errors.d.ts +62 -0
  34. package/dist/workspace/browser-workspace-errors.d.ts.map +1 -0
  35. package/dist/workspace/browser-workspace-errors.js +69 -0
  36. package/dist/workspace/browser-workspace-errors.js.map +1 -0
  37. package/dist/workspace/browser-workspace-helpers.d.ts.map +1 -1
  38. package/dist/workspace/browser-workspace-helpers.js +29 -8
  39. package/dist/workspace/browser-workspace-helpers.js.map +1 -1
  40. package/dist/workspace/browser-workspace-web.d.ts.map +1 -1
  41. package/dist/workspace/browser-workspace-web.js +20 -6
  42. package/dist/workspace/browser-workspace-web.js.map +1 -1
  43. package/dist/workspace/index.d.ts +1 -0
  44. package/dist/workspace/index.d.ts.map +1 -1
  45. package/dist/workspace/index.js +1 -0
  46. package/dist/workspace/index.js.map +1 -1
  47. package/package.json +5 -4
  48. package/registry-entry.json +75 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * BROWSER `wait_for_url` subaction core.
3
+ *
4
+ * Opens (or reuses) a tab, then polls the current tab URL until it matches a
5
+ * caller-supplied pattern (substring or regex — see
6
+ * {@link buildWaitForUrlPredicate}) or a deadline passes. Each poll iteration
7
+ * emits a streaming status update through the action's `HandlerCallback` so a
8
+ * Telegram/chat user sees progress; the loop never throws on timeout — it
9
+ * returns a typed {@link WaitForUrlOutcome}.
10
+ *
11
+ * The poll loop takes its URL source, clock, and sleep as injected
12
+ * dependencies so it is fully deterministic under test (fake URL source + fake
13
+ * timer) with no real browser.
14
+ */
15
+ /** Default deadline: 5 minutes. */
16
+ export declare const WAIT_FOR_URL_DEFAULT_TIMEOUT_MS = 300000;
17
+ /** Default poll cadence: ~2 seconds. */
18
+ export declare const WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS = 2000;
19
+ export type WaitForUrlStatus = "matched" | "timeout";
20
+ export interface WaitForUrlOutcome {
21
+ status: WaitForUrlStatus;
22
+ /** True iff the URL matched before the deadline. */
23
+ matched: boolean;
24
+ /** The pattern the caller supplied. */
25
+ pattern: string;
26
+ /** The last URL observed from the tab (null if never readable). */
27
+ lastUrl: string | null;
28
+ /** Number of poll iterations performed. */
29
+ polls: number;
30
+ /** Wall-clock elapsed time, in ms, measured from the injected clock. */
31
+ elapsedMs: number;
32
+ /** Human-readable summary suitable for a chat reply. */
33
+ message: string;
34
+ }
35
+ export interface WaitForUrlOptions {
36
+ /** Substring or regex to match against the current tab URL. */
37
+ pattern: string;
38
+ /** Deadline in ms. Defaults to {@link WAIT_FOR_URL_DEFAULT_TIMEOUT_MS}. */
39
+ timeoutMs?: number;
40
+ /**
41
+ * Poll cadence in ms. Defaults to
42
+ * {@link WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS}.
43
+ */
44
+ pollIntervalMs?: number;
45
+ }
46
+ export interface WaitForUrlDeps {
47
+ /**
48
+ * Reads the current tab URL. Returns null when the URL is not yet readable
49
+ * (e.g. tab still loading); the loop keeps polling until the deadline.
50
+ */
51
+ getCurrentUrl: () => Promise<string | null> | string | null;
52
+ /** Emits a status update to the user. Optional (may be a no-op). */
53
+ emitStatus?: (text: string) => Promise<void> | void;
54
+ /** Monotonic clock in ms. Defaults to `Date.now`. */
55
+ now?: () => number;
56
+ /** Async sleep. Defaults to a real `setTimeout` promise. */
57
+ sleep?: (ms: number) => Promise<void>;
58
+ }
59
+ /**
60
+ * Poll the current tab URL until it matches `pattern` or the deadline passes.
61
+ * Never throws on timeout — returns a typed {@link WaitForUrlOutcome}.
62
+ */
63
+ export declare function waitForUrl(options: WaitForUrlOptions, deps: WaitForUrlDeps): Promise<WaitForUrlOutcome>;
64
+ //# sourceMappingURL=wait-for-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-url.d.ts","sourceRoot":"","sources":["../../src/actions/wait-for-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,mCAAmC;AACnC,eAAO,MAAM,+BAA+B,SAAU,CAAC;AACvD,wCAAwC;AACxC,eAAO,MAAM,qCAAqC,OAAQ,CAAC;AAM3D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5D,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpD,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AA4BD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAgE5B"}
@@ -0,0 +1,89 @@
1
+ import { buildWaitForUrlPredicate } from "./wait-for-url-predicate.js";
2
+ const WAIT_FOR_URL_DEFAULT_TIMEOUT_MS = 3e5;
3
+ const WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS = 2e3;
4
+ const WAIT_FOR_URL_MIN_POLL_INTERVAL_MS = 50;
5
+ const WAIT_FOR_URL_MIN_TIMEOUT_MS = 1;
6
+ function realSleep(ms) {
7
+ return new Promise((resolve) => {
8
+ setTimeout(resolve, ms);
9
+ });
10
+ }
11
+ function clampPollInterval(value) {
12
+ const candidate = value ?? WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS;
13
+ if (!Number.isFinite(candidate) || candidate <= 0) {
14
+ return WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS;
15
+ }
16
+ return Math.max(WAIT_FOR_URL_MIN_POLL_INTERVAL_MS, Math.floor(candidate));
17
+ }
18
+ function clampTimeout(value) {
19
+ const candidate = value ?? WAIT_FOR_URL_DEFAULT_TIMEOUT_MS;
20
+ if (!Number.isFinite(candidate) || candidate <= 0) {
21
+ return WAIT_FOR_URL_DEFAULT_TIMEOUT_MS;
22
+ }
23
+ return Math.max(WAIT_FOR_URL_MIN_TIMEOUT_MS, Math.floor(candidate));
24
+ }
25
+ function describeCurrentUrl(url) {
26
+ return url ? `current: ${url}` : "current: unknown";
27
+ }
28
+ async function waitForUrl(options, deps) {
29
+ const predicate = buildWaitForUrlPredicate(options.pattern);
30
+ const timeoutMs = clampTimeout(options.timeoutMs);
31
+ const pollIntervalMs = clampPollInterval(options.pollIntervalMs);
32
+ const now = deps.now ?? Date.now;
33
+ const sleep = deps.sleep ?? realSleep;
34
+ const startedAt = now();
35
+ const deadline = startedAt + timeoutMs;
36
+ let polls = 0;
37
+ let lastUrl = null;
38
+ while (true) {
39
+ polls += 1;
40
+ let currentUrl = null;
41
+ try {
42
+ currentUrl = await deps.getCurrentUrl() ?? null;
43
+ } catch {
44
+ currentUrl = null;
45
+ }
46
+ if (currentUrl !== null) {
47
+ lastUrl = currentUrl;
48
+ }
49
+ if (currentUrl !== null && predicate.test(currentUrl)) {
50
+ const elapsedMs2 = now() - startedAt;
51
+ const message = `Done \u2014 tab reached ${currentUrl} (matched ${predicate.kind} "${predicate.pattern}" after ${polls} check${polls === 1 ? "" : "s"}).`;
52
+ await deps.emitStatus?.(`\u2705 ${message}`);
53
+ return {
54
+ status: "matched",
55
+ matched: true,
56
+ pattern: predicate.pattern,
57
+ lastUrl,
58
+ polls,
59
+ elapsedMs: elapsedMs2,
60
+ message
61
+ };
62
+ }
63
+ const elapsedMs = now() - startedAt;
64
+ const remainingMs = deadline - now();
65
+ if (remainingMs <= 0) {
66
+ const message = `Timed out after ${Math.round(elapsedMs / 1e3)}s waiting for "${predicate.pattern}" (${describeCurrentUrl(lastUrl)}).`;
67
+ await deps.emitStatus?.(`\u231B ${message}`);
68
+ return {
69
+ status: "timeout",
70
+ matched: false,
71
+ pattern: predicate.pattern,
72
+ lastUrl,
73
+ polls,
74
+ elapsedMs,
75
+ message
76
+ };
77
+ }
78
+ await deps.emitStatus?.(
79
+ `\u23F3 still waiting for "${predicate.pattern}"\u2026 (${describeCurrentUrl(currentUrl)})`
80
+ );
81
+ await sleep(Math.min(pollIntervalMs, remainingMs));
82
+ }
83
+ }
84
+ export {
85
+ WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS,
86
+ WAIT_FOR_URL_DEFAULT_TIMEOUT_MS,
87
+ waitForUrl
88
+ };
89
+ //# sourceMappingURL=wait-for-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actions/wait-for-url.ts"],"sourcesContent":["/**\n * BROWSER `wait_for_url` subaction core.\n *\n * Opens (or reuses) a tab, then polls the current tab URL until it matches a\n * caller-supplied pattern (substring or regex — see\n * {@link buildWaitForUrlPredicate}) or a deadline passes. Each poll iteration\n * emits a streaming status update through the action's `HandlerCallback` so a\n * Telegram/chat user sees progress; the loop never throws on timeout — it\n * returns a typed {@link WaitForUrlOutcome}.\n *\n * The poll loop takes its URL source, clock, and sleep as injected\n * dependencies so it is fully deterministic under test (fake URL source + fake\n * timer) with no real browser.\n */\n\nimport { buildWaitForUrlPredicate } from \"./wait-for-url-predicate.js\";\n\n/** Default deadline: 5 minutes. */\nexport const WAIT_FOR_URL_DEFAULT_TIMEOUT_MS = 300_000;\n/** Default poll cadence: ~2 seconds. */\nexport const WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS = 2_000;\n/** Lower bound for the poll interval (avoids a hot loop). */\nconst WAIT_FOR_URL_MIN_POLL_INTERVAL_MS = 50;\n/** Lower bound for the timeout (always allow at least one poll). */\nconst WAIT_FOR_URL_MIN_TIMEOUT_MS = 1;\n\nexport type WaitForUrlStatus = \"matched\" | \"timeout\";\n\nexport interface WaitForUrlOutcome {\n status: WaitForUrlStatus;\n /** True iff the URL matched before the deadline. */\n matched: boolean;\n /** The pattern the caller supplied. */\n pattern: string;\n /** The last URL observed from the tab (null if never readable). */\n lastUrl: string | null;\n /** Number of poll iterations performed. */\n polls: number;\n /** Wall-clock elapsed time, in ms, measured from the injected clock. */\n elapsedMs: number;\n /** Human-readable summary suitable for a chat reply. */\n message: string;\n}\n\nexport interface WaitForUrlOptions {\n /** Substring or regex to match against the current tab URL. */\n pattern: string;\n /** Deadline in ms. Defaults to {@link WAIT_FOR_URL_DEFAULT_TIMEOUT_MS}. */\n timeoutMs?: number;\n /**\n * Poll cadence in ms. Defaults to\n * {@link WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS}.\n */\n pollIntervalMs?: number;\n}\n\nexport interface WaitForUrlDeps {\n /**\n * Reads the current tab URL. Returns null when the URL is not yet readable\n * (e.g. tab still loading); the loop keeps polling until the deadline.\n */\n getCurrentUrl: () => Promise<string | null> | string | null;\n /** Emits a status update to the user. Optional (may be a no-op). */\n emitStatus?: (text: string) => Promise<void> | void;\n /** Monotonic clock in ms. Defaults to `Date.now`. */\n now?: () => number;\n /** Async sleep. Defaults to a real `setTimeout` promise. */\n sleep?: (ms: number) => Promise<void>;\n}\n\nfunction realSleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nfunction clampPollInterval(value: number | undefined): number {\n const candidate = value ?? WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS;\n if (!Number.isFinite(candidate) || candidate <= 0) {\n return WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS;\n }\n return Math.max(WAIT_FOR_URL_MIN_POLL_INTERVAL_MS, Math.floor(candidate));\n}\n\nfunction clampTimeout(value: number | undefined): number {\n const candidate = value ?? WAIT_FOR_URL_DEFAULT_TIMEOUT_MS;\n if (!Number.isFinite(candidate) || candidate <= 0) {\n return WAIT_FOR_URL_DEFAULT_TIMEOUT_MS;\n }\n return Math.max(WAIT_FOR_URL_MIN_TIMEOUT_MS, Math.floor(candidate));\n}\n\nfunction describeCurrentUrl(url: string | null): string {\n return url ? `current: ${url}` : \"current: unknown\";\n}\n\n/**\n * Poll the current tab URL until it matches `pattern` or the deadline passes.\n * Never throws on timeout — returns a typed {@link WaitForUrlOutcome}.\n */\nexport async function waitForUrl(\n options: WaitForUrlOptions,\n deps: WaitForUrlDeps,\n): Promise<WaitForUrlOutcome> {\n const predicate = buildWaitForUrlPredicate(options.pattern);\n const timeoutMs = clampTimeout(options.timeoutMs);\n const pollIntervalMs = clampPollInterval(options.pollIntervalMs);\n const now = deps.now ?? Date.now;\n const sleep = deps.sleep ?? realSleep;\n\n const startedAt = now();\n const deadline = startedAt + timeoutMs;\n\n let polls = 0;\n let lastUrl: string | null = null;\n\n while (true) {\n polls += 1;\n\n let currentUrl: string | null = null;\n try {\n currentUrl = (await deps.getCurrentUrl()) ?? null;\n } catch {\n // Treat an unreadable URL like an empty poll; keep waiting.\n currentUrl = null;\n }\n if (currentUrl !== null) {\n lastUrl = currentUrl;\n }\n\n if (currentUrl !== null && predicate.test(currentUrl)) {\n const elapsedMs = now() - startedAt;\n const message = `Done — tab reached ${currentUrl} (matched ${predicate.kind} \"${predicate.pattern}\" after ${polls} check${polls === 1 ? \"\" : \"s\"}).`;\n await deps.emitStatus?.(`✅ ${message}`);\n return {\n status: \"matched\",\n matched: true,\n pattern: predicate.pattern,\n lastUrl,\n polls,\n elapsedMs,\n message,\n };\n }\n\n const elapsedMs = now() - startedAt;\n const remainingMs = deadline - now();\n if (remainingMs <= 0) {\n const message = `Timed out after ${Math.round(elapsedMs / 1000)}s waiting for \"${predicate.pattern}\" (${describeCurrentUrl(lastUrl)}).`;\n await deps.emitStatus?.(`⌛ ${message}`);\n return {\n status: \"timeout\",\n matched: false,\n pattern: predicate.pattern,\n lastUrl,\n polls,\n elapsedMs,\n message,\n };\n }\n\n await deps.emitStatus?.(\n `⏳ still waiting for \"${predicate.pattern}\"… (${describeCurrentUrl(currentUrl)})`,\n );\n\n await sleep(Math.min(pollIntervalMs, remainingMs));\n }\n}\n"],"mappings":"AAeA,SAAS,gCAAgC;AAGlC,MAAM,kCAAkC;AAExC,MAAM,wCAAwC;AAErD,MAAM,oCAAoC;AAE1C,MAAM,8BAA8B;AA8CpC,SAAS,UAAU,IAA2B;AAC5C,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,eAAW,SAAS,EAAE;AAAA,EACxB,CAAC;AACH;AAEA,SAAS,kBAAkB,OAAmC;AAC5D,QAAM,YAAY,SAAS;AAC3B,MAAI,CAAC,OAAO,SAAS,SAAS,KAAK,aAAa,GAAG;AACjD,WAAO;AAAA,EACT;AACA,SAAO,KAAK,IAAI,mCAAmC,KAAK,MAAM,SAAS,CAAC;AAC1E;AAEA,SAAS,aAAa,OAAmC;AACvD,QAAM,YAAY,SAAS;AAC3B,MAAI,CAAC,OAAO,SAAS,SAAS,KAAK,aAAa,GAAG;AACjD,WAAO;AAAA,EACT;AACA,SAAO,KAAK,IAAI,6BAA6B,KAAK,MAAM,SAAS,CAAC;AACpE;AAEA,SAAS,mBAAmB,KAA4B;AACtD,SAAO,MAAM,YAAY,GAAG,KAAK;AACnC;AAMA,eAAsB,WACpB,SACA,MAC4B;AAC5B,QAAM,YAAY,yBAAyB,QAAQ,OAAO;AAC1D,QAAM,YAAY,aAAa,QAAQ,SAAS;AAChD,QAAM,iBAAiB,kBAAkB,QAAQ,cAAc;AAC/D,QAAM,MAAM,KAAK,OAAO,KAAK;AAC7B,QAAM,QAAQ,KAAK,SAAS;AAE5B,QAAM,YAAY,IAAI;AACtB,QAAM,WAAW,YAAY;AAE7B,MAAI,QAAQ;AACZ,MAAI,UAAyB;AAE7B,SAAO,MAAM;AACX,aAAS;AAET,QAAI,aAA4B;AAChC,QAAI;AACF,mBAAc,MAAM,KAAK,cAAc,KAAM;AAAA,IAC/C,QAAQ;AAEN,mBAAa;AAAA,IACf;AACA,QAAI,eAAe,MAAM;AACvB,gBAAU;AAAA,IACZ;AAEA,QAAI,eAAe,QAAQ,UAAU,KAAK,UAAU,GAAG;AACrD,YAAMA,aAAY,IAAI,IAAI;AAC1B,YAAM,UAAU,2BAAsB,UAAU,aAAa,UAAU,IAAI,KAAK,UAAU,OAAO,WAAW,KAAK,SAAS,UAAU,IAAI,KAAK,GAAG;AAChJ,YAAM,KAAK,aAAa,UAAK,OAAO,EAAE;AACtC,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS,UAAU;AAAA,QACnB;AAAA,QACA;AAAA,QACA,WAAAA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,IAAI,IAAI;AAC1B,UAAM,cAAc,WAAW,IAAI;AACnC,QAAI,eAAe,GAAG;AACpB,YAAM,UAAU,mBAAmB,KAAK,MAAM,YAAY,GAAI,CAAC,kBAAkB,UAAU,OAAO,MAAM,mBAAmB,OAAO,CAAC;AACnI,YAAM,KAAK,aAAa,UAAK,OAAO,EAAE;AACtC,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS,UAAU;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,KAAK;AAAA,MACT,6BAAwB,UAAU,OAAO,YAAO,mBAAmB,UAAU,CAAC;AAAA,IAChF;AAEA,UAAM,MAAM,KAAK,IAAI,gBAAgB,WAAW,CAAC;AAAA,EACnD;AACF;","names":["elapsedMs"]}
package/dist/index.d.ts CHANGED
@@ -13,14 +13,17 @@
13
13
  export { browserAction } from "./actions/browser.js";
14
14
  export { executeBrowserAutofillLogin } from "./actions/browser-autofill-login.js";
15
15
  export { BROWSER_BRIDGE_SUBACTIONS, type BrowserBridgeSubaction, manageBrowserBridgeAction, } from "./actions/manage-browser-bridge.js";
16
- export { BROWSER_SERVICE_TYPE, BrowserService, type BrowserTarget, } from "./browser-service.js";
16
+ export { WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS, WAIT_FOR_URL_DEFAULT_TIMEOUT_MS, type WaitForUrlDeps, type WaitForUrlOptions, type WaitForUrlOutcome, type WaitForUrlStatus, waitForUrl, } from "./actions/wait-for-url.js";
17
+ export { buildWaitForUrlPredicate, type WaitForUrlPatternKind, type WaitForUrlPredicate, } from "./actions/wait-for-url-predicate.js";
17
18
  export * from "./bridge-policy.js";
18
19
  export * from "./bridge-readiness.js";
19
20
  export * from "./bridge-records.js";
21
+ export { BROWSER_SERVICE_TYPE, BrowserService, type BrowserTarget, } from "./browser-service.js";
20
22
  export * from "./companion-auth.js";
21
23
  export * from "./contracts.js";
22
24
  export { BrowserBridgeAdapter } from "./message-adapter.js";
23
25
  export * from "./packaging.js";
26
+ export * from "./parity/index.js";
24
27
  export * from "./password-manager-bridge.js";
25
28
  export { browserPlugin } from "./plugin.js";
26
29
  export * from "./routes/bridge.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EACL,yBAAyB,EACzB,KAAK,sBAAsB,EAC3B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,KAAK,oBAAoB,EACzB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EACL,yBAAyB,EACzB,KAAK,sBAAsB,EAC3B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,qCAAqC,EACrC,+BAA+B,EAC/B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,qCAAqC,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,KAAK,oBAAoB,EACzB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -5,16 +5,25 @@ import {
5
5
  manageBrowserBridgeAction
6
6
  } from "./actions/manage-browser-bridge.js";
7
7
  import {
8
- BROWSER_SERVICE_TYPE,
9
- BrowserService
10
- } from "./browser-service.js";
8
+ WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS,
9
+ WAIT_FOR_URL_DEFAULT_TIMEOUT_MS,
10
+ waitForUrl
11
+ } from "./actions/wait-for-url.js";
12
+ import {
13
+ buildWaitForUrlPredicate
14
+ } from "./actions/wait-for-url-predicate.js";
11
15
  export * from "./bridge-policy.js";
12
16
  export * from "./bridge-readiness.js";
13
17
  export * from "./bridge-records.js";
18
+ import {
19
+ BROWSER_SERVICE_TYPE,
20
+ BrowserService
21
+ } from "./browser-service.js";
14
22
  export * from "./companion-auth.js";
15
23
  export * from "./contracts.js";
16
24
  import { BrowserBridgeAdapter } from "./message-adapter.js";
17
25
  export * from "./packaging.js";
26
+ export * from "./parity/index.js";
18
27
  export * from "./password-manager-bridge.js";
19
28
  import { browserPlugin } from "./plugin.js";
20
29
  export * from "./routes/bridge.js";
@@ -32,13 +41,16 @@ import {
32
41
  BROWSER_BRIDGE_SUBACTIONS as _bs_5_BROWSER_BRIDGE_SUBACTIONS,
33
42
  manageBrowserBridgeAction as _bs_6_manageBrowserBridgeAction
34
43
  } from "./actions/manage-browser-bridge.js";
44
+ import { waitForUrl as _bs_15_waitForUrl } from "./actions/wait-for-url.js";
45
+ import { buildWaitForUrlPredicate as _bs_14_buildWaitForUrlPredicate } from "./actions/wait-for-url-predicate.js";
46
+ import { resolveBrowserBridgeCompanionPairingTokenExpiresAt as _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt } from "./bridge-policy.js";
47
+ import { resolveBrowserBridgeReadiness as _bs_11_resolveBrowserBridgeReadiness } from "./bridge-readiness.js";
48
+ import { createBrowserBridgeCompanionStatus as _bs_12_createBrowserBridgeCompanionStatus } from "./bridge-records.js";
35
49
  import {
36
50
  BROWSER_SERVICE_TYPE as _bs_1_BROWSER_SERVICE_TYPE,
37
51
  BrowserService as _bs_2_BrowserService
38
52
  } from "./browser-service.js";
39
- import { resolveBrowserBridgeCompanionPairingTokenExpiresAt as _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt } from "./bridge-policy.js";
40
- import { resolveBrowserBridgeReadiness as _bs_11_resolveBrowserBridgeReadiness } from "./bridge-readiness.js";
41
- import { createBrowserBridgeCompanionStatus as _bs_12_createBrowserBridgeCompanionStatus } from "./bridge-records.js";
53
+ import { validateBrowserParityMatrix as _bs_16_validateBrowserParityMatrix } from "./parity/browser-matrix.js";
42
54
  import { browserPlugin as _bs_7_browserPlugin } from "./plugin.js";
43
55
  import {
44
56
  FRAME_FILE as _bs_8_FRAME_FILE,
@@ -58,7 +70,10 @@ const __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__ = [
58
70
  _bs_10_stopBrowserCapture,
59
71
  _bs_11_resolveBrowserBridgeReadiness,
60
72
  _bs_12_createBrowserBridgeCompanionStatus,
61
- _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt
73
+ _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt,
74
+ _bs_14_buildWaitForUrlPredicate,
75
+ _bs_15_waitForUrl,
76
+ _bs_16_validateBrowserParityMatrix
62
77
  ];
63
78
  const bundleSafetyGlobal = globalThis;
64
79
  bundleSafetyGlobal.__bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__ = __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__;
@@ -68,11 +83,15 @@ export {
68
83
  BrowserBridgeAdapter,
69
84
  BrowserService,
70
85
  FRAME_FILE,
86
+ WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS,
87
+ WAIT_FOR_URL_DEFAULT_TIMEOUT_MS,
71
88
  browserAction,
72
89
  browserPlugin,
90
+ buildWaitForUrlPredicate,
73
91
  executeBrowserAutofillLogin,
74
92
  manageBrowserBridgeAction,
75
93
  startBrowserCapture,
76
- stopBrowserCapture
94
+ stopBrowserCapture,
95
+ waitForUrl
77
96
  };
78
97
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @elizaos/plugin-browser — public barrel.\n *\n * Import specific surfaces through the subpath exports defined in\n * `package.json`:\n * - `@elizaos/plugin-browser/contracts`\n * - `@elizaos/plugin-browser/schema`\n * - `@elizaos/plugin-browser/packaging`\n * - `@elizaos/plugin-browser/routes`\n * - `@elizaos/plugin-browser/plugin`\n * - `@elizaos/plugin-browser/workspace` (browser-workspace command router)\n */\n\nexport { browserAction } from \"./actions/browser.js\";\nexport { executeBrowserAutofillLogin } from \"./actions/browser-autofill-login.js\";\nexport {\n BROWSER_BRIDGE_SUBACTIONS,\n type BrowserBridgeSubaction,\n manageBrowserBridgeAction,\n} from \"./actions/manage-browser-bridge.js\";\nexport {\n BROWSER_SERVICE_TYPE,\n BrowserService,\n type BrowserTarget,\n} from \"./browser-service.js\";\nexport * from \"./bridge-policy.js\";\nexport * from \"./bridge-readiness.js\";\nexport * from \"./bridge-records.js\";\nexport * from \"./companion-auth.js\";\nexport * from \"./contracts.js\";\nexport { BrowserBridgeAdapter } from \"./message-adapter.js\";\nexport * from \"./packaging.js\";\nexport * from \"./password-manager-bridge.js\";\nexport { browserPlugin } from \"./plugin.js\";\nexport * from \"./routes/bridge.js\";\nexport * from \"./schema.js\";\nexport * from \"./service.js\";\nexport {\n type BrowserCaptureConfig,\n FRAME_FILE,\n startBrowserCapture,\n stopBrowserCapture,\n} from \"./workspace/browser-capture.js\";\nexport * from \"./workspace/index.js\";\n\nimport { browserAction as _bs_4_browserAction } from \"./actions/browser.js\";\nimport { executeBrowserAutofillLogin as _bs_3_executeBrowserAutofillLogin } from \"./actions/browser-autofill-login.js\";\nimport {\n BROWSER_BRIDGE_SUBACTIONS as _bs_5_BROWSER_BRIDGE_SUBACTIONS,\n manageBrowserBridgeAction as _bs_6_manageBrowserBridgeAction,\n} from \"./actions/manage-browser-bridge.js\";\n// Bundle-safety: force binding identities into the module's init\n// function so Bun.build's tree-shake doesn't collapse this barrel\n// into an empty `init_X = () => {}`. Without this the on-device\n// mobile agent explodes with `ReferenceError: <name> is not defined`\n// when a consumer dereferences a re-exported binding at runtime.\nimport {\n BROWSER_SERVICE_TYPE as _bs_1_BROWSER_SERVICE_TYPE,\n BrowserService as _bs_2_BrowserService,\n} from \"./browser-service.js\";\nimport { resolveBrowserBridgeCompanionPairingTokenExpiresAt as _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt } from \"./bridge-policy.js\";\nimport { resolveBrowserBridgeReadiness as _bs_11_resolveBrowserBridgeReadiness } from \"./bridge-readiness.js\";\nimport { createBrowserBridgeCompanionStatus as _bs_12_createBrowserBridgeCompanionStatus } from \"./bridge-records.js\";\nimport { browserPlugin as _bs_7_browserPlugin } from \"./plugin.js\";\nimport {\n FRAME_FILE as _bs_8_FRAME_FILE,\n startBrowserCapture as _bs_9_startBrowserCapture,\n stopBrowserCapture as _bs_10_stopBrowserCapture,\n} from \"./workspace/browser-capture.js\";\n\n// Path-derived symbol so parents that `export *` two of these don't\n// collide on a shared `__BUNDLE_SAFETY__` name.\n// biome-ignore lint/correctness/noUnusedVariables: bundle-safety sink.\nconst __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__ = [\n _bs_1_BROWSER_SERVICE_TYPE,\n _bs_2_BrowserService,\n _bs_3_executeBrowserAutofillLogin,\n _bs_4_browserAction,\n _bs_5_BROWSER_BRIDGE_SUBACTIONS,\n _bs_6_manageBrowserBridgeAction,\n _bs_7_browserPlugin,\n _bs_8_FRAME_FILE,\n _bs_9_startBrowserCapture,\n _bs_10_stopBrowserCapture,\n _bs_11_resolveBrowserBridgeReadiness,\n _bs_12_createBrowserBridgeCompanionStatus,\n _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt,\n];\nconst bundleSafetyGlobal = globalThis as typeof globalThis & {\n __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__?: typeof __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__;\n};\nbundleSafetyGlobal.__bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__ =\n __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__;\n"],"mappings":"AAaA,SAAS,qBAAqB;AAC9B,SAAS,mCAAmC;AAC5C;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,4BAA4B;AACrC,cAAc;AACd,cAAc;AACd,SAAS,qBAAqB;AAC9B,cAAc;AACd,cAAc;AACd,cAAc;AACd;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAEd,SAAS,iBAAiB,2BAA2B;AACrD,SAAS,+BAA+B,yCAAyC;AACjF;AAAA,EACE,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,OACxB;AAMP;AAAA,EACE,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,OACb;AACP,SAAS,sDAAsD,iEAAiE;AAChI,SAAS,iCAAiC,4CAA4C;AACtF,SAAS,sCAAsC,iDAAiD;AAChG,SAAS,iBAAiB,2BAA2B;AACrD;AAAA,EACE,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,OACjB;AAKP,MAAM,qDAAqD;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,qBAAqB;AAG3B,mBAAmB,qDACjB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @elizaos/plugin-browser — public barrel.\n *\n * Import specific surfaces through the subpath exports defined in\n * `package.json`:\n * - `@elizaos/plugin-browser/contracts`\n * - `@elizaos/plugin-browser/schema`\n * - `@elizaos/plugin-browser/packaging`\n * - `@elizaos/plugin-browser/routes`\n * - `@elizaos/plugin-browser/plugin`\n * - `@elizaos/plugin-browser/workspace` (browser-workspace command router)\n */\n\nexport { browserAction } from \"./actions/browser.js\";\nexport { executeBrowserAutofillLogin } from \"./actions/browser-autofill-login.js\";\nexport {\n BROWSER_BRIDGE_SUBACTIONS,\n type BrowserBridgeSubaction,\n manageBrowserBridgeAction,\n} from \"./actions/manage-browser-bridge.js\";\nexport {\n WAIT_FOR_URL_DEFAULT_POLL_INTERVAL_MS,\n WAIT_FOR_URL_DEFAULT_TIMEOUT_MS,\n type WaitForUrlDeps,\n type WaitForUrlOptions,\n type WaitForUrlOutcome,\n type WaitForUrlStatus,\n waitForUrl,\n} from \"./actions/wait-for-url.js\";\nexport {\n buildWaitForUrlPredicate,\n type WaitForUrlPatternKind,\n type WaitForUrlPredicate,\n} from \"./actions/wait-for-url-predicate.js\";\nexport * from \"./bridge-policy.js\";\nexport * from \"./bridge-readiness.js\";\nexport * from \"./bridge-records.js\";\nexport {\n BROWSER_SERVICE_TYPE,\n BrowserService,\n type BrowserTarget,\n} from \"./browser-service.js\";\nexport * from \"./companion-auth.js\";\nexport * from \"./contracts.js\";\nexport { BrowserBridgeAdapter } from \"./message-adapter.js\";\nexport * from \"./packaging.js\";\nexport * from \"./parity/index.js\";\nexport * from \"./password-manager-bridge.js\";\nexport { browserPlugin } from \"./plugin.js\";\nexport * from \"./routes/bridge.js\";\nexport * from \"./schema.js\";\nexport * from \"./service.js\";\nexport {\n type BrowserCaptureConfig,\n FRAME_FILE,\n startBrowserCapture,\n stopBrowserCapture,\n} from \"./workspace/browser-capture.js\";\nexport * from \"./workspace/index.js\";\n\nimport { browserAction as _bs_4_browserAction } from \"./actions/browser.js\";\nimport { executeBrowserAutofillLogin as _bs_3_executeBrowserAutofillLogin } from \"./actions/browser-autofill-login.js\";\nimport {\n BROWSER_BRIDGE_SUBACTIONS as _bs_5_BROWSER_BRIDGE_SUBACTIONS,\n manageBrowserBridgeAction as _bs_6_manageBrowserBridgeAction,\n} from \"./actions/manage-browser-bridge.js\";\nimport { waitForUrl as _bs_15_waitForUrl } from \"./actions/wait-for-url.js\";\nimport { buildWaitForUrlPredicate as _bs_14_buildWaitForUrlPredicate } from \"./actions/wait-for-url-predicate.js\";\nimport { resolveBrowserBridgeCompanionPairingTokenExpiresAt as _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt } from \"./bridge-policy.js\";\nimport { resolveBrowserBridgeReadiness as _bs_11_resolveBrowserBridgeReadiness } from \"./bridge-readiness.js\";\nimport { createBrowserBridgeCompanionStatus as _bs_12_createBrowserBridgeCompanionStatus } from \"./bridge-records.js\";\n// Bundle-safety: force binding identities into the module's init\n// function so Bun.build's tree-shake doesn't collapse this barrel\n// into an empty `init_X = () => {}`. Without this the on-device\n// mobile agent explodes with `ReferenceError: <name> is not defined`\n// when a consumer dereferences a re-exported binding at runtime.\nimport {\n BROWSER_SERVICE_TYPE as _bs_1_BROWSER_SERVICE_TYPE,\n BrowserService as _bs_2_BrowserService,\n} from \"./browser-service.js\";\nimport { validateBrowserParityMatrix as _bs_16_validateBrowserParityMatrix } from \"./parity/browser-matrix.js\";\nimport { browserPlugin as _bs_7_browserPlugin } from \"./plugin.js\";\nimport {\n FRAME_FILE as _bs_8_FRAME_FILE,\n startBrowserCapture as _bs_9_startBrowserCapture,\n stopBrowserCapture as _bs_10_stopBrowserCapture,\n} from \"./workspace/browser-capture.js\";\n\n// Path-derived symbol so parents that `export *` two of these don't\n// collide on a shared `__BUNDLE_SAFETY__` name.\nconst __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__ = [\n _bs_1_BROWSER_SERVICE_TYPE,\n _bs_2_BrowserService,\n _bs_3_executeBrowserAutofillLogin,\n _bs_4_browserAction,\n _bs_5_BROWSER_BRIDGE_SUBACTIONS,\n _bs_6_manageBrowserBridgeAction,\n _bs_7_browserPlugin,\n _bs_8_FRAME_FILE,\n _bs_9_startBrowserCapture,\n _bs_10_stopBrowserCapture,\n _bs_11_resolveBrowserBridgeReadiness,\n _bs_12_createBrowserBridgeCompanionStatus,\n _bs_13_resolveBrowserBridgeCompanionPairingTokenExpiresAt,\n _bs_14_buildWaitForUrlPredicate,\n _bs_15_waitForUrl,\n _bs_16_validateBrowserParityMatrix,\n];\nconst bundleSafetyGlobal = globalThis as typeof globalThis & {\n __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__?: typeof __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__;\n};\nbundleSafetyGlobal.__bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__ =\n __bundle_safety_PLUGINS_PLUGIN_BROWSER_SRC_INDEX__;\n"],"mappings":"AAaA,SAAS,qBAAqB;AAC9B,SAAS,mCAAmC;AAC5C;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EAKA;AAAA,OACK;AACP;AAAA,EACE;AAAA,OAGK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,cAAc;AACd,cAAc;AACd,SAAS,4BAA4B;AACrC,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,qBAAqB;AAC9B,cAAc;AACd,cAAc;AACd,cAAc;AACd;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAEd,SAAS,iBAAiB,2BAA2B;AACrD,SAAS,+BAA+B,yCAAyC;AACjF;AAAA,EACE,6BAA6B;AAAA,EAC7B,6BAA6B;AAAA,OACxB;AACP,SAAS,cAAc,yBAAyB;AAChD,SAAS,4BAA4B,uCAAuC;AAC5E,SAAS,sDAAsD,iEAAiE;AAChI,SAAS,iCAAiC,4CAA4C;AACtF,SAAS,sCAAsC,iDAAiD;AAMhG;AAAA,EACE,wBAAwB;AAAA,EACxB,kBAAkB;AAAA,OACb;AACP,SAAS,+BAA+B,0CAA0C;AAClF,SAAS,iBAAiB,2BAA2B;AACrD;AAAA,EACE,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,OACjB;AAIP,MAAM,qDAAqD;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,qBAAqB;AAG3B,mBAAmB,qDACjB;","names":[]}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Machine-checkable browser action parity matrix (#9476).
3
+ *
4
+ * This is the browser equivalent of plugin-computeruse's parity guard: the
5
+ * matrix is data, and the validator cross-checks it against the live registered
6
+ * action surface plus the BROWSER action schema. That keeps browser capability
7
+ * coverage from drifting silently while real-driver and benchmark lanes are
8
+ * added.
9
+ */
10
+ import type { Action } from "@elizaos/core";
11
+ export type BrowserParityStatus = "have" | "partial" | "planned" | "na";
12
+ export type BrowserParitySurface = "workspace" | "legacy-alias" | "credential" | "waiter";
13
+ export interface BrowserParityCapability {
14
+ /** Canonical capability id. Usually the exposed BROWSER action value. */
15
+ id: string;
16
+ /** Value declared in the BROWSER action schema. */
17
+ actionValue?: string;
18
+ /** Registered promoted action name for this capability. */
19
+ elizaVerb?: string;
20
+ /** Runtime command/subaction this capability dispatches to. */
21
+ dispatchesTo?: string;
22
+ status: BrowserParityStatus;
23
+ surface: BrowserParitySurface;
24
+ note?: string;
25
+ }
26
+ export declare const BROWSER_PARITY_MATRIX: readonly BrowserParityCapability[];
27
+ export interface BrowserParityValidationProblem {
28
+ capability: string;
29
+ problem: string;
30
+ }
31
+ export interface BrowserParityValidationResult {
32
+ ok: boolean;
33
+ problems: BrowserParityValidationProblem[];
34
+ confirmed: number;
35
+ }
36
+ export declare function browserParitySummary(): {
37
+ have: number;
38
+ partial: number;
39
+ planned: number;
40
+ na: number;
41
+ total: number;
42
+ };
43
+ export declare function validateBrowserParityMatrix(actionNames: readonly string[], actionValues?: readonly string[]): BrowserParityValidationResult;
44
+ export declare function browserActionNames(actions: readonly Action[]): readonly string[];
45
+ //# sourceMappingURL=browser-matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-matrix.d.ts","sourceRoot":"","sources":["../../src/parity/browser-matrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;AACxE,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,cAAc,GACd,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,eAAO,MAAM,qBAAqB,EAAE,SAAS,uBAAuB,EAsQnE,CAAC;AAEF,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,8BAA8B,EAAE,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,oBAAoB,IAAI;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAYA;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,YAAY,GAAE,SAAS,MAAM,EAA8B,GAC1D,6BAA6B,CA8E/B;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,SAAS,MAAM,EAAE,CAEnB"}