@nairon-ai/aegis 0.2.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.
- package/.agents/skills/bug-fix/SKILL.md +91 -0
- package/.flue/agents/bug-fix.ts +107 -0
- package/.flue/app.ts +16 -0
- package/Dockerfile +8 -0
- package/LICENSE +21 -0
- package/README.md +251 -0
- package/dist-node/agent/bug-fix-skill.d.ts +2 -0
- package/dist-node/agent/bug-fix-skill.d.ts.map +1 -0
- package/dist-node/agent/bug-fix-skill.js +64 -0
- package/dist-node/agent/bug-fix-skill.js.map +1 -0
- package/dist-node/agent/client.d.ts +14 -0
- package/dist-node/agent/client.d.ts.map +1 -0
- package/dist-node/agent/client.js +110 -0
- package/dist-node/agent/client.js.map +1 -0
- package/dist-node/cli/commands/deploy.d.ts +3 -0
- package/dist-node/cli/commands/deploy.d.ts.map +1 -0
- package/dist-node/cli/commands/deploy.js +94 -0
- package/dist-node/cli/commands/deploy.js.map +1 -0
- package/dist-node/cli/commands/init.d.ts +3 -0
- package/dist-node/cli/commands/init.d.ts.map +1 -0
- package/dist-node/cli/commands/init.js +115 -0
- package/dist-node/cli/commands/init.js.map +1 -0
- package/dist-node/cli/commands/pickup.d.ts +11 -0
- package/dist-node/cli/commands/pickup.d.ts.map +1 -0
- package/dist-node/cli/commands/pickup.js +43 -0
- package/dist-node/cli/commands/pickup.js.map +1 -0
- package/dist-node/cli/commands/setup.d.ts +3 -0
- package/dist-node/cli/commands/setup.d.ts.map +1 -0
- package/dist-node/cli/commands/setup.js +163 -0
- package/dist-node/cli/commands/setup.js.map +1 -0
- package/dist-node/cli/commands/status.d.ts +3 -0
- package/dist-node/cli/commands/status.d.ts.map +1 -0
- package/dist-node/cli/commands/status.js +26 -0
- package/dist-node/cli/commands/status.js.map +1 -0
- package/dist-node/cli/index.d.ts +3 -0
- package/dist-node/cli/index.d.ts.map +1 -0
- package/dist-node/cli/index.js +36 -0
- package/dist-node/cli/index.js.map +1 -0
- package/dist-node/cli/paths.d.ts +7 -0
- package/dist-node/cli/paths.d.ts.map +1 -0
- package/dist-node/cli/paths.js +29 -0
- package/dist-node/cli/paths.js.map +1 -0
- package/dist-node/cli/state.d.ts +16 -0
- package/dist-node/cli/state.d.ts.map +1 -0
- package/dist-node/cli/state.js +214 -0
- package/dist-node/cli/state.js.map +1 -0
- package/dist-node/core/pickup.d.ts +14 -0
- package/dist-node/core/pickup.d.ts.map +1 -0
- package/dist-node/core/pickup.js +42 -0
- package/dist-node/core/pickup.js.map +1 -0
- package/dist-node/github/index.d.ts +3 -0
- package/dist-node/github/index.d.ts.map +1 -0
- package/dist-node/github/index.js +2 -0
- package/dist-node/github/index.js.map +1 -0
- package/dist-node/github/manifest.d.ts +34 -0
- package/dist-node/github/manifest.d.ts.map +1 -0
- package/dist-node/github/manifest.js +71 -0
- package/dist-node/github/manifest.js.map +1 -0
- package/dist-node/integrations/github.d.ts +29 -0
- package/dist-node/integrations/github.d.ts.map +1 -0
- package/dist-node/integrations/github.js +199 -0
- package/dist-node/integrations/github.js.map +1 -0
- package/dist-node/integrations/linear.d.ts +15 -0
- package/dist-node/integrations/linear.d.ts.map +1 -0
- package/dist-node/integrations/linear.js +146 -0
- package/dist-node/integrations/linear.js.map +1 -0
- package/dist-node/integrations/telegram.d.ts +24 -0
- package/dist-node/integrations/telegram.d.ts.map +1 -0
- package/dist-node/integrations/telegram.js +39 -0
- package/dist-node/integrations/telegram.js.map +1 -0
- package/dist-node/integrations/webhooks.d.ts +3 -0
- package/dist-node/integrations/webhooks.d.ts.map +1 -0
- package/dist-node/integrations/webhooks.js +37 -0
- package/dist-node/integrations/webhooks.js.map +1 -0
- package/dist-node/sandbox/github-token.d.ts +7 -0
- package/dist-node/sandbox/github-token.d.ts.map +1 -0
- package/dist-node/sandbox/github-token.js +66 -0
- package/dist-node/sandbox/github-token.js.map +1 -0
- package/dist-node/sandbox/index.d.ts +2 -0
- package/dist-node/sandbox/index.d.ts.map +1 -0
- package/dist-node/sandbox/index.js +2 -0
- package/dist-node/sandbox/index.js.map +1 -0
- package/dist-node/server/app.d.ts +9 -0
- package/dist-node/server/app.d.ts.map +1 -0
- package/dist-node/server/app.js +216 -0
- package/dist-node/server/app.js.map +1 -0
- package/dist-node/shared/config.d.ts +5 -0
- package/dist-node/shared/config.d.ts.map +1 -0
- package/dist-node/shared/config.js +135 -0
- package/dist-node/shared/config.js.map +1 -0
- package/dist-node/shared/constants.d.ts +16 -0
- package/dist-node/shared/constants.d.ts.map +1 -0
- package/dist-node/shared/constants.js +29 -0
- package/dist-node/shared/constants.js.map +1 -0
- package/dist-node/shared/format.d.ts +12 -0
- package/dist-node/shared/format.d.ts.map +1 -0
- package/dist-node/shared/format.js +71 -0
- package/dist-node/shared/format.js.map +1 -0
- package/dist-node/shared/index.d.ts +7 -0
- package/dist-node/shared/index.d.ts.map +1 -0
- package/dist-node/shared/index.js +7 -0
- package/dist-node/shared/index.js.map +1 -0
- package/dist-node/shared/readiness.d.ts +3 -0
- package/dist-node/shared/readiness.d.ts.map +1 -0
- package/dist-node/shared/readiness.js +91 -0
- package/dist-node/shared/readiness.js.map +1 -0
- package/dist-node/shared/run-state.d.ts +5 -0
- package/dist-node/shared/run-state.d.ts.map +1 -0
- package/dist-node/shared/run-state.js +26 -0
- package/dist-node/shared/run-state.js.map +1 -0
- package/dist-node/shared/types.d.ts +230 -0
- package/dist-node/shared/types.d.ts.map +1 -0
- package/dist-node/shared/types.js +5 -0
- package/dist-node/shared/types.js.map +1 -0
- package/dist-node/sources/github.d.ts +15 -0
- package/dist-node/sources/github.d.ts.map +1 -0
- package/dist-node/sources/github.js +44 -0
- package/dist-node/sources/github.js.map +1 -0
- package/dist-node/sources/index.d.ts +6 -0
- package/dist-node/sources/index.d.ts.map +1 -0
- package/dist-node/sources/index.js +16 -0
- package/dist-node/sources/index.js.map +1 -0
- package/dist-node/sources/linear.d.ts +15 -0
- package/dist-node/sources/linear.d.ts.map +1 -0
- package/dist-node/sources/linear.js +32 -0
- package/dist-node/sources/linear.js.map +1 -0
- package/dist-node/sources/types.d.ts +15 -0
- package/dist-node/sources/types.d.ts.map +1 -0
- package/dist-node/sources/types.js +2 -0
- package/dist-node/sources/types.js.map +1 -0
- package/docs/RELEASING.md +52 -0
- package/docs/SETUP.md +439 -0
- package/package.json +64 -0
- package/src/agent/bug-fix-skill.ts +63 -0
- package/src/agent/client.ts +156 -0
- package/src/cli/commands/deploy.ts +106 -0
- package/src/cli/commands/init.ts +119 -0
- package/src/cli/commands/pickup.ts +44 -0
- package/src/cli/commands/setup.ts +217 -0
- package/src/cli/commands/status.ts +24 -0
- package/src/cli/index.ts +38 -0
- package/src/cli/paths.ts +29 -0
- package/src/cli/state.ts +228 -0
- package/src/core/pickup.ts +66 -0
- package/src/github/index.ts +2 -0
- package/src/github/manifest.ts +97 -0
- package/src/integrations/github.ts +241 -0
- package/src/integrations/linear.ts +195 -0
- package/src/integrations/telegram.ts +48 -0
- package/src/integrations/webhooks.ts +53 -0
- package/src/sandbox/github-token.ts +92 -0
- package/src/sandbox/index.ts +1 -0
- package/src/server/app.ts +292 -0
- package/src/shared/config.ts +154 -0
- package/src/shared/constants.ts +30 -0
- package/src/shared/format.ts +84 -0
- package/src/shared/index.ts +6 -0
- package/src/shared/readiness.ts +116 -0
- package/src/shared/run-state.ts +32 -0
- package/src/shared/types.ts +257 -0
- package/src/sources/github.ts +57 -0
- package/src/sources/index.ts +20 -0
- package/src/sources/linear.ts +44 -0
- package/src/sources/types.ts +16 -0
- package/tsconfig.json +25 -0
- package/tsconfig.node.json +16 -0
- package/wrangler.jsonc +43 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const BUG_WORDS = [
|
|
2
|
+
"bug",
|
|
3
|
+
"crash",
|
|
4
|
+
"error",
|
|
5
|
+
"exception",
|
|
6
|
+
"fails",
|
|
7
|
+
"failure",
|
|
8
|
+
"broken",
|
|
9
|
+
"regression",
|
|
10
|
+
"incorrect",
|
|
11
|
+
"wrong",
|
|
12
|
+
];
|
|
13
|
+
const CONTEXT_WORDS = [
|
|
14
|
+
"expected",
|
|
15
|
+
"actual",
|
|
16
|
+
"reproduce",
|
|
17
|
+
"steps",
|
|
18
|
+
"stack",
|
|
19
|
+
"trace",
|
|
20
|
+
"error",
|
|
21
|
+
"logs",
|
|
22
|
+
"when",
|
|
23
|
+
"click",
|
|
24
|
+
"route",
|
|
25
|
+
"page",
|
|
26
|
+
"api",
|
|
27
|
+
];
|
|
28
|
+
export function evaluateReadiness(item, config) {
|
|
29
|
+
const labels = normalizedLabels(item.labels);
|
|
30
|
+
const titleAndBody = `${item.title}\n${item.body}`.toLowerCase();
|
|
31
|
+
if (!isBug(item, config, labels, titleAndBody)) {
|
|
32
|
+
return {
|
|
33
|
+
ready: false,
|
|
34
|
+
reason: "not labeled or described as a bug",
|
|
35
|
+
question: "Please label this as a bug once it describes broken behavior.",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if (!isReady(item, config, labels)) {
|
|
39
|
+
return {
|
|
40
|
+
ready: false,
|
|
41
|
+
reason: "not marked ready to implement",
|
|
42
|
+
question: `Please add the "${config.readyLabel}" label or move it to the configured ready status.`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (!item.repo) {
|
|
46
|
+
return {
|
|
47
|
+
ready: false,
|
|
48
|
+
reason: "no repository mapping",
|
|
49
|
+
question: "Which GitHub repository should Aegis fix this in?",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (item.body.trim().length < 40 || !hasEnoughBugContext(titleAndBody)) {
|
|
53
|
+
return {
|
|
54
|
+
ready: false,
|
|
55
|
+
reason: "bug report is too thin",
|
|
56
|
+
question: "What happened, what should have happened, and where can Aegis look to reproduce or verify it?",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const risk = hasRiskyLabel(labels, config) ? "high" : "low";
|
|
60
|
+
const autoImplementAllowed = config.automationMode === "auto-low-risk" &&
|
|
61
|
+
risk === "low" &&
|
|
62
|
+
config.lowRiskLabels.some((label) => labels.has(label.toLowerCase()));
|
|
63
|
+
return {
|
|
64
|
+
ready: true,
|
|
65
|
+
reason: autoImplementAllowed
|
|
66
|
+
? "ready low-risk bug; auto-implement allowed"
|
|
67
|
+
: "ready bug; approval checkpoint required",
|
|
68
|
+
risk,
|
|
69
|
+
autoImplementAllowed,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function isBug(item, config, labels, titleAndBody) {
|
|
73
|
+
return (labels.has(config.bugLabel.toLowerCase()) ||
|
|
74
|
+
labels.has(config.linear?.bugLabel?.toLowerCase() ?? "") ||
|
|
75
|
+
BUG_WORDS.some((word) => titleAndBody.includes(word)));
|
|
76
|
+
}
|
|
77
|
+
function isReady(item, config, labels) {
|
|
78
|
+
return (labels.has(config.readyLabel.toLowerCase()) ||
|
|
79
|
+
item.statusName?.toLowerCase() === config.linear?.readyStatusName.toLowerCase());
|
|
80
|
+
}
|
|
81
|
+
function hasEnoughBugContext(text) {
|
|
82
|
+
const hits = CONTEXT_WORDS.filter((word) => text.includes(word)).length;
|
|
83
|
+
return hits >= 2;
|
|
84
|
+
}
|
|
85
|
+
function hasRiskyLabel(labels, config) {
|
|
86
|
+
return config.alwaysRequireApprovalLabels.some((label) => labels.has(label.toLowerCase()));
|
|
87
|
+
}
|
|
88
|
+
function normalizedLabels(labels) {
|
|
89
|
+
return new Set(labels.map((label) => label.toLowerCase()));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/shared/readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AutomationMode, WorkItem, WorkRun } from "./types.js";
|
|
2
|
+
export declare function runIdFor(item: WorkItem): string;
|
|
3
|
+
export declare function runFromItem(item: WorkItem, mode: AutomationMode): WorkRun;
|
|
4
|
+
export declare function isActivelyTracked(item: WorkItem, labels: string[]): boolean;
|
|
5
|
+
//# sourceMappingURL=run-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../../src/shared/run-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAI/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAezE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAK3E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { branchNameFor } from "./format.js";
|
|
2
|
+
export function runIdFor(item) {
|
|
3
|
+
const sourceId = item.source === "github" ? `gh-${item.repo.replace("/", "-")}-${item.number}` : item.identifier;
|
|
4
|
+
return sourceId.toLowerCase().replace(/[^a-z0-9-]+/g, "-");
|
|
5
|
+
}
|
|
6
|
+
export function runFromItem(item, mode) {
|
|
7
|
+
const now = new Date().toISOString();
|
|
8
|
+
return {
|
|
9
|
+
id: runIdFor(item),
|
|
10
|
+
source: item.source,
|
|
11
|
+
externalId: item.id,
|
|
12
|
+
identifier: item.identifier,
|
|
13
|
+
repo: item.repo,
|
|
14
|
+
branchName: branchNameFor(item),
|
|
15
|
+
status: "claimed",
|
|
16
|
+
mode,
|
|
17
|
+
createdAt: now,
|
|
18
|
+
updatedAt: now,
|
|
19
|
+
itemUrl: item.url,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function isActivelyTracked(item, labels) {
|
|
23
|
+
const lowered = labels.map((label) => label.toLowerCase());
|
|
24
|
+
return lowered.some((label) => ["aegis:in-progress", "aegis:needs-info", "aegis:blocked", "aegis:pr-opened"].includes(label));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=run-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../../src/shared/run-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,UAAU,QAAQ,CAAC,IAAc;IACtC,MAAM,QAAQ,GACb,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IACjG,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAc,EAAE,IAAoB;IAC/D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO;QACN,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,EAAE;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;QAC/B,MAAM,EAAE,SAAS;QACjB,IAAI;QACJ,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,IAAI,CAAC,GAAG;KACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAc,EAAE,MAAgB;IACjE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC7F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for Aegis - an issue-driven AFK bug-fixing agent.
|
|
3
|
+
*/
|
|
4
|
+
export type WorkSource = "github" | "linear";
|
|
5
|
+
export type AutomationMode = "plan-first" | "auto-low-risk";
|
|
6
|
+
export type ContextProfile = "minimal" | "production";
|
|
7
|
+
export type WorkItemStatus = "ready" | "needs-info" | "claimed" | "planning" | "awaiting-approval" | "implementing" | "pr-opened" | "blocked" | "failed" | "cancelled";
|
|
8
|
+
export type RiskLevel = "low" | "medium" | "high";
|
|
9
|
+
export type WorkItem = {
|
|
10
|
+
source: WorkSource;
|
|
11
|
+
id: string;
|
|
12
|
+
number?: number;
|
|
13
|
+
identifier: string;
|
|
14
|
+
title: string;
|
|
15
|
+
body: string;
|
|
16
|
+
url: string;
|
|
17
|
+
repo: string;
|
|
18
|
+
labels: string[];
|
|
19
|
+
statusName?: string;
|
|
20
|
+
createdAt?: string;
|
|
21
|
+
updatedAt?: string;
|
|
22
|
+
author?: string;
|
|
23
|
+
};
|
|
24
|
+
export type ReadinessDecision = {
|
|
25
|
+
ready: true;
|
|
26
|
+
reason: string;
|
|
27
|
+
risk: RiskLevel;
|
|
28
|
+
autoImplementAllowed: boolean;
|
|
29
|
+
} | {
|
|
30
|
+
ready: false;
|
|
31
|
+
reason: string;
|
|
32
|
+
question: string;
|
|
33
|
+
};
|
|
34
|
+
export type WorkRun = {
|
|
35
|
+
id: string;
|
|
36
|
+
source: WorkSource;
|
|
37
|
+
externalId: string;
|
|
38
|
+
identifier: string;
|
|
39
|
+
repo: string;
|
|
40
|
+
branchName: string;
|
|
41
|
+
status: WorkItemStatus;
|
|
42
|
+
mode: AutomationMode;
|
|
43
|
+
createdAt: string;
|
|
44
|
+
updatedAt: string;
|
|
45
|
+
itemUrl: string;
|
|
46
|
+
prUrl?: string;
|
|
47
|
+
lastError?: string;
|
|
48
|
+
planSummary?: string;
|
|
49
|
+
};
|
|
50
|
+
export type RunRef = {
|
|
51
|
+
runId: string;
|
|
52
|
+
source: WorkSource;
|
|
53
|
+
identifier: string;
|
|
54
|
+
repo: string;
|
|
55
|
+
branchName: string;
|
|
56
|
+
itemUrl: string;
|
|
57
|
+
};
|
|
58
|
+
export type AgentCommand = "plan" | "implement";
|
|
59
|
+
export type AgentRunContext = {
|
|
60
|
+
runId: string;
|
|
61
|
+
command: AgentCommand;
|
|
62
|
+
mode: AutomationMode;
|
|
63
|
+
contextProfile: ContextProfile;
|
|
64
|
+
item: WorkItem;
|
|
65
|
+
branchName: string;
|
|
66
|
+
baseBranch: string;
|
|
67
|
+
repoCloneUrl: string;
|
|
68
|
+
production?: {
|
|
69
|
+
databaseUrl?: string;
|
|
70
|
+
vercelToken?: string;
|
|
71
|
+
vercelProjectId?: string;
|
|
72
|
+
vercelTeamId?: string;
|
|
73
|
+
logLookbackMinutes: number;
|
|
74
|
+
};
|
|
75
|
+
approval?: {
|
|
76
|
+
approvedBy: string;
|
|
77
|
+
approvedAt: string;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
export type AgentPlanResult = {
|
|
81
|
+
outcome: "awaiting-approval" | "needs-info" | "blocked";
|
|
82
|
+
confidence: "low" | "medium" | "high";
|
|
83
|
+
risk: RiskLevel;
|
|
84
|
+
technicalSummary: string;
|
|
85
|
+
humanSummary: string;
|
|
86
|
+
proposedFix: string;
|
|
87
|
+
question?: string;
|
|
88
|
+
blocker?: string;
|
|
89
|
+
requiresApproval: boolean;
|
|
90
|
+
};
|
|
91
|
+
export type AgentImplementationResult = {
|
|
92
|
+
outcome: "implemented" | "blocked" | "needs-info";
|
|
93
|
+
confidence: "low" | "medium" | "high";
|
|
94
|
+
risk: RiskLevel;
|
|
95
|
+
technicalSummary: string;
|
|
96
|
+
humanSummary: string;
|
|
97
|
+
filesChanged: string[];
|
|
98
|
+
testsRun: string[];
|
|
99
|
+
branchName?: string;
|
|
100
|
+
commitSha?: string;
|
|
101
|
+
prTitle?: string;
|
|
102
|
+
prBody?: string;
|
|
103
|
+
question?: string;
|
|
104
|
+
blocker?: string;
|
|
105
|
+
};
|
|
106
|
+
export type AegisConfig = {
|
|
107
|
+
workerUrl?: string;
|
|
108
|
+
monitoredRepo: string;
|
|
109
|
+
baseBranch: string;
|
|
110
|
+
automationMode: AutomationMode;
|
|
111
|
+
contextProfile: ContextProfile;
|
|
112
|
+
maxConcurrentRuns: number;
|
|
113
|
+
readyLabel: string;
|
|
114
|
+
bugLabel: string;
|
|
115
|
+
inProgressLabel: string;
|
|
116
|
+
needsInfoLabel: string;
|
|
117
|
+
blockedLabel: string;
|
|
118
|
+
prOpenedLabel: string;
|
|
119
|
+
lowRiskLabels: string[];
|
|
120
|
+
alwaysRequireApprovalLabels: string[];
|
|
121
|
+
alwaysRequireApprovalPaths: string[];
|
|
122
|
+
github?: {
|
|
123
|
+
appId?: string;
|
|
124
|
+
privateKey?: string;
|
|
125
|
+
installationId?: string;
|
|
126
|
+
webhookSecret?: string;
|
|
127
|
+
token?: string;
|
|
128
|
+
};
|
|
129
|
+
linear?: {
|
|
130
|
+
apiKey?: string;
|
|
131
|
+
webhookSecret?: string;
|
|
132
|
+
teamId?: string;
|
|
133
|
+
projectId?: string;
|
|
134
|
+
readyStatusName: string;
|
|
135
|
+
inProgressStatusName: string;
|
|
136
|
+
needsInfoStatusName?: string;
|
|
137
|
+
blockedStatusName?: string;
|
|
138
|
+
bugLabel: string;
|
|
139
|
+
readyLabel?: string;
|
|
140
|
+
};
|
|
141
|
+
telegram?: {
|
|
142
|
+
botToken?: string;
|
|
143
|
+
chatId?: string;
|
|
144
|
+
webhookSecret?: string;
|
|
145
|
+
};
|
|
146
|
+
production?: {
|
|
147
|
+
databaseUrl?: string;
|
|
148
|
+
vercelToken?: string;
|
|
149
|
+
vercelProjectId?: string;
|
|
150
|
+
vercelTeamId?: string;
|
|
151
|
+
logLookbackMinutes: number;
|
|
152
|
+
};
|
|
153
|
+
model: string;
|
|
154
|
+
};
|
|
155
|
+
export type Bindings = {
|
|
156
|
+
Sandbox: DurableObjectNamespace;
|
|
157
|
+
AEGIS_WORKER_URL?: string;
|
|
158
|
+
MONITORED_REPO: string;
|
|
159
|
+
BASE_BRANCH?: string;
|
|
160
|
+
AUTOMATION_MODE?: AutomationMode;
|
|
161
|
+
CONTEXT_PROFILE?: ContextProfile;
|
|
162
|
+
MAX_CONCURRENT_RUNS?: string;
|
|
163
|
+
READY_LABEL?: string;
|
|
164
|
+
BUG_LABEL?: string;
|
|
165
|
+
IN_PROGRESS_LABEL?: string;
|
|
166
|
+
NEEDS_INFO_LABEL?: string;
|
|
167
|
+
BLOCKED_LABEL?: string;
|
|
168
|
+
PR_OPENED_LABEL?: string;
|
|
169
|
+
LOW_RISK_LABELS?: string;
|
|
170
|
+
ALWAYS_REQUIRE_APPROVAL_LABELS?: string;
|
|
171
|
+
ALWAYS_REQUIRE_APPROVAL_PATHS?: string;
|
|
172
|
+
GITHUB_APP_ID?: string;
|
|
173
|
+
GITHUB_APP_PRIVATE_KEY?: string;
|
|
174
|
+
GITHUB_INSTALLATION_ID?: string;
|
|
175
|
+
GITHUB_WEBHOOK_SECRET?: string;
|
|
176
|
+
GITHUB_TOKEN?: string;
|
|
177
|
+
LINEAR_API_KEY?: string;
|
|
178
|
+
LINEAR_WEBHOOK_SECRET?: string;
|
|
179
|
+
LINEAR_TEAM_ID?: string;
|
|
180
|
+
LINEAR_PROJECT_ID?: string;
|
|
181
|
+
LINEAR_READY_STATUS?: string;
|
|
182
|
+
LINEAR_IN_PROGRESS_STATUS?: string;
|
|
183
|
+
LINEAR_NEEDS_INFO_STATUS?: string;
|
|
184
|
+
LINEAR_BLOCKED_STATUS?: string;
|
|
185
|
+
LINEAR_BUG_LABEL?: string;
|
|
186
|
+
LINEAR_READY_LABEL?: string;
|
|
187
|
+
TELEGRAM_BOT_TOKEN?: string;
|
|
188
|
+
TELEGRAM_CHAT_ID?: string;
|
|
189
|
+
TELEGRAM_WEBHOOK_SECRET?: string;
|
|
190
|
+
DATABASE_URL?: string;
|
|
191
|
+
VERCEL_TOKEN?: string;
|
|
192
|
+
VERCEL_PROJECT_ID?: string;
|
|
193
|
+
VERCEL_TEAM_ID?: string;
|
|
194
|
+
VERCEL_LOG_LOOKBACK_MINUTES?: string;
|
|
195
|
+
AGENT_MODEL?: string;
|
|
196
|
+
OPENAI_API_KEY?: string;
|
|
197
|
+
};
|
|
198
|
+
export type AegisCliConfig = {
|
|
199
|
+
workerUrl?: string;
|
|
200
|
+
monitoredRepo?: string;
|
|
201
|
+
baseBranch?: string;
|
|
202
|
+
automationMode?: AutomationMode;
|
|
203
|
+
contextProfile?: ContextProfile;
|
|
204
|
+
readyLabel?: string;
|
|
205
|
+
bugLabel?: string;
|
|
206
|
+
githubAppId?: string;
|
|
207
|
+
githubAppPrivateKey?: string;
|
|
208
|
+
githubInstallationId?: string;
|
|
209
|
+
githubWebhookSecret?: string;
|
|
210
|
+
githubToken?: string;
|
|
211
|
+
linearApiKey?: string;
|
|
212
|
+
linearWebhookSecret?: string;
|
|
213
|
+
linearTeamId?: string;
|
|
214
|
+
linearProjectId?: string;
|
|
215
|
+
linearReadyStatus?: string;
|
|
216
|
+
linearInProgressStatus?: string;
|
|
217
|
+
linearNeedsInfoStatus?: string;
|
|
218
|
+
linearBlockedStatus?: string;
|
|
219
|
+
linearBugLabel?: string;
|
|
220
|
+
telegramBotToken?: string;
|
|
221
|
+
telegramChatId?: string;
|
|
222
|
+
telegramWebhookSecret?: string;
|
|
223
|
+
databaseUrl?: string;
|
|
224
|
+
vercelToken?: string;
|
|
225
|
+
vercelProjectId?: string;
|
|
226
|
+
vercelTeamId?: string;
|
|
227
|
+
agentModel?: string;
|
|
228
|
+
openaiApiKey?: string;
|
|
229
|
+
};
|
|
230
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AegisConfig, WorkItem } from "../shared/types.js";
|
|
2
|
+
import type { ClaimOptions, IssueSource } from "./types.js";
|
|
3
|
+
export declare class GitHubIssueSource implements IssueSource {
|
|
4
|
+
readonly name: "github";
|
|
5
|
+
private readonly config;
|
|
6
|
+
private readonly github;
|
|
7
|
+
constructor(config: AegisConfig);
|
|
8
|
+
listReadyBugs(): Promise<WorkItem[]>;
|
|
9
|
+
claim(item: WorkItem, options: ClaimOptions): Promise<void>;
|
|
10
|
+
postNeedsInfo(item: WorkItem, question: string): Promise<void>;
|
|
11
|
+
postPlan(item: WorkItem, body: string): Promise<void>;
|
|
12
|
+
linkPullRequest(item: WorkItem, prUrl: string): Promise<void>;
|
|
13
|
+
markBlocked(item: WorkItem, body: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,iBAAkB,YAAW,WAAW;IACpD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,EAAE,WAAW;IAK/B,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI9B,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9D,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7D,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAM9D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { GitHubClient } from "../integrations/github.js";
|
|
2
|
+
export class GitHubIssueSource {
|
|
3
|
+
name = "github";
|
|
4
|
+
config;
|
|
5
|
+
github;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
this.github = new GitHubClient(config);
|
|
9
|
+
}
|
|
10
|
+
listReadyBugs() {
|
|
11
|
+
return this.github.listReadyIssues();
|
|
12
|
+
}
|
|
13
|
+
async claim(item, options) {
|
|
14
|
+
const number = requireIssueNumber(item);
|
|
15
|
+
await this.github.addLabels(item.repo, number, [this.config.inProgressLabel]);
|
|
16
|
+
await this.github.comment(item.repo, number, `Aegis claimed this bug.\n\nRun: \`${options.runId}\`\nBranch: \`${options.branchName}\``);
|
|
17
|
+
}
|
|
18
|
+
async postNeedsInfo(item, question) {
|
|
19
|
+
const number = requireIssueNumber(item);
|
|
20
|
+
await this.github.addLabels(item.repo, number, [this.config.needsInfoLabel]);
|
|
21
|
+
await this.github.comment(item.repo, number, question);
|
|
22
|
+
}
|
|
23
|
+
async postPlan(item, body) {
|
|
24
|
+
await this.github.comment(item.repo, requireIssueNumber(item), body);
|
|
25
|
+
}
|
|
26
|
+
async linkPullRequest(item, prUrl) {
|
|
27
|
+
const number = requireIssueNumber(item);
|
|
28
|
+
await this.github.addLabels(item.repo, number, [this.config.prOpenedLabel]);
|
|
29
|
+
await this.github.removeLabel(item.repo, number, this.config.inProgressLabel);
|
|
30
|
+
await this.github.comment(item.repo, number, `Aegis opened a PR: ${prUrl}`);
|
|
31
|
+
}
|
|
32
|
+
async markBlocked(item, body) {
|
|
33
|
+
const number = requireIssueNumber(item);
|
|
34
|
+
await this.github.addLabels(item.repo, number, [this.config.blockedLabel]);
|
|
35
|
+
await this.github.removeLabel(item.repo, number, this.config.inProgressLabel);
|
|
36
|
+
await this.github.comment(item.repo, number, body);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function requireIssueNumber(item) {
|
|
40
|
+
if (!item.number)
|
|
41
|
+
throw new Error(`GitHub issue number missing for ${item.identifier}`);
|
|
42
|
+
return item.number;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=github.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AegisConfig, WorkSource } from "../shared/types.js";
|
|
2
|
+
import type { IssueSource } from "./types.js";
|
|
3
|
+
export declare function createSources(config: AegisConfig): IssueSource[];
|
|
4
|
+
export declare function sourceFor(config: AegisConfig, source: WorkSource): IssueSource;
|
|
5
|
+
export type { IssueSource } from "./types.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,CAMhE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,CAI9E;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { GitHubIssueSource } from "./github.js";
|
|
2
|
+
import { LinearIssueSource } from "./linear.js";
|
|
3
|
+
export function createSources(config) {
|
|
4
|
+
const sources = [new GitHubIssueSource(config)];
|
|
5
|
+
if (config.linear?.apiKey && config.linear.teamId) {
|
|
6
|
+
sources.push(new LinearIssueSource(config));
|
|
7
|
+
}
|
|
8
|
+
return sources;
|
|
9
|
+
}
|
|
10
|
+
export function sourceFor(config, source) {
|
|
11
|
+
const match = createSources(config).find((candidate) => candidate.name === source);
|
|
12
|
+
if (!match)
|
|
13
|
+
throw new Error(`${source} source is not configured`);
|
|
14
|
+
return match;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,UAAU,aAAa,CAAC,MAAmB;IAChD,MAAM,OAAO,GAAkB,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAmB,EAAE,MAAkB;IAChE,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACnF,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,2BAA2B,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AegisConfig, WorkItem } from "../shared/types.js";
|
|
2
|
+
import type { ClaimOptions, IssueSource } from "./types.js";
|
|
3
|
+
export declare class LinearIssueSource implements IssueSource {
|
|
4
|
+
readonly name: "linear";
|
|
5
|
+
private readonly config;
|
|
6
|
+
private readonly linear;
|
|
7
|
+
constructor(config: AegisConfig);
|
|
8
|
+
listReadyBugs(): Promise<WorkItem[]>;
|
|
9
|
+
claim(item: WorkItem, options: ClaimOptions): Promise<void>;
|
|
10
|
+
postNeedsInfo(item: WorkItem, question: string): Promise<void>;
|
|
11
|
+
postPlan(item: WorkItem, body: string): Promise<void>;
|
|
12
|
+
linkPullRequest(item: WorkItem, prUrl: string): Promise<void>;
|
|
13
|
+
markBlocked(item: WorkItem, body: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=linear.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/sources/linear.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,iBAAkB,YAAW,WAAW;IACpD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,EAAE,WAAW;IAK/B,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI9B,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI9D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { LinearClient } from "../integrations/linear.js";
|
|
2
|
+
export class LinearIssueSource {
|
|
3
|
+
name = "linear";
|
|
4
|
+
config;
|
|
5
|
+
linear;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
this.linear = new LinearClient(config);
|
|
9
|
+
}
|
|
10
|
+
listReadyBugs() {
|
|
11
|
+
return this.linear.listReadyIssues();
|
|
12
|
+
}
|
|
13
|
+
async claim(item, options) {
|
|
14
|
+
await this.linear.moveToStatus(item.id, this.config.linear?.inProgressStatusName);
|
|
15
|
+
await this.linear.comment(item.id, `Aegis claimed this bug.\n\nRun: \`${options.runId}\`\nBranch: \`${options.branchName}\``);
|
|
16
|
+
}
|
|
17
|
+
async postNeedsInfo(item, question) {
|
|
18
|
+
await this.linear.moveToStatus(item.id, this.config.linear?.needsInfoStatusName);
|
|
19
|
+
await this.linear.comment(item.id, question);
|
|
20
|
+
}
|
|
21
|
+
async postPlan(item, body) {
|
|
22
|
+
await this.linear.comment(item.id, body);
|
|
23
|
+
}
|
|
24
|
+
async linkPullRequest(item, prUrl) {
|
|
25
|
+
await this.linear.linkPullRequest(item.id, prUrl);
|
|
26
|
+
}
|
|
27
|
+
async markBlocked(item, body) {
|
|
28
|
+
await this.linear.moveToStatus(item.id, this.config.linear?.blockedStatusName);
|
|
29
|
+
await this.linear.comment(item.id, body);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=linear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/sources/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,MAAM,OAAO,iBAAiB;IACpB,IAAI,GAAG,QAAiB,CAAC;IACjB,MAAM,CAAc;IACpB,MAAM,CAAe;IAEtC,YAAY,MAAmB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAc,EAAE,OAAqB;QAChD,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAClF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,IAAI,CAAC,EAAE,EACP,qCAAqC,OAAO,CAAC,KAAK,iBAAiB,OAAO,CAAC,UAAU,IAAI,CACzF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAc,EAAE,QAAgB;QACnD,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACjF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAc,EAAE,IAAY;QAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAc,EAAE,KAAa;QAClD,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAc,EAAE,IAAY;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC/E,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CACD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WorkItem } from "../shared/types.js";
|
|
2
|
+
export type ClaimOptions = {
|
|
3
|
+
runId: string;
|
|
4
|
+
branchName: string;
|
|
5
|
+
};
|
|
6
|
+
export interface IssueSource {
|
|
7
|
+
name: "github" | "linear";
|
|
8
|
+
listReadyBugs(): Promise<WorkItem[]>;
|
|
9
|
+
claim(item: WorkItem, options: ClaimOptions): Promise<void>;
|
|
10
|
+
postNeedsInfo(item: WorkItem, question: string): Promise<void>;
|
|
11
|
+
postPlan(item: WorkItem, body: string): Promise<void>;
|
|
12
|
+
linkPullRequest(item: WorkItem, prUrl: string): Promise<void>;
|
|
13
|
+
markBlocked(item: WorkItem, body: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Releasing
|
|
2
|
+
|
|
3
|
+
Aegis releases are automated with semantic-release.
|
|
4
|
+
|
|
5
|
+
## Commit Message Rules
|
|
6
|
+
|
|
7
|
+
The release version is decided from commits pushed to `main`:
|
|
8
|
+
|
|
9
|
+
- `fix: ...` creates a patch release, for example `1.2.3` -> `1.2.4`
|
|
10
|
+
- `feat: ...` creates a minor release, for example `1.2.3` -> `1.3.0`
|
|
11
|
+
- `feat!: ...` or a `BREAKING CHANGE:` footer creates a major release, for example `1.2.3` -> `2.0.0`
|
|
12
|
+
- `docs(README): ...`, `refactor: ...`, and `perf: ...` create patch releases
|
|
13
|
+
- `chore: ...`, `test: ...`, and `ci: ...` do not release by default
|
|
14
|
+
|
|
15
|
+
Examples:
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
fix: correct deploy path for npx installs
|
|
19
|
+
feat: add Linear project picker
|
|
20
|
+
feat!: change Aegis config file format
|
|
21
|
+
|
|
22
|
+
BREAKING CHANGE: .aegis/.env has been replaced by aegis.config.json.
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## GitHub Actions
|
|
26
|
+
|
|
27
|
+
`.github/workflows/release.yml` runs on every push to `main`.
|
|
28
|
+
|
|
29
|
+
The workflow:
|
|
30
|
+
|
|
31
|
+
1. Installs dependencies.
|
|
32
|
+
2. Runs typecheck and Biome.
|
|
33
|
+
3. Builds the Cloudflare/Flue worker.
|
|
34
|
+
4. Builds the Node CLI.
|
|
35
|
+
5. Runs semantic-release.
|
|
36
|
+
6. Publishes `@nairon-ai/aegis` to npm when the commit history requires a release.
|
|
37
|
+
7. Creates the GitHub release and tag.
|
|
38
|
+
|
|
39
|
+
## Required npm Setup
|
|
40
|
+
|
|
41
|
+
Use one of these:
|
|
42
|
+
|
|
43
|
+
- Recommended: configure npm trusted publishing for `@nairon-ai/aegis` with GitHub Actions OIDC.
|
|
44
|
+
- Fallback: add a GitHub Actions secret named `NPM_TOKEN` with publish access.
|
|
45
|
+
|
|
46
|
+
The workflow already grants `id-token: write` for trusted publishing.
|
|
47
|
+
|
|
48
|
+
## Important
|
|
49
|
+
|
|
50
|
+
Publishing only happens from `main`.
|
|
51
|
+
|
|
52
|
+
If a push contains no release-worthy commits, semantic-release exits successfully without publishing.
|