create-urateam 0.1.9 → 0.1.12
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__/scaffold.test.js +166 -2
- package/dist/__tests__/scaffold.test.js.map +1 -1
- package/dist/index.d.ts +73 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +395 -63
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/template/.urateam/Dockerfile +10 -1
- package/template/.urateam/README.md +7 -2
- package/template/.urateam/docker-compose.yml +6 -0
|
@@ -96,9 +96,10 @@ describe("scaffold — sidecar pattern", () => {
|
|
|
96
96
|
const projectDir = join(tempDir, "my-project");
|
|
97
97
|
scaffold(baseOptions(projectDir, "my-project"));
|
|
98
98
|
const env = readFileSync(join(projectDir, ".urateam", ".env"), "utf-8");
|
|
99
|
-
|
|
99
|
+
// base64url-encoded 18 random bytes = 24 chars, no padding, no `+` or `/`
|
|
100
|
+
const match = env.match(/DASHBOARD_PASSWORD=([A-Za-z0-9_-]+)/);
|
|
100
101
|
expect(match).not.toBeNull();
|
|
101
|
-
expect(match[1].length).toBeGreaterThanOrEqual(
|
|
102
|
+
expect(match[1].length).toBeGreaterThanOrEqual(20);
|
|
102
103
|
});
|
|
103
104
|
it("creates README.md at project root with project name", () => {
|
|
104
105
|
const projectDir = join(tempDir, "my-project");
|
|
@@ -267,4 +268,167 @@ describe("scaffold — sidecar pattern", () => {
|
|
|
267
268
|
});
|
|
268
269
|
});
|
|
269
270
|
});
|
|
271
|
+
describe("decodeLicense", () => {
|
|
272
|
+
// We import lazily inside each test to keep the existing top-of-file
|
|
273
|
+
// import structure clean.
|
|
274
|
+
it("decodes a Pro JWT and reads tier + features", async () => {
|
|
275
|
+
const { decodeLicense } = await import("../index.js");
|
|
276
|
+
// Hand-rolled unsigned JWT (header.payload.signature — signature ignored by decoder)
|
|
277
|
+
const header = Buffer.from(JSON.stringify({ alg: "EdDSA", typ: "JWT" })).toString("base64url");
|
|
278
|
+
const payload = Buffer.from(JSON.stringify({
|
|
279
|
+
iss: "urateams.com",
|
|
280
|
+
sub: "cust_test",
|
|
281
|
+
tier: "pro",
|
|
282
|
+
features: ["slack-interface", "deep-review", "multi-repo"],
|
|
283
|
+
exp: 2_000_000_000,
|
|
284
|
+
})).toString("base64url");
|
|
285
|
+
const jwt = `${header}.${payload}.x`;
|
|
286
|
+
const info = decodeLicense(jwt);
|
|
287
|
+
expect(info?.tier).toBe("pro");
|
|
288
|
+
expect(info?.features).toEqual(["slack-interface", "deep-review", "multi-repo"]);
|
|
289
|
+
expect(info?.customerId).toBe("cust_test");
|
|
290
|
+
});
|
|
291
|
+
it("returns null on malformed JWT", async () => {
|
|
292
|
+
const { decodeLicense } = await import("../index.js");
|
|
293
|
+
expect(decodeLicense("not.a.jwt")).toBeNull();
|
|
294
|
+
expect(decodeLicense("")).toBeNull();
|
|
295
|
+
expect(decodeLicense(undefined)).toBeNull();
|
|
296
|
+
expect(decodeLicense("only.two")).toBeNull();
|
|
297
|
+
});
|
|
298
|
+
it("falls back to oss tier for unknown tier values", async () => {
|
|
299
|
+
const { decodeLicense } = await import("../index.js");
|
|
300
|
+
const payload = Buffer.from(JSON.stringify({ tier: "rogue" })).toString("base64url");
|
|
301
|
+
expect(decodeLicense(`x.${payload}.y`)?.tier).toBe("oss");
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
describe("scaffold — production options", () => {
|
|
305
|
+
let tempDir;
|
|
306
|
+
beforeEach(() => {
|
|
307
|
+
tempDir = mkdtempSync(join(tmpdir(), "create-urateam-test-prod-"));
|
|
308
|
+
});
|
|
309
|
+
afterEach(() => {
|
|
310
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
311
|
+
});
|
|
312
|
+
it("writes DOMAIN + CADDY_EMAIL when deployMode is production", () => {
|
|
313
|
+
const projectDir = join(tempDir, "prod");
|
|
314
|
+
scaffold({
|
|
315
|
+
projectDir,
|
|
316
|
+
projectName: "prod",
|
|
317
|
+
linearApiKey: "lin_api",
|
|
318
|
+
linearTeamId: "team-1",
|
|
319
|
+
repoUrl: "https://github.com/o/r",
|
|
320
|
+
defaultBranch: "main",
|
|
321
|
+
deployMode: "production",
|
|
322
|
+
domain: "myateam.example.com",
|
|
323
|
+
caddyEmail: "ops@example.com",
|
|
324
|
+
});
|
|
325
|
+
const env = readFileSync(join(projectDir, ".urateam", ".env"), "utf-8");
|
|
326
|
+
expect(env).toContain("DOMAIN=myateam.example.com");
|
|
327
|
+
expect(env).toContain("CADDY_EMAIL=ops@example.com");
|
|
328
|
+
});
|
|
329
|
+
it("omits DOMAIN block when deployMode is local", () => {
|
|
330
|
+
const projectDir = join(tempDir, "loc");
|
|
331
|
+
scaffold({
|
|
332
|
+
projectDir,
|
|
333
|
+
projectName: "loc",
|
|
334
|
+
linearApiKey: "x",
|
|
335
|
+
linearTeamId: "t",
|
|
336
|
+
repoUrl: "https://github.com/o/r",
|
|
337
|
+
defaultBranch: "main",
|
|
338
|
+
deployMode: "local",
|
|
339
|
+
});
|
|
340
|
+
const env = readFileSync(join(projectDir, ".urateam", ".env"), "utf-8");
|
|
341
|
+
expect(env).not.toContain("DOMAIN=");
|
|
342
|
+
expect(env).not.toContain("CADDY_EMAIL=");
|
|
343
|
+
});
|
|
344
|
+
it("writes PM_AGENT block when pmAgent is provided", () => {
|
|
345
|
+
const projectDir = join(tempDir, "pm");
|
|
346
|
+
scaffold({
|
|
347
|
+
projectDir,
|
|
348
|
+
projectName: "pm",
|
|
349
|
+
linearApiKey: "x",
|
|
350
|
+
linearTeamId: "t",
|
|
351
|
+
repoUrl: "https://github.com/o/r",
|
|
352
|
+
defaultBranch: "main",
|
|
353
|
+
pmAgent: {
|
|
354
|
+
slackBotToken: "xoxb-123",
|
|
355
|
+
slackSigningSecret: "sig123",
|
|
356
|
+
slackChannelId: "C123",
|
|
357
|
+
teamIds: "team-1,team-2",
|
|
358
|
+
dailyTokenBudget: 7_500_000,
|
|
359
|
+
},
|
|
360
|
+
});
|
|
361
|
+
const env = readFileSync(join(projectDir, ".urateam", ".env"), "utf-8");
|
|
362
|
+
expect(env).toContain("PM_AGENT_ENABLED=true");
|
|
363
|
+
expect(env).toContain("PM_AGENT_TEAM_IDS=team-1,team-2");
|
|
364
|
+
expect(env).toContain("PM_AGENT_SLACK_CHANNEL_ID=C123");
|
|
365
|
+
expect(env).toContain("PM_AGENT_DAILY_TOKEN_BUDGET=7500000");
|
|
366
|
+
expect(env).toContain("SLACK_BOT_TOKEN=xoxb-123");
|
|
367
|
+
});
|
|
368
|
+
it("comments out PM_AGENT block by default", () => {
|
|
369
|
+
const projectDir = join(tempDir, "no-pm");
|
|
370
|
+
scaffold({
|
|
371
|
+
projectDir,
|
|
372
|
+
projectName: "no-pm",
|
|
373
|
+
linearApiKey: "x",
|
|
374
|
+
linearTeamId: "t",
|
|
375
|
+
repoUrl: "https://github.com/o/r",
|
|
376
|
+
defaultBranch: "main",
|
|
377
|
+
});
|
|
378
|
+
const env = readFileSync(join(projectDir, ".urateam", ".env"), "utf-8");
|
|
379
|
+
expect(env).toContain("# PM_AGENT_ENABLED=true");
|
|
380
|
+
expect(env).not.toMatch(/^PM_AGENT_ENABLED=true/m);
|
|
381
|
+
});
|
|
382
|
+
it("leaves secrets blank when autoGenSecrets is false", () => {
|
|
383
|
+
const projectDir = join(tempDir, "manual-secrets");
|
|
384
|
+
const result = scaffold({
|
|
385
|
+
projectDir,
|
|
386
|
+
projectName: "manual-secrets",
|
|
387
|
+
linearApiKey: "x",
|
|
388
|
+
linearTeamId: "t",
|
|
389
|
+
repoUrl: "https://github.com/o/r",
|
|
390
|
+
defaultBranch: "main",
|
|
391
|
+
autoGenSecrets: false,
|
|
392
|
+
});
|
|
393
|
+
const env = readFileSync(join(projectDir, ".urateam", ".env"), "utf-8");
|
|
394
|
+
expect(env).toMatch(/^DASHBOARD_PASSWORD=$/m);
|
|
395
|
+
expect(env).toMatch(/^POSTGRES_PASSWORD=$/m);
|
|
396
|
+
expect(env).toMatch(/^GITHUB_WEBHOOK_SECRET=$/m);
|
|
397
|
+
expect(result.generatedSecrets).toEqual({});
|
|
398
|
+
expect(result.todos).toEqual(expect.arrayContaining([
|
|
399
|
+
expect.stringContaining("DASHBOARD_PASSWORD"),
|
|
400
|
+
expect.stringContaining("POSTGRES_PASSWORD"),
|
|
401
|
+
expect.stringContaining("GITHUB_WEBHOOK_SECRET"),
|
|
402
|
+
]));
|
|
403
|
+
});
|
|
404
|
+
it("returns license info in result when licenseKey decodes", () => {
|
|
405
|
+
const payload = Buffer.from(JSON.stringify({ tier: "pro", features: ["slack-interface"] })).toString("base64url");
|
|
406
|
+
const projectDir = join(tempDir, "lic");
|
|
407
|
+
const result = scaffold({
|
|
408
|
+
projectDir,
|
|
409
|
+
projectName: "lic",
|
|
410
|
+
linearApiKey: "x",
|
|
411
|
+
linearTeamId: "t",
|
|
412
|
+
repoUrl: "https://github.com/o/r",
|
|
413
|
+
defaultBranch: "main",
|
|
414
|
+
licenseKey: `x.${payload}.y`,
|
|
415
|
+
});
|
|
416
|
+
expect(result.license?.tier).toBe("pro");
|
|
417
|
+
expect(result.license?.features).toContain("slack-interface");
|
|
418
|
+
});
|
|
419
|
+
it("surfaces a TODO when license has slack-interface but no pmAgent provided", () => {
|
|
420
|
+
const payload = Buffer.from(JSON.stringify({ tier: "pro", features: ["slack-interface"] })).toString("base64url");
|
|
421
|
+
const projectDir = join(tempDir, "lic-todo");
|
|
422
|
+
const result = scaffold({
|
|
423
|
+
projectDir,
|
|
424
|
+
projectName: "lic-todo",
|
|
425
|
+
linearApiKey: "x",
|
|
426
|
+
linearTeamId: "t",
|
|
427
|
+
repoUrl: "https://github.com/o/r",
|
|
428
|
+
defaultBranch: "main",
|
|
429
|
+
licenseKey: `x.${payload}.y`,
|
|
430
|
+
});
|
|
431
|
+
expect(result.todos).toEqual(expect.arrayContaining([expect.stringContaining("PM_AGENT_*")]));
|
|
432
|
+
});
|
|
433
|
+
});
|
|
270
434
|
//# sourceMappingURL=scaffold.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.test.js","sourceRoot":"","sources":["../../src/__tests__/scaffold.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffold.test.js","sourceRoot":"","sources":["../../src/__tests__/scaffold.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
export interface PmAgentOptions {
|
|
3
|
+
slackBotToken: string;
|
|
4
|
+
slackSigningSecret: string;
|
|
5
|
+
slackChannelId: string;
|
|
6
|
+
teamIds: string;
|
|
7
|
+
/** Daily token cap for the PM agent loop. Default 5_000_000 (5M). */
|
|
8
|
+
dailyTokenBudget?: number;
|
|
9
|
+
}
|
|
2
10
|
export interface ScaffoldOptions {
|
|
3
11
|
/** The project root directory. `.urateam/` will be created inside it. */
|
|
4
12
|
projectDir: string;
|
|
@@ -8,7 +16,68 @@ export interface ScaffoldOptions {
|
|
|
8
16
|
linearTeamId: string;
|
|
9
17
|
repoUrl: string;
|
|
10
18
|
defaultBranch: string;
|
|
19
|
+
deployMode?: "local" | "production";
|
|
20
|
+
/** Public hostname Caddy will request a Let's Encrypt cert for. */
|
|
21
|
+
domain?: string;
|
|
22
|
+
/** Email for ACME / Let's Encrypt expiry warnings. */
|
|
23
|
+
caddyEmail?: string;
|
|
24
|
+
/** Linear webhook signing secret — must match the value set in Linear. */
|
|
25
|
+
linearWebhookSecret?: string;
|
|
26
|
+
/** Anthropic auth — set this for headless / API-key path; omit for `claude login`. */
|
|
27
|
+
anthropicApiKey?: string;
|
|
28
|
+
/** Pro license JWT. If omitted, the scaffolded sidecar runs in OSS mode. */
|
|
29
|
+
licenseKey?: string;
|
|
30
|
+
/** Dashboard basic-auth username (default "admin"). */
|
|
31
|
+
dashboardUser?: string;
|
|
32
|
+
/** Dashboard basic-auth password. If omitted and autoGenSecrets is true, a fresh one is generated. */
|
|
33
|
+
dashboardPassword?: string;
|
|
34
|
+
/** Postgres password. If omitted and autoGenSecrets is true, a fresh one is generated. */
|
|
35
|
+
postgresPassword?: string;
|
|
36
|
+
/** GitHub webhook signing secret. If omitted and autoGenSecrets is true, a fresh one is generated. */
|
|
37
|
+
githubWebhookSecret?: string;
|
|
38
|
+
/** Concurrency cap for in-flight pipeline runs. Default 3. */
|
|
39
|
+
maxConcurrentRuns?: number;
|
|
40
|
+
/** Pro PM-agent setup. Only honored when license tier includes `slack-interface`. */
|
|
41
|
+
pmAgent?: PmAgentOptions;
|
|
42
|
+
/**
|
|
43
|
+
* When true (default), missing secret fields (DASHBOARD_PASSWORD, POSTGRES_PASSWORD,
|
|
44
|
+
* GITHUB_WEBHOOK_SECRET) are auto-generated. When false, missing fields are written
|
|
45
|
+
* blank in .env so the operator can fill them in by hand.
|
|
46
|
+
*/
|
|
47
|
+
autoGenSecrets?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface LicenseInfo {
|
|
50
|
+
tier: "pro" | "enterprise" | "oss";
|
|
51
|
+
features: string[];
|
|
52
|
+
customerId?: string;
|
|
53
|
+
expiresAt?: Date;
|
|
11
54
|
}
|
|
55
|
+
export interface ScaffoldResult {
|
|
56
|
+
/** Absolute path to the created `.urateam/` directory. */
|
|
57
|
+
urateamDir: string;
|
|
58
|
+
/** Decoded license info, or null if no licenseKey was provided / it was unparseable. */
|
|
59
|
+
license: LicenseInfo | null;
|
|
60
|
+
/** Auto-generated secrets that the operator should record on first run. */
|
|
61
|
+
generatedSecrets: {
|
|
62
|
+
dashboardPassword?: string;
|
|
63
|
+
postgresPassword?: string;
|
|
64
|
+
githubWebhookSecret?: string;
|
|
65
|
+
};
|
|
66
|
+
/** TODOs surfaced for the next-steps printout. */
|
|
67
|
+
todos: string[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Decode a urateam license JWT payload WITHOUT verifying the signature.
|
|
71
|
+
*
|
|
72
|
+
* The scaffolder doesn't ship the public key (would bloat the package and
|
|
73
|
+
* couple it to a specific signing-key generation), and a malformed JWT here
|
|
74
|
+
* just produces a wrong prompt flow which is recoverable by editing .env
|
|
75
|
+
* after the fact. Production verification happens at runtime in the agent
|
|
76
|
+
* via packages/core/src/license.ts against the embedded public key.
|
|
77
|
+
*
|
|
78
|
+
* Returns null on any parse failure.
|
|
79
|
+
*/
|
|
80
|
+
export declare function decodeLicense(jwt: string | undefined | null): LicenseInfo | null;
|
|
12
81
|
/**
|
|
13
82
|
* Scaffold a urateam sidecar into a project directory.
|
|
14
83
|
*
|
|
@@ -19,14 +88,14 @@ export interface ScaffoldOptions {
|
|
|
19
88
|
* - .env.example
|
|
20
89
|
* - Dockerfile
|
|
21
90
|
* - docker-compose.yml
|
|
91
|
+
* - Caddyfile — reverse proxy + auto-HTTPS
|
|
22
92
|
* - README.md — how to run the sidecar
|
|
23
93
|
* - <projectDir>/CLAUDE.md — project conventions (only if absent)
|
|
24
94
|
* - <projectDir>/README.md — project readme (only if absent)
|
|
25
95
|
* - <projectDir>/.gitignore — ensures .urateam/.env is ignored
|
|
26
96
|
*
|
|
27
|
-
* The project root `package.json` is NOT touched
|
|
28
|
-
*
|
|
29
|
-
* preserved (not overwritten).
|
|
97
|
+
* The project root `package.json` is NOT touched. Existing `.env` and
|
|
98
|
+
* `package.json` inside `.urateam/` are preserved on re-run.
|
|
30
99
|
*/
|
|
31
|
-
export declare function scaffold(options: ScaffoldOptions):
|
|
100
|
+
export declare function scaffold(options: ScaffoldOptions): ScaffoldResult;
|
|
32
101
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAkBA,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IACpC,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sFAAsF;IACtF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sGAAsG;IACtG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,GAAG,YAAY,GAAG,KAAK,CAAC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,2EAA2E;IAC3E,gBAAgB,EAAE;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,kDAAkD;IAClD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CA2BhF;AAgKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CA4IjE"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,159 @@ import { fileURLToPath } from "url";
|
|
|
5
5
|
import { randomBytes } from "crypto";
|
|
6
6
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
7
|
const __dirname = dirname(__filename);
|
|
8
|
+
/**
|
|
9
|
+
* Decode a urateam license JWT payload WITHOUT verifying the signature.
|
|
10
|
+
*
|
|
11
|
+
* The scaffolder doesn't ship the public key (would bloat the package and
|
|
12
|
+
* couple it to a specific signing-key generation), and a malformed JWT here
|
|
13
|
+
* just produces a wrong prompt flow which is recoverable by editing .env
|
|
14
|
+
* after the fact. Production verification happens at runtime in the agent
|
|
15
|
+
* via packages/core/src/license.ts against the embedded public key.
|
|
16
|
+
*
|
|
17
|
+
* Returns null on any parse failure.
|
|
18
|
+
*/
|
|
19
|
+
export function decodeLicense(jwt) {
|
|
20
|
+
if (!jwt)
|
|
21
|
+
return null;
|
|
22
|
+
const segments = jwt.split(".");
|
|
23
|
+
if (segments.length !== 3)
|
|
24
|
+
return null;
|
|
25
|
+
try {
|
|
26
|
+
const payloadJson = Buffer.from(segments[1].replace(/-/g, "+").replace(/_/g, "/") +
|
|
27
|
+
"=".repeat((4 - (segments[1].length % 4)) % 4), "base64").toString("utf-8");
|
|
28
|
+
const payload = JSON.parse(payloadJson);
|
|
29
|
+
const tier = payload.tier === "pro" || payload.tier === "enterprise" ? payload.tier : "oss";
|
|
30
|
+
return {
|
|
31
|
+
tier,
|
|
32
|
+
features: payload.features ?? [],
|
|
33
|
+
customerId: payload.sub,
|
|
34
|
+
expiresAt: payload.exp ? new Date(payload.exp * 1000) : undefined,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Build the `.env` content for a scaffolded urateam sidecar.
|
|
43
|
+
*
|
|
44
|
+
* Pure function: takes already-resolved values, returns the file string.
|
|
45
|
+
* Auto-generation of missing secrets is the caller's responsibility (see
|
|
46
|
+
* resolveSecrets below) so this stays trivially testable.
|
|
47
|
+
*/
|
|
48
|
+
function buildEnv(options) {
|
|
49
|
+
const lines = [];
|
|
50
|
+
const push = (line) => lines.push(line);
|
|
51
|
+
const blank = () => lines.push("");
|
|
52
|
+
push("# === Linear (REQUIRED) ===");
|
|
53
|
+
push(`LINEAR_API_KEY=${options.linearApiKey}`);
|
|
54
|
+
// Comment out when blank so the runtime's "is required" check fails fast
|
|
55
|
+
// with the right message instead of silently treating "" as a valid secret.
|
|
56
|
+
if (options.linearWebhookSecret) {
|
|
57
|
+
push(`LINEAR_WEBHOOK_SECRET=${options.linearWebhookSecret}`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
push("# LINEAR_WEBHOOK_SECRET= # paste from Linear's webhook config UI");
|
|
61
|
+
}
|
|
62
|
+
push(`LINEAR_TEAM_ID=${options.linearTeamId}`);
|
|
63
|
+
blank();
|
|
64
|
+
push("# === Repository (REQUIRED) ===");
|
|
65
|
+
push(`REPO_URL=${options.repoUrl}`);
|
|
66
|
+
push(`REPO_DEFAULT_BRANCH=${options.defaultBranch}`);
|
|
67
|
+
push(`REPO_TEAM_ID=${options.linearTeamId}`);
|
|
68
|
+
blank();
|
|
69
|
+
push("# === Anthropic auth ===");
|
|
70
|
+
if (options.anthropicApiKey) {
|
|
71
|
+
push(`ANTHROPIC_API_KEY=${options.anthropicApiKey}`);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
push("# ANTHROPIC_API_KEY= # blank → run `docker compose exec agent claude login` after deploy");
|
|
75
|
+
}
|
|
76
|
+
blank();
|
|
77
|
+
push("# === Pro license (blank = OSS tier) ===");
|
|
78
|
+
push(`URATEAM_LICENSE_KEY=${options.licenseKey}`);
|
|
79
|
+
blank();
|
|
80
|
+
push("# === GitHub auth (REQUIRED for PR creation) ===");
|
|
81
|
+
push("# Either run `docker compose exec agent gh auth login` after deploy,");
|
|
82
|
+
push("# or set the GitHub App trio below:");
|
|
83
|
+
push("# GITHUB_APP_ID=");
|
|
84
|
+
push("# GITHUB_PRIVATE_KEY_PATH=/run/gh-app.pem");
|
|
85
|
+
push("# GITHUB_INSTALLATION_ID=");
|
|
86
|
+
push(`GITHUB_WEBHOOK_SECRET=${options.githubWebhookSecret}`);
|
|
87
|
+
blank();
|
|
88
|
+
push("# === Database ===");
|
|
89
|
+
push(`POSTGRES_PASSWORD=${options.postgresPassword}`);
|
|
90
|
+
blank();
|
|
91
|
+
if (options.deployMode === "production") {
|
|
92
|
+
push("# === Domain (production deploy) ===");
|
|
93
|
+
push(`DOMAIN=${options.domain}`);
|
|
94
|
+
push(`CADDY_EMAIL=${options.caddyEmail}`);
|
|
95
|
+
blank();
|
|
96
|
+
}
|
|
97
|
+
push("# === Dashboard auth ===");
|
|
98
|
+
push(`DASHBOARD_USER=${options.dashboardUser}`);
|
|
99
|
+
push(`DASHBOARD_PASSWORD=${options.dashboardPassword}`);
|
|
100
|
+
push("# DASHBOARD_BASE_PATH= # set with leading slash, no trailing, when behind a path prefix");
|
|
101
|
+
blank();
|
|
102
|
+
push("# === Concurrency ===");
|
|
103
|
+
push(`MAX_CONCURRENT_RUNS=${options.maxConcurrentRuns}`);
|
|
104
|
+
blank();
|
|
105
|
+
if (options.pmAgent) {
|
|
106
|
+
push("# === PM Agent (Pro: slack-interface) ===");
|
|
107
|
+
push("PM_AGENT_ENABLED=true");
|
|
108
|
+
push(`PM_AGENT_TEAM_IDS=${options.pmAgent.teamIds}`);
|
|
109
|
+
push(`PM_AGENT_SLACK_CHANNEL_ID=${options.pmAgent.slackChannelId}`);
|
|
110
|
+
push(`PM_AGENT_DAILY_TOKEN_BUDGET=${options.pmAgent.dailyTokenBudget ?? 5_000_000}`);
|
|
111
|
+
push(`PM_AGENT_MAX_IN_FLIGHT=3`);
|
|
112
|
+
push(`SLACK_BOT_TOKEN=${options.pmAgent.slackBotToken}`);
|
|
113
|
+
push(`SLACK_SIGNING_SECRET=${options.pmAgent.slackSigningSecret}`);
|
|
114
|
+
blank();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
push("# === PM Agent (Pro: slack-interface) — fill in to enable ===");
|
|
118
|
+
push("# PM_AGENT_ENABLED=true");
|
|
119
|
+
push("# PM_AGENT_TEAM_IDS=");
|
|
120
|
+
push("# PM_AGENT_SLACK_CHANNEL_ID=");
|
|
121
|
+
push("# PM_AGENT_DAILY_TOKEN_BUDGET=5000000");
|
|
122
|
+
push("# PM_AGENT_MAX_IN_FLIGHT=3");
|
|
123
|
+
push("# SLACK_BOT_TOKEN=");
|
|
124
|
+
push("# SLACK_SIGNING_SECRET=");
|
|
125
|
+
blank();
|
|
126
|
+
}
|
|
127
|
+
push("# === Optional ===");
|
|
128
|
+
push("# SLACK_WEBHOOK_URL= # incoming webhook for pipeline notifications (no Pro license needed)");
|
|
129
|
+
push("# DISCORD_WEBHOOK_URL=");
|
|
130
|
+
push("# LOG_LEVEL=info");
|
|
131
|
+
push("");
|
|
132
|
+
push("# Additional tunables (worktree TTL, agent profiles, repo clone dir, etc.)");
|
|
133
|
+
push("# documented in .env.example next to this file. Keep that file as the");
|
|
134
|
+
push("# canonical reference; this .env is generated from prompts.");
|
|
135
|
+
return lines.join("\n") + "\n";
|
|
136
|
+
}
|
|
137
|
+
function resolveSecrets(options) {
|
|
138
|
+
const autoGen = options.autoGenSecrets ?? true;
|
|
139
|
+
const generated = {};
|
|
140
|
+
let dashboardPassword = options.dashboardPassword ?? "";
|
|
141
|
+
let postgresPassword = options.postgresPassword ?? "";
|
|
142
|
+
let githubWebhookSecret = options.githubWebhookSecret ?? "";
|
|
143
|
+
if (autoGen) {
|
|
144
|
+
// base64url avoids `+`, `/`, `=` which can trip strict env-file parsers
|
|
145
|
+
// and a few HMAC validators in the wild.
|
|
146
|
+
if (!dashboardPassword) {
|
|
147
|
+
dashboardPassword = randomBytes(18).toString("base64url");
|
|
148
|
+
generated.dashboardPassword = dashboardPassword;
|
|
149
|
+
}
|
|
150
|
+
if (!postgresPassword) {
|
|
151
|
+
postgresPassword = randomBytes(24).toString("base64url");
|
|
152
|
+
generated.postgresPassword = postgresPassword;
|
|
153
|
+
}
|
|
154
|
+
if (!githubWebhookSecret) {
|
|
155
|
+
githubWebhookSecret = randomBytes(32).toString("hex");
|
|
156
|
+
generated.githubWebhookSecret = githubWebhookSecret;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return { dashboardPassword, postgresPassword, githubWebhookSecret, generated };
|
|
160
|
+
}
|
|
8
161
|
/**
|
|
9
162
|
* Scaffold a urateam sidecar into a project directory.
|
|
10
163
|
*
|
|
@@ -15,41 +168,32 @@ const __dirname = dirname(__filename);
|
|
|
15
168
|
* - .env.example
|
|
16
169
|
* - Dockerfile
|
|
17
170
|
* - docker-compose.yml
|
|
171
|
+
* - Caddyfile — reverse proxy + auto-HTTPS
|
|
18
172
|
* - README.md — how to run the sidecar
|
|
19
173
|
* - <projectDir>/CLAUDE.md — project conventions (only if absent)
|
|
20
174
|
* - <projectDir>/README.md — project readme (only if absent)
|
|
21
175
|
* - <projectDir>/.gitignore — ensures .urateam/.env is ignored
|
|
22
176
|
*
|
|
23
|
-
* The project root `package.json` is NOT touched
|
|
24
|
-
*
|
|
25
|
-
* preserved (not overwritten).
|
|
177
|
+
* The project root `package.json` is NOT touched. Existing `.env` and
|
|
178
|
+
* `package.json` inside `.urateam/` are preserved on re-run.
|
|
26
179
|
*/
|
|
27
180
|
export function scaffold(options) {
|
|
28
181
|
const { projectDir, projectName, linearApiKey, linearTeamId, repoUrl, defaultBranch } = options;
|
|
29
182
|
mkdirSync(projectDir, { recursive: true });
|
|
30
|
-
// Locate template directory (supports running from dist/ or src/ during tests)
|
|
31
183
|
let templateDir = join(__dirname, "..", "template");
|
|
32
184
|
if (!statSync(templateDir, { throwIfNoEntry: false })?.isDirectory()) {
|
|
33
185
|
templateDir = join(__dirname, "..", "..", "template");
|
|
34
186
|
}
|
|
35
|
-
// --- Sidecar files: refresh template files but preserve .env and package.json ---
|
|
36
|
-
// Template files (Dockerfile, docker-compose.yml, .env.example, README.md)
|
|
37
|
-
// are always overwritten with the latest version from the package.
|
|
38
|
-
// User-editable files (.env, package.json) are preserved if they exist
|
|
39
|
-
// so re-running create-urateam is safe and non-destructive to credentials.
|
|
40
187
|
const urateamDir = join(projectDir, ".urateam");
|
|
41
188
|
mkdirSync(urateamDir, { recursive: true });
|
|
42
|
-
// Copy template files from template/.urateam/, skipping .env (generated below)
|
|
43
189
|
const urateamTemplateDir = join(templateDir, ".urateam");
|
|
44
190
|
for (const entry of readdirSync(urateamTemplateDir)) {
|
|
45
|
-
// .env is never in the template — it's generated below — but guard anyway
|
|
46
191
|
if (entry === ".env")
|
|
47
192
|
continue;
|
|
48
193
|
const src = join(urateamTemplateDir, entry);
|
|
49
194
|
const dest = join(urateamDir, entry);
|
|
50
195
|
cpSync(src, dest, { recursive: true, force: true });
|
|
51
196
|
}
|
|
52
|
-
// Write .urateam/package.json only if absent (user may have customized deps)
|
|
53
197
|
const pkgPath = join(urateamDir, "package.json");
|
|
54
198
|
if (!existsSync(pkgPath)) {
|
|
55
199
|
const pkg = {
|
|
@@ -66,27 +210,69 @@ export function scaffold(options) {
|
|
|
66
210
|
};
|
|
67
211
|
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
|
|
68
212
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
//
|
|
213
|
+
const license = decodeLicense(options.licenseKey);
|
|
214
|
+
const todos = [];
|
|
215
|
+
const { dashboardPassword, postgresPassword, githubWebhookSecret, generated } = resolveSecrets(options);
|
|
216
|
+
// --- Compose .env from inputs + resolved secrets ---
|
|
73
217
|
const envPath = join(urateamDir, ".env");
|
|
74
218
|
if (!existsSync(envPath)) {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
219
|
+
const linearWebhookSecret = options.linearWebhookSecret ?? "";
|
|
220
|
+
if (!linearWebhookSecret) {
|
|
221
|
+
todos.push("LINEAR_WEBHOOK_SECRET — paste from Linear's webhook config UI " +
|
|
222
|
+
"(Workspace settings → API → Webhooks).");
|
|
223
|
+
}
|
|
224
|
+
if (!options.licenseKey) {
|
|
225
|
+
todos.push("URATEAM_LICENSE_KEY — Pro features (PM agent, Slack interface, multi-repo, " +
|
|
226
|
+
"deep-review, etc.) stay disabled until you set this.");
|
|
227
|
+
}
|
|
228
|
+
if (license?.tier &&
|
|
229
|
+
license.tier !== "oss" &&
|
|
230
|
+
license.features.includes("slack-interface") &&
|
|
231
|
+
!options.pmAgent) {
|
|
232
|
+
todos.push("PM_AGENT_* — your license includes `slack-interface`. Fill in the " +
|
|
233
|
+
"PM_AGENT_* + SLACK_* lines in .env to enable it.");
|
|
234
|
+
}
|
|
235
|
+
if (!options.anthropicApiKey) {
|
|
236
|
+
todos.push("Anthropic auth — run `docker compose exec agent claude login` after the stack is up " +
|
|
237
|
+
"(or set ANTHROPIC_API_KEY in .env for headless API auth).");
|
|
238
|
+
}
|
|
239
|
+
todos.push("GitHub auth — run `docker compose exec agent gh auth login` after the stack is up " +
|
|
240
|
+
"(or set the GITHUB_APP_* trio in .env for app-based auth).");
|
|
241
|
+
if (options.deployMode === "production" && !options.domain) {
|
|
242
|
+
todos.push("DOMAIN — set in .env before running `docker compose up`.");
|
|
243
|
+
}
|
|
244
|
+
if (options.deployMode === "production" && !options.caddyEmail) {
|
|
245
|
+
todos.push("CADDY_EMAIL — recommended for Let's Encrypt expiry warnings.");
|
|
246
|
+
}
|
|
247
|
+
if (!options.autoGenSecrets) {
|
|
248
|
+
if (!options.dashboardPassword)
|
|
249
|
+
todos.push("DASHBOARD_PASSWORD — fill in .env.");
|
|
250
|
+
if (!options.postgresPassword)
|
|
251
|
+
todos.push("POSTGRES_PASSWORD — fill in .env.");
|
|
252
|
+
if (!options.githubWebhookSecret)
|
|
253
|
+
todos.push("GITHUB_WEBHOOK_SECRET — fill in .env.");
|
|
254
|
+
}
|
|
255
|
+
const envContent = buildEnv({
|
|
256
|
+
linearApiKey,
|
|
257
|
+
linearTeamId,
|
|
258
|
+
repoUrl,
|
|
259
|
+
defaultBranch,
|
|
260
|
+
deployMode: options.deployMode ?? "local",
|
|
261
|
+
linearWebhookSecret,
|
|
262
|
+
domain: options.domain ?? "",
|
|
263
|
+
caddyEmail: options.caddyEmail ?? "",
|
|
264
|
+
anthropicApiKey: options.anthropicApiKey ?? "",
|
|
265
|
+
licenseKey: options.licenseKey ?? "",
|
|
266
|
+
dashboardUser: options.dashboardUser ?? "admin",
|
|
267
|
+
dashboardPassword,
|
|
268
|
+
postgresPassword,
|
|
269
|
+
githubWebhookSecret,
|
|
270
|
+
maxConcurrentRuns: options.maxConcurrentRuns ?? 3,
|
|
271
|
+
pmAgent: options.pmAgent,
|
|
272
|
+
});
|
|
86
273
|
writeFileSync(envPath, envContent);
|
|
87
274
|
}
|
|
88
|
-
// --- Project root files: copy only if absent
|
|
89
|
-
// Files with {{PROJECT_NAME}} placeholder get the substitution applied.
|
|
275
|
+
// --- Project root files: copy only if absent ---
|
|
90
276
|
const rootFilesWithPlaceholder = ["CLAUDE.md", "README.md"];
|
|
91
277
|
for (const file of rootFilesWithPlaceholder) {
|
|
92
278
|
const dest = join(projectDir, file);
|
|
@@ -98,18 +284,12 @@ export function scaffold(options) {
|
|
|
98
284
|
const content = readFileSync(src, "utf-8");
|
|
99
285
|
writeFileSync(dest, content.replace(/\{\{PROJECT_NAME\}\}/g, projectName));
|
|
100
286
|
}
|
|
101
|
-
// Ensure .gitignore at project root has the urateam entries.
|
|
102
|
-
// Content is inlined here (not loaded from template/) because npm publish
|
|
103
|
-
// excludes files named `.gitignore` from published packages automatically,
|
|
104
|
-
// which would cause an ENOENT at runtime in installed create-urateam.
|
|
105
287
|
const gitignorePath = join(projectDir, ".gitignore");
|
|
106
288
|
if (!existsSync(gitignorePath)) {
|
|
107
289
|
writeFileSync(gitignorePath, URATEAM_GITIGNORE);
|
|
108
290
|
}
|
|
109
291
|
else {
|
|
110
292
|
const existing = readFileSync(gitignorePath, "utf-8");
|
|
111
|
-
// Check for the bare `.urateam/.env` entry as a standalone line.
|
|
112
|
-
// Loose substring match would false-positive on `!.urateam/.env.example`.
|
|
113
293
|
const hasBareEntry = existing
|
|
114
294
|
.split(/\r?\n/)
|
|
115
295
|
.some((line) => line.trim() === ".urateam/.env");
|
|
@@ -118,16 +298,8 @@ export function scaffold(options) {
|
|
|
118
298
|
appendFileSync(gitignorePath, separator + URATEAM_GITIGNORE);
|
|
119
299
|
}
|
|
120
300
|
}
|
|
301
|
+
return { urateamDir, license, generatedSecrets: generated, todos };
|
|
121
302
|
}
|
|
122
|
-
/**
|
|
123
|
-
* Inlined .gitignore content for the urateam sidecar.
|
|
124
|
-
*
|
|
125
|
-
* IMPORTANT: This is intentionally NOT loaded from `template/.gitignore`.
|
|
126
|
-
* When this package is published to npm, files named `.gitignore` are
|
|
127
|
-
* automatically excluded from the tarball by npm's default rules, so the
|
|
128
|
-
* file wouldn't exist at runtime in an installed copy. Inlining avoids
|
|
129
|
-
* the packaging pitfall entirely.
|
|
130
|
-
*/
|
|
131
303
|
const URATEAM_GITIGNORE = `# urateam sidecar
|
|
132
304
|
.urateam/.env
|
|
133
305
|
.urateam/.env.*
|
|
@@ -138,42 +310,202 @@ const URATEAM_GITIGNORE = `# urateam sidecar
|
|
|
138
310
|
`;
|
|
139
311
|
// CLI entrypoint — only runs when executed directly (not when imported for testing)
|
|
140
312
|
async function main() {
|
|
141
|
-
const arg = process.argv[2];
|
|
142
|
-
if (
|
|
143
|
-
console.
|
|
144
|
-
console.
|
|
145
|
-
console.
|
|
146
|
-
|
|
313
|
+
const arg = process.argv[2] ?? ".";
|
|
314
|
+
if (arg === "--help" || arg === "-h") {
|
|
315
|
+
console.log("Usage: create-urateam [project-name]");
|
|
316
|
+
console.log(" create-urateam # adds .urateam/ to current directory (default)");
|
|
317
|
+
console.log(" create-urateam . # same as above");
|
|
318
|
+
console.log(" create-urateam my-project # creates new directory and adds .urateam/ inside");
|
|
319
|
+
process.exit(0);
|
|
147
320
|
}
|
|
148
321
|
const prompts = (await import("prompts")).default;
|
|
149
|
-
|
|
322
|
+
// --- Stage 1: Linear / repo basics ---
|
|
323
|
+
const stage1 = await prompts([
|
|
150
324
|
{ type: "text", name: "linearApiKey", message: "Linear API key:" },
|
|
151
325
|
{ type: "text", name: "linearTeamId", message: "Linear team ID:" },
|
|
152
326
|
{ type: "text", name: "repoUrl", message: "Repo URL (GitHub/GitLab):" },
|
|
153
327
|
{ type: "text", name: "defaultBranch", message: "Default branch:", initial: "main" },
|
|
154
328
|
]);
|
|
155
|
-
if (!
|
|
329
|
+
if (!stage1.linearApiKey || !stage1.repoUrl) {
|
|
156
330
|
console.error("Cancelled.");
|
|
157
331
|
process.exit(1);
|
|
158
332
|
}
|
|
333
|
+
// --- Stage 2: deploy mode + Linear webhook secret ---
|
|
334
|
+
const stage2 = await prompts([
|
|
335
|
+
{
|
|
336
|
+
type: "select",
|
|
337
|
+
name: "deployMode",
|
|
338
|
+
message: "Deploy target:",
|
|
339
|
+
choices: [
|
|
340
|
+
{ title: "local (laptop / dev — pnpm dev)", value: "local" },
|
|
341
|
+
{ title: "production (VPS / docker compose)", value: "production" },
|
|
342
|
+
],
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
type: "text",
|
|
346
|
+
name: "linearWebhookSecret",
|
|
347
|
+
message: "LINEAR_WEBHOOK_SECRET (paste from Linear webhook config; leave blank to fill in later):",
|
|
348
|
+
},
|
|
349
|
+
]);
|
|
350
|
+
// --- Stage 3: production-only details (domain / caddy email) ---
|
|
351
|
+
const stage3 = stage2.deployMode === "production"
|
|
352
|
+
? await prompts([
|
|
353
|
+
{ type: "text", name: "domain", message: "Public domain (e.g. urateam.example.com):" },
|
|
354
|
+
{ type: "text", name: "caddyEmail", message: "Email for Let's Encrypt:" },
|
|
355
|
+
])
|
|
356
|
+
: { domain: undefined, caddyEmail: undefined };
|
|
357
|
+
// --- Stage 4: Anthropic auth choice ---
|
|
358
|
+
const stage4 = await prompts([
|
|
359
|
+
{
|
|
360
|
+
type: "select",
|
|
361
|
+
name: "anthropicAuth",
|
|
362
|
+
message: "Anthropic auth method:",
|
|
363
|
+
choices: [
|
|
364
|
+
{ title: "Claude Code CLI (`claude login` after deploy)", value: "cli" },
|
|
365
|
+
{ title: "API key (set ANTHROPIC_API_KEY now)", value: "apiKey" },
|
|
366
|
+
],
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
type: (prev) => (prev === "apiKey" ? "password" : null),
|
|
370
|
+
name: "anthropicApiKey",
|
|
371
|
+
message: "ANTHROPIC_API_KEY:",
|
|
372
|
+
},
|
|
373
|
+
]);
|
|
374
|
+
// --- Stage 5: license + tier-gated PM agent setup ---
|
|
375
|
+
const stage5 = await prompts([
|
|
376
|
+
{
|
|
377
|
+
type: "text",
|
|
378
|
+
name: "licenseKey",
|
|
379
|
+
message: "URATEAM_LICENSE_KEY (leave blank for OSS):",
|
|
380
|
+
},
|
|
381
|
+
]);
|
|
382
|
+
const license = decodeLicense(stage5.licenseKey);
|
|
383
|
+
if (license) {
|
|
384
|
+
console.log(`\n License decoded: tier=${license.tier}, features=[${license.features.join(", ")}]`);
|
|
385
|
+
if (license.expiresAt && license.expiresAt.getTime() < Date.now()) {
|
|
386
|
+
console.warn(` ⚠ License expired at ${license.expiresAt.toISOString()} — runtime will reject ` +
|
|
387
|
+
"it and fall back to OSS tier. Renew before deploying.");
|
|
388
|
+
}
|
|
389
|
+
console.log("");
|
|
390
|
+
}
|
|
391
|
+
let pmAgent;
|
|
392
|
+
if (license &&
|
|
393
|
+
license.tier !== "oss" &&
|
|
394
|
+
license.features.includes("slack-interface")) {
|
|
395
|
+
const setupNow = await prompts({
|
|
396
|
+
type: "confirm",
|
|
397
|
+
name: "setup",
|
|
398
|
+
message: "Set up PM agent + Slack interface now? (you can skip and fill in later)",
|
|
399
|
+
initial: false,
|
|
400
|
+
});
|
|
401
|
+
if (setupNow.setup) {
|
|
402
|
+
const pmPrompts = await prompts([
|
|
403
|
+
{ type: "password", name: "slackBotToken", message: "SLACK_BOT_TOKEN (xoxb-...):" },
|
|
404
|
+
{ type: "password", name: "slackSigningSecret", message: "SLACK_SIGNING_SECRET:" },
|
|
405
|
+
{ type: "text", name: "slackChannelId", message: "PM_AGENT_SLACK_CHANNEL_ID (Cxxxxx):" },
|
|
406
|
+
{
|
|
407
|
+
type: "text",
|
|
408
|
+
name: "teamIds",
|
|
409
|
+
message: "PM_AGENT_TEAM_IDS (comma-separated):",
|
|
410
|
+
initial: stage1.linearTeamId,
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
type: "number",
|
|
414
|
+
name: "dailyTokenBudget",
|
|
415
|
+
message: "PM_AGENT_DAILY_TOKEN_BUDGET:",
|
|
416
|
+
initial: 5_000_000,
|
|
417
|
+
},
|
|
418
|
+
]);
|
|
419
|
+
if (pmPrompts.slackBotToken && pmPrompts.slackSigningSecret && pmPrompts.slackChannelId) {
|
|
420
|
+
pmAgent = {
|
|
421
|
+
slackBotToken: pmPrompts.slackBotToken,
|
|
422
|
+
slackSigningSecret: pmPrompts.slackSigningSecret,
|
|
423
|
+
slackChannelId: pmPrompts.slackChannelId,
|
|
424
|
+
teamIds: pmPrompts.teamIds || stage1.linearTeamId,
|
|
425
|
+
dailyTokenBudget: pmPrompts.dailyTokenBudget ?? 5_000_000,
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
else if (pmPrompts.slackBotToken || pmPrompts.slackSigningSecret || pmPrompts.slackChannelId) {
|
|
429
|
+
// Partial input — warn loudly so the operator doesn't think they configured PM.
|
|
430
|
+
console.warn("\n ⚠ PM agent setup incomplete — at least one of SLACK_BOT_TOKEN, " +
|
|
431
|
+
"SLACK_SIGNING_SECRET, PM_AGENT_SLACK_CHANNEL_ID was blank. The PM_AGENT_* " +
|
|
432
|
+
"block in .env has been left commented out; fill it in by hand to enable.\n");
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
// --- Stage 6: secret generation strategy ---
|
|
437
|
+
const stage6 = await prompts({
|
|
438
|
+
type: "confirm",
|
|
439
|
+
name: "autoGen",
|
|
440
|
+
message: "Auto-generate POSTGRES_PASSWORD, DASHBOARD_PASSWORD, GITHUB_WEBHOOK_SECRET? (No → leave blank in .env)",
|
|
441
|
+
initial: true,
|
|
442
|
+
});
|
|
159
443
|
const projectDir = arg === "." ? process.cwd() : join(process.cwd(), arg);
|
|
160
444
|
const projectName = arg === "." ? basename(projectDir) || "my-project" : arg;
|
|
161
|
-
scaffold({
|
|
445
|
+
const result = scaffold({
|
|
162
446
|
projectDir,
|
|
163
447
|
projectName,
|
|
164
|
-
linearApiKey:
|
|
165
|
-
linearTeamId:
|
|
166
|
-
repoUrl:
|
|
167
|
-
defaultBranch:
|
|
448
|
+
linearApiKey: stage1.linearApiKey,
|
|
449
|
+
linearTeamId: stage1.linearTeamId,
|
|
450
|
+
repoUrl: stage1.repoUrl,
|
|
451
|
+
defaultBranch: stage1.defaultBranch || "main",
|
|
452
|
+
deployMode: stage2.deployMode,
|
|
453
|
+
linearWebhookSecret: stage2.linearWebhookSecret,
|
|
454
|
+
domain: stage3.domain,
|
|
455
|
+
caddyEmail: stage3.caddyEmail,
|
|
456
|
+
anthropicApiKey: stage4.anthropicApiKey,
|
|
457
|
+
licenseKey: stage5.licenseKey,
|
|
458
|
+
pmAgent,
|
|
459
|
+
autoGenSecrets: stage6.autoGen,
|
|
168
460
|
});
|
|
169
|
-
|
|
170
|
-
console.log(
|
|
461
|
+
// --- Next steps printout ---
|
|
462
|
+
console.log(`\n ✓ urateam sidecar installed in ${result.urateamDir}\n`);
|
|
463
|
+
if (Object.keys(result.generatedSecrets).length > 0) {
|
|
464
|
+
console.log(" Auto-generated secrets (saved to .env — record these now):");
|
|
465
|
+
if (result.generatedSecrets.dashboardPassword) {
|
|
466
|
+
console.log(` Dashboard login: admin / ${result.generatedSecrets.dashboardPassword}`);
|
|
467
|
+
}
|
|
468
|
+
if (result.generatedSecrets.postgresPassword) {
|
|
469
|
+
console.log(` POSTGRES_PASSWORD: ${result.generatedSecrets.postgresPassword}`);
|
|
470
|
+
}
|
|
471
|
+
if (result.generatedSecrets.githubWebhookSecret) {
|
|
472
|
+
console.log(` GITHUB_WEBHOOK_SECRET: ${result.generatedSecrets.githubWebhookSecret.slice(0, 12)}…`);
|
|
473
|
+
}
|
|
474
|
+
console.log("");
|
|
475
|
+
}
|
|
476
|
+
if (result.license) {
|
|
477
|
+
console.log(` License: ${result.license.tier}`);
|
|
478
|
+
if (result.license.features.length > 0) {
|
|
479
|
+
console.log(` Features: ${result.license.features.join(", ")}`);
|
|
480
|
+
}
|
|
481
|
+
console.log("");
|
|
482
|
+
}
|
|
483
|
+
if (result.todos.length > 0) {
|
|
484
|
+
console.log(" Still to do (edit .urateam/.env or run the noted commands):");
|
|
485
|
+
for (const todo of result.todos) {
|
|
486
|
+
console.log(` • ${todo}`);
|
|
487
|
+
}
|
|
488
|
+
console.log("");
|
|
489
|
+
}
|
|
490
|
+
console.log(" Next:");
|
|
171
491
|
if (arg !== ".")
|
|
172
492
|
console.log(` cd ${arg}`);
|
|
173
|
-
console.log(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
493
|
+
console.log(" cd .urateam");
|
|
494
|
+
if (result.todos.length > 0) {
|
|
495
|
+
console.log(" # edit .env to fill in the TODOs above before continuing");
|
|
496
|
+
}
|
|
497
|
+
if (stage2.deployMode === "production") {
|
|
498
|
+
console.log(" docker compose up -d --build");
|
|
499
|
+
if (stage4.anthropicAuth === "cli") {
|
|
500
|
+
console.log(" docker compose exec agent claude login");
|
|
501
|
+
}
|
|
502
|
+
console.log(" docker compose exec agent gh auth login");
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
console.log(" pnpm install");
|
|
506
|
+
console.log(" ura dev");
|
|
507
|
+
}
|
|
508
|
+
console.log("\n See CLAUDE.md in the project root for agent context.\n");
|
|
177
509
|
}
|
|
178
510
|
const isEntrypoint = process.argv[1]?.endsWith("create-urateam") ||
|
|
179
511
|
process.argv[1]?.endsWith("index.js");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
FROM node:22-slim
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# git + gh: needed by the agent for cloning, branch operations, PR creation.
|
|
4
|
+
# Claude Code CLI: required for OSS-tier subscription auth and as a fallback
|
|
5
|
+
# for Pro-tier deployments that don't set ANTHROPIC_API_KEY. Persisted auth
|
|
6
|
+
# lives at /root/.config/claude — bind-mounted via a docker volume below
|
|
7
|
+
# so `claude login` only has to run once.
|
|
8
|
+
RUN apt-get update \
|
|
9
|
+
&& apt-get install -y --no-install-recommends git gh ca-certificates \
|
|
10
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
11
|
+
|
|
4
12
|
RUN corepack enable
|
|
13
|
+
RUN npm install -g @anthropic-ai/claude-code
|
|
5
14
|
|
|
6
15
|
WORKDIR /app
|
|
7
16
|
COPY package.json pnpm-lock.yaml* ./
|
|
@@ -105,9 +105,14 @@ cp .env.example .env
|
|
|
105
105
|
# 3. Bring up the stack
|
|
106
106
|
docker compose up -d --build
|
|
107
107
|
|
|
108
|
-
# 4. Authenticate
|
|
108
|
+
# 4. Authenticate Claude Code CLI inside the container (skip if you set
|
|
109
|
+
# ANTHROPIC_API_KEY in .env). Login is persisted in a docker volume,
|
|
110
|
+
# so this only has to run once per deployment.
|
|
111
|
+
docker compose exec agent claude login
|
|
112
|
+
|
|
113
|
+
# 5. Authenticate gh CLI inside the container (required for PR creation
|
|
109
114
|
# unless you wired GITHUB_APP_ID / GITHUB_PRIVATE_KEY_PATH /
|
|
110
|
-
# GITHUB_INSTALLATION_ID in .env).
|
|
115
|
+
# GITHUB_INSTALLATION_ID in .env). Also persisted across rebuilds.
|
|
111
116
|
docker compose exec agent gh auth login
|
|
112
117
|
|
|
113
118
|
# 4. Tail logs to verify license, webhooks, dashboard
|
|
@@ -33,6 +33,10 @@ services:
|
|
|
33
33
|
volumes:
|
|
34
34
|
- agent-runs:/var/agent-runs
|
|
35
35
|
- agent-repos:/var/agent-repos
|
|
36
|
+
# Persist the `claude` and `gh` CLI login state across rebuilds so
|
|
37
|
+
# operators don't have to re-auth every `docker compose up --build`.
|
|
38
|
+
- claude-config:/root/.config/claude
|
|
39
|
+
- gh-config:/root/.config/gh
|
|
36
40
|
networks:
|
|
37
41
|
- frontend
|
|
38
42
|
- backend
|
|
@@ -59,3 +63,5 @@ volumes:
|
|
|
59
63
|
agent-repos:
|
|
60
64
|
caddy-data:
|
|
61
65
|
caddy-config:
|
|
66
|
+
claude-config:
|
|
67
|
+
gh-config:
|