@joynt/foundry 0.0.0-stage → 0.1.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backends/command.d.ts +37 -0
- package/dist/backends/command.d.ts.map +1 -0
- package/dist/backends/command.js +79 -0
- package/dist/backends/command.js.map +1 -0
- package/dist/backends/index.d.ts +9 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +37 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +191 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/action.d.ts +6 -0
- package/dist/commands/action.d.ts.map +1 -0
- package/dist/commands/action.js +171 -0
- package/dist/commands/action.js.map +1 -0
- package/dist/commands/cancelled.d.ts +5 -0
- package/dist/commands/cancelled.d.ts.map +1 -0
- package/dist/commands/cancelled.js +107 -0
- package/dist/commands/cancelled.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +323 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/preview.d.ts +4 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +108 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/release.d.ts +2 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +89 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/report.d.ts +14 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +91 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/reset.d.ts +4 -0
- package/dist/commands/reset.d.ts.map +1 -0
- package/dist/commands/reset.js +155 -0
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/review.d.ts +2 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +73 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/setup-bot.d.ts +31 -0
- package/dist/commands/setup-bot.d.ts.map +1 -0
- package/dist/commands/setup-bot.js +429 -0
- package/dist/commands/setup-bot.js.map +1 -0
- package/dist/commands/sync.d.ts +2 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +77 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +147 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/agent-output.d.ts +49 -0
- package/dist/lib/agent-output.d.ts.map +1 -0
- package/dist/lib/agent-output.js +256 -0
- package/dist/lib/agent-output.js.map +1 -0
- package/dist/lib/agent-report.d.ts +107 -0
- package/dist/lib/agent-report.d.ts.map +1 -0
- package/dist/lib/agent-report.js +233 -0
- package/dist/lib/agent-report.js.map +1 -0
- package/dist/lib/authorize.d.ts +3 -0
- package/dist/lib/authorize.d.ts.map +1 -0
- package/dist/lib/authorize.js +67 -0
- package/dist/lib/authorize.js.map +1 -0
- package/dist/lib/branches.d.ts +22 -0
- package/dist/lib/branches.d.ts.map +1 -0
- package/dist/lib/branches.js +82 -0
- package/dist/lib/branches.js.map +1 -0
- package/dist/lib/claim.d.ts +22 -0
- package/dist/lib/claim.d.ts.map +1 -0
- package/dist/lib/claim.js +129 -0
- package/dist/lib/claim.js.map +1 -0
- package/dist/lib/completion.d.ts +5 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +63 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/deployments.d.ts +21 -0
- package/dist/lib/deployments.d.ts.map +1 -0
- package/dist/lib/deployments.js +104 -0
- package/dist/lib/deployments.js.map +1 -0
- package/dist/lib/event-handler.d.ts +74 -0
- package/dist/lib/event-handler.d.ts.map +1 -0
- package/dist/lib/event-handler.js +1002 -0
- package/dist/lib/event-handler.js.map +1 -0
- package/dist/lib/events.d.ts +72 -0
- package/dist/lib/events.d.ts.map +1 -0
- package/dist/lib/events.js +3 -0
- package/dist/lib/events.js.map +1 -0
- package/dist/lib/gh-cli-client.d.ts +46 -0
- package/dist/lib/gh-cli-client.d.ts.map +1 -0
- package/dist/lib/gh-cli-client.js +260 -0
- package/dist/lib/gh-cli-client.js.map +1 -0
- package/dist/lib/git.d.ts +42 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +247 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/github-client.d.ts +98 -0
- package/dist/lib/github-client.d.ts.map +1 -0
- package/dist/lib/github-client.js +3 -0
- package/dist/lib/github-client.js.map +1 -0
- package/dist/lib/github.d.ts +82 -0
- package/dist/lib/github.d.ts.map +1 -0
- package/dist/lib/github.js +202 -0
- package/dist/lib/github.js.map +1 -0
- package/dist/lib/issue-file.d.ts +15 -0
- package/dist/lib/issue-file.d.ts.map +1 -0
- package/dist/lib/issue-file.js +84 -0
- package/dist/lib/issue-file.js.map +1 -0
- package/dist/lib/labels.d.ts +14 -0
- package/dist/lib/labels.d.ts.map +1 -0
- package/dist/lib/labels.js +70 -0
- package/dist/lib/labels.js.map +1 -0
- package/dist/lib/log.d.ts +11 -0
- package/dist/lib/log.d.ts.map +1 -0
- package/dist/lib/log.js +53 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/octokit-client.d.ts +112 -0
- package/dist/lib/octokit-client.d.ts.map +1 -0
- package/dist/lib/octokit-client.js +507 -0
- package/dist/lib/octokit-client.js.map +1 -0
- package/dist/lib/preview-verify.d.ts +48 -0
- package/dist/lib/preview-verify.d.ts.map +1 -0
- package/dist/lib/preview-verify.js +148 -0
- package/dist/lib/preview-verify.js.map +1 -0
- package/dist/lib/preview.d.ts +33 -0
- package/dist/lib/preview.d.ts.map +1 -0
- package/dist/lib/preview.js +308 -0
- package/dist/lib/preview.js.map +1 -0
- package/dist/lib/reconcile.d.ts +14 -0
- package/dist/lib/reconcile.d.ts.map +1 -0
- package/dist/lib/reconcile.js +114 -0
- package/dist/lib/reconcile.js.map +1 -0
- package/dist/lib/review.d.ts +38 -0
- package/dist/lib/review.d.ts.map +1 -0
- package/dist/lib/review.js +284 -0
- package/dist/lib/review.js.map +1 -0
- package/dist/lib/stale-prs.d.ts +31 -0
- package/dist/lib/stale-prs.d.ts.map +1 -0
- package/dist/lib/stale-prs.js +161 -0
- package/dist/lib/stale-prs.js.map +1 -0
- package/dist/lib/state-store.d.ts +23 -0
- package/dist/lib/state-store.d.ts.map +1 -0
- package/dist/lib/state-store.js +3 -0
- package/dist/lib/state-store.js.map +1 -0
- package/dist/lib/state.d.ts +23 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +57 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/lib/status-comment.d.ts +14 -0
- package/dist/lib/status-comment.d.ts.map +1 -0
- package/dist/lib/status-comment.js +195 -0
- package/dist/lib/status-comment.js.map +1 -0
- package/dist/lib/stores/file-store.d.ts +22 -0
- package/dist/lib/stores/file-store.d.ts.map +1 -0
- package/dist/lib/stores/file-store.js +172 -0
- package/dist/lib/stores/file-store.js.map +1 -0
- package/dist/lib/stores/index.d.ts +13 -0
- package/dist/lib/stores/index.d.ts.map +1 -0
- package/dist/lib/stores/index.js +20 -0
- package/dist/lib/stores/index.js.map +1 -0
- package/dist/lib/task-recovery.d.ts +22 -0
- package/dist/lib/task-recovery.d.ts.map +1 -0
- package/dist/lib/task-recovery.js +172 -0
- package/dist/lib/task-recovery.js.map +1 -0
- package/dist/lib/templates.d.ts +8 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +58 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/thread.d.ts +13 -0
- package/dist/lib/thread.d.ts.map +1 -0
- package/dist/lib/thread.js +75 -0
- package/dist/lib/thread.js.map +1 -0
- package/dist/lib/verify.d.ts +31 -0
- package/dist/lib/verify.d.ts.map +1 -0
- package/dist/lib/verify.js +90 -0
- package/dist/lib/verify.js.map +1 -0
- package/dist/lib/version.d.ts +9 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +134 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/lib/webhook.d.ts +39 -0
- package/dist/lib/webhook.d.ts.map +1 -0
- package/dist/lib/webhook.js +248 -0
- package/dist/lib/webhook.js.map +1 -0
- package/dist/lib/worker.d.ts +42 -0
- package/dist/lib/worker.d.ts.map +1 -0
- package/dist/lib/worker.js +9 -0
- package/dist/lib/worker.js.map +1 -0
- package/dist/lib/workers/index.d.ts +11 -0
- package/dist/lib/workers/index.d.ts.map +1 -0
- package/dist/lib/workers/index.js +18 -0
- package/dist/lib/workers/index.js.map +1 -0
- package/dist/lib/workers/subprocess.d.ts +8 -0
- package/dist/lib/workers/subprocess.d.ts.map +1 -0
- package/dist/lib/workers/subprocess.js +105 -0
- package/dist/lib/workers/subprocess.js.map +1 -0
- package/dist/lib/worktree.d.ts +21 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +113 -0
- package/dist/lib/worktree.js.map +1 -0
- package/dist/types.d.ts +201 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -4
- package/templates/foundry.yml +121 -0
- package/templates/vercel-preview-url.sh +61 -0
- package/README.md +0 -3
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.agentLogPath = agentLogPath;
|
|
37
|
+
exports.buildAgentCompletedEvent = buildAgentCompletedEvent;
|
|
38
|
+
/**
|
|
39
|
+
* Agent completion — turn an exited agent into an AgentCompletedEvent.
|
|
40
|
+
*
|
|
41
|
+
* Shared by the Poller (which discovers exits by polling worker handles) and
|
|
42
|
+
* `foundry action` (which waits on the subprocess directly). Both must
|
|
43
|
+
* classify the outcome identically, so the logic lives here once.
|
|
44
|
+
*/
|
|
45
|
+
const path = __importStar(require("node:path"));
|
|
46
|
+
const state = __importStar(require("./state.js"));
|
|
47
|
+
const agentOutput = __importStar(require("./agent-output.js"));
|
|
48
|
+
const agent_report_js_1 = require("./agent-report.js");
|
|
49
|
+
const branches_js_1 = require("./branches.js");
|
|
50
|
+
function agentLogPath(config, issue) {
|
|
51
|
+
return path.join(state.getLogDir(config.repo, issue), 'agent.log');
|
|
52
|
+
}
|
|
53
|
+
function buildAgentCompletedEvent(config, repoDir, task, exitCode) {
|
|
54
|
+
const logPath = agentLogPath(config, task.issue);
|
|
55
|
+
const baseBranch = (0, branches_js_1.resolveBaseBranch)(config, repoDir);
|
|
56
|
+
const outcome = agentOutput.determineOutcome(logPath, task.worktree, baseBranch, {
|
|
57
|
+
permissionMode: task.permission_mode,
|
|
58
|
+
exitCode,
|
|
59
|
+
reportFile: (0, agent_report_js_1.reportFilePath)(state.getTaskStateDir(config.repo, task.issue)),
|
|
60
|
+
});
|
|
61
|
+
return { type: 'agent_completed', task, outcome };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,oCAEC;AAED,4DAcC;AAjCD;;;;;;GAMG;AACH,gDAAkC;AAClC,kDAAoC;AACpC,+DAAiD;AACjD,uDAAmD;AAGnD,+CAAkD;AAElD,SAAgB,YAAY,CAAC,MAAqB,EAAE,KAAa;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,wBAAwB,CACtC,MAAqB,EACrB,OAAe,EACf,IAAe,EACf,QAAwB;IAExB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAA,+BAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC/E,cAAc,EAAE,IAAI,CAAC,eAAe;QACpC,QAAQ;QACR,UAAU,EAAE,IAAA,gCAAc,EAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3E,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface CreateDeploymentOpts {
|
|
2
|
+
repo: string;
|
|
3
|
+
ref: string;
|
|
4
|
+
environment: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
transientEnvironment?: boolean;
|
|
7
|
+
productionEnvironment?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function createDeployment(opts: CreateDeploymentOpts): Promise<{
|
|
10
|
+
id: number;
|
|
11
|
+
} | null>;
|
|
12
|
+
export interface CreateDeploymentStatusOpts {
|
|
13
|
+
repo: string;
|
|
14
|
+
deploymentId: number;
|
|
15
|
+
state: 'pending' | 'success' | 'error' | 'failure' | 'inactive' | 'in_progress';
|
|
16
|
+
environmentUrl?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
autoInactive?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function createDeploymentStatus(opts: CreateDeploymentStatusOpts): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=deployments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/lib/deployments.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAsBjG;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB5F"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createDeployment = createDeployment;
|
|
37
|
+
exports.createDeploymentStatus = createDeploymentStatus;
|
|
38
|
+
/**
|
|
39
|
+
* GitHub Deployments API — creates deployments and deployment statuses.
|
|
40
|
+
*
|
|
41
|
+
* Uses Octokit directly (the Deployments API has no `gh` CLI equivalent).
|
|
42
|
+
* All calls are best-effort: failures are logged as warnings, never thrown.
|
|
43
|
+
*/
|
|
44
|
+
const log = __importStar(require("./log.js"));
|
|
45
|
+
function splitRepo(repo) {
|
|
46
|
+
const [owner, repoName] = repo.split('/');
|
|
47
|
+
return { owner, repo: repoName };
|
|
48
|
+
}
|
|
49
|
+
async function getOctokit(repo) {
|
|
50
|
+
try {
|
|
51
|
+
const { createOctokitInstance } = await import('./octokit-client.js');
|
|
52
|
+
const org = repo.split('/')[0];
|
|
53
|
+
return await createOctokitInstance(org);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
log.warn(`Failed to create Octokit instance for deployments: ${err.message}`);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function createDeployment(opts) {
|
|
61
|
+
const ok = await getOctokit(opts.repo);
|
|
62
|
+
if (!ok)
|
|
63
|
+
return null;
|
|
64
|
+
const { owner, repo } = splitRepo(opts.repo);
|
|
65
|
+
try {
|
|
66
|
+
const { data } = await ok.rest.repos.createDeployment({
|
|
67
|
+
owner,
|
|
68
|
+
repo,
|
|
69
|
+
ref: opts.ref,
|
|
70
|
+
environment: opts.environment,
|
|
71
|
+
description: opts.description ?? 'Foundry preview deployment',
|
|
72
|
+
transient_environment: opts.transientEnvironment ?? true,
|
|
73
|
+
production_environment: opts.productionEnvironment ?? false,
|
|
74
|
+
auto_merge: false,
|
|
75
|
+
required_contexts: [],
|
|
76
|
+
});
|
|
77
|
+
return { id: data.id };
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
log.warn(`Failed to create deployment for ${opts.repo}@${opts.ref}: ${err.message}`);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async function createDeploymentStatus(opts) {
|
|
85
|
+
const ok = await getOctokit(opts.repo);
|
|
86
|
+
if (!ok)
|
|
87
|
+
return;
|
|
88
|
+
const { owner, repo } = splitRepo(opts.repo);
|
|
89
|
+
try {
|
|
90
|
+
await ok.rest.repos.createDeploymentStatus({
|
|
91
|
+
owner,
|
|
92
|
+
repo,
|
|
93
|
+
deployment_id: opts.deploymentId,
|
|
94
|
+
state: opts.state,
|
|
95
|
+
environment_url: opts.environmentUrl,
|
|
96
|
+
description: opts.description,
|
|
97
|
+
auto_inactive: opts.autoInactive ?? true,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
log.warn(`Failed to create deployment status for deployment ${opts.deploymentId}: ${err.message}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=deployments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/lib/deployments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { FoundryConfig, TaskState, AgentOutcome } from '../types.js';
|
|
2
|
+
import type { FoundryEvent } from './events.js';
|
|
3
|
+
/** What every non-success ending tells the human. */
|
|
4
|
+
export declare const FAILED_FOOTER = "`@foundry go` to continue from the branch \u00B7 `@foundry restart` to start over";
|
|
5
|
+
export type ResumeKind = 'answer' | 'plan' | 'review' | 'go';
|
|
6
|
+
/**
|
|
7
|
+
* What a relaunched agent is told about why it is being launched again. Goes
|
|
8
|
+
* in FOUNDRY_RESUME_CONTEXT; the Claude preset's prompt includes it.
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildResumeContext(task: TaskState, humanText: string, kind: ResumeKind): string;
|
|
11
|
+
/** The PR description: what the agent says it did and what it assumed, for the reviewer. */
|
|
12
|
+
export declare function buildPRBody(task: TaskState, outcome?: AgentOutcome): string;
|
|
13
|
+
export declare class EventHandler {
|
|
14
|
+
private config;
|
|
15
|
+
private repoDir;
|
|
16
|
+
constructor(config: FoundryConfig, repoDir: string);
|
|
17
|
+
/**
|
|
18
|
+
* Environment for an agent launch: the backend's own env plus the issue
|
|
19
|
+
* file (body and the human thread), the report contract (schema + report
|
|
20
|
+
* file, with any previous launch's report cleared), and the turn cap.
|
|
21
|
+
*/
|
|
22
|
+
private launchEnv;
|
|
23
|
+
private briefFor;
|
|
24
|
+
handleEvent(event: FoundryEvent): Promise<void>;
|
|
25
|
+
private handlePRApproved;
|
|
26
|
+
private handlePRPreview;
|
|
27
|
+
/**
|
|
28
|
+
* Run `verify_preview` for a non-task PR from a throwaway checkout of its
|
|
29
|
+
* head branch. The result goes on the PR as a comment and, when the token
|
|
30
|
+
* allows, as a check run on the head SHA.
|
|
31
|
+
*/
|
|
32
|
+
private verifyPullRequestPreview;
|
|
33
|
+
private handleCommand;
|
|
34
|
+
/**
|
|
35
|
+
* `@foundry go`: start the issue if it has never been started; otherwise
|
|
36
|
+
* proceed from the branch. The agent reads the whole thread from the issue
|
|
37
|
+
* file, so the same command answers a question, approves a plan, revises a
|
|
38
|
+
* PR, or picks up a failed task. On a task whose label still says running,
|
|
39
|
+
* the job that ran it is gone (a live job would have made this one wait),
|
|
40
|
+
* so it is resumed like any other.
|
|
41
|
+
*/
|
|
42
|
+
private handleCommandGo;
|
|
43
|
+
/** `@foundry restart`: discard everything and start the issue again, in this job. */
|
|
44
|
+
private handleCommandRestart;
|
|
45
|
+
/** `@foundry stop`: stop the agent, keep the branch, mark the task failed. */
|
|
46
|
+
private handleCommandStop;
|
|
47
|
+
private startTask;
|
|
48
|
+
private handlePRMerged;
|
|
49
|
+
private handlePRReview;
|
|
50
|
+
private handleAgentCompleted;
|
|
51
|
+
/** The agent ended without finishing. The branch is kept so `go` can continue it. */
|
|
52
|
+
private handleFailedRun;
|
|
53
|
+
/**
|
|
54
|
+
* The last mile after a PR exists: deploy the preview, verify against it
|
|
55
|
+
* when `verify_preview` is configured, and only then mark the task ready
|
|
56
|
+
* for human review. A failed preview verification fails the task with the
|
|
57
|
+
* output on the issue, exactly like a failed build.
|
|
58
|
+
*/
|
|
59
|
+
private finishReadyForReview;
|
|
60
|
+
private handleCompleted;
|
|
61
|
+
private handleNeedsInput;
|
|
62
|
+
private handlePlanCompleted;
|
|
63
|
+
/**
|
|
64
|
+
* Launch the agent again on the task's branch. Sessions do not survive
|
|
65
|
+
* jobs, so this is a fresh process: the worktree is recreated from the
|
|
66
|
+
* pushed branch, the thread goes in the issue file, and why it is being
|
|
67
|
+
* launched goes in FOUNDRY_RESUME_CONTEXT. Always in auto mode: a plan has
|
|
68
|
+
* been approved or a human has asked for work.
|
|
69
|
+
*/
|
|
70
|
+
private relaunch;
|
|
71
|
+
/** A review requested changes: relaunch with the review, within the input-round cap. */
|
|
72
|
+
private resumeAgentForPR;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=event-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-handler.d.ts","sourceRoot":"","sources":["../../src/lib/event-handler.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAqB,YAAY,EAAe,MAAM,aAAa,CAAC;AAC1G,OAAO,KAAK,EACV,YAAY,EAOb,MAAM,aAAa,CAAC;AAMrB,qDAAqD;AACrD,eAAO,MAAM,aAAa,sFAAiF,CAAC;AAM5G,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAyB/F;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAW3E;AAsDD,qBAAa,YAAY;IAErB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;gBADP,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM;IAGzB;;;;OAIG;YACW,SAAS;IA4BvB,OAAO,CAAC,QAAQ;IAIV,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAmBvC,gBAAgB;YA8ChB,eAAe;IA2C7B;;;;OAIG;YACW,wBAAwB;YA0DxB,aAAa;IAW3B;;;;;;;OAOG;YACW,eAAe;IA4B7B,qFAAqF;YACvE,oBAAoB;IAwBlC,8EAA8E;YAChE,iBAAiB;YA+BjB,SAAS;YA0HT,cAAc;YAwBd,cAAc;YAad,oBAAoB;IA8BlC,qFAAqF;YACvE,eAAe;IA2B7B;;;;;OAKG;YACW,oBAAoB;YA0DpB,eAAe;YAuIf,gBAAgB;YA+ChB,mBAAmB;IAuCjC;;;;;;OAMG;YACW,QAAQ;IA2CtB,wFAAwF;YAC1E,gBAAgB;CAiC/B"}
|