@rulemetric/cli 0.17.3 → 0.18.1
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/chunk-A6JUIZ3H.js +1 -0
- package/dist/{chunk-TG4C4ENM.js → chunk-CXENLSMR.js} +1 -1
- package/dist/{chunk-BTKVLLV2.js → chunk-FLJTAD2R.js} +1 -1
- package/dist/chunk-I2FPXRA6.js +2 -0
- package/dist/{chunk-MGT5FZJ4.js → chunk-L5ILEWHH.js} +1 -1
- package/dist/{chunk-YLEXR62G.js → chunk-LSZ32DUR.js} +5 -5
- package/dist/{chunk-JLX2D3QL.js → chunk-NVOYP4HX.js} +1 -1
- package/dist/{chunk-GBSIOACS.js → chunk-O7ZQEKND.js} +19 -19
- package/dist/{chunk-MBP5OJKE.js → chunk-RAMQVEJB.js} +1 -1
- package/dist/chunk-YALBJNHO.js +1 -0
- package/dist/{chunk-EQ2O6DSN.js → chunk-YZQZD2E6.js} +1 -1
- package/dist/chunk-ZFEDOPRU.js +7 -0
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/evals/agent.js +1 -1
- package/dist/commands/evals/refine-cases.js +1 -1
- package/dist/commands/hooks/run.js +3 -3
- package/dist/commands/launcher.js +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/dashboard/Dashboard.js +1 -1
- package/dist/dashboard/data.js +1 -1
- package/dist/dashboard/launcher/LauncherOverlay.js +1 -1
- package/dist/dashboard/panels/telemetry.js +1 -0
- package/dist/dashboard/telemetry.js +1 -0
- package/dist/lib/agent-loop.js +1 -1
- package/dist/lib/evolution-enrolment.js +1 -1
- package/dist/lib/jobs/handlers/cron-instruction-evolution.js +1 -1
- package/dist/lib/jobs/handlers/cron-refine-cases.js +1 -1
- package/dist/lib/jobs/handlers/process-changelog.js +1 -1
- package/dist/lib/jobs/handlers/process-insights.js +1 -1
- package/dist/lib/manual-tasks.js +1 -1
- package/dist/lib/refine-cases.js +1 -1
- package/dist/lib/session-updates.js +1 -0
- package/dist/lib/setup-steps.js +1 -1
- package/oclif.manifest.json +228 -255
- package/package.json +6 -6
- package/dist/chunk-GBMF3TP6.js +0 -1
- package/dist/chunk-OWXGXKK7.js +0 -2
- package/dist/chunk-TBLUJ6AW.js +0 -1
- package/dist/dashboard/panels/instructions.js +0 -1
package/oclif.manifest.json
CHANGED
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
"description": "Interactive TUI dashboard showing session analytics, outcomes, friction, and insights",
|
|
7
7
|
"examples": [
|
|
8
8
|
"<%= config.bin %> dashboard",
|
|
9
|
-
"<%= config.bin %> dashboard --period 30days"
|
|
10
|
-
"<%= config.bin %> dashboard --launcher"
|
|
9
|
+
"<%= config.bin %> dashboard --period 30days"
|
|
11
10
|
],
|
|
12
11
|
"flags": {
|
|
13
12
|
"api-url": {
|
|
@@ -34,13 +33,6 @@
|
|
|
34
33
|
"all"
|
|
35
34
|
],
|
|
36
35
|
"type": "option"
|
|
37
|
-
},
|
|
38
|
-
"launcher": {
|
|
39
|
-
"char": "l",
|
|
40
|
-
"description": "Open the launcher overlay immediately",
|
|
41
|
-
"name": "launcher",
|
|
42
|
-
"allowNo": false,
|
|
43
|
-
"type": "boolean"
|
|
44
36
|
}
|
|
45
37
|
},
|
|
46
38
|
"hasDynamicHelp": false,
|
|
@@ -94,11 +86,7 @@
|
|
|
94
86
|
"launcher": {
|
|
95
87
|
"aliases": [],
|
|
96
88
|
"args": {},
|
|
97
|
-
"description": "
|
|
98
|
-
"examples": [
|
|
99
|
-
"<%= config.bin %> launcher",
|
|
100
|
-
"<%= config.bin %> launcher --period today"
|
|
101
|
-
],
|
|
89
|
+
"description": "Manual session launching is currently unavailable",
|
|
102
90
|
"flags": {
|
|
103
91
|
"api-url": {
|
|
104
92
|
"description": "Override API base URL",
|
|
@@ -108,25 +96,10 @@
|
|
|
108
96
|
"hasDynamicHelp": false,
|
|
109
97
|
"multiple": false,
|
|
110
98
|
"type": "option"
|
|
111
|
-
},
|
|
112
|
-
"period": {
|
|
113
|
-
"char": "p",
|
|
114
|
-
"description": "Initial time period for the dashboard panels behind the overlay",
|
|
115
|
-
"name": "period",
|
|
116
|
-
"default": "week",
|
|
117
|
-
"hasDynamicHelp": false,
|
|
118
|
-
"multiple": false,
|
|
119
|
-
"options": [
|
|
120
|
-
"today",
|
|
121
|
-
"week",
|
|
122
|
-
"30days",
|
|
123
|
-
"month",
|
|
124
|
-
"all"
|
|
125
|
-
],
|
|
126
|
-
"type": "option"
|
|
127
99
|
}
|
|
128
100
|
},
|
|
129
101
|
"hasDynamicHelp": false,
|
|
102
|
+
"hidden": true,
|
|
130
103
|
"hiddenAliases": [],
|
|
131
104
|
"id": "launcher",
|
|
132
105
|
"pluginAlias": "@rulemetric/cli",
|
|
@@ -284,96 +257,6 @@
|
|
|
284
257
|
"backfill.js"
|
|
285
258
|
]
|
|
286
259
|
},
|
|
287
|
-
"capture:scope": {
|
|
288
|
-
"aliases": [],
|
|
289
|
-
"args": {},
|
|
290
|
-
"description": "Show or set which projects RuleMetric captures — the Codex sweep and hook-driven sessions each have their own scope",
|
|
291
|
-
"examples": [
|
|
292
|
-
"<%= config.bin %> <%= command.id %>",
|
|
293
|
-
"<%= config.bin %> <%= command.id %> --add ~/work/client-a --add ~/work/client-b",
|
|
294
|
-
"<%= config.bin %> <%= command.id %> --tool hooks --add ~/work/client-a",
|
|
295
|
-
"<%= config.bin %> <%= command.id %> --tool hooks --off",
|
|
296
|
-
"<%= config.bin %> <%= command.id %> --remove ~/work/client-a",
|
|
297
|
-
"<%= config.bin %> <%= command.id %> --off",
|
|
298
|
-
"<%= config.bin %> <%= command.id %> --all"
|
|
299
|
-
],
|
|
300
|
-
"flags": {
|
|
301
|
-
"api-url": {
|
|
302
|
-
"description": "Override API base URL",
|
|
303
|
-
"env": "RULEMETRIC_API_URL",
|
|
304
|
-
"hidden": true,
|
|
305
|
-
"name": "api-url",
|
|
306
|
-
"hasDynamicHelp": false,
|
|
307
|
-
"multiple": false,
|
|
308
|
-
"type": "option"
|
|
309
|
-
},
|
|
310
|
-
"tool": {
|
|
311
|
-
"description": "Which capture path to edit: \"codex\" (the worker transcript sweep, the default) or \"hooks\" (Claude Code / Cursor / Copilot / Antigravity hook sessions).",
|
|
312
|
-
"name": "tool",
|
|
313
|
-
"default": "codex",
|
|
314
|
-
"hasDynamicHelp": false,
|
|
315
|
-
"multiple": false,
|
|
316
|
-
"options": [
|
|
317
|
-
"codex",
|
|
318
|
-
"hooks"
|
|
319
|
-
],
|
|
320
|
-
"type": "option"
|
|
321
|
-
},
|
|
322
|
-
"add": {
|
|
323
|
-
"description": "Capture sessions under this path (repeatable). Implies an allowlist.",
|
|
324
|
-
"name": "add",
|
|
325
|
-
"hasDynamicHelp": false,
|
|
326
|
-
"multiple": true,
|
|
327
|
-
"type": "option"
|
|
328
|
-
},
|
|
329
|
-
"remove": {
|
|
330
|
-
"description": "Stop capturing under this path (repeatable).",
|
|
331
|
-
"name": "remove",
|
|
332
|
-
"hasDynamicHelp": false,
|
|
333
|
-
"multiple": true,
|
|
334
|
-
"type": "option"
|
|
335
|
-
},
|
|
336
|
-
"off": {
|
|
337
|
-
"description": "Turn this capture path off entirely.",
|
|
338
|
-
"exclusive": [
|
|
339
|
-
"all"
|
|
340
|
-
],
|
|
341
|
-
"name": "off",
|
|
342
|
-
"allowNo": false,
|
|
343
|
-
"type": "boolean"
|
|
344
|
-
},
|
|
345
|
-
"all": {
|
|
346
|
-
"description": "Capture every project (the default).",
|
|
347
|
-
"exclusive": [
|
|
348
|
-
"off"
|
|
349
|
-
],
|
|
350
|
-
"name": "all",
|
|
351
|
-
"allowNo": false,
|
|
352
|
-
"type": "boolean"
|
|
353
|
-
},
|
|
354
|
-
"clear": {
|
|
355
|
-
"description": "Remove this scope, restoring the default.",
|
|
356
|
-
"name": "clear",
|
|
357
|
-
"allowNo": false,
|
|
358
|
-
"type": "boolean"
|
|
359
|
-
}
|
|
360
|
-
},
|
|
361
|
-
"hasDynamicHelp": false,
|
|
362
|
-
"hiddenAliases": [],
|
|
363
|
-
"id": "capture:scope",
|
|
364
|
-
"pluginAlias": "@rulemetric/cli",
|
|
365
|
-
"pluginName": "@rulemetric/cli",
|
|
366
|
-
"pluginType": "core",
|
|
367
|
-
"strict": true,
|
|
368
|
-
"enableJsonFlag": false,
|
|
369
|
-
"isESM": true,
|
|
370
|
-
"relativePath": [
|
|
371
|
-
"dist",
|
|
372
|
-
"commands",
|
|
373
|
-
"capture",
|
|
374
|
-
"scope.js"
|
|
375
|
-
]
|
|
376
|
-
},
|
|
377
260
|
"auth:create-key": {
|
|
378
261
|
"aliases": [],
|
|
379
262
|
"args": {},
|
|
@@ -646,6 +529,96 @@
|
|
|
646
529
|
"status.js"
|
|
647
530
|
]
|
|
648
531
|
},
|
|
532
|
+
"capture:scope": {
|
|
533
|
+
"aliases": [],
|
|
534
|
+
"args": {},
|
|
535
|
+
"description": "Show or set which projects RuleMetric captures — the Codex sweep and hook-driven sessions each have their own scope",
|
|
536
|
+
"examples": [
|
|
537
|
+
"<%= config.bin %> <%= command.id %>",
|
|
538
|
+
"<%= config.bin %> <%= command.id %> --add ~/work/client-a --add ~/work/client-b",
|
|
539
|
+
"<%= config.bin %> <%= command.id %> --tool hooks --add ~/work/client-a",
|
|
540
|
+
"<%= config.bin %> <%= command.id %> --tool hooks --off",
|
|
541
|
+
"<%= config.bin %> <%= command.id %> --remove ~/work/client-a",
|
|
542
|
+
"<%= config.bin %> <%= command.id %> --off",
|
|
543
|
+
"<%= config.bin %> <%= command.id %> --all"
|
|
544
|
+
],
|
|
545
|
+
"flags": {
|
|
546
|
+
"api-url": {
|
|
547
|
+
"description": "Override API base URL",
|
|
548
|
+
"env": "RULEMETRIC_API_URL",
|
|
549
|
+
"hidden": true,
|
|
550
|
+
"name": "api-url",
|
|
551
|
+
"hasDynamicHelp": false,
|
|
552
|
+
"multiple": false,
|
|
553
|
+
"type": "option"
|
|
554
|
+
},
|
|
555
|
+
"tool": {
|
|
556
|
+
"description": "Which capture path to edit: \"codex\" (the worker transcript sweep, the default) or \"hooks\" (Claude Code / Cursor / Copilot / Antigravity hook sessions).",
|
|
557
|
+
"name": "tool",
|
|
558
|
+
"default": "codex",
|
|
559
|
+
"hasDynamicHelp": false,
|
|
560
|
+
"multiple": false,
|
|
561
|
+
"options": [
|
|
562
|
+
"codex",
|
|
563
|
+
"hooks"
|
|
564
|
+
],
|
|
565
|
+
"type": "option"
|
|
566
|
+
},
|
|
567
|
+
"add": {
|
|
568
|
+
"description": "Capture sessions under this path (repeatable). Implies an allowlist.",
|
|
569
|
+
"name": "add",
|
|
570
|
+
"hasDynamicHelp": false,
|
|
571
|
+
"multiple": true,
|
|
572
|
+
"type": "option"
|
|
573
|
+
},
|
|
574
|
+
"remove": {
|
|
575
|
+
"description": "Stop capturing under this path (repeatable).",
|
|
576
|
+
"name": "remove",
|
|
577
|
+
"hasDynamicHelp": false,
|
|
578
|
+
"multiple": true,
|
|
579
|
+
"type": "option"
|
|
580
|
+
},
|
|
581
|
+
"off": {
|
|
582
|
+
"description": "Turn this capture path off entirely.",
|
|
583
|
+
"exclusive": [
|
|
584
|
+
"all"
|
|
585
|
+
],
|
|
586
|
+
"name": "off",
|
|
587
|
+
"allowNo": false,
|
|
588
|
+
"type": "boolean"
|
|
589
|
+
},
|
|
590
|
+
"all": {
|
|
591
|
+
"description": "Capture every project (the default).",
|
|
592
|
+
"exclusive": [
|
|
593
|
+
"off"
|
|
594
|
+
],
|
|
595
|
+
"name": "all",
|
|
596
|
+
"allowNo": false,
|
|
597
|
+
"type": "boolean"
|
|
598
|
+
},
|
|
599
|
+
"clear": {
|
|
600
|
+
"description": "Remove this scope, restoring the default.",
|
|
601
|
+
"name": "clear",
|
|
602
|
+
"allowNo": false,
|
|
603
|
+
"type": "boolean"
|
|
604
|
+
}
|
|
605
|
+
},
|
|
606
|
+
"hasDynamicHelp": false,
|
|
607
|
+
"hiddenAliases": [],
|
|
608
|
+
"id": "capture:scope",
|
|
609
|
+
"pluginAlias": "@rulemetric/cli",
|
|
610
|
+
"pluginName": "@rulemetric/cli",
|
|
611
|
+
"pluginType": "core",
|
|
612
|
+
"strict": true,
|
|
613
|
+
"enableJsonFlag": false,
|
|
614
|
+
"isESM": true,
|
|
615
|
+
"relativePath": [
|
|
616
|
+
"dist",
|
|
617
|
+
"commands",
|
|
618
|
+
"capture",
|
|
619
|
+
"scope.js"
|
|
620
|
+
]
|
|
621
|
+
},
|
|
649
622
|
"catalog": {
|
|
650
623
|
"aliases": [],
|
|
651
624
|
"args": {},
|
|
@@ -3722,6 +3695,140 @@
|
|
|
3722
3695
|
"tail-transcript.js"
|
|
3723
3696
|
]
|
|
3724
3697
|
},
|
|
3698
|
+
"service:install": {
|
|
3699
|
+
"aliases": [],
|
|
3700
|
+
"args": {},
|
|
3701
|
+
"description": "Install RuleMetric services. Default (in a repo checkout): API + worker + gateway + capture proxy as launchd agents. With --worker-only: just the job worker, targeting the globally-installed CLI — no repo, no build (works from `npm i -g @rulemetric/cli`, macOS launchd or Linux systemd).",
|
|
3702
|
+
"examples": [
|
|
3703
|
+
"<%= config.bin %> service install",
|
|
3704
|
+
"<%= config.bin %> service install --port 3000",
|
|
3705
|
+
"<%= config.bin %> service install --skip-build",
|
|
3706
|
+
"<%= config.bin %> service install --no-proxy",
|
|
3707
|
+
"<%= config.bin %> service install --worker-only"
|
|
3708
|
+
],
|
|
3709
|
+
"flags": {
|
|
3710
|
+
"api-url": {
|
|
3711
|
+
"description": "Override API base URL",
|
|
3712
|
+
"env": "RULEMETRIC_API_URL",
|
|
3713
|
+
"hidden": true,
|
|
3714
|
+
"name": "api-url",
|
|
3715
|
+
"hasDynamicHelp": false,
|
|
3716
|
+
"multiple": false,
|
|
3717
|
+
"type": "option"
|
|
3718
|
+
},
|
|
3719
|
+
"port": {
|
|
3720
|
+
"char": "p",
|
|
3721
|
+
"description": "API server port",
|
|
3722
|
+
"name": "port",
|
|
3723
|
+
"default": 3000,
|
|
3724
|
+
"hasDynamicHelp": false,
|
|
3725
|
+
"multiple": false,
|
|
3726
|
+
"type": "option"
|
|
3727
|
+
},
|
|
3728
|
+
"force": {
|
|
3729
|
+
"char": "f",
|
|
3730
|
+
"description": "Overwrite existing service configuration and reclaim conflicting ports",
|
|
3731
|
+
"name": "force",
|
|
3732
|
+
"allowNo": false,
|
|
3733
|
+
"type": "boolean"
|
|
3734
|
+
},
|
|
3735
|
+
"skip-build": {
|
|
3736
|
+
"description": "Skip the pre-install workspace build (API/web/cli dist must already exist)",
|
|
3737
|
+
"name": "skip-build",
|
|
3738
|
+
"allowNo": false,
|
|
3739
|
+
"type": "boolean"
|
|
3740
|
+
},
|
|
3741
|
+
"no-proxy": {
|
|
3742
|
+
"description": "Skip gateway + mitmproxy plists (just install API + worker)",
|
|
3743
|
+
"name": "no-proxy",
|
|
3744
|
+
"allowNo": false,
|
|
3745
|
+
"type": "boolean"
|
|
3746
|
+
},
|
|
3747
|
+
"worker-only": {
|
|
3748
|
+
"description": "Install ONLY the job worker as a persistent service, targeting the globally-installed CLI (no repo checkout, no build, no API/gateway/proxy). Sources auth from ~/.config/rulemetric/env. macOS (launchd) + Linux (systemd --user).",
|
|
3749
|
+
"name": "worker-only",
|
|
3750
|
+
"allowNo": false,
|
|
3751
|
+
"type": "boolean"
|
|
3752
|
+
}
|
|
3753
|
+
},
|
|
3754
|
+
"hasDynamicHelp": false,
|
|
3755
|
+
"hiddenAliases": [],
|
|
3756
|
+
"id": "service:install",
|
|
3757
|
+
"pluginAlias": "@rulemetric/cli",
|
|
3758
|
+
"pluginName": "@rulemetric/cli",
|
|
3759
|
+
"pluginType": "core",
|
|
3760
|
+
"strict": true,
|
|
3761
|
+
"enableJsonFlag": false,
|
|
3762
|
+
"isESM": true,
|
|
3763
|
+
"relativePath": [
|
|
3764
|
+
"dist",
|
|
3765
|
+
"commands",
|
|
3766
|
+
"service",
|
|
3767
|
+
"install.js"
|
|
3768
|
+
]
|
|
3769
|
+
},
|
|
3770
|
+
"service:status": {
|
|
3771
|
+
"aliases": [],
|
|
3772
|
+
"args": {},
|
|
3773
|
+
"description": "Check the status of installed RuleMetric services (launchd on macOS; systemd --user worker on Linux)",
|
|
3774
|
+
"flags": {
|
|
3775
|
+
"api-url": {
|
|
3776
|
+
"description": "Override API base URL",
|
|
3777
|
+
"env": "RULEMETRIC_API_URL",
|
|
3778
|
+
"hidden": true,
|
|
3779
|
+
"name": "api-url",
|
|
3780
|
+
"hasDynamicHelp": false,
|
|
3781
|
+
"multiple": false,
|
|
3782
|
+
"type": "option"
|
|
3783
|
+
}
|
|
3784
|
+
},
|
|
3785
|
+
"hasDynamicHelp": false,
|
|
3786
|
+
"hiddenAliases": [],
|
|
3787
|
+
"id": "service:status",
|
|
3788
|
+
"pluginAlias": "@rulemetric/cli",
|
|
3789
|
+
"pluginName": "@rulemetric/cli",
|
|
3790
|
+
"pluginType": "core",
|
|
3791
|
+
"strict": true,
|
|
3792
|
+
"enableJsonFlag": false,
|
|
3793
|
+
"isESM": true,
|
|
3794
|
+
"relativePath": [
|
|
3795
|
+
"dist",
|
|
3796
|
+
"commands",
|
|
3797
|
+
"service",
|
|
3798
|
+
"status.js"
|
|
3799
|
+
]
|
|
3800
|
+
},
|
|
3801
|
+
"service:uninstall": {
|
|
3802
|
+
"aliases": [],
|
|
3803
|
+
"args": {},
|
|
3804
|
+
"description": "Remove RuleMetric services (macOS launchd: API/worker/gateway/proxy; Linux: the --worker-only systemd unit)",
|
|
3805
|
+
"flags": {
|
|
3806
|
+
"api-url": {
|
|
3807
|
+
"description": "Override API base URL",
|
|
3808
|
+
"env": "RULEMETRIC_API_URL",
|
|
3809
|
+
"hidden": true,
|
|
3810
|
+
"name": "api-url",
|
|
3811
|
+
"hasDynamicHelp": false,
|
|
3812
|
+
"multiple": false,
|
|
3813
|
+
"type": "option"
|
|
3814
|
+
}
|
|
3815
|
+
},
|
|
3816
|
+
"hasDynamicHelp": false,
|
|
3817
|
+
"hiddenAliases": [],
|
|
3818
|
+
"id": "service:uninstall",
|
|
3819
|
+
"pluginAlias": "@rulemetric/cli",
|
|
3820
|
+
"pluginName": "@rulemetric/cli",
|
|
3821
|
+
"pluginType": "core",
|
|
3822
|
+
"strict": true,
|
|
3823
|
+
"enableJsonFlag": false,
|
|
3824
|
+
"isESM": true,
|
|
3825
|
+
"relativePath": [
|
|
3826
|
+
"dist",
|
|
3827
|
+
"commands",
|
|
3828
|
+
"service",
|
|
3829
|
+
"uninstall.js"
|
|
3830
|
+
]
|
|
3831
|
+
},
|
|
3725
3832
|
"sessions:analyze": {
|
|
3726
3833
|
"aliases": [],
|
|
3727
3834
|
"args": {
|
|
@@ -4003,140 +4110,6 @@
|
|
|
4003
4110
|
"start.js"
|
|
4004
4111
|
]
|
|
4005
4112
|
},
|
|
4006
|
-
"service:install": {
|
|
4007
|
-
"aliases": [],
|
|
4008
|
-
"args": {},
|
|
4009
|
-
"description": "Install RuleMetric services. Default (in a repo checkout): API + worker + gateway + capture proxy as launchd agents. With --worker-only: just the job worker, targeting the globally-installed CLI — no repo, no build (works from `npm i -g @rulemetric/cli`, macOS launchd or Linux systemd).",
|
|
4010
|
-
"examples": [
|
|
4011
|
-
"<%= config.bin %> service install",
|
|
4012
|
-
"<%= config.bin %> service install --port 3000",
|
|
4013
|
-
"<%= config.bin %> service install --skip-build",
|
|
4014
|
-
"<%= config.bin %> service install --no-proxy",
|
|
4015
|
-
"<%= config.bin %> service install --worker-only"
|
|
4016
|
-
],
|
|
4017
|
-
"flags": {
|
|
4018
|
-
"api-url": {
|
|
4019
|
-
"description": "Override API base URL",
|
|
4020
|
-
"env": "RULEMETRIC_API_URL",
|
|
4021
|
-
"hidden": true,
|
|
4022
|
-
"name": "api-url",
|
|
4023
|
-
"hasDynamicHelp": false,
|
|
4024
|
-
"multiple": false,
|
|
4025
|
-
"type": "option"
|
|
4026
|
-
},
|
|
4027
|
-
"port": {
|
|
4028
|
-
"char": "p",
|
|
4029
|
-
"description": "API server port",
|
|
4030
|
-
"name": "port",
|
|
4031
|
-
"default": 3000,
|
|
4032
|
-
"hasDynamicHelp": false,
|
|
4033
|
-
"multiple": false,
|
|
4034
|
-
"type": "option"
|
|
4035
|
-
},
|
|
4036
|
-
"force": {
|
|
4037
|
-
"char": "f",
|
|
4038
|
-
"description": "Overwrite existing service configuration and reclaim conflicting ports",
|
|
4039
|
-
"name": "force",
|
|
4040
|
-
"allowNo": false,
|
|
4041
|
-
"type": "boolean"
|
|
4042
|
-
},
|
|
4043
|
-
"skip-build": {
|
|
4044
|
-
"description": "Skip the pre-install workspace build (API/web/cli dist must already exist)",
|
|
4045
|
-
"name": "skip-build",
|
|
4046
|
-
"allowNo": false,
|
|
4047
|
-
"type": "boolean"
|
|
4048
|
-
},
|
|
4049
|
-
"no-proxy": {
|
|
4050
|
-
"description": "Skip gateway + mitmproxy plists (just install API + worker)",
|
|
4051
|
-
"name": "no-proxy",
|
|
4052
|
-
"allowNo": false,
|
|
4053
|
-
"type": "boolean"
|
|
4054
|
-
},
|
|
4055
|
-
"worker-only": {
|
|
4056
|
-
"description": "Install ONLY the job worker as a persistent service, targeting the globally-installed CLI (no repo checkout, no build, no API/gateway/proxy). Sources auth from ~/.config/rulemetric/env. macOS (launchd) + Linux (systemd --user).",
|
|
4057
|
-
"name": "worker-only",
|
|
4058
|
-
"allowNo": false,
|
|
4059
|
-
"type": "boolean"
|
|
4060
|
-
}
|
|
4061
|
-
},
|
|
4062
|
-
"hasDynamicHelp": false,
|
|
4063
|
-
"hiddenAliases": [],
|
|
4064
|
-
"id": "service:install",
|
|
4065
|
-
"pluginAlias": "@rulemetric/cli",
|
|
4066
|
-
"pluginName": "@rulemetric/cli",
|
|
4067
|
-
"pluginType": "core",
|
|
4068
|
-
"strict": true,
|
|
4069
|
-
"enableJsonFlag": false,
|
|
4070
|
-
"isESM": true,
|
|
4071
|
-
"relativePath": [
|
|
4072
|
-
"dist",
|
|
4073
|
-
"commands",
|
|
4074
|
-
"service",
|
|
4075
|
-
"install.js"
|
|
4076
|
-
]
|
|
4077
|
-
},
|
|
4078
|
-
"service:status": {
|
|
4079
|
-
"aliases": [],
|
|
4080
|
-
"args": {},
|
|
4081
|
-
"description": "Check the status of installed RuleMetric services (launchd on macOS; systemd --user worker on Linux)",
|
|
4082
|
-
"flags": {
|
|
4083
|
-
"api-url": {
|
|
4084
|
-
"description": "Override API base URL",
|
|
4085
|
-
"env": "RULEMETRIC_API_URL",
|
|
4086
|
-
"hidden": true,
|
|
4087
|
-
"name": "api-url",
|
|
4088
|
-
"hasDynamicHelp": false,
|
|
4089
|
-
"multiple": false,
|
|
4090
|
-
"type": "option"
|
|
4091
|
-
}
|
|
4092
|
-
},
|
|
4093
|
-
"hasDynamicHelp": false,
|
|
4094
|
-
"hiddenAliases": [],
|
|
4095
|
-
"id": "service:status",
|
|
4096
|
-
"pluginAlias": "@rulemetric/cli",
|
|
4097
|
-
"pluginName": "@rulemetric/cli",
|
|
4098
|
-
"pluginType": "core",
|
|
4099
|
-
"strict": true,
|
|
4100
|
-
"enableJsonFlag": false,
|
|
4101
|
-
"isESM": true,
|
|
4102
|
-
"relativePath": [
|
|
4103
|
-
"dist",
|
|
4104
|
-
"commands",
|
|
4105
|
-
"service",
|
|
4106
|
-
"status.js"
|
|
4107
|
-
]
|
|
4108
|
-
},
|
|
4109
|
-
"service:uninstall": {
|
|
4110
|
-
"aliases": [],
|
|
4111
|
-
"args": {},
|
|
4112
|
-
"description": "Remove RuleMetric services (macOS launchd: API/worker/gateway/proxy; Linux: the --worker-only systemd unit)",
|
|
4113
|
-
"flags": {
|
|
4114
|
-
"api-url": {
|
|
4115
|
-
"description": "Override API base URL",
|
|
4116
|
-
"env": "RULEMETRIC_API_URL",
|
|
4117
|
-
"hidden": true,
|
|
4118
|
-
"name": "api-url",
|
|
4119
|
-
"hasDynamicHelp": false,
|
|
4120
|
-
"multiple": false,
|
|
4121
|
-
"type": "option"
|
|
4122
|
-
}
|
|
4123
|
-
},
|
|
4124
|
-
"hasDynamicHelp": false,
|
|
4125
|
-
"hiddenAliases": [],
|
|
4126
|
-
"id": "service:uninstall",
|
|
4127
|
-
"pluginAlias": "@rulemetric/cli",
|
|
4128
|
-
"pluginName": "@rulemetric/cli",
|
|
4129
|
-
"pluginType": "core",
|
|
4130
|
-
"strict": true,
|
|
4131
|
-
"enableJsonFlag": false,
|
|
4132
|
-
"isESM": true,
|
|
4133
|
-
"relativePath": [
|
|
4134
|
-
"dist",
|
|
4135
|
-
"commands",
|
|
4136
|
-
"service",
|
|
4137
|
-
"uninstall.js"
|
|
4138
|
-
]
|
|
4139
|
-
},
|
|
4140
4113
|
"skills:export-approved": {
|
|
4141
4114
|
"aliases": [],
|
|
4142
4115
|
"args": {},
|
|
@@ -4842,5 +4815,5 @@
|
|
|
4842
4815
|
]
|
|
4843
4816
|
}
|
|
4844
4817
|
},
|
|
4845
|
-
"version": "0.
|
|
4818
|
+
"version": "0.18.1"
|
|
4846
4819
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rulemetric/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -80,9 +80,9 @@
|
|
|
80
80
|
"postgres": "^3.4.0",
|
|
81
81
|
"react": "^19.0.0",
|
|
82
82
|
"zod": "^3.24.0",
|
|
83
|
-
"@rulemetric/
|
|
84
|
-
"@rulemetric/
|
|
85
|
-
"@rulemetric/skills-registry": "0.
|
|
83
|
+
"@rulemetric/hooks": "0.18.1",
|
|
84
|
+
"@rulemetric/proxy": "0.18.1",
|
|
85
|
+
"@rulemetric/skills-registry": "0.18.1"
|
|
86
86
|
},
|
|
87
87
|
"//deps": "Worker (`evals agent`) runtime deps: the @opentelemetry/* set, @sentry/node, and postgres are STATIC top-level imports loaded at worker startup (via bundled @rulemetric/{telemetry,db}) — they MUST be runtime deps or a clean `npm i -g` crashes with ModuleLoadError. `better-sqlite3` is optionalDependencies (below): it's a native module, lazy `require()`'d inside a try/catch (packages/session providers cursor/opencode) so a missing binary degrades gracefully — making it a hard dep would break `npm i -g` on platforms without prebuilt binaries. `resend` stays a devDep: lazy `await import('resend')` guarded by RESEND_API_KEY, which end-user workers never set (provider falls back to noop). Classification verified via import-graph scan of dist/commands/evals/agent.js + per-importer static/lazy check.",
|
|
88
88
|
"optionalDependencies": {
|
|
@@ -105,12 +105,12 @@
|
|
|
105
105
|
"@rulemetric/contracts": "0.0.1",
|
|
106
106
|
"@rulemetric/api": "0.0.1",
|
|
107
107
|
"@rulemetric/core": "0.0.1",
|
|
108
|
-
"@rulemetric/db": "0.0.1",
|
|
109
108
|
"@rulemetric/effectiveness": "0.0.1",
|
|
110
109
|
"@rulemetric/email": "0.0.1",
|
|
111
110
|
"@rulemetric/session": "0.2.1",
|
|
112
111
|
"@rulemetric/telemetry": "0.0.1",
|
|
113
|
-
"@rulemetric/typescript-config": "0.0.0"
|
|
112
|
+
"@rulemetric/typescript-config": "0.0.0",
|
|
113
|
+
"@rulemetric/db": "0.0.1"
|
|
114
114
|
},
|
|
115
115
|
"scripts": {
|
|
116
116
|
"build": "node scripts/build.mjs",
|
package/dist/chunk-GBMF3TP6.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as s,b as p,c as f}from"./chunk-ARNZQBMX.js";import{e as u,i}from"./chunk-NJ5UED3H.js";import{a as c}from"./chunk-ZLLER3HP.js";import{Text as t}from"ink";import{jsx as n,jsxs as l}from"react/jsx-runtime";function P({instructions:o,width:r,barWidth:a}){if(!o)return n(s,{title:"Active Instructions",color:i,width:r,children:n(t,{dimColor:!0,children:"API offline \u2014 no instruction data"})});if(o.length===0)return n(s,{title:"Active Instructions",color:i,width:r,children:n(t,{dimColor:!0,children:"No instructions linked to sessions yet"})});let m=[...o].sort((e,S)=>S.linkedSessions-e.linkedSessions).slice(0,10),x=m[0].linkedSessions,d=Math.max(8,r-a-15);return l(s,{title:`Active Instructions (${o.length})`,color:i,width:r,children:[l(t,{dimColor:!0,wrap:"truncate-end",children:["".padEnd(a+1+d),"sessions".padStart(9)]}),m.map(e=>l(t,{wrap:"truncate-end",children:[n(p,{value:e.linkedSessions,max:x,width:a}),l(t,{color:u,children:[" ",f(e.name,d)]}),n(t,{children:String(e.linkedSessions).padStart(9)})]},e.name))]})}c(P,"InstructionsPanel");export{P as a};
|
package/dist/chunk-OWXGXKK7.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as E,o as m}from"./chunk-RQBN7WNS.js";import{a as d}from"./chunk-5VWVQCNR.js";import{a as c}from"./chunk-ZLLER3HP.js";import*as p from"node:fs";import*as u from"node:path";import*as _ from"node:os";function T(){if(process.env.RULEMETRIC_API_KEY||process.env.RULEMETRIC_ACCESS_TOKEN)return;let s=u.join(_.homedir(),".config","rulemetric","env");C(s)||C(u.join(process.cwd(),".env.local"))}c(T,"ensureEnv");function C(s){try{let t=p.readFileSync(s,"utf-8");for(let n of t.split(`
|
|
2
|
-
`)){let e=n.trim();if(!e||e.startsWith("#"))continue;let o=e.indexOf("=");if(o<0)continue;let r=e.slice(0,o).trim(),i=e.slice(o+1).trim();process.env[r]||(process.env[r]=i)}return!!(process.env.RULEMETRIC_API_KEY||process.env.RULEMETRIC_ACCESS_TOKEN)}catch{return!1}}c(C,"loadEnvFile");T();async function I(s){let t={totalSessions:0,totalCalls:0,totalInputTokens:0,totalOutputTokens:0,totalCacheReadTokens:0,totalCacheWriteTokens:0,totalCostUSD:0,providers:{}},n=await m(s);t.providers={};for(let a of n)t.providers[a.provider]=(t.providers[a.provider]||0)+1;let e=new E,o=n.filter(a=>a.provider==="claude");for(let a of o)try{let h=p.readdirSync(a.path).filter(f=>f.endsWith(".jsonl"));t.totalSessions+=h.length;for(let f of h){let v=p.readFileSync(u.join(a.path,f),"utf-8"),R=e.parse(v);for(let l of R.events)l.tokenUsage&&(t.totalCalls++,t.totalInputTokens+=l.tokenUsage.input,t.totalOutputTokens+=l.tokenUsage.output,t.totalCacheReadTokens+=l.tokenUsage.cacheRead??0,t.totalCacheWriteTokens+=l.tokenUsage.cacheWrite??0)}}catch{}let r=15,i=75;return t.totalCostUSD=Math.round((t.totalInputTokens/1e6*r+t.totalOutputTokens/1e6*i+t.totalCacheReadTokens/1e6*(r*.1)+t.totalCacheWriteTokens/1e6*(r*1.25))*100)/100,t}c(I,"loadLocalStats");async function U(s){let t=process.env.RULEMETRIC_API_URL??d,n=process.env.RULEMETRIC_API_KEY,e=process.env.RULEMETRIC_ACCESS_TOKEN,o=n??e;if(!o)return null;let r=new URLSearchParams;s&&r.set("projectPath",s);try{let i=await fetch(`${t}/api/insights/compute?${r}`,{headers:{Authorization:`Bearer ${o}`},signal:AbortSignal.timeout(5e3)});return i.ok?await i.json():null}catch{return null}}c(U,"loadApiInsights");async function g(s){let t=process.env.RULEMETRIC_API_URL??d,n=process.env.RULEMETRIC_API_KEY??process.env.RULEMETRIC_ACCESS_TOKEN;if(!n)return null;let e=new URLSearchParams;s&&e.set("projectPath",s);try{let o=await fetch(`${t}/api/insights/linked-instructions?${e}`,{headers:{Authorization:`Bearer ${n}`},signal:AbortSignal.timeout(5e3)});return o.ok?await o.json():null}catch{return null}}c(g,"loadLinkedInstructions");export{I as a,U as b,g as c};
|
package/dist/chunk-TBLUJ6AW.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as j}from"./chunk-EKTNI6RV.js";import{a as E}from"./chunk-X23L2MF6.js";import{a as J}from"./chunk-B22HYCBV.js";import{d as T}from"./chunk-NJ5UED3H.js";import{b as I,c as P,d as v}from"./chunk-NMCQ7JZZ.js";import{a as b}from"./chunk-ZLLER3HP.js";import{useEffect as R,useState as i}from"react";import{Box as l,Text as s,useInput as Z}from"ink";import{jsx as t,jsxs as a}from"react/jsx-runtime";function K({onClose:A,activeOrg:F,defaultProjectPath:y,width:_}){let{jobs:u,error:L,loading:$,refetch:S}=j(20),[M,C]=i([]),[d,m]=i("list"),[f,w]=i(0),[h,g]=i(null),[x,B]=i(null),[p,c]=i(null);R(()=>{v().then(C).catch(o=>{let r=o instanceof Error?o.message:String(o);c(`couldn't load launchers: ${r}`),C([{tool:"claude_code",capabilities:{headless:!0,interactive:!0,remoteSpawn:!0}}])})},[]),R(()=>{if(!p)return;let o=setTimeout(()=>c(null),5e3);return()=>clearTimeout(o)},[p]),Z((o,r)=>{if(h){if(o==="y"||o==="Y"){let e=h.id;g(null),P(e).then(()=>{S(),c(`cancelled ${e.slice(0,8)}`)}).catch(n=>c(`cancel failed: ${n instanceof Error?n.message:String(n)}`))}else(o==="n"||o==="N"||r.escape)&&g(null);return}if(r.escape){if(d!=="none"){m("none");return}A();return}if(r.tab){m(e=>e==="list"?"form":e==="form"?"none":"list");return}if(o!=="q"&&d==="list"){if(r.upArrow)w(e=>Math.max(0,e-1));else if(r.downArrow)w(e=>Math.min(u.length-1,e+1));else if(o==="c"){let e=u[f];e&&(e.status==="running"||e.status==="queued"||e.status==="pending")&&g(e)}else if(o==="r"){let e=u[f],n=e?.result?.externalSessionId;e&&e.tool==="claude_code"&&n?(B({tool:"claude_code",projectPath:e.config.projectPath,resumeSessionId:n}),m("form")):c("resume needs a Claude Code session with a session id")}else if(o==="o"){let n=u[f]?.result?.externalSessionId;if(n){let O=process.env.RULEMETRIC_WEB_URL??"http://localhost:5174";import("node:child_process").then(({spawn:U})=>{U("open",[`${O}/sessions/${n}`],{detached:!0,stdio:"ignore"}).unref()})}}}});async function N(o){await I(o),B(null),m("list"),c("launched"),S()}return b(N,"handleSubmit"),a(l,{flexDirection:"column",borderStyle:"round",borderColor:T,width:_,paddingX:1,children:[a(l,{children:[t(s,{bold:!0,color:T,children:"Launcher"}),t(s,{dimColor:!0,children:" active org: "}),t(s,{children:F??"(none)"}),$&&t(s,{dimColor:!0,children:" loading\u2026"}),L&&a(s,{color:"#F55B5B",children:[" \u26A0 ",L]})]}),t(l,{marginTop:1,children:t(E,{jobs:u,selectedIndex:f,focused:d==="list"})}),t(l,{marginTop:1,children:t(J,{launchers:M,defaultProjectPath:x?.projectPath??y,defaultTool:x?.tool,defaultResumeSessionId:x?.resumeSessionId,focused:d==="form",onSubmit:N})}),h&&t(l,{marginTop:1,children:a(s,{color:"#FFD700",children:["Cancel job ",h.id.slice(0,8),"? (y/n)"]})}),p&&t(l,{marginTop:1,children:a(s,{dimColor:!0,children:["\xB7 ",p]})}),t(l,{marginTop:1,children:a(s,{dimColor:!0,children:["\u2191\u2193 select tab focus c cancel r resume o open esc ",d==="none"?"close":"back"]})})]})}b(K,"LauncherOverlay");export{K as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a}from"../../chunk-GBMF3TP6.js";import"../../chunk-ARNZQBMX.js";import"../../chunk-NJ5UED3H.js";import"../../chunk-ZLLER3HP.js";export{a as InstructionsPanel};
|