@rulemetric/cli 0.1.1 → 0.2.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 (251) hide show
  1. package/README.md +66 -0
  2. package/dist/base-command.d.ts.map +1 -1
  3. package/dist/base-command.js +15 -0
  4. package/dist/base-command.js.map +1 -1
  5. package/dist/commands/auth/login.d.ts.map +1 -1
  6. package/dist/commands/auth/login.js +7 -0
  7. package/dist/commands/auth/login.js.map +1 -1
  8. package/dist/commands/crons/list.d.ts +7 -0
  9. package/dist/commands/crons/list.d.ts.map +1 -0
  10. package/dist/commands/crons/list.js +24 -0
  11. package/dist/commands/crons/list.js.map +1 -0
  12. package/dist/commands/crons/run.d.ts +13 -0
  13. package/dist/commands/crons/run.d.ts.map +1 -0
  14. package/dist/commands/crons/run.js +48 -0
  15. package/dist/commands/crons/run.js.map +1 -0
  16. package/dist/commands/evals/listen.d.ts +28 -2
  17. package/dist/commands/evals/listen.d.ts.map +1 -1
  18. package/dist/commands/evals/listen.js +159 -25
  19. package/dist/commands/evals/listen.js.map +1 -1
  20. package/dist/commands/evals/listen.test.d.ts +2 -0
  21. package/dist/commands/evals/listen.test.d.ts.map +1 -0
  22. package/dist/commands/evals/listen.test.js +48 -0
  23. package/dist/commands/evals/listen.test.js.map +1 -0
  24. package/dist/commands/gateway/ensure.js +1 -1
  25. package/dist/commands/gateway/ensure.js.map +1 -1
  26. package/dist/commands/hooks/install.d.ts.map +1 -1
  27. package/dist/commands/hooks/install.js +40 -3
  28. package/dist/commands/hooks/install.js.map +1 -1
  29. package/dist/commands/hooks/run.js +1 -1
  30. package/dist/commands/hooks/run.js.map +1 -1
  31. package/dist/commands/hooks/uninstall.d.ts.map +1 -1
  32. package/dist/commands/hooks/uninstall.js +9 -1
  33. package/dist/commands/hooks/uninstall.js.map +1 -1
  34. package/dist/commands/org/current.d.ts +7 -0
  35. package/dist/commands/org/current.d.ts.map +1 -0
  36. package/dist/commands/org/current.js +70 -0
  37. package/dist/commands/org/current.js.map +1 -0
  38. package/dist/commands/org/list.d.ts +7 -0
  39. package/dist/commands/org/list.d.ts.map +1 -0
  40. package/dist/commands/org/list.js +37 -0
  41. package/dist/commands/org/list.js.map +1 -0
  42. package/dist/commands/org/switch.d.ts +13 -0
  43. package/dist/commands/org/switch.d.ts.map +1 -0
  44. package/dist/commands/org/switch.js +52 -0
  45. package/dist/commands/org/switch.js.map +1 -0
  46. package/dist/commands/proxy/restart.d.ts +11 -0
  47. package/dist/commands/proxy/restart.d.ts.map +1 -0
  48. package/dist/commands/proxy/restart.js +36 -0
  49. package/dist/commands/proxy/restart.js.map +1 -0
  50. package/dist/commands/proxy/start.d.ts.map +1 -1
  51. package/dist/commands/proxy/start.js +4 -0
  52. package/dist/commands/proxy/start.js.map +1 -1
  53. package/dist/commands/service/install.d.ts +16 -0
  54. package/dist/commands/service/install.d.ts.map +1 -1
  55. package/dist/commands/service/install.js +145 -6
  56. package/dist/commands/service/install.js.map +1 -1
  57. package/dist/commands/service/uninstall.d.ts.map +1 -1
  58. package/dist/commands/service/uninstall.js +28 -0
  59. package/dist/commands/service/uninstall.js.map +1 -1
  60. package/dist/commands/sessions/start.d.ts.map +1 -1
  61. package/dist/commands/sessions/start.js +5 -0
  62. package/dist/commands/sessions/start.js.map +1 -1
  63. package/dist/commands/signals/report.d.ts +10 -0
  64. package/dist/commands/signals/report.d.ts.map +1 -0
  65. package/dist/commands/signals/report.js +35 -0
  66. package/dist/commands/signals/report.js.map +1 -0
  67. package/dist/commands/signals/report.test.d.ts +2 -0
  68. package/dist/commands/signals/report.test.d.ts.map +1 -0
  69. package/dist/commands/signals/report.test.js +65 -0
  70. package/dist/commands/signals/report.test.js.map +1 -0
  71. package/dist/commands/skills/export-approved.d.ts +10 -0
  72. package/dist/commands/skills/export-approved.d.ts.map +1 -0
  73. package/dist/commands/skills/export-approved.js +31 -0
  74. package/dist/commands/skills/export-approved.js.map +1 -0
  75. package/dist/commands/skills/publish.d.ts +17 -0
  76. package/dist/commands/skills/publish.d.ts.map +1 -0
  77. package/dist/commands/skills/publish.js +80 -0
  78. package/dist/commands/skills/publish.js.map +1 -0
  79. package/dist/commands/skills/update.d.ts +3 -0
  80. package/dist/commands/skills/update.d.ts.map +1 -1
  81. package/dist/commands/skills/update.js +17 -6
  82. package/dist/commands/skills/update.js.map +1 -1
  83. package/dist/commands/suggestions/accept.d.ts +16 -0
  84. package/dist/commands/suggestions/accept.d.ts.map +1 -0
  85. package/dist/commands/suggestions/accept.js +61 -0
  86. package/dist/commands/suggestions/accept.js.map +1 -0
  87. package/dist/commands/suggestions/accept.test.d.ts +2 -0
  88. package/dist/commands/suggestions/accept.test.d.ts.map +1 -0
  89. package/dist/commands/suggestions/accept.test.js +52 -0
  90. package/dist/commands/suggestions/accept.test.js.map +1 -0
  91. package/dist/commands/suggestions/dismiss.d.ts +10 -0
  92. package/dist/commands/suggestions/dismiss.d.ts.map +1 -0
  93. package/dist/commands/suggestions/dismiss.js +26 -0
  94. package/dist/commands/suggestions/dismiss.js.map +1 -0
  95. package/dist/commands/suggestions/list.d.ts +10 -0
  96. package/dist/commands/suggestions/list.d.ts.map +1 -0
  97. package/dist/commands/suggestions/list.js +40 -0
  98. package/dist/commands/suggestions/list.js.map +1 -0
  99. package/dist/commands/suggestions/refresh.d.ts +7 -0
  100. package/dist/commands/suggestions/refresh.d.ts.map +1 -0
  101. package/dist/commands/suggestions/refresh.js +11 -0
  102. package/dist/commands/suggestions/refresh.js.map +1 -0
  103. package/dist/dashboard/Dashboard.d.ts.map +1 -1
  104. package/dist/dashboard/Dashboard.js +7 -1
  105. package/dist/dashboard/Dashboard.js.map +1 -1
  106. package/dist/lib/active-org-refresh.d.ts +22 -0
  107. package/dist/lib/active-org-refresh.d.ts.map +1 -0
  108. package/dist/lib/active-org-refresh.js +108 -0
  109. package/dist/lib/active-org-refresh.js.map +1 -0
  110. package/dist/lib/active-org-refresh.test.d.ts +2 -0
  111. package/dist/lib/active-org-refresh.test.d.ts.map +1 -0
  112. package/dist/lib/active-org-refresh.test.js +190 -0
  113. package/dist/lib/active-org-refresh.test.js.map +1 -0
  114. package/dist/lib/active-org.d.ts +43 -0
  115. package/dist/lib/active-org.d.ts.map +1 -0
  116. package/dist/lib/active-org.js +96 -0
  117. package/dist/lib/active-org.js.map +1 -0
  118. package/dist/lib/active-org.test.d.ts +2 -0
  119. package/dist/lib/active-org.test.d.ts.map +1 -0
  120. package/dist/lib/active-org.test.js +147 -0
  121. package/dist/lib/active-org.test.js.map +1 -0
  122. package/dist/lib/cron-registry.d.ts +47 -0
  123. package/dist/lib/cron-registry.d.ts.map +1 -0
  124. package/dist/lib/cron-registry.js +102 -0
  125. package/dist/lib/cron-registry.js.map +1 -0
  126. package/dist/lib/cron-registry.test.d.ts +2 -0
  127. package/dist/lib/cron-registry.test.d.ts.map +1 -0
  128. package/dist/lib/cron-registry.test.js +136 -0
  129. package/dist/lib/cron-registry.test.js.map +1 -0
  130. package/dist/lib/cron-runner.d.ts +16 -0
  131. package/dist/lib/cron-runner.d.ts.map +1 -0
  132. package/dist/lib/cron-runner.js +68 -0
  133. package/dist/lib/cron-runner.js.map +1 -0
  134. package/dist/lib/detect-languages.d.ts +7 -0
  135. package/dist/lib/detect-languages.d.ts.map +1 -0
  136. package/dist/lib/detect-languages.js +113 -0
  137. package/dist/lib/detect-languages.js.map +1 -0
  138. package/dist/lib/detect-languages.test.d.ts +2 -0
  139. package/dist/lib/detect-languages.test.d.ts.map +1 -0
  140. package/dist/lib/detect-languages.test.js +29 -0
  141. package/dist/lib/detect-languages.test.js.map +1 -0
  142. package/dist/lib/eval-executor.d.ts.map +1 -1
  143. package/dist/lib/eval-executor.js +5 -2
  144. package/dist/lib/eval-executor.js.map +1 -1
  145. package/dist/lib/gateway-entry.js +4 -1
  146. package/dist/lib/gateway-entry.js.map +1 -1
  147. package/dist/lib/gateway-lifecycle.d.ts +1 -1
  148. package/dist/lib/gateway-lifecycle.d.ts.map +1 -1
  149. package/dist/lib/gateway-lifecycle.js +13 -2
  150. package/dist/lib/gateway-lifecycle.js.map +1 -1
  151. package/dist/lib/gateway.d.ts +4 -5
  152. package/dist/lib/gateway.d.ts.map +1 -1
  153. package/dist/lib/gateway.js +68 -2
  154. package/dist/lib/gateway.js.map +1 -1
  155. package/dist/lib/graphile-worker-runner.d.ts +124 -0
  156. package/dist/lib/graphile-worker-runner.d.ts.map +1 -0
  157. package/dist/lib/graphile-worker-runner.js +526 -0
  158. package/dist/lib/graphile-worker-runner.js.map +1 -0
  159. package/dist/lib/graphile-worker-runner.test.d.ts +2 -0
  160. package/dist/lib/graphile-worker-runner.test.d.ts.map +1 -0
  161. package/dist/lib/graphile-worker-runner.test.js +153 -0
  162. package/dist/lib/graphile-worker-runner.test.js.map +1 -0
  163. package/dist/lib/handlers/cron-close-stale-sessions.d.ts +3 -0
  164. package/dist/lib/handlers/cron-close-stale-sessions.d.ts.map +1 -0
  165. package/dist/lib/handlers/cron-close-stale-sessions.js +8 -0
  166. package/dist/lib/handlers/cron-close-stale-sessions.js.map +1 -0
  167. package/dist/lib/handlers/cron-data-integrity-audit.d.ts +3 -0
  168. package/dist/lib/handlers/cron-data-integrity-audit.d.ts.map +1 -0
  169. package/dist/lib/handlers/cron-data-integrity-audit.js +16 -0
  170. package/dist/lib/handlers/cron-data-integrity-audit.js.map +1 -0
  171. package/dist/lib/handlers/cron-refresh-skills.d.ts +3 -0
  172. package/dist/lib/handlers/cron-refresh-skills.d.ts.map +1 -0
  173. package/dist/lib/handlers/cron-refresh-skills.js +91 -0
  174. package/dist/lib/handlers/cron-refresh-skills.js.map +1 -0
  175. package/dist/lib/handlers/cron-refresh-skills.test.d.ts +2 -0
  176. package/dist/lib/handlers/cron-refresh-skills.test.d.ts.map +1 -0
  177. package/dist/lib/handlers/cron-refresh-skills.test.js +114 -0
  178. package/dist/lib/handlers/cron-refresh-skills.test.js.map +1 -0
  179. package/dist/lib/handlers/cron-regenerate-insights.d.ts +3 -0
  180. package/dist/lib/handlers/cron-regenerate-insights.d.ts.map +1 -0
  181. package/dist/lib/handlers/cron-regenerate-insights.js +6 -0
  182. package/dist/lib/handlers/cron-regenerate-insights.js.map +1 -0
  183. package/dist/lib/handlers/cron-suggest-instructions.d.ts +3 -0
  184. package/dist/lib/handlers/cron-suggest-instructions.d.ts.map +1 -0
  185. package/dist/lib/handlers/cron-suggest-instructions.js +159 -0
  186. package/dist/lib/handlers/cron-suggest-instructions.js.map +1 -0
  187. package/dist/lib/handlers/cron-suggest-instructions.test.d.ts +2 -0
  188. package/dist/lib/handlers/cron-suggest-instructions.test.d.ts.map +1 -0
  189. package/dist/lib/handlers/cron-suggest-instructions.test.js +80 -0
  190. package/dist/lib/handlers/cron-suggest-instructions.test.js.map +1 -0
  191. package/dist/lib/handlers/process-conversation.d.ts +35 -0
  192. package/dist/lib/handlers/process-conversation.d.ts.map +1 -0
  193. package/dist/lib/handlers/process-conversation.js +35 -0
  194. package/dist/lib/handlers/process-conversation.js.map +1 -0
  195. package/dist/lib/handlers/process-eval.d.ts +32 -0
  196. package/dist/lib/handlers/process-eval.d.ts.map +1 -0
  197. package/dist/lib/handlers/process-eval.js +207 -0
  198. package/dist/lib/handlers/process-eval.js.map +1 -0
  199. package/dist/lib/handlers/process-insights.d.ts +39 -0
  200. package/dist/lib/handlers/process-insights.d.ts.map +1 -0
  201. package/dist/lib/handlers/process-insights.js +300 -0
  202. package/dist/lib/handlers/process-insights.js.map +1 -0
  203. package/dist/lib/handlers/process-launch.d.ts +29 -0
  204. package/dist/lib/handlers/process-launch.d.ts.map +1 -0
  205. package/dist/lib/handlers/process-launch.js +41 -0
  206. package/dist/lib/handlers/process-launch.js.map +1 -0
  207. package/dist/lib/hooks-config.d.ts +28 -4
  208. package/dist/lib/hooks-config.d.ts.map +1 -1
  209. package/dist/lib/hooks-config.js +138 -10
  210. package/dist/lib/hooks-config.js.map +1 -1
  211. package/dist/lib/llm-client.d.ts.map +1 -1
  212. package/dist/lib/llm-client.js +149 -16
  213. package/dist/lib/llm-client.js.map +1 -1
  214. package/dist/lib/mirror-writer-db.d.ts +12 -0
  215. package/dist/lib/mirror-writer-db.d.ts.map +1 -0
  216. package/dist/lib/mirror-writer-db.js +51 -0
  217. package/dist/lib/mirror-writer-db.js.map +1 -0
  218. package/dist/lib/mirror-writer.d.ts +35 -0
  219. package/dist/lib/mirror-writer.d.ts.map +1 -0
  220. package/dist/lib/mirror-writer.js +27 -0
  221. package/dist/lib/mirror-writer.js.map +1 -0
  222. package/dist/lib/mirror-writer.test.d.ts +2 -0
  223. package/dist/lib/mirror-writer.test.d.ts.map +1 -0
  224. package/dist/lib/mirror-writer.test.js +47 -0
  225. package/dist/lib/mirror-writer.test.js.map +1 -0
  226. package/dist/lib/permanent-job-error.d.ts +17 -0
  227. package/dist/lib/permanent-job-error.d.ts.map +1 -0
  228. package/dist/lib/permanent-job-error.js +23 -0
  229. package/dist/lib/permanent-job-error.js.map +1 -0
  230. package/dist/lib/permanent-job-error.test.d.ts +2 -0
  231. package/dist/lib/permanent-job-error.test.d.ts.map +1 -0
  232. package/dist/lib/permanent-job-error.test.js +29 -0
  233. package/dist/lib/permanent-job-error.test.js.map +1 -0
  234. package/dist/lib/version-check.d.ts +11 -0
  235. package/dist/lib/version-check.d.ts.map +1 -0
  236. package/dist/lib/version-check.js +106 -0
  237. package/dist/lib/version-check.js.map +1 -0
  238. package/oclif.manifest.json +611 -81
  239. package/package.json +19 -5
  240. package/dist/commands/insights/sync.d.ts +0 -17
  241. package/dist/commands/insights/sync.d.ts.map +0 -1
  242. package/dist/commands/insights/sync.js +0 -477
  243. package/dist/commands/insights/sync.js.map +0 -1
  244. package/dist/lib/eval-worker.d.ts +0 -12
  245. package/dist/lib/eval-worker.d.ts.map +0 -1
  246. package/dist/lib/eval-worker.js +0 -395
  247. package/dist/lib/eval-worker.js.map +0 -1
  248. package/dist/lib/insights-worker.d.ts +0 -10
  249. package/dist/lib/insights-worker.d.ts.map +0 -1
  250. package/dist/lib/insights-worker.js +0 -329
  251. package/dist/lib/insights-worker.js.map +0 -1
@@ -4,6 +4,7 @@ import { execSync, execFileSync } from 'node:child_process';
4
4
  import { homedir } from 'node:os';
5
5
  import { dirname, join } from 'node:path';
6
6
  import { BaseCommand } from '../../base-command.js';
7
+ import { bootstrapActiveOrg } from '../../lib/active-org-refresh.js';
7
8
  // Only these env vars are written to the plist — never leak unrelated secrets
8
9
  const ALLOWED_ENV_VARS = new Set([
9
10
  'SUPABASE_URL',
@@ -13,11 +14,23 @@ const ALLOWED_ENV_VARS = new Set([
13
14
  'RULEMETRIC_API_URL',
14
15
  'RULEMETRIC_API_KEY',
15
16
  'RULEMETRIC_ACCESS_TOKEN',
17
+ // Recipient for the weekly cron_data_integrity_audit notification.
18
+ // Without one of these, the audit cron runs but nobody is notified —
19
+ // see cron-data-integrity-audit.ts (defaults: NOTIFY_USER_ID then USER_ID).
20
+ 'RULEMETRIC_AUDIT_NOTIFY_USER_ID',
21
+ 'RULEMETRIC_USER_ID',
16
22
  ]);
17
23
  const PLIST_LABEL = 'com.rulemetric.api';
18
24
  const PLIST_PATH = join(homedir(), 'Library', 'LaunchAgents', `${PLIST_LABEL}.plist`);
19
25
  const WORKER_PLIST_LABEL = 'com.rulemetric.worker';
20
26
  const WORKER_PLIST_PATH = join(homedir(), 'Library', 'LaunchAgents', `${WORKER_PLIST_LABEL}.plist`);
27
+ // Daily kickstart agent — closes the graphile-LISTEN-wedge class observed
28
+ // at ~25h uptime by ensuring the worker is restarted clean every day at
29
+ // 04:00 local time. Sibling agent, separate launchd job, depends on
30
+ // WORKER_PLIST_LABEL existing. Without this, end users would hit the
31
+ // same wedge every ~day and have to debug it manually.
32
+ const WORKER_RESTART_PLIST_LABEL = 'com.rulemetric.worker.restart';
33
+ const WORKER_RESTART_PLIST_PATH = join(homedir(), 'Library', 'LaunchAgents', `${WORKER_RESTART_PLIST_LABEL}.plist`);
21
34
  const CONFIG_DIR = join(homedir(), '.config', 'rulemetric');
22
35
  const LOG_DIR = join(CONFIG_DIR, 'logs');
23
36
  export default class ServiceInstall extends BaseCommand {
@@ -168,7 +181,40 @@ export default class ServiceInstall extends BaseCommand {
168
181
  this.warn(`Could not load worker service: ${loadErr.message.trim()}`);
169
182
  }
170
183
  }
184
+ // --- Worker daily auto-restart agent ---
185
+ // Closes the graphile-LISTEN-wedge class (observed at ~25h worker uptime).
186
+ // Without this, end users would hit a silent wedge every ~day where the
187
+ // worker stays "alive" but stops claiming jobs. With this, launchd
188
+ // kickstarts the worker every day at 04:00 local time; KeepAlive on the
189
+ // worker plist then respawns it clean, and the reclaimStaleLocks() boot
190
+ // step in graphile-worker-runner.ts releases any in-flight locks the
191
+ // old process was holding. See worker:restart helper for the manual path.
171
192
  this.log('');
193
+ this.log('Installing worker auto-restart agent (daily 04:00)...');
194
+ const restartPlist = this.buildWorkerRestartPlist({ uid });
195
+ try {
196
+ execFileSync('launchctl', ['bootout', `gui/${uid}`, WORKER_RESTART_PLIST_PATH], { encoding: 'utf-8' });
197
+ }
198
+ catch {
199
+ // Expected if not loaded
200
+ }
201
+ writeFileSync(WORKER_RESTART_PLIST_PATH, restartPlist, { mode: 0o600 });
202
+ this.log(`[OK] Restart agent plist written to ${WORKER_RESTART_PLIST_PATH}`);
203
+ try {
204
+ execFileSync('launchctl', ['bootstrap', `gui/${uid}`, WORKER_RESTART_PLIST_PATH]);
205
+ this.log('[OK] Restart agent loaded into launchd (daily kickstart at 04:00)');
206
+ }
207
+ catch (bootstrapErr) {
208
+ try {
209
+ execFileSync('launchctl', ['load', WORKER_RESTART_PLIST_PATH]);
210
+ this.log('[OK] Restart agent loaded into launchd (legacy)');
211
+ }
212
+ catch (loadErr) {
213
+ this.warn(`Could not load restart agent: ${loadErr.message.trim()}`);
214
+ }
215
+ }
216
+ this.log('');
217
+ this.log('All three services installed: API + worker + daily worker restart.');
172
218
  this.log('Both API and worker will start automatically on login and restart on crash.');
173
219
  this.log('The worker processes eval jobs, insights jobs, and session analysis.');
174
220
  this.log('');
@@ -178,6 +224,10 @@ export default class ServiceInstall extends BaseCommand {
178
224
  this.log('Manage with:');
179
225
  this.log(' rulemetric service status — check if running');
180
226
  this.log(' rulemetric service uninstall — remove the service');
227
+ // Ensure the active-org cache reflects the user's current active_org_id
228
+ // before the worker spawns its first capture. Belt-and-suspenders with
229
+ // BaseCommand's guarded refresh.
230
+ await bootstrapActiveOrg();
181
231
  }
182
232
  findProjectRoot() {
183
233
  // Check env var override
@@ -306,7 +356,17 @@ ${envEntries}
306
356
  })
307
357
  .map(([k, v]) => ` <key>${escapeXml(k)}</key>\n <string>${escapeXml(v)}</string>`)
308
358
  .join('\n');
309
- // Use pnpm to run the CLI command works without global install
359
+ // Run the CLI bin directly via node. Earlier this used
360
+ // `pnpm --filter @rulemetric/cli exec rulemetric` but pnpm-exec couldn't
361
+ // resolve the workspace bin symlink reliably under launchd, crash-looping
362
+ // with `Command "rulemetric" not found`. Direct node invocation is both
363
+ // simpler (one process less) and avoids the bin-symlink lookup entirely.
364
+ const cliBin = join(projectRoot, 'apps', 'cli', 'bin', 'run.js');
365
+ // Watch the CLI's dist directory: when `pnpm build` overwrites it, launchd
366
+ // bounces the worker so a freshly-built version of the eval-worker code
367
+ // (e.g. with a new job-kind capability) takes effect without a manual
368
+ // kickstart. WatchPaths fires on any change beneath the directory.
369
+ const cliDist = join(projectRoot, 'apps', 'cli', 'dist');
310
370
  return `<?xml version="1.0" encoding="UTF-8"?>
311
371
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
312
372
  <plist version="1.0">
@@ -316,11 +376,8 @@ ${envEntries}
316
376
 
317
377
  <key>ProgramArguments</key>
318
378
  <array>
319
- <string>${escapeXml(pnpmPath)}</string>
320
- <string>--filter</string>
321
- <string>@rulemetric/cli</string>
322
- <string>exec</string>
323
- <string>rulemetric</string>
379
+ <string>${escapeXml(nodePath)}</string>
380
+ <string>${escapeXml(cliBin)}</string>
324
381
  <string>evals</string>
325
382
  <string>listen</string>
326
383
  </array>
@@ -345,6 +402,11 @@ ${envEntries}
345
402
  <key>ThrottleInterval</key>
346
403
  <integer>15</integer>
347
404
 
405
+ <key>WatchPaths</key>
406
+ <array>
407
+ <string>${escapeXml(cliDist)}</string>
408
+ </array>
409
+
348
410
  <key>StandardOutPath</key>
349
411
  <string>${escapeXml(join(LOG_DIR, 'worker-stdout.log'))}</string>
350
412
 
@@ -355,6 +417,83 @@ ${envEntries}
355
417
  <string>Background</string>
356
418
  </dict>
357
419
  </plist>
420
+ `;
421
+ }
422
+ /**
423
+ * Plist for the daily worker auto-restart agent. Fires at 04:00 local
424
+ * time and runs `launchctl kickstart -k gui/<uid>/com.rulemetric.worker`
425
+ * which terminates the running worker process; KeepAlive on the worker
426
+ * plist then respawns it clean. UID is dynamic (caller passes id -u
427
+ * output) so this works on any laptop, not just the developer's.
428
+ *
429
+ * Without this agent, the worker silently wedges around ~25h of uptime
430
+ * (graphile-worker's LISTEN socket dies, heartbeats continue, but no new
431
+ * jobs claimed). The watchdog correctly refuses to suicide the process
432
+ * (per the 2026-05-18 supavisor cascade lessons), so without auto-restart
433
+ * the wedge sits indefinitely until an operator notices and kicks it.
434
+ * End users shouldn't have to debug this — that's why it's part of
435
+ * `service install`.
436
+ */
437
+ buildWorkerRestartPlist(opts) {
438
+ const { uid } = opts;
439
+ return `<?xml version="1.0" encoding="UTF-8"?>
440
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
441
+ <plist version="1.0">
442
+ <dict>
443
+ <key>Label</key>
444
+ <string>${WORKER_RESTART_PLIST_LABEL}</string>
445
+
446
+ <key>ProgramArguments</key>
447
+ <array>
448
+ <string>/bin/launchctl</string>
449
+ <string>kickstart</string>
450
+ <string>-k</string>
451
+ <string>gui/${escapeXml(uid)}/${WORKER_PLIST_LABEL}</string>
452
+ </array>
453
+
454
+ <!-- Fire every 6 hours (00:00, 06:00, 12:00, 18:00 local). The original
455
+ daily schedule (04:00 only) capped the wedge window at <=24h, but
456
+ we observed the graphile-LISTEN-wedge firing 4x in 28h during the
457
+ 2026-05-24 testing — well before the 24h cap. Quartering the
458
+ cadence drops the worst-case end-user-blocking window to <=6h.
459
+ Each restart is ~5s of worker downtime; 4x/day = 20s/day total. -->
460
+ <key>StartCalendarInterval</key>
461
+ <array>
462
+ <dict>
463
+ <key>Hour</key>
464
+ <integer>0</integer>
465
+ <key>Minute</key>
466
+ <integer>0</integer>
467
+ </dict>
468
+ <dict>
469
+ <key>Hour</key>
470
+ <integer>6</integer>
471
+ <key>Minute</key>
472
+ <integer>0</integer>
473
+ </dict>
474
+ <dict>
475
+ <key>Hour</key>
476
+ <integer>12</integer>
477
+ <key>Minute</key>
478
+ <integer>0</integer>
479
+ </dict>
480
+ <dict>
481
+ <key>Hour</key>
482
+ <integer>18</integer>
483
+ <key>Minute</key>
484
+ <integer>0</integer>
485
+ </dict>
486
+ </array>
487
+
488
+ <key>RunAtLoad</key>
489
+ <false/>
490
+
491
+ <key>StandardErrorPath</key>
492
+ <string>${escapeXml(join(LOG_DIR, 'worker-restart.log'))}</string>
493
+ <key>StandardOutPath</key>
494
+ <string>${escapeXml(join(LOG_DIR, 'worker-restart.log'))}</string>
495
+ </dict>
496
+ </plist>
358
497
  `;
359
498
  }
360
499
  async waitForApi(port, timeoutSecs) {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/service/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,8EAA8E;AAC9E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,cAAc;IACd,mBAAmB;IACnB,2BAA2B;IAC3B,cAAc;IACd,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;CAC1B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,WAAW,QAAQ,CAAC,CAAC;AACtF,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,kBAAkB,QAAQ,CAAC,CAAC;AACpG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEzC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD,MAAM,CAAU,WAAW,GAAG,gEAAgE,CAAC;IAE/F,MAAM,CAAU,QAAQ,GAAG;QACzB,mCAAmC;QACnC,+CAA+C;KAChD,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,iBAAiB;SAC/B,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,0CAA0C;SACxD,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,aAAa;QACb,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACpG,CAAC;QAED,6BAA6B;QAC7B,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,SAAS,CAAC,CAAC;YAC3D,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,uDAAuD,CAAC,CAAC;gBAC/E,IAAI,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;QAED,kDAAkD;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CACR,6HAA6H,CAC9H,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,2BAA2B,QAAQ,gDAAgD,CAAC,CAAC;QAClG,CAAC;QAED,6DAA6D;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE9C,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC3E,CAAC;QAED,kBAAkB;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,IAAI;YACJ,WAAW;YACX,QAAQ;YACR,QAAQ;YACR,OAAO;SACR,CAAC,CAAC;QAEH,qBAAqB;QACrB,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,qCAAqC;QACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,YAAY,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,IAAI,EAAE,CAAC;YACzC,4CAA4C;YAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACjI,IAAI,CAAC,IAAI,CAAC,sCAAsC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;QAExD,mBAAmB;QACnB,IAAI,CAAC;YACH,YAAY,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,qBAAsB,YAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC;YACjG,IAAI,CAAC;gBACH,YAAY,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBAChD,IAAI,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CACR,2BAA2B;oBAC3B,gBAAiB,YAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;oBAC1D,WAAY,OAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI;oBAChD,yCAAyC,GAAG,KAAK,UAAU,GAAG,CAC/D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,GAAG,CAAC,4BAA4B,IAAI,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEhD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,iBAAiB,CAAC,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,iBAAiB,CAAC,CAAC;QAClD,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACxC,WAAW;YACX,QAAQ;YACR,QAAQ;YACR,OAAO;SACR,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,CAAC;YACH,YAAY,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;QAED,aAAa,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,gCAAgC,iBAAiB,EAAE,CAAC,CAAC;QAE9D,IAAI,CAAC;YACH,YAAY,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,YAAY,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAC/D,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,kCAAmC,OAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;QACxF,IAAI,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QAClF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IAClE,CAAC;IAEO,eAAe;QACrB,yBAAyB;QACzB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;YACxC,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC7C,CAAC;QACD,mDAAmD;QACnD,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBACzD,OAAO,GAAG,CAAC;YACb,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/B,IAAI,MAAM,KAAK,GAAG;gBAAE,MAAM;YAC1B,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;QAChH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,WAAmB;QACrC,MAAM,IAAI,GAA2B,EAAE,CAAC;QAExC,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,IAMlB;QACC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAEhE,oFAAoF;QACpF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5G,iCAAiC;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;YAChC,GAAG,OAAO;YACV,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;YAClB,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,CAAC;aACC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,SAAS,CAAC,CAAC,CAAC,yBAAyB,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;aAC3F,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;;;;;YAKC,WAAW;;;;cAIT,SAAS,CAAC,QAAQ,CAAC;;;;;;;YAOrB,SAAS,CAAC,WAAW,CAAC;;;;EAIhC,UAAU;;;;;;;;;;;;;;;;YAgBA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;;;YAG1C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;;;;;;CAMrD,CAAC;IACA,CAAC;IAEO,gBAAgB,CAAC,IAKxB;QACC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAE1D,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5G,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;YAChC,GAAG,OAAO;YACV,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,CAAC;aACC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,SAAS,CAAC,CAAC,CAAC,yBAAyB,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;aAC3F,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,iEAAiE;QACjE,OAAO;;;;;YAKC,kBAAkB;;;;cAIhB,SAAS,CAAC,QAAQ,CAAC;;;;;;;;;;YAUrB,SAAS,CAAC,WAAW,CAAC;;;;EAIhC,UAAU;;;;;;;;;;;;;;;;YAgBA,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;;;YAG7C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;;;;;;CAMxD,CAAC;IACA,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,WAAmB;QACxD,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,SAAS,CAAC,CAAC;gBAC3D,IAAI,GAAG,CAAC,EAAE;oBAAE,OAAO,IAAI,CAAC;gBACxB,SAAS,GAAG,yBAAyB,GAAG,CAAC,MAAM,EAAE,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAI,GAAa,CAAC,OAAO,CAAC;YACrC,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;;AAGH,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtG,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/service/install.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/service/uninstall.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,OAAgB,WAAW,SAAoD;IAEzE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoE3B"}
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/service/uninstall.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,OAAgB,WAAW,SAAoD;IAEzE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4F3B"}
@@ -7,6 +7,8 @@ const PLIST_LABEL = 'com.rulemetric.api';
7
7
  const PLIST_PATH = join(homedir(), 'Library', 'LaunchAgents', `${PLIST_LABEL}.plist`);
8
8
  const WORKER_PLIST_LABEL = 'com.rulemetric.worker';
9
9
  const WORKER_PLIST_PATH = join(homedir(), 'Library', 'LaunchAgents', `${WORKER_PLIST_LABEL}.plist`);
10
+ const WORKER_RESTART_PLIST_LABEL = 'com.rulemetric.worker.restart';
11
+ const WORKER_RESTART_PLIST_PATH = join(homedir(), 'Library', 'LaunchAgents', `${WORKER_RESTART_PLIST_LABEL}.plist`);
10
12
  export default class ServiceUninstall extends BaseCommand {
11
13
  static description = 'Remove the RuleMetric API service from launchd';
12
14
  async run() {
@@ -76,6 +78,32 @@ export default class ServiceUninstall extends BaseCommand {
76
78
  this.warn(`Could not remove worker plist. Try: rm "${WORKER_PLIST_PATH}"`);
77
79
  }
78
80
  }
81
+ // Stop and remove worker daily auto-restart agent (installed by `service
82
+ // install` alongside the worker plist). Removing only this leaves the
83
+ // worker running but vulnerable to the ~25h wedge — same trade-off as
84
+ // skipping install of the restart agent, which we removed support for.
85
+ if (existsSync(WORKER_RESTART_PLIST_PATH)) {
86
+ try {
87
+ execFileSync('launchctl', ['bootout', `gui/${uid}`, WORKER_RESTART_PLIST_PATH], { encoding: 'utf-8' });
88
+ this.log('[OK] Worker restart agent stopped');
89
+ }
90
+ catch {
91
+ try {
92
+ execFileSync('launchctl', ['unload', WORKER_RESTART_PLIST_PATH], { encoding: 'utf-8' });
93
+ this.log('[OK] Worker restart agent stopped (legacy)');
94
+ }
95
+ catch {
96
+ this.log('[OK] Worker restart agent was not running');
97
+ }
98
+ }
99
+ try {
100
+ unlinkSync(WORKER_RESTART_PLIST_PATH);
101
+ this.log(`[OK] Removed ${WORKER_RESTART_PLIST_PATH}`);
102
+ }
103
+ catch {
104
+ this.warn(`Could not remove restart agent plist. Try: rm "${WORKER_RESTART_PLIST_PATH}"`);
105
+ }
106
+ }
79
107
  this.log('');
80
108
  this.log('The API and worker will no longer start automatically.');
81
109
  this.log('Use scripts/start.sh to run them manually when needed.');
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/service/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/service/uninstall.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/sessions/start.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,OAAgB,WAAW,SAC2C;IAEtE,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;MAUnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4D3B"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/sessions/start.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAUpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,OAAgB,WAAW,SAC2C;IAEtE,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;MAUnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiE3B"}
@@ -6,6 +6,7 @@ import { join } from 'node:path';
6
6
  import { execSync } from 'node:child_process';
7
7
  import { BaseCommand } from '../../base-command.js';
8
8
  import { apiPost } from '../../lib/api-client.js';
9
+ import { readActiveOrg } from '../../lib/active-org.js';
9
10
  export default class SessionsStart extends BaseCommand {
10
11
  static description = 'Start a capture session for any LLM provider (Cortex, Groq, etc.)';
11
12
  static examples = [
@@ -54,6 +55,9 @@ export default class SessionsStart extends BaseCommand {
54
55
  const metadata = {};
55
56
  if (gitRemote)
56
57
  metadata.gitRemote = gitRemote;
58
+ // Active org attribution (Phase 8.1). API validates membership and
59
+ // silently nulls the field if the user isn't a member.
60
+ const activeOrg = readActiveOrg();
57
61
  // Create session via API
58
62
  const session = await apiPost('/api/sessions', {
59
63
  tool: flags.tool,
@@ -61,6 +65,7 @@ export default class SessionsStart extends BaseCommand {
61
65
  projectPath,
62
66
  gitBranch,
63
67
  metadata,
68
+ orgId: activeOrg?.orgId ?? null,
64
69
  });
65
70
  // Write session file so the proxy can find it
66
71
  // Format: RuleMetric session ID (what session_linker.py reads)
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/sessions/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAc,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAQlD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAU,WAAW,GACzB,mEAAmE,CAAC;IAEtE,MAAM,CAAU,QAAQ,GAAG;QACzB,gDAAgD;QAChD,6EAA6E;QAC7E,oFAAoF;KACrF,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,sEAAsE;SACpF,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;SACnD,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAG,UAAU,EAAE,CAAC;QAEvC,oBAAoB;QACpB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,SAAS,GAAG,QAAQ,CAAC,uCAAuC,EAAE;gBAC5D,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QAED,oBAAoB;QACpB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,SAAS,GAAG,QAAQ,CAAC,uCAAuC,EAAE;gBAC5D,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QAED,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,IAAI,SAAS;YAAE,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAE9C,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAkB,eAAe,EAAE;YAC9D,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,iBAAiB;YACjB,WAAW;YACX,SAAS;YACT,QAAQ;SACT,CAAC,CAAC;QAEH,8CAA8C;QAC9C,+DAA+D;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;QAChD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACxD,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAE9C,8BAA8B;QAC9B,aAAa,CAAC,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3C,IAAI,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC;QACtC,IAAI,SAAS;YAAE,IAAI,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACtD,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/sessions/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SignalsReport extends BaseCommand {
3
+ static description: string;
4
+ static hidden: boolean;
5
+ static flags: {
6
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/commands/signals/report.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,OAAgB,WAAW,SACqD;IAEhF,OAAgB,MAAM,UAAQ;IAC9B,OAAgB,KAAK;;MAInB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB3B"}
@@ -0,0 +1,35 @@
1
+ import path from 'node:path';
2
+ import { Flags } from '@oclif/core';
3
+ import { BaseCommand } from '../../base-command.js';
4
+ import { apiPost } from '../../lib/api-client.js';
5
+ import { detectLanguages } from '../../lib/detect-languages.js';
6
+ export default class SignalsReport extends BaseCommand {
7
+ static description = 'Report filesystem-detected languages for the current project to the server.';
8
+ // Internal: only invoked by the session-start hook. Hidden from `rulemetric --help`.
9
+ static hidden = true;
10
+ static flags = {
11
+ cwd: Flags.string({
12
+ description: 'Project path to inspect (defaults to process.cwd())',
13
+ }),
14
+ };
15
+ async run() {
16
+ // Hook contract: this command MUST NEVER throw. The session-start hook
17
+ // backgrounds + disowns this process, but a non-zero exit with an
18
+ // unhandled rejection trace still pollutes stderr in some shells. Wrap
19
+ // the entire body — detectLanguages can throw on EACCES/EPERM, and the
20
+ // API call can throw for the obvious network reasons.
21
+ try {
22
+ this.requireAuth();
23
+ const { flags } = await this.parse(SignalsReport);
24
+ const projectPath = path.resolve(flags.cwd ?? process.cwd());
25
+ const detectedLanguages = detectLanguages(projectPath);
26
+ if (detectedLanguages.length === 0)
27
+ return;
28
+ await apiPost('/api/project-signals', { projectPath, detectedLanguages });
29
+ }
30
+ catch {
31
+ // Swallow — never block session start.
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/commands/signals/report.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAU,WAAW,GACzB,6EAA6E,CAAC;IAChF,qFAAqF;IACrF,MAAM,CAAU,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,qDAAqD;SACnE,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,uEAAuE;QACvE,kEAAkE;QAClE,uEAAuE;QACvE,uEAAuE;QACvE,sDAAsD;QACtD,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7D,MAAM,iBAAiB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC3C,MAAM,OAAO,CAAC,sBAAsB,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=report.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.test.d.ts","sourceRoot":"","sources":["../../../src/commands/signals/report.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { mkdtempSync, writeFileSync, rmSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import path from 'node:path';
5
+ const { apiPost } = vi.hoisted(() => ({ apiPost: vi.fn() }));
6
+ vi.mock('../../lib/api-client.js', () => ({
7
+ apiPost,
8
+ ApiError: class ApiError extends Error {
9
+ },
10
+ }));
11
+ // `requireAuth()` on BaseCommand calls `isAuthenticated()`, which returns
12
+ // true when RULEMETRIC_API_KEY is set in env.
13
+ const originalApiKey = process.env.RULEMETRIC_API_KEY;
14
+ const originalCwd = process.cwd();
15
+ import SignalsReport from './report.js';
16
+ describe('signals report', () => {
17
+ const tmpDirs = [];
18
+ beforeEach(() => {
19
+ apiPost.mockReset();
20
+ apiPost.mockResolvedValue({ ok: true });
21
+ process.env.RULEMETRIC_API_KEY = 'test-key';
22
+ });
23
+ afterEach(() => {
24
+ process.chdir(originalCwd);
25
+ if (originalApiKey === undefined)
26
+ delete process.env.RULEMETRIC_API_KEY;
27
+ else
28
+ process.env.RULEMETRIC_API_KEY = originalApiKey;
29
+ for (const d of tmpDirs.splice(0)) {
30
+ try {
31
+ rmSync(d, { recursive: true, force: true });
32
+ }
33
+ catch { /* noop */ }
34
+ }
35
+ });
36
+ it('POSTs detected languages for cwd', async () => {
37
+ const dir = mkdtempSync(path.join(tmpdir(), 'rm-signals-'));
38
+ tmpDirs.push(dir);
39
+ writeFileSync(path.join(dir, 'package.json'), '{}');
40
+ writeFileSync(path.join(dir, 'tsconfig.json'), '{}');
41
+ await SignalsReport.run(['--cwd', dir]);
42
+ expect(apiPost).toHaveBeenCalledTimes(1);
43
+ const [route, payload] = apiPost.mock.calls[0];
44
+ expect(route).toBe('/api/project-signals');
45
+ expect(payload).toMatchObject({
46
+ projectPath: expect.stringContaining(dir),
47
+ detectedLanguages: ['TypeScript'],
48
+ });
49
+ });
50
+ it('exits 0 silently when no signals detected', async () => {
51
+ const dir = mkdtempSync(path.join(tmpdir(), 'rm-signals-empty-'));
52
+ tmpDirs.push(dir);
53
+ await SignalsReport.run(['--cwd', dir]);
54
+ expect(apiPost).not.toHaveBeenCalled();
55
+ });
56
+ it('swallows API errors (never blocks session start)', async () => {
57
+ const dir = mkdtempSync(path.join(tmpdir(), 'rm-signals-err-'));
58
+ tmpDirs.push(dir);
59
+ writeFileSync(path.join(dir, 'package.json'), '{}');
60
+ writeFileSync(path.join(dir, 'tsconfig.json'), '{}');
61
+ apiPost.mockRejectedValue(new Error('boom'));
62
+ await expect(SignalsReport.run(['--cwd', dir])).resolves.toBeUndefined();
63
+ });
64
+ });
65
+ //# sourceMappingURL=report.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.test.js","sourceRoot":"","sources":["../../../src/commands/signals/report.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SkillsExportApproved extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ output: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=export-approved.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-approved.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/export-approved.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,WAAW;IAC3D,OAAgB,WAAW,SAAuF;IAElH,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;MAKnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAe3B"}
@@ -0,0 +1,31 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { Flags } from '@oclif/core';
4
+ import { BaseCommand } from '../../base-command.js';
5
+ import { apiGet } from '../../lib/api-client.js';
6
+ export default class SkillsExportApproved extends BaseCommand {
7
+ static description = 'Export approved community submissions as community-skills.json for registry merge';
8
+ static examples = [
9
+ '<%= config.bin %> skills export-approved',
10
+ '<%= config.bin %> skills export-approved --output ./community-skills.json',
11
+ ];
12
+ static flags = {
13
+ output: Flags.string({
14
+ description: 'Output file path',
15
+ default: 'packages/skills-registry/community-skills.json',
16
+ }),
17
+ };
18
+ async run() {
19
+ const { flags } = await this.parse(SkillsExportApproved);
20
+ this.requireAuth();
21
+ const entries = await apiGet('/api/skills/submissions/approved');
22
+ if (entries.length === 0) {
23
+ this.log('No approved submissions to export.');
24
+ return;
25
+ }
26
+ const outputPath = path.resolve(flags.output);
27
+ fs.writeFileSync(outputPath, JSON.stringify(entries, null, 2));
28
+ this.log(`Exported ${entries.length} approved skills to ${outputPath}`);
29
+ }
30
+ }
31
+ //# sourceMappingURL=export-approved.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-approved.js","sourceRoot":"","sources":["../../../src/commands/skills/export-approved.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,WAAW;IAC3D,MAAM,CAAU,WAAW,GAAG,mFAAmF,CAAC;IAElH,MAAM,CAAU,QAAQ,GAAG;QACzB,0CAA0C;QAC1C,2EAA2E;KAC5E,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,kBAAkB;YAC/B,OAAO,EAAE,gDAAgD;SAC1D,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAiC,kCAAkC,CAAC,CAAC;QAEjG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,uBAAuB,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SkillsPublish extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ file: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ category: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ tool: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ tags: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/publish.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,OAAgB,WAAW,SAA2D;IAEtF,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;;;;MAkBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmD3B"}