@joynt/foundry 0.0.0-stage → 0.1.50
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,107 @@
|
|
|
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.runCancelled = runCancelled;
|
|
37
|
+
/**
|
|
38
|
+
* foundry cancelled — the job was cancelled; leave the issue honest.
|
|
39
|
+
*
|
|
40
|
+
* Runs from a workflow step guarded by `if: cancelled()`. The agent process
|
|
41
|
+
* is already gone. Whatever the task was doing, the issue must not stay at
|
|
42
|
+
* `state:in-progress`: that label is read as "a job is running".
|
|
43
|
+
*/
|
|
44
|
+
const fs = __importStar(require("node:fs"));
|
|
45
|
+
const config_js_1 = require("../config.js");
|
|
46
|
+
const github = __importStar(require("../lib/github.js"));
|
|
47
|
+
const preview = __importStar(require("../lib/preview.js"));
|
|
48
|
+
const statusComment = __importStar(require("../lib/status-comment.js"));
|
|
49
|
+
const labels_js_1 = require("../lib/labels.js");
|
|
50
|
+
const task_recovery_js_1 = require("../lib/task-recovery.js");
|
|
51
|
+
const worktree_js_1 = require("../lib/worktree.js");
|
|
52
|
+
const log = __importStar(require("../lib/log.js"));
|
|
53
|
+
async function runCancelled(opts) {
|
|
54
|
+
const eventName = opts.eventName ?? process.env.GITHUB_EVENT_NAME ?? '';
|
|
55
|
+
const eventPath = opts.eventPath ?? process.env.GITHUB_EVENT_PATH;
|
|
56
|
+
if (!eventPath || !fs.existsSync(eventPath)) {
|
|
57
|
+
log.warn('foundry cancelled: no event payload; nothing to clean up.');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const payload = JSON.parse(fs.readFileSync(eventPath, 'utf-8'));
|
|
61
|
+
const config = (0, config_js_1.loadConfig)();
|
|
62
|
+
const issue = (0, task_recovery_js_1.issueNumberFromPayload)(payload, config);
|
|
63
|
+
if (issue === null) {
|
|
64
|
+
log.info(`foundry cancelled: ${eventName} names no issue; nothing to clean up.`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const task = await (0, task_recovery_js_1.recoverTask)(config, (0, config_js_1.getConfigDir)(), issue);
|
|
68
|
+
if (!task) {
|
|
69
|
+
log.info(`foundry cancelled: #${issue} was never claimed; nothing to clean up.`);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// Only a task a job was actively working on needs correcting.
|
|
73
|
+
const live = task.status === 'agent-running' || task.status === 'verifying' || task.status === 'resuming';
|
|
74
|
+
if (!live) {
|
|
75
|
+
log.info(`foundry cancelled: #${issue} is ${task.status}; no live run to clean up.`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
log.warn(`Run for #${issue} was cancelled. Marking failed.`);
|
|
79
|
+
// This step runs inside the cancelled job, so the worktree is still here.
|
|
80
|
+
const preserved = (0, worktree_js_1.preserveWork)(config, task, (0, config_js_1.getConfigDir)(), 'run cancelled');
|
|
81
|
+
await (0, labels_js_1.setStateLabel)(config, issue, 'failed');
|
|
82
|
+
if (task.preview_url) {
|
|
83
|
+
try {
|
|
84
|
+
await preview.previewDown(config, task);
|
|
85
|
+
}
|
|
86
|
+
catch { }
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
await statusComment.updateStatusComment(config.repo, issue, {
|
|
90
|
+
task: { ...task, status: 'failed' },
|
|
91
|
+
message: [
|
|
92
|
+
'The run was cancelled before the agent finished.',
|
|
93
|
+
preserved.pushed ? `Work so far is on \`${task.branch}\`.` : 'Nothing was pushed.',
|
|
94
|
+
'',
|
|
95
|
+
'`@foundry go` to continue from the branch · `@foundry restart` to start over',
|
|
96
|
+
].join('\n'),
|
|
97
|
+
historyEntry: 'Run cancelled',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
try {
|
|
102
|
+
await github.addComment(config.repo, issue, `Foundry: the run was cancelled. Marked failed. (${err.message})`);
|
|
103
|
+
}
|
|
104
|
+
catch { }
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=cancelled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelled.js","sourceRoot":"","sources":["../../src/commands/cancelled.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAoJA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0GlG"}
|
|
@@ -0,0 +1,323 @@
|
|
|
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.runInit = runInit;
|
|
37
|
+
/**
|
|
38
|
+
* foundry init — scaffold .joynt-foundry.yml and create required labels.
|
|
39
|
+
*/
|
|
40
|
+
const fs = __importStar(require("node:fs"));
|
|
41
|
+
const path = __importStar(require("node:path"));
|
|
42
|
+
const yaml_1 = require("yaml");
|
|
43
|
+
const config_js_1 = require("../config.js");
|
|
44
|
+
const github = __importStar(require("../lib/github.js"));
|
|
45
|
+
const log = __importStar(require("../lib/log.js"));
|
|
46
|
+
const git = __importStar(require("../lib/git.js"));
|
|
47
|
+
const templates_js_1 = require("../lib/templates.js");
|
|
48
|
+
const LABEL_DEFS = [
|
|
49
|
+
{ name: 'state:in-progress', color: 'fbca04', description: 'Foundry is working on this issue' },
|
|
50
|
+
{ name: 'state:done', color: '006b75', description: 'Task completed by Foundry' },
|
|
51
|
+
{ name: 'state:ready-for-human-review', color: '1d76db', description: 'Ready for human review' },
|
|
52
|
+
{ name: 'state:waiting-for-input', color: '1d76db', description: 'Agent needs human input to proceed' },
|
|
53
|
+
{ name: 'state:failed', color: 'b60205', description: 'Task failed — needs human review before retry' },
|
|
54
|
+
{ name: 'state:plan-review', color: '1d76db', description: 'Agent plan awaiting human review' },
|
|
55
|
+
{ name: 'mode:plan', color: '5319e7', description: 'Agent runs in plan-only mode' },
|
|
56
|
+
{ name: 'mode:auto', color: '5319e7', description: 'Agent runs with full permissions' },
|
|
57
|
+
{ name: 'mode:default', color: '5319e7', description: 'Agent runs in step-by-step mode' },
|
|
58
|
+
];
|
|
59
|
+
async function detectRepo() {
|
|
60
|
+
try {
|
|
61
|
+
git.repoRoot(); // just to verify we're in a git repo
|
|
62
|
+
return await github.getRepoSlug();
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return 'OWNER/REPO';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function detectProjectDefaults() {
|
|
69
|
+
const cwd = process.cwd();
|
|
70
|
+
if (fs.existsSync(path.join(cwd, 'package.json'))) {
|
|
71
|
+
return {
|
|
72
|
+
detected: 'Node.js',
|
|
73
|
+
verify: ['npm run lint', 'npm run typecheck', 'npm run build', 'npm test'],
|
|
74
|
+
integration_rebuild: 'npm run build',
|
|
75
|
+
version_sources: ['package.json'],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (fs.existsSync(path.join(cwd, 'pyproject.toml'))) {
|
|
79
|
+
return {
|
|
80
|
+
detected: 'Python',
|
|
81
|
+
verify: ['python -m pytest'],
|
|
82
|
+
integration_rebuild: '',
|
|
83
|
+
version_sources: ['pyproject.toml'],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (fs.existsSync(path.join(cwd, 'Cargo.toml'))) {
|
|
87
|
+
return {
|
|
88
|
+
detected: 'Rust',
|
|
89
|
+
verify: ['cargo check', 'cargo test'],
|
|
90
|
+
integration_rebuild: 'cargo build --release',
|
|
91
|
+
version_sources: ['Cargo.toml'],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (fs.existsSync(path.join(cwd, 'go.mod'))) {
|
|
95
|
+
return {
|
|
96
|
+
detected: 'Go',
|
|
97
|
+
verify: ['go vet ./...', 'go test ./...'],
|
|
98
|
+
integration_rebuild: 'go build ./...',
|
|
99
|
+
version_sources: [],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
detected: 'unknown',
|
|
104
|
+
verify: [],
|
|
105
|
+
integration_rebuild: '',
|
|
106
|
+
version_sources: [],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// ── Default config (language-agnostic) ──────────────────────────────────
|
|
110
|
+
const DEFAULT_CONFIG = {
|
|
111
|
+
repo: '',
|
|
112
|
+
labels: {
|
|
113
|
+
in_progress: 'state:in-progress',
|
|
114
|
+
done: 'state:done',
|
|
115
|
+
ready_for_review: 'state:ready-for-human-review',
|
|
116
|
+
waiting_for_input: 'state:waiting-for-input',
|
|
117
|
+
failed: 'state:failed',
|
|
118
|
+
plan_review: 'state:plan-review',
|
|
119
|
+
},
|
|
120
|
+
mode_labels: {
|
|
121
|
+
plan: 'mode:plan',
|
|
122
|
+
auto: 'mode:auto',
|
|
123
|
+
default: 'mode:default',
|
|
124
|
+
},
|
|
125
|
+
branches: {
|
|
126
|
+
integration: 'integration',
|
|
127
|
+
production: 'main',
|
|
128
|
+
},
|
|
129
|
+
branch_template: 'feature/{issue}-{slug}',
|
|
130
|
+
worktree_base: './wts',
|
|
131
|
+
verify: [],
|
|
132
|
+
verify_preview: [],
|
|
133
|
+
integration_rebuild: '',
|
|
134
|
+
comment_triggers: {
|
|
135
|
+
go: '@foundry go',
|
|
136
|
+
restart: '@foundry restart',
|
|
137
|
+
stop: '@foundry stop',
|
|
138
|
+
},
|
|
139
|
+
version_sources: [],
|
|
140
|
+
tag_prefix: 'v',
|
|
141
|
+
default_agent_backend: 'claude-code',
|
|
142
|
+
agent_backends: {
|
|
143
|
+
'claude-code': {
|
|
144
|
+
type: 'command',
|
|
145
|
+
preset: 'claude-code',
|
|
146
|
+
},
|
|
147
|
+
command: {
|
|
148
|
+
type: 'command',
|
|
149
|
+
command: 'echo "Configure your agent command in .joynt-foundry.yml"',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
agent_label_map: {
|
|
153
|
+
'agent:claude': 'claude-code',
|
|
154
|
+
},
|
|
155
|
+
github_backend: 'octokit',
|
|
156
|
+
};
|
|
157
|
+
const CONFIG_HEADER = `# Foundry configuration. Reference:
|
|
158
|
+
# https://github.com/joyntshops/foundry/blob/main/docs/foundry/config-reference.md
|
|
159
|
+
#
|
|
160
|
+
# branches: name the branches this repo ALREADY uses. Feature work is cut from and
|
|
161
|
+
# merged into \`integration\`; nothing is renamed. Run \`foundry init\` again after
|
|
162
|
+
# editing it and the branch is created only if it does not exist.
|
|
163
|
+
# agent model: the claude-code preset runs whatever model the Claude Code account
|
|
164
|
+
# defaults to. Set env.ANTHROPIC_MODEL (opus | sonnet) on the backend to choose.
|
|
165
|
+
`;
|
|
166
|
+
async function runInit(opts) {
|
|
167
|
+
const configPath = path.join(process.cwd(), config_js_1.CONFIG_FILENAME);
|
|
168
|
+
let scaffolded = false;
|
|
169
|
+
if (fs.existsSync(configPath)) {
|
|
170
|
+
log.warn(`${config_js_1.CONFIG_FILENAME} already exists. Skipping scaffold.`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
const repo = await detectRepo();
|
|
174
|
+
const projectDefaults = detectProjectDefaults();
|
|
175
|
+
if (projectDefaults.detected !== 'unknown') {
|
|
176
|
+
log.info(`Detected ${projectDefaults.detected} project`);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
log.info('No recognized project marker found — using empty defaults');
|
|
180
|
+
}
|
|
181
|
+
const { detected: _, ...defaults } = projectDefaults;
|
|
182
|
+
const config = { ...DEFAULT_CONFIG, ...defaults, repo };
|
|
183
|
+
const yaml = (0, yaml_1.stringify)(config, { lineWidth: 120 });
|
|
184
|
+
fs.writeFileSync(configPath, CONFIG_HEADER + yaml, 'utf-8');
|
|
185
|
+
scaffolded = true;
|
|
186
|
+
log.success(`Created ${config_js_1.CONFIG_FILENAME}`);
|
|
187
|
+
}
|
|
188
|
+
writeIssueTemplate();
|
|
189
|
+
writeWorkflow((0, config_js_1.loadConfigSafe)()?.branches?.production ?? 'main');
|
|
190
|
+
// Auto-commit on empty repo so we have a HEAD for branch creation
|
|
191
|
+
if (!git.hasCommits()) {
|
|
192
|
+
log.info('Empty repository detected — creating initial commit...');
|
|
193
|
+
git.commitAll('chore: initialize foundry config');
|
|
194
|
+
log.success('Created initial commit with .joynt-foundry.yml');
|
|
195
|
+
}
|
|
196
|
+
// Create the integration branch if it doesn't exist. Not on a fresh scaffold:
|
|
197
|
+
// the file just written names `integration` by default, and a repo that already
|
|
198
|
+
// integrates on another branch (test, develop) must say so before a branch is
|
|
199
|
+
// pushed in its name.
|
|
200
|
+
const integration = (0, config_js_1.loadConfigSafe)()?.branches?.integration ?? 'integration';
|
|
201
|
+
if (scaffolded) {
|
|
202
|
+
log.info(`Set branches.integration in ${config_js_1.CONFIG_FILENAME} to the branch feature work is merged into,`);
|
|
203
|
+
log.info(`then run \`foundry init\` again; the branch is created only if it does not exist.`);
|
|
204
|
+
}
|
|
205
|
+
else if (!git.remoteBranchExists(integration) && !git.branchExists(integration)) {
|
|
206
|
+
log.info(`Creating ${integration} branch...`);
|
|
207
|
+
try {
|
|
208
|
+
const prev = git.currentBranch();
|
|
209
|
+
git.createBranch(integration, 'HEAD');
|
|
210
|
+
git.push(integration);
|
|
211
|
+
git.checkout(prev);
|
|
212
|
+
log.success(`Created and pushed ${integration} branch`);
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
log.warn(`Failed to create ${integration} branch: ${err}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
log.info(`Integration branch ${integration} already exists.`);
|
|
220
|
+
}
|
|
221
|
+
if (!opts.skipLabels) {
|
|
222
|
+
const repo = await detectRepo();
|
|
223
|
+
const config = (0, config_js_1.loadConfig)();
|
|
224
|
+
// Derive agent labels dynamically when 2+ entries exist in agent_label_map
|
|
225
|
+
const allLabels = [...LABEL_DEFS];
|
|
226
|
+
const agentMap = config.agent_label_map ?? {};
|
|
227
|
+
if (Object.keys(agentMap).length >= 2) {
|
|
228
|
+
for (const labelName of Object.keys(agentMap)) {
|
|
229
|
+
allLabels.push({ name: labelName, color: 'c5def5', description: `Use ${agentMap[labelName]} agent backend` });
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
if (opts.cleanLabels) {
|
|
233
|
+
log.info('Removing non-Foundry labels...');
|
|
234
|
+
const foundryNames = new Set(allLabels.map(l => l.name));
|
|
235
|
+
const existing = await github.listLabels(repo);
|
|
236
|
+
for (const name of existing) {
|
|
237
|
+
if (!foundryNames.has(name)) {
|
|
238
|
+
try {
|
|
239
|
+
await github.deleteLabel(repo, name);
|
|
240
|
+
log.success(` Deleted label: ${name}`);
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
log.warn(` Failed to delete label ${name}: ${err}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
log.info('Creating GitHub labels...');
|
|
249
|
+
for (const label of allLabels) {
|
|
250
|
+
try {
|
|
251
|
+
await github.ensureLabel(repo, label.name, label.color, label.description);
|
|
252
|
+
log.success(` Label: ${label.name}`);
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
log.warn(` Failed to create label ${label.name}: ${err}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
log.info('');
|
|
260
|
+
log.info('Next steps:');
|
|
261
|
+
log.info(` 1. Review ${config_js_1.CONFIG_FILENAME}: branches, verify commands, the model`);
|
|
262
|
+
log.info(' 2. Add the secrets: CLAUDE_CODE_OAUTH_TOKEN (claude setup-token), then');
|
|
263
|
+
log.info(' `foundry setup-bot` for FOUNDRY_APP_ID and FOUNDRY_APP_PRIVATE_KEY');
|
|
264
|
+
log.info(' 3. Commit and push; the workflow listens once it is on the default branch');
|
|
265
|
+
log.info(' 4. Open an issue and comment `@foundry go`');
|
|
266
|
+
log.info('');
|
|
267
|
+
log.info('Docs: https://github.com/joyntshops/foundry/blob/main/docs/foundry/onboarding.md');
|
|
268
|
+
}
|
|
269
|
+
const ISSUE_TEMPLATE = `---
|
|
270
|
+
name: Foundry task
|
|
271
|
+
about: A task for the coding agent. Comment "@foundry go" when it is ready to start.
|
|
272
|
+
labels: []
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## What
|
|
276
|
+
<!-- One or two sentences. What should exist when this is done? -->
|
|
277
|
+
|
|
278
|
+
## Acceptance criteria
|
|
279
|
+
<!-- Bullet points the reviewer will check. Be concrete. -->
|
|
280
|
+
-
|
|
281
|
+
|
|
282
|
+
## Constraints
|
|
283
|
+
<!-- Files or areas not to touch, conventions to follow, things to avoid. -->
|
|
284
|
+
-
|
|
285
|
+
|
|
286
|
+
## Out of scope
|
|
287
|
+
<!-- What a reasonable developer might include but should not. -->
|
|
288
|
+
-
|
|
289
|
+
|
|
290
|
+
<!--
|
|
291
|
+
Start: comment "@foundry go". Nothing happens until you do.
|
|
292
|
+
Mode: add the label mode:plan first to get a plan for approval before any code is written.
|
|
293
|
+
Every comment on this issue is given to the agent; only "@foundry go" starts it.
|
|
294
|
+
The agent decides small things itself and lists them in the PR; it asks only when an answer changes the work.
|
|
295
|
+
-->
|
|
296
|
+
`;
|
|
297
|
+
/** Scaffold the issue template that gives the agent a developer-quality brief. */
|
|
298
|
+
function writeIssueTemplate() {
|
|
299
|
+
const dir = path.join(process.cwd(), '.github', 'ISSUE_TEMPLATE');
|
|
300
|
+
const file = path.join(dir, 'foundry-task.md');
|
|
301
|
+
if (fs.existsSync(file))
|
|
302
|
+
return;
|
|
303
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
304
|
+
fs.writeFileSync(file, ISSUE_TEMPLATE, 'utf-8');
|
|
305
|
+
log.success('Created .github/ISSUE_TEMPLATE/foundry-task.md');
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Write .github/workflows/foundry.yml from the shipped template, with the
|
|
309
|
+
* configured production branch in the PR filter. Never overwrites: a repo that
|
|
310
|
+
* has tuned its workflow keeps it.
|
|
311
|
+
*/
|
|
312
|
+
function writeWorkflow(production) {
|
|
313
|
+
const dir = path.join(process.cwd(), '.github', 'workflows');
|
|
314
|
+
const file = path.join(dir, 'foundry.yml');
|
|
315
|
+
if (fs.existsSync(file)) {
|
|
316
|
+
log.info('.github/workflows/foundry.yml already exists; left as is.');
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
320
|
+
fs.writeFileSync(file, (0, templates_js_1.renderWorkflow)((0, templates_js_1.readTemplate)('foundry.yml'), { production }), 'utf-8');
|
|
321
|
+
log.success('Created .github/workflows/foundry.yml');
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AA4CA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtE"}
|
|
@@ -0,0 +1,108 @@
|
|
|
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.runPreviewUp = runPreviewUp;
|
|
37
|
+
exports.runPreviewDown = runPreviewDown;
|
|
38
|
+
exports.runPreviewStatus = runPreviewStatus;
|
|
39
|
+
/**
|
|
40
|
+
* foundry preview — manage a task's preview environment by hand.
|
|
41
|
+
*
|
|
42
|
+
* foundry preview up <issue> — trigger the preview deploy
|
|
43
|
+
* foundry preview down <issue> — tear the preview down
|
|
44
|
+
* foundry preview status <issue> — show URL, deployment id, state
|
|
45
|
+
*
|
|
46
|
+
* The task is rebuilt from GitHub when there is no local state, so these
|
|
47
|
+
* work from any checkout of the repo.
|
|
48
|
+
*/
|
|
49
|
+
const config_js_1 = require("../config.js");
|
|
50
|
+
const state = __importStar(require("../lib/state.js"));
|
|
51
|
+
const preview = __importStar(require("../lib/preview.js"));
|
|
52
|
+
const task_recovery_js_1 = require("../lib/task-recovery.js");
|
|
53
|
+
const log = __importStar(require("../lib/log.js"));
|
|
54
|
+
async function findTask(issueArg) {
|
|
55
|
+
const config = (0, config_js_1.loadConfigSafe)();
|
|
56
|
+
if (!config) {
|
|
57
|
+
log.error('No .joynt-foundry.yml found. Run from the repo root.');
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const issueNum = parseInt(issueArg, 10);
|
|
61
|
+
if (isNaN(issueNum)) {
|
|
62
|
+
log.error(`Invalid issue number: ${issueArg}`);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
if (!config.preview) {
|
|
66
|
+
log.error('No `preview` section in .joynt-foundry.yml.');
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const task = state.getTask(config.repo, issueNum) ?? await (0, task_recovery_js_1.recoverTask)(config, (0, config_js_1.getConfigDir)(), issueNum);
|
|
70
|
+
if (!task) {
|
|
71
|
+
log.error(`#${issueNum} has never been claimed by Foundry (no claim comment).`);
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return { config, task };
|
|
75
|
+
}
|
|
76
|
+
async function runPreviewUp(issueArg) {
|
|
77
|
+
const ctx = await findTask(issueArg);
|
|
78
|
+
if (!ctx)
|
|
79
|
+
return;
|
|
80
|
+
log.info(`Triggering preview up for #${ctx.task.issue}...`);
|
|
81
|
+
await preview.previewUp(ctx.config, ctx.task);
|
|
82
|
+
log.success(`Preview up complete for #${ctx.task.issue}.`);
|
|
83
|
+
}
|
|
84
|
+
async function runPreviewDown(issueArg) {
|
|
85
|
+
const ctx = await findTask(issueArg);
|
|
86
|
+
if (!ctx)
|
|
87
|
+
return;
|
|
88
|
+
if (!ctx.task.preview_url) {
|
|
89
|
+
log.warn(`No preview URL found for #${ctx.task.issue}. Nothing to tear down.`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
log.info(`Tearing down preview for #${ctx.task.issue}...`);
|
|
93
|
+
await preview.previewDown(ctx.config, ctx.task);
|
|
94
|
+
log.success(`Preview down complete for #${ctx.task.issue}.`);
|
|
95
|
+
}
|
|
96
|
+
async function runPreviewStatus(issueArg) {
|
|
97
|
+
const ctx = await findTask(issueArg);
|
|
98
|
+
if (!ctx)
|
|
99
|
+
return;
|
|
100
|
+
const status = preview.getPreviewStatus(ctx.config, ctx.task);
|
|
101
|
+
console.log('');
|
|
102
|
+
console.log(` Issue: #${ctx.task.issue}`);
|
|
103
|
+
console.log(` Preview URL: ${status.url ?? '—'}`);
|
|
104
|
+
console.log(` Deployment ID: ${status.deploymentId ?? '—'}`);
|
|
105
|
+
console.log(` State: ${status.state}`);
|
|
106
|
+
console.log('');
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"AAaA,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDhE"}
|