@rulemetric/cli 0.7.2 → 0.7.4
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/dist/base-command.js +1 -14
- package/dist/chunk-2TC6WCUT.js +34 -0
- package/dist/chunk-2UC3ULIG.js +1 -0
- package/dist/chunk-3AV3GTMP.js +1 -0
- package/dist/chunk-4Z5ECCJE.js +1 -0
- package/dist/chunk-5RBLIVBF.js +1 -0
- package/dist/chunk-67QCYUJU.js +1 -0
- package/dist/chunk-6QKI756T.js +2 -0
- package/dist/chunk-6V4WM73L.js +1 -0
- package/dist/chunk-6XEC6474.js +1 -0
- package/dist/chunk-72XLQE3X.js +2 -0
- package/dist/chunk-7DFNBRLY.js +61 -0
- package/dist/chunk-7XQ4VPLC.js +2 -0
- package/dist/chunk-AHRHCERJ.js +1 -0
- package/dist/chunk-ARNZQBMX.js +1 -0
- package/dist/chunk-CADKBP3D.js +58 -0
- package/dist/chunk-CDI5CCHU.js +1 -0
- package/dist/chunk-CNQ5DTNC.js +1 -0
- package/dist/chunk-CRAKDQ4H.js +1 -0
- package/dist/chunk-DNF4HDI6.js +14 -0
- package/dist/chunk-DSO2U4Y6.js +56 -0
- package/dist/chunk-DT4GKEP5.js +5 -0
- package/dist/chunk-DVN7GFJG.js +1 -0
- package/dist/chunk-E4SFUPYR.js +15 -0
- package/dist/chunk-EUHNCVJQ.js +33 -0
- package/dist/chunk-F2VP4B4J.js +1 -0
- package/dist/chunk-FEHM5OKW.js +1 -0
- package/dist/chunk-FHVBTDBM.js +69 -0
- package/dist/chunk-GBMF3TP6.js +1 -0
- package/dist/chunk-GY5IJ4RS.js +1 -0
- package/dist/chunk-HOHD5HY2.js +5 -0
- package/dist/chunk-HP2BUPGS.js +24 -0
- package/dist/{chunk-OQBBVTDG.js → chunk-I2DZGJRR.js} +6 -71
- package/dist/chunk-I4YJ7NTX.js +1 -0
- package/dist/chunk-IY5NXR3N.js +1 -0
- package/dist/chunk-IZTIYR5Q.js +2 -0
- package/dist/chunk-KKDHD4XA.js +2 -0
- package/dist/chunk-LQRYQE6Q.js +4 -0
- package/dist/chunk-M6AJDVCL.js +5 -0
- package/dist/chunk-MGHFDHHM.js +1 -0
- package/dist/chunk-ML36XQW7.js +1 -0
- package/dist/chunk-MODXEGCU.js +1 -0
- package/dist/chunk-MVM6OGAF.js +4 -0
- package/dist/chunk-N7ODX6PO.js +1 -0
- package/dist/chunk-NBTC5FNV.js +1 -0
- package/dist/chunk-NJ5UED3H.js +1 -0
- package/dist/chunk-NVKX36YN.js +3 -0
- package/dist/chunk-NVOTOQBA.js +1 -0
- package/dist/chunk-O7ZMHCMG.js +31 -0
- package/dist/chunk-OMXUK4M6.js +1 -0
- package/dist/chunk-PZS2KOU7.js +1 -0
- package/dist/chunk-RSKQRVPJ.js +1 -0
- package/dist/chunk-RTEATXTP.js +1 -0
- package/dist/chunk-RTWRHIKY.js +7 -0
- package/dist/chunk-RVO4HV3M.js +1 -0
- package/dist/chunk-SBILN45P.js +1 -0
- package/dist/chunk-SZ62CP55.js +1 -0
- package/dist/chunk-T3W5N3BP.js +2 -0
- package/dist/chunk-TDD7IOV2.js +1 -0
- package/dist/chunk-TIQ7DQ3M.js +1 -0
- package/dist/chunk-TU2AR6XO.js +1 -0
- package/dist/chunk-UF6US7VU.js +1 -0
- package/dist/chunk-V5QFOF4F.js +9 -0
- package/dist/chunk-V5U3E4BZ.js +1 -0
- package/dist/chunk-VAFAH6QL.js +1 -0
- package/dist/chunk-VMWY7KHH.js +1 -0
- package/dist/chunk-VUGRXM7R.js +1 -0
- package/dist/{chunk-XZXS2W24.js → chunk-VWEXKDWG.js} +10 -56
- package/dist/chunk-W2MV25SB.js +1 -0
- package/dist/chunk-WJ3H73G6.js +1 -0
- package/dist/chunk-WJUQBMTF.js +9 -0
- package/dist/chunk-WLVQJH4E.js +1 -0
- package/dist/chunk-WPJ2BND4.js +1 -0
- package/dist/chunk-WSCK4WNK.js +1 -0
- package/dist/chunk-Y65CSJFF.js +3 -0
- package/dist/chunk-ZL4MZMUK.js +34 -0
- package/dist/chunk-ZLLER3HP.js +1 -0
- package/dist/chunk-ZXF5NE54.js +1 -0
- package/dist/commands/antigravity/backfill.js +2 -136
- package/dist/commands/auth/create-key.js +1 -52
- package/dist/commands/auth/login.js +1 -85
- package/dist/commands/auth/logout.js +1 -29
- package/dist/commands/auth/revoke-key.js +1 -33
- package/dist/commands/auth/signup.js +1 -89
- package/dist/commands/auth/status.js +1 -42
- package/dist/commands/catalog/index.js +2 -52
- package/dist/commands/catalog/recommend.js +3 -43
- package/dist/commands/convert.js +1 -75
- package/dist/commands/converters.js +1 -54
- package/dist/commands/crons/list.js +1 -41
- package/dist/commands/crons/run.js +2 -76
- package/dist/commands/dashboard.js +1 -46
- package/dist/commands/diagnostics.js +1 -117
- package/dist/commands/eval-targets/create.js +1 -53
- package/dist/commands/eval-targets/list.js +1 -54
- package/dist/commands/evals/agent.js +3 -309
- package/dist/commands/evals/benchmark.js +6 -73
- package/dist/commands/evals/compare.js +13 -96
- package/dist/commands/evals/create.js +1 -67
- package/dist/commands/evals/optimize-description.js +25 -239
- package/dist/commands/evals/optimize.js +5 -211
- package/dist/commands/evals/run.js +3 -183
- package/dist/commands/gateway/ensure.js +1 -104
- package/dist/commands/hooks/emit-instructions.js +1 -25
- package/dist/commands/hooks/install.js +1 -442
- package/dist/commands/hooks/run.js +3 -81
- package/dist/commands/hooks/uninstall.js +2 -156
- package/dist/commands/import.js +1 -66
- package/dist/commands/instructions/create.js +1 -74
- package/dist/commands/instructions/delete.js +1 -55
- package/dist/commands/instructions/fork.js +1 -34
- package/dist/commands/instructions/get.js +1 -68
- package/dist/commands/instructions/list.js +1 -65
- package/dist/commands/instructions/promote.js +1 -42
- package/dist/commands/instructions/pull.js +1 -39
- package/dist/commands/instructions/upstream.js +1 -38
- package/dist/commands/instructions/versions.js +1 -53
- package/dist/commands/launcher.js +1 -40
- package/dist/commands/org/current.js +1 -77
- package/dist/commands/org/list.js +1 -52
- package/dist/commands/org/switch.js +1 -71
- package/dist/commands/packs/add-instruction.js +1 -37
- package/dist/commands/packs/apply.js +1 -39
- package/dist/commands/packs/create.js +1 -50
- package/dist/commands/packs/fork.js +1 -34
- package/dist/commands/packs/get.js +3 -56
- package/dist/commands/packs/list.js +1 -66
- package/dist/commands/packs/remove-instruction.js +1 -35
- package/dist/commands/proxy/env.js +3 -131
- package/dist/commands/proxy/logs.js +3 -85
- package/dist/commands/proxy/restart.js +1 -35
- package/dist/commands/proxy/setup.js +15 -454
- package/dist/commands/proxy/start.js +10 -333
- package/dist/commands/proxy/status.js +1 -78
- package/dist/commands/proxy/stop.js +1 -94
- package/dist/commands/research/backfill.js +1 -59
- package/dist/commands/research/tail-transcript.js +1 -70
- package/dist/commands/service/install.js +57 -781
- package/dist/commands/service/status.js +1 -180
- package/dist/commands/service/uninstall.js +1 -119
- package/dist/commands/sessions/analyze.js +3 -48
- package/dist/commands/sessions/end.js +2 -85
- package/dist/commands/sessions/import.js +1 -46
- package/dist/commands/sessions/list.js +1 -48
- package/dist/commands/sessions/start.js +3 -90
- package/dist/commands/setup.js +3 -150
- package/dist/commands/skills/export-approved.js +1 -46
- package/dist/commands/skills/install.js +4 -107
- package/dist/commands/skills/list.js +4 -65
- package/dist/commands/skills/publish.js +2 -98
- package/dist/commands/skills/search.js +3 -72
- package/dist/commands/skills/update.js +3 -55
- package/dist/commands/suggestions/accept.js +8 -84
- package/dist/commands/suggestions/dismiss.js +1 -45
- package/dist/commands/suggestions/list.js +1 -61
- package/dist/commands/suggestions/refresh.js +1 -27
- package/dist/cursor-T7AMCMKS.js +13 -0
- package/dist/dashboard/Dashboard.js +1 -243
- package/dist/dashboard/data.js +1 -15
- package/dist/dashboard/launcher/ActiveJobsList.js +1 -10
- package/dist/dashboard/launcher/LauncherOverlay.js +1 -16
- package/dist/dashboard/launcher/NewLaunchForm.js +1 -10
- package/dist/dashboard/launcher/api.js +1 -16
- package/dist/dashboard/launcher/tool-labels.js +1 -10
- package/dist/dashboard/launcher/types.js +0 -1
- package/dist/dashboard/launcher/useLaunchJobs.js +1 -11
- package/dist/dashboard/panels/friction.js +1 -10
- package/dist/dashboard/panels/insights.js +1 -10
- package/dist/dashboard/panels/instructions.js +1 -10
- package/dist/dashboard/panels/outcomes.js +1 -10
- package/dist/dashboard/panels/overview.js +1 -10
- package/dist/dashboard/panels/shared.js +1 -19
- package/dist/dashboard/types.js +1 -24
- package/dist/dist-FAVALJ5C.js +1 -0
- package/dist/index.js +1 -8
- package/dist/lib/active-org-refresh.js +1 -15
- package/dist/lib/active-org.js +1 -16
- package/dist/lib/agent-loop.js +1 -46
- package/dist/lib/antigravity-transcript.js +1 -22
- package/dist/lib/api-client.js +1 -23
- package/dist/lib/auth.js +1 -30
- package/dist/lib/capture-hosts.js +1 -8
- package/dist/lib/detect-languages.js +1 -8
- package/dist/lib/detect-tmux.js +1 -9
- package/dist/lib/diagnostics.js +1 -12
- package/dist/lib/editor-proxy-pins.js +1 -14
- package/dist/lib/ensure-api-key.js +1 -11
- package/dist/lib/eval-analyzer.js +1 -9
- package/dist/lib/eval-benchmark.js +1 -12
- package/dist/lib/eval-conversation-handler.js +1 -13
- package/dist/lib/eval-executor.js +1 -8
- package/dist/lib/eval-grader.js +1 -9
- package/dist/lib/eval-meta-judge.js +1 -9
- package/dist/lib/eval-trigger-tester.js +1 -11
- package/dist/lib/eval-worktree.js +1 -8
- package/dist/lib/gateway-entry.js +1 -61
- package/dist/lib/gateway-identity.js +1 -16
- package/dist/lib/gateway-lifecycle.js +1 -32
- package/dist/lib/gateway.js +1 -14
- package/dist/lib/handlers/cron-refresh-pricing.js +1 -0
- package/dist/lib/handlers/cron-refresh-skills.js +1 -8
- package/dist/lib/handlers/cron-suggest-instructions.js +1 -15
- package/dist/lib/handlers/process-announcement.js +1 -11
- package/dist/lib/handlers/process-changelog.js +1 -11
- package/dist/lib/handlers/process-conversation.js +1 -14
- package/dist/lib/handlers/process-eval.js +1 -15
- package/dist/lib/handlers/process-insights.js +1 -14
- package/dist/lib/handlers/process-launch.js +1 -16
- package/dist/lib/handlers/process-run-cleanup.js +1 -13
- package/dist/lib/handlers/process-send-message.js +1 -10
- package/dist/lib/handlers/process-session-goal.js +1 -11
- package/dist/lib/hooks-config.js +1 -81
- package/dist/lib/insights-prompts.js +1 -12
- package/dist/lib/instruction-snapshot.js +1 -8
- package/dist/lib/job-helpers.js +0 -1
- package/dist/lib/llm-client.js +1 -17
- package/dist/lib/manual-tasks-meta.js +1 -8
- package/dist/lib/manual-tasks.js +1 -79
- package/dist/lib/output.js +1 -12
- package/dist/lib/permanent-job-error.js +1 -10
- package/dist/lib/pid-identity.js +1 -14
- package/dist/lib/proxy-respawn.js +1 -12
- package/dist/lib/research-client.js +1 -12
- package/dist/lib/setup-steps.js +1 -33
- package/dist/lib/skills-loader.js +1 -8
- package/dist/lib/statusline-shim.js +1 -20
- package/dist/lib/telemetry.js +1 -16
- package/dist/lib/terminal-target-heartbeat.js +1 -15
- package/dist/lib/tmux.js +1 -16
- package/dist/lib/transcript-rate-limit-watcher.js +1 -22
- package/dist/lib/types.js +1 -8
- package/dist/lib/version-check.js +1 -12
- package/dist/lib/which.js +1 -8
- package/dist/lib/worktree.js +1 -17
- package/dist/opencode-QRJ3BH23.js +1 -0
- package/oclif.manifest.json +135 -135
- package/package.json +8 -7
- package/dist/base-command.js.map +0 -7
- package/dist/chunk-2HK7RGZB.js +0 -82
- package/dist/chunk-2HK7RGZB.js.map +0 -7
- package/dist/chunk-2ORJWTNZ.js +0 -307
- package/dist/chunk-2ORJWTNZ.js.map +0 -7
- package/dist/chunk-37LN5O7M.js +0 -59
- package/dist/chunk-37LN5O7M.js.map +0 -7
- package/dist/chunk-3S7223UR.js +0 -81
- package/dist/chunk-3S7223UR.js.map +0 -7
- package/dist/chunk-3TIMQ3O6.js +0 -96
- package/dist/chunk-3TIMQ3O6.js.map +0 -7
- package/dist/chunk-42GFSAJP.js +0 -32
- package/dist/chunk-42GFSAJP.js.map +0 -7
- package/dist/chunk-4BHDHHKL.js +0 -48
- package/dist/chunk-4BHDHHKL.js.map +0 -7
- package/dist/chunk-4D537GXE.js +0 -99
- package/dist/chunk-4D537GXE.js.map +0 -7
- package/dist/chunk-4LYCDS2N.js +0 -139
- package/dist/chunk-4LYCDS2N.js.map +0 -7
- package/dist/chunk-4SCZK7AL.js +0 -129
- package/dist/chunk-4SCZK7AL.js.map +0 -7
- package/dist/chunk-4XAWK6S2.js +0 -161
- package/dist/chunk-4XAWK6S2.js.map +0 -7
- package/dist/chunk-52WIYRZH.js +0 -73
- package/dist/chunk-52WIYRZH.js.map +0 -7
- package/dist/chunk-5BAOGNUH.js +0 -79
- package/dist/chunk-5BAOGNUH.js.map +0 -7
- package/dist/chunk-5EDMGK3W.js +0 -39
- package/dist/chunk-5EDMGK3W.js.map +0 -7
- package/dist/chunk-6NBS5XFS.js +0 -99
- package/dist/chunk-6NBS5XFS.js.map +0 -7
- package/dist/chunk-7DULPSFU.js +0 -299
- package/dist/chunk-7DULPSFU.js.map +0 -7
- package/dist/chunk-7LVVKQMZ.js +0 -98
- package/dist/chunk-7LVVKQMZ.js.map +0 -7
- package/dist/chunk-7NNFYWKK.js +0 -243
- package/dist/chunk-7NNFYWKK.js.map +0 -7
- package/dist/chunk-7NYKWN7U.js +0 -12
- package/dist/chunk-7NYKWN7U.js.map +0 -7
- package/dist/chunk-BO76WKJR.js +0 -42
- package/dist/chunk-BO76WKJR.js.map +0 -7
- package/dist/chunk-BRD5RUGM.js +0 -53
- package/dist/chunk-BRD5RUGM.js.map +0 -7
- package/dist/chunk-BT6Z6545.js +0 -43
- package/dist/chunk-BT6Z6545.js.map +0 -7
- package/dist/chunk-BZDKEQKU.js +0 -39
- package/dist/chunk-BZDKEQKU.js.map +0 -7
- package/dist/chunk-DGHWRQXL.js +0 -17
- package/dist/chunk-DGHWRQXL.js.map +0 -7
- package/dist/chunk-DNKSVWMD.js +0 -108
- package/dist/chunk-DNKSVWMD.js.map +0 -7
- package/dist/chunk-DQ3KELXD.js +0 -74
- package/dist/chunk-DQ3KELXD.js.map +0 -7
- package/dist/chunk-DUJSRBLP.js +0 -122
- package/dist/chunk-DUJSRBLP.js.map +0 -7
- package/dist/chunk-E3BIT53W.js +0 -154
- package/dist/chunk-E3BIT53W.js.map +0 -7
- package/dist/chunk-EARWG4EV.js +0 -22
- package/dist/chunk-EARWG4EV.js.map +0 -7
- package/dist/chunk-EI5BHWXA.js +0 -1662
- package/dist/chunk-EI5BHWXA.js.map +0 -7
- package/dist/chunk-EJ3YAFDP.js +0 -37
- package/dist/chunk-EJ3YAFDP.js.map +0 -7
- package/dist/chunk-EKJ2CABV.js +0 -76
- package/dist/chunk-EKJ2CABV.js.map +0 -7
- package/dist/chunk-EKP32DLN.js +0 -16
- package/dist/chunk-EKP32DLN.js.map +0 -7
- package/dist/chunk-EYPAAGN5.js +0 -51
- package/dist/chunk-EYPAAGN5.js.map +0 -7
- package/dist/chunk-F5N6CLJJ.js +0 -1995
- package/dist/chunk-F5N6CLJJ.js.map +0 -7
- package/dist/chunk-FZKLLNDS.js +0 -228
- package/dist/chunk-FZKLLNDS.js.map +0 -7
- package/dist/chunk-GIUBARWS.js +0 -99
- package/dist/chunk-GIUBARWS.js.map +0 -7
- package/dist/chunk-GQNJO2P2.js +0 -102
- package/dist/chunk-GQNJO2P2.js.map +0 -7
- package/dist/chunk-IJGF2ETG.js +0 -68
- package/dist/chunk-IJGF2ETG.js.map +0 -7
- package/dist/chunk-ILYDELUE.js +0 -46
- package/dist/chunk-ILYDELUE.js.map +0 -7
- package/dist/chunk-J6QFW4LD.js +0 -55
- package/dist/chunk-J6QFW4LD.js.map +0 -7
- package/dist/chunk-J7N3DLH6.js +0 -117
- package/dist/chunk-J7N3DLH6.js.map +0 -7
- package/dist/chunk-JFDWKLQC.js +0 -23
- package/dist/chunk-JFDWKLQC.js.map +0 -7
- package/dist/chunk-JULOLTZS.js +0 -61
- package/dist/chunk-JULOLTZS.js.map +0 -7
- package/dist/chunk-KJKBDQ4D.js +0 -220
- package/dist/chunk-KJKBDQ4D.js.map +0 -7
- package/dist/chunk-KRBQLMOP.js +0 -41
- package/dist/chunk-KRBQLMOP.js.map +0 -7
- package/dist/chunk-LXKPNATC.js +0 -624
- package/dist/chunk-LXKPNATC.js.map +0 -7
- package/dist/chunk-NSBPE2FW.js +0 -17
- package/dist/chunk-NSBPE2FW.js.map +0 -7
- package/dist/chunk-OK3I555A.js +0 -243
- package/dist/chunk-OK3I555A.js.map +0 -7
- package/dist/chunk-OKWCKCPE.js +0 -414
- package/dist/chunk-OKWCKCPE.js.map +0 -7
- package/dist/chunk-OO7JDFS4.js +0 -157
- package/dist/chunk-OO7JDFS4.js.map +0 -7
- package/dist/chunk-OQBBVTDG.js.map +0 -7
- package/dist/chunk-OQSQC7VB.js +0 -77
- package/dist/chunk-OQSQC7VB.js.map +0 -7
- package/dist/chunk-PED7L5GX.js +0 -92
- package/dist/chunk-PED7L5GX.js.map +0 -7
- package/dist/chunk-PMI56ED5.js +0 -167
- package/dist/chunk-PMI56ED5.js.map +0 -7
- package/dist/chunk-QJQS6TUN.js +0 -44
- package/dist/chunk-QJQS6TUN.js.map +0 -7
- package/dist/chunk-QN34TGD3.js +0 -83
- package/dist/chunk-QN34TGD3.js.map +0 -7
- package/dist/chunk-QSN77T7C.js +0 -250
- package/dist/chunk-QSN77T7C.js.map +0 -7
- package/dist/chunk-R56PH7YE.js +0 -78
- package/dist/chunk-R56PH7YE.js.map +0 -7
- package/dist/chunk-RH7NHVSK.js +0 -16
- package/dist/chunk-RH7NHVSK.js.map +0 -7
- package/dist/chunk-RMTT4KDY.js +0 -191
- package/dist/chunk-RMTT4KDY.js.map +0 -7
- package/dist/chunk-RQ2TMLKG.js +0 -142
- package/dist/chunk-RQ2TMLKG.js.map +0 -7
- package/dist/chunk-SO3T35U7.js +0 -80
- package/dist/chunk-SO3T35U7.js.map +0 -7
- package/dist/chunk-UKMLICWS.js +0 -51
- package/dist/chunk-UKMLICWS.js.map +0 -7
- package/dist/chunk-W2YERO7E.js +0 -170
- package/dist/chunk-W2YERO7E.js.map +0 -7
- package/dist/chunk-W53GKIZQ.js +0 -50
- package/dist/chunk-W53GKIZQ.js.map +0 -7
- package/dist/chunk-WA4MWYRW.js +0 -254
- package/dist/chunk-WA4MWYRW.js.map +0 -7
- package/dist/chunk-XC6M4CSW.js +0 -44
- package/dist/chunk-XC6M4CSW.js.map +0 -7
- package/dist/chunk-XK42ZBDE.js +0 -23
- package/dist/chunk-XK42ZBDE.js.map +0 -7
- package/dist/chunk-XUV6DDBF.js +0 -124
- package/dist/chunk-XUV6DDBF.js.map +0 -7
- package/dist/chunk-XZXS2W24.js.map +0 -7
- package/dist/chunk-Y3WD5CSW.js +0 -49
- package/dist/chunk-Y3WD5CSW.js.map +0 -7
- package/dist/chunk-Y4BJXXYV.js +0 -148
- package/dist/chunk-Y4BJXXYV.js.map +0 -7
- package/dist/chunk-YNIH3KMU.js +0 -121
- package/dist/chunk-YNIH3KMU.js.map +0 -7
- package/dist/chunk-YOBA3NAM.js +0 -55
- package/dist/chunk-YOBA3NAM.js.map +0 -7
- package/dist/chunk-ZUJBM6HE.js +0 -125
- package/dist/chunk-ZUJBM6HE.js.map +0 -7
- package/dist/commands/antigravity/backfill.js.map +0 -7
- package/dist/commands/auth/create-key.js.map +0 -7
- package/dist/commands/auth/login.js.map +0 -7
- package/dist/commands/auth/logout.js.map +0 -7
- package/dist/commands/auth/revoke-key.js.map +0 -7
- package/dist/commands/auth/signup.js.map +0 -7
- package/dist/commands/auth/status.js.map +0 -7
- package/dist/commands/catalog/index.js.map +0 -7
- package/dist/commands/catalog/recommend.js.map +0 -7
- package/dist/commands/convert.js.map +0 -7
- package/dist/commands/converters.js.map +0 -7
- package/dist/commands/crons/list.js.map +0 -7
- package/dist/commands/crons/run.js.map +0 -7
- package/dist/commands/dashboard.js.map +0 -7
- package/dist/commands/diagnostics.js.map +0 -7
- package/dist/commands/eval-targets/create.js.map +0 -7
- package/dist/commands/eval-targets/list.js.map +0 -7
- package/dist/commands/evals/agent.js.map +0 -7
- package/dist/commands/evals/benchmark.js.map +0 -7
- package/dist/commands/evals/compare.js.map +0 -7
- package/dist/commands/evals/create.js.map +0 -7
- package/dist/commands/evals/optimize-description.js.map +0 -7
- package/dist/commands/evals/optimize.js.map +0 -7
- package/dist/commands/evals/run.js.map +0 -7
- package/dist/commands/gateway/ensure.js.map +0 -7
- package/dist/commands/hooks/emit-instructions.js.map +0 -7
- package/dist/commands/hooks/install.js.map +0 -7
- package/dist/commands/hooks/run.js.map +0 -7
- package/dist/commands/hooks/uninstall.js.map +0 -7
- package/dist/commands/import.js.map +0 -7
- package/dist/commands/instructions/create.js.map +0 -7
- package/dist/commands/instructions/delete.js.map +0 -7
- package/dist/commands/instructions/fork.js.map +0 -7
- package/dist/commands/instructions/get.js.map +0 -7
- package/dist/commands/instructions/list.js.map +0 -7
- package/dist/commands/instructions/promote.js.map +0 -7
- package/dist/commands/instructions/pull.js.map +0 -7
- package/dist/commands/instructions/upstream.js.map +0 -7
- package/dist/commands/instructions/versions.js.map +0 -7
- package/dist/commands/launcher.js.map +0 -7
- package/dist/commands/org/current.js.map +0 -7
- package/dist/commands/org/list.js.map +0 -7
- package/dist/commands/org/switch.js.map +0 -7
- package/dist/commands/packs/add-instruction.js.map +0 -7
- package/dist/commands/packs/apply.js.map +0 -7
- package/dist/commands/packs/create.js.map +0 -7
- package/dist/commands/packs/fork.js.map +0 -7
- package/dist/commands/packs/get.js.map +0 -7
- package/dist/commands/packs/list.js.map +0 -7
- package/dist/commands/packs/remove-instruction.js.map +0 -7
- package/dist/commands/proxy/env.js.map +0 -7
- package/dist/commands/proxy/logs.js.map +0 -7
- package/dist/commands/proxy/restart.js.map +0 -7
- package/dist/commands/proxy/setup.js.map +0 -7
- package/dist/commands/proxy/start.js.map +0 -7
- package/dist/commands/proxy/status.js.map +0 -7
- package/dist/commands/proxy/stop.js.map +0 -7
- package/dist/commands/research/backfill.js.map +0 -7
- package/dist/commands/research/tail-transcript.js.map +0 -7
- package/dist/commands/service/install.js.map +0 -7
- package/dist/commands/service/status.js.map +0 -7
- package/dist/commands/service/uninstall.js.map +0 -7
- package/dist/commands/sessions/analyze.js.map +0 -7
- package/dist/commands/sessions/end.js.map +0 -7
- package/dist/commands/sessions/import.js.map +0 -7
- package/dist/commands/sessions/list.js.map +0 -7
- package/dist/commands/sessions/start.js.map +0 -7
- package/dist/commands/setup.js.map +0 -7
- package/dist/commands/skills/export-approved.js.map +0 -7
- package/dist/commands/skills/install.js.map +0 -7
- package/dist/commands/skills/list.js.map +0 -7
- package/dist/commands/skills/publish.js.map +0 -7
- package/dist/commands/skills/search.js.map +0 -7
- package/dist/commands/skills/update.js.map +0 -7
- package/dist/commands/suggestions/accept.js.map +0 -7
- package/dist/commands/suggestions/dismiss.js.map +0 -7
- package/dist/commands/suggestions/list.js.map +0 -7
- package/dist/commands/suggestions/refresh.js.map +0 -7
- package/dist/cursor-BGQJ4CWI.js +0 -134
- package/dist/cursor-BGQJ4CWI.js.map +0 -7
- package/dist/dashboard/Dashboard.js.map +0 -7
- package/dist/dashboard/data.js.map +0 -7
- package/dist/dashboard/launcher/ActiveJobsList.js.map +0 -7
- package/dist/dashboard/launcher/LauncherOverlay.js.map +0 -7
- package/dist/dashboard/launcher/NewLaunchForm.js.map +0 -7
- package/dist/dashboard/launcher/api.js.map +0 -7
- package/dist/dashboard/launcher/tool-labels.js.map +0 -7
- package/dist/dashboard/launcher/types.js.map +0 -7
- package/dist/dashboard/launcher/useLaunchJobs.js.map +0 -7
- package/dist/dashboard/panels/friction.js.map +0 -7
- package/dist/dashboard/panels/insights.js.map +0 -7
- package/dist/dashboard/panels/instructions.js.map +0 -7
- package/dist/dashboard/panels/outcomes.js.map +0 -7
- package/dist/dashboard/panels/overview.js.map +0 -7
- package/dist/dashboard/panels/shared.js.map +0 -7
- package/dist/dashboard/types.js.map +0 -7
- package/dist/dist-UNYP5PJR.js +0 -56
- package/dist/dist-UNYP5PJR.js.map +0 -7
- package/dist/index.js.map +0 -7
- package/dist/lib/active-org-refresh.js.map +0 -7
- package/dist/lib/active-org.js.map +0 -7
- package/dist/lib/agent-loop.js.map +0 -7
- package/dist/lib/antigravity-transcript.js.map +0 -7
- package/dist/lib/api-client.js.map +0 -7
- package/dist/lib/auth.js.map +0 -7
- package/dist/lib/capture-hosts.js.map +0 -7
- package/dist/lib/detect-languages.js.map +0 -7
- package/dist/lib/detect-tmux.js.map +0 -7
- package/dist/lib/diagnostics.js.map +0 -7
- package/dist/lib/editor-proxy-pins.js.map +0 -7
- package/dist/lib/ensure-api-key.js.map +0 -7
- package/dist/lib/eval-analyzer.js.map +0 -7
- package/dist/lib/eval-benchmark.js.map +0 -7
- package/dist/lib/eval-conversation-handler.js.map +0 -7
- package/dist/lib/eval-executor.js.map +0 -7
- package/dist/lib/eval-grader.js.map +0 -7
- package/dist/lib/eval-meta-judge.js.map +0 -7
- package/dist/lib/eval-trigger-tester.js.map +0 -7
- package/dist/lib/eval-worktree.js.map +0 -7
- package/dist/lib/gateway-entry.js.map +0 -7
- package/dist/lib/gateway-identity.js.map +0 -7
- package/dist/lib/gateway-lifecycle.js.map +0 -7
- package/dist/lib/gateway.js.map +0 -7
- package/dist/lib/handlers/cron-refresh-skills.js.map +0 -7
- package/dist/lib/handlers/cron-suggest-instructions.js.map +0 -7
- package/dist/lib/handlers/process-announcement.js.map +0 -7
- package/dist/lib/handlers/process-changelog.js.map +0 -7
- package/dist/lib/handlers/process-conversation.js.map +0 -7
- package/dist/lib/handlers/process-eval.js.map +0 -7
- package/dist/lib/handlers/process-insights.js.map +0 -7
- package/dist/lib/handlers/process-launch.js.map +0 -7
- package/dist/lib/handlers/process-run-cleanup.js.map +0 -7
- package/dist/lib/handlers/process-send-message.js.map +0 -7
- package/dist/lib/handlers/process-session-goal.js.map +0 -7
- package/dist/lib/hooks-config.js.map +0 -7
- package/dist/lib/insights-prompts.js.map +0 -7
- package/dist/lib/instruction-snapshot.js.map +0 -7
- package/dist/lib/job-helpers.js.map +0 -7
- package/dist/lib/llm-client.js.map +0 -7
- package/dist/lib/manual-tasks-meta.js.map +0 -7
- package/dist/lib/manual-tasks.js.map +0 -7
- package/dist/lib/output.js.map +0 -7
- package/dist/lib/permanent-job-error.js.map +0 -7
- package/dist/lib/pid-identity.js.map +0 -7
- package/dist/lib/proxy-respawn.js.map +0 -7
- package/dist/lib/research-client.js.map +0 -7
- package/dist/lib/setup-steps.js.map +0 -7
- package/dist/lib/skills-loader.js.map +0 -7
- package/dist/lib/statusline-shim.js.map +0 -7
- package/dist/lib/telemetry.js.map +0 -7
- package/dist/lib/terminal-target-heartbeat.js.map +0 -7
- package/dist/lib/tmux.js.map +0 -7
- package/dist/lib/transcript-rate-limit-watcher.js.map +0 -7
- package/dist/lib/types.js.map +0 -7
- package/dist/lib/version-check.js.map +0 -7
- package/dist/lib/which.js.map +0 -7
- package/dist/lib/worktree.js.map +0 -7
- package/dist/opencode-IQ7X5YMJ.js +0 -190
- package/dist/opencode-IQ7X5YMJ.js.map +0 -7
package/dist/chunk-LXKPNATC.js
DELETED
|
@@ -1,624 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
removeStatuslineShimAnyHome
|
|
3
|
-
} from "./chunk-OQBBVTDG.js";
|
|
4
|
-
|
|
5
|
-
// src/lib/hooks-config.ts
|
|
6
|
-
import { execSync } from "node:child_process";
|
|
7
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, copyFileSync } from "node:fs";
|
|
8
|
-
import { homedir } from "node:os";
|
|
9
|
-
import { join, dirname } from "node:path";
|
|
10
|
-
function detectInstalledTools(projectPath) {
|
|
11
|
-
const tools = ["claude_code"];
|
|
12
|
-
if (existsSync(join(projectPath, ".cursor"))) {
|
|
13
|
-
tools.push("cursor");
|
|
14
|
-
}
|
|
15
|
-
if (existsSync(join(projectPath, ".github"))) {
|
|
16
|
-
tools.push("copilot_agent");
|
|
17
|
-
}
|
|
18
|
-
if (existsSync(join(projectPath, ".agents"))) {
|
|
19
|
-
tools.push("antigravity");
|
|
20
|
-
}
|
|
21
|
-
return tools;
|
|
22
|
-
}
|
|
23
|
-
function generateCursorHooksConfig(binDir) {
|
|
24
|
-
const prefix = binDir ? `PATH="${binDir}:$PATH" ` : "";
|
|
25
|
-
const cmd = (name) => ({ command: `${prefix}rulemetric hooks run ${name}` });
|
|
26
|
-
return {
|
|
27
|
-
version: 1,
|
|
28
|
-
hooks: {
|
|
29
|
-
sessionStart: [cmd("session-start")],
|
|
30
|
-
beforeSubmitPrompt: [cmd("user-prompt")],
|
|
31
|
-
afterFileEdit: [cmd("post-tool-use")],
|
|
32
|
-
beforeShellExecution: [cmd("post-tool-use")],
|
|
33
|
-
afterShellExecution: [cmd("post-tool-use")],
|
|
34
|
-
beforeMCPExecution: [cmd("post-tool-use")],
|
|
35
|
-
afterMCPExecution: [cmd("post-tool-use")],
|
|
36
|
-
// `afterAgentResponse` carries the full assistant response text +
|
|
37
|
-
// token usage. Verified empirically via a probe hook on
|
|
38
|
-
// 2026-05-12 — Cursor passes `text`, `input_tokens`,
|
|
39
|
-
// `output_tokens`, `cache_read_tokens`, `cache_write_tokens`. This
|
|
40
|
-
// is the cleanest path to per-turn assistant content for Cursor
|
|
41
|
-
// (chat traffic itself bypasses the proxy via HTTP/2 — see
|
|
42
|
-
// docs/audits/2026-05-11-cursor-capture-architecture.md).
|
|
43
|
-
afterAgentResponse: [cmd("assistant-response")],
|
|
44
|
-
// `stop` fires when the agent loop ends for a single turn (status:
|
|
45
|
-
// completed|aborted|error). Per-turn, NOT per-session — route it to
|
|
46
|
-
// post-tool-use, not session-end. The real session boundary is
|
|
47
|
-
// `sessionEnd` below.
|
|
48
|
-
stop: [cmd("post-tool-use")],
|
|
49
|
-
sessionEnd: [cmd("session-end")]
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function generateCopilotHooksConfig(binDir) {
|
|
54
|
-
const prefix = binDir ? `PATH="${binDir}:$PATH" ` : "";
|
|
55
|
-
const cmd = (name) => ({ type: "command", bash: `${prefix}rulemetric hooks run ${name}` });
|
|
56
|
-
return {
|
|
57
|
-
version: 1,
|
|
58
|
-
hooks: {
|
|
59
|
-
sessionStart: [cmd("session-start")],
|
|
60
|
-
userPromptSubmitted: [cmd("user-prompt")],
|
|
61
|
-
postToolUse: [cmd("post-tool-use")],
|
|
62
|
-
sessionEnd: [cmd("session-end")]
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
function generateClaudeCodeHooksConfig(binDir) {
|
|
67
|
-
const prefix = binDir ? `PATH="${binDir}:$PATH" ` : "";
|
|
68
|
-
const mk = (name) => ({
|
|
69
|
-
type: "command",
|
|
70
|
-
command: `${prefix}rulemetric hooks run ${name}`
|
|
71
|
-
});
|
|
72
|
-
return {
|
|
73
|
-
SessionStart: [{ hooks: [mk("session-start")] }],
|
|
74
|
-
UserPromptSubmit: [{ hooks: [mk("user-prompt")] }],
|
|
75
|
-
PostToolUse: [{ matcher: ".*", hooks: [mk("post-tool-use")] }],
|
|
76
|
-
Stop: [{ hooks: [mk("assistant-response")] }],
|
|
77
|
-
SessionEnd: [{ hooks: [mk("session-end")] }]
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
function readClaudeSettings(configPath) {
|
|
81
|
-
if (!existsSync(configPath)) return { settings: {}, recoveredBackup: null };
|
|
82
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
83
|
-
try {
|
|
84
|
-
return { settings: JSON.parse(raw), recoveredBackup: null };
|
|
85
|
-
} catch {
|
|
86
|
-
const recoveredBackup = `${configPath}.corrupt.bak`;
|
|
87
|
-
writeFileSync(recoveredBackup, raw);
|
|
88
|
-
return { settings: {}, recoveredBackup };
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function writeClaudeSettingsWithBackup(configPath, settings) {
|
|
92
|
-
mkdirSync(dirname(configPath), { recursive: true });
|
|
93
|
-
let backupPath = null;
|
|
94
|
-
if (existsSync(configPath)) {
|
|
95
|
-
backupPath = `${configPath}.bak`;
|
|
96
|
-
copyFileSync(configPath, backupPath);
|
|
97
|
-
}
|
|
98
|
-
writeFileSync(configPath, JSON.stringify(settings, null, 2) + "\n");
|
|
99
|
-
return { backupPath };
|
|
100
|
-
}
|
|
101
|
-
function readMergeableJson(configPath) {
|
|
102
|
-
if (!existsSync(configPath)) return {};
|
|
103
|
-
const raw = readFileSync(configPath, "utf-8");
|
|
104
|
-
try {
|
|
105
|
-
return JSON.parse(raw);
|
|
106
|
-
} catch {
|
|
107
|
-
try {
|
|
108
|
-
writeFileSync(`${configPath}.corrupt.bak`, raw);
|
|
109
|
-
} catch {
|
|
110
|
-
}
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function mergeClaudeCodeHooks(settings, binDir) {
|
|
115
|
-
const generated = generateClaudeCodeHooksConfig(binDir);
|
|
116
|
-
const hooks = settings.hooks ?? {};
|
|
117
|
-
for (const [event, blocks] of Object.entries(generated)) {
|
|
118
|
-
const current = hooks[event] ?? [];
|
|
119
|
-
const alreadyPresent = current.some(
|
|
120
|
-
(b) => b?.hooks?.some((h) => typeof h?.command === "string" && h.command.includes("rulemetric"))
|
|
121
|
-
);
|
|
122
|
-
if (!alreadyPresent) {
|
|
123
|
-
hooks[event] = [...current, ...blocks];
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
settings.hooks = hooks;
|
|
127
|
-
}
|
|
128
|
-
function hasRulemetricClaudeHooks(settings) {
|
|
129
|
-
if (!settings.hooks || typeof settings.hooks !== "object") return false;
|
|
130
|
-
const hooks = settings.hooks;
|
|
131
|
-
return Object.values(hooks).some(
|
|
132
|
-
(blocks) => Array.isArray(blocks) && blocks.some(
|
|
133
|
-
(b) => b?.hooks?.some((h) => typeof h?.command === "string" && h.command.includes("rulemetric"))
|
|
134
|
-
)
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
function removeClaudeCodeHooks(settings) {
|
|
138
|
-
if (!settings.hooks || typeof settings.hooks !== "object") return false;
|
|
139
|
-
const hooks = settings.hooks;
|
|
140
|
-
let removed = 0;
|
|
141
|
-
for (const event of Object.keys(hooks)) {
|
|
142
|
-
const entries = hooks[event];
|
|
143
|
-
if (!Array.isArray(entries)) continue;
|
|
144
|
-
const kept = entries.filter((block) => {
|
|
145
|
-
const isRulemetric = block?.hooks?.some(
|
|
146
|
-
(h) => typeof h?.command === "string" && h.command.includes("rulemetric")
|
|
147
|
-
);
|
|
148
|
-
if (isRulemetric) removed += 1;
|
|
149
|
-
return !isRulemetric;
|
|
150
|
-
});
|
|
151
|
-
if (kept.length === 0) delete hooks[event];
|
|
152
|
-
else hooks[event] = kept;
|
|
153
|
-
}
|
|
154
|
-
if (Object.keys(hooks).length === 0) delete settings.hooks;
|
|
155
|
-
return removed > 0;
|
|
156
|
-
}
|
|
157
|
-
var RULEMETRIC_NO_PROXY = "localhost,127.0.0.1,*.supabase.co,*.supabase.in";
|
|
158
|
-
function claudeSettingsInstallPath(configDir, isGlobal) {
|
|
159
|
-
return join(configDir, isGlobal ? "settings.json" : "settings.local.json");
|
|
160
|
-
}
|
|
161
|
-
function removeRulemetricProxyEnv(settings, gatewayPort) {
|
|
162
|
-
const env = settings.env;
|
|
163
|
-
if (!env || typeof env !== "object") return false;
|
|
164
|
-
let removed = false;
|
|
165
|
-
const proxy = env.HTTPS_PROXY;
|
|
166
|
-
if (proxy === `http://localhost:${gatewayPort}` || proxy === `http://127.0.0.1:${gatewayPort}`) {
|
|
167
|
-
delete env.HTTPS_PROXY;
|
|
168
|
-
removed = true;
|
|
169
|
-
}
|
|
170
|
-
if (env.NO_PROXY === RULEMETRIC_NO_PROXY) {
|
|
171
|
-
delete env.NO_PROXY;
|
|
172
|
-
removed = true;
|
|
173
|
-
}
|
|
174
|
-
const ca = env.NODE_EXTRA_CA_CERTS;
|
|
175
|
-
if (typeof ca === "string" && ca.includes(".mitmproxy") && ca.endsWith("mitmproxy-ca-cert.pem")) {
|
|
176
|
-
delete env.NODE_EXTRA_CA_CERTS;
|
|
177
|
-
removed = true;
|
|
178
|
-
}
|
|
179
|
-
if (removed && Object.keys(env).length === 0) delete settings.env;
|
|
180
|
-
return removed;
|
|
181
|
-
}
|
|
182
|
-
function removeRulemetricMachineState(settings, gatewayPort) {
|
|
183
|
-
const removedHooks = removeClaudeCodeHooks(settings);
|
|
184
|
-
const removedProxyEnv = removeRulemetricProxyEnv(settings, gatewayPort);
|
|
185
|
-
const removedStatusline = removeStatuslineShimAnyHome(settings);
|
|
186
|
-
return {
|
|
187
|
-
removedHooks,
|
|
188
|
-
removedProxyEnv,
|
|
189
|
-
removedStatusline,
|
|
190
|
-
removed: removedHooks || removedProxyEnv || removedStatusline
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
function migrateSharedClaudeSettings(sharedPath, gatewayPort) {
|
|
194
|
-
const none = {
|
|
195
|
-
migrated: false,
|
|
196
|
-
backupPath: null,
|
|
197
|
-
removedHooks: false,
|
|
198
|
-
removedProxyEnv: false,
|
|
199
|
-
removedStatusline: false,
|
|
200
|
-
removed: false
|
|
201
|
-
};
|
|
202
|
-
if (!existsSync(sharedPath)) return none;
|
|
203
|
-
let settings;
|
|
204
|
-
try {
|
|
205
|
-
settings = JSON.parse(readFileSync(sharedPath, "utf-8"));
|
|
206
|
-
} catch {
|
|
207
|
-
return none;
|
|
208
|
-
}
|
|
209
|
-
const removal = removeRulemetricMachineState(settings, gatewayPort);
|
|
210
|
-
if (!removal.removed) return none;
|
|
211
|
-
const { backupPath } = writeClaudeSettingsWithBackup(sharedPath, settings);
|
|
212
|
-
return { ...removal, migrated: true, backupPath };
|
|
213
|
-
}
|
|
214
|
-
function cleanClaudeSettingsFiles(claudeDir, gatewayPort) {
|
|
215
|
-
const results = [];
|
|
216
|
-
for (const fileName of ["settings.json", "settings.local.json"]) {
|
|
217
|
-
const configPath = join(claudeDir, fileName);
|
|
218
|
-
if (!existsSync(configPath)) continue;
|
|
219
|
-
const { settings, recoveredBackup } = readClaudeSettings(configPath);
|
|
220
|
-
const removal = removeRulemetricMachineState(settings, gatewayPort);
|
|
221
|
-
if (removal.removed) {
|
|
222
|
-
writeClaudeSettingsWithBackup(configPath, settings);
|
|
223
|
-
}
|
|
224
|
-
results.push({
|
|
225
|
-
...removal,
|
|
226
|
-
configPath,
|
|
227
|
-
fileName,
|
|
228
|
-
recoveredBackup,
|
|
229
|
-
changed: removal.removed
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
return results;
|
|
233
|
-
}
|
|
234
|
-
function writeCursorHooksToDir(cursorDir, binDir) {
|
|
235
|
-
if (!existsSync(cursorDir)) {
|
|
236
|
-
return null;
|
|
237
|
-
}
|
|
238
|
-
const configPath = join(cursorDir, "hooks.json");
|
|
239
|
-
const generated = generateCursorHooksConfig(binDir);
|
|
240
|
-
const parsed = readMergeableJson(configPath);
|
|
241
|
-
if (parsed === null) return null;
|
|
242
|
-
const existing = parsed;
|
|
243
|
-
const merged = { ...existing.hooks ?? {} };
|
|
244
|
-
const isRulemetricHook = (h) => typeof h === "object" && h !== null && "command" in h && typeof h.command === "string" && h.command.includes("rulemetric");
|
|
245
|
-
for (const [event, hooks] of Object.entries(generated.hooks)) {
|
|
246
|
-
const current = merged[event] ?? [];
|
|
247
|
-
const siblings = current.filter((h) => !isRulemetricHook(h));
|
|
248
|
-
merged[event] = [...siblings, ...hooks];
|
|
249
|
-
}
|
|
250
|
-
const result = {
|
|
251
|
-
version: existing.version ?? generated.version,
|
|
252
|
-
hooks: merged
|
|
253
|
-
};
|
|
254
|
-
writeFileSync(configPath, JSON.stringify(result, null, 2) + "\n");
|
|
255
|
-
return configPath;
|
|
256
|
-
}
|
|
257
|
-
function writeCursorHooks(projectPath, binDir) {
|
|
258
|
-
return writeCursorHooksToDir(join(projectPath, ".cursor"), binDir);
|
|
259
|
-
}
|
|
260
|
-
function writeCursorUserHooks(binDir, home = homedir()) {
|
|
261
|
-
const cursorHome = join(home, ".cursor");
|
|
262
|
-
if (!existsSync(cursorHome)) return null;
|
|
263
|
-
return writeCursorHooksToDir(cursorHome, binDir);
|
|
264
|
-
}
|
|
265
|
-
function writeCopilotHooks(projectPath, binDir) {
|
|
266
|
-
const githubDir = join(projectPath, ".github");
|
|
267
|
-
if (!existsSync(githubDir)) {
|
|
268
|
-
return null;
|
|
269
|
-
}
|
|
270
|
-
const hooksDir = join(githubDir, "hooks");
|
|
271
|
-
mkdirSync(hooksDir, { recursive: true });
|
|
272
|
-
const configPath = join(hooksDir, "rulemetric.json");
|
|
273
|
-
const config = generateCopilotHooksConfig(binDir);
|
|
274
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
275
|
-
return configPath;
|
|
276
|
-
}
|
|
277
|
-
function removeCursorHooksFromFile(configPath) {
|
|
278
|
-
if (!existsSync(configPath)) {
|
|
279
|
-
return false;
|
|
280
|
-
}
|
|
281
|
-
let config;
|
|
282
|
-
try {
|
|
283
|
-
config = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
284
|
-
} catch {
|
|
285
|
-
return false;
|
|
286
|
-
}
|
|
287
|
-
if (!config.hooks) {
|
|
288
|
-
return false;
|
|
289
|
-
}
|
|
290
|
-
let changed = false;
|
|
291
|
-
for (const [event, hooks] of Object.entries(config.hooks)) {
|
|
292
|
-
const filtered = hooks.filter((h) => {
|
|
293
|
-
if (typeof h !== "object" || h === null || !("command" in h)) return true;
|
|
294
|
-
const cmd = h.command;
|
|
295
|
-
if (typeof cmd === "string" && cmd.includes("rulemetric")) {
|
|
296
|
-
changed = true;
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
return true;
|
|
300
|
-
});
|
|
301
|
-
if (filtered.length === 0) {
|
|
302
|
-
delete config.hooks[event];
|
|
303
|
-
} else {
|
|
304
|
-
config.hooks[event] = filtered;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
if (changed) {
|
|
308
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
309
|
-
}
|
|
310
|
-
return changed;
|
|
311
|
-
}
|
|
312
|
-
function removeCursorHooks(projectPath) {
|
|
313
|
-
return removeCursorHooksFromFile(join(projectPath, ".cursor", "hooks.json"));
|
|
314
|
-
}
|
|
315
|
-
function removeCursorUserHooks() {
|
|
316
|
-
return removeCursorHooksFromFile(join(homedir(), ".cursor", "hooks.json"));
|
|
317
|
-
}
|
|
318
|
-
function writeCursorProxyConfig(projectPath, gatewayPort, certPath) {
|
|
319
|
-
const cursorDir = join(projectPath, ".cursor");
|
|
320
|
-
if (!existsSync(cursorDir)) return false;
|
|
321
|
-
const settingsPath = join(cursorDir, "settings.json");
|
|
322
|
-
const settings = readMergeableJson(settingsPath);
|
|
323
|
-
if (settings === null) return false;
|
|
324
|
-
settings["http.proxy"] = `http://localhost:${gatewayPort}`;
|
|
325
|
-
settings["http.proxyStrictSSL"] = existsSync(certPath);
|
|
326
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
327
|
-
return true;
|
|
328
|
-
}
|
|
329
|
-
function writeVSCodeProxyConfig(projectPath, gatewayPort, certPath) {
|
|
330
|
-
const vscodeDir = join(projectPath, ".vscode");
|
|
331
|
-
if (!existsSync(vscodeDir)) return false;
|
|
332
|
-
const settingsPath = join(vscodeDir, "settings.json");
|
|
333
|
-
const settings = readMergeableJson(settingsPath);
|
|
334
|
-
if (settings === null) return false;
|
|
335
|
-
settings["http.proxy"] = `http://localhost:${gatewayPort}`;
|
|
336
|
-
settings["http.proxyStrictSSL"] = existsSync(certPath);
|
|
337
|
-
const copilotAdvanced = settings["github.copilot.advanced"] ?? {};
|
|
338
|
-
copilotAdvanced["debug.overrideProxyUrl"] = `http://localhost:${gatewayPort}`;
|
|
339
|
-
settings["github.copilot.advanced"] = copilotAdvanced;
|
|
340
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
341
|
-
return true;
|
|
342
|
-
}
|
|
343
|
-
function removeVSCodeProxyConfig(projectPath) {
|
|
344
|
-
const settingsPath = join(projectPath, ".vscode", "settings.json");
|
|
345
|
-
if (!existsSync(settingsPath)) return false;
|
|
346
|
-
let settings;
|
|
347
|
-
try {
|
|
348
|
-
settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
349
|
-
} catch {
|
|
350
|
-
return false;
|
|
351
|
-
}
|
|
352
|
-
let changed = false;
|
|
353
|
-
if (settings["http.proxy"]) {
|
|
354
|
-
delete settings["http.proxy"];
|
|
355
|
-
delete settings["http.proxyStrictSSL"];
|
|
356
|
-
changed = true;
|
|
357
|
-
}
|
|
358
|
-
const copilotAdvanced = settings["github.copilot.advanced"];
|
|
359
|
-
if (copilotAdvanced?.["debug.overrideProxyUrl"]) {
|
|
360
|
-
delete copilotAdvanced["debug.overrideProxyUrl"];
|
|
361
|
-
if (Object.keys(copilotAdvanced).length === 0) {
|
|
362
|
-
delete settings["github.copilot.advanced"];
|
|
363
|
-
}
|
|
364
|
-
changed = true;
|
|
365
|
-
}
|
|
366
|
-
if (changed) {
|
|
367
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
368
|
-
}
|
|
369
|
-
return changed;
|
|
370
|
-
}
|
|
371
|
-
function removeCopilotHooks(projectPath) {
|
|
372
|
-
const configPath = join(projectPath, ".github", "hooks", "rulemetric.json");
|
|
373
|
-
if (!existsSync(configPath)) {
|
|
374
|
-
return false;
|
|
375
|
-
}
|
|
376
|
-
unlinkSync(configPath);
|
|
377
|
-
return true;
|
|
378
|
-
}
|
|
379
|
-
var LAUNCH_AGENT_LABEL = "com.rulemetric.env";
|
|
380
|
-
function getLaunchAgentPath() {
|
|
381
|
-
return join(homedir(), "Library", "LaunchAgents", `${LAUNCH_AGENT_LABEL}.plist`);
|
|
382
|
-
}
|
|
383
|
-
function installMacOSProxyEnv(gatewayPort, certPath) {
|
|
384
|
-
if (process.platform !== "darwin") return false;
|
|
385
|
-
const proxyUrl = `http://localhost:${gatewayPort}`;
|
|
386
|
-
try {
|
|
387
|
-
execSync(`launchctl setenv HTTPS_PROXY ${proxyUrl}`, { stdio: "pipe" });
|
|
388
|
-
if (existsSync(certPath)) {
|
|
389
|
-
execSync(`launchctl setenv NODE_EXTRA_CA_CERTS ${certPath}`, { stdio: "pipe" });
|
|
390
|
-
}
|
|
391
|
-
} catch {
|
|
392
|
-
return false;
|
|
393
|
-
}
|
|
394
|
-
const plistPath = getLaunchAgentPath();
|
|
395
|
-
const agentsDir = join(homedir(), "Library", "LaunchAgents");
|
|
396
|
-
mkdirSync(agentsDir, { recursive: true });
|
|
397
|
-
const certLine = existsSync(certPath) ? `launchctl setenv NODE_EXTRA_CA_CERTS ${certPath};` : "";
|
|
398
|
-
const bootCmd = `if nc -z -w 1 127.0.0.1 ${gatewayPort} 2>/dev/null; then launchctl setenv HTTPS_PROXY ${proxyUrl};${certLine} else launchctl unsetenv HTTPS_PROXY; launchctl unsetenv NODE_EXTRA_CA_CERTS; fi`;
|
|
399
|
-
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
400
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
|
401
|
-
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
402
|
-
<plist version="1.0">
|
|
403
|
-
<dict>
|
|
404
|
-
<key>Label</key>
|
|
405
|
-
<string>${LAUNCH_AGENT_LABEL}</string>
|
|
406
|
-
<key>ProgramArguments</key>
|
|
407
|
-
<array>
|
|
408
|
-
<string>/bin/sh</string>
|
|
409
|
-
<string>-c</string>
|
|
410
|
-
<string>${bootCmd}</string>
|
|
411
|
-
</array>
|
|
412
|
-
<key>RunAtLoad</key>
|
|
413
|
-
<true/>
|
|
414
|
-
</dict>
|
|
415
|
-
</plist>
|
|
416
|
-
`;
|
|
417
|
-
writeFileSync(plistPath, plist);
|
|
418
|
-
return true;
|
|
419
|
-
}
|
|
420
|
-
function uninstallMacOSProxyEnv() {
|
|
421
|
-
if (process.platform !== "darwin") return false;
|
|
422
|
-
let changed = false;
|
|
423
|
-
try {
|
|
424
|
-
execSync("launchctl unsetenv HTTPS_PROXY", { stdio: "pipe" });
|
|
425
|
-
execSync("launchctl unsetenv NODE_EXTRA_CA_CERTS", { stdio: "pipe" });
|
|
426
|
-
} catch {
|
|
427
|
-
}
|
|
428
|
-
const plistPath = getLaunchAgentPath();
|
|
429
|
-
if (existsSync(plistPath)) {
|
|
430
|
-
unlinkSync(plistPath);
|
|
431
|
-
changed = true;
|
|
432
|
-
}
|
|
433
|
-
return changed;
|
|
434
|
-
}
|
|
435
|
-
function getVSCodeUserSettingsPath() {
|
|
436
|
-
if (process.platform === "darwin") {
|
|
437
|
-
return join(homedir(), "Library", "Application Support", "Code", "User", "settings.json");
|
|
438
|
-
}
|
|
439
|
-
if (process.platform === "win32") {
|
|
440
|
-
return join(process.env.APPDATA ?? "", "Code", "User", "settings.json");
|
|
441
|
-
}
|
|
442
|
-
return join(homedir(), ".config", "Code", "User", "settings.json");
|
|
443
|
-
}
|
|
444
|
-
function writeVSCodeUserProxyConfig(gatewayPort) {
|
|
445
|
-
const settingsPath = getVSCodeUserSettingsPath();
|
|
446
|
-
if (!existsSync(join(settingsPath, ".."))) return false;
|
|
447
|
-
const settings = readMergeableJson(settingsPath);
|
|
448
|
-
if (settings === null) return false;
|
|
449
|
-
if (settings["http.proxy"] && !settings["http.proxy"].includes("localhost")) {
|
|
450
|
-
return false;
|
|
451
|
-
}
|
|
452
|
-
settings["http.proxy"] = `http://localhost:${gatewayPort}`;
|
|
453
|
-
settings["http.proxyStrictSSL"] = false;
|
|
454
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
455
|
-
return true;
|
|
456
|
-
}
|
|
457
|
-
function removeVSCodeUserProxyConfig() {
|
|
458
|
-
const settingsPath = getVSCodeUserSettingsPath();
|
|
459
|
-
if (!existsSync(settingsPath)) return false;
|
|
460
|
-
let settings;
|
|
461
|
-
try {
|
|
462
|
-
settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
463
|
-
} catch {
|
|
464
|
-
return false;
|
|
465
|
-
}
|
|
466
|
-
const proxy = settings["http.proxy"];
|
|
467
|
-
if (!proxy?.includes("localhost")) return false;
|
|
468
|
-
delete settings["http.proxy"];
|
|
469
|
-
delete settings["http.proxyStrictSSL"];
|
|
470
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
471
|
-
return true;
|
|
472
|
-
}
|
|
473
|
-
function getCursorUserSettingsPath() {
|
|
474
|
-
if (process.platform === "darwin") {
|
|
475
|
-
return join(homedir(), "Library", "Application Support", "Cursor", "User", "settings.json");
|
|
476
|
-
}
|
|
477
|
-
if (process.platform === "win32") {
|
|
478
|
-
return join(process.env.APPDATA ?? "", "Cursor", "User", "settings.json");
|
|
479
|
-
}
|
|
480
|
-
return join(homedir(), ".config", "Cursor", "User", "settings.json");
|
|
481
|
-
}
|
|
482
|
-
function writeCursorUserProxyConfig(gatewayPort) {
|
|
483
|
-
const settingsPath = getCursorUserSettingsPath();
|
|
484
|
-
if (!existsSync(join(settingsPath, ".."))) return false;
|
|
485
|
-
const settings = readMergeableJson(settingsPath);
|
|
486
|
-
if (settings === null) return false;
|
|
487
|
-
if (settings["http.proxy"] && !settings["http.proxy"].includes("localhost")) {
|
|
488
|
-
return false;
|
|
489
|
-
}
|
|
490
|
-
settings["http.proxy"] = `http://localhost:${gatewayPort}`;
|
|
491
|
-
settings["http.proxyStrictSSL"] = false;
|
|
492
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
493
|
-
return true;
|
|
494
|
-
}
|
|
495
|
-
function removeCursorUserProxyConfig() {
|
|
496
|
-
const settingsPath = getCursorUserSettingsPath();
|
|
497
|
-
if (!existsSync(settingsPath)) return false;
|
|
498
|
-
let settings;
|
|
499
|
-
try {
|
|
500
|
-
settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
501
|
-
} catch {
|
|
502
|
-
return false;
|
|
503
|
-
}
|
|
504
|
-
const proxy = settings["http.proxy"];
|
|
505
|
-
if (!proxy?.includes("localhost")) return false;
|
|
506
|
-
delete settings["http.proxy"];
|
|
507
|
-
delete settings["http.proxyStrictSSL"];
|
|
508
|
-
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
509
|
-
return true;
|
|
510
|
-
}
|
|
511
|
-
function getRulemetricCommand() {
|
|
512
|
-
const nodeBin = process.execPath;
|
|
513
|
-
const cliEntry = process.argv[1];
|
|
514
|
-
if (cliEntry && cliEntry.endsWith("run.js")) {
|
|
515
|
-
return `${nodeBin} ${cliEntry}`;
|
|
516
|
-
}
|
|
517
|
-
return "rulemetric";
|
|
518
|
-
}
|
|
519
|
-
function generateAntigravityHooksConfig() {
|
|
520
|
-
const cmd = getRulemetricCommand();
|
|
521
|
-
const mk = (name) => ({
|
|
522
|
-
type: "command",
|
|
523
|
-
command: `RULEMETRIC_HOOK_TOOL=antigravity ${cmd} hooks run ${name}`,
|
|
524
|
-
timeout: 30
|
|
525
|
-
});
|
|
526
|
-
return {
|
|
527
|
-
rulemetric: {
|
|
528
|
-
enabled: true,
|
|
529
|
-
SessionStart: [{ hooks: [mk("session-start")] }],
|
|
530
|
-
UserPromptSubmit: [{ hooks: [mk("user-prompt")] }],
|
|
531
|
-
PreToolUse: [{ matcher: ".*", hooks: [mk("post-tool-use")] }],
|
|
532
|
-
PostToolUse: [{ matcher: ".*", hooks: [mk("post-tool-use")] }],
|
|
533
|
-
Stop: [{ hooks: [mk("assistant-response")] }],
|
|
534
|
-
SessionEnd: [{ hooks: [mk("session-end")] }]
|
|
535
|
-
}
|
|
536
|
-
};
|
|
537
|
-
}
|
|
538
|
-
function writeAntigravityHooksToDir(dir) {
|
|
539
|
-
const configPath = join(dir, "hooks.json");
|
|
540
|
-
const existing = readMergeableJson(configPath);
|
|
541
|
-
if (existing === null) return null;
|
|
542
|
-
const generated = generateAntigravityHooksConfig();
|
|
543
|
-
const merged = { ...existing, rulemetric: generated.rulemetric };
|
|
544
|
-
mkdirSync(dir, { recursive: true });
|
|
545
|
-
writeFileSync(configPath, JSON.stringify(merged, null, 2) + "\n");
|
|
546
|
-
return configPath;
|
|
547
|
-
}
|
|
548
|
-
function writeAntigravityHooks(projectPath) {
|
|
549
|
-
return writeAntigravityHooksToDir(join(projectPath, ".agents"));
|
|
550
|
-
}
|
|
551
|
-
function writeAntigravityUserHooks(home = homedir()) {
|
|
552
|
-
const geminiHome = join(home, ".gemini");
|
|
553
|
-
if (!existsSync(geminiHome)) return null;
|
|
554
|
-
return writeAntigravityHooksToDir(join(geminiHome, "config"));
|
|
555
|
-
}
|
|
556
|
-
function removeAntigravityHooksFromFile(configPath) {
|
|
557
|
-
if (!existsSync(configPath)) return false;
|
|
558
|
-
let existing;
|
|
559
|
-
try {
|
|
560
|
-
existing = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
561
|
-
} catch {
|
|
562
|
-
return false;
|
|
563
|
-
}
|
|
564
|
-
if (!("rulemetric" in existing)) return false;
|
|
565
|
-
delete existing.rulemetric;
|
|
566
|
-
if (Object.keys(existing).length === 0) {
|
|
567
|
-
try {
|
|
568
|
-
unlinkSync(configPath);
|
|
569
|
-
} catch {
|
|
570
|
-
}
|
|
571
|
-
} else {
|
|
572
|
-
writeFileSync(configPath, JSON.stringify(existing, null, 2) + "\n");
|
|
573
|
-
}
|
|
574
|
-
return true;
|
|
575
|
-
}
|
|
576
|
-
function removeAntigravityHooks(projectPath) {
|
|
577
|
-
return removeAntigravityHooksFromFile(join(projectPath, ".agents", "hooks.json"));
|
|
578
|
-
}
|
|
579
|
-
function removeAntigravityUserHooks() {
|
|
580
|
-
const modern = removeAntigravityHooksFromFile(join(homedir(), ".gemini", "config", "hooks.json"));
|
|
581
|
-
const legacy = removeAntigravityHooksFromFile(join(homedir(), ".gemini", "hooks.json"));
|
|
582
|
-
return modern || legacy;
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
export {
|
|
586
|
-
detectInstalledTools,
|
|
587
|
-
generateCursorHooksConfig,
|
|
588
|
-
generateCopilotHooksConfig,
|
|
589
|
-
generateClaudeCodeHooksConfig,
|
|
590
|
-
readClaudeSettings,
|
|
591
|
-
writeClaudeSettingsWithBackup,
|
|
592
|
-
mergeClaudeCodeHooks,
|
|
593
|
-
hasRulemetricClaudeHooks,
|
|
594
|
-
removeClaudeCodeHooks,
|
|
595
|
-
RULEMETRIC_NO_PROXY,
|
|
596
|
-
claudeSettingsInstallPath,
|
|
597
|
-
removeRulemetricProxyEnv,
|
|
598
|
-
removeRulemetricMachineState,
|
|
599
|
-
migrateSharedClaudeSettings,
|
|
600
|
-
cleanClaudeSettingsFiles,
|
|
601
|
-
writeCursorHooks,
|
|
602
|
-
writeCursorUserHooks,
|
|
603
|
-
writeCopilotHooks,
|
|
604
|
-
removeCursorHooks,
|
|
605
|
-
removeCursorUserHooks,
|
|
606
|
-
writeCursorProxyConfig,
|
|
607
|
-
writeVSCodeProxyConfig,
|
|
608
|
-
removeVSCodeProxyConfig,
|
|
609
|
-
removeCopilotHooks,
|
|
610
|
-
installMacOSProxyEnv,
|
|
611
|
-
uninstallMacOSProxyEnv,
|
|
612
|
-
getVSCodeUserSettingsPath,
|
|
613
|
-
writeVSCodeUserProxyConfig,
|
|
614
|
-
removeVSCodeUserProxyConfig,
|
|
615
|
-
getCursorUserSettingsPath,
|
|
616
|
-
writeCursorUserProxyConfig,
|
|
617
|
-
removeCursorUserProxyConfig,
|
|
618
|
-
generateAntigravityHooksConfig,
|
|
619
|
-
writeAntigravityHooks,
|
|
620
|
-
writeAntigravityUserHooks,
|
|
621
|
-
removeAntigravityHooks,
|
|
622
|
-
removeAntigravityUserHooks
|
|
623
|
-
};
|
|
624
|
-
//# sourceMappingURL=chunk-LXKPNATC.js.map
|