opendevbrowser 0.0.28 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/accessibility-snapshot-CQ4ZKWKC.js +39 -0
- package/dist/accessibility-snapshot-CQ4ZKWKC.js.map +1 -0
- package/dist/active-window-TD5HYJ72.js +37 -0
- package/dist/active-window-TD5HYJ72.js.map +1 -0
- package/dist/annotate-VTLFS2XV.js +205 -0
- package/dist/annotate-VTLFS2XV.js.map +1 -0
- package/dist/artifacts-KJ6RNDO2.js +120 -0
- package/dist/artifacts-KJ6RNDO2.js.map +1 -0
- package/dist/attr-BCI5KYCW.js +84 -0
- package/dist/attr-BCI5KYCW.js.map +1 -0
- package/dist/browser/ops-client.d.ts +1 -0
- package/dist/browser/ops-client.d.ts.map +1 -1
- package/dist/canvas-5DFEEOKM.js +309 -0
- package/dist/canvas-5DFEEOKM.js.map +1 -0
- package/dist/capture-desktop-HFTTWY4Z.js +38 -0
- package/dist/capture-desktop-HFTTWY4Z.js.map +1 -0
- package/dist/capture-window-X63XPIFF.js +40 -0
- package/dist/capture-window-X63XPIFF.js.map +1 -0
- package/dist/check-LWAUY7GC.js +71 -0
- package/dist/check-LWAUY7GC.js.map +1 -0
- package/dist/checked-ZSOUKVYT.js +71 -0
- package/dist/checked-ZSOUKVYT.js.map +1 -0
- package/dist/chunk-2SIMIPLY.js +67 -0
- package/dist/chunk-2SIMIPLY.js.map +1 -0
- package/dist/chunk-37VSRUW4.js +141 -0
- package/dist/chunk-37VSRUW4.js.map +1 -0
- package/dist/{chunk-T3VVHJTK.js → chunk-4BEJVZRK.js} +1078 -1458
- package/dist/chunk-4BEJVZRK.js.map +1 -0
- package/dist/chunk-5SWZDVOW.js +144 -0
- package/dist/chunk-5SWZDVOW.js.map +1 -0
- package/dist/chunk-6PVZ2ABC.js +429 -0
- package/dist/chunk-6PVZ2ABC.js.map +1 -0
- package/dist/chunk-7GVOUZMQ.js +64 -0
- package/dist/chunk-7GVOUZMQ.js.map +1 -0
- package/dist/chunk-7THCPS52.js +84 -0
- package/dist/chunk-7THCPS52.js.map +1 -0
- package/dist/chunk-AHEWXOKY.js +64 -0
- package/dist/chunk-AHEWXOKY.js.map +1 -0
- package/dist/chunk-ASMHEEKY.js +10 -0
- package/dist/chunk-ASMHEEKY.js.map +1 -0
- package/dist/chunk-COAOWH3G.js +3651 -0
- package/dist/chunk-COAOWH3G.js.map +1 -0
- package/dist/chunk-DBF5OKH3.js +111 -0
- package/dist/chunk-DBF5OKH3.js.map +1 -0
- package/dist/chunk-DW4TX7MU.js +54 -0
- package/dist/chunk-DW4TX7MU.js.map +1 -0
- package/dist/chunk-GQJ5S3BL.js +20 -0
- package/dist/chunk-GQJ5S3BL.js.map +1 -0
- package/dist/chunk-IPE7TF2P.js +54 -0
- package/dist/chunk-IPE7TF2P.js.map +1 -0
- package/dist/chunk-IQTJHXZJ.js +126 -0
- package/dist/chunk-IQTJHXZJ.js.map +1 -0
- package/dist/chunk-J47N77VG.js +2969 -0
- package/dist/chunk-J47N77VG.js.map +1 -0
- package/dist/chunk-JZXD6FWR.js +25 -0
- package/dist/chunk-JZXD6FWR.js.map +1 -0
- package/dist/{chunk-QVWOPIZJ.js → chunk-KDSNXS6N.js} +75 -149
- package/dist/chunk-KDSNXS6N.js.map +1 -0
- package/dist/chunk-KZ2IXVQT.js +219 -0
- package/dist/chunk-KZ2IXVQT.js.map +1 -0
- package/dist/chunk-MD655IPO.js +838 -0
- package/dist/chunk-MD655IPO.js.map +1 -0
- package/dist/chunk-MX3NFLCE.js +940 -0
- package/dist/chunk-MX3NFLCE.js.map +1 -0
- package/dist/chunk-OW5HMYMI.js +19 -0
- package/dist/chunk-OW5HMYMI.js.map +1 -0
- package/dist/chunk-PPUWQKIC.js +26 -0
- package/dist/chunk-PPUWQKIC.js.map +1 -0
- package/dist/{chunk-I5ZCOZZV.js → chunk-QOMWCRE3.js} +1202 -9561
- package/dist/chunk-QOMWCRE3.js.map +1 -0
- package/dist/chunk-RCZZGGJS.js +226 -0
- package/dist/chunk-RCZZGGJS.js.map +1 -0
- package/dist/chunk-RJNI3BHT.js +1 -0
- package/dist/chunk-RPXWUCQQ.js +112 -0
- package/dist/chunk-RPXWUCQQ.js.map +1 -0
- package/dist/chunk-S5KZQJJI.js +107 -0
- package/dist/chunk-S5KZQJJI.js.map +1 -0
- package/dist/chunk-T4GMCW6Z.js +46 -0
- package/dist/chunk-T4GMCW6Z.js.map +1 -0
- package/dist/chunk-WHQZBUNY.js +982 -0
- package/dist/chunk-WHQZBUNY.js.map +1 -0
- package/dist/chunk-WOXBLP7V.js +610 -0
- package/dist/chunk-WOXBLP7V.js.map +1 -0
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/commands/macro-resolve.d.ts +4 -1
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/product-video.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/shopping.d.ts.map +1 -1
- package/dist/cli/commands/workflow-output.d.ts +2 -0
- package/dist/cli/commands/workflow-output.d.ts.map +1 -0
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/index.js +204 -8123
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/postinstall-skill-sync.js +2 -1
- package/dist/cli/installers/postinstall-skill-sync.js.map +1 -1
- package/dist/cli/remote-relay.d.ts.map +1 -1
- package/dist/click-2AILSEIZ.js +81 -0
- package/dist/click-2AILSEIZ.js.map +1 -0
- package/dist/clone-component-TPJS3PEG.js +82 -0
- package/dist/clone-component-TPJS3PEG.js.map +1 -0
- package/dist/clone-page-LE74CIFC.js +69 -0
- package/dist/clone-page-LE74CIFC.js.map +1 -0
- package/dist/close-HN4YI47K.js +63 -0
- package/dist/close-HN4YI47K.js.map +1 -0
- package/dist/close-WFERRHX6.js +63 -0
- package/dist/close-WFERRHX6.js.map +1 -0
- package/dist/connect-RWBV2UCQ.js +107 -0
- package/dist/connect-RWBV2UCQ.js.map +1 -0
- package/dist/console-poll-PP4YYPDF.js +76 -0
- package/dist/console-poll-PP4YYPDF.js.map +1 -0
- package/dist/cookie-import-6IP776FC.js +177 -0
- package/dist/cookie-import-6IP776FC.js.map +1 -0
- package/dist/cookie-list-O2KG6DPU.js +117 -0
- package/dist/cookie-list-O2KG6DPU.js.map +1 -0
- package/dist/daemon-2BSAZXLT.js +194 -0
- package/dist/daemon-2BSAZXLT.js.map +1 -0
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/debug-trace-snapshot-F3BDVZXS.js +136 -0
- package/dist/debug-trace-snapshot-F3BDVZXS.js.map +1 -0
- package/dist/dialog-6JQYUWMQ.js +75 -0
- package/dist/dialog-6JQYUWMQ.js.map +1 -0
- package/dist/disconnect-763TP7GH.js +58 -0
- package/dist/disconnect-763TP7GH.js.map +1 -0
- package/dist/enabled-DLYQFNIP.js +71 -0
- package/dist/enabled-DLYQFNIP.js.map +1 -0
- package/dist/extension-extractor-GKWSFHPN.js +11 -0
- package/dist/extension-extractor-GKWSFHPN.js.map +1 -0
- package/dist/global-D6WLWBXA.js +56 -0
- package/dist/global-D6WLWBXA.js.map +1 -0
- package/dist/goto-S346TJJH.js +98 -0
- package/dist/goto-S346TJJH.js.map +1 -0
- package/dist/help-EKKKEDL5.js +491 -0
- package/dist/help-EKKKEDL5.js.map +1 -0
- package/dist/hover-6JVJFGO7.js +71 -0
- package/dist/hover-6JVJFGO7.js.map +1 -0
- package/dist/html-EVOSPBIT.js +84 -0
- package/dist/html-EVOSPBIT.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +87 -38
- package/dist/index.js.map +1 -1
- package/dist/inspector-H57BVUJP.js +62 -0
- package/dist/inspector-H57BVUJP.js.map +1 -0
- package/dist/inspector-audit-NQBAJWC7.js +84 -0
- package/dist/inspector-audit-NQBAJWC7.js.map +1 -0
- package/dist/inspector-plan-ZDIQVND3.js +69 -0
- package/dist/inspector-plan-ZDIQVND3.js.map +1 -0
- package/dist/inspiredesign-IEUL4PX3.js +234 -0
- package/dist/inspiredesign-IEUL4PX3.js.map +1 -0
- package/dist/install-autostart-output-5DOMKCQL.js +41 -0
- package/dist/install-autostart-output-5DOMKCQL.js.map +1 -0
- package/dist/install-autostart-reconciliation-NHKOFYTD.js +73 -0
- package/dist/install-autostart-reconciliation-NHKOFYTD.js.map +1 -0
- package/dist/launch-EK66VQPF.js +225 -0
- package/dist/launch-EK66VQPF.js.map +1 -0
- package/dist/list-ADZAQ2IU.js +51 -0
- package/dist/list-ADZAQ2IU.js.map +1 -0
- package/dist/list-KKUKN467.js +54 -0
- package/dist/list-KKUKN467.js.map +1 -0
- package/dist/local-HXJLUUNT.js +54 -0
- package/dist/local-HXJLUUNT.js.map +1 -0
- package/dist/macro-resolve-6DOQJ7CA.js +253 -0
- package/dist/macro-resolve-6DOQJ7CA.js.map +1 -0
- package/dist/macros/execute-runtime.d.ts +3 -1
- package/dist/macros/execute-runtime.d.ts.map +1 -1
- package/dist/macros/execute.d.ts +2 -0
- package/dist/macros/execute.d.ts.map +1 -1
- package/dist/native-UPLVQ2SG.js +22 -0
- package/dist/native-UPLVQ2SG.js.map +1 -0
- package/dist/network-poll-NUL4PDPY.js +76 -0
- package/dist/network-poll-NUL4PDPY.js.map +1 -0
- package/dist/new-5NKYPEFT.js +69 -0
- package/dist/new-5NKYPEFT.js.map +1 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js +27 -0
- package/dist/onboarding-metadata-7E3KLYSZ.js.map +1 -0
- package/dist/open-NR3BPLXV.js +81 -0
- package/dist/open-NR3BPLXV.js.map +1 -0
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +87 -38
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/perf-HJ36ZI6H.js +58 -0
- package/dist/perf-HJ36ZI6H.js.map +1 -0
- package/dist/pointer-down-IYTTQWXZ.js +55 -0
- package/dist/pointer-down-IYTTQWXZ.js.map +1 -0
- package/dist/pointer-drag-A2YC5PWI.js +54 -0
- package/dist/pointer-drag-A2YC5PWI.js.map +1 -0
- package/dist/pointer-move-W5K5FUI4.js +52 -0
- package/dist/pointer-move-W5K5FUI4.js.map +1 -0
- package/dist/pointer-up-6GWVO64Y.js +55 -0
- package/dist/pointer-up-6GWVO64Y.js.map +1 -0
- package/dist/press-A3V5WB3S.js +83 -0
- package/dist/press-A3V5WB3S.js.map +1 -0
- package/dist/product-video-52REKWF3.js +235 -0
- package/dist/product-video-52REKWF3.js.map +1 -0
- package/dist/providers/artifacts.d.ts +0 -2
- package/dist/providers/artifacts.d.ts.map +1 -1
- package/dist/providers/blocker.d.ts.map +1 -1
- package/dist/providers/bounded-map.d.ts +2 -0
- package/dist/providers/bounded-map.d.ts.map +1 -0
- package/dist/providers/community/index.d.ts.map +1 -1
- package/dist/providers/constraint.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/research-compiler.d.ts +1 -1
- package/dist/providers/research-compiler.d.ts.map +1 -1
- package/dist/providers/research-executor.d.ts.map +1 -1
- package/dist/providers/runtime-factory.d.ts.map +1 -1
- package/dist/providers/shared/traversal-url.d.ts +3 -0
- package/dist/providers/shared/traversal-url.d.ts.map +1 -1
- package/dist/providers/shopping/index.d.ts.map +1 -1
- package/dist/providers/social/search-quality.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +4 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflow-output-root.d.ts +6 -0
- package/dist/providers/workflow-output-root.d.ts.map +1 -0
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-QF2RFB4J.js → providers-IMFYMMHQ.js} +19 -14
- package/dist/providers-IMFYMMHQ.js.map +1 -0
- package/dist/public-surface/generated-manifest.d.ts +2 -2
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +2 -2
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/relay/protocol.d.ts +3 -1
- package/dist/relay/protocol.d.ts.map +1 -1
- package/dist/relay/relay-server.d.ts +6 -0
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/research-WB6BBCDD.js +295 -0
- package/dist/research-WB6BBCDD.js.map +1 -0
- package/dist/review-BGWVY4RA.js +48 -0
- package/dist/review-BGWVY4RA.js.map +1 -0
- package/dist/review-desktop-LEORC5VS.js +54 -0
- package/dist/review-desktop-LEORC5VS.js.map +1 -0
- package/dist/rpc-4TSKSFGC.js +159 -0
- package/dist/rpc-4TSKSFGC.js.map +1 -0
- package/dist/run-3NBLVWXD.js +180 -0
- package/dist/run-3NBLVWXD.js.map +1 -0
- package/dist/screencast-start-UZVIT3IN.js +67 -0
- package/dist/screencast-start-UZVIT3IN.js.map +1 -0
- package/dist/screencast-stop-NOSJSIUO.js +59 -0
- package/dist/screencast-stop-NOSJSIUO.js.map +1 -0
- package/dist/screenshot-LARG4JQG.js +68 -0
- package/dist/screenshot-LARG4JQG.js.map +1 -0
- package/dist/scroll-VNFMV6TW.js +84 -0
- package/dist/scroll-VNFMV6TW.js.map +1 -0
- package/dist/scroll-into-view-VYRT3JPT.js +71 -0
- package/dist/scroll-into-view-VYRT3JPT.js.map +1 -0
- package/dist/select-KJTUZDVO.js +86 -0
- package/dist/select-KJTUZDVO.js.map +1 -0
- package/dist/serve-EV7K4HKR.js +498 -0
- package/dist/serve-EV7K4HKR.js.map +1 -0
- package/dist/shopping-DTXHVQ2X.js +273 -0
- package/dist/shopping-DTXHVQ2X.js.map +1 -0
- package/dist/skill-lifecycle-5UAZGKSN.js +89 -0
- package/dist/skill-lifecycle-5UAZGKSN.js.map +1 -0
- package/dist/skills-NSXDX6YM.js +26 -0
- package/dist/skills-NSXDX6YM.js.map +1 -0
- package/dist/snapshot-3XQMCMRJ.js +113 -0
- package/dist/snapshot-3XQMCMRJ.js.map +1 -0
- package/dist/status-OXSYA5XD.js +35 -0
- package/dist/status-OXSYA5XD.js.map +1 -0
- package/dist/status-YUMDP5KY.js +132 -0
- package/dist/status-YUMDP5KY.js.map +1 -0
- package/dist/status-capabilities-P4KDSE2Y.js +57 -0
- package/dist/status-capabilities-P4KDSE2Y.js.map +1 -0
- package/dist/text-V3B7UVIH.js +84 -0
- package/dist/text-V3B7UVIH.js.map +1 -0
- package/dist/tools/deps.d.ts +1 -0
- package/dist/tools/deps.d.ts.map +1 -1
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/tools/macro_resolve.d.ts.map +1 -1
- package/dist/tools/product_video_run.d.ts.map +1 -1
- package/dist/tools/research_run.d.ts.map +1 -1
- package/dist/tools/shopping_run.d.ts.map +1 -1
- package/dist/tools/workflow-output.d.ts +3 -0
- package/dist/tools/workflow-output.d.ts.map +1 -0
- package/dist/type-IYBN3ZLR.js +94 -0
- package/dist/type-IYBN3ZLR.js.map +1 -0
- package/dist/uncheck-SG737EGI.js +71 -0
- package/dist/uncheck-SG737EGI.js.map +1 -0
- package/dist/uninstall-KYKGJAX7.js +91 -0
- package/dist/uninstall-KYKGJAX7.js.map +1 -0
- package/dist/update-SMXPYGXS.js +305 -0
- package/dist/update-SMXPYGXS.js.map +1 -0
- package/dist/update-skill-modes-BVX7IVMW.js +38 -0
- package/dist/update-skill-modes-BVX7IVMW.js.map +1 -0
- package/dist/upload-KH6ZABJA.js +56 -0
- package/dist/upload-KH6ZABJA.js.map +1 -0
- package/dist/use-7YDKO3U4.js +63 -0
- package/dist/use-7YDKO3U4.js.map +1 -0
- package/dist/value-RZBWSKKM.js +71 -0
- package/dist/value-RZBWSKKM.js.map +1 -0
- package/dist/visible-BSFTAKXR.js +71 -0
- package/dist/visible-BSFTAKXR.js.map +1 -0
- package/dist/wait-TMTEAYOP.js +109 -0
- package/dist/wait-TMTEAYOP.js.map +1 -0
- package/dist/windows-HIZ23OHS.js +37 -0
- package/dist/windows-HIZ23OHS.js.map +1 -0
- package/extension/dist/background.js +99 -22
- package/extension/dist/ops/ops-runtime.js +85 -7
- package/extension/dist/ops/ops-session-store.js +3 -0
- package/extension/dist/ops/target-session-coordinator.js +3 -0
- package/extension/dist/services/CDPRouter.js +9 -0
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/opendevbrowser-best-practices/SKILL.md +8 -6
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +1 -1
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +3 -2
- package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +39 -2
- package/skills/opendevbrowser-research/SKILL.md +64 -12
- package/skills/opendevbrowser-research/artifacts/research-workflows.md +56 -19
- package/skills/opendevbrowser-research/assets/templates/compact.md +31 -5
- package/skills/opendevbrowser-research/assets/templates/context.json +52 -1
- package/skills/opendevbrowser-research/assets/templates/report.md +57 -4
- package/skills/opendevbrowser-research/examples/sample-input.json +1 -1
- package/skills/opendevbrowser-research/examples/sample-output.md +27 -2
- package/skills/opendevbrowser-research/scripts/run-research.sh +2 -6
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +115 -1
- package/dist/chunk-I5ZCOZZV.js.map +0 -1
- package/dist/chunk-QVWOPIZJ.js.map +0 -1
- package/dist/chunk-T3VVHJTK.js.map +0 -1
- /package/dist/{providers-QF2RFB4J.js.map → chunk-RJNI3BHT.js.map} +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// src/cli/output.ts
|
|
2
|
+
var normalizeExitCode = (code) => {
|
|
3
|
+
return Number.isInteger(code) ? Number(code) : 0;
|
|
4
|
+
};
|
|
5
|
+
var flushStream = (stream) => {
|
|
6
|
+
return new Promise((resolve) => {
|
|
7
|
+
if (!stream || typeof stream.write !== "function") {
|
|
8
|
+
resolve();
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
stream.write("", () => resolve());
|
|
13
|
+
} catch {
|
|
14
|
+
resolve();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
async function flushOutputAndExit(code, proc = process, timeoutMs = 250) {
|
|
19
|
+
const finalCode = normalizeExitCode(code);
|
|
20
|
+
proc.exitCode = finalCode;
|
|
21
|
+
await new Promise((resolve) => {
|
|
22
|
+
let settled = false;
|
|
23
|
+
const finish = () => {
|
|
24
|
+
if (settled) return;
|
|
25
|
+
settled = true;
|
|
26
|
+
resolve();
|
|
27
|
+
};
|
|
28
|
+
const timer = setTimeout(finish, Math.max(0, timeoutMs));
|
|
29
|
+
timer.unref?.();
|
|
30
|
+
void Promise.allSettled([flushStream(proc.stdout), flushStream(proc.stderr)]).finally(() => {
|
|
31
|
+
clearTimeout(timer);
|
|
32
|
+
finish();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
proc.exit(finalCode);
|
|
36
|
+
}
|
|
37
|
+
function writeOutput(payload, options) {
|
|
38
|
+
if (options.quiet) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (options.format === "text") {
|
|
42
|
+
if (typeof payload === "string") {
|
|
43
|
+
console.log(payload);
|
|
44
|
+
} else {
|
|
45
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
46
|
+
}
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (options.format === "stream-json") {
|
|
50
|
+
if (Array.isArray(payload)) {
|
|
51
|
+
for (const entry of payload) {
|
|
52
|
+
console.log(JSON.stringify(entry));
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
console.log(JSON.stringify(payload));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export {
|
|
61
|
+
flushOutputAndExit,
|
|
62
|
+
writeOutput
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=chunk-7GVOUZMQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/output.ts"],"sourcesContent":["import type { OutputFormat } from \"./args\";\n\nexport type OutputOptions = {\n format: OutputFormat;\n quiet?: boolean;\n};\n\ntype ExitProcessLike = Pick<typeof process, \"exit\" | \"exitCode\" | \"stdout\" | \"stderr\">;\n\nconst normalizeExitCode = (code: number | null | undefined): number => {\n return Number.isInteger(code) ? Number(code) : 0;\n};\n\nconst flushStream = (\n stream: ExitProcessLike[\"stdout\"] | ExitProcessLike[\"stderr\"] | undefined | null\n): Promise<void> => {\n return new Promise((resolve) => {\n if (!stream || typeof stream.write !== \"function\") {\n resolve();\n return;\n }\n try {\n stream.write(\"\", () => resolve());\n } catch {\n resolve();\n }\n });\n};\n\nexport async function flushOutputAndExit(\n code: number | null | undefined,\n proc: ExitProcessLike = process,\n timeoutMs = 250\n): Promise<void> {\n const finalCode = normalizeExitCode(code);\n proc.exitCode = finalCode;\n\n await new Promise<void>((resolve) => {\n let settled = false;\n const finish = () => {\n if (settled) return;\n settled = true;\n resolve();\n };\n const timer = setTimeout(finish, Math.max(0, timeoutMs));\n timer.unref?.();\n void Promise.allSettled([flushStream(proc.stdout), flushStream(proc.stderr)]).finally(() => {\n clearTimeout(timer);\n finish();\n });\n });\n\n proc.exit(finalCode);\n}\n\nexport function writeOutput(payload: unknown, options: OutputOptions): void {\n if (options.quiet) {\n return;\n }\n\n if (options.format === \"text\") {\n if (typeof payload === \"string\") {\n console.log(payload);\n } else {\n console.log(JSON.stringify(payload, null, 2));\n }\n return;\n }\n\n if (options.format === \"stream-json\") {\n if (Array.isArray(payload)) {\n for (const entry of payload) {\n console.log(JSON.stringify(entry));\n }\n return;\n }\n }\n\n console.log(JSON.stringify(payload));\n}\n"],"mappings":";AASA,IAAM,oBAAoB,CAAC,SAA4C;AACrE,SAAO,OAAO,UAAU,IAAI,IAAI,OAAO,IAAI,IAAI;AACjD;AAEA,IAAM,cAAc,CAClB,WACkB;AAClB,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,QAAI,CAAC,UAAU,OAAO,OAAO,UAAU,YAAY;AACjD,cAAQ;AACR;AAAA,IACF;AACA,QAAI;AACF,aAAO,MAAM,IAAI,MAAM,QAAQ,CAAC;AAAA,IAClC,QAAQ;AACN,cAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACH;AAEA,eAAsB,mBACpB,MACA,OAAwB,SACxB,YAAY,KACG;AACf,QAAM,YAAY,kBAAkB,IAAI;AACxC,OAAK,WAAW;AAEhB,QAAM,IAAI,QAAc,CAAC,YAAY;AACnC,QAAI,UAAU;AACd,UAAM,SAAS,MAAM;AACnB,UAAI,QAAS;AACb,gBAAU;AACV,cAAQ;AAAA,IACV;AACA,UAAM,QAAQ,WAAW,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC;AACvD,UAAM,QAAQ;AACd,SAAK,QAAQ,WAAW,CAAC,YAAY,KAAK,MAAM,GAAG,YAAY,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,MAAM;AAC1F,mBAAa,KAAK;AAClB,aAAO;AAAA,IACT,CAAC;AAAA,EACH,CAAC;AAED,OAAK,KAAK,SAAS;AACrB;AAEO,SAAS,YAAY,SAAkB,SAA8B;AAC1E,MAAI,QAAQ,OAAO;AACjB;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,QAAQ;AAC7B,QAAI,OAAO,YAAY,UAAU;AAC/B,cAAQ,IAAI,OAAO;AAAA,IACrB,OAAO;AACL,cAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,IAC9C;AACA;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,eAAe;AACpC,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,iBAAW,SAAS,SAAS;AAC3B,gBAAQ,IAAI,KAAK,UAAU,KAAK,CAAC;AAAA,MACnC;AACA;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,IAAI,KAAK,UAAU,OAAO,CAAC;AACrC;","names":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// src/cli/utils/config.ts
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import * as os from "os";
|
|
5
|
+
import { parse as parseJsonc, modify, applyEdits } from "jsonc-parser";
|
|
6
|
+
var PLUGIN_NAME = "opendevbrowser";
|
|
7
|
+
var SCHEMA_URL = "https://opencode.ai/config.json";
|
|
8
|
+
function getGlobalConfigPath() {
|
|
9
|
+
const configDir = process.env.OPENCODE_CONFIG_DIR || path.join(os.homedir(), ".config", "opencode");
|
|
10
|
+
return path.join(configDir, "opencode.json");
|
|
11
|
+
}
|
|
12
|
+
function getLocalConfigPath() {
|
|
13
|
+
return path.join(process.cwd(), "opencode.json");
|
|
14
|
+
}
|
|
15
|
+
function ensureDir(dirPath) {
|
|
16
|
+
if (!fs.existsSync(dirPath)) {
|
|
17
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function readConfig(configPath) {
|
|
21
|
+
if (!fs.existsSync(configPath)) {
|
|
22
|
+
return { content: "", config: {} };
|
|
23
|
+
}
|
|
24
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
25
|
+
const errors = [];
|
|
26
|
+
const parsed = parseJsonc(content, errors, { allowTrailingComma: true });
|
|
27
|
+
if (errors.length > 0) {
|
|
28
|
+
const firstError = errors[0];
|
|
29
|
+
throw new Error(`Invalid JSONC at ${configPath}: parse error at offset ${firstError?.offset ?? 0}`);
|
|
30
|
+
}
|
|
31
|
+
return { content, config: parsed ?? {} };
|
|
32
|
+
}
|
|
33
|
+
function hasPlugin(config, pluginName = PLUGIN_NAME) {
|
|
34
|
+
return config.plugin?.includes(pluginName) ?? false;
|
|
35
|
+
}
|
|
36
|
+
function createConfigWithPlugin(pluginName = PLUGIN_NAME) {
|
|
37
|
+
return {
|
|
38
|
+
$schema: SCHEMA_URL,
|
|
39
|
+
plugin: [pluginName]
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function updateConfigContent(content, pluginName = PLUGIN_NAME) {
|
|
43
|
+
if (!content.trim()) {
|
|
44
|
+
return JSON.stringify(createConfigWithPlugin(pluginName), null, 2) + "\n";
|
|
45
|
+
}
|
|
46
|
+
const parsed = parseJsonc(content, [], { allowTrailingComma: true }) ?? {};
|
|
47
|
+
if (parsed.plugin?.includes(pluginName)) {
|
|
48
|
+
return content;
|
|
49
|
+
}
|
|
50
|
+
let result = content;
|
|
51
|
+
if (!parsed.$schema) {
|
|
52
|
+
const edits2 = modify(result, ["$schema"], SCHEMA_URL, { formattingOptions: { tabSize: 2, insertSpaces: true } });
|
|
53
|
+
result = applyEdits(result, edits2);
|
|
54
|
+
}
|
|
55
|
+
const newPlugins = parsed.plugin ? [...parsed.plugin, pluginName] : [pluginName];
|
|
56
|
+
const edits = modify(result, ["plugin"], newPlugins, { formattingOptions: { tabSize: 2, insertSpaces: true } });
|
|
57
|
+
result = applyEdits(result, edits);
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
function removePluginFromContent(content, pluginName = PLUGIN_NAME) {
|
|
61
|
+
if (!content.trim()) {
|
|
62
|
+
return content;
|
|
63
|
+
}
|
|
64
|
+
const parsed = parseJsonc(content, [], { allowTrailingComma: true }) ?? {};
|
|
65
|
+
if (!parsed.plugin?.includes(pluginName)) {
|
|
66
|
+
return content;
|
|
67
|
+
}
|
|
68
|
+
const newPlugins = parsed.plugin.filter((p) => p !== pluginName);
|
|
69
|
+
const edits = modify(content, ["plugin"], newPlugins.length > 0 ? newPlugins : void 0, {
|
|
70
|
+
formattingOptions: { tabSize: 2, insertSpaces: true }
|
|
71
|
+
});
|
|
72
|
+
return applyEdits(content, edits);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export {
|
|
76
|
+
getGlobalConfigPath,
|
|
77
|
+
getLocalConfigPath,
|
|
78
|
+
ensureDir,
|
|
79
|
+
readConfig,
|
|
80
|
+
hasPlugin,
|
|
81
|
+
updateConfigContent,
|
|
82
|
+
removePluginFromContent
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=chunk-7THCPS52.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/utils/config.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport { parse as parseJsonc, modify, applyEdits } from \"jsonc-parser\";\nimport { writeFileAtomic } from \"../../utils/fs\";\n\nconst PLUGIN_NAME = \"opendevbrowser\";\nconst SCHEMA_URL = \"https://opencode.ai/config.json\";\n\nexport interface OpenCodeConfig {\n $schema?: string;\n plugin?: string[];\n [key: string]: unknown;\n}\n\nexport function getGlobalConfigPath(): string {\n const configDir = process.env.OPENCODE_CONFIG_DIR\n || path.join(os.homedir(), \".config\", \"opencode\");\n return path.join(configDir, \"opencode.json\");\n}\n\nexport function getLocalConfigPath(): string {\n return path.join(process.cwd(), \"opencode.json\");\n}\n\nexport function ensureDir(dirPath: string): void {\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n }\n}\n\nexport function readConfig(configPath: string): { content: string; config: OpenCodeConfig } {\n if (!fs.existsSync(configPath)) {\n return { content: \"\", config: {} };\n }\n\n const content = fs.readFileSync(configPath, \"utf-8\");\n const errors: Array<{ error: number; offset: number; length: number }> = [];\n const parsed = parseJsonc(content, errors, { allowTrailingComma: true });\n\n if (errors.length > 0) {\n const firstError = errors[0];\n throw new Error(`Invalid JSONC at ${configPath}: parse error at offset ${firstError?.offset ?? 0}`);\n }\n\n return { content, config: (parsed ?? {}) as OpenCodeConfig };\n}\n\nexport function writeConfig(configPath: string, config: OpenCodeConfig): void {\n ensureDir(path.dirname(configPath));\n const content = JSON.stringify(config, null, 2) + \"\\n\";\n writeFileAtomic(configPath, content);\n}\n\nexport function addPlugin(config: OpenCodeConfig, pluginName: string = PLUGIN_NAME): OpenCodeConfig {\n const result = { ...config };\n\n if (!result.$schema) {\n result.$schema = SCHEMA_URL;\n }\n\n if (!result.plugin) {\n result.plugin = [pluginName];\n } else if (!result.plugin.includes(pluginName)) {\n result.plugin = [...result.plugin, pluginName];\n }\n\n return result;\n}\n\nexport function removePlugin(config: OpenCodeConfig, pluginName: string = PLUGIN_NAME): OpenCodeConfig {\n const result = { ...config };\n\n if (result.plugin) {\n result.plugin = result.plugin.filter((p) => p !== pluginName);\n if (result.plugin.length === 0) {\n delete result.plugin;\n }\n }\n\n return result;\n}\n\nexport function hasPlugin(config: OpenCodeConfig, pluginName: string = PLUGIN_NAME): boolean {\n return config.plugin?.includes(pluginName) ?? false;\n}\n\nexport function createConfigWithPlugin(pluginName: string = PLUGIN_NAME): OpenCodeConfig {\n return {\n $schema: SCHEMA_URL,\n plugin: [pluginName]\n };\n}\n\nexport function updateConfigContent(content: string, pluginName: string = PLUGIN_NAME): string {\n if (!content.trim()) {\n return JSON.stringify(createConfigWithPlugin(pluginName), null, 2) + \"\\n\";\n }\n\n const parsed = parseJsonc(content, [], { allowTrailingComma: true }) as OpenCodeConfig ?? {};\n\n if (parsed.plugin?.includes(pluginName)) {\n return content;\n }\n\n let result = content;\n\n if (!parsed.$schema) {\n const edits = modify(result, [\"$schema\"], SCHEMA_URL, { formattingOptions: { tabSize: 2, insertSpaces: true } });\n result = applyEdits(result, edits);\n }\n\n const newPlugins = parsed.plugin ? [...parsed.plugin, pluginName] : [pluginName];\n const edits = modify(result, [\"plugin\"], newPlugins, { formattingOptions: { tabSize: 2, insertSpaces: true } });\n result = applyEdits(result, edits);\n\n return result;\n}\n\nexport function removePluginFromContent(content: string, pluginName: string = PLUGIN_NAME): string {\n if (!content.trim()) {\n return content;\n }\n\n const parsed = parseJsonc(content, [], { allowTrailingComma: true }) as OpenCodeConfig ?? {};\n\n if (!parsed.plugin?.includes(pluginName)) {\n return content;\n }\n\n const newPlugins = parsed.plugin.filter((p) => p !== pluginName);\n const edits = modify(content, [\"plugin\"], newPlugins.length > 0 ? newPlugins : undefined, {\n formattingOptions: { tabSize: 2, insertSpaces: true }\n });\n\n return applyEdits(content, edits);\n}\n"],"mappings":";AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,SAAS,SAAS,YAAY,QAAQ,kBAAkB;AAGxD,IAAM,cAAc;AACpB,IAAM,aAAa;AAQZ,SAAS,sBAA8B;AAC5C,QAAM,YAAY,QAAQ,IAAI,uBACpB,UAAQ,WAAQ,GAAG,WAAW,UAAU;AAClD,SAAY,UAAK,WAAW,eAAe;AAC7C;AAEO,SAAS,qBAA6B;AAC3C,SAAY,UAAK,QAAQ,IAAI,GAAG,eAAe;AACjD;AAEO,SAAS,UAAU,SAAuB;AAC/C,MAAI,CAAI,cAAW,OAAO,GAAG;AAC3B,IAAG,aAAU,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,EAC3C;AACF;AAEO,SAAS,WAAW,YAAiE;AAC1F,MAAI,CAAI,cAAW,UAAU,GAAG;AAC9B,WAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,EAAE;AAAA,EACnC;AAEA,QAAM,UAAa,gBAAa,YAAY,OAAO;AACnD,QAAM,SAAmE,CAAC;AAC1E,QAAM,SAAS,WAAW,SAAS,QAAQ,EAAE,oBAAoB,KAAK,CAAC;AAEvE,MAAI,OAAO,SAAS,GAAG;AACrB,UAAM,aAAa,OAAO,CAAC;AAC3B,UAAM,IAAI,MAAM,oBAAoB,UAAU,2BAA2B,YAAY,UAAU,CAAC,EAAE;AAAA,EACpG;AAEA,SAAO,EAAE,SAAS,QAAS,UAAU,CAAC,EAAqB;AAC7D;AAqCO,SAAS,UAAU,QAAwB,aAAqB,aAAsB;AAC3F,SAAO,OAAO,QAAQ,SAAS,UAAU,KAAK;AAChD;AAEO,SAAS,uBAAuB,aAAqB,aAA6B;AACvF,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ,CAAC,UAAU;AAAA,EACrB;AACF;AAEO,SAAS,oBAAoB,SAAiB,aAAqB,aAAqB;AAC7F,MAAI,CAAC,QAAQ,KAAK,GAAG;AACnB,WAAO,KAAK,UAAU,uBAAuB,UAAU,GAAG,MAAM,CAAC,IAAI;AAAA,EACvE;AAEA,QAAM,SAAS,WAAW,SAAS,CAAC,GAAG,EAAE,oBAAoB,KAAK,CAAC,KAAuB,CAAC;AAE3F,MAAI,OAAO,QAAQ,SAAS,UAAU,GAAG;AACvC,WAAO;AAAA,EACT;AAEA,MAAI,SAAS;AAEb,MAAI,CAAC,OAAO,SAAS;AACnB,UAAMA,SAAQ,OAAO,QAAQ,CAAC,SAAS,GAAG,YAAY,EAAE,mBAAmB,EAAE,SAAS,GAAG,cAAc,KAAK,EAAE,CAAC;AAC/G,aAAS,WAAW,QAAQA,MAAK;AAAA,EACnC;AAEA,QAAM,aAAa,OAAO,SAAS,CAAC,GAAG,OAAO,QAAQ,UAAU,IAAI,CAAC,UAAU;AAC/E,QAAM,QAAQ,OAAO,QAAQ,CAAC,QAAQ,GAAG,YAAY,EAAE,mBAAmB,EAAE,SAAS,GAAG,cAAc,KAAK,EAAE,CAAC;AAC9G,WAAS,WAAW,QAAQ,KAAK;AAEjC,SAAO;AACT;AAEO,SAAS,wBAAwB,SAAiB,aAAqB,aAAqB;AACjG,MAAI,CAAC,QAAQ,KAAK,GAAG;AACnB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,WAAW,SAAS,CAAC,GAAG,EAAE,oBAAoB,KAAK,CAAC,KAAuB,CAAC;AAE3F,MAAI,CAAC,OAAO,QAAQ,SAAS,UAAU,GAAG;AACxC,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,OAAO,OAAO,OAAO,CAAC,MAAM,MAAM,UAAU;AAC/D,QAAM,QAAQ,OAAO,SAAS,CAAC,QAAQ,GAAG,WAAW,SAAS,IAAI,aAAa,QAAW;AAAA,IACxF,mBAAmB,EAAE,SAAS,GAAG,cAAc,KAAK;AAAA,EACtD,CAAC;AAED,SAAO,WAAW,SAAS,KAAK;AAClC;","names":["edits"]}
|
|
@@ -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-MD655IPO.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-AHEWXOKY.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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/crypto.ts"],"sourcesContent":["import { randomBytes } from \"crypto\";\n\nexport function generateSecureToken(): string {\n return randomBytes(32).toString(\"hex\");\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;AAErB,SAAS,sBAA8B;AAC5C,SAAO,YAAY,EAAE,EAAE,SAAS,KAAK;AACvC;","names":[]}
|