@rulemetric/cli 0.4.0 → 0.5.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.
Files changed (157) hide show
  1. package/dist/base-command.js +5 -5
  2. package/dist/chunk-346TGPVR.js +309 -0
  3. package/dist/chunk-346TGPVR.js.map +7 -0
  4. package/dist/{chunk-2AM54TUK.js → chunk-4UJATBTG.js} +2 -2
  5. package/dist/{chunk-2WWGG2A5.js → chunk-54IODRPZ.js} +16 -15
  6. package/dist/chunk-54IODRPZ.js.map +7 -0
  7. package/dist/{chunk-BD7CY42U.js → chunk-7DRLX3DN.js} +3 -3
  8. package/dist/{chunk-JX5UI6RW.js → chunk-AUUHXCJU.js} +2 -2
  9. package/dist/{chunk-S56LOTGQ.js → chunk-CB43W53J.js} +5 -5
  10. package/dist/{chunk-EHABPBGH.js → chunk-CCSR73HF.js} +2 -2
  11. package/dist/{chunk-EHZJ6OXD.js → chunk-CGUV6TUA.js} +2 -2
  12. package/dist/{chunk-EJOI2ZGU.js → chunk-CWFVBGX2.js} +8 -12
  13. package/dist/chunk-CWFVBGX2.js.map +7 -0
  14. package/dist/{chunk-42A3HEEH.js → chunk-F5DPTXRC.js} +30 -2
  15. package/dist/{chunk-42A3HEEH.js.map → chunk-F5DPTXRC.js.map} +3 -3
  16. package/dist/{chunk-YEBBX4HQ.js → chunk-I4GHR6CY.js} +2 -2
  17. package/dist/{chunk-XMWHTOCC.js → chunk-IKEI4KNV.js} +2 -2
  18. package/dist/{chunk-CROYS75W.js → chunk-LJ5OT5XN.js} +4 -4
  19. package/dist/{chunk-UF73WX2J.js → chunk-OAQG5WBV.js} +2 -2
  20. package/dist/{chunk-QJXAULRC.js → chunk-OKCFYPIQ.js} +2 -2
  21. package/dist/{chunk-MTLAIJED.js → chunk-OWUS3HMA.js} +2 -2
  22. package/dist/{chunk-YBNW7ARH.js → chunk-PHIAFGQ2.js} +2 -2
  23. package/dist/{chunk-OGVORIFM.js → chunk-R56PH7YE.js} +11 -3
  24. package/dist/chunk-R56PH7YE.js.map +7 -0
  25. package/dist/{chunk-CLC7ZFH2.js → chunk-RYMK7FQL.js} +2 -2
  26. package/dist/{chunk-IWYCRLEK.js → chunk-TDTHAOXO.js} +2 -2
  27. package/dist/{chunk-PQU7GZ7A.js → chunk-TJ2M5QVL.js} +2 -2
  28. package/dist/{chunk-C7SRRSPA.js → chunk-VBOTWXJW.js} +2 -2
  29. package/dist/{chunk-KZRFUXGF.js → chunk-W2YERO7E.js} +27 -2
  30. package/dist/chunk-W2YERO7E.js.map +7 -0
  31. package/dist/commands/antigravity/backfill.js +6 -6
  32. package/dist/commands/auth/create-key.js +5 -5
  33. package/dist/commands/auth/login.js +5 -5
  34. package/dist/commands/auth/logout.js +5 -5
  35. package/dist/commands/auth/revoke-key.js +5 -5
  36. package/dist/commands/auth/status.js +5 -5
  37. package/dist/commands/catalog/index.js +5 -5
  38. package/dist/commands/catalog/recommend.js +5 -5
  39. package/dist/commands/convert.js +5 -5
  40. package/dist/commands/converters.js +5 -5
  41. package/dist/commands/crons/list.js +5 -5
  42. package/dist/commands/crons/run.js +5 -5
  43. package/dist/commands/dashboard.js +5 -5
  44. package/dist/commands/eval-targets/create.js +5 -5
  45. package/dist/commands/eval-targets/list.js +5 -5
  46. package/dist/commands/evals/agent.js +20 -19
  47. package/dist/commands/evals/agent.js.map +2 -2
  48. package/dist/commands/evals/benchmark.js +6 -6
  49. package/dist/commands/evals/compare.js +5 -5
  50. package/dist/commands/evals/create.js +5 -5
  51. package/dist/commands/evals/optimize-description.js +5 -5
  52. package/dist/commands/evals/optimize.js +5 -5
  53. package/dist/commands/evals/run.js +5 -5
  54. package/dist/commands/gateway/ensure.js +5 -5
  55. package/dist/commands/hooks/install.js +5 -5
  56. package/dist/commands/hooks/run.js +5 -5
  57. package/dist/commands/hooks/uninstall.js +5 -5
  58. package/dist/commands/import.js +5 -5
  59. package/dist/commands/instructions/create.js +5 -5
  60. package/dist/commands/instructions/delete.js +5 -5
  61. package/dist/commands/instructions/fork.js +5 -5
  62. package/dist/commands/instructions/get.js +5 -5
  63. package/dist/commands/instructions/list.js +5 -5
  64. package/dist/commands/instructions/promote.js +5 -5
  65. package/dist/commands/instructions/pull.js +5 -5
  66. package/dist/commands/instructions/upstream.js +5 -5
  67. package/dist/commands/instructions/versions.js +5 -5
  68. package/dist/commands/launcher.js +5 -5
  69. package/dist/commands/org/current.js +5 -5
  70. package/dist/commands/org/list.js +5 -5
  71. package/dist/commands/org/switch.js +5 -5
  72. package/dist/commands/packs/add-instruction.js +5 -5
  73. package/dist/commands/packs/apply.js +5 -5
  74. package/dist/commands/packs/create.js +5 -5
  75. package/dist/commands/packs/fork.js +5 -5
  76. package/dist/commands/packs/get.js +5 -5
  77. package/dist/commands/packs/list.js +5 -5
  78. package/dist/commands/packs/remove-instruction.js +5 -5
  79. package/dist/commands/proxy/env.js +5 -5
  80. package/dist/commands/proxy/logs.js +5 -5
  81. package/dist/commands/proxy/restart.js +5 -5
  82. package/dist/commands/proxy/setup.js +5 -5
  83. package/dist/commands/proxy/start.js +5 -5
  84. package/dist/commands/proxy/status.js +5 -5
  85. package/dist/commands/proxy/stop.js +5 -5
  86. package/dist/commands/research/backfill.js +6 -6
  87. package/dist/commands/research/tail-transcript.js +6 -6
  88. package/dist/commands/service/install.js +5 -5
  89. package/dist/commands/service/status.js +5 -5
  90. package/dist/commands/service/uninstall.js +5 -5
  91. package/dist/commands/sessions/analyze.js +5 -5
  92. package/dist/commands/sessions/end.js +5 -5
  93. package/dist/commands/sessions/import.js +5 -5
  94. package/dist/commands/sessions/list.js +5 -5
  95. package/dist/commands/sessions/start.js +5 -5
  96. package/dist/commands/setup.js +146 -0
  97. package/dist/commands/setup.js.map +7 -0
  98. package/dist/commands/signals/report.js +5 -5
  99. package/dist/commands/skills/export-approved.js +5 -5
  100. package/dist/commands/skills/install.js +5 -5
  101. package/dist/commands/skills/list.js +5 -5
  102. package/dist/commands/skills/publish.js +5 -5
  103. package/dist/commands/skills/search.js +5 -5
  104. package/dist/commands/skills/update.js +5 -5
  105. package/dist/commands/suggestions/accept.js +5 -5
  106. package/dist/commands/suggestions/dismiss.js +5 -5
  107. package/dist/commands/suggestions/list.js +5 -5
  108. package/dist/commands/suggestions/refresh.js +5 -5
  109. package/dist/dashboard/Dashboard.js +11 -11
  110. package/dist/dashboard/launcher/LauncherOverlay.js +3 -3
  111. package/dist/lib/active-org-refresh.js +3 -3
  112. package/dist/lib/agent-loop.js +15 -15
  113. package/dist/lib/antigravity-transcript.js +3 -3
  114. package/dist/lib/api-client.js +2 -2
  115. package/dist/lib/auth.js +5 -1
  116. package/dist/lib/eval-benchmark.js +3 -3
  117. package/dist/lib/eval-conversation-handler.js +3 -3
  118. package/dist/lib/handlers/cron-close-stale-sessions.js +2 -2
  119. package/dist/lib/handlers/cron-data-integrity-audit.js +2 -2
  120. package/dist/lib/handlers/cron-suggest-instructions.js +3 -3
  121. package/dist/lib/handlers/process-announcement.js +2 -2
  122. package/dist/lib/handlers/process-changelog.js +2 -2
  123. package/dist/lib/handlers/process-conversation.js +4 -4
  124. package/dist/lib/handlers/process-eval.js +3 -3
  125. package/dist/lib/handlers/process-insights.js +3 -3
  126. package/dist/lib/handlers/process-launch.js +3 -3
  127. package/dist/lib/handlers/process-run-cleanup.js +2 -2
  128. package/dist/lib/handlers/process-session-goal.js +2 -2
  129. package/dist/lib/manual-tasks.js +5 -5
  130. package/dist/lib/research-client.js +3 -3
  131. package/dist/lib/setup-steps.js +26 -0
  132. package/dist/lib/setup-steps.js.map +7 -0
  133. package/dist/lib/terminal-target-heartbeat.js +3 -3
  134. package/dist/lib/version-check.js +3 -1
  135. package/oclif.manifest.json +1033 -972
  136. package/package.json +4 -4
  137. package/dist/chunk-2WWGG2A5.js.map +0 -7
  138. package/dist/chunk-EJOI2ZGU.js.map +0 -7
  139. package/dist/chunk-KZRFUXGF.js.map +0 -7
  140. package/dist/chunk-OGVORIFM.js.map +0 -7
  141. /package/dist/{chunk-2AM54TUK.js.map → chunk-4UJATBTG.js.map} +0 -0
  142. /package/dist/{chunk-BD7CY42U.js.map → chunk-7DRLX3DN.js.map} +0 -0
  143. /package/dist/{chunk-JX5UI6RW.js.map → chunk-AUUHXCJU.js.map} +0 -0
  144. /package/dist/{chunk-S56LOTGQ.js.map → chunk-CB43W53J.js.map} +0 -0
  145. /package/dist/{chunk-EHABPBGH.js.map → chunk-CCSR73HF.js.map} +0 -0
  146. /package/dist/{chunk-EHZJ6OXD.js.map → chunk-CGUV6TUA.js.map} +0 -0
  147. /package/dist/{chunk-YEBBX4HQ.js.map → chunk-I4GHR6CY.js.map} +0 -0
  148. /package/dist/{chunk-XMWHTOCC.js.map → chunk-IKEI4KNV.js.map} +0 -0
  149. /package/dist/{chunk-CROYS75W.js.map → chunk-LJ5OT5XN.js.map} +0 -0
  150. /package/dist/{chunk-UF73WX2J.js.map → chunk-OAQG5WBV.js.map} +0 -0
  151. /package/dist/{chunk-QJXAULRC.js.map → chunk-OKCFYPIQ.js.map} +0 -0
  152. /package/dist/{chunk-MTLAIJED.js.map → chunk-OWUS3HMA.js.map} +0 -0
  153. /package/dist/{chunk-YBNW7ARH.js.map → chunk-PHIAFGQ2.js.map} +0 -0
  154. /package/dist/{chunk-CLC7ZFH2.js.map → chunk-RYMK7FQL.js.map} +0 -0
  155. /package/dist/{chunk-IWYCRLEK.js.map → chunk-TDTHAOXO.js.map} +0 -0
  156. /package/dist/{chunk-PQU7GZ7A.js.map → chunk-TJ2M5QVL.js.map} +0 -0
  157. /package/dist/{chunk-C7SRRSPA.js.map → chunk-VBOTWXJW.js.map} +0 -0
@@ -1,6 +1,7 @@
1
1
  import {
2
+ loadEnvFileAuth,
2
3
  loadToken
3
- } from "./chunk-KZRFUXGF.js";
4
+ } from "./chunk-W2YERO7E.js";
4
5
 
5
6
  // src/lib/api-client.ts
6
7
  import { fileURLToPath } from "node:url";
@@ -32,7 +33,7 @@ var ApiError = class extends Error {
32
33
  }
33
34
  };
34
35
  function getBaseUrl() {
35
- const url = process.env.RULEMETRIC_API_URL ?? "http://localhost:3000";
36
+ const url = process.env.RULEMETRIC_API_URL ?? loadEnvFileAuth().apiUrl ?? "http://localhost:3000";
36
37
  const parsed = new URL(url);
37
38
  if (parsed.protocol === "http:" && parsed.hostname !== "localhost" && parsed.hostname !== "127.0.0.1") {
38
39
  throw new Error(`API URL must use HTTPS for non-localhost hosts: ${url}`);
@@ -47,15 +48,10 @@ async function api(path, options = {}) {
47
48
  "User-Agent": `rulemetric-cli/${version}`,
48
49
  ...options.headers
49
50
  };
50
- const apiKey = process.env.RULEMETRIC_API_KEY;
51
- if (apiKey) {
52
- headers["Authorization"] = `Bearer ${apiKey}`;
53
- }
54
- if (!apiKey) {
55
- const token = loadToken();
56
- if (token) {
57
- headers["Authorization"] = `Bearer ${token.accessToken}`;
58
- }
51
+ const envAuth = loadEnvFileAuth();
52
+ const bearer = process.env.RULEMETRIC_API_KEY || envAuth.apiKey || loadToken()?.accessToken || envAuth.accessToken;
53
+ if (bearer) {
54
+ headers["Authorization"] = `Bearer ${bearer}`;
59
55
  }
60
56
  const parsed = new URL(url);
61
57
  const isLocalhost = parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1";
@@ -106,4 +102,4 @@ export {
106
102
  apiPatch,
107
103
  apiDelete
108
104
  };
109
- //# sourceMappingURL=chunk-EJOI2ZGU.js.map
105
+ //# sourceMappingURL=chunk-CWFVBGX2.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/lib/api-client.ts"],
4
+ "sourcesContent": ["import { fileURLToPath } from 'node:url';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { loadToken, loadEnvFileAuth } from './auth.js';\n\n/**\n * Read the CLI's own version. Walks up from this module's location to find\n * `@rulemetric/cli`'s package.json \u2014 robust whether running unbundled from\n * `src/lib/` (dev) or from a bundled chunk at a different `dist/` depth (prod),\n * where a fixed relative `../../package.json` would resolve to the wrong file.\n */\nfunction readCliVersion(): string {\n let dir = dirname(fileURLToPath(import.meta.url));\n for (let i = 0; i < 8; i++) {\n const pj = join(dir, 'package.json');\n if (existsSync(pj)) {\n try {\n const parsed = JSON.parse(readFileSync(pj, 'utf8')) as { name?: string; version?: string };\n if (parsed.name === '@rulemetric/cli' && parsed.version) return parsed.version;\n } catch {\n /* unreadable/parse error \u2014 keep walking up */\n }\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return '0.0.0';\n}\n\nconst version = readCliVersion();\n\nexport class ApiError extends Error {\n constructor(\n public statusCode: number,\n message: string,\n ) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\ninterface ApiOptions {\n method?: string;\n body?: unknown;\n headers?: Record<string, string>;\n}\n\nfunction getBaseUrl(): string {\n // Additive fallback to the env file's URL so a key/token read from that same\n // file (see the auth header below) is sent to the SERVER it belongs to,\n // not the localhost default.\n const url = process.env.RULEMETRIC_API_URL ?? loadEnvFileAuth().apiUrl ?? 'http://localhost:3000';\n\n // Enforce HTTPS for non-localhost URLs\n const parsed = new URL(url);\n if (parsed.protocol === 'http:' && parsed.hostname !== 'localhost' && parsed.hostname !== '127.0.0.1') {\n throw new Error(`API URL must use HTTPS for non-localhost hosts: ${url}`);\n }\n\n return url;\n}\n\nexport async function api<T>(path: string, options: ApiOptions = {}): Promise<T> {\n const baseUrl = getBaseUrl();\n const url = `${baseUrl}${path}`;\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'User-Agent': `rulemetric-cli/${version}`,\n ...options.headers,\n };\n\n // Auth header resolution, first match wins:\n // 1. process.env.RULEMETRIC_API_KEY \u2014 exported long-lived key\n // 2. env-file RULEMETRIC_API_KEY \u2014 long-lived key on disk (create-key)\n // 3. auth.json OAuth accessToken \u2014 fresh right after `auth login`\n // 4. env-file RULEMETRIC_ACCESS_TOKEN \u2014 token persisted by login\n // The long-lived API key is preferred over the OAuth token because the latter\n // EXPIRES \u2014 auth.json can hold a stale token, so trying it first would 401\n // (\"Session expired\") even when a valid key sits right there in the env file.\n const envAuth = loadEnvFileAuth();\n const bearer =\n process.env.RULEMETRIC_API_KEY ||\n envAuth.apiKey ||\n loadToken()?.accessToken ||\n envAuth.accessToken;\n if (bearer) {\n headers['Authorization'] = `Bearer ${bearer}`;\n }\n\n // Bypass proxy for localhost API calls \u2014 HTTPS_PROXY is for Claude Code \u2192 Anthropic,\n // not for CLI \u2192 local API. Node.js fetch doesn't respect NO_PROXY reliably, so we\n // temporarily unset the proxy env vars for localhost calls.\n const parsed = new URL(url);\n const isLocalhost = parsed.hostname === 'localhost' || parsed.hostname === '127.0.0.1';\n const savedProxy = process.env.HTTPS_PROXY;\n const savedHttpProxy = process.env.HTTP_PROXY;\n if (isLocalhost) {\n delete process.env.HTTPS_PROXY;\n delete process.env.HTTP_PROXY;\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: options.method ?? 'GET',\n headers,\n body: options.body ? JSON.stringify(options.body) : undefined,\n });\n } finally {\n // Restore proxy vars so claude -p calls still route through the proxy\n if (isLocalhost) {\n if (savedProxy !== undefined) process.env.HTTPS_PROXY = savedProxy;\n if (savedHttpProxy !== undefined) process.env.HTTP_PROXY = savedHttpProxy;\n }\n }\n\n let responseBody: unknown;\n const contentType = response.headers.get('content-type');\n if (contentType?.includes('application/json')) {\n responseBody = await response.json();\n } else {\n responseBody = await response.text();\n }\n\n if (!response.ok) {\n // Extract only the error message, not the full response body\n const message =\n responseBody && typeof responseBody === 'object' && 'error' in responseBody\n ? String((responseBody as { error: string }).error)\n : `HTTP ${response.status}`;\n throw new ApiError(response.status, message);\n }\n\n return responseBody as T;\n}\n\nexport const apiGet = <T>(path: string): Promise<T> => api<T>(path);\nexport const apiPost = <T>(path: string, body: unknown): Promise<T> => api<T>(path, { method: 'POST', body });\nexport const apiPut = <T>(path: string, body: unknown): Promise<T> => api<T>(path, { method: 'PUT', body });\nexport const apiPatch = <T>(path: string, body: unknown): Promise<T> => api<T>(path, { method: 'PATCH', body });\nexport const apiDelete = <T>(path: string): Promise<T> => api<T>(path, { method: 'DELETE' });\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1371,6 +1371,19 @@ var contextSnapshotsRelations = relations(contextSnapshots, ({ one }) => ({
1371
1371
  var INSTRUCTION_SCOPES = ["org", "team", "project", "personal"];
1372
1372
  var ORG_ROLES = ["owner", "admin", "member"];
1373
1373
 
1374
+ // ../../packages/db/dist/db-load.js
1375
+ var _inFlight = 0;
1376
+ var _peak = 0;
1377
+ function trackDbOpStart() {
1378
+ _inFlight++;
1379
+ if (_inFlight > _peak)
1380
+ _peak = _inFlight;
1381
+ }
1382
+ function trackDbOpEnd() {
1383
+ if (_inFlight > 0)
1384
+ _inFlight--;
1385
+ }
1386
+
1374
1387
  // ../../packages/db/dist/client.js
1375
1388
  var _supabase;
1376
1389
  var _supabaseAdmin;
@@ -1539,7 +1552,10 @@ function wrapBuilder(value, readSafe = false) {
1539
1552
  const then = Reflect.get(target, prop, receiver);
1540
1553
  if (typeof then !== "function")
1541
1554
  return then;
1542
- return (onFulfilled, onRejected) => withDbRetry(() => new Promise((resolve, reject) => then.call(target, resolve, reject)), { retryResets: readSafe }).then(onFulfilled, onRejected);
1555
+ return (onFulfilled, onRejected) => {
1556
+ trackDbOpStart();
1557
+ return withDbRetry(() => new Promise((resolve, reject) => then.call(target, resolve, reject)), { retryResets: readSafe }).finally(trackDbOpEnd).then(onFulfilled, onRejected);
1558
+ };
1543
1559
  }
1544
1560
  const v = Reflect.get(target, prop, receiver);
1545
1561
  if (typeof v === "function") {
@@ -1549,6 +1565,15 @@ function wrapBuilder(value, readSafe = false) {
1549
1565
  }
1550
1566
  });
1551
1567
  }
1568
+ function gaugeTransaction(run) {
1569
+ trackDbOpStart();
1570
+ try {
1571
+ return Promise.resolve(run()).finally(trackDbOpEnd);
1572
+ } catch (err) {
1573
+ trackDbOpEnd();
1574
+ throw err;
1575
+ }
1576
+ }
1552
1577
  var db = new Proxy({}, {
1553
1578
  get(_target, prop) {
1554
1579
  const real4 = getDb();
@@ -1557,6 +1582,9 @@ var db = new Proxy({}, {
1557
1582
  const readSafe = READ_ONLY_ENTRY_METHODS.has(prop);
1558
1583
  return (...args) => wrapBuilder(value.apply(real4, args), readSafe);
1559
1584
  }
1585
+ if (prop === "transaction" && typeof value === "function") {
1586
+ return (...args) => gaugeTransaction(() => value.apply(real4, args));
1587
+ }
1560
1588
  return value;
1561
1589
  }
1562
1590
  });
@@ -1593,4 +1621,4 @@ export {
1593
1621
  getDb,
1594
1622
  closeDb
1595
1623
  };
1596
- //# sourceMappingURL=chunk-42A3HEEH.js.map
1624
+ //# sourceMappingURL=chunk-F5DPTXRC.js.map