jonah-fleet 1.9.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1
- package/dist/index.js +48 -24
- package/dist/lib/runner.d.ts +21 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/package.json +3 -2
- package/templates/workflows/autowork-cron.yml +9 -8
- package/templates/workflows/dependency-check-cron.yml +9 -8
- package/templates/workflows/design-review-cron.yml +9 -8
- package/templates/workflows/issues-housekeeping-cron.yml +9 -8
- package/templates/workflows/prompt-optimizer-cron.yml +9 -8
- package/templates/workflows/sync-fleet.yml +2 -2
- package/templates/workflows/trigger-autowork-manual.yml +9 -8
- package/templates/workflows/trigger-autowork-on-bug.yml +9 -8
- package/templates/workflows/trigger-autowork-on-merge.yml +9 -8
- package/templates/workflows/trigger-review-routine.yml +9 -8
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,26 @@ 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.10.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.9.2...v1.10.0) (2026-09-17)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **radar:** expand Category A heuristics to include prompt engineering optimizations and release tag_name ([#186](https://github.com/juliendurandeu/jonah-fleet/issues/186)) ([37fb3fc](https://github.com/juliendurandeu/jonah-fleet/commit/37fb3fca85b2f880de90df6a4baf9ec50f624003))
|
|
14
|
+
* **radar:** surface actionable opportunities with deterministic A/B/C classification ([#181](https://github.com/juliendurandeu/jonah-fleet/issues/181)) ([b9809c0](https://github.com/juliendurandeu/jonah-fleet/commit/b9809c0c1b54cb690c878d574cecbe1a4ce33480))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **runner:** capture stderr and handle signal exit codes in fallback error diagnostics ([#176](https://github.com/juliendurandeu/jonah-fleet/issues/176)) ([9bbe8eb](https://github.com/juliendurandeu/jonah-fleet/commit/9bbe8eb7cd52deab74c0bc9d503011511502a98f))
|
|
20
|
+
|
|
21
|
+
## [1.9.2](https://github.com/juliendurandeu/jonah-fleet/compare/v1.9.1...v1.9.2) (2026-09-16)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* **workflows:** resolve indentation syntax error in interruption card and add yaml validator test ([b312a20](https://github.com/juliendurandeu/jonah-fleet/commit/b312a2056da850876ee3daa2d952ffe299687b7e))
|
|
27
|
+
|
|
8
28
|
## [1.9.1](https://github.com/juliendurandeu/jonah-fleet/compare/v1.9.0...v1.9.1) (2026-09-16)
|
|
9
29
|
|
|
10
30
|
|
|
@@ -34,10 +54,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
34
54
|
* **runner,daemon:** prevent stale report ghosting and fix keyboard lockup in targeted prompts ([#166](https://github.com/juliendurandeu/jonah-fleet/issues/166)) ([0de89e2](https://github.com/juliendurandeu/jonah-fleet/commit/0de89e24427f9e575f08cd721434ab5156fdcb94))
|
|
35
55
|
* **workflows:** harden workflow templates against shell injection, credential persistence, and timeouts ([04a0dd3](https://github.com/juliendurandeu/jonah-fleet/commit/04a0dd3a0457fd4d6db74fcd4709fcef0d28d84e))
|
|
36
56
|
|
|
37
|
-
## [Unreleased] - 2026-09-
|
|
57
|
+
## [Unreleased] - 2026-09-17
|
|
38
58
|
|
|
39
59
|
### Features
|
|
40
60
|
|
|
61
|
+
* **radar:** expand Category A heuristics in `fetch-symphony-radar.js` to detect prompt engineering optimizations and release `tag_name` fallbacks, prioritize Category A invariants over runtime keywords, and refine empty lookback checklist phrasing ([#184](https://github.com/juliendurandeu/jonah-fleet/issues/184)).
|
|
62
|
+
* **radar:** deterministically classify upstream changes across Symphony and Funes into Category A/B/C and surface architectural opportunities with callout summaries, breakdown matrices, and dynamic triage checklists ([#152](https://github.com/juliendurandeu/jonah-fleet/issues/152)).
|
|
41
63
|
* **telemetry:** introduce live progress reporting in routine run tracking issues (`routine-log`) using bounded Compact Milestone Cards (3–5 bullet points for Intake & Strategy, Verification & Tests, Autonomous Handoff, and Run Completed) across `autowork`, `peer-review`, `optimizer`, and `ORCHESTRATION.md`.
|
|
42
64
|
* **workflows:** automatically post Interruption Cards to routine run issue comment streams upon failure, timeout, or cancellation, linking directly to the Actions run logs before applying `status:failure,needs-attention`.
|
|
43
65
|
* **runner:** add `formatMilestoneCard`, `formatInterruptionCard`, and `tryPostLocalRunMilestone` helpers to local runner `runner.ts` to post interruption cards on non-zero exit codes with offline fallback.
|
package/dist/index.js
CHANGED
|
@@ -3742,6 +3742,39 @@ function extractFreshRunReport(executionReportPath, targetReportPath, startTime)
|
|
|
3742
3742
|
}
|
|
3743
3743
|
return null;
|
|
3744
3744
|
}
|
|
3745
|
+
function resolveExitCode(code, signal) {
|
|
3746
|
+
return code ?? (signal ? 1 : 0);
|
|
3747
|
+
}
|
|
3748
|
+
function formatFallbackRunReport(options) {
|
|
3749
|
+
const result = options.exitCode === 0 ? "SUCCESS" : "FAILURE";
|
|
3750
|
+
let reportContent = `## Run Summary
|
|
3751
|
+
|
|
3752
|
+
| Metric | Value |
|
|
3753
|
+
|---|---|
|
|
3754
|
+
| Routine | \`${options.routine}\` |
|
|
3755
|
+
| Timestamp | \`${options.timestamp}\` |
|
|
3756
|
+
| Result | \`${result}\` |
|
|
3757
|
+
| Exit Code | \`${options.exitCode}\` |
|
|
3758
|
+
| Host | \`${options.hostname}\` |
|
|
3759
|
+
| Target | \`${options.targetLabel}\` |
|
|
3760
|
+
| Duration | \`${options.durationSec}s\` |
|
|
3761
|
+
`;
|
|
3762
|
+
if (options.exitCode !== 0) {
|
|
3763
|
+
const errorChunks = [options.output?.trim(), options.stderr?.trim()].filter(Boolean);
|
|
3764
|
+
const combinedError = errorChunks.join("\n");
|
|
3765
|
+
if (combinedError.trim()) {
|
|
3766
|
+
const sanitizedOutput = stripAnsi(combinedError.trim()).split("\n").slice(-15).join("\n");
|
|
3767
|
+
reportContent += `
|
|
3768
|
+
### Error Output
|
|
3769
|
+
|
|
3770
|
+
\`\`\`
|
|
3771
|
+
${sanitizedOutput}
|
|
3772
|
+
\`\`\`
|
|
3773
|
+
`;
|
|
3774
|
+
}
|
|
3775
|
+
}
|
|
3776
|
+
return reportContent;
|
|
3777
|
+
}
|
|
3745
3778
|
async function runLocalRoutine(options) {
|
|
3746
3779
|
const targetDir = path12.resolve(options.targetDir);
|
|
3747
3780
|
const routine = options.routine;
|
|
@@ -3970,7 +4003,9 @@ Timeout: ${printTimeout}`,
|
|
|
3970
4003
|
}
|
|
3971
4004
|
}
|
|
3972
4005
|
});
|
|
4006
|
+
let accumulatedStderr = "";
|
|
3973
4007
|
const stderrParser = new LineBufferedStreamParser((line) => {
|
|
4008
|
+
accumulatedStderr += line + "\n";
|
|
3974
4009
|
checkTargetDetection(line);
|
|
3975
4010
|
if (options.verbose) {
|
|
3976
4011
|
console.error(pc10.dim(`[stderr] ${line}`));
|
|
@@ -4014,9 +4049,9 @@ Timeout: ${printTimeout}`,
|
|
|
4014
4049
|
spinner?.stop();
|
|
4015
4050
|
reject(err);
|
|
4016
4051
|
});
|
|
4017
|
-
child.on("close", (code) => {
|
|
4052
|
+
child.on("close", (code, signal) => {
|
|
4018
4053
|
spinner?.stop();
|
|
4019
|
-
resolve(code
|
|
4054
|
+
resolve(resolveExitCode(code, signal));
|
|
4020
4055
|
});
|
|
4021
4056
|
});
|
|
4022
4057
|
} finally {
|
|
@@ -4034,28 +4069,16 @@ Timeout: ${printTimeout}`,
|
|
|
4034
4069
|
const durationSec = Math.round(durationMs / 1e3);
|
|
4035
4070
|
let reportContent = extractFreshRunReport(executionReportPath, targetReportPath, startTime) || "";
|
|
4036
4071
|
if (!reportContent) {
|
|
4037
|
-
reportContent =
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
| Duration | \`${durationSec}s\` |
|
|
4048
|
-
`;
|
|
4049
|
-
if (exitCode !== 0 && output.trim()) {
|
|
4050
|
-
const sanitizedOutput = stripAnsi(output.trim()).split("\n").slice(-15).join("\n");
|
|
4051
|
-
reportContent += `
|
|
4052
|
-
### Error Output
|
|
4053
|
-
|
|
4054
|
-
\`\`\`
|
|
4055
|
-
${sanitizedOutput}
|
|
4056
|
-
\`\`\`
|
|
4057
|
-
`;
|
|
4058
|
-
}
|
|
4072
|
+
reportContent = formatFallbackRunReport({
|
|
4073
|
+
routine,
|
|
4074
|
+
timestamp,
|
|
4075
|
+
exitCode,
|
|
4076
|
+
hostname,
|
|
4077
|
+
targetLabel,
|
|
4078
|
+
durationSec,
|
|
4079
|
+
output,
|
|
4080
|
+
stderr: accumulatedStderr
|
|
4081
|
+
});
|
|
4059
4082
|
}
|
|
4060
4083
|
try {
|
|
4061
4084
|
fs12.writeFileSync(targetReportPath, reportContent, "utf8");
|
|
@@ -4121,6 +4144,7 @@ ${sanitizedOutput}
|
|
|
4121
4144
|
success: exitCode === 0,
|
|
4122
4145
|
exitCode,
|
|
4123
4146
|
output,
|
|
4147
|
+
stderr: accumulatedStderr,
|
|
4124
4148
|
worktreePath,
|
|
4125
4149
|
branchName,
|
|
4126
4150
|
issueNumber: routineIssueNumber
|
package/dist/lib/runner.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export interface RunLocalRoutineResult {
|
|
|
19
19
|
success: boolean;
|
|
20
20
|
exitCode: number;
|
|
21
21
|
output: string;
|
|
22
|
+
stderr?: string;
|
|
22
23
|
worktreePath?: string;
|
|
23
24
|
branchName?: string;
|
|
24
25
|
issueNumber?: number;
|
|
@@ -150,6 +151,26 @@ export declare function tryReconcileLocalRunIssue(cwd: string, issueNumber: numb
|
|
|
150
151
|
* Returns null if no fresh report exists (e.g. file missing or older than run start).
|
|
151
152
|
*/
|
|
152
153
|
export declare function extractFreshRunReport(executionReportPath: string, targetReportPath: string, startTime: number): string | null;
|
|
154
|
+
export interface FallbackReportOptions {
|
|
155
|
+
routine: string;
|
|
156
|
+
timestamp: string;
|
|
157
|
+
exitCode: number;
|
|
158
|
+
hostname: string;
|
|
159
|
+
targetLabel: string;
|
|
160
|
+
durationSec: number;
|
|
161
|
+
output?: string;
|
|
162
|
+
stderr?: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Resolves child process exit code, ensuring signals (e.g. SIGTERM, SIGINT)
|
|
166
|
+
* resolve to a non-zero exit code instead of defaulting to 0.
|
|
167
|
+
*/
|
|
168
|
+
export declare function resolveExitCode(code: number | null, signal: NodeJS.Signals | string | null): number;
|
|
169
|
+
/**
|
|
170
|
+
* Formats a fallback summary markdown report when no fresh run-report.md was generated.
|
|
171
|
+
* Includes sanitized trailing error output from stdout and/or stderr if exitCode is non-zero.
|
|
172
|
+
*/
|
|
173
|
+
export declare function formatFallbackRunReport(options: FallbackReportOptions): string;
|
|
153
174
|
/**
|
|
154
175
|
* Runs a routine locally with worktree isolation and Antigravity CLI invocation.
|
|
155
176
|
*/
|
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":"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
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QAC7C,SAAS,CAAC,EAAE,YAAY,GAAG,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;QAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE;YACV,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjC,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE;YACN,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,CAAC;IACF,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,MAAM,CAAC,EAAE;QACP,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YACN,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACH,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAyB;IAEvC,YAAY,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAEzC;IAEM,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAU/B;IAEM,KAAK,IAAI,IAAI,CAKnB;CACF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAWzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAgDxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAY1F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAoB9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3F,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAepB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAUzE;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAa/E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,IAAI,CAiBN;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CA0CN;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,mBAAmB,EAAE,MAAM,EAC3B,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAoBf;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAEnG;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAc9E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAubrG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jonah-fleet",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "Standalone autonomous agent fleet with Symphony orchestration, claim protocols, and continuous improvement loops",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
"@types/node": "^26.4.0",
|
|
45
45
|
"tsup": "^8.3.5",
|
|
46
46
|
"typescript": "^7.0.2",
|
|
47
|
-
"vitest": "^5.0.0"
|
|
47
|
+
"vitest": "^5.0.0",
|
|
48
|
+
"yaml": "^2.9.1"
|
|
48
49
|
},
|
|
49
50
|
"overrides": {
|
|
50
51
|
"esbuild": "^0.28.2"
|
|
@@ -289,14 +289,15 @@ jobs:
|
|
|
289
289
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
290
290
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
291
291
|
else
|
|
292
|
-
INTERRUPTION_BODY
|
|
293
|
-
|
|
294
|
-
- **
|
|
295
|
-
- **
|
|
296
|
-
- **
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
292
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
293
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
294
|
+
"- **Routine**: \`autowork\`" \
|
|
295
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
296
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
297
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
298
|
+
"" \
|
|
299
|
+
"---" \
|
|
300
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
300
301
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
301
302
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
302
303
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -196,14 +196,15 @@ jobs:
|
|
|
196
196
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
197
197
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
198
198
|
else
|
|
199
|
-
INTERRUPTION_BODY
|
|
200
|
-
|
|
201
|
-
- **
|
|
202
|
-
- **
|
|
203
|
-
- **
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
199
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
200
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
201
|
+
"- **Routine**: \`dependency-check\`" \
|
|
202
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
203
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
204
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
205
|
+
"" \
|
|
206
|
+
"---" \
|
|
207
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
207
208
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
208
209
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
209
210
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -207,14 +207,15 @@ jobs:
|
|
|
207
207
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
208
208
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
209
209
|
else
|
|
210
|
-
INTERRUPTION_BODY
|
|
211
|
-
|
|
212
|
-
- **
|
|
213
|
-
- **
|
|
214
|
-
- **
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
210
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
211
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
212
|
+
"- **Routine**: \`design-review\`" \
|
|
213
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
214
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
215
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
216
|
+
"" \
|
|
217
|
+
"---" \
|
|
218
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
218
219
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
219
220
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
220
221
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -196,14 +196,15 @@ jobs:
|
|
|
196
196
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
197
197
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
198
198
|
else
|
|
199
|
-
INTERRUPTION_BODY
|
|
200
|
-
|
|
201
|
-
- **
|
|
202
|
-
- **
|
|
203
|
-
- **
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
199
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
200
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
201
|
+
"- **Routine**: \`issues-housekeeping\`" \
|
|
202
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
203
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
204
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
205
|
+
"" \
|
|
206
|
+
"---" \
|
|
207
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
207
208
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
208
209
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
209
210
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -218,14 +218,15 @@ jobs:
|
|
|
218
218
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
219
219
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
220
220
|
else
|
|
221
|
-
INTERRUPTION_BODY
|
|
222
|
-
|
|
223
|
-
- **
|
|
224
|
-
- **
|
|
225
|
-
- **
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
221
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
222
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
223
|
+
"- **Routine**: \`optimizer\`" \
|
|
224
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
225
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
226
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
227
|
+
"" \
|
|
228
|
+
"---" \
|
|
229
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
229
230
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
230
231
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
231
232
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -37,8 +37,8 @@ jobs:
|
|
|
37
37
|
- name: Run jonah-fleet sync
|
|
38
38
|
id: sync
|
|
39
39
|
run: |
|
|
40
|
-
npx jonah-fleet sync --check || true
|
|
41
|
-
npx jonah-fleet sync --force
|
|
40
|
+
npx --yes jonah-fleet sync --check || true
|
|
41
|
+
npx --yes jonah-fleet sync --force
|
|
42
42
|
|
|
43
43
|
- name: Check for changes
|
|
44
44
|
id: git-check
|
|
@@ -300,14 +300,15 @@ jobs:
|
|
|
300
300
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
301
301
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
302
302
|
else
|
|
303
|
-
INTERRUPTION_BODY
|
|
304
|
-
|
|
305
|
-
- **
|
|
306
|
-
- **
|
|
307
|
-
- **
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
303
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
304
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
305
|
+
"- **Routine**: \`autowork\`" \
|
|
306
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
307
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
308
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
309
|
+
"" \
|
|
310
|
+
"---" \
|
|
311
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
311
312
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
312
313
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
313
314
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -257,14 +257,15 @@ jobs:
|
|
|
257
257
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
258
258
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
259
259
|
else
|
|
260
|
-
INTERRUPTION_BODY
|
|
261
|
-
|
|
262
|
-
- **
|
|
263
|
-
- **
|
|
264
|
-
- **
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
260
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
261
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
262
|
+
"- **Routine**: \`autowork\`" \
|
|
263
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
264
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
265
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
266
|
+
"" \
|
|
267
|
+
"---" \
|
|
268
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
268
269
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
269
270
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
270
271
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -287,14 +287,15 @@ jobs:
|
|
|
287
287
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
288
288
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
289
289
|
else
|
|
290
|
-
INTERRUPTION_BODY
|
|
291
|
-
|
|
292
|
-
- **
|
|
293
|
-
- **
|
|
294
|
-
- **
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
290
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
291
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
292
|
+
"- **Routine**: \`autowork\`" \
|
|
293
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
294
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
295
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
296
|
+
"" \
|
|
297
|
+
"---" \
|
|
298
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
298
299
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
299
300
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
300
301
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|
|
@@ -364,14 +364,15 @@ jobs:
|
|
|
364
364
|
gh issue close "$ISSUE_NUMBER" --reason completed
|
|
365
365
|
echo "✓ Routine run issue #$ISSUE_NUMBER closed as completed."
|
|
366
366
|
else
|
|
367
|
-
INTERRUPTION_BODY
|
|
368
|
-
|
|
369
|
-
- **
|
|
370
|
-
- **
|
|
371
|
-
- **
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
367
|
+
INTERRUPTION_BODY=$(printf '%s\n' \
|
|
368
|
+
"### ❌ Milestone: Run Interrupted / Failed" \
|
|
369
|
+
"- **Routine**: \`peer-review\`" \
|
|
370
|
+
"- **Status**: Workflow job failed or timed out (\`${JOB_STATUS}\`)" \
|
|
371
|
+
"- **Step**: Actions execution halted before normal completion" \
|
|
372
|
+
"- **Action Log**: [View GitHub Actions Run](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})" \
|
|
373
|
+
"" \
|
|
374
|
+
"---" \
|
|
375
|
+
"_Generated by [Antigravity](${SERVER_URL}/${REPOSITORY}/actions/runs/${RUN_ID})_")
|
|
375
376
|
gh issue comment "$ISSUE_NUMBER" --body "$INTERRUPTION_BODY" || true
|
|
376
377
|
gh issue edit "$ISSUE_NUMBER" --add-label "status:failure,needs-attention" --remove-label "status:running"
|
|
377
378
|
echo "⚠️ Routine run issue #$ISSUE_NUMBER left open for triage (status: $JOB_STATUS)."
|