@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
@@ -5,7 +5,7 @@ import {
5
5
  getDb,
6
6
  sessionEvents,
7
7
  sessions
8
- } from "./chunk-42A3HEEH.js";
8
+ } from "./chunk-F5DPTXRC.js";
9
9
 
10
10
  // src/lib/handlers/process-session-goal.ts
11
11
  import { eq, asc, sql } from "drizzle-orm";
@@ -52,4 +52,4 @@ async function processSessionGoal(payload, deps = {}) {
52
52
  export {
53
53
  processSessionGoal
54
54
  };
55
- //# sourceMappingURL=chunk-YEBBX4HQ.js.map
55
+ //# sourceMappingURL=chunk-I4GHR6CY.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-DGHWRQXL.js";
7
7
  import {
8
8
  apiPatch
9
- } from "./chunk-EJOI2ZGU.js";
9
+ } from "./chunk-CWFVBGX2.js";
10
10
 
11
11
  // src/lib/handlers/process-launch.ts
12
12
  async function resolveWorktreeForLaunch(config) {
@@ -58,4 +58,4 @@ export {
58
58
  resolveWorktreeForLaunch,
59
59
  processLaunch
60
60
  };
61
- //# sourceMappingURL=chunk-XMWHTOCC.js.map
61
+ //# sourceMappingURL=chunk-IKEI4KNV.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ ActiveJobsList
3
+ } from "./chunk-QD6X4L4L.js";
1
4
  import {
2
5
  NewLaunchForm
3
6
  } from "./chunk-DTFXCHHI.js";
@@ -9,9 +12,6 @@ import {
9
12
  createLaunchJob,
10
13
  listLaunchers
11
14
  } from "./chunk-N52AHNBH.js";
12
- import {
13
- ActiveJobsList
14
- } from "./chunk-QD6X4L4L.js";
15
15
  import {
16
16
  ORANGE
17
17
  } from "./chunk-QJQS6TUN.js";
@@ -158,4 +158,4 @@ function LauncherOverlay({
158
158
  export {
159
159
  LauncherOverlay
160
160
  };
161
- //# sourceMappingURL=chunk-CROYS75W.js.map
161
+ //# sourceMappingURL=chunk-LJ5OT5XN.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  ApiError,
3
3
  apiPost
4
- } from "./chunk-EJOI2ZGU.js";
4
+ } from "./chunk-CWFVBGX2.js";
5
5
 
6
6
  // src/lib/research-client.ts
7
7
  function serializeDate(v) {
@@ -46,4 +46,4 @@ export {
46
46
  postObservation,
47
47
  postObservations
48
48
  };
49
- //# sourceMappingURL=chunk-UF73WX2J.js.map
49
+ //# sourceMappingURL=chunk-OAQG5WBV.js.map
@@ -17,7 +17,7 @@ import {
17
17
  apiGet,
18
18
  apiPatch,
19
19
  apiPost
20
- } from "./chunk-EJOI2ZGU.js";
20
+ } from "./chunk-CWFVBGX2.js";
21
21
 
22
22
  // src/lib/handlers/process-eval.ts
23
23
  async function processEval(payload, helpers) {
@@ -188,4 +188,4 @@ function buildSummary(results) {
188
188
  export {
189
189
  processEval
190
190
  };
191
- //# sourceMappingURL=chunk-QJXAULRC.js.map
191
+ //# sourceMappingURL=chunk-OKCFYPIQ.js.map
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  announcements,
10
10
  getDb
11
- } from "./chunk-42A3HEEH.js";
11
+ } from "./chunk-F5DPTXRC.js";
12
12
 
13
13
  // src/lib/handlers/process-changelog.ts
14
14
  import * as fs from "node:fs/promises";
@@ -119,4 +119,4 @@ async function processChangelog(deps = {}) {
119
119
  export {
120
120
  processChangelog
121
121
  };
122
- //# sourceMappingURL=chunk-MTLAIJED.js.map
122
+ //# sourceMappingURL=chunk-OWUS3HMA.js.map
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  apiGet,
16
16
  apiPost
17
- } from "./chunk-EJOI2ZGU.js";
17
+ } from "./chunk-CWFVBGX2.js";
18
18
 
19
19
  // src/lib/handlers/cron-suggest-instructions.ts
20
20
  import { readFileSync } from "node:fs";
@@ -164,4 +164,4 @@ var cronSuggestInstructions = async (_payload, helpers) => {
164
164
  export {
165
165
  cronSuggestInstructions
166
166
  };
167
- //# sourceMappingURL=chunk-YBNW7ARH.js.map
167
+ //# sourceMappingURL=chunk-PHIAFGQ2.js.map
@@ -56,15 +56,23 @@ function refreshVersionCacheInBackground() {
56
56
  clearTimeout(timer);
57
57
  });
58
58
  }
59
+ function formatUpgradeBanner(currentVersion, latest) {
60
+ if (compareVersions(latest, currentVersion) <= 0) return null;
61
+ return [
62
+ `RuleMetric ${latest} available (you're on ${currentVersion}).`,
63
+ ` Upgrade: npm i -g @rulemetric/cli@latest`,
64
+ ` Then: rulemetric hooks install (re-applies capture hooks for the new version)`
65
+ ].join("\n");
66
+ }
59
67
  function getUpgradeBanner(currentVersion) {
60
68
  const cached = readCache();
61
69
  if (!cached) return null;
62
- if (compareVersions(cached.latest, currentVersion) <= 0) return null;
63
- return `RuleMetric ${cached.latest} available \u2014 you're on ${currentVersion}.`;
70
+ return formatUpgradeBanner(currentVersion, cached.latest);
64
71
  }
65
72
 
66
73
  export {
67
74
  refreshVersionCacheInBackground,
75
+ formatUpgradeBanner,
68
76
  getUpgradeBanner
69
77
  };
70
- //# sourceMappingURL=chunk-OGVORIFM.js.map
78
+ //# sourceMappingURL=chunk-R56PH7YE.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/lib/version-check.ts"],
4
+ "sourcesContent": ["// CLI version-check banner. Every command kicks off an async fetch to\n// /api/cli/latest-version (cached for an hour) and prints a one-line\n// notice on the next invocation if the cached version is newer than the\n// currently-running CLI.\n//\n// Design notes:\n// - Fire-and-forget: we never block command execution on the network.\n// - Cache: ~/.config/rulemetric/version-check.json, TTL 1h. Stored on disk\n// so the check survives between CLI invocations (each invocation is a\n// fresh process \u2014 in-memory cache wouldn't help).\n// - \"Newer\" uses semver-naive numeric comparison split on dots \u2014 fine for\n// our 0.x line; tightening this is a follow-up if/when we adopt semver\n// pre-releases.\n// - The banner tells the user how to upgrade (`npm i -g @rulemetric/cli@latest`)\n// and to re-run `rulemetric hooks install` \u2014 capture behavior lives in what\n// install writes, so upgrading the package alone doesn't apply new hooks.\nimport { mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nconst CONFIG_DIR = join(homedir(), '.config', 'rulemetric');\nconst CACHE_FILE = join(CONFIG_DIR, 'version-check.json');\nconst TTL_MS = 60 * 60 * 1000; // 1h\n\ninterface CacheEntry {\n latest: string;\n fetchedAtMs: number;\n}\n\nfunction readCache(): CacheEntry | null {\n try {\n const data = JSON.parse(readFileSync(CACHE_FILE, 'utf-8')) as CacheEntry;\n if (typeof data.latest === 'string' && typeof data.fetchedAtMs === 'number') {\n return data;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nfunction writeCache(entry: CacheEntry): void {\n try {\n mkdirSync(CONFIG_DIR, { recursive: true });\n writeFileSync(CACHE_FILE, JSON.stringify(entry));\n } catch {\n // Best-effort: a write failure just means we'll re-fetch next time.\n }\n}\n\nfunction compareVersions(a: string, b: string): number {\n const parse = (v: string) => v.split('.').map((n) => Number.parseInt(n, 10) || 0);\n const pa = parse(a);\n const pb = parse(b);\n const len = Math.max(pa.length, pb.length);\n for (let i = 0; i < len; i++) {\n const ai = pa[i] ?? 0;\n const bi = pb[i] ?? 0;\n if (ai < bi) return -1;\n if (ai > bi) return 1;\n }\n return 0;\n}\n\nfunction getApiUrl(): string {\n const env = process.env.RULEMETRIC_API_URL;\n if (env) return env.replace(/\\/$/, '');\n return 'https://rulemetric.com';\n}\n\n/**\n * Fetches latest version from the API in the background and refreshes the\n * cache if the entry is missing or older than TTL_MS. Never throws.\n */\nexport function refreshVersionCacheInBackground(): void {\n const cached = readCache();\n if (cached && Date.now() - cached.fetchedAtMs < TTL_MS) return;\n\n // Fire-and-forget \u2014 explicitly catch every failure mode so an unhandled\n // rejection can never reach the user. AbortController guards against\n // hanging connections (3s budget).\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 3000);\n globalThis\n .fetch(`${getApiUrl()}/api/cli/latest-version`, { signal: controller.signal })\n .then(async (res) => {\n clearTimeout(timer);\n if (!res.ok) return;\n const data = (await res.json()) as { latest?: unknown };\n if (typeof data.latest !== 'string') return;\n writeCache({ latest: data.latest, fetchedAtMs: Date.now() });\n })\n .catch(() => {\n clearTimeout(timer);\n // Network error, timeout, malformed JSON \u2014 silently ignore. Banner\n // is purely a nicety; we never want it to surface failures.\n });\n}\n\n/**\n * Build the multi-line upgrade banner, or null when `latest` is not newer than\n * `current`. Pure (no disk/network) so it's unit-testable. Includes the upgrade\n * command AND the re-run-hooks-install reminder \u2014 capture behavior lives in what\n * `hooks install` *writes*, so upgrading the package alone doesn't apply it.\n */\nexport function formatUpgradeBanner(currentVersion: string, latest: string): string | null {\n if (compareVersions(latest, currentVersion) <= 0) return null;\n return [\n `RuleMetric ${latest} available (you're on ${currentVersion}).`,\n ` Upgrade: npm i -g @rulemetric/cli@latest`,\n ` Then: rulemetric hooks install (re-applies capture hooks for the new version)`,\n ].join('\\n');\n}\n\n/**\n * Returns the upgrade banner if a newer version is cached, else null.\n * Designed to be printed to stderr by the CLI's BaseCommand on launch.\n */\nexport function getUpgradeBanner(currentVersion: string): string | null {\n const cached = readCache();\n if (!cached) return null;\n return formatUpgradeBanner(currentVersion, cached.latest);\n}\n"],
5
+ "mappings": ";AAgBA,SAAS,WAAW,cAAc,qBAAqB;AACvD,SAAS,eAAe;AACxB,SAAS,YAAY;AAErB,IAAM,aAAa,KAAK,QAAQ,GAAG,WAAW,YAAY;AAC1D,IAAM,aAAa,KAAK,YAAY,oBAAoB;AACxD,IAAM,SAAS,KAAK,KAAK;AAOzB,SAAS,YAA+B;AACtC,MAAI;AACF,UAAM,OAAO,KAAK,MAAM,aAAa,YAAY,OAAO,CAAC;AACzD,QAAI,OAAO,KAAK,WAAW,YAAY,OAAO,KAAK,gBAAgB,UAAU;AAC3E,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,WAAW,OAAyB;AAC3C,MAAI;AACF,cAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AACzC,kBAAc,YAAY,KAAK,UAAU,KAAK,CAAC;AAAA,EACjD,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,gBAAgB,GAAW,GAAmB;AACrD,QAAM,QAAQ,CAAC,MAAc,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,OAAO,SAAS,GAAG,EAAE,KAAK,CAAC;AAChF,QAAM,KAAK,MAAM,CAAC;AAClB,QAAM,KAAK,MAAM,CAAC;AAClB,QAAM,MAAM,KAAK,IAAI,GAAG,QAAQ,GAAG,MAAM;AACzC,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,UAAM,KAAK,GAAG,CAAC,KAAK;AACpB,UAAM,KAAK,GAAG,CAAC,KAAK;AACpB,QAAI,KAAK,GAAI,QAAO;AACpB,QAAI,KAAK,GAAI,QAAO;AAAA,EACtB;AACA,SAAO;AACT;AAEA,SAAS,YAAoB;AAC3B,QAAM,MAAM,QAAQ,IAAI;AACxB,MAAI,IAAK,QAAO,IAAI,QAAQ,OAAO,EAAE;AACrC,SAAO;AACT;AAMO,SAAS,kCAAwC;AACtD,QAAM,SAAS,UAAU;AACzB,MAAI,UAAU,KAAK,IAAI,IAAI,OAAO,cAAc,OAAQ;AAKxD,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,GAAI;AACvD,aACG,MAAM,GAAG,UAAU,CAAC,2BAA2B,EAAE,QAAQ,WAAW,OAAO,CAAC,EAC5E,KAAK,OAAO,QAAQ;AACnB,iBAAa,KAAK;AAClB,QAAI,CAAC,IAAI,GAAI;AACb,UAAM,OAAQ,MAAM,IAAI,KAAK;AAC7B,QAAI,OAAO,KAAK,WAAW,SAAU;AACrC,eAAW,EAAE,QAAQ,KAAK,QAAQ,aAAa,KAAK,IAAI,EAAE,CAAC;AAAA,EAC7D,CAAC,EACA,MAAM,MAAM;AACX,iBAAa,KAAK;AAAA,EAGpB,CAAC;AACL;AAQO,SAAS,oBAAoB,gBAAwB,QAA+B;AACzF,MAAI,gBAAgB,QAAQ,cAAc,KAAK,EAAG,QAAO;AACzD,SAAO;AAAA,IACL,cAAc,MAAM,yBAAyB,cAAc;AAAA,IAC3D;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAMO,SAAS,iBAAiB,gBAAuC;AACtE,QAAM,SAAS,UAAU;AACzB,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,oBAAoB,gBAAgB,OAAO,MAAM;AAC1D;",
6
+ "names": []
7
+ }
@@ -10,7 +10,7 @@ import {
10
10
  getDb,
11
11
  notificationPreferences,
12
12
  profiles
13
- } from "./chunk-42A3HEEH.js";
13
+ } from "./chunk-F5DPTXRC.js";
14
14
 
15
15
  // src/lib/handlers/process-announcement.ts
16
16
  import { and, asc, eq, gt, isNotNull } from "drizzle-orm";
@@ -154,4 +154,4 @@ async function sendOne(args) {
154
154
  export {
155
155
  processAnnouncement
156
156
  };
157
- //# sourceMappingURL=chunk-CLC7ZFH2.js.map
157
+ //# sourceMappingURL=chunk-RYMK7FQL.js.map
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  apiGet,
12
12
  apiPost
13
- } from "./chunk-EJOI2ZGU.js";
13
+ } from "./chunk-CWFVBGX2.js";
14
14
 
15
15
  // src/lib/eval-conversation-handler.ts
16
16
  async function processConversationJob(jobConfig, evalTargetId, logger) {
@@ -217,4 +217,4 @@ async function handleAnalyzeAndPropose(target, evalCases, messages, userFeedback
217
217
  export {
218
218
  processConversationJob
219
219
  };
220
- //# sourceMappingURL=chunk-IWYCRLEK.js.map
220
+ //# sourceMappingURL=chunk-TDTHAOXO.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  apiGet,
3
3
  apiPost
4
- } from "./chunk-EJOI2ZGU.js";
4
+ } from "./chunk-CWFVBGX2.js";
5
5
 
6
6
  // src/lib/eval-benchmark.ts
7
7
  function computeStats(values) {
@@ -89,4 +89,4 @@ export {
89
89
  aggregateBenchmark,
90
90
  postBenchmark
91
91
  };
92
- //# sourceMappingURL=chunk-PQU7GZ7A.js.map
92
+ //# sourceMappingURL=chunk-TJ2M5QVL.js.map
@@ -8,7 +8,7 @@ import {
8
8
  agentRuns,
9
9
  getDb,
10
10
  sessions
11
- } from "./chunk-42A3HEEH.js";
11
+ } from "./chunk-F5DPTXRC.js";
12
12
 
13
13
  // src/lib/handlers/process-run-cleanup.ts
14
14
  import { and, eq, isNotNull } from "drizzle-orm";
@@ -96,4 +96,4 @@ async function processRunCleanup(payload, deps = {}) {
96
96
  export {
97
97
  processRunCleanup
98
98
  };
99
- //# sourceMappingURL=chunk-C7SRRSPA.js.map
99
+ //# sourceMappingURL=chunk-VBOTWXJW.js.map
@@ -5,6 +5,27 @@ import * as os from "node:os";
5
5
  function getConfigDir() {
6
6
  return process.env.RULEMETRIC_CONFIG_DIR || path.join(os.homedir(), ".config", "rulemetric");
7
7
  }
8
+ var _envFileAuthCache;
9
+ function loadEnvFileAuth() {
10
+ if (_envFileAuthCache !== void 0) return _envFileAuthCache;
11
+ try {
12
+ const envPath = path.join(getConfigDir(), "env");
13
+ if (!fs.existsSync(envPath)) return _envFileAuthCache = {};
14
+ const content = fs.readFileSync(envPath, "utf-8");
15
+ const read = (key) => content.match(new RegExp(`^${key}=(.+)$`, "m"))?.[1]?.trim();
16
+ _envFileAuthCache = {
17
+ apiKey: read("RULEMETRIC_API_KEY"),
18
+ accessToken: read("RULEMETRIC_ACCESS_TOKEN"),
19
+ apiUrl: read("RULEMETRIC_API_URL")
20
+ };
21
+ return _envFileAuthCache;
22
+ } catch {
23
+ return _envFileAuthCache = {};
24
+ }
25
+ }
26
+ function __resetEnvFileAuthCache() {
27
+ _envFileAuthCache = void 0;
28
+ }
8
29
  function createAuthStore(configDir = getConfigDir()) {
9
30
  const authFile = path.join(configDir, "auth.json");
10
31
  function saveToken2(token) {
@@ -114,7 +135,9 @@ function clearToken() {
114
135
  }
115
136
  function isAuthenticated() {
116
137
  if (process.env.RULEMETRIC_API_KEY) return true;
117
- return getStore().isAuthenticated();
138
+ if (getStore().isAuthenticated()) return true;
139
+ const envAuth = loadEnvFileAuth();
140
+ return Boolean(envAuth.apiKey || envAuth.accessToken);
118
141
  }
119
142
  function saveEnvFile(accessToken, apiUrl) {
120
143
  getStore().saveEnvFile(accessToken, apiUrl);
@@ -131,6 +154,8 @@ function getDefaultConfigDir() {
131
154
  var CONFIG_DIR = getConfigDir();
132
155
 
133
156
  export {
157
+ loadEnvFileAuth,
158
+ __resetEnvFileAuthCache,
134
159
  createAuthStore,
135
160
  saveToken,
136
161
  loadToken,
@@ -142,4 +167,4 @@ export {
142
167
  getDefaultConfigDir,
143
168
  CONFIG_DIR
144
169
  };
145
- //# sourceMappingURL=chunk-KZRFUXGF.js.map
170
+ //# sourceMappingURL=chunk-W2YERO7E.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/lib/auth.ts"],
4
+ "sourcesContent": ["import * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport * as os from 'node:os';\n\nexport interface AuthToken {\n accessToken: string;\n refreshToken: string;\n expiresAt: string;\n email: string;\n}\n\nfunction getConfigDir(): string {\n return process.env.RULEMETRIC_CONFIG_DIR || path.join(os.homedir(), '.config', 'rulemetric');\n}\n\nexport interface EnvFileAuth {\n apiKey?: string;\n accessToken?: string;\n apiUrl?: string;\n}\n\n// Read credentials persisted in ~/.config/rulemetric/env (written by `auth login`\n// / `auth create-key`). The interactive Node CLI does NOT source this file into\n// process.env the way the bash hooks do, so WITHOUT this the CLI reports \"Not\n// logged in\" from any shell that hasn't exported the vars \u2014 even though valid\n// long-lived creds are on disk (this is the documented #2 credential source in\n// CLAUDE.md). Consulted ONLY as an additive fallback, after process.env +\n// auth.json, so it can never regress an already-working auth path. Cached per\n// process (config is read once; a login within the same process is rare and can\n// re-read via the explicit save paths).\nlet _envFileAuthCache: EnvFileAuth | undefined;\nexport function loadEnvFileAuth(): EnvFileAuth {\n if (_envFileAuthCache !== undefined) return _envFileAuthCache;\n try {\n const envPath = path.join(getConfigDir(), 'env');\n if (!fs.existsSync(envPath)) return (_envFileAuthCache = {});\n const content = fs.readFileSync(envPath, 'utf-8');\n const read = (key: string): string | undefined =>\n content.match(new RegExp(`^${key}=(.+)$`, 'm'))?.[1]?.trim();\n _envFileAuthCache = {\n apiKey: read('RULEMETRIC_API_KEY'),\n accessToken: read('RULEMETRIC_ACCESS_TOKEN'),\n apiUrl: read('RULEMETRIC_API_URL'),\n };\n return _envFileAuthCache;\n } catch {\n return (_envFileAuthCache = {});\n }\n}\n\n/** Test-only: drop the env-file auth cache so a test can change the file. */\nexport function __resetEnvFileAuthCache(): void {\n _envFileAuthCache = undefined;\n}\n\nexport function createAuthStore(configDir: string = getConfigDir()) {\n const authFile = path.join(configDir, 'auth.json');\n\n function saveToken(token: AuthToken): void {\n fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });\n fs.writeFileSync(authFile, JSON.stringify(token, null, 2), {\n encoding: 'utf-8',\n mode: 0o600,\n });\n }\n\n function loadToken(): AuthToken | null {\n try {\n const data = fs.readFileSync(authFile, 'utf-8');\n const parsed: unknown = JSON.parse(data);\n if (\n parsed &&\n typeof parsed === 'object' &&\n 'accessToken' in parsed &&\n 'expiresAt' in parsed &&\n 'email' in parsed &&\n typeof (parsed as AuthToken).accessToken === 'string' &&\n typeof (parsed as AuthToken).expiresAt === 'string'\n ) {\n return parsed as AuthToken;\n }\n return null;\n } catch {\n return null;\n }\n }\n\n function clearToken(): void {\n try {\n fs.unlinkSync(authFile);\n } catch {\n // File doesn't exist, nothing to clear\n }\n }\n\n function isAuthenticated(): boolean {\n const token = loadToken();\n if (!token) return false;\n const expiresAt = new Date(token.expiresAt).getTime();\n if (Number.isNaN(expiresAt)) return false;\n return Date.now() < expiresAt;\n }\n\n function saveEnvFile(accessToken: string, apiUrl?: string): void {\n fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });\n const envPath = path.join(configDir, 'env');\n\n // Preserve existing RULEMETRIC_API_KEY if present\n let existingApiKey = '';\n try {\n const existing = fs.readFileSync(envPath, 'utf-8');\n const match = existing.match(/^RULEMETRIC_API_KEY=(.+)$/m);\n if (match) existingApiKey = match[1];\n } catch { /* file doesn't exist */ }\n\n const lines = [\n `RULEMETRIC_ACCESS_TOKEN=${accessToken}`,\n ];\n if (existingApiKey) {\n lines.push(`RULEMETRIC_API_KEY=${existingApiKey}`);\n }\n if (apiUrl) {\n lines.push(`RULEMETRIC_API_URL=${apiUrl}`);\n }\n\n fs.writeFileSync(envPath, lines.join('\\n') + '\\n', {\n encoding: 'utf-8',\n mode: 0o600,\n });\n }\n\n function saveApiKeyToEnv(apiKey: string, apiUrl?: string): void {\n fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });\n const envPath = path.join(configDir, 'env');\n\n // Preserve existing ACCESS_TOKEN if present\n let existingToken = '';\n let existingUrl = '';\n try {\n const existing = fs.readFileSync(envPath, 'utf-8');\n const tokenMatch = existing.match(/^RULEMETRIC_ACCESS_TOKEN=(.+)$/m);\n if (tokenMatch) existingToken = tokenMatch[1];\n const urlMatch = existing.match(/^RULEMETRIC_API_URL=(.+)$/m);\n if (urlMatch) existingUrl = urlMatch[1];\n } catch { /* file doesn't exist */ }\n\n const lines = [\n `RULEMETRIC_API_KEY=${apiKey}`,\n ];\n if (existingToken) {\n lines.push(`RULEMETRIC_ACCESS_TOKEN=${existingToken}`);\n }\n const url = apiUrl ?? existingUrl;\n if (url) {\n lines.push(`RULEMETRIC_API_URL=${url}`);\n }\n\n fs.writeFileSync(envPath, lines.join('\\n') + '\\n', {\n encoding: 'utf-8',\n mode: 0o600,\n });\n }\n\n function clearEnvFile(): void {\n const envPath = path.join(configDir, 'env');\n try { fs.unlinkSync(envPath); } catch { /* noop */ }\n }\n\n return { saveToken, loadToken, clearToken, isAuthenticated, saveEnvFile, saveApiKeyToEnv, clearEnvFile, configDir, authFile };\n}\n\n// Lazy accessors \u2014 re-evaluate config dir from env on each call\nfunction getStore() {\n return createAuthStore();\n}\n\nexport function saveToken(token: AuthToken): void { getStore().saveToken(token); }\nexport function loadToken(): AuthToken | null { return getStore().loadToken(); }\nexport function clearToken(): void { getStore().clearToken(); }\nexport function isAuthenticated(): boolean {\n // API key counts as authenticated\n if (process.env.RULEMETRIC_API_KEY) return true;\n if (getStore().isAuthenticated()) return true;\n // Additive fallback: creds persisted in the env file by `auth login` /\n // `create-key` (not exported to process.env in a plain interactive shell,\n // and the OAuth auth.json may be expired, but the API key is long-lived).\n const envAuth = loadEnvFileAuth();\n return Boolean(envAuth.apiKey || envAuth.accessToken);\n}\nexport function saveEnvFile(accessToken: string, apiUrl?: string): void { getStore().saveEnvFile(accessToken, apiUrl); }\nexport function saveApiKey(apiKey: string, apiUrl?: string): void { getStore().saveApiKeyToEnv(apiKey, apiUrl); }\nexport function clearEnvFile(): void { getStore().clearEnvFile(); }\nexport function getDefaultConfigDir(): string { return getConfigDir(); }\n// Re-exported for backward compat (evaluated at import time; prefer getDefaultConfigDir() for dynamic usage)\nexport const CONFIG_DIR = getConfigDir();\n"],
5
+ "mappings": "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",
6
+ "names": ["saveToken", "loadToken", "clearToken", "isAuthenticated", "saveEnvFile", "clearEnvFile"]
7
+ }
@@ -3,14 +3,14 @@ import {
3
3
  findMaxStepIndex,
4
4
  readNewRecords,
5
5
  stateApi
6
- } from "../../chunk-EHZJ6OXD.js";
6
+ } from "../../chunk-CGUV6TUA.js";
7
7
  import {
8
8
  BaseCommand
9
- } from "../../chunk-S56LOTGQ.js";
10
- import "../../chunk-OGVORIFM.js";
11
- import "../../chunk-2AM54TUK.js";
12
- import "../../chunk-EJOI2ZGU.js";
13
- import "../../chunk-KZRFUXGF.js";
9
+ } from "../../chunk-CB43W53J.js";
10
+ import "../../chunk-R56PH7YE.js";
11
+ import "../../chunk-4UJATBTG.js";
12
+ import "../../chunk-CWFVBGX2.js";
13
+ import "../../chunk-W2YERO7E.js";
14
14
  import "../../chunk-EKJ2CABV.js";
15
15
  import "../../chunk-NSBPE2FW.js";
16
16
 
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-S56LOTGQ.js";
4
- import "../../chunk-OGVORIFM.js";
5
- import "../../chunk-2AM54TUK.js";
3
+ } from "../../chunk-CB43W53J.js";
4
+ import "../../chunk-R56PH7YE.js";
5
+ import "../../chunk-4UJATBTG.js";
6
6
  import {
7
7
  apiPost
8
- } from "../../chunk-EJOI2ZGU.js";
8
+ } from "../../chunk-CWFVBGX2.js";
9
9
  import {
10
10
  saveApiKey
11
- } from "../../chunk-KZRFUXGF.js";
11
+ } from "../../chunk-W2YERO7E.js";
12
12
  import "../../chunk-EKJ2CABV.js";
13
13
  import "../../chunk-NSBPE2FW.js";
14
14
 
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-S56LOTGQ.js";
4
- import "../../chunk-OGVORIFM.js";
3
+ } from "../../chunk-CB43W53J.js";
4
+ import "../../chunk-R56PH7YE.js";
5
5
  import {
6
6
  bootstrapActiveOrg
7
- } from "../../chunk-2AM54TUK.js";
7
+ } from "../../chunk-4UJATBTG.js";
8
8
  import {
9
9
  apiPost
10
- } from "../../chunk-EJOI2ZGU.js";
10
+ } from "../../chunk-CWFVBGX2.js";
11
11
  import {
12
12
  saveEnvFile,
13
13
  saveToken
14
- } from "../../chunk-KZRFUXGF.js";
14
+ } from "../../chunk-W2YERO7E.js";
15
15
  import "../../chunk-EKJ2CABV.js";
16
16
  import "../../chunk-NSBPE2FW.js";
17
17
 
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-S56LOTGQ.js";
4
- import "../../chunk-OGVORIFM.js";
5
- import "../../chunk-2AM54TUK.js";
6
- import "../../chunk-EJOI2ZGU.js";
3
+ } from "../../chunk-CB43W53J.js";
4
+ import "../../chunk-R56PH7YE.js";
5
+ import "../../chunk-4UJATBTG.js";
6
+ import "../../chunk-CWFVBGX2.js";
7
7
  import {
8
8
  clearEnvFile,
9
9
  clearToken
10
- } from "../../chunk-KZRFUXGF.js";
10
+ } from "../../chunk-W2YERO7E.js";
11
11
  import "../../chunk-EKJ2CABV.js";
12
12
  import "../../chunk-NSBPE2FW.js";
13
13
 
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-S56LOTGQ.js";
4
- import "../../chunk-OGVORIFM.js";
5
- import "../../chunk-2AM54TUK.js";
3
+ } from "../../chunk-CB43W53J.js";
4
+ import "../../chunk-R56PH7YE.js";
5
+ import "../../chunk-4UJATBTG.js";
6
6
  import {
7
7
  apiDelete
8
- } from "../../chunk-EJOI2ZGU.js";
9
- import "../../chunk-KZRFUXGF.js";
8
+ } from "../../chunk-CWFVBGX2.js";
9
+ import "../../chunk-W2YERO7E.js";
10
10
  import "../../chunk-EKJ2CABV.js";
11
11
  import "../../chunk-NSBPE2FW.js";
12
12
 
@@ -3,15 +3,15 @@ import {
3
3
  } from "../../chunk-BZDKEQKU.js";
4
4
  import {
5
5
  BaseCommand
6
- } from "../../chunk-S56LOTGQ.js";
7
- import "../../chunk-OGVORIFM.js";
8
- import "../../chunk-2AM54TUK.js";
9
- import "../../chunk-EJOI2ZGU.js";
6
+ } from "../../chunk-CB43W53J.js";
7
+ import "../../chunk-R56PH7YE.js";
8
+ import "../../chunk-4UJATBTG.js";
9
+ import "../../chunk-CWFVBGX2.js";
10
10
  import {
11
11
  getDefaultConfigDir,
12
12
  isAuthenticated,
13
13
  loadToken
14
- } from "../../chunk-KZRFUXGF.js";
14
+ } from "../../chunk-W2YERO7E.js";
15
15
  import "../../chunk-EKJ2CABV.js";
16
16
  import "../../chunk-NSBPE2FW.js";
17
17
 
@@ -5,13 +5,13 @@ import {
5
5
  } from "../../chunk-BZDKEQKU.js";
6
6
  import {
7
7
  BaseCommand
8
- } from "../../chunk-S56LOTGQ.js";
9
- import "../../chunk-OGVORIFM.js";
10
- import "../../chunk-2AM54TUK.js";
8
+ } from "../../chunk-CB43W53J.js";
9
+ import "../../chunk-R56PH7YE.js";
10
+ import "../../chunk-4UJATBTG.js";
11
11
  import {
12
12
  apiGet
13
- } from "../../chunk-EJOI2ZGU.js";
14
- import "../../chunk-KZRFUXGF.js";
13
+ } from "../../chunk-CWFVBGX2.js";
14
+ import "../../chunk-W2YERO7E.js";
15
15
  import "../../chunk-EKJ2CABV.js";
16
16
  import "../../chunk-NSBPE2FW.js";
17
17
 
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-S56LOTGQ.js";
4
- import "../../chunk-OGVORIFM.js";
5
- import "../../chunk-2AM54TUK.js";
3
+ } from "../../chunk-CB43W53J.js";
4
+ import "../../chunk-R56PH7YE.js";
5
+ import "../../chunk-4UJATBTG.js";
6
6
  import {
7
7
  apiPost
8
- } from "../../chunk-EJOI2ZGU.js";
9
- import "../../chunk-KZRFUXGF.js";
8
+ } from "../../chunk-CWFVBGX2.js";
9
+ import "../../chunk-W2YERO7E.js";
10
10
  import "../../chunk-EKJ2CABV.js";
11
11
  import "../../chunk-NSBPE2FW.js";
12
12
 
@@ -3,13 +3,13 @@ import {
3
3
  } from "../chunk-7NYKWN7U.js";
4
4
  import {
5
5
  BaseCommand
6
- } from "../chunk-S56LOTGQ.js";
7
- import "../chunk-OGVORIFM.js";
8
- import "../chunk-2AM54TUK.js";
6
+ } from "../chunk-CB43W53J.js";
7
+ import "../chunk-R56PH7YE.js";
8
+ import "../chunk-4UJATBTG.js";
9
9
  import {
10
10
  apiPost
11
- } from "../chunk-EJOI2ZGU.js";
12
- import "../chunk-KZRFUXGF.js";
11
+ } from "../chunk-CWFVBGX2.js";
12
+ import "../chunk-W2YERO7E.js";
13
13
  import "../chunk-EKJ2CABV.js";
14
14
  import "../chunk-NSBPE2FW.js";
15
15
 
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../chunk-S56LOTGQ.js";
4
- import "../chunk-OGVORIFM.js";
5
- import "../chunk-2AM54TUK.js";
3
+ } from "../chunk-CB43W53J.js";
4
+ import "../chunk-R56PH7YE.js";
5
+ import "../chunk-4UJATBTG.js";
6
6
  import {
7
7
  apiGet
8
- } from "../chunk-EJOI2ZGU.js";
9
- import "../chunk-KZRFUXGF.js";
8
+ } from "../chunk-CWFVBGX2.js";
9
+ import "../chunk-W2YERO7E.js";
10
10
  import "../chunk-EKJ2CABV.js";
11
11
  import "../chunk-NSBPE2FW.js";
12
12
 
@@ -3,11 +3,11 @@ import {
3
3
  } from "../../chunk-JFDWKLQC.js";
4
4
  import {
5
5
  BaseCommand
6
- } from "../../chunk-S56LOTGQ.js";
7
- import "../../chunk-OGVORIFM.js";
8
- import "../../chunk-2AM54TUK.js";
9
- import "../../chunk-EJOI2ZGU.js";
10
- import "../../chunk-KZRFUXGF.js";
6
+ } from "../../chunk-CB43W53J.js";
7
+ import "../../chunk-R56PH7YE.js";
8
+ import "../../chunk-4UJATBTG.js";
9
+ import "../../chunk-CWFVBGX2.js";
10
+ import "../../chunk-W2YERO7E.js";
11
11
  import "../../chunk-EKJ2CABV.js";
12
12
  import "../../chunk-NSBPE2FW.js";
13
13
 
@@ -3,11 +3,11 @@ import {
3
3
  } from "../../chunk-JFDWKLQC.js";
4
4
  import {
5
5
  BaseCommand
6
- } from "../../chunk-S56LOTGQ.js";
7
- import "../../chunk-OGVORIFM.js";
8
- import "../../chunk-2AM54TUK.js";
9
- import "../../chunk-EJOI2ZGU.js";
10
- import "../../chunk-KZRFUXGF.js";
6
+ } from "../../chunk-CB43W53J.js";
7
+ import "../../chunk-R56PH7YE.js";
8
+ import "../../chunk-4UJATBTG.js";
9
+ import "../../chunk-CWFVBGX2.js";
10
+ import "../../chunk-W2YERO7E.js";
11
11
  import "../../chunk-EKJ2CABV.js";
12
12
  import "../../chunk-NSBPE2FW.js";
13
13
 
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../chunk-S56LOTGQ.js";
4
- import "../chunk-OGVORIFM.js";
5
- import "../chunk-2AM54TUK.js";
6
- import "../chunk-EJOI2ZGU.js";
7
- import "../chunk-KZRFUXGF.js";
3
+ } from "../chunk-CB43W53J.js";
4
+ import "../chunk-R56PH7YE.js";
5
+ import "../chunk-4UJATBTG.js";
6
+ import "../chunk-CWFVBGX2.js";
7
+ import "../chunk-W2YERO7E.js";
8
8
  import "../chunk-EKJ2CABV.js";
9
9
  import "../chunk-NSBPE2FW.js";
10
10
 
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  BaseCommand
3
- } from "../../chunk-S56LOTGQ.js";
4
- import "../../chunk-OGVORIFM.js";
5
- import "../../chunk-2AM54TUK.js";
3
+ } from "../../chunk-CB43W53J.js";
4
+ import "../../chunk-R56PH7YE.js";
5
+ import "../../chunk-4UJATBTG.js";
6
6
  import {
7
7
  apiPost
8
- } from "../../chunk-EJOI2ZGU.js";
9
- import "../../chunk-KZRFUXGF.js";
8
+ } from "../../chunk-CWFVBGX2.js";
9
+ import "../../chunk-W2YERO7E.js";
10
10
  import "../../chunk-EKJ2CABV.js";
11
11
  import "../../chunk-NSBPE2FW.js";
12
12
 
@@ -4,13 +4,13 @@ import {
4
4
  } from "../../chunk-BZDKEQKU.js";
5
5
  import {
6
6
  BaseCommand
7
- } from "../../chunk-S56LOTGQ.js";
8
- import "../../chunk-OGVORIFM.js";
9
- import "../../chunk-2AM54TUK.js";
7
+ } from "../../chunk-CB43W53J.js";
8
+ import "../../chunk-R56PH7YE.js";
9
+ import "../../chunk-4UJATBTG.js";
10
10
  import {
11
11
  apiGet
12
- } from "../../chunk-EJOI2ZGU.js";
13
- import "../../chunk-KZRFUXGF.js";
12
+ } from "../../chunk-CWFVBGX2.js";
13
+ import "../../chunk-W2YERO7E.js";
14
14
  import "../../chunk-EKJ2CABV.js";
15
15
  import "../../chunk-NSBPE2FW.js";
16
16