jonah-fleet 1.17.0 → 1.18.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 CHANGED
@@ -5,6 +5,13 @@ 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.18.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.17.0...v1.18.0) (2026-09-20)
9
+
10
+
11
+ ### Features
12
+
13
+ * **guard:** update routine GitHub Actions workflows to execute via run-with-loop-guard wrapper ([#227](https://github.com/juliendurandeu/jonah-fleet/issues/227)) ([#277](https://github.com/juliendurandeu/jonah-fleet/issues/277)) ([496ce8c](https://github.com/juliendurandeu/jonah-fleet/commit/496ce8c0c56ddcfd8ac09e530fb4bdaee9c934c9))
14
+
8
15
  ## [1.17.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.16.0...v1.17.0) (2026-09-19)
9
16
 
10
17
 
@@ -16,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
23
 
17
24
  ### Features
18
25
 
26
+ * **guard:** execute routine GitHub Actions workflows via run-with-loop-guard wrapper script ([#227](https://github.com/juliendurandeu/jonah-fleet/issues/227))
19
27
  * **orchestration:** adopt 4-part human escalation card in peer-review routine on round-5 escalation ([#235](https://github.com/juliendurandeu/jonah-fleet/issues/235))
20
28
  * **orchestration:** add Routine Run Failure Ingestion & Auto-Closure Protocol to `ORCHESTRATION.md`, unifying prior failure memory and resolution lifecycle across `autowork` and `peer-review`.
21
29
  * **prompts:** add Dynamic Target Binding in Scan mode to `autowork.md` and `peer-review.md`, dynamically updating `$ROUTINE_ISSUE_NUMBER` titles with `(Issue #N)` or `(PR #M)` upon claiming so crashed runs are never anonymous.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jonah-fleet",
3
- "version": "1.17.0",
3
+ "version": "1.18.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",
@@ -161,6 +161,7 @@ jobs:
161
161
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
162
162
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
163
163
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
164
+ ROUTINE: analytics-review
164
165
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
165
166
  VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
166
167
  POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }}
@@ -174,7 +175,8 @@ jobs:
174
175
  PROMPT="You are the Analytics Review routine for this repository. Read and follow the instructions in .github/prompts/analytics-review.md exactly. ${SKILLS_PROMPT}"
175
176
 
176
177
  set +e
177
- agy -p "$PROMPT" \
178
+ node .github/scripts/run-with-loop-guard.js \
179
+ -p "$PROMPT" \
178
180
  --model "$MODEL" \
179
181
  --output-format text \
180
182
  --print-timeout "$PRINT_TIMEOUT" \
@@ -183,6 +183,7 @@ jobs:
183
183
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
184
184
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
185
185
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
186
+ ROUTINE: autowork
186
187
  TARGET_ISSUE: ${{ inputs.target_issue || inputs.issue_number }}
187
188
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
188
189
  SKILLS_PROMPT: ${{ steps.skills.outputs.skills_prompt }}
@@ -199,7 +200,8 @@ jobs:
199
200
  fi
200
201
 
201
202
  set +e
202
- agy -p "$PROMPT" \
203
+ node .github/scripts/run-with-loop-guard.js \
204
+ -p "$PROMPT" \
203
205
  --model "$MODEL" \
204
206
  --output-format text \
205
207
  --print-timeout "$PRINT_TIMEOUT" \
@@ -139,6 +139,7 @@ jobs:
139
139
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
140
140
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
141
141
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
142
+ ROUTINE: dependency-update-security-check
142
143
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
143
144
  MODEL: ${{ steps.routine-config.outputs.model || 'gemini-3.8-flash-medium' }}
144
145
  PRINT_TIMEOUT: ${{ steps.routine-config.outputs.print_timeout || '25m' }}
@@ -149,7 +150,8 @@ jobs:
149
150
  PROMPT="You are the Dependency Update & Security Check routine. Read and follow .github/prompts/dependency-update-security-check.md exactly. Check dependencies for updates and vulnerabilities, and create or update tracking issues."
150
151
 
151
152
  set +e
152
- agy -p "$PROMPT" \
153
+ node .github/scripts/run-with-loop-guard.js \
154
+ -p "$PROMPT" \
153
155
  --model "$MODEL" \
154
156
  --output-format text \
155
157
  --print-timeout "$PRINT_TIMEOUT" \
@@ -126,6 +126,7 @@ jobs:
126
126
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
127
127
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
128
128
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
129
+ ROUTINE: design-review
129
130
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
130
131
  VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
131
132
  POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }}
@@ -138,7 +139,8 @@ jobs:
138
139
  PROMPT="You are the Design Review routine for this repository. Read and follow the instructions in .github/prompts/design-review.md exactly. ${SKILLS_PROMPT}"
139
140
 
140
141
  set +e
141
- agy -p "$PROMPT" \
142
+ node .github/scripts/run-with-loop-guard.js \
143
+ -p "$PROMPT" \
142
144
  --model gemini-3.8-flash-high \
143
145
  --output-format text \
144
146
  --print-timeout 50m \
@@ -139,6 +139,7 @@ jobs:
139
139
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
140
140
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
141
141
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
142
+ ROUTINE: issues-housekeeping
142
143
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
143
144
  MODEL: ${{ steps.routine-config.outputs.model || 'gemini-3.8-flash-medium' }}
144
145
  PRINT_TIMEOUT: ${{ steps.routine-config.outputs.print_timeout || '40m' }}
@@ -149,7 +150,8 @@ jobs:
149
150
  PROMPT="You are the Issues Housekeeping routine for this repository. Read and follow .github/prompts/issues-housekeeping.md exactly. Sweep open issues for staleness, duplicates, priority accuracy, and orphaned claims."
150
151
 
151
152
  set +e
152
- agy -p "$PROMPT" \
153
+ node .github/scripts/run-with-loop-guard.js \
154
+ -p "$PROMPT" \
153
155
  --model "$MODEL" \
154
156
  --output-format text \
155
157
  --print-timeout "$PRINT_TIMEOUT" \
@@ -139,6 +139,7 @@ jobs:
139
139
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
140
140
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
141
141
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
142
+ ROUTINE: optimizer
142
143
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
143
144
  MODEL: ${{ steps.routine-config.outputs.model || 'gemini-3.8-flash-high' }}
144
145
  PRINT_TIMEOUT: ${{ steps.routine-config.outputs.print_timeout || '35m' }}
@@ -149,7 +150,8 @@ jobs:
149
150
  PROMPT="You are the Prompt Optimizer routine for this repository. Read and follow .github/prompts/optimizer.md exactly. Diagnose failures, token anomalies, and review loops, and propose preventative prompt and test fixes."
150
151
 
151
152
  set +e
152
- agy -p "$PROMPT" \
153
+ node .github/scripts/run-with-loop-guard.js \
154
+ -p "$PROMPT" \
153
155
  --model "$MODEL" \
154
156
  --output-format text \
155
157
  --print-timeout "$PRINT_TIMEOUT" \
@@ -188,6 +188,7 @@ jobs:
188
188
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
189
189
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
190
190
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
191
+ ROUTINE: autowork
191
192
  TARGET_ISSUE: ${{ inputs.issue_number }}
192
193
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
193
194
  MODE: ${{ inputs.mode || 'targeted' }}
@@ -210,7 +211,8 @@ jobs:
210
211
  fi
211
212
 
212
213
  set +e
213
- agy -p "$PROMPT" \
214
+ node .github/scripts/run-with-loop-guard.js \
215
+ -p "$PROMPT" \
214
216
  --model "$MODEL" \
215
217
  --output-format text \
216
218
  --print-timeout "$PRINT_TIMEOUT" \
@@ -155,6 +155,7 @@ jobs:
155
155
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
156
156
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
157
157
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
158
+ ROUTINE: autowork
158
159
  TARGET_ISSUE: ${{ github.event.issue.number }}
159
160
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
160
161
  SKILLS_PROMPT: ${{ steps.skills.outputs.skills_prompt }}
@@ -167,7 +168,8 @@ jobs:
167
168
  PROMPT="You are the Autowork routine for this repository. A high-priority bug was filed. Read and follow .github/prompts/autowork.md. ${SKILLS_PROMPT} Your target is issue #${TARGET_ISSUE}. You are in Targeted mode: work issue #${TARGET_ISSUE} directly."
168
169
 
169
170
  set +e
170
- agy -p "$PROMPT" \
171
+ node .github/scripts/run-with-loop-guard.js \
172
+ -p "$PROMPT" \
171
173
  --model "$MODEL" \
172
174
  --output-format text \
173
175
  --print-timeout "$PRINT_TIMEOUT" \
@@ -186,6 +186,7 @@ jobs:
186
186
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
187
187
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
188
188
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
189
+ ROUTINE: autowork
189
190
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
190
191
  SKILLS_PROMPT: ${{ steps.skills.outputs.skills_prompt }}
191
192
  MODEL: ${{ steps.routine-config.outputs.model || 'gemini-3.8-flash-high' }}
@@ -197,7 +198,8 @@ jobs:
197
198
  PROMPT="You are the Autowork routine for this repository. A PR was recently merged. Read and follow .github/prompts/autowork.md. ${SKILLS_PROMPT} You are in Scan mode: converge on open PRs, close merged issues, and pick the next unblocked priority issue."
198
199
 
199
200
  set +e
200
- agy -p "$PROMPT" \
201
+ node .github/scripts/run-with-loop-guard.js \
202
+ -p "$PROMPT" \
201
203
  --model "$MODEL" \
202
204
  --output-format text \
203
205
  --print-timeout "$PRINT_TIMEOUT" \
@@ -252,6 +252,7 @@ jobs:
252
252
  GOOGLE_API_KEY: ${{ secrets.GEMINI_API_KEY }}
253
253
  ANTIGRAVITY_API_KEY: ${{ secrets.GEMINI_API_KEY }}
254
254
  GH_TOKEN: ${{ secrets.GH_PAT || github.token }}
255
+ ROUTINE: peer-review
255
256
  PR_NUMBER: ${{ github.event.pull_request.number || github.event.issue.number || inputs.pr_number }}
256
257
  PR_URL: ${{ github.event.pull_request.html_url || github.event.issue.html_url }}
257
258
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
@@ -275,7 +276,8 @@ jobs:
275
276
  fi
276
277
 
277
278
  set +e
278
- agy -p "$PROMPT" \
279
+ node .github/scripts/run-with-loop-guard.js \
280
+ -p "$PROMPT" \
279
281
  --model "$MODEL" \
280
282
  --output-format text \
281
283
  --print-timeout "$PRINT_TIMEOUT" \