opendevbrowser 0.0.33 → 0.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{accessibility-snapshot-JSPFVWZ6.js → accessibility-snapshot-VCBXK47S.js} +7 -7
- package/dist/{active-window-2OB2MSCR.js → active-window-7EUN36LZ.js} +7 -7
- package/dist/{annotate-VDZBZBKZ.js → annotate-VLBK7YB6.js} +6 -6
- package/dist/{attr-7XIO4MCH.js → attr-JNANQKM6.js} +6 -6
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/manager-types.d.ts +3 -0
- package/dist/browser/manager-types.d.ts.map +1 -1
- package/dist/browser/ops-browser-manager.d.ts.map +1 -1
- package/dist/browser/screencast-recorder.d.ts +1 -0
- package/dist/browser/screencast-recorder.d.ts.map +1 -1
- package/dist/{canvas-N4PAA274.js → canvas-V5LO4JVL.js} +6 -6
- package/dist/{capture-desktop-T5YO3EBI.js → capture-desktop-FKVDWTVG.js} +7 -7
- package/dist/{capture-window-UKEUBWKH.js → capture-window-QVPM2DN2.js} +7 -7
- package/dist/{check-PQB6KKMN.js → check-V3CWZ56S.js} +6 -6
- package/dist/{checked-RNZIMCU6.js → checked-Q27Q6YZN.js} +6 -6
- package/dist/{chunk-FBKPDILE.js → chunk-5FDXH4CS.js} +315 -37
- package/dist/chunk-5FDXH4CS.js.map +1 -0
- package/dist/{chunk-J3KYGJRQ.js → chunk-G6NQ7WYD.js} +2 -2
- package/dist/{chunk-27W46IKI.js → chunk-GC2FWISX.js} +22 -11
- package/dist/chunk-GC2FWISX.js.map +1 -0
- package/dist/{chunk-MJF67OTH.js → chunk-NX2XYJP5.js} +2 -2
- package/dist/{chunk-FDBUB7BM.js → chunk-OJAUKABV.js} +2 -2
- package/dist/{chunk-HMRANSDX.js → chunk-QXJDJDSZ.js} +34 -13
- package/dist/chunk-QXJDJDSZ.js.map +1 -0
- package/dist/{chunk-SKFB5ICF.js → chunk-TI5I6UWY.js} +8 -3
- package/dist/chunk-TI5I6UWY.js.map +1 -0
- package/dist/{chunk-W6YPVNDX.js → chunk-VTGG5ZU2.js} +2 -2
- package/dist/{chunk-YRRRUGSQ.js → chunk-VX47SJZM.js} +2 -2
- package/dist/{chunk-JROW6ZNN.js → chunk-VY47VKXU.js} +3 -3
- package/dist/{chunk-NURQB55J.js → chunk-WY72GYAH.js} +2 -2
- package/dist/{chunk-EOX6U6Q4.js → chunk-XRDCSHKZ.js} +158 -110
- package/dist/chunk-XRDCSHKZ.js.map +1 -0
- package/dist/{chunk-52ZIOWVU.js → chunk-Z3HIX2SE.js} +3 -3
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/index.js +75 -75
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/parse.d.ts +1 -0
- package/dist/cli/utils/parse.d.ts.map +1 -1
- package/dist/{click-U7ZFKSB4.js → click-EQDRSLR3.js} +6 -6
- package/dist/{clone-component-SWYAORTU.js → clone-component-SISUXTJS.js} +5 -5
- package/dist/{clone-page-WJ6UJOJG.js → clone-page-MLDPCBOY.js} +5 -5
- package/dist/{close-VKIGIKVT.js → close-2LQMJVOA.js} +5 -5
- package/dist/{close-NAVIHZ2T.js → close-7J7EV237.js} +5 -5
- package/dist/{connect-XVG2MOZL.js → connect-JFRSIW5M.js} +6 -6
- package/dist/{console-poll-XI5BZPL7.js → console-poll-NSVVUNEC.js} +6 -6
- package/dist/{cookie-import-QELKE7TK.js → cookie-import-B7IQTGTN.js} +5 -5
- package/dist/{cookie-list-QDA6KWIY.js → cookie-list-YHG7JCZZ.js} +5 -5
- package/dist/{daemon-CA4UIIZQ.js → daemon-ENU4FOV4.js} +4 -4
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/{debug-trace-snapshot-AT4GAO57.js → debug-trace-snapshot-KLGU2AWY.js} +6 -6
- package/dist/{dialog-O3V2IBFH.js → dialog-MUVQIERS.js} +6 -6
- package/dist/{disconnect-NAX5TPTG.js → disconnect-KELQJ45J.js} +5 -5
- package/dist/{enabled-VT4FJXDX.js → enabled-SF6UU5HG.js} +6 -6
- package/dist/{goto-GBJG5NC4.js → goto-AZQWXYPG.js} +6 -6
- package/dist/guidance/context.d.ts.map +1 -1
- package/dist/guidance/recipes/generic.d.ts.map +1 -1
- package/dist/guidance/recipes/pinterest.d.ts.map +1 -1
- package/dist/guidance/recipes/site-recipe-validation.d.ts +27 -0
- package/dist/guidance/recipes/site-recipe-validation.d.ts.map +1 -0
- package/dist/guidance/types.d.ts +1 -0
- package/dist/guidance/types.d.ts.map +1 -1
- package/dist/{help-SUI4H77K.js → help-B44IBHXL.js} +3 -3
- package/dist/{hover-476ZNQZE.js → hover-MQRAKKVU.js} +6 -6
- package/dist/{html-5C4TXOV3.js → html-PLRTU2WS.js} +6 -6
- package/dist/index.js +49 -14
- package/dist/index.js.map +1 -1
- package/dist/{inspector-73ARPCIV.js → inspector-IY4GBIT6.js} +7 -7
- package/dist/{inspector-audit-QT6QY7KS.js → inspector-audit-7MQCRJHD.js} +9 -9
- package/dist/{inspector-plan-JRNSGN2Z.js → inspector-plan-ZAUDHBET.js} +7 -7
- package/dist/inspiredesign/contract.d.ts +1 -0
- package/dist/inspiredesign/contract.d.ts.map +1 -1
- package/dist/inspiredesign/reference-pattern-board.d.ts +5 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
- package/dist/{inspiredesign-IPVZDLSQ.js → inspiredesign-VHPEO3UK.js} +80 -27
- package/dist/inspiredesign-VHPEO3UK.js.map +1 -0
- package/dist/{launch-B35YDRQC.js → launch-OCTWPTV5.js} +6 -6
- package/dist/{list-YETWKTKY.js → list-HUSYADUS.js} +5 -5
- package/dist/{list-JV55JVGB.js → list-JWKAMAUA.js} +5 -5
- package/dist/{macro-resolve-DQK4B3W3.js → macro-resolve-WOXMPZDQ.js} +6 -6
- package/dist/{network-poll-4GWHCJXI.js → network-poll-WHB62OEF.js} +6 -6
- package/dist/{new-XDCQPIEG.js → new-IKZBYBNK.js} +5 -5
- package/dist/{open-GIM3ZCSV.js → open-UA2VI6ZP.js} +5 -5
- package/dist/opendevbrowser.js +49 -14
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/{perf-26VBXDPI.js → perf-DICS3VKH.js} +6 -6
- package/dist/{pointer-down-O3VSNAXW.js → pointer-down-2XPRZFJC.js} +7 -7
- package/dist/{pointer-drag-WQ5QGE6J.js → pointer-drag-7NY4BOLH.js} +7 -7
- package/dist/{pointer-move-4N4D7JY2.js → pointer-move-FWEXMH37.js} +7 -7
- package/dist/{pointer-up-CQC4NPDX.js → pointer-up-VU2OHK5D.js} +7 -7
- package/dist/{press-XGJD45CU.js → press-W7IZ3FCX.js} +6 -6
- package/dist/{product-video-HD4ZOUI7.js → product-video-XCZ6CHR5.js} +7 -7
- package/dist/providers/browser-output-artifacts.d.ts +13 -0
- package/dist/providers/browser-output-artifacts.d.ts.map +1 -0
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-KKNPJSQK.js → providers-XCNSU3T6.js} +2 -2
- package/dist/public-surface/generated-manifest.d.ts +3 -3
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/{research-VUWWEQ4R.js → research-AYCKHOWK.js} +7 -7
- package/dist/{review-LZ3TA7U7.js → review-PP2UNSMJ.js} +7 -7
- package/dist/{review-desktop-LAO7U7T3.js → review-desktop-3JOJFUEJ.js} +7 -7
- package/dist/{rpc-HKNIVFGC.js → rpc-7EPTJQQ6.js} +6 -6
- package/dist/{run-SHCF53FO.js → run-P6UJS3D4.js} +4 -4
- package/dist/{screencast-start-JHMQZVWJ.js → screencast-start-ZZYNH2HT.js} +6 -6
- package/dist/{screencast-stop-RWQTWWQS.js → screencast-stop-Y6ADFOFA.js} +6 -6
- package/dist/{screenshot-QHFYO6PB.js → screenshot-CJB7PMAF.js} +6 -6
- package/dist/{scroll-L3FTMAV4.js → scroll-BP5MA4ZT.js} +6 -6
- package/dist/{scroll-into-view-JVDHX4WU.js → scroll-into-view-O3RDWLM2.js} +6 -6
- package/dist/{select-X4BO7GTB.js → select-QLCNRI36.js} +6 -6
- package/dist/{serve-JIMIBCNO.js → serve-OO2MQWGL.js} +5 -5
- package/dist/{shopping-EGSDP2GL.js → shopping-UYHCYPAH.js} +7 -7
- package/dist/{snapshot-QGJ7RDNV.js → snapshot-SXYZ3CMC.js} +6 -6
- package/dist/{status-CKGPNYIH.js → status-AL2AHVA5.js} +5 -5
- package/dist/{status-LEBY2X7N.js → status-QQW7REK4.js} +7 -7
- package/dist/{status-capabilities-6QTWNGKM.js → status-capabilities-AVHJYQQQ.js} +7 -7
- package/dist/{text-VUZU7D3L.js → text-B6Z47EOA.js} +6 -6
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/tools/product_video_run.d.ts.map +1 -1
- package/dist/{type-N5SURP74.js → type-LR3F3SQY.js} +6 -6
- package/dist/{uncheck-JFMK3SSY.js → uncheck-5PJEHR7J.js} +6 -6
- package/dist/{upload-KFUYLL7M.js → upload-HQ3QN2OW.js} +6 -6
- package/dist/{use-CNMPP2ED.js → use-KFZLMRUH.js} +5 -5
- package/dist/{value-J335MPZE.js → value-TKUFUK5I.js} +6 -6
- package/dist/{visible-YQZWWPBZ.js → visible-P5Z2N2QR.js} +6 -6
- package/dist/{wait-IC7YJJPJ.js → wait-BYSHJPSC.js} +6 -6
- package/dist/{windows-AGVQ3KX3.js → windows-6GTD25EU.js} +7 -7
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/dist/chunk-27W46IKI.js.map +0 -1
- package/dist/chunk-EOX6U6Q4.js.map +0 -1
- package/dist/chunk-FBKPDILE.js.map +0 -1
- package/dist/chunk-HMRANSDX.js.map +0 -1
- package/dist/chunk-SKFB5ICF.js.map +0 -1
- package/dist/inspiredesign-IPVZDLSQ.js.map +0 -1
- /package/dist/{accessibility-snapshot-JSPFVWZ6.js.map → accessibility-snapshot-VCBXK47S.js.map} +0 -0
- /package/dist/{active-window-2OB2MSCR.js.map → active-window-7EUN36LZ.js.map} +0 -0
- /package/dist/{annotate-VDZBZBKZ.js.map → annotate-VLBK7YB6.js.map} +0 -0
- /package/dist/{attr-7XIO4MCH.js.map → attr-JNANQKM6.js.map} +0 -0
- /package/dist/{canvas-N4PAA274.js.map → canvas-V5LO4JVL.js.map} +0 -0
- /package/dist/{capture-desktop-T5YO3EBI.js.map → capture-desktop-FKVDWTVG.js.map} +0 -0
- /package/dist/{capture-window-UKEUBWKH.js.map → capture-window-QVPM2DN2.js.map} +0 -0
- /package/dist/{check-PQB6KKMN.js.map → check-V3CWZ56S.js.map} +0 -0
- /package/dist/{checked-RNZIMCU6.js.map → checked-Q27Q6YZN.js.map} +0 -0
- /package/dist/{chunk-J3KYGJRQ.js.map → chunk-G6NQ7WYD.js.map} +0 -0
- /package/dist/{chunk-MJF67OTH.js.map → chunk-NX2XYJP5.js.map} +0 -0
- /package/dist/{chunk-FDBUB7BM.js.map → chunk-OJAUKABV.js.map} +0 -0
- /package/dist/{chunk-W6YPVNDX.js.map → chunk-VTGG5ZU2.js.map} +0 -0
- /package/dist/{chunk-YRRRUGSQ.js.map → chunk-VX47SJZM.js.map} +0 -0
- /package/dist/{chunk-JROW6ZNN.js.map → chunk-VY47VKXU.js.map} +0 -0
- /package/dist/{chunk-NURQB55J.js.map → chunk-WY72GYAH.js.map} +0 -0
- /package/dist/{chunk-52ZIOWVU.js.map → chunk-Z3HIX2SE.js.map} +0 -0
- /package/dist/{click-U7ZFKSB4.js.map → click-EQDRSLR3.js.map} +0 -0
- /package/dist/{clone-component-SWYAORTU.js.map → clone-component-SISUXTJS.js.map} +0 -0
- /package/dist/{clone-page-WJ6UJOJG.js.map → clone-page-MLDPCBOY.js.map} +0 -0
- /package/dist/{close-VKIGIKVT.js.map → close-2LQMJVOA.js.map} +0 -0
- /package/dist/{close-NAVIHZ2T.js.map → close-7J7EV237.js.map} +0 -0
- /package/dist/{connect-XVG2MOZL.js.map → connect-JFRSIW5M.js.map} +0 -0
- /package/dist/{console-poll-XI5BZPL7.js.map → console-poll-NSVVUNEC.js.map} +0 -0
- /package/dist/{cookie-import-QELKE7TK.js.map → cookie-import-B7IQTGTN.js.map} +0 -0
- /package/dist/{cookie-list-QDA6KWIY.js.map → cookie-list-YHG7JCZZ.js.map} +0 -0
- /package/dist/{daemon-CA4UIIZQ.js.map → daemon-ENU4FOV4.js.map} +0 -0
- /package/dist/{debug-trace-snapshot-AT4GAO57.js.map → debug-trace-snapshot-KLGU2AWY.js.map} +0 -0
- /package/dist/{dialog-O3V2IBFH.js.map → dialog-MUVQIERS.js.map} +0 -0
- /package/dist/{disconnect-NAX5TPTG.js.map → disconnect-KELQJ45J.js.map} +0 -0
- /package/dist/{enabled-VT4FJXDX.js.map → enabled-SF6UU5HG.js.map} +0 -0
- /package/dist/{goto-GBJG5NC4.js.map → goto-AZQWXYPG.js.map} +0 -0
- /package/dist/{help-SUI4H77K.js.map → help-B44IBHXL.js.map} +0 -0
- /package/dist/{hover-476ZNQZE.js.map → hover-MQRAKKVU.js.map} +0 -0
- /package/dist/{html-5C4TXOV3.js.map → html-PLRTU2WS.js.map} +0 -0
- /package/dist/{inspector-73ARPCIV.js.map → inspector-IY4GBIT6.js.map} +0 -0
- /package/dist/{inspector-audit-QT6QY7KS.js.map → inspector-audit-7MQCRJHD.js.map} +0 -0
- /package/dist/{inspector-plan-JRNSGN2Z.js.map → inspector-plan-ZAUDHBET.js.map} +0 -0
- /package/dist/{launch-B35YDRQC.js.map → launch-OCTWPTV5.js.map} +0 -0
- /package/dist/{list-YETWKTKY.js.map → list-HUSYADUS.js.map} +0 -0
- /package/dist/{list-JV55JVGB.js.map → list-JWKAMAUA.js.map} +0 -0
- /package/dist/{macro-resolve-DQK4B3W3.js.map → macro-resolve-WOXMPZDQ.js.map} +0 -0
- /package/dist/{network-poll-4GWHCJXI.js.map → network-poll-WHB62OEF.js.map} +0 -0
- /package/dist/{new-XDCQPIEG.js.map → new-IKZBYBNK.js.map} +0 -0
- /package/dist/{open-GIM3ZCSV.js.map → open-UA2VI6ZP.js.map} +0 -0
- /package/dist/{perf-26VBXDPI.js.map → perf-DICS3VKH.js.map} +0 -0
- /package/dist/{pointer-down-O3VSNAXW.js.map → pointer-down-2XPRZFJC.js.map} +0 -0
- /package/dist/{pointer-drag-WQ5QGE6J.js.map → pointer-drag-7NY4BOLH.js.map} +0 -0
- /package/dist/{pointer-move-4N4D7JY2.js.map → pointer-move-FWEXMH37.js.map} +0 -0
- /package/dist/{pointer-up-CQC4NPDX.js.map → pointer-up-VU2OHK5D.js.map} +0 -0
- /package/dist/{press-XGJD45CU.js.map → press-W7IZ3FCX.js.map} +0 -0
- /package/dist/{product-video-HD4ZOUI7.js.map → product-video-XCZ6CHR5.js.map} +0 -0
- /package/dist/{providers-KKNPJSQK.js.map → providers-XCNSU3T6.js.map} +0 -0
- /package/dist/{research-VUWWEQ4R.js.map → research-AYCKHOWK.js.map} +0 -0
- /package/dist/{review-LZ3TA7U7.js.map → review-PP2UNSMJ.js.map} +0 -0
- /package/dist/{review-desktop-LAO7U7T3.js.map → review-desktop-3JOJFUEJ.js.map} +0 -0
- /package/dist/{rpc-HKNIVFGC.js.map → rpc-7EPTJQQ6.js.map} +0 -0
- /package/dist/{run-SHCF53FO.js.map → run-P6UJS3D4.js.map} +0 -0
- /package/dist/{screencast-start-JHMQZVWJ.js.map → screencast-start-ZZYNH2HT.js.map} +0 -0
- /package/dist/{screencast-stop-RWQTWWQS.js.map → screencast-stop-Y6ADFOFA.js.map} +0 -0
- /package/dist/{screenshot-QHFYO6PB.js.map → screenshot-CJB7PMAF.js.map} +0 -0
- /package/dist/{scroll-L3FTMAV4.js.map → scroll-BP5MA4ZT.js.map} +0 -0
- /package/dist/{scroll-into-view-JVDHX4WU.js.map → scroll-into-view-O3RDWLM2.js.map} +0 -0
- /package/dist/{select-X4BO7GTB.js.map → select-QLCNRI36.js.map} +0 -0
- /package/dist/{serve-JIMIBCNO.js.map → serve-OO2MQWGL.js.map} +0 -0
- /package/dist/{shopping-EGSDP2GL.js.map → shopping-UYHCYPAH.js.map} +0 -0
- /package/dist/{snapshot-QGJ7RDNV.js.map → snapshot-SXYZ3CMC.js.map} +0 -0
- /package/dist/{status-CKGPNYIH.js.map → status-AL2AHVA5.js.map} +0 -0
- /package/dist/{status-LEBY2X7N.js.map → status-QQW7REK4.js.map} +0 -0
- /package/dist/{status-capabilities-6QTWNGKM.js.map → status-capabilities-AVHJYQQQ.js.map} +0 -0
- /package/dist/{text-VUZU7D3L.js.map → text-B6Z47EOA.js.map} +0 -0
- /package/dist/{type-N5SURP74.js.map → type-LR3F3SQY.js.map} +0 -0
- /package/dist/{uncheck-JFMK3SSY.js.map → uncheck-5PJEHR7J.js.map} +0 -0
- /package/dist/{upload-KFUYLL7M.js.map → upload-HQ3QN2OW.js.map} +0 -0
- /package/dist/{use-CNMPP2ED.js.map → use-KFZLMRUH.js.map} +0 -0
- /package/dist/{value-J335MPZE.js.map → value-TKUFUK5I.js.map} +0 -0
- /package/dist/{visible-YQZWWPBZ.js.map → visible-P5Z2N2QR.js.map} +0 -0
- /package/dist/{wait-IC7YJJPJ.js.map → wait-BYSHJPSC.js.map} +0 -0
- /package/dist/{windows-AGVQ3KX3.js.map → windows-6GTD25EU.js.map} +0 -0
|
@@ -54,8 +54,9 @@ import {
|
|
|
54
54
|
inspectChallengePlanFromRuntime,
|
|
55
55
|
resolveChallengeAutomationPolicy,
|
|
56
56
|
resolveProviderRuntimePolicy,
|
|
57
|
+
resolveWorkflowArtifactRoot,
|
|
57
58
|
toSnippet
|
|
58
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-5FDXH4CS.js";
|
|
59
60
|
import {
|
|
60
61
|
buildBlockerArtifacts,
|
|
61
62
|
classifyBlockerSignal,
|
|
@@ -3662,9 +3663,9 @@ function createCoreRuntimeAssemblies(args2) {
|
|
|
3662
3663
|
import { parse, resolve as resolve6 } from "path";
|
|
3663
3664
|
|
|
3664
3665
|
// src/browser/browser-manager.ts
|
|
3665
|
-
import { randomUUID as
|
|
3666
|
+
import { randomUUID as randomUUID11 } from "crypto";
|
|
3666
3667
|
import { access as access2, mkdir as mkdir5, rm as rm3, writeFile as writeFile3 } from "fs/promises";
|
|
3667
|
-
import { join as
|
|
3668
|
+
import { join as join10 } from "path";
|
|
3668
3669
|
import { freemem, totalmem } from "os";
|
|
3669
3670
|
import { Mutex } from "async-mutex";
|
|
3670
3671
|
|
|
@@ -4952,6 +4953,28 @@ function sanitizeWsEndpoint(wsEndpoint) {
|
|
|
4952
4953
|
}
|
|
4953
4954
|
}
|
|
4954
4955
|
|
|
4956
|
+
// src/providers/browser-output-artifacts.ts
|
|
4957
|
+
import { randomUUID as randomUUID7 } from "crypto";
|
|
4958
|
+
import { mkdirSync as mkdirSync2 } from "fs";
|
|
4959
|
+
import { join as join7 } from "path";
|
|
4960
|
+
var BROWSER_SCREENSHOT_ARTIFACT_NAMESPACE = "screenshot";
|
|
4961
|
+
var BROWSER_SCREENCAST_ARTIFACT_NAMESPACE = "screencast";
|
|
4962
|
+
var SAFE_BROWSER_ARTIFACT_NAMESPACE_PATTERN = /^[a-z0-9_-]+$/;
|
|
4963
|
+
function createBrowserOutputArtifactDirectory(input) {
|
|
4964
|
+
const namespace = input.namespace.trim();
|
|
4965
|
+
if (namespace.length === 0) {
|
|
4966
|
+
throw new Error("Browser output artifact namespace cannot be empty.");
|
|
4967
|
+
}
|
|
4968
|
+
if (!SAFE_BROWSER_ARTIFACT_NAMESPACE_PATTERN.test(namespace)) {
|
|
4969
|
+
throw new Error("Browser output artifact namespace can only contain lowercase letters, numbers, underscores, and hyphens.");
|
|
4970
|
+
}
|
|
4971
|
+
const root = resolveWorkflowArtifactRoot(void 0, { workspaceRoot: input.workspaceRoot });
|
|
4972
|
+
const runId = randomUUID7();
|
|
4973
|
+
const artifactPath = join7(root, namespace, runId);
|
|
4974
|
+
mkdirSync2(artifactPath, { recursive: true, mode: 448 });
|
|
4975
|
+
return { artifactPath, namespace, runId };
|
|
4976
|
+
}
|
|
4977
|
+
|
|
4955
4978
|
// src/browser/manager-types.ts
|
|
4956
4979
|
var SCREENCAST_RETENTION_MS = 10 * 6e4;
|
|
4957
4980
|
|
|
@@ -5575,7 +5598,7 @@ var SessionStore = class {
|
|
|
5575
5598
|
};
|
|
5576
5599
|
|
|
5577
5600
|
// src/browser/target-manager.ts
|
|
5578
|
-
import { randomUUID as
|
|
5601
|
+
import { randomUUID as randomUUID8 } from "crypto";
|
|
5579
5602
|
var TARGET_INFO_TIMEOUT_MS = 2e3;
|
|
5580
5603
|
var TargetManager = class {
|
|
5581
5604
|
targets = /* @__PURE__ */ new Map();
|
|
@@ -5583,7 +5606,7 @@ var TargetManager = class {
|
|
|
5583
5606
|
nameToTarget = /* @__PURE__ */ new Map();
|
|
5584
5607
|
targetToName = /* @__PURE__ */ new Map();
|
|
5585
5608
|
registerPage(page, name) {
|
|
5586
|
-
const targetId =
|
|
5609
|
+
const targetId = randomUUID8();
|
|
5587
5610
|
this.targets.set(targetId, page);
|
|
5588
5611
|
if (!this.activeTargetId) {
|
|
5589
5612
|
this.activeTargetId = targetId;
|
|
@@ -5901,7 +5924,7 @@ import { execFileSync } from "child_process";
|
|
|
5901
5924
|
import { createDecipheriv, createHash as createHash3, pbkdf2Sync } from "crypto";
|
|
5902
5925
|
import { cp, mkdtemp as mkdtemp2, mkdir as mkdir3, rm as rm2, stat as stat3 } from "fs/promises";
|
|
5903
5926
|
import { tmpdir } from "os";
|
|
5904
|
-
import { dirname, join as
|
|
5927
|
+
import { dirname, join as join8 } from "path";
|
|
5905
5928
|
var ROOT_COPY_ENTRIES = ["Local State"];
|
|
5906
5929
|
var PROFILE_COPY_ENTRIES = [
|
|
5907
5930
|
"Preferences",
|
|
@@ -5959,7 +5982,7 @@ async function stageSystemChromeProfile(source, stagingRoot) {
|
|
|
5959
5982
|
let copiedCookieStore = false;
|
|
5960
5983
|
for (const entry of ROOT_COPY_ENTRIES) {
|
|
5961
5984
|
try {
|
|
5962
|
-
await copyEntry(
|
|
5985
|
+
await copyEntry(join8(source.userDataDir, entry), join8(stagingRoot, entry));
|
|
5963
5986
|
} catch (error) {
|
|
5964
5987
|
warnings.push(`Chrome bootstrap skipped ${entry}: ${getErrorMessage(error)}`);
|
|
5965
5988
|
}
|
|
@@ -5967,8 +5990,8 @@ async function stageSystemChromeProfile(source, stagingRoot) {
|
|
|
5967
5990
|
for (const entry of PROFILE_COPY_ENTRIES) {
|
|
5968
5991
|
try {
|
|
5969
5992
|
const copied = await copyEntry(
|
|
5970
|
-
|
|
5971
|
-
|
|
5993
|
+
join8(source.profilePath, entry),
|
|
5994
|
+
join8(stagingRoot, source.profileDirectory, entry)
|
|
5972
5995
|
);
|
|
5973
5996
|
if (copied && COOKIE_STORE_ENTRY_SET.has(entry)) {
|
|
5974
5997
|
copiedCookieStore = true;
|
|
@@ -6074,8 +6097,8 @@ async function loadSystemChromeCookiesFromSqlite(source, platform = process.plat
|
|
|
6074
6097
|
return { cookies: [], warnings: [], attempted: false };
|
|
6075
6098
|
}
|
|
6076
6099
|
const cookieDbCandidates = [
|
|
6077
|
-
|
|
6078
|
-
|
|
6100
|
+
join8(source.profilePath, "Cookies"),
|
|
6101
|
+
join8(source.profilePath, "Network", "Cookies")
|
|
6079
6102
|
];
|
|
6080
6103
|
const cookieDbPath = await firstExistingPath(cookieDbCandidates);
|
|
6081
6104
|
if (!cookieDbPath) {
|
|
@@ -6145,7 +6168,7 @@ async function loadSystemChromeCookies(executablePath) {
|
|
|
6145
6168
|
warnings: direct.warnings
|
|
6146
6169
|
};
|
|
6147
6170
|
}
|
|
6148
|
-
const stagingRoot = await mkdtemp2(
|
|
6171
|
+
const stagingRoot = await mkdtemp2(join8(tmpdir(), "opendevbrowser-chrome-cookie-bootstrap-"));
|
|
6149
6172
|
try {
|
|
6150
6173
|
const staged = await stageSystemChromeProfile(source, stagingRoot);
|
|
6151
6174
|
if (!staged.copiedCookieStore) {
|
|
@@ -6203,7 +6226,7 @@ function getErrorMessage(error) {
|
|
|
6203
6226
|
}
|
|
6204
6227
|
|
|
6205
6228
|
// src/browser/global-challenge-coordinator.ts
|
|
6206
|
-
import { randomUUID as
|
|
6229
|
+
import { randomUUID as randomUUID9 } from "crypto";
|
|
6207
6230
|
var PRESERVE_WINDOW_MS = 15 * 60 * 1e3;
|
|
6208
6231
|
var VERIFY_WINDOW_MS = 5 * 60 * 1e3;
|
|
6209
6232
|
var toIso = (value) => value.toISOString();
|
|
@@ -6225,7 +6248,7 @@ var GlobalChallengeCoordinator = class {
|
|
|
6225
6248
|
claimOrRefresh(args2) {
|
|
6226
6249
|
const now = args2.now ?? /* @__PURE__ */ new Date();
|
|
6227
6250
|
const existing = this.bySessionId.get(args2.sessionId);
|
|
6228
|
-
const challengeId = existing?.summary.challengeId ??
|
|
6251
|
+
const challengeId = existing?.summary.challengeId ?? randomUUID9();
|
|
6229
6252
|
const previousTimeline = existing?.timeline ?? [];
|
|
6230
6253
|
const nextEntry = {
|
|
6231
6254
|
at: toIso(now),
|
|
@@ -6317,8 +6340,8 @@ var GlobalChallengeCoordinator = class {
|
|
|
6317
6340
|
|
|
6318
6341
|
// src/browser/screencast-recorder.ts
|
|
6319
6342
|
import { copyFile, mkdir as mkdir4, readdir, writeFile as writeFile2 } from "fs/promises";
|
|
6320
|
-
import { randomUUID as
|
|
6321
|
-
import { isAbsolute as isAbsolute2, join as
|
|
6343
|
+
import { randomUUID as randomUUID10 } from "crypto";
|
|
6344
|
+
import { isAbsolute as isAbsolute2, join as join9, resolve } from "path";
|
|
6322
6345
|
var DEFAULT_SCREENCAST_INTERVAL_MS = 1e3;
|
|
6323
6346
|
var MIN_SCREENCAST_INTERVAL_MS = 250;
|
|
6324
6347
|
var DEFAULT_SCREENCAST_MAX_FRAMES = 300;
|
|
@@ -6365,12 +6388,16 @@ async function ensureEmptyDirectory(path4) {
|
|
|
6365
6388
|
}
|
|
6366
6389
|
await mkdir4(path4, { recursive: true });
|
|
6367
6390
|
}
|
|
6368
|
-
function resolveOutputDir(worktree,
|
|
6391
|
+
function resolveOutputDir(worktree, outputDir) {
|
|
6369
6392
|
if (typeof outputDir === "string" && outputDir.trim().length > 0) {
|
|
6370
6393
|
const trimmed = outputDir.trim();
|
|
6371
|
-
return isAbsolute2(trimmed) ? trimmed : resolve(worktree, trimmed);
|
|
6394
|
+
return { outputDir: isAbsolute2(trimmed) ? trimmed : resolve(worktree, trimmed) };
|
|
6372
6395
|
}
|
|
6373
|
-
|
|
6396
|
+
const artifact = createBrowserOutputArtifactDirectory({
|
|
6397
|
+
workspaceRoot: worktree,
|
|
6398
|
+
namespace: BROWSER_SCREENCAST_ARTIFACT_NAMESPACE
|
|
6399
|
+
});
|
|
6400
|
+
return { outputDir: artifact.artifactPath, artifactPath: artifact.artifactPath };
|
|
6374
6401
|
}
|
|
6375
6402
|
function renderReplayHtml(manifest) {
|
|
6376
6403
|
const encodedManifest = JSON.stringify(manifest).replaceAll("<", "\\u003c");
|
|
@@ -6470,6 +6497,7 @@ var BrowserScreencastRecorder = class {
|
|
|
6470
6497
|
sessionId;
|
|
6471
6498
|
targetId;
|
|
6472
6499
|
outputDir;
|
|
6500
|
+
artifactPath;
|
|
6473
6501
|
startedAt;
|
|
6474
6502
|
intervalMs;
|
|
6475
6503
|
maxFrames;
|
|
@@ -6490,18 +6518,20 @@ var BrowserScreencastRecorder = class {
|
|
|
6490
6518
|
finalPage;
|
|
6491
6519
|
frames = [];
|
|
6492
6520
|
constructor(args2) {
|
|
6493
|
-
this.screencastId = args2.screencastId ??
|
|
6521
|
+
this.screencastId = args2.screencastId ?? randomUUID10();
|
|
6494
6522
|
this.sessionId = args2.sessionId;
|
|
6495
6523
|
this.targetId = args2.targetId;
|
|
6496
|
-
|
|
6524
|
+
const output = resolveOutputDir(args2.worktree, args2.options?.outputDir);
|
|
6525
|
+
this.outputDir = output.outputDir;
|
|
6526
|
+
this.artifactPath = output.artifactPath;
|
|
6497
6527
|
this.intervalMs = resolveIntervalMs(args2.options?.intervalMs);
|
|
6498
6528
|
this.maxFrames = resolveMaxFrames(args2.options?.maxFrames);
|
|
6499
6529
|
this.startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
6500
6530
|
this.startedAtMs = Date.parse(this.startedAt);
|
|
6501
|
-
this.framesDir =
|
|
6502
|
-
this.manifestPath =
|
|
6503
|
-
this.replayHtmlPath =
|
|
6504
|
-
this.previewPath =
|
|
6531
|
+
this.framesDir = join9(this.outputDir, FRAMES_DIRECTORY);
|
|
6532
|
+
this.manifestPath = join9(this.outputDir, MANIFEST_FILENAME);
|
|
6533
|
+
this.replayHtmlPath = join9(this.outputDir, REPLAY_FILENAME);
|
|
6534
|
+
this.previewPath = join9(this.outputDir, PREVIEW_FILENAME);
|
|
6505
6535
|
this.captureFrameImpl = args2.captureFrame;
|
|
6506
6536
|
this.completionPromise = new Promise((resolvePromise) => {
|
|
6507
6537
|
this.resolveCompletion = resolvePromise;
|
|
@@ -6539,6 +6569,7 @@ var BrowserScreencastRecorder = class {
|
|
|
6539
6569
|
sessionId: this.sessionId,
|
|
6540
6570
|
targetId: this.targetId,
|
|
6541
6571
|
outputDir: this.outputDir,
|
|
6572
|
+
...this.artifactPath ? { artifact_path: this.artifactPath } : {},
|
|
6542
6573
|
startedAt: this.startedAt,
|
|
6543
6574
|
intervalMs: this.intervalMs,
|
|
6544
6575
|
maxFrames: this.maxFrames,
|
|
@@ -6583,7 +6614,7 @@ var BrowserScreencastRecorder = class {
|
|
|
6583
6614
|
async captureFrame() {
|
|
6584
6615
|
const index = this.frames.length + 1;
|
|
6585
6616
|
const frameFilename = `${String(index).padStart(6, "0")}.png`;
|
|
6586
|
-
const framePath =
|
|
6617
|
+
const framePath = join9(this.framesDir, frameFilename);
|
|
6587
6618
|
const task = Promise.resolve().then(async () => {
|
|
6588
6619
|
const capturedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
6589
6620
|
const result = await this.captureFrameImpl(framePath);
|
|
@@ -6599,7 +6630,7 @@ var BrowserScreencastRecorder = class {
|
|
|
6599
6630
|
index,
|
|
6600
6631
|
capturedAt,
|
|
6601
6632
|
elapsedMs: Math.max(Date.parse(capturedAt) - this.startedAtMs, 0),
|
|
6602
|
-
relativePath: normalizeRelativePath(
|
|
6633
|
+
relativePath: normalizeRelativePath(join9(FRAMES_DIRECTORY, frameFilename))
|
|
6603
6634
|
});
|
|
6604
6635
|
if (this.frames.length === 1) {
|
|
6605
6636
|
await copyFile(framePath, this.previewPath);
|
|
@@ -6664,6 +6695,7 @@ var BrowserScreencastRecorder = class {
|
|
|
6664
6695
|
sessionId: this.sessionId,
|
|
6665
6696
|
targetId: this.targetId,
|
|
6666
6697
|
outputDir: this.outputDir,
|
|
6698
|
+
...this.artifactPath ? { artifact_path: this.artifactPath } : {},
|
|
6667
6699
|
startedAt: this.startedAt,
|
|
6668
6700
|
endedAt,
|
|
6669
6701
|
endedReason: reason,
|
|
@@ -7060,7 +7092,7 @@ var BrowserManager = class {
|
|
|
7060
7092
|
warnings.push("System Chrome not found. Downloaded Chrome for Testing.");
|
|
7061
7093
|
executablePath = download.executablePath;
|
|
7062
7094
|
}
|
|
7063
|
-
const profileDir = persistProfile ? cachePaths.profileDir :
|
|
7095
|
+
const profileDir = persistProfile ? cachePaths.profileDir : join10(cachePaths.projectRoot, "temp-profiles", randomUUID11());
|
|
7064
7096
|
await mkdir5(profileDir, { recursive: true });
|
|
7065
7097
|
let context = null;
|
|
7066
7098
|
try {
|
|
@@ -7075,7 +7107,7 @@ var BrowserManager = class {
|
|
|
7075
7107
|
if (!browser) {
|
|
7076
7108
|
throw new Error("Browser instance unavailable");
|
|
7077
7109
|
}
|
|
7078
|
-
const sessionId =
|
|
7110
|
+
const sessionId = randomUUID11();
|
|
7079
7111
|
const targets = new TargetManager();
|
|
7080
7112
|
const pages = context.pages();
|
|
7081
7113
|
if (pages.length === 0) {
|
|
@@ -8182,9 +8214,18 @@ var BrowserManager = class {
|
|
|
8182
8214
|
throw new Error("Screenshot ref and fullPage options are mutually exclusive.");
|
|
8183
8215
|
}
|
|
8184
8216
|
return this.runTargetScoped(sessionId, options.targetId, async ({ managed, page, targetId: resolvedTargetId }) => {
|
|
8217
|
+
let artifact;
|
|
8218
|
+
let outputPath = options.path;
|
|
8219
|
+
if (typeof outputPath !== "string") {
|
|
8220
|
+
artifact = createBrowserOutputArtifactDirectory({
|
|
8221
|
+
workspaceRoot: this.worktree,
|
|
8222
|
+
namespace: BROWSER_SCREENSHOT_ARTIFACT_NAMESPACE
|
|
8223
|
+
});
|
|
8224
|
+
outputPath = join10(artifact.artifactPath, "capture.png");
|
|
8225
|
+
}
|
|
8185
8226
|
const screenshotOptions = {
|
|
8186
8227
|
type: "png",
|
|
8187
|
-
path:
|
|
8228
|
+
path: outputPath
|
|
8188
8229
|
};
|
|
8189
8230
|
if (options.ref) {
|
|
8190
8231
|
await this.callFunctionOnResolvedRef(managed, options.ref, DOM_SCROLL_INTO_VIEW_DECLARATION, [], resolvedTargetId);
|
|
@@ -8194,30 +8235,26 @@ var BrowserManager = class {
|
|
|
8194
8235
|
screenshotOptions.fullPage = true;
|
|
8195
8236
|
}
|
|
8196
8237
|
try {
|
|
8197
|
-
|
|
8198
|
-
await this.withLegacyExtensionOperationTimeout(
|
|
8199
|
-
managed,
|
|
8200
|
-
page.screenshot(screenshotOptions),
|
|
8201
|
-
`page.screenshot: Timeout ${LEGACY_EXTENSION_OPERATION_TIMEOUT_MS}ms exceeded.`
|
|
8202
|
-
);
|
|
8203
|
-
return { path: options.path };
|
|
8204
|
-
}
|
|
8205
|
-
const buffer = await this.withLegacyExtensionOperationTimeout(
|
|
8238
|
+
await this.withLegacyExtensionOperationTimeout(
|
|
8206
8239
|
managed,
|
|
8207
8240
|
page.screenshot(screenshotOptions),
|
|
8208
8241
|
`page.screenshot: Timeout ${LEGACY_EXTENSION_OPERATION_TIMEOUT_MS}ms exceeded.`
|
|
8209
8242
|
);
|
|
8210
|
-
return {
|
|
8243
|
+
return {
|
|
8244
|
+
path: outputPath,
|
|
8245
|
+
...artifact ? { artifact_path: artifact.artifactPath } : {}
|
|
8246
|
+
};
|
|
8211
8247
|
} catch (error) {
|
|
8212
8248
|
const fallback = await this.captureScreenshotViaCdp(managed, page, error, options);
|
|
8213
8249
|
if (!fallback) {
|
|
8214
8250
|
throw error;
|
|
8215
8251
|
}
|
|
8216
|
-
|
|
8217
|
-
|
|
8218
|
-
|
|
8219
|
-
|
|
8220
|
-
|
|
8252
|
+
await writeFile3(outputPath, Buffer.from(fallback.base64, "base64"));
|
|
8253
|
+
return {
|
|
8254
|
+
path: outputPath,
|
|
8255
|
+
...artifact ? { artifact_path: artifact.artifactPath } : {},
|
|
8256
|
+
...fallback.warnings ? { warnings: fallback.warnings } : {}
|
|
8257
|
+
};
|
|
8221
8258
|
}
|
|
8222
8259
|
});
|
|
8223
8260
|
}
|
|
@@ -10512,7 +10549,7 @@ var BrowserManager = class {
|
|
|
10512
10549
|
}
|
|
10513
10550
|
context = await browser.newContext();
|
|
10514
10551
|
}
|
|
10515
|
-
const sessionId =
|
|
10552
|
+
const sessionId = randomUUID11();
|
|
10516
10553
|
const targets = new TargetManager();
|
|
10517
10554
|
const pages = context.pages();
|
|
10518
10555
|
if (pages.length === 0) {
|
|
@@ -10705,7 +10742,8 @@ function truncateText(value, maxChars) {
|
|
|
10705
10742
|
|
|
10706
10743
|
// src/browser/ops-browser-manager.ts
|
|
10707
10744
|
import { writeFile as writeFile4 } from "fs/promises";
|
|
10708
|
-
import { randomUUID as
|
|
10745
|
+
import { randomUUID as randomUUID12 } from "crypto";
|
|
10746
|
+
import { join as join11 } from "path";
|
|
10709
10747
|
var OpsBrowserManager = class {
|
|
10710
10748
|
base;
|
|
10711
10749
|
config;
|
|
@@ -10839,7 +10877,7 @@ var OpsBrowserManager = class {
|
|
|
10839
10877
|
config: this.config
|
|
10840
10878
|
});
|
|
10841
10879
|
const client = await this.ensureOpsClient(connectEndpoint);
|
|
10842
|
-
const leaseId =
|
|
10880
|
+
const leaseId = randomUUID12();
|
|
10843
10881
|
const result = await client.request(
|
|
10844
10882
|
"session.connect",
|
|
10845
10883
|
{
|
|
@@ -11311,11 +11349,21 @@ var OpsBrowserManager = class {
|
|
|
11311
11349
|
throw new Error("Screenshot failed");
|
|
11312
11350
|
}
|
|
11313
11351
|
const warnings = Array.isArray(result.warnings) ? result.warnings : typeof result.warning === "string" ? [result.warning] : void 0;
|
|
11314
|
-
|
|
11315
|
-
|
|
11316
|
-
|
|
11352
|
+
let artifact;
|
|
11353
|
+
let outputPath = options.path;
|
|
11354
|
+
if (typeof outputPath !== "string") {
|
|
11355
|
+
artifact = createBrowserOutputArtifactDirectory({
|
|
11356
|
+
workspaceRoot: this.worktree,
|
|
11357
|
+
namespace: BROWSER_SCREENSHOT_ARTIFACT_NAMESPACE
|
|
11358
|
+
});
|
|
11359
|
+
outputPath = join11(artifact.artifactPath, "capture.png");
|
|
11317
11360
|
}
|
|
11318
|
-
|
|
11361
|
+
await writeFile4(outputPath, Buffer.from(result.base64, "base64"));
|
|
11362
|
+
return {
|
|
11363
|
+
path: outputPath,
|
|
11364
|
+
...artifact ? { artifact_path: artifact.artifactPath } : {},
|
|
11365
|
+
...warnings ? { warnings } : {}
|
|
11366
|
+
};
|
|
11319
11367
|
}
|
|
11320
11368
|
async startScreencast(sessionId, options = {}) {
|
|
11321
11369
|
if (!this.opsSessions.has(sessionId)) {
|
|
@@ -12210,7 +12258,7 @@ var normalizeRecoverableOpsUrl = (url) => {
|
|
|
12210
12258
|
};
|
|
12211
12259
|
|
|
12212
12260
|
// src/browser/annotation-manager.ts
|
|
12213
|
-
import { randomUUID as
|
|
12261
|
+
import { randomUUID as randomUUID14 } from "crypto";
|
|
12214
12262
|
import { WebSocket as WebSocket2 } from "ws";
|
|
12215
12263
|
|
|
12216
12264
|
// src/annotate/timeout-messages.ts
|
|
@@ -12221,9 +12269,9 @@ var getAnnotationTimeoutMessage = (readySeen) => {
|
|
|
12221
12269
|
};
|
|
12222
12270
|
|
|
12223
12271
|
// src/annotate/direct-annotator.ts
|
|
12224
|
-
import { randomUUID as
|
|
12272
|
+
import { randomUUID as randomUUID13 } from "crypto";
|
|
12225
12273
|
import { existsSync as existsSync2 } from "fs";
|
|
12226
|
-
import { join as
|
|
12274
|
+
import { join as join12 } from "path";
|
|
12227
12275
|
var DEFAULT_TIMEOUT_MS = 12e4;
|
|
12228
12276
|
var DIRECT_ANNOTATE_REQUIRED_FILES = [
|
|
12229
12277
|
"dist/annotate-content.js",
|
|
@@ -12238,15 +12286,15 @@ function resolveDirectAnnotateAssets(resolvePath = () => getExtensionRuntimePath
|
|
|
12238
12286
|
if (!extensionPath) {
|
|
12239
12287
|
return { error: "Extension assets unavailable." };
|
|
12240
12288
|
}
|
|
12241
|
-
const scriptPath =
|
|
12242
|
-
const stylePath =
|
|
12289
|
+
const scriptPath = join12(extensionPath, "dist", "annotate-content.js");
|
|
12290
|
+
const stylePath = join12(extensionPath, "dist", "annotate-content.css");
|
|
12243
12291
|
if (!existsSync2(scriptPath) || !existsSync2(stylePath)) {
|
|
12244
12292
|
return { error: "Direct annotate assets missing. Run `npm run extension:build` and retry." };
|
|
12245
12293
|
}
|
|
12246
12294
|
return { assets: { scriptPath, stylePath } };
|
|
12247
12295
|
}
|
|
12248
12296
|
async function runDirectAnnotate(manager, assets, request) {
|
|
12249
|
-
const requestId =
|
|
12297
|
+
const requestId = randomUUID13();
|
|
12250
12298
|
const timeoutMs = request.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
12251
12299
|
return manager.withPage(request.sessionId, request.targetId ?? null, async (page) => {
|
|
12252
12300
|
await ensureBindings(page);
|
|
@@ -12546,7 +12594,7 @@ var AnnotationManager = class {
|
|
|
12546
12594
|
return this.requestRelay(options, false);
|
|
12547
12595
|
}
|
|
12548
12596
|
async requestStored(options) {
|
|
12549
|
-
const requestId =
|
|
12597
|
+
const requestId = randomUUID14();
|
|
12550
12598
|
const sharedPayload = this.agentInbox?.latestPayload();
|
|
12551
12599
|
if (sharedPayload) {
|
|
12552
12600
|
return {
|
|
@@ -12591,7 +12639,7 @@ var AnnotationManager = class {
|
|
|
12591
12639
|
return this.relay?.getAnnotationUrl?.() ?? (this.config.relayPort > 0 ? `ws://127.0.0.1:${this.config.relayPort}/annotation` : null);
|
|
12592
12640
|
}
|
|
12593
12641
|
async requestDirect(options) {
|
|
12594
|
-
const requestId =
|
|
12642
|
+
const requestId = randomUUID14();
|
|
12595
12643
|
if (!options.sessionId) {
|
|
12596
12644
|
return {
|
|
12597
12645
|
version: 1,
|
|
@@ -12639,7 +12687,7 @@ var AnnotationManager = class {
|
|
|
12639
12687
|
}
|
|
12640
12688
|
}
|
|
12641
12689
|
async requestRelay(options, requireExtension, commandName = "start") {
|
|
12642
|
-
const requestId =
|
|
12690
|
+
const requestId = randomUUID14();
|
|
12643
12691
|
const timeoutMs = options.timeoutMs ?? 12e4;
|
|
12644
12692
|
let resolvedTabId = options.tabId;
|
|
12645
12693
|
if (requireExtension && options.sessionId && this.manager) {
|
|
@@ -12866,12 +12914,12 @@ var parseJson2 = (data) => {
|
|
|
12866
12914
|
};
|
|
12867
12915
|
|
|
12868
12916
|
// src/browser/canvas-manager.ts
|
|
12869
|
-
import { randomUUID as
|
|
12917
|
+
import { randomUUID as randomUUID19 } from "crypto";
|
|
12870
12918
|
import { mkdir as mkdir9 } from "fs/promises";
|
|
12871
12919
|
import { dirname as dirname5 } from "path";
|
|
12872
12920
|
|
|
12873
12921
|
// src/browser/canvas-client.ts
|
|
12874
|
-
import { randomUUID as
|
|
12922
|
+
import { randomUUID as randomUUID15 } from "crypto";
|
|
12875
12923
|
import { WebSocket as WebSocket3 } from "ws";
|
|
12876
12924
|
var CanvasClient = class {
|
|
12877
12925
|
url;
|
|
@@ -13047,7 +13095,7 @@ var CanvasClient = class {
|
|
|
13047
13095
|
if (!this.socket || this.socket.readyState !== WebSocket3.OPEN) {
|
|
13048
13096
|
await this.connect();
|
|
13049
13097
|
}
|
|
13050
|
-
const requestId =
|
|
13098
|
+
const requestId = randomUUID15();
|
|
13051
13099
|
const request = {
|
|
13052
13100
|
type: "canvas_request",
|
|
13053
13101
|
requestId,
|
|
@@ -13193,7 +13241,7 @@ var CanvasClient = class {
|
|
|
13193
13241
|
if (!this.socket || this.socket.readyState !== WebSocket3.OPEN) {
|
|
13194
13242
|
return;
|
|
13195
13243
|
}
|
|
13196
|
-
const id2 =
|
|
13244
|
+
const id2 = randomUUID15();
|
|
13197
13245
|
const ping = { type: "canvas_ping", id: id2 };
|
|
13198
13246
|
await new Promise((resolve7, reject) => {
|
|
13199
13247
|
const timeoutId = setTimeout(() => {
|
|
@@ -13260,7 +13308,7 @@ var isCanvasEvent = (value) => {
|
|
|
13260
13308
|
var isRecord2 = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
13261
13309
|
|
|
13262
13310
|
// src/canvas/document-store.ts
|
|
13263
|
-
import { randomUUID as
|
|
13311
|
+
import { randomUUID as randomUUID16 } from "crypto";
|
|
13264
13312
|
|
|
13265
13313
|
// node_modules/lib0/map.js
|
|
13266
13314
|
var create = () => /* @__PURE__ */ new Map();
|
|
@@ -21567,7 +21615,7 @@ function createDefaultNode(pageId, nodeId, name) {
|
|
|
21567
21615
|
metadata: {}
|
|
21568
21616
|
};
|
|
21569
21617
|
}
|
|
21570
|
-
function createDefaultCanvasDocument(documentId = `dc_${
|
|
21618
|
+
function createDefaultCanvasDocument(documentId = `dc_${randomUUID16()}`) {
|
|
21571
21619
|
const createdAt = nowIso();
|
|
21572
21620
|
const rootNodeId = `node_root_${documentId.slice(-8)}`;
|
|
21573
21621
|
const pageId = "page_home";
|
|
@@ -21615,7 +21663,7 @@ function normalizeCanvasDocument(input) {
|
|
|
21615
21663
|
const updatedAt = typeof base.updatedAt === "string" ? base.updatedAt : createdAt;
|
|
21616
21664
|
return {
|
|
21617
21665
|
schemaVersion: typeof base.schemaVersion === "string" ? base.schemaVersion : CANVAS_SCHEMA_VERSION,
|
|
21618
|
-
documentId: typeof base.documentId === "string" ? base.documentId : `dc_${
|
|
21666
|
+
documentId: typeof base.documentId === "string" ? base.documentId : `dc_${randomUUID16()}`,
|
|
21619
21667
|
title: typeof base.title === "string" && base.title.trim() ? base.title : "Untitled Design Canvas",
|
|
21620
21668
|
createdAt,
|
|
21621
21669
|
updatedAt,
|
|
@@ -21648,7 +21696,7 @@ function normalizeCanvasDocument(input) {
|
|
|
21648
21696
|
componentInventory: normalizeArray(base.componentInventory, normalizeCanvasComponentInventoryItem),
|
|
21649
21697
|
tokens: normalizeCanvasTokenStore(base.tokens),
|
|
21650
21698
|
assets: Array.isArray(base.assets) ? base.assets.map((asset) => ({
|
|
21651
|
-
id: typeof asset.id === "string" ? asset.id : `asset_${
|
|
21699
|
+
id: typeof asset.id === "string" ? asset.id : `asset_${randomUUID16()}`,
|
|
21652
21700
|
sourceType: typeof asset.sourceType === "string" ? asset.sourceType : void 0,
|
|
21653
21701
|
kind: typeof asset.kind === "string" ? asset.kind : void 0,
|
|
21654
21702
|
repoPath: typeof asset.repoPath === "string" ? asset.repoPath : null,
|
|
@@ -21880,7 +21928,7 @@ function buildInventoryItemFromNode(document2, nodeId, options = {}) {
|
|
|
21880
21928
|
const origin = options.origin && CANVAS_INVENTORY_ORIGINS.has(options.origin) ? options.origin : baseOrigin;
|
|
21881
21929
|
const template = buildInventoryTemplate(document2, nodeId);
|
|
21882
21930
|
return normalizeCanvasComponentInventoryItem({
|
|
21883
|
-
id: options.itemId ?? `inventory_${
|
|
21931
|
+
id: options.itemId ?? `inventory_${randomUUID16().slice(0, 8)}`,
|
|
21884
21932
|
name: options.name ?? node.name,
|
|
21885
21933
|
componentName: binding?.componentName ?? node.name,
|
|
21886
21934
|
description: options.description ?? null,
|
|
@@ -22873,7 +22921,7 @@ var CanvasDocumentStore = class {
|
|
|
22873
22921
|
}
|
|
22874
22922
|
this.replaceDocument(nextDocument, this.revision + 1, "canvas.store.apply-patches");
|
|
22875
22923
|
return {
|
|
22876
|
-
transactionId: `txn_${
|
|
22924
|
+
transactionId: `txn_${randomUUID16()}`,
|
|
22877
22925
|
appliedRevision: this.revision,
|
|
22878
22926
|
warnings: evaluateCanvasWarnings(this.document),
|
|
22879
22927
|
evidenceRefs: []
|
|
@@ -22888,7 +22936,7 @@ var CanvasDocumentStore = class {
|
|
|
22888
22936
|
}
|
|
22889
22937
|
this.replaceDocument(normalizeCanvasDocument(document2), this.revision + 1, "canvas.store.replace-document");
|
|
22890
22938
|
return {
|
|
22891
|
-
transactionId: `txn_${
|
|
22939
|
+
transactionId: `txn_${randomUUID16()}`,
|
|
22892
22940
|
appliedRevision: this.revision,
|
|
22893
22941
|
warnings: evaluateCanvasWarnings(this.document),
|
|
22894
22942
|
evidenceRefs: []
|
|
@@ -23383,7 +23431,7 @@ function duplicateNodeSubtree(document2, nodeId, parentId, index, idMapInput) {
|
|
|
23383
23431
|
throw new Error(`Unknown node: ${sourceNodeId}`);
|
|
23384
23432
|
}
|
|
23385
23433
|
const mappedId = isRecord4(idMapInput) ? idMapInput[sourceNode.id] : null;
|
|
23386
|
-
const duplicateId = typeof mappedId === "string" && mappedId.trim().length > 0 ? mappedId : `${sourceNode.id}_copy_${
|
|
23434
|
+
const duplicateId = typeof mappedId === "string" && mappedId.trim().length > 0 ? mappedId : `${sourceNode.id}_copy_${randomUUID16().slice(0, 8)}`;
|
|
23387
23435
|
idMap.set(sourceNode.id, duplicateId);
|
|
23388
23436
|
const nextMetadata = clone(sourceNode.metadata);
|
|
23389
23437
|
if (isRecord4(nextMetadata.codeSync)) {
|
|
@@ -24935,7 +24983,7 @@ function listBuiltInCanvasKitIds() {
|
|
|
24935
24983
|
|
|
24936
24984
|
// src/canvas/repo-store.ts
|
|
24937
24985
|
import { access as access3, mkdir as mkdir6, readFile as readFile2 } from "fs/promises";
|
|
24938
|
-
import { join as
|
|
24986
|
+
import { join as join13, dirname as dirname2, isAbsolute as isAbsolute3, resolve as resolve2 } from "path";
|
|
24939
24987
|
|
|
24940
24988
|
// src/canvas/code-sync/manifest.ts
|
|
24941
24989
|
var isRecord6 = (value) => Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
@@ -25119,20 +25167,20 @@ function resolveCanvasRepoPath(worktree, documentId, repoPath) {
|
|
|
25119
25167
|
if (repoPath && repoPath.trim()) {
|
|
25120
25168
|
return isAbsolute3(repoPath) ? repoPath : resolve2(worktree, repoPath);
|
|
25121
25169
|
}
|
|
25122
|
-
return
|
|
25170
|
+
return join13(worktree, ".opendevbrowser", "canvas", `${documentId}.canvas.json`);
|
|
25123
25171
|
}
|
|
25124
25172
|
function resolveCanvasCodeSyncManifestPath(worktree, documentId, bindingId, repoPath) {
|
|
25125
25173
|
if (repoPath && repoPath.trim()) {
|
|
25126
25174
|
return isAbsolute3(repoPath) ? repoPath : resolve2(worktree, repoPath);
|
|
25127
25175
|
}
|
|
25128
|
-
return
|
|
25176
|
+
return join13(worktree, ".opendevbrowser", "canvas", "code-sync", documentId, `${bindingId}.json`);
|
|
25129
25177
|
}
|
|
25130
25178
|
function resolveCanvasFigmaAssetDir(worktree, fileKey) {
|
|
25131
|
-
return
|
|
25179
|
+
return join13(worktree, ".opendevbrowser", "canvas", "assets", "figma", fileKey);
|
|
25132
25180
|
}
|
|
25133
25181
|
function resolveCanvasFigmaAssetPath(worktree, fileKey, assetId, extension) {
|
|
25134
25182
|
const normalizedExtension = extension.startsWith(".") ? extension : `.${extension}`;
|
|
25135
|
-
return
|
|
25183
|
+
return join13(resolveCanvasFigmaAssetDir(worktree, fileKey), `${assetId}${normalizedExtension}`);
|
|
25136
25184
|
}
|
|
25137
25185
|
async function saveCanvasDocument(worktree, document2, repoPath) {
|
|
25138
25186
|
const resolvedPath = resolveCanvasRepoPath(worktree, document2.documentId, repoPath);
|
|
@@ -25540,7 +25588,7 @@ import { resolve as resolve5, isAbsolute as isAbsolute5 } from "path";
|
|
|
25540
25588
|
// src/canvas/adapter-plugins/loader.ts
|
|
25541
25589
|
import { createHash as createHash4 } from "crypto";
|
|
25542
25590
|
import { access as access4, readFile as readFile3 } from "fs/promises";
|
|
25543
|
-
import { dirname as dirname3, isAbsolute as isAbsolute4, join as
|
|
25591
|
+
import { dirname as dirname3, isAbsolute as isAbsolute4, join as join14, resolve as resolve4 } from "path";
|
|
25544
25592
|
import { pathToFileURL } from "url";
|
|
25545
25593
|
|
|
25546
25594
|
// src/canvas/adapter-plugins/manifest.ts
|
|
@@ -25636,7 +25684,7 @@ async function readJson(filePath) {
|
|
|
25636
25684
|
return JSON.parse(await readFile3(filePath, "utf8"));
|
|
25637
25685
|
}
|
|
25638
25686
|
async function loadPackageJson(worktree) {
|
|
25639
|
-
const packagePath =
|
|
25687
|
+
const packagePath = join14(worktree, "package.json");
|
|
25640
25688
|
try {
|
|
25641
25689
|
return await readJson(packagePath);
|
|
25642
25690
|
} catch (error) {
|
|
@@ -25684,14 +25732,14 @@ function applyDeclarationOverrides(manifest, declaration) {
|
|
|
25684
25732
|
async function resolveDeclarationRef(worktree, ref) {
|
|
25685
25733
|
const direct = isAbsolute4(ref) ? ref : resolve4(worktree, ref);
|
|
25686
25734
|
if (await exists(direct)) {
|
|
25687
|
-
const manifestPath2 = direct.endsWith(".json") ? direct :
|
|
25735
|
+
const manifestPath2 = direct.endsWith(".json") ? direct : join14(direct, "canvas-adapter.plugin.json");
|
|
25688
25736
|
return {
|
|
25689
25737
|
packageRoot: direct.endsWith(".json") ? dirname3(direct) : direct,
|
|
25690
25738
|
manifestPath: manifestPath2
|
|
25691
25739
|
};
|
|
25692
25740
|
}
|
|
25693
|
-
const nodeModulesPath =
|
|
25694
|
-
const manifestPath =
|
|
25741
|
+
const nodeModulesPath = join14(worktree, "node_modules", ref);
|
|
25742
|
+
const manifestPath = join14(nodeModulesPath, "canvas-adapter.plugin.json");
|
|
25695
25743
|
return {
|
|
25696
25744
|
packageRoot: nodeModulesPath,
|
|
25697
25745
|
manifestPath
|
|
@@ -25702,7 +25750,7 @@ async function readDeclarationSource(worktree) {
|
|
|
25702
25750
|
const openDevBrowserConfig = isRecord7(packageJson.opendevbrowser) ? packageJson.opendevbrowser : null;
|
|
25703
25751
|
const canvasConfig = openDevBrowserConfig && isRecord7(openDevBrowserConfig.canvas) ? openDevBrowserConfig.canvas : null;
|
|
25704
25752
|
const packageDeclarations = Array.isArray(canvasConfig?.adapterPlugins) ? canvasConfig.adapterPlugins : [];
|
|
25705
|
-
const repoFile =
|
|
25753
|
+
const repoFile = join14(worktree, ".opendevbrowser", "canvas", "adapters.json");
|
|
25706
25754
|
const repoDeclarations = await exists(repoFile) ? (await readJson(repoFile)).adapterPlugins ?? [] : [];
|
|
25707
25755
|
return { packageDeclarations, repoDeclarations };
|
|
25708
25756
|
}
|
|
@@ -25748,7 +25796,7 @@ function applyCapabilityOverridesToRegisteredAdapters(params2) {
|
|
|
25748
25796
|
async function fingerprintPluginFiles(manifestPath, packageRoot, manifest) {
|
|
25749
25797
|
const entryPath = resolve4(packageRoot, manifest.entry);
|
|
25750
25798
|
const fixturePath = resolve4(packageRoot, manifest.fixtureDir);
|
|
25751
|
-
const packageJsonPath =
|
|
25799
|
+
const packageJsonPath = join14(packageRoot, "package.json");
|
|
25752
25800
|
const [manifestContent, entryContent, packageJsonContent] = await Promise.all([
|
|
25753
25801
|
readFile3(manifestPath, "utf8"),
|
|
25754
25802
|
readFile3(entryPath, "utf8"),
|
|
@@ -27102,7 +27150,7 @@ function collectGraphOrder(graph, nodeKey) {
|
|
|
27102
27150
|
}
|
|
27103
27151
|
|
|
27104
27152
|
// src/canvas/code-sync/import.ts
|
|
27105
|
-
import { randomUUID as
|
|
27153
|
+
import { randomUUID as randomUUID17 } from "crypto";
|
|
27106
27154
|
|
|
27107
27155
|
// src/canvas/code-sync/graph.ts
|
|
27108
27156
|
function locatorKey(locator) {
|
|
@@ -27232,7 +27280,7 @@ function buildNodeName(graphNode) {
|
|
|
27232
27280
|
return graphNode.tagName ?? "Element";
|
|
27233
27281
|
}
|
|
27234
27282
|
function buildNodeId(graphNode, manifestLookup) {
|
|
27235
|
-
return manifestLookup.get(locatorKey(graphNode.locator)) ?? `node_sync_${
|
|
27283
|
+
return manifestLookup.get(locatorKey(graphNode.locator)) ?? `node_sync_${randomUUID17().slice(0, 8)}`;
|
|
27236
27284
|
}
|
|
27237
27285
|
function preorder(graph, nodeKey) {
|
|
27238
27286
|
const node = graph.nodes[nodeKey];
|
|
@@ -28200,11 +28248,11 @@ function maxIso(values) {
|
|
|
28200
28248
|
}
|
|
28201
28249
|
|
|
28202
28250
|
// src/browser/canvas-session-sync-manager.ts
|
|
28203
|
-
import { randomUUID as
|
|
28251
|
+
import { randomUUID as randomUUID18 } from "crypto";
|
|
28204
28252
|
var CanvasSessionSyncManager = class {
|
|
28205
28253
|
sessions = /* @__PURE__ */ new Map();
|
|
28206
28254
|
initializeSession(canvasSessionId, leaseId, clientId) {
|
|
28207
|
-
const initialClientId = normalizeClientId(clientId) ?? `canvas_owner_${
|
|
28255
|
+
const initialClientId = normalizeClientId(clientId) ?? `canvas_owner_${randomUUID18().slice(0, 8)}`;
|
|
28208
28256
|
const attachedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
28209
28257
|
const attachedClients = /* @__PURE__ */ new Map();
|
|
28210
28258
|
attachedClients.set(initialClientId, {
|
|
@@ -28232,7 +28280,7 @@ var CanvasSessionSyncManager = class {
|
|
|
28232
28280
|
if (!state) {
|
|
28233
28281
|
throw new Error(`Unknown canvas session for attach: ${canvasSessionId}`);
|
|
28234
28282
|
}
|
|
28235
|
-
const resolvedClientId = normalizeClientId(clientId) ?? `canvas_client_${
|
|
28283
|
+
const resolvedClientId = normalizeClientId(clientId) ?? `canvas_client_${randomUUID18().slice(0, 8)}`;
|
|
28236
28284
|
const previous = state.attachedClients.get(resolvedClientId);
|
|
28237
28285
|
const attachedAt = previous?.attachedAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
28238
28286
|
let role = "observer";
|
|
@@ -29675,8 +29723,8 @@ var CanvasManager = class {
|
|
|
29675
29723
|
const repoRoot = optionalString5(params2.repoRoot) ?? this.worktree;
|
|
29676
29724
|
const mode = requireCanvasSessionMode(params2.mode);
|
|
29677
29725
|
const document2 = repoPath ? normalizeCanvasDocument(await loadCanvasDocument(repoRoot, repoPath)) : createDefaultCanvasDocument(requestedDocumentId ?? void 0);
|
|
29678
|
-
const sessionId = `canvas_${
|
|
29679
|
-
const leaseId = `lease_${
|
|
29726
|
+
const sessionId = `canvas_${randomUUID19()}`;
|
|
29727
|
+
const leaseId = `lease_${randomUUID19()}`;
|
|
29680
29728
|
const planState = resolveGenerationPlanState(document2.designGovernance.generationPlan);
|
|
29681
29729
|
const session = {
|
|
29682
29730
|
canvasSessionId: sessionId,
|
|
@@ -29718,7 +29766,7 @@ var CanvasManager = class {
|
|
|
29718
29766
|
attachSession(params2) {
|
|
29719
29767
|
const session = this.requireSession(params2);
|
|
29720
29768
|
const attachMode = requireAttachMode(params2.attachMode);
|
|
29721
|
-
const nextLeaseId = attachMode === "lease_reclaim" ? `lease_${
|
|
29769
|
+
const nextLeaseId = attachMode === "lease_reclaim" ? `lease_${randomUUID19()}` : session.leaseId;
|
|
29722
29770
|
const attached = this.sessionSyncManager.attach(
|
|
29723
29771
|
session.canvasSessionId,
|
|
29724
29772
|
nextLeaseId,
|
|
@@ -30075,7 +30123,7 @@ var CanvasManager = class {
|
|
|
30075
30123
|
const session = this.requireSession(params2);
|
|
30076
30124
|
this.assertLease(session, params2);
|
|
30077
30125
|
const nodeId = requireString2(params2.nodeId, "nodeId");
|
|
30078
|
-
const bindingId = optionalString5(params2.bindingId) ?? `binding_sync_${
|
|
30126
|
+
const bindingId = optionalString5(params2.bindingId) ?? `binding_sync_${randomUUID19().slice(0, 8)}`;
|
|
30079
30127
|
const binding = createCodeSyncBinding(params2, nodeId, bindingId);
|
|
30080
30128
|
const baseRevision = session.store.getRevision();
|
|
30081
30129
|
await this.applyDocumentPatches(session, baseRevision, [{
|
|
@@ -30859,7 +30907,7 @@ var CanvasManager = class {
|
|
|
30859
30907
|
prototypeId
|
|
30860
30908
|
});
|
|
30861
30909
|
} else if (status.mode === "extension" && this.supportsOpsOverlayTransport(session) && typeof this.browserManager.mountCanvasOverlay === "function") {
|
|
30862
|
-
const mountId2 = `mount_${
|
|
30910
|
+
const mountId2 = `mount_${randomUUID19()}`;
|
|
30863
30911
|
result = await this.browserManager.mountCanvasOverlay(session.browserSessionId, targetId, {
|
|
30864
30912
|
mountId: mountId2,
|
|
30865
30913
|
title: session.store.getDocument().title,
|
|
@@ -30869,7 +30917,7 @@ var CanvasManager = class {
|
|
|
30869
30917
|
} else {
|
|
30870
30918
|
result = await this.mountDirectOverlay(session.browserSessionId, targetId, session.store.getDocument(), prototypeId);
|
|
30871
30919
|
}
|
|
30872
|
-
const mountId = typeof result.mountId === "string" ? result.mountId : `mount_${
|
|
30920
|
+
const mountId = typeof result.mountId === "string" ? result.mountId : `mount_${randomUUID19()}`;
|
|
30873
30921
|
session.overlayMounts.set(mountId, { mountId, targetId, mountedAt: (/* @__PURE__ */ new Date()).toISOString() });
|
|
30874
30922
|
const previewState = session.activeTargets.get(targetId)?.previewState ?? "background";
|
|
30875
30923
|
if (!usesCanvasRelayOverlay) {
|
|
@@ -31209,7 +31257,7 @@ var CanvasManager = class {
|
|
|
31209
31257
|
subscribeFeedback(params2) {
|
|
31210
31258
|
const session = this.requireSession(params2);
|
|
31211
31259
|
const polled = this.pollFeedback(params2);
|
|
31212
|
-
const subscriptionId = `canvas_sub_${
|
|
31260
|
+
const subscriptionId = `canvas_sub_${randomUUID19()}`;
|
|
31213
31261
|
const heartbeatMs = FEEDBACK_HEARTBEAT_MS;
|
|
31214
31262
|
const subscription = {
|
|
31215
31263
|
id: subscriptionId,
|
|
@@ -32507,7 +32555,7 @@ function readInsertPlacement(params2) {
|
|
|
32507
32555
|
}
|
|
32508
32556
|
function materializeInventoryItem(item, pageId, parentId, placement) {
|
|
32509
32557
|
const template = readInventoryTemplate(item);
|
|
32510
|
-
const idMap = new Map(template.nodes.map((node) => [node.id, `node_inventory_${
|
|
32558
|
+
const idMap = new Map(template.nodes.map((node) => [node.id, `node_inventory_${randomUUID19().slice(0, 8)}`]));
|
|
32511
32559
|
const root = template.nodes.find((node) => node.id === template.rootNodeId) ?? template.nodes[0];
|
|
32512
32560
|
const offsetX = (placement.x ?? root.rect.x) - root.rect.x;
|
|
32513
32561
|
const offsetY = (placement.y ?? root.rect.y) - root.rect.y;
|
|
@@ -32683,11 +32731,11 @@ function buildStarterInventoryUpsertPatches(kitIds, frameworkId, adapterId) {
|
|
|
32683
32731
|
}));
|
|
32684
32732
|
}
|
|
32685
32733
|
function buildStarterShell(definition, pageId, parentId, placement) {
|
|
32686
|
-
const rootNodeId = `node_starter_${
|
|
32687
|
-
const eyebrowNodeId = `node_starter_${
|
|
32688
|
-
const headlineNodeId = `node_starter_${
|
|
32689
|
-
const bodyNodeId = `node_starter_${
|
|
32690
|
-
const actionNodeId = definition.shell.actionLabel ? `node_starter_${
|
|
32734
|
+
const rootNodeId = `node_starter_${randomUUID19().slice(0, 8)}`;
|
|
32735
|
+
const eyebrowNodeId = `node_starter_${randomUUID19().slice(0, 8)}`;
|
|
32736
|
+
const headlineNodeId = `node_starter_${randomUUID19().slice(0, 8)}`;
|
|
32737
|
+
const bodyNodeId = `node_starter_${randomUUID19().slice(0, 8)}`;
|
|
32738
|
+
const actionNodeId = definition.shell.actionLabel ? `node_starter_${randomUUID19().slice(0, 8)}` : null;
|
|
32691
32739
|
const rect = {
|
|
32692
32740
|
...definition.shell.rect,
|
|
32693
32741
|
x: placement.x ?? definition.shell.rect.x,
|
|
@@ -33338,7 +33386,7 @@ function ensureDuplicatePatchIds(document2, patch) {
|
|
|
33338
33386
|
}
|
|
33339
33387
|
const subtreeNodeIds = collectSubtreeNodeIds(document2, patch.nodeId);
|
|
33340
33388
|
const idMap = Object.fromEntries(
|
|
33341
|
-
subtreeNodeIds.map((nodeId) => [nodeId, `${nodeId}_copy_${
|
|
33389
|
+
subtreeNodeIds.map((nodeId) => [nodeId, `${nodeId}_copy_${randomUUID19().slice(0, 8)}`])
|
|
33342
33390
|
);
|
|
33343
33391
|
return {
|
|
33344
33392
|
...patch,
|
|
@@ -33357,7 +33405,7 @@ function buildCanvasHistoryEntry(beforeDocument, patches, options) {
|
|
|
33357
33405
|
scratchStore.applyPatches(scratchStore.getRevision(), [patch]);
|
|
33358
33406
|
}
|
|
33359
33407
|
return {
|
|
33360
|
-
id: `history_${
|
|
33408
|
+
id: `history_${randomUUID19().slice(0, 8)}`,
|
|
33361
33409
|
source: options.source,
|
|
33362
33410
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
33363
33411
|
forwardPatches: structuredClone(patches),
|
|
@@ -33588,7 +33636,7 @@ function attachDetails(error, details) {
|
|
|
33588
33636
|
|
|
33589
33637
|
// src/relay/relay-server.ts
|
|
33590
33638
|
import { createServer } from "http";
|
|
33591
|
-
import { timingSafeEqual, randomUUID as
|
|
33639
|
+
import { timingSafeEqual, randomUUID as randomUUID20 } from "crypto";
|
|
33592
33640
|
import { WebSocket as WebSocket4, WebSocketServer } from "ws";
|
|
33593
33641
|
var DEFAULT_DISCOVERY_PORT = 8787;
|
|
33594
33642
|
var CONFIG_PATH = "/config";
|
|
@@ -33596,7 +33644,7 @@ var PAIR_PATH = "/pair";
|
|
|
33596
33644
|
var STATUS_PATH = "/status";
|
|
33597
33645
|
var CDP_TOKEN_QUERY_KEY = "token";
|
|
33598
33646
|
var RelayServer = class _RelayServer {
|
|
33599
|
-
instanceId =
|
|
33647
|
+
instanceId = randomUUID20();
|
|
33600
33648
|
epoch = Date.now();
|
|
33601
33649
|
running = false;
|
|
33602
33650
|
baseUrl = null;
|
|
@@ -33729,7 +33777,7 @@ var RelayServer = class _RelayServer {
|
|
|
33729
33777
|
});
|
|
33730
33778
|
});
|
|
33731
33779
|
this.opsWss.on("connection", (socket, _request) => {
|
|
33732
|
-
const clientId =
|
|
33780
|
+
const clientId = randomUUID20();
|
|
33733
33781
|
this.opsClients.set(clientId, socket);
|
|
33734
33782
|
socket.on("message", (data) => {
|
|
33735
33783
|
this.handleOpsClientMessage(clientId, data);
|
|
@@ -33753,7 +33801,7 @@ var RelayServer = class _RelayServer {
|
|
|
33753
33801
|
void _request;
|
|
33754
33802
|
});
|
|
33755
33803
|
this.canvasWss.on("connection", (socket, _request) => {
|
|
33756
|
-
const clientId =
|
|
33804
|
+
const clientId = randomUUID20();
|
|
33757
33805
|
this.canvasClients.set(clientId, socket);
|
|
33758
33806
|
socket.on("message", (data) => {
|
|
33759
33807
|
this.handleCanvasClientMessage(clientId, data);
|
|
@@ -35435,4 +35483,4 @@ export {
|
|
|
35435
35483
|
createOpenDevBrowserCore
|
|
35436
35484
|
};
|
|
35437
35485
|
/* v8 ignore next -- @preserve */
|
|
35438
|
-
//# sourceMappingURL=chunk-
|
|
35486
|
+
//# sourceMappingURL=chunk-XRDCSHKZ.js.map
|