@nairon-ai/aegis 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,190 @@
1
+ import { spawn } from "node:child_process";
2
+ import { randomBytes, randomUUID } from "node:crypto";
3
+ import { createServer } from "node:http";
4
+ import { consola } from "consola";
5
+ import { exchangeManifestCode, generateManifest, getManifestCreationUrl, } from "../github/manifest.js";
6
+ export async function runGitHubAppFlow(options) {
7
+ const [owner, repo] = options.monitoredRepo.split("/");
8
+ if (!owner || !repo) {
9
+ throw new Error("GitHub App setup needs MONITORED_REPO in owner/repo format.");
10
+ }
11
+ const ownerType = await detectOwnerType(owner);
12
+ const state = randomUUID();
13
+ const appName = buildAppName(owner, repo);
14
+ let createdApp;
15
+ const result = await new Promise((resolve, reject) => {
16
+ const server = createServer(async (request, response) => {
17
+ try {
18
+ const host = request.headers.host;
19
+ if (!host) {
20
+ writeText(response, 400, "Missing Host header.");
21
+ return;
22
+ }
23
+ const currentUrl = new URL(request.url ?? "/", `http://${host}`);
24
+ const baseUrl = `http://${host}`;
25
+ if (currentUrl.pathname === "/") {
26
+ const manifest = generateManifest({
27
+ appName,
28
+ redirectUrl: `${baseUrl}/callback`,
29
+ setupUrl: `${baseUrl}/installed`,
30
+ webhookUrl: options.workerUrl
31
+ ? `${options.workerUrl.replace(/\/$/, "")}/webhook/github`
32
+ : "https://example.com/aegis/webhook/github",
33
+ webhookActive: Boolean(options.workerUrl),
34
+ });
35
+ writeHtml(response, renderManifestForm({
36
+ actionUrl: getManifestCreationUrl(ownerType === "Organization" ? owner : undefined, state),
37
+ manifest,
38
+ owner,
39
+ repo,
40
+ appName,
41
+ webhookActive: Boolean(options.workerUrl),
42
+ }));
43
+ return;
44
+ }
45
+ if (currentUrl.pathname === "/callback") {
46
+ if (currentUrl.searchParams.get("state") !== state) {
47
+ writeText(response, 400, "State mismatch. Close this tab and rerun aegis setup.");
48
+ return;
49
+ }
50
+ const code = currentUrl.searchParams.get("code");
51
+ if (!code) {
52
+ writeText(response, 400, "Missing GitHub manifest code.");
53
+ return;
54
+ }
55
+ createdApp = await exchangeManifestCode(code);
56
+ const installUrl = `${createdApp.htmlUrl}/installations/new`;
57
+ consola.success(`Created GitHub App: ${createdApp.appName}`);
58
+ consola.info(`Install it on ${options.monitoredRepo}: ${installUrl}`);
59
+ writeHtml(response, renderInstallPage(installUrl, options.monitoredRepo));
60
+ return;
61
+ }
62
+ if (currentUrl.pathname === "/installed") {
63
+ const installationId = currentUrl.searchParams.get("installation_id");
64
+ if (!installationId || !createdApp) {
65
+ writeText(response, 400, "Install callback was missing installation_id. Copy the installation ID from the GitHub URL and rerun setup.");
66
+ return;
67
+ }
68
+ writeHtml(response, renderDonePage());
69
+ resolve({ ...createdApp, installationId });
70
+ setTimeout(() => server.close(), 250);
71
+ return;
72
+ }
73
+ writeText(response, 404, "Not found.");
74
+ }
75
+ catch (error) {
76
+ reject(error);
77
+ writeText(response, 500, error instanceof Error ? error.message : String(error));
78
+ setTimeout(() => server.close(), 250);
79
+ }
80
+ });
81
+ server.on("error", reject);
82
+ server.listen(0, "127.0.0.1", () => {
83
+ const address = server.address();
84
+ if (!address || typeof address === "string") {
85
+ reject(new Error("Could not start local GitHub App setup server."));
86
+ return;
87
+ }
88
+ const url = `http://127.0.0.1:${address.port}/`;
89
+ consola.info("Opening GitHub App setup in your browser.");
90
+ consola.info("Click Create GitHub App, then Install, then select only the monitored repo.");
91
+ consola.info(`If the browser does not open, paste this URL:\n${url}`);
92
+ openBrowser(url);
93
+ });
94
+ });
95
+ return result;
96
+ }
97
+ async function detectOwnerType(owner) {
98
+ try {
99
+ const response = await fetch(`https://api.github.com/users/${owner}`, {
100
+ headers: {
101
+ Accept: "application/vnd.github+json",
102
+ "X-GitHub-Api-Version": "2022-11-28",
103
+ },
104
+ });
105
+ if (!response.ok)
106
+ return "Organization";
107
+ const data = (await response.json());
108
+ return data.type === "User" ? "User" : "Organization";
109
+ }
110
+ catch {
111
+ return "Organization";
112
+ }
113
+ }
114
+ function buildAppName(owner, repo) {
115
+ const suffix = randomBytes(2).toString("hex");
116
+ return `aegis-${owner}-${repo}-${suffix}`
117
+ .toLowerCase()
118
+ .replace(/[^a-z0-9-]/g, "-")
119
+ .replace(/-+/g, "-")
120
+ .slice(0, 34);
121
+ }
122
+ function openBrowser(url) {
123
+ const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
124
+ const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
125
+ const child = spawn(command, args, { detached: true, stdio: "ignore" });
126
+ child.unref();
127
+ }
128
+ function renderManifestForm(options) {
129
+ return page("Create Aegis GitHub App", `
130
+ <h1>Create Aegis GitHub App</h1>
131
+ <p>This will create a private GitHub App for <strong>${escapeHtml(options.owner)}/${escapeHtml(options.repo)}</strong>.</p>
132
+ <ul>
133
+ <li>Permissions: contents, issues, pull requests</li>
134
+ <li>Events: issues, issue comments, pull requests</li>
135
+ <li>App name: ${escapeHtml(options.appName)}</li>
136
+ <li>Webhook: ${options.webhookActive ? "enabled" : "disabled until deploy"}</li>
137
+ </ul>
138
+ <form action="${escapeHtml(options.actionUrl)}" method="post">
139
+ <input type="hidden" name="manifest" value="${escapeHtml(JSON.stringify(options.manifest))}">
140
+ <button type="submit">Create GitHub App</button>
141
+ </form>
142
+ `);
143
+ }
144
+ function renderInstallPage(installUrl, repo) {
145
+ return page("Install Aegis GitHub App", `
146
+ <h1>GitHub App created</h1>
147
+ <p>Now install it on <strong>${escapeHtml(repo)}</strong>. Choose <strong>Only select repositories</strong> and pick that repo.</p>
148
+ <p><a class="button" href="${escapeHtml(installUrl)}">Install GitHub App</a></p>
149
+ `);
150
+ }
151
+ function renderDonePage() {
152
+ return page("Aegis GitHub App Connected", `
153
+ <h1>Aegis is connected</h1>
154
+ <p>You can close this tab and return to your terminal.</p>
155
+ `);
156
+ }
157
+ function page(title, body) {
158
+ return `<!doctype html>
159
+ <html lang="en">
160
+ <head>
161
+ <meta charset="utf-8">
162
+ <meta name="viewport" content="width=device-width, initial-scale=1">
163
+ <title>${escapeHtml(title)}</title>
164
+ <style>
165
+ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; max-width: 680px; margin: 64px auto; padding: 0 24px; color: #111827; line-height: 1.5; }
166
+ h1 { font-size: 28px; margin-bottom: 12px; }
167
+ button, .button { display: inline-block; border: 0; border-radius: 6px; background: #166534; color: white; padding: 10px 14px; font: inherit; text-decoration: none; cursor: pointer; }
168
+ ul { padding-left: 22px; }
169
+ </style>
170
+ </head>
171
+ <body>${body}</body>
172
+ </html>`;
173
+ }
174
+ function writeHtml(response, html) {
175
+ response.writeHead(200, { "content-type": "text/html; charset=utf-8" });
176
+ response.end(html);
177
+ }
178
+ function writeText(response, status, text) {
179
+ response.writeHead(status, { "content-type": "text/plain; charset=utf-8" });
180
+ response.end(text);
181
+ }
182
+ function escapeHtml(value) {
183
+ return value
184
+ .replace(/&/g, "&amp;")
185
+ .replace(/</g, "&lt;")
186
+ .replace(/>/g, "&gt;")
187
+ .replace(/"/g, "&quot;")
188
+ .replace(/'/g, "&#39;");
189
+ }
190
+ //# sourceMappingURL=github-app-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-app-flow.js","sourceRoot":"","sources":["../../src/cli/github-app-flow.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  #!/usr/bin/env node
2
+ import { readFileSync } from "node:fs";
3
+ import { resolve } from "node:path";
2
4
  import { defineCommand, runMain } from "citty";
3
5
  import { deployCommand } from "./commands/deploy.js";
6
+ import { disconnectCommand } from "./commands/disconnect.js";
4
7
  import { initCommand } from "./commands/init.js";
5
8
  import { pickupCommand } from "./commands/pickup.js";
6
9
  import { setupCommand } from "./commands/setup.js";
7
10
  import { statusCommand } from "./commands/status.js";
11
+ import { findPackageRoot } from "./paths.js";
8
12
  const main = defineCommand({
9
13
  meta: {
10
14
  name: "aegis",
11
- version: "0.2.0",
15
+ version: getPackageVersion(),
12
16
  description: "Aegis - self-hosted AFK bug-fixing agent",
13
17
  },
14
18
  default: "menu",
@@ -18,6 +22,7 @@ const main = defineCommand({
18
22
  pickup: pickupCommand,
19
23
  status: statusCommand,
20
24
  deploy: deployCommand,
25
+ disconnect: disconnectCommand,
21
26
  menu: defineCommand({
22
27
  meta: { name: "menu", description: "Open the interactive menu", hidden: true },
23
28
  async run() {
@@ -33,4 +38,14 @@ const main = defineCommand({
33
38
  },
34
39
  });
35
40
  runMain(main);
41
+ function getPackageVersion() {
42
+ try {
43
+ const packageRoot = findPackageRoot(import.meta.url);
44
+ const pkg = JSON.parse(readFileSync(resolve(packageRoot, "package.json"), "utf-8"));
45
+ return pkg.version ?? "0.0.0";
46
+ }
47
+ catch {
48
+ return "0.0.0";
49
+ }
50
+ }
36
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,IAAI,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,0CAA0C;KACvD;IACD,OAAO,EAAE,MAAM;IACf,WAAW,EAAE;QACZ,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,aAAa,CAAC;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,EAAE,IAAI,EAAE;YAC9E,KAAK,CAAC,GAAG;gBACR,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC5E,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAClC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;oBAC/D,MAAM,cAAc,EAAE,CAAC;oBACvB,OAAO;gBACR,CAAC;gBACD,MAAM,kBAAkB,EAAE,CAAC;YAC5B,CAAC;SACD,CAAC;KACF;CACD,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,IAAI,GAAG,aAAa,CAAC;IAC1B,IAAI,EAAE;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,iBAAiB,EAAE;QAC5B,WAAW,EAAE,0CAA0C;KACvD;IACD,OAAO,EAAE,MAAM;IACf,WAAW,EAAE;QACZ,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,iBAAiB;QAC7B,IAAI,EAAE,aAAa,CAAC;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,EAAE,IAAI,EAAE;YAC9E,KAAK,CAAC,GAAG;gBACR,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC5E,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAClC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;oBAC/D,MAAM,cAAc,EAAE,CAAC;oBACvB,OAAO;gBACR,CAAC;gBACD,MAAM,kBAAkB,EAAE,CAAC;YAC5B,CAAC;SACD,CAAC;KACF;CACD,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC;AAEd,SAAS,iBAAiB;IACzB,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAEjF,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,OAAO,CAAC;IAChB,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,wBAAgB,UAAU,IAAI,cAAc,CAyG3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA0CvD;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAoB7C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAUlD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BxD"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,wBAAgB,UAAU,IAAI,cAAc,CAyG3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA0CvD;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAoB7C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAUlD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+BxD"}
@@ -192,6 +192,7 @@ export async function runInteractiveMenu() {
192
192
  { label: "Run setup", value: "setup" },
193
193
  { label: "View status", value: "status" },
194
194
  { label: "Deploy worker", value: "deploy" },
195
+ { label: "Disconnect Aegis", value: "disconnect" },
195
196
  ],
196
197
  });
197
198
  if (choice === "pickup") {
@@ -210,5 +211,9 @@ export async function runInteractiveMenu() {
210
211
  const { runDeploy } = await import("./commands/deploy.js");
211
212
  await runDeploy();
212
213
  }
214
+ if (choice === "disconnect") {
215
+ const { runDisconnectGuide } = await import("./commands/disconnect.js");
216
+ runDisconnectGuide();
217
+ }
213
218
  }
214
219
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/cli/state.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  */
13
13
  export type ManifestResult = {
14
14
  appId: string;
15
+ slug: string;
15
16
  appName: string;
16
17
  privateKey: string;
17
18
  webhookSecret: string;
@@ -22,13 +23,22 @@ export type ManifestResult = {
22
23
  /**
23
24
  * Generate the GitHub App manifest JSON.
24
25
  */
25
- export declare function generateManifest(callbackUrl: string): Record<string, unknown>;
26
+ export declare function generateManifest(options: {
27
+ appName: string;
28
+ redirectUrl: string;
29
+ setupUrl: string;
30
+ webhookUrl: string;
31
+ webhookActive: boolean;
32
+ }): Record<string, unknown>;
26
33
  /**
27
34
  * Exchange a manifest code for full app credentials.
28
35
  */
29
36
  export declare function exchangeManifestCode(code: string): Promise<ManifestResult>;
30
37
  /**
31
- * Get the manifest creation URL that the user opens in their browser.
38
+ * Get the manifest creation URL for manual fallback.
39
+ *
40
+ * GitHub requires the manifest to be POSTed to this URL. Do not send users here
41
+ * directly without a form body.
32
42
  */
33
- export declare function getManifestCreationUrl(manifest: Record<string, unknown>): string;
43
+ export declare function getManifestCreationUrl(owner?: string, state?: string): string;
34
44
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/github/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc7E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkChF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAGhF"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/github/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiB1B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAmChF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7E"}
@@ -20,16 +20,19 @@ const MANIFEST_EVENTS = ["issues", "issue_comment", "pull_request"];
20
20
  /**
21
21
  * Generate the GitHub App manifest JSON.
22
22
  */
23
- export function generateManifest(callbackUrl) {
23
+ export function generateManifest(options) {
24
24
  return {
25
- name: "aegis-bot",
25
+ name: options.appName,
26
26
  url: "https://github.com/Nairon-AI/aegis",
27
+ description: "Self-hosted AFK bug-fixing agent for ready GitHub issues.",
27
28
  hook_attributes: {
28
- url: callbackUrl,
29
- active: true,
29
+ url: options.webhookUrl,
30
+ active: options.webhookActive,
30
31
  },
31
- redirect_url: callbackUrl,
32
- callback_urls: [callbackUrl],
32
+ redirect_url: options.redirectUrl,
33
+ callback_urls: [options.redirectUrl, options.setupUrl],
34
+ setup_url: options.setupUrl,
35
+ setup_on_update: true,
33
36
  public: false,
34
37
  default_permissions: MANIFEST_PERMISSIONS,
35
38
  default_events: MANIFEST_EVENTS,
@@ -53,6 +56,7 @@ export async function exchangeManifestCode(code) {
53
56
  const data = (await response.json());
54
57
  return {
55
58
  appId: String(data.id),
59
+ slug: data.slug,
56
60
  appName: data.name,
57
61
  privateKey: data.pem,
58
62
  webhookSecret: data.webhook_secret,
@@ -62,10 +66,15 @@ export async function exchangeManifestCode(code) {
62
66
  };
63
67
  }
64
68
  /**
65
- * Get the manifest creation URL that the user opens in their browser.
69
+ * Get the manifest creation URL for manual fallback.
70
+ *
71
+ * GitHub requires the manifest to be POSTed to this URL. Do not send users here
72
+ * directly without a form body.
66
73
  */
67
- export function getManifestCreationUrl(manifest) {
68
- const encoded = encodeURIComponent(JSON.stringify(manifest));
69
- return `https://github.com/settings/apps/new?manifest=${encoded}`;
74
+ export function getManifestCreationUrl(owner, state) {
75
+ const base = owner
76
+ ? `https://github.com/organizations/${owner}/settings/apps/new`
77
+ : "https://github.com/settings/apps/new";
78
+ return state ? `${base}?state=${encodeURIComponent(state)}` : base;
70
79
  }
71
80
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/github/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,oBAAoB,GAAG;IAC5B,QAAQ,EAAE,OAAO;IACjB,aAAa,EAAE,OAAO;IACtB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAYpE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IACnD,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE,oCAAoC;QACzC,eAAe,EAAE;YAChB,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,IAAI;SACZ;QACD,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,CAAC,WAAW,CAAC;QAC5B,MAAM,EAAE,KAAK;QACb,mBAAmB,EAAE,oBAAoB;QACzC,cAAc,EAAE,eAAe;KAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wCAAwC,IAAI,cAAc,EAAE;QACxF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACR,MAAM,EAAE,6BAA6B;YACrC,sBAAsB,EAAE,YAAY;SACpC;KACD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CASlC,CAAC;IAEF,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI,CAAC,GAAG;QACpB,aAAa,EAAE,IAAI,CAAC,cAAc;QAClC,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,YAAY,EAAE,IAAI,CAAC,aAAa;QAChC,OAAO,EAAE,IAAI,CAAC,QAAQ;KACtB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAiC;IACvE,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,OAAO,iDAAiD,OAAO,EAAE,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/github/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,oBAAoB,GAAG;IAC5B,QAAQ,EAAE,OAAO;IACjB,aAAa,EAAE,OAAO;IACtB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAapE;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAMhC;IACA,OAAO;QACN,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,GAAG,EAAE,oCAAoC;QACzC,WAAW,EAAE,2DAA2D;QACxE,eAAe,EAAE;YAChB,GAAG,EAAE,OAAO,CAAC,UAAU;YACvB,MAAM,EAAE,OAAO,CAAC,aAAa;SAC7B;QACD,YAAY,EAAE,OAAO,CAAC,WAAW;QACjC,aAAa,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC;QACtD,SAAS,EAAE,OAAO,CAAC,QAAQ;QAC3B,eAAe,EAAE,IAAI;QACrB,MAAM,EAAE,KAAK;QACb,mBAAmB,EAAE,oBAAoB;QACzC,cAAc,EAAE,eAAe;KAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wCAAwC,IAAI,cAAc,EAAE;QACxF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACR,MAAM,EAAE,6BAA6B;YACrC,sBAAsB,EAAE,YAAY;SACpC;KACD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CASlC,CAAC;IAEF,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI,CAAC,GAAG;QACpB,aAAa,EAAE,IAAI,CAAC,cAAc;QAClC,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,YAAY,EAAE,IAAI,CAAC,aAAa;QAChC,OAAO,EAAE,IAAI,CAAC,QAAQ;KACtB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,KAAc;IACpE,MAAM,IAAI,GAAG,KAAK;QACjB,CAAC,CAAC,oCAAoC,KAAK,oBAAoB;QAC/D,CAAC,CAAC,sCAAsC,CAAC;IAC1C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC"}
package/docs/SETUP.md CHANGED
@@ -88,7 +88,7 @@ Pick one path.
88
88
 
89
89
  ### Option A: GitHub Token
90
90
 
91
- Fastest first setup. Good for proving the repo works.
91
+ Use this only if you already know how to create GitHub tokens. Most users should use the one-click GitHub App flow.
92
92
 
93
93
  Create a fine-grained personal access token:
94
94
 
@@ -100,11 +100,32 @@ Create a fine-grained personal access token:
100
100
 
101
101
  The token lets Aegis scan issues, create branches, push fixes, and open PRs.
102
102
 
103
- ### Option B: GitHub App
103
+ ### Option B: One-Click GitHub App
104
104
 
105
- Better for teams and production use.
105
+ Recommended for most users. The setup wizard can create the GitHub App for you.
106
106
 
107
- Create a GitHub App with:
107
+ When `aegis setup` asks for `Auth method`, choose:
108
+
109
+ ```text
110
+ One-click GitHub App (best for deployed/team use)
111
+ ```
112
+
113
+ Aegis opens a browser page. You click:
114
+
115
+ 1. `Create GitHub App`
116
+ 2. `Install`
117
+ 3. `Only select repositories`
118
+ 4. Pick the monitored repo
119
+
120
+ The CLI saves the App ID, private key, webhook secret, and installation ID into `.aegis/.env`.
121
+
122
+ If you have not deployed yet, the app webhook starts disabled. That is fine for local dry-run. After deploy, add the repo webhook from Step 9.
123
+
124
+ ### Option C: Existing GitHub App
125
+
126
+ Use this only if you already have an app.
127
+
128
+ The app needs:
108
129
 
109
130
  - Contents: read/write
110
131
  - Issues: read/write
@@ -120,7 +141,7 @@ Then:
120
141
  4. Save the Installation ID from the installation URL.
121
142
  5. Keep the private key `.pem` available for setup.
122
143
 
123
- If you do not know which one to pick, use a GitHub token first, then move to a GitHub App once the flow works.
144
+ If you do not know which one to pick, use the one-click GitHub App.
124
145
 
125
146
  ## Step 4: Run The Setup Wizard
126
147
 
@@ -130,9 +151,9 @@ npx @nairon-ai/aegis setup
130
151
 
131
152
  Important answers:
132
153
 
133
- - `GitHub repo to monitor`: the app repo, for example `acme/web-app`
154
+ - `GitHub repo to monitor`: the app repo, for example `acme/web-app` or `https://github.com/acme/web-app`
134
155
  - `Base branch`: usually `main`
135
- - GitHub auth: token or app credentials from Step 3
156
+ - GitHub auth: use `One-click GitHub App` unless you already know how to create a fine-grained GitHub token
136
157
  - `GitHub webhook secret`: generate one and keep it in `.aegis/.env`
137
158
  - `Automation mode`: start with `plan-first`
138
159
  - `Context profile`: start with `minimal`
@@ -382,6 +403,51 @@ Rules:
382
403
  - Do not provide write credentials.
383
404
  - Paste provider links/errors into the issue whenever possible.
384
405
 
406
+ ## Disconnect Aegis
407
+
408
+ Run this from the product repo:
409
+
410
+ ```bash
411
+ npx --yes @nairon-ai/aegis@latest disconnect
412
+ ```
413
+
414
+ That prints the safe shutdown checklist. It does not delete anything automatically.
415
+
416
+ Manual checklist:
417
+
418
+ 1. Stop the Worker if deployed:
419
+
420
+ ```bash
421
+ npx wrangler delete aegis-worker
422
+ ```
423
+
424
+ 2. Remove GitHub access:
425
+
426
+ - If you used the one-click GitHub App: open the repo's GitHub settings, go to GitHub Apps, and uninstall the Aegis app.
427
+ - If you used a GitHub token: open https://github.com/settings/personal-access-tokens and revoke the Aegis token.
428
+
429
+ 3. Remove webhooks:
430
+
431
+ - GitHub: repo settings -> Webhooks -> delete Aegis webhook.
432
+ - Linear: Linear settings -> API/Webhooks -> delete Aegis webhook.
433
+ - Telegram:
434
+
435
+ ```bash
436
+ curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteWebhook"
437
+ ```
438
+
439
+ 4. Remove local config:
440
+
441
+ ```bash
442
+ rm -rf .aegis
443
+ npm remove @nairon-ai/aegis
444
+ ```
445
+
446
+ 5. Optional cleanup:
447
+
448
+ - Keep `bug` and `ready to implement` if your team uses them.
449
+ - Remove Aegis-only labels if you want: `aegis:in-progress`, `aegis:needs-info`, `aegis:blocked`, `aegis:pr-opened`.
450
+
385
451
  ## Troubleshooting
386
452
 
387
453
  `No ready bugs found.`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nairon-ai/aegis",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Self-hosted AFK bug-fixing agent for GitHub Issues and Linear",
5
5
  "type": "module",
6
6
  "repository": {
@@ -0,0 +1,70 @@
1
+ import { defineCommand } from "citty";
2
+ import { consola } from "consola";
3
+ import { loadConfig } from "../state.js";
4
+
5
+ export const disconnectCommand = defineCommand({
6
+ meta: {
7
+ name: "disconnect",
8
+ description: "Show how to fully disconnect Aegis from this repo",
9
+ },
10
+ run() {
11
+ runDisconnectGuide();
12
+ },
13
+ });
14
+
15
+ export function runDisconnectGuide(): void {
16
+ const config = loadConfig();
17
+ const workerName = "aegis-worker";
18
+ const repo = config.monitoredRepo ?? "your GitHub repo";
19
+
20
+ consola.log("\n Disconnect Aegis\n");
21
+ consola.log(
22
+ "This prints the safe shutdown checklist. It does not delete anything automatically.\n",
23
+ );
24
+
25
+ consola.log("1. Stop the cloud worker");
26
+ consola.log(" If you deployed Aegis, delete the Cloudflare Worker:");
27
+ consola.log(` npx wrangler delete ${workerName}`);
28
+ consola.log(" Also remove any Cloudflare secrets for Aegis if they remain.\n");
29
+
30
+ consola.log("2. Remove GitHub access");
31
+ if (config.githubAppId) {
32
+ consola.log(" You used a GitHub App.");
33
+ consola.log(
34
+ ` Open GitHub -> ${repo} -> Settings -> GitHub Apps, then uninstall the Aegis app.`,
35
+ );
36
+ consola.log(
37
+ " Or open your GitHub account/org settings -> GitHub Apps -> Aegis -> Uninstall.",
38
+ );
39
+ } else if (config.githubToken) {
40
+ consola.log(" You used a GitHub token.");
41
+ consola.log(" Open https://github.com/settings/personal-access-tokens");
42
+ consola.log(" Find the token you created for Aegis and revoke/delete it.");
43
+ } else {
44
+ consola.log(" No GitHub token/app is saved in local config.");
45
+ }
46
+ consola.log("");
47
+
48
+ consola.log("3. Remove webhooks");
49
+ consola.log(` GitHub: open ${repo} -> Settings -> Webhooks, delete the Aegis webhook.`);
50
+ if (config.linearApiKey) {
51
+ consola.log(" Linear: open Linear Settings -> API/Webhooks, delete the Aegis webhook.");
52
+ }
53
+ if (config.telegramBotToken) {
54
+ consola.log(" Telegram: remove the webhook:");
55
+ consola.log(' curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/deleteWebhook"');
56
+ }
57
+ consola.log("");
58
+
59
+ consola.log("4. Remove local config from this repo");
60
+ consola.log(" rm -rf .aegis");
61
+ consola.log(" If you installed Aegis as a dev dependency:");
62
+ consola.log(" npm remove @nairon-ai/aegis");
63
+ consola.log("");
64
+
65
+ consola.log("5. Optional cleanup");
66
+ consola.log(" Leave labels like bug and ready to implement if your team uses them.");
67
+ consola.log(" Remove Aegis-only labels if you do not want them:");
68
+ consola.log(" aegis:in-progress, aegis:needs-info, aegis:blocked, aegis:pr-opened");
69
+ consola.log("");
70
+ }