jonah-fleet 1.31.5 → 1.31.7
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/CHANGELOG.md +25 -6
- package/dist/index.js +230 -34
- package/dist/lib/daemon.d.ts +73 -11
- package/dist/lib/daemon.d.ts.map +1 -1
- package/dist/lib/presets.d.ts.map +1 -1
- package/dist/lib/runner.d.ts +8 -1
- package/dist/lib/runner.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/prompts/ORCHESTRATION.md +1 -1
- package/templates/prompts/autowork.md +4 -4
- package/templates/prompts/peer-review.md +2 -2
- package/templates/workflows/trigger-review-routine.yml +11 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,31 @@ All notable changes to `jonah-fleet` will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.31.7](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.31.6...v1.31.7) (2026-10-03)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **peer-review,runner:** mention target PR with native GitHub links in run logs ([#599](https://github.com/Jonah-Projects/jonah-fleet/issues/599)) ([e22a1fb](https://github.com/Jonah-Projects/jonah-fleet/commit/e22a1fb42141b3748633289d9ac9582a70ffe631))
|
|
14
|
+
|
|
15
|
+
## [Unreleased] - 2026-10-03
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* **runner,daemon:** scope skill discovery by routine to eliminate context bloat, add fast-path merge mode for approved PRs with green CI, and calibrate `peer-review` and `optimizer` to `gemini-3.8-flash-medium`
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
* **daemon:** persist evaluated PR review states and failure cooldowns across watchdog cycles in `daemon.json` and filter out already-reviewed commits in `filterReviewablePRs` to prevent repetitive re-review loops
|
|
24
|
+
* **peer-review,prompts,runner:** mention target PR with native GitHub links instead of backticked plain text in peer review run logs, milestone cards, and routine issue initialization
|
|
25
|
+
|
|
26
|
+
## [1.31.6](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.31.5...v1.31.6) (2026-10-03)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
* **daemon:** persist evaluated PR review state and filter out already-reviewed commits ([#601](https://github.com/Jonah-Projects/jonah-fleet/issues/601)) ([37d6b01](https://github.com/Jonah-Projects/jonah-fleet/commit/37d6b01f48d9105be15e7da94414208d8b80b20e))
|
|
32
|
+
|
|
8
33
|
## [1.31.5](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.31.4...v1.31.5) (2026-10-02)
|
|
9
34
|
|
|
10
35
|
|
|
@@ -33,12 +58,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
33
58
|
|
|
34
59
|
* **runner,daemon:** add startup transient 503 retry and exempt from PR failure cooldown ([#575](https://github.com/Jonah-Projects/jonah-fleet/issues/575)) ([c6f37eb](https://github.com/Jonah-Projects/jonah-fleet/commit/c6f37ebd4bc7072f267c77c42eba255aa71b2d78))
|
|
35
60
|
|
|
36
|
-
## [Unreleased] - 2026-10-02
|
|
37
|
-
|
|
38
|
-
### Bug Fixes
|
|
39
|
-
|
|
40
|
-
* **daemon,terminal-card:** classify upstream ecosystem radar digests and `needs-attention` issues as human/maintainer-gated in backlog preflight triage, preventing repetitive autowork scan looping on informational digests
|
|
41
|
-
|
|
42
61
|
## [1.31.1](https://github.com/Jonah-Projects/jonah-fleet/compare/v1.31.0...v1.31.1) (2026-10-01)
|
|
43
62
|
|
|
44
63
|
|
package/dist/index.js
CHANGED
|
@@ -15,8 +15,20 @@ import path2 from "path";
|
|
|
15
15
|
import fs from "fs";
|
|
16
16
|
import path from "path";
|
|
17
17
|
import { fileURLToPath } from "url";
|
|
18
|
+
var DEFAULT_ROUTINE_MODELS = {
|
|
19
|
+
autowork: "gemini-3.8-flash-high",
|
|
20
|
+
"peer-review": "gemini-3.8-flash-medium",
|
|
21
|
+
optimizer: "gemini-3.8-flash-medium",
|
|
22
|
+
"issues-housekeeping": "gemini-3.8-flash-medium",
|
|
23
|
+
"dependency-update-security-check": "gemini-3.8-flash-medium",
|
|
24
|
+
"product-planning": "gemini-3.8-flash-high",
|
|
25
|
+
"analytics-review": "gemini-3.8-flash-medium",
|
|
26
|
+
"design-review": "gemini-3.8-flash-high"
|
|
27
|
+
};
|
|
18
28
|
var DEFAULT_MODELS_CONFIG = {
|
|
19
29
|
default: "gemini-3.8-flash-high",
|
|
30
|
+
"peer-review": "gemini-3.8-flash-medium",
|
|
31
|
+
optimizer: "gemini-3.8-flash-medium",
|
|
20
32
|
"issues-housekeeping": "gemini-3.8-flash-medium",
|
|
21
33
|
"dependency-update-security-check": "gemini-3.8-flash-medium",
|
|
22
34
|
"analytics-review": "gemini-3.8-flash-medium"
|
|
@@ -4500,14 +4512,23 @@ function buildAgyArgs(prompt, model, printTimeout) {
|
|
|
4500
4512
|
"--dangerously-skip-permissions"
|
|
4501
4513
|
];
|
|
4502
4514
|
}
|
|
4503
|
-
|
|
4515
|
+
var ROUTINE_RELEVANT_SKILLS = {
|
|
4516
|
+
"peer-review": ["code-review", "resolving-merge-conflicts", "tdd"],
|
|
4517
|
+
autowork: ["tdd", "resolving-merge-conflicts", "diagnosing-bugs", "codebase-design"],
|
|
4518
|
+
optimizer: ["code-review", "codebase-design", "writing-for-agents"]
|
|
4519
|
+
};
|
|
4520
|
+
function discoverSkillsPrompt(targetDir, routine) {
|
|
4504
4521
|
const skillsDir = path13.join(targetDir, ".agents", "skills");
|
|
4505
4522
|
if (!fs13.existsSync(skillsDir)) return "";
|
|
4523
|
+
const relevantList = routine ? ROUTINE_RELEVANT_SKILLS[routine] : void 0;
|
|
4506
4524
|
let skillsPrompt = "";
|
|
4507
4525
|
try {
|
|
4508
4526
|
const entries = fs13.readdirSync(skillsDir, { withFileTypes: true });
|
|
4509
4527
|
for (const entry of entries) {
|
|
4510
4528
|
if (entry.isDirectory()) {
|
|
4529
|
+
if (relevantList && !relevantList.includes(entry.name)) {
|
|
4530
|
+
continue;
|
|
4531
|
+
}
|
|
4511
4532
|
const skillPath = path13.join(".agents", "skills", entry.name, "SKILL.md");
|
|
4512
4533
|
const fullPath = path13.join(targetDir, skillPath);
|
|
4513
4534
|
if (fs13.existsSync(fullPath)) {
|
|
@@ -4520,11 +4541,14 @@ function discoverSkillsPrompt(targetDir) {
|
|
|
4520
4541
|
return skillsPrompt;
|
|
4521
4542
|
}
|
|
4522
4543
|
function buildRoutinePrompt(targetDir, routine, options = {}) {
|
|
4523
|
-
const skillsPrompt = discoverSkillsPrompt(targetDir);
|
|
4524
|
-
const promptFile = `.github/prompts/${routine}.md`;
|
|
4525
4544
|
const repoContext = `Working repository is located at ${targetDir}. All git, gh, and workspace commands must execute strictly within this repository.`;
|
|
4526
4545
|
const logPrompt = options.routineIssueNumber ? ` Tracking run log issue: #${options.routineIssueNumber}.` : "";
|
|
4527
4546
|
const headlessGuardrail = ` Execution Guardrail: You are executing in a headless autonomous session. You MUST NEVER call schedule or yield your turn with plain text to wait on background tasks or verification checks. If a verification command (tests, type-check, lint) runs in the background, inspect its completion with manage_task(Action='status') or manage_subagents(Action='list') (status polling with these tools is explicitly exempted from loop guard circuit breakers), or execute commands with sufficient WaitMsBeforeAsync (up to 10000 ms). DO NOT busy-wait by repeatedly calling read tools (such as view_file) on unchanged files to pass time while waiting, as calling non-polling tools with identical parameters will trip the loop circuit breaker. Read-only status commands (gh run view, gh pr view, gh pr checks, git status) are also exempted from loop guard repetition limits. Never stop calling tools or yield your turn until the routine's terminal Definition of Done is fully reached.`;
|
|
4547
|
+
if (routine === "peer-review" && options.pr && options.fastPathMerge) {
|
|
4548
|
+
return `You are the Peer Review routine for this repository. ${repoContext} Fast-Path Merge Mode: PR #${options.pr} has already received clean code review approval and remote CI has passed. Verify final PR status with gh pr checks ${options.pr} and execute the merge immediately: gh pr merge ${options.pr} --squash --delete-branch. Post the final merge confirmation or milestone card to conclude.${logPrompt}${headlessGuardrail}`;
|
|
4549
|
+
}
|
|
4550
|
+
const skillsPrompt = discoverSkillsPrompt(targetDir, routine);
|
|
4551
|
+
const promptFile = `.github/prompts/${routine}.md`;
|
|
4528
4552
|
if (routine === "autowork") {
|
|
4529
4553
|
if (options.issue) {
|
|
4530
4554
|
return `You are the Autowork routine for this repository. ${repoContext} Read and follow the instructions in ${promptFile} exactly. ${skillsPrompt}Your target is issue #${options.issue}. You are in Targeted mode: work issue #${options.issue} directly, ahead of Phase 1 convergence and priority scan.${logPrompt}${headlessGuardrail}`;
|
|
@@ -4541,22 +4565,31 @@ function buildRoutinePrompt(targetDir, routine, options = {}) {
|
|
|
4541
4565
|
}
|
|
4542
4566
|
function tryCreateLocalRunIssue(cwd, routine, timestamp, targetLabel, hostname) {
|
|
4543
4567
|
try {
|
|
4544
|
-
const title = `[${routine}] run ${timestamp} (local)`;
|
|
4568
|
+
const title = targetLabel && targetLabel !== routine ? `[${routine}] run ${timestamp} (${targetLabel})` : `[${routine}] run ${timestamp} (local)`;
|
|
4569
|
+
const formattedTarget = targetLabel.includes("#") ? targetLabel : `\`${targetLabel}\``;
|
|
4545
4570
|
const body = `### Autonomous Routine Execution in Progress (runner:local)
|
|
4546
4571
|
- **Routine**: \`${routine}\`
|
|
4547
4572
|
- **Timestamp**: \`${timestamp}\`
|
|
4548
|
-
- **Target**:
|
|
4573
|
+
- **Target**: ${formattedTarget}
|
|
4549
4574
|
- **Host**: \`${hostname}\`
|
|
4550
4575
|
|
|
4551
4576
|
_Running via Jonah Fleet CLI runner._`;
|
|
4552
4577
|
const labels = `routine-log,routine:${routine},status:running,runner:local`;
|
|
4553
|
-
const
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4578
|
+
const tmpFile = path13.join(os2.tmpdir(), `jonah-fleet-run-issue-${Date.now()}.md`);
|
|
4579
|
+
fs13.writeFileSync(tmpFile, body, "utf8");
|
|
4580
|
+
try {
|
|
4581
|
+
const out = execSync2(`gh issue create --title ${JSON.stringify(title)} --body-file ${JSON.stringify(tmpFile)} --label ${JSON.stringify(labels)}`, {
|
|
4582
|
+
cwd,
|
|
4583
|
+
encoding: "utf8",
|
|
4584
|
+
stdio: ["ignore", "pipe", "ignore"]
|
|
4585
|
+
}).trim();
|
|
4586
|
+
const match = out.match(/(\d+)$/);
|
|
4587
|
+
return match ? parseInt(match[1], 10) : void 0;
|
|
4588
|
+
} finally {
|
|
4589
|
+
if (fs13.existsSync(tmpFile)) {
|
|
4590
|
+
fs13.unlinkSync(tmpFile);
|
|
4591
|
+
}
|
|
4592
|
+
}
|
|
4560
4593
|
} catch {
|
|
4561
4594
|
return void 0;
|
|
4562
4595
|
}
|
|
@@ -4937,7 +4970,7 @@ async function preserveUncommittedWork(worktreePath, routine) {
|
|
|
4937
4970
|
async function runLocalRoutine(options) {
|
|
4938
4971
|
const targetDir = path13.resolve(options.targetDir);
|
|
4939
4972
|
const routine = options.routine;
|
|
4940
|
-
const model = options.model || "gemini-3.8-flash-
|
|
4973
|
+
const model = options.model || DEFAULT_ROUTINE_MODELS[routine] || "gemini-3.8-flash-medium";
|
|
4941
4974
|
const printTimeout = options.printTimeout || "30m";
|
|
4942
4975
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
4943
4976
|
const hostname = os2.hostname();
|
|
@@ -4969,7 +5002,8 @@ async function runLocalRoutine(options) {
|
|
|
4969
5002
|
const prompt = buildRoutinePrompt(executionDir, routine, {
|
|
4970
5003
|
issue: options.issue,
|
|
4971
5004
|
pr: options.pr,
|
|
4972
|
-
routineIssueNumber
|
|
5005
|
+
routineIssueNumber,
|
|
5006
|
+
fastPathMerge: options.fastPathMerge
|
|
4973
5007
|
});
|
|
4974
5008
|
if (options.dryRun) {
|
|
4975
5009
|
return {
|
|
@@ -5947,6 +5981,15 @@ function isDaemonRunning(repoRoot) {
|
|
|
5947
5981
|
return false;
|
|
5948
5982
|
}
|
|
5949
5983
|
}
|
|
5984
|
+
function isBotLogin(login) {
|
|
5985
|
+
if (!login) return false;
|
|
5986
|
+
const l = login.toLowerCase().trim();
|
|
5987
|
+
const configuredBot = process.env.AGENT_BOT_LOGIN?.toLowerCase().replace(/^@/, "");
|
|
5988
|
+
if (configuredBot && l === configuredBot) {
|
|
5989
|
+
return true;
|
|
5990
|
+
}
|
|
5991
|
+
return l.endsWith("[bot]") || l.endsWith("-bot") || l.endsWith("_bot") || l === "github-actions" || l === "github-actions[bot]" || l === "jonah-fleet-bot";
|
|
5992
|
+
}
|
|
5950
5993
|
function isPRCiPending(pr) {
|
|
5951
5994
|
if (!pr.statusCheckRollup || !Array.isArray(pr.statusCheckRollup) || pr.statusCheckRollup.length === 0) {
|
|
5952
5995
|
return false;
|
|
@@ -5961,33 +6004,142 @@ function isPRCiPending(pr) {
|
|
|
5961
6004
|
return false;
|
|
5962
6005
|
});
|
|
5963
6006
|
}
|
|
6007
|
+
function isPRCiGreen(pr) {
|
|
6008
|
+
if (!pr.statusCheckRollup || !Array.isArray(pr.statusCheckRollup) || pr.statusCheckRollup.length === 0) {
|
|
6009
|
+
return false;
|
|
6010
|
+
}
|
|
6011
|
+
if (isPRCiPending(pr)) {
|
|
6012
|
+
return false;
|
|
6013
|
+
}
|
|
6014
|
+
return pr.statusCheckRollup.every((check) => {
|
|
6015
|
+
const conclusion = (check.conclusion || "").toUpperCase();
|
|
6016
|
+
const state = (check.state || "").toUpperCase();
|
|
6017
|
+
if (conclusion === "SUCCESS" || conclusion === "NEUTRAL" || conclusion === "SKIPPED") {
|
|
6018
|
+
return true;
|
|
6019
|
+
}
|
|
6020
|
+
if (state === "SUCCESS") {
|
|
6021
|
+
return true;
|
|
6022
|
+
}
|
|
6023
|
+
return false;
|
|
6024
|
+
});
|
|
6025
|
+
}
|
|
6026
|
+
function isPRCiFailed(pr) {
|
|
6027
|
+
if (!pr.statusCheckRollup || !Array.isArray(pr.statusCheckRollup) || pr.statusCheckRollup.length === 0) {
|
|
6028
|
+
return false;
|
|
6029
|
+
}
|
|
6030
|
+
return pr.statusCheckRollup.some((check) => {
|
|
6031
|
+
const conclusion = (check.conclusion || "").toUpperCase();
|
|
6032
|
+
const state = (check.state || "").toUpperCase();
|
|
6033
|
+
return conclusion === "FAILURE" || conclusion === "TIMED_OUT" || conclusion === "CANCELLED" || state === "FAILURE" || state === "ERROR";
|
|
6034
|
+
});
|
|
6035
|
+
}
|
|
6036
|
+
function isPRApproved(pr) {
|
|
6037
|
+
if (pr.reviewDecision?.toUpperCase() === "APPROVED") return true;
|
|
6038
|
+
if (pr.reviews && Array.isArray(pr.reviews)) {
|
|
6039
|
+
const hasApproved = pr.reviews.some((r) => {
|
|
6040
|
+
const state = (r.state || "").toUpperCase();
|
|
6041
|
+
if (state === "APPROVED") return true;
|
|
6042
|
+
if (pr.headRefOid && r.commit?.oid === pr.headRefOid && /Approved for squash-merge/i.test(r.body || "")) {
|
|
6043
|
+
return true;
|
|
6044
|
+
}
|
|
6045
|
+
return false;
|
|
6046
|
+
});
|
|
6047
|
+
if (hasApproved) return true;
|
|
6048
|
+
}
|
|
6049
|
+
return false;
|
|
6050
|
+
}
|
|
6051
|
+
function getRecord(record, key) {
|
|
6052
|
+
if (!record) return void 0;
|
|
6053
|
+
if (record instanceof Map) return record.get(key);
|
|
6054
|
+
return record[key] ?? record[String(key)];
|
|
6055
|
+
}
|
|
6056
|
+
function isPRAlreadyEvaluated(pr, options = {}) {
|
|
6057
|
+
const headOid = pr.headRefOid;
|
|
6058
|
+
const prNum = pr.number;
|
|
6059
|
+
const cooldown = getRecord(options.failureCooldowns, prNum);
|
|
6060
|
+
if (cooldown) {
|
|
6061
|
+
const cooldownDurationMs = options.cooldownDurationMs ?? 15 * 60 * 1e3;
|
|
6062
|
+
if (Date.now() - cooldown.failedAt < cooldownDurationMs) {
|
|
6063
|
+
return true;
|
|
6064
|
+
}
|
|
6065
|
+
}
|
|
6066
|
+
const evaluatedPRs = options.evaluatedPRs;
|
|
6067
|
+
if (evaluatedPRs && headOid) {
|
|
6068
|
+
const record = getRecord(evaluatedPRs, prNum);
|
|
6069
|
+
if (record && record.headRefOid === headOid) {
|
|
6070
|
+
if (record.success) {
|
|
6071
|
+
const isGreen = isPRCiGreen(pr);
|
|
6072
|
+
const wasGreen = record.ciState === "green";
|
|
6073
|
+
if (isGreen && !wasGreen && (record.outcome === "approved" || record.outcome === "approved_pending_ci")) {
|
|
6074
|
+
return false;
|
|
6075
|
+
}
|
|
6076
|
+
return true;
|
|
6077
|
+
}
|
|
6078
|
+
}
|
|
6079
|
+
}
|
|
6080
|
+
if (headOid && pr.reviews && Array.isArray(pr.reviews)) {
|
|
6081
|
+
const botReview = pr.reviews.find(
|
|
6082
|
+
(r) => isBotLogin(r.author?.login) && r.commit?.oid === headOid
|
|
6083
|
+
);
|
|
6084
|
+
if (botReview) {
|
|
6085
|
+
const body = botReview.body || "";
|
|
6086
|
+
const state = (botReview.state || "").toUpperCase();
|
|
6087
|
+
if (state === "CHANGES_REQUESTED" || /bounce.*draft/i.test(body) || /blocking findings/i.test(body) || /needs-human/i.test(body)) {
|
|
6088
|
+
return true;
|
|
6089
|
+
}
|
|
6090
|
+
if (state === "APPROVED" || /Approved for squash-merge/i.test(body)) {
|
|
6091
|
+
if (isPRCiPending(pr) || isPRCiFailed(pr)) {
|
|
6092
|
+
return true;
|
|
6093
|
+
}
|
|
6094
|
+
if (evaluatedPRs) {
|
|
6095
|
+
const record = getRecord(evaluatedPRs, prNum);
|
|
6096
|
+
if (record && record.headRefOid === headOid && record.ciState === "green") {
|
|
6097
|
+
return true;
|
|
6098
|
+
}
|
|
6099
|
+
}
|
|
6100
|
+
} else if (state === "COMMENTED") {
|
|
6101
|
+
if (/Decision:/i.test(body) || /Findings Summary/i.test(body) || /## Standards/i.test(body)) {
|
|
6102
|
+
if (!isPRCiGreen(pr)) {
|
|
6103
|
+
return true;
|
|
6104
|
+
}
|
|
6105
|
+
}
|
|
6106
|
+
}
|
|
6107
|
+
}
|
|
6108
|
+
}
|
|
6109
|
+
return false;
|
|
6110
|
+
}
|
|
5964
6111
|
function filterReviewablePRs(prs, options = {}) {
|
|
5965
6112
|
return (prs || []).filter(
|
|
5966
|
-
(pr) => pr && typeof pr.number === "number" && !pr.headRefName?.startsWith("release-please--") && !pr.title?.startsWith("chore(main): release") && (options.allowPendingCi || !isPRCiPending(pr))
|
|
6113
|
+
(pr) => pr && typeof pr.number === "number" && !pr.headRefName?.startsWith("release-please--") && !pr.title?.startsWith("chore(main): release") && (options.allowPendingCi || !isPRCiPending(pr)) && !isPRAlreadyEvaluated(pr, options)
|
|
5967
6114
|
);
|
|
5968
6115
|
}
|
|
5969
|
-
async function getOpenReviewablePRs(repoRoot) {
|
|
6116
|
+
async function getOpenReviewablePRs(repoRoot, options = {}) {
|
|
5970
6117
|
try {
|
|
5971
6118
|
const { stdout } = await execFileAsync5(
|
|
5972
6119
|
"gh",
|
|
5973
|
-
[
|
|
6120
|
+
[
|
|
6121
|
+
"pr",
|
|
6122
|
+
"list",
|
|
6123
|
+
"--state",
|
|
6124
|
+
"open",
|
|
6125
|
+
"--draft=false",
|
|
6126
|
+
"--json",
|
|
6127
|
+
"number,headRefName,headRefOid,title,statusCheckRollup,reviews"
|
|
6128
|
+
],
|
|
5974
6129
|
{ cwd: repoRoot }
|
|
5975
6130
|
);
|
|
5976
6131
|
const prs = JSON.parse(stdout);
|
|
5977
|
-
|
|
6132
|
+
const daemonState = options.evaluatedPRs ? null : readDaemonState(repoRoot);
|
|
6133
|
+
const effectiveOptions = {
|
|
6134
|
+
...options,
|
|
6135
|
+
evaluatedPRs: options.evaluatedPRs || daemonState?.evaluatedPRs,
|
|
6136
|
+
failureCooldowns: options.failureCooldowns || daemonState?.failureCooldowns
|
|
6137
|
+
};
|
|
6138
|
+
return filterReviewablePRs(prs, effectiveOptions);
|
|
5978
6139
|
} catch {
|
|
5979
6140
|
return [];
|
|
5980
6141
|
}
|
|
5981
6142
|
}
|
|
5982
|
-
function isBotLogin(login) {
|
|
5983
|
-
if (!login) return false;
|
|
5984
|
-
const l = login.toLowerCase().trim();
|
|
5985
|
-
const configuredBot = process.env.AGENT_BOT_LOGIN?.toLowerCase().replace(/^@/, "");
|
|
5986
|
-
if (configuredBot && l === configuredBot) {
|
|
5987
|
-
return true;
|
|
5988
|
-
}
|
|
5989
|
-
return l.endsWith("[bot]") || l.endsWith("-bot") || l.endsWith("_bot") || l === "github-actions" || l === "github-actions[bot]" || l === "jonah-fleet-bot";
|
|
5990
|
-
}
|
|
5991
6143
|
function classifyBacklogIssues(issues, openPRs = []) {
|
|
5992
6144
|
const actionable = [];
|
|
5993
6145
|
const inProgress = [];
|
|
@@ -6297,6 +6449,22 @@ async function reconcileOrphanedLocalRuns(optionsOrRepoRoot) {
|
|
|
6297
6449
|
return 0;
|
|
6298
6450
|
}
|
|
6299
6451
|
}
|
|
6452
|
+
function recordPRFailure(prNum, headRefOid, failureCooldowns, state) {
|
|
6453
|
+
const prev = failureCooldowns?.get(prNum);
|
|
6454
|
+
const nextRecord = { failedAt: Date.now(), count: (prev?.count || 0) + 1 };
|
|
6455
|
+
failureCooldowns?.set(prNum, nextRecord);
|
|
6456
|
+
if (state) {
|
|
6457
|
+
if (!state.failureCooldowns) state.failureCooldowns = {};
|
|
6458
|
+
state.failureCooldowns[prNum] = nextRecord;
|
|
6459
|
+
if (!state.evaluatedPRs) state.evaluatedPRs = {};
|
|
6460
|
+
state.evaluatedPRs[prNum] = {
|
|
6461
|
+
headRefOid,
|
|
6462
|
+
evaluatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
6463
|
+
success: false,
|
|
6464
|
+
outcome: "failed"
|
|
6465
|
+
};
|
|
6466
|
+
}
|
|
6467
|
+
}
|
|
6300
6468
|
async function drainReviewQueue(drainOptions) {
|
|
6301
6469
|
const {
|
|
6302
6470
|
repoRoot,
|
|
@@ -6369,6 +6537,7 @@ async function drainReviewQueue(drainOptions) {
|
|
|
6369
6537
|
)
|
|
6370
6538
|
);
|
|
6371
6539
|
await cleanupStaleWorktrees(repoRoot);
|
|
6540
|
+
const isFastPath = isPRCiGreen(currentPR) && isPRApproved(currentPR);
|
|
6372
6541
|
const result = await runRoutine({
|
|
6373
6542
|
targetDir: repoRoot,
|
|
6374
6543
|
routine: "peer-review",
|
|
@@ -6377,6 +6546,7 @@ async function drainReviewQueue(drainOptions) {
|
|
|
6377
6546
|
model: options.model,
|
|
6378
6547
|
verbose: options.verbose,
|
|
6379
6548
|
noWorktree: false,
|
|
6549
|
+
fastPathMerge: isFastPath,
|
|
6380
6550
|
onTargetDetected: (target) => {
|
|
6381
6551
|
targetPRStr = target;
|
|
6382
6552
|
if (state) {
|
|
@@ -6428,13 +6598,25 @@ async function drainReviewQueue(drainOptions) {
|
|
|
6428
6598
|
console.log(formatPeerReviewOutcomeMessage(targetLabel, outcome, "Local"));
|
|
6429
6599
|
if (typeof prNum === "number") {
|
|
6430
6600
|
failureCooldowns?.delete(prNum);
|
|
6601
|
+
if (state) {
|
|
6602
|
+
if (!state.evaluatedPRs) state.evaluatedPRs = {};
|
|
6603
|
+
state.evaluatedPRs[prNum] = {
|
|
6604
|
+
headRefOid: currentPR.headRefOid,
|
|
6605
|
+
evaluatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
6606
|
+
success: true,
|
|
6607
|
+
outcome,
|
|
6608
|
+
ciState: isPRCiGreen(currentPR) ? "green" : isPRCiPending(currentPR) ? "pending" : "other"
|
|
6609
|
+
};
|
|
6610
|
+
if (state.failureCooldowns) {
|
|
6611
|
+
delete state.failureCooldowns[prNum];
|
|
6612
|
+
}
|
|
6613
|
+
}
|
|
6431
6614
|
}
|
|
6432
6615
|
} else {
|
|
6433
6616
|
console.warn(pc14.yellow(`\u26A0\uFE0F Local peer-review on ${targetLabel} completed with code ${result.exitCode}.
|
|
6434
6617
|
`));
|
|
6435
6618
|
if (typeof prNum === "number") {
|
|
6436
|
-
|
|
6437
|
-
failureCooldowns?.set(prNum, { failedAt: Date.now(), count: (prev?.count || 0) + 1 });
|
|
6619
|
+
recordPRFailure(prNum, currentPR.headRefOid, failureCooldowns, state);
|
|
6438
6620
|
}
|
|
6439
6621
|
}
|
|
6440
6622
|
} catch (err) {
|
|
@@ -6453,8 +6635,7 @@ async function drainReviewQueue(drainOptions) {
|
|
|
6453
6635
|
if (currentPR) {
|
|
6454
6636
|
attemptedPRNumbers.add(currentPR.number);
|
|
6455
6637
|
onAttempted?.(currentPR.number);
|
|
6456
|
-
|
|
6457
|
-
failureCooldowns?.set(currentPR.number, { failedAt: Date.now(), count: (prev?.count || 0) + 1 });
|
|
6638
|
+
recordPRFailure(currentPR.number, currentPR.headRefOid, failureCooldowns, state);
|
|
6458
6639
|
}
|
|
6459
6640
|
} finally {
|
|
6460
6641
|
if (state) {
|
|
@@ -6586,19 +6767,35 @@ async function performAutoworkScan(scanOptions) {
|
|
|
6586
6767
|
}
|
|
6587
6768
|
return { executed: true };
|
|
6588
6769
|
}
|
|
6589
|
-
|
|
6770
|
+
function initializeDaemonState(repoRoot, options = {}) {
|
|
6590
6771
|
const reviewInterval = options.reviewInterval || 3;
|
|
6591
6772
|
const autoworkInterval = options.autoworkInterval || options.interval || 30;
|
|
6592
6773
|
const routines = options.routines || ["peer-review", "autowork"];
|
|
6774
|
+
const existingState = readDaemonState(repoRoot);
|
|
6593
6775
|
const state = {
|
|
6594
6776
|
pid: process.pid,
|
|
6595
6777
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
6596
6778
|
reviewIntervalMinutes: reviewInterval,
|
|
6597
6779
|
autoworkIntervalMinutes: autoworkInterval,
|
|
6598
6780
|
routines,
|
|
6599
|
-
status: "idle"
|
|
6781
|
+
status: "idle",
|
|
6782
|
+
evaluatedPRs: existingState?.evaluatedPRs,
|
|
6783
|
+
failureCooldowns: existingState?.failureCooldowns
|
|
6600
6784
|
};
|
|
6601
6785
|
writeDaemonState(repoRoot, state);
|
|
6786
|
+
const failureCooldowns = /* @__PURE__ */ new Map();
|
|
6787
|
+
if (state.failureCooldowns) {
|
|
6788
|
+
for (const [key, val] of Object.entries(state.failureCooldowns)) {
|
|
6789
|
+
failureCooldowns.set(parseInt(key, 10), val);
|
|
6790
|
+
}
|
|
6791
|
+
}
|
|
6792
|
+
return { state, failureCooldowns };
|
|
6793
|
+
}
|
|
6794
|
+
async function runDaemonLoop(repoRoot, options = {}) {
|
|
6795
|
+
const reviewInterval = options.reviewInterval || 3;
|
|
6796
|
+
const autoworkInterval = options.autoworkInterval || options.interval || 30;
|
|
6797
|
+
const routines = options.routines || ["peer-review", "autowork"];
|
|
6798
|
+
const { state, failureCooldowns } = initializeDaemonState(repoRoot, options);
|
|
6602
6799
|
console.log(
|
|
6603
6800
|
renderFleetBanner({
|
|
6604
6801
|
command: "DAEMON",
|
|
@@ -6627,7 +6824,6 @@ async function runDaemonLoop(repoRoot, options = {}) {
|
|
|
6627
6824
|
let stopResolve;
|
|
6628
6825
|
const reviewIntervalMs = reviewInterval * 60 * 1e3;
|
|
6629
6826
|
const autoworkIntervalMs = autoworkInterval * 60 * 1e3;
|
|
6630
|
-
const failureCooldowns = /* @__PURE__ */ new Map();
|
|
6631
6827
|
const quotaCooldownMs = (options.quotaCooldownMinutes ?? 15) * 60 * 1e3;
|
|
6632
6828
|
let quotaCooldownUntil;
|
|
6633
6829
|
const handleQuotaPause = (resetInfo) => {
|
package/dist/lib/daemon.d.ts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { type BacklogTriageReport, type BacklogIssueInfo } from './terminal-card.js';
|
|
2
2
|
export type BacklogIssue = BacklogIssueInfo;
|
|
3
3
|
export type { BacklogTriageReport };
|
|
4
|
+
export type EvaluatedPROutcome = 'approved' | 'approved_pending_ci' | 'bounced' | 'bounced_to_draft' | 'merged' | 'rejected' | 'failed' | string;
|
|
5
|
+
export type EvaluatedPRCiState = 'green' | 'pending' | 'other';
|
|
6
|
+
export interface EvaluatedPRRecord {
|
|
7
|
+
headRefOid?: string;
|
|
8
|
+
evaluatedAt: string;
|
|
9
|
+
success: boolean;
|
|
10
|
+
outcome?: EvaluatedPROutcome;
|
|
11
|
+
ciState?: EvaluatedPRCiState;
|
|
12
|
+
}
|
|
13
|
+
export interface PRFailureRecord {
|
|
14
|
+
failedAt: number;
|
|
15
|
+
count: number;
|
|
16
|
+
}
|
|
4
17
|
export interface DaemonState {
|
|
5
18
|
pid: number;
|
|
6
19
|
startedAt: string;
|
|
@@ -13,6 +26,8 @@ export interface DaemonState {
|
|
|
13
26
|
activeRoutine?: string;
|
|
14
27
|
activeTarget?: string;
|
|
15
28
|
activeWorktree?: string;
|
|
29
|
+
evaluatedPRs?: Record<number, EvaluatedPRRecord>;
|
|
30
|
+
failureCooldowns?: Record<number, PRFailureRecord>;
|
|
16
31
|
}
|
|
17
32
|
export interface DaemonOptions {
|
|
18
33
|
interval?: number;
|
|
@@ -45,40 +60,84 @@ export declare function isDaemonRunning(repoRoot: string): boolean;
|
|
|
45
60
|
export interface ReviewablePR {
|
|
46
61
|
number: number;
|
|
47
62
|
headRefName: string;
|
|
63
|
+
headRefOid?: string;
|
|
48
64
|
title: string;
|
|
65
|
+
reviewDecision?: string;
|
|
49
66
|
statusCheckRollup?: Array<{
|
|
50
67
|
status?: string;
|
|
51
68
|
state?: string;
|
|
52
69
|
conclusion?: string | null;
|
|
53
70
|
}>;
|
|
71
|
+
reviews?: Array<{
|
|
72
|
+
id?: string;
|
|
73
|
+
author?: {
|
|
74
|
+
login: string;
|
|
75
|
+
};
|
|
76
|
+
state?: string;
|
|
77
|
+
commit?: {
|
|
78
|
+
oid: string;
|
|
79
|
+
};
|
|
80
|
+
submittedAt?: string;
|
|
81
|
+
body?: string;
|
|
82
|
+
}>;
|
|
83
|
+
comments?: Array<{
|
|
84
|
+
id?: string;
|
|
85
|
+
author?: {
|
|
86
|
+
login: string;
|
|
87
|
+
};
|
|
88
|
+
body?: string;
|
|
89
|
+
createdAt?: string;
|
|
90
|
+
}>;
|
|
54
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Checks if a GitHub user login corresponds to a bot account or designated agent persona.
|
|
94
|
+
*/
|
|
95
|
+
export declare function isBotLogin(login?: string | null): boolean;
|
|
55
96
|
/**
|
|
56
97
|
* Checks if a pull request has CI checks that are currently running, queued, or pending.
|
|
57
98
|
*/
|
|
58
99
|
export declare function isPRCiPending(pr: ReviewablePR): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Checks if all CI checks on a pull request have completed successfully (green).
|
|
102
|
+
*/
|
|
103
|
+
export declare function isPRCiGreen(pr: ReviewablePR): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Checks if any CI check on a pull request has explicitly failed or errored.
|
|
106
|
+
*/
|
|
107
|
+
export declare function isPRCiFailed(pr: ReviewablePR): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Checks if a pull request has already received approval either through reviewDecision
|
|
110
|
+
* or an APPROVED review from a reviewer/bot on its current head commit.
|
|
111
|
+
*/
|
|
112
|
+
export declare function isPRApproved(pr: ReviewablePR): boolean;
|
|
59
113
|
export interface FilterReviewablePROptions {
|
|
60
114
|
allowPendingCi?: boolean;
|
|
115
|
+
evaluatedPRs?: Record<string | number, EvaluatedPRRecord> | Map<number, EvaluatedPRRecord>;
|
|
116
|
+
failureCooldowns?: Record<string | number, PRFailureRecord> | Map<number, PRFailureRecord>;
|
|
117
|
+
cooldownDurationMs?: number;
|
|
61
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Determines whether a pull request has already been evaluated or reviewed
|
|
121
|
+
* on its current head commit, preventing wasteful re-review loops.
|
|
122
|
+
*/
|
|
123
|
+
export declare function isPRAlreadyEvaluated(pr: ReviewablePR, options?: FilterReviewablePROptions): boolean;
|
|
62
124
|
/**
|
|
63
125
|
* Filters a list of pull requests to include only reviewable PRs,
|
|
64
126
|
* excluding automated release-please branches, release PR titles,
|
|
65
|
-
*
|
|
127
|
+
* PRs with active CI checks in progress (unless allowPendingCi is true),
|
|
128
|
+
* and PRs already evaluated or reviewed on the current head commit.
|
|
66
129
|
*/
|
|
67
130
|
export declare function filterReviewablePRs(prs: ReviewablePR[], options?: FilterReviewablePROptions): ReviewablePR[];
|
|
68
131
|
/**
|
|
69
132
|
* Fast pre-flight check to query open ready PRs in ~100ms with 0 token cost,
|
|
70
133
|
* excluding drafts, automated release-please branches, release PR titles,
|
|
71
|
-
*
|
|
134
|
+
* PRs with active CI checks still running, and already evaluated PRs.
|
|
72
135
|
*/
|
|
73
|
-
export declare function getOpenReviewablePRs(repoRoot: string): Promise<ReviewablePR[]>;
|
|
136
|
+
export declare function getOpenReviewablePRs(repoRoot: string, options?: FilterReviewablePROptions): Promise<ReviewablePR[]>;
|
|
74
137
|
/**
|
|
75
138
|
* Fast pre-flight check to query number of open ready PRs in ~100ms with 0 token cost.
|
|
76
139
|
*/
|
|
77
140
|
export declare function countOpenReadyPRs(repoRoot: string): Promise<number>;
|
|
78
|
-
/**
|
|
79
|
-
* Checks if a GitHub user login corresponds to a bot account or designated agent persona.
|
|
80
|
-
*/
|
|
81
|
-
export declare function isBotLogin(login?: string | null): boolean;
|
|
82
141
|
export interface BacklogPR {
|
|
83
142
|
number: number;
|
|
84
143
|
title?: string;
|
|
@@ -137,10 +196,6 @@ export declare function queryOrphanedLocalRunIssues(repoRoot: string): Promise<A
|
|
|
137
196
|
* Operates asynchronously and fails gracefully on network / CLI errors without preventing daemon startup.
|
|
138
197
|
*/
|
|
139
198
|
export declare function reconcileOrphanedLocalRuns(optionsOrRepoRoot: string | ReconcileOrphanedRunsOptions): Promise<number>;
|
|
140
|
-
export interface PRFailureRecord {
|
|
141
|
-
failedAt: number;
|
|
142
|
-
count: number;
|
|
143
|
-
}
|
|
144
199
|
export interface DrainReviewQueueOptions {
|
|
145
200
|
repoRoot: string;
|
|
146
201
|
state?: DaemonState;
|
|
@@ -197,6 +252,13 @@ export declare function performAutoworkScan(scanOptions: PerformAutoworkScanOpti
|
|
|
197
252
|
executed: boolean;
|
|
198
253
|
reason?: string;
|
|
199
254
|
}>;
|
|
255
|
+
/**
|
|
256
|
+
* Initializes and persists daemon state, and populates in-memory failure cooldowns.
|
|
257
|
+
*/
|
|
258
|
+
export declare function initializeDaemonState(repoRoot: string, options?: DaemonOptions): {
|
|
259
|
+
state: DaemonState;
|
|
260
|
+
failureCooldowns: Map<number, PRFailureRecord>;
|
|
261
|
+
};
|
|
200
262
|
/**
|
|
201
263
|
* Runs the multi-cadence polling daemon loop in the current process with interactive controls.
|
|
202
264
|
*/
|
package/dist/lib/daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"AA0BA,OAAO,EAOL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/lib/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/lib/presets.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/lib/presets.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kCAAkC,CAAC,EAAE,MAAM,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,kCAAkC,CAAC,EAAE,MAAM,CAAC;QAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,kCAAkC,CAAC,EAAE,MAAM,CAAC;QAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,OAAO,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;QACnB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,kCAAkC,EAAE,OAAO,CAAC;QAC5C,kBAAkB,EAAE,OAAO,CAAC;QAC5B,kBAAkB,EAAE,OAAO,CAAC;QAC5B,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,kCAAkC,CAAC,EAAE,MAAM,CAAC;QAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC9B,CAAC;IACF,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASzD,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS3D,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASjE,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAOnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAsBpC,CAAC;AAGF,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAI3C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;IAAE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAoE3H,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAerF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,aAAa,CAAC,UAAU,CAAC,GAAG,YAAY,CAalG,CAAC;AAyBF,eAAO,MAAM,aAAa,QAAwB,CAAC;AACnD,eAAO,MAAM,UAAU,kFAAkF,CAAC"}
|
package/dist/lib/runner.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface RunLocalRoutineOptions {
|
|
|
12
12
|
dryRun?: boolean;
|
|
13
13
|
verbose?: boolean;
|
|
14
14
|
showCard?: boolean;
|
|
15
|
+
fastPathMerge?: boolean;
|
|
15
16
|
env?: Record<string, string>;
|
|
16
17
|
onLog?: (chunk: string) => void;
|
|
17
18
|
onTargetDetected?: (target: string) => void;
|
|
@@ -108,10 +109,15 @@ export declare function formatVerboseEvent(event: StreamJsonEvent): string | nul
|
|
|
108
109
|
* Builds the invocation arguments for Antigravity CLI in stream-json mode.
|
|
109
110
|
*/
|
|
110
111
|
export declare function buildAgyArgs(prompt: string, model: string, printTimeout: string): string[];
|
|
112
|
+
/**
|
|
113
|
+
* Routine-to-relevant-skills mapping to prevent context token bloat in autonomous sub-sessions.
|
|
114
|
+
*/
|
|
115
|
+
export declare const ROUTINE_RELEVANT_SKILLS: Record<string, string[]>;
|
|
111
116
|
/**
|
|
112
117
|
* Discovers domain skills in .agents/skills and formats instruction string.
|
|
118
|
+
* Optionally filtered by routine to prevent prompt context bloat.
|
|
113
119
|
*/
|
|
114
|
-
export declare function discoverSkillsPrompt(targetDir: string): string;
|
|
120
|
+
export declare function discoverSkillsPrompt(targetDir: string, routine?: string): string;
|
|
115
121
|
/**
|
|
116
122
|
* Builds the prompt string for a given routine and target.
|
|
117
123
|
*/
|
|
@@ -119,6 +125,7 @@ export declare function buildRoutinePrompt(targetDir: string, routine: string, o
|
|
|
119
125
|
issue?: string | number;
|
|
120
126
|
pr?: string | number;
|
|
121
127
|
routineIssueNumber?: number;
|
|
128
|
+
fastPathMerge?: boolean;
|
|
122
129
|
}): string;
|
|
123
130
|
/**
|
|
124
131
|
* Checks if Antigravity CLI (`agy`) is installed and accessible.
|
package/dist/lib/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAQA,OAAO,EAgBL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -137,7 +137,7 @@ How live execution progress is reported during autonomous routine runs:
|
|
|
137
137
|
### <Emoji> Milestone: <Milestone Name>
|
|
138
138
|
- **Phase**: `<Phase Identifier>`
|
|
139
139
|
- **Status**: <Status Emoji + Summary>
|
|
140
|
-
- **Target / Context**:
|
|
140
|
+
- **Target / Context**: <Target Issue/PR or Context>
|
|
141
141
|
- **Key Decision / Finding**: <Summary of key decision, root cause, or verification outcome>
|
|
142
142
|
- **Next**: <Next planned milestone>
|
|
143
143
|
```
|
|
@@ -253,7 +253,7 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
|
|
|
253
253
|
gh issue comment "$ROUTINE_ISSUE_NUMBER" --body "### 🧭 Milestone: Intake & Strategy
|
|
254
254
|
- **Phase**: \`Phase 1 · Target Selection & Planning\`
|
|
255
255
|
- **Status**: ⏳ In Progress
|
|
256
|
-
- **Target / Context**:
|
|
256
|
+
- **Target / Context**: #<TARGET_ISSUE> (<Title>)
|
|
257
257
|
- **Prior Failure Context**: <summary of past error/crash and strategy to avoid repeating it>
|
|
258
258
|
- **Key Decision / Finding**: <Summary of plan, root cause, or reproduction strategy>
|
|
259
259
|
- **Next**: Implementation & Test Verification" || true
|
|
@@ -272,7 +272,7 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
|
|
|
272
272
|
gh issue comment "$ROUTINE_ISSUE_NUMBER" --body "### 🧪 Milestone: Verification & Tests
|
|
273
273
|
- **Phase**: \`Phase 2 · Implementation & Verification\`
|
|
274
274
|
- **Status**: ✅ Tests Passing
|
|
275
|
-
- **Target / Context**:
|
|
275
|
+
- **Target / Context**: #<TARGET_ISSUE>
|
|
276
276
|
- **Key Decision / Finding**: Tests verified passing with zero failures and clean type-check.
|
|
277
277
|
- **Next**: PR Creation & Autonomous Handoff" || true
|
|
278
278
|
```
|
|
@@ -300,7 +300,7 @@ _Generated by [Antigravity](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/ru
|
|
|
300
300
|
gh issue comment "$ROUTINE_ISSUE_NUMBER" --body "### 🚀 Milestone: Autonomous Handoff
|
|
301
301
|
- **Phase**: \`Phase 3 · Autonomous Handoff\`
|
|
302
302
|
- **Status**: ✅ PR Marked Ready
|
|
303
|
-
- **Target / Context**:
|
|
303
|
+
- **Target / Context**: PR #<PR_NUMBER> (closes #<TARGET_ISSUE>)
|
|
304
304
|
- **Key Decision / Finding**: Pushed branch and marked PR ready for review.
|
|
305
305
|
- **Next**: In-session review wait or run completion" || true
|
|
306
306
|
```
|
|
@@ -340,7 +340,7 @@ After completing (SUCCESS or FAILURE), record run execution details to `.jonah-f
|
|
|
340
340
|
gh issue comment "$ROUTINE_ISSUE_NUMBER" --body "### 🏁 Milestone: Run Completed
|
|
341
341
|
- **Phase**: \`Phase 4 · Reconciliation\`
|
|
342
342
|
- **Status**: ✅ SUCCESS
|
|
343
|
-
- **Target / Context**:
|
|
343
|
+
- **Target / Context**: #<TARGET_ISSUE> · PR #<PR_NUMBER>
|
|
344
344
|
- **Key Decision / Finding**: All DoD criteria satisfied and verified.
|
|
345
345
|
- **Next**: Routine finished; issue closed by harness" || true
|
|
346
346
|
```
|
|
@@ -129,7 +129,7 @@ Check if `$PR_NUMBER` is set:
|
|
|
129
129
|
gh issue comment "$ROUTINE_ISSUE_NUMBER" --body "### 🧭 Milestone: Intake & Review Scope
|
|
130
130
|
- **Phase**: \`Phase 1 · Review Target & Scope\`
|
|
131
131
|
- **Status**: ⏳ In Progress
|
|
132
|
-
- **Target / Context**:
|
|
132
|
+
- **Target / Context**: PR #<PR_NUMBER> (Round N)
|
|
133
133
|
- **Prior Failure Context**: <summary of past review failure/crash and verification focus, or None>
|
|
134
134
|
- **Key Decision / Finding**: Claimed review window; starting multi-angle evaluation passes.
|
|
135
135
|
- **Next**: Multi-Angle Code Review Pass" || true
|
|
@@ -277,7 +277,7 @@ After completing (SUCCESS or FAILURE), record run execution details to `.jonah-f
|
|
|
277
277
|
gh issue comment "$ROUTINE_ISSUE_NUMBER" --body "### 🏁 Milestone: Run Completed
|
|
278
278
|
- **Phase**: \`Phase 4 · Reconciliation\`
|
|
279
279
|
- **Status**: ✅ SUCCESS
|
|
280
|
-
- **Target / Context**:
|
|
280
|
+
- **Target / Context**: PR #<PR_NUMBER>
|
|
281
281
|
- **Key Decision / Finding**: Review completed with decision \`<MERGE | BOUNCE | ESCALATE | DEFER_CI>\`.
|
|
282
282
|
- **Next**: Routine finished; issue closed by harness" || true
|
|
283
283
|
```
|
|
@@ -241,10 +241,18 @@ jobs:
|
|
|
241
241
|
TIMESTAMP=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
|
|
242
242
|
if [ -n "$PR_ARG" ]; then
|
|
243
243
|
TITLE="[peer-review] run ${TIMESTAMP} (PR #${PR_ARG})"
|
|
244
|
+
BODY="### Autonomous Routine Execution in Progress
|
|
245
|
+
- **Routine**: \`peer-review\`
|
|
246
|
+
- **Timestamp**: \`${TIMESTAMP}\`
|
|
247
|
+
- **Trigger**: \`${EVENT_NAME}\`
|
|
248
|
+
- **Target**: PR #${PR_ARG}
|
|
249
|
+
- **Run ID**: [\`${RUN_ID}\`](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_"
|
|
244
253
|
else
|
|
245
254
|
TITLE="[peer-review] run ${TIMESTAMP}"
|
|
246
|
-
|
|
247
|
-
BODY="### Autonomous Routine Execution in Progress
|
|
255
|
+
BODY="### Autonomous Routine Execution in Progress
|
|
248
256
|
- **Routine**: \`peer-review\`
|
|
249
257
|
- **Timestamp**: \`${TIMESTAMP}\`
|
|
250
258
|
- **Trigger**: \`${EVENT_NAME}\`
|
|
@@ -252,6 +260,7 @@ jobs:
|
|
|
252
260
|
|
|
253
261
|
---
|
|
254
262
|
_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_"
|
|
263
|
+
fi
|
|
255
264
|
ISSUE_URL=$(gh issue create --title "$TITLE" --body "$BODY" --label "routine-log,routine:peer-review,status:running,runner:github-actions")
|
|
256
265
|
ISSUE_NUMBER=$(echo "$ISSUE_URL" | grep -oE '[0-9]+$')
|
|
257
266
|
echo "issue_number=$ISSUE_NUMBER" >> "$GITHUB_OUTPUT"
|