jonah-fleet 1.24.0 → 1.25.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,20 @@ 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.25.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.24.0...v1.25.0) (2026-09-23)
9
+
10
+
11
+ ### Features
12
+
13
+ * **guard:** enrich LoopGuard diagnostics with action details and provision MCP in review workflows ([#367](https://github.com/juliendurandeu/jonah-fleet/issues/367)) ([a93d783](https://github.com/juliendurandeu/jonah-fleet/commit/a93d7833fd3caf6b5a4f8e50ccfeaa2d1e146c36))
14
+
15
+ ## [Unreleased]
16
+
17
+ ### Features
18
+
19
+ * **guard:** capture action arguments on LoopGuard circuit breaker trips, enrich failure cards and reports with formatted action details, and surface active tool commands in runner stdout.
20
+ * **workflows:** provision MCP servers for Antigravity CLI in `analytics-review-cron.yml` and `design-review-cron.yml`.
21
+
8
22
  ## [1.24.0](https://github.com/juliendurandeu/jonah-fleet/compare/v1.23.1...v1.24.0) (2026-09-23)
9
23
 
10
24
 
package/dist/index.js CHANGED
@@ -3623,7 +3623,8 @@ var LoopGuard = class {
3623
3623
  message: `Tool circuit breaker tripped: ${this.consecutiveErrorCount} consecutive identical tool errors for '${toolName}' with unchanged arguments.`,
3624
3624
  toolName,
3625
3625
  actionHash: hash,
3626
- count: this.consecutiveErrorCount
3626
+ count: this.consecutiveErrorCount,
3627
+ args
3627
3628
  });
3628
3629
  }
3629
3630
  } else {
@@ -3646,7 +3647,8 @@ var LoopGuard = class {
3646
3647
  message: `Action repetition loop detected: tool '${toolName}' called ${repetitionCount} times with identical parameters within sliding window of ${this.slidingWindowSize}.`,
3647
3648
  toolName,
3648
3649
  actionHash: hash,
3649
- count: repetitionCount
3650
+ count: repetitionCount,
3651
+ args
3650
3652
  });
3651
3653
  }
3652
3654
  }
@@ -3674,7 +3676,8 @@ var LoopGuard = class {
3674
3676
  message: `Alternating ping-pong action loop detected: ${this.pingPongThreshold} consecutive alternating cycles between tools (A-B-A-B-A-B).`,
3675
3677
  toolName,
3676
3678
  actionHash: hash,
3677
- count: this.pingPongThreshold
3679
+ count: this.pingPongThreshold,
3680
+ args
3678
3681
  });
3679
3682
  }
3680
3683
  }
@@ -3717,6 +3720,18 @@ var LoopGuard = class {
3717
3720
  return trip;
3718
3721
  }
3719
3722
  };
3723
+ function formatActionSummary(toolName, args) {
3724
+ if (!args) return toolName;
3725
+ if (typeof args === "string") return `${toolName}: ${args}`;
3726
+ if (args.CommandLine) return `${toolName}: ${args.CommandLine}`;
3727
+ if (args.command) return `${toolName}: ${args.command}`;
3728
+ if (args.TargetFile) return `${toolName}: ${args.TargetFile}`;
3729
+ if (args.path) return `${toolName}: ${args.path}`;
3730
+ if (args.AbsolutePath) return `${toolName}: ${args.AbsolutePath}`;
3731
+ if (args.Query) return `${toolName}: ${args.Query}`;
3732
+ const str = canonicalStringify(args);
3733
+ return str.length > 200 ? `${toolName}: ${str.slice(0, 197)}...` : `${toolName}: ${str}`;
3734
+ }
3720
3735
  function formatLoopGuardFailureCard(options) {
3721
3736
  const serverUrl = options.serverUrl || process.env.GITHUB_SERVER_URL || "https://github.com";
3722
3737
  const repository = options.repository || process.env.GITHUB_REPOSITORY || "";
@@ -3728,16 +3743,19 @@ function formatLoopGuardFailureCard(options) {
3728
3743
  `- **Status**: Loop guard circuit breaker tripped (\`loop_circuit_breaker\`)`,
3729
3744
  `- **Root Cause Category**: \`loop_circuit_breaker\``,
3730
3745
  `- **Trigger**: \`${options.trip.reason}\``,
3731
- `- **Reason**: ${options.trip.message}`,
3732
- `- **Action**: Process terminated to prevent runaway token burn`
3746
+ `- **Reason**: ${options.trip.message}`
3733
3747
  ];
3748
+ if (options.trip.args !== void 0) {
3749
+ lines.push(`- **Triggered Action**: \`${formatActionSummary(options.trip.toolName, options.trip.args)}\``);
3750
+ }
3751
+ lines.push(`- **Action**: Process terminated to prevent runaway token burn`);
3734
3752
  if (logUrl) {
3735
3753
  lines.push(`- **Action Log**: [View Run Logs](${logUrl})`);
3736
3754
  }
3737
3755
  return lines.join("\n");
3738
3756
  }
3739
3757
  function formatLoopGuardReport(options) {
3740
- return [
3758
+ const reportLines = [
3741
3759
  `# Run Report`,
3742
3760
  ``,
3743
3761
  `## Result`,
@@ -3758,10 +3776,16 @@ function formatLoopGuardReport(options) {
3758
3776
  `The autonomous execution was halted by the deterministic loop-guard wrapper.`,
3759
3777
  `- **Category**: \`loop_circuit_breaker\``,
3760
3778
  `- **Trigger**: \`${options.trip.reason}\``,
3761
- `- **Tool**: \`${options.trip.toolName}\``,
3779
+ `- **Tool**: \`${options.trip.toolName}\``
3780
+ ];
3781
+ if (options.trip.args !== void 0) {
3782
+ reportLines.push(`- **Parameters**: \`${formatActionSummary(options.trip.toolName, options.trip.args)}\``);
3783
+ }
3784
+ reportLines.push(
3762
3785
  `- **Action Hash**: \`${options.trip.actionHash}\``,
3763
3786
  `- **Message**: ${options.trip.message}`
3764
- ].join("\n");
3787
+ );
3788
+ return reportLines.join("\n");
3765
3789
  }
3766
3790
 
3767
3791
  // src/lib/runner.ts
@@ -6297,6 +6321,7 @@ export {
6297
6321
  LoopGuard,
6298
6322
  canonicalStringify,
6299
6323
  computeActionHash,
6324
+ formatActionSummary,
6300
6325
  formatLoopGuardFailureCard,
6301
6326
  formatLoopGuardReport
6302
6327
  };
@@ -5,6 +5,7 @@ export interface LoopGuardTrip {
5
5
  toolName: string;
6
6
  actionHash: string;
7
7
  count: number;
8
+ args?: any;
8
9
  }
9
10
  export interface ActionRecord {
10
11
  toolName: string;
@@ -57,6 +58,10 @@ export declare class LoopGuard {
57
58
  feedLine(line: string): LoopGuardTrip | null;
58
59
  private triggerTrip;
59
60
  }
61
+ /**
62
+ * Formats a concise, human-readable summary of a tool action and its parameters.
63
+ */
64
+ export declare function formatActionSummary(toolName: string, args: any): string;
60
65
  export interface LoopGuardFailureCardOptions {
61
66
  routine: string;
62
67
  trip: LoopGuardTrip;
@@ -1 +1 @@
1
- {"version":3,"file":"loop-guard.d.ts","sourceRoot":"","sources":["../../src/lib/loop-guard.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,CAAgC;IAE/C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,aAAa,CAA8B;IAEnD,YAAY,OAAO,GAAE,gBAAqB,EAMzC;IAEM,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAE9D;IAEM,SAAS,IAAI,OAAO,CAE1B;IAEM,OAAO,IAAI,aAAa,GAAG,IAAI,CAErC;IAEM,UAAU,IAAI,YAAY,EAAE,CAElC;IAEM,KAAK,IAAI,IAAI,CAKnB;IAED;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,OAAe,GAAG,aAAa,GAAG,IAAI,CAuH/F;IAED;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAwBlD;IAED,OAAO,CAAC,WAAW;CAWpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CAqBvF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CA0B7E"}
1
+ {"version":3,"file":"loop-guard.d.ts","sourceRoot":"","sources":["../../src/lib/loop-guard.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,WAAW,GAAG,oBAAoB,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,MAAM,CAAC,CAAgC;IAE/C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,aAAa,CAA8B;IAEnD,YAAY,OAAO,GAAE,gBAAqB,EAMzC;IAEM,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI,CAE9D;IAEM,SAAS,IAAI,OAAO,CAE1B;IAEM,OAAO,IAAI,aAAa,GAAG,IAAI,CAErC;IAEM,UAAU,IAAI,YAAY,EAAE,CAElC;IAEM,KAAK,IAAI,IAAI,CAKnB;IAED;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAE,OAAe,GAAG,aAAa,GAAG,IAAI,CA0H/F;IAED;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAwBlD;IAED,OAAO,CAAC,WAAW;CAWpB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAWvE;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CA0BvF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAmC7E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jonah-fleet",
3
- "version": "1.24.0",
3
+ "version": "1.25.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",
@@ -98,6 +98,7 @@ export class LoopGuard {
98
98
  toolName,
99
99
  actionHash: hash,
100
100
  count: this.consecutiveErrorCount,
101
+ args,
101
102
  });
102
103
  }
103
104
  } else {
@@ -126,6 +127,7 @@ export class LoopGuard {
126
127
  toolName,
127
128
  actionHash: hash,
128
129
  count: repetitionCount,
130
+ args,
129
131
  });
130
132
  }
131
133
  }
@@ -167,6 +169,7 @@ export class LoopGuard {
167
169
  toolName,
168
170
  actionHash: hash,
169
171
  count: this.pingPongThreshold,
172
+ args,
170
173
  });
171
174
  }
172
175
  }
@@ -209,6 +212,22 @@ export class LoopGuard {
209
212
  }
210
213
  }
211
214
 
215
+ /**
216
+ * Formats a concise, human-readable summary of a tool action and its parameters.
217
+ */
218
+ export function formatActionSummary(toolName, args) {
219
+ if (!args) return toolName;
220
+ if (typeof args === 'string') return `${toolName}: ${args}`;
221
+ if (args.CommandLine) return `${toolName}: ${args.CommandLine}`;
222
+ if (args.command) return `${toolName}: ${args.command}`;
223
+ if (args.TargetFile) return `${toolName}: ${args.TargetFile}`;
224
+ if (args.path) return `${toolName}: ${args.path}`;
225
+ if (args.AbsolutePath) return `${toolName}: ${args.AbsolutePath}`;
226
+ if (args.Query) return `${toolName}: ${args.Query}`;
227
+ const str = canonicalStringify(args);
228
+ return str.length > 200 ? `${toolName}: ${str.slice(0, 197)}...` : `${toolName}: ${str}`;
229
+ }
230
+
212
231
  export function formatLoopGuardFailureCard(options) {
213
232
  const serverUrl = options.serverUrl || process.env.GITHUB_SERVER_URL || 'https://github.com';
214
233
  const repository = options.repository || process.env.GITHUB_REPOSITORY || '';
@@ -222,9 +241,14 @@ export function formatLoopGuardFailureCard(options) {
222
241
  `- **Root Cause Category**: \`loop_circuit_breaker\``,
223
242
  `- **Trigger**: \`${options.trip.reason}\``,
224
243
  `- **Reason**: ${options.trip.message}`,
225
- `- **Action**: Process terminated to prevent runaway token burn`,
226
244
  ];
227
245
 
246
+ if (options.trip.args !== undefined) {
247
+ lines.push(`- **Triggered Action**: \`${formatActionSummary(options.trip.toolName, options.trip.args)}\``);
248
+ }
249
+
250
+ lines.push(`- **Action**: Process terminated to prevent runaway token burn`);
251
+
228
252
  if (logUrl) {
229
253
  lines.push(`- **Action Log**: [View Run Logs](${logUrl})`);
230
254
  }
@@ -233,7 +257,7 @@ export function formatLoopGuardFailureCard(options) {
233
257
  }
234
258
 
235
259
  export function formatLoopGuardReport(options) {
236
- return [
260
+ const reportLines = [
237
261
  `# Run Report`,
238
262
  ``,
239
263
  `## Result`,
@@ -255,9 +279,18 @@ export function formatLoopGuardReport(options) {
255
279
  `- **Category**: \`loop_circuit_breaker\``,
256
280
  `- **Trigger**: \`${options.trip.reason}\``,
257
281
  `- **Tool**: \`${options.trip.toolName}\``,
282
+ ];
283
+
284
+ if (options.trip.args !== undefined) {
285
+ reportLines.push(`- **Parameters**: \`${formatActionSummary(options.trip.toolName, options.trip.args)}\``);
286
+ }
287
+
288
+ reportLines.push(
258
289
  `- **Action Hash**: \`${options.trip.actionHash}\``,
259
290
  `- **Message**: ${options.trip.message}`,
260
- ].join('\n');
291
+ );
292
+
293
+ return reportLines.join('\n');
261
294
  }
262
295
 
263
296
  class LineParser {
@@ -332,6 +365,9 @@ async function main() {
332
365
  onTrip: (trip) => {
333
366
  tripped = trip;
334
367
  console.error(`\n🚨 ::error::[LoopGuard] ${trip.message}`);
368
+ if (trip.args) {
369
+ console.error(`🚨 Action Details: ${formatActionSummary(trip.toolName, trip.args)}`);
370
+ }
335
371
 
336
372
  if (childProcess && !childProcess.killed) {
337
373
  console.error(`šŸ›‘ Terminating runner process with SIGTERM...`);
@@ -364,12 +400,14 @@ async function main() {
364
400
  }
365
401
  } else if (su.step_type === 'tool') {
366
402
  const name = su.tool_name || su.tool_info?.name || 'tool';
403
+ const params = su.tool_info?.parameters;
404
+ const summary = formatActionSummary(name, params);
367
405
  if (su.state === 'ACTIVE') {
368
- console.log(`\n[tool:start] ${name}`);
406
+ console.log(`\n[tool:start] ${summary}`);
369
407
  } else if (su.state === 'DONE') {
370
- console.log(`[tool:done] ${name}`);
408
+ console.log(`[tool:done] ${summary}`);
371
409
  } else if (su.state === 'ERROR') {
372
- console.log(`[tool:error] ${name}`);
410
+ console.log(`[tool:error] ${summary}`);
373
411
  }
374
412
  }
375
413
  } else if (parsed.event === 'result' && parsed.result?.response) {
@@ -82,6 +82,21 @@ jobs:
82
82
  fi
83
83
  echo "āœ“ Preflight credential validation passed."
84
84
 
85
+ - name: Configure MCP servers for Antigravity CLI
86
+ env:
87
+ POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }}
88
+ VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
89
+ run: |
90
+ if [ -n "$POSTHOG_API_KEY" ]; then
91
+ echo "Configuring PostHog MCP server..."
92
+ agy mcp add --header "Authorization: Bearer $POSTHOG_API_KEY" posthog https://mcp.posthog.com/mcp || true
93
+ fi
94
+ if [ -n "$VERCEL_TOKEN" ]; then
95
+ echo "Configuring Vercel MCP server..."
96
+ agy mcp add --header "Authorization: Bearer $VERCEL_TOKEN" vercel https://mcp.vercel.com || true
97
+ fi
98
+ agy mcp list || true
99
+
85
100
  - name: Discover and compile domain skills (SwarmClaw Pattern #4)
86
101
  id: skills
87
102
  run: |
@@ -89,6 +89,16 @@ jobs:
89
89
  fi
90
90
  echo "āœ“ Preflight credential validation passed."
91
91
 
92
+ - name: Configure MCP servers for Antigravity CLI
93
+ env:
94
+ VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
95
+ run: |
96
+ if [ -n "$VERCEL_TOKEN" ]; then
97
+ echo "Configuring Vercel MCP server..."
98
+ agy mcp add --header "Authorization: Bearer $VERCEL_TOKEN" vercel https://mcp.vercel.com || true
99
+ fi
100
+ agy mcp list || true
101
+
92
102
  - name: Discover and compile domain skills (SwarmClaw Pattern #4)
93
103
  id: skills
94
104
  run: |
@@ -129,7 +139,6 @@ jobs:
129
139
  ROUTINE: design-review
130
140
  ROUTINE_ISSUE_NUMBER: ${{ steps.run-issue.outputs.issue_number }}
131
141
  VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
132
- POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }}
133
142
  TARGET_SURFACE: ${{ inputs.target_surface }}
134
143
  SKILLS_PROMPT: ${{ steps.skills.outputs.skills_prompt }}
135
144
  GITHUB_SERVER_URL: ${{ github.server_url }}