opendevbrowser 0.0.28 → 0.0.30
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 +2 -2
- package/dist/accessibility-snapshot-CQ4ZKWKC.js +39 -0
- package/dist/accessibility-snapshot-CQ4ZKWKC.js.map +1 -0
- package/dist/active-window-TD5HYJ72.js +37 -0
- package/dist/active-window-TD5HYJ72.js.map +1 -0
- package/dist/annotate-VTLFS2XV.js +205 -0
- package/dist/annotate-VTLFS2XV.js.map +1 -0
- package/dist/artifacts-KJ6RNDO2.js +120 -0
- package/dist/artifacts-KJ6RNDO2.js.map +1 -0
- package/dist/attr-BCI5KYCW.js +84 -0
- package/dist/attr-BCI5KYCW.js.map +1 -0
- package/dist/browser/ops-client.d.ts +1 -0
- package/dist/browser/ops-client.d.ts.map +1 -1
- package/dist/canvas-5DFEEOKM.js +309 -0
- package/dist/canvas-5DFEEOKM.js.map +1 -0
- package/dist/capture-desktop-HFTTWY4Z.js +38 -0
- package/dist/capture-desktop-HFTTWY4Z.js.map +1 -0
- package/dist/capture-window-X63XPIFF.js +40 -0
- package/dist/capture-window-X63XPIFF.js.map +1 -0
- package/dist/check-LWAUY7GC.js +71 -0
- package/dist/check-LWAUY7GC.js.map +1 -0
- package/dist/checked-ZSOUKVYT.js +71 -0
- package/dist/checked-ZSOUKVYT.js.map +1 -0
- package/dist/chunk-2SIMIPLY.js +67 -0
- package/dist/chunk-2SIMIPLY.js.map +1 -0
- package/dist/chunk-37VSRUW4.js +141 -0
- package/dist/chunk-37VSRUW4.js.map +1 -0
- package/dist/{chunk-T3VVHJTK.js → chunk-4BEJVZRK.js} +1078 -1458
- package/dist/chunk-4BEJVZRK.js.map +1 -0
- package/dist/chunk-5SWZDVOW.js +144 -0
- package/dist/chunk-5SWZDVOW.js.map +1 -0
- package/dist/chunk-6PVZ2ABC.js +429 -0
- package/dist/chunk-6PVZ2ABC.js.map +1 -0
- package/dist/chunk-7GVOUZMQ.js +64 -0
- package/dist/chunk-7GVOUZMQ.js.map +1 -0
- package/dist/chunk-7THCPS52.js +84 -0
- package/dist/chunk-7THCPS52.js.map +1 -0
- package/dist/chunk-AHEWXOKY.js +64 -0
- package/dist/chunk-AHEWXOKY.js.map +1 -0
- package/dist/chunk-ASMHEEKY.js +10 -0
- package/dist/chunk-ASMHEEKY.js.map +1 -0
- package/dist/chunk-COAOWH3G.js +3651 -0
- package/dist/chunk-COAOWH3G.js.map +1 -0
- package/dist/chunk-DBF5OKH3.js +111 -0
- package/dist/chunk-DBF5OKH3.js.map +1 -0
- package/dist/chunk-DW4TX7MU.js +54 -0
- package/dist/chunk-DW4TX7MU.js.map +1 -0
- package/dist/chunk-GQJ5S3BL.js +20 -0
- package/dist/chunk-GQJ5S3BL.js.map +1 -0
- package/dist/chunk-IPE7TF2P.js +54 -0
- package/dist/chunk-IPE7TF2P.js.map +1 -0
- package/dist/chunk-IQTJHXZJ.js +126 -0
- package/dist/chunk-IQTJHXZJ.js.map +1 -0
- package/dist/chunk-J47N77VG.js +2969 -0
- package/dist/chunk-J47N77VG.js.map +1 -0
- package/dist/chunk-JZXD6FWR.js +25 -0
- package/dist/chunk-JZXD6FWR.js.map +1 -0
- package/dist/{chunk-QVWOPIZJ.js → chunk-KDSNXS6N.js} +75 -149
- package/dist/chunk-KDSNXS6N.js.map +1 -0
- package/dist/chunk-KZ2IXVQT.js +219 -0
- package/dist/chunk-KZ2IXVQT.js.map +1 -0
- package/dist/chunk-MD655IPO.js +838 -0
- package/dist/chunk-MD655IPO.js.map +1 -0
- package/dist/chunk-MX3NFLCE.js +940 -0
- package/dist/chunk-MX3NFLCE.js.map +1 -0
- package/dist/chunk-OW5HMYMI.js +19 -0
- package/dist/chunk-OW5HMYMI.js.map +1 -0
- package/dist/chunk-PPUWQKIC.js +26 -0
- package/dist/chunk-PPUWQKIC.js.map +1 -0
- package/dist/{chunk-I5ZCOZZV.js → chunk-QOMWCRE3.js} +1202 -9561
- package/dist/chunk-QOMWCRE3.js.map +1 -0
- package/dist/chunk-RCZZGGJS.js +226 -0
- package/dist/chunk-RCZZGGJS.js.map +1 -0
- package/dist/chunk-RJNI3BHT.js +1 -0
- package/dist/chunk-RPXWUCQQ.js +112 -0
- package/dist/chunk-RPXWUCQQ.js.map +1 -0
- package/dist/chunk-S5KZQJJI.js +107 -0
- package/dist/chunk-S5KZQJJI.js.map +1 -0
- package/dist/chunk-T4GMCW6Z.js +46 -0
- package/dist/chunk-T4GMCW6Z.js.map +1 -0
- package/dist/chunk-WHQZBUNY.js +982 -0
- package/dist/chunk-WHQZBUNY.js.map +1 -0
- package/dist/chunk-WOXBLP7V.js +610 -0
- package/dist/chunk-WOXBLP7V.js.map +1 -0
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/commands/macro-resolve.d.ts +4 -1
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/product-video.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/shopping.d.ts.map +1 -1
- package/dist/cli/commands/workflow-output.d.ts +2 -0
- package/dist/cli/commands/workflow-output.d.ts.map +1 -0
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/index.js +204 -8123
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/postinstall-skill-sync.js +2 -1
- package/dist/cli/installers/postinstall-skill-sync.js.map +1 -1
- package/dist/cli/remote-relay.d.ts.map +1 -1
- package/dist/click-2AILSEIZ.js +81 -0
- package/dist/click-2AILSEIZ.js.map +1 -0
- package/dist/clone-component-TPJS3PEG.js +82 -0
- package/dist/clone-component-TPJS3PEG.js.map +1 -0
- package/dist/clone-page-LE74CIFC.js +69 -0
- package/dist/clone-page-LE74CIFC.js.map +1 -0
- package/dist/close-HN4YI47K.js +63 -0
- package/dist/close-HN4YI47K.js.map +1 -0
- package/dist/close-WFERRHX6.js +63 -0
- package/dist/close-WFERRHX6.js.map +1 -0
- package/dist/connect-RWBV2UCQ.js +107 -0
- package/dist/connect-RWBV2UCQ.js.map +1 -0
- package/dist/console-poll-PP4YYPDF.js +76 -0
- package/dist/console-poll-PP4YYPDF.js.map +1 -0
- package/dist/cookie-import-6IP776FC.js +177 -0
- package/dist/cookie-import-6IP776FC.js.map +1 -0
- package/dist/cookie-list-O2KG6DPU.js +117 -0
- package/dist/cookie-list-O2KG6DPU.js.map +1 -0
- package/dist/daemon-2BSAZXLT.js +194 -0
- package/dist/daemon-2BSAZXLT.js.map +1 -0
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/debug-trace-snapshot-F3BDVZXS.js +136 -0
- package/dist/debug-trace-snapshot-F3BDVZXS.js.map +1 -0
- package/dist/dialog-6JQYUWMQ.js +75 -0
- package/dist/dialog-6JQYUWMQ.js.map +1 -0
- package/dist/disconnect-763TP7GH.js +58 -0
- package/dist/disconnect-763TP7GH.js.map +1 -0
- package/dist/enabled-DLYQFNIP.js +71 -0
- package/dist/enabled-DLYQFNIP.js.map +1 -0
- package/dist/extension-extractor-GKWSFHPN.js +11 -0
- package/dist/extension-extractor-GKWSFHPN.js.map +1 -0
- package/dist/global-D6WLWBXA.js +56 -0
- package/dist/global-D6WLWBXA.js.map +1 -0
- package/dist/goto-S346TJJH.js +98 -0
- package/dist/goto-S346TJJH.js.map +1 -0
- package/dist/help-EKKKEDL5.js +491 -0
- package/dist/help-EKKKEDL5.js.map +1 -0
- package/dist/hover-6JVJFGO7.js +71 -0
- package/dist/hover-6JVJFGO7.js.map +1 -0
- package/dist/html-EVOSPBIT.js +84 -0
- package/dist/html-EVOSPBIT.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +87 -38
- package/dist/index.js.map +1 -1
- package/dist/inspector-H57BVUJP.js +62 -0
- package/dist/inspector-H57BVUJP.js.map +1 -0
- package/dist/inspector-audit-NQBAJWC7.js +84 -0
- package/dist/inspector-audit-NQBAJWC7.js.map +1 -0
- package/dist/inspector-plan-ZDIQVND3.js +69 -0
- package/dist/inspector-plan-ZDIQVND3.js.map +1 -0
- package/dist/inspiredesign-IEUL4PX3.js +234 -0
- package/dist/inspiredesign-IEUL4PX3.js.map +1 -0
- package/dist/install-autostart-output-5DOMKCQL.js +41 -0
- package/dist/install-autostart-output-5DOMKCQL.js.map +1 -0
- package/dist/install-autostart-reconciliation-NHKOFYTD.js +73 -0
- package/dist/install-autostart-reconciliation-NHKOFYTD.js.map +1 -0
- package/dist/launch-EK66VQPF.js +225 -0
- package/dist/launch-EK66VQPF.js.map +1 -0
- package/dist/list-ADZAQ2IU.js +51 -0
- package/dist/list-ADZAQ2IU.js.map +1 -0
- package/dist/list-KKUKN467.js +54 -0
- package/dist/list-KKUKN467.js.map +1 -0
- package/dist/local-HXJLUUNT.js +54 -0
- package/dist/local-HXJLUUNT.js.map +1 -0
- package/dist/macro-resolve-6DOQJ7CA.js +253 -0
- package/dist/macro-resolve-6DOQJ7CA.js.map +1 -0
- package/dist/macros/execute-runtime.d.ts +3 -1
- package/dist/macros/execute-runtime.d.ts.map +1 -1
- package/dist/macros/execute.d.ts +2 -0
- package/dist/macros/execute.d.ts.map +1 -1
- package/dist/native-UPLVQ2SG.js +22 -0
- package/dist/native-UPLVQ2SG.js.map +1 -0
- package/dist/network-poll-NUL4PDPY.js +76 -0
- package/dist/network-poll-NUL4PDPY.js.map +1 -0
- package/dist/new-5NKYPEFT.js +69 -0
- package/dist/new-5NKYPEFT.js.map +1 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js +27 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js.map +1 -0
- package/dist/open-NR3BPLXV.js +81 -0
- package/dist/open-NR3BPLXV.js.map +1 -0
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +87 -38
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/perf-HJ36ZI6H.js +58 -0
- package/dist/perf-HJ36ZI6H.js.map +1 -0
- package/dist/pointer-down-IYTTQWXZ.js +55 -0
- package/dist/pointer-down-IYTTQWXZ.js.map +1 -0
- package/dist/pointer-drag-A2YC5PWI.js +54 -0
- package/dist/pointer-drag-A2YC5PWI.js.map +1 -0
- package/dist/pointer-move-W5K5FUI4.js +52 -0
- package/dist/pointer-move-W5K5FUI4.js.map +1 -0
- package/dist/pointer-up-6GWVO64Y.js +55 -0
- package/dist/pointer-up-6GWVO64Y.js.map +1 -0
- package/dist/press-A3V5WB3S.js +83 -0
- package/dist/press-A3V5WB3S.js.map +1 -0
- package/dist/product-video-52REKWF3.js +235 -0
- package/dist/product-video-52REKWF3.js.map +1 -0
- package/dist/providers/artifacts.d.ts +0 -2
- package/dist/providers/artifacts.d.ts.map +1 -1
- package/dist/providers/blocker.d.ts.map +1 -1
- package/dist/providers/bounded-map.d.ts +2 -0
- package/dist/providers/bounded-map.d.ts.map +1 -0
- package/dist/providers/community/index.d.ts.map +1 -1
- package/dist/providers/constraint.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/research-compiler.d.ts +1 -1
- package/dist/providers/research-compiler.d.ts.map +1 -1
- package/dist/providers/research-executor.d.ts.map +1 -1
- package/dist/providers/runtime-factory.d.ts.map +1 -1
- package/dist/providers/shared/traversal-url.d.ts +3 -0
- package/dist/providers/shared/traversal-url.d.ts.map +1 -1
- package/dist/providers/shopping/index.d.ts.map +1 -1
- package/dist/providers/social/search-quality.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +4 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflow-output-root.d.ts +6 -0
- package/dist/providers/workflow-output-root.d.ts.map +1 -0
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-QF2RFB4J.js → providers-IMFYMMHQ.js} +19 -14
- package/dist/providers-IMFYMMHQ.js.map +1 -0
- package/dist/public-surface/generated-manifest.d.ts +2 -2
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +2 -2
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/relay/protocol.d.ts +3 -1
- package/dist/relay/protocol.d.ts.map +1 -1
- package/dist/relay/relay-server.d.ts +6 -0
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/research-WB6BBCDD.js +295 -0
- package/dist/research-WB6BBCDD.js.map +1 -0
- package/dist/review-BGWVY4RA.js +48 -0
- package/dist/review-BGWVY4RA.js.map +1 -0
- package/dist/review-desktop-LEORC5VS.js +54 -0
- package/dist/review-desktop-LEORC5VS.js.map +1 -0
- package/dist/rpc-4TSKSFGC.js +159 -0
- package/dist/rpc-4TSKSFGC.js.map +1 -0
- package/dist/run-3NBLVWXD.js +180 -0
- package/dist/run-3NBLVWXD.js.map +1 -0
- package/dist/screencast-start-UZVIT3IN.js +67 -0
- package/dist/screencast-start-UZVIT3IN.js.map +1 -0
- package/dist/screencast-stop-NOSJSIUO.js +59 -0
- package/dist/screencast-stop-NOSJSIUO.js.map +1 -0
- package/dist/screenshot-LARG4JQG.js +68 -0
- package/dist/screenshot-LARG4JQG.js.map +1 -0
- package/dist/scroll-VNFMV6TW.js +84 -0
- package/dist/scroll-VNFMV6TW.js.map +1 -0
- package/dist/scroll-into-view-VYRT3JPT.js +71 -0
- package/dist/scroll-into-view-VYRT3JPT.js.map +1 -0
- package/dist/select-KJTUZDVO.js +86 -0
- package/dist/select-KJTUZDVO.js.map +1 -0
- package/dist/serve-EV7K4HKR.js +498 -0
- package/dist/serve-EV7K4HKR.js.map +1 -0
- package/dist/shopping-DTXHVQ2X.js +273 -0
- package/dist/shopping-DTXHVQ2X.js.map +1 -0
- package/dist/skill-lifecycle-5UAZGKSN.js +89 -0
- package/dist/skill-lifecycle-5UAZGKSN.js.map +1 -0
- package/dist/skills-NSXDX6YM.js +26 -0
- package/dist/skills-NSXDX6YM.js.map +1 -0
- package/dist/snapshot-3XQMCMRJ.js +113 -0
- package/dist/snapshot-3XQMCMRJ.js.map +1 -0
- package/dist/status-OXSYA5XD.js +35 -0
- package/dist/status-OXSYA5XD.js.map +1 -0
- package/dist/status-YUMDP5KY.js +132 -0
- package/dist/status-YUMDP5KY.js.map +1 -0
- package/dist/status-capabilities-P4KDSE2Y.js +57 -0
- package/dist/status-capabilities-P4KDSE2Y.js.map +1 -0
- package/dist/text-V3B7UVIH.js +84 -0
- package/dist/text-V3B7UVIH.js.map +1 -0
- package/dist/tools/deps.d.ts +1 -0
- package/dist/tools/deps.d.ts.map +1 -1
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/tools/macro_resolve.d.ts.map +1 -1
- package/dist/tools/product_video_run.d.ts.map +1 -1
- package/dist/tools/research_run.d.ts.map +1 -1
- package/dist/tools/shopping_run.d.ts.map +1 -1
- package/dist/tools/workflow-output.d.ts +3 -0
- package/dist/tools/workflow-output.d.ts.map +1 -0
- package/dist/type-IYBN3ZLR.js +94 -0
- package/dist/type-IYBN3ZLR.js.map +1 -0
- package/dist/uncheck-SG737EGI.js +71 -0
- package/dist/uncheck-SG737EGI.js.map +1 -0
- package/dist/uninstall-KYKGJAX7.js +91 -0
- package/dist/uninstall-KYKGJAX7.js.map +1 -0
- package/dist/update-SMXPYGXS.js +305 -0
- package/dist/update-SMXPYGXS.js.map +1 -0
- package/dist/update-skill-modes-BVX7IVMW.js +38 -0
- package/dist/update-skill-modes-BVX7IVMW.js.map +1 -0
- package/dist/upload-KH6ZABJA.js +56 -0
- package/dist/upload-KH6ZABJA.js.map +1 -0
- package/dist/use-7YDKO3U4.js +63 -0
- package/dist/use-7YDKO3U4.js.map +1 -0
- package/dist/value-RZBWSKKM.js +71 -0
- package/dist/value-RZBWSKKM.js.map +1 -0
- package/dist/visible-BSFTAKXR.js +71 -0
- package/dist/visible-BSFTAKXR.js.map +1 -0
- package/dist/wait-TMTEAYOP.js +109 -0
- package/dist/wait-TMTEAYOP.js.map +1 -0
- package/dist/windows-HIZ23OHS.js +37 -0
- package/dist/windows-HIZ23OHS.js.map +1 -0
- package/extension/dist/background.js +99 -22
- package/extension/dist/ops/ops-runtime.js +85 -7
- package/extension/dist/ops/ops-session-store.js +3 -0
- package/extension/dist/ops/target-session-coordinator.js +3 -0
- package/extension/dist/services/CDPRouter.js +9 -0
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/opendevbrowser-best-practices/SKILL.md +8 -6
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +1 -1
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +3 -2
- package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +39 -2
- package/skills/opendevbrowser-research/SKILL.md +64 -12
- package/skills/opendevbrowser-research/artifacts/research-workflows.md +56 -19
- package/skills/opendevbrowser-research/assets/templates/compact.md +31 -5
- package/skills/opendevbrowser-research/assets/templates/context.json +52 -1
- package/skills/opendevbrowser-research/assets/templates/report.md +57 -4
- package/skills/opendevbrowser-research/examples/sample-input.json +1 -1
- package/skills/opendevbrowser-research/examples/sample-output.md +27 -2
- package/skills/opendevbrowser-research/scripts/run-research.sh +2 -6
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +115 -1
- package/dist/chunk-I5ZCOZZV.js.map +0 -1
- package/dist/chunk-QVWOPIZJ.js.map +0 -1
- package/dist/chunk-T3VVHJTK.js.map +0 -1
- /package/dist/{providers-QF2RFB4J.js.map → chunk-RJNI3BHT.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/canvas/code-sync/types.ts","../src/cache/chrome-user-data.ts"],"sourcesContent":["import { z } from \"zod\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport { parse as parseJsonc, modify, applyEdits } from \"jsonc-parser\";\nimport { CODE_SYNC_CAPABILITIES } from \"./canvas/code-sync/types\";\nimport type { DesktopPermissionLevel } from \"./desktop/types\";\nimport { generateSecureToken } from \"./utils/crypto\";\nimport { writeFileAtomic } from \"./utils/fs\";\nimport type { CanvasAdapterPluginDeclaration } from \"./canvas/adapter-plugins/types\";\nimport type { ChallengeAutomationMode } from \"./challenges/types\";\nimport type {\n ProviderCookieImportRecord,\n ProviderCookiePolicy,\n ProviderCookieSourceConfig\n} from \"./providers/types\";\n\nfunction isExecutable(filePath: string): boolean {\n try {\n fs.accessSync(filePath, fs.constants.X_OK);\n return true;\n } catch {\n return false;\n }\n}\n\nexport type SnapshotConfig = {\n maxChars: number;\n maxNodes: number;\n};\n\nexport type SecurityConfig = {\n allowRawCDP: boolean;\n allowNonLocalCdp: boolean;\n allowUnsafeExport: boolean;\n promptInjectionGuard?: {\n enabled: boolean;\n };\n};\n\nexport type DevtoolsConfig = {\n showFullUrls: boolean;\n showFullConsole: boolean;\n};\n\nexport type ExportConfig = {\n maxNodes: number;\n inlineStyles: boolean;\n};\n\nexport type DesktopConfig = {\n permissionLevel: DesktopPermissionLevel;\n commandTimeoutMs: number;\n auditArtifactsDir: string;\n accessibilityMaxDepth: number;\n accessibilityMaxChildren: number;\n};\n\nexport type BlockerArtifactCapsConfig = {\n maxNetworkEvents: number;\n maxConsoleEvents: number;\n maxExceptionEvents: number;\n maxHosts: number;\n maxTextLength: number;\n};\n\nexport type SkillsNudgeConfig = {\n enabled: boolean;\n keywords: string[];\n maxAgeMs: number;\n};\n\nexport type SkillsConfig = {\n nudge: SkillsNudgeConfig;\n};\n\nexport type ContinuityNudgeConfig = {\n enabled: boolean;\n keywords: string[];\n maxAgeMs: number;\n};\n\nexport type ContinuityConfig = {\n enabled: boolean;\n filePath: string;\n nudge: ContinuityNudgeConfig;\n};\n\nexport type FingerprintTier1Config = {\n enabled: boolean;\n warnOnly: boolean;\n locale?: string;\n timezone?: string;\n languages: string[];\n requireProxy: boolean;\n geolocation?: {\n latitude: number;\n longitude: number;\n accuracy: number;\n };\n geolocationRequired: boolean;\n};\n\nexport type FingerprintTier2Config = {\n enabled: boolean;\n mode: \"deterministic\" | \"adaptive\";\n continuousSignals: boolean;\n rotationIntervalMs: number;\n challengePatterns: string[];\n maxChallengeEvents: number;\n scorePenalty: number;\n scoreRecovery: number;\n rotationHealthThreshold: number;\n};\n\nexport type FingerprintTier3CanaryConfig = {\n windowSize: number;\n minSamples: number;\n promoteThreshold: number;\n rollbackThreshold: number;\n};\n\nexport type FingerprintTier3Config = {\n enabled: boolean;\n continuousSignals: boolean;\n fallbackTier: \"tier1\" | \"tier2\";\n canary: FingerprintTier3CanaryConfig;\n};\n\nexport type FingerprintConfig = {\n tier1: FingerprintTier1Config;\n tier2: FingerprintTier2Config;\n tier3: FingerprintTier3Config;\n};\n\nexport type ProvidersTierConfig = {\n default: \"A\" | \"B\" | \"C\";\n enableHybrid: boolean;\n enableRestrictedSafe: boolean;\n hybridRiskThreshold: number;\n restrictedSafeRecoveryIntervalMs: number;\n};\n\nexport type ProvidersAdaptiveConcurrencyConfig = {\n enabled: boolean;\n maxGlobal: number;\n maxPerDomain: number;\n};\n\nexport type ProvidersCrawlerConfig = {\n workerThreads: number;\n queueMax: number;\n};\n\nexport type ProvidersAntiBotPolicyConfig = {\n enabled: boolean;\n cooldownMs: number;\n maxChallengeRetries: number;\n proxyHint?: string;\n sessionHint?: string;\n allowBrowserEscalation: boolean;\n};\n\nexport type ProvidersChallengeGovernedLanesConfig = {\n allowOwnedEnvironmentFixtures: boolean;\n allowSanctionedIdentity: boolean;\n allowServiceAdapters: boolean;\n requireAuditMetadata: boolean;\n};\n\nexport type ProvidersChallengeOptionalBridgeConfig = {\n enabled: boolean;\n maxSuggestions: number;\n};\n\nexport type ProvidersChallengeOrchestrationConfig = {\n mode: ChallengeAutomationMode;\n attemptBudget: number;\n noProgressLimit: number;\n stepTimeoutMs: number;\n minAttemptGapMs: number;\n allowAuthNavigation: boolean;\n allowSessionReuse: boolean;\n allowCookieReuse: boolean;\n allowNonSecretFormFill: boolean;\n allowInteractionExploration: boolean;\n governed: ProvidersChallengeGovernedLanesConfig;\n optionalComputerUseBridge: ProvidersChallengeOptionalBridgeConfig;\n};\n\nexport type ProvidersTranscriptConfig = {\n modeDefault: \"auto\" | \"web\" | \"no-auto\" | \"yt-dlp\" | \"apify\";\n strategyOrder: Array<\n \"youtubei\"\n | \"native_caption_parse\"\n | \"ytdlp_audio_asr\"\n | \"apify\"\n | \"ytdlp_subtitle\"\n | \"optional_asr\"\n >;\n enableYtdlp: boolean;\n enableAsr: boolean;\n enableYtdlpAudioAsr: boolean;\n enableApify: boolean;\n apifyActorId: string;\n enableBrowserFallback: boolean;\n ytdlpTimeoutMs: number;\n};\n\nexport type ProvidersConfig = {\n tiers: ProvidersTierConfig;\n adaptiveConcurrency: ProvidersAdaptiveConcurrencyConfig;\n crawler: ProvidersCrawlerConfig;\n antiBotPolicy: ProvidersAntiBotPolicyConfig;\n challengeOrchestration: ProvidersChallengeOrchestrationConfig;\n transcript: ProvidersTranscriptConfig;\n cookiePolicy?: ProviderCookiePolicy;\n cookieSource?: ProviderCookieSourceConfig;\n};\n\nexport type FigmaIntegrationConfig = {\n accessToken?: string;\n};\n\nexport type IntegrationsConfig = {\n figma?: FigmaIntegrationConfig;\n};\n\nexport type CanvasConfig = {\n adapterPlugins: CanvasAdapterPluginDeclaration[];\n};\n\nexport type CanaryConfig = {\n targets: {\n enabled: boolean;\n };\n};\n\nexport type ParallelModeCapsConfig = {\n managedHeaded: number;\n managedHeadless: number;\n cdpConnectHeaded: number;\n cdpConnectHeadless: number;\n extensionOpsHeaded: number;\n extensionLegacyCdpHeaded: number;\n};\n\nexport type ParallelismGovernorConfig = {\n floor: number;\n backpressureTimeoutMs: number;\n sampleIntervalMs: number;\n recoveryStableWindows: number;\n hostFreeMemMediumPct: number;\n hostFreeMemHighPct: number;\n hostFreeMemCriticalPct: number;\n rssBudgetMb: number;\n rssSoftPct: number;\n rssHighPct: number;\n rssCriticalPct: number;\n queueAgeHighMs: number;\n queueAgeCriticalMs: number;\n modeCaps: ParallelModeCapsConfig;\n};\n\nexport type OpenDevBrowserConfig = {\n headless: boolean;\n profile: string;\n snapshot: SnapshotConfig;\n security: SecurityConfig;\n blockerDetectionThreshold: number;\n blockerResolutionTimeoutMs: number;\n blockerArtifactCaps: BlockerArtifactCapsConfig;\n providers?: ProvidersConfig;\n integrations?: IntegrationsConfig;\n canvas: CanvasConfig;\n devtools: DevtoolsConfig;\n fingerprint: FingerprintConfig;\n canary?: CanaryConfig;\n export: ExportConfig;\n desktop: DesktopConfig;\n parallelism: ParallelismGovernorConfig;\n skills: SkillsConfig;\n continuity: ContinuityConfig;\n relayPort: number;\n relayToken: string | false;\n nativeExtensionId?: string;\n daemonPort: number;\n daemonToken: string;\n chromePath?: string;\n flags: string[];\n checkForUpdates: boolean;\n persistProfile: boolean;\n skillPaths: string[];\n};\n\nconst DEFAULT_RELAY_PORT = 8787;\nconst DEFAULT_DAEMON_PORT = 8788;\n\nfunction buildDefaultConfigJsonc(relayToken: string, daemonToken: string): string {\n return `{\n // Set relayToken to false to disable extension pairing.\n \"relayPort\": ${DEFAULT_RELAY_PORT},\n \"relayToken\": \"${relayToken}\",\n // Optional: extension ID for native host auto-install.\n // \"nativeExtensionId\": \"abcdefghijklmnopabcdefghijklmnop\",\n \"daemonPort\": ${DEFAULT_DAEMON_PORT},\n \"daemonToken\": \"${daemonToken}\"\n}\n`;\n}\n\nconst snapshotSchema = z.object({\n maxChars: z.number().int().min(500).max(200000).default(16000),\n maxNodes: z.number().int().min(50).max(5000).default(1000)\n});\n\nconst securitySchema = z.object({\n allowRawCDP: z.boolean().default(false),\n allowNonLocalCdp: z.boolean().default(false),\n allowUnsafeExport: z.boolean().default(false),\n promptInjectionGuard: z.object({\n enabled: z.boolean().default(true)\n }).default({})\n});\n\nconst DEFAULT_PROVIDER_COOKIE_FILE = \"~/.config/opencode/opendevbrowser.provider-cookies.json\";\nconst DEFAULT_PROVIDER_COOKIE_ENV = \"OPENDEVBROWSER_PROVIDER_COOKIES\";\n\nconst providerCookieRecordSchema: z.ZodType<ProviderCookieImportRecord> = z.object({\n name: z.string().min(1),\n value: z.string(),\n url: z.string().min(1).optional(),\n domain: z.string().min(1).optional(),\n path: z.string().optional(),\n expires: z.number().optional(),\n httpOnly: z.boolean().optional(),\n secure: z.boolean().optional(),\n sameSite: z.enum([\"Strict\", \"Lax\", \"None\"]).optional()\n}).superRefine((cookie, ctx) => {\n if (!cookie.url && !cookie.domain) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Provider cookie entries must set url or domain.\"\n });\n }\n});\n\nconst providersSchema = z.object({\n tiers: z.object({\n default: z.enum([\"A\", \"B\", \"C\"]).default(\"A\"),\n enableHybrid: z.boolean().default(false),\n enableRestrictedSafe: z.boolean().default(false),\n hybridRiskThreshold: z.number().min(0).max(1).default(0.6),\n restrictedSafeRecoveryIntervalMs: z.number().int().min(0).max(86_400_000).default(60000)\n }).default({}),\n adaptiveConcurrency: z.object({\n enabled: z.boolean().default(false),\n maxGlobal: z.number().int().min(1).max(512).default(8),\n maxPerDomain: z.number().int().min(1).max(256).default(4)\n }).default({}),\n crawler: z.object({\n workerThreads: z.number().int().min(1).max(64).default(4),\n queueMax: z.number().int().min(1).max(100000).default(2000)\n }).default({}),\n antiBotPolicy: z.object({\n enabled: z.boolean().default(true),\n cooldownMs: z.number().int().min(0).max(300000).default(30000),\n maxChallengeRetries: z.number().int().min(0).max(10).default(1),\n proxyHint: z.string().min(1).optional(),\n sessionHint: z.string().min(1).optional(),\n allowBrowserEscalation: z.boolean().default(true)\n }).default({}),\n challengeOrchestration: z.object({\n mode: z.enum([\"off\", \"browser\", \"browser_with_helper\"]).default(\"browser_with_helper\"),\n attemptBudget: z.number().int().min(1).max(20).default(6),\n noProgressLimit: z.number().int().min(1).max(10).default(3),\n stepTimeoutMs: z.number().int().min(250).max(120000).default(5000),\n minAttemptGapMs: z.number().int().min(0).max(300000).default(10000),\n allowAuthNavigation: z.boolean().default(true),\n allowSessionReuse: z.boolean().default(true),\n allowCookieReuse: z.boolean().default(true),\n allowNonSecretFormFill: z.boolean().default(true),\n allowInteractionExploration: z.boolean().default(true),\n governed: z.object({\n allowOwnedEnvironmentFixtures: z.boolean().default(true),\n allowSanctionedIdentity: z.boolean().default(false),\n allowServiceAdapters: z.boolean().default(false),\n requireAuditMetadata: z.boolean().default(true)\n }).default({}),\n optionalComputerUseBridge: z.object({\n enabled: z.boolean().default(true),\n maxSuggestions: z.number().int().min(1).max(20).default(3)\n }).default({})\n }).default({}),\n transcript: z.object({\n modeDefault: z.union([\n z.enum([\"auto\", \"web\", \"no-auto\", \"yt-dlp\", \"apify\"]),\n z.literal(\"ytdlp\")\n ])\n .default(\"auto\")\n .transform((mode) => mode === \"ytdlp\" ? \"yt-dlp\" : mode),\n strategyOrder: z.array(z.enum([\n \"youtubei\",\n \"native_caption_parse\",\n \"ytdlp_audio_asr\",\n \"apify\",\n \"ytdlp_subtitle\",\n \"optional_asr\"\n ]))\n .default([\"youtubei\", \"native_caption_parse\", \"ytdlp_audio_asr\", \"apify\"]),\n enableYtdlp: z.boolean().default(false),\n enableAsr: z.boolean().default(false),\n enableYtdlpAudioAsr: z.boolean().default(true),\n enableApify: z.boolean().default(true),\n apifyActorId: z.string().min(1).default(\"streamers/youtube-scraper\"),\n enableBrowserFallback: z.boolean().default(false),\n ytdlpTimeoutMs: z.number().int().min(1000).max(120000).default(10000)\n }).default({}),\n cookiePolicy: z.enum([\"off\", \"auto\", \"required\"]).default(\"auto\"),\n cookieSource: z.object({\n type: z.enum([\"file\", \"env\", \"inline\"]).default(\"file\"),\n value: z.union([\n z.string(),\n z.array(providerCookieRecordSchema)\n ]).optional()\n }).transform((raw): ProviderCookieSourceConfig => {\n if (raw.type === \"inline\") {\n return {\n type: \"inline\",\n value: Array.isArray(raw.value) ? raw.value : []\n };\n }\n return {\n type: raw.type,\n value: typeof raw.value === \"string\"\n ? raw.value\n : raw.type === \"file\"\n ? DEFAULT_PROVIDER_COOKIE_FILE\n : DEFAULT_PROVIDER_COOKIE_ENV\n };\n }).default({\n type: \"file\",\n value: DEFAULT_PROVIDER_COOKIE_FILE\n })\n}).default({});\n\nconst canarySchema = z.object({\n targets: z.object({\n enabled: z.boolean().default(false)\n }).default({})\n});\n\nconst devtoolsSchema = z.object({\n showFullUrls: z.boolean().default(false),\n showFullConsole: z.boolean().default(false)\n});\n\nconst exportSchema = z.object({\n maxNodes: z.number().int().min(1).max(5000).default(1000),\n inlineStyles: z.boolean().default(true)\n});\n\nconst desktopSchema = z.object({\n permissionLevel: z.enum([\"off\", \"observe\"]).default(\"observe\"),\n commandTimeoutMs: z.number().int().min(250).max(300000).default(10000),\n auditArtifactsDir: z.string().min(1).default(\".opendevbrowser/desktop-runtime\"),\n accessibilityMaxDepth: z.number().int().min(1).max(8).default(2),\n accessibilityMaxChildren: z.number().int().min(1).max(500).default(25)\n}).default({});\n\nconst parallelismSchema = z.object({\n floor: z.number().int().min(1).max(32).default(1),\n backpressureTimeoutMs: z.number().int().min(100).max(120000).default(5000),\n sampleIntervalMs: z.number().int().min(250).max(60000).default(2000),\n recoveryStableWindows: z.number().int().min(1).max(20).default(3),\n hostFreeMemMediumPct: z.number().int().min(1).max(99).default(25),\n hostFreeMemHighPct: z.number().int().min(1).max(99).default(18),\n hostFreeMemCriticalPct: z.number().int().min(1).max(99).default(10),\n rssBudgetMb: z.number().int().min(64).max(65536).default(2048),\n rssSoftPct: z.number().int().min(1).max(99).default(65),\n rssHighPct: z.number().int().min(1).max(99).default(75),\n rssCriticalPct: z.number().int().min(1).max(99).default(85),\n queueAgeHighMs: z.number().int().min(100).max(120000).default(2000),\n queueAgeCriticalMs: z.number().int().min(100).max(120000).default(5000),\n modeCaps: z.object({\n managedHeaded: z.number().int().min(1).max(64).default(6),\n managedHeadless: z.number().int().min(1).max(64).default(8),\n cdpConnectHeaded: z.number().int().min(1).max(64).default(6),\n cdpConnectHeadless: z.number().int().min(1).max(64).default(8),\n extensionOpsHeaded: z.number().int().min(1).max(64).default(6),\n extensionLegacyCdpHeaded: z.number().int().min(1).max(64).default(1)\n }).default({})\n}).default({});\n\nconst blockerArtifactCapsSchema = z.object({\n maxNetworkEvents: z.number().int().min(1).max(500).default(20),\n maxConsoleEvents: z.number().int().min(1).max(500).default(20),\n maxExceptionEvents: z.number().int().min(1).max(200).default(10),\n maxHosts: z.number().int().min(1).max(200).default(10),\n maxTextLength: z.number().int().min(32).max(4096).default(512)\n}).default({});\n\nconst skillsNudgeSchema = z.object({\n enabled: z.boolean().default(true),\n keywords: z.array(z.string()).default([\n \"quick start\",\n \"getting started\",\n \"launch\",\n \"connect\",\n \"setup\"\n ]),\n maxAgeMs: z.number().int().min(1000).max(600000).default(60000)\n});\n\nconst skillsSchema = z.object({\n nudge: skillsNudgeSchema.default({})\n}).default({});\n\nconst continuityNudgeSchema = z.object({\n enabled: z.boolean().default(true),\n keywords: z.array(z.string()).default([\n \"plan\",\n \"multi-step\",\n \"multi step\",\n \"long-running\",\n \"long running\",\n \"refactor\",\n \"migration\",\n \"rollout\",\n \"release\",\n \"upgrade\",\n \"investigate\",\n \"follow-up\",\n \"continue\"\n ]),\n maxAgeMs: z.number().int().min(1000).max(600000).default(60000)\n});\n\nconst continuitySchema = z.object({\n enabled: z.boolean().default(true),\n filePath: z.string().min(1).default(\"opendevbrowser_continuity.md\"),\n nudge: continuityNudgeSchema.default({})\n}).default({});\n\nconst tier1GeolocationSchema = z.object({\n latitude: z.number().min(-90).max(90),\n longitude: z.number().min(-180).max(180),\n accuracy: z.number().min(1).max(10000).default(50)\n});\n\nconst fingerprintTier1Schema = z.object({\n enabled: z.boolean().default(true),\n warnOnly: z.boolean().default(true),\n locale: z.string().min(2).optional(),\n timezone: z.string().min(2).optional(),\n languages: z.array(z.string().min(2)).default([]),\n requireProxy: z.boolean().default(false),\n geolocation: tier1GeolocationSchema.optional(),\n geolocationRequired: z.boolean().default(false)\n}).default({});\n\nconst fingerprintTier2Schema = z.object({\n enabled: z.boolean().default(true),\n mode: z.union([z.enum([\"deterministic\", \"adaptive\"]), z.literal(\"off\")])\n .default(\"adaptive\")\n .transform((mode) => {\n return mode === \"off\" ? \"deterministic\" : mode;\n }),\n continuousSignals: z.boolean().default(true),\n rotationIntervalMs: z.number().int().min(0).max(86_400_000).default(900_000),\n challengePatterns: z.array(z.string().min(1)).default([\n \"captcha\",\n \"challenge\",\n \"interstitial\",\n \"cf_chl\",\n \"bot\"\n ]),\n maxChallengeEvents: z.number().int().min(1).max(100).default(20),\n scorePenalty: z.number().int().min(1).max(100).default(20),\n scoreRecovery: z.number().int().min(0).max(100).default(5),\n rotationHealthThreshold: z.number().int().min(0).max(100).default(55)\n}).default({});\n\nconst fingerprintTier3CanarySchema = z.object({\n windowSize: z.number().int().min(1).max(100).default(10),\n minSamples: z.number().int().min(1).max(100).default(3),\n promoteThreshold: z.number().int().min(0).max(100).default(80),\n rollbackThreshold: z.number().int().min(0).max(100).default(35)\n});\n\nconst fingerprintTier3Schema = z.object({\n enabled: z.boolean().default(true),\n continuousSignals: z.boolean().default(true),\n fallbackTier: z.enum([\"tier1\", \"tier2\"]).default(\"tier2\"),\n canary: fingerprintTier3CanarySchema.default({})\n}).default({});\n\nconst fingerprintSchema = z.object({\n tier1: fingerprintTier1Schema.default({}),\n tier2: fingerprintTier2Schema.default({}),\n tier3: fingerprintTier3Schema.default({})\n}).default({});\n\nconst figmaIntegrationSchema = z.object({\n accessToken: z.string().min(1).optional()\n}).default({});\n\nconst integrationsSchema = z.object({\n figma: figmaIntegrationSchema.default({})\n}).default({});\n\nconst canvasAdapterPluginDeclarationSchema = z.union([\n z.string().min(1),\n z.object({\n ref: z.string().min(1),\n enabled: z.boolean().optional(),\n trustedWorkspaceRoots: z.array(z.string().min(1)).optional(),\n capabilityOverrides: z.array(z.enum(CODE_SYNC_CAPABILITIES)).optional()\n })\n]);\n\nconst canvasSchema = z.object({\n adapterPlugins: z.array(canvasAdapterPluginDeclarationSchema).default([])\n}).default({});\n\nconst configSchema = z.object({\n headless: z.boolean().default(false),\n profile: z.string().min(1).default(\"default\"),\n snapshot: snapshotSchema.default({}),\n security: securitySchema.default({}),\n blockerDetectionThreshold: z.number().min(0).max(1).default(0.7),\n blockerResolutionTimeoutMs: z.number().int().min(1000).max(86_400_000).default(600_000),\n blockerArtifactCaps: blockerArtifactCapsSchema,\n providers: providersSchema.default({}),\n integrations: integrationsSchema.default({}),\n canvas: canvasSchema.default({}),\n devtools: devtoolsSchema.default({}),\n fingerprint: fingerprintSchema.default({}),\n canary: canarySchema.default({}),\n export: exportSchema.default({}),\n desktop: desktopSchema,\n parallelism: parallelismSchema.default({}),\n skills: skillsSchema.default({}),\n continuity: continuitySchema.default({}),\n relayPort: z.number().int().min(0).max(65535).default(DEFAULT_RELAY_PORT),\n relayToken: z.union([z.string(), z.literal(false)]).optional(),\n nativeExtensionId: z.string().optional(),\n daemonPort: z.number().int().min(0).max(65535).default(DEFAULT_DAEMON_PORT),\n daemonToken: z.string().min(1).optional(),\n chromePath: z.string().min(1).optional().refine(\n (val) => val === undefined || isExecutable(val),\n { message: \"chromePath must point to an executable file\" }\n ),\n flags: z.array(z.string()).default([]),\n checkForUpdates: z.boolean().default(false),\n persistProfile: z.boolean().default(true),\n skillPaths: z.array(z.string()).default([])\n});\n\nconst CONFIG_FILE_NAME = \"opendevbrowser.jsonc\";\n\nfunction getGlobalConfigPath(): string {\n const configDir = process.env.OPENCODE_CONFIG_DIR\n || path.join(os.homedir(), \".config\", \"opencode\");\n return path.join(configDir, CONFIG_FILE_NAME);\n}\n\nfunction ensureConfigFile(filePath: string): { relayToken: string; daemonToken: string } {\n const relayToken = generateSecureToken();\n const daemonToken = generateSecureToken();\n if (fs.existsSync(filePath)) {\n return { relayToken, daemonToken };\n }\n try {\n fs.mkdirSync(path.dirname(filePath), { recursive: true, mode: 0o700 });\n fs.writeFileSync(filePath, buildDefaultConfigJsonc(relayToken, daemonToken), { encoding: \"utf-8\", mode: 0o600 });\n } catch (error) {\n console.warn(`[opendevbrowser] Warning: Could not create config file at ${filePath}:`, error);\n }\n return { relayToken, daemonToken };\n}\n\nfunction loadConfigFile(filePath: string): {\n raw: unknown;\n content: string;\n generatedRelayToken: string | null;\n generatedDaemonToken: string | null;\n created: boolean;\n} {\n if (!fs.existsSync(filePath)) {\n const tokens = ensureConfigFile(filePath);\n const content = buildDefaultConfigJsonc(tokens.relayToken, tokens.daemonToken);\n return {\n raw: {},\n content,\n generatedRelayToken: tokens.relayToken,\n generatedDaemonToken: tokens.daemonToken,\n created: true\n };\n }\n const content = fs.readFileSync(filePath, \"utf-8\");\n const errors: Array<{ error: number; offset: number; length: number }> = [];\n const parsed = parseJsonc(content, errors, { allowTrailingComma: true });\n if (errors.length > 0) {\n const firstError = errors[0];\n if (!firstError) {\n throw new Error(`Invalid JSONC in opendevbrowser config at ${filePath}: parse error`);\n }\n throw new Error(`Invalid JSONC in opendevbrowser config at ${filePath}: parse error at offset ${firstError.offset}`);\n }\n return {\n raw: parsed ?? {},\n content,\n generatedRelayToken: null,\n generatedDaemonToken: null,\n created: false\n };\n}\n\nexport function loadGlobalConfig(): OpenDevBrowserConfig {\n const configPath = getGlobalConfigPath();\n const { raw, content, generatedRelayToken, generatedDaemonToken, created } = loadConfigFile(configPath);\n const parsed = configSchema.safeParse(raw);\n\n if (!parsed.success) {\n const issues = parsed.error.issues.map((issue) => issue.message).join(\"; \");\n throw new Error(`Invalid opendevbrowser config at ${configPath}: ${issues}`);\n }\n\n const data = parsed.data;\n const relayToken = data.relayToken ?? generatedRelayToken ?? generateSecureToken();\n const daemonToken = data.daemonToken ?? generatedDaemonToken ?? generateSecureToken();\n\n if (!created) {\n persistDaemonConfigDefaults({\n configPath,\n content,\n raw,\n daemonPort: data.daemonPort,\n daemonToken\n });\n }\n\n return { ...data, relayToken, daemonToken };\n}\n\nexport function resolveConfig(config: unknown): OpenDevBrowserConfig {\n if (typeof config === \"undefined\") {\n return loadGlobalConfig();\n }\n const parsed = configSchema.safeParse(config);\n if (!parsed.success) {\n const issues = parsed.error.issues.map((issue) => issue.message).join(\"; \");\n throw new Error(`Invalid opendevbrowser config override: ${issues}`);\n }\n const data = parsed.data;\n const relayToken = data.relayToken ?? generateSecureToken();\n const daemonToken = data.daemonToken ?? generateSecureToken();\n return { ...data, relayToken, daemonToken };\n}\n\nexport function requireChallengeOrchestrationConfig(\n config: Pick<OpenDevBrowserConfig, \"providers\">\n): ProvidersChallengeOrchestrationConfig {\n const challengeOrchestration = config.providers?.challengeOrchestration;\n if (!challengeOrchestration) {\n throw new Error(\"Challenge orchestration config is unavailable.\");\n }\n return challengeOrchestration;\n}\n\nfunction persistDaemonConfigDefaults(params: {\n configPath: string;\n content: string;\n raw: unknown;\n daemonPort: number;\n daemonToken: string;\n}): void {\n if (!isRecord(params.raw)) {\n return;\n }\n const hasDaemonPort = Object.prototype.hasOwnProperty.call(params.raw, \"daemonPort\");\n const hasDaemonToken = Object.prototype.hasOwnProperty.call(params.raw, \"daemonToken\");\n if (hasDaemonPort && hasDaemonToken) {\n return;\n }\n const formattingOptions = { insertSpaces: true, tabSize: 2 };\n let updatedContent = params.content;\n if (!hasDaemonPort) {\n const edits = modify(updatedContent, [\"daemonPort\"], params.daemonPort, { formattingOptions });\n if (edits.length) {\n updatedContent = applyEdits(updatedContent, edits);\n }\n }\n if (!hasDaemonToken) {\n const edits = modify(updatedContent, [\"daemonToken\"], params.daemonToken, { formattingOptions });\n if (edits.length) {\n updatedContent = applyEdits(updatedContent, edits);\n }\n }\n if (updatedContent !== params.content) {\n writeFileAtomic(params.configPath, updatedContent, { mode: 0o600 });\n }\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return typeof value === \"object\" && value !== null;\n};\n\nexport class ConfigStore {\n private current: OpenDevBrowserConfig;\n\n constructor(initial: OpenDevBrowserConfig) {\n this.current = initial;\n }\n\n get(): OpenDevBrowserConfig {\n return this.current;\n }\n\n set(next: OpenDevBrowserConfig): void {\n this.current = next;\n }\n}\n\nexport const __test__ = {\n persistDaemonConfigDefaults\n};\n","export const LEGACY_CODE_SYNC_ADAPTERS = [\"tsx-react-v1\"] as const;\nexport const BUILT_IN_FRAMEWORK_ADAPTER_IDS = [\n \"builtin:react-tsx-v2\",\n \"builtin:html-static-v1\",\n \"builtin:custom-elements-v1\",\n \"builtin:vue-sfc-v1\",\n \"builtin:svelte-sfc-v1\"\n] as const;\nexport const CODE_SYNC_ADAPTERS = [\n ...LEGACY_CODE_SYNC_ADAPTERS,\n ...BUILT_IN_FRAMEWORK_ADAPTER_IDS\n] as const;\nexport const CODE_SYNC_SYNC_MODES = [\"manual\", \"watch\"] as const;\nexport const CODE_SYNC_PROJECTIONS = [\"canvas_html\", \"bound_app_runtime\"] as const;\nexport const CODE_SYNC_ATTACH_MODES = [\"observer\", \"lease_reclaim\"] as const;\nexport const CODE_SYNC_LEASE_ROLES = [\"lease_holder\", \"observer\"] as const;\nexport const CODE_SYNC_STATES = [\n \"idle\",\n \"session_join_pending\",\n \"pull_pending\",\n \"push_pending\",\n \"in_sync\",\n \"drift_detected\",\n \"conflict\",\n \"unsupported\",\n \"lease_lost\",\n \"projection_fallback\"\n] as const;\nexport const CODE_SYNC_OWNERSHIP_DIMENSIONS = [\n \"structure\",\n \"text\",\n \"style\",\n \"tokens\",\n \"behavior\",\n \"data\"\n] as const;\nexport const CODE_SYNC_OWNERSHIP_STATES = [\"shared\", \"canvas\", \"code\"] as const;\nexport const CODE_SYNC_CAPABILITIES = [\n \"preview\",\n \"inventory_extract\",\n \"code_pull\",\n \"code_push\",\n \"token_roundtrip\",\n \"figma_materialize\"\n] as const;\nexport const CODE_SYNC_STATUS_REASONS = [\n \"none\",\n \"framework_migrated\",\n \"manifest_migrated\",\n \"requires_rebind\",\n \"framework_mismatch\",\n \"adapter_mismatch\",\n \"capability_denied\",\n \"plugin_not_found\",\n \"plugin_load_failed\",\n \"plugin_execution_failed\",\n \"import_graph_changed\"\n] as const;\n\nexport type CodeSyncBuiltInFrameworkAdapterId = typeof BUILT_IN_FRAMEWORK_ADAPTER_IDS[number];\nexport type CodeSyncLegacyAdapter = typeof LEGACY_CODE_SYNC_ADAPTERS[number];\nexport type CodeSyncAdapter =\n | CodeSyncBuiltInFrameworkAdapterId\n | CodeSyncLegacyAdapter\n | `${string}/${string}`;\nexport type CodeSyncSyncMode = typeof CODE_SYNC_SYNC_MODES[number];\nexport type CodeSyncProjectionMode = typeof CODE_SYNC_PROJECTIONS[number];\nexport type CodeSyncAttachMode = typeof CODE_SYNC_ATTACH_MODES[number];\nexport type CodeSyncLeaseRole = typeof CODE_SYNC_LEASE_ROLES[number];\nexport type CodeSyncState = typeof CODE_SYNC_STATES[number];\nexport type CodeSyncOwnershipDimension = typeof CODE_SYNC_OWNERSHIP_DIMENSIONS[number];\nexport type CodeSyncOwnershipState = typeof CODE_SYNC_OWNERSHIP_STATES[number];\nexport type CodeSyncCapability = typeof CODE_SYNC_CAPABILITIES[number];\nexport type CodeSyncStatusReason = typeof CODE_SYNC_STATUS_REASONS[number];\n\nexport type CodeSyncOwnership = Record<CodeSyncOwnershipDimension, CodeSyncOwnershipState>;\n\nexport type CodeSyncSourceFamily =\n | \"react-tsx\"\n | \"html-static\"\n | \"custom-elements\"\n | \"vue-sfc\"\n | \"svelte-sfc\"\n | \"unknown\";\n\nexport type CodeSyncRootLocator =\n | {\n kind: \"react-export\";\n exportName: string;\n selector?: string;\n }\n | {\n kind: \"dom-selector\";\n selector: string;\n }\n | {\n kind: \"document-root\";\n selector?: string;\n }\n | {\n kind: \"vue-template\";\n selector?: string;\n }\n | {\n kind: \"svelte-markup\";\n selector?: string;\n };\n\nexport type CodeSyncCapabilityGrant = {\n capability: CodeSyncCapability;\n granted: boolean;\n reasonCode?: CodeSyncStatusReason;\n details?: Record<string, unknown>;\n};\n\nexport type CanvasCodeSyncBindingMetadata = {\n adapter: string;\n frameworkAdapterId: string;\n frameworkId: string;\n sourceFamily: CodeSyncSourceFamily;\n adapterKind: string;\n adapterVersion: number;\n repoPath: string;\n rootLocator: CodeSyncRootLocator;\n exportName?: string;\n selector?: string;\n syncMode: CodeSyncSyncMode;\n ownership: CodeSyncOwnership;\n route?: string;\n verificationTarget?: string;\n runtimeRootSelector?: string;\n projection?: CodeSyncProjectionMode;\n manifestVersion: number;\n libraryAdapterIds: string[];\n pluginId?: string;\n declaredCapabilities: CodeSyncCapability[];\n grantedCapabilities: CodeSyncCapabilityGrant[];\n reasonCode: CodeSyncStatusReason;\n};\n\nexport type CodeSyncSourcePosition = {\n offset: number;\n line: number;\n column: number;\n};\n\nexport type CodeSyncSourceSpan = {\n start: CodeSyncSourcePosition;\n end: CodeSyncSourcePosition;\n};\n\nexport type CodeSyncSourceLocator = {\n sourcePath: string;\n sourceSpan: CodeSyncSourceSpan;\n astPath: string;\n};\n\nexport type CodeSyncUnsupportedFragment = {\n key: string;\n reason: string;\n raw: string;\n locator?: CodeSyncSourceLocator;\n};\n\nexport type CodeSyncNodeKind = \"element\" | \"text\" | \"unsupported\";\n\nexport type CodeSyncNode = {\n key: string;\n kind: CodeSyncNodeKind;\n bindingId: string;\n locator: CodeSyncSourceLocator;\n tagName?: string;\n text?: string;\n attributes: Record<string, string>;\n style: Record<string, string | number>;\n preservedAttributes: string[];\n childKeys: string[];\n raw?: string;\n unsupportedReason?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CodeSyncGraph = {\n adapter: string;\n frameworkAdapterId: string;\n frameworkId: string;\n sourceFamily: CodeSyncSourceFamily;\n bindingId: string;\n repoPath: string;\n rootKey: string;\n nodes: Record<string, CodeSyncNode>;\n sourceHash: string;\n unsupportedFragments: CodeSyncUnsupportedFragment[];\n libraryAdapterIds: string[];\n declaredCapabilities: CodeSyncCapability[];\n grantedCapabilities: CodeSyncCapabilityGrant[];\n};\n\nexport type CodeSyncManifestNodeMapping = {\n nodeId: string;\n locator: CodeSyncSourceLocator;\n};\n\nexport type CodeSyncManifest = {\n manifestVersion: number;\n bindingId: string;\n documentId: string;\n repoPath: string;\n adapter: string;\n frameworkAdapterId: string;\n frameworkId: string;\n sourceFamily: CodeSyncSourceFamily;\n adapterKind: string;\n adapterVersion: number;\n pluginId?: string;\n libraryAdapterIds: string[];\n rootLocator: CodeSyncRootLocator;\n sourceHash: string;\n documentRevision: number;\n nodeMappings: CodeSyncManifestNodeMapping[];\n lastImportedAt?: string;\n lastPushedAt?: string;\n reasonCode: CodeSyncStatusReason;\n};\n\nexport type CodeSyncConflictKind =\n | \"source_hash_changed\"\n | \"document_revision_changed\"\n | \"ownership_violation\"\n | \"unsupported_change\";\n\nexport type CodeSyncConflict = {\n kind: CodeSyncConflictKind;\n bindingId: string;\n nodeId?: string;\n message: string;\n details?: Record<string, unknown>;\n};\n\nexport type CodeSyncResolutionPolicy = \"prefer_code\" | \"prefer_canvas\" | \"manual\";\n\nexport type CodeSyncDriftState = \"clean\" | \"source_changed\" | \"document_changed\" | \"conflict\";\n\nexport type CodeSyncBindingStatus = {\n bindingId: string;\n nodeId: string;\n repoPath: string;\n adapter: string;\n frameworkAdapterId: string;\n frameworkId: string;\n sourceFamily: CodeSyncSourceFamily;\n adapterKind: string;\n adapterVersion: number;\n syncMode: CodeSyncSyncMode;\n projection: CodeSyncProjectionMode;\n state: CodeSyncState;\n driftState: CodeSyncDriftState;\n watchEnabled: boolean;\n lastImportedAt?: string;\n lastPushedAt?: string;\n conflictCount: number;\n unsupportedCount: number;\n pluginId?: string;\n libraryAdapterIds: string[];\n manifestVersion: number;\n declaredCapabilities: CodeSyncCapability[];\n grantedCapabilities: CodeSyncCapability[];\n capabilityDenials: CodeSyncCapabilityGrant[];\n reasonCode: CodeSyncStatusReason;\n};\n\nexport type CodeSyncWatchState = \"idle\" | \"watching\" | \"stopped\";\n\nexport type CodeSyncSessionStatus = {\n state: CodeSyncState;\n boundFiles: string[];\n attachedClients: number;\n activeLeaseHolder: string | null;\n watchState: CodeSyncWatchState;\n lastImportAt?: string;\n lastPushAt?: string;\n conflictCount: number;\n driftState: CodeSyncDriftState;\n bindings: CodeSyncBindingStatus[];\n};\n\nexport type CanvasParityNodeArtifact = {\n nodeId: string;\n bindingId: string;\n text: string;\n childOrderHash: string;\n attributes: Record<string, string>;\n styleProjection: Record<string, string>;\n};\n\nexport type CanvasParityArtifact = {\n projection: CodeSyncProjectionMode;\n rootBindingId: string;\n capturedAt: string;\n hierarchyHash: string;\n nodes: CanvasParityNodeArtifact[];\n};\n\nexport const DEFAULT_CODE_SYNC_OWNERSHIP: CodeSyncOwnership = {\n structure: \"shared\",\n text: \"shared\",\n style: \"shared\",\n tokens: \"shared\",\n behavior: \"code\",\n data: \"code\"\n};\n\nconst BUILT_IN_FRAMEWORK_DETAILS: Record<\n CodeSyncBuiltInFrameworkAdapterId,\n {\n frameworkId: string;\n sourceFamily: CodeSyncSourceFamily;\n adapterKind: string;\n adapterVersion: number;\n declaredCapabilities: CodeSyncCapability[];\n }\n> = {\n \"builtin:react-tsx-v2\": {\n frameworkId: \"react\",\n sourceFamily: \"react-tsx\",\n adapterKind: \"tsx-react\",\n adapterVersion: 2,\n declaredCapabilities: [\"preview\", \"inventory_extract\", \"code_pull\", \"code_push\", \"token_roundtrip\"]\n },\n \"builtin:html-static-v1\": {\n frameworkId: \"html\",\n sourceFamily: \"html-static\",\n adapterKind: \"html-static\",\n adapterVersion: 1,\n declaredCapabilities: [\"preview\", \"inventory_extract\", \"code_pull\"]\n },\n \"builtin:custom-elements-v1\": {\n frameworkId: \"custom-elements\",\n sourceFamily: \"custom-elements\",\n adapterKind: \"custom-elements\",\n adapterVersion: 1,\n declaredCapabilities: [\"preview\", \"inventory_extract\", \"code_pull\"]\n },\n \"builtin:vue-sfc-v1\": {\n frameworkId: \"vue\",\n sourceFamily: \"vue-sfc\",\n adapterKind: \"vue-sfc\",\n adapterVersion: 1,\n declaredCapabilities: [\"preview\", \"inventory_extract\", \"code_pull\"]\n },\n \"builtin:svelte-sfc-v1\": {\n frameworkId: \"svelte\",\n sourceFamily: \"svelte-sfc\",\n adapterKind: \"svelte-sfc\",\n adapterVersion: 1,\n declaredCapabilities: [\"preview\", \"inventory_extract\", \"code_pull\"]\n }\n};\n\nconst LEGACY_ADAPTER_MAP: Record<\n CodeSyncLegacyAdapter,\n {\n frameworkAdapterId: CodeSyncBuiltInFrameworkAdapterId;\n reasonCode: CodeSyncStatusReason;\n }\n> = {\n \"tsx-react-v1\": {\n frameworkAdapterId: \"builtin:react-tsx-v2\",\n reasonCode: \"framework_migrated\"\n }\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n\nfunction readString(value: unknown): string | null {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n}\n\nfunction readNumber(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction readStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return [...new Set(value.filter((entry): entry is string => typeof entry === \"string\" && entry.trim().length > 0).map((entry) => entry.trim()))];\n}\n\nexport function isCodeSyncState(value: unknown): value is CodeSyncState {\n return typeof value === \"string\" && (CODE_SYNC_STATES as readonly string[]).includes(value);\n}\n\nexport function isCodeSyncProjectionMode(value: unknown): value is CodeSyncProjectionMode {\n return typeof value === \"string\" && (CODE_SYNC_PROJECTIONS as readonly string[]).includes(value);\n}\n\nexport function isCodeSyncCapability(value: unknown): value is CodeSyncCapability {\n return typeof value === \"string\" && (CODE_SYNC_CAPABILITIES as readonly string[]).includes(value);\n}\n\nexport function isCodeSyncStatusReason(value: unknown): value is CodeSyncStatusReason {\n return typeof value === \"string\" && (CODE_SYNC_STATUS_REASONS as readonly string[]).includes(value);\n}\n\nexport function normalizeCodeSyncOwnership(value: unknown): CodeSyncOwnership {\n if (!isRecord(value)) {\n return { ...DEFAULT_CODE_SYNC_OWNERSHIP };\n }\n const normalized = {} as CodeSyncOwnership;\n for (const dimension of CODE_SYNC_OWNERSHIP_DIMENSIONS) {\n const entry = value[dimension];\n normalized[dimension] = typeof entry === \"string\" && (CODE_SYNC_OWNERSHIP_STATES as readonly string[]).includes(entry)\n ? entry as CodeSyncOwnershipState\n : DEFAULT_CODE_SYNC_OWNERSHIP[dimension];\n }\n return normalized;\n}\n\nfunction defaultDeclaredCapabilities(frameworkAdapterId: string): CodeSyncCapability[] {\n const details = BUILT_IN_FRAMEWORK_DETAILS[frameworkAdapterId as CodeSyncBuiltInFrameworkAdapterId];\n return details ? [...details.declaredCapabilities] : [\"preview\"];\n}\n\nfunction defaultGrantedCapabilities(frameworkAdapterId: string): CodeSyncCapabilityGrant[] {\n return defaultDeclaredCapabilities(frameworkAdapterId).map((capability) => ({\n capability,\n granted: true\n }));\n}\n\nfunction mergeDeclaredCapabilities(\n frameworkAdapterId: string,\n explicitCapabilities: CodeSyncCapability[]\n): CodeSyncCapability[] {\n const merged = new Set<CodeSyncCapability>(defaultDeclaredCapabilities(frameworkAdapterId));\n for (const capability of explicitCapabilities) {\n merged.add(capability);\n }\n return [...merged];\n}\n\nfunction mergeGrantedCapabilities(\n frameworkAdapterId: string,\n explicitGrants: CodeSyncCapabilityGrant[]\n): CodeSyncCapabilityGrant[] {\n const grants = new Map<CodeSyncCapability, CodeSyncCapabilityGrant>();\n for (const grant of defaultGrantedCapabilities(frameworkAdapterId)) {\n grants.set(grant.capability, grant);\n }\n for (const grant of explicitGrants) {\n grants.set(grant.capability, grant);\n }\n return [...grants.values()];\n}\n\nexport function inferBuiltInFrameworkAdapterIdFromPath(repoPath: string): CodeSyncBuiltInFrameworkAdapterId {\n const normalized = repoPath.toLowerCase();\n if (normalized.endsWith(\".vue\")) {\n return \"builtin:vue-sfc-v1\";\n }\n if (normalized.endsWith(\".svelte\")) {\n return \"builtin:svelte-sfc-v1\";\n }\n if (normalized.endsWith(\".html\") || normalized.endsWith(\".htm\")) {\n return \"builtin:html-static-v1\";\n }\n return \"builtin:react-tsx-v2\";\n}\n\nexport function inferCodeSyncSourceFamilyFromPath(repoPath: string): CodeSyncSourceFamily {\n return BUILT_IN_FRAMEWORK_DETAILS[inferBuiltInFrameworkAdapterIdFromPath(repoPath)].sourceFamily;\n}\n\nexport function normalizeCodeSyncRootLocator(\n value: unknown,\n options: {\n sourceFamily: CodeSyncSourceFamily;\n exportName?: string;\n selector?: string;\n }\n): CodeSyncRootLocator {\n const record = isRecord(value) ? value : {};\n const kind = readString(record.kind);\n const exportName = readString(record.exportName) ?? options.exportName;\n const selector = readString(record.selector) ?? options.selector;\n\n if (options.sourceFamily === \"react-tsx\") {\n if (kind === \"dom-selector\" && selector) {\n return { kind, selector };\n }\n if (exportName) {\n return {\n kind: \"react-export\",\n exportName,\n ...(selector ? { selector } : {})\n };\n }\n if (selector) {\n return {\n kind: \"dom-selector\",\n selector\n };\n }\n throw new Error(\"codeSync.exportName or codeSync.selector is required.\");\n }\n\n if (options.sourceFamily === \"vue-sfc\") {\n return {\n kind: \"vue-template\",\n ...(selector ? { selector } : {})\n };\n }\n\n if (options.sourceFamily === \"svelte-sfc\") {\n return {\n kind: \"svelte-markup\",\n ...(selector ? { selector } : {})\n };\n }\n\n if (selector) {\n return {\n kind: \"dom-selector\",\n selector\n };\n }\n\n return {\n kind: \"document-root\"\n };\n}\n\nexport function normalizeCodeSyncCapabilityGrant(value: unknown): CodeSyncCapabilityGrant | null {\n if (!isRecord(value) || !isCodeSyncCapability(value.capability)) {\n return null;\n }\n return {\n capability: value.capability,\n granted: value.granted !== false,\n ...(isCodeSyncStatusReason(value.reasonCode) ? { reasonCode: value.reasonCode } : {}),\n ...(isRecord(value.details) ? { details: value.details } : {})\n };\n}\n\nexport function normalizeFrameworkAdapterIdentity(input: {\n adapter: string | null;\n frameworkAdapterId?: string | null;\n repoPath: string;\n}): {\n adapter: string;\n frameworkAdapterId: string;\n frameworkId: string;\n sourceFamily: CodeSyncSourceFamily;\n adapterKind: string;\n adapterVersion: number;\n reasonCode: CodeSyncStatusReason;\n pluginId?: string;\n} {\n const adapter = input.adapter ?? \"\";\n const explicitFrameworkAdapterId = readString(input.frameworkAdapterId);\n const inferredFrameworkAdapterId = explicitFrameworkAdapterId\n ?? (adapter in LEGACY_ADAPTER_MAP\n ? LEGACY_ADAPTER_MAP[adapter as CodeSyncLegacyAdapter].frameworkAdapterId\n : adapter.startsWith(\"builtin:\")\n ? adapter\n : adapter.includes(\"/\")\n ? adapter\n : inferBuiltInFrameworkAdapterIdFromPath(input.repoPath));\n const migratedReason = adapter in LEGACY_ADAPTER_MAP\n ? LEGACY_ADAPTER_MAP[adapter as CodeSyncLegacyAdapter].reasonCode\n : \"none\";\n\n if (inferredFrameworkAdapterId in BUILT_IN_FRAMEWORK_DETAILS) {\n const details = BUILT_IN_FRAMEWORK_DETAILS[inferredFrameworkAdapterId as CodeSyncBuiltInFrameworkAdapterId];\n return {\n adapter: adapter || inferredFrameworkAdapterId,\n frameworkAdapterId: inferredFrameworkAdapterId,\n frameworkId: details.frameworkId,\n sourceFamily: details.sourceFamily,\n adapterKind: details.adapterKind,\n adapterVersion: details.adapterVersion,\n reasonCode: migratedReason\n };\n }\n\n const pluginId = inferredFrameworkAdapterId.includes(\"/\")\n ? inferredFrameworkAdapterId.split(\"/\", 1)[0]\n : undefined;\n const sourceFamily = inferCodeSyncSourceFamilyFromPath(input.repoPath);\n return {\n adapter: adapter || inferredFrameworkAdapterId,\n frameworkAdapterId: inferredFrameworkAdapterId,\n frameworkId: sourceFamily === \"react-tsx\"\n ? \"react\"\n : sourceFamily === \"vue-sfc\"\n ? \"vue\"\n : sourceFamily === \"svelte-sfc\"\n ? \"svelte\"\n : \"html\",\n sourceFamily,\n adapterKind: pluginId ? \"plugin\" : \"unknown\",\n adapterVersion: 1,\n reasonCode: migratedReason,\n ...(pluginId ? { pluginId } : {})\n };\n}\n\nexport function normalizeCodeSyncBindingMetadata(value: unknown): CanvasCodeSyncBindingMetadata {\n if (!isRecord(value)) {\n throw new Error(\"Invalid code sync binding metadata.\");\n }\n const repoPath = readString(value.repoPath);\n const syncMode = readString(value.syncMode);\n if (!repoPath) {\n throw new Error(\"codeSync.repoPath is required.\");\n }\n if (!syncMode || !(CODE_SYNC_SYNC_MODES as readonly string[]).includes(syncMode)) {\n throw new Error(`Unsupported code sync mode: ${syncMode || \"unknown\"}`);\n }\n\n const exportName = readString(value.exportName) ?? undefined;\n const selector = readString(value.selector) ?? undefined;\n const identity = normalizeFrameworkAdapterIdentity({\n adapter: readString(value.adapter),\n frameworkAdapterId: readString(value.frameworkAdapterId),\n repoPath\n });\n const rootLocator = normalizeCodeSyncRootLocator(value.rootLocator, {\n sourceFamily: identity.sourceFamily,\n exportName,\n selector\n });\n const declaredCapabilities = readStringArray(value.declaredCapabilities)\n .filter((entry): entry is CodeSyncCapability => isCodeSyncCapability(entry));\n const grantedCapabilities = Array.isArray(value.grantedCapabilities)\n ? value.grantedCapabilities\n .map((entry) => normalizeCodeSyncCapabilityGrant(entry))\n .filter((entry): entry is CodeSyncCapabilityGrant => Boolean(entry))\n : [];\n const manifestVersion = readNumber(value.manifestVersion) ?? 2;\n const reasonCode = isCodeSyncStatusReason(value.reasonCode)\n ? value.reasonCode\n : identity.reasonCode;\n\n return {\n adapter: identity.adapter,\n frameworkAdapterId: identity.frameworkAdapterId,\n frameworkId: readString(value.frameworkId) ?? identity.frameworkId,\n sourceFamily: (readString(value.sourceFamily) as CodeSyncSourceFamily | null) ?? identity.sourceFamily,\n adapterKind: readString(value.adapterKind) ?? identity.adapterKind,\n adapterVersion: readNumber(value.adapterVersion) ?? identity.adapterVersion,\n repoPath,\n rootLocator,\n exportName,\n selector,\n syncMode: syncMode as CodeSyncSyncMode,\n ownership: normalizeCodeSyncOwnership(value.ownership),\n route: readString(value.route) ?? undefined,\n verificationTarget: readString(value.verificationTarget) ?? undefined,\n runtimeRootSelector: readString(value.runtimeRootSelector) ?? undefined,\n projection: isCodeSyncProjectionMode(value.projection) ? value.projection : \"canvas_html\",\n manifestVersion,\n libraryAdapterIds: readStringArray(value.libraryAdapterIds ?? value.libraryAdapters),\n pluginId: readString(value.pluginId) ?? identity.pluginId,\n declaredCapabilities: declaredCapabilities.length > 0\n ? mergeDeclaredCapabilities(identity.frameworkAdapterId, declaredCapabilities)\n : defaultDeclaredCapabilities(identity.frameworkAdapterId),\n grantedCapabilities: grantedCapabilities.length > 0\n ? mergeGrantedCapabilities(identity.frameworkAdapterId, grantedCapabilities)\n : defaultGrantedCapabilities(identity.frameworkAdapterId),\n reasonCode\n };\n}\n","import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { homedir } from \"os\";\n\nconst PROFILE_PREFERENCES_FILES = [\"Preferences\", \"Secure Preferences\"] as const;\n\nexport type ChromeUserDataSource = {\n browserName: \"chrome\" | \"chromium\" | \"brave\";\n userDataDir: string;\n profileDirectory: string;\n profilePath: string;\n};\n\ntype ChromeUserDataRoot = {\n browserName: ChromeUserDataSource[\"browserName\"];\n userDataDir: string;\n};\n\nconst getChromeUserDataRootCandidates = (): ChromeUserDataRoot[] => {\n if (process.platform === \"darwin\") {\n return [\n {\n browserName: \"chrome\",\n userDataDir: path.join(homedir(), \"Library\", \"Application Support\", \"Google\", \"Chrome\")\n },\n {\n browserName: \"chromium\",\n userDataDir: path.join(homedir(), \"Library\", \"Application Support\", \"Chromium\")\n },\n {\n browserName: \"brave\",\n userDataDir: path.join(homedir(), \"Library\", \"Application Support\", \"BraveSoftware\", \"Brave-Browser\")\n }\n ];\n }\n\n if (process.platform === \"linux\") {\n return [\n {\n browserName: \"chrome\",\n userDataDir: path.join(homedir(), \".config\", \"google-chrome\")\n },\n {\n browserName: \"chromium\",\n userDataDir: path.join(homedir(), \".config\", \"chromium\")\n },\n {\n browserName: \"brave\",\n userDataDir: path.join(homedir(), \".config\", \"BraveSoftware\", \"Brave-Browser\")\n }\n ];\n }\n\n if (process.platform === \"win32\") {\n const localAppData = process.env.LOCALAPPDATA\n || (process.env.USERPROFILE ? path.join(process.env.USERPROFILE, \"AppData\", \"Local\") : \"\");\n if (!localAppData) {\n return [];\n }\n return [\n {\n browserName: \"chrome\",\n userDataDir: path.join(localAppData, \"Google\", \"Chrome\", \"User Data\")\n },\n {\n browserName: \"chromium\",\n userDataDir: path.join(localAppData, \"Chromium\", \"User Data\")\n },\n {\n browserName: \"brave\",\n userDataDir: path.join(localAppData, \"BraveSoftware\", \"Brave-Browser\", \"User Data\")\n }\n ];\n }\n\n return [];\n};\n\nexport const getChromeUserDataRoots = (): string[] => {\n return getChromeUserDataRootCandidates().map((candidate) => candidate.userDataDir);\n};\n\nexport const getProfileDirs = (root: string): string[] => {\n try {\n const entries = fs.readdirSync(root, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isDirectory() && (entry.name === \"Default\" || entry.name.startsWith(\"Profile \")))\n .map((entry) => path.join(root, entry.name))\n .filter((dir) => PROFILE_PREFERENCES_FILES.some((filename) => fs.existsSync(path.join(dir, filename))));\n } catch {\n return [];\n }\n};\n\nexport const readProfilePreferences = (profileDir: string): Record<string, unknown>[] => {\n const records: Record<string, unknown>[] = [];\n for (const filename of PROFILE_PREFERENCES_FILES) {\n try {\n const raw = fs.readFileSync(path.join(profileDir, filename), \"utf8\");\n records.push(JSON.parse(raw) as Record<string, unknown>);\n } catch {\n // Missing or invalid preference files are ignored; other sources may still be valid.\n }\n }\n return records;\n};\n\nconst readLocalState = (root: string): Record<string, unknown> | null => {\n try {\n const raw = fs.readFileSync(path.join(root, \"Local State\"), \"utf8\");\n return JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return null;\n }\n};\n\nconst pickPreferredProfileDirectory = (root: string, profileDirs: string[]): string | null => {\n if (profileDirs.length === 0) {\n return null;\n }\n const available = new Set(profileDirs.map((profileDir) => path.basename(profileDir)));\n const localState = readLocalState(root);\n const profileState = localState?.profile;\n const lastUsed = typeof profileState === \"object\" && profileState !== null\n ? typeof (profileState as { last_used?: unknown }).last_used === \"string\"\n ? (profileState as { last_used: string }).last_used\n : null\n : null;\n if (lastUsed && available.has(lastUsed)) {\n return lastUsed;\n }\n if (available.has(\"Default\")) {\n return \"Default\";\n }\n const firstProfile = profileDirs[0]!;\n return path.basename(firstProfile);\n};\n\nexport const discoverSystemChromeProfileSource = (): ChromeUserDataSource | null => {\n for (const candidate of getChromeUserDataRootCandidates()) {\n const profileDirs = getProfileDirs(candidate.userDataDir);\n const profileDirectory = pickPreferredProfileDirectory(candidate.userDataDir, profileDirs);\n if (!profileDirectory) {\n continue;\n }\n return {\n browserName: candidate.browserName,\n userDataDir: candidate.userDataDir,\n profileDirectory,\n profilePath: path.join(candidate.userDataDir, profileDirectory)\n };\n }\n return null;\n};\n\nexport const __test__ = {\n getChromeUserDataRoots,\n getProfileDirs,\n readProfilePreferences,\n discoverSystemChromeProfileSource\n};\n"],"mappings":";;;;;;;;AAAA,SAAS,SAAS;AAClB,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,SAAS,SAAS,YAAY,QAAQ,kBAAkB;;;ACJjD,IAAM,4BAA4B,CAAC,cAAc;AACjD,IAAM,iCAAiC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,IAAM,qBAAqB;AAAA,EAChC,GAAG;AAAA,EACH,GAAG;AACL;AACO,IAAM,uBAAuB,CAAC,UAAU,OAAO;AAC/C,IAAM,wBAAwB,CAAC,eAAe,mBAAmB;AAejE,IAAM,iCAAiC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,IAAM,6BAA6B,CAAC,UAAU,UAAU,MAAM;AAC9D,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,IAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAsPO,IAAM,8BAAiD;AAAA,EAC5D,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AACR;AAEA,IAAM,6BASF;AAAA,EACF,wBAAwB;AAAA,IACtB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB,CAAC,WAAW,qBAAqB,aAAa,aAAa,iBAAiB;AAAA,EACpG;AAAA,EACA,0BAA0B;AAAA,IACxB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB,CAAC,WAAW,qBAAqB,WAAW;AAAA,EACpE;AAAA,EACA,8BAA8B;AAAA,IAC5B,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB,CAAC,WAAW,qBAAqB,WAAW;AAAA,EACpE;AAAA,EACA,sBAAsB;AAAA,IACpB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB,CAAC,WAAW,qBAAqB,WAAW;AAAA,EACpE;AAAA,EACA,yBAAyB;AAAA,IACvB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,sBAAsB,CAAC,WAAW,qBAAqB,WAAW;AAAA,EACpE;AACF;AAEA,IAAM,qBAMF;AAAA,EACF,gBAAgB;AAAA,IACd,oBAAoB;AAAA,IACpB,YAAY;AAAA,EACd;AACF;AAEA,IAAM,WAAW,CAAC,UAAqD,QAAQ,KAAK,KAAK,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAE1I,SAAS,WAAW,OAA+B;AACjD,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,IAAI,MAAM,KAAK,IAAI;AAC/E;AAEA,SAAS,WAAW,OAA+B;AACjD,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AACvE;AAEA,SAAS,gBAAgB,OAA0B;AACjD,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,CAAC;AAAA,EACV;AACA,SAAO,CAAC,GAAG,IAAI,IAAI,MAAM,OAAO,CAAC,UAA2B,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,CAAC,CAAC;AACjJ;AAMO,SAAS,yBAAyB,OAAiD;AACxF,SAAO,OAAO,UAAU,YAAa,sBAA4C,SAAS,KAAK;AACjG;AAEO,SAAS,qBAAqB,OAA6C;AAChF,SAAO,OAAO,UAAU,YAAa,uBAA6C,SAAS,KAAK;AAClG;AAEO,SAAS,uBAAuB,OAA+C;AACpF,SAAO,OAAO,UAAU,YAAa,yBAA+C,SAAS,KAAK;AACpG;AAEO,SAAS,2BAA2B,OAAmC;AAC5E,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,WAAO,EAAE,GAAG,4BAA4B;AAAA,EAC1C;AACA,QAAM,aAAa,CAAC;AACpB,aAAW,aAAa,gCAAgC;AACtD,UAAM,QAAQ,MAAM,SAAS;AAC7B,eAAW,SAAS,IAAI,OAAO,UAAU,YAAa,2BAAiD,SAAS,KAAK,IACjH,QACA,4BAA4B,SAAS;AAAA,EAC3C;AACA,SAAO;AACT;AAEA,SAAS,4BAA4B,oBAAkD;AACrF,QAAM,UAAU,2BAA2B,kBAAuD;AAClG,SAAO,UAAU,CAAC,GAAG,QAAQ,oBAAoB,IAAI,CAAC,SAAS;AACjE;AAEA,SAAS,2BAA2B,oBAAuD;AACzF,SAAO,4BAA4B,kBAAkB,EAAE,IAAI,CAAC,gBAAgB;AAAA,IAC1E;AAAA,IACA,SAAS;AAAA,EACX,EAAE;AACJ;AAEA,SAAS,0BACP,oBACA,sBACsB;AACtB,QAAM,SAAS,IAAI,IAAwB,4BAA4B,kBAAkB,CAAC;AAC1F,aAAW,cAAc,sBAAsB;AAC7C,WAAO,IAAI,UAAU;AAAA,EACvB;AACA,SAAO,CAAC,GAAG,MAAM;AACnB;AAEA,SAAS,yBACP,oBACA,gBAC2B;AAC3B,QAAM,SAAS,oBAAI,IAAiD;AACpE,aAAW,SAAS,2BAA2B,kBAAkB,GAAG;AAClE,WAAO,IAAI,MAAM,YAAY,KAAK;AAAA,EACpC;AACA,aAAW,SAAS,gBAAgB;AAClC,WAAO,IAAI,MAAM,YAAY,KAAK;AAAA,EACpC;AACA,SAAO,CAAC,GAAG,OAAO,OAAO,CAAC;AAC5B;AAEO,SAAS,uCAAuC,UAAqD;AAC1G,QAAM,aAAa,SAAS,YAAY;AACxC,MAAI,WAAW,SAAS,MAAM,GAAG;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,WAAW,SAAS,SAAS,GAAG;AAClC,WAAO;AAAA,EACT;AACA,MAAI,WAAW,SAAS,OAAO,KAAK,WAAW,SAAS,MAAM,GAAG;AAC/D,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,kCAAkC,UAAwC;AACxF,SAAO,2BAA2B,uCAAuC,QAAQ,CAAC,EAAE;AACtF;AAEO,SAAS,6BACd,OACA,SAKqB;AACrB,QAAM,SAAS,SAAS,KAAK,IAAI,QAAQ,CAAC;AAC1C,QAAM,OAAO,WAAW,OAAO,IAAI;AACnC,QAAM,aAAa,WAAW,OAAO,UAAU,KAAK,QAAQ;AAC5D,QAAM,WAAW,WAAW,OAAO,QAAQ,KAAK,QAAQ;AAExD,MAAI,QAAQ,iBAAiB,aAAa;AACxC,QAAI,SAAS,kBAAkB,UAAU;AACvC,aAAO,EAAE,MAAM,SAAS;AAAA,IAC1B;AACA,QAAI,YAAY;AACd,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,MACjC;AAAA,IACF;AACA,QAAI,UAAU;AACZ,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,MACF;AAAA,IACF;AACA,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAEA,MAAI,QAAQ,iBAAiB,WAAW;AACtC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACjC;AAAA,EACF;AAEA,MAAI,QAAQ,iBAAiB,cAAc;AACzC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACjC;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,WAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,EACR;AACF;AAEO,SAAS,iCAAiC,OAAgD;AAC/F,MAAI,CAAC,SAAS,KAAK,KAAK,CAAC,qBAAqB,MAAM,UAAU,GAAG;AAC/D,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,YAAY,MAAM;AAAA,IAClB,SAAS,MAAM,YAAY;AAAA,IAC3B,GAAI,uBAAuB,MAAM,UAAU,IAAI,EAAE,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,IACnF,GAAI,SAAS,MAAM,OAAO,IAAI,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;AAAA,EAC9D;AACF;AAEO,SAAS,kCAAkC,OAahD;AACA,QAAM,UAAU,MAAM,WAAW;AACjC,QAAM,6BAA6B,WAAW,MAAM,kBAAkB;AACtE,QAAM,6BAA6B,+BAC7B,WAAW,qBACX,mBAAmB,OAAgC,EAAE,qBACrD,QAAQ,WAAW,UAAU,IAC3B,UACA,QAAQ,SAAS,GAAG,IACpB,UACE,uCAAuC,MAAM,QAAQ;AAC/D,QAAM,iBAAiB,WAAW,qBAC9B,mBAAmB,OAAgC,EAAE,aACrD;AAEJ,MAAI,8BAA8B,4BAA4B;AAC5D,UAAM,UAAU,2BAA2B,0BAA+D;AAC1G,WAAO;AAAA,MACL,SAAS,WAAW;AAAA,MACpB,oBAAoB;AAAA,MACpB,aAAa,QAAQ;AAAA,MACrB,cAAc,QAAQ;AAAA,MACtB,aAAa,QAAQ;AAAA,MACrB,gBAAgB,QAAQ;AAAA,MACxB,YAAY;AAAA,IACd;AAAA,EACF;AAEA,QAAM,WAAW,2BAA2B,SAAS,GAAG,IACpD,2BAA2B,MAAM,KAAK,CAAC,EAAE,CAAC,IAC1C;AACJ,QAAM,eAAe,kCAAkC,MAAM,QAAQ;AACrE,SAAO;AAAA,IACL,SAAS,WAAW;AAAA,IACpB,oBAAoB;AAAA,IACpB,aAAa,iBAAiB,cAC1B,UACA,iBAAiB,YACf,QACA,iBAAiB,eACf,WACA;AAAA,IACR;AAAA,IACA,aAAa,WAAW,WAAW;AAAA,IACnC,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,EACjC;AACF;AAEO,SAAS,iCAAiC,OAA+C;AAC9F,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,UAAM,IAAI,MAAM,qCAAqC;AAAA,EACvD;AACA,QAAM,WAAW,WAAW,MAAM,QAAQ;AAC1C,QAAM,WAAW,WAAW,MAAM,QAAQ;AAC1C,MAAI,CAAC,UAAU;AACb,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AACA,MAAI,CAAC,YAAY,CAAE,qBAA2C,SAAS,QAAQ,GAAG;AAChF,UAAM,IAAI,MAAM,+BAA+B,YAAY,SAAS,EAAE;AAAA,EACxE;AAEA,QAAM,aAAa,WAAW,MAAM,UAAU,KAAK;AACnD,QAAM,WAAW,WAAW,MAAM,QAAQ,KAAK;AAC/C,QAAM,WAAW,kCAAkC;AAAA,IACjD,SAAS,WAAW,MAAM,OAAO;AAAA,IACjC,oBAAoB,WAAW,MAAM,kBAAkB;AAAA,IACvD;AAAA,EACF,CAAC;AACD,QAAM,cAAc,6BAA6B,MAAM,aAAa;AAAA,IAClE,cAAc,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,uBAAuB,gBAAgB,MAAM,oBAAoB,EACpE,OAAO,CAAC,UAAuC,qBAAqB,KAAK,CAAC;AAC7E,QAAM,sBAAsB,MAAM,QAAQ,MAAM,mBAAmB,IAC/D,MAAM,oBACL,IAAI,CAAC,UAAU,iCAAiC,KAAK,CAAC,EACtD,OAAO,CAAC,UAA4C,QAAQ,KAAK,CAAC,IACnE,CAAC;AACL,QAAM,kBAAkB,WAAW,MAAM,eAAe,KAAK;AAC7D,QAAM,aAAa,uBAAuB,MAAM,UAAU,IACtD,MAAM,aACN,SAAS;AAEb,SAAO;AAAA,IACL,SAAS,SAAS;AAAA,IAClB,oBAAoB,SAAS;AAAA,IAC7B,aAAa,WAAW,MAAM,WAAW,KAAK,SAAS;AAAA,IACvD,cAAe,WAAW,MAAM,YAAY,KAAqC,SAAS;AAAA,IAC1F,aAAa,WAAW,MAAM,WAAW,KAAK,SAAS;AAAA,IACvD,gBAAgB,WAAW,MAAM,cAAc,KAAK,SAAS;AAAA,IAC7D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,2BAA2B,MAAM,SAAS;AAAA,IACrD,OAAO,WAAW,MAAM,KAAK,KAAK;AAAA,IAClC,oBAAoB,WAAW,MAAM,kBAAkB,KAAK;AAAA,IAC5D,qBAAqB,WAAW,MAAM,mBAAmB,KAAK;AAAA,IAC9D,YAAY,yBAAyB,MAAM,UAAU,IAAI,MAAM,aAAa;AAAA,IAC5E;AAAA,IACA,mBAAmB,gBAAgB,MAAM,qBAAqB,MAAM,eAAe;AAAA,IACnF,UAAU,WAAW,MAAM,QAAQ,KAAK,SAAS;AAAA,IACjD,sBAAsB,qBAAqB,SAAS,IAChD,0BAA0B,SAAS,oBAAoB,oBAAoB,IAC3E,4BAA4B,SAAS,kBAAkB;AAAA,IAC3D,qBAAqB,oBAAoB,SAAS,IAC9C,yBAAyB,SAAS,oBAAoB,mBAAmB,IACzE,2BAA2B,SAAS,kBAAkB;AAAA,IAC1D;AAAA,EACF;AACF;;;ADhpBA,SAAS,aAAa,UAA2B;AAC/C,MAAI;AACF,IAAG,cAAW,UAAa,aAAU,IAAI;AACzC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AA+QA,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAE5B,SAAS,wBAAwB,YAAoB,aAA6B;AAChF,SAAO;AAAA;AAAA,iBAEQ,kBAAkB;AAAA,mBAChB,UAAU;AAAA;AAAA;AAAA,kBAGX,mBAAmB;AAAA,oBACjB,WAAW;AAAA;AAAA;AAG/B;AAEA,IAAM,iBAAiB,EAAE,OAAO;AAAA,EAC9B,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAM,EAAE,QAAQ,IAAK;AAAA,EAC7D,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,GAAI,EAAE,QAAQ,GAAI;AAC3D,CAAC;AAED,IAAM,iBAAiB,EAAE,OAAO;AAAA,EAC9B,aAAa,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACtC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC3C,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC5C,sBAAsB,EAAE,OAAO;AAAA,IAC7B,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACnC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC;AAED,IAAM,+BAA+B;AACrC,IAAM,8BAA8B;AAEpC,IAAM,6BAAoE,EAAE,OAAO;AAAA,EACjF,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,OAAO,EAAE,OAAO;AAAA,EAChB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAChC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACnC,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,UAAU,EAAE,KAAK,CAAC,UAAU,OAAO,MAAM,CAAC,EAAE,SAAS;AACvD,CAAC,EAAE,YAAY,CAAC,QAAQ,QAAQ;AAC9B,MAAI,CAAC,OAAO,OAAO,CAAC,OAAO,QAAQ;AACjC,QAAI,SAAS;AAAA,MACX,MAAM,EAAE,aAAa;AAAA,MACrB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF,CAAC;AAED,IAAM,kBAAkB,EAAE,OAAO;AAAA,EAC/B,OAAO,EAAE,OAAO;AAAA,IACd,SAAS,EAAE,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG;AAAA,IAC5C,cAAc,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvC,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IAC/C,qBAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG;AAAA,IACzD,kCAAkC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAU,EAAE,QAAQ,GAAK;AAAA,EACzF,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACb,qBAAqB,EAAE,OAAO;AAAA,IAC5B,SAAS,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IAClC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,CAAC;AAAA,IACrD,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,CAAC;AAAA,EAC1D,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACb,SAAS,EAAE,OAAO;AAAA,IAChB,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IACxD,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAM,EAAE,QAAQ,GAAI;AAAA,EAC5D,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACb,eAAe,EAAE,OAAO;AAAA,IACtB,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IACjC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAM,EAAE,QAAQ,GAAK;AAAA,IAC7D,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IAC9D,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IACtC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IACxC,wBAAwB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAClD,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACb,wBAAwB,EAAE,OAAO;AAAA,IAC/B,MAAM,EAAE,KAAK,CAAC,OAAO,WAAW,qBAAqB,CAAC,EAAE,QAAQ,qBAAqB;AAAA,IACrF,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IACxD,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IAC1D,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAM,EAAE,QAAQ,GAAI;AAAA,IACjE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAM,EAAE,QAAQ,GAAK;AAAA,IAClE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IAC7C,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IAC3C,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IAC1C,wBAAwB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IAChD,6BAA6B,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IACrD,UAAU,EAAE,OAAO;AAAA,MACjB,+BAA+B,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,MACvD,yBAAyB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,MAClD,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,MAC/C,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IAChD,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,IACb,2BAA2B,EAAE,OAAO;AAAA,MAClC,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,MACjC,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IAC3D,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACf,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACb,YAAY,EAAE,OAAO;AAAA,IACnB,aAAa,EAAE,MAAM;AAAA,MACnB,EAAE,KAAK,CAAC,QAAQ,OAAO,WAAW,UAAU,OAAO,CAAC;AAAA,MACpD,EAAE,QAAQ,OAAO;AAAA,IACnB,CAAC,EACE,QAAQ,MAAM,EACd,UAAU,CAAC,SAAS,SAAS,UAAU,WAAW,IAAI;AAAA,IACzD,eAAe,EAAE,MAAM,EAAE,KAAK;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC,CAAC,EACC,QAAQ,CAAC,YAAY,wBAAwB,mBAAmB,OAAO,CAAC;AAAA,IAC3E,aAAa,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACtC,WAAW,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACpC,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IAC7C,aAAa,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,IACrC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,2BAA2B;AAAA,IACnE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,IAChD,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAI,EAAE,IAAI,IAAM,EAAE,QAAQ,GAAK;AAAA,EACtE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACb,cAAc,EAAE,KAAK,CAAC,OAAO,QAAQ,UAAU,CAAC,EAAE,QAAQ,MAAM;AAAA,EAChE,cAAc,EAAE,OAAO;AAAA,IACrB,MAAM,EAAE,KAAK,CAAC,QAAQ,OAAO,QAAQ,CAAC,EAAE,QAAQ,MAAM;AAAA,IACtD,OAAO,EAAE,MAAM;AAAA,MACb,EAAE,OAAO;AAAA,MACT,EAAE,MAAM,0BAA0B;AAAA,IACpC,CAAC,EAAE,SAAS;AAAA,EACd,CAAC,EAAE,UAAU,CAAC,QAAoC;AAChD,QAAI,IAAI,SAAS,UAAU;AACzB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,MAAM,QAAQ,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC;AAAA,MACjD;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM,IAAI;AAAA,MACV,OAAO,OAAO,IAAI,UAAU,WACxB,IAAI,QACJ,IAAI,SAAS,SACX,+BACA;AAAA,IACR;AAAA,EACF,CAAC,EAAE,QAAQ;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACT,CAAC;AACH,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,SAAS,EAAE,OAAO;AAAA,IAChB,SAAS,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACpC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC;AAED,IAAM,iBAAiB,EAAE,OAAO;AAAA,EAC9B,cAAc,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACvC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAC5C,CAAC;AAED,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,QAAQ,GAAI;AAAA,EACxD,cAAc,EAAE,QAAQ,EAAE,QAAQ,IAAI;AACxC,CAAC;AAED,IAAM,gBAAgB,EAAE,OAAO;AAAA,EAC7B,iBAAiB,EAAE,KAAK,CAAC,OAAO,SAAS,CAAC,EAAE,QAAQ,SAAS;AAAA,EAC7D,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAM,EAAE,QAAQ,GAAK;AAAA,EACrE,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,iCAAiC;AAAA,EAC9E,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EAC/D,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AACvE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,EAChD,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAM,EAAE,QAAQ,GAAI;AAAA,EACzE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,GAAK,EAAE,QAAQ,GAAI;AAAA,EACnE,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,EAChE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;AAAA,EAChE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;AAAA,EAC9D,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;AAAA,EAClE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,EAAE,QAAQ,IAAI;AAAA,EAC7D,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;AAAA,EACtD,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;AAAA,EACtD,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;AAAA,EAC1D,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAM,EAAE,QAAQ,GAAI;AAAA,EAClE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,IAAM,EAAE,QAAQ,GAAI;AAAA,EACtE,UAAU,EAAE,OAAO;AAAA,IACjB,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IACxD,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IAC1D,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IAC3D,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IAC7D,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,IAC7D,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;AAAA,EACrE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,4BAA4B,EAAE,OAAO;AAAA,EACzC,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC7D,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC7D,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC/D,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACrD,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,QAAQ,GAAG;AAC/D,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACjC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAI,EAAE,IAAI,GAAM,EAAE,QAAQ,GAAK;AAChE,CAAC;AAED,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,OAAO,kBAAkB,QAAQ,CAAC,CAAC;AACrC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,wBAAwB,EAAE,OAAO;AAAA,EACrC,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACjC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAI,EAAE,IAAI,GAAM,EAAE,QAAQ,GAAK;AAChE,CAAC;AAED,IAAM,mBAAmB,EAAE,OAAO;AAAA,EAChC,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACjC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,8BAA8B;AAAA,EAClE,OAAO,sBAAsB,QAAQ,CAAC,CAAC;AACzC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE;AAAA,EACpC,WAAW,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG;AAAA,EACvC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAK,EAAE,QAAQ,EAAE;AACnD,CAAC;AAED,IAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACjC,UAAU,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAClC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACnC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACrC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAChD,cAAc,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACvC,aAAa,uBAAuB,SAAS;AAAA,EAC7C,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAChD,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACjC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,UAAU,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC,EACpE,QAAQ,UAAU,EAClB,UAAU,CAAC,SAAS;AACnB,WAAO,SAAS,QAAQ,kBAAkB;AAAA,EAC5C,CAAC;AAAA,EACH,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAC3C,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAU,EAAE,QAAQ,GAAO;AAAA,EAC3E,mBAAmB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC/D,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACzD,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,CAAC;AAAA,EACzD,yBAAyB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AACtE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,+BAA+B,EAAE,OAAO;AAAA,EAC5C,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACvD,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,CAAC;AAAA,EACtD,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EAC7D,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAChE,CAAC;AAED,IAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,SAAS,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACjC,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAC3C,cAAc,EAAE,KAAK,CAAC,SAAS,OAAO,CAAC,EAAE,QAAQ,OAAO;AAAA,EACxD,QAAQ,6BAA6B,QAAQ,CAAC,CAAC;AACjD,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,OAAO,uBAAuB,QAAQ,CAAC,CAAC;AAAA,EACxC,OAAO,uBAAuB,QAAQ,CAAC,CAAC;AAAA,EACxC,OAAO,uBAAuB,QAAQ,CAAC,CAAC;AAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,OAAO,uBAAuB,QAAQ,CAAC,CAAC;AAC1C,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,uCAAuC,EAAE,MAAM;AAAA,EACnD,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChB,EAAE,OAAO;AAAA,IACP,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACrB,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,IAC9B,uBAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS;AAAA,IAC3D,qBAAqB,EAAE,MAAM,EAAE,KAAK,sBAAsB,CAAC,EAAE,SAAS;AAAA,EACxE,CAAC;AACH,CAAC;AAED,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,gBAAgB,EAAE,MAAM,oCAAoC,EAAE,QAAQ,CAAC,CAAC;AAC1E,CAAC,EAAE,QAAQ,CAAC,CAAC;AAEb,IAAM,eAAe,EAAE,OAAO;AAAA,EAC5B,UAAU,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACnC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,SAAS;AAAA,EAC5C,UAAU,eAAe,QAAQ,CAAC,CAAC;AAAA,EACnC,UAAU,eAAe,QAAQ,CAAC,CAAC;AAAA,EACnC,2BAA2B,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG;AAAA,EAC/D,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAI,EAAE,IAAI,KAAU,EAAE,QAAQ,GAAO;AAAA,EACtF,qBAAqB;AAAA,EACrB,WAAW,gBAAgB,QAAQ,CAAC,CAAC;AAAA,EACrC,cAAc,mBAAmB,QAAQ,CAAC,CAAC;AAAA,EAC3C,QAAQ,aAAa,QAAQ,CAAC,CAAC;AAAA,EAC/B,UAAU,eAAe,QAAQ,CAAC,CAAC;AAAA,EACnC,aAAa,kBAAkB,QAAQ,CAAC,CAAC;AAAA,EACzC,QAAQ,aAAa,QAAQ,CAAC,CAAC;AAAA,EAC/B,QAAQ,aAAa,QAAQ,CAAC,CAAC;AAAA,EAC/B,SAAS;AAAA,EACT,aAAa,kBAAkB,QAAQ,CAAC,CAAC;AAAA,EACzC,QAAQ,aAAa,QAAQ,CAAC,CAAC;AAAA,EAC/B,YAAY,iBAAiB,QAAQ,CAAC,CAAC;AAAA,EACvC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,QAAQ,kBAAkB;AAAA,EACxE,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC,EAAE,SAAS;AAAA,EAC7D,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,EACvC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,QAAQ,mBAAmB;AAAA,EAC1E,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACxC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE;AAAA,IACvC,CAAC,QAAQ,QAAQ,UAAa,aAAa,GAAG;AAAA,IAC9C,EAAE,SAAS,8CAA8C;AAAA,EAC3D;AAAA,EACA,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACrC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC1C,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EACxC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,IAAM,mBAAmB;AAEzB,SAAS,sBAA8B;AACrC,QAAM,YAAY,QAAQ,IAAI,uBACpB,UAAQ,WAAQ,GAAG,WAAW,UAAU;AAClD,SAAY,UAAK,WAAW,gBAAgB;AAC9C;AAEA,SAAS,iBAAiB,UAA+D;AACvF,QAAM,aAAa,oBAAoB;AACvC,QAAM,cAAc,oBAAoB;AACxC,MAAO,cAAW,QAAQ,GAAG;AAC3B,WAAO,EAAE,YAAY,YAAY;AAAA,EACnC;AACA,MAAI;AACF,IAAG,aAAe,aAAQ,QAAQ,GAAG,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AACrE,IAAG,iBAAc,UAAU,wBAAwB,YAAY,WAAW,GAAG,EAAE,UAAU,SAAS,MAAM,IAAM,CAAC;AAAA,EACjH,SAAS,OAAO;AACd,YAAQ,KAAK,6DAA6D,QAAQ,KAAK,KAAK;AAAA,EAC9F;AACA,SAAO,EAAE,YAAY,YAAY;AACnC;AAEA,SAAS,eAAe,UAMtB;AACA,MAAI,CAAI,cAAW,QAAQ,GAAG;AAC5B,UAAM,SAAS,iBAAiB,QAAQ;AACxC,UAAMA,WAAU,wBAAwB,OAAO,YAAY,OAAO,WAAW;AAC7E,WAAO;AAAA,MACL,KAAK,CAAC;AAAA,MACN,SAAAA;AAAA,MACA,qBAAqB,OAAO;AAAA,MAC5B,sBAAsB,OAAO;AAAA,MAC7B,SAAS;AAAA,IACX;AAAA,EACF;AACA,QAAM,UAAa,gBAAa,UAAU,OAAO;AACjD,QAAM,SAAmE,CAAC;AAC1E,QAAM,SAAS,WAAW,SAAS,QAAQ,EAAE,oBAAoB,KAAK,CAAC;AACvE,MAAI,OAAO,SAAS,GAAG;AACrB,UAAM,aAAa,OAAO,CAAC;AAC3B,QAAI,CAAC,YAAY;AACf,YAAM,IAAI,MAAM,6CAA6C,QAAQ,eAAe;AAAA,IACtF;AACA,UAAM,IAAI,MAAM,6CAA6C,QAAQ,2BAA2B,WAAW,MAAM,EAAE;AAAA,EACrH;AACA,SAAO;AAAA,IACL,KAAK,UAAU,CAAC;AAAA,IAChB;AAAA,IACA,qBAAqB;AAAA,IACrB,sBAAsB;AAAA,IACtB,SAAS;AAAA,EACX;AACF;AAEO,SAAS,mBAAyC;AACvD,QAAM,aAAa,oBAAoB;AACvC,QAAM,EAAE,KAAK,SAAS,qBAAqB,sBAAsB,QAAQ,IAAI,eAAe,UAAU;AACtG,QAAM,SAAS,aAAa,UAAU,GAAG;AAEzC,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,SAAS,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,IAAI;AAC1E,UAAM,IAAI,MAAM,oCAAoC,UAAU,KAAK,MAAM,EAAE;AAAA,EAC7E;AAEA,QAAM,OAAO,OAAO;AACpB,QAAM,aAAa,KAAK,cAAc,uBAAuB,oBAAoB;AACjF,QAAM,cAAc,KAAK,eAAe,wBAAwB,oBAAoB;AAEpF,MAAI,CAAC,SAAS;AACZ,gCAA4B;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,KAAK;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,GAAG,MAAM,YAAY,YAAY;AAC5C;AAEO,SAAS,cAAc,QAAuC;AACnE,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,iBAAiB;AAAA,EAC1B;AACA,QAAM,SAAS,aAAa,UAAU,MAAM;AAC5C,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,SAAS,OAAO,MAAM,OAAO,IAAI,CAAC,UAAU,MAAM,OAAO,EAAE,KAAK,IAAI;AAC1E,UAAM,IAAI,MAAM,2CAA2C,MAAM,EAAE;AAAA,EACrE;AACA,QAAM,OAAO,OAAO;AACpB,QAAM,aAAa,KAAK,cAAc,oBAAoB;AAC1D,QAAM,cAAc,KAAK,eAAe,oBAAoB;AAC5D,SAAO,EAAE,GAAG,MAAM,YAAY,YAAY;AAC5C;AAEO,SAAS,oCACd,QACuC;AACvC,QAAM,yBAAyB,OAAO,WAAW;AACjD,MAAI,CAAC,wBAAwB;AAC3B,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;AAEA,SAAS,4BAA4B,QAM5B;AACP,MAAI,CAACC,UAAS,OAAO,GAAG,GAAG;AACzB;AAAA,EACF;AACA,QAAM,gBAAgB,OAAO,UAAU,eAAe,KAAK,OAAO,KAAK,YAAY;AACnF,QAAM,iBAAiB,OAAO,UAAU,eAAe,KAAK,OAAO,KAAK,aAAa;AACrF,MAAI,iBAAiB,gBAAgB;AACnC;AAAA,EACF;AACA,QAAM,oBAAoB,EAAE,cAAc,MAAM,SAAS,EAAE;AAC3D,MAAI,iBAAiB,OAAO;AAC5B,MAAI,CAAC,eAAe;AAClB,UAAM,QAAQ,OAAO,gBAAgB,CAAC,YAAY,GAAG,OAAO,YAAY,EAAE,kBAAkB,CAAC;AAC7F,QAAI,MAAM,QAAQ;AAChB,uBAAiB,WAAW,gBAAgB,KAAK;AAAA,IACnD;AAAA,EACF;AACA,MAAI,CAAC,gBAAgB;AACnB,UAAM,QAAQ,OAAO,gBAAgB,CAAC,aAAa,GAAG,OAAO,aAAa,EAAE,kBAAkB,CAAC;AAC/F,QAAI,MAAM,QAAQ;AAChB,uBAAiB,WAAW,gBAAgB,KAAK;AAAA,IACnD;AAAA,EACF;AACA,MAAI,mBAAmB,OAAO,SAAS;AACrC,oBAAgB,OAAO,YAAY,gBAAgB,EAAE,MAAM,IAAM,CAAC;AAAA,EACpE;AACF;AAEA,IAAMA,YAAW,CAAC,UAAqD;AACrE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEO,IAAM,cAAN,MAAkB;AAAA,EACf;AAAA,EAER,YAAY,SAA+B;AACzC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAA4B;AAC1B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,MAAkC;AACpC,SAAK,UAAU;AAAA,EACjB;AACF;;;AEvzBA,YAAYC,SAAQ;AACpB,YAAYC,WAAU;AACtB,SAAS,WAAAC,gBAAe;AAExB,IAAM,4BAA4B,CAAC,eAAe,oBAAoB;AActE,IAAM,kCAAkC,MAA4B;AAClE,MAAI,QAAQ,aAAa,UAAU;AACjC,WAAO;AAAA,MACL;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAKA,SAAQ,GAAG,WAAW,uBAAuB,UAAU,QAAQ;AAAA,MACxF;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAKA,SAAQ,GAAG,WAAW,uBAAuB,UAAU;AAAA,MAChF;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAKA,SAAQ,GAAG,WAAW,uBAAuB,iBAAiB,eAAe;AAAA,MACtG;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,aAAa,SAAS;AAChC,WAAO;AAAA,MACL;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAKA,SAAQ,GAAG,WAAW,eAAe;AAAA,MAC9D;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAKA,SAAQ,GAAG,WAAW,UAAU;AAAA,MACzD;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAKA,SAAQ,GAAG,WAAW,iBAAiB,eAAe;AAAA,MAC/E;AAAA,IACF;AAAA,EACF;AAEA,MAAI,QAAQ,aAAa,SAAS;AAChC,UAAM,eAAe,QAAQ,IAAI,iBAC3B,QAAQ,IAAI,cAAmB,WAAK,QAAQ,IAAI,aAAa,WAAW,OAAO,IAAI;AACzF,QAAI,CAAC,cAAc;AACjB,aAAO,CAAC;AAAA,IACV;AACA,WAAO;AAAA,MACL;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAK,cAAc,UAAU,UAAU,WAAW;AAAA,MACtE;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAK,cAAc,YAAY,WAAW;AAAA,MAC9D;AAAA,MACA;AAAA,QACE,aAAa;AAAA,QACb,aAAkB,WAAK,cAAc,iBAAiB,iBAAiB,WAAW;AAAA,MACpF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,CAAC;AACV;AAEO,IAAM,yBAAyB,MAAgB;AACpD,SAAO,gCAAgC,EAAE,IAAI,CAAC,cAAc,UAAU,WAAW;AACnF;AAEO,IAAM,iBAAiB,CAAC,SAA2B;AACxD,MAAI;AACF,UAAM,UAAa,gBAAY,MAAM,EAAE,eAAe,KAAK,CAAC;AAC5D,WAAO,QACJ,OAAO,CAAC,UAAU,MAAM,YAAY,MAAM,MAAM,SAAS,aAAa,MAAM,KAAK,WAAW,UAAU,EAAE,EACxG,IAAI,CAAC,UAAe,WAAK,MAAM,MAAM,IAAI,CAAC,EAC1C,OAAO,CAAC,QAAQ,0BAA0B,KAAK,CAAC,aAAgB,eAAgB,WAAK,KAAK,QAAQ,CAAC,CAAC,CAAC;AAAA,EAC1G,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,IAAM,yBAAyB,CAAC,eAAkD;AACvF,QAAM,UAAqC,CAAC;AAC5C,aAAW,YAAY,2BAA2B;AAChD,QAAI;AACF,YAAM,MAAS,iBAAkB,WAAK,YAAY,QAAQ,GAAG,MAAM;AACnE,cAAQ,KAAK,KAAK,MAAM,GAAG,CAA4B;AAAA,IACzD,QAAQ;AAAA,IAER;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,iBAAiB,CAAC,SAAiD;AACvE,MAAI;AACF,UAAM,MAAS,iBAAkB,WAAK,MAAM,aAAa,GAAG,MAAM;AAClE,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,IAAM,gCAAgC,CAAC,MAAc,gBAAyC;AAC5F,MAAI,YAAY,WAAW,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,YAAY,IAAI,IAAI,YAAY,IAAI,CAAC,eAAoB,eAAS,UAAU,CAAC,CAAC;AACpF,QAAM,aAAa,eAAe,IAAI;AACtC,QAAM,eAAe,YAAY;AACjC,QAAM,WAAW,OAAO,iBAAiB,YAAY,iBAAiB,OAClE,OAAQ,aAAyC,cAAc,WAC5D,aAAuC,YACxC,OACF;AACJ,MAAI,YAAY,UAAU,IAAI,QAAQ,GAAG;AACvC,WAAO;AAAA,EACT;AACA,MAAI,UAAU,IAAI,SAAS,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,eAAe,YAAY,CAAC;AAClC,SAAY,eAAS,YAAY;AACnC;AAEO,IAAM,oCAAoC,MAAmC;AAClF,aAAW,aAAa,gCAAgC,GAAG;AACzD,UAAM,cAAc,eAAe,UAAU,WAAW;AACxD,UAAM,mBAAmB,8BAA8B,UAAU,aAAa,WAAW;AACzF,QAAI,CAAC,kBAAkB;AACrB;AAAA,IACF;AACA,WAAO;AAAA,MACL,aAAa,UAAU;AAAA,MACvB,aAAa,UAAU;AAAA,MACvB;AAAA,MACA,aAAkB,WAAK,UAAU,aAAa,gBAAgB;AAAA,IAChE;AAAA,EACF;AACA,SAAO;AACT;","names":["content","isRecord","fs","path","homedir"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// src/cli/transport-timeouts.ts
|
|
2
|
+
var DEFAULT_CLICK_TRANSPORT_TIMEOUT_MS = 6e4;
|
|
3
|
+
var DEFAULT_DIALOG_TRANSPORT_TIMEOUT_MS = 3e4;
|
|
4
|
+
var DEFAULT_TARGET_CREATION_TRANSPORT_TIMEOUT_MS = 3e4;
|
|
5
|
+
var DEFAULT_SNAPSHOT_TRANSPORT_TIMEOUT_MS = 3e4;
|
|
6
|
+
var DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS = 3e4;
|
|
7
|
+
var DEFAULT_SCREENSHOT_TRANSPORT_TIMEOUT_MS = 3e4;
|
|
8
|
+
var DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS = 12e4;
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
DEFAULT_CLICK_TRANSPORT_TIMEOUT_MS,
|
|
12
|
+
DEFAULT_DIALOG_TRANSPORT_TIMEOUT_MS,
|
|
13
|
+
DEFAULT_TARGET_CREATION_TRANSPORT_TIMEOUT_MS,
|
|
14
|
+
DEFAULT_SNAPSHOT_TRANSPORT_TIMEOUT_MS,
|
|
15
|
+
DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS,
|
|
16
|
+
DEFAULT_SCREENSHOT_TRANSPORT_TIMEOUT_MS,
|
|
17
|
+
DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=chunk-OW5HMYMI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/transport-timeouts.ts"],"sourcesContent":["export const DEFAULT_CLICK_TRANSPORT_TIMEOUT_MS = 60_000;\nexport const DEFAULT_DIALOG_TRANSPORT_TIMEOUT_MS = 30_000;\nexport const DEFAULT_TARGET_CREATION_TRANSPORT_TIMEOUT_MS = 30_000;\nexport const DEFAULT_SNAPSHOT_TRANSPORT_TIMEOUT_MS = 30_000;\nexport const DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS = 30_000;\nexport const DEFAULT_SCREENSHOT_TRANSPORT_TIMEOUT_MS = 30_000;\nexport const DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS = 120_000;\n"],"mappings":";AAAO,IAAM,qCAAqC;AAC3C,IAAM,sCAAsC;AAC5C,IAAM,+CAA+C;AACrD,IAAM,wCAAwC;AAC9C,IAAM,sCAAsC;AAC5C,IAAM,0CAA0C;AAChD,IAAM,wCAAwC;","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseOptionalStringFlag
|
|
3
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
4
|
+
import {
|
|
5
|
+
createUsageError
|
|
6
|
+
} from "./chunk-IPE7TF2P.js";
|
|
7
|
+
import {
|
|
8
|
+
isChallengeAutomationMode
|
|
9
|
+
} from "./chunk-4BEJVZRK.js";
|
|
10
|
+
|
|
11
|
+
// src/cli/commands/challenge-automation-mode.ts
|
|
12
|
+
function parseOptionalChallengeAutomationMode(rawArgs) {
|
|
13
|
+
const value = parseOptionalStringFlag(rawArgs, "--challenge-automation-mode");
|
|
14
|
+
if (typeof value === "undefined") {
|
|
15
|
+
return void 0;
|
|
16
|
+
}
|
|
17
|
+
if (!isChallengeAutomationMode(value)) {
|
|
18
|
+
throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
parseOptionalChallengeAutomationMode
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=chunk-PPUWQKIC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/challenge-automation-mode.ts"],"sourcesContent":["import { createUsageError } from \"../errors\";\nimport { parseOptionalStringFlag } from \"../utils/parse\";\nimport { isChallengeAutomationMode, type ChallengeAutomationMode } from \"../../challenges/types\";\n\nexport function parseOptionalChallengeAutomationMode(\n rawArgs: string[]\n): ChallengeAutomationMode | undefined {\n const value = parseOptionalStringFlag(rawArgs, \"--challenge-automation-mode\");\n if (typeof value === \"undefined\") {\n return undefined;\n }\n if (!isChallengeAutomationMode(value)) {\n throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);\n }\n return value;\n}\n"],"mappings":";;;;;;;;;;;AAIO,SAAS,qCACd,SACqC;AACrC,QAAM,QAAQ,wBAAwB,SAAS,6BAA6B;AAC5E,MAAI,OAAO,UAAU,aAAa;AAChC,WAAO;AAAA,EACT;AACA,MAAI,CAAC,0BAA0B,KAAK,GAAG;AACrC,UAAM,iBAAiB,wCAAwC,KAAK,EAAE;AAAA,EACxE;AACA,SAAO;AACT;","names":[]}
|