@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
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/skills/install.ts"],
|
|
4
|
-
"sourcesContent": ["import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { Args, Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { loadRegistry } from '../../lib/skills-loader.js';\n\nexport default class SkillsInstall extends BaseCommand {\n static override description = 'Install a skill from the registry into your project';\n\n static override examples = [\n '<%= config.bin %> skills install tdd-workflow',\n '<%= config.bin %> skills install tdd-workflow --tool cursor',\n '<%= config.bin %> skills install tdd-workflow --preview',\n ];\n\n static override args = {\n id: Args.string({ description: 'Skill ID to install', required: true }),\n };\n\n static override flags = {\n tool: Flags.string({\n description: 'Target tool format',\n options: ['claude_code', 'cursor', 'copilot'],\n }),\n preview: Flags.boolean({ description: 'Preview content without writing', default: false }),\n dir: Flags.string({ description: 'Project directory', default: '.' }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(SkillsInstall);\n\n const catalog = await loadRegistry(this);\n const skill = catalog.get(args.id);\n\n if (!skill) {\n this.error(`Skill \"${args.id}\" not found. Try: rulemetric skills search`);\n }\n\n if (flags.preview) {\n this.log(`\\n${skill.name}`);\n this.log(`${'\u2500'.repeat(skill.name.length)}`);\n this.log(`Category: ${skill.category}`);\n this.log(`Tools: ${skill.tools.join(', ')}`);\n this.log(`Source: ${skill.source.url}\\n`);\n this.log(skill.content.slice(0, 2000));\n if (skill.content.length > 2000) {\n this.log(`\\n... (${skill.content.length - 2000} more characters)`);\n }\n return;\n }\n\n const projectDir = path.resolve(flags.dir);\n const tool = flags.tool ?? detectProjectTool(projectDir) ?? skill.tools[0];\n\n const targetPath = getTargetPath(projectDir, tool, skill.id);\n if (!targetPath) {\n this.error(`Cannot determine install path for tool \"${tool}\"`);\n }\n\n // Ensure directory exists\n const targetDir = path.dirname(targetPath);\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n }\n\n if (fs.existsSync(targetPath)) {\n this.warn(`File already exists: ${targetPath}`);\n this.log(' Use --preview to view the skill content first.');\n return;\n }\n\n fs.writeFileSync(targetPath, skill.content);\n this.log(`Installed \"${skill.name}\" to ${path.relative(projectDir, targetPath)}`);\n this.log(` Source: ${skill.source.url}`);\n }\n}\n\n/** Detect which AI tool the project is configured for. */\nfunction detectProjectTool(dir: string): string | null {\n if (fs.existsSync(path.join(dir, 'CLAUDE.md')) || fs.existsSync(path.join(dir, '.claude'))) {\n return 'claude_code';\n }\n if (fs.existsSync(path.join(dir, '.cursorrules')) || fs.existsSync(path.join(dir, '.cursor'))) {\n return 'cursor';\n }\n if (fs.existsSync(path.join(dir, '.github', 'copilot-instructions.md'))) {\n return 'copilot';\n }\n return null;\n}\n\n/** Determine the file path to write a skill based on the target tool. */\nfunction getTargetPath(dir: string, tool: string, skillId: string): string | null {\n const safeName = skillId.replace(/[^a-z0-9-]/g, '-');\n switch (tool) {\n case 'claude_code':\n return path.join(dir, '.claude', 'skills', `${safeName}.md`);\n case 'cursor':\n return path.join(dir, '.cursor', 'rules', `${safeName}.mdc`);\n case 'copilot':\n return path.join(dir, '.github', 'agents', `${safeName}.md`);\n default:\n return path.join(dir, '.claude', 'skills', `${safeName}.md`);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/skills/list.ts"],
|
|
4
|
-
"sourcesContent": ["import { Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { loadRegistry } from '../../lib/skills-loader.js';\n\nexport default class SkillsList extends BaseCommand {\n static override description = 'List skills in the registry';\n\n static override examples = [\n '<%= config.bin %> skills list',\n '<%= config.bin %> skills list --stats',\n ];\n\n static override flags = {\n stats: Flags.boolean({ description: 'Show registry statistics', default: false }),\n limit: Flags.integer({ description: 'Max skills to show', default: 30 }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(SkillsList);\n\n const catalog = await loadRegistry(this);\n\n if (flags.stats) {\n this.log(`Skills Registry Statistics\\n`);\n this.log(` Total skills: ${catalog.size}`);\n this.log(` Categories: ${catalog.categories().join(', ')}`);\n this.log(` Tools: ${catalog.tools().join(', ')}`);\n this.log(` Top tags: ${catalog.tags().slice(0, 15).join(', ')}`);\n return;\n }\n\n const skills = catalog.search({ limit: flags.limit });\n\n if (skills.length === 0) {\n this.log('Registry is empty. Run: rulemetric skills update');\n return;\n }\n\n this.log(`Showing ${skills.length} of ${catalog.size} skills (sorted by popularity):\\n`);\n\n for (const skill of skills) {\n const stars = skill.popularity?.stars ? `${formatStars(skill.popularity.stars)} stars` : '';\n this.log(` ${pad(skill.id, 40)} ${pad(skill.category, 14)} ${stars}`);\n }\n\n this.log(`\\nSearch: rulemetric skills search <query>`);\n this.log(`Install: rulemetric skills install <id>`);\n }\n}\n\nfunction formatStars(n: number): string {\n if (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n return String(n);\n}\n\nfunction pad(s: string, n: number): string {\n return s.length > n ? s.slice(0, n - 1) + '\u2026' : s.padEnd(n);\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AAItB,IAAqB,aAArB,MAAqB,oBAAmB,YAAY;AAAA,EAClD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,OAAO,MAAM,QAAQ,EAAE,aAAa,4BAA4B,SAAS,MAAM,CAAC;AAAA,IAChF,OAAO,MAAM,QAAQ,EAAE,aAAa,sBAAsB,SAAS,GAAG,CAAC;AAAA,EACzE;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,WAAU;AAE7C,UAAM,UAAU,MAAM,aAAa,IAAI;AAEvC,QAAI,MAAM,OAAO;AACf,WAAK,IAAI;AAAA,CAA8B;AACvC,WAAK,IAAI,mBAAmB,QAAQ,IAAI,EAAE;AAC1C,WAAK,IAAI,iBAAiB,QAAQ,WAAW,EAAE,KAAK,IAAI,CAAC,EAAE;AAC3D,WAAK,IAAI,YAAY,QAAQ,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;AACjD,WAAK,IAAI,eAAe,QAAQ,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;AAChE;AAAA,IACF;AAEA,UAAM,SAAS,QAAQ,OAAO,EAAE,OAAO,MAAM,MAAM,CAAC;AAEpD,QAAI,OAAO,WAAW,GAAG;AACvB,WAAK,IAAI,kDAAkD;AAC3D;AAAA,IACF;AAEA,SAAK,IAAI,WAAW,OAAO,MAAM,OAAO,QAAQ,IAAI;AAAA,CAAmC;AAEvF,eAAW,SAAS,QAAQ;AAC1B,YAAM,QAAQ,MAAM,YAAY,QAAQ,GAAG,YAAY,MAAM,WAAW,KAAK,CAAC,WAAW;AACzF,WAAK,IAAI,KAAK,IAAI,MAAM,IAAI,EAAE,CAAC,IAAI,IAAI,MAAM,UAAU,EAAE,CAAC,IAAI,KAAK,EAAE;AAAA,IACvE;AAEA,SAAK,IAAI;AAAA,yCAA4C;AACrD,SAAK,IAAI,yCAAyC;AAAA,EACpD;AACF;AAEA,SAAS,YAAY,GAAmB;AACtC,MAAI,KAAK,IAAM,QAAO,IAAI,IAAI,KAAM,QAAQ,CAAC,CAAC;AAC9C,SAAO,OAAO,CAAC;AACjB;AAEA,SAAS,IAAI,GAAW,GAAmB;AACzC,SAAO,EAAE,SAAS,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,WAAM,EAAE,OAAO,CAAC;AAC5D;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/skills/publish.ts"],
|
|
4
|
-
"sourcesContent": ["import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { Args, Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiPost } from '../../lib/api-client.js';\n\nexport default class SkillsPublish extends BaseCommand {\n static override description = 'Submit a skill file to the RuleMetric skills registry';\n\n static override examples = [\n '<%= config.bin %> skills publish ./my-skill.md',\n '<%= config.bin %> skills publish ./my-skill.md --category workflow --tool claude_code',\n ];\n\n static override args = {\n file: Args.string({ description: 'Path to skill file (.md)', required: true }),\n };\n\n static override flags = {\n name: Flags.string({ description: 'Skill name (defaults to filename)' }),\n description: Flags.string({ description: 'One-line description' }),\n category: Flags.string({\n description: 'Skill category',\n options: [\n 'workflow', 'language', 'framework', 'tool', 'security',\n 'testing', 'architecture', 'devops', 'documentation',\n 'performance', 'other',\n ],\n default: 'other',\n }),\n tool: Flags.string({\n description: 'Primary tool this skill targets',\n options: ['claude_code', 'cursor', 'copilot', 'windsurf', 'universal'],\n default: 'universal',\n }),\n tags: Flags.string({ description: 'Comma-separated tags', default: '' }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(SkillsPublish);\n this.requireAuth();\n\n const filePath = path.resolve(args.file);\n if (!fs.existsSync(filePath)) {\n this.error(`File not found: ${filePath}`);\n }\n\n const content = fs.readFileSync(filePath, 'utf-8');\n if (content.trim().length < 20) {\n this.error('Skill content is too short (minimum 20 characters)');\n }\n\n const basename = path.basename(filePath, path.extname(filePath));\n const name = flags.name ?? basename\n .replace(/[-_]+/g, ' ')\n .replace(/\\b\\w/g, c => c.toUpperCase());\n\n const id = basename.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');\n\n const tags = flags.tags\n ? flags.tags.split(',').map(t => t.trim()).filter(Boolean)\n : [];\n\n this.log(`Publishing skill: ${name} (${id})`);\n this.log(` Category: ${flags.category}`);\n this.log(` Tool: ${flags.tool}`);\n if (tags.length > 0) this.log(` Tags: ${tags.join(', ')}`);\n this.log(` Content: ${content.length} characters\\n`);\n\n const payload = {\n id,\n name,\n description: flags.description ?? `Community skill: ${name}`,\n category: flags.category,\n tools: [flags.tool],\n tags,\n content,\n };\n\n try {\n const result = await apiPost<{ id: string; message: string }>('/api/skills/publish', payload);\n this.log(`Published! ${result.message ?? `Skill \"${name}\" submitted to the registry.`}`);\n } catch (err) {\n if (err instanceof Error) {\n this.error(`Failed to publish: ${err.message}`);\n }\n throw err;\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,MAAM,aAAa;AAI5B,IAAqB,gBAArB,MAAqB,uBAAsB,YAAY;AAAA,EACrD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,MAAM,KAAK,OAAO,EAAE,aAAa,4BAA4B,UAAU,KAAK,CAAC;AAAA,EAC/E;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,MAAM,MAAM,OAAO,EAAE,aAAa,oCAAoC,CAAC;AAAA,IACvE,aAAa,MAAM,OAAO,EAAE,aAAa,uBAAuB,CAAC;AAAA,IACjE,UAAU,MAAM,OAAO;AAAA,MACrB,aAAa;AAAA,MACb,SAAS;AAAA,QACP;AAAA,QAAY;AAAA,QAAY;AAAA,QAAa;AAAA,QAAQ;AAAA,QAC7C;AAAA,QAAW;AAAA,QAAgB;AAAA,QAAU;AAAA,QACrC;AAAA,QAAe;AAAA,MACjB;AAAA,MACA,SAAS;AAAA,IACX,CAAC;AAAA,IACD,MAAM,MAAM,OAAO;AAAA,MACjB,aAAa;AAAA,MACb,SAAS,CAAC,eAAe,UAAU,WAAW,YAAY,WAAW;AAAA,MACrE,SAAS;AAAA,IACX,CAAC;AAAA,IACD,MAAM,MAAM,OAAO,EAAE,aAAa,wBAAwB,SAAS,GAAG,CAAC;AAAA,EACzE;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,cAAa;AACtD,SAAK,YAAY;AAEjB,UAAM,WAAgB,aAAQ,KAAK,IAAI;AACvC,QAAI,CAAI,cAAW,QAAQ,GAAG;AAC5B,WAAK,MAAM,mBAAmB,QAAQ,EAAE;AAAA,IAC1C;AAEA,UAAM,UAAa,gBAAa,UAAU,OAAO;AACjD,QAAI,QAAQ,KAAK,EAAE,SAAS,IAAI;AAC9B,WAAK,MAAM,oDAAoD;AAAA,IACjE;AAEA,UAAMA,YAAgB,cAAS,UAAe,aAAQ,QAAQ,CAAC;AAC/D,UAAM,OAAO,MAAM,QAAQA,UACxB,QAAQ,UAAU,GAAG,EACrB,QAAQ,SAAS,OAAK,EAAE,YAAY,CAAC;AAExC,UAAM,KAAKA,UAAS,YAAY,EAAE,QAAQ,eAAe,GAAG,EAAE,QAAQ,UAAU,EAAE;AAElF,UAAM,OAAO,MAAM,OACf,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO,IACvD,CAAC;AAEL,SAAK,IAAI,qBAAqB,IAAI,KAAK,EAAE,GAAG;AAC5C,SAAK,IAAI,eAAe,MAAM,QAAQ,EAAE;AACxC,SAAK,IAAI,WAAW,MAAM,IAAI,EAAE;AAChC,QAAI,KAAK,SAAS,EAAG,MAAK,IAAI,WAAW,KAAK,KAAK,IAAI,CAAC,EAAE;AAC1D,SAAK,IAAI,cAAc,QAAQ,MAAM;AAAA,CAAe;AAEpD,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA,aAAa,MAAM,eAAe,oBAAoB,IAAI;AAAA,MAC1D,UAAU,MAAM;AAAA,MAChB,OAAO,CAAC,MAAM,IAAI;AAAA,MAClB;AAAA,MACA;AAAA,IACF;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,QAAyC,uBAAuB,OAAO;AAC5F,WAAK,IAAI,cAAc,OAAO,WAAW,UAAU,IAAI,8BAA8B,EAAE;AAAA,IACzF,SAAS,KAAK;AACZ,UAAI,eAAe,OAAO;AACxB,aAAK,MAAM,sBAAsB,IAAI,OAAO,EAAE;AAAA,MAChD;AACA,YAAM;AAAA,IACR;AAAA,EACF;AACF;",
|
|
6
|
-
"names": ["basename"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/skills/search.ts"],
|
|
4
|
-
"sourcesContent": ["import { Args, Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { loadRegistry } from '../../lib/skills-loader.js';\nimport type { SkillCategory, ToolId } from '@rulemetric/skills-registry';\n\nexport default class SkillsSearch extends BaseCommand {\n static override description = 'Search the community skills registry';\n\n static override examples = [\n '<%= config.bin %> skills search \"tdd\"',\n '<%= config.bin %> skills search --tool cursor --category testing',\n '<%= config.bin %> skills search --language python',\n ];\n\n static override args = {\n query: Args.string({ description: 'Search term', required: false }),\n };\n\n static override flags = {\n tool: Flags.string({ description: 'Filter by tool', options: ['claude_code', 'cursor', 'copilot', 'windsurf', 'cline', 'universal'] }),\n category: Flags.string({ description: 'Filter by category', options: ['workflow', 'language', 'framework', 'tool', 'security', 'testing', 'architecture', 'devops', 'documentation', 'performance'] }),\n language: Flags.string({ description: 'Filter by programming language' }),\n framework: Flags.string({ description: 'Filter by framework' }),\n limit: Flags.integer({ description: 'Max results', default: 20 }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(SkillsSearch);\n\n const catalog = await loadRegistry(this);\n\n const results = catalog.search({\n query: args.query,\n tool: flags.tool as ToolId | undefined,\n category: flags.category as SkillCategory | undefined,\n language: flags.language,\n limit: flags.limit,\n });\n\n if (results.length === 0) {\n this.log('No skills found matching your criteria.');\n this.log('\\nTry a broader search or run: rulemetric skills list');\n return;\n }\n\n this.log(`Found ${results.length} skill${results.length === 1 ? '' : 's'}:\\n`);\n\n for (const skill of results) {\n const stars = skill.popularity?.stars ? ` (${formatStars(skill.popularity.stars)} stars)` : '';\n const tools = skill.tools.join(', ');\n this.log(` ${skill.id}`);\n this.log(` ${skill.name} \u2014 ${skill.description}`);\n this.log(` tools: ${tools} category: ${skill.category}${stars}`);\n if (skill.tags.length > 0) {\n this.log(` tags: ${skill.tags.join(', ')}`);\n }\n this.log('');\n }\n\n this.log(`Run: rulemetric skills install <id> to install a skill`);\n }\n}\n\nfunction formatStars(n: number): string {\n if (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n return String(n);\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA,SAAS,MAAM,aAAa;AAK5B,IAAqB,eAArB,MAAqB,sBAAqB,YAAY;AAAA,EACpD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,OAAO;AAAA,IACrB,OAAO,KAAK,OAAO,EAAE,aAAa,eAAe,UAAU,MAAM,CAAC;AAAA,EACpE;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,MAAM,MAAM,OAAO,EAAE,aAAa,kBAAkB,SAAS,CAAC,eAAe,UAAU,WAAW,YAAY,SAAS,WAAW,EAAE,CAAC;AAAA,IACrI,UAAU,MAAM,OAAO,EAAE,aAAa,sBAAsB,SAAS,CAAC,YAAY,YAAY,aAAa,QAAQ,YAAY,WAAW,gBAAgB,UAAU,iBAAiB,aAAa,EAAE,CAAC;AAAA,IACrM,UAAU,MAAM,OAAO,EAAE,aAAa,iCAAiC,CAAC;AAAA,IACxE,WAAW,MAAM,OAAO,EAAE,aAAa,sBAAsB,CAAC;AAAA,IAC9D,OAAO,MAAM,QAAQ,EAAE,aAAa,eAAe,SAAS,GAAG,CAAC;AAAA,EAClE;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,aAAY;AAErD,UAAM,UAAU,MAAM,aAAa,IAAI;AAEvC,UAAM,UAAU,QAAQ,OAAO;AAAA,MAC7B,OAAO,KAAK;AAAA,MACZ,MAAM,MAAM;AAAA,MACZ,UAAU,MAAM;AAAA,MAChB,UAAU,MAAM;AAAA,MAChB,OAAO,MAAM;AAAA,IACf,CAAC;AAED,QAAI,QAAQ,WAAW,GAAG;AACxB,WAAK,IAAI,yCAAyC;AAClD,WAAK,IAAI,uDAAuD;AAChE;AAAA,IACF;AAEA,SAAK,IAAI,SAAS,QAAQ,MAAM,SAAS,QAAQ,WAAW,IAAI,KAAK,GAAG;AAAA,CAAK;AAE7E,eAAW,SAAS,SAAS;AAC3B,YAAM,QAAQ,MAAM,YAAY,QAAQ,KAAK,YAAY,MAAM,WAAW,KAAK,CAAC,YAAY;AAC5F,YAAM,QAAQ,MAAM,MAAM,KAAK,IAAI;AACnC,WAAK,IAAI,KAAK,MAAM,EAAE,EAAE;AACxB,WAAK,IAAI,OAAO,MAAM,IAAI,WAAM,MAAM,WAAW,EAAE;AACnD,WAAK,IAAI,cAAc,KAAK,eAAe,MAAM,QAAQ,GAAG,KAAK,EAAE;AACnE,UAAI,MAAM,KAAK,SAAS,GAAG;AACzB,aAAK,IAAI,aAAa,MAAM,KAAK,KAAK,IAAI,CAAC,EAAE;AAAA,MAC/C;AACA,WAAK,IAAI,EAAE;AAAA,IACb;AAEA,SAAK,IAAI,wDAAwD;AAAA,EACnE;AACF;AAEA,SAAS,YAAY,GAAmB;AACtC,MAAI,KAAK,IAAM,QAAO,IAAI,IAAI,KAAM,QAAQ,CAAC,CAAC;AAC9C,SAAO,OAAO,CAAC;AACjB;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/skills/update.ts"],
|
|
4
|
-
"sourcesContent": ["import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\nimport { Flags } from '@oclif/core';\nimport { BaseCommand } from '../../base-command.js';\nimport { fetchAllSources, TIER_1_SOURCES, TIER_2_SOURCES } from '@rulemetric/skills-registry';\nimport type { SkillRegistry } from '@rulemetric/skills-registry';\n\nconst CACHE_DIR = path.join(os.homedir(), '.config', 'rulemetric');\nconst REGISTRY_PATH = path.join(CACHE_DIR, 'skills-registry.json');\n\nexport default class SkillsUpdate extends BaseCommand {\n static override description = 'Fetch latest skills from GitHub sources and update local registry';\n\n static override examples = [\n '<%= config.bin %> skills update',\n '<%= config.bin %> skills update --all',\n ];\n\n static override flags = {\n all: Flags.boolean({ description: 'Include Tier 2 (niche) sources', default: false }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(SkillsUpdate);\n\n const sources = flags.all\n ? [...TIER_1_SOURCES, ...TIER_2_SOURCES]\n : TIER_1_SOURCES;\n\n this.log(`Fetching skills from ${sources.length} sources${flags.all ? ' (Tier 1 + 2)' : ''}...\\n`);\n\n const result = await fetchAllSources(sources, {\n onProgress: (source, count) => {\n this.log(` ${source}: ${count} skills`);\n },\n });\n\n const registry: SkillRegistry = {\n version: '1.0.0',\n generatedAt: new Date().toISOString(),\n skills: result.entries,\n };\n\n if (!fs.existsSync(CACHE_DIR)) {\n fs.mkdirSync(CACHE_DIR, { recursive: true });\n }\n\n fs.writeFileSync(REGISTRY_PATH, JSON.stringify(registry));\n this.log(`\\nUpdated registry: ${result.entries.length} skills cached at ${REGISTRY_PATH}`);\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,SAAS,aAAa;AAEtB,SAAS,iBAAiB,gBAAgB,sBAAsB;AAGhE,IAAM,YAAiB,UAAQ,WAAQ,GAAG,WAAW,YAAY;AACjE,IAAM,gBAAqB,UAAK,WAAW,sBAAsB;AAEjE,IAAqB,eAArB,MAAqB,sBAAqB,YAAY;AAAA,EACpD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACtB,KAAK,MAAM,QAAQ,EAAE,aAAa,kCAAkC,SAAS,MAAM,CAAC;AAAA,EACtF;AAAA,EAEA,MAAM,MAAqB;AACzB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,aAAY;AAE/C,UAAM,UAAU,MAAM,MAClB,CAAC,GAAG,gBAAgB,GAAG,cAAc,IACrC;AAEJ,SAAK,IAAI,wBAAwB,QAAQ,MAAM,WAAW,MAAM,MAAM,kBAAkB,EAAE;AAAA,CAAO;AAEjG,UAAM,SAAS,MAAM,gBAAgB,SAAS;AAAA,MAC5C,YAAY,CAAC,QAAQ,UAAU;AAC7B,aAAK,IAAI,KAAK,MAAM,KAAK,KAAK,SAAS;AAAA,MACzC;AAAA,IACF,CAAC;AAED,UAAM,WAA0B;AAAA,MAC9B,SAAS;AAAA,MACT,cAAa,oBAAI,KAAK,GAAE,YAAY;AAAA,MACpC,QAAQ,OAAO;AAAA,IACjB;AAEA,QAAI,CAAI,cAAW,SAAS,GAAG;AAC7B,MAAG,aAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,IAC7C;AAEA,IAAG,iBAAc,eAAe,KAAK,UAAU,QAAQ,CAAC;AACxD,SAAK,IAAI;AAAA,oBAAuB,OAAO,QAAQ,MAAM,qBAAqB,aAAa,EAAE;AAAA,EAC3F;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/suggestions/accept.ts"],
|
|
4
|
-
"sourcesContent": ["import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { Args } from '@oclif/core';\nimport { normalizeProjectPath } from '@rulemetric/core/paths';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiGet, apiPost } from '../../lib/api-client.js';\nimport { validateUuid } from '../../lib/types.js';\nimport type { Instruction } from '../../lib/types.js';\n\ninterface SuggestionDetail {\n id: string;\n instructionId: string;\n instructionScope: string;\n score: number;\n reason: string;\n name: string;\n}\n\ninterface PromoteResponse {\n instructionId: string;\n alreadyExisted: boolean;\n}\n\n/**\n * Append an instruction block to CLAUDE.md in the given directory. Idempotent:\n * skips if a block with the same instructionId already exists. Returns true if\n * the file was modified, false if the block was already present.\n */\nexport function appendToCLAUDEmd(dir: string, instructionId: string, content: string): boolean {\n const filePath = path.join(dir, 'CLAUDE.md');\n const startTag = `<!-- rulemetric:start ${instructionId} -->`;\n const endTag = `<!-- rulemetric:end ${instructionId} -->`;\n\n const existing = fs.existsSync(filePath) ? fs.readFileSync(filePath, 'utf8') : '';\n\n if (existing.includes(startTag)) {\n return false;\n }\n\n const separator = existing.length > 0 && !existing.endsWith('\\n')\n ? '\\n\\n'\n : existing.length > 0 ? '\\n' : '';\n const block = `${separator}\\n${startTag}\\n${content}\\n${endTag}\\n`;\n\n fs.writeFileSync(filePath, existing + block, 'utf8');\n return true;\n}\n\nexport default class SuggestionsAccept extends BaseCommand {\n static override description = 'Accept a suggestion and append the instruction to CLAUDE.md';\n\n static override examples = [\n '<%= config.bin %> suggestions accept <id>',\n ];\n\n static override args = {\n id: Args.string({ description: 'Suggestion UUID from `suggestions list`', required: true }),\n };\n\n async run(): Promise<void> {\n const { args } = await this.parse(SuggestionsAccept);\n this.requireAuth();\n validateUuid(args.id, 'suggestion ID');\n\n const projectPath = normalizeProjectPath(process.cwd());\n\n const suggestion = await apiGet<SuggestionDetail>(\n `/api/instruction-suggestions/${encodeURIComponent(args.id)}`,\n );\n\n let effectiveInstructionId = suggestion.instructionId;\n\n if (suggestion.instructionScope === 'public') {\n const promoted = await apiPost<PromoteResponse>(\n `/api/instructions/${encodeURIComponent(suggestion.instructionId)}/promote-from-public`,\n { targetScope: 'personal' },\n );\n effectiveInstructionId = promoted.instructionId;\n }\n\n const instruction = await apiGet<Instruction>(\n `/api/instructions/${encodeURIComponent(effectiveInstructionId)}`,\n );\n\n const modified = appendToCLAUDEmd(process.cwd(), effectiveInstructionId, instruction.content);\n\n if (!modified) {\n this.log(`Already present: ${instruction.name} is already in CLAUDE.md (block id: ${effectiveInstructionId}).`);\n } else {\n this.log(`Accepted: added ${instruction.name} to CLAUDE.md. It will be active starting in your next session.`);\n }\n\n await apiPost(`/api/instruction-suggestions/${encodeURIComponent(args.id)}/events`, {\n eventType: 'accepted',\n projectPath,\n });\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,YAAY;AA0Bd,SAAS,iBAAiB,KAAa,eAAuB,SAA0B;AAC3F,QAAM,WAAgB,UAAK,KAAK,WAAW;AAC3C,QAAM,WAAW,yBAAyB,aAAa;AACvD,QAAM,SAAS,uBAAuB,aAAa;AAEnD,QAAM,WAAc,cAAW,QAAQ,IAAO,gBAAa,UAAU,MAAM,IAAI;AAE/E,MAAI,SAAS,SAAS,QAAQ,GAAG;AAC7B,WAAO;AAAA,EACX;AAEA,QAAM,YAAY,SAAS,SAAS,KAAK,CAAC,SAAS,SAAS,IAAI,IAC1D,SACA,SAAS,SAAS,IAAI,OAAO;AACnC,QAAM,QAAQ,GAAG,SAAS;AAAA,EAAK,QAAQ;AAAA,EAAK,OAAO;AAAA,EAAK,MAAM;AAAA;AAE9D,EAAG,iBAAc,UAAU,WAAW,OAAO,MAAM;AACnD,SAAO;AACX;AAEA,IAAqB,oBAArB,MAAqB,2BAA0B,YAAY;AAAA,EACvD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,OAAgB,OAAO;AAAA,IACnB,IAAI,KAAK,OAAO,EAAE,aAAa,2CAA2C,UAAU,KAAK,CAAC;AAAA,EAC9F;AAAA,EAEA,MAAM,MAAqB;AACvB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,kBAAiB;AACnD,SAAK,YAAY;AACjB,iBAAa,KAAK,IAAI,eAAe;AAErC,UAAM,cAAc,qBAAqB,QAAQ,IAAI,CAAC;AAEtD,UAAM,aAAa,MAAM;AAAA,MACrB,gCAAgC,mBAAmB,KAAK,EAAE,CAAC;AAAA,IAC/D;AAEA,QAAI,yBAAyB,WAAW;AAExC,QAAI,WAAW,qBAAqB,UAAU;AAC1C,YAAM,WAAW,MAAM;AAAA,QACnB,qBAAqB,mBAAmB,WAAW,aAAa,CAAC;AAAA,QACjE,EAAE,aAAa,WAAW;AAAA,MAC9B;AACA,+BAAyB,SAAS;AAAA,IACtC;AAEA,UAAM,cAAc,MAAM;AAAA,MACtB,qBAAqB,mBAAmB,sBAAsB,CAAC;AAAA,IACnE;AAEA,UAAM,WAAW,iBAAiB,QAAQ,IAAI,GAAG,wBAAwB,YAAY,OAAO;AAE5F,QAAI,CAAC,UAAU;AACX,WAAK,IAAI,oBAAoB,YAAY,IAAI,uCAAuC,sBAAsB,IAAI;AAAA,IAClH,OAAO;AACH,WAAK,IAAI,mBAAmB,YAAY,IAAI,iEAAiE;AAAA,IACjH;AAEA,UAAM,QAAQ,gCAAgC,mBAAmB,KAAK,EAAE,CAAC,WAAW;AAAA,MAChF,WAAW;AAAA,MACX;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/suggestions/dismiss.ts"],
|
|
4
|
-
"sourcesContent": ["import { Args } from '@oclif/core';\nimport { normalizeProjectPath } from '@rulemetric/core/paths';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiPost } from '../../lib/api-client.js';\nimport { validateUuid } from '../../lib/types.js';\n\nexport default class SuggestionsDismiss extends BaseCommand {\n static override description = 'Dismiss a suggestion so it will not re-surface for 30 days';\n\n static override examples = [\n '<%= config.bin %> suggestions dismiss <id>',\n ];\n\n static override args = {\n id: Args.string({ description: 'Suggestion UUID from `suggestions list`', required: true }),\n };\n\n async run(): Promise<void> {\n const { args } = await this.parse(SuggestionsDismiss);\n this.requireAuth();\n validateUuid(args.id, 'suggestion ID');\n\n const projectPath = normalizeProjectPath(process.cwd());\n\n await apiPost(`/api/instruction-suggestions/${encodeURIComponent(args.id)}/events`, {\n eventType: 'dismissed',\n projectPath,\n });\n\n this.log(\"Dismissed. Won't re-surface for 30 days.\");\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AAMrB,IAAqB,qBAArB,MAAqB,4BAA2B,YAAY;AAAA,EACxD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,OAAgB,OAAO;AAAA,IACnB,IAAI,KAAK,OAAO,EAAE,aAAa,2CAA2C,UAAU,KAAK,CAAC;AAAA,EAC9F;AAAA,EAEA,MAAM,MAAqB;AACvB,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,MAAM,mBAAkB;AACpD,SAAK,YAAY;AACjB,iBAAa,KAAK,IAAI,eAAe;AAErC,UAAM,cAAc,qBAAqB,QAAQ,IAAI,CAAC;AAEtD,UAAM,QAAQ,gCAAgC,mBAAmB,KAAK,EAAE,CAAC,WAAW;AAAA,MAChF,WAAW;AAAA,MACX;AAAA,IACJ,CAAC;AAED,SAAK,IAAI,0CAA0C;AAAA,EACvD;AACJ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/suggestions/list.ts"],
|
|
4
|
-
"sourcesContent": ["import { Flags } from '@oclif/core';\nimport { printTable } from '@oclif/table';\nimport { normalizeProjectPath } from '@rulemetric/core/paths';\nimport { BaseCommand } from '../../base-command.js';\nimport { apiGet } from '../../lib/api-client.js';\n\ninterface SuggestionItem {\n id: string;\n instructionId: string;\n instructionScope: string;\n score: number;\n reason: string;\n generatedAt: string;\n isStale: boolean;\n name: string;\n description: string | null;\n tags: string[] | null;\n}\n\ninterface SuggestionsResponse {\n suggestions: SuggestionItem[];\n}\n\nexport default class SuggestionsList extends BaseCommand {\n static override description = 'List instruction suggestions for a project';\n\n static override examples = [\n '<%= config.bin %> suggestions list',\n '<%= config.bin %> suggestions list --project /path/to/project',\n ];\n\n static override flags = {\n project: Flags.string({\n char: 'p',\n description: 'Project path (defaults to current directory)',\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(SuggestionsList);\n this.requireAuth();\n\n const projectPath = normalizeProjectPath(flags.project ?? process.cwd());\n const encoded = encodeURIComponent(projectPath);\n const result = await apiGet<SuggestionsResponse>(\n `/api/instruction-suggestions?projectPath=${encoded}&limit=10`,\n );\n\n if (result.suggestions.length === 0) {\n this.log(\n 'No suggestions for this project. The cron runs daily at 04:30; trigger now with: rulemetric suggestions refresh',\n );\n return;\n }\n\n printTable({\n data: result.suggestions.map((s) => ({\n ID: s.id,\n Scope: s.instructionScope,\n Name: s.name,\n Score: s.score.toFixed(2),\n Reason: s.reason.length > 60 ? s.reason.slice(0, 59) + '\u2026' : s.reason,\n })),\n columns: ['ID', 'Scope', 'Name', 'Score', 'Reason'],\n });\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AACtB,SAAS,kBAAkB;AAsB3B,IAAqB,kBAArB,MAAqB,yBAAwB,YAAY;AAAA,EACrD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACvB;AAAA,IACA;AAAA,EACJ;AAAA,EAEA,OAAgB,QAAQ;AAAA,IACpB,SAAS,MAAM,OAAO;AAAA,MAClB,MAAM;AAAA,MACN,aAAa;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,MAAqB;AACvB,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,MAAM,gBAAe;AAClD,SAAK,YAAY;AAEjB,UAAM,cAAc,qBAAqB,MAAM,WAAW,QAAQ,IAAI,CAAC;AACvE,UAAM,UAAU,mBAAmB,WAAW;AAC9C,UAAM,SAAS,MAAM;AAAA,MACjB,4CAA4C,OAAO;AAAA,IACvD;AAEA,QAAI,OAAO,YAAY,WAAW,GAAG;AACjC,WAAK;AAAA,QACD;AAAA,MACJ;AACA;AAAA,IACJ;AAEA,eAAW;AAAA,MACP,MAAM,OAAO,YAAY,IAAI,CAAC,OAAO;AAAA,QACjC,IAAI,EAAE;AAAA,QACN,OAAO,EAAE;AAAA,QACT,MAAM,EAAE;AAAA,QACR,OAAO,EAAE,MAAM,QAAQ,CAAC;AAAA,QACxB,QAAQ,EAAE,OAAO,SAAS,KAAK,EAAE,OAAO,MAAM,GAAG,EAAE,IAAI,WAAM,EAAE;AAAA,MACnE,EAAE;AAAA,MACF,SAAS,CAAC,MAAM,SAAS,QAAQ,SAAS,QAAQ;AAAA,IACtD,CAAC;AAAA,EACL;AACJ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/commands/suggestions/refresh.ts"],
|
|
4
|
-
"sourcesContent": ["import { BaseCommand } from '../../base-command.js';\n\nexport default class SuggestionsRefresh extends BaseCommand {\n static override description = 'Information about refreshing instruction suggestions';\n\n static override examples = [\n '<%= config.bin %> suggestions refresh',\n ];\n\n async run(): Promise<void> {\n this.log(\n 'The suggestion cron runs daily at 04:30. To force a recompute now, restart the worker (`rulemetric service restart`) and the cron will fire on its registered schedule.',\n );\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;AAEA,IAAqB,qBAArB,cAAgD,YAAY;AAAA,EACxD,OAAgB,cAAc;AAAA,EAE9B,OAAgB,WAAW;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,MAAM,MAAqB;AACvB,SAAK;AAAA,MACD;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/cursor-BGQJ4CWI.js
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
__require
|
|
3
|
-
} from "./chunk-NSBPE2FW.js";
|
|
4
|
-
|
|
5
|
-
// ../../packages/session/dist/providers/cursor.js
|
|
6
|
-
import { existsSync } from "fs";
|
|
7
|
-
import { join } from "path";
|
|
8
|
-
import { homedir } from "os";
|
|
9
|
-
var Database = null;
|
|
10
|
-
function loadSqlite() {
|
|
11
|
-
if (Database)
|
|
12
|
-
return true;
|
|
13
|
-
try {
|
|
14
|
-
Database = __require("better-sqlite3");
|
|
15
|
-
return true;
|
|
16
|
-
} catch {
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
var CURSOR_DEFAULT_MODEL = "claude-sonnet-4-5";
|
|
21
|
-
var modelDisplayNames = {
|
|
22
|
-
"claude-4.5-opus-high-thinking": "Opus 4.5 (Thinking)",
|
|
23
|
-
"claude-4-opus": "Opus 4",
|
|
24
|
-
"claude-4-sonnet-thinking": "Sonnet 4 (Thinking)",
|
|
25
|
-
"claude-4.5-sonnet-thinking": "Sonnet 4.5 (Thinking)",
|
|
26
|
-
"claude-4.6-sonnet": "Sonnet 4.6",
|
|
27
|
-
"composer-1": "Composer 1",
|
|
28
|
-
"gpt-5": "GPT-5",
|
|
29
|
-
"gpt-4.1": "GPT-4.1",
|
|
30
|
-
"default": "Auto (Sonnet est.)"
|
|
31
|
-
};
|
|
32
|
-
function getCursorDbPath() {
|
|
33
|
-
if (process.platform === "darwin") {
|
|
34
|
-
return join(homedir(), "Library", "Application Support", "Cursor", "User", "globalStorage", "state.vscdb");
|
|
35
|
-
}
|
|
36
|
-
if (process.platform === "win32") {
|
|
37
|
-
return join(homedir(), "AppData", "Roaming", "Cursor", "User", "globalStorage", "state.vscdb");
|
|
38
|
-
}
|
|
39
|
-
return join(homedir(), ".config", "Cursor", "User", "globalStorage", "state.vscdb");
|
|
40
|
-
}
|
|
41
|
-
function resolveModel(raw) {
|
|
42
|
-
if (!raw || raw === "default")
|
|
43
|
-
return CURSOR_DEFAULT_MODEL;
|
|
44
|
-
return raw;
|
|
45
|
-
}
|
|
46
|
-
var BUBBLE_QUERY = `
|
|
47
|
-
SELECT
|
|
48
|
-
json_extract(value, '$.tokenCount.inputTokens') as input_tokens,
|
|
49
|
-
json_extract(value, '$.tokenCount.outputTokens') as output_tokens,
|
|
50
|
-
json_extract(value, '$.modelInfo.modelName') as model,
|
|
51
|
-
json_extract(value, '$.createdAt') as created_at,
|
|
52
|
-
json_extract(value, '$.conversationId') as conversation_id,
|
|
53
|
-
substr(json_extract(value, '$.text'), 1, 500) as user_text
|
|
54
|
-
FROM cursorDiskKV
|
|
55
|
-
WHERE key LIKE 'bubbleId:%'
|
|
56
|
-
AND json_extract(value, '$.tokenCount.inputTokens') > 0
|
|
57
|
-
ORDER BY json_extract(value, '$.createdAt') ASC
|
|
58
|
-
`;
|
|
59
|
-
function createParser(source, seenKeys) {
|
|
60
|
-
return {
|
|
61
|
-
async *parse() {
|
|
62
|
-
if (!loadSqlite() || !Database)
|
|
63
|
-
return;
|
|
64
|
-
let db;
|
|
65
|
-
try {
|
|
66
|
-
db = new Database(source.path, { readonly: true });
|
|
67
|
-
} catch {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
const stmt = db.prepare(BUBBLE_QUERY);
|
|
72
|
-
const rows = stmt.all();
|
|
73
|
-
for (const row of rows) {
|
|
74
|
-
const inputTokens = row.input_tokens ?? 0;
|
|
75
|
-
const outputTokens = row.output_tokens ?? 0;
|
|
76
|
-
if (inputTokens === 0 && outputTokens === 0)
|
|
77
|
-
continue;
|
|
78
|
-
const createdAt = row.created_at ?? "";
|
|
79
|
-
const conversationId = row.conversation_id ?? "unknown";
|
|
80
|
-
const dedupKey = `cursor:${conversationId}:${createdAt}:${inputTokens}:${outputTokens}`;
|
|
81
|
-
if (seenKeys.has(dedupKey))
|
|
82
|
-
continue;
|
|
83
|
-
seenKeys.add(dedupKey);
|
|
84
|
-
const model = resolveModel(row.model);
|
|
85
|
-
yield {
|
|
86
|
-
provider: "cursor",
|
|
87
|
-
model: row.model ?? "default",
|
|
88
|
-
inputTokens,
|
|
89
|
-
outputTokens,
|
|
90
|
-
cacheCreationInputTokens: 0,
|
|
91
|
-
cacheReadInputTokens: 0,
|
|
92
|
-
cachedInputTokens: 0,
|
|
93
|
-
reasoningTokens: 0,
|
|
94
|
-
costUSD: 0,
|
|
95
|
-
tools: [],
|
|
96
|
-
bashCommands: [],
|
|
97
|
-
timestamp: createdAt,
|
|
98
|
-
speed: "standard",
|
|
99
|
-
deduplicationKey: dedupKey,
|
|
100
|
-
userMessage: row.user_text ?? "",
|
|
101
|
-
sessionId: conversationId
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
} finally {
|
|
105
|
-
db.close();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
var cursor = {
|
|
111
|
-
name: "cursor",
|
|
112
|
-
displayName: "Cursor",
|
|
113
|
-
modelDisplayName(model) {
|
|
114
|
-
return modelDisplayNames[model] ?? model;
|
|
115
|
-
},
|
|
116
|
-
toolDisplayName(rawTool) {
|
|
117
|
-
return rawTool;
|
|
118
|
-
},
|
|
119
|
-
async discoverSessions() {
|
|
120
|
-
if (!loadSqlite())
|
|
121
|
-
return [];
|
|
122
|
-
const dbPath = getCursorDbPath();
|
|
123
|
-
if (!existsSync(dbPath))
|
|
124
|
-
return [];
|
|
125
|
-
return [{ path: dbPath, project: "cursor", provider: "cursor" }];
|
|
126
|
-
},
|
|
127
|
-
createSessionParser(source, seenKeys) {
|
|
128
|
-
return createParser(source, seenKeys);
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
export {
|
|
132
|
-
cursor
|
|
133
|
-
};
|
|
134
|
-
//# sourceMappingURL=cursor-BGQJ4CWI.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/session/src/providers/cursor.ts"],
|
|
4
|
-
"sourcesContent": ["import { existsSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\n\nimport type { Provider, SessionSource, SessionParser, ParsedProviderCall } from './types.js';\n\n// Lazy-loaded \u2014 requires better-sqlite3\nlet Database: typeof import('better-sqlite3') | null = null;\n\nfunction loadSqlite(): boolean {\n if (Database) return true;\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n Database = require('better-sqlite3');\n return true;\n } catch {\n return false;\n }\n}\n\nconst CURSOR_DEFAULT_MODEL = 'claude-sonnet-4-5';\n\nconst modelDisplayNames: Record<string, string> = {\n 'claude-4.5-opus-high-thinking': 'Opus 4.5 (Thinking)',\n 'claude-4-opus': 'Opus 4',\n 'claude-4-sonnet-thinking': 'Sonnet 4 (Thinking)',\n 'claude-4.5-sonnet-thinking': 'Sonnet 4.5 (Thinking)',\n 'claude-4.6-sonnet': 'Sonnet 4.6',\n 'composer-1': 'Composer 1',\n 'gpt-5': 'GPT-5',\n 'gpt-4.1': 'GPT-4.1',\n 'default': 'Auto (Sonnet est.)',\n};\n\ntype BubbleRow = {\n input_tokens: number | null;\n output_tokens: number | null;\n model: string | null;\n created_at: string | null;\n conversation_id: string | null;\n user_text: string | null;\n};\n\nfunction getCursorDbPath(): string {\n if (process.platform === 'darwin') {\n return join(homedir(), 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'state.vscdb');\n }\n if (process.platform === 'win32') {\n return join(homedir(), 'AppData', 'Roaming', 'Cursor', 'User', 'globalStorage', 'state.vscdb');\n }\n return join(homedir(), '.config', 'Cursor', 'User', 'globalStorage', 'state.vscdb');\n}\n\nfunction resolveModel(raw: string | null): string {\n if (!raw || raw === 'default') return CURSOR_DEFAULT_MODEL;\n return raw;\n}\n\nconst BUBBLE_QUERY = `\n SELECT\n json_extract(value, '$.tokenCount.inputTokens') as input_tokens,\n json_extract(value, '$.tokenCount.outputTokens') as output_tokens,\n json_extract(value, '$.modelInfo.modelName') as model,\n json_extract(value, '$.createdAt') as created_at,\n json_extract(value, '$.conversationId') as conversation_id,\n substr(json_extract(value, '$.text'), 1, 500) as user_text\n FROM cursorDiskKV\n WHERE key LIKE 'bubbleId:%'\n AND json_extract(value, '$.tokenCount.inputTokens') > 0\n ORDER BY json_extract(value, '$.createdAt') ASC\n`;\n\nfunction createParser(source: SessionSource, seenKeys: Set<string>): SessionParser {\n return {\n async *parse(): AsyncGenerator<ParsedProviderCall> {\n if (!loadSqlite() || !Database) return;\n\n let db: InstanceType<typeof import('better-sqlite3')>;\n try {\n db = new Database!(source.path, { readonly: true });\n } catch {\n return;\n }\n\n try {\n const stmt = db.prepare(BUBBLE_QUERY);\n const rows = stmt.all() as BubbleRow[];\n\n for (const row of rows) {\n const inputTokens = row.input_tokens ?? 0;\n const outputTokens = row.output_tokens ?? 0;\n if (inputTokens === 0 && outputTokens === 0) continue;\n\n const createdAt = row.created_at ?? '';\n const conversationId = row.conversation_id ?? 'unknown';\n const dedupKey = `cursor:${conversationId}:${createdAt}:${inputTokens}:${outputTokens}`;\n\n if (seenKeys.has(dedupKey)) continue;\n seenKeys.add(dedupKey);\n\n const model = resolveModel(row.model);\n\n yield {\n provider: 'cursor',\n model: row.model ?? 'default',\n inputTokens,\n outputTokens,\n cacheCreationInputTokens: 0,\n cacheReadInputTokens: 0,\n cachedInputTokens: 0,\n reasoningTokens: 0,\n costUSD: 0,\n tools: [],\n bashCommands: [],\n timestamp: createdAt,\n speed: 'standard',\n deduplicationKey: dedupKey,\n userMessage: row.user_text ?? '',\n sessionId: conversationId,\n };\n }\n } finally {\n db.close();\n }\n },\n };\n}\n\nexport const cursor: Provider = {\n name: 'cursor',\n displayName: 'Cursor',\n\n modelDisplayName(model: string): string {\n return modelDisplayNames[model] ?? model;\n },\n\n toolDisplayName(rawTool: string): string {\n return rawTool;\n },\n\n async discoverSessions(): Promise<SessionSource[]> {\n if (!loadSqlite()) return [];\n const dbPath = getCursorDbPath();\n if (!existsSync(dbPath)) return [];\n return [{ path: dbPath, project: 'cursor', provider: 'cursor' }];\n },\n\n createSessionParser(source: SessionSource, seenKeys: Set<string>): SessionParser {\n return createParser(source, seenKeys);\n },\n};\n"],
|
|
5
|
-
"mappings": ";;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,eAAe;AAKxB,IAAI,WAAmD;AAEvD,SAAS,aAAU;AACjB,MAAI;AAAU,WAAO;AACrB,MAAI;AAEF,eAAW,UAAQ,gBAAgB;AACnC,WAAO;EACT,QAAQ;AACN,WAAO;EACT;AACF;AAEA,IAAM,uBAAuB;AAE7B,IAAM,oBAA4C;EAChD,iCAAiC;EACjC,iBAAiB;EACjB,4BAA4B;EAC5B,8BAA8B;EAC9B,qBAAqB;EACrB,cAAc;EACd,SAAS;EACT,WAAW;EACX,WAAW;;AAYb,SAAS,kBAAe;AACtB,MAAI,QAAQ,aAAa,UAAU;AACjC,WAAO,KAAK,QAAO,GAAI,WAAW,uBAAuB,UAAU,QAAQ,iBAAiB,aAAa;EAC3G;AACA,MAAI,QAAQ,aAAa,SAAS;AAChC,WAAO,KAAK,QAAO,GAAI,WAAW,WAAW,UAAU,QAAQ,iBAAiB,aAAa;EAC/F;AACA,SAAO,KAAK,QAAO,GAAI,WAAW,UAAU,QAAQ,iBAAiB,aAAa;AACpF;AAEA,SAAS,aAAa,KAAkB;AACtC,MAAI,CAAC,OAAO,QAAQ;AAAW,WAAO;AACtC,SAAO;AACT;AAEA,IAAM,eAAe;;;;;;;;;;;;;AAcrB,SAAS,aAAa,QAAuB,UAAqB;AAChE,SAAO;IACL,OAAO,QAAK;AACV,UAAI,CAAC,WAAU,KAAM,CAAC;AAAU;AAEhC,UAAI;AACJ,UAAI;AACF,aAAK,IAAI,SAAU,OAAO,MAAM,EAAE,UAAU,KAAI,CAAE;MACpD,QAAQ;AACN;MACF;AAEA,UAAI;AACF,cAAM,OAAO,GAAG,QAAQ,YAAY;AACpC,cAAM,OAAO,KAAK,IAAG;AAErB,mBAAW,OAAO,MAAM;AACtB,gBAAM,cAAc,IAAI,gBAAgB;AACxC,gBAAM,eAAe,IAAI,iBAAiB;AAC1C,cAAI,gBAAgB,KAAK,iBAAiB;AAAG;AAE7C,gBAAM,YAAY,IAAI,cAAc;AACpC,gBAAM,iBAAiB,IAAI,mBAAmB;AAC9C,gBAAM,WAAW,UAAU,cAAc,IAAI,SAAS,IAAI,WAAW,IAAI,YAAY;AAErF,cAAI,SAAS,IAAI,QAAQ;AAAG;AAC5B,mBAAS,IAAI,QAAQ;AAErB,gBAAM,QAAQ,aAAa,IAAI,KAAK;AAEpC,gBAAM;YACJ,UAAU;YACV,OAAO,IAAI,SAAS;YACpB;YACA;YACA,0BAA0B;YAC1B,sBAAsB;YACtB,mBAAmB;YACnB,iBAAiB;YACjB,SAAS;YACT,OAAO,CAAA;YACP,cAAc,CAAA;YACd,WAAW;YACX,OAAO;YACP,kBAAkB;YAClB,aAAa,IAAI,aAAa;YAC9B,WAAW;;QAEf;MACF;AACE,WAAG,MAAK;MACV;IACF;;AAEJ;AAEO,IAAM,SAAmB;EAC9B,MAAM;EACN,aAAa;EAEb,iBAAiB,OAAa;AAC5B,WAAO,kBAAkB,KAAK,KAAK;EACrC;EAEA,gBAAgB,SAAe;AAC7B,WAAO;EACT;EAEA,MAAM,mBAAgB;AACpB,QAAI,CAAC,WAAU;AAAI,aAAO,CAAA;AAC1B,UAAM,SAAS,gBAAe;AAC9B,QAAI,CAAC,WAAW,MAAM;AAAG,aAAO,CAAA;AAChC,WAAO,CAAC,EAAE,MAAM,QAAQ,SAAS,UAAU,UAAU,SAAQ,CAAE;EACjE;EAEA,oBAAoB,QAAuB,UAAqB;AAC9D,WAAO,aAAa,QAAQ,QAAQ;EACtC;;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/dashboard/Dashboard.tsx"],
|
|
4
|
-
"sourcesContent": ["import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { render, Box, Text, useInput, useApp } from 'ink';\nimport { ORANGE, DIM, PERIODS, PERIOD_LABELS } from './types.js';\nimport type { Period, LocalStats, ApiInsights } from './types.js';\nimport { loadLocalStats, loadApiInsights, loadLinkedInstructions } from './data.js';\nimport { Overview } from './panels/overview.js';\nimport { OutcomesPanel } from './panels/outcomes.js';\nimport { FrictionPanel } from './panels/friction.js';\nimport { InstructionsPanel } from './panels/instructions.js';\nimport { InsightsPanel } from './panels/insights.js';\nimport { LauncherOverlay } from './launcher/LauncherOverlay.js';\nimport { readActiveOrg } from '../lib/active-org.js';\n\nconst MIN_WIDE = 90;\n\ntype Layout = { dashWidth: number; wide: boolean; halfWidth: number; barWidth: number };\n\nfunction getLayout(): Layout {\n const termWidth = process.stdout.columns || 80;\n const dashWidth = Math.min(160, termWidth);\n const wide = dashWidth >= MIN_WIDE;\n const halfWidth = wide ? Math.floor(dashWidth / 2) : dashWidth;\n const barWidth = Math.max(6, Math.min(10, halfWidth - 34));\n return { dashWidth, wide, halfWidth, barWidth };\n}\n\nfunction PeriodTabs({ active, providerName }: { active: Period; providerName?: string }) {\n return (\n <Box justifyContent=\"space-between\" paddingX={1}>\n <Box gap={1}>\n {PERIODS.map(p => (\n <Text key={p} bold={active === p} color={active === p ? ORANGE : DIM}>\n {active === p ? `[ ${PERIOD_LABELS[p]} ]` : ` ${PERIOD_LABELS[p]} `}\n </Text>\n ))}\n </Box>\n {providerName && (\n <Text color={ORANGE} bold>{providerName}</Text>\n )}\n </Box>\n );\n}\n\nfunction StatusBar({ width, insightsFocused = false }: { width: number; insightsFocused?: boolean }) {\n return (\n <Box borderStyle=\"round\" borderColor={DIM} width={width} justifyContent=\"center\" paddingX={1}>\n <Text>\n <Text color={ORANGE} bold>{'<'}</Text><Text color={ORANGE}>{'>'}</Text><Text dimColor> switch </Text>\n <Text color={ORANGE} bold>q</Text><Text dimColor> quit </Text>\n <Text color={ORANGE} bold>s</Text><Text dimColor> {insightsFocused ? 'back' : 'suggestions'} </Text>\n <Text color={ORANGE} bold>1</Text><Text dimColor>-</Text><Text color={ORANGE} bold>5</Text><Text dimColor> period </Text>\n <Text color={ORANGE} bold>r</Text><Text dimColor> refresh </Text>\n <Text color={ORANGE} bold>n</Text><Text dimColor> new session </Text>\n <Text color={ORANGE} bold>l</Text><Text dimColor> launcher</Text>\n </Text>\n </Box>\n );\n}\n\nfunction Row({ wide, width, children }: { wide: boolean; width: number; children: React.ReactNode }) {\n if (wide) return <Box width={width}>{children}</Box>;\n return <>{children}</>;\n}\n\nfunction InteractiveDashboard({ initialLocal, initialApi, initialInstructions, initialPeriod, initialLauncherFocused = false }: {\n initialLocal: LocalStats;\n initialApi: ApiInsights | null;\n initialInstructions: Array<{ name: string; linkedSessions: number }> | null;\n initialPeriod: Period;\n initialLauncherFocused?: boolean;\n}) {\n const { exit } = useApp();\n const [period, setPeriod] = useState<Period>(initialPeriod);\n const [local, setLocal] = useState(initialLocal);\n const [api, setApi] = useState(initialApi);\n const [instructions, setInstructions] = useState(initialInstructions);\n const [loading, setLoading] = useState(false);\n const [insightsFocused, setInsightsFocused] = useState(false);\n const [launcherFocused, setLauncherFocused] = useState(initialLauncherFocused);\n const activeOrgSlug = readActiveOrg()?.orgSlug ?? null;\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const layout = getLayout();\n\n const reload = useCallback(async () => {\n setLoading(true);\n const [newLocal, newApi, newInstructions] = await Promise.all([\n loadLocalStats(),\n loadApiInsights(),\n loadLinkedInstructions(),\n ]);\n setLocal(newLocal);\n setApi(newApi);\n setInstructions(newInstructions);\n setLoading(false);\n }, []);\n\n // Auto-refresh every 30s\n useEffect(() => {\n const id = setInterval(reload, 30_000);\n return () => clearInterval(id);\n }, [reload]);\n\n const switchPeriod = useCallback((np: Period) => {\n if (np === period) return;\n setPeriod(np);\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(reload, 300);\n }, [period, reload]);\n\n useInput((input, key) => {\n if (launcherFocused) return;\n if (input === 'q') {\n if (insightsFocused) { setInsightsFocused(false); return; }\n exit();\n return;\n }\n if (input === 's') { setInsightsFocused(f => !f); return; }\n if (key.escape && insightsFocused) { setInsightsFocused(false); return; }\n if (input === 'l' && !insightsFocused) { setLauncherFocused(true); return; }\n // When insights is focused, let it handle up/down/enter\n if (insightsFocused) return;\n if (input === 'r') { reload(); return; }\n if (input === 'n') {\n import('@rulemetric/session').then(({ getLauncher }) => {\n getLauncher('claude_code').launch({ projectPath: process.cwd(), mode: 'interactive' });\n });\n return;\n }\n const idx = PERIODS.indexOf(period);\n if (key.leftArrow) switchPeriod(PERIODS[(idx - 1 + PERIODS.length) % PERIODS.length]);\n else if (key.rightArrow || key.tab) switchPeriod(PERIODS[(idx + 1) % PERIODS.length]);\n else if (input === '1') switchPeriod('today');\n else if (input === '2') switchPeriod('week');\n else if (input === '3') switchPeriod('30days');\n else if (input === '4') switchPeriod('month');\n else if (input === '5') switchPeriod('all');\n });\n\n const { dashWidth, wide, halfWidth, barWidth } = layout;\n const pw = wide ? halfWidth : dashWidth;\n\n if (loading) {\n return (\n <Box flexDirection=\"column\" width={dashWidth}>\n <PeriodTabs active={period} />\n <Box borderStyle=\"round\" borderColor={ORANGE} paddingX={1} width={dashWidth}>\n <Text dimColor>Loading {PERIOD_LABELS[period]}...</Text>\n </Box>\n <StatusBar width={dashWidth} />\n </Box>\n );\n }\n\n if (launcherFocused) {\n return (\n <Box flexDirection=\"column\" width={dashWidth}>\n <LauncherOverlay\n onClose={() => setLauncherFocused(false)}\n activeOrg={activeOrgSlug}\n defaultProjectPath={process.cwd()}\n width={dashWidth}\n />\n </Box>\n );\n }\n\n return (\n <Box flexDirection=\"column\" width={dashWidth}>\n <PeriodTabs active={period} />\n <Overview local={local} api={api} label={PERIOD_LABELS[period]} width={dashWidth} />\n <Row wide={wide} width={dashWidth}>\n <OutcomesPanel api={api} width={pw} barWidth={barWidth} />\n <FrictionPanel api={api} width={pw} barWidth={barWidth} />\n </Row>\n <InstructionsPanel instructions={instructions} width={dashWidth} barWidth={barWidth} />\n <InsightsPanel api={api} width={dashWidth} focused={insightsFocused} />\n <StatusBar width={dashWidth} insightsFocused={insightsFocused} />\n </Box>\n );\n}\n\nexport async function renderDashboard(\n period: Period = 'week',\n options: { openLauncher?: boolean } = {},\n): Promise<void> {\n // Load data in parallel \u2014 local files + API\n const [local, api, instructions] = await Promise.all([\n loadLocalStats(),\n loadApiInsights(),\n loadLinkedInstructions(),\n ]);\n\n const isTTY = process.stdin.isTTY && process.stdout.isTTY;\n if (isTTY) {\n const { waitUntilExit } = render(\n <InteractiveDashboard\n initialLocal={local}\n initialApi={api}\n initialInstructions={instructions}\n initialPeriod={period}\n initialLauncherFocused={options.openLauncher ?? false}\n />,\n );\n await waitUntilExit();\n } else {\n // Non-interactive: render once and exit\n const layout = getLayout();\n const { unmount } = render(\n <Box flexDirection=\"column\" width={layout.dashWidth}>\n <Overview local={local} api={api} label={PERIOD_LABELS[period]} width={layout.dashWidth} />\n <OutcomesPanel api={api} width={layout.dashWidth} barWidth={layout.barWidth} />\n <FrictionPanel api={api} width={layout.dashWidth} barWidth={layout.barWidth} />\n <InstructionsPanel instructions={instructions} width={layout.dashWidth} barWidth={layout.barWidth} />\n <InsightsPanel api={api} width={layout.dashWidth} />\n </Box>,\n { patchConsole: false },\n );\n unmount();\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/dist-UNYP5PJR.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ClaudeCodeAdapter,
|
|
3
|
-
CodexAdapter,
|
|
4
|
-
CopilotAgentAdapter,
|
|
5
|
-
CursorAdapter,
|
|
6
|
-
RuleMetricMcpAdapter,
|
|
7
|
-
SESSION_EVENT_TYPES,
|
|
8
|
-
SESSION_TOOLS,
|
|
9
|
-
VSCodeCopilotAdapter,
|
|
10
|
-
buildAnalysisPrompt,
|
|
11
|
-
buildTmuxAttachCommand,
|
|
12
|
-
buildTmuxHasSessionArgs,
|
|
13
|
-
buildTmuxLaunchArgs,
|
|
14
|
-
buildTmuxSendKeysArgs,
|
|
15
|
-
detectTool,
|
|
16
|
-
discoverAllSessions,
|
|
17
|
-
freshCodexState,
|
|
18
|
-
getAdapter,
|
|
19
|
-
getAllProviders,
|
|
20
|
-
getAvailableLaunchers,
|
|
21
|
-
getLauncher,
|
|
22
|
-
getProvider,
|
|
23
|
-
parseAnalysisResponse,
|
|
24
|
-
sanitizeBranch,
|
|
25
|
-
sanitizeTmuxName,
|
|
26
|
-
worktreePathFor
|
|
27
|
-
} from "./chunk-F5N6CLJJ.js";
|
|
28
|
-
import "./chunk-NSBPE2FW.js";
|
|
29
|
-
export {
|
|
30
|
-
ClaudeCodeAdapter,
|
|
31
|
-
CodexAdapter,
|
|
32
|
-
CopilotAgentAdapter,
|
|
33
|
-
CursorAdapter,
|
|
34
|
-
RuleMetricMcpAdapter,
|
|
35
|
-
SESSION_EVENT_TYPES,
|
|
36
|
-
SESSION_TOOLS,
|
|
37
|
-
VSCodeCopilotAdapter,
|
|
38
|
-
buildAnalysisPrompt,
|
|
39
|
-
buildTmuxAttachCommand,
|
|
40
|
-
buildTmuxHasSessionArgs,
|
|
41
|
-
buildTmuxLaunchArgs,
|
|
42
|
-
buildTmuxSendKeysArgs,
|
|
43
|
-
detectTool,
|
|
44
|
-
discoverAllSessions,
|
|
45
|
-
freshCodexState,
|
|
46
|
-
getAdapter,
|
|
47
|
-
getAllProviders,
|
|
48
|
-
getAvailableLaunchers,
|
|
49
|
-
getLauncher,
|
|
50
|
-
getProvider,
|
|
51
|
-
parseAnalysisResponse,
|
|
52
|
-
sanitizeBranch,
|
|
53
|
-
sanitizeTmuxName,
|
|
54
|
-
worktreePathFor
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=dist-UNYP5PJR.js.map
|
package/dist/index.js.map
DELETED
package/dist/lib/auth.js.map
DELETED