@nairon-ai/aegis 0.5.1 → 0.5.3
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 +16 -0
- package/dist-node/cli/commands/setup.d.ts.map +1 -1
- package/dist-node/cli/commands/setup.js +125 -13
- package/dist-node/cli/commands/setup.js.map +1 -1
- package/dist-node/cli/commands/status.d.ts.map +1 -1
- package/dist-node/cli/commands/status.js +5 -0
- package/dist-node/cli/commands/status.js.map +1 -1
- package/dist-node/cli/github-secrets.d.ts +10 -0
- package/dist-node/cli/github-secrets.d.ts.map +1 -0
- package/dist-node/cli/github-secrets.js +69 -0
- package/dist-node/cli/github-secrets.js.map +1 -0
- package/docs/SETUP.md +13 -0
- package/package.json +1 -1
- package/src/cli/commands/setup.ts +182 -13
- package/src/cli/commands/status.ts +7 -0
- package/src/cli/github-secrets.ts +98 -0
package/README.md
CHANGED
|
@@ -147,6 +147,16 @@ Cloudflare Sandbox is currently available on Workers Paid and uses Docker during
|
|
|
147
147
|
- Optional: read-only production database URL
|
|
148
148
|
- Optional: Vercel API token/project ID for logs
|
|
149
149
|
|
|
150
|
+
Telegram bot setup is:
|
|
151
|
+
|
|
152
|
+
1. Open Telegram and search for the verified `@BotFather` account.
|
|
153
|
+
2. Send `/newbot`.
|
|
154
|
+
3. Pick a display name.
|
|
155
|
+
4. Pick a username ending in `bot`.
|
|
156
|
+
5. Copy the HTTP API token BotFather replies with.
|
|
157
|
+
|
|
158
|
+
Aegis then asks you to message your new bot once and auto-detects the chat ID.
|
|
159
|
+
|
|
150
160
|
## Quick Start
|
|
151
161
|
|
|
152
162
|
```bash
|
|
@@ -269,6 +279,12 @@ Production mode can add:
|
|
|
269
279
|
|
|
270
280
|
Use read-only production access. Do not give Aegis write access unless you have a tighter policy layer.
|
|
271
281
|
|
|
282
|
+
During `setup` and `status`, Aegis checks the monitored GitHub repo for Actions secret names like
|
|
283
|
+
`DATABASE_URL`, `POSTGRES_URL`, and `VERCEL_TOKEN` when `gh` is logged in. GitHub does not allow any
|
|
284
|
+
tool to read secret values back, so Aegis can confirm a secret exists but cannot import it. Start with
|
|
285
|
+
Minimal mode; paste read-only production values only when you want the agent to inspect production
|
|
286
|
+
context.
|
|
287
|
+
|
|
272
288
|
## Commands
|
|
273
289
|
|
|
274
290
|
```bash
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAwDA,eAAO,MAAM,YAAY,qDAKvB,CAAC;AAEH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCpD"}
|
|
@@ -6,6 +6,7 @@ import { consola } from "consola";
|
|
|
6
6
|
import { CODEX_AGENT_MODEL_OPTIONS, DEFAULT_AGENT_AUTH_METHOD, DEFAULT_CODEX_AGENT_MODEL, DEFAULT_OPENAI_API_AGENT_MODEL, OPENAI_API_AGENT_MODEL_OPTIONS, } from "../../shared/constants.js";
|
|
7
7
|
import { restoreGitHubAppCache, saveGitHubAppCache } from "../github-app-cache.js";
|
|
8
8
|
import { runGitHubAppFlow } from "../github-app-flow.js";
|
|
9
|
+
import { formatGitHubSecretsSummary, inspectGitHubActionsSecrets } from "../github-secrets.js";
|
|
9
10
|
import { resolveEnvFileForWrite } from "../paths.js";
|
|
10
11
|
import { detectSetupState, printState, saveConfig } from "../state.js";
|
|
11
12
|
class SetupCancelledError extends Error {
|
|
@@ -666,18 +667,30 @@ async function promptAgentModel(current, authMethod) {
|
|
|
666
667
|
return await promptText("Custom Flue model:", selectedModel);
|
|
667
668
|
}
|
|
668
669
|
async function setupProductionContext(config) {
|
|
670
|
+
const secretsSummary = formatGitHubSecretsSummary(inspectGitHubActionsSecrets(config.monitoredRepo));
|
|
669
671
|
if (hasProductionContextConfig(config)) {
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
672
|
+
const currentLines = config.contextProfile === "minimal"
|
|
673
|
+
? [
|
|
674
|
+
"Current mode: Minimal. This is correct for the first test.",
|
|
675
|
+
"Minimal does not need a database URL, Vercel token, or production access.",
|
|
676
|
+
"Choose No unless you want Aegis to inspect production DB/logs now.",
|
|
677
|
+
]
|
|
678
|
+
: [
|
|
679
|
+
"Current mode: Production.",
|
|
680
|
+
config.databaseUrl
|
|
681
|
+
? "Read-only database URL: configured."
|
|
682
|
+
: "Read-only database URL: not set.",
|
|
683
|
+
config.vercelToken
|
|
684
|
+
? `Vercel token: ${maskSecret(config.vercelToken)}.`
|
|
685
|
+
: "Vercel token: not set.",
|
|
686
|
+
config.vercelProjectId
|
|
687
|
+
? `Vercel project: ${config.vercelProjectId}.`
|
|
688
|
+
: "Vercel project: not set.",
|
|
689
|
+
];
|
|
690
|
+
printStep("Step 8: production context", [
|
|
691
|
+
...currentLines,
|
|
692
|
+
...secretsSummary,
|
|
693
|
+
"GitHub can confirm secret names, but it never lets Aegis read secret values back.",
|
|
681
694
|
]);
|
|
682
695
|
const reconfigure = await promptConfirm("Reconfigure production context?", false);
|
|
683
696
|
if (!reconfigure)
|
|
@@ -687,6 +700,7 @@ async function setupProductionContext(config) {
|
|
|
687
700
|
"Start with Minimal. It uses only issue text and repo code.",
|
|
688
701
|
"Production context lets Aegis inspect read-only database data and Vercel logs.",
|
|
689
702
|
"Do not choose Production until the basic dry-run works.",
|
|
703
|
+
...secretsSummary,
|
|
690
704
|
]);
|
|
691
705
|
const profile = await promptSelect("Context profile:", [
|
|
692
706
|
{ label: "Minimal: issue + repo", value: "minimal" },
|
|
@@ -697,6 +711,8 @@ async function setupProductionContext(config) {
|
|
|
697
711
|
return;
|
|
698
712
|
printStep("Production context details", [
|
|
699
713
|
"Use a read-only DB user or read replica. Do not give Aegis write access.",
|
|
714
|
+
"GitHub repo secrets are write-only, so Aegis can detect names but cannot import values.",
|
|
715
|
+
"If your product repo already has DATABASE_URL, paste the same read-only value here or leave it blank.",
|
|
700
716
|
"All fields here are optional. Leave unknown fields blank.",
|
|
701
717
|
]);
|
|
702
718
|
config.databaseUrl = await promptText("Read-only DATABASE_URL (optional):", config.databaseUrl);
|
|
@@ -726,7 +742,10 @@ async function setupTelegram(config) {
|
|
|
726
742
|
if (!enable)
|
|
727
743
|
return;
|
|
728
744
|
printStep("Telegram bot", [
|
|
729
|
-
"
|
|
745
|
+
"Open Telegram and search for the verified @BotFather account.",
|
|
746
|
+
"Message /newbot, choose a display name, then choose a username that ends in bot.",
|
|
747
|
+
"BotFather will reply with an HTTP API token. Paste that full token here.",
|
|
748
|
+
"After that, message your new bot once and Aegis will find your chat ID automatically.",
|
|
730
749
|
"Aegis will send short approval summaries to that chat.",
|
|
731
750
|
]);
|
|
732
751
|
if (config.telegramBotToken) {
|
|
@@ -739,7 +758,7 @@ async function setupTelegram(config) {
|
|
|
739
758
|
consola.info(`Using saved Telegram chat ID ${config.telegramChatId}.`);
|
|
740
759
|
}
|
|
741
760
|
else {
|
|
742
|
-
config.telegramChatId = await
|
|
761
|
+
config.telegramChatId = await setupTelegramChatId(config.telegramBotToken);
|
|
743
762
|
}
|
|
744
763
|
if (config.telegramWebhookSecret) {
|
|
745
764
|
consola.info("Telegram webhook secret is already configured.");
|
|
@@ -755,6 +774,99 @@ async function setupTelegram(config) {
|
|
|
755
774
|
: await promptText("Telegram webhook secret:", config.telegramWebhookSecret);
|
|
756
775
|
}
|
|
757
776
|
}
|
|
777
|
+
async function setupTelegramChatId(botToken) {
|
|
778
|
+
if (!botToken)
|
|
779
|
+
return "";
|
|
780
|
+
const bot = await fetchTelegramBotInfo(botToken);
|
|
781
|
+
const openLine = bot?.username
|
|
782
|
+
? `Open Telegram chat: https://t.me/${bot.username}`
|
|
783
|
+
: "Open Telegram, find the bot you created in BotFather, and send it any message.";
|
|
784
|
+
printStep("Telegram chat ID", [
|
|
785
|
+
openLine,
|
|
786
|
+
"Send any message like: hi",
|
|
787
|
+
"Aegis will wait up to 60 seconds and then let you pick the chat.",
|
|
788
|
+
]);
|
|
789
|
+
if (bot?.username)
|
|
790
|
+
openBrowser(`https://t.me/${bot.username}`);
|
|
791
|
+
const chats = await waitForTelegramChats(botToken);
|
|
792
|
+
if (chats.length === 1) {
|
|
793
|
+
consola.success(`Found Telegram chat: ${chats[0].label}`);
|
|
794
|
+
return chats[0].id;
|
|
795
|
+
}
|
|
796
|
+
if (chats.length > 1) {
|
|
797
|
+
return await promptSelect("Telegram chat:", chats.map((chat) => ({
|
|
798
|
+
label: chat.label,
|
|
799
|
+
value: chat.id,
|
|
800
|
+
})));
|
|
801
|
+
}
|
|
802
|
+
consola.warn("No Telegram chat found yet.");
|
|
803
|
+
printStep("Manual fallback", [
|
|
804
|
+
"Message the bot first, then open this URL in a browser:",
|
|
805
|
+
"https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates",
|
|
806
|
+
"Find result[0].message.chat.id and paste that number here.",
|
|
807
|
+
"Group chat IDs usually start with -100.",
|
|
808
|
+
]);
|
|
809
|
+
return await promptText("Telegram chat ID:", undefined);
|
|
810
|
+
}
|
|
811
|
+
async function fetchTelegramBotInfo(botToken) {
|
|
812
|
+
try {
|
|
813
|
+
const response = await fetch(`https://api.telegram.org/bot${botToken}/getMe`);
|
|
814
|
+
const payload = (await response.json());
|
|
815
|
+
if (!response.ok || !payload.ok) {
|
|
816
|
+
consola.warn(payload.description ?? "Telegram bot token could not be verified.");
|
|
817
|
+
return undefined;
|
|
818
|
+
}
|
|
819
|
+
return payload.result;
|
|
820
|
+
}
|
|
821
|
+
catch (error) {
|
|
822
|
+
consola.warn(`Could not verify Telegram bot: ${error instanceof Error ? error.message : String(error)}`);
|
|
823
|
+
return undefined;
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
async function waitForTelegramChats(botToken) {
|
|
827
|
+
consola.info("Waiting for a Telegram message to the bot...");
|
|
828
|
+
const startedAt = Date.now();
|
|
829
|
+
while (Date.now() - startedAt < 60_000) {
|
|
830
|
+
const chats = await fetchTelegramChats(botToken);
|
|
831
|
+
if (chats.length > 0)
|
|
832
|
+
return chats;
|
|
833
|
+
await sleep(2_000);
|
|
834
|
+
}
|
|
835
|
+
return [];
|
|
836
|
+
}
|
|
837
|
+
async function fetchTelegramChats(botToken) {
|
|
838
|
+
const url = new URL(`https://api.telegram.org/bot${botToken}/getUpdates`);
|
|
839
|
+
url.searchParams.set("allowed_updates", JSON.stringify(["message", "channel_post", "edited_message", "edited_channel_post"]));
|
|
840
|
+
const response = await fetch(url);
|
|
841
|
+
const payload = (await response.json());
|
|
842
|
+
if (!response.ok || !payload.ok) {
|
|
843
|
+
throw new Error(payload.description ?? "Telegram getUpdates failed.");
|
|
844
|
+
}
|
|
845
|
+
const chats = new Map();
|
|
846
|
+
for (const update of payload.result ?? []) {
|
|
847
|
+
const message = update.message ?? update.channel_post ?? update.edited_message ?? update.edited_channel_post;
|
|
848
|
+
if (!message?.chat)
|
|
849
|
+
continue;
|
|
850
|
+
const id = String(message.chat.id);
|
|
851
|
+
const option = {
|
|
852
|
+
id,
|
|
853
|
+
label: formatTelegramChat(message.chat),
|
|
854
|
+
updatedAt: message.date ?? 0,
|
|
855
|
+
};
|
|
856
|
+
const existing = chats.get(id);
|
|
857
|
+
if (!existing || existing.updatedAt <= option.updatedAt) {
|
|
858
|
+
chats.set(id, option);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
return [...chats.values()].sort((a, b) => b.updatedAt - a.updatedAt);
|
|
862
|
+
}
|
|
863
|
+
function formatTelegramChat(chat) {
|
|
864
|
+
const personName = [chat.first_name, chat.last_name].filter(Boolean).join(" ");
|
|
865
|
+
const name = chat.title || personName || chat.username || "Telegram chat";
|
|
866
|
+
const username = chat.username ? ` @${chat.username}` : "";
|
|
867
|
+
const type = chat.type ? ` ${chat.type}` : "";
|
|
868
|
+
return `${name}${username}${type} (${chat.id})`;
|
|
869
|
+
}
|
|
758
870
|
async function setupWorker(config) {
|
|
759
871
|
if (config.workerUrl) {
|
|
760
872
|
printStep("Step 10: Worker URL already saved", [
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,qDAKxB,CAAC;AAEH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB/C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { defineCommand } from "citty";
|
|
2
2
|
import { consola } from "consola";
|
|
3
|
+
import { formatGitHubSecretsSummary, inspectGitHubActionsSecrets } from "../github-secrets.js";
|
|
3
4
|
import { detectSetupState, printState } from "../state.js";
|
|
4
5
|
export const statusCommand = defineCommand({
|
|
5
6
|
meta: { name: "status", description: "Show Aegis setup status" },
|
|
@@ -15,6 +16,10 @@ export async function runStatus() {
|
|
|
15
16
|
consola.log(` Repo: ${state.config.monitoredRepo}`);
|
|
16
17
|
if (state.config.workerUrl)
|
|
17
18
|
consola.log(` Worker: ${state.config.workerUrl}`);
|
|
19
|
+
const secretsSummary = formatGitHubSecretsSummary(inspectGitHubActionsSecrets(state.config.monitoredRepo));
|
|
20
|
+
for (const line of secretsSummary) {
|
|
21
|
+
consola.log(` ${line}`);
|
|
22
|
+
}
|
|
18
23
|
consola.log("");
|
|
19
24
|
if (state.isUsable) {
|
|
20
25
|
consola.success("Aegis can scan GitHub issues.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;IAChE,KAAK,CAAC,GAAG;QACR,MAAM,SAAS,EAAE,CAAC;IACnB,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC9B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IAC1C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;IAChE,KAAK,CAAC,GAAG;QACR,MAAM,SAAS,EAAE,CAAC;IACnB,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC9B,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/E,MAAM,cAAc,GAAG,0BAA0B,CAChD,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CACvD,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type GitHubSecretsInspection = {
|
|
2
|
+
available: boolean;
|
|
3
|
+
names: string[];
|
|
4
|
+
databaseNames: string[];
|
|
5
|
+
vercelNames: string[];
|
|
6
|
+
error?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function inspectGitHubActionsSecrets(repo: string | undefined): GitHubSecretsInspection | undefined;
|
|
9
|
+
export declare function formatGitHubSecretsSummary(inspection: GitHubSecretsInspection | undefined): string[];
|
|
10
|
+
//# sourceMappingURL=github-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-secrets.d.ts","sourceRoot":"","sources":["../../src/cli/github-secrets.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB,uBAAuB,GAAG,SAAS,CA4BrC;AAcD,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,uBAAuB,GAAG,SAAS,GAC7C,MAAM,EAAE,CAwBV"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
const DATABASE_SECRET_NAMES = [
|
|
3
|
+
"DATABASE_URL",
|
|
4
|
+
"PROD_DATABASE_URL",
|
|
5
|
+
"PRODUCTION_DATABASE_URL",
|
|
6
|
+
"POSTGRES_URL",
|
|
7
|
+
"POSTGRES_PRISMA_URL",
|
|
8
|
+
"POSTGRES_URL_NON_POOLING",
|
|
9
|
+
"DATABASE_URL_READONLY",
|
|
10
|
+
"READONLY_DATABASE_URL",
|
|
11
|
+
];
|
|
12
|
+
const VERCEL_SECRET_NAMES = ["VERCEL_TOKEN", "VERCEL_PROJECT_ID", "VERCEL_TEAM_ID"];
|
|
13
|
+
export function inspectGitHubActionsSecrets(repo) {
|
|
14
|
+
if (!repo)
|
|
15
|
+
return undefined;
|
|
16
|
+
try {
|
|
17
|
+
const output = execFileSync("gh", ["secret", "list", "--repo", repo, "--app", "actions", "--json", "name"], {
|
|
18
|
+
encoding: "utf-8",
|
|
19
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
20
|
+
});
|
|
21
|
+
const items = JSON.parse(output);
|
|
22
|
+
const names = items.map((item) => item.name).sort((a, b) => a.localeCompare(b));
|
|
23
|
+
return {
|
|
24
|
+
available: true,
|
|
25
|
+
names,
|
|
26
|
+
databaseNames: names.filter(isDatabaseSecretName),
|
|
27
|
+
vercelNames: names.filter(isVercelSecretName),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
return {
|
|
32
|
+
available: false,
|
|
33
|
+
names: [],
|
|
34
|
+
databaseNames: [],
|
|
35
|
+
vercelNames: [],
|
|
36
|
+
error: error instanceof Error ? error.message : String(error),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function isDatabaseSecretName(name) {
|
|
41
|
+
return (DATABASE_SECRET_NAMES.includes(name) ||
|
|
42
|
+
name.endsWith("_DATABASE_URL") ||
|
|
43
|
+
name.includes("POSTGRES"));
|
|
44
|
+
}
|
|
45
|
+
function isVercelSecretName(name) {
|
|
46
|
+
return VERCEL_SECRET_NAMES.includes(name) || name.startsWith("VERCEL_");
|
|
47
|
+
}
|
|
48
|
+
export function formatGitHubSecretsSummary(inspection) {
|
|
49
|
+
if (!inspection)
|
|
50
|
+
return ["GitHub repo secrets: not checked because no monitored repo is set."];
|
|
51
|
+
if (!inspection.available) {
|
|
52
|
+
return [
|
|
53
|
+
"GitHub repo secrets: could not check. Run `gh auth login` if you want Aegis to verify secret names.",
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
const lines = [
|
|
57
|
+
inspection.names.length > 0
|
|
58
|
+
? `GitHub repo secrets found: ${inspection.names.join(", ")}.`
|
|
59
|
+
: "GitHub repo secrets found: none.",
|
|
60
|
+
];
|
|
61
|
+
if (inspection.databaseNames.length > 0) {
|
|
62
|
+
lines.push(`Database-looking secrets found: ${inspection.databaseNames.join(", ")}. GitHub will not reveal their values.`);
|
|
63
|
+
}
|
|
64
|
+
if (inspection.vercelNames.length > 0) {
|
|
65
|
+
lines.push(`Vercel-looking secrets found: ${inspection.vercelNames.join(", ")}. GitHub will not reveal their values.`);
|
|
66
|
+
}
|
|
67
|
+
return lines;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=github-secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-secrets.js","sourceRoot":"","sources":["../../src/cli/github-secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,qBAAqB,GAAG;IAC7B,cAAc;IACd,mBAAmB;IACnB,yBAAyB;IACzB,cAAc;IACd,qBAAqB;IACrB,0BAA0B;IAC1B,uBAAuB;IACvB,uBAAuB;CACvB,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAcpF,MAAM,UAAU,2BAA2B,CAC1C,IAAwB;IAExB,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,YAAY,CAC1B,IAAI,EACJ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,EACxE;YACC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SACjC,CACD,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA2B,CAAC;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO;YACN,SAAS,EAAE,IAAI;YACf,KAAK;YACL,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACjD,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;SAC7C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,EAAE;YACT,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC7D,CAAC;IACH,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACzC,OAAO,CACN,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CACzB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACvC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACzC,UAA+C;IAE/C,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,oEAAoE,CAAC,CAAC;IAC/F,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO;YACN,qGAAqG;SACrG,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG;QACb,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC,8BAA8B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC9D,CAAC,CAAC,kCAAkC;KACrC,CAAC;IACF,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CACT,mCAAmC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAC9G,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CACT,iCAAiC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAC1G,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC"}
|
package/docs/SETUP.md
CHANGED
|
@@ -344,6 +344,16 @@ Configure Linear to match the setup wizard:
|
|
|
344
344
|
|
|
345
345
|
Only needed if Telegram approvals are enabled.
|
|
346
346
|
|
|
347
|
+
Create the Telegram bot first:
|
|
348
|
+
|
|
349
|
+
1. Open Telegram and search for the verified `@BotFather` account.
|
|
350
|
+
2. Send `/newbot`.
|
|
351
|
+
3. Pick a display name, for example `Aegis`.
|
|
352
|
+
4. Pick a username ending in `bot`, for example `my_company_aegis_bot`.
|
|
353
|
+
5. Copy the HTTP API token BotFather replies with.
|
|
354
|
+
6. Paste that token into `aegis setup`.
|
|
355
|
+
7. Message your new bot once. Aegis will detect the chat ID automatically.
|
|
356
|
+
|
|
347
357
|
```bash
|
|
348
358
|
curl "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook" \
|
|
349
359
|
-d "url=https://YOUR_WORKER.workers.dev/webhook/telegram" \
|
|
@@ -411,6 +421,9 @@ Rules:
|
|
|
411
421
|
- Prefer a read replica.
|
|
412
422
|
- Do not provide write credentials.
|
|
413
423
|
- Paste provider links/errors into the issue whenever possible.
|
|
424
|
+
- Aegis checks GitHub Actions secret names in the monitored repo when `gh` is logged in.
|
|
425
|
+
- GitHub secrets are write-only. Aegis can say `DATABASE_URL` exists, but cannot read/import the value.
|
|
426
|
+
- If a repo secret already has the production DB URL, paste the same read-only value during setup only when you enable `production`.
|
|
414
427
|
|
|
415
428
|
## Disconnect Aegis
|
|
416
429
|
|
package/package.json
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
import type { AegisCliConfig } from "../../shared/types.js";
|
|
14
14
|
import { restoreGitHubAppCache, saveGitHubAppCache } from "../github-app-cache.js";
|
|
15
15
|
import { runGitHubAppFlow } from "../github-app-flow.js";
|
|
16
|
+
import { formatGitHubSecretsSummary, inspectGitHubActionsSecrets } from "../github-secrets.js";
|
|
16
17
|
import { resolveEnvFileForWrite } from "../paths.js";
|
|
17
18
|
import { detectSetupState, printState, saveConfig } from "../state.js";
|
|
18
19
|
|
|
@@ -24,6 +25,16 @@ type LinearTeam = {
|
|
|
24
25
|
key: string;
|
|
25
26
|
};
|
|
26
27
|
|
|
28
|
+
type TelegramBotInfo = {
|
|
29
|
+
username?: string;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
type TelegramChatOption = {
|
|
33
|
+
id: string;
|
|
34
|
+
label: string;
|
|
35
|
+
updatedAt: number;
|
|
36
|
+
};
|
|
37
|
+
|
|
27
38
|
type InstalledGitHubApp = {
|
|
28
39
|
appId: string;
|
|
29
40
|
installationId: string;
|
|
@@ -810,18 +821,34 @@ async function promptAgentModel(
|
|
|
810
821
|
}
|
|
811
822
|
|
|
812
823
|
async function setupProductionContext(config: AegisCliConfig): Promise<void> {
|
|
824
|
+
const secretsSummary = formatGitHubSecretsSummary(
|
|
825
|
+
inspectGitHubActionsSecrets(config.monitoredRepo),
|
|
826
|
+
);
|
|
827
|
+
|
|
813
828
|
if (hasProductionContextConfig(config)) {
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
:
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
829
|
+
const currentLines =
|
|
830
|
+
config.contextProfile === "minimal"
|
|
831
|
+
? [
|
|
832
|
+
"Current mode: Minimal. This is correct for the first test.",
|
|
833
|
+
"Minimal does not need a database URL, Vercel token, or production access.",
|
|
834
|
+
"Choose No unless you want Aegis to inspect production DB/logs now.",
|
|
835
|
+
]
|
|
836
|
+
: [
|
|
837
|
+
"Current mode: Production.",
|
|
838
|
+
config.databaseUrl
|
|
839
|
+
? "Read-only database URL: configured."
|
|
840
|
+
: "Read-only database URL: not set.",
|
|
841
|
+
config.vercelToken
|
|
842
|
+
? `Vercel token: ${maskSecret(config.vercelToken)}.`
|
|
843
|
+
: "Vercel token: not set.",
|
|
844
|
+
config.vercelProjectId
|
|
845
|
+
? `Vercel project: ${config.vercelProjectId}.`
|
|
846
|
+
: "Vercel project: not set.",
|
|
847
|
+
];
|
|
848
|
+
printStep("Step 8: production context", [
|
|
849
|
+
...currentLines,
|
|
850
|
+
...secretsSummary,
|
|
851
|
+
"GitHub can confirm secret names, but it never lets Aegis read secret values back.",
|
|
825
852
|
]);
|
|
826
853
|
const reconfigure = await promptConfirm("Reconfigure production context?", false);
|
|
827
854
|
if (!reconfigure) return;
|
|
@@ -831,6 +858,7 @@ async function setupProductionContext(config: AegisCliConfig): Promise<void> {
|
|
|
831
858
|
"Start with Minimal. It uses only issue text and repo code.",
|
|
832
859
|
"Production context lets Aegis inspect read-only database data and Vercel logs.",
|
|
833
860
|
"Do not choose Production until the basic dry-run works.",
|
|
861
|
+
...secretsSummary,
|
|
834
862
|
]);
|
|
835
863
|
const profile = await promptSelect<NonNullable<AegisCliConfig["contextProfile"]>>(
|
|
836
864
|
"Context profile:",
|
|
@@ -845,6 +873,8 @@ async function setupProductionContext(config: AegisCliConfig): Promise<void> {
|
|
|
845
873
|
|
|
846
874
|
printStep("Production context details", [
|
|
847
875
|
"Use a read-only DB user or read replica. Do not give Aegis write access.",
|
|
876
|
+
"GitHub repo secrets are write-only, so Aegis can detect names but cannot import values.",
|
|
877
|
+
"If your product repo already has DATABASE_URL, paste the same read-only value here or leave it blank.",
|
|
848
878
|
"All fields here are optional. Leave unknown fields blank.",
|
|
849
879
|
]);
|
|
850
880
|
config.databaseUrl = await promptText("Read-only DATABASE_URL (optional):", config.databaseUrl);
|
|
@@ -881,7 +911,10 @@ async function setupTelegram(config: AegisCliConfig): Promise<void> {
|
|
|
881
911
|
if (!enable) return;
|
|
882
912
|
|
|
883
913
|
printStep("Telegram bot", [
|
|
884
|
-
"
|
|
914
|
+
"Open Telegram and search for the verified @BotFather account.",
|
|
915
|
+
"Message /newbot, choose a display name, then choose a username that ends in bot.",
|
|
916
|
+
"BotFather will reply with an HTTP API token. Paste that full token here.",
|
|
917
|
+
"After that, message your new bot once and Aegis will find your chat ID automatically.",
|
|
885
918
|
"Aegis will send short approval summaries to that chat.",
|
|
886
919
|
]);
|
|
887
920
|
if (config.telegramBotToken) {
|
|
@@ -892,7 +925,7 @@ async function setupTelegram(config: AegisCliConfig): Promise<void> {
|
|
|
892
925
|
if (config.telegramChatId) {
|
|
893
926
|
consola.info(`Using saved Telegram chat ID ${config.telegramChatId}.`);
|
|
894
927
|
} else {
|
|
895
|
-
config.telegramChatId = await
|
|
928
|
+
config.telegramChatId = await setupTelegramChatId(config.telegramBotToken);
|
|
896
929
|
}
|
|
897
930
|
if (config.telegramWebhookSecret) {
|
|
898
931
|
consola.info("Telegram webhook secret is already configured.");
|
|
@@ -908,6 +941,142 @@ async function setupTelegram(config: AegisCliConfig): Promise<void> {
|
|
|
908
941
|
}
|
|
909
942
|
}
|
|
910
943
|
|
|
944
|
+
async function setupTelegramChatId(botToken: string | undefined): Promise<string> {
|
|
945
|
+
if (!botToken) return "";
|
|
946
|
+
|
|
947
|
+
const bot = await fetchTelegramBotInfo(botToken);
|
|
948
|
+
const openLine = bot?.username
|
|
949
|
+
? `Open Telegram chat: https://t.me/${bot.username}`
|
|
950
|
+
: "Open Telegram, find the bot you created in BotFather, and send it any message.";
|
|
951
|
+
|
|
952
|
+
printStep("Telegram chat ID", [
|
|
953
|
+
openLine,
|
|
954
|
+
"Send any message like: hi",
|
|
955
|
+
"Aegis will wait up to 60 seconds and then let you pick the chat.",
|
|
956
|
+
]);
|
|
957
|
+
if (bot?.username) openBrowser(`https://t.me/${bot.username}`);
|
|
958
|
+
|
|
959
|
+
const chats = await waitForTelegramChats(botToken);
|
|
960
|
+
if (chats.length === 1) {
|
|
961
|
+
consola.success(`Found Telegram chat: ${chats[0].label}`);
|
|
962
|
+
return chats[0].id;
|
|
963
|
+
}
|
|
964
|
+
if (chats.length > 1) {
|
|
965
|
+
return await promptSelect(
|
|
966
|
+
"Telegram chat:",
|
|
967
|
+
chats.map((chat) => ({
|
|
968
|
+
label: chat.label,
|
|
969
|
+
value: chat.id,
|
|
970
|
+
})),
|
|
971
|
+
);
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
consola.warn("No Telegram chat found yet.");
|
|
975
|
+
printStep("Manual fallback", [
|
|
976
|
+
"Message the bot first, then open this URL in a browser:",
|
|
977
|
+
"https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates",
|
|
978
|
+
"Find result[0].message.chat.id and paste that number here.",
|
|
979
|
+
"Group chat IDs usually start with -100.",
|
|
980
|
+
]);
|
|
981
|
+
return await promptText("Telegram chat ID:", undefined);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
async function fetchTelegramBotInfo(botToken: string): Promise<TelegramBotInfo | undefined> {
|
|
985
|
+
try {
|
|
986
|
+
const response = await fetch(`https://api.telegram.org/bot${botToken}/getMe`);
|
|
987
|
+
const payload = (await response.json()) as {
|
|
988
|
+
ok?: boolean;
|
|
989
|
+
result?: TelegramBotInfo;
|
|
990
|
+
description?: string;
|
|
991
|
+
};
|
|
992
|
+
if (!response.ok || !payload.ok) {
|
|
993
|
+
consola.warn(payload.description ?? "Telegram bot token could not be verified.");
|
|
994
|
+
return undefined;
|
|
995
|
+
}
|
|
996
|
+
return payload.result;
|
|
997
|
+
} catch (error) {
|
|
998
|
+
consola.warn(
|
|
999
|
+
`Could not verify Telegram bot: ${error instanceof Error ? error.message : String(error)}`,
|
|
1000
|
+
);
|
|
1001
|
+
return undefined;
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
async function waitForTelegramChats(botToken: string): Promise<TelegramChatOption[]> {
|
|
1006
|
+
consola.info("Waiting for a Telegram message to the bot...");
|
|
1007
|
+
const startedAt = Date.now();
|
|
1008
|
+
while (Date.now() - startedAt < 60_000) {
|
|
1009
|
+
const chats = await fetchTelegramChats(botToken);
|
|
1010
|
+
if (chats.length > 0) return chats;
|
|
1011
|
+
await sleep(2_000);
|
|
1012
|
+
}
|
|
1013
|
+
return [];
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
async function fetchTelegramChats(botToken: string): Promise<TelegramChatOption[]> {
|
|
1017
|
+
const url = new URL(`https://api.telegram.org/bot${botToken}/getUpdates`);
|
|
1018
|
+
url.searchParams.set(
|
|
1019
|
+
"allowed_updates",
|
|
1020
|
+
JSON.stringify(["message", "channel_post", "edited_message", "edited_channel_post"]),
|
|
1021
|
+
);
|
|
1022
|
+
const response = await fetch(url);
|
|
1023
|
+
const payload = (await response.json()) as {
|
|
1024
|
+
ok?: boolean;
|
|
1025
|
+
result?: TelegramUpdate[];
|
|
1026
|
+
description?: string;
|
|
1027
|
+
};
|
|
1028
|
+
if (!response.ok || !payload.ok) {
|
|
1029
|
+
throw new Error(payload.description ?? "Telegram getUpdates failed.");
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
const chats = new Map<string, TelegramChatOption>();
|
|
1033
|
+
for (const update of payload.result ?? []) {
|
|
1034
|
+
const message =
|
|
1035
|
+
update.message ?? update.channel_post ?? update.edited_message ?? update.edited_channel_post;
|
|
1036
|
+
if (!message?.chat) continue;
|
|
1037
|
+
const id = String(message.chat.id);
|
|
1038
|
+
const option = {
|
|
1039
|
+
id,
|
|
1040
|
+
label: formatTelegramChat(message.chat),
|
|
1041
|
+
updatedAt: message.date ?? 0,
|
|
1042
|
+
};
|
|
1043
|
+
const existing = chats.get(id);
|
|
1044
|
+
if (!existing || existing.updatedAt <= option.updatedAt) {
|
|
1045
|
+
chats.set(id, option);
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
return [...chats.values()].sort((a, b) => b.updatedAt - a.updatedAt);
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
type TelegramUpdate = {
|
|
1052
|
+
message?: TelegramMessage;
|
|
1053
|
+
channel_post?: TelegramMessage;
|
|
1054
|
+
edited_message?: TelegramMessage;
|
|
1055
|
+
edited_channel_post?: TelegramMessage;
|
|
1056
|
+
};
|
|
1057
|
+
|
|
1058
|
+
type TelegramMessage = {
|
|
1059
|
+
date?: number;
|
|
1060
|
+
chat?: TelegramChat;
|
|
1061
|
+
};
|
|
1062
|
+
|
|
1063
|
+
type TelegramChat = {
|
|
1064
|
+
id: number;
|
|
1065
|
+
type?: string;
|
|
1066
|
+
title?: string;
|
|
1067
|
+
username?: string;
|
|
1068
|
+
first_name?: string;
|
|
1069
|
+
last_name?: string;
|
|
1070
|
+
};
|
|
1071
|
+
|
|
1072
|
+
function formatTelegramChat(chat: TelegramChat): string {
|
|
1073
|
+
const personName = [chat.first_name, chat.last_name].filter(Boolean).join(" ");
|
|
1074
|
+
const name = chat.title || personName || chat.username || "Telegram chat";
|
|
1075
|
+
const username = chat.username ? ` @${chat.username}` : "";
|
|
1076
|
+
const type = chat.type ? ` ${chat.type}` : "";
|
|
1077
|
+
return `${name}${username}${type} (${chat.id})`;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
911
1080
|
async function setupWorker(config: AegisCliConfig): Promise<void> {
|
|
912
1081
|
if (config.workerUrl) {
|
|
913
1082
|
printStep("Step 10: Worker URL already saved", [
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { defineCommand } from "citty";
|
|
2
2
|
import { consola } from "consola";
|
|
3
|
+
import { formatGitHubSecretsSummary, inspectGitHubActionsSecrets } from "../github-secrets.js";
|
|
3
4
|
import { detectSetupState, printState } from "../state.js";
|
|
4
5
|
|
|
5
6
|
export const statusCommand = defineCommand({
|
|
@@ -15,6 +16,12 @@ export async function runStatus(): Promise<void> {
|
|
|
15
16
|
printState(state);
|
|
16
17
|
if (state.config.monitoredRepo) consola.log(` Repo: ${state.config.monitoredRepo}`);
|
|
17
18
|
if (state.config.workerUrl) consola.log(` Worker: ${state.config.workerUrl}`);
|
|
19
|
+
const secretsSummary = formatGitHubSecretsSummary(
|
|
20
|
+
inspectGitHubActionsSecrets(state.config.monitoredRepo),
|
|
21
|
+
);
|
|
22
|
+
for (const line of secretsSummary) {
|
|
23
|
+
consola.log(` ${line}`);
|
|
24
|
+
}
|
|
18
25
|
consola.log("");
|
|
19
26
|
if (state.isUsable) {
|
|
20
27
|
consola.success("Aegis can scan GitHub issues.");
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
|
|
3
|
+
const DATABASE_SECRET_NAMES = [
|
|
4
|
+
"DATABASE_URL",
|
|
5
|
+
"PROD_DATABASE_URL",
|
|
6
|
+
"PRODUCTION_DATABASE_URL",
|
|
7
|
+
"POSTGRES_URL",
|
|
8
|
+
"POSTGRES_PRISMA_URL",
|
|
9
|
+
"POSTGRES_URL_NON_POOLING",
|
|
10
|
+
"DATABASE_URL_READONLY",
|
|
11
|
+
"READONLY_DATABASE_URL",
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
const VERCEL_SECRET_NAMES = ["VERCEL_TOKEN", "VERCEL_PROJECT_ID", "VERCEL_TEAM_ID"];
|
|
15
|
+
|
|
16
|
+
export type GitHubSecretsInspection = {
|
|
17
|
+
available: boolean;
|
|
18
|
+
names: string[];
|
|
19
|
+
databaseNames: string[];
|
|
20
|
+
vercelNames: string[];
|
|
21
|
+
error?: string;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
type GitHubSecretListItem = {
|
|
25
|
+
name: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export function inspectGitHubActionsSecrets(
|
|
29
|
+
repo: string | undefined,
|
|
30
|
+
): GitHubSecretsInspection | undefined {
|
|
31
|
+
if (!repo) return undefined;
|
|
32
|
+
try {
|
|
33
|
+
const output = execFileSync(
|
|
34
|
+
"gh",
|
|
35
|
+
["secret", "list", "--repo", repo, "--app", "actions", "--json", "name"],
|
|
36
|
+
{
|
|
37
|
+
encoding: "utf-8",
|
|
38
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
39
|
+
},
|
|
40
|
+
);
|
|
41
|
+
const items = JSON.parse(output) as GitHubSecretListItem[];
|
|
42
|
+
const names = items.map((item) => item.name).sort((a, b) => a.localeCompare(b));
|
|
43
|
+
return {
|
|
44
|
+
available: true,
|
|
45
|
+
names,
|
|
46
|
+
databaseNames: names.filter(isDatabaseSecretName),
|
|
47
|
+
vercelNames: names.filter(isVercelSecretName),
|
|
48
|
+
};
|
|
49
|
+
} catch (error) {
|
|
50
|
+
return {
|
|
51
|
+
available: false,
|
|
52
|
+
names: [],
|
|
53
|
+
databaseNames: [],
|
|
54
|
+
vercelNames: [],
|
|
55
|
+
error: error instanceof Error ? error.message : String(error),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function isDatabaseSecretName(name: string): boolean {
|
|
61
|
+
return (
|
|
62
|
+
DATABASE_SECRET_NAMES.includes(name) ||
|
|
63
|
+
name.endsWith("_DATABASE_URL") ||
|
|
64
|
+
name.includes("POSTGRES")
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function isVercelSecretName(name: string): boolean {
|
|
69
|
+
return VERCEL_SECRET_NAMES.includes(name) || name.startsWith("VERCEL_");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function formatGitHubSecretsSummary(
|
|
73
|
+
inspection: GitHubSecretsInspection | undefined,
|
|
74
|
+
): string[] {
|
|
75
|
+
if (!inspection) return ["GitHub repo secrets: not checked because no monitored repo is set."];
|
|
76
|
+
if (!inspection.available) {
|
|
77
|
+
return [
|
|
78
|
+
"GitHub repo secrets: could not check. Run `gh auth login` if you want Aegis to verify secret names.",
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const lines = [
|
|
83
|
+
inspection.names.length > 0
|
|
84
|
+
? `GitHub repo secrets found: ${inspection.names.join(", ")}.`
|
|
85
|
+
: "GitHub repo secrets found: none.",
|
|
86
|
+
];
|
|
87
|
+
if (inspection.databaseNames.length > 0) {
|
|
88
|
+
lines.push(
|
|
89
|
+
`Database-looking secrets found: ${inspection.databaseNames.join(", ")}. GitHub will not reveal their values.`,
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
if (inspection.vercelNames.length > 0) {
|
|
93
|
+
lines.push(
|
|
94
|
+
`Vercel-looking secrets found: ${inspection.vercelNames.join(", ")}. GitHub will not reveal their values.`,
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
return lines;
|
|
98
|
+
}
|