opendevbrowser 0.0.27 → 0.0.29
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-PA6NWNS7.js +39 -0
- package/dist/accessibility-snapshot-PA6NWNS7.js.map +1 -0
- package/dist/active-window-YNYTIPZN.js +37 -0
- package/dist/active-window-YNYTIPZN.js.map +1 -0
- package/dist/annotate-STYHXZYJ.js +205 -0
- package/dist/annotate-STYHXZYJ.js.map +1 -0
- package/dist/artifacts-KJ6RNDO2.js +120 -0
- package/dist/artifacts-KJ6RNDO2.js.map +1 -0
- package/dist/attr-GHFZZ4SA.js +84 -0
- package/dist/attr-GHFZZ4SA.js.map +1 -0
- package/dist/browser/canvas-manager.d.ts.map +1 -1
- package/dist/browser/ops-client.d.ts +1 -0
- package/dist/browser/ops-client.d.ts.map +1 -1
- package/dist/canvas/document-store.d.ts.map +1 -1
- package/dist/canvas/guidance.d.ts +22 -0
- package/dist/canvas/guidance.d.ts.map +1 -0
- package/dist/canvas-54FBOEGP.js +309 -0
- package/dist/canvas-54FBOEGP.js.map +1 -0
- package/dist/capture-desktop-SNABC24E.js +38 -0
- package/dist/capture-desktop-SNABC24E.js.map +1 -0
- package/dist/capture-window-UJSB5AMP.js +40 -0
- package/dist/capture-window-UJSB5AMP.js.map +1 -0
- package/dist/check-ST5UQ2F5.js +71 -0
- package/dist/check-ST5UQ2F5.js.map +1 -0
- package/dist/checked-IEMWI5CU.js +71 -0
- package/dist/checked-IEMWI5CU.js.map +1 -0
- package/dist/chunk-2CG4SW3E.js +64 -0
- package/dist/chunk-2CG4SW3E.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-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-ASMHEEKY.js +10 -0
- package/dist/chunk-ASMHEEKY.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-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-LBPELU7L.js +3649 -0
- package/dist/chunk-LBPELU7L.js.map +1 -0
- package/dist/chunk-MX3NFLCE.js +940 -0
- package/dist/chunk-MX3NFLCE.js.map +1 -0
- package/dist/chunk-N44UXKIB.js +26 -0
- package/dist/chunk-N44UXKIB.js.map +1 -0
- package/dist/chunk-OW5HMYMI.js +19 -0
- package/dist/chunk-OW5HMYMI.js.map +1 -0
- package/dist/chunk-OYNLAZQU.js +838 -0
- package/dist/chunk-OYNLAZQU.js.map +1 -0
- package/dist/chunk-PDPJN2OP.js +17 -0
- package/dist/chunk-PDPJN2OP.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-V5DJUSPV.js → chunk-S6S2UP6U.js} +2255 -1577
- package/dist/chunk-S6S2UP6U.js.map +1 -0
- package/dist/{chunk-MWBDO2L5.js → chunk-SXAGSEKZ.js} +1369 -9584
- package/dist/chunk-SXAGSEKZ.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 +2 -0
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/commands/macro-resolve.d.ts +5 -0
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/product-video.d.ts +2 -0
- package/dist/cli/commands/product-video.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts +2 -0
- 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/help.d.ts.map +1 -1
- package/dist/cli/index.js +207 -8029
- 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/cli/utils/workflow-message.d.ts +3 -0
- package/dist/cli/utils/workflow-message.d.ts.map +1 -1
- package/dist/click-TENZA3Y6.js +81 -0
- package/dist/click-TENZA3Y6.js.map +1 -0
- package/dist/clone-component-STH5AR6M.js +82 -0
- package/dist/clone-component-STH5AR6M.js.map +1 -0
- package/dist/clone-page-BSTWAPAJ.js +69 -0
- package/dist/clone-page-BSTWAPAJ.js.map +1 -0
- package/dist/close-CEMMAAM7.js +63 -0
- package/dist/close-CEMMAAM7.js.map +1 -0
- package/dist/close-QCWUNRAI.js +63 -0
- package/dist/close-QCWUNRAI.js.map +1 -0
- package/dist/connect-J3RVSEZF.js +107 -0
- package/dist/connect-J3RVSEZF.js.map +1 -0
- package/dist/console-poll-HL7BVIVX.js +76 -0
- package/dist/console-poll-HL7BVIVX.js.map +1 -0
- package/dist/cookie-import-WMUCIIHN.js +177 -0
- package/dist/cookie-import-WMUCIIHN.js.map +1 -0
- package/dist/cookie-list-PB2N4RPH.js +117 -0
- package/dist/cookie-list-PB2N4RPH.js.map +1 -0
- package/dist/daemon-5KSVMGN4.js +194 -0
- package/dist/daemon-5KSVMGN4.js.map +1 -0
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/debug-trace-snapshot-RK7KDXA5.js +136 -0
- package/dist/debug-trace-snapshot-RK7KDXA5.js.map +1 -0
- package/dist/dialog-P6P4U7XE.js +75 -0
- package/dist/dialog-P6P4U7XE.js.map +1 -0
- package/dist/disconnect-32F7IDIP.js +58 -0
- package/dist/disconnect-32F7IDIP.js.map +1 -0
- package/dist/enabled-A6C6ZM2O.js +71 -0
- package/dist/enabled-A6C6ZM2O.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-ULTSABDM.js +98 -0
- package/dist/goto-ULTSABDM.js.map +1 -0
- package/dist/help-EKKKEDL5.js +491 -0
- package/dist/help-EKKKEDL5.js.map +1 -0
- package/dist/hover-UF2ZUMTQ.js +71 -0
- package/dist/hover-UF2ZUMTQ.js.map +1 -0
- package/dist/html-B6TX7GK7.js +84 -0
- package/dist/html-B6TX7GK7.js.map +1 -0
- package/dist/index.js +100 -42
- package/dist/index.js.map +1 -1
- package/dist/inspector-6S5FKUZQ.js +62 -0
- package/dist/inspector-6S5FKUZQ.js.map +1 -0
- package/dist/inspector-audit-ARGEGOS7.js +84 -0
- package/dist/inspector-audit-ARGEGOS7.js.map +1 -0
- package/dist/inspector-plan-CSG5HZOC.js +69 -0
- package/dist/inspector-plan-CSG5HZOC.js.map +1 -0
- package/dist/inspiredesign/contract.d.ts +52 -1
- package/dist/inspiredesign/contract.d.ts.map +1 -1
- package/dist/inspiredesign/handoff.d.ts +12 -0
- package/dist/inspiredesign/handoff.d.ts.map +1 -1
- package/dist/inspiredesign/reference-pattern-board.d.ts +1 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
- package/dist/inspiredesign-7VRMMZN4.js +234 -0
- package/dist/inspiredesign-7VRMMZN4.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-REYCIR3Z.js +225 -0
- package/dist/launch-REYCIR3Z.js.map +1 -0
- package/dist/list-NPRXRQY2.js +51 -0
- package/dist/list-NPRXRQY2.js.map +1 -0
- package/dist/list-STYD2ZWA.js +54 -0
- package/dist/list-STYD2ZWA.js.map +1 -0
- package/dist/local-HXJLUUNT.js +54 -0
- package/dist/local-HXJLUUNT.js.map +1 -0
- package/dist/macro-resolve-ZIJZ65QI.js +253 -0
- package/dist/macro-resolve-ZIJZ65QI.js.map +1 -0
- package/dist/macros/execute-runtime.d.ts +4 -1
- package/dist/macros/execute-runtime.d.ts.map +1 -1
- package/dist/macros/execute.d.ts +6 -2
- 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-HLDOSC72.js +76 -0
- package/dist/network-poll-HLDOSC72.js.map +1 -0
- package/dist/new-HXLLN6UT.js +69 -0
- package/dist/new-HXLLN6UT.js.map +1 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js +27 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js.map +1 -0
- package/dist/open-KDR25LQZ.js +81 -0
- package/dist/open-KDR25LQZ.js.map +1 -0
- package/dist/opendevbrowser.js +100 -42
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/perf-EM6SWFJ6.js +58 -0
- package/dist/perf-EM6SWFJ6.js.map +1 -0
- package/dist/pointer-down-ZYWRZNCH.js +55 -0
- package/dist/pointer-down-ZYWRZNCH.js.map +1 -0
- package/dist/pointer-drag-LVEAVJO4.js +54 -0
- package/dist/pointer-drag-LVEAVJO4.js.map +1 -0
- package/dist/pointer-move-7SRKUS66.js +52 -0
- package/dist/pointer-move-7SRKUS66.js.map +1 -0
- package/dist/pointer-up-KLDBSK37.js +55 -0
- package/dist/pointer-up-KLDBSK37.js.map +1 -0
- package/dist/press-UIIXFTD7.js +83 -0
- package/dist/press-UIIXFTD7.js.map +1 -0
- package/dist/product-video-PYOXJVAI.js +235 -0
- package/dist/product-video-PYOXJVAI.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/browser-fallback.d.ts +7 -0
- package/dist/providers/browser-fallback.d.ts.map +1 -1
- 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-bundle.d.ts +1 -1
- package/dist/providers/runtime-bundle.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/platform.d.ts.map +1 -1
- package/dist/providers/social/search-quality.d.ts.map +1 -1
- package/dist/providers/social/youtube.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +22 -1
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts +3 -0
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-TR3DUJZV.js → providers-4YY2BLXG.js} +19 -14
- package/dist/providers-4YY2BLXG.js.map +1 -0
- package/dist/public-surface/generated-manifest.d.ts +6 -6
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +8 -8
- 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-CKXMJ2DK.js +295 -0
- package/dist/research-CKXMJ2DK.js.map +1 -0
- package/dist/review-7HWJPZOD.js +48 -0
- package/dist/review-7HWJPZOD.js.map +1 -0
- package/dist/review-desktop-2IBJHFB5.js +54 -0
- package/dist/review-desktop-2IBJHFB5.js.map +1 -0
- package/dist/rpc-3HGIEJUO.js +159 -0
- package/dist/rpc-3HGIEJUO.js.map +1 -0
- package/dist/run-ADRYI3MS.js +180 -0
- package/dist/run-ADRYI3MS.js.map +1 -0
- package/dist/screencast-start-DTLUHD5H.js +67 -0
- package/dist/screencast-start-DTLUHD5H.js.map +1 -0
- package/dist/screencast-stop-54C5LRSS.js +59 -0
- package/dist/screencast-stop-54C5LRSS.js.map +1 -0
- package/dist/screenshot-HOAKR7P7.js +68 -0
- package/dist/screenshot-HOAKR7P7.js.map +1 -0
- package/dist/scroll-IAOO5COY.js +84 -0
- package/dist/scroll-IAOO5COY.js.map +1 -0
- package/dist/scroll-into-view-RKWSLAPH.js +71 -0
- package/dist/scroll-into-view-RKWSLAPH.js.map +1 -0
- package/dist/select-IGD3T6X4.js +86 -0
- package/dist/select-IGD3T6X4.js.map +1 -0
- package/dist/serve-7X4INUCU.js +498 -0
- package/dist/serve-7X4INUCU.js.map +1 -0
- package/dist/shopping-FC6DRW76.js +273 -0
- package/dist/shopping-FC6DRW76.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-X22GG324.js +113 -0
- package/dist/snapshot-X22GG324.js.map +1 -0
- package/dist/status-SP55LMNW.js +132 -0
- package/dist/status-SP55LMNW.js.map +1 -0
- package/dist/status-VH2WXIDG.js +35 -0
- package/dist/status-VH2WXIDG.js.map +1 -0
- package/dist/status-capabilities-YBERLRRA.js +57 -0
- package/dist/status-capabilities-YBERLRRA.js.map +1 -0
- package/dist/text-6TB5WNLI.js +84 -0
- package/dist/text-6TB5WNLI.js.map +1 -0
- 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/type-3UI3TQH3.js +94 -0
- package/dist/type-3UI3TQH3.js.map +1 -0
- package/dist/uncheck-5L3D2D4U.js +71 -0
- package/dist/uncheck-5L3D2D4U.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-YG4J2EMI.js +56 -0
- package/dist/upload-YG4J2EMI.js.map +1 -0
- package/dist/use-V3LGFP3K.js +63 -0
- package/dist/use-V3LGFP3K.js.map +1 -0
- package/dist/value-3247D57X.js +71 -0
- package/dist/value-3247D57X.js.map +1 -0
- package/dist/visible-A7HEV36U.js +71 -0
- package/dist/visible-A7HEV36U.js.map +1 -0
- package/dist/wait-UZPP4Y4R.js +109 -0
- package/dist/wait-UZPP4Y4R.js.map +1 -0
- package/dist/windows-76TR3AIP.js +37 -0
- package/dist/windows-76TR3AIP.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 +13 -11
- 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-design-agent/SKILL.md +5 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-contract-playbook.md +6 -1
- package/skills/opendevbrowser-design-agent/assets/templates/design-contract.v1.json +15 -1
- package/skills/opendevbrowser-design-agent/assets/templates/inspiredesign-advanced-brief.v1.json +5 -2
- package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +2 -0
- 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-MWBDO2L5.js.map +0 -1
- package/dist/chunk-QVWOPIZJ.js.map +0 -1
- package/dist/chunk-V5DJUSPV.js.map +0 -1
- /package/dist/{providers-TR3DUJZV.js.map → chunk-RJNI3BHT.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/inspiredesign.ts"],"sourcesContent":["import type { ParsedArgs } from \"../args\";\nimport { callDaemon } from \"../client\";\nimport { createUsageError } from \"../errors\";\nimport { DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS } from \"../transport-timeouts\";\nimport {\n parseBooleanFlag,\n parseNumberFlag,\n parseOptionalStringFlag,\n parseRepeatedStringFlag\n} from \"../utils/parse\";\nimport { buildWorkflowCompletionMessage } from \"../utils/workflow-message\";\nimport { isChallengeAutomationMode, type ChallengeAutomationMode } from \"../../challenges/types\";\nimport { resolveInspiredesignCaptureMode } from \"../../inspiredesign/capture-mode\";\nimport type { WorkflowBrowserMode } from \"../../providers/types\";\nimport { resolveWorkflowOutputDirFlag } from \"./workflow-output\";\n\ntype InspiredesignCommandArgs = {\n brief?: string;\n urls?: string[];\n captureMode?: \"off\" | \"deep\";\n includePrototypeGuidance?: boolean;\n mode?: \"compact\" | \"json\" | \"md\" | \"context\" | \"path\";\n timeoutMs?: number;\n outputDir?: string;\n ttlHours?: number;\n browserMode?: WorkflowBrowserMode;\n useCookies?: boolean;\n challengeAutomationMode?: ChallengeAutomationMode;\n cookiePolicyOverride?: \"off\" | \"auto\" | \"required\";\n};\n\nconst MODE_VALUES = new Set([\"compact\", \"json\", \"md\", \"context\", \"path\"]);\nconst CAPTURE_MODE_VALUES = new Set([\"off\", \"deep\"]);\nconst COOKIE_POLICY_VALUES = new Set([\"off\", \"auto\", \"required\"]);\nconst BROWSER_MODE_VALUES = new Set([\"auto\", \"extension\", \"managed\"]);\n\nconst requireValue = (rawArgs: string[], index: number, flag: string): string => {\n const value = rawArgs[index + 1];\n if (!value) {\n throw createUsageError(`Missing value for ${flag}`);\n }\n return value;\n};\n\nconst parseInspiredesignRunArgs = (rawArgs: string[]): InspiredesignCommandArgs => {\n const parsed: InspiredesignCommandArgs = {\n brief: parseOptionalStringFlag(rawArgs, \"--brief\"),\n urls: parseRepeatedStringFlag(rawArgs, \"--url\")\n };\n\n for (let index = 0; index < rawArgs.length; index += 1) {\n const arg = rawArgs[index];\n\n if (arg === \"--brief\" || arg === \"--url\") {\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--brief=\") || arg?.startsWith(\"--url=\")) {\n continue;\n }\n\n if (arg === \"--capture-mode\") {\n const value = requireValue(rawArgs, index, \"--capture-mode\").toLowerCase();\n if (!CAPTURE_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --capture-mode: ${value}`);\n }\n parsed.captureMode = value as InspiredesignCommandArgs[\"captureMode\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--capture-mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!CAPTURE_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --capture-mode: ${value}`);\n }\n parsed.captureMode = value as InspiredesignCommandArgs[\"captureMode\"];\n continue;\n }\n\n if (arg === \"--include-prototype-guidance\") {\n parsed.includePrototypeGuidance = true;\n continue;\n }\n if (arg?.startsWith(\"--include-prototype-guidance=\")) {\n parsed.includePrototypeGuidance = parseBooleanFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--include-prototype-guidance\");\n continue;\n }\n\n if (arg === \"--mode\") {\n const value = requireValue(rawArgs, index, \"--mode\").toLowerCase();\n if (!MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --mode: ${value}`);\n }\n parsed.mode = value as InspiredesignCommandArgs[\"mode\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --mode: ${value}`);\n }\n parsed.mode = value as InspiredesignCommandArgs[\"mode\"];\n continue;\n }\n\n if (arg === \"--timeout-ms\") {\n parsed.timeoutMs = parseNumberFlag(requireValue(rawArgs, index, \"--timeout-ms\"), \"--timeout-ms\", { min: 1 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--timeout-ms=\")) {\n parsed.timeoutMs = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--timeout-ms\", { min: 1 });\n continue;\n }\n\n if (arg === \"--output-dir\") {\n parsed.outputDir = resolveWorkflowOutputDirFlag(requireValue(rawArgs, index, \"--output-dir\"));\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--output-dir=\")) {\n parsed.outputDir = resolveWorkflowOutputDirFlag(arg.split(\"=\", 2)[1]);\n continue;\n }\n\n if (arg === \"--ttl-hours\") {\n parsed.ttlHours = parseNumberFlag(requireValue(rawArgs, index, \"--ttl-hours\"), \"--ttl-hours\", { min: 1, max: 168 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--ttl-hours=\")) {\n parsed.ttlHours = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--ttl-hours\", { min: 1, max: 168 });\n continue;\n }\n\n if (arg === \"--browser-mode\") {\n const value = requireValue(rawArgs, index, \"--browser-mode\").toLowerCase();\n if (!BROWSER_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --browser-mode: ${value}`);\n }\n parsed.browserMode = value as WorkflowBrowserMode;\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--browser-mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!BROWSER_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --browser-mode: ${value}`);\n }\n parsed.browserMode = value as WorkflowBrowserMode;\n continue;\n }\n\n if (arg === \"--use-cookies\") {\n parsed.useCookies = true;\n continue;\n }\n if (arg?.startsWith(\"--use-cookies=\")) {\n parsed.useCookies = parseBooleanFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--use-cookies\");\n continue;\n }\n\n if (arg === \"--challenge-automation-mode\") {\n const value = requireValue(rawArgs, index, \"--challenge-automation-mode\");\n if (!isChallengeAutomationMode(value)) {\n throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);\n }\n parsed.challengeAutomationMode = value;\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--challenge-automation-mode=\")) {\n const value = arg.split(\"=\", 2)[1] ?? \"\";\n if (!isChallengeAutomationMode(value)) {\n throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);\n }\n parsed.challengeAutomationMode = value;\n continue;\n }\n\n if (arg === \"--cookie-policy-override\" || arg === \"--cookie-policy\") {\n const value = requireValue(rawArgs, index, arg).toLowerCase();\n if (!COOKIE_POLICY_VALUES.has(value)) {\n throw createUsageError(`Invalid ${arg}: ${value}`);\n }\n parsed.cookiePolicyOverride = value as InspiredesignCommandArgs[\"cookiePolicyOverride\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--cookie-policy-override=\") || arg?.startsWith(\"--cookie-policy=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!COOKIE_POLICY_VALUES.has(value)) {\n throw createUsageError(`Invalid --cookie-policy-override: ${value}`);\n }\n parsed.cookiePolicyOverride = value as InspiredesignCommandArgs[\"cookiePolicyOverride\"];\n }\n }\n\n return parsed;\n};\n\nexport async function runInspiredesignCommand(args: ParsedArgs) {\n const [subcommand, ...rest] = args.rawArgs;\n if (subcommand !== \"run\") {\n throw createUsageError(\"Usage: opendevbrowser inspiredesign run --brief <value> [--url <url>] [options]\");\n }\n\n const parsed = parseInspiredesignRunArgs(rest);\n if (!parsed.brief?.trim()) {\n throw createUsageError(\"Missing --brief\");\n }\n const captureMode = resolveInspiredesignCaptureMode(parsed.captureMode, parsed.urls);\n\n const data = await callDaemon(\"inspiredesign.run\", {\n brief: parsed.brief,\n urls: parsed.urls,\n captureMode,\n includePrototypeGuidance: parsed.includePrototypeGuidance,\n mode: parsed.mode ?? \"compact\",\n timeoutMs: parsed.timeoutMs ?? DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS,\n outputDir: resolveWorkflowOutputDirFlag(parsed.outputDir),\n ttlHours: parsed.ttlHours,\n browserMode: parsed.browserMode,\n useCookies: parsed.useCookies,\n challengeAutomationMode: parsed.challengeAutomationMode,\n cookiePolicyOverride: parsed.cookiePolicyOverride\n });\n\n return {\n success: true,\n message: buildWorkflowCompletionMessage(\"Inspiredesign workflow\", data),\n data\n };\n}\n\nexport const __test__ = {\n parseInspiredesignRunArgs\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
STABLE_DAEMON_INSTALL_GUIDANCE,
|
|
3
|
+
isTransientAutostartInstallError
|
|
4
|
+
} from "./chunk-WOXBLP7V.js";
|
|
5
|
+
|
|
6
|
+
// src/cli/install-autostart-output.ts
|
|
7
|
+
function createInstallAutostartOutputPayload(result) {
|
|
8
|
+
if (!result) {
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
autostart: result.autostart,
|
|
13
|
+
autostartAction: result.autostartAction,
|
|
14
|
+
...result.autostartAction === "repair_failed" && result.autostartError ? { autostartError: result.autostartError } : {}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function formatAutostartReconciliationMessage(result) {
|
|
18
|
+
switch (result.autostartAction) {
|
|
19
|
+
case "unsupported":
|
|
20
|
+
return result.autostart ? `Autostart not supported on ${result.autostart.platform}.` : "Autostart not supported on this platform.";
|
|
21
|
+
case "already_healthy":
|
|
22
|
+
return "Autostart already healthy.";
|
|
23
|
+
case "installed":
|
|
24
|
+
return result.autostart ? `Autostart installed (${result.autostart.platform}).` : "Autostart installed.";
|
|
25
|
+
case "repaired":
|
|
26
|
+
return result.autostart ? `Autostart repaired (${result.autostart.platform}).` : "Autostart repaired.";
|
|
27
|
+
case "repair_failed":
|
|
28
|
+
if (result.autostartError && isTransientAutostartInstallError(result.autostartError)) {
|
|
29
|
+
return `Plugin install succeeded but autostart repair was skipped because the current CLI path is transient: ${result.autostartError}`;
|
|
30
|
+
}
|
|
31
|
+
return `Plugin install succeeded but autostart repair failed: ${result.autostartError ?? "unknown error"}. Run opendevbrowser daemon install to repair it.`;
|
|
32
|
+
default:
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
STABLE_DAEMON_INSTALL_GUIDANCE,
|
|
38
|
+
createInstallAutostartOutputPayload,
|
|
39
|
+
formatAutostartReconciliationMessage
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=install-autostart-output-5DOMKCQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/install-autostart-output.ts"],"sourcesContent":["import {\n isTransientAutostartInstallError,\n STABLE_DAEMON_INSTALL_GUIDANCE\n} from \"./daemon-autostart\";\nimport type { InstallAutostartReconciliationResult } from \"./install-autostart-reconciliation\";\n\nexport function createInstallAutostartOutputPayload(\n result?: InstallAutostartReconciliationResult\n): Record<string, unknown> {\n if (!result) {\n return {};\n }\n\n return {\n autostart: result.autostart,\n autostartAction: result.autostartAction,\n ...(result.autostartAction === \"repair_failed\" && result.autostartError\n ? { autostartError: result.autostartError }\n : {})\n };\n}\n\nexport function formatAutostartReconciliationMessage(\n result: InstallAutostartReconciliationResult\n): string | null {\n switch (result.autostartAction) {\n case \"unsupported\":\n return result.autostart\n ? `Autostart not supported on ${result.autostart.platform}.`\n : \"Autostart not supported on this platform.\";\n case \"already_healthy\":\n return \"Autostart already healthy.\";\n case \"installed\":\n return result.autostart\n ? `Autostart installed (${result.autostart.platform}).`\n : \"Autostart installed.\";\n case \"repaired\":\n return result.autostart\n ? `Autostart repaired (${result.autostart.platform}).`\n : \"Autostart repaired.\";\n case \"repair_failed\":\n if (result.autostartError && isTransientAutostartInstallError(result.autostartError)) {\n return `Plugin install succeeded but autostart repair was skipped because the current CLI path is transient: ${result.autostartError}`;\n }\n return `Plugin install succeeded but autostart repair failed: ${result.autostartError ?? \"unknown error\"}. Run opendevbrowser daemon install to repair it.`;\n default:\n return null;\n }\n}\n\nexport { STABLE_DAEMON_INSTALL_GUIDANCE };\n"],"mappings":";;;;;;AAMO,SAAS,oCACd,QACyB;AACzB,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AAAA,IACL,WAAW,OAAO;AAAA,IAClB,iBAAiB,OAAO;AAAA,IACxB,GAAI,OAAO,oBAAoB,mBAAmB,OAAO,iBACrD,EAAE,gBAAgB,OAAO,eAAe,IACxC,CAAC;AAAA,EACP;AACF;AAEO,SAAS,qCACd,QACe;AACf,UAAQ,OAAO,iBAAiB;AAAA,IAC9B,KAAK;AACH,aAAO,OAAO,YACV,8BAA8B,OAAO,UAAU,QAAQ,MACvD;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,OAAO,YACV,wBAAwB,OAAO,UAAU,QAAQ,OACjD;AAAA,IACN,KAAK;AACH,aAAO,OAAO,YACV,uBAAuB,OAAO,UAAU,QAAQ,OAChD;AAAA,IACN,KAAK;AACH,UAAI,OAAO,kBAAkB,iCAAiC,OAAO,cAAc,GAAG;AACpF,eAAO,wGAAwG,OAAO,cAAc;AAAA,MACtI;AACA,aAAO,yDAAyD,OAAO,kBAAkB,eAAe;AAAA,IAC1G;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAutostartStatus,
|
|
3
|
+
installAutostart
|
|
4
|
+
} from "./chunk-WOXBLP7V.js";
|
|
5
|
+
|
|
6
|
+
// src/cli/install-autostart-reconciliation.ts
|
|
7
|
+
var INSTALL_AUTOSTART_SKIP_ENV_VAR = "OPDEVBROWSER_SKIP_INSTALL_AUTOSTART_RECONCILIATION";
|
|
8
|
+
var defaultDeps = () => ({
|
|
9
|
+
getAutostartStatus,
|
|
10
|
+
installAutostart
|
|
11
|
+
});
|
|
12
|
+
function shouldSkipInstallAutostartReconciliation(env = process.env) {
|
|
13
|
+
const raw = env[INSTALL_AUTOSTART_SKIP_ENV_VAR];
|
|
14
|
+
if (raw === void 0) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const normalized = raw.trim().toLowerCase();
|
|
18
|
+
return normalized === "1" || normalized === "true" || normalized === "yes";
|
|
19
|
+
}
|
|
20
|
+
function reconcileInstallAutostart(installResult, deps = {}, options = {}) {
|
|
21
|
+
if (!installResult.success || shouldSkipInstallAutostartReconciliation(options.env)) {
|
|
22
|
+
return { attempted: false };
|
|
23
|
+
}
|
|
24
|
+
const resolved = { ...defaultDeps(), ...deps };
|
|
25
|
+
const status = resolved.getAutostartStatus();
|
|
26
|
+
if (!status.supported) {
|
|
27
|
+
return {
|
|
28
|
+
attempted: false,
|
|
29
|
+
autostart: status,
|
|
30
|
+
autostartAction: "unsupported"
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (status.health === "healthy") {
|
|
34
|
+
return {
|
|
35
|
+
attempted: false,
|
|
36
|
+
autostart: status,
|
|
37
|
+
autostartAction: "already_healthy"
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (status.health !== "missing" && status.health !== "needs_repair" && status.health !== "malformed") {
|
|
41
|
+
return {
|
|
42
|
+
attempted: false,
|
|
43
|
+
autostart: status
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const autostart = resolved.installAutostart();
|
|
48
|
+
return {
|
|
49
|
+
attempted: true,
|
|
50
|
+
autostart,
|
|
51
|
+
autostartAction: status.health === "missing" ? "installed" : "repaired"
|
|
52
|
+
};
|
|
53
|
+
} catch (error) {
|
|
54
|
+
let autostart = status;
|
|
55
|
+
try {
|
|
56
|
+
autostart = resolved.getAutostartStatus();
|
|
57
|
+
} catch {
|
|
58
|
+
autostart = status;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
attempted: true,
|
|
62
|
+
autostart,
|
|
63
|
+
autostartAction: "repair_failed",
|
|
64
|
+
autostartError: error instanceof Error ? error.message : String(error)
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
INSTALL_AUTOSTART_SKIP_ENV_VAR,
|
|
70
|
+
reconcileInstallAutostart,
|
|
71
|
+
shouldSkipInstallAutostartReconciliation
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=install-autostart-reconciliation-NHKOFYTD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/install-autostart-reconciliation.ts"],"sourcesContent":["import { getAutostartStatus, installAutostart } from \"./daemon-autostart\";\nimport type { AutostartInstallResult, AutostartStatus } from \"./daemon-autostart\";\n\nexport const INSTALL_AUTOSTART_SKIP_ENV_VAR = \"OPDEVBROWSER_SKIP_INSTALL_AUTOSTART_RECONCILIATION\";\n\nexport type InstallResultLike = {\n success: boolean;\n alreadyInstalled: boolean;\n};\n\nexport type AutostartAction =\n | \"unsupported\"\n | \"already_healthy\"\n | \"installed\"\n | \"repaired\"\n | \"repair_failed\";\n\nexport type InstallAutostartReconciliationResult = {\n attempted: boolean;\n autostart?: AutostartStatus;\n autostartAction?: AutostartAction;\n autostartError?: string;\n};\n\nexport type InstallAutostartReconciliationDeps = {\n getAutostartStatus?: () => AutostartStatus;\n installAutostart?: () => AutostartInstallResult;\n};\n\nexport type InstallAutostartReconciliationOptions = {\n env?: NodeJS.ProcessEnv;\n};\n\nconst defaultDeps = (): Required<InstallAutostartReconciliationDeps> => ({\n getAutostartStatus,\n installAutostart\n});\n\nexport function shouldSkipInstallAutostartReconciliation(env: NodeJS.ProcessEnv = process.env): boolean {\n const raw = env[INSTALL_AUTOSTART_SKIP_ENV_VAR];\n if (raw === undefined) {\n return false;\n }\n const normalized = raw.trim().toLowerCase();\n return normalized === \"1\" || normalized === \"true\" || normalized === \"yes\";\n}\n\nexport function reconcileInstallAutostart(\n installResult: InstallResultLike,\n deps: InstallAutostartReconciliationDeps = {},\n options: InstallAutostartReconciliationOptions = {}\n): InstallAutostartReconciliationResult {\n if (!installResult.success || shouldSkipInstallAutostartReconciliation(options.env)) {\n return { attempted: false };\n }\n\n const resolved = { ...defaultDeps(), ...deps };\n const status = resolved.getAutostartStatus();\n\n if (!status.supported) {\n return {\n attempted: false,\n autostart: status,\n autostartAction: \"unsupported\"\n };\n }\n\n if (status.health === \"healthy\") {\n return {\n attempted: false,\n autostart: status,\n autostartAction: \"already_healthy\"\n };\n }\n\n if (status.health !== \"missing\" && status.health !== \"needs_repair\" && status.health !== \"malformed\") {\n return {\n attempted: false,\n autostart: status\n };\n }\n\n try {\n const autostart = resolved.installAutostart();\n return {\n attempted: true,\n autostart,\n autostartAction: status.health === \"missing\" ? \"installed\" : \"repaired\"\n };\n } catch (error) {\n let autostart = status;\n try {\n autostart = resolved.getAutostartStatus();\n } catch {\n autostart = status;\n }\n\n return {\n attempted: true,\n autostart,\n autostartAction: \"repair_failed\",\n autostartError: error instanceof Error ? error.message : String(error)\n };\n }\n}\n"],"mappings":";;;;;;AAGO,IAAM,iCAAiC;AA8B9C,IAAM,cAAc,OAAqD;AAAA,EACvE;AAAA,EACA;AACF;AAEO,SAAS,yCAAyC,MAAyB,QAAQ,KAAc;AACtG,QAAM,MAAM,IAAI,8BAA8B;AAC9C,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AACA,QAAM,aAAa,IAAI,KAAK,EAAE,YAAY;AAC1C,SAAO,eAAe,OAAO,eAAe,UAAU,eAAe;AACvE;AAEO,SAAS,0BACd,eACA,OAA2C,CAAC,GAC5C,UAAiD,CAAC,GACZ;AACtC,MAAI,CAAC,cAAc,WAAW,yCAAyC,QAAQ,GAAG,GAAG;AACnF,WAAO,EAAE,WAAW,MAAM;AAAA,EAC5B;AAEA,QAAM,WAAW,EAAE,GAAG,YAAY,GAAG,GAAG,KAAK;AAC7C,QAAM,SAAS,SAAS,mBAAmB;AAE3C,MAAI,CAAC,OAAO,WAAW;AACrB,WAAO;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,MACX,iBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,WAAW;AAC/B,WAAO;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,MACX,iBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,aAAa,OAAO,WAAW,kBAAkB,OAAO,WAAW,aAAa;AACpG,WAAO;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAEA,MAAI;AACF,UAAM,YAAY,SAAS,iBAAiB;AAC5C,WAAO;AAAA,MACL,WAAW;AAAA,MACX;AAAA,MACA,iBAAiB,OAAO,WAAW,YAAY,cAAc;AAAA,IAC/D;AAAA,EACF,SAAS,OAAO;AACd,QAAI,YAAY;AAChB,QAAI;AACF,kBAAY,SAAS,mBAAmB;AAAA,IAC1C,QAAQ;AACN,kBAAY;AAAA,IACd;AAEA,WAAO;AAAA,MACL,WAAW;AAAA,MACX;AAAA,MACA,iBAAiB;AAAA,MACjB,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACvE;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import "./chunk-RJNI3BHT.js";
|
|
2
|
+
import {
|
|
3
|
+
parseBooleanFlag,
|
|
4
|
+
parseNumberFlag
|
|
5
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
6
|
+
import {
|
|
7
|
+
callDaemon
|
|
8
|
+
} from "./chunk-OYNLAZQU.js";
|
|
9
|
+
import "./chunk-LBPELU7L.js";
|
|
10
|
+
import "./chunk-SXAGSEKZ.js";
|
|
11
|
+
import "./chunk-MX3NFLCE.js";
|
|
12
|
+
import "./chunk-ASMHEEKY.js";
|
|
13
|
+
import {
|
|
14
|
+
createUsageError
|
|
15
|
+
} from "./chunk-IPE7TF2P.js";
|
|
16
|
+
import "./chunk-STGGGVYT.js";
|
|
17
|
+
import "./chunk-3ILXPKSJ.js";
|
|
18
|
+
import "./chunk-TBUCZX4A.js";
|
|
19
|
+
import "./chunk-Y2KL55OG.js";
|
|
20
|
+
import "./chunk-5SWZDVOW.js";
|
|
21
|
+
import "./chunk-S6S2UP6U.js";
|
|
22
|
+
import "./chunk-S5KZQJJI.js";
|
|
23
|
+
import "./chunk-KZ2IXVQT.js";
|
|
24
|
+
import "./chunk-WHQZBUNY.js";
|
|
25
|
+
import "./chunk-FUSXMW3G.js";
|
|
26
|
+
|
|
27
|
+
// src/cli/commands/session/launch.ts
|
|
28
|
+
var MIN_LAUNCH_CALL_TIMEOUT_MS = 3e4;
|
|
29
|
+
var MANAGED_HEADED_LAUNCH_CALL_TIMEOUT_MS = 6e4;
|
|
30
|
+
var LAUNCH_CALL_TIMEOUT_BUFFER_MS = 5e3;
|
|
31
|
+
function parseLaunchArgs(rawArgs) {
|
|
32
|
+
const parsed = { flags: [] };
|
|
33
|
+
for (let i = 0; i < rawArgs.length; i += 1) {
|
|
34
|
+
const arg = rawArgs[i];
|
|
35
|
+
if (arg === "--headless") {
|
|
36
|
+
parsed.headless = true;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (arg === "--profile") {
|
|
40
|
+
const value = rawArgs[i + 1];
|
|
41
|
+
if (!value) throw createUsageError("Missing value for --profile");
|
|
42
|
+
parsed.profile = value;
|
|
43
|
+
i += 1;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (arg?.startsWith("--profile=")) {
|
|
47
|
+
parsed.profile = arg.split("=", 2)[1];
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (arg === "--start-url") {
|
|
51
|
+
const value = rawArgs[i + 1];
|
|
52
|
+
if (!value) throw createUsageError("Missing value for --start-url");
|
|
53
|
+
parsed.startUrl = value;
|
|
54
|
+
i += 1;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (arg?.startsWith("--start-url=")) {
|
|
58
|
+
parsed.startUrl = arg.split("=", 2)[1];
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (arg === "--chrome-path") {
|
|
62
|
+
const value = rawArgs[i + 1];
|
|
63
|
+
if (!value) throw createUsageError("Missing value for --chrome-path");
|
|
64
|
+
parsed.chromePath = value;
|
|
65
|
+
i += 1;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (arg?.startsWith("--chrome-path=")) {
|
|
69
|
+
parsed.chromePath = arg.split("=", 2)[1];
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (arg === "--persist-profile") {
|
|
73
|
+
const value = rawArgs[i + 1];
|
|
74
|
+
if (value && !value.startsWith("--")) {
|
|
75
|
+
parsed.persistProfile = parseBooleanFlag(value, "--persist-profile");
|
|
76
|
+
i += 1;
|
|
77
|
+
} else {
|
|
78
|
+
parsed.persistProfile = true;
|
|
79
|
+
}
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (arg?.startsWith("--persist-profile=")) {
|
|
83
|
+
const value = arg.split("=", 2)[1];
|
|
84
|
+
if (!value) throw createUsageError("Missing value for --persist-profile");
|
|
85
|
+
parsed.persistProfile = parseBooleanFlag(value, "--persist-profile");
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (arg === "--no-extension") {
|
|
89
|
+
parsed.noExtension = true;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (arg === "--extension-only") {
|
|
93
|
+
parsed.extensionOnly = true;
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (arg === "--extension-legacy") {
|
|
97
|
+
parsed.extensionLegacy = true;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (arg === "--wait-for-extension") {
|
|
101
|
+
parsed.waitForExtension = true;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (arg === "--wait-timeout-ms") {
|
|
105
|
+
const value = rawArgs[i + 1];
|
|
106
|
+
if (!value) throw createUsageError("Missing value for --wait-timeout-ms");
|
|
107
|
+
parsed.waitTimeoutMs = parseNumberFlag(value, "--wait-timeout-ms", { min: 1 });
|
|
108
|
+
i += 1;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (arg?.startsWith("--wait-timeout-ms=")) {
|
|
112
|
+
const value = arg.split("=", 2)[1];
|
|
113
|
+
if (!value) throw createUsageError("Missing value for --wait-timeout-ms");
|
|
114
|
+
parsed.waitTimeoutMs = parseNumberFlag(value, "--wait-timeout-ms", { min: 1 });
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (arg === "--flag") {
|
|
118
|
+
const value = rawArgs[i + 1];
|
|
119
|
+
if (!value) throw createUsageError("Missing value for --flag");
|
|
120
|
+
parsed.flags.push(value);
|
|
121
|
+
i += 1;
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (arg?.startsWith("--flag=")) {
|
|
125
|
+
const value = arg.split("=", 2)[1];
|
|
126
|
+
if (!value) throw createUsageError("Missing value for --flag");
|
|
127
|
+
parsed.flags.push(value);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return parsed;
|
|
132
|
+
}
|
|
133
|
+
function deriveLaunchCallTimeoutMs(launchArgs) {
|
|
134
|
+
const waitHintMs = typeof launchArgs.waitTimeoutMs === "number" ? launchArgs.waitTimeoutMs + LAUNCH_CALL_TIMEOUT_BUFFER_MS : 0;
|
|
135
|
+
const managedHeadedHintMs = launchArgs.noExtension && launchArgs.headless !== true ? MANAGED_HEADED_LAUNCH_CALL_TIMEOUT_MS : 0;
|
|
136
|
+
return Math.max(MIN_LAUNCH_CALL_TIMEOUT_MS, waitHintMs, managedHeadedHintMs);
|
|
137
|
+
}
|
|
138
|
+
var __test__ = { parseLaunchArgs, deriveLaunchCallTimeoutMs };
|
|
139
|
+
async function runSessionLaunch(args) {
|
|
140
|
+
const launchArgs = parseLaunchArgs(args.rawArgs);
|
|
141
|
+
const launchCallTimeoutMs = deriveLaunchCallTimeoutMs(launchArgs);
|
|
142
|
+
try {
|
|
143
|
+
const result = await callDaemon("session.launch", launchArgs, { timeoutMs: launchCallTimeoutMs });
|
|
144
|
+
return {
|
|
145
|
+
success: true,
|
|
146
|
+
message: `Session launched: ${result.sessionId}`,
|
|
147
|
+
data: result
|
|
148
|
+
};
|
|
149
|
+
} catch (error) {
|
|
150
|
+
if (args.noInteractive) {
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
const message = error instanceof Error ? error.message : "";
|
|
154
|
+
const lower = message.toLowerCase();
|
|
155
|
+
const isExtensionFailure = message.includes("Extension not connected") || message.includes("Extension relay connection failed") || lower.includes("unauthorized");
|
|
156
|
+
if (!isExtensionFailure) {
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
const retry = await promptYesNo(
|
|
160
|
+
lower.includes("unauthorized") ? "Relay token mismatch detected. Open the extension popup and click Connect to refresh pairing, then retry now?" : "Extension not connected. Open the extension popup and click Connect, then retry now?",
|
|
161
|
+
false
|
|
162
|
+
);
|
|
163
|
+
if (retry) {
|
|
164
|
+
try {
|
|
165
|
+
const retryArgs = { ...launchArgs, waitForExtension: true };
|
|
166
|
+
const result = await callDaemon("session.launch", retryArgs, { timeoutMs: deriveLaunchCallTimeoutMs(retryArgs) });
|
|
167
|
+
return {
|
|
168
|
+
success: true,
|
|
169
|
+
message: `Session launched: ${result.sessionId}`,
|
|
170
|
+
data: result
|
|
171
|
+
};
|
|
172
|
+
} catch (retryError) {
|
|
173
|
+
error = retryError;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const proceedManaged = await promptYesNo("Proceed with a managed session (headed)?", false);
|
|
177
|
+
if (proceedManaged) {
|
|
178
|
+
const useHeadless = await promptYesNo("Run headless instead?", false);
|
|
179
|
+
const managedArgs = {
|
|
180
|
+
...launchArgs,
|
|
181
|
+
noExtension: true,
|
|
182
|
+
headless: useHeadless ? true : false
|
|
183
|
+
};
|
|
184
|
+
const result = await callDaemon("session.launch", managedArgs, { timeoutMs: deriveLaunchCallTimeoutMs(managedArgs) });
|
|
185
|
+
return {
|
|
186
|
+
success: true,
|
|
187
|
+
message: `Session launched: ${result.sessionId}`,
|
|
188
|
+
data: result
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
const proceedCdp = await promptYesNo("Proceed with CDPConnect (requires Chrome --remote-debugging-port=9222)?", false);
|
|
192
|
+
if (proceedCdp) {
|
|
193
|
+
const result = await callDaemon("session.connect", {});
|
|
194
|
+
return {
|
|
195
|
+
success: true,
|
|
196
|
+
message: `Session connected: ${result.sessionId}`,
|
|
197
|
+
data: result
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
throw error;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function promptYesNo(question, defaultYes) {
|
|
204
|
+
if (!process.stdin.isTTY) {
|
|
205
|
+
return Promise.resolve(false);
|
|
206
|
+
}
|
|
207
|
+
const suffix = defaultYes ? " [Y/n] " : " [y/N] ";
|
|
208
|
+
return new Promise((resolve) => {
|
|
209
|
+
process.stdout.write(`${question}${suffix}`);
|
|
210
|
+
process.stdin.setEncoding("utf8");
|
|
211
|
+
process.stdin.once("data", (data) => {
|
|
212
|
+
const input = data.toString().trim().toLowerCase();
|
|
213
|
+
if (!input) {
|
|
214
|
+
resolve(defaultYes);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
resolve(input === "y" || input === "yes");
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
export {
|
|
222
|
+
__test__,
|
|
223
|
+
runSessionLaunch
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=launch-REYCIR3Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/session/launch.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { parseBooleanFlag, parseNumberFlag } from \"../../utils/parse\";\n\ntype LaunchArgs = {\n profile?: string;\n headless?: boolean;\n startUrl?: string;\n chromePath?: string;\n flags: string[];\n persistProfile?: boolean;\n noExtension?: boolean;\n extensionOnly?: boolean;\n waitForExtension?: boolean;\n waitTimeoutMs?: number;\n extensionLegacy?: boolean;\n};\n\nconst MIN_LAUNCH_CALL_TIMEOUT_MS = 30_000;\nconst MANAGED_HEADED_LAUNCH_CALL_TIMEOUT_MS = 60_000;\nconst LAUNCH_CALL_TIMEOUT_BUFFER_MS = 5_000;\n\nfunction parseLaunchArgs(rawArgs: string[]): LaunchArgs {\n const parsed: LaunchArgs = { flags: [] };\n for (let i = 0; i < rawArgs.length; i += 1) {\n const arg = rawArgs[i];\n if (arg === \"--headless\") {\n parsed.headless = true;\n continue;\n }\n if (arg === \"--profile\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --profile\");\n parsed.profile = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--profile=\")) {\n parsed.profile = arg.split(\"=\", 2)[1];\n continue;\n }\n if (arg === \"--start-url\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --start-url\");\n parsed.startUrl = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--start-url=\")) {\n parsed.startUrl = arg.split(\"=\", 2)[1];\n continue;\n }\n if (arg === \"--chrome-path\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --chrome-path\");\n parsed.chromePath = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--chrome-path=\")) {\n parsed.chromePath = arg.split(\"=\", 2)[1];\n continue;\n }\n if (arg === \"--persist-profile\") {\n const value = rawArgs[i + 1];\n if (value && !value.startsWith(\"--\")) {\n parsed.persistProfile = parseBooleanFlag(value, \"--persist-profile\");\n i += 1;\n } else {\n parsed.persistProfile = true;\n }\n continue;\n }\n if (arg?.startsWith(\"--persist-profile=\")) {\n const value = arg.split(\"=\", 2)[1];\n if (!value) throw createUsageError(\"Missing value for --persist-profile\");\n parsed.persistProfile = parseBooleanFlag(value, \"--persist-profile\");\n continue;\n }\n if (arg === \"--no-extension\") {\n parsed.noExtension = true;\n continue;\n }\n if (arg === \"--extension-only\") {\n parsed.extensionOnly = true;\n continue;\n }\n if (arg === \"--extension-legacy\") {\n parsed.extensionLegacy = true;\n continue;\n }\n if (arg === \"--wait-for-extension\") {\n parsed.waitForExtension = true;\n continue;\n }\n if (arg === \"--wait-timeout-ms\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --wait-timeout-ms\");\n parsed.waitTimeoutMs = parseNumberFlag(value, \"--wait-timeout-ms\", { min: 1 });\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--wait-timeout-ms=\")) {\n const value = arg.split(\"=\", 2)[1];\n if (!value) throw createUsageError(\"Missing value for --wait-timeout-ms\");\n parsed.waitTimeoutMs = parseNumberFlag(value, \"--wait-timeout-ms\", { min: 1 });\n continue;\n }\n if (arg === \"--flag\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --flag\");\n parsed.flags.push(value);\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--flag=\")) {\n const value = arg.split(\"=\", 2)[1];\n if (!value) throw createUsageError(\"Missing value for --flag\");\n parsed.flags.push(value);\n continue;\n }\n }\n return parsed;\n}\n\nfunction deriveLaunchCallTimeoutMs(launchArgs: LaunchArgs): number {\n const waitHintMs = typeof launchArgs.waitTimeoutMs === \"number\"\n ? launchArgs.waitTimeoutMs + LAUNCH_CALL_TIMEOUT_BUFFER_MS\n : 0;\n const managedHeadedHintMs = launchArgs.noExtension && launchArgs.headless !== true\n ? MANAGED_HEADED_LAUNCH_CALL_TIMEOUT_MS\n : 0;\n return Math.max(MIN_LAUNCH_CALL_TIMEOUT_MS, waitHintMs, managedHeadedHintMs);\n}\n\nexport const __test__ = { parseLaunchArgs, deriveLaunchCallTimeoutMs };\n\nexport async function runSessionLaunch(args: ParsedArgs) {\n const launchArgs = parseLaunchArgs(args.rawArgs);\n const launchCallTimeoutMs = deriveLaunchCallTimeoutMs(launchArgs);\n try {\n const result = await callDaemon(\"session.launch\", launchArgs, { timeoutMs: launchCallTimeoutMs }) as { sessionId: string };\n return {\n success: true,\n message: `Session launched: ${result.sessionId}`,\n data: result\n };\n } catch (error) {\n if (args.noInteractive) {\n throw error;\n }\n const message = error instanceof Error ? error.message : \"\";\n const lower = message.toLowerCase();\n const isExtensionFailure = message.includes(\"Extension not connected\")\n || message.includes(\"Extension relay connection failed\")\n || lower.includes(\"unauthorized\");\n if (!isExtensionFailure) {\n throw error;\n }\n\n const retry = await promptYesNo(\n lower.includes(\"unauthorized\")\n ? \"Relay token mismatch detected. Open the extension popup and click Connect to refresh pairing, then retry now?\"\n : \"Extension not connected. Open the extension popup and click Connect, then retry now?\",\n false\n );\n if (retry) {\n try {\n const retryArgs = { ...launchArgs, waitForExtension: true };\n const result = await callDaemon(\"session.launch\", retryArgs, { timeoutMs: deriveLaunchCallTimeoutMs(retryArgs) }) as { sessionId: string };\n return {\n success: true,\n message: `Session launched: ${result.sessionId}`,\n data: result\n };\n } catch (retryError) {\n error = retryError;\n }\n }\n\n const proceedManaged = await promptYesNo(\"Proceed with a managed session (headed)?\", false);\n if (proceedManaged) {\n const useHeadless = await promptYesNo(\"Run headless instead?\", false);\n const managedArgs = {\n ...launchArgs,\n noExtension: true,\n headless: useHeadless ? true : false\n };\n const result = await callDaemon(\"session.launch\", managedArgs, { timeoutMs: deriveLaunchCallTimeoutMs(managedArgs) }) as { sessionId: string };\n return {\n success: true,\n message: `Session launched: ${result.sessionId}`,\n data: result\n };\n }\n\n const proceedCdp = await promptYesNo(\"Proceed with CDPConnect (requires Chrome --remote-debugging-port=9222)?\", false);\n if (proceedCdp) {\n const result = await callDaemon(\"session.connect\", {}) as { sessionId: string };\n return {\n success: true,\n message: `Session connected: ${result.sessionId}`,\n data: result\n };\n }\n\n throw error;\n }\n}\n\nfunction promptYesNo(question: string, defaultYes: boolean): Promise<boolean> {\n if (!process.stdin.isTTY) {\n return Promise.resolve(false);\n }\n\n const suffix = defaultYes ? \" [Y/n] \" : \" [y/N] \";\n return new Promise((resolve) => {\n process.stdout.write(`${question}${suffix}`);\n process.stdin.setEncoding(\"utf8\");\n process.stdin.once(\"data\", (data) => {\n const input = data.toString().trim().toLowerCase();\n if (!input) {\n resolve(defaultYes);\n return;\n }\n resolve(input === \"y\" || input === \"yes\");\n });\n });\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import "./chunk-RJNI3BHT.js";
|
|
2
|
+
import {
|
|
3
|
+
callDaemon
|
|
4
|
+
} from "./chunk-OYNLAZQU.js";
|
|
5
|
+
import "./chunk-LBPELU7L.js";
|
|
6
|
+
import "./chunk-SXAGSEKZ.js";
|
|
7
|
+
import "./chunk-MX3NFLCE.js";
|
|
8
|
+
import "./chunk-ASMHEEKY.js";
|
|
9
|
+
import {
|
|
10
|
+
createUsageError
|
|
11
|
+
} from "./chunk-IPE7TF2P.js";
|
|
12
|
+
import "./chunk-STGGGVYT.js";
|
|
13
|
+
import "./chunk-3ILXPKSJ.js";
|
|
14
|
+
import "./chunk-TBUCZX4A.js";
|
|
15
|
+
import "./chunk-Y2KL55OG.js";
|
|
16
|
+
import "./chunk-5SWZDVOW.js";
|
|
17
|
+
import "./chunk-S6S2UP6U.js";
|
|
18
|
+
import "./chunk-S5KZQJJI.js";
|
|
19
|
+
import "./chunk-KZ2IXVQT.js";
|
|
20
|
+
import "./chunk-WHQZBUNY.js";
|
|
21
|
+
import "./chunk-FUSXMW3G.js";
|
|
22
|
+
|
|
23
|
+
// src/cli/commands/pages/list.ts
|
|
24
|
+
function parsePagesListArgs(rawArgs) {
|
|
25
|
+
const parsed = {};
|
|
26
|
+
for (let i = 0; i < rawArgs.length; i += 1) {
|
|
27
|
+
const arg = rawArgs[i];
|
|
28
|
+
if (arg === "--session-id") {
|
|
29
|
+
const value = rawArgs[i + 1];
|
|
30
|
+
if (!value) throw createUsageError("Missing value for --session-id");
|
|
31
|
+
parsed.sessionId = value;
|
|
32
|
+
i += 1;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (arg?.startsWith("--session-id=")) {
|
|
36
|
+
parsed.sessionId = arg.split("=", 2)[1];
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return parsed;
|
|
41
|
+
}
|
|
42
|
+
async function runPagesList(args) {
|
|
43
|
+
const { sessionId } = parsePagesListArgs(args.rawArgs);
|
|
44
|
+
if (!sessionId) throw createUsageError("Missing --session-id");
|
|
45
|
+
const result = await callDaemon("page.list", { sessionId });
|
|
46
|
+
return { success: true, message: `Pages listed for session: ${sessionId}`, data: result };
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
runPagesList
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=list-NPRXRQY2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/pages/list.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\n\nfunction parsePagesListArgs(rawArgs: string[]): { sessionId?: string } {\n const parsed: { sessionId?: string } = {};\n for (let i = 0; i < rawArgs.length; i += 1) {\n const arg = rawArgs[i];\n if (arg === \"--session-id\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --session-id\");\n parsed.sessionId = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--session-id=\")) {\n parsed.sessionId = arg.split(\"=\", 2)[1];\n continue;\n }\n }\n return parsed;\n}\n\nexport async function runPagesList(args: ParsedArgs) {\n const { sessionId } = parsePagesListArgs(args.rawArgs);\n if (!sessionId) throw createUsageError(\"Missing --session-id\");\n const result = await callDaemon(\"page.list\", { sessionId });\n return { success: true, message: `Pages listed for session: ${sessionId}`, data: result };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,mBAAmB,SAA2C;AACrE,QAAM,SAAiC,CAAC;AACxC,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,UAAM,MAAM,QAAQ,CAAC;AACrB,QAAI,QAAQ,gBAAgB;AAC1B,YAAM,QAAQ,QAAQ,IAAI,CAAC;AAC3B,UAAI,CAAC,MAAO,OAAM,iBAAiB,gCAAgC;AACnE,aAAO,YAAY;AACnB,WAAK;AACL;AAAA,IACF;AACA,QAAI,KAAK,WAAW,eAAe,GAAG;AACpC,aAAO,YAAY,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;AACtC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,aAAa,MAAkB;AACnD,QAAM,EAAE,UAAU,IAAI,mBAAmB,KAAK,OAAO;AACrD,MAAI,CAAC,UAAW,OAAM,iBAAiB,sBAAsB;AAC7D,QAAM,SAAS,MAAM,WAAW,aAAa,EAAE,UAAU,CAAC;AAC1D,SAAO,EAAE,SAAS,MAAM,SAAS,6BAA6B,SAAS,IAAI,MAAM,OAAO;AAC1F;","names":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import "./chunk-RJNI3BHT.js";
|
|
2
|
+
import {
|
|
3
|
+
callDaemon
|
|
4
|
+
} from "./chunk-OYNLAZQU.js";
|
|
5
|
+
import "./chunk-LBPELU7L.js";
|
|
6
|
+
import "./chunk-SXAGSEKZ.js";
|
|
7
|
+
import "./chunk-MX3NFLCE.js";
|
|
8
|
+
import "./chunk-ASMHEEKY.js";
|
|
9
|
+
import {
|
|
10
|
+
createUsageError
|
|
11
|
+
} from "./chunk-IPE7TF2P.js";
|
|
12
|
+
import "./chunk-STGGGVYT.js";
|
|
13
|
+
import "./chunk-3ILXPKSJ.js";
|
|
14
|
+
import "./chunk-TBUCZX4A.js";
|
|
15
|
+
import "./chunk-Y2KL55OG.js";
|
|
16
|
+
import "./chunk-5SWZDVOW.js";
|
|
17
|
+
import "./chunk-S6S2UP6U.js";
|
|
18
|
+
import "./chunk-S5KZQJJI.js";
|
|
19
|
+
import "./chunk-KZ2IXVQT.js";
|
|
20
|
+
import "./chunk-WHQZBUNY.js";
|
|
21
|
+
import "./chunk-FUSXMW3G.js";
|
|
22
|
+
|
|
23
|
+
// src/cli/commands/targets/list.ts
|
|
24
|
+
function parseTargetsListArgs(rawArgs) {
|
|
25
|
+
const parsed = {};
|
|
26
|
+
for (let i = 0; i < rawArgs.length; i += 1) {
|
|
27
|
+
const arg = rawArgs[i];
|
|
28
|
+
if (arg === "--session-id") {
|
|
29
|
+
const value = rawArgs[i + 1];
|
|
30
|
+
if (!value) throw createUsageError("Missing value for --session-id");
|
|
31
|
+
parsed.sessionId = value;
|
|
32
|
+
i += 1;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (arg?.startsWith("--session-id=")) {
|
|
36
|
+
parsed.sessionId = arg.split("=", 2)[1];
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (arg === "--include-urls") {
|
|
40
|
+
parsed.includeUrls = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return parsed;
|
|
44
|
+
}
|
|
45
|
+
async function runTargetsList(args) {
|
|
46
|
+
const { sessionId, includeUrls } = parseTargetsListArgs(args.rawArgs);
|
|
47
|
+
if (!sessionId) throw createUsageError("Missing --session-id");
|
|
48
|
+
const result = await callDaemon("targets.list", { sessionId, includeUrls });
|
|
49
|
+
return { success: true, message: `Targets listed for session: ${sessionId}`, data: result };
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
runTargetsList
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=list-STYD2ZWA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/targets/list.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\n\nfunction parseTargetsListArgs(rawArgs: string[]): { sessionId?: string; includeUrls?: boolean } {\n const parsed: { sessionId?: string; includeUrls?: boolean } = {};\n for (let i = 0; i < rawArgs.length; i += 1) {\n const arg = rawArgs[i];\n if (arg === \"--session-id\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --session-id\");\n parsed.sessionId = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--session-id=\")) {\n parsed.sessionId = arg.split(\"=\", 2)[1];\n continue;\n }\n if (arg === \"--include-urls\") {\n parsed.includeUrls = true;\n }\n }\n return parsed;\n}\n\nexport async function runTargetsList(args: ParsedArgs) {\n const { sessionId, includeUrls } = parseTargetsListArgs(args.rawArgs);\n if (!sessionId) throw createUsageError(\"Missing --session-id\");\n const result = await callDaemon(\"targets.list\", { sessionId, includeUrls });\n return { success: true, message: `Targets listed for session: ${sessionId}`, data: result };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,qBAAqB,SAAkE;AAC9F,QAAM,SAAwD,CAAC;AAC/D,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,UAAM,MAAM,QAAQ,CAAC;AACrB,QAAI,QAAQ,gBAAgB;AAC1B,YAAM,QAAQ,QAAQ,IAAI,CAAC;AAC3B,UAAI,CAAC,MAAO,OAAM,iBAAiB,gCAAgC;AACnE,aAAO,YAAY;AACnB,WAAK;AACL;AAAA,IACF;AACA,QAAI,KAAK,WAAW,eAAe,GAAG;AACpC,aAAO,YAAY,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;AACtC;AAAA,IACF;AACA,QAAI,QAAQ,kBAAkB;AAC5B,aAAO,cAAc;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,eAAe,MAAkB;AACrD,QAAM,EAAE,WAAW,YAAY,IAAI,qBAAqB,KAAK,OAAO;AACpE,MAAI,CAAC,UAAW,OAAM,iBAAiB,sBAAsB;AAC7D,QAAM,SAAS,MAAM,WAAW,gBAAgB,EAAE,WAAW,YAAY,CAAC;AAC1E,SAAO,EAAE,SAAS,MAAM,SAAS,+BAA+B,SAAS,IAAI,MAAM,OAAO;AAC5F;","names":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createPluginConfig
|
|
3
|
+
} from "./chunk-DBF5OKH3.js";
|
|
4
|
+
import "./chunk-ASMHEEKY.js";
|
|
5
|
+
import {
|
|
6
|
+
getLocalConfigPath,
|
|
7
|
+
hasPlugin,
|
|
8
|
+
readConfig,
|
|
9
|
+
updateConfigContent
|
|
10
|
+
} from "./chunk-7THCPS52.js";
|
|
11
|
+
import "./chunk-TBUCZX4A.js";
|
|
12
|
+
|
|
13
|
+
// src/cli/installers/local.ts
|
|
14
|
+
import * as fs from "fs";
|
|
15
|
+
function installLocal(withConfig = false) {
|
|
16
|
+
const configPath = getLocalConfigPath();
|
|
17
|
+
try {
|
|
18
|
+
const { content, config } = readConfig(configPath);
|
|
19
|
+
if (hasPlugin(config)) {
|
|
20
|
+
return {
|
|
21
|
+
success: true,
|
|
22
|
+
message: `opendevbrowser is already installed in ${configPath}`,
|
|
23
|
+
configPath,
|
|
24
|
+
created: false,
|
|
25
|
+
alreadyInstalled: true
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const newContent = updateConfigContent(content, "opendevbrowser");
|
|
29
|
+
fs.writeFileSync(configPath, newContent, "utf-8");
|
|
30
|
+
if (withConfig) {
|
|
31
|
+
createPluginConfig("local");
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
success: true,
|
|
35
|
+
message: `Added opendevbrowser to ${configPath}`,
|
|
36
|
+
configPath,
|
|
37
|
+
created: content.trim() === "",
|
|
38
|
+
alreadyInstalled: false
|
|
39
|
+
};
|
|
40
|
+
} catch (error) {
|
|
41
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
message: `Failed to install locally: ${message}`,
|
|
45
|
+
configPath,
|
|
46
|
+
created: false,
|
|
47
|
+
alreadyInstalled: false
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
installLocal
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=local-HXJLUUNT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/installers/local.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport {\n getLocalConfigPath,\n readConfig,\n hasPlugin,\n updateConfigContent\n} from \"../utils/config\";\nimport { createPluginConfig } from \"../templates/config\";\n\nexport interface InstallResult {\n success: boolean;\n message: string;\n configPath: string;\n created: boolean;\n alreadyInstalled: boolean;\n}\n\nexport function installLocal(withConfig: boolean = false): InstallResult {\n const configPath = getLocalConfigPath();\n\n try {\n const { content, config } = readConfig(configPath);\n\n if (hasPlugin(config)) {\n return {\n success: true,\n message: `opendevbrowser is already installed in ${configPath}`,\n configPath,\n created: false,\n alreadyInstalled: true\n };\n }\n\n const newContent = updateConfigContent(content, \"opendevbrowser\");\n\n fs.writeFileSync(configPath, newContent, \"utf-8\");\n\n if (withConfig) {\n createPluginConfig(\"local\");\n }\n\n return {\n success: true,\n message: `Added opendevbrowser to ${configPath}`,\n configPath,\n created: content.trim() === \"\",\n alreadyInstalled: false\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Failed to install locally: ${message}`,\n configPath,\n created: false,\n alreadyInstalled: false\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAAA,YAAY,QAAQ;AAiBb,SAAS,aAAa,aAAsB,OAAsB;AACvE,QAAM,aAAa,mBAAmB;AAEtC,MAAI;AACF,UAAM,EAAE,SAAS,OAAO,IAAI,WAAW,UAAU;AAEjD,QAAI,UAAU,MAAM,GAAG;AACrB,aAAO;AAAA,QACL,SAAS;AAAA,QACT,SAAS,0CAA0C,UAAU;AAAA,QAC7D;AAAA,QACA,SAAS;AAAA,QACT,kBAAkB;AAAA,MACpB;AAAA,IACF;AAEA,UAAM,aAAa,oBAAoB,SAAS,gBAAgB;AAEhE,IAAG,iBAAc,YAAY,YAAY,OAAO;AAEhD,QAAI,YAAY;AACd,yBAAmB,OAAO;AAAA,IAC5B;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,2BAA2B,UAAU;AAAA,MAC9C;AAAA,MACA,SAAS,QAAQ,KAAK,MAAM;AAAA,MAC5B,kBAAkB;AAAA,IACpB;AAAA,EACF,SAAS,OAAO;AACd,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS,8BAA8B,OAAO;AAAA,MAC9C;AAAA,MACA,SAAS;AAAA,MACT,kBAAkB;AAAA,IACpB;AAAA,EACF;AACF;","names":[]}
|