@rulemetric/cli 0.9.0 → 0.10.0

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.
Files changed (194) hide show
  1. package/dist/base-command.js +1 -1
  2. package/dist/{chunk-R6JXE273.js → chunk-3A7RPMNN.js} +1 -1
  3. package/dist/{chunk-X3VL5H24.js → chunk-3IH22LYI.js} +1 -1
  4. package/dist/{chunk-CNOD6HWU.js → chunk-3VYV6ZYB.js} +1 -1
  5. package/dist/{chunk-3DGL2ZY3.js → chunk-4STKWINN.js} +1 -1
  6. package/dist/{chunk-CBUTNIJA.js → chunk-4T2FJLDA.js} +1 -1
  7. package/dist/{chunk-3AZV7ZPJ.js → chunk-553EGRRW.js} +1 -1
  8. package/dist/{chunk-EQHKCGSX.js → chunk-6SUN4NOY.js} +1 -1
  9. package/dist/{chunk-HYDGERWD.js → chunk-7BYMIHIB.js} +1 -1
  10. package/dist/{chunk-LLIHRQPH.js → chunk-7L4P7FCK.js} +1 -1
  11. package/dist/{chunk-7FZB65VH.js → chunk-7LXG3DDL.js} +1 -1
  12. package/dist/{chunk-KWNIKGAE.js → chunk-BN54LTXD.js} +1 -1
  13. package/dist/{chunk-X3RTCN6S.js → chunk-DAD4YBYC.js} +1 -1
  14. package/dist/{chunk-MO57LGGK.js → chunk-EOJ3LAP6.js} +1 -1
  15. package/dist/{chunk-QTZPLAYC.js → chunk-ERNDMEYG.js} +1 -1
  16. package/dist/{chunk-YFQ4FOAS.js → chunk-F5WE6JXK.js} +1 -1
  17. package/dist/{chunk-5EDINFHF.js → chunk-FH55JFUY.js} +1 -1
  18. package/dist/chunk-FK73GD2X.js +2 -0
  19. package/dist/{chunk-CDDICCY2.js → chunk-FORJT5H6.js} +1 -1
  20. package/dist/{chunk-RZTVYUX4.js → chunk-H6MN2AAF.js} +1 -1
  21. package/dist/{chunk-IVDTORX5.js → chunk-HKC224ZO.js} +1 -1
  22. package/dist/{chunk-2B7Y6JNB.js → chunk-MIOMKROL.js} +1 -1
  23. package/dist/{chunk-B3BHB26P.js → chunk-MODFTCZY.js} +1 -1
  24. package/dist/{chunk-PKLXZYBY.js → chunk-N7ML6X6Y.js} +1 -1
  25. package/dist/{chunk-SYTQDPPN.js → chunk-NDZVH5QW.js} +1 -1
  26. package/dist/{chunk-FWTYR36W.js → chunk-NTJKAIHS.js} +1 -1
  27. package/dist/{chunk-QAV4HW7D.js → chunk-OFC7HIBX.js} +1 -1
  28. package/dist/{chunk-K4B24SMJ.js → chunk-OFSUKSZ2.js} +1 -1
  29. package/dist/{chunk-UUZB4IKU.js → chunk-OI7MOALX.js} +1 -1
  30. package/dist/{chunk-NTKO4H2K.js → chunk-OPUI7CM2.js} +1 -1
  31. package/dist/chunk-PZNWH4VQ.js +7 -0
  32. package/dist/{chunk-6M74HH6Y.js → chunk-RSMLOYVJ.js} +1 -1
  33. package/dist/chunk-S7YDBO42.js +1 -0
  34. package/dist/{chunk-KHWG7ZG4.js → chunk-SE5SRPIB.js} +1 -1
  35. package/dist/{chunk-JPUH3V67.js → chunk-TCR7TSAJ.js} +1 -1
  36. package/dist/{chunk-DZ3FBQYD.js → chunk-UC377K7P.js} +1 -1
  37. package/dist/{chunk-GF76D2DU.js → chunk-UY5QYCTK.js} +1 -1
  38. package/dist/{chunk-XRTZU7IZ.js → chunk-V5MJ4ICC.js} +1 -1
  39. package/dist/chunk-VKVWEG5J.js +11 -0
  40. package/dist/chunk-VXM4PEED.js +46 -0
  41. package/dist/{chunk-C2275MFP.js → chunk-W2SG3KND.js} +1 -1
  42. package/dist/{chunk-E2NVNLFD.js → chunk-W65UX4FC.js} +1 -1
  43. package/dist/{chunk-SANYAPBK.js → chunk-WEBB76XA.js} +1 -1
  44. package/dist/{chunk-VA5DPQB4.js → chunk-WVJEBQYU.js} +1 -1
  45. package/dist/{chunk-S62MK372.js → chunk-X4N4MT2I.js} +1 -1
  46. package/dist/{chunk-BPP7AEFW.js → chunk-XILSJP4P.js} +1 -1
  47. package/dist/{chunk-VFYT3SC5.js → chunk-YVM2CHNV.js} +1 -1
  48. package/dist/{chunk-PQN2GAG4.js → chunk-YY53MMH7.js} +1 -1
  49. package/dist/{chunk-WKDXH7NO.js → chunk-ZJOYLBRU.js} +1 -1
  50. package/dist/commands/antigravity/backfill.js +1 -1
  51. package/dist/commands/auth/create-key.js +1 -1
  52. package/dist/commands/auth/login.js +1 -1
  53. package/dist/commands/auth/logout.js +1 -1
  54. package/dist/commands/auth/revoke-key.js +1 -1
  55. package/dist/commands/auth/signup.js +1 -1
  56. package/dist/commands/auth/status.js +1 -1
  57. package/dist/commands/capture/scope.js +1 -1
  58. package/dist/commands/catalog/index.js +1 -1
  59. package/dist/commands/catalog/recommend.js +1 -1
  60. package/dist/commands/convert.js +1 -1
  61. package/dist/commands/converters.js +1 -1
  62. package/dist/commands/crons/list.js +1 -1
  63. package/dist/commands/crons/run.js +1 -1
  64. package/dist/commands/dashboard.js +1 -1
  65. package/dist/commands/diagnostics.js +1 -1
  66. package/dist/commands/eval-targets/create.js +1 -1
  67. package/dist/commands/eval-targets/list.js +1 -1
  68. package/dist/commands/evals/agent.js +1 -1
  69. package/dist/commands/evals/auto-run.js +1 -1
  70. package/dist/commands/evals/benchmark.js +1 -1
  71. package/dist/commands/evals/compare.js +1 -1
  72. package/dist/commands/evals/create.js +1 -1
  73. package/dist/commands/evals/optimize-description.js +1 -1
  74. package/dist/commands/evals/optimize.js +1 -1
  75. package/dist/commands/evals/refine-cases.js +1 -1
  76. package/dist/commands/evals/run.js +1 -1
  77. package/dist/commands/evals/validate-judge.js +1 -1
  78. package/dist/commands/experiments/list.js +1 -1
  79. package/dist/commands/gateway/ensure.js +1 -1
  80. package/dist/commands/hooks/install.js +1 -1
  81. package/dist/commands/hooks/run.js +1 -1
  82. package/dist/commands/hooks/uninstall.js +1 -1
  83. package/dist/commands/import.js +1 -1
  84. package/dist/commands/instructions/create.js +1 -1
  85. package/dist/commands/instructions/dedupe.js +1 -0
  86. package/dist/commands/instructions/delete.js +1 -1
  87. package/dist/commands/instructions/fork.js +1 -1
  88. package/dist/commands/instructions/get.js +1 -1
  89. package/dist/commands/instructions/list.js +1 -1
  90. package/dist/commands/instructions/promote.js +1 -1
  91. package/dist/commands/instructions/pull.js +1 -1
  92. package/dist/commands/instructions/restore.js +1 -1
  93. package/dist/commands/instructions/retract.js +1 -1
  94. package/dist/commands/instructions/upstream.js +1 -1
  95. package/dist/commands/instructions/versions.js +1 -1
  96. package/dist/commands/launcher.js +1 -1
  97. package/dist/commands/local/down.js +1 -1
  98. package/dist/commands/local/up.js +1 -1
  99. package/dist/commands/org/current.js +1 -1
  100. package/dist/commands/org/list.js +1 -1
  101. package/dist/commands/org/switch.js +1 -1
  102. package/dist/commands/packs/add-instruction.js +1 -1
  103. package/dist/commands/packs/apply.js +1 -1
  104. package/dist/commands/packs/create.js +1 -1
  105. package/dist/commands/packs/fork.js +1 -1
  106. package/dist/commands/packs/get.js +1 -1
  107. package/dist/commands/packs/list.js +1 -1
  108. package/dist/commands/packs/remove-instruction.js +1 -1
  109. package/dist/commands/proxy/env.js +1 -1
  110. package/dist/commands/proxy/logs.js +1 -1
  111. package/dist/commands/proxy/restart.js +1 -1
  112. package/dist/commands/proxy/setup.js +1 -1
  113. package/dist/commands/proxy/start.js +1 -1
  114. package/dist/commands/proxy/status.js +1 -1
  115. package/dist/commands/proxy/stop.js +1 -1
  116. package/dist/commands/research/backfill.js +1 -1
  117. package/dist/commands/research/tail-transcript.js +1 -1
  118. package/dist/commands/service/install.js +1 -1
  119. package/dist/commands/service/status.js +1 -1
  120. package/dist/commands/service/uninstall.js +1 -1
  121. package/dist/commands/sessions/analyze.js +1 -1
  122. package/dist/commands/sessions/delete.js +1 -1
  123. package/dist/commands/sessions/end.js +1 -1
  124. package/dist/commands/sessions/import.js +1 -1
  125. package/dist/commands/sessions/list.js +1 -1
  126. package/dist/commands/sessions/start.js +1 -1
  127. package/dist/commands/setup.js +1 -1
  128. package/dist/commands/skills/export-approved.js +1 -1
  129. package/dist/commands/skills/install.js +1 -1
  130. package/dist/commands/skills/list.js +1 -1
  131. package/dist/commands/skills/publish.js +1 -1
  132. package/dist/commands/skills/search.js +1 -1
  133. package/dist/commands/skills/update.js +1 -1
  134. package/dist/commands/suggestions/accept.js +1 -1
  135. package/dist/commands/suggestions/auto.js +1 -1
  136. package/dist/commands/suggestions/dismiss.js +1 -1
  137. package/dist/commands/suggestions/list.js +1 -1
  138. package/dist/commands/suggestions/refresh.js +1 -1
  139. package/dist/commands/suggestions/undo.js +1 -1
  140. package/dist/dashboard/Dashboard.js +1 -1
  141. package/dist/dashboard/data.js +1 -1
  142. package/dist/dashboard/launcher/LauncherOverlay.js +1 -1
  143. package/dist/dashboard/launcher/api.js +1 -1
  144. package/dist/dashboard/launcher/useLaunchJobs.js +1 -1
  145. package/dist/lib/active-org-refresh.js +1 -1
  146. package/dist/lib/agent-loop.js +1 -1
  147. package/dist/lib/antigravity-transcript.js +1 -1
  148. package/dist/lib/api-client.js +1 -1
  149. package/dist/lib/auth.js +1 -1
  150. package/dist/lib/claude-md-blocks.js +1 -0
  151. package/dist/lib/codex-exec.js +1 -1
  152. package/dist/lib/ensure-api-key.js +1 -1
  153. package/dist/lib/ensure-fresh-token.js +1 -1
  154. package/dist/lib/eval-benchmark.js +1 -1
  155. package/dist/lib/eval-candidate-run.js +1 -1
  156. package/dist/lib/eval-case-generator.js +1 -1
  157. package/dist/lib/eval-conversation-handler.js +1 -1
  158. package/dist/lib/eval-grader.js +1 -1
  159. package/dist/lib/eval-resume.js +1 -1
  160. package/dist/lib/eval-run-batch.js +1 -1
  161. package/dist/lib/evolution-enrolment.js +1 -1
  162. package/dist/lib/handlers/cron-auto-accept-suggestions.js +1 -1
  163. package/dist/lib/handlers/cron-eval-autorun.js +1 -1
  164. package/dist/lib/handlers/cron-instruction-evolution.js +1 -1
  165. package/dist/lib/handlers/cron-instruction-training.js +1 -1
  166. package/dist/lib/handlers/cron-refresh-pricing.js +1 -1
  167. package/dist/lib/handlers/cron-suggest-instructions.js +1 -1
  168. package/dist/lib/handlers/distill-memories.js +1 -1
  169. package/dist/lib/handlers/process-changelog.js +1 -1
  170. package/dist/lib/handlers/process-conversation.js +1 -1
  171. package/dist/lib/handlers/process-eval.js +1 -1
  172. package/dist/lib/handlers/process-insights.js +1 -1
  173. package/dist/lib/handlers/process-judge-review.js +1 -1
  174. package/dist/lib/handlers/process-launch.js +1 -1
  175. package/dist/lib/handlers/process-memory-ab.js +1 -1
  176. package/dist/lib/handlers/process-run-cleanup.js +1 -1
  177. package/dist/lib/handlers/process-session-goal.js +1 -1
  178. package/dist/lib/instruction-proposer.js +1 -1
  179. package/dist/lib/judge-review-runner.js +1 -1
  180. package/dist/lib/llm-client.js +1 -1
  181. package/dist/lib/manual-tasks.js +1 -1
  182. package/dist/lib/research-client.js +1 -1
  183. package/dist/lib/retraction.js +1 -1
  184. package/dist/lib/reviewer-detect.js +1 -1
  185. package/dist/lib/setup-steps.js +1 -1
  186. package/dist/lib/suggestion-accept.js +1 -1
  187. package/dist/lib/telemetry.js +1 -1
  188. package/dist/lib/terminal-target-heartbeat.js +1 -1
  189. package/oclif.manifest.json +442 -386
  190. package/package.json +6 -6
  191. package/dist/chunk-3PUOJ6F2.js +0 -45
  192. package/dist/chunk-JZ5Z2BRO.js +0 -7
  193. package/dist/chunk-MMPZIZYZ.js +0 -10
  194. package/dist/chunk-QWPWY3SW.js +0 -1
@@ -487,6 +487,193 @@
487
487
  "backfill.js"
488
488
  ]
489
489
  },
490
+ "capture:scope": {
491
+ "aliases": [],
492
+ "args": {},
493
+ "description": "Show or set which projects RuleMetric captures — the Codex sweep and hook-driven sessions each have their own scope",
494
+ "examples": [
495
+ "<%= config.bin %> <%= command.id %>",
496
+ "<%= config.bin %> <%= command.id %> --add ~/work/client-a --add ~/work/client-b",
497
+ "<%= config.bin %> <%= command.id %> --tool hooks --add ~/work/client-a",
498
+ "<%= config.bin %> <%= command.id %> --tool hooks --off",
499
+ "<%= config.bin %> <%= command.id %> --remove ~/work/client-a",
500
+ "<%= config.bin %> <%= command.id %> --off",
501
+ "<%= config.bin %> <%= command.id %> --all"
502
+ ],
503
+ "flags": {
504
+ "api-url": {
505
+ "description": "Override API base URL",
506
+ "env": "RULEMETRIC_API_URL",
507
+ "hidden": true,
508
+ "name": "api-url",
509
+ "hasDynamicHelp": false,
510
+ "multiple": false,
511
+ "type": "option"
512
+ },
513
+ "tool": {
514
+ "description": "Which capture path to edit: \"codex\" (the worker transcript sweep, the default) or \"hooks\" (Claude Code / Cursor / Copilot / Antigravity hook sessions).",
515
+ "name": "tool",
516
+ "default": "codex",
517
+ "hasDynamicHelp": false,
518
+ "multiple": false,
519
+ "options": [
520
+ "codex",
521
+ "hooks"
522
+ ],
523
+ "type": "option"
524
+ },
525
+ "add": {
526
+ "description": "Capture sessions under this path (repeatable). Implies an allowlist.",
527
+ "name": "add",
528
+ "hasDynamicHelp": false,
529
+ "multiple": true,
530
+ "type": "option"
531
+ },
532
+ "remove": {
533
+ "description": "Stop capturing under this path (repeatable).",
534
+ "name": "remove",
535
+ "hasDynamicHelp": false,
536
+ "multiple": true,
537
+ "type": "option"
538
+ },
539
+ "off": {
540
+ "description": "Turn this capture path off entirely.",
541
+ "exclusive": [
542
+ "all"
543
+ ],
544
+ "name": "off",
545
+ "allowNo": false,
546
+ "type": "boolean"
547
+ },
548
+ "all": {
549
+ "description": "Capture every project (the default).",
550
+ "exclusive": [
551
+ "off"
552
+ ],
553
+ "name": "all",
554
+ "allowNo": false,
555
+ "type": "boolean"
556
+ },
557
+ "clear": {
558
+ "description": "Remove this scope, restoring the default.",
559
+ "name": "clear",
560
+ "allowNo": false,
561
+ "type": "boolean"
562
+ }
563
+ },
564
+ "hasDynamicHelp": false,
565
+ "hiddenAliases": [],
566
+ "id": "capture:scope",
567
+ "pluginAlias": "@rulemetric/cli",
568
+ "pluginName": "@rulemetric/cli",
569
+ "pluginType": "core",
570
+ "strict": true,
571
+ "enableJsonFlag": false,
572
+ "isESM": true,
573
+ "relativePath": [
574
+ "dist",
575
+ "commands",
576
+ "capture",
577
+ "scope.js"
578
+ ]
579
+ },
580
+ "catalog": {
581
+ "aliases": [],
582
+ "args": {},
583
+ "description": "Browse the org instruction catalog",
584
+ "flags": {
585
+ "api-url": {
586
+ "description": "Override API base URL",
587
+ "env": "RULEMETRIC_API_URL",
588
+ "hidden": true,
589
+ "name": "api-url",
590
+ "hasDynamicHelp": false,
591
+ "multiple": false,
592
+ "type": "option"
593
+ },
594
+ "badge": {
595
+ "description": "Filter by badge",
596
+ "name": "badge",
597
+ "hasDynamicHelp": false,
598
+ "multiple": false,
599
+ "options": [
600
+ "recommended",
601
+ "required"
602
+ ],
603
+ "type": "option"
604
+ },
605
+ "scope": {
606
+ "description": "Filter by scope",
607
+ "name": "scope",
608
+ "hasDynamicHelp": false,
609
+ "multiple": false,
610
+ "options": [
611
+ "org",
612
+ "team"
613
+ ],
614
+ "type": "option"
615
+ },
616
+ "search": {
617
+ "description": "Search by name or description",
618
+ "name": "search",
619
+ "hasDynamicHelp": false,
620
+ "multiple": false,
621
+ "type": "option"
622
+ }
623
+ },
624
+ "hasDynamicHelp": false,
625
+ "hiddenAliases": [],
626
+ "id": "catalog",
627
+ "pluginAlias": "@rulemetric/cli",
628
+ "pluginName": "@rulemetric/cli",
629
+ "pluginType": "core",
630
+ "strict": true,
631
+ "enableJsonFlag": false,
632
+ "isESM": true,
633
+ "relativePath": [
634
+ "dist",
635
+ "commands",
636
+ "catalog",
637
+ "index.js"
638
+ ]
639
+ },
640
+ "catalog:recommend": {
641
+ "aliases": [],
642
+ "args": {
643
+ "projectId": {
644
+ "description": "ID of the project",
645
+ "name": "projectId",
646
+ "required": true
647
+ }
648
+ },
649
+ "description": "Get AI-powered instruction recommendations for a project",
650
+ "flags": {
651
+ "api-url": {
652
+ "description": "Override API base URL",
653
+ "env": "RULEMETRIC_API_URL",
654
+ "hidden": true,
655
+ "name": "api-url",
656
+ "hasDynamicHelp": false,
657
+ "multiple": false,
658
+ "type": "option"
659
+ }
660
+ },
661
+ "hasDynamicHelp": false,
662
+ "hiddenAliases": [],
663
+ "id": "catalog:recommend",
664
+ "pluginAlias": "@rulemetric/cli",
665
+ "pluginName": "@rulemetric/cli",
666
+ "pluginType": "core",
667
+ "strict": true,
668
+ "enableJsonFlag": false,
669
+ "isESM": true,
670
+ "relativePath": [
671
+ "dist",
672
+ "commands",
673
+ "catalog",
674
+ "recommend.js"
675
+ ]
676
+ },
490
677
  "auth:create-key": {
491
678
  "aliases": [],
492
679
  "args": {},
@@ -759,18 +946,12 @@
759
946
  "status.js"
760
947
  ]
761
948
  },
762
- "capture:scope": {
949
+ "crons:list": {
763
950
  "aliases": [],
764
951
  "args": {},
765
- "description": "Show or set which projects RuleMetric captures — the Codex sweep and hook-driven sessions each have their own scope",
952
+ "description": "List manually-runnable maintenance tasks",
766
953
  "examples": [
767
- "<%= config.bin %> <%= command.id %>",
768
- "<%= config.bin %> <%= command.id %> --add ~/work/client-a --add ~/work/client-b",
769
- "<%= config.bin %> <%= command.id %> --tool hooks --add ~/work/client-a",
770
- "<%= config.bin %> <%= command.id %> --tool hooks --off",
771
- "<%= config.bin %> <%= command.id %> --remove ~/work/client-a",
772
- "<%= config.bin %> <%= command.id %> --off",
773
- "<%= config.bin %> <%= command.id %> --all"
954
+ "<%= config.bin %> crons list"
774
955
  ],
775
956
  "flags": {
776
957
  "api-url": {
@@ -781,61 +962,11 @@
781
962
  "hasDynamicHelp": false,
782
963
  "multiple": false,
783
964
  "type": "option"
784
- },
785
- "tool": {
786
- "description": "Which capture path to edit: \"codex\" (the worker transcript sweep, the default) or \"hooks\" (Claude Code / Cursor / Copilot / Antigravity hook sessions).",
787
- "name": "tool",
788
- "default": "codex",
789
- "hasDynamicHelp": false,
790
- "multiple": false,
791
- "options": [
792
- "codex",
793
- "hooks"
794
- ],
795
- "type": "option"
796
- },
797
- "add": {
798
- "description": "Capture sessions under this path (repeatable). Implies an allowlist.",
799
- "name": "add",
800
- "hasDynamicHelp": false,
801
- "multiple": true,
802
- "type": "option"
803
- },
804
- "remove": {
805
- "description": "Stop capturing under this path (repeatable).",
806
- "name": "remove",
807
- "hasDynamicHelp": false,
808
- "multiple": true,
809
- "type": "option"
810
- },
811
- "off": {
812
- "description": "Turn this capture path off entirely.",
813
- "exclusive": [
814
- "all"
815
- ],
816
- "name": "off",
817
- "allowNo": false,
818
- "type": "boolean"
819
- },
820
- "all": {
821
- "description": "Capture every project (the default).",
822
- "exclusive": [
823
- "off"
824
- ],
825
- "name": "all",
826
- "allowNo": false,
827
- "type": "boolean"
828
- },
829
- "clear": {
830
- "description": "Remove this scope, restoring the default.",
831
- "name": "clear",
832
- "allowNo": false,
833
- "type": "boolean"
834
965
  }
835
966
  },
836
967
  "hasDynamicHelp": false,
837
968
  "hiddenAliases": [],
838
- "id": "capture:scope",
969
+ "id": "crons:list",
839
970
  "pluginAlias": "@rulemetric/cli",
840
971
  "pluginName": "@rulemetric/cli",
841
972
  "pluginType": "core",
@@ -845,139 +976,8 @@
845
976
  "relativePath": [
846
977
  "dist",
847
978
  "commands",
848
- "capture",
849
- "scope.js"
850
- ]
851
- },
852
- "catalog": {
853
- "aliases": [],
854
- "args": {},
855
- "description": "Browse the org instruction catalog",
856
- "flags": {
857
- "api-url": {
858
- "description": "Override API base URL",
859
- "env": "RULEMETRIC_API_URL",
860
- "hidden": true,
861
- "name": "api-url",
862
- "hasDynamicHelp": false,
863
- "multiple": false,
864
- "type": "option"
865
- },
866
- "badge": {
867
- "description": "Filter by badge",
868
- "name": "badge",
869
- "hasDynamicHelp": false,
870
- "multiple": false,
871
- "options": [
872
- "recommended",
873
- "required"
874
- ],
875
- "type": "option"
876
- },
877
- "scope": {
878
- "description": "Filter by scope",
879
- "name": "scope",
880
- "hasDynamicHelp": false,
881
- "multiple": false,
882
- "options": [
883
- "org",
884
- "team"
885
- ],
886
- "type": "option"
887
- },
888
- "search": {
889
- "description": "Search by name or description",
890
- "name": "search",
891
- "hasDynamicHelp": false,
892
- "multiple": false,
893
- "type": "option"
894
- }
895
- },
896
- "hasDynamicHelp": false,
897
- "hiddenAliases": [],
898
- "id": "catalog",
899
- "pluginAlias": "@rulemetric/cli",
900
- "pluginName": "@rulemetric/cli",
901
- "pluginType": "core",
902
- "strict": true,
903
- "enableJsonFlag": false,
904
- "isESM": true,
905
- "relativePath": [
906
- "dist",
907
- "commands",
908
- "catalog",
909
- "index.js"
910
- ]
911
- },
912
- "catalog:recommend": {
913
- "aliases": [],
914
- "args": {
915
- "projectId": {
916
- "description": "ID of the project",
917
- "name": "projectId",
918
- "required": true
919
- }
920
- },
921
- "description": "Get AI-powered instruction recommendations for a project",
922
- "flags": {
923
- "api-url": {
924
- "description": "Override API base URL",
925
- "env": "RULEMETRIC_API_URL",
926
- "hidden": true,
927
- "name": "api-url",
928
- "hasDynamicHelp": false,
929
- "multiple": false,
930
- "type": "option"
931
- }
932
- },
933
- "hasDynamicHelp": false,
934
- "hiddenAliases": [],
935
- "id": "catalog:recommend",
936
- "pluginAlias": "@rulemetric/cli",
937
- "pluginName": "@rulemetric/cli",
938
- "pluginType": "core",
939
- "strict": true,
940
- "enableJsonFlag": false,
941
- "isESM": true,
942
- "relativePath": [
943
- "dist",
944
- "commands",
945
- "catalog",
946
- "recommend.js"
947
- ]
948
- },
949
- "crons:list": {
950
- "aliases": [],
951
- "args": {},
952
- "description": "List manually-runnable maintenance tasks",
953
- "examples": [
954
- "<%= config.bin %> crons list"
955
- ],
956
- "flags": {
957
- "api-url": {
958
- "description": "Override API base URL",
959
- "env": "RULEMETRIC_API_URL",
960
- "hidden": true,
961
- "name": "api-url",
962
- "hasDynamicHelp": false,
963
- "multiple": false,
964
- "type": "option"
965
- }
966
- },
967
- "hasDynamicHelp": false,
968
- "hiddenAliases": [],
969
- "id": "crons:list",
970
- "pluginAlias": "@rulemetric/cli",
971
- "pluginName": "@rulemetric/cli",
972
- "pluginType": "core",
973
- "strict": true,
974
- "enableJsonFlag": false,
975
- "isESM": true,
976
- "relativePath": [
977
- "dist",
978
- "commands",
979
- "crons",
980
- "list.js"
979
+ "crons",
980
+ "list.js"
981
981
  ]
982
982
  },
983
983
  "crons:run": {
@@ -991,184 +991,8 @@
991
991
  },
992
992
  "description": "Run a maintenance task synchronously, right now",
993
993
  "examples": [
994
- "<%= config.bin %> crons run cron_check_changelog",
995
- "<%= config.bin %> crons run cron_suggest_instructions --quiet"
996
- ],
997
- "flags": {
998
- "api-url": {
999
- "description": "Override API base URL",
1000
- "env": "RULEMETRIC_API_URL",
1001
- "hidden": true,
1002
- "name": "api-url",
1003
- "hasDynamicHelp": false,
1004
- "multiple": false,
1005
- "type": "option"
1006
- },
1007
- "quiet": {
1008
- "char": "q",
1009
- "description": "Suppress per-line log output; print summary only",
1010
- "name": "quiet",
1011
- "allowNo": false,
1012
- "type": "boolean"
1013
- }
1014
- },
1015
- "hasDynamicHelp": false,
1016
- "hiddenAliases": [],
1017
- "id": "crons:run",
1018
- "pluginAlias": "@rulemetric/cli",
1019
- "pluginName": "@rulemetric/cli",
1020
- "pluginType": "core",
1021
- "strict": true,
1022
- "enableJsonFlag": false,
1023
- "isESM": true,
1024
- "relativePath": [
1025
- "dist",
1026
- "commands",
1027
- "crons",
1028
- "run.js"
1029
- ]
1030
- },
1031
- "eval-targets:create": {
1032
- "aliases": [],
1033
- "args": {},
1034
- "description": "Create an eval target (instruction, skill, prompt, or plan to test)",
1035
- "examples": [
1036
- "<%= config.bin %> eval-targets create --name my-rules --type instruction --file ./CLAUDE.md",
1037
- "<%= config.bin %> eval-targets create --name my-prompt --type prompt --content \"Always use TypeScript\""
1038
- ],
1039
- "flags": {
1040
- "api-url": {
1041
- "description": "Override API base URL",
1042
- "env": "RULEMETRIC_API_URL",
1043
- "hidden": true,
1044
- "name": "api-url",
1045
- "hasDynamicHelp": false,
1046
- "multiple": false,
1047
- "type": "option"
1048
- },
1049
- "name": {
1050
- "char": "n",
1051
- "description": "Name for the eval target",
1052
- "name": "name",
1053
- "required": true,
1054
- "hasDynamicHelp": false,
1055
- "multiple": false,
1056
- "type": "option"
1057
- },
1058
- "type": {
1059
- "char": "t",
1060
- "description": "Target type",
1061
- "name": "type",
1062
- "required": true,
1063
- "hasDynamicHelp": false,
1064
- "multiple": false,
1065
- "options": [
1066
- "instruction",
1067
- "skill",
1068
- "prompt",
1069
- "plan"
1070
- ],
1071
- "type": "option"
1072
- },
1073
- "file": {
1074
- "char": "f",
1075
- "description": "Path to content file",
1076
- "name": "file",
1077
- "hasDynamicHelp": false,
1078
- "multiple": false,
1079
- "type": "option"
1080
- },
1081
- "content": {
1082
- "char": "c",
1083
- "description": "Content string (alternative to --file)",
1084
- "name": "content",
1085
- "hasDynamicHelp": false,
1086
- "multiple": false,
1087
- "type": "option"
1088
- },
1089
- "description": {
1090
- "char": "d",
1091
- "description": "Description of the target",
1092
- "name": "description",
1093
- "default": "",
1094
- "hasDynamicHelp": false,
1095
- "multiple": false,
1096
- "type": "option"
1097
- }
1098
- },
1099
- "hasDynamicHelp": false,
1100
- "hiddenAliases": [],
1101
- "id": "eval-targets:create",
1102
- "pluginAlias": "@rulemetric/cli",
1103
- "pluginName": "@rulemetric/cli",
1104
- "pluginType": "core",
1105
- "strict": true,
1106
- "enableJsonFlag": false,
1107
- "isESM": true,
1108
- "relativePath": [
1109
- "dist",
1110
- "commands",
1111
- "eval-targets",
1112
- "create.js"
1113
- ]
1114
- },
1115
- "eval-targets:list": {
1116
- "aliases": [],
1117
- "args": {},
1118
- "description": "List eval targets",
1119
- "examples": [
1120
- "<%= config.bin %> eval-targets list",
1121
- "<%= config.bin %> eval-targets list --type instruction"
1122
- ],
1123
- "flags": {
1124
- "api-url": {
1125
- "description": "Override API base URL",
1126
- "env": "RULEMETRIC_API_URL",
1127
- "hidden": true,
1128
- "name": "api-url",
1129
- "hasDynamicHelp": false,
1130
- "multiple": false,
1131
- "type": "option"
1132
- },
1133
- "type": {
1134
- "char": "t",
1135
- "description": "Filter by type",
1136
- "name": "type",
1137
- "hasDynamicHelp": false,
1138
- "multiple": false,
1139
- "options": [
1140
- "instruction",
1141
- "skill",
1142
- "prompt",
1143
- "plan"
1144
- ],
1145
- "type": "option"
1146
- }
1147
- },
1148
- "hasDynamicHelp": false,
1149
- "hiddenAliases": [],
1150
- "id": "eval-targets:list",
1151
- "pluginAlias": "@rulemetric/cli",
1152
- "pluginName": "@rulemetric/cli",
1153
- "pluginType": "core",
1154
- "strict": true,
1155
- "enableJsonFlag": false,
1156
- "isESM": true,
1157
- "relativePath": [
1158
- "dist",
1159
- "commands",
1160
- "eval-targets",
1161
- "list.js"
1162
- ]
1163
- },
1164
- "experiments:list": {
1165
- "aliases": [],
1166
- "args": {},
1167
- "description": "Show instructions under randomised test and what each sample supports",
1168
- "examples": [
1169
- "<%= config.bin %> experiments list",
1170
- "<%= config.bin %> experiments list --project /path/to/project",
1171
- "<%= config.bin %> experiments list --all"
994
+ "<%= config.bin %> crons run cron_check_changelog",
995
+ "<%= config.bin %> crons run cron_suggest_instructions --quiet"
1172
996
  ],
1173
997
  "flags": {
1174
998
  "api-url": {
@@ -1180,24 +1004,17 @@
1180
1004
  "multiple": false,
1181
1005
  "type": "option"
1182
1006
  },
1183
- "project": {
1184
- "char": "p",
1185
- "description": "Project path (defaults to current directory)",
1186
- "name": "project",
1187
- "hasDynamicHelp": false,
1188
- "multiple": false,
1189
- "type": "option"
1190
- },
1191
- "all": {
1192
- "description": "Every project, not just this one",
1193
- "name": "all",
1007
+ "quiet": {
1008
+ "char": "q",
1009
+ "description": "Suppress per-line log output; print summary only",
1010
+ "name": "quiet",
1194
1011
  "allowNo": false,
1195
1012
  "type": "boolean"
1196
1013
  }
1197
1014
  },
1198
1015
  "hasDynamicHelp": false,
1199
1016
  "hiddenAliases": [],
1200
- "id": "experiments:list",
1017
+ "id": "crons:run",
1201
1018
  "pluginAlias": "@rulemetric/cli",
1202
1019
  "pluginName": "@rulemetric/cli",
1203
1020
  "pluginType": "core",
@@ -1207,8 +1024,8 @@
1207
1024
  "relativePath": [
1208
1025
  "dist",
1209
1026
  "commands",
1210
- "experiments",
1211
- "list.js"
1027
+ "crons",
1028
+ "run.js"
1212
1029
  ]
1213
1030
  },
1214
1031
  "evals:agent": {
@@ -1945,6 +1762,189 @@
1945
1762
  "validate-judge.js"
1946
1763
  ]
1947
1764
  },
1765
+ "experiments:list": {
1766
+ "aliases": [],
1767
+ "args": {},
1768
+ "description": "Show instructions under randomised test and what each sample supports",
1769
+ "examples": [
1770
+ "<%= config.bin %> experiments list",
1771
+ "<%= config.bin %> experiments list --project /path/to/project",
1772
+ "<%= config.bin %> experiments list --all"
1773
+ ],
1774
+ "flags": {
1775
+ "api-url": {
1776
+ "description": "Override API base URL",
1777
+ "env": "RULEMETRIC_API_URL",
1778
+ "hidden": true,
1779
+ "name": "api-url",
1780
+ "hasDynamicHelp": false,
1781
+ "multiple": false,
1782
+ "type": "option"
1783
+ },
1784
+ "project": {
1785
+ "char": "p",
1786
+ "description": "Project path (defaults to current directory)",
1787
+ "name": "project",
1788
+ "hasDynamicHelp": false,
1789
+ "multiple": false,
1790
+ "type": "option"
1791
+ },
1792
+ "all": {
1793
+ "description": "Every project, not just this one",
1794
+ "name": "all",
1795
+ "allowNo": false,
1796
+ "type": "boolean"
1797
+ }
1798
+ },
1799
+ "hasDynamicHelp": false,
1800
+ "hiddenAliases": [],
1801
+ "id": "experiments:list",
1802
+ "pluginAlias": "@rulemetric/cli",
1803
+ "pluginName": "@rulemetric/cli",
1804
+ "pluginType": "core",
1805
+ "strict": true,
1806
+ "enableJsonFlag": false,
1807
+ "isESM": true,
1808
+ "relativePath": [
1809
+ "dist",
1810
+ "commands",
1811
+ "experiments",
1812
+ "list.js"
1813
+ ]
1814
+ },
1815
+ "eval-targets:create": {
1816
+ "aliases": [],
1817
+ "args": {},
1818
+ "description": "Create an eval target (instruction, skill, prompt, or plan to test)",
1819
+ "examples": [
1820
+ "<%= config.bin %> eval-targets create --name my-rules --type instruction --file ./CLAUDE.md",
1821
+ "<%= config.bin %> eval-targets create --name my-prompt --type prompt --content \"Always use TypeScript\""
1822
+ ],
1823
+ "flags": {
1824
+ "api-url": {
1825
+ "description": "Override API base URL",
1826
+ "env": "RULEMETRIC_API_URL",
1827
+ "hidden": true,
1828
+ "name": "api-url",
1829
+ "hasDynamicHelp": false,
1830
+ "multiple": false,
1831
+ "type": "option"
1832
+ },
1833
+ "name": {
1834
+ "char": "n",
1835
+ "description": "Name for the eval target",
1836
+ "name": "name",
1837
+ "required": true,
1838
+ "hasDynamicHelp": false,
1839
+ "multiple": false,
1840
+ "type": "option"
1841
+ },
1842
+ "type": {
1843
+ "char": "t",
1844
+ "description": "Target type",
1845
+ "name": "type",
1846
+ "required": true,
1847
+ "hasDynamicHelp": false,
1848
+ "multiple": false,
1849
+ "options": [
1850
+ "instruction",
1851
+ "skill",
1852
+ "prompt",
1853
+ "plan"
1854
+ ],
1855
+ "type": "option"
1856
+ },
1857
+ "file": {
1858
+ "char": "f",
1859
+ "description": "Path to content file",
1860
+ "name": "file",
1861
+ "hasDynamicHelp": false,
1862
+ "multiple": false,
1863
+ "type": "option"
1864
+ },
1865
+ "content": {
1866
+ "char": "c",
1867
+ "description": "Content string (alternative to --file)",
1868
+ "name": "content",
1869
+ "hasDynamicHelp": false,
1870
+ "multiple": false,
1871
+ "type": "option"
1872
+ },
1873
+ "description": {
1874
+ "char": "d",
1875
+ "description": "Description of the target",
1876
+ "name": "description",
1877
+ "default": "",
1878
+ "hasDynamicHelp": false,
1879
+ "multiple": false,
1880
+ "type": "option"
1881
+ }
1882
+ },
1883
+ "hasDynamicHelp": false,
1884
+ "hiddenAliases": [],
1885
+ "id": "eval-targets:create",
1886
+ "pluginAlias": "@rulemetric/cli",
1887
+ "pluginName": "@rulemetric/cli",
1888
+ "pluginType": "core",
1889
+ "strict": true,
1890
+ "enableJsonFlag": false,
1891
+ "isESM": true,
1892
+ "relativePath": [
1893
+ "dist",
1894
+ "commands",
1895
+ "eval-targets",
1896
+ "create.js"
1897
+ ]
1898
+ },
1899
+ "eval-targets:list": {
1900
+ "aliases": [],
1901
+ "args": {},
1902
+ "description": "List eval targets",
1903
+ "examples": [
1904
+ "<%= config.bin %> eval-targets list",
1905
+ "<%= config.bin %> eval-targets list --type instruction"
1906
+ ],
1907
+ "flags": {
1908
+ "api-url": {
1909
+ "description": "Override API base URL",
1910
+ "env": "RULEMETRIC_API_URL",
1911
+ "hidden": true,
1912
+ "name": "api-url",
1913
+ "hasDynamicHelp": false,
1914
+ "multiple": false,
1915
+ "type": "option"
1916
+ },
1917
+ "type": {
1918
+ "char": "t",
1919
+ "description": "Filter by type",
1920
+ "name": "type",
1921
+ "hasDynamicHelp": false,
1922
+ "multiple": false,
1923
+ "options": [
1924
+ "instruction",
1925
+ "skill",
1926
+ "prompt",
1927
+ "plan"
1928
+ ],
1929
+ "type": "option"
1930
+ }
1931
+ },
1932
+ "hasDynamicHelp": false,
1933
+ "hiddenAliases": [],
1934
+ "id": "eval-targets:list",
1935
+ "pluginAlias": "@rulemetric/cli",
1936
+ "pluginName": "@rulemetric/cli",
1937
+ "pluginType": "core",
1938
+ "strict": true,
1939
+ "enableJsonFlag": false,
1940
+ "isESM": true,
1941
+ "relativePath": [
1942
+ "dist",
1943
+ "commands",
1944
+ "eval-targets",
1945
+ "list.js"
1946
+ ]
1947
+ },
1948
1948
  "gateway:ensure": {
1949
1949
  "aliases": [],
1950
1950
  "args": {},
@@ -2264,6 +2264,56 @@
2264
2264
  "create.js"
2265
2265
  ]
2266
2266
  },
2267
+ "instructions:dedupe": {
2268
+ "aliases": [],
2269
+ "args": {},
2270
+ "description": "Report instructions in this project that repeat each other in different words",
2271
+ "examples": [
2272
+ "<%= config.bin %> instructions dedupe",
2273
+ "<%= config.bin %> instructions dedupe --dir apps/cli"
2274
+ ],
2275
+ "flags": {
2276
+ "api-url": {
2277
+ "description": "Override API base URL",
2278
+ "env": "RULEMETRIC_API_URL",
2279
+ "hidden": true,
2280
+ "name": "api-url",
2281
+ "hasDynamicHelp": false,
2282
+ "multiple": false,
2283
+ "type": "option"
2284
+ },
2285
+ "dir": {
2286
+ "description": "Directory whose CLAUDE.md to check (ancestors are included)",
2287
+ "name": "dir",
2288
+ "default": ".",
2289
+ "hasDynamicHelp": false,
2290
+ "multiple": false,
2291
+ "type": "option"
2292
+ },
2293
+ "threshold": {
2294
+ "description": "Similarity floor 0-1 for calling two asks the same (default 0.3)",
2295
+ "name": "threshold",
2296
+ "hasDynamicHelp": false,
2297
+ "multiple": false,
2298
+ "type": "option"
2299
+ }
2300
+ },
2301
+ "hasDynamicHelp": false,
2302
+ "hiddenAliases": [],
2303
+ "id": "instructions:dedupe",
2304
+ "pluginAlias": "@rulemetric/cli",
2305
+ "pluginName": "@rulemetric/cli",
2306
+ "pluginType": "core",
2307
+ "strict": true,
2308
+ "enableJsonFlag": false,
2309
+ "isESM": true,
2310
+ "relativePath": [
2311
+ "dist",
2312
+ "commands",
2313
+ "instructions",
2314
+ "dedupe.js"
2315
+ ]
2316
+ },
2267
2317
  "instructions:delete": {
2268
2318
  "aliases": [],
2269
2319
  "args": {
@@ -4655,6 +4705,12 @@
4655
4705
  "hasDynamicHelp": false,
4656
4706
  "multiple": false,
4657
4707
  "type": "option"
4708
+ },
4709
+ "force": {
4710
+ "description": "Add the rule even if this project already says the same thing in other words",
4711
+ "name": "force",
4712
+ "allowNo": false,
4713
+ "type": "boolean"
4658
4714
  }
4659
4715
  },
4660
4716
  "hasDynamicHelp": false,
@@ -4893,5 +4949,5 @@
4893
4949
  ]
4894
4950
  }
4895
4951
  },
4896
- "version": "0.9.0"
4952
+ "version": "0.10.0"
4897
4953
  }