@nairon-ai/aegis 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,8 +49,8 @@ No Cloudflare required for this part.
49
49
 
50
50
  1. `cd` into the product repo Aegis should monitor.
51
51
  2. Run `npx --yes @nairon-ai/aegis@latest init`.
52
- 3. Create a GitHub token for that repo with Contents, Issues, and Pull Requests read/write access.
53
- 4. Run `npx --yes @nairon-ai/aegis@latest setup`.
52
+ 3. Run `npx --yes @nairon-ai/aegis@latest setup`.
53
+ 4. Choose `One-click GitHub App` unless you already know how to create a GitHub token.
54
54
  5. Choose `plan-first` and `minimal` for the first test.
55
55
  6. Add `bug` and `ready to implement` labels to the monitored GitHub repo.
56
56
  7. Create a test bug issue with both labels.
@@ -68,8 +68,8 @@ If you see `No ready bugs found`, check `MONITORED_REPO`, exact label names, iss
68
68
 
69
69
  During `setup`, choose one:
70
70
 
71
- - `GitHub token (recommended first test)`: fastest path. Best for proving Aegis can see ready bugs.
72
- - `One-click GitHub App`: best for deployed/team use. Aegis opens a browser page, creates the app, asks you to install it on the repo, then saves the credentials.
71
+ - `One-click GitHub App`: recommended. Aegis opens a browser page, creates the app, asks you to install it on the repo, then saves the credentials.
72
+ - `GitHub token`: quick local test if you already know how to create fine-grained GitHub tokens.
73
73
  - `Paste existing GitHub App credentials`: only if you already made an app manually.
74
74
 
75
75
  The repo prompt accepts either `owner/repo` or a full GitHub URL like `https://github.com/KeyLead-Team/keylead`.
@@ -165,6 +165,22 @@ npx @nairon-ai/aegis deploy
165
165
 
166
166
  Then configure webhooks using the Worker URL printed by deploy. Full details: [docs/SETUP.md](docs/SETUP.md).
167
167
 
168
+ ## Disconnect Aegis
169
+
170
+ Run this from the product repo to print the shutdown checklist:
171
+
172
+ ```bash
173
+ npx --yes @nairon-ai/aegis@latest disconnect
174
+ ```
175
+
176
+ To fully stop using Aegis:
177
+
178
+ 1. Delete the Cloudflare Worker if deployed: `npx wrangler delete aegis-worker`.
179
+ 2. Uninstall the Aegis GitHub App from the repo, or revoke the GitHub token.
180
+ 3. Delete Aegis webhooks from GitHub, Linear, and Telegram if configured.
181
+ 4. Remove local config: `rm -rf .aegis`.
182
+ 5. Optionally remove Aegis-only labels: `aegis:in-progress`, `aegis:needs-info`, `aegis:blocked`, `aegis:pr-opened`.
183
+
168
184
  ## How Pickup Works
169
185
 
170
186
  Aegis scans every 10 minutes and also reacts to GitHub/Linear webhooks.
@@ -0,0 +1,3 @@
1
+ export declare const disconnectCommand: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ export declare function runDisconnectGuide(): void;
3
+ //# sourceMappingURL=disconnect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disconnect.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/disconnect.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,qDAQ5B,CAAC;AAEH,wBAAgB,kBAAkB,IAAI,IAAI,CAuDzC"}
@@ -0,0 +1,59 @@
1
+ import { defineCommand } from "citty";
2
+ import { consola } from "consola";
3
+ import { loadConfig } from "../state.js";
4
+ export const disconnectCommand = defineCommand({
5
+ meta: {
6
+ name: "disconnect",
7
+ description: "Show how to fully disconnect Aegis from this repo",
8
+ },
9
+ run() {
10
+ runDisconnectGuide();
11
+ },
12
+ });
13
+ export function runDisconnectGuide() {
14
+ const config = loadConfig();
15
+ const workerName = "aegis-worker";
16
+ const repo = config.monitoredRepo ?? "your GitHub repo";
17
+ consola.log("\n Disconnect Aegis\n");
18
+ consola.log("This prints the safe shutdown checklist. It does not delete anything automatically.\n");
19
+ consola.log("1. Stop the cloud worker");
20
+ consola.log(" If you deployed Aegis, delete the Cloudflare Worker:");
21
+ consola.log(` npx wrangler delete ${workerName}`);
22
+ consola.log(" Also remove any Cloudflare secrets for Aegis if they remain.\n");
23
+ consola.log("2. Remove GitHub access");
24
+ if (config.githubAppId) {
25
+ consola.log(" You used a GitHub App.");
26
+ consola.log(` Open GitHub -> ${repo} -> Settings -> GitHub Apps, then uninstall the Aegis app.`);
27
+ consola.log(" Or open your GitHub account/org settings -> GitHub Apps -> Aegis -> Uninstall.");
28
+ }
29
+ else if (config.githubToken) {
30
+ consola.log(" You used a GitHub token.");
31
+ consola.log(" Open https://github.com/settings/personal-access-tokens");
32
+ consola.log(" Find the token you created for Aegis and revoke/delete it.");
33
+ }
34
+ else {
35
+ consola.log(" No GitHub token/app is saved in local config.");
36
+ }
37
+ consola.log("");
38
+ consola.log("3. Remove webhooks");
39
+ consola.log(` GitHub: open ${repo} -> Settings -> Webhooks, delete the Aegis webhook.`);
40
+ if (config.linearApiKey) {
41
+ consola.log(" Linear: open Linear Settings -> API/Webhooks, delete the Aegis webhook.");
42
+ }
43
+ if (config.telegramBotToken) {
44
+ consola.log(" Telegram: remove the webhook:");
45
+ consola.log(' curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteWebhook"');
46
+ }
47
+ consola.log("");
48
+ consola.log("4. Remove local config from this repo");
49
+ consola.log(" rm -rf .aegis");
50
+ consola.log(" If you installed Aegis as a dev dependency:");
51
+ consola.log(" npm remove @nairon-ai/aegis");
52
+ consola.log("");
53
+ consola.log("5. Optional cleanup");
54
+ consola.log(" Leave labels like bug and ready to implement if your team uses them.");
55
+ consola.log(" Remove Aegis-only labels if you do not want them:");
56
+ consola.log(" aegis:in-progress, aegis:needs-info, aegis:blocked, aegis:pr-opened");
57
+ consola.log("");
58
+ }
59
+ //# sourceMappingURL=disconnect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disconnect.js","sourceRoot":"","sources":["../../../src/cli/commands/disconnect.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AA0FA,eAAO,MAAM,WAAW,qDAKtB,CAAC;AAEH,wBAAgB,OAAO,IAAI,IAAI,CAa9B"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAkGA,eAAO,MAAM,WAAW,qDAKtB,CAAC;AAEH,wBAAgB,OAAO,IAAI,IAAI,CAc9B"}
@@ -84,6 +84,14 @@ Telegram: https://YOUR_WORKER.workers.dev/webhook/telegram
84
84
  \`\`\`
85
85
 
86
86
  Keep \`.aegis/.env\` out of git.
87
+
88
+ ## Disconnect
89
+
90
+ \`\`\`bash
91
+ npx --yes @nairon-ai/aegis@latest disconnect
92
+ \`\`\`
93
+
94
+ This prints the checklist for removing the Worker, GitHub access, webhooks, and local config.
87
95
  `;
88
96
  export const initCommand = defineCommand({
89
97
  meta: { name: "init", description: "Scaffold .aegis config in this repo" },
@@ -103,6 +111,7 @@ export function runInit() {
103
111
  consola.log(" 3. create a tiny test bug issue");
104
112
  consola.log(" 4. npx --yes @nairon-ai/aegis@latest pickup --dry-run");
105
113
  consola.log(" 5. npx --yes @nairon-ai/aegis@latest deploy");
114
+ consola.log(" Later: npx --yes @nairon-ai/aegis@latest disconnect");
106
115
  consola.log("");
107
116
  }
108
117
  function writeIfMissing(path, contents) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CnB,CAAC;AAEF,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCd,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,qCAAqC,EAAE;IAC1E,KAAK,CAAC,GAAG;QACR,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,UAAU,OAAO;IACtB,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1E,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;IACxE,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,QAAgB;IACrD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO;IACR,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CnB,CAAC;AAEF,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Cd,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,qCAAqC,EAAE;IAC1E,KAAK,CAAC,GAAG;QACR,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,UAAU,OAAO;IACtB,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1E,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;IACxE,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,QAAgB;IACrD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO;IACR,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,YAAY,qDAKvB,CAAC;AAEH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBpD"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,YAAY,qDAKvB,CAAC;AAEH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCpD"}
@@ -5,6 +5,12 @@ import { consola } from "consola";
5
5
  import { runGitHubAppFlow } from "../github-app-flow.js";
6
6
  import { resolveEnvFileForWrite } from "../paths.js";
7
7
  import { detectSetupState, printState, saveConfig } from "../state.js";
8
+ class SetupCancelledError extends Error {
9
+ constructor() {
10
+ super("Setup cancelled.");
11
+ this.name = "SetupCancelledError";
12
+ }
13
+ }
8
14
  export const setupCommand = defineCommand({
9
15
  meta: { name: "setup", description: "Configure Aegis for a repo" },
10
16
  async run() {
@@ -12,44 +18,74 @@ export const setupCommand = defineCommand({
12
18
  },
13
19
  });
14
20
  export async function runSetupWizard() {
15
- consola.log("\n Aegis - AFK bug-fixing agent\n");
16
- const state = detectSetupState();
17
- printState(state);
18
- const config = state.config;
19
- await setupRepo(config);
20
- await setupGitHub(config);
21
- await setupLinear(config);
22
- await setupAutomation(config);
23
- await setupProductionContext(config);
24
- await setupTelegram(config);
25
- await setupWorker(config);
26
- saveConfig(config);
27
- consola.success(`Saved ${resolveEnvFileForWrite()}`);
28
- consola.log("\nNext:");
29
- consola.log(" 1. Create labels in the monitored repo: bug, ready to implement");
30
- consola.log(" 2. Create a test GitHub issue with both labels");
31
- consola.log(" 3. npx @nairon-ai/aegis pickup --dry-run");
32
- consola.log(" 4. npx @nairon-ai/aegis deploy");
33
- consola.log(" 5. Add GitHub/Linear/Telegram webhook URLs after deploy");
34
- consola.log("");
21
+ try {
22
+ consola.log("\n Aegis - AFK bug-fixing agent\n");
23
+ const state = detectSetupState();
24
+ printState(state);
25
+ const config = state.config;
26
+ await setupRepo(config);
27
+ await setupGitHub(config);
28
+ await setupLinear(config);
29
+ await setupAutomation(config);
30
+ await setupProductionContext(config);
31
+ await setupTelegram(config);
32
+ await setupWorker(config);
33
+ saveConfig(config);
34
+ consola.success(`Saved ${resolveEnvFileForWrite()}`);
35
+ consola.log("\nNext:");
36
+ consola.log(" 1. Create labels in the monitored repo: bug, ready to implement");
37
+ consola.log(" 2. Create a test GitHub issue with both labels");
38
+ consola.log(" 3. npx --yes @nairon-ai/aegis@latest pickup --dry-run");
39
+ consola.log(" 4. npx --yes @nairon-ai/aegis@latest deploy");
40
+ consola.log(" 5. Add GitHub/Linear/Telegram webhook URLs after deploy");
41
+ consola.log(" Later: npx --yes @nairon-ai/aegis@latest disconnect");
42
+ consola.log("");
43
+ }
44
+ catch (error) {
45
+ if (error instanceof SetupCancelledError) {
46
+ consola.log("\nSetup cancelled. No config changes were saved.");
47
+ consola.log("If you already installed a GitHub App in the browser, uninstall it from GitHub if you do not want Aegis connected.");
48
+ process.exitCode = 130;
49
+ return;
50
+ }
51
+ throw error;
52
+ }
35
53
  }
36
54
  async function setupRepo(config) {
37
- config.monitoredRepo = normalizeGitHubRepo(await promptText("GitHub repo to monitor (owner/repo):", config.monitoredRepo));
38
- config.baseBranch = await promptText("Base branch:", config.baseBranch ?? "main");
55
+ printStep("Step 1: choose the GitHub repo Aegis should fix", [
56
+ "This is your product repo, not the Aegis repo.",
57
+ "Paste the GitHub URL from your browser, or type owner/repo.",
58
+ "Example: https://github.com/KeyLead-Team/keylead",
59
+ ]);
60
+ config.monitoredRepo = normalizeGitHubRepo(await promptText("Repo to monitor:", config.monitoredRepo));
61
+ printStep("Step 2: choose the base branch", [
62
+ "This is the branch Aegis will open PRs against.",
63
+ "Most repos use main. If your repo uses master, develop, or staging, enter that.",
64
+ ]);
65
+ config.baseBranch = await promptText("Base branch:", config.baseBranch ?? detectCurrentBranch());
39
66
  }
40
67
  async function setupGitHub(config) {
41
- consola.log("\nGitHub access");
42
- consola.info("For the first test, a fine-grained token is fastest. For deployed/team use, use the one-click GitHub App flow.");
43
- const method = (await consola.prompt("Auth method:", {
44
- type: "select",
45
- options: [
46
- { label: "GitHub token (recommended first test)", value: "token" },
47
- { label: "One-click GitHub App (best for deployed/team use)", value: "app-flow" },
48
- { label: "Paste existing GitHub App credentials", value: "app-manual" },
49
- ],
50
- }));
68
+ printStep("Step 3: give Aegis GitHub access", [
69
+ "Aegis needs permission to read issues, create branches, push fixes, and open PRs.",
70
+ "If you are unsure, choose the one-click GitHub App. It opens GitHub in your browser and avoids manual tokens.",
71
+ "Use a GitHub token only if you already know how to create fine-grained tokens.",
72
+ ]);
73
+ const method = await promptSelect("Auth method:", [
74
+ { label: "One-click GitHub App (recommended)", value: "app-flow" },
75
+ { label: "GitHub token (quick local test)", value: "token" },
76
+ { label: "Paste existing GitHub App credentials", value: "app-manual" },
77
+ ]);
51
78
  if (method === "token") {
52
- config.githubToken = await promptText("GitHub token with contents/issues/PR read-write access:", config.githubToken);
79
+ printStep("Create a fine-grained GitHub token", [
80
+ "Open: https://github.com/settings/personal-access-tokens/new",
81
+ "Token name: Aegis",
82
+ "Repository access: Only select repositories, then choose the repo from Step 1.",
83
+ "Repository permissions: Contents read/write, Issues read/write, Pull requests read/write.",
84
+ "Metadata stays read-only automatically.",
85
+ "Click Generate token, then paste the token here. It usually starts with github_pat_.",
86
+ "Keep it secret. Aegis saves it to .aegis/.env, which should not be committed.",
87
+ ]);
88
+ config.githubToken = await promptText("Paste GitHub token:", config.githubToken);
53
89
  config.githubAppId = undefined;
54
90
  config.githubAppPrivateKey = undefined;
55
91
  config.githubInstallationId = undefined;
@@ -59,6 +95,13 @@ async function setupGitHub(config) {
59
95
  consola.warn("Set the monitored repo first.");
60
96
  return;
61
97
  }
98
+ printStep("Create the GitHub App in your browser", [
99
+ "Aegis will open a local setup page.",
100
+ "Click Create GitHub App.",
101
+ "Then click Install and choose Only select repositories.",
102
+ "Select the repo from Step 1, then approve the install.",
103
+ "When GitHub sends you back, this CLI saves the credentials automatically.",
104
+ ]);
62
105
  try {
63
106
  const app = await runGitHubAppFlow({
64
107
  monitoredRepo: config.monitoredRepo,
@@ -84,10 +127,12 @@ async function setupGitHub(config) {
84
127
  consola.info("GitHub webhook secret is already configured.");
85
128
  return;
86
129
  }
87
- const generateSecret = (await consola.prompt("Generate a GitHub webhook secret?", {
88
- type: "confirm",
89
- initial: !config.githubWebhookSecret,
90
- }));
130
+ printStep("GitHub webhook secret", [
131
+ "This protects webhook calls from GitHub after you deploy.",
132
+ "Choose yes and Aegis will generate a random secret for you.",
133
+ "You do not need to remember it; it is saved in .aegis/.env.",
134
+ ]);
135
+ const generateSecret = await promptConfirm("Generate a GitHub webhook secret?", !config.githubWebhookSecret);
91
136
  config.githubWebhookSecret = generateSecret
92
137
  ? crypto.randomUUID()
93
138
  : await promptText("GitHub webhook secret:", config.githubWebhookSecret);
@@ -96,6 +141,11 @@ async function setupGitHub(config) {
96
141
  }
97
142
  }
98
143
  async function setupGitHubAppManual(config) {
144
+ printStep("Paste existing GitHub App credentials", [
145
+ "Use this only if you already created a GitHub App manually.",
146
+ "You need the App ID, the private key .pem file, and the installation ID.",
147
+ "If that sounds unfamiliar, cancel and rerun setup with the one-click GitHub App option.",
148
+ ]);
99
149
  config.githubAppId = await promptText("GitHub App ID:", config.githubAppId);
100
150
  const keyPath = await promptText("Path to GitHub App private key .pem:", undefined);
101
151
  if (keyPath) {
@@ -115,22 +165,37 @@ async function setupGitHubAppManual(config) {
115
165
  config.githubToken = undefined;
116
166
  }
117
167
  async function setupLinear(config) {
118
- const enable = (await consola.prompt("Connect Linear too?", {
119
- type: "confirm",
120
- initial: Boolean(config.linearApiKey),
121
- }));
168
+ printStep("Step 4: optional Linear connection", [
169
+ "Use this only if your team tracks bugs in Linear.",
170
+ "If you only use GitHub Issues, choose no.",
171
+ "You can rerun setup later to add Linear.",
172
+ ]);
173
+ const enable = await promptConfirm("Connect Linear too?", Boolean(config.linearApiKey));
122
174
  if (!enable)
123
175
  return;
176
+ printStep("Linear API key", [
177
+ "Open Linear settings, create a personal API key, then paste it here.",
178
+ "Aegis uses it to read ready bug tickets and comment with status updates.",
179
+ ]);
124
180
  config.linearApiKey = await promptText("Linear API key:", config.linearApiKey);
125
- const generateSecret = (await consola.prompt("Generate a Linear webhook signing secret?", {
126
- type: "confirm",
127
- initial: !config.linearWebhookSecret,
128
- }));
181
+ printStep("Linear webhook secret", [
182
+ "This protects Linear webhook calls after deploy.",
183
+ "Choose yes and Aegis will generate one.",
184
+ ]);
185
+ const generateSecret = await promptConfirm("Generate a Linear webhook signing secret?", !config.linearWebhookSecret);
129
186
  config.linearWebhookSecret = generateSecret
130
187
  ? crypto.randomUUID()
131
188
  : await promptText("Linear webhook signing secret:", config.linearWebhookSecret);
189
+ printStep("Linear team/project", [
190
+ "Team ID is required so Aegis knows which Linear team to watch.",
191
+ "Project ID is optional. Leave it blank to watch the whole team.",
192
+ ]);
132
193
  config.linearTeamId = await promptText("Linear team ID:", config.linearTeamId);
133
194
  config.linearProjectId = await promptText("Linear project ID (optional):", config.linearProjectId);
195
+ printStep("Linear statuses and labels", [
196
+ "These names must match your Linear workflow.",
197
+ "If your team uses the default names, press Enter through these prompts.",
198
+ ]);
134
199
  config.linearReadyStatus = await promptText("Linear ready status name:", config.linearReadyStatus ?? "Ready to Implement");
135
200
  config.linearInProgressStatus = await promptText("Linear in-progress status name:", config.linearInProgressStatus ?? "In Progress");
136
201
  config.linearNeedsInfoStatus = await promptText("Linear needs-info status name:", config.linearNeedsInfoStatus ?? "Needs Info");
@@ -138,64 +203,124 @@ async function setupLinear(config) {
138
203
  config.linearBugLabel = await promptText("Linear bug label:", config.linearBugLabel ?? "bug");
139
204
  }
140
205
  async function setupAutomation(config) {
206
+ printStep("Step 5: GitHub labels Aegis should watch", [
207
+ "Aegis only picks up open issues with both labels.",
208
+ "Default labels are bug and ready to implement.",
209
+ "Create these labels in GitHub after setup if they do not exist yet.",
210
+ ]);
141
211
  config.readyLabel = await promptText("GitHub ready label:", config.readyLabel ?? "ready to implement");
142
212
  config.bugLabel = await promptText("GitHub bug label:", config.bugLabel ?? "bug");
143
- config.automationMode = (await consola.prompt("Automation mode:", {
144
- type: "select",
145
- options: [
146
- { label: "Plan first, ask approval before patching", value: "plan-first" },
147
- { label: "Auto-implement only bugs labeled low-risk", value: "auto-low-risk" },
148
- ],
149
- initial: config.automationMode ?? "plan-first",
150
- }));
213
+ printStep("Step 6: automation mode", [
214
+ "Choose plan-first for the first real use.",
215
+ "Plan-first means Aegis investigates and asks for approval before changing code.",
216
+ "Auto-low-risk is for later, after you trust the workflow.",
217
+ ]);
218
+ config.automationMode = await promptSelect("Automation mode:", [
219
+ { label: "Plan first, ask approval before patching", value: "plan-first" },
220
+ { label: "Auto-implement only bugs labeled low-risk", value: "auto-low-risk" },
221
+ ], config.automationMode ?? "plan-first");
222
+ printStep("Step 7: AI model", [
223
+ "Use the default unless you know you want a different Flue-supported model.",
224
+ "You also need the matching provider API key.",
225
+ ]);
151
226
  config.agentModel = await promptText("Flue model:", config.agentModel ?? "openai/gpt-5.1");
152
- config.openaiApiKey = await promptText("OpenAI API key (if using an OpenAI model):", config.openaiApiKey);
227
+ printStep("OpenAI API key", [
228
+ "Paste your OpenAI API key if using an openai/... model.",
229
+ "It is stored in .aegis/.env and later copied to Cloudflare secrets during deploy.",
230
+ "Leave blank only if you configured a different model provider yourself.",
231
+ ]);
232
+ config.openaiApiKey = await promptText("OpenAI API key:", config.openaiApiKey);
153
233
  }
154
234
  async function setupProductionContext(config) {
155
- const profile = (await consola.prompt("Context profile:", {
156
- type: "select",
157
- options: [
158
- { label: "Minimal: issue + repo", value: "minimal" },
159
- { label: "Production: add read-only DB and Vercel logs", value: "production" },
160
- ],
161
- initial: config.contextProfile ?? "minimal",
162
- }));
235
+ printStep("Step 8: production context", [
236
+ "Start with Minimal. It uses only issue text and repo code.",
237
+ "Production context lets Aegis inspect read-only database data and Vercel logs.",
238
+ "Do not choose Production until the basic dry-run works.",
239
+ ]);
240
+ const profile = await promptSelect("Context profile:", [
241
+ { label: "Minimal: issue + repo", value: "minimal" },
242
+ { label: "Production: add read-only DB and Vercel logs", value: "production" },
243
+ ], config.contextProfile ?? "minimal");
163
244
  config.contextProfile = profile;
164
245
  if (profile !== "production")
165
246
  return;
166
- consola.warn("Use a read-only DB user or replica. Do not give Aegis write access.");
247
+ printStep("Production context details", [
248
+ "Use a read-only DB user or read replica. Do not give Aegis write access.",
249
+ "All fields here are optional. Leave unknown fields blank.",
250
+ ]);
167
251
  config.databaseUrl = await promptText("Read-only DATABASE_URL (optional):", config.databaseUrl);
168
252
  config.vercelToken = await promptText("Vercel API token (optional):", config.vercelToken);
169
253
  config.vercelProjectId = await promptText("Vercel project ID (optional):", config.vercelProjectId);
170
254
  config.vercelTeamId = await promptText("Vercel team ID (optional):", config.vercelTeamId);
171
255
  }
172
256
  async function setupTelegram(config) {
173
- const enable = (await consola.prompt("Enable Telegram approval pings?", {
174
- type: "confirm",
175
- initial: Boolean(config.telegramBotToken),
176
- }));
257
+ printStep("Step 9: optional Telegram approval pings", [
258
+ "Use this if you want Aegis to message you when it needs approval.",
259
+ "For the first local dry-run, choose no.",
260
+ "You can rerun setup later to add Telegram.",
261
+ ]);
262
+ const enable = await promptConfirm("Enable Telegram approval pings?", Boolean(config.telegramBotToken));
177
263
  if (!enable)
178
264
  return;
265
+ printStep("Telegram bot", [
266
+ "Create a bot with BotFather, paste the bot token, then paste your chat ID.",
267
+ "Aegis will send short approval summaries to that chat.",
268
+ ]);
179
269
  config.telegramBotToken = await promptText("Telegram bot token:", config.telegramBotToken);
180
270
  config.telegramChatId = await promptText("Telegram chat ID:", config.telegramChatId);
181
- const generateSecret = (await consola.prompt("Generate a Telegram webhook secret?", {
182
- type: "confirm",
183
- initial: !config.telegramWebhookSecret,
184
- }));
271
+ printStep("Telegram webhook secret", [
272
+ "This protects Telegram webhook calls after deploy.",
273
+ "Choose yes and Aegis will generate one.",
274
+ ]);
275
+ const generateSecret = await promptConfirm("Generate a Telegram webhook secret?", !config.telegramWebhookSecret);
185
276
  config.telegramWebhookSecret = generateSecret
186
277
  ? crypto.randomUUID()
187
278
  : await promptText("Telegram webhook secret:", config.telegramWebhookSecret);
188
279
  }
189
280
  async function setupWorker(config) {
281
+ printStep("Step 10: Worker URL", [
282
+ "Leave this blank before your first deploy.",
283
+ "After deploy, Aegis saves the Worker URL automatically.",
284
+ "If you are rerunning setup after deploy, paste the workers.dev URL here.",
285
+ ]);
190
286
  config.workerUrl = await promptText("Deployed Worker URL (can fill after first deploy):", config.workerUrl);
191
287
  }
192
288
  async function promptText(message, initial) {
193
- const value = (await consola.prompt(message, {
289
+ const value = await promptValue(message, {
194
290
  type: "text",
195
291
  initial,
196
- }));
292
+ });
197
293
  return value?.trim() ?? "";
198
294
  }
295
+ async function promptConfirm(message, initial) {
296
+ return await promptValue(message, {
297
+ type: "confirm",
298
+ initial,
299
+ });
300
+ }
301
+ async function promptSelect(message, options, initial) {
302
+ return await promptValue(message, {
303
+ type: "select",
304
+ options,
305
+ initial,
306
+ });
307
+ }
308
+ async function promptValue(message, options) {
309
+ try {
310
+ return (await consola.prompt(message, {
311
+ ...options,
312
+ cancel: "reject",
313
+ }));
314
+ }
315
+ catch (error) {
316
+ if (isPromptCancelled(error))
317
+ throw new SetupCancelledError();
318
+ throw error;
319
+ }
320
+ }
321
+ function isPromptCancelled(error) {
322
+ return error instanceof Error && error.name === "ConsolaPromptCancelledError";
323
+ }
199
324
  function normalizeGitHubRepo(input) {
200
325
  const value = input
201
326
  .trim()
@@ -209,4 +334,23 @@ function normalizeGitHubRepo(input) {
209
334
  return `${shorthandMatch[1]}/${shorthandMatch[2]}`;
210
335
  return value;
211
336
  }
337
+ function detectCurrentBranch() {
338
+ try {
339
+ const branch = readFileSync(".git/HEAD", "utf-8").trim();
340
+ if (branch.startsWith("ref: refs/heads/")) {
341
+ return branch.replace("ref: refs/heads/", "");
342
+ }
343
+ }
344
+ catch {
345
+ // Ignore and fall back to the normal default.
346
+ }
347
+ return "main";
348
+ }
349
+ function printStep(title, lines) {
350
+ consola.log(`\n${title}`);
351
+ for (const line of lines) {
352
+ consola.log(` - ${line}`);
353
+ }
354
+ consola.log("");
355
+ }
212
356
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}