opendevbrowser 0.0.30 → 0.0.32
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 +20 -7
- package/dist/{accessibility-snapshot-CQ4ZKWKC.js → accessibility-snapshot-XOP66CSK.js} +11 -11
- package/dist/{active-window-TD5HYJ72.js → active-window-E3WFOQGX.js} +11 -11
- package/dist/{annotate-VTLFS2XV.js → annotate-MAE7ZJOZ.js} +10 -10
- package/dist/{artifacts-KJ6RNDO2.js → artifacts-JHDUUJGQ.js} +2 -2
- package/dist/{attr-BCI5KYCW.js → attr-M3PFDJ7Q.js} +10 -10
- package/dist/{canvas-5DFEEOKM.js → canvas-3AJVL5I5.js} +10 -10
- package/dist/{capture-desktop-HFTTWY4Z.js → capture-desktop-VJGEETMJ.js} +11 -11
- package/dist/{capture-window-X63XPIFF.js → capture-window-W5UFSFQL.js} +11 -11
- package/dist/{check-LWAUY7GC.js → check-4IR3UJVW.js} +10 -10
- package/dist/{checked-ZSOUKVYT.js → checked-PKNY7724.js} +10 -10
- package/dist/{chunk-KZ2IXVQT.js → chunk-2X4JFMKJ.js} +39 -4
- package/dist/chunk-2X4JFMKJ.js.map +1 -0
- package/dist/{chunk-IPE7TF2P.js → chunk-7BNU6DFI.js} +8 -5
- package/dist/chunk-7BNU6DFI.js.map +1 -0
- package/dist/{chunk-J47N77VG.js → chunk-AKIAGFOE.js} +31 -8
- package/dist/chunk-AKIAGFOE.js.map +1 -0
- package/dist/{chunk-RCZZGGJS.js → chunk-AWQ37HSC.js} +7 -3
- package/dist/chunk-AWQ37HSC.js.map +1 -0
- package/dist/{chunk-3ILXPKSJ.js → chunk-BUVYTJZR.js} +2 -1
- package/dist/chunk-BUVYTJZR.js.map +1 -0
- package/dist/{chunk-AHEWXOKY.js → chunk-BUXFIY2P.js} +4 -4
- package/dist/{chunk-QOMWCRE3.js → chunk-HBK56JST.js} +3 -3
- package/dist/{chunk-T4GMCW6Z.js → chunk-J3KYGJRQ.js} +3 -3
- package/dist/{chunk-6PVZ2ABC.js → chunk-L3YNUGYF.js} +2 -2
- package/dist/{chunk-JZXD6FWR.js → chunk-NURQB55J.js} +2 -2
- package/dist/{chunk-GQJ5S3BL.js → chunk-P5K3ZIPI.js} +3 -3
- package/dist/{chunk-PPUWQKIC.js → chunk-PIFHXKV4.js} +4 -4
- package/dist/{chunk-STGGGVYT.js → chunk-QMHKAFYX.js} +2 -2
- package/dist/{chunk-4BEJVZRK.js → chunk-RO3SMXF3.js} +1073 -138
- package/dist/chunk-RO3SMXF3.js.map +1 -0
- package/dist/{chunk-RPXWUCQQ.js → chunk-SKFB5ICF.js} +2 -2
- package/dist/{chunk-2SIMIPLY.js → chunk-W6YPVNDX.js} +3 -3
- package/dist/{chunk-MD655IPO.js → chunk-XDLJE3RJ.js} +11 -4
- package/dist/chunk-XDLJE3RJ.js.map +1 -0
- package/dist/{chunk-KDSNXS6N.js → chunk-ZMNEWS7A.js} +2 -2
- package/dist/{chunk-COAOWH3G.js → chunk-ZOVMMQO6.js} +119 -27
- package/dist/chunk-ZOVMMQO6.js.map +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/commands/daemon.d.ts +19 -2
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/inspiredesign.d.ts +6 -1
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts +12 -3
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/types.d.ts +1 -0
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/daemon-client.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon-mismatch.d.ts +9 -0
- package/dist/cli/daemon-mismatch.d.ts.map +1 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/errors.d.ts +4 -2
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +91 -90
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/postinstall-skill-sync.js +2 -2
- package/dist/{click-2AILSEIZ.js → click-HLNXU4I5.js} +10 -10
- package/dist/{clone-component-TPJS3PEG.js → clone-component-QIKN5PIM.js} +9 -9
- package/dist/{clone-page-LE74CIFC.js → clone-page-5C7DTGZT.js} +9 -9
- package/dist/{close-HN4YI47K.js → close-PCRZHX7F.js} +9 -9
- package/dist/{close-WFERRHX6.js → close-WTXB3EDD.js} +9 -9
- package/dist/{connect-RWBV2UCQ.js → connect-6C2IG55I.js} +10 -10
- package/dist/{console-poll-PP4YYPDF.js → console-poll-VJXCZR3F.js} +10 -10
- package/dist/{cookie-import-6IP776FC.js → cookie-import-5OEDFB6U.js} +9 -9
- package/dist/{cookie-list-O2KG6DPU.js → cookie-list-44UNJJ6D.js} +9 -9
- package/dist/{daemon-2BSAZXLT.js → daemon-CIKGBWEB.js} +25 -12
- package/dist/daemon-CIKGBWEB.js.map +1 -0
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/{debug-trace-snapshot-F3BDVZXS.js → debug-trace-snapshot-RGXAPGWB.js} +10 -10
- package/dist/{dialog-6JQYUWMQ.js → dialog-S64MJUM2.js} +10 -10
- package/dist/{disconnect-763TP7GH.js → disconnect-MTIELIM7.js} +9 -9
- package/dist/{enabled-DLYQFNIP.js → enabled-KF2L7LW4.js} +10 -10
- package/dist/{goto-S346TJJH.js → goto-ULWINUAZ.js} +10 -10
- package/dist/{help-EKKKEDL5.js → help-IG5S5RJD.js} +14 -10
- package/dist/help-IG5S5RJD.js.map +1 -0
- package/dist/{hover-6JVJFGO7.js → hover-NOCOTR6N.js} +10 -10
- package/dist/{html-EVOSPBIT.js → html-LXSYP6BT.js} +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -17
- package/dist/index.js.map +1 -1
- package/dist/{inspector-H57BVUJP.js → inspector-62EPCLYB.js} +11 -11
- package/dist/{inspector-audit-NQBAJWC7.js → inspector-audit-T2IF67RJ.js} +13 -13
- package/dist/{inspector-plan-ZDIQVND3.js → inspector-plan-KQS6LRMW.js} +11 -11
- package/dist/inspiredesign/capture.d.ts +4 -0
- package/dist/inspiredesign/capture.d.ts.map +1 -1
- package/dist/inspiredesign/contract.d.ts +22 -0
- package/dist/inspiredesign/contract.d.ts.map +1 -1
- package/dist/inspiredesign/handoff.d.ts +7 -1
- package/dist/inspiredesign/handoff.d.ts.map +1 -1
- package/dist/inspiredesign/meta-prompt.d.ts +9 -0
- package/dist/inspiredesign/meta-prompt.d.ts.map +1 -0
- package/dist/inspiredesign/reference-discovery.d.ts +29 -0
- package/dist/inspiredesign/reference-discovery.d.ts.map +1 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts +21 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
- package/dist/inspiredesign/visual-evidence.d.ts +46 -0
- package/dist/inspiredesign/visual-evidence.d.ts.map +1 -0
- package/dist/inspiredesign/visual-policy.d.ts +17 -0
- package/dist/inspiredesign/visual-policy.d.ts.map +1 -0
- package/dist/{inspiredesign-IEUL4PX3.js → inspiredesign-DB6CHYN3.js} +71 -19
- package/dist/inspiredesign-DB6CHYN3.js.map +1 -0
- package/dist/{launch-EK66VQPF.js → launch-B5ES6FVS.js} +10 -10
- package/dist/{list-KKUKN467.js → list-TIZVR6RO.js} +9 -9
- package/dist/{list-ADZAQ2IU.js → list-XM4BP5GM.js} +9 -9
- package/dist/{macro-resolve-6DOQJ7CA.js → macro-resolve-TTQZVFIW.js} +10 -10
- package/dist/{native-UPLVQ2SG.js → native-J2DFLOLP.js} +3 -3
- package/dist/{network-poll-NUL4PDPY.js → network-poll-NNSY4W63.js} +10 -10
- package/dist/{new-5NKYPEFT.js → new-E6VNAC2A.js} +9 -9
- package/dist/{open-NR3BPLXV.js → open-F55XKMKB.js} +9 -9
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +46 -17
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/{perf-HJ36ZI6H.js → perf-RE7JE6CP.js} +10 -10
- package/dist/{pointer-down-IYTTQWXZ.js → pointer-down-BCBPC5FJ.js} +11 -11
- package/dist/{pointer-drag-A2YC5PWI.js → pointer-drag-QK7KGF7W.js} +11 -11
- package/dist/{pointer-move-W5K5FUI4.js → pointer-move-VFAZQAXA.js} +11 -11
- package/dist/{pointer-up-6GWVO64Y.js → pointer-up-FA5WE6LS.js} +11 -11
- package/dist/{press-A3V5WB3S.js → press-TNRHNDSW.js} +10 -10
- package/dist/{product-video-52REKWF3.js → product-video-UEANMZ2U.js} +11 -11
- package/dist/providers/renderer.d.ts +7 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +1 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts +45 -3
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-IMFYMMHQ.js → providers-AMCNWZUL.js} +3 -3
- package/dist/public-surface/generated-manifest.d.ts +12 -3
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +6 -6
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/{research-WB6BBCDD.js → research-YFY7WJSZ.js} +11 -11
- package/dist/{review-BGWVY4RA.js → review-NHOPLAT7.js} +11 -11
- package/dist/{review-desktop-LEORC5VS.js → review-desktop-OFWPDYGD.js} +11 -11
- package/dist/{rpc-4TSKSFGC.js → rpc-TVVQPUOL.js} +10 -10
- package/dist/{run-3NBLVWXD.js → run-OCBEZRDW.js} +8 -8
- package/dist/{screencast-start-UZVIT3IN.js → screencast-start-GTSDA33J.js} +10 -10
- package/dist/{screencast-stop-NOSJSIUO.js → screencast-stop-FYBUIXAA.js} +10 -10
- package/dist/{screenshot-LARG4JQG.js → screenshot-OEYRT3SP.js} +10 -10
- package/dist/{scroll-VNFMV6TW.js → scroll-35OFEFC5.js} +10 -10
- package/dist/{scroll-into-view-VYRT3JPT.js → scroll-into-view-UQ5RAWIX.js} +10 -10
- package/dist/{select-KJTUZDVO.js → select-K56QELVZ.js} +10 -10
- package/dist/{serve-EV7K4HKR.js → serve-5UJ3VMWC.js} +48 -24
- package/dist/serve-5UJ3VMWC.js.map +1 -0
- package/dist/{shopping-DTXHVQ2X.js → shopping-FJG7XB4Q.js} +11 -11
- package/dist/{skill-lifecycle-5UAZGKSN.js → skill-lifecycle-OWZYBPFS.js} +3 -3
- package/dist/skills/bundled-skill-directories.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +2 -2
- package/dist/{skills-NSXDX6YM.js → skills-KHMRNOE4.js} +3 -3
- package/dist/{snapshot-3XQMCMRJ.js → snapshot-W7RKVZEI.js} +10 -10
- package/dist/{status-YUMDP5KY.js → status-KHYCLGUD.js} +20 -12
- package/dist/status-KHYCLGUD.js.map +1 -0
- package/dist/{status-OXSYA5XD.js → status-R4EV4TWO.js} +11 -11
- package/dist/{status-capabilities-P4KDSE2Y.js → status-capabilities-XD3RGLKF.js} +11 -11
- package/dist/{text-V3B7UVIH.js → text-TANLFZ4O.js} +10 -10
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/{type-IYBN3ZLR.js → type-Y2Y7LX7Y.js} +10 -10
- package/dist/{uncheck-SG737EGI.js → uncheck-6REVUUB2.js} +10 -10
- package/dist/{uninstall-KYKGJAX7.js → uninstall-FW5ORBIN.js} +3 -3
- package/dist/{update-SMXPYGXS.js → update-FZGSXB74.js} +6 -2
- package/dist/update-FZGSXB74.js.map +1 -0
- package/dist/{update-skill-modes-BVX7IVMW.js → update-skill-modes-3ULKJK3Y.js} +3 -3
- package/dist/{upload-KH6ZABJA.js → upload-GGZC5UQP.js} +10 -10
- package/dist/{use-7YDKO3U4.js → use-B4Q7CFG2.js} +9 -9
- package/dist/{value-RZBWSKKM.js → value-DHOHO55D.js} +10 -10
- package/dist/{visible-BSFTAKXR.js → visible-S5BTWYNH.js} +10 -10
- package/dist/{wait-TMTEAYOP.js → wait-WV6NZUKL.js} +10 -10
- package/dist/{windows-HIZ23OHS.js → windows-GKE36DJQ.js} +11 -11
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/AGENTS.md +2 -1
- package/skills/opendevbrowser-best-practices/SKILL.md +9 -2
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +4 -3
- package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +7 -0
- package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +49 -3
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +24 -2
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +1 -0
- package/skills/opendevbrowser-design-agent/SKILL.md +3 -0
- package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +85 -40
- package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +2 -0
- package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +20 -5
- package/skills/opendevbrowser-motion-design/SKILL.md +129 -0
- package/skills/opendevbrowser-motion-design/artifacts/accessibility-reduced-motion.md +37 -0
- package/skills/opendevbrowser-motion-design/artifacts/device-breakpoint-posture.md +40 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-anti-patterns.md +29 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-pattern-catalog.md +430 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-release-gate.md +28 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-terminology.md +46 -0
- package/skills/opendevbrowser-motion-design/artifacts/open-dev-browser-motion-evidence.md +48 -0
- package/skills/opendevbrowser-motion-design/artifacts/performance-frame-budget.md +38 -0
- package/skills/opendevbrowser-motion-design/artifacts/platform-framework-guide.md +166 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-audit-report.v1.md +70 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-contract.v1.json +79 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-release-gate.v1.json +18 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-viewport-matrix.v1.json +76 -0
- package/skills/opendevbrowser-motion-design/scripts/motion-workflow.sh +163 -0
- package/skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh +374 -0
- package/dist/chunk-3ILXPKSJ.js.map +0 -1
- package/dist/chunk-4BEJVZRK.js.map +0 -1
- package/dist/chunk-COAOWH3G.js.map +0 -1
- package/dist/chunk-IPE7TF2P.js.map +0 -1
- package/dist/chunk-J47N77VG.js.map +0 -1
- package/dist/chunk-KZ2IXVQT.js.map +0 -1
- package/dist/chunk-MD655IPO.js.map +0 -1
- package/dist/chunk-RCZZGGJS.js.map +0 -1
- package/dist/daemon-2BSAZXLT.js.map +0 -1
- package/dist/help-EKKKEDL5.js.map +0 -1
- package/dist/inspiredesign-IEUL4PX3.js.map +0 -1
- package/dist/serve-EV7K4HKR.js.map +0 -1
- package/dist/status-YUMDP5KY.js.map +0 -1
- package/dist/update-SMXPYGXS.js.map +0 -1
- /package/dist/{accessibility-snapshot-CQ4ZKWKC.js.map → accessibility-snapshot-XOP66CSK.js.map} +0 -0
- /package/dist/{active-window-TD5HYJ72.js.map → active-window-E3WFOQGX.js.map} +0 -0
- /package/dist/{annotate-VTLFS2XV.js.map → annotate-MAE7ZJOZ.js.map} +0 -0
- /package/dist/{artifacts-KJ6RNDO2.js.map → artifacts-JHDUUJGQ.js.map} +0 -0
- /package/dist/{attr-BCI5KYCW.js.map → attr-M3PFDJ7Q.js.map} +0 -0
- /package/dist/{canvas-5DFEEOKM.js.map → canvas-3AJVL5I5.js.map} +0 -0
- /package/dist/{capture-desktop-HFTTWY4Z.js.map → capture-desktop-VJGEETMJ.js.map} +0 -0
- /package/dist/{capture-window-X63XPIFF.js.map → capture-window-W5UFSFQL.js.map} +0 -0
- /package/dist/{check-LWAUY7GC.js.map → check-4IR3UJVW.js.map} +0 -0
- /package/dist/{checked-ZSOUKVYT.js.map → checked-PKNY7724.js.map} +0 -0
- /package/dist/{chunk-AHEWXOKY.js.map → chunk-BUXFIY2P.js.map} +0 -0
- /package/dist/{chunk-QOMWCRE3.js.map → chunk-HBK56JST.js.map} +0 -0
- /package/dist/{chunk-T4GMCW6Z.js.map → chunk-J3KYGJRQ.js.map} +0 -0
- /package/dist/{chunk-6PVZ2ABC.js.map → chunk-L3YNUGYF.js.map} +0 -0
- /package/dist/{chunk-JZXD6FWR.js.map → chunk-NURQB55J.js.map} +0 -0
- /package/dist/{chunk-GQJ5S3BL.js.map → chunk-P5K3ZIPI.js.map} +0 -0
- /package/dist/{chunk-PPUWQKIC.js.map → chunk-PIFHXKV4.js.map} +0 -0
- /package/dist/{chunk-STGGGVYT.js.map → chunk-QMHKAFYX.js.map} +0 -0
- /package/dist/{chunk-RPXWUCQQ.js.map → chunk-SKFB5ICF.js.map} +0 -0
- /package/dist/{chunk-2SIMIPLY.js.map → chunk-W6YPVNDX.js.map} +0 -0
- /package/dist/{chunk-KDSNXS6N.js.map → chunk-ZMNEWS7A.js.map} +0 -0
- /package/dist/{click-2AILSEIZ.js.map → click-HLNXU4I5.js.map} +0 -0
- /package/dist/{clone-component-TPJS3PEG.js.map → clone-component-QIKN5PIM.js.map} +0 -0
- /package/dist/{clone-page-LE74CIFC.js.map → clone-page-5C7DTGZT.js.map} +0 -0
- /package/dist/{close-HN4YI47K.js.map → close-PCRZHX7F.js.map} +0 -0
- /package/dist/{close-WFERRHX6.js.map → close-WTXB3EDD.js.map} +0 -0
- /package/dist/{connect-RWBV2UCQ.js.map → connect-6C2IG55I.js.map} +0 -0
- /package/dist/{console-poll-PP4YYPDF.js.map → console-poll-VJXCZR3F.js.map} +0 -0
- /package/dist/{cookie-import-6IP776FC.js.map → cookie-import-5OEDFB6U.js.map} +0 -0
- /package/dist/{cookie-list-O2KG6DPU.js.map → cookie-list-44UNJJ6D.js.map} +0 -0
- /package/dist/{debug-trace-snapshot-F3BDVZXS.js.map → debug-trace-snapshot-RGXAPGWB.js.map} +0 -0
- /package/dist/{dialog-6JQYUWMQ.js.map → dialog-S64MJUM2.js.map} +0 -0
- /package/dist/{disconnect-763TP7GH.js.map → disconnect-MTIELIM7.js.map} +0 -0
- /package/dist/{enabled-DLYQFNIP.js.map → enabled-KF2L7LW4.js.map} +0 -0
- /package/dist/{goto-S346TJJH.js.map → goto-ULWINUAZ.js.map} +0 -0
- /package/dist/{hover-6JVJFGO7.js.map → hover-NOCOTR6N.js.map} +0 -0
- /package/dist/{html-EVOSPBIT.js.map → html-LXSYP6BT.js.map} +0 -0
- /package/dist/{inspector-H57BVUJP.js.map → inspector-62EPCLYB.js.map} +0 -0
- /package/dist/{inspector-audit-NQBAJWC7.js.map → inspector-audit-T2IF67RJ.js.map} +0 -0
- /package/dist/{inspector-plan-ZDIQVND3.js.map → inspector-plan-KQS6LRMW.js.map} +0 -0
- /package/dist/{launch-EK66VQPF.js.map → launch-B5ES6FVS.js.map} +0 -0
- /package/dist/{list-KKUKN467.js.map → list-TIZVR6RO.js.map} +0 -0
- /package/dist/{list-ADZAQ2IU.js.map → list-XM4BP5GM.js.map} +0 -0
- /package/dist/{macro-resolve-6DOQJ7CA.js.map → macro-resolve-TTQZVFIW.js.map} +0 -0
- /package/dist/{native-UPLVQ2SG.js.map → native-J2DFLOLP.js.map} +0 -0
- /package/dist/{network-poll-NUL4PDPY.js.map → network-poll-NNSY4W63.js.map} +0 -0
- /package/dist/{new-5NKYPEFT.js.map → new-E6VNAC2A.js.map} +0 -0
- /package/dist/{open-NR3BPLXV.js.map → open-F55XKMKB.js.map} +0 -0
- /package/dist/{perf-HJ36ZI6H.js.map → perf-RE7JE6CP.js.map} +0 -0
- /package/dist/{pointer-down-IYTTQWXZ.js.map → pointer-down-BCBPC5FJ.js.map} +0 -0
- /package/dist/{pointer-drag-A2YC5PWI.js.map → pointer-drag-QK7KGF7W.js.map} +0 -0
- /package/dist/{pointer-move-W5K5FUI4.js.map → pointer-move-VFAZQAXA.js.map} +0 -0
- /package/dist/{pointer-up-6GWVO64Y.js.map → pointer-up-FA5WE6LS.js.map} +0 -0
- /package/dist/{press-A3V5WB3S.js.map → press-TNRHNDSW.js.map} +0 -0
- /package/dist/{product-video-52REKWF3.js.map → product-video-UEANMZ2U.js.map} +0 -0
- /package/dist/{providers-IMFYMMHQ.js.map → providers-AMCNWZUL.js.map} +0 -0
- /package/dist/{research-WB6BBCDD.js.map → research-YFY7WJSZ.js.map} +0 -0
- /package/dist/{review-BGWVY4RA.js.map → review-NHOPLAT7.js.map} +0 -0
- /package/dist/{review-desktop-LEORC5VS.js.map → review-desktop-OFWPDYGD.js.map} +0 -0
- /package/dist/{rpc-4TSKSFGC.js.map → rpc-TVVQPUOL.js.map} +0 -0
- /package/dist/{run-3NBLVWXD.js.map → run-OCBEZRDW.js.map} +0 -0
- /package/dist/{screencast-start-UZVIT3IN.js.map → screencast-start-GTSDA33J.js.map} +0 -0
- /package/dist/{screencast-stop-NOSJSIUO.js.map → screencast-stop-FYBUIXAA.js.map} +0 -0
- /package/dist/{screenshot-LARG4JQG.js.map → screenshot-OEYRT3SP.js.map} +0 -0
- /package/dist/{scroll-VNFMV6TW.js.map → scroll-35OFEFC5.js.map} +0 -0
- /package/dist/{scroll-into-view-VYRT3JPT.js.map → scroll-into-view-UQ5RAWIX.js.map} +0 -0
- /package/dist/{select-KJTUZDVO.js.map → select-K56QELVZ.js.map} +0 -0
- /package/dist/{shopping-DTXHVQ2X.js.map → shopping-FJG7XB4Q.js.map} +0 -0
- /package/dist/{skill-lifecycle-5UAZGKSN.js.map → skill-lifecycle-OWZYBPFS.js.map} +0 -0
- /package/dist/{skills-NSXDX6YM.js.map → skills-KHMRNOE4.js.map} +0 -0
- /package/dist/{snapshot-3XQMCMRJ.js.map → snapshot-W7RKVZEI.js.map} +0 -0
- /package/dist/{status-OXSYA5XD.js.map → status-R4EV4TWO.js.map} +0 -0
- /package/dist/{status-capabilities-P4KDSE2Y.js.map → status-capabilities-XD3RGLKF.js.map} +0 -0
- /package/dist/{text-V3B7UVIH.js.map → text-TANLFZ4O.js.map} +0 -0
- /package/dist/{type-IYBN3ZLR.js.map → type-Y2Y7LX7Y.js.map} +0 -0
- /package/dist/{uncheck-SG737EGI.js.map → uncheck-6REVUUB2.js.map} +0 -0
- /package/dist/{uninstall-KYKGJAX7.js.map → uninstall-FW5ORBIN.js.map} +0 -0
- /package/dist/{update-skill-modes-BVX7IVMW.js.map → update-skill-modes-3ULKJK3Y.js.map} +0 -0
- /package/dist/{upload-KH6ZABJA.js.map → upload-GGZC5UQP.js.map} +0 -0
- /package/dist/{use-7YDKO3U4.js.map → use-B4Q7CFG2.js.map} +0 -0
- /package/dist/{value-RZBWSKKM.js.map → value-DHOHO55D.js.map} +0 -0
- /package/dist/{visible-BSFTAKXR.js.map → visible-S5BTWYNH.js.map} +0 -0
- /package/dist/{wait-TMTEAYOP.js.map → wait-WV6NZUKL.js.map} +0 -0
- /package/dist/{windows-HIZ23OHS.js.map → windows-GKE36DJQ.js.map} +0 -0
|
@@ -2,19 +2,21 @@ import {
|
|
|
2
2
|
discoverExtensionId,
|
|
3
3
|
getNativeStatusSnapshot,
|
|
4
4
|
installNativeHost
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-L3YNUGYF.js";
|
|
6
6
|
import {
|
|
7
7
|
parseNumberFlag
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SKFB5ICF.js";
|
|
9
9
|
import {
|
|
10
|
+
DAEMON_FINGERPRINT_MISMATCH_REASON,
|
|
11
|
+
buildDaemonFingerprintMismatchMessage,
|
|
10
12
|
createDaemonStopHeaders,
|
|
11
13
|
fetchDaemonStatus,
|
|
12
14
|
fetchWithTimeout,
|
|
13
15
|
isCurrentDaemonFingerprint,
|
|
14
16
|
readDaemonMetadata,
|
|
15
17
|
startDaemon
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-ZOVMMQO6.js";
|
|
19
|
+
import "./chunk-HBK56JST.js";
|
|
18
20
|
import {
|
|
19
21
|
loadGlobalConfig
|
|
20
22
|
} from "./chunk-MX3NFLCE.js";
|
|
@@ -23,15 +25,15 @@ import {
|
|
|
23
25
|
EXIT_DISCONNECTED,
|
|
24
26
|
EXIT_EXECUTION,
|
|
25
27
|
createUsageError
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
28
|
+
} from "./chunk-7BNU6DFI.js";
|
|
29
|
+
import "./chunk-QMHKAFYX.js";
|
|
30
|
+
import "./chunk-BUVYTJZR.js";
|
|
29
31
|
import "./chunk-TBUCZX4A.js";
|
|
30
32
|
import "./chunk-Y2KL55OG.js";
|
|
31
33
|
import "./chunk-5SWZDVOW.js";
|
|
32
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-RO3SMXF3.js";
|
|
33
35
|
import "./chunk-S5KZQJJI.js";
|
|
34
|
-
import "./chunk-
|
|
36
|
+
import "./chunk-2X4JFMKJ.js";
|
|
35
37
|
import "./chunk-WHQZBUNY.js";
|
|
36
38
|
import "./chunk-FUSXMW3G.js";
|
|
37
39
|
|
|
@@ -244,11 +246,14 @@ function isServeProcessRunningByPid(pid) {
|
|
|
244
246
|
});
|
|
245
247
|
}
|
|
246
248
|
function buildStaleStopMessage(metadata) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
+
return buildDaemonFingerprintMismatchMessage({
|
|
250
|
+
label: "Daemon",
|
|
251
|
+
port: metadata.port,
|
|
252
|
+
pid: metadata.pid
|
|
253
|
+
});
|
|
249
254
|
}
|
|
250
255
|
function buildProtectedMismatchMessage(port, status) {
|
|
251
|
-
return
|
|
256
|
+
return buildDaemonFingerprintMismatchMessage({ label: "Daemon", port, pid: status.pid });
|
|
252
257
|
}
|
|
253
258
|
async function waitForDaemonShutdown(port, token) {
|
|
254
259
|
for (let attempt = 0; attempt < DAEMON_SHUTDOWN_POLL_ATTEMPTS; attempt += 1) {
|
|
@@ -292,13 +297,16 @@ async function stopMismatchedDaemon(port, daemon) {
|
|
|
292
297
|
return null;
|
|
293
298
|
}
|
|
294
299
|
const message = error instanceof Error ? error.message : String(error);
|
|
295
|
-
return `Failed to stop mismatched daemon on 127.0.0.1:${port}: ${message}
|
|
300
|
+
return { message: `Failed to stop mismatched daemon on 127.0.0.1:${port}: ${message}.` };
|
|
296
301
|
}
|
|
297
302
|
if (response.status === 409) {
|
|
298
|
-
return
|
|
303
|
+
return {
|
|
304
|
+
message: buildProtectedMismatchMessage(port, daemon.status),
|
|
305
|
+
reason: DAEMON_FINGERPRINT_MISMATCH_REASON
|
|
306
|
+
};
|
|
299
307
|
}
|
|
300
308
|
if (!response.ok) {
|
|
301
|
-
return `Failed to stop mismatched daemon on 127.0.0.1:${port}: stop returned ${response.status}
|
|
309
|
+
return { message: `Failed to stop mismatched daemon on 127.0.0.1:${port}: stop returned ${response.status}.` };
|
|
302
310
|
}
|
|
303
311
|
if (await waitForDaemonShutdown(port, daemon.token)) {
|
|
304
312
|
return null;
|
|
@@ -306,7 +314,7 @@ async function stopMismatchedDaemon(port, daemon) {
|
|
|
306
314
|
if (await terminateServeProcessByPid(daemon.status.pid)) {
|
|
307
315
|
return null;
|
|
308
316
|
}
|
|
309
|
-
return `Timed out waiting for mismatched daemon on 127.0.0.1:${port} to stop
|
|
317
|
+
return { message: `Timed out waiting for mismatched daemon on 127.0.0.1:${port} to stop.` };
|
|
310
318
|
}
|
|
311
319
|
async function prepareExistingDaemon(port, daemon) {
|
|
312
320
|
if (isCurrentDaemonFingerprint(daemon.status.fingerprint)) {
|
|
@@ -350,7 +358,13 @@ async function runServe(args) {
|
|
|
350
358
|
headers: createDaemonStopHeaders(metadata2.token, "serve.stop")
|
|
351
359
|
});
|
|
352
360
|
if (response.status === 409) {
|
|
353
|
-
return {
|
|
361
|
+
return {
|
|
362
|
+
success: false,
|
|
363
|
+
message: buildStaleStopMessage(metadata2),
|
|
364
|
+
reason: DAEMON_FINGERPRINT_MISMATCH_REASON,
|
|
365
|
+
data: { reason: DAEMON_FINGERPRINT_MISMATCH_REASON },
|
|
366
|
+
exitCode: EXIT_EXECUTION
|
|
367
|
+
};
|
|
354
368
|
}
|
|
355
369
|
if (!response.ok) {
|
|
356
370
|
throw new Error(`Stop failed (${response.status})`);
|
|
@@ -383,9 +397,14 @@ async function runServe(args) {
|
|
|
383
397
|
const staleDaemonPids = /* @__PURE__ */ new Set();
|
|
384
398
|
const staleCleared = () => staleDaemonPids.size;
|
|
385
399
|
if (existingDaemon) {
|
|
386
|
-
const
|
|
387
|
-
if (
|
|
388
|
-
return {
|
|
400
|
+
const mismatchFailure = await prepareExistingDaemon(requestedPort, existingDaemon);
|
|
401
|
+
if (mismatchFailure) {
|
|
402
|
+
return {
|
|
403
|
+
success: false,
|
|
404
|
+
message: mismatchFailure.message,
|
|
405
|
+
...mismatchFailure.reason ? { reason: mismatchFailure.reason, data: { reason: mismatchFailure.reason } } : {},
|
|
406
|
+
exitCode: EXIT_EXECUTION
|
|
407
|
+
};
|
|
389
408
|
}
|
|
390
409
|
if (isCurrentDaemonFingerprint(existingDaemon.status.fingerprint)) {
|
|
391
410
|
for (const pid of await cleanupCompetingServeProcesses(requestedPort, existingDaemon.status.pid)) {
|
|
@@ -438,9 +457,14 @@ async function runServe(args) {
|
|
|
438
457
|
}
|
|
439
458
|
const runningDaemon = await resolveExistingDaemon(requestedPort, tokenCandidates);
|
|
440
459
|
if (runningDaemon) {
|
|
441
|
-
const
|
|
442
|
-
if (
|
|
443
|
-
return {
|
|
460
|
+
const mismatchFailure = await prepareExistingDaemon(requestedPort, runningDaemon);
|
|
461
|
+
if (mismatchFailure) {
|
|
462
|
+
return {
|
|
463
|
+
success: false,
|
|
464
|
+
message: mismatchFailure.message,
|
|
465
|
+
...mismatchFailure.reason ? { reason: mismatchFailure.reason, data: { reason: mismatchFailure.reason } } : {},
|
|
466
|
+
exitCode: EXIT_EXECUTION
|
|
467
|
+
};
|
|
444
468
|
}
|
|
445
469
|
if (isCurrentDaemonFingerprint(runningDaemon.status.fingerprint)) {
|
|
446
470
|
return buildAlreadyRunningResult(requestedPort, runningDaemon.status, config.relayPort, staleCleared());
|
|
@@ -495,4 +519,4 @@ ${nativeMessage}${staleNote}` : `${baseMessage}${staleNote}`;
|
|
|
495
519
|
export {
|
|
496
520
|
runServe
|
|
497
521
|
};
|
|
498
|
-
//# sourceMappingURL=serve-
|
|
522
|
+
//# sourceMappingURL=serve-5UJ3VMWC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/serve.ts"],"sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport type { ParsedArgs } from \"../args\";\nimport {\n createDaemonStopHeaders,\n isCurrentDaemonFingerprint,\n readDaemonMetadata,\n startDaemon\n} from \"../daemon\";\nimport { loadGlobalConfig } from \"../../config\";\nimport { createUsageError, EXIT_DISCONNECTED, EXIT_EXECUTION } from \"../errors\";\nimport { parseNumberFlag } from \"../utils/parse\";\nimport { fetchWithTimeout } from \"../utils/http\";\nimport {\n buildDaemonFingerprintMismatchMessage,\n DAEMON_FINGERPRINT_MISMATCH_REASON\n} from \"../daemon-mismatch\";\nimport { discoverExtensionId, getNativeStatusSnapshot, installNativeHost } from \"./native\";\nimport type { DaemonStatusPayload } from \"../daemon-status\";\nimport { fetchDaemonStatus } from \"../daemon-status\";\n\ntype ServeArgs = {\n port?: number;\n token?: string;\n stop: boolean;\n};\n\ntype DaemonHandle = {\n stop: () => Promise<void>;\n};\n\ntype ExistingDaemon = {\n token: string;\n status: DaemonStatusPayload;\n};\n\ntype ExistingDaemonPreparationFailure = {\n message: string;\n reason?: string;\n};\n\ntype ServeProcessSnapshot = {\n pid: number;\n uid: number | null;\n command: string;\n};\n\nlet daemonHandle: DaemonHandle | null = null;\nconst PS_MAX_BUFFER = 8 * 1024 * 1024;\nconst DAEMON_SHUTDOWN_POLL_ATTEMPTS = 10;\nconst DAEMON_SHUTDOWN_POLL_DELAY_MS = 100;\nconst DAEMON_SHUTDOWN_STATUS_TIMEOUT_MS = 250;\nconst DAEMON_STOP_TIMEOUT_MS = 1000;\nconst PROCESS_TERMINATE_GRACE_MS = 250;\nconst MIN_PORT = 1;\nconst MAX_PORT = 65535;\nconst SERVE_COMMAND_PATTERN = /(?:^|\\s)serve(?=\\s|$)/;\nconst SERVE_PORT_SPLIT_PATTERN = /(?:^|\\s)--port\\s+(\\d+)(?=\\s|$)/;\nconst SERVE_PORT_EQUALS_PATTERN = /(?:^|\\s)--port=(\\d+)(?=\\s|$)/;\nconst SERVE_STOP_PATTERN = /(?:^|\\s)--stop(?:\\s|$)/;\nconst CURRENT_UID = typeof process.getuid === \"function\" ? process.getuid() : null;\nconst CURRENT_EXECUTABLE = process.execPath;\nconst CURRENT_CLI_ENTRYPOINT = process.argv[1] ?? \"\";\n\nfunction resolveTokenCandidates(\n requestedToken: string | undefined,\n metadataToken: string | undefined,\n configToken: string | undefined\n): string[] {\n return Array.from(new Set([requestedToken, metadataToken, configToken].filter((token): token is string => (\n typeof token === \"string\" && token.trim().length > 0\n ))));\n}\n\nasync function resolveExistingDaemon(\n port: number,\n tokens: string[]\n): Promise<ExistingDaemon | null> {\n for (const token of tokens) {\n const status = await fetchDaemonStatus(port, token);\n if (status?.ok) {\n return { token, status };\n }\n }\n return null;\n}\n\nfunction isPositivePid(value: unknown): value is number {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0;\n}\n\nfunction parseServeArgs(rawArgs: string[]): ServeArgs {\n const parsed: ServeArgs = { stop: false };\n for (let i = 0; i < rawArgs.length; i += 1) {\n const arg = rawArgs[i];\n if (arg === \"--stop\") {\n parsed.stop = true;\n continue;\n }\n if (arg === \"--daemon\") {\n throw createUsageError(\"`serve --daemon` is not supported. Use `serve` for foreground mode, `daemon install` for autostart, or `status --daemon` to inspect the daemon.\");\n }\n if (arg === \"--port\") {\n const value = rawArgs[i + 1];\n if (!value) {\n throw createUsageError(\"Missing value for --port\");\n }\n parsed.port = parseNumberFlag(value, \"--port\", { min: MIN_PORT, max: MAX_PORT });\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--port=\")) {\n const value = arg.split(\"=\", 2)[1];\n if (!value) {\n throw createUsageError(\"Missing value for --port\");\n }\n parsed.port = parseNumberFlag(value, \"--port\", { min: MIN_PORT, max: MAX_PORT });\n continue;\n }\n if (arg === \"--token\") {\n const value = rawArgs[i + 1];\n if (!value) {\n throw createUsageError(\"Missing value for --token\");\n }\n parsed.token = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--token=\")) {\n const value = arg.split(\"=\", 2)[1];\n if (!value) {\n throw createUsageError(\"Missing value for --token\");\n }\n parsed.token = value;\n continue;\n }\n }\n return parsed;\n}\n\nfunction parseServeProcessSnapshot(line: string): ServeProcessSnapshot | null {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n return null;\n }\n const match = trimmed.match(/^(\\d+)(?:\\s+(\\d+))?\\s+(.*)$/);\n if (!match) {\n return null;\n }\n const pid = Number.parseInt(match[1] ?? \"\", 10);\n if (!Number.isInteger(pid) || pid <= 0) {\n return null;\n }\n const rawUid = match[2];\n const parsedUid = typeof rawUid === \"string\" && rawUid.length > 0\n ? Number.parseInt(rawUid, 10)\n : null;\n const command = (match[3] ?? \"\").trim();\n if (command.length === 0) {\n return null;\n }\n return {\n pid,\n uid: typeof parsedUid === \"number\" && Number.isInteger(parsedUid) && parsedUid >= 0 ? parsedUid : null,\n command\n };\n}\n\nfunction parseServeCommandPort(command: string): number | null {\n const rawPort = command.match(SERVE_PORT_EQUALS_PATTERN)?.[1]\n ?? command.match(SERVE_PORT_SPLIT_PATTERN)?.[1];\n if (!rawPort) {\n return null;\n }\n const port = Number.parseInt(rawPort, 10);\n return Number.isInteger(port) && port >= MIN_PORT && port <= MAX_PORT ? port : null;\n}\n\nfunction listServeProcessSnapshots(): ServeProcessSnapshot[] {\n const result = spawnSync(\"ps\", [\"-axww\", \"-o\", \"pid=,uid=,command=\"], {\n encoding: \"utf-8\",\n maxBuffer: PS_MAX_BUFFER\n });\n if ((result.status ?? 1) !== 0) {\n return [];\n }\n return String(result.stdout ?? \"\")\n .split(\"\\n\")\n .map((line) => parseServeProcessSnapshot(line))\n .filter((snapshot): snapshot is ServeProcessSnapshot => snapshot !== null);\n}\n\nfunction readServeProcessEntrypoint(command: string): string | null {\n const tokens = command.trim().split(/\\s+/u);\n const executable = tokens[0] ?? \"\";\n if (executable.length === 0) {\n return null;\n }\n return executable === CURRENT_EXECUTABLE ? (tokens[1] ?? null) : executable;\n}\n\nfunction isCurrentEntrypointServeProcess(snapshot: ServeProcessSnapshot): boolean {\n if (CURRENT_UID === null || snapshot.uid === null || snapshot.uid !== CURRENT_UID) {\n return false;\n }\n const entrypoint = readServeProcessEntrypoint(snapshot.command);\n if (!CURRENT_CLI_ENTRYPOINT || entrypoint !== CURRENT_CLI_ENTRYPOINT) {\n return false;\n }\n if (!SERVE_COMMAND_PATTERN.test(snapshot.command)) {\n return false;\n }\n return !SERVE_STOP_PATTERN.test(snapshot.command);\n}\n\nfunction isRequestedPortServeProcess(snapshot: ServeProcessSnapshot, requestedPort: number): boolean {\n return isCurrentEntrypointServeProcess(snapshot)\n && parseServeCommandPort(snapshot.command) === requestedPort;\n}\n\nasync function terminateProcess(pid: number): Promise<boolean> {\n if (!Number.isInteger(pid) || pid <= 0 || pid === process.pid || pid === process.ppid) {\n return false;\n }\n try {\n process.kill(pid, \"SIGTERM\");\n } catch {\n return false;\n }\n await new Promise((resolve) => setTimeout(resolve, PROCESS_TERMINATE_GRACE_MS));\n try {\n process.kill(pid, 0);\n } catch {\n return true;\n }\n try {\n process.kill(pid, \"SIGKILL\");\n } catch {\n // process may have exited after SIGTERM\n }\n return true;\n}\n\nasync function cleanupCompetingServeProcesses(requestedPort: number, keepPid?: number): Promise<number[]> {\n const candidates = listServeProcessSnapshots().filter((snapshot) => {\n if (!isRequestedPortServeProcess(snapshot, requestedPort)) {\n return false;\n }\n if (snapshot.pid === process.pid || snapshot.pid === process.ppid) {\n return false;\n }\n if (Number.isInteger(keepPid) && snapshot.pid === keepPid) {\n return false;\n }\n return true;\n });\n if (candidates.length === 0) {\n return [];\n }\n\n const clearedPids: number[] = [];\n for (const snapshot of candidates) {\n if (await terminateProcess(snapshot.pid)) {\n clearedPids.push(snapshot.pid);\n }\n }\n\n return clearedPids;\n}\n\nasync function terminateServeProcessByPid(pid?: number): Promise<boolean> {\n if (!isPositivePid(pid)) {\n return false;\n }\n const snapshot = listServeProcessSnapshots().find((item) => item.pid === pid);\n return snapshot ? isCurrentEntrypointServeProcess(snapshot) && await terminateProcess(pid) : false;\n}\n\nfunction isServeProcessRunningByPid(pid?: number): boolean {\n if (!isPositivePid(pid)) {\n return false;\n }\n return listServeProcessSnapshots().some((item) => {\n return item.pid === pid && isCurrentEntrypointServeProcess(item);\n });\n}\n\nfunction buildStaleStopMessage(metadata: NonNullable<ReturnType<typeof readDaemonMetadata>>): string {\n return buildDaemonFingerprintMismatchMessage({\n label: \"Daemon\",\n port: metadata.port,\n pid: metadata.pid\n });\n}\n\nfunction buildProtectedMismatchMessage(port: number, status: DaemonStatusPayload): string {\n return buildDaemonFingerprintMismatchMessage({ label: \"Daemon\", port, pid: status.pid });\n}\n\nasync function waitForDaemonShutdown(port: number, token: string): Promise<boolean> {\n for (let attempt = 0; attempt < DAEMON_SHUTDOWN_POLL_ATTEMPTS; attempt += 1) {\n const status = await fetchDaemonStatus(port, token, { timeoutMs: DAEMON_SHUTDOWN_STATUS_TIMEOUT_MS });\n if (!status?.ok) {\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, DAEMON_SHUTDOWN_POLL_DELAY_MS));\n }\n return false;\n}\n\nasync function waitForServeProcessExit(pid?: number): Promise<boolean> {\n if (!isPositivePid(pid)) {\n return true;\n }\n for (let attempt = 0; attempt < DAEMON_SHUTDOWN_POLL_ATTEMPTS; attempt += 1) {\n if (!isServeProcessRunningByPid(pid)) {\n return true;\n }\n await new Promise((resolve) => setTimeout(resolve, DAEMON_SHUTDOWN_POLL_DELAY_MS));\n }\n return false;\n}\n\nasync function confirmStoppedDaemon(port: number, token: string, pid?: number): Promise<boolean> {\n const statusStopped = await waitForDaemonShutdown(port, token);\n const processStopped = await waitForServeProcessExit(pid);\n return statusStopped && processStopped;\n}\n\nasync function stopMismatchedDaemon(\n port: number,\n daemon: ExistingDaemon\n): Promise<ExistingDaemonPreparationFailure | null> {\n let response: Response;\n try {\n response = await fetchWithTimeout(`http://127.0.0.1:${port}/stop`, {\n method: \"POST\",\n headers: createDaemonStopHeaders(daemon.token, \"serve.upgrade\")\n }, DAEMON_STOP_TIMEOUT_MS);\n } catch (error) {\n const status = await fetchDaemonStatus(port, daemon.token, {\n timeoutMs: DAEMON_SHUTDOWN_STATUS_TIMEOUT_MS\n });\n if (!status?.ok) {\n return null;\n }\n const message = error instanceof Error ? error.message : String(error);\n return { message: `Failed to stop mismatched daemon on 127.0.0.1:${port}: ${message}.` };\n }\n if (response.status === 409) {\n return {\n message: buildProtectedMismatchMessage(port, daemon.status),\n reason: DAEMON_FINGERPRINT_MISMATCH_REASON\n };\n }\n if (!response.ok) {\n return { message: `Failed to stop mismatched daemon on 127.0.0.1:${port}: stop returned ${response.status}.` };\n }\n if (await waitForDaemonShutdown(port, daemon.token)) {\n return null;\n }\n if (await terminateServeProcessByPid(daemon.status.pid)) {\n return null;\n }\n return { message: `Timed out waiting for mismatched daemon on 127.0.0.1:${port} to stop.` };\n}\n\nasync function prepareExistingDaemon(\n port: number,\n daemon: ExistingDaemon\n): Promise<ExistingDaemonPreparationFailure | null> {\n if (isCurrentDaemonFingerprint(daemon.status.fingerprint)) {\n return null;\n }\n return await stopMismatchedDaemon(port, daemon);\n}\n\nfunction buildAlreadyRunningResult(\n port: number,\n status: DaemonStatusPayload,\n fallbackRelayPort: number,\n clearedCount: number\n) {\n const relayPort = status.relay.port ?? fallbackRelayPort;\n const staleNote = clearedCount > 0 ? `\\nCleared ${clearedCount} stale daemon process${clearedCount === 1 ? \"\" : \"es\"}.` : \"\";\n return {\n success: true,\n message: `Daemon already running on 127.0.0.1:${port} (pid=${status.pid}, relay ${relayPort}).${staleNote}`,\n data: {\n port,\n pid: status.pid,\n relayPort,\n alreadyRunning: true,\n staleDaemonsCleared: clearedCount,\n relay: status.relay\n },\n exitCode: null\n };\n}\n\nexport async function runServe(args: ParsedArgs) {\n const serveArgs = parseServeArgs(args.rawArgs);\n\n if (serveArgs.stop) {\n const metadata = readDaemonMetadata();\n if (!metadata) {\n if (daemonHandle) {\n await daemonHandle.stop();\n daemonHandle = null;\n return { success: true, message: \"Daemon stopped.\" };\n }\n return { success: false, message: \"Daemon not running.\", exitCode: EXIT_DISCONNECTED };\n }\n\n try {\n const response = await fetchWithTimeout(`http://127.0.0.1:${metadata.port}/stop`, {\n method: \"POST\",\n headers: createDaemonStopHeaders(metadata.token, \"serve.stop\")\n });\n if (response.status === 409) {\n return {\n success: false,\n message: buildStaleStopMessage(metadata),\n reason: DAEMON_FINGERPRINT_MISMATCH_REASON,\n data: { reason: DAEMON_FINGERPRINT_MISMATCH_REASON },\n exitCode: EXIT_EXECUTION\n };\n }\n if (!response.ok) {\n throw new Error(`Stop failed (${response.status})`);\n }\n if (await confirmStoppedDaemon(metadata.port, metadata.token, metadata.pid)) {\n return { success: true, message: \"Daemon stopped.\" };\n }\n if (await terminateServeProcessByPid(metadata.pid)) {\n return { success: true, message: \"Daemon stopped.\" };\n }\n return {\n success: false,\n message: `Timed out waiting for daemon on 127.0.0.1:${metadata.port} to stop.`,\n exitCode: EXIT_EXECUTION\n };\n } catch (error) {\n if (await terminateServeProcessByPid(metadata.pid)) {\n return { success: true, message: \"Daemon stopped.\" };\n }\n const message = error instanceof Error ? error.message : String(error);\n return { success: false, message: `Failed to stop daemon: ${message}`, exitCode: EXIT_EXECUTION };\n }\n }\n\n const config = loadGlobalConfig();\n const requestedPort = serveArgs.port ?? config.daemonPort;\n const metadata = readDaemonMetadata();\n const metadataToken = metadata?.port === requestedPort ? metadata.token : undefined;\n const tokenCandidates = resolveTokenCandidates(serveArgs.token, metadataToken, config.daemonToken);\n const existingDaemon = await resolveExistingDaemon(requestedPort, tokenCandidates);\n const staleDaemonPids = new Set<number>();\n const staleCleared = () => staleDaemonPids.size;\n\n if (existingDaemon) {\n const mismatchFailure = await prepareExistingDaemon(requestedPort, existingDaemon);\n if (mismatchFailure) {\n return {\n success: false,\n message: mismatchFailure.message,\n ...(mismatchFailure.reason ? { reason: mismatchFailure.reason, data: { reason: mismatchFailure.reason } } : {}),\n exitCode: EXIT_EXECUTION\n };\n }\n if (isCurrentDaemonFingerprint(existingDaemon.status.fingerprint)) {\n for (const pid of await cleanupCompetingServeProcesses(requestedPort, existingDaemon.status.pid)) {\n staleDaemonPids.add(pid);\n }\n return buildAlreadyRunningResult(requestedPort, existingDaemon.status, config.relayPort, staleCleared());\n }\n }\n\n for (const pid of await cleanupCompetingServeProcesses(requestedPort)) {\n staleDaemonPids.add(pid);\n }\n\n let nativeStatus = getNativeStatusSnapshot();\n let nativeMessage: string | null = null;\n if (!nativeStatus.installed || nativeStatus.mismatch) {\n const discovered = discoverExtensionId();\n const extensionId = nativeStatus.expectedExtensionId ?? config.nativeExtensionId ?? discovered.extensionId ?? null;\n const usedDiscovery = nativeStatus.expectedExtensionSource !== \"config\" && Boolean(extensionId);\n const previousExtensionId = nativeStatus.extensionId;\n if (extensionId) {\n const installResult = installNativeHost(extensionId);\n if (installResult.success) {\n const suffix = usedDiscovery && discovered.matchedBy ? ` (auto-detected by ${discovered.matchedBy})` : \"\";\n nativeMessage = nativeStatus.mismatch && previousExtensionId\n ? `Native host reinstalled for extension ${extensionId} (replacing stale ${previousExtensionId}).${suffix}`\n : `${installResult.message ?? \"Native host installed.\"}${suffix}`;\n nativeStatus = getNativeStatusSnapshot();\n } else {\n nativeMessage = nativeStatus.mismatch\n ? `Native host reinstall skipped: ${installResult.message ?? \"unknown error\"}`\n : `Native host install skipped: ${installResult.message ?? \"unknown error\"}`;\n }\n } else if (nativeStatus.mismatch && previousExtensionId) {\n nativeMessage = `Native host targets stale extension ${previousExtensionId}, but no current extension id could be resolved for reinstall.`;\n } else {\n nativeMessage = \"Native host not installed. Set nativeExtensionId in opendevbrowser.jsonc to auto-install.\";\n }\n }\n\n let handle: Awaited<ReturnType<typeof startDaemon>> | null = null;\n let startError: unknown = null;\n for (let attempt = 0; attempt < 2; attempt += 1) {\n try {\n handle = await startDaemon({\n port: serveArgs.port,\n token: serveArgs.token,\n config\n });\n startError = null;\n break;\n } catch (error) {\n startError = error;\n const message = error instanceof Error ? error.message : String(error);\n if (!message.includes(\"EADDRINUSE\") && !message.includes(\"in use\")) {\n break;\n }\n const runningDaemon = await resolveExistingDaemon(requestedPort, tokenCandidates);\n if (runningDaemon) {\n const mismatchFailure = await prepareExistingDaemon(requestedPort, runningDaemon);\n if (mismatchFailure) {\n return {\n success: false,\n message: mismatchFailure.message,\n ...(mismatchFailure.reason ? { reason: mismatchFailure.reason, data: { reason: mismatchFailure.reason } } : {}),\n exitCode: EXIT_EXECUTION\n };\n }\n if (isCurrentDaemonFingerprint(runningDaemon.status.fingerprint)) {\n return buildAlreadyRunningResult(requestedPort, runningDaemon.status, config.relayPort, staleCleared());\n }\n }\n if (attempt === 0) {\n let clearedNewPid = false;\n for (const pid of await cleanupCompetingServeProcesses(requestedPort)) {\n const previousSize = staleDaemonPids.size;\n staleDaemonPids.add(pid);\n if (staleDaemonPids.size > previousSize) {\n clearedNewPid = true;\n }\n }\n if (clearedNewPid) {\n continue;\n }\n }\n break;\n }\n }\n\n if (!handle) {\n const message = startError instanceof Error ? startError.message : String(startError);\n if (message.includes(\"EADDRINUSE\") || message.includes(\"in use\")) {\n return {\n success: false,\n message: `Daemon port ${requestedPort} is already in use by another process. If this is an existing daemon, run \\`opendevbrowser status --daemon\\` or \\`opendevbrowser serve --stop\\`.`,\n exitCode: EXIT_EXECUTION\n };\n }\n return {\n success: false,\n message: `Failed to start daemon: ${message}`,\n exitCode: EXIT_EXECUTION\n };\n }\n\n daemonHandle = handle;\n const { state } = handle;\n\n const baseMessage = `Daemon running on 127.0.0.1:${state.port} (relay ${state.relayPort})`;\n const clearedCount = staleCleared();\n const staleNote = clearedCount > 0 ? `\\nCleared ${clearedCount} stale daemon process${clearedCount === 1 ? \"\" : \"es\"}.` : \"\";\n const message = nativeMessage\n ? `${baseMessage}\\n${nativeMessage}${staleNote}`\n : `${baseMessage}${staleNote}`;\n\n return {\n success: true,\n message,\n data: { port: state.port, pid: state.pid, relayPort: state.relayPort, native: nativeStatus, staleDaemonsCleared: clearedCount },\n exitCode: null\n };\n}\n"],"mappings":"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","names":["metadata","message"]}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveWorkflowOutputDirFlag
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-P5K3ZIPI.js";
|
|
4
4
|
import "./chunk-RJNI3BHT.js";
|
|
5
5
|
import {
|
|
6
6
|
parseNumberFlag
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SKFB5ICF.js";
|
|
8
8
|
import {
|
|
9
9
|
DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS
|
|
10
10
|
} from "./chunk-OW5HMYMI.js";
|
|
11
11
|
import {
|
|
12
12
|
callDaemon
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-XDLJE3RJ.js";
|
|
14
|
+
import "./chunk-ZOVMMQO6.js";
|
|
15
|
+
import "./chunk-HBK56JST.js";
|
|
16
16
|
import "./chunk-MX3NFLCE.js";
|
|
17
17
|
import "./chunk-ASMHEEKY.js";
|
|
18
18
|
import {
|
|
@@ -20,17 +20,17 @@ import {
|
|
|
20
20
|
} from "./chunk-37VSRUW4.js";
|
|
21
21
|
import {
|
|
22
22
|
createUsageError
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-7BNU6DFI.js";
|
|
24
|
+
import "./chunk-QMHKAFYX.js";
|
|
25
|
+
import "./chunk-BUVYTJZR.js";
|
|
26
26
|
import "./chunk-TBUCZX4A.js";
|
|
27
27
|
import "./chunk-Y2KL55OG.js";
|
|
28
28
|
import "./chunk-5SWZDVOW.js";
|
|
29
29
|
import {
|
|
30
30
|
isChallengeAutomationMode
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-RO3SMXF3.js";
|
|
32
32
|
import "./chunk-S5KZQJJI.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-2X4JFMKJ.js";
|
|
34
34
|
import "./chunk-WHQZBUNY.js";
|
|
35
35
|
import "./chunk-FUSXMW3G.js";
|
|
36
36
|
|
|
@@ -270,4 +270,4 @@ export {
|
|
|
270
270
|
__test__,
|
|
271
271
|
runShoppingCommand
|
|
272
272
|
};
|
|
273
|
-
//# sourceMappingURL=shopping-
|
|
273
|
+
//# sourceMappingURL=shopping-FJG7XB4Q.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createNoOpSkillRemovalResult
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZMNEWS7A.js";
|
|
4
4
|
import "./chunk-7THCPS52.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-BUVYTJZR.js";
|
|
6
6
|
import "./chunk-TBUCZX4A.js";
|
|
7
7
|
|
|
8
8
|
// src/cli/skill-lifecycle.ts
|
|
@@ -86,4 +86,4 @@ export {
|
|
|
86
86
|
buildUninstallCommandResult,
|
|
87
87
|
buildUpdateCommandResult
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=skill-lifecycle-
|
|
89
|
+
//# sourceMappingURL=skill-lifecycle-OWZYBPFS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundled-skill-directories.d.ts","sourceRoot":"","sources":["../../src/skills/bundled-skill-directories.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,uBAAuB,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"bundled-skill-directories.d.ts","sourceRoot":"","sources":["../../src/skills/bundled-skill-directories.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,uBAAuB,EAAE,qBAAqB,EAW1D,CAAC;AAMF,wBAAgB,2BAA2B,IAAI,qBAAqB,EAAE,CAErE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAEnF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
removeBundledSkillsForTargets,
|
|
9
9
|
syncBundledSkills,
|
|
10
10
|
syncBundledSkillsForTargets
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ZMNEWS7A.js";
|
|
12
12
|
import "./chunk-7THCPS52.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-BUVYTJZR.js";
|
|
14
14
|
import "./chunk-TBUCZX4A.js";
|
|
15
15
|
export {
|
|
16
16
|
createNoOpSkillRemovalResult,
|
|
@@ -23,4 +23,4 @@ export {
|
|
|
23
23
|
syncBundledSkills,
|
|
24
24
|
syncBundledSkillsForTargets
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=skills-
|
|
26
|
+
//# sourceMappingURL=skills-KHMRNOE4.js.map
|
|
@@ -2,28 +2,28 @@ import "./chunk-RJNI3BHT.js";
|
|
|
2
2
|
import {
|
|
3
3
|
parseNumberFlag,
|
|
4
4
|
parseOptionalStringFlag
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SKFB5ICF.js";
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_SNAPSHOT_TRANSPORT_TIMEOUT_MS
|
|
8
8
|
} from "./chunk-OW5HMYMI.js";
|
|
9
9
|
import {
|
|
10
10
|
callDaemon
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-XDLJE3RJ.js";
|
|
12
|
+
import "./chunk-ZOVMMQO6.js";
|
|
13
|
+
import "./chunk-HBK56JST.js";
|
|
14
14
|
import "./chunk-MX3NFLCE.js";
|
|
15
15
|
import "./chunk-ASMHEEKY.js";
|
|
16
16
|
import {
|
|
17
17
|
createUsageError
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-7BNU6DFI.js";
|
|
19
|
+
import "./chunk-QMHKAFYX.js";
|
|
20
|
+
import "./chunk-BUVYTJZR.js";
|
|
21
21
|
import "./chunk-TBUCZX4A.js";
|
|
22
22
|
import "./chunk-Y2KL55OG.js";
|
|
23
23
|
import "./chunk-5SWZDVOW.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-RO3SMXF3.js";
|
|
25
25
|
import "./chunk-S5KZQJJI.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-2X4JFMKJ.js";
|
|
27
27
|
import "./chunk-WHQZBUNY.js";
|
|
28
28
|
import "./chunk-FUSXMW3G.js";
|
|
29
29
|
|
|
@@ -110,4 +110,4 @@ async function runSnapshot(args) {
|
|
|
110
110
|
export {
|
|
111
111
|
runSnapshot
|
|
112
112
|
};
|
|
113
|
-
//# sourceMappingURL=snapshot-
|
|
113
|
+
//# sourceMappingURL=snapshot-W7RKVZEI.js.map
|
|
@@ -2,29 +2,31 @@ import "./chunk-RJNI3BHT.js";
|
|
|
2
2
|
import {
|
|
3
3
|
assessNativeStatus,
|
|
4
4
|
getNativeStatusSnapshot
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-L3YNUGYF.js";
|
|
6
6
|
import {
|
|
7
7
|
callDaemon
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XDLJE3RJ.js";
|
|
9
9
|
import {
|
|
10
|
+
DAEMON_FINGERPRINT_MISMATCH_REASON,
|
|
10
11
|
DEFAULT_DAEMON_STATUS_FETCH_OPTIONS,
|
|
12
|
+
buildDaemonFingerprintMismatchStatusGuidance,
|
|
11
13
|
fetchDaemonStatusFromMetadata
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-ZOVMMQO6.js";
|
|
15
|
+
import "./chunk-HBK56JST.js";
|
|
14
16
|
import "./chunk-MX3NFLCE.js";
|
|
15
17
|
import "./chunk-ASMHEEKY.js";
|
|
16
18
|
import {
|
|
17
19
|
createDisconnectedError,
|
|
18
20
|
createUsageError
|
|
19
|
-
} from "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-7BNU6DFI.js";
|
|
22
|
+
import "./chunk-QMHKAFYX.js";
|
|
23
|
+
import "./chunk-BUVYTJZR.js";
|
|
22
24
|
import "./chunk-TBUCZX4A.js";
|
|
23
25
|
import "./chunk-Y2KL55OG.js";
|
|
24
26
|
import "./chunk-5SWZDVOW.js";
|
|
25
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-RO3SMXF3.js";
|
|
26
28
|
import "./chunk-S5KZQJJI.js";
|
|
27
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-2X4JFMKJ.js";
|
|
28
30
|
import "./chunk-WHQZBUNY.js";
|
|
29
31
|
import "./chunk-FUSXMW3G.js";
|
|
30
32
|
|
|
@@ -103,13 +105,15 @@ async function runStatus(args) {
|
|
|
103
105
|
}
|
|
104
106
|
const nativeStatus = getNativeStatusSnapshot();
|
|
105
107
|
const nativeAssessment = assessNativeStatus(nativeStatus);
|
|
106
|
-
const
|
|
108
|
+
const daemonFingerprintMismatch = daemonStatus.fingerprintCurrent === false;
|
|
109
|
+
const fingerprintLine = daemonFingerprintMismatch ? "Daemon fingerprint: mismatch with current build" : "Daemon fingerprint: current";
|
|
107
110
|
const baseLines = [
|
|
108
111
|
`Daemon OK (pid=${daemonStatus.pid})`,
|
|
109
112
|
fingerprintLine,
|
|
110
113
|
`Relay: port=${daemonStatus.relay.port ?? "n/a"} ext=${daemonStatus.relay.extensionConnected ? "on" : "off"} handshake=${daemonStatus.relay.extensionHandshakeComplete ? "on" : "off"} cdp=${daemonStatus.relay.cdpConnected ? "on" : "off"} annotate=${daemonStatus.relay.annotationConnected ? "on" : "off"} ops=${daemonStatus.relay.opsConnected ? "on" : "off"} canvas=${daemonStatus.relay.canvasConnected ? "on" : "off"} pairing=${daemonStatus.relay.pairingRequired ? "on" : "off"} health=${daemonStatus.relay.health?.reason ?? "n/a"}`,
|
|
111
114
|
`Native: ${nativeAssessment.summary}`,
|
|
112
115
|
daemonStatus.relay.lastHandshakeError ? `Relay last handshake error: ${daemonStatus.relay.lastHandshakeError.code} (${daemonStatus.relay.lastHandshakeError.message})` : "Relay last handshake error: none",
|
|
116
|
+
...daemonFingerprintMismatch ? [buildDaemonFingerprintMismatchStatusGuidance()] : [],
|
|
113
117
|
"Legend: ext=extension websocket, handshake=extension handshake, cdp=active /cdp client, annotate=annotation channel, ops=ops clients, canvas=canvas clients, pairing=token required, health=relay status"
|
|
114
118
|
];
|
|
115
119
|
if (!nativeAssessment.success) {
|
|
@@ -123,10 +127,14 @@ async function runStatus(args) {
|
|
|
123
127
|
return {
|
|
124
128
|
success: true,
|
|
125
129
|
message,
|
|
126
|
-
data: {
|
|
130
|
+
data: {
|
|
131
|
+
...daemonStatus,
|
|
132
|
+
...daemonFingerprintMismatch ? { reason: DAEMON_FINGERPRINT_MISMATCH_REASON } : {},
|
|
133
|
+
native: nativeStatus
|
|
134
|
+
}
|
|
127
135
|
};
|
|
128
136
|
}
|
|
129
137
|
export {
|
|
130
138
|
runStatus
|
|
131
139
|
};
|
|
132
|
-
//# sourceMappingURL=status-
|
|
140
|
+
//# sourceMappingURL=status-KHYCLGUD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/session/status.ts","../src/cli/commands/status.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\n\nfunction parseStatusArgs(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 runSessionStatus(args: ParsedArgs) {\n const { sessionId } = parseStatusArgs(args.rawArgs);\n if (!sessionId) {\n throw createUsageError(\"Missing --session-id\");\n }\n const result = await callDaemon(\"session.status\", { sessionId });\n return { success: true, message: `Session status: ${sessionId}`, data: result };\n}\n","import type { ParsedArgs } from \"../args\";\nimport { createDisconnectedError, createUsageError } from \"../errors\";\nimport { fetchDaemonStatusFromMetadata } from \"../daemon-status\";\nimport { DEFAULT_DAEMON_STATUS_FETCH_OPTIONS } from \"../daemon-status-policy\";\nimport {\n buildDaemonFingerprintMismatchStatusGuidance,\n DAEMON_FINGERPRINT_MISMATCH_REASON\n} from \"../daemon-mismatch\";\nimport { runSessionStatus } from \"./session/status\";\nimport { assessNativeStatus, getNativeStatusSnapshot } from \"./native\";\n\ntype StatusArgs = {\n sessionId?: string;\n daemon: boolean;\n};\n\nconst parseStatusArgs = (rawArgs: string[]): StatusArgs => {\n const parsed: StatusArgs = { daemon: false };\n for (let i = 0; i < rawArgs.length; i += 1) {\n const arg = rawArgs[i];\n if (arg === \"--daemon\") {\n parsed.daemon = true;\n continue;\n }\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 runStatus(args: ParsedArgs) {\n const { sessionId, daemon } = parseStatusArgs(args.rawArgs);\n if (sessionId && daemon) {\n throw createUsageError(\"Use --session-id or --daemon, not both.\");\n }\n\n if (sessionId) {\n return runSessionStatus(args);\n }\n\n if (!daemon && args.transport === \"native\") {\n const nativeStatus = getNativeStatusSnapshot();\n const assessment = assessNativeStatus(nativeStatus);\n return {\n success: assessment.success,\n message: assessment.message,\n data: nativeStatus,\n exitCode: assessment.exitCode ?? undefined\n };\n }\n\n const daemonStatus = await fetchDaemonStatusFromMetadata(undefined, DEFAULT_DAEMON_STATUS_FETCH_OPTIONS);\n if (!daemonStatus) {\n throw createDisconnectedError(\"Daemon not running. Start with `opendevbrowser serve`.\");\n }\n\n const nativeStatus = getNativeStatusSnapshot();\n const nativeAssessment = assessNativeStatus(nativeStatus);\n const daemonFingerprintMismatch = daemonStatus.fingerprintCurrent === false;\n const fingerprintLine = daemonFingerprintMismatch\n ? \"Daemon fingerprint: mismatch with current build\"\n : \"Daemon fingerprint: current\";\n\n const baseLines = [\n `Daemon OK (pid=${daemonStatus.pid})`,\n fingerprintLine,\n `Relay: port=${daemonStatus.relay.port ?? \"n/a\"} ext=${daemonStatus.relay.extensionConnected ? \"on\" : \"off\"} ` +\n `handshake=${daemonStatus.relay.extensionHandshakeComplete ? \"on\" : \"off\"} ` +\n `cdp=${daemonStatus.relay.cdpConnected ? \"on\" : \"off\"} ` +\n `annotate=${daemonStatus.relay.annotationConnected ? \"on\" : \"off\"} ` +\n `ops=${daemonStatus.relay.opsConnected ? \"on\" : \"off\"} ` +\n `canvas=${daemonStatus.relay.canvasConnected ? \"on\" : \"off\"} ` +\n `pairing=${daemonStatus.relay.pairingRequired ? \"on\" : \"off\"} ` +\n `health=${daemonStatus.relay.health?.reason ?? \"n/a\"}`,\n `Native: ${nativeAssessment.summary}`,\n daemonStatus.relay.lastHandshakeError\n ? `Relay last handshake error: ${daemonStatus.relay.lastHandshakeError.code} (${daemonStatus.relay.lastHandshakeError.message})`\n : \"Relay last handshake error: none\",\n ...(daemonFingerprintMismatch ? [buildDaemonFingerprintMismatchStatusGuidance()] : []),\n \"Legend: ext=extension websocket, handshake=extension handshake, cdp=active /cdp client, annotate=annotation channel, ops=ops clients, canvas=canvas clients, pairing=token required, health=relay status\"\n ];\n if (!nativeAssessment.success) {\n baseLines.splice(4, 0, `Native detail: ${nativeAssessment.message}`);\n }\n const baseMessage = baseLines.join(\"\\n\");\n\n const message = daemon || args.outputFormat !== \"text\"\n ? baseMessage\n : [\n \"Warning: `status` defaults to daemon status. Use --daemon explicitly or --session-id for session status.\",\n baseMessage\n ].join(\"\\n\");\n\n return {\n success: true,\n message,\n data: {\n ...daemonStatus,\n ...(daemonFingerprintMismatch ? { reason: DAEMON_FINGERPRINT_MISMATCH_REASON } : {}),\n native: nativeStatus\n }\n };\n}\n"],"mappings":"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","names":["parseStatusArgs","nativeStatus"]}
|
|
@@ -2,24 +2,24 @@ import {
|
|
|
2
2
|
callDesktopCommand,
|
|
3
3
|
desktopCommandResult,
|
|
4
4
|
parseDesktopTimeoutArgs
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-BUXFIY2P.js";
|
|
6
6
|
import "./chunk-RJNI3BHT.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-SKFB5ICF.js";
|
|
8
8
|
import "./chunk-OW5HMYMI.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-XDLJE3RJ.js";
|
|
10
|
+
import "./chunk-ZOVMMQO6.js";
|
|
11
|
+
import "./chunk-HBK56JST.js";
|
|
12
12
|
import "./chunk-MX3NFLCE.js";
|
|
13
13
|
import "./chunk-ASMHEEKY.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-7BNU6DFI.js";
|
|
15
|
+
import "./chunk-QMHKAFYX.js";
|
|
16
|
+
import "./chunk-BUVYTJZR.js";
|
|
17
17
|
import "./chunk-TBUCZX4A.js";
|
|
18
18
|
import "./chunk-Y2KL55OG.js";
|
|
19
19
|
import "./chunk-5SWZDVOW.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-RO3SMXF3.js";
|
|
21
21
|
import "./chunk-S5KZQJJI.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-2X4JFMKJ.js";
|
|
23
23
|
import "./chunk-WHQZBUNY.js";
|
|
24
24
|
import "./chunk-FUSXMW3G.js";
|
|
25
25
|
|
|
@@ -32,4 +32,4 @@ async function runDesktopStatus(args) {
|
|
|
32
32
|
export {
|
|
33
33
|
runDesktopStatus
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=status-
|
|
35
|
+
//# sourceMappingURL=status-R4EV4TWO.js.map
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseOptionalChallengeAutomationMode
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PIFHXKV4.js";
|
|
4
4
|
import "./chunk-RJNI3BHT.js";
|
|
5
5
|
import {
|
|
6
6
|
parseNumberFlag,
|
|
7
7
|
parseOptionalStringFlag
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SKFB5ICF.js";
|
|
9
9
|
import {
|
|
10
10
|
DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
|
|
11
11
|
} from "./chunk-OW5HMYMI.js";
|
|
12
12
|
import {
|
|
13
13
|
callDaemon
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-XDLJE3RJ.js";
|
|
15
|
+
import "./chunk-ZOVMMQO6.js";
|
|
16
|
+
import "./chunk-HBK56JST.js";
|
|
17
17
|
import "./chunk-MX3NFLCE.js";
|
|
18
18
|
import "./chunk-ASMHEEKY.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-7BNU6DFI.js";
|
|
20
|
+
import "./chunk-QMHKAFYX.js";
|
|
21
|
+
import "./chunk-BUVYTJZR.js";
|
|
22
22
|
import "./chunk-TBUCZX4A.js";
|
|
23
23
|
import "./chunk-Y2KL55OG.js";
|
|
24
24
|
import "./chunk-5SWZDVOW.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-RO3SMXF3.js";
|
|
26
26
|
import "./chunk-S5KZQJJI.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-2X4JFMKJ.js";
|
|
28
28
|
import "./chunk-WHQZBUNY.js";
|
|
29
29
|
import "./chunk-FUSXMW3G.js";
|
|
30
30
|
|
|
@@ -54,4 +54,4 @@ async function runStatusCapabilities(args) {
|
|
|
54
54
|
export {
|
|
55
55
|
runStatusCapabilities
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=status-capabilities-
|
|
57
|
+
//# sourceMappingURL=status-capabilities-XD3RGLKF.js.map
|
|
@@ -2,25 +2,25 @@ import "./chunk-RJNI3BHT.js";
|
|
|
2
2
|
import {
|
|
3
3
|
parseNumberFlag,
|
|
4
4
|
parseOptionalStringFlag
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SKFB5ICF.js";
|
|
6
6
|
import {
|
|
7
7
|
callDaemon
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-XDLJE3RJ.js";
|
|
9
|
+
import "./chunk-ZOVMMQO6.js";
|
|
10
|
+
import "./chunk-HBK56JST.js";
|
|
11
11
|
import "./chunk-MX3NFLCE.js";
|
|
12
12
|
import "./chunk-ASMHEEKY.js";
|
|
13
13
|
import {
|
|
14
14
|
createUsageError
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-7BNU6DFI.js";
|
|
16
|
+
import "./chunk-QMHKAFYX.js";
|
|
17
|
+
import "./chunk-BUVYTJZR.js";
|
|
18
18
|
import "./chunk-TBUCZX4A.js";
|
|
19
19
|
import "./chunk-Y2KL55OG.js";
|
|
20
20
|
import "./chunk-5SWZDVOW.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-RO3SMXF3.js";
|
|
22
22
|
import "./chunk-S5KZQJJI.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-2X4JFMKJ.js";
|
|
24
24
|
import "./chunk-WHQZBUNY.js";
|
|
25
25
|
import "./chunk-FUSXMW3G.js";
|
|
26
26
|
|
|
@@ -81,4 +81,4 @@ async function runDomText(args) {
|
|
|
81
81
|
export {
|
|
82
82
|
runDomText
|
|
83
83
|
};
|
|
84
|
-
//# sourceMappingURL=text-
|
|
84
|
+
//# sourceMappingURL=text-TANLFZ4O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspiredesign_run.d.ts","sourceRoot":"","sources":["../../src/tools/inspiredesign_run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"inspiredesign_run.d.ts","sourceRoot":"","sources":["../../src/tools/inspiredesign_run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAmBvC,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAuEzE"}
|