@urateam/cli 0.1.42 → 0.1.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/config-watcher.test.d.ts +2 -0
- package/dist/__tests__/config-watcher.test.d.ts.map +1 -0
- package/dist/__tests__/config-watcher.test.js +209 -0
- package/dist/__tests__/config-watcher.test.js.map +1 -0
- package/dist/__tests__/tunnel.test.d.ts +2 -0
- package/dist/__tests__/tunnel.test.d.ts.map +1 -0
- package/dist/__tests__/tunnel.test.js +256 -0
- package/dist/__tests__/tunnel.test.js.map +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +186 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/lib/config-watcher.d.ts +91 -0
- package/dist/lib/config-watcher.d.ts.map +1 -0
- package/dist/lib/config-watcher.js +167 -0
- package/dist/lib/config-watcher.js.map +1 -0
- package/dist/lib/tunnel.d.ts +105 -0
- package/dist/lib/tunnel.d.ts.map +1 -0
- package/dist/lib/tunnel.js +245 -0
- package/dist/lib/tunnel.js.map +1 -0
- package/package.json +3 -3
package/dist/commands/start.js
CHANGED
|
@@ -5,7 +5,7 @@ import { bootstrapSsoFromEnv } from "../sso-bootstrap.js";
|
|
|
5
5
|
import { preflightClaudeAuth } from "../lib/preflight-claude-auth.js";
|
|
6
6
|
import { preflightDirs } from "../lib/preflight-dirs.js";
|
|
7
7
|
import { buildRepoConfigsFromEnv, requireRepoConfigs } from "../lib/build-repo-configs.js";
|
|
8
|
-
import { resolveUserLevelHome } from "../lib/user-level-config.js";
|
|
8
|
+
import { resolveUserLevelHome, userLevelConfigPath, readUserLevelConfig, } from "../lib/user-level-config.js";
|
|
9
9
|
/**
|
|
10
10
|
* User-level: also load `~/.urateam/.env` (or `$URATEAM_HOME/.env`) so secrets
|
|
11
11
|
* load regardless of cwd. Node's `loadEnvFile()` in `index.ts` already loads
|
|
@@ -33,6 +33,7 @@ export const startCommand = new Command("start")
|
|
|
33
33
|
.description("Start production server (webhook + dashboard)")
|
|
34
34
|
.option("--port <port>", "Webhook server port", "3000")
|
|
35
35
|
.option("--dashboard-port <port>", "Dashboard port", "3001")
|
|
36
|
+
.option("--tunnel <mode>", "Auto-launch a Cloudflare tunnel: 'none' (default), 'cloudflare-quick' (free, ephemeral URL), or 'cloudflare-token' (requires CLOUDFLARE_TUNNEL_TOKEN + URATEAM_PUBLIC_URL)", "none")
|
|
36
37
|
.action(async (options) => {
|
|
37
38
|
try {
|
|
38
39
|
loadUserLevelEnv();
|
|
@@ -273,6 +274,158 @@ export const startCommand = new Command("start")
|
|
|
273
274
|
console.log(`Repos: ${Object.keys(config.repoConfigs).length}`);
|
|
274
275
|
const webhookServer = serve({ fetch: app.fetch, port });
|
|
275
276
|
const dashServer = serve({ fetch: dashboardApp.fetch, port: dashboardPort });
|
|
277
|
+
// --- Optional tunnel (cloudflared) ---
|
|
278
|
+
// Brings a public URL up via cloudflared when `--tunnel <mode>` is set.
|
|
279
|
+
// "none" (default) is a no-op. The TunnelManager supervises the child
|
|
280
|
+
// with exponential-backoff restart; failures are logged but don't crash
|
|
281
|
+
// the daemon — the daemon stays up on the local ports so operators can
|
|
282
|
+
// still SSH in and debug.
|
|
283
|
+
let tunnelManager;
|
|
284
|
+
if (options.tunnel && options.tunnel !== "none") {
|
|
285
|
+
const mode = options.tunnel;
|
|
286
|
+
if (mode !== "cloudflare-quick" && mode !== "cloudflare-token") {
|
|
287
|
+
console.error(`--tunnel: unknown mode '${options.tunnel}'. Allowed: none, cloudflare-quick, cloudflare-token`);
|
|
288
|
+
process.exit(1);
|
|
289
|
+
}
|
|
290
|
+
const { TunnelManager, CloudflaredMissingError } = await import("../lib/tunnel.js");
|
|
291
|
+
const token = process.env.CLOUDFLARE_TUNNEL_TOKEN;
|
|
292
|
+
const publicUrl = process.env.URATEAM_PUBLIC_URL;
|
|
293
|
+
tunnelManager = new TunnelManager({
|
|
294
|
+
mode,
|
|
295
|
+
localPort: port,
|
|
296
|
+
token,
|
|
297
|
+
publicUrl,
|
|
298
|
+
});
|
|
299
|
+
try {
|
|
300
|
+
const result = await tunnelManager.start();
|
|
301
|
+
process.env.URATEAM_PUBLIC_URL = result.publicUrl;
|
|
302
|
+
console.log(`Tunnel: ${result.publicUrl} (${mode})`);
|
|
303
|
+
// Attach a runtime error handler BEFORE any subsequent restart can
|
|
304
|
+
// exhaust the cap. EventEmitter throws if "error" emits without a
|
|
305
|
+
// listener; without this, a flapping cloudflared would crash the
|
|
306
|
+
// daemon when the restart cap is hit.
|
|
307
|
+
tunnelManager.on("error", (err) => {
|
|
308
|
+
console.error(`Tunnel: supervisor gave up (${err.message}); daemon continues on local ports`);
|
|
309
|
+
});
|
|
310
|
+
try {
|
|
311
|
+
const { logAuditEvent, tunnelStartedEvent } = await import("@urateam/core");
|
|
312
|
+
void logAuditEvent(db, tunnelStartedEvent({
|
|
313
|
+
provider: mode,
|
|
314
|
+
publicUrl: result.publicUrl,
|
|
315
|
+
restartCount: result.restartCount,
|
|
316
|
+
}));
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
// audit must never crash startup
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch (err) {
|
|
323
|
+
if (err instanceof CloudflaredMissingError) {
|
|
324
|
+
console.error(err.message);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
console.error(`Tunnel: failed to start (${err.message}); daemon will run on local ports only`);
|
|
328
|
+
}
|
|
329
|
+
tunnelManager = undefined;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// --- Optional user-level config hot-reload ---
|
|
333
|
+
// Watches ~/.urateam/config.json (or $URATEAM_HOME/config.json) and
|
|
334
|
+
// applies safe changes without a daemon restart. Activates only when
|
|
335
|
+
// we're in user-level mode (no REPO_* env vars AND config.json exists);
|
|
336
|
+
// project-level (sidecar) installs are env-var driven and don't need
|
|
337
|
+
// hot-reload. Unsafe field changes (url, path, defaultBranch) log a
|
|
338
|
+
// "restart required" warning. Removals with in-flight pipeline runs
|
|
339
|
+
// are deferred to the next reload to avoid mid-flight interruption.
|
|
340
|
+
let configWatcher;
|
|
341
|
+
const userLevelMode = !process.env.REPO_TEAM_ID &&
|
|
342
|
+
!process.env.REPO_URL &&
|
|
343
|
+
readUserLevelConfig() !== null;
|
|
344
|
+
if (userLevelMode) {
|
|
345
|
+
const { ConfigWatcher, hashConfig } = await import("../lib/config-watcher.js");
|
|
346
|
+
const initial = readUserLevelConfig();
|
|
347
|
+
configWatcher = new ConfigWatcher(initial, {
|
|
348
|
+
path: userLevelConfigPath(),
|
|
349
|
+
});
|
|
350
|
+
const deriveKeyFromUrl = (url) => {
|
|
351
|
+
const stripped = url.replace(/\.git$/, "");
|
|
352
|
+
const last = stripped.split(/[/:]/).filter(Boolean).pop() ?? "repo";
|
|
353
|
+
return last.replace(/[^A-Za-z0-9._-]/g, "-");
|
|
354
|
+
};
|
|
355
|
+
configWatcher.on("applied", async (diff) => {
|
|
356
|
+
for (const r of diff.added) {
|
|
357
|
+
const key = r.teamId ?? deriveKeyFromUrl(r.url);
|
|
358
|
+
config.repoConfigs[key] = {
|
|
359
|
+
url: r.url,
|
|
360
|
+
defaultBranch: r.defaultBranch,
|
|
361
|
+
testCommand: r.testCommand,
|
|
362
|
+
buildCommand: r.buildCommand,
|
|
363
|
+
...(r.labelPattern && { labelPattern: r.labelPattern }),
|
|
364
|
+
};
|
|
365
|
+
console.log(`config: + ${r.url} (live)`);
|
|
366
|
+
}
|
|
367
|
+
for (const m of diff.modifiedSafe) {
|
|
368
|
+
// Look up the OLD entry using the previous teamId / URL slug —
|
|
369
|
+
// not the new ones — so we find the entry even when teamId
|
|
370
|
+
// itself changed.
|
|
371
|
+
const oldKey = m.prev.teamId ?? deriveKeyFromUrl(m.prev.url);
|
|
372
|
+
const existing = config.repoConfigs[oldKey];
|
|
373
|
+
if (existing) {
|
|
374
|
+
if (m.fields.includes("testCommand")) {
|
|
375
|
+
existing.testCommand = m.repo.testCommand;
|
|
376
|
+
}
|
|
377
|
+
if (m.fields.includes("buildCommand")) {
|
|
378
|
+
existing.buildCommand = m.repo.buildCommand;
|
|
379
|
+
}
|
|
380
|
+
if (m.fields.includes("labelPattern")) {
|
|
381
|
+
existing.labelPattern = m.repo.labelPattern;
|
|
382
|
+
}
|
|
383
|
+
if (m.fields.includes("teamId")) {
|
|
384
|
+
// The map-key changes when teamId changes — re-key the entry
|
|
385
|
+
// under the new key so webhook routing keeps working.
|
|
386
|
+
const newKey = m.repo.teamId ?? deriveKeyFromUrl(m.repo.url);
|
|
387
|
+
if (newKey !== oldKey) {
|
|
388
|
+
delete config.repoConfigs[oldKey];
|
|
389
|
+
config.repoConfigs[newKey] = existing;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
console.log(`config: ~ ${m.repo.url} (${m.fields.join(",")}) — applied live`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
for (const m of diff.modifiedUnsafe) {
|
|
396
|
+
console.warn(`config: ! ${m.repo.url} unsafe field change (${m.fields.join(",")}) — restart required to apply`);
|
|
397
|
+
}
|
|
398
|
+
// Removal: delete the entry from the live repoConfigs immediately.
|
|
399
|
+
// In-flight pipeline runs hold their own snapshot of the runner state
|
|
400
|
+
// and continue uninterrupted — removing the entry only stops the
|
|
401
|
+
// webhook/PM router from sending NEW work to the repo. Operators
|
|
402
|
+
// who need to forcibly stop in-flight runs should use `ura stop`
|
|
403
|
+
// or `ura halt`.
|
|
404
|
+
for (const r of diff.removed) {
|
|
405
|
+
const key = r.teamId ?? deriveKeyFromUrl(r.url);
|
|
406
|
+
delete config.repoConfigs[key];
|
|
407
|
+
console.log(`config: - ${r.url} (live; in-flight runs continue)`);
|
|
408
|
+
}
|
|
409
|
+
try {
|
|
410
|
+
const { logAuditEvent, configReloadedEvent } = await import("@urateam/core");
|
|
411
|
+
void logAuditEvent(db, configReloadedEvent({
|
|
412
|
+
added: diff.added.map((r) => r.url),
|
|
413
|
+
removed: diff.removed.map((r) => r.url),
|
|
414
|
+
modifiedSafe: diff.modifiedSafe.map((m) => m.repo.url),
|
|
415
|
+
modifiedUnsafe: diff.modifiedUnsafe.map((m) => m.repo.url),
|
|
416
|
+
sha256: hashConfig(configWatcher.getCurrent()),
|
|
417
|
+
}));
|
|
418
|
+
}
|
|
419
|
+
catch {
|
|
420
|
+
// audit must never crash the watcher loop
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
configWatcher.on("error", (err) => {
|
|
424
|
+
console.warn(`config-watcher: ${err.message}; keeping previous in-memory config`);
|
|
425
|
+
});
|
|
426
|
+
configWatcher.start();
|
|
427
|
+
console.log(`Config: watching ${userLevelConfigPath()} (live reload)`);
|
|
428
|
+
}
|
|
276
429
|
// --- Worktree cleanup cron ---
|
|
277
430
|
// agentRunDir is already resolved above (before preflightClaudeAuth).
|
|
278
431
|
const _parsedTtl = parseInt(process.env.WORKTREE_TTL_HOURS ?? "24", 10);
|
|
@@ -294,8 +447,10 @@ export const startCommand = new Command("start")
|
|
|
294
447
|
const agentBranchTtlDays = Number.isFinite(_parsedAgentBranchTtl) && _parsedAgentBranchTtl > 0
|
|
295
448
|
? _parsedAgentBranchTtl
|
|
296
449
|
: 7;
|
|
297
|
-
|
|
450
|
+
// Compute repoUrls per-tick so hot-reloaded additions/removals are
|
|
451
|
+
// picked up by the branch sweep without requiring a daemon restart.
|
|
298
452
|
async function runBranchSweepTick() {
|
|
453
|
+
const repoUrls = Object.values(config.repoConfigs).map((r) => r.url);
|
|
299
454
|
try {
|
|
300
455
|
await runAgentBranchSweep({
|
|
301
456
|
db,
|
|
@@ -387,13 +542,41 @@ export const startCommand = new Command("start")
|
|
|
387
542
|
console.log(`Release Manager: enabled (schedule "${rmConfig.schedule}", repo ${rmRepoUrl}, branch ${rmConfig.branch})`);
|
|
388
543
|
}
|
|
389
544
|
// --- Graceful shutdown ---
|
|
390
|
-
function shutdown() {
|
|
545
|
+
async function shutdown() {
|
|
391
546
|
console.log("Shutting down...");
|
|
392
547
|
clearInterval(cleanupInterval);
|
|
393
548
|
clearInterval(branchSweepInterval);
|
|
394
549
|
if (pmInterval)
|
|
395
550
|
clearInterval(pmInterval);
|
|
396
551
|
rmScheduler?.stop();
|
|
552
|
+
configWatcher?.stop();
|
|
553
|
+
// Stop tunnel before closing HTTP servers so cloudflared sees clean
|
|
554
|
+
// disconnects instead of a half-open socket dance. Emit `tunnel.stopped`
|
|
555
|
+
// for observability of intentional shutdowns.
|
|
556
|
+
if (tunnelManager) {
|
|
557
|
+
// Capture restartCount BEFORE stop() — the count reflects how many
|
|
558
|
+
// times cloudflared crashed during the daemon's life, which is the
|
|
559
|
+
// metric operators want to see for "did this tunnel flap?".
|
|
560
|
+
const restartCount = tunnelManager.getRestartCount();
|
|
561
|
+
try {
|
|
562
|
+
await tunnelManager.stop();
|
|
563
|
+
try {
|
|
564
|
+
const { logAuditEvent, tunnelStoppedEvent } = await import("@urateam/core");
|
|
565
|
+
void logAuditEvent(db, tunnelStoppedEvent({
|
|
566
|
+
provider: options.tunnel,
|
|
567
|
+
restartCount,
|
|
568
|
+
exitCode: null,
|
|
569
|
+
signal: "SIGTERM",
|
|
570
|
+
}));
|
|
571
|
+
}
|
|
572
|
+
catch {
|
|
573
|
+
// audit must never crash shutdown
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
catch (err) {
|
|
577
|
+
console.error(`Tunnel shutdown error: ${err.message}`);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
397
580
|
let closed = 0;
|
|
398
581
|
const onClose = () => { if (++closed === 2)
|
|
399
582
|
process.exit(0); };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import { type UserLevelConfig, type UserLevelRepo } from "./user-level-config.js";
|
|
3
|
+
/**
|
|
4
|
+
* Fields that are safe to swap mid-flight. Changes to these propagate
|
|
5
|
+
* immediately into the live repoConfigs.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SAFE_REPO_FIELDS: readonly ["labelPattern", "testCommand", "buildCommand", "teamId"];
|
|
8
|
+
/**
|
|
9
|
+
* Fields that change the daemon's wiring in ways the runner can't pick up
|
|
10
|
+
* mid-flight. Modifying these triggers a "restart required" warning.
|
|
11
|
+
*/
|
|
12
|
+
export declare const UNSAFE_REPO_FIELDS: readonly ["url", "path", "defaultBranch"];
|
|
13
|
+
export interface ConfigDiff {
|
|
14
|
+
/** Repo URLs that are present in the new config but not the previous. */
|
|
15
|
+
added: UserLevelRepo[];
|
|
16
|
+
/** Repo URLs that were in the previous but not the new config. */
|
|
17
|
+
removed: UserLevelRepo[];
|
|
18
|
+
/**
|
|
19
|
+
* Repos present in both, with at least one safe field changed.
|
|
20
|
+
* Carries the previous entry (so the caller can derive the OLD map key)
|
|
21
|
+
* and the new entry plus the list of changed safe-field names.
|
|
22
|
+
*/
|
|
23
|
+
modifiedSafe: Array<{
|
|
24
|
+
prev: UserLevelRepo;
|
|
25
|
+
repo: UserLevelRepo;
|
|
26
|
+
fields: string[];
|
|
27
|
+
}>;
|
|
28
|
+
/** Same as modifiedSafe but for unsafe-field changes (restart required). */
|
|
29
|
+
modifiedUnsafe: Array<{
|
|
30
|
+
prev: UserLevelRepo;
|
|
31
|
+
repo: UserLevelRepo;
|
|
32
|
+
fields: string[];
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Compute the diff between two configs, splitting modifications into
|
|
37
|
+
* safe-to-apply vs restart-required categories.
|
|
38
|
+
*/
|
|
39
|
+
export declare function diffRepos(prev: UserLevelConfig, next: UserLevelConfig): ConfigDiff;
|
|
40
|
+
/**
|
|
41
|
+
* SHA-256 of the JSON-stringified config, for audit observability.
|
|
42
|
+
*
|
|
43
|
+
* Used only for the `config.reloaded` audit event payload — advisory, not
|
|
44
|
+
* load-bearing for any routing decision. The hash assumes both inputs come
|
|
45
|
+
* from `JSON.parse(readFileSync(...))` so key insertion order matches the
|
|
46
|
+
* file's; we don't normalise nested key ordering here.
|
|
47
|
+
*/
|
|
48
|
+
export declare function hashConfig(cfg: UserLevelConfig): string;
|
|
49
|
+
export interface ConfigWatcherOpts {
|
|
50
|
+
/** Absolute path to `config.json`. */
|
|
51
|
+
path: string;
|
|
52
|
+
/** Debounce window for fs.watch fires. Default 1000ms. */
|
|
53
|
+
debounceMs?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Reader override (tests pass a stub that returns the next config without
|
|
56
|
+
* touching the disk). Default reads + zod-validates via
|
|
57
|
+
* `readUserLevelConfig()`.
|
|
58
|
+
*/
|
|
59
|
+
reader?: () => UserLevelConfig | null;
|
|
60
|
+
/** Logger (defaults to console). */
|
|
61
|
+
log?: (msg: string) => void;
|
|
62
|
+
}
|
|
63
|
+
export declare class ConfigWatcher extends EventEmitter {
|
|
64
|
+
private readonly opts;
|
|
65
|
+
private watcher;
|
|
66
|
+
private debounceTimer;
|
|
67
|
+
private current;
|
|
68
|
+
private readonly debounceMs;
|
|
69
|
+
private readonly read;
|
|
70
|
+
private readonly log;
|
|
71
|
+
constructor(initial: UserLevelConfig, opts: ConfigWatcherOpts);
|
|
72
|
+
start(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Cancels any pending debounce timer and schedules a fresh one. Called
|
|
75
|
+
* internally by `start()`'s fs.watch handler and exposed publicly so the
|
|
76
|
+
* unit tests can exercise debounce coalescing deterministically (fake
|
|
77
|
+
* timers can't drive fs.watch on the OS).
|
|
78
|
+
*/
|
|
79
|
+
scheduleReload(): void;
|
|
80
|
+
stop(): void;
|
|
81
|
+
/** Current in-memory config (last successfully validated). */
|
|
82
|
+
getCurrent(): UserLevelConfig;
|
|
83
|
+
/**
|
|
84
|
+
* Force a reload regardless of fs.watch firing. Useful for tests and for
|
|
85
|
+
* operators who want to verify the watcher is working (`ura repo reload`
|
|
86
|
+
* could call into this in a future iteration).
|
|
87
|
+
*/
|
|
88
|
+
reloadNow(): void;
|
|
89
|
+
private handleChange;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=config-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-watcher.d.ts","sourceRoot":"","sources":["../../src/lib/config-watcher.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,oEAK0B,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,2CAIwB,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,kEAAkE;IAClE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;;;OAIG;IACH,YAAY,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,aAAa,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,4EAA4E;IAC5E,cAAc,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC;QACpB,IAAI,EAAE,aAAa,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,eAAe,GACpB,UAAU,CAmCZ;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAEvD;AAED,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IACtC,oCAAoC;IACpC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,qBAAa,aAAc,SAAQ,YAAY;IAU3C,OAAO,CAAC,QAAQ,CAAC,IAAI;IATvB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAwB;gBAG1C,OAAO,EAAE,eAAe,EACP,IAAI,EAAE,iBAAiB;IAS1C,KAAK,IAAI,IAAI;IAKb;;;;;OAKG;IACH,cAAc,IAAI,IAAI;IAQtB,IAAI,IAAI,IAAI;IAWZ,8DAA8D;IAC9D,UAAU,IAAI,eAAe;IAI7B;;;;OAIG;IACH,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,YAAY;CA4BrB"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hot-reload of `~/.urateam/config.json` (`$URATEAM_HOME/config.json`).
|
|
3
|
+
*
|
|
4
|
+
* Watches the file via `fs.watch` with debouncing (default 1s), re-reads
|
|
5
|
+
* + zod-validates on change, diffs against the previous config, and emits
|
|
6
|
+
* an `applied` event with the diff. Schema-validation failures keep the
|
|
7
|
+
* previous in-memory config and emit `error`.
|
|
8
|
+
*
|
|
9
|
+
* The watcher is read-only — callers handle the mutation (since they own
|
|
10
|
+
* the live `repoConfigs` object that the runner reads from). JS objects
|
|
11
|
+
* are pass-by-reference + single-threaded, so a property-level mutation
|
|
12
|
+
* propagates to the runner without any new lock.
|
|
13
|
+
*/
|
|
14
|
+
import { watch } from "node:fs";
|
|
15
|
+
import { createHash } from "node:crypto";
|
|
16
|
+
import { EventEmitter } from "node:events";
|
|
17
|
+
import { readUserLevelConfig, } from "./user-level-config.js";
|
|
18
|
+
/**
|
|
19
|
+
* Fields that are safe to swap mid-flight. Changes to these propagate
|
|
20
|
+
* immediately into the live repoConfigs.
|
|
21
|
+
*/
|
|
22
|
+
export const SAFE_REPO_FIELDS = [
|
|
23
|
+
"labelPattern",
|
|
24
|
+
"testCommand",
|
|
25
|
+
"buildCommand",
|
|
26
|
+
"teamId",
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* Fields that change the daemon's wiring in ways the runner can't pick up
|
|
30
|
+
* mid-flight. Modifying these triggers a "restart required" warning.
|
|
31
|
+
*/
|
|
32
|
+
export const UNSAFE_REPO_FIELDS = [
|
|
33
|
+
"url",
|
|
34
|
+
"path",
|
|
35
|
+
"defaultBranch",
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Compute the diff between two configs, splitting modifications into
|
|
39
|
+
* safe-to-apply vs restart-required categories.
|
|
40
|
+
*/
|
|
41
|
+
export function diffRepos(prev, next) {
|
|
42
|
+
const prevByUrl = new Map(prev.repos.map((r) => [r.url, r]));
|
|
43
|
+
const nextByUrl = new Map(next.repos.map((r) => [r.url, r]));
|
|
44
|
+
const added = [];
|
|
45
|
+
const removed = [];
|
|
46
|
+
const modifiedSafe = [];
|
|
47
|
+
const modifiedUnsafe = [];
|
|
48
|
+
for (const [url, next] of nextByUrl) {
|
|
49
|
+
const prev = prevByUrl.get(url);
|
|
50
|
+
if (!prev) {
|
|
51
|
+
added.push(next);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const safeChanged = [];
|
|
55
|
+
const unsafeChanged = [];
|
|
56
|
+
for (const f of SAFE_REPO_FIELDS) {
|
|
57
|
+
if (prev[f] !== next[f])
|
|
58
|
+
safeChanged.push(f);
|
|
59
|
+
}
|
|
60
|
+
for (const f of UNSAFE_REPO_FIELDS) {
|
|
61
|
+
if (prev[f] !== next[f])
|
|
62
|
+
unsafeChanged.push(f);
|
|
63
|
+
}
|
|
64
|
+
if (safeChanged.length > 0) {
|
|
65
|
+
modifiedSafe.push({ prev, repo: next, fields: safeChanged });
|
|
66
|
+
}
|
|
67
|
+
if (unsafeChanged.length > 0) {
|
|
68
|
+
modifiedUnsafe.push({ prev, repo: next, fields: unsafeChanged });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
for (const [url, prev] of prevByUrl) {
|
|
72
|
+
if (!nextByUrl.has(url))
|
|
73
|
+
removed.push(prev);
|
|
74
|
+
}
|
|
75
|
+
return { added, removed, modifiedSafe, modifiedUnsafe };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* SHA-256 of the JSON-stringified config, for audit observability.
|
|
79
|
+
*
|
|
80
|
+
* Used only for the `config.reloaded` audit event payload — advisory, not
|
|
81
|
+
* load-bearing for any routing decision. The hash assumes both inputs come
|
|
82
|
+
* from `JSON.parse(readFileSync(...))` so key insertion order matches the
|
|
83
|
+
* file's; we don't normalise nested key ordering here.
|
|
84
|
+
*/
|
|
85
|
+
export function hashConfig(cfg) {
|
|
86
|
+
return createHash("sha256").update(JSON.stringify(cfg)).digest("hex");
|
|
87
|
+
}
|
|
88
|
+
export class ConfigWatcher extends EventEmitter {
|
|
89
|
+
opts;
|
|
90
|
+
watcher = null;
|
|
91
|
+
debounceTimer = null;
|
|
92
|
+
current;
|
|
93
|
+
debounceMs;
|
|
94
|
+
read;
|
|
95
|
+
log;
|
|
96
|
+
constructor(initial, opts) {
|
|
97
|
+
super();
|
|
98
|
+
this.opts = opts;
|
|
99
|
+
this.current = initial;
|
|
100
|
+
this.debounceMs = opts.debounceMs ?? 1000;
|
|
101
|
+
this.read = opts.reader ?? readUserLevelConfig;
|
|
102
|
+
this.log = opts.log ?? ((m) => console.log(m));
|
|
103
|
+
}
|
|
104
|
+
start() {
|
|
105
|
+
if (this.watcher)
|
|
106
|
+
return;
|
|
107
|
+
this.watcher = watch(this.opts.path, () => this.scheduleReload());
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Cancels any pending debounce timer and schedules a fresh one. Called
|
|
111
|
+
* internally by `start()`'s fs.watch handler and exposed publicly so the
|
|
112
|
+
* unit tests can exercise debounce coalescing deterministically (fake
|
|
113
|
+
* timers can't drive fs.watch on the OS).
|
|
114
|
+
*/
|
|
115
|
+
scheduleReload() {
|
|
116
|
+
if (this.debounceTimer)
|
|
117
|
+
clearTimeout(this.debounceTimer);
|
|
118
|
+
this.debounceTimer = setTimeout(() => this.handleChange(), this.debounceMs);
|
|
119
|
+
}
|
|
120
|
+
stop() {
|
|
121
|
+
if (this.debounceTimer) {
|
|
122
|
+
clearTimeout(this.debounceTimer);
|
|
123
|
+
this.debounceTimer = null;
|
|
124
|
+
}
|
|
125
|
+
if (this.watcher) {
|
|
126
|
+
this.watcher.close();
|
|
127
|
+
this.watcher = null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** Current in-memory config (last successfully validated). */
|
|
131
|
+
getCurrent() {
|
|
132
|
+
return this.current;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Force a reload regardless of fs.watch firing. Useful for tests and for
|
|
136
|
+
* operators who want to verify the watcher is working (`ura repo reload`
|
|
137
|
+
* could call into this in a future iteration).
|
|
138
|
+
*/
|
|
139
|
+
reloadNow() {
|
|
140
|
+
this.handleChange();
|
|
141
|
+
}
|
|
142
|
+
handleChange() {
|
|
143
|
+
let next;
|
|
144
|
+
try {
|
|
145
|
+
next = this.read();
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
this.log(`config-watcher: schema validation failed; keeping previous config. ${err.message}`);
|
|
149
|
+
this.emit("error", err);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (!next) {
|
|
153
|
+
this.log("config-watcher: config file disappeared; keeping previous in-memory config");
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const diff = diffRepos(this.current, next);
|
|
157
|
+
const isEmpty = diff.added.length === 0 &&
|
|
158
|
+
diff.removed.length === 0 &&
|
|
159
|
+
diff.modifiedSafe.length === 0 &&
|
|
160
|
+
diff.modifiedUnsafe.length === 0;
|
|
161
|
+
this.current = next;
|
|
162
|
+
if (!isEmpty) {
|
|
163
|
+
this.emit("applied", diff);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=config-watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-watcher.js","sourceRoot":"","sources":["../../src/lib/config-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,mBAAmB,GAGpB,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc;IACd,aAAa;IACb,cAAc;IACd,QAAQ;CAC6C,CAAC;AAExD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,KAAK;IACL,MAAM;IACN,eAAe;CACsC,CAAC;AAyBxD;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,IAAqB,EACrB,IAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,YAAY,GAA+B,EAAE,CAAC;IACpD,MAAM,cAAc,GAAiC,EAAE,CAAC;IAExD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,GAAoB;IAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAiBD,MAAM,OAAO,aAAc,SAAQ,YAAY;IAU1B;IATX,OAAO,GAAqB,IAAI,CAAC;IACjC,aAAa,GAA0B,IAAI,CAAC;IAC5C,OAAO,CAAkB;IAChB,UAAU,CAAS;IACnB,IAAI,CAA+B;IACnC,GAAG,CAAwB;IAE5C,YACE,OAAwB,EACP,IAAuB;QAExC,KAAK,EAAE,CAAC;QAFS,SAAI,GAAJ,IAAI,CAAmB;QAGxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,mBAAmB,CAAC;QAC/C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,aAAa;YAAE,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,GAAG,UAAU,CAC7B,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EACzB,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,IAA4B,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CACN,sEAAuE,GAAa,CAAC,OAAO,EAAE,CAC/F,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,GAAG,CACN,4EAA4E,CAC7E,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
|