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,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseSessionInspectorArgs
|
|
3
|
+
} from "./chunk-2SIMIPLY.js";
|
|
4
|
+
import "./chunk-RJNI3BHT.js";
|
|
5
|
+
import "./chunk-RPXWUCQQ.js";
|
|
6
|
+
import {
|
|
7
|
+
callDaemon
|
|
8
|
+
} from "./chunk-OYNLAZQU.js";
|
|
9
|
+
import "./chunk-LBPELU7L.js";
|
|
10
|
+
import "./chunk-SXAGSEKZ.js";
|
|
11
|
+
import "./chunk-MX3NFLCE.js";
|
|
12
|
+
import "./chunk-ASMHEEKY.js";
|
|
13
|
+
import {
|
|
14
|
+
buildNextStepMessage,
|
|
15
|
+
readSuggestedNextAction
|
|
16
|
+
} from "./chunk-37VSRUW4.js";
|
|
17
|
+
import {
|
|
18
|
+
createUsageError
|
|
19
|
+
} from "./chunk-IPE7TF2P.js";
|
|
20
|
+
import "./chunk-STGGGVYT.js";
|
|
21
|
+
import "./chunk-3ILXPKSJ.js";
|
|
22
|
+
import "./chunk-TBUCZX4A.js";
|
|
23
|
+
import "./chunk-Y2KL55OG.js";
|
|
24
|
+
import "./chunk-5SWZDVOW.js";
|
|
25
|
+
import "./chunk-S6S2UP6U.js";
|
|
26
|
+
import "./chunk-S5KZQJJI.js";
|
|
27
|
+
import "./chunk-KZ2IXVQT.js";
|
|
28
|
+
import "./chunk-WHQZBUNY.js";
|
|
29
|
+
import "./chunk-FUSXMW3G.js";
|
|
30
|
+
|
|
31
|
+
// src/cli/commands/session/inspector.ts
|
|
32
|
+
async function runSessionInspector(args) {
|
|
33
|
+
const parsed = parseSessionInspectorArgs(args.rawArgs);
|
|
34
|
+
if (!parsed.sessionId) {
|
|
35
|
+
throw createUsageError("Missing --session-id");
|
|
36
|
+
}
|
|
37
|
+
const result = await callDaemon("session.inspect", {
|
|
38
|
+
sessionId: parsed.sessionId,
|
|
39
|
+
...typeof parsed.includeUrls === "boolean" ? { includeUrls: parsed.includeUrls } : {},
|
|
40
|
+
sinceConsoleSeq: parsed.sinceConsoleSeq,
|
|
41
|
+
sinceNetworkSeq: parsed.sinceNetworkSeq,
|
|
42
|
+
sinceExceptionSeq: parsed.sinceExceptionSeq,
|
|
43
|
+
max: parsed.max,
|
|
44
|
+
requestId: parsed.requestId
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
success: true,
|
|
48
|
+
message: buildNextStepMessage(
|
|
49
|
+
"Session inspector snapshot captured.",
|
|
50
|
+
readSuggestedNextAction(result)
|
|
51
|
+
),
|
|
52
|
+
data: result
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
var __test__ = {
|
|
56
|
+
parseSessionInspectorArgs
|
|
57
|
+
};
|
|
58
|
+
export {
|
|
59
|
+
__test__,
|
|
60
|
+
runSessionInspector
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=inspector-6S5FKUZQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/session/inspector.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { buildNextStepMessage, readSuggestedNextAction } from \"../../utils/workflow-message\";\nimport { parseSessionInspectorArgs } from \"./inspector-shared\";\n\nexport async function runSessionInspector(args: ParsedArgs) {\n const parsed = parseSessionInspectorArgs(args.rawArgs);\n if (!parsed.sessionId) {\n throw createUsageError(\"Missing --session-id\");\n }\n\n const result = await callDaemon(\"session.inspect\", {\n sessionId: parsed.sessionId,\n ...(typeof parsed.includeUrls === \"boolean\" ? { includeUrls: parsed.includeUrls } : {}),\n sinceConsoleSeq: parsed.sinceConsoleSeq,\n sinceNetworkSeq: parsed.sinceNetworkSeq,\n sinceExceptionSeq: parsed.sinceExceptionSeq,\n max: parsed.max,\n requestId: parsed.requestId\n });\n\n return {\n success: true,\n message: buildNextStepMessage(\n \"Session inspector snapshot captured.\",\n readSuggestedNextAction(result)\n ),\n data: result\n };\n}\n\nexport const __test__ = {\n parseSessionInspectorArgs\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,eAAsB,oBAAoB,MAAkB;AAC1D,QAAM,SAAS,0BAA0B,KAAK,OAAO;AACrD,MAAI,CAAC,OAAO,WAAW;AACrB,UAAM,iBAAiB,sBAAsB;AAAA,EAC/C;AAEA,QAAM,SAAS,MAAM,WAAW,mBAAmB;AAAA,IACjD,WAAW,OAAO;AAAA,IAClB,GAAI,OAAO,OAAO,gBAAgB,YAAY,EAAE,aAAa,OAAO,YAAY,IAAI,CAAC;AAAA,IACrF,iBAAiB,OAAO;AAAA,IACxB,iBAAiB,OAAO;AAAA,IACxB,mBAAmB,OAAO;AAAA,IAC1B,KAAK,OAAO;AAAA,IACZ,WAAW,OAAO;AAAA,EACpB,CAAC;AAED,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,MACA,wBAAwB,MAAM;AAAA,IAChC;AAAA,IACA,MAAM;AAAA,EACR;AACF;AAEO,IAAM,WAAW;AAAA,EACtB;AACF;","names":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseReviewCommandArgs
|
|
3
|
+
} from "./chunk-JZXD6FWR.js";
|
|
4
|
+
import {
|
|
5
|
+
parseSessionInspectorArgs
|
|
6
|
+
} from "./chunk-2SIMIPLY.js";
|
|
7
|
+
import {
|
|
8
|
+
parseOptionalChallengeAutomationMode
|
|
9
|
+
} from "./chunk-N44UXKIB.js";
|
|
10
|
+
import "./chunk-RJNI3BHT.js";
|
|
11
|
+
import {
|
|
12
|
+
parseNumberFlag,
|
|
13
|
+
parseOptionalStringFlag
|
|
14
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
15
|
+
import {
|
|
16
|
+
DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
|
|
17
|
+
} from "./chunk-OW5HMYMI.js";
|
|
18
|
+
import {
|
|
19
|
+
callDaemon
|
|
20
|
+
} from "./chunk-OYNLAZQU.js";
|
|
21
|
+
import "./chunk-LBPELU7L.js";
|
|
22
|
+
import "./chunk-SXAGSEKZ.js";
|
|
23
|
+
import "./chunk-MX3NFLCE.js";
|
|
24
|
+
import "./chunk-ASMHEEKY.js";
|
|
25
|
+
import {
|
|
26
|
+
buildNextStepMessage,
|
|
27
|
+
readSuggestedNextAction,
|
|
28
|
+
readSuggestedStepReason
|
|
29
|
+
} from "./chunk-37VSRUW4.js";
|
|
30
|
+
import {
|
|
31
|
+
createUsageError
|
|
32
|
+
} from "./chunk-IPE7TF2P.js";
|
|
33
|
+
import "./chunk-STGGGVYT.js";
|
|
34
|
+
import "./chunk-3ILXPKSJ.js";
|
|
35
|
+
import "./chunk-TBUCZX4A.js";
|
|
36
|
+
import "./chunk-Y2KL55OG.js";
|
|
37
|
+
import "./chunk-5SWZDVOW.js";
|
|
38
|
+
import "./chunk-S6S2UP6U.js";
|
|
39
|
+
import "./chunk-S5KZQJJI.js";
|
|
40
|
+
import "./chunk-KZ2IXVQT.js";
|
|
41
|
+
import "./chunk-WHQZBUNY.js";
|
|
42
|
+
import "./chunk-FUSXMW3G.js";
|
|
43
|
+
|
|
44
|
+
// src/cli/commands/session/inspector-audit.ts
|
|
45
|
+
function parseOptionalTimeoutMs(rawArgs) {
|
|
46
|
+
const value = parseOptionalStringFlag(rawArgs, "--timeout-ms");
|
|
47
|
+
return typeof value === "string" ? parseNumberFlag(value, "--timeout-ms", { min: 1 }) : void 0;
|
|
48
|
+
}
|
|
49
|
+
async function runSessionInspectorAudit(args) {
|
|
50
|
+
const reviewArgs = parseReviewCommandArgs(args.rawArgs);
|
|
51
|
+
const inspectorArgs = parseSessionInspectorArgs(args.rawArgs);
|
|
52
|
+
const challengeAutomationMode = parseOptionalChallengeAutomationMode(args.rawArgs);
|
|
53
|
+
const timeoutMs = parseOptionalTimeoutMs(args.rawArgs);
|
|
54
|
+
const sessionId = reviewArgs.sessionId ?? inspectorArgs.sessionId;
|
|
55
|
+
if (!sessionId) {
|
|
56
|
+
throw createUsageError("Missing --session-id");
|
|
57
|
+
}
|
|
58
|
+
const result = await callDaemon("session.inspectAudit", {
|
|
59
|
+
sessionId,
|
|
60
|
+
...typeof reviewArgs.targetId === "string" ? { targetId: reviewArgs.targetId } : {},
|
|
61
|
+
...typeof reviewArgs.reason === "string" ? { reason: reviewArgs.reason } : {},
|
|
62
|
+
...typeof reviewArgs.maxChars === "number" ? { maxChars: reviewArgs.maxChars } : {},
|
|
63
|
+
...typeof reviewArgs.cursor === "string" ? { cursor: reviewArgs.cursor } : {},
|
|
64
|
+
...typeof inspectorArgs.includeUrls === "boolean" ? { includeUrls: inspectorArgs.includeUrls } : {},
|
|
65
|
+
...typeof inspectorArgs.sinceConsoleSeq === "number" ? { sinceConsoleSeq: inspectorArgs.sinceConsoleSeq } : {},
|
|
66
|
+
...typeof inspectorArgs.sinceNetworkSeq === "number" ? { sinceNetworkSeq: inspectorArgs.sinceNetworkSeq } : {},
|
|
67
|
+
...typeof inspectorArgs.sinceExceptionSeq === "number" ? { sinceExceptionSeq: inspectorArgs.sinceExceptionSeq } : {},
|
|
68
|
+
...typeof inspectorArgs.max === "number" ? { max: inspectorArgs.max } : {},
|
|
69
|
+
...typeof inspectorArgs.requestId === "string" ? { requestId: inspectorArgs.requestId } : {},
|
|
70
|
+
...challengeAutomationMode ? { challengeAutomationMode } : {}
|
|
71
|
+
}, {
|
|
72
|
+
timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
|
|
73
|
+
});
|
|
74
|
+
const nextStep = readSuggestedNextAction(result) ?? readSuggestedStepReason(result);
|
|
75
|
+
return {
|
|
76
|
+
success: true,
|
|
77
|
+
message: buildNextStepMessage("Correlated audit bundle captured.", nextStep),
|
|
78
|
+
data: result
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export {
|
|
82
|
+
runSessionInspectorAudit
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=inspector-audit-ARGEGOS7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/session/inspector-audit.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS } from \"../../transport-timeouts\";\nimport { parseOptionalStringFlag, parseNumberFlag } from \"../../utils/parse\";\nimport {\n buildNextStepMessage,\n readSuggestedNextAction,\n readSuggestedStepReason\n} from \"../../utils/workflow-message\";\nimport { parseOptionalChallengeAutomationMode } from \"../challenge-automation-mode\";\nimport { parseReviewCommandArgs } from \"../nav/review-shared\";\nimport { parseSessionInspectorArgs } from \"./inspector-shared\";\n\nfunction parseOptionalTimeoutMs(rawArgs: string[]): number | undefined {\n const value = parseOptionalStringFlag(rawArgs, \"--timeout-ms\");\n return typeof value === \"string\"\n ? parseNumberFlag(value, \"--timeout-ms\", { min: 1 })\n : undefined;\n}\n\nexport async function runSessionInspectorAudit(args: ParsedArgs) {\n const reviewArgs = parseReviewCommandArgs(args.rawArgs);\n const inspectorArgs = parseSessionInspectorArgs(args.rawArgs);\n const challengeAutomationMode = parseOptionalChallengeAutomationMode(args.rawArgs);\n const timeoutMs = parseOptionalTimeoutMs(args.rawArgs);\n const sessionId = reviewArgs.sessionId ?? inspectorArgs.sessionId;\n if (!sessionId) {\n throw createUsageError(\"Missing --session-id\");\n }\n const result = await callDaemon(\"session.inspectAudit\", {\n sessionId,\n ...(typeof reviewArgs.targetId === \"string\" ? { targetId: reviewArgs.targetId } : {}),\n ...(typeof reviewArgs.reason === \"string\" ? { reason: reviewArgs.reason } : {}),\n ...(typeof reviewArgs.maxChars === \"number\" ? { maxChars: reviewArgs.maxChars } : {}),\n ...(typeof reviewArgs.cursor === \"string\" ? { cursor: reviewArgs.cursor } : {}),\n ...(typeof inspectorArgs.includeUrls === \"boolean\" ? { includeUrls: inspectorArgs.includeUrls } : {}),\n ...(typeof inspectorArgs.sinceConsoleSeq === \"number\" ? { sinceConsoleSeq: inspectorArgs.sinceConsoleSeq } : {}),\n ...(typeof inspectorArgs.sinceNetworkSeq === \"number\" ? { sinceNetworkSeq: inspectorArgs.sinceNetworkSeq } : {}),\n ...(typeof inspectorArgs.sinceExceptionSeq === \"number\" ? { sinceExceptionSeq: inspectorArgs.sinceExceptionSeq } : {}),\n ...(typeof inspectorArgs.max === \"number\" ? { max: inspectorArgs.max } : {}),\n ...(typeof inspectorArgs.requestId === \"string\" ? { requestId: inspectorArgs.requestId } : {}),\n ...(challengeAutomationMode ? { challengeAutomationMode } : {})\n }, {\n timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS\n });\n\n const nextStep = readSuggestedNextAction(result)\n ?? readSuggestedStepReason(result);\n\n return {\n success: true,\n message: buildNextStepMessage(\"Correlated audit bundle captured.\", nextStep),\n data: result\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,uBAAuB,SAAuC;AACrE,QAAM,QAAQ,wBAAwB,SAAS,cAAc;AAC7D,SAAO,OAAO,UAAU,WACpB,gBAAgB,OAAO,gBAAgB,EAAE,KAAK,EAAE,CAAC,IACjD;AACN;AAEA,eAAsB,yBAAyB,MAAkB;AAC/D,QAAM,aAAa,uBAAuB,KAAK,OAAO;AACtD,QAAM,gBAAgB,0BAA0B,KAAK,OAAO;AAC5D,QAAM,0BAA0B,qCAAqC,KAAK,OAAO;AACjF,QAAM,YAAY,uBAAuB,KAAK,OAAO;AACrD,QAAM,YAAY,WAAW,aAAa,cAAc;AACxD,MAAI,CAAC,WAAW;AACd,UAAM,iBAAiB,sBAAsB;AAAA,EAC/C;AACA,QAAM,SAAS,MAAM,WAAW,wBAAwB;AAAA,IACtD;AAAA,IACA,GAAI,OAAO,WAAW,aAAa,WAAW,EAAE,UAAU,WAAW,SAAS,IAAI,CAAC;AAAA,IACnF,GAAI,OAAO,WAAW,WAAW,WAAW,EAAE,QAAQ,WAAW,OAAO,IAAI,CAAC;AAAA,IAC7E,GAAI,OAAO,WAAW,aAAa,WAAW,EAAE,UAAU,WAAW,SAAS,IAAI,CAAC;AAAA,IACnF,GAAI,OAAO,WAAW,WAAW,WAAW,EAAE,QAAQ,WAAW,OAAO,IAAI,CAAC;AAAA,IAC7E,GAAI,OAAO,cAAc,gBAAgB,YAAY,EAAE,aAAa,cAAc,YAAY,IAAI,CAAC;AAAA,IACnG,GAAI,OAAO,cAAc,oBAAoB,WAAW,EAAE,iBAAiB,cAAc,gBAAgB,IAAI,CAAC;AAAA,IAC9G,GAAI,OAAO,cAAc,oBAAoB,WAAW,EAAE,iBAAiB,cAAc,gBAAgB,IAAI,CAAC;AAAA,IAC9G,GAAI,OAAO,cAAc,sBAAsB,WAAW,EAAE,mBAAmB,cAAc,kBAAkB,IAAI,CAAC;AAAA,IACpH,GAAI,OAAO,cAAc,QAAQ,WAAW,EAAE,KAAK,cAAc,IAAI,IAAI,CAAC;AAAA,IAC1E,GAAI,OAAO,cAAc,cAAc,WAAW,EAAE,WAAW,cAAc,UAAU,IAAI,CAAC;AAAA,IAC5F,GAAI,0BAA0B,EAAE,wBAAwB,IAAI,CAAC;AAAA,EAC/D,GAAG;AAAA,IACD,WAAW,aAAa;AAAA,EAC1B,CAAC;AAED,QAAM,WAAW,wBAAwB,MAAM,KAC1C,wBAAwB,MAAM;AAEnC,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS,qBAAqB,qCAAqC,QAAQ;AAAA,IAC3E,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseOptionalChallengeAutomationMode
|
|
3
|
+
} from "./chunk-N44UXKIB.js";
|
|
4
|
+
import "./chunk-RJNI3BHT.js";
|
|
5
|
+
import {
|
|
6
|
+
parseNumberFlag,
|
|
7
|
+
parseOptionalStringFlag
|
|
8
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
|
|
11
|
+
} from "./chunk-OW5HMYMI.js";
|
|
12
|
+
import {
|
|
13
|
+
callDaemon
|
|
14
|
+
} from "./chunk-OYNLAZQU.js";
|
|
15
|
+
import "./chunk-LBPELU7L.js";
|
|
16
|
+
import "./chunk-SXAGSEKZ.js";
|
|
17
|
+
import "./chunk-MX3NFLCE.js";
|
|
18
|
+
import "./chunk-ASMHEEKY.js";
|
|
19
|
+
import {
|
|
20
|
+
buildNextStepMessage,
|
|
21
|
+
readSuggestedStepReason
|
|
22
|
+
} from "./chunk-37VSRUW4.js";
|
|
23
|
+
import {
|
|
24
|
+
createUsageError
|
|
25
|
+
} from "./chunk-IPE7TF2P.js";
|
|
26
|
+
import "./chunk-STGGGVYT.js";
|
|
27
|
+
import "./chunk-3ILXPKSJ.js";
|
|
28
|
+
import "./chunk-TBUCZX4A.js";
|
|
29
|
+
import "./chunk-Y2KL55OG.js";
|
|
30
|
+
import "./chunk-5SWZDVOW.js";
|
|
31
|
+
import "./chunk-S6S2UP6U.js";
|
|
32
|
+
import "./chunk-S5KZQJJI.js";
|
|
33
|
+
import "./chunk-KZ2IXVQT.js";
|
|
34
|
+
import "./chunk-WHQZBUNY.js";
|
|
35
|
+
import "./chunk-FUSXMW3G.js";
|
|
36
|
+
|
|
37
|
+
// src/cli/commands/session/inspector-plan.ts
|
|
38
|
+
function parseOptionalTimeoutMs(rawArgs) {
|
|
39
|
+
const value = parseOptionalStringFlag(rawArgs, "--timeout-ms");
|
|
40
|
+
return typeof value === "string" ? parseNumberFlag(value, "--timeout-ms", { min: 1 }) : void 0;
|
|
41
|
+
}
|
|
42
|
+
async function runSessionInspectorPlan(args) {
|
|
43
|
+
const sessionId = parseOptionalStringFlag(args.rawArgs, "--session-id");
|
|
44
|
+
const targetId = parseOptionalStringFlag(args.rawArgs, "--target-id");
|
|
45
|
+
const challengeAutomationMode = parseOptionalChallengeAutomationMode(args.rawArgs);
|
|
46
|
+
const timeoutMs = parseOptionalTimeoutMs(args.rawArgs);
|
|
47
|
+
if (!sessionId) {
|
|
48
|
+
throw createUsageError("Missing --session-id");
|
|
49
|
+
}
|
|
50
|
+
const result = await callDaemon("session.inspectPlan", {
|
|
51
|
+
sessionId,
|
|
52
|
+
...typeof targetId === "string" ? { targetId } : {},
|
|
53
|
+
...challengeAutomationMode ? { challengeAutomationMode } : {}
|
|
54
|
+
}, {
|
|
55
|
+
timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
message: buildNextStepMessage(
|
|
60
|
+
"Challenge inspect plan captured.",
|
|
61
|
+
readSuggestedStepReason(result)
|
|
62
|
+
),
|
|
63
|
+
data: result
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
runSessionInspectorPlan
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=inspector-plan-CSG5HZOC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/session/inspector-plan.ts"],"sourcesContent":["import type { ParsedArgs } from \"../../args\";\nimport { callDaemon } from \"../../client\";\nimport { createUsageError } from \"../../errors\";\nimport { DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS } from \"../../transport-timeouts\";\nimport { parseOptionalStringFlag, parseNumberFlag } from \"../../utils/parse\";\nimport { buildNextStepMessage, readSuggestedStepReason } from \"../../utils/workflow-message\";\nimport { parseOptionalChallengeAutomationMode } from \"../challenge-automation-mode\";\n\nfunction parseOptionalTimeoutMs(rawArgs: string[]): number | undefined {\n const value = parseOptionalStringFlag(rawArgs, \"--timeout-ms\");\n return typeof value === \"string\"\n ? parseNumberFlag(value, \"--timeout-ms\", { min: 1 })\n : undefined;\n}\n\nexport async function runSessionInspectorPlan(args: ParsedArgs) {\n const sessionId = parseOptionalStringFlag(args.rawArgs, \"--session-id\");\n const targetId = parseOptionalStringFlag(args.rawArgs, \"--target-id\");\n const challengeAutomationMode = parseOptionalChallengeAutomationMode(args.rawArgs);\n const timeoutMs = parseOptionalTimeoutMs(args.rawArgs);\n if (!sessionId) {\n throw createUsageError(\"Missing --session-id\");\n }\n const result = await callDaemon(\"session.inspectPlan\", {\n sessionId,\n ...(typeof targetId === \"string\" ? { targetId } : {}),\n ...(challengeAutomationMode ? { challengeAutomationMode } : {})\n }, {\n timeoutMs: timeoutMs ?? DEFAULT_REVIEW_TRANSPORT_TIMEOUT_MS\n });\n return {\n success: true,\n message: buildNextStepMessage(\n \"Challenge inspect plan captured.\",\n readSuggestedStepReason(result)\n ),\n data: result\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,SAAS,uBAAuB,SAAuC;AACrE,QAAM,QAAQ,wBAAwB,SAAS,cAAc;AAC7D,SAAO,OAAO,UAAU,WACpB,gBAAgB,OAAO,gBAAgB,EAAE,KAAK,EAAE,CAAC,IACjD;AACN;AAEA,eAAsB,wBAAwB,MAAkB;AAC9D,QAAM,YAAY,wBAAwB,KAAK,SAAS,cAAc;AACtE,QAAM,WAAW,wBAAwB,KAAK,SAAS,aAAa;AACpE,QAAM,0BAA0B,qCAAqC,KAAK,OAAO;AACjF,QAAM,YAAY,uBAAuB,KAAK,OAAO;AACrD,MAAI,CAAC,WAAW;AACd,UAAM,iBAAiB,sBAAsB;AAAA,EAC/C;AACA,QAAM,SAAS,MAAM,WAAW,uBAAuB;AAAA,IACrD;AAAA,IACA,GAAI,OAAO,aAAa,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACnD,GAAI,0BAA0B,EAAE,wBAAwB,IAAI,CAAC;AAAA,EAC/D,GAAG;AAAA,IACD,WAAW,aAAa;AAAA,EAC1B,CAAC;AACD,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,MACA,wBAAwB,MAAM;AAAA,IAChC;AAAA,IACA,MAAM;AAAA,EACR;AACF;","names":[]}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveWorkflowOutputDirFlag
|
|
3
|
+
} from "./chunk-PDPJN2OP.js";
|
|
4
|
+
import "./chunk-RJNI3BHT.js";
|
|
5
|
+
import {
|
|
6
|
+
parseBooleanFlag,
|
|
7
|
+
parseNumberFlag,
|
|
8
|
+
parseOptionalStringFlag,
|
|
9
|
+
parseRepeatedStringFlag
|
|
10
|
+
} from "./chunk-RPXWUCQQ.js";
|
|
11
|
+
import {
|
|
12
|
+
DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS
|
|
13
|
+
} from "./chunk-OW5HMYMI.js";
|
|
14
|
+
import {
|
|
15
|
+
callDaemon
|
|
16
|
+
} from "./chunk-OYNLAZQU.js";
|
|
17
|
+
import "./chunk-LBPELU7L.js";
|
|
18
|
+
import "./chunk-SXAGSEKZ.js";
|
|
19
|
+
import "./chunk-MX3NFLCE.js";
|
|
20
|
+
import "./chunk-ASMHEEKY.js";
|
|
21
|
+
import {
|
|
22
|
+
buildWorkflowCompletionMessage
|
|
23
|
+
} from "./chunk-37VSRUW4.js";
|
|
24
|
+
import {
|
|
25
|
+
createUsageError
|
|
26
|
+
} from "./chunk-IPE7TF2P.js";
|
|
27
|
+
import "./chunk-STGGGVYT.js";
|
|
28
|
+
import "./chunk-3ILXPKSJ.js";
|
|
29
|
+
import "./chunk-TBUCZX4A.js";
|
|
30
|
+
import "./chunk-Y2KL55OG.js";
|
|
31
|
+
import "./chunk-5SWZDVOW.js";
|
|
32
|
+
import {
|
|
33
|
+
isChallengeAutomationMode,
|
|
34
|
+
resolveInspiredesignCaptureMode
|
|
35
|
+
} from "./chunk-S6S2UP6U.js";
|
|
36
|
+
import "./chunk-S5KZQJJI.js";
|
|
37
|
+
import "./chunk-KZ2IXVQT.js";
|
|
38
|
+
import "./chunk-WHQZBUNY.js";
|
|
39
|
+
import "./chunk-FUSXMW3G.js";
|
|
40
|
+
|
|
41
|
+
// src/cli/commands/inspiredesign.ts
|
|
42
|
+
var MODE_VALUES = /* @__PURE__ */ new Set(["compact", "json", "md", "context", "path"]);
|
|
43
|
+
var CAPTURE_MODE_VALUES = /* @__PURE__ */ new Set(["off", "deep"]);
|
|
44
|
+
var COOKIE_POLICY_VALUES = /* @__PURE__ */ new Set(["off", "auto", "required"]);
|
|
45
|
+
var BROWSER_MODE_VALUES = /* @__PURE__ */ new Set(["auto", "extension", "managed"]);
|
|
46
|
+
var requireValue = (rawArgs, index, flag) => {
|
|
47
|
+
const value = rawArgs[index + 1];
|
|
48
|
+
if (!value) {
|
|
49
|
+
throw createUsageError(`Missing value for ${flag}`);
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
};
|
|
53
|
+
var parseInspiredesignRunArgs = (rawArgs) => {
|
|
54
|
+
const parsed = {
|
|
55
|
+
brief: parseOptionalStringFlag(rawArgs, "--brief"),
|
|
56
|
+
urls: parseRepeatedStringFlag(rawArgs, "--url")
|
|
57
|
+
};
|
|
58
|
+
for (let index = 0; index < rawArgs.length; index += 1) {
|
|
59
|
+
const arg = rawArgs[index];
|
|
60
|
+
if (arg === "--brief" || arg === "--url") {
|
|
61
|
+
index += 1;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (arg?.startsWith("--brief=") || arg?.startsWith("--url=")) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (arg === "--capture-mode") {
|
|
68
|
+
const value = requireValue(rawArgs, index, "--capture-mode").toLowerCase();
|
|
69
|
+
if (!CAPTURE_MODE_VALUES.has(value)) {
|
|
70
|
+
throw createUsageError(`Invalid --capture-mode: ${value}`);
|
|
71
|
+
}
|
|
72
|
+
parsed.captureMode = value;
|
|
73
|
+
index += 1;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (arg?.startsWith("--capture-mode=")) {
|
|
77
|
+
const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
|
|
78
|
+
if (!CAPTURE_MODE_VALUES.has(value)) {
|
|
79
|
+
throw createUsageError(`Invalid --capture-mode: ${value}`);
|
|
80
|
+
}
|
|
81
|
+
parsed.captureMode = value;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (arg === "--include-prototype-guidance") {
|
|
85
|
+
parsed.includePrototypeGuidance = true;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (arg?.startsWith("--include-prototype-guidance=")) {
|
|
89
|
+
parsed.includePrototypeGuidance = parseBooleanFlag(arg.split("=", 2)[1] ?? "", "--include-prototype-guidance");
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (arg === "--mode") {
|
|
93
|
+
const value = requireValue(rawArgs, index, "--mode").toLowerCase();
|
|
94
|
+
if (!MODE_VALUES.has(value)) {
|
|
95
|
+
throw createUsageError(`Invalid --mode: ${value}`);
|
|
96
|
+
}
|
|
97
|
+
parsed.mode = value;
|
|
98
|
+
index += 1;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (arg?.startsWith("--mode=")) {
|
|
102
|
+
const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
|
|
103
|
+
if (!MODE_VALUES.has(value)) {
|
|
104
|
+
throw createUsageError(`Invalid --mode: ${value}`);
|
|
105
|
+
}
|
|
106
|
+
parsed.mode = value;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (arg === "--timeout-ms") {
|
|
110
|
+
parsed.timeoutMs = parseNumberFlag(requireValue(rawArgs, index, "--timeout-ms"), "--timeout-ms", { min: 1 });
|
|
111
|
+
index += 1;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (arg?.startsWith("--timeout-ms=")) {
|
|
115
|
+
parsed.timeoutMs = parseNumberFlag(arg.split("=", 2)[1] ?? "", "--timeout-ms", { min: 1 });
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (arg === "--output-dir") {
|
|
119
|
+
parsed.outputDir = resolveWorkflowOutputDirFlag(requireValue(rawArgs, index, "--output-dir"));
|
|
120
|
+
index += 1;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (arg?.startsWith("--output-dir=")) {
|
|
124
|
+
parsed.outputDir = resolveWorkflowOutputDirFlag(arg.split("=", 2)[1]);
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (arg === "--ttl-hours") {
|
|
128
|
+
parsed.ttlHours = parseNumberFlag(requireValue(rawArgs, index, "--ttl-hours"), "--ttl-hours", { min: 1, max: 168 });
|
|
129
|
+
index += 1;
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (arg?.startsWith("--ttl-hours=")) {
|
|
133
|
+
parsed.ttlHours = parseNumberFlag(arg.split("=", 2)[1] ?? "", "--ttl-hours", { min: 1, max: 168 });
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (arg === "--browser-mode") {
|
|
137
|
+
const value = requireValue(rawArgs, index, "--browser-mode").toLowerCase();
|
|
138
|
+
if (!BROWSER_MODE_VALUES.has(value)) {
|
|
139
|
+
throw createUsageError(`Invalid --browser-mode: ${value}`);
|
|
140
|
+
}
|
|
141
|
+
parsed.browserMode = value;
|
|
142
|
+
index += 1;
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (arg?.startsWith("--browser-mode=")) {
|
|
146
|
+
const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
|
|
147
|
+
if (!BROWSER_MODE_VALUES.has(value)) {
|
|
148
|
+
throw createUsageError(`Invalid --browser-mode: ${value}`);
|
|
149
|
+
}
|
|
150
|
+
parsed.browserMode = value;
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (arg === "--use-cookies") {
|
|
154
|
+
parsed.useCookies = true;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (arg?.startsWith("--use-cookies=")) {
|
|
158
|
+
parsed.useCookies = parseBooleanFlag(arg.split("=", 2)[1] ?? "", "--use-cookies");
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (arg === "--challenge-automation-mode") {
|
|
162
|
+
const value = requireValue(rawArgs, index, "--challenge-automation-mode");
|
|
163
|
+
if (!isChallengeAutomationMode(value)) {
|
|
164
|
+
throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);
|
|
165
|
+
}
|
|
166
|
+
parsed.challengeAutomationMode = value;
|
|
167
|
+
index += 1;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (arg?.startsWith("--challenge-automation-mode=")) {
|
|
171
|
+
const value = arg.split("=", 2)[1] ?? "";
|
|
172
|
+
if (!isChallengeAutomationMode(value)) {
|
|
173
|
+
throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);
|
|
174
|
+
}
|
|
175
|
+
parsed.challengeAutomationMode = value;
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (arg === "--cookie-policy-override" || arg === "--cookie-policy") {
|
|
179
|
+
const value = requireValue(rawArgs, index, arg).toLowerCase();
|
|
180
|
+
if (!COOKIE_POLICY_VALUES.has(value)) {
|
|
181
|
+
throw createUsageError(`Invalid ${arg}: ${value}`);
|
|
182
|
+
}
|
|
183
|
+
parsed.cookiePolicyOverride = value;
|
|
184
|
+
index += 1;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (arg?.startsWith("--cookie-policy-override=") || arg?.startsWith("--cookie-policy=")) {
|
|
188
|
+
const value = (arg.split("=", 2)[1] ?? "").toLowerCase();
|
|
189
|
+
if (!COOKIE_POLICY_VALUES.has(value)) {
|
|
190
|
+
throw createUsageError(`Invalid --cookie-policy-override: ${value}`);
|
|
191
|
+
}
|
|
192
|
+
parsed.cookiePolicyOverride = value;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return parsed;
|
|
196
|
+
};
|
|
197
|
+
async function runInspiredesignCommand(args) {
|
|
198
|
+
const [subcommand, ...rest] = args.rawArgs;
|
|
199
|
+
if (subcommand !== "run") {
|
|
200
|
+
throw createUsageError("Usage: opendevbrowser inspiredesign run --brief <value> [--url <url>] [options]");
|
|
201
|
+
}
|
|
202
|
+
const parsed = parseInspiredesignRunArgs(rest);
|
|
203
|
+
if (!parsed.brief?.trim()) {
|
|
204
|
+
throw createUsageError("Missing --brief");
|
|
205
|
+
}
|
|
206
|
+
const captureMode = resolveInspiredesignCaptureMode(parsed.captureMode, parsed.urls);
|
|
207
|
+
const data = await callDaemon("inspiredesign.run", {
|
|
208
|
+
brief: parsed.brief,
|
|
209
|
+
urls: parsed.urls,
|
|
210
|
+
captureMode,
|
|
211
|
+
includePrototypeGuidance: parsed.includePrototypeGuidance,
|
|
212
|
+
mode: parsed.mode ?? "compact",
|
|
213
|
+
timeoutMs: parsed.timeoutMs ?? DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS,
|
|
214
|
+
outputDir: resolveWorkflowOutputDirFlag(parsed.outputDir),
|
|
215
|
+
ttlHours: parsed.ttlHours,
|
|
216
|
+
browserMode: parsed.browserMode,
|
|
217
|
+
useCookies: parsed.useCookies,
|
|
218
|
+
challengeAutomationMode: parsed.challengeAutomationMode,
|
|
219
|
+
cookiePolicyOverride: parsed.cookiePolicyOverride
|
|
220
|
+
});
|
|
221
|
+
return {
|
|
222
|
+
success: true,
|
|
223
|
+
message: buildWorkflowCompletionMessage("Inspiredesign workflow", data),
|
|
224
|
+
data
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
var __test__ = {
|
|
228
|
+
parseInspiredesignRunArgs
|
|
229
|
+
};
|
|
230
|
+
export {
|
|
231
|
+
__test__,
|
|
232
|
+
runInspiredesignCommand
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=inspiredesign-7VRMMZN4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/inspiredesign.ts"],"sourcesContent":["import type { ParsedArgs } from \"../args\";\nimport { callDaemon } from \"../client\";\nimport { createUsageError } from \"../errors\";\nimport { DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS } from \"../transport-timeouts\";\nimport {\n parseBooleanFlag,\n parseNumberFlag,\n parseOptionalStringFlag,\n parseRepeatedStringFlag\n} from \"../utils/parse\";\nimport { buildWorkflowCompletionMessage } from \"../utils/workflow-message\";\nimport { isChallengeAutomationMode, type ChallengeAutomationMode } from \"../../challenges/types\";\nimport { resolveInspiredesignCaptureMode } from \"../../inspiredesign/capture-mode\";\nimport type { WorkflowBrowserMode } from \"../../providers/types\";\nimport { resolveWorkflowOutputDirFlag } from \"./workflow-output\";\n\ntype InspiredesignCommandArgs = {\n brief?: string;\n urls?: string[];\n captureMode?: \"off\" | \"deep\";\n includePrototypeGuidance?: boolean;\n mode?: \"compact\" | \"json\" | \"md\" | \"context\" | \"path\";\n timeoutMs?: number;\n outputDir?: string;\n ttlHours?: number;\n browserMode?: WorkflowBrowserMode;\n useCookies?: boolean;\n challengeAutomationMode?: ChallengeAutomationMode;\n cookiePolicyOverride?: \"off\" | \"auto\" | \"required\";\n};\n\nconst MODE_VALUES = new Set([\"compact\", \"json\", \"md\", \"context\", \"path\"]);\nconst CAPTURE_MODE_VALUES = new Set([\"off\", \"deep\"]);\nconst COOKIE_POLICY_VALUES = new Set([\"off\", \"auto\", \"required\"]);\nconst BROWSER_MODE_VALUES = new Set([\"auto\", \"extension\", \"managed\"]);\n\nconst requireValue = (rawArgs: string[], index: number, flag: string): string => {\n const value = rawArgs[index + 1];\n if (!value) {\n throw createUsageError(`Missing value for ${flag}`);\n }\n return value;\n};\n\nconst parseInspiredesignRunArgs = (rawArgs: string[]): InspiredesignCommandArgs => {\n const parsed: InspiredesignCommandArgs = {\n brief: parseOptionalStringFlag(rawArgs, \"--brief\"),\n urls: parseRepeatedStringFlag(rawArgs, \"--url\")\n };\n\n for (let index = 0; index < rawArgs.length; index += 1) {\n const arg = rawArgs[index];\n\n if (arg === \"--brief\" || arg === \"--url\") {\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--brief=\") || arg?.startsWith(\"--url=\")) {\n continue;\n }\n\n if (arg === \"--capture-mode\") {\n const value = requireValue(rawArgs, index, \"--capture-mode\").toLowerCase();\n if (!CAPTURE_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --capture-mode: ${value}`);\n }\n parsed.captureMode = value as InspiredesignCommandArgs[\"captureMode\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--capture-mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!CAPTURE_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --capture-mode: ${value}`);\n }\n parsed.captureMode = value as InspiredesignCommandArgs[\"captureMode\"];\n continue;\n }\n\n if (arg === \"--include-prototype-guidance\") {\n parsed.includePrototypeGuidance = true;\n continue;\n }\n if (arg?.startsWith(\"--include-prototype-guidance=\")) {\n parsed.includePrototypeGuidance = parseBooleanFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--include-prototype-guidance\");\n continue;\n }\n\n if (arg === \"--mode\") {\n const value = requireValue(rawArgs, index, \"--mode\").toLowerCase();\n if (!MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --mode: ${value}`);\n }\n parsed.mode = value as InspiredesignCommandArgs[\"mode\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --mode: ${value}`);\n }\n parsed.mode = value as InspiredesignCommandArgs[\"mode\"];\n continue;\n }\n\n if (arg === \"--timeout-ms\") {\n parsed.timeoutMs = parseNumberFlag(requireValue(rawArgs, index, \"--timeout-ms\"), \"--timeout-ms\", { min: 1 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--timeout-ms=\")) {\n parsed.timeoutMs = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--timeout-ms\", { min: 1 });\n continue;\n }\n\n if (arg === \"--output-dir\") {\n parsed.outputDir = resolveWorkflowOutputDirFlag(requireValue(rawArgs, index, \"--output-dir\"));\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--output-dir=\")) {\n parsed.outputDir = resolveWorkflowOutputDirFlag(arg.split(\"=\", 2)[1]);\n continue;\n }\n\n if (arg === \"--ttl-hours\") {\n parsed.ttlHours = parseNumberFlag(requireValue(rawArgs, index, \"--ttl-hours\"), \"--ttl-hours\", { min: 1, max: 168 });\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--ttl-hours=\")) {\n parsed.ttlHours = parseNumberFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--ttl-hours\", { min: 1, max: 168 });\n continue;\n }\n\n if (arg === \"--browser-mode\") {\n const value = requireValue(rawArgs, index, \"--browser-mode\").toLowerCase();\n if (!BROWSER_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --browser-mode: ${value}`);\n }\n parsed.browserMode = value as WorkflowBrowserMode;\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--browser-mode=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!BROWSER_MODE_VALUES.has(value)) {\n throw createUsageError(`Invalid --browser-mode: ${value}`);\n }\n parsed.browserMode = value as WorkflowBrowserMode;\n continue;\n }\n\n if (arg === \"--use-cookies\") {\n parsed.useCookies = true;\n continue;\n }\n if (arg?.startsWith(\"--use-cookies=\")) {\n parsed.useCookies = parseBooleanFlag(arg.split(\"=\", 2)[1] ?? \"\", \"--use-cookies\");\n continue;\n }\n\n if (arg === \"--challenge-automation-mode\") {\n const value = requireValue(rawArgs, index, \"--challenge-automation-mode\");\n if (!isChallengeAutomationMode(value)) {\n throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);\n }\n parsed.challengeAutomationMode = value;\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--challenge-automation-mode=\")) {\n const value = arg.split(\"=\", 2)[1] ?? \"\";\n if (!isChallengeAutomationMode(value)) {\n throw createUsageError(`Invalid --challenge-automation-mode: ${value}`);\n }\n parsed.challengeAutomationMode = value;\n continue;\n }\n\n if (arg === \"--cookie-policy-override\" || arg === \"--cookie-policy\") {\n const value = requireValue(rawArgs, index, arg).toLowerCase();\n if (!COOKIE_POLICY_VALUES.has(value)) {\n throw createUsageError(`Invalid ${arg}: ${value}`);\n }\n parsed.cookiePolicyOverride = value as InspiredesignCommandArgs[\"cookiePolicyOverride\"];\n index += 1;\n continue;\n }\n if (arg?.startsWith(\"--cookie-policy-override=\") || arg?.startsWith(\"--cookie-policy=\")) {\n const value = (arg.split(\"=\", 2)[1] ?? \"\").toLowerCase();\n if (!COOKIE_POLICY_VALUES.has(value)) {\n throw createUsageError(`Invalid --cookie-policy-override: ${value}`);\n }\n parsed.cookiePolicyOverride = value as InspiredesignCommandArgs[\"cookiePolicyOverride\"];\n }\n }\n\n return parsed;\n};\n\nexport async function runInspiredesignCommand(args: ParsedArgs) {\n const [subcommand, ...rest] = args.rawArgs;\n if (subcommand !== \"run\") {\n throw createUsageError(\"Usage: opendevbrowser inspiredesign run --brief <value> [--url <url>] [options]\");\n }\n\n const parsed = parseInspiredesignRunArgs(rest);\n if (!parsed.brief?.trim()) {\n throw createUsageError(\"Missing --brief\");\n }\n const captureMode = resolveInspiredesignCaptureMode(parsed.captureMode, parsed.urls);\n\n const data = await callDaemon(\"inspiredesign.run\", {\n brief: parsed.brief,\n urls: parsed.urls,\n captureMode,\n includePrototypeGuidance: parsed.includePrototypeGuidance,\n mode: parsed.mode ?? \"compact\",\n timeoutMs: parsed.timeoutMs ?? DEFAULT_WORKFLOW_TRANSPORT_TIMEOUT_MS,\n outputDir: resolveWorkflowOutputDirFlag(parsed.outputDir),\n ttlHours: parsed.ttlHours,\n browserMode: parsed.browserMode,\n useCookies: parsed.useCookies,\n challengeAutomationMode: parsed.challengeAutomationMode,\n cookiePolicyOverride: parsed.cookiePolicyOverride\n });\n\n return {\n success: true,\n message: buildWorkflowCompletionMessage(\"Inspiredesign workflow\", data),\n data\n };\n}\n\nexport const __test__ = {\n parseInspiredesignRunArgs\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
STABLE_DAEMON_INSTALL_GUIDANCE,
|
|
3
|
+
isTransientAutostartInstallError
|
|
4
|
+
} from "./chunk-WOXBLP7V.js";
|
|
5
|
+
|
|
6
|
+
// src/cli/install-autostart-output.ts
|
|
7
|
+
function createInstallAutostartOutputPayload(result) {
|
|
8
|
+
if (!result) {
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
autostart: result.autostart,
|
|
13
|
+
autostartAction: result.autostartAction,
|
|
14
|
+
...result.autostartAction === "repair_failed" && result.autostartError ? { autostartError: result.autostartError } : {}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function formatAutostartReconciliationMessage(result) {
|
|
18
|
+
switch (result.autostartAction) {
|
|
19
|
+
case "unsupported":
|
|
20
|
+
return result.autostart ? `Autostart not supported on ${result.autostart.platform}.` : "Autostart not supported on this platform.";
|
|
21
|
+
case "already_healthy":
|
|
22
|
+
return "Autostart already healthy.";
|
|
23
|
+
case "installed":
|
|
24
|
+
return result.autostart ? `Autostart installed (${result.autostart.platform}).` : "Autostart installed.";
|
|
25
|
+
case "repaired":
|
|
26
|
+
return result.autostart ? `Autostart repaired (${result.autostart.platform}).` : "Autostart repaired.";
|
|
27
|
+
case "repair_failed":
|
|
28
|
+
if (result.autostartError && isTransientAutostartInstallError(result.autostartError)) {
|
|
29
|
+
return `Plugin install succeeded but autostart repair was skipped because the current CLI path is transient: ${result.autostartError}`;
|
|
30
|
+
}
|
|
31
|
+
return `Plugin install succeeded but autostart repair failed: ${result.autostartError ?? "unknown error"}. Run opendevbrowser daemon install to repair it.`;
|
|
32
|
+
default:
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
STABLE_DAEMON_INSTALL_GUIDANCE,
|
|
38
|
+
createInstallAutostartOutputPayload,
|
|
39
|
+
formatAutostartReconciliationMessage
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=install-autostart-output-5DOMKCQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/install-autostart-output.ts"],"sourcesContent":["import {\n isTransientAutostartInstallError,\n STABLE_DAEMON_INSTALL_GUIDANCE\n} from \"./daemon-autostart\";\nimport type { InstallAutostartReconciliationResult } from \"./install-autostart-reconciliation\";\n\nexport function createInstallAutostartOutputPayload(\n result?: InstallAutostartReconciliationResult\n): Record<string, unknown> {\n if (!result) {\n return {};\n }\n\n return {\n autostart: result.autostart,\n autostartAction: result.autostartAction,\n ...(result.autostartAction === \"repair_failed\" && result.autostartError\n ? { autostartError: result.autostartError }\n : {})\n };\n}\n\nexport function formatAutostartReconciliationMessage(\n result: InstallAutostartReconciliationResult\n): string | null {\n switch (result.autostartAction) {\n case \"unsupported\":\n return result.autostart\n ? `Autostart not supported on ${result.autostart.platform}.`\n : \"Autostart not supported on this platform.\";\n case \"already_healthy\":\n return \"Autostart already healthy.\";\n case \"installed\":\n return result.autostart\n ? `Autostart installed (${result.autostart.platform}).`\n : \"Autostart installed.\";\n case \"repaired\":\n return result.autostart\n ? `Autostart repaired (${result.autostart.platform}).`\n : \"Autostart repaired.\";\n case \"repair_failed\":\n if (result.autostartError && isTransientAutostartInstallError(result.autostartError)) {\n return `Plugin install succeeded but autostart repair was skipped because the current CLI path is transient: ${result.autostartError}`;\n }\n return `Plugin install succeeded but autostart repair failed: ${result.autostartError ?? \"unknown error\"}. Run opendevbrowser daemon install to repair it.`;\n default:\n return null;\n }\n}\n\nexport { STABLE_DAEMON_INSTALL_GUIDANCE };\n"],"mappings":";;;;;;AAMO,SAAS,oCACd,QACyB;AACzB,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AAAA,IACL,WAAW,OAAO;AAAA,IAClB,iBAAiB,OAAO;AAAA,IACxB,GAAI,OAAO,oBAAoB,mBAAmB,OAAO,iBACrD,EAAE,gBAAgB,OAAO,eAAe,IACxC,CAAC;AAAA,EACP;AACF;AAEO,SAAS,qCACd,QACe;AACf,UAAQ,OAAO,iBAAiB;AAAA,IAC9B,KAAK;AACH,aAAO,OAAO,YACV,8BAA8B,OAAO,UAAU,QAAQ,MACvD;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,OAAO,YACV,wBAAwB,OAAO,UAAU,QAAQ,OACjD;AAAA,IACN,KAAK;AACH,aAAO,OAAO,YACV,uBAAuB,OAAO,UAAU,QAAQ,OAChD;AAAA,IACN,KAAK;AACH,UAAI,OAAO,kBAAkB,iCAAiC,OAAO,cAAc,GAAG;AACpF,eAAO,wGAAwG,OAAO,cAAc;AAAA,MACtI;AACA,aAAO,yDAAyD,OAAO,kBAAkB,eAAe;AAAA,IAC1G;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAutostartStatus,
|
|
3
|
+
installAutostart
|
|
4
|
+
} from "./chunk-WOXBLP7V.js";
|
|
5
|
+
|
|
6
|
+
// src/cli/install-autostart-reconciliation.ts
|
|
7
|
+
var INSTALL_AUTOSTART_SKIP_ENV_VAR = "OPDEVBROWSER_SKIP_INSTALL_AUTOSTART_RECONCILIATION";
|
|
8
|
+
var defaultDeps = () => ({
|
|
9
|
+
getAutostartStatus,
|
|
10
|
+
installAutostart
|
|
11
|
+
});
|
|
12
|
+
function shouldSkipInstallAutostartReconciliation(env = process.env) {
|
|
13
|
+
const raw = env[INSTALL_AUTOSTART_SKIP_ENV_VAR];
|
|
14
|
+
if (raw === void 0) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const normalized = raw.trim().toLowerCase();
|
|
18
|
+
return normalized === "1" || normalized === "true" || normalized === "yes";
|
|
19
|
+
}
|
|
20
|
+
function reconcileInstallAutostart(installResult, deps = {}, options = {}) {
|
|
21
|
+
if (!installResult.success || shouldSkipInstallAutostartReconciliation(options.env)) {
|
|
22
|
+
return { attempted: false };
|
|
23
|
+
}
|
|
24
|
+
const resolved = { ...defaultDeps(), ...deps };
|
|
25
|
+
const status = resolved.getAutostartStatus();
|
|
26
|
+
if (!status.supported) {
|
|
27
|
+
return {
|
|
28
|
+
attempted: false,
|
|
29
|
+
autostart: status,
|
|
30
|
+
autostartAction: "unsupported"
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (status.health === "healthy") {
|
|
34
|
+
return {
|
|
35
|
+
attempted: false,
|
|
36
|
+
autostart: status,
|
|
37
|
+
autostartAction: "already_healthy"
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (status.health !== "missing" && status.health !== "needs_repair" && status.health !== "malformed") {
|
|
41
|
+
return {
|
|
42
|
+
attempted: false,
|
|
43
|
+
autostart: status
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const autostart = resolved.installAutostart();
|
|
48
|
+
return {
|
|
49
|
+
attempted: true,
|
|
50
|
+
autostart,
|
|
51
|
+
autostartAction: status.health === "missing" ? "installed" : "repaired"
|
|
52
|
+
};
|
|
53
|
+
} catch (error) {
|
|
54
|
+
let autostart = status;
|
|
55
|
+
try {
|
|
56
|
+
autostart = resolved.getAutostartStatus();
|
|
57
|
+
} catch {
|
|
58
|
+
autostart = status;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
attempted: true,
|
|
62
|
+
autostart,
|
|
63
|
+
autostartAction: "repair_failed",
|
|
64
|
+
autostartError: error instanceof Error ? error.message : String(error)
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
INSTALL_AUTOSTART_SKIP_ENV_VAR,
|
|
70
|
+
reconcileInstallAutostart,
|
|
71
|
+
shouldSkipInstallAutostartReconciliation
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=install-autostart-reconciliation-NHKOFYTD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/install-autostart-reconciliation.ts"],"sourcesContent":["import { getAutostartStatus, installAutostart } from \"./daemon-autostart\";\nimport type { AutostartInstallResult, AutostartStatus } from \"./daemon-autostart\";\n\nexport const INSTALL_AUTOSTART_SKIP_ENV_VAR = \"OPDEVBROWSER_SKIP_INSTALL_AUTOSTART_RECONCILIATION\";\n\nexport type InstallResultLike = {\n success: boolean;\n alreadyInstalled: boolean;\n};\n\nexport type AutostartAction =\n | \"unsupported\"\n | \"already_healthy\"\n | \"installed\"\n | \"repaired\"\n | \"repair_failed\";\n\nexport type InstallAutostartReconciliationResult = {\n attempted: boolean;\n autostart?: AutostartStatus;\n autostartAction?: AutostartAction;\n autostartError?: string;\n};\n\nexport type InstallAutostartReconciliationDeps = {\n getAutostartStatus?: () => AutostartStatus;\n installAutostart?: () => AutostartInstallResult;\n};\n\nexport type InstallAutostartReconciliationOptions = {\n env?: NodeJS.ProcessEnv;\n};\n\nconst defaultDeps = (): Required<InstallAutostartReconciliationDeps> => ({\n getAutostartStatus,\n installAutostart\n});\n\nexport function shouldSkipInstallAutostartReconciliation(env: NodeJS.ProcessEnv = process.env): boolean {\n const raw = env[INSTALL_AUTOSTART_SKIP_ENV_VAR];\n if (raw === undefined) {\n return false;\n }\n const normalized = raw.trim().toLowerCase();\n return normalized === \"1\" || normalized === \"true\" || normalized === \"yes\";\n}\n\nexport function reconcileInstallAutostart(\n installResult: InstallResultLike,\n deps: InstallAutostartReconciliationDeps = {},\n options: InstallAutostartReconciliationOptions = {}\n): InstallAutostartReconciliationResult {\n if (!installResult.success || shouldSkipInstallAutostartReconciliation(options.env)) {\n return { attempted: false };\n }\n\n const resolved = { ...defaultDeps(), ...deps };\n const status = resolved.getAutostartStatus();\n\n if (!status.supported) {\n return {\n attempted: false,\n autostart: status,\n autostartAction: \"unsupported\"\n };\n }\n\n if (status.health === \"healthy\") {\n return {\n attempted: false,\n autostart: status,\n autostartAction: \"already_healthy\"\n };\n }\n\n if (status.health !== \"missing\" && status.health !== \"needs_repair\" && status.health !== \"malformed\") {\n return {\n attempted: false,\n autostart: status\n };\n }\n\n try {\n const autostart = resolved.installAutostart();\n return {\n attempted: true,\n autostart,\n autostartAction: status.health === \"missing\" ? \"installed\" : \"repaired\"\n };\n } catch (error) {\n let autostart = status;\n try {\n autostart = resolved.getAutostartStatus();\n } catch {\n autostart = status;\n }\n\n return {\n attempted: true,\n autostart,\n autostartAction: \"repair_failed\",\n autostartError: error instanceof Error ? error.message : String(error)\n };\n }\n}\n"],"mappings":";;;;;;AAGO,IAAM,iCAAiC;AA8B9C,IAAM,cAAc,OAAqD;AAAA,EACvE;AAAA,EACA;AACF;AAEO,SAAS,yCAAyC,MAAyB,QAAQ,KAAc;AACtG,QAAM,MAAM,IAAI,8BAA8B;AAC9C,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AACA,QAAM,aAAa,IAAI,KAAK,EAAE,YAAY;AAC1C,SAAO,eAAe,OAAO,eAAe,UAAU,eAAe;AACvE;AAEO,SAAS,0BACd,eACA,OAA2C,CAAC,GAC5C,UAAiD,CAAC,GACZ;AACtC,MAAI,CAAC,cAAc,WAAW,yCAAyC,QAAQ,GAAG,GAAG;AACnF,WAAO,EAAE,WAAW,MAAM;AAAA,EAC5B;AAEA,QAAM,WAAW,EAAE,GAAG,YAAY,GAAG,GAAG,KAAK;AAC7C,QAAM,SAAS,SAAS,mBAAmB;AAE3C,MAAI,CAAC,OAAO,WAAW;AACrB,WAAO;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,MACX,iBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,WAAW;AAC/B,WAAO;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,MACX,iBAAiB;AAAA,IACnB;AAAA,EACF;AAEA,MAAI,OAAO,WAAW,aAAa,OAAO,WAAW,kBAAkB,OAAO,WAAW,aAAa;AACpG,WAAO;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAEA,MAAI;AACF,UAAM,YAAY,SAAS,iBAAiB;AAC5C,WAAO;AAAA,MACL,WAAW;AAAA,MACX;AAAA,MACA,iBAAiB,OAAO,WAAW,YAAY,cAAc;AAAA,IAC/D;AAAA,EACF,SAAS,OAAO;AACd,QAAI,YAAY;AAChB,QAAI;AACF,kBAAY,SAAS,mBAAmB;AAAA,IAC1C,QAAQ;AACN,kBAAY;AAAA,IACd;AAEA,WAAO;AAAA,MACL,WAAW;AAAA,MACX;AAAA,MACA,iBAAiB;AAAA,MACjB,gBAAgB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACvE;AAAA,EACF;AACF;","names":[]}
|