opendevbrowser 0.0.28 → 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/ops-client.d.ts +1 -0
- package/dist/browser/ops-client.d.ts.map +1 -1
- 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-T3VVHJTK.js → chunk-S6S2UP6U.js} +1074 -1459
- package/dist/chunk-S6S2UP6U.js.map +1 -0
- package/dist/{chunk-I5ZCOZZV.js → chunk-SXAGSEKZ.js} +1202 -9561
- 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.map +1 -1
- package/dist/cli/commands/macro-resolve.d.ts +4 -1
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/product-video.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/shopping.d.ts.map +1 -1
- package/dist/cli/commands/workflow-output.d.ts +2 -0
- package/dist/cli/commands/workflow-output.d.ts.map +1 -0
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/index.js +204 -8123
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/postinstall-skill-sync.js +2 -1
- package/dist/cli/installers/postinstall-skill-sync.js.map +1 -1
- package/dist/cli/remote-relay.d.ts.map +1 -1
- package/dist/click-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 +68 -34
- 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-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 +3 -1
- package/dist/macros/execute-runtime.d.ts.map +1 -1
- package/dist/macros/execute.d.ts +2 -0
- package/dist/macros/execute.d.ts.map +1 -1
- package/dist/native-UPLVQ2SG.js +22 -0
- package/dist/native-UPLVQ2SG.js.map +1 -0
- package/dist/network-poll-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 +68 -34
- 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/community/index.d.ts.map +1 -1
- package/dist/providers/constraint.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/research-compiler.d.ts +1 -1
- package/dist/providers/research-compiler.d.ts.map +1 -1
- package/dist/providers/research-executor.d.ts.map +1 -1
- package/dist/providers/runtime-factory.d.ts.map +1 -1
- package/dist/providers/shared/traversal-url.d.ts +3 -0
- package/dist/providers/shared/traversal-url.d.ts.map +1 -1
- package/dist/providers/shopping/index.d.ts.map +1 -1
- package/dist/providers/social/search-quality.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +4 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-QF2RFB4J.js → providers-4YY2BLXG.js} +19 -14
- package/dist/providers-4YY2BLXG.js.map +1 -0
- package/dist/public-surface/generated-manifest.d.ts +2 -2
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +2 -2
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/relay/protocol.d.ts +3 -1
- package/dist/relay/protocol.d.ts.map +1 -1
- package/dist/relay/relay-server.d.ts +6 -0
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/research-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/macro_resolve.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 +8 -6
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +1 -1
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +3 -2
- package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +39 -2
- package/skills/opendevbrowser-research/SKILL.md +64 -12
- package/skills/opendevbrowser-research/artifacts/research-workflows.md +56 -19
- package/skills/opendevbrowser-research/assets/templates/compact.md +31 -5
- package/skills/opendevbrowser-research/assets/templates/context.json +52 -1
- package/skills/opendevbrowser-research/assets/templates/report.md +57 -4
- package/skills/opendevbrowser-research/examples/sample-input.json +1 -1
- package/skills/opendevbrowser-research/examples/sample-output.md +27 -2
- package/skills/opendevbrowser-research/scripts/run-research.sh +2 -6
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +115 -1
- package/dist/chunk-I5ZCOZZV.js.map +0 -1
- package/dist/chunk-QVWOPIZJ.js.map +0 -1
- package/dist/chunk-T3VVHJTK.js.map +0 -1
- /package/dist/{providers-QF2RFB4J.js.map → chunk-RJNI3BHT.js.map} +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseNumberFlag
|
|
3
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
4
|
+
import {
|
|
5
|
+
DaemonClient
|
|
6
|
+
} from "./chunk-OYNLAZQU.js";
|
|
7
|
+
import "./chunk-LBPELU7L.js";
|
|
8
|
+
import "./chunk-SXAGSEKZ.js";
|
|
9
|
+
import "./chunk-MX3NFLCE.js";
|
|
10
|
+
import "./chunk-ASMHEEKY.js";
|
|
11
|
+
import {
|
|
12
|
+
writeOutput
|
|
13
|
+
} from "./chunk-7GVOUZMQ.js";
|
|
14
|
+
import {
|
|
15
|
+
createUsageError
|
|
16
|
+
} from "./chunk-IPE7TF2P.js";
|
|
17
|
+
import "./chunk-STGGGVYT.js";
|
|
18
|
+
import "./chunk-3ILXPKSJ.js";
|
|
19
|
+
import "./chunk-TBUCZX4A.js";
|
|
20
|
+
import "./chunk-Y2KL55OG.js";
|
|
21
|
+
import "./chunk-5SWZDVOW.js";
|
|
22
|
+
import "./chunk-S6S2UP6U.js";
|
|
23
|
+
import "./chunk-S5KZQJJI.js";
|
|
24
|
+
import "./chunk-KZ2IXVQT.js";
|
|
25
|
+
import "./chunk-WHQZBUNY.js";
|
|
26
|
+
import "./chunk-FUSXMW3G.js";
|
|
27
|
+
|
|
28
|
+
// src/cli/commands/canvas.ts
|
|
29
|
+
import { readFileSync } from "fs";
|
|
30
|
+
var DEFAULT_FEEDBACK_STREAM_TIMEOUT_MS = 3e4;
|
|
31
|
+
var isRecord = (value) => {
|
|
32
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
33
|
+
};
|
|
34
|
+
var asString = (value) => {
|
|
35
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
36
|
+
};
|
|
37
|
+
var asNumber = (value) => {
|
|
38
|
+
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
39
|
+
};
|
|
40
|
+
var asRecordArray = (value) => {
|
|
41
|
+
return Array.isArray(value) ? value.filter(isRecord) : [];
|
|
42
|
+
};
|
|
43
|
+
var toFeedbackSubscribeResult = (value) => {
|
|
44
|
+
if (!isRecord(value)) {
|
|
45
|
+
return {
|
|
46
|
+
subscriptionId: null,
|
|
47
|
+
initialItems: [],
|
|
48
|
+
cursor: null,
|
|
49
|
+
heartbeatMs: 15e3
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
subscriptionId: asString(value.subscriptionId),
|
|
54
|
+
initialItems: asRecordArray(value.initialItems),
|
|
55
|
+
cursor: asString(value.cursor),
|
|
56
|
+
heartbeatMs: Math.max(asNumber(value.heartbeatMs) ?? 15e3, 1e3)
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
async function streamFeedbackViaSubscription(client, args, canvasArgs, params, initial) {
|
|
60
|
+
const outputOptions = { format: args.outputFormat, quiet: args.quiet };
|
|
61
|
+
writeOutput({
|
|
62
|
+
success: true,
|
|
63
|
+
message: `Canvas executed: ${canvasArgs.command}`,
|
|
64
|
+
data: {
|
|
65
|
+
command: canvasArgs.command,
|
|
66
|
+
result: initial
|
|
67
|
+
}
|
|
68
|
+
}, outputOptions);
|
|
69
|
+
const initialResult = toFeedbackSubscribeResult(initial);
|
|
70
|
+
const subscriptionId = initialResult.subscriptionId;
|
|
71
|
+
const heartbeatMs = initialResult.heartbeatMs;
|
|
72
|
+
const streamTimeoutMs = canvasArgs.timeoutMs ?? DEFAULT_FEEDBACK_STREAM_TIMEOUT_MS;
|
|
73
|
+
const deadline = Date.now() + streamTimeoutMs;
|
|
74
|
+
let cursor = initialResult.cursor;
|
|
75
|
+
for (const item of initialResult.initialItems) {
|
|
76
|
+
const itemCursor = asString(item.cursor);
|
|
77
|
+
if (itemCursor) {
|
|
78
|
+
cursor = itemCursor;
|
|
79
|
+
}
|
|
80
|
+
writeOutput({
|
|
81
|
+
success: true,
|
|
82
|
+
message: `Canvas feedback: ${canvasArgs.command}`,
|
|
83
|
+
data: {
|
|
84
|
+
command: canvasArgs.command,
|
|
85
|
+
streamEvent: {
|
|
86
|
+
eventType: "feedback.item",
|
|
87
|
+
item
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}, outputOptions);
|
|
91
|
+
}
|
|
92
|
+
while (subscriptionId && Date.now() < deadline) {
|
|
93
|
+
const remainingMs = deadline - Date.now();
|
|
94
|
+
if (remainingMs <= 0) {
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
const nextEvent = await client.call(
|
|
98
|
+
"canvas.execute",
|
|
99
|
+
{
|
|
100
|
+
command: "canvas.feedback.next",
|
|
101
|
+
params: {
|
|
102
|
+
...params,
|
|
103
|
+
subscriptionId,
|
|
104
|
+
timeoutMs: Math.min(heartbeatMs, remainingMs)
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
{ timeoutMs: remainingMs }
|
|
108
|
+
);
|
|
109
|
+
if (isRecord(nextEvent)) {
|
|
110
|
+
if (nextEvent.eventType === "feedback.item" && isRecord(nextEvent.item)) {
|
|
111
|
+
const itemCursor = asString(nextEvent.item.cursor);
|
|
112
|
+
if (itemCursor) {
|
|
113
|
+
cursor = itemCursor;
|
|
114
|
+
}
|
|
115
|
+
} else if (typeof nextEvent.cursor === "string") {
|
|
116
|
+
cursor = nextEvent.cursor;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
writeOutput({
|
|
120
|
+
success: true,
|
|
121
|
+
message: `Canvas feedback: ${canvasArgs.command}`,
|
|
122
|
+
data: {
|
|
123
|
+
command: canvasArgs.command,
|
|
124
|
+
streamEvent: nextEvent
|
|
125
|
+
}
|
|
126
|
+
}, outputOptions);
|
|
127
|
+
if (isRecord(nextEvent) && nextEvent.eventType === "feedback.complete") {
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (Date.now() >= deadline) {
|
|
132
|
+
writeOutput({
|
|
133
|
+
success: true,
|
|
134
|
+
message: `Canvas feedback: ${canvasArgs.command}`,
|
|
135
|
+
data: {
|
|
136
|
+
command: canvasArgs.command,
|
|
137
|
+
streamEvent: {
|
|
138
|
+
eventType: "feedback.complete",
|
|
139
|
+
cursor: cursor ?? null,
|
|
140
|
+
reason: "timeout"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}, outputOptions);
|
|
144
|
+
}
|
|
145
|
+
if (subscriptionId) {
|
|
146
|
+
await client.call(
|
|
147
|
+
"canvas.execute",
|
|
148
|
+
{
|
|
149
|
+
command: "canvas.feedback.unsubscribe",
|
|
150
|
+
params: {
|
|
151
|
+
...params,
|
|
152
|
+
subscriptionId
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
).catch(() => {
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
var requireValue = (value, flag) => {
|
|
160
|
+
if (!value) throw createUsageError(`Missing value for ${flag}`);
|
|
161
|
+
return value;
|
|
162
|
+
};
|
|
163
|
+
var parseJsonObject = (raw, source) => {
|
|
164
|
+
let parsed;
|
|
165
|
+
try {
|
|
166
|
+
parsed = JSON.parse(raw);
|
|
167
|
+
} catch (error) {
|
|
168
|
+
const message = error instanceof Error ? error.message : "Invalid JSON";
|
|
169
|
+
throw createUsageError(`Invalid JSON from ${source}: ${message}`);
|
|
170
|
+
}
|
|
171
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
172
|
+
throw createUsageError(`Invalid JSON from ${source}: expected object`);
|
|
173
|
+
}
|
|
174
|
+
return parsed;
|
|
175
|
+
};
|
|
176
|
+
var parseCanvasArgs = (rawArgs) => {
|
|
177
|
+
const parsed = {};
|
|
178
|
+
for (let i = 0; i < rawArgs.length; i += 1) {
|
|
179
|
+
const arg = rawArgs[i];
|
|
180
|
+
if (arg === "--command") {
|
|
181
|
+
parsed.command = requireValue(rawArgs[i + 1], "--command");
|
|
182
|
+
i += 1;
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
if (arg?.startsWith("--command=")) {
|
|
186
|
+
parsed.command = requireValue(arg.split("=", 2)[1], "--command");
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
if (arg === "--params") {
|
|
190
|
+
parsed.params = requireValue(rawArgs[i + 1], "--params");
|
|
191
|
+
i += 1;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (arg?.startsWith("--params=")) {
|
|
195
|
+
parsed.params = requireValue(arg.split("=", 2)[1], "--params");
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (arg === "--params-file") {
|
|
199
|
+
parsed.paramsFile = requireValue(rawArgs[i + 1], "--params-file");
|
|
200
|
+
i += 1;
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (arg?.startsWith("--params-file=")) {
|
|
204
|
+
parsed.paramsFile = requireValue(arg.split("=", 2)[1], "--params-file");
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (arg === "--timeout-ms") {
|
|
208
|
+
parsed.timeoutMs = parseNumberFlag(requireValue(rawArgs[i + 1], "--timeout-ms"), "--timeout-ms", { min: 1 });
|
|
209
|
+
i += 1;
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (arg?.startsWith("--timeout-ms=")) {
|
|
213
|
+
parsed.timeoutMs = parseNumberFlag(requireValue(arg.split("=", 2)[1], "--timeout-ms"), "--timeout-ms", { min: 1 });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return parsed;
|
|
217
|
+
};
|
|
218
|
+
var resolveCanvasParams = (canvasArgs) => {
|
|
219
|
+
const hasParams = typeof canvasArgs.params === "string";
|
|
220
|
+
const hasParamsFile = typeof canvasArgs.paramsFile === "string";
|
|
221
|
+
if (Number(hasParams) + Number(hasParamsFile) > 1) {
|
|
222
|
+
throw createUsageError("Provide only one params source: --params or --params-file.");
|
|
223
|
+
}
|
|
224
|
+
if (hasParams) {
|
|
225
|
+
return parseJsonObject(canvasArgs.params ?? "", "--params");
|
|
226
|
+
}
|
|
227
|
+
if (hasParamsFile) {
|
|
228
|
+
let raw = "";
|
|
229
|
+
try {
|
|
230
|
+
raw = readFileSync(canvasArgs.paramsFile ?? "", "utf8");
|
|
231
|
+
} catch (error) {
|
|
232
|
+
const message = error instanceof Error ? error.message : "Unable to read file";
|
|
233
|
+
throw createUsageError(`Invalid --params-file: ${message}`);
|
|
234
|
+
}
|
|
235
|
+
if (!raw.trim()) {
|
|
236
|
+
throw createUsageError("Invalid JSON from --params-file: empty input");
|
|
237
|
+
}
|
|
238
|
+
return parseJsonObject(raw, "--params-file");
|
|
239
|
+
}
|
|
240
|
+
return {};
|
|
241
|
+
};
|
|
242
|
+
var attachRepoRoot = (params) => {
|
|
243
|
+
if (typeof params.repoRoot === "string" && params.repoRoot.trim().length > 0) {
|
|
244
|
+
return params;
|
|
245
|
+
}
|
|
246
|
+
return {
|
|
247
|
+
...params,
|
|
248
|
+
repoRoot: process.cwd()
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
async function runCanvas(args) {
|
|
252
|
+
const canvasArgs = parseCanvasArgs(args.rawArgs);
|
|
253
|
+
if (!canvasArgs.command) {
|
|
254
|
+
throw createUsageError("Usage: opendevbrowser canvas --command <canvas.command> [--params <json> | --params-file <path>]");
|
|
255
|
+
}
|
|
256
|
+
if (!canvasArgs.command.startsWith("canvas.")) {
|
|
257
|
+
throw createUsageError("Canvas command names must start with 'canvas.'.");
|
|
258
|
+
}
|
|
259
|
+
const client = new DaemonClient({ autoRenew: true });
|
|
260
|
+
try {
|
|
261
|
+
const params = attachRepoRoot(resolveCanvasParams(canvasArgs));
|
|
262
|
+
const result = await client.call(
|
|
263
|
+
"canvas.execute",
|
|
264
|
+
{
|
|
265
|
+
command: canvasArgs.command,
|
|
266
|
+
params
|
|
267
|
+
},
|
|
268
|
+
{ timeoutMs: canvasArgs.timeoutMs }
|
|
269
|
+
);
|
|
270
|
+
if (canvasArgs.command === "canvas.feedback.subscribe" && args.outputFormat === "stream-json" && isRecord(result)) {
|
|
271
|
+
await streamFeedbackViaSubscription(client, args, canvasArgs, params, result);
|
|
272
|
+
return {
|
|
273
|
+
success: true,
|
|
274
|
+
message: `Canvas executed: ${canvasArgs.command}`,
|
|
275
|
+
data: {
|
|
276
|
+
suppressOutput: true
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
if (args.outputFormat === "text") {
|
|
281
|
+
const output = typeof result === "string" ? result : JSON.stringify(result, null, 2);
|
|
282
|
+
return { success: true, message: output };
|
|
283
|
+
}
|
|
284
|
+
return {
|
|
285
|
+
success: true,
|
|
286
|
+
message: `Canvas executed: ${canvasArgs.command}`,
|
|
287
|
+
data: {
|
|
288
|
+
command: canvasArgs.command,
|
|
289
|
+
result
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
} finally {
|
|
293
|
+
await client.releaseBinding().catch(() => {
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
var __test__ = {
|
|
298
|
+
parseCanvasArgs,
|
|
299
|
+
parseJsonObject,
|
|
300
|
+
resolveCanvasParams,
|
|
301
|
+
attachRepoRoot,
|
|
302
|
+
toFeedbackSubscribeResult
|
|
303
|
+
};
|
|
304
|
+
export {
|
|
305
|
+
__test__,
|
|
306
|
+
parseCanvasArgs,
|
|
307
|
+
runCanvas
|
|
308
|
+
};
|
|
309
|
+
//# sourceMappingURL=canvas-54FBOEGP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/canvas.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport type { ParsedArgs } from \"../args\";\nimport { DaemonClient } from \"../daemon-client\";\nimport { createUsageError } from \"../errors\";\nimport { writeOutput } from \"../output\";\nimport { parseNumberFlag } from \"../utils/parse\";\n\ntype CanvasArgs = {\n command?: string;\n params?: string;\n paramsFile?: string;\n timeoutMs?: number;\n};\n\nconst DEFAULT_FEEDBACK_STREAM_TIMEOUT_MS = 30000;\n\ntype FeedbackItem = Record<string, unknown>;\n\ntype FeedbackSubscribeResult = {\n subscriptionId: string | null;\n initialItems: FeedbackItem[];\n cursor: string | null;\n heartbeatMs: number;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n};\n\nconst asString = (value: unknown): string | null => {\n return typeof value === \"string\" && value.length > 0 ? value : null;\n};\n\nconst asNumber = (value: unknown): number | null => {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n};\n\nconst asRecordArray = (value: unknown): FeedbackItem[] => {\n return Array.isArray(value) ? value.filter(isRecord) : [];\n};\n\nconst toFeedbackSubscribeResult = (value: unknown): FeedbackSubscribeResult => {\n if (!isRecord(value)) {\n return {\n subscriptionId: null,\n initialItems: [],\n cursor: null,\n heartbeatMs: 15000\n };\n }\n return {\n subscriptionId: asString(value.subscriptionId),\n initialItems: asRecordArray(value.initialItems),\n cursor: asString(value.cursor),\n heartbeatMs: Math.max(asNumber(value.heartbeatMs) ?? 15000, 1000)\n };\n};\n\nasync function streamFeedbackViaSubscription(\n client: DaemonClient,\n args: ParsedArgs,\n canvasArgs: CanvasArgs,\n params: Record<string, unknown>,\n initial: Record<string, unknown>\n): Promise<void> {\n const outputOptions = { format: args.outputFormat, quiet: args.quiet };\n writeOutput({\n success: true,\n message: `Canvas executed: ${canvasArgs.command}`,\n data: {\n command: canvasArgs.command,\n result: initial\n }\n }, outputOptions);\n\n const initialResult = toFeedbackSubscribeResult(initial);\n const subscriptionId = initialResult.subscriptionId;\n const heartbeatMs = initialResult.heartbeatMs;\n const streamTimeoutMs = canvasArgs.timeoutMs ?? DEFAULT_FEEDBACK_STREAM_TIMEOUT_MS;\n const deadline = Date.now() + streamTimeoutMs;\n let cursor = initialResult.cursor;\n\n for (const item of initialResult.initialItems) {\n const itemCursor = asString(item.cursor);\n if (itemCursor) {\n cursor = itemCursor;\n }\n writeOutput({\n success: true,\n message: `Canvas feedback: ${canvasArgs.command}`,\n data: {\n command: canvasArgs.command,\n streamEvent: {\n eventType: \"feedback.item\",\n item\n }\n }\n }, outputOptions);\n }\n\n while (subscriptionId && Date.now() < deadline) {\n const remainingMs = deadline - Date.now();\n if (remainingMs <= 0) {\n break;\n }\n const nextEvent = await client.call(\n \"canvas.execute\",\n {\n command: \"canvas.feedback.next\",\n params: {\n ...params,\n subscriptionId,\n timeoutMs: Math.min(heartbeatMs, remainingMs)\n }\n },\n { timeoutMs: remainingMs }\n );\n if (isRecord(nextEvent)) {\n if (nextEvent.eventType === \"feedback.item\" && isRecord(nextEvent.item)) {\n const itemCursor = asString(nextEvent.item.cursor);\n if (itemCursor) {\n cursor = itemCursor;\n }\n } else if (typeof nextEvent.cursor === \"string\") {\n cursor = nextEvent.cursor;\n }\n }\n writeOutput({\n success: true,\n message: `Canvas feedback: ${canvasArgs.command}`,\n data: {\n command: canvasArgs.command,\n streamEvent: nextEvent\n }\n }, outputOptions);\n if (isRecord(nextEvent) && nextEvent.eventType === \"feedback.complete\") {\n break;\n }\n }\n\n if (Date.now() >= deadline) {\n writeOutput({\n success: true,\n message: `Canvas feedback: ${canvasArgs.command}`,\n data: {\n command: canvasArgs.command,\n streamEvent: {\n eventType: \"feedback.complete\",\n cursor: cursor ?? null,\n reason: \"timeout\"\n }\n }\n }, outputOptions);\n }\n\n if (subscriptionId) {\n await client.call(\n \"canvas.execute\",\n {\n command: \"canvas.feedback.unsubscribe\",\n params: {\n ...params,\n subscriptionId\n }\n }\n ).catch(() => {});\n }\n}\n\nconst requireValue = (value: string | undefined, flag: string): string => {\n if (!value) throw createUsageError(`Missing value for ${flag}`);\n return value;\n};\n\nconst parseJsonObject = (raw: string, source: string): Record<string, unknown> => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Invalid JSON\";\n throw createUsageError(`Invalid JSON from ${source}: ${message}`);\n }\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw createUsageError(`Invalid JSON from ${source}: expected object`);\n }\n return parsed as Record<string, unknown>;\n};\n\nexport const parseCanvasArgs = (rawArgs: string[]): CanvasArgs => {\n const parsed: CanvasArgs = {};\n for (let i = 0; i < rawArgs.length; i += 1) {\n const arg = rawArgs[i];\n if (arg === \"--command\") {\n parsed.command = requireValue(rawArgs[i + 1], \"--command\");\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--command=\")) {\n parsed.command = requireValue(arg.split(\"=\", 2)[1], \"--command\");\n continue;\n }\n if (arg === \"--params\") {\n parsed.params = requireValue(rawArgs[i + 1], \"--params\");\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--params=\")) {\n parsed.params = requireValue(arg.split(\"=\", 2)[1], \"--params\");\n continue;\n }\n if (arg === \"--params-file\") {\n parsed.paramsFile = requireValue(rawArgs[i + 1], \"--params-file\");\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--params-file=\")) {\n parsed.paramsFile = requireValue(arg.split(\"=\", 2)[1], \"--params-file\");\n continue;\n }\n if (arg === \"--timeout-ms\") {\n parsed.timeoutMs = parseNumberFlag(requireValue(rawArgs[i + 1], \"--timeout-ms\"), \"--timeout-ms\", { min: 1 });\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--timeout-ms=\")) {\n parsed.timeoutMs = parseNumberFlag(requireValue(arg.split(\"=\", 2)[1], \"--timeout-ms\"), \"--timeout-ms\", { min: 1 });\n }\n }\n return parsed;\n};\n\nconst resolveCanvasParams = (canvasArgs: CanvasArgs): Record<string, unknown> => {\n const hasParams = typeof canvasArgs.params === \"string\";\n const hasParamsFile = typeof canvasArgs.paramsFile === \"string\";\n if (Number(hasParams) + Number(hasParamsFile) > 1) {\n throw createUsageError(\"Provide only one params source: --params or --params-file.\");\n }\n if (hasParams) {\n return parseJsonObject(canvasArgs.params ?? \"\", \"--params\");\n }\n if (hasParamsFile) {\n let raw = \"\";\n try {\n raw = readFileSync(canvasArgs.paramsFile ?? \"\", \"utf8\");\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Unable to read file\";\n throw createUsageError(`Invalid --params-file: ${message}`);\n }\n if (!raw.trim()) {\n throw createUsageError(\"Invalid JSON from --params-file: empty input\");\n }\n return parseJsonObject(raw, \"--params-file\");\n }\n return {};\n};\n\nconst attachRepoRoot = (params: Record<string, unknown>): Record<string, unknown> => {\n if (typeof params.repoRoot === \"string\" && params.repoRoot.trim().length > 0) {\n return params;\n }\n return {\n ...params,\n repoRoot: process.cwd()\n };\n};\n\nexport async function runCanvas(args: ParsedArgs) {\n const canvasArgs = parseCanvasArgs(args.rawArgs);\n if (!canvasArgs.command) {\n throw createUsageError(\"Usage: opendevbrowser canvas --command <canvas.command> [--params <json> | --params-file <path>]\");\n }\n if (!canvasArgs.command.startsWith(\"canvas.\")) {\n throw createUsageError(\"Canvas command names must start with 'canvas.'.\");\n }\n\n const client = new DaemonClient({ autoRenew: true });\n try {\n const params = attachRepoRoot(resolveCanvasParams(canvasArgs));\n const result = await client.call<unknown>(\n \"canvas.execute\",\n {\n command: canvasArgs.command,\n params\n },\n { timeoutMs: canvasArgs.timeoutMs }\n );\n if (\n canvasArgs.command === \"canvas.feedback.subscribe\"\n && args.outputFormat === \"stream-json\"\n && isRecord(result)\n ) {\n await streamFeedbackViaSubscription(client, args, canvasArgs, params, result);\n return {\n success: true,\n message: `Canvas executed: ${canvasArgs.command}`,\n data: {\n suppressOutput: true\n }\n };\n }\n if (args.outputFormat === \"text\") {\n const output = typeof result === \"string\" ? result : JSON.stringify(result, null, 2);\n return { success: true, message: output };\n }\n return {\n success: true,\n message: `Canvas executed: ${canvasArgs.command}`,\n data: {\n command: canvasArgs.command,\n result\n }\n };\n } finally {\n await client.releaseBinding().catch(() => {});\n }\n}\n\nexport const __test__ = {\n parseCanvasArgs,\n parseJsonObject,\n resolveCanvasParams,\n attachRepoRoot,\n toFeedbackSubscribeResult\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {
|
|
2
|
+
callDesktopCommand,
|
|
3
|
+
desktopCommandResult,
|
|
4
|
+
parseDesktopReasonArgs,
|
|
5
|
+
requireDesktopReason
|
|
6
|
+
} from "./chunk-2CG4SW3E.js";
|
|
7
|
+
import "./chunk-RJNI3BHT.js";
|
|
8
|
+
import "./chunk-RPXWUCQQ.js";
|
|
9
|
+
import "./chunk-OW5HMYMI.js";
|
|
10
|
+
import "./chunk-OYNLAZQU.js";
|
|
11
|
+
import "./chunk-LBPELU7L.js";
|
|
12
|
+
import "./chunk-SXAGSEKZ.js";
|
|
13
|
+
import "./chunk-MX3NFLCE.js";
|
|
14
|
+
import "./chunk-ASMHEEKY.js";
|
|
15
|
+
import "./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/desktop/capture-desktop.ts
|
|
28
|
+
async function runDesktopCaptureDesktop(args) {
|
|
29
|
+
const { reason, timeoutMs } = parseDesktopReasonArgs(args.rawArgs);
|
|
30
|
+
const result = await callDesktopCommand("desktop.capture.desktop", {
|
|
31
|
+
reason: requireDesktopReason(reason)
|
|
32
|
+
}, timeoutMs);
|
|
33
|
+
return desktopCommandResult("Desktop captured.", result);
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
runDesktopCaptureDesktop
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=capture-desktop-SNABC24E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/desktop/capture-desktop.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport {\n callDesktopCommand,\n desktopCommandResult,\n parseDesktopReasonArgs,\n requireDesktopReason\n} from \"./shared\";\n\nexport async function runDesktopCaptureDesktop(args: ParsedArgs) {\n const { reason, timeoutMs } = parseDesktopReasonArgs(args.rawArgs);\n const result = await callDesktopCommand(\"desktop.capture.desktop\", {\n reason: requireDesktopReason(reason)\n }, timeoutMs);\n return desktopCommandResult(\"Desktop captured.\", result);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,eAAsB,yBAAyB,MAAkB;AAC/D,QAAM,EAAE,QAAQ,UAAU,IAAI,uBAAuB,KAAK,OAAO;AACjE,QAAM,SAAS,MAAM,mBAAmB,2BAA2B;AAAA,IACjE,QAAQ,qBAAqB,MAAM;AAAA,EACrC,GAAG,SAAS;AACZ,SAAO,qBAAqB,qBAAqB,MAAM;AACzD;","names":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
callDesktopCommand,
|
|
3
|
+
desktopCommandResult,
|
|
4
|
+
parseDesktopWindowReasonArgs,
|
|
5
|
+
requireDesktopReason,
|
|
6
|
+
requireDesktopWindowId
|
|
7
|
+
} from "./chunk-2CG4SW3E.js";
|
|
8
|
+
import "./chunk-RJNI3BHT.js";
|
|
9
|
+
import "./chunk-RPXWUCQQ.js";
|
|
10
|
+
import "./chunk-OW5HMYMI.js";
|
|
11
|
+
import "./chunk-OYNLAZQU.js";
|
|
12
|
+
import "./chunk-LBPELU7L.js";
|
|
13
|
+
import "./chunk-SXAGSEKZ.js";
|
|
14
|
+
import "./chunk-MX3NFLCE.js";
|
|
15
|
+
import "./chunk-ASMHEEKY.js";
|
|
16
|
+
import "./chunk-IPE7TF2P.js";
|
|
17
|
+
import "./chunk-STGGGVYT.js";
|
|
18
|
+
import "./chunk-3ILXPKSJ.js";
|
|
19
|
+
import "./chunk-TBUCZX4A.js";
|
|
20
|
+
import "./chunk-Y2KL55OG.js";
|
|
21
|
+
import "./chunk-5SWZDVOW.js";
|
|
22
|
+
import "./chunk-S6S2UP6U.js";
|
|
23
|
+
import "./chunk-S5KZQJJI.js";
|
|
24
|
+
import "./chunk-KZ2IXVQT.js";
|
|
25
|
+
import "./chunk-WHQZBUNY.js";
|
|
26
|
+
import "./chunk-FUSXMW3G.js";
|
|
27
|
+
|
|
28
|
+
// src/cli/commands/desktop/capture-window.ts
|
|
29
|
+
async function runDesktopCaptureWindow(args) {
|
|
30
|
+
const { windowId, reason, timeoutMs } = parseDesktopWindowReasonArgs(args.rawArgs);
|
|
31
|
+
const result = await callDesktopCommand("desktop.capture.window", {
|
|
32
|
+
windowId: requireDesktopWindowId(windowId),
|
|
33
|
+
reason: requireDesktopReason(reason)
|
|
34
|
+
}, timeoutMs);
|
|
35
|
+
return desktopCommandResult("Desktop window captured.", result);
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
runDesktopCaptureWindow
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=capture-window-UJSB5AMP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/desktop/capture-window.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport {\n callDesktopCommand,\n desktopCommandResult,\n parseDesktopWindowReasonArgs,\n requireDesktopReason,\n requireDesktopWindowId\n} from \"./shared\";\n\nexport async function runDesktopCaptureWindow(args: ParsedArgs) {\n const { windowId, reason, timeoutMs } = parseDesktopWindowReasonArgs(args.rawArgs);\n const result = await callDesktopCommand(\"desktop.capture.window\", {\n windowId: requireDesktopWindowId(windowId),\n reason: requireDesktopReason(reason)\n }, timeoutMs);\n return desktopCommandResult(\"Desktop window captured.\", result);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,eAAsB,wBAAwB,MAAkB;AAC9D,QAAM,EAAE,UAAU,QAAQ,UAAU,IAAI,6BAA6B,KAAK,OAAO;AACjF,QAAM,SAAS,MAAM,mBAAmB,0BAA0B;AAAA,IAChE,UAAU,uBAAuB,QAAQ;AAAA,IACzC,QAAQ,qBAAqB,MAAM;AAAA,EACrC,GAAG,SAAS;AACZ,SAAO,qBAAqB,4BAA4B,MAAM;AAChE;","names":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import "./chunk-RJNI3BHT.js";
|
|
2
|
+
import {
|
|
3
|
+
parseOptionalStringFlag
|
|
4
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
5
|
+
import {
|
|
6
|
+
callDaemon
|
|
7
|
+
} from "./chunk-OYNLAZQU.js";
|
|
8
|
+
import "./chunk-LBPELU7L.js";
|
|
9
|
+
import "./chunk-SXAGSEKZ.js";
|
|
10
|
+
import "./chunk-MX3NFLCE.js";
|
|
11
|
+
import "./chunk-ASMHEEKY.js";
|
|
12
|
+
import {
|
|
13
|
+
createUsageError
|
|
14
|
+
} from "./chunk-IPE7TF2P.js";
|
|
15
|
+
import "./chunk-STGGGVYT.js";
|
|
16
|
+
import "./chunk-3ILXPKSJ.js";
|
|
17
|
+
import "./chunk-TBUCZX4A.js";
|
|
18
|
+
import "./chunk-Y2KL55OG.js";
|
|
19
|
+
import "./chunk-5SWZDVOW.js";
|
|
20
|
+
import "./chunk-S6S2UP6U.js";
|
|
21
|
+
import "./chunk-S5KZQJJI.js";
|
|
22
|
+
import "./chunk-KZ2IXVQT.js";
|
|
23
|
+
import "./chunk-WHQZBUNY.js";
|
|
24
|
+
import "./chunk-FUSXMW3G.js";
|
|
25
|
+
|
|
26
|
+
// src/cli/commands/interact/check.ts
|
|
27
|
+
function parseCheckArgs(rawArgs) {
|
|
28
|
+
const parsed = {};
|
|
29
|
+
for (let i = 0; i < rawArgs.length; i += 1) {
|
|
30
|
+
const arg = rawArgs[i];
|
|
31
|
+
if (arg === "--session-id") {
|
|
32
|
+
const value = rawArgs[i + 1];
|
|
33
|
+
if (!value) throw createUsageError("Missing value for --session-id");
|
|
34
|
+
parsed.sessionId = value;
|
|
35
|
+
i += 1;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (arg?.startsWith("--session-id=")) {
|
|
39
|
+
parsed.sessionId = arg.split("=", 2)[1];
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (arg === "--ref") {
|
|
43
|
+
const value = rawArgs[i + 1];
|
|
44
|
+
if (!value) throw createUsageError("Missing value for --ref");
|
|
45
|
+
parsed.ref = value;
|
|
46
|
+
i += 1;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (arg?.startsWith("--ref=")) {
|
|
50
|
+
parsed.ref = arg.split("=", 2)[1];
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return parsed;
|
|
55
|
+
}
|
|
56
|
+
async function runCheck(args) {
|
|
57
|
+
const { sessionId, ref } = parseCheckArgs(args.rawArgs);
|
|
58
|
+
const targetId = parseOptionalStringFlag(args.rawArgs, "--target-id");
|
|
59
|
+
if (!sessionId) throw createUsageError("Missing --session-id");
|
|
60
|
+
if (!ref) throw createUsageError("Missing --ref");
|
|
61
|
+
const result = await callDaemon("interact.check", {
|
|
62
|
+
sessionId,
|
|
63
|
+
ref,
|
|
64
|
+
...typeof targetId === "string" ? { targetId } : {}
|
|
65
|
+
});
|
|
66
|
+
return { success: true, message: "Check complete.", data: result };
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
runCheck
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=check-ST5UQ2F5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/interact/check.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { parseOptionalStringFlag } from \"../../utils/parse\";\n\nfunction parseCheckArgs(rawArgs: string[]): { sessionId?: string; ref?: string } {\n const parsed: { sessionId?: string; ref?: 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 if (arg === \"--ref\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --ref\");\n parsed.ref = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--ref=\")) {\n parsed.ref = arg.split(\"=\", 2)[1];\n continue;\n }\n }\n return parsed;\n}\n\nexport async function runCheck(args: ParsedArgs) {\n const { sessionId, ref } = parseCheckArgs(args.rawArgs);\n const targetId = parseOptionalStringFlag(args.rawArgs, \"--target-id\");\n if (!sessionId) throw createUsageError(\"Missing --session-id\");\n if (!ref) throw createUsageError(\"Missing --ref\");\n const result = await callDaemon(\"interact.check\", {\n sessionId,\n ref,\n ...(typeof targetId === \"string\" ? { targetId } : {})\n });\n return { success: true, message: \"Check complete.\", data: result };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,eAAe,SAAyD;AAC/E,QAAM,SAA+C,CAAC;AACtD,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,SAAS;AACnB,YAAM,QAAQ,QAAQ,IAAI,CAAC;AAC3B,UAAI,CAAC,MAAO,OAAM,iBAAiB,yBAAyB;AAC5D,aAAO,MAAM;AACb,WAAK;AACL;AAAA,IACF;AACA,QAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,aAAO,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;AAChC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,SAAS,MAAkB;AAC/C,QAAM,EAAE,WAAW,IAAI,IAAI,eAAe,KAAK,OAAO;AACtD,QAAM,WAAW,wBAAwB,KAAK,SAAS,aAAa;AACpE,MAAI,CAAC,UAAW,OAAM,iBAAiB,sBAAsB;AAC7D,MAAI,CAAC,IAAK,OAAM,iBAAiB,eAAe;AAChD,QAAM,SAAS,MAAM,WAAW,kBAAkB;AAAA,IAChD;AAAA,IACA;AAAA,IACA,GAAI,OAAO,aAAa,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,EACrD,CAAC;AACD,SAAO,EAAE,SAAS,MAAM,SAAS,mBAAmB,MAAM,OAAO;AACnE;","names":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import "./chunk-RJNI3BHT.js";
|
|
2
|
+
import {
|
|
3
|
+
parseOptionalStringFlag
|
|
4
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
5
|
+
import {
|
|
6
|
+
callDaemon
|
|
7
|
+
} from "./chunk-OYNLAZQU.js";
|
|
8
|
+
import "./chunk-LBPELU7L.js";
|
|
9
|
+
import "./chunk-SXAGSEKZ.js";
|
|
10
|
+
import "./chunk-MX3NFLCE.js";
|
|
11
|
+
import "./chunk-ASMHEEKY.js";
|
|
12
|
+
import {
|
|
13
|
+
createUsageError
|
|
14
|
+
} from "./chunk-IPE7TF2P.js";
|
|
15
|
+
import "./chunk-STGGGVYT.js";
|
|
16
|
+
import "./chunk-3ILXPKSJ.js";
|
|
17
|
+
import "./chunk-TBUCZX4A.js";
|
|
18
|
+
import "./chunk-Y2KL55OG.js";
|
|
19
|
+
import "./chunk-5SWZDVOW.js";
|
|
20
|
+
import "./chunk-S6S2UP6U.js";
|
|
21
|
+
import "./chunk-S5KZQJJI.js";
|
|
22
|
+
import "./chunk-KZ2IXVQT.js";
|
|
23
|
+
import "./chunk-WHQZBUNY.js";
|
|
24
|
+
import "./chunk-FUSXMW3G.js";
|
|
25
|
+
|
|
26
|
+
// src/cli/commands/dom/checked.ts
|
|
27
|
+
function parseDomCheckedArgs(rawArgs) {
|
|
28
|
+
const parsed = {};
|
|
29
|
+
for (let i = 0; i < rawArgs.length; i += 1) {
|
|
30
|
+
const arg = rawArgs[i];
|
|
31
|
+
if (arg === "--session-id") {
|
|
32
|
+
const value = rawArgs[i + 1];
|
|
33
|
+
if (!value) throw createUsageError("Missing value for --session-id");
|
|
34
|
+
parsed.sessionId = value;
|
|
35
|
+
i += 1;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (arg?.startsWith("--session-id=")) {
|
|
39
|
+
parsed.sessionId = arg.split("=", 2)[1];
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (arg === "--ref") {
|
|
43
|
+
const value = rawArgs[i + 1];
|
|
44
|
+
if (!value) throw createUsageError("Missing value for --ref");
|
|
45
|
+
parsed.ref = value;
|
|
46
|
+
i += 1;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (arg?.startsWith("--ref=")) {
|
|
50
|
+
parsed.ref = arg.split("=", 2)[1];
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return parsed;
|
|
55
|
+
}
|
|
56
|
+
async function runDomChecked(args) {
|
|
57
|
+
const { sessionId, ref } = parseDomCheckedArgs(args.rawArgs);
|
|
58
|
+
const targetId = parseOptionalStringFlag(args.rawArgs, "--target-id");
|
|
59
|
+
if (!sessionId) throw createUsageError("Missing --session-id");
|
|
60
|
+
if (!ref) throw createUsageError("Missing --ref");
|
|
61
|
+
const result = await callDaemon("dom.isChecked", {
|
|
62
|
+
sessionId,
|
|
63
|
+
ref,
|
|
64
|
+
...typeof targetId === "string" ? { targetId } : {}
|
|
65
|
+
});
|
|
66
|
+
return { success: true, message: "Checked state reported.", data: result };
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
runDomChecked
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=checked-IEMWI5CU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/dom/checked.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { parseOptionalStringFlag } from \"../../utils/parse\";\n\nfunction parseDomCheckedArgs(rawArgs: string[]): { sessionId?: string; ref?: string } {\n const parsed: { sessionId?: string; ref?: 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 if (arg === \"--ref\") {\n const value = rawArgs[i + 1];\n if (!value) throw createUsageError(\"Missing value for --ref\");\n parsed.ref = value;\n i += 1;\n continue;\n }\n if (arg?.startsWith(\"--ref=\")) {\n parsed.ref = arg.split(\"=\", 2)[1];\n continue;\n }\n }\n return parsed;\n}\n\nexport async function runDomChecked(args: ParsedArgs) {\n const { sessionId, ref } = parseDomCheckedArgs(args.rawArgs);\n const targetId = parseOptionalStringFlag(args.rawArgs, \"--target-id\");\n if (!sessionId) throw createUsageError(\"Missing --session-id\");\n if (!ref) throw createUsageError(\"Missing --ref\");\n const result = await callDaemon(\"dom.isChecked\", {\n sessionId,\n ref,\n ...(typeof targetId === \"string\" ? { targetId } : {})\n });\n return { success: true, message: \"Checked state reported.\", data: result };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,oBAAoB,SAAyD;AACpF,QAAM,SAA+C,CAAC;AACtD,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,SAAS;AACnB,YAAM,QAAQ,QAAQ,IAAI,CAAC;AAC3B,UAAI,CAAC,MAAO,OAAM,iBAAiB,yBAAyB;AAC5D,aAAO,MAAM;AACb,WAAK;AACL;AAAA,IACF;AACA,QAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,aAAO,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;AAChC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,cAAc,MAAkB;AACpD,QAAM,EAAE,WAAW,IAAI,IAAI,oBAAoB,KAAK,OAAO;AAC3D,QAAM,WAAW,wBAAwB,KAAK,SAAS,aAAa;AACpE,MAAI,CAAC,UAAW,OAAM,iBAAiB,sBAAsB;AAC7D,MAAI,CAAC,IAAK,OAAM,iBAAiB,eAAe;AAChD,QAAM,SAAS,MAAM,WAAW,iBAAiB;AAAA,IAC/C;AAAA,IACA;AAAA,IACA,GAAI,OAAO,aAAa,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,EACrD,CAAC;AACD,SAAO,EAAE,SAAS,MAAM,SAAS,2BAA2B,MAAM,OAAO;AAC3E;","names":[]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseNumberFlag,
|
|
3
|
+
parseOptionalStringFlag
|
|
4
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
5
|
+
import {
|
|
6
|
+
DEFAULT_SCREENSHOT_TRANSPORT_TIMEOUT_MS
|
|
7
|
+
} from "./chunk-OW5HMYMI.js";
|
|
8
|
+
import {
|
|
9
|
+
callDaemon
|
|
10
|
+
} from "./chunk-OYNLAZQU.js";
|
|
11
|
+
import {
|
|
12
|
+
createUsageError
|
|
13
|
+
} from "./chunk-IPE7TF2P.js";
|
|
14
|
+
|
|
15
|
+
// src/cli/commands/desktop/shared.ts
|
|
16
|
+
function parseDesktopTimeoutArgs(rawArgs) {
|
|
17
|
+
const timeoutValue = parseOptionalStringFlag(rawArgs, "--timeout-ms");
|
|
18
|
+
return {
|
|
19
|
+
timeoutMs: typeof timeoutValue === "string" ? parseNumberFlag(timeoutValue, "--timeout-ms", { min: 1 }) : void 0
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function parseDesktopReasonArgs(rawArgs) {
|
|
23
|
+
return {
|
|
24
|
+
...parseDesktopTimeoutArgs(rawArgs),
|
|
25
|
+
reason: parseOptionalStringFlag(rawArgs, "--reason")
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function parseDesktopWindowReasonArgs(rawArgs) {
|
|
29
|
+
return {
|
|
30
|
+
...parseDesktopReasonArgs(rawArgs),
|
|
31
|
+
windowId: parseOptionalStringFlag(rawArgs, "--window-id")
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function requireDesktopReason(reason) {
|
|
35
|
+
if (!reason) {
|
|
36
|
+
throw createUsageError("Missing --reason");
|
|
37
|
+
}
|
|
38
|
+
return reason;
|
|
39
|
+
}
|
|
40
|
+
function requireDesktopWindowId(windowId) {
|
|
41
|
+
if (!windowId) {
|
|
42
|
+
throw createUsageError("Missing --window-id");
|
|
43
|
+
}
|
|
44
|
+
return windowId;
|
|
45
|
+
}
|
|
46
|
+
async function callDesktopCommand(name, params, timeoutMs) {
|
|
47
|
+
return callDaemon(name, params, {
|
|
48
|
+
timeoutMs: timeoutMs ?? DEFAULT_SCREENSHOT_TRANSPORT_TIMEOUT_MS
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function desktopCommandResult(message, data) {
|
|
52
|
+
return { success: true, message, data };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export {
|
|
56
|
+
parseDesktopTimeoutArgs,
|
|
57
|
+
parseDesktopReasonArgs,
|
|
58
|
+
parseDesktopWindowReasonArgs,
|
|
59
|
+
requireDesktopReason,
|
|
60
|
+
requireDesktopWindowId,
|
|
61
|
+
callDesktopCommand,
|
|
62
|
+
desktopCommandResult
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=chunk-2CG4SW3E.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/desktop/shared.ts"],"sourcesContent":["import { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { DEFAULT_SCREENSHOT_TRANSPORT_TIMEOUT_MS } from \"../../transport-timeouts\";\nimport { parseNumberFlag, parseOptionalStringFlag } from \"../../utils/parse\";\nimport type { CommandResult } from \"../types\";\n\ntype DesktopTimeoutArgs = {\n timeoutMs?: number;\n};\n\nexport type DesktopReasonArgs = DesktopTimeoutArgs & {\n reason?: string;\n};\n\nexport type DesktopWindowReasonArgs = DesktopReasonArgs & {\n windowId?: string;\n};\n\nexport function parseDesktopTimeoutArgs(rawArgs: string[]): DesktopTimeoutArgs {\n const timeoutValue = parseOptionalStringFlag(rawArgs, \"--timeout-ms\");\n return {\n timeoutMs: typeof timeoutValue === \"string\"\n ? parseNumberFlag(timeoutValue, \"--timeout-ms\", { min: 1 })\n : undefined\n };\n}\n\nexport function parseDesktopReasonArgs(rawArgs: string[]): DesktopReasonArgs {\n return {\n ...parseDesktopTimeoutArgs(rawArgs),\n reason: parseOptionalStringFlag(rawArgs, \"--reason\")\n };\n}\n\nexport function parseDesktopWindowReasonArgs(rawArgs: string[]): DesktopWindowReasonArgs {\n return {\n ...parseDesktopReasonArgs(rawArgs),\n windowId: parseOptionalStringFlag(rawArgs, \"--window-id\")\n };\n}\n\nexport function requireDesktopReason(reason?: string): string {\n if (!reason) {\n throw createUsageError(\"Missing --reason\");\n }\n return reason;\n}\n\nexport function requireDesktopWindowId(windowId?: string): string {\n if (!windowId) {\n throw createUsageError(\"Missing --window-id\");\n }\n return windowId;\n}\n\nexport async function callDesktopCommand(\n name: string,\n params: Record<string, unknown>,\n timeoutMs?: number\n): Promise<unknown> {\n return callDaemon(name, params, {\n timeoutMs: timeoutMs ?? DEFAULT_SCREENSHOT_TRANSPORT_TIMEOUT_MS\n });\n}\n\nexport function desktopCommandResult(message: string, data: unknown): CommandResult {\n return { success: true, message, data };\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkBO,SAAS,wBAAwB,SAAuC;AAC7E,QAAM,eAAe,wBAAwB,SAAS,cAAc;AACpE,SAAO;AAAA,IACL,WAAW,OAAO,iBAAiB,WAC/B,gBAAgB,cAAc,gBAAgB,EAAE,KAAK,EAAE,CAAC,IACxD;AAAA,EACN;AACF;AAEO,SAAS,uBAAuB,SAAsC;AAC3E,SAAO;AAAA,IACL,GAAG,wBAAwB,OAAO;AAAA,IAClC,QAAQ,wBAAwB,SAAS,UAAU;AAAA,EACrD;AACF;AAEO,SAAS,6BAA6B,SAA4C;AACvF,SAAO;AAAA,IACL,GAAG,uBAAuB,OAAO;AAAA,IACjC,UAAU,wBAAwB,SAAS,aAAa;AAAA,EAC1D;AACF;AAEO,SAAS,qBAAqB,QAAyB;AAC5D,MAAI,CAAC,QAAQ;AACX,UAAM,iBAAiB,kBAAkB;AAAA,EAC3C;AACA,SAAO;AACT;AAEO,SAAS,uBAAuB,UAA2B;AAChE,MAAI,CAAC,UAAU;AACb,UAAM,iBAAiB,qBAAqB;AAAA,EAC9C;AACA,SAAO;AACT;AAEA,eAAsB,mBACpB,MACA,QACA,WACkB;AAClB,SAAO,WAAW,MAAM,QAAQ;AAAA,IAC9B,WAAW,aAAa;AAAA,EAC1B,CAAC;AACH;AAEO,SAAS,qBAAqB,SAAiB,MAA8B;AAClF,SAAO,EAAE,SAAS,MAAM,SAAS,KAAK;AACxC;","names":[]}
|