@urateam/cli 0.1.24 → 0.1.26

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=preflight-dirs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-dirs.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/preflight-dirs.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ import { mkdtempSync, chmodSync, rmSync, mkdirSync, existsSync } from "node:fs";
3
+ import { tmpdir, homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { preflightDirs } from "../lib/preflight-dirs.js";
6
+ describe("preflightDirs (BEC-152)", () => {
7
+ let exitSpy;
8
+ let errorSpy;
9
+ let tempRoot;
10
+ beforeEach(() => {
11
+ tempRoot = mkdtempSync(join(tmpdir(), "bec152-"));
12
+ exitSpy = vi.spyOn(process, "exit").mockImplementation(((_code) => {
13
+ throw new Error("__EXIT__");
14
+ }));
15
+ errorSpy = vi.spyOn(console, "error").mockImplementation(() => { });
16
+ });
17
+ afterEach(() => {
18
+ exitSpy.mockRestore();
19
+ errorSpy.mockRestore();
20
+ try {
21
+ rmSync(tempRoot, { recursive: true, force: true });
22
+ }
23
+ catch {
24
+ // ignore cleanup errors
25
+ }
26
+ });
27
+ it("succeeds when both dirs are writable", async () => {
28
+ const agentRunDir = join(tempRoot, "data", "runs");
29
+ const repoCloneDir = join(tempRoot, "work", "repos");
30
+ // dirs don't exist yet — preflightDirs should create them
31
+ await preflightDirs({ agentRunDir, repoCloneDir, command: "ura start" });
32
+ expect(exitSpy).not.toHaveBeenCalled();
33
+ expect(existsSync(agentRunDir)).toBe(true);
34
+ expect(existsSync(repoCloneDir)).toBe(true);
35
+ });
36
+ it("creates nested dirs that don't exist yet", async () => {
37
+ const agentRunDir = join(tempRoot, "deeply", "nested", "data", "runs");
38
+ const repoCloneDir = join(tempRoot, "deeply", "nested", "work", "repos");
39
+ await preflightDirs({ agentRunDir, repoCloneDir, command: "ura dev" });
40
+ expect(exitSpy).not.toHaveBeenCalled();
41
+ expect(existsSync(agentRunDir)).toBe(true);
42
+ expect(existsSync(repoCloneDir)).toBe(true);
43
+ });
44
+ it("exits 1 with a clear error when AGENT_RUN_DIR is not writable", async () => {
45
+ // chmod-based permission checks don't work when running as root.
46
+ // Root can always write regardless of mode bits.
47
+ const isRoot = typeof process.getuid === "function" && process.getuid() === 0;
48
+ if (isRoot)
49
+ return;
50
+ // Create a read-only parent dir
51
+ const readOnlyParent = join(tempRoot, "readonly");
52
+ mkdirSync(readOnlyParent);
53
+ chmodSync(readOnlyParent, 0o555);
54
+ const agentRunDir = join(readOnlyParent, "data", "runs");
55
+ const repoCloneDir = join(tempRoot, "work", "repos");
56
+ await expect(preflightDirs({ agentRunDir, repoCloneDir, command: "ura start" })).rejects.toThrow("__EXIT__");
57
+ expect(exitSpy).toHaveBeenCalledWith(1);
58
+ const banner = errorSpy.mock.calls[0][0];
59
+ expect(banner).toContain("AGENT_RUN_DIR");
60
+ expect(banner).toContain(agentRunDir);
61
+ expect(banner).toContain("ura start");
62
+ });
63
+ it("exits 1 with a clear error when REPO_CLONE_DIR is not writable", async () => {
64
+ // chmod-based permission checks don't work when running as root.
65
+ const isRoot = typeof process.getuid === "function" && process.getuid() === 0;
66
+ if (isRoot)
67
+ return;
68
+ const readOnlyParent = join(tempRoot, "readonly");
69
+ mkdirSync(readOnlyParent);
70
+ chmodSync(readOnlyParent, 0o555);
71
+ const agentRunDir = join(tempRoot, "data", "runs");
72
+ const repoCloneDir = join(readOnlyParent, "work", "repos");
73
+ await expect(preflightDirs({ agentRunDir, repoCloneDir, command: "ura dev" })).rejects.toThrow("__EXIT__");
74
+ expect(exitSpy).toHaveBeenCalledWith(1);
75
+ const banner = errorSpy.mock.calls[0][0];
76
+ expect(banner).toContain("REPO_CLONE_DIR");
77
+ expect(banner).toContain(repoCloneDir);
78
+ expect(banner).toContain("ura dev");
79
+ });
80
+ });
81
+ describe("BEC-152: default dir values are HOME-relative", () => {
82
+ it("default agentRunDir uses homedir(), not /var/", () => {
83
+ const home = homedir();
84
+ const expectedDefault = join(home, "data", "runs");
85
+ // Verify the expected default is not under /var/
86
+ expect(expectedDefault).not.toContain("/var/");
87
+ expect(expectedDefault).toContain(home);
88
+ // Verify it matches the documented default pattern
89
+ expect(expectedDefault).toMatch(/data\/runs$/);
90
+ });
91
+ it("default repoCloneDir uses homedir(), not /var/", () => {
92
+ const home = homedir();
93
+ const expectedDefault = join(home, "work", "repos");
94
+ expect(expectedDefault).not.toContain("/var/");
95
+ expect(expectedDefault).toContain(home);
96
+ expect(expectedDefault).toMatch(/work\/repos$/);
97
+ });
98
+ });
99
+ //# sourceMappingURL=preflight-dirs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-dirs.test.js","sourceRoot":"","sources":["../../src/__tests__/preflight-dirs.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,UAAU,SAyHnB,CAAC"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,UAAU,SA2FnB,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { Command } from "commander";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
2
4
  import { bootstrapSsoFromEnv } from "../sso-bootstrap.js";
3
5
  import { preflightClaudeAuth } from "../lib/preflight-claude-auth.js";
4
- import { repoPluginsFromEnv } from "../lib/repo-plugins-from-env.js";
6
+ import { preflightDirs } from "../lib/preflight-dirs.js";
7
+ import { buildRepoConfigsFromEnv, requireRepoConfigs } from "../lib/build-repo-configs.js";
5
8
  export const devCommand = new Command("dev")
6
9
  .description("Start local development server (webhook + dashboard)")
7
10
  .option("--port <port>", "Webhook server port", "3000")
@@ -15,45 +18,18 @@ export const devCommand = new Command("dev")
15
18
  ? { username: dashboardUser, password: dashboardPass }
16
19
  : undefined;
17
20
  // Build repoConfigs from env: REPO_TEAM_ID, REPO_URL, REPO_DEFAULT_BRANCH, etc.
18
- const repoConfigs = {};
19
- if (process.env.REPO_TEAM_ID && process.env.REPO_URL) {
20
- const repoEntry = {
21
- url: process.env.REPO_URL,
22
- defaultBranch: process.env.REPO_DEFAULT_BRANCH ?? "main",
23
- testCommand: process.env.REPO_TEST_CMD ?? "pnpm test",
24
- buildCommand: process.env.REPO_BUILD_CMD ?? "pnpm build",
25
- };
26
- if (process.env.GITHUB_WEBHOOK_SECRET) {
27
- repoEntry.githubFeedback = {
28
- autoTrigger: process.env.GITHUB_FEEDBACK_AUTO_TRIGGER !== "false",
29
- triggerKeyword: process.env.GITHUB_FEEDBACK_TRIGGER_KEYWORD,
30
- allowedReviewers: process.env.GITHUB_FEEDBACK_ALLOWED_REVIEWERS
31
- ? process.env.GITHUB_FEEDBACK_ALLOWED_REVIEWERS.split(",").filter(Boolean)
32
- : undefined,
33
- botLogins: process.env.GITHUB_FEEDBACK_BOT_LOGINS
34
- ? process.env.GITHUB_FEEDBACK_BOT_LOGINS.split(",").filter(Boolean)
35
- : undefined,
36
- };
37
- }
38
- const pluginCfg = repoPluginsFromEnv();
39
- if (pluginCfg)
40
- repoEntry.plugins = pluginCfg;
41
- repoConfigs[process.env.REPO_TEAM_ID] = repoEntry;
42
- }
21
+ const repoConfigs = buildRepoConfigsFromEnv();
43
22
  // Fail fast if no repoConfigs could be built. Without this, `ura dev`
44
23
  // looks healthy in logs (webhook server up, dashboard up) but every
45
24
  // inbound Linear webhook fails with "no repo mapping" — usually after
46
25
  // the user has already moved a real issue to Todo. The first-time-user
47
26
  // setup path nearly always lands here because .urateam/.env ships with
48
27
  // `REPO_URL=` and `REPO_TEAM_ID=` blank. See urateam#33.
49
- if (Object.keys(repoConfigs).length === 0) {
50
- console.error("Error: no repoConfigs could be built from environment variables.\n" +
51
- "Set REPO_TEAM_ID and REPO_URL in .urateam/.env and restart.\n" +
52
- "Example:\n" +
53
- " REPO_TEAM_ID=<your Linear team UUID usually the same as LINEAR_TEAM_ID>\n" +
54
- " REPO_URL=https://github.com/org/repo\n");
55
- process.exit(1);
56
- }
28
+ requireRepoConfigs(repoConfigs, "ura dev");
29
+ // --- Resolve and validate workspace directories ---
30
+ const agentRunDir = process.env.AGENT_RUN_DIR ?? join(homedir(), "data", "runs");
31
+ const repoCloneDir = process.env.REPO_CLONE_DIR ?? join(homedir(), "work", "repos");
32
+ await preflightDirs({ agentRunDir, repoCloneDir, command: "ura dev" });
57
33
  // OSS-tier auth pre-flight (urateam#40). Run before opening the DB so a
58
34
  // bad auth state doesn't leave any resources to clean up.
59
35
  await preflightClaudeAuth({ command: "ura dev" });
@@ -64,8 +40,8 @@ export const devCommand = new Command("dev")
64
40
  repoConfigs,
65
41
  slackWebhookUrl: process.env.SLACK_WEBHOOK_URL,
66
42
  discordWebhookUrl: process.env.DISCORD_WEBHOOK_URL,
67
- agentRunDir: process.env.AGENT_RUN_DIR ?? "/tmp/agent-runs",
68
- repoCloneDir: process.env.REPO_CLONE_DIR ?? "/tmp/agent-repos",
43
+ agentRunDir,
44
+ repoCloneDir,
69
45
  githubWebhookSecret: process.env.GITHUB_WEBHOOK_SECRET,
70
46
  };
71
47
  // Validate SSO env vars before opening DB so misconfig fails fast.
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,YAAY,SAsbrB,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SAibrB,CAAC"}
@@ -1,15 +1,17 @@
1
1
  import { Command } from "commander";
2
- import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
3
4
  import { bootstrapSsoFromEnv } from "../sso-bootstrap.js";
4
5
  import { preflightClaudeAuth } from "../lib/preflight-claude-auth.js";
5
- import { repoPluginsFromEnv } from "../lib/repo-plugins-from-env.js";
6
+ import { preflightDirs } from "../lib/preflight-dirs.js";
7
+ import { buildRepoConfigsFromEnv, requireRepoConfigs } from "../lib/build-repo-configs.js";
6
8
  export const startCommand = new Command("start")
7
9
  .description("Start production server (webhook + dashboard)")
8
10
  .option("--port <port>", "Webhook server port", "3000")
9
11
  .option("--dashboard-port <port>", "Dashboard port", "3001")
10
12
  .action(async (options) => {
11
13
  try {
12
- const { createApp, defaultConfigs, applyDeepReviewPassesOverride, cleanupWorktrees, addLogStream, initSlackAlertManager, createSlackAlertStream } = await import("@urateam/core");
14
+ const { createApp, defaultConfigs, applyDeepReviewPassesOverride, cleanupWorktrees, runAgentBranchSweep, addLogStream, initSlackAlertManager, createSlackAlertStream } = await import("@urateam/core");
13
15
  // --- Slack error alerts (opt-in) ---
14
16
  if (process.env.SLACK_ERROR_ALERTS === "true" &&
15
17
  process.env.SLACK_BOT_TOKEN &&
@@ -35,58 +37,15 @@ export const startCommand = new Command("start")
35
37
  process.exit(1);
36
38
  }
37
39
  const dashboardAuth = { username: dashboardUser, password: dashboardPass };
38
- const repoConfigs = {};
39
- if (process.env.REPO_TEAM_ID && process.env.REPO_URL) {
40
- const repoEntry = {
41
- url: process.env.REPO_URL,
42
- defaultBranch: process.env.REPO_DEFAULT_BRANCH ?? "main",
43
- testCommand: process.env.REPO_TEST_CMD ?? "pnpm test",
44
- buildCommand: process.env.REPO_BUILD_CMD ?? "pnpm build",
45
- };
46
- // GitHub PR review feedback config (optional)
47
- if (process.env.GITHUB_WEBHOOK_SECRET) {
48
- repoEntry.githubFeedback = {
49
- autoTrigger: process.env.GITHUB_FEEDBACK_AUTO_TRIGGER !== "false",
50
- triggerKeyword: process.env.GITHUB_FEEDBACK_TRIGGER_KEYWORD,
51
- allowedReviewers: process.env.GITHUB_FEEDBACK_ALLOWED_REVIEWERS
52
- ? process.env.GITHUB_FEEDBACK_ALLOWED_REVIEWERS.split(",").filter(Boolean)
53
- : undefined,
54
- botLogins: process.env.GITHUB_FEEDBACK_BOT_LOGINS
55
- ? process.env.GITHUB_FEEDBACK_BOT_LOGINS.split(",").filter(Boolean)
56
- : undefined,
57
- };
58
- }
59
- // Plugin / MCP exclusions from env (urateam#134). Operators on the
60
- // env-var-driven repoConfig path can opt out of auto-detected plugins
61
- // when those plugins' own workflows conflict with urateam's pipeline
62
- // (e.g., superpowers triggering rogue branch creation).
63
- const pluginCfg = repoPluginsFromEnv();
64
- if (pluginCfg)
65
- repoEntry.plugins = pluginCfg;
66
- repoConfigs[process.env.REPO_TEAM_ID] = repoEntry;
67
- }
40
+ // Build repoConfigs from env: REPO_TEAM_ID, REPO_URL, REPO_DEFAULT_BRANCH, etc.
41
+ const repoConfigs = buildRepoConfigsFromEnv();
68
42
  // Fail fast if no repoConfigs could be built. Same guard as `ura dev` —
69
43
  // without it the webhook server starts looking healthy and silently
70
44
  // fails every inbound Linear event with "no repo mapping". See urateam#33.
71
- if (Object.keys(repoConfigs).length === 0) {
72
- console.error("Error: no repoConfigs could be built from environment variables.\n" +
73
- "Set REPO_TEAM_ID and REPO_URL and restart.\n" +
74
- "Example:\n" +
75
- " REPO_TEAM_ID=<your Linear team UUID — usually the same as LINEAR_TEAM_ID>\n" +
76
- " REPO_URL=https://github.com/org/repo\n");
77
- process.exit(1);
78
- }
45
+ requireRepoConfigs(repoConfigs, "ura start");
79
46
  // GitHub App config (optional)
80
- let github;
81
- if (process.env.GITHUB_APP_ID && process.env.GITHUB_PRIVATE_KEY_PATH) {
82
- github = {
83
- appId: process.env.GITHUB_APP_ID,
84
- privateKey: readFileSync(process.env.GITHUB_PRIVATE_KEY_PATH, "utf-8"),
85
- installationId: process.env.GITHUB_INSTALLATION_ID
86
- ? parseInt(process.env.GITHUB_INSTALLATION_ID, 10)
87
- : undefined,
88
- };
89
- }
47
+ const { buildGitHubConfigFromEnv } = await import("@urateam/core");
48
+ const github = buildGitHubConfigFromEnv();
90
49
  // PM Agent Slack interface (optional — requires signing secret)
91
50
  const slackSigningSecret = process.env.SLACK_SIGNING_SECRET;
92
51
  const pmSlack = (slackSigningSecret && process.env.SLACK_BOT_TOKEN && process.env.PM_AGENT_SLACK_CHANNEL_ID)
@@ -210,6 +169,13 @@ export const startCommand = new Command("start")
210
169
  // non-negative integer to override on every pipeline that has a
211
170
  // `review` stage (auto-implement, bug, needs-design — not quick-fix).
212
171
  const pipelineConfigs = applyDeepReviewPassesOverride(defaultConfigs, process.env.URATEAM_DEEP_REVIEW_PASSES);
172
+ // --- Resolve and validate workspace directories ---
173
+ const agentRunDir = process.env.AGENT_RUN_DIR ?? join(homedir(), "data", "runs");
174
+ const repoCloneDir = process.env.REPO_CLONE_DIR ?? join(homedir(), "work", "repos");
175
+ await preflightDirs({ agentRunDir, repoCloneDir, command: "ura start" });
176
+ // OSS-tier auth pre-flight (urateam#40). Run before opening the DB so a
177
+ // bad auth state doesn't leave any resources to clean up.
178
+ await preflightClaudeAuth({ command: "ura start", containerized: true });
213
179
  const config = {
214
180
  webhookSecret: process.env.LINEAR_WEBHOOK_SECRET,
215
181
  linearApiKey: process.env.LINEAR_API_KEY ?? "",
@@ -219,17 +185,14 @@ export const startCommand = new Command("start")
219
185
  slackWebhookUrl: process.env.SLACK_WEBHOOK_URL,
220
186
  discordWebhookUrl: process.env.DISCORD_WEBHOOK_URL,
221
187
  concurrency: parseInt(process.env.MAX_CONCURRENT_RUNS ?? "3", 10),
222
- agentRunDir: process.env.AGENT_RUN_DIR,
223
- repoCloneDir: process.env.REPO_CLONE_DIR,
188
+ agentRunDir,
189
+ repoCloneDir,
224
190
  github,
225
191
  dashboardAuth,
226
192
  pmSlack,
227
193
  pmConfig,
228
194
  githubWebhookSecret: process.env.GITHUB_WEBHOOK_SECRET,
229
195
  };
230
- // OSS-tier auth pre-flight (urateam#40). Run before opening the DB so a
231
- // bad auth state doesn't leave any resources to clean up.
232
- await preflightClaudeAuth({ command: "ura start", containerized: true });
233
196
  // --- SSO (Enterprise, opt-in via URATEAM_SSO_ENABLED=true) ---
234
197
  // Validate SSO env vars BEFORE opening the DB / starting the runner so a
235
198
  // misconfigured deployment fails fast without leaking resources.
@@ -270,7 +233,7 @@ export const startCommand = new Command("start")
270
233
  const webhookServer = serve({ fetch: app.fetch, port });
271
234
  const dashServer = serve({ fetch: dashboardApp.fetch, port: dashboardPort });
272
235
  // --- Worktree cleanup cron ---
273
- const agentRunDir = config.agentRunDir ?? "/var/agent-runs";
236
+ // agentRunDir is already resolved above (before preflightClaudeAuth).
274
237
  const _parsedTtl = parseInt(process.env.WORKTREE_TTL_HOURS ?? "24", 10);
275
238
  const worktreeTtlHours = Number.isFinite(_parsedTtl) && _parsedTtl > 0 ? _parsedTtl : 24;
276
239
  async function runCleanup() {
@@ -282,6 +245,31 @@ export const startCommand = new Command("start")
282
245
  await runCleanup();
283
246
  const cleanupInterval = setInterval(runCleanup, 60 * 60 * 1000);
284
247
  cleanupInterval.unref();
248
+ // --- Stale agent-branch sweep cron (BEC-174) ---
249
+ // Sweeps `agent/*` branches on origin whose tip commit is older than
250
+ // PM_AGENT_AGENT_BRANCH_TTL_DAYS (default 7) AND that have no open PR.
251
+ // Skips branches with open PRs to preserve active human review.
252
+ const _parsedAgentBranchTtl = parseInt(process.env.PM_AGENT_AGENT_BRANCH_TTL_DAYS ?? "7", 10);
253
+ const agentBranchTtlDays = Number.isFinite(_parsedAgentBranchTtl) && _parsedAgentBranchTtl > 0
254
+ ? _parsedAgentBranchTtl
255
+ : 7;
256
+ const repoUrls = Object.values(config.repoConfigs).map((r) => r.url);
257
+ async function runBranchSweepTick() {
258
+ try {
259
+ await runAgentBranchSweep({
260
+ db,
261
+ repoUrls,
262
+ repoCloneDir: config.repoCloneDir,
263
+ ttlDays: agentBranchTtlDays,
264
+ });
265
+ }
266
+ catch (err) {
267
+ console.error("Branch sweep tick failed:", err.message);
268
+ }
269
+ }
270
+ void runBranchSweepTick();
271
+ const branchSweepInterval = setInterval(() => void runBranchSweepTick(), 60 * 60 * 1000);
272
+ branchSweepInterval.unref();
285
273
  // --- PM Agent (opt-in) ---
286
274
  let pmInterval;
287
275
  let rmScheduler;
@@ -358,6 +346,7 @@ export const startCommand = new Command("start")
358
346
  function shutdown() {
359
347
  console.log("Shutting down...");
360
348
  clearInterval(cleanupInterval);
349
+ clearInterval(branchSweepInterval);
361
350
  if (pmInterval)
362
351
  clearInterval(pmInterval);
363
352
  rmScheduler?.stop();
@@ -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,39 @@
1
+ /**
2
+ * Shared helpers for building RepoConfig maps from standard env vars.
3
+ * Used by both `ura dev` and `ura start` so both paths honour the same
4
+ * env-var names and defaults — removing the duplication that existed in
5
+ * dev.ts and start.ts before BEC-152 (deep-review pass 1).
6
+ */
7
+ import type { RepoConfig } from "@urateam/core";
8
+ /**
9
+ * Build a RepoConfig map from standard env vars.
10
+ *
11
+ * Recognised env vars (all optional except REPO_TEAM_ID + REPO_URL):
12
+ * REPO_TEAM_ID — Linear team ID (key in the returned map)
13
+ * REPO_URL — Git remote URL
14
+ * REPO_DEFAULT_BRANCH — default "main"
15
+ * REPO_TEST_CMD — default "pnpm test"
16
+ * REPO_BUILD_CMD — default "pnpm build"
17
+ * GITHUB_WEBHOOK_SECRET — enables githubFeedback sub-config
18
+ * GITHUB_FEEDBACK_AUTO_TRIGGER — default "true"
19
+ * GITHUB_FEEDBACK_TRIGGER_KEYWORD — keyword required in comments
20
+ * GITHUB_FEEDBACK_ALLOWED_REVIEWERS — csv of allowed GitHub usernames
21
+ * GITHUB_FEEDBACK_BOT_LOGINS — csv of bot login names
22
+ * REPO_EXCLUDE_PLUGINS — via repoPluginsFromEnv()
23
+ * REPO_EXCLUDE_MCP_SERVERS — via repoPluginsFromEnv()
24
+ * REPO_DISABLE_PLUGIN_AUTODETECT — via repoPluginsFromEnv()
25
+ *
26
+ * Returns an empty object when REPO_TEAM_ID or REPO_URL is unset.
27
+ */
28
+ export declare function buildRepoConfigsFromEnv(): Record<string, RepoConfig>;
29
+ /**
30
+ * Fail-fast guard: exits 1 with a clear operator-actionable error if
31
+ * `repoConfigs` is empty.
32
+ *
33
+ * Without this guard the server starts looking healthy in logs but silently
34
+ * fails every inbound Linear event with "no repo mapping". The first-time-
35
+ * user setup path nearly always hits this because .urateam/.env ships with
36
+ * `REPO_URL=` and `REPO_TEAM_ID=` blank. See urateam#33.
37
+ */
38
+ export declare function requireRepoConfigs(repoConfigs: Record<string, unknown>, command: "ura dev" | "ura start"): void;
39
+ //# sourceMappingURL=build-repo-configs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-repo-configs.d.ts","sourceRoot":"","sources":["../../src/lib/build-repo-configs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAOhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA6BpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,OAAO,EAAE,SAAS,GAAG,WAAW,GAC/B,IAAI,CAWN"}
@@ -0,0 +1,73 @@
1
+ import { repoPluginsFromEnv } from "./repo-plugins-from-env.js";
2
+ function parseCsv(raw) {
3
+ return raw.split(",").filter(Boolean);
4
+ }
5
+ /**
6
+ * Build a RepoConfig map from standard env vars.
7
+ *
8
+ * Recognised env vars (all optional except REPO_TEAM_ID + REPO_URL):
9
+ * REPO_TEAM_ID — Linear team ID (key in the returned map)
10
+ * REPO_URL — Git remote URL
11
+ * REPO_DEFAULT_BRANCH — default "main"
12
+ * REPO_TEST_CMD — default "pnpm test"
13
+ * REPO_BUILD_CMD — default "pnpm build"
14
+ * GITHUB_WEBHOOK_SECRET — enables githubFeedback sub-config
15
+ * GITHUB_FEEDBACK_AUTO_TRIGGER — default "true"
16
+ * GITHUB_FEEDBACK_TRIGGER_KEYWORD — keyword required in comments
17
+ * GITHUB_FEEDBACK_ALLOWED_REVIEWERS — csv of allowed GitHub usernames
18
+ * GITHUB_FEEDBACK_BOT_LOGINS — csv of bot login names
19
+ * REPO_EXCLUDE_PLUGINS — via repoPluginsFromEnv()
20
+ * REPO_EXCLUDE_MCP_SERVERS — via repoPluginsFromEnv()
21
+ * REPO_DISABLE_PLUGIN_AUTODETECT — via repoPluginsFromEnv()
22
+ *
23
+ * Returns an empty object when REPO_TEAM_ID or REPO_URL is unset.
24
+ */
25
+ export function buildRepoConfigsFromEnv() {
26
+ const repoConfigs = {};
27
+ if (!process.env.REPO_TEAM_ID || !process.env.REPO_URL)
28
+ return repoConfigs;
29
+ const repoEntry = {
30
+ url: process.env.REPO_URL,
31
+ defaultBranch: process.env.REPO_DEFAULT_BRANCH ?? "main",
32
+ testCommand: process.env.REPO_TEST_CMD ?? "pnpm test",
33
+ buildCommand: process.env.REPO_BUILD_CMD ?? "pnpm build",
34
+ };
35
+ if (process.env.GITHUB_WEBHOOK_SECRET) {
36
+ repoEntry.githubFeedback = {
37
+ autoTrigger: process.env.GITHUB_FEEDBACK_AUTO_TRIGGER !== "false",
38
+ triggerKeyword: process.env.GITHUB_FEEDBACK_TRIGGER_KEYWORD,
39
+ allowedReviewers: process.env.GITHUB_FEEDBACK_ALLOWED_REVIEWERS
40
+ ? parseCsv(process.env.GITHUB_FEEDBACK_ALLOWED_REVIEWERS)
41
+ : undefined,
42
+ botLogins: process.env.GITHUB_FEEDBACK_BOT_LOGINS
43
+ ? parseCsv(process.env.GITHUB_FEEDBACK_BOT_LOGINS)
44
+ : undefined,
45
+ };
46
+ }
47
+ const pluginCfg = repoPluginsFromEnv();
48
+ if (pluginCfg)
49
+ repoEntry.plugins = pluginCfg;
50
+ repoConfigs[process.env.REPO_TEAM_ID] = repoEntry;
51
+ return repoConfigs;
52
+ }
53
+ /**
54
+ * Fail-fast guard: exits 1 with a clear operator-actionable error if
55
+ * `repoConfigs` is empty.
56
+ *
57
+ * Without this guard the server starts looking healthy in logs but silently
58
+ * fails every inbound Linear event with "no repo mapping". The first-time-
59
+ * user setup path nearly always hits this because .urateam/.env ships with
60
+ * `REPO_URL=` and `REPO_TEAM_ID=` blank. See urateam#33.
61
+ */
62
+ export function requireRepoConfigs(repoConfigs, command) {
63
+ if (Object.keys(repoConfigs).length > 0)
64
+ return;
65
+ console.error("Error: no repoConfigs could be built from environment variables.\n" +
66
+ "Set REPO_TEAM_ID and REPO_URL in .urateam/.env and restart.\n" +
67
+ "Example:\n" +
68
+ " REPO_TEAM_ID=<your Linear team UUID — usually the same as LINEAR_TEAM_ID>\n" +
69
+ ` REPO_URL=https://github.com/org/repo\n` +
70
+ `\n(command: ${command})\n`);
71
+ process.exit(1);
72
+ }
73
+ //# sourceMappingURL=build-repo-configs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-repo-configs.js","sourceRoot":"","sources":["../../src/lib/build-repo-configs.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAA+B,EAAE,CAAC;IACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,WAAW,CAAC;IAE3E,MAAM,SAAS,GAAe;QAC5B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;QACzB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM;QACxD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,WAAW;QACrD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,YAAY;KACzD,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACtC,SAAS,CAAC,cAAc,GAAG;YACzB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,OAAO;YACjE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,+BAA+B;YAC3D,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC;gBAC7D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBACzD,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;gBAC/C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;gBAClD,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,SAAS;QAAE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;IAE7C,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IAClD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAoC,EACpC,OAAgC;IAEhC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAChD,OAAO,CAAC,KAAK,CACX,oEAAoE;QAClE,+DAA+D;QAC/D,YAAY;QACZ,+EAA+E;QAC/E,0CAA0C;QAC1C,eAAe,OAAO,KAAK,CAC9B,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function preflightDirs(opts: {
2
+ agentRunDir: string;
3
+ repoCloneDir: string;
4
+ command: "ura dev" | "ura start";
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=preflight-dirs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-dirs.d.ts","sourceRoot":"","sources":["../../src/lib/preflight-dirs.ts"],"names":[],"mappings":"AAYA,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,SAAS,GAAG,WAAW,CAAC;CAClC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Pre-flight check for AGENT_RUN_DIR and REPO_CLONE_DIR (BEC-152).
3
+ *
4
+ * Creates the directories if they don't exist and verifies they are writable
5
+ * by writing a `.touch` test file. Exits with a clear error message if either
6
+ * directory cannot be created or written to.
7
+ *
8
+ * Fixes BEC-152: default /var paths are not writable in non-root containers.
9
+ */
10
+ import { mkdirSync, writeFileSync, unlinkSync } from "node:fs";
11
+ import { join } from "node:path";
12
+ export async function preflightDirs(opts) {
13
+ const { agentRunDir, repoCloneDir, command } = opts;
14
+ for (const [name, dir] of [
15
+ ["AGENT_RUN_DIR", agentRunDir],
16
+ ["REPO_CLONE_DIR", repoCloneDir],
17
+ ]) {
18
+ // Step 1: Create directory (mkdir -p equivalent)
19
+ try {
20
+ mkdirSync(dir, { recursive: true });
21
+ }
22
+ catch (err) {
23
+ const msg = err instanceof Error ? err.message : String(err);
24
+ console.error(`⚠ Directory setup failed at startup.\n` +
25
+ ` ${name}=${dir} could not be created: ${msg}\n` +
26
+ ` Ensure the path is writable by the current user, or set ${name} to a\n` +
27
+ ` user-writable path (e.g. ${name}=$HOME/data/runs) and restart \`${command}\`.\n`);
28
+ process.exit(1);
29
+ }
30
+ // Step 2: Verify writability by writing a test file
31
+ const touchPath = join(dir, ".touch");
32
+ try {
33
+ writeFileSync(touchPath, "");
34
+ try {
35
+ unlinkSync(touchPath);
36
+ }
37
+ catch {
38
+ // ignore cleanup failure — the directory is writable, that's what matters
39
+ }
40
+ }
41
+ catch (err) {
42
+ const msg = err instanceof Error ? err.message : String(err);
43
+ console.error(`⚠ Directory writability check failed at startup.\n` +
44
+ ` ${name}=${dir} exists but is not writable: ${msg}\n` +
45
+ ` Ensure the path is writable by the current user, or set ${name} to a\n` +
46
+ ` user-writable path (e.g. ${name}=$HOME/data/runs) and restart \`${command}\`.\n`);
47
+ process.exit(1);
48
+ }
49
+ }
50
+ }
51
+ //# sourceMappingURL=preflight-dirs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-dirs.js","sourceRoot":"","sources":["../../src/lib/preflight-dirs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAInC;IACC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEpD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI;QACxB,CAAC,eAAe,EAAE,WAAW,CAAC;QAC9B,CAAC,gBAAgB,EAAE,YAAY,CAAC;KACxB,EAAE,CAAC;QACX,iDAAiD;QACjD,IAAI,CAAC;YACH,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CACX,wCAAwC;gBACtC,KAAK,IAAI,IAAI,GAAG,0BAA0B,GAAG,IAAI;gBACjD,6DAA6D,IAAI,SAAS;gBAC1E,8BAA8B,IAAI,mCAAmC,OAAO,OAAO,CACtF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oDAAoD;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC;gBACH,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,0EAA0E;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CACX,oDAAoD;gBAClD,KAAK,IAAI,IAAI,GAAG,gCAAgC,GAAG,IAAI;gBACvD,6DAA6D,IAAI,SAAS;gBAC1E,8BAA8B,IAAI,mCAAmC,OAAO,OAAO,CACtF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urateam/cli",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "license": "BUSL-1.1",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,8 +22,8 @@
22
22
  "better-sqlite3": "^11.8.0",
23
23
  "commander": "^13.1.0",
24
24
  "postgres": "^3.4.0",
25
- "@urateam/core": "0.1.22",
26
- "@urateam/dashboard": "0.1.22"
25
+ "@urateam/core": "0.1.24",
26
+ "@urateam/dashboard": "0.1.24"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/better-sqlite3": "^7.6.0",