claude-ide-bridge 2.25.34 → 2.25.40
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/README.md +2 -0
- package/dist/activityLog.d.ts +29 -0
- package/dist/activityLog.js +77 -0
- package/dist/activityLog.js.map +1 -1
- package/dist/automation.d.ts +31 -0
- package/dist/automation.js +105 -1
- package/dist/automation.js.map +1 -1
- package/dist/extensionClient.d.ts +3 -0
- package/dist/extensionClient.js +25 -2
- package/dist/extensionClient.js.map +1 -1
- package/dist/tools/activityLog.d.ts +34 -1
- package/dist/tools/activityLog.js +44 -2
- package/dist/tools/activityLog.js.map +1 -1
- package/dist/tools/getDiagnostics.js +6 -1
- package/dist/tools/getDiagnostics.js.map +1 -1
- package/dist/tools/github/actions.d.ts +85 -0
- package/dist/tools/github/actions.js +44 -4
- package/dist/tools/github/actions.js.map +1 -1
- package/dist/tools/github/issues.d.ts +141 -0
- package/dist/tools/github/issues.js +64 -5
- package/dist/tools/github/issues.js.map +1 -1
- package/dist/tools/github/pr.d.ts +224 -0
- package/dist/tools/github/pr.js +97 -6
- package/dist/tools/github/pr.js.map +1 -1
- package/dist/tools/lsp.js +9 -1
- package/dist/tools/lsp.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,8 @@ Install the companion extension, start the bridge, open Claude. That's it. Claud
|
|
|
14
14
|
Claude Code ──── bridge ──── VS Code extension ──── your editor state
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+

|
|
18
|
+
|
|
17
19
|
**Works from your phone.** SSH into your dev machine, send a message, watch Claude fix bugs and run tests on your home machine while you're away.
|
|
18
20
|
|
|
19
21
|
## Pick your path
|
package/dist/activityLog.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export type { ActivityEntry, ActivityListener, LifecycleEntry, TimelineEntry, } from "./activityTypes.js";
|
|
2
2
|
import type { ActivityEntry, ActivityListener, TimelineEntry } from "./activityTypes.js";
|
|
3
|
+
/** Default sliding window for co-occurrence (5 minutes). */
|
|
4
|
+
export declare const DEFAULT_CO_OCCURRENCE_WINDOW_MS: number;
|
|
3
5
|
export declare class ActivityLog {
|
|
4
6
|
private entries;
|
|
5
7
|
private lifecycleEntries;
|
|
@@ -7,6 +9,11 @@ export declare class ActivityLog {
|
|
|
7
9
|
private maxEntries;
|
|
8
10
|
private persistPath;
|
|
9
11
|
private readonly listeners;
|
|
12
|
+
/**
|
|
13
|
+
* Per-tool bounded ring of duration samples used for percentile computation.
|
|
14
|
+
* Capped at MAX_DURATION_SAMPLES per tool to bound memory.
|
|
15
|
+
*/
|
|
16
|
+
private readonly durationSamples;
|
|
10
17
|
constructor(maxEntries?: number);
|
|
11
18
|
/**
|
|
12
19
|
* Subscribe to real-time activity events.
|
|
@@ -39,4 +46,26 @@ export declare class ActivityLog {
|
|
|
39
46
|
avgDurationMs: number;
|
|
40
47
|
errors: number;
|
|
41
48
|
}>;
|
|
49
|
+
/**
|
|
50
|
+
* Per-tool percentiles (p50/p95/p99) computed from the bounded duration
|
|
51
|
+
* sample buffer. Returns null for any tool with fewer than 2 samples.
|
|
52
|
+
*/
|
|
53
|
+
percentiles(): Record<string, {
|
|
54
|
+
p50: number;
|
|
55
|
+
p95: number;
|
|
56
|
+
p99: number;
|
|
57
|
+
sampleCount: number;
|
|
58
|
+
}>;
|
|
59
|
+
/** Nearest-rank percentile from a pre-sorted array. */
|
|
60
|
+
private _percentileValue;
|
|
61
|
+
/**
|
|
62
|
+
* Tool-pair co-occurrence within a sliding time window.
|
|
63
|
+
* Counts how many times tool B was called within `windowMs` after tool A,
|
|
64
|
+
* across all entries in the in-memory buffer. Pairs are ordered (A < B
|
|
65
|
+
* alphabetically) to avoid double-counting. Returns sorted by count desc.
|
|
66
|
+
*/
|
|
67
|
+
coOccurrence(windowMs?: number): {
|
|
68
|
+
pair: string;
|
|
69
|
+
count: number;
|
|
70
|
+
}[];
|
|
42
71
|
}
|
package/dist/activityLog.js
CHANGED
|
@@ -5,6 +5,10 @@ function escapeLabelValue(s) {
|
|
|
5
5
|
}
|
|
6
6
|
const MAX_PERSIST_LINES = 10_000;
|
|
7
7
|
const MAX_PERSIST_BYTES = 1024 * 1024; // 1MB
|
|
8
|
+
/** Max duration samples kept per tool for percentile calculation. */
|
|
9
|
+
const MAX_DURATION_SAMPLES = 1_000;
|
|
10
|
+
/** Default sliding window for co-occurrence (5 minutes). */
|
|
11
|
+
export const DEFAULT_CO_OCCURRENCE_WINDOW_MS = 5 * 60 * 1_000;
|
|
8
12
|
export class ActivityLog {
|
|
9
13
|
entries = [];
|
|
10
14
|
lifecycleEntries = [];
|
|
@@ -12,6 +16,11 @@ export class ActivityLog {
|
|
|
12
16
|
maxEntries;
|
|
13
17
|
persistPath;
|
|
14
18
|
listeners = new Set();
|
|
19
|
+
/**
|
|
20
|
+
* Per-tool bounded ring of duration samples used for percentile computation.
|
|
21
|
+
* Capped at MAX_DURATION_SAMPLES per tool to bound memory.
|
|
22
|
+
*/
|
|
23
|
+
durationSamples = new Map();
|
|
15
24
|
constructor(maxEntries = 500) {
|
|
16
25
|
this.maxEntries = maxEntries;
|
|
17
26
|
this.persistPath = null;
|
|
@@ -144,6 +153,17 @@ export class ActivityLog {
|
|
|
144
153
|
};
|
|
145
154
|
this.entries.push(entry);
|
|
146
155
|
this._appendToDisk("tool", entry);
|
|
156
|
+
// Accumulate duration sample for percentile tracking
|
|
157
|
+
let samples = this.durationSamples.get(tool);
|
|
158
|
+
if (!samples) {
|
|
159
|
+
samples = [];
|
|
160
|
+
this.durationSamples.set(tool, samples);
|
|
161
|
+
}
|
|
162
|
+
samples.push(durationMs);
|
|
163
|
+
if (samples.length > MAX_DURATION_SAMPLES * 1.2) {
|
|
164
|
+
// Batch eviction: keep newest MAX_DURATION_SAMPLES to amortise splice cost
|
|
165
|
+
this.durationSamples.set(tool, samples.slice(-MAX_DURATION_SAMPLES));
|
|
166
|
+
}
|
|
147
167
|
for (const listener of this.listeners) {
|
|
148
168
|
try {
|
|
149
169
|
listener("tool", entry);
|
|
@@ -249,5 +269,62 @@ export class ActivityLog {
|
|
|
249
269
|
}
|
|
250
270
|
return result;
|
|
251
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Per-tool percentiles (p50/p95/p99) computed from the bounded duration
|
|
274
|
+
* sample buffer. Returns null for any tool with fewer than 2 samples.
|
|
275
|
+
*/
|
|
276
|
+
percentiles() {
|
|
277
|
+
const result = {};
|
|
278
|
+
for (const [tool, raw] of this.durationSamples) {
|
|
279
|
+
if (raw.length < 2)
|
|
280
|
+
continue;
|
|
281
|
+
const sorted = [...raw].sort((a, b) => a - b);
|
|
282
|
+
const n = sorted.length;
|
|
283
|
+
result[tool] = {
|
|
284
|
+
p50: this._percentileValue(sorted, 50),
|
|
285
|
+
p95: this._percentileValue(sorted, 95),
|
|
286
|
+
p99: this._percentileValue(sorted, 99),
|
|
287
|
+
sampleCount: n,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
/** Nearest-rank percentile from a pre-sorted array. */
|
|
293
|
+
_percentileValue(sorted, pct) {
|
|
294
|
+
const idx = Math.ceil((pct / 100) * sorted.length) - 1;
|
|
295
|
+
return Math.round(sorted[Math.max(0, idx)] ?? 0);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Tool-pair co-occurrence within a sliding time window.
|
|
299
|
+
* Counts how many times tool B was called within `windowMs` after tool A,
|
|
300
|
+
* across all entries in the in-memory buffer. Pairs are ordered (A < B
|
|
301
|
+
* alphabetically) to avoid double-counting. Returns sorted by count desc.
|
|
302
|
+
*/
|
|
303
|
+
coOccurrence(windowMs = DEFAULT_CO_OCCURRENCE_WINDOW_MS) {
|
|
304
|
+
const counts = new Map();
|
|
305
|
+
// entries are chronological; use two-pointer sliding window
|
|
306
|
+
const n = this.entries.length;
|
|
307
|
+
for (let i = 0; i < n; i++) {
|
|
308
|
+
const a = this.entries[i];
|
|
309
|
+
if (!a)
|
|
310
|
+
continue;
|
|
311
|
+
const tA = new Date(a.timestamp).getTime();
|
|
312
|
+
for (let j = i + 1; j < n; j++) {
|
|
313
|
+
const b = this.entries[j];
|
|
314
|
+
if (!b)
|
|
315
|
+
continue;
|
|
316
|
+
const tB = new Date(b.timestamp).getTime();
|
|
317
|
+
if (tB - tA > windowMs)
|
|
318
|
+
break; // sorted chronologically — safe to break
|
|
319
|
+
if (a.tool === b.tool)
|
|
320
|
+
continue; // skip self-pairs
|
|
321
|
+
const key = a.tool < b.tool ? `${a.tool}|${b.tool}` : `${b.tool}|${a.tool}`;
|
|
322
|
+
counts.set(key, (counts.get(key) ?? 0) + 1);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return [...counts.entries()]
|
|
326
|
+
.map(([pair, count]) => ({ pair, count }))
|
|
327
|
+
.sort((a, b) => b.count - a.count);
|
|
328
|
+
}
|
|
252
329
|
}
|
|
253
330
|
//# sourceMappingURL=activityLog.js.map
|
package/dist/activityLog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activityLog.js","sourceRoot":"","sources":["../src/activityLog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"activityLog.js","sourceRoot":"","sources":["../src/activityLog.ts"],"names":[],"mappings":"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"}
|
package/dist/automation.d.ts
CHANGED
|
@@ -108,6 +108,17 @@ export interface OnTestRunPolicy extends PromptSource {
|
|
|
108
108
|
/** Minimum ms between triggers. Enforced minimum: 5000. */
|
|
109
109
|
cooldownMs: number;
|
|
110
110
|
}
|
|
111
|
+
export interface OnTestPassAfterFailurePolicy extends PromptSource {
|
|
112
|
+
enabled: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Fired when a test run transitions from failing → passing for the same runner.
|
|
115
|
+
* Per-runner state is tracked so vitest passing after a jest failure does NOT
|
|
116
|
+
* trigger — only the runner that was previously failing then passes triggers the hook.
|
|
117
|
+
* Placeholders (inline prompt only): {{runner}}, {{passed}}, {{total}}
|
|
118
|
+
*/
|
|
119
|
+
/** Minimum ms between triggers. Enforced minimum: 5000. */
|
|
120
|
+
cooldownMs: number;
|
|
121
|
+
}
|
|
111
122
|
/** Minimal test run result passed to handleTestRun — avoids importing TestResult from tool files. */
|
|
112
123
|
export interface TestRunResult {
|
|
113
124
|
runners: string[];
|
|
@@ -278,6 +289,8 @@ export interface AutomationPolicy {
|
|
|
278
289
|
onInstructionsLoaded?: OnInstructionsLoadedPolicy;
|
|
279
290
|
/** Fired after every runTests call (or only on failures, depending on onFailureOnly). */
|
|
280
291
|
onTestRun?: OnTestRunPolicy;
|
|
292
|
+
/** Fired when a test run transitions from failing → passing for the same runner. */
|
|
293
|
+
onTestPassAfterFailure?: OnTestPassAfterFailurePolicy;
|
|
281
294
|
/** Fired after every successful gitCommit call. */
|
|
282
295
|
onGitCommit?: OnGitCommitPolicy;
|
|
283
296
|
/** Fired after every successful gitPush call. */
|
|
@@ -338,6 +351,15 @@ export declare class AutomationHooks {
|
|
|
338
351
|
private activeFileChangedTasks;
|
|
339
352
|
/** Active task ID for the test-run handler (workspace-global). */
|
|
340
353
|
private activeTestRunTaskId;
|
|
354
|
+
/** Active task ID for the test-pass-after-failure handler (workspace-global). */
|
|
355
|
+
private activeTestPassAfterFailureTaskId;
|
|
356
|
+
/**
|
|
357
|
+
* Per-runner last outcome — used to detect fail→pass transitions.
|
|
358
|
+
* Key: runner name (e.g. "vitest", "jest"). Value: "pass" | "fail".
|
|
359
|
+
* Stored separately per runner so a vitest pass doesn't incorrectly trigger
|
|
360
|
+
* when a jest run was the one that previously failed.
|
|
361
|
+
*/
|
|
362
|
+
private lastTestOutcomeByRunner;
|
|
341
363
|
/** Active task ID for the git-commit handler (workspace-global). */
|
|
342
364
|
private activeGitCommitTaskId;
|
|
343
365
|
/** Active task ID for the git-push handler (workspace-global). */
|
|
@@ -414,6 +436,11 @@ export declare class AutomationHooks {
|
|
|
414
436
|
* Triggers an automation task when tests fail (or on every run if onFailureOnly is false).
|
|
415
437
|
*/
|
|
416
438
|
handleTestRun(result: TestRunResult): void;
|
|
439
|
+
/**
|
|
440
|
+
* Internal — fires onTestPassAfterFailure when a specific runner transitions
|
|
441
|
+
* from failing → passing. Called from handleTestRun after outcome state update.
|
|
442
|
+
*/
|
|
443
|
+
private _handleTestPassAfterFailure;
|
|
417
444
|
/**
|
|
418
445
|
* Called after a successful gitCommit tool call.
|
|
419
446
|
* Fires the onGitCommit automation hook if configured.
|
|
@@ -475,6 +502,10 @@ export declare class AutomationHooks {
|
|
|
475
502
|
onFailureOnly: boolean;
|
|
476
503
|
cooldownMs: number;
|
|
477
504
|
} | null;
|
|
505
|
+
onTestPassAfterFailure: {
|
|
506
|
+
enabled: boolean;
|
|
507
|
+
cooldownMs: number;
|
|
508
|
+
} | null;
|
|
478
509
|
onGitCommit: {
|
|
479
510
|
enabled: boolean;
|
|
480
511
|
cooldownMs: number;
|
package/dist/automation.js
CHANGED
|
@@ -326,6 +326,24 @@ export function loadPolicy(filePath) {
|
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
}
|
|
329
|
+
// Validate onTestPassAfterFailure
|
|
330
|
+
if (policy.onTestPassAfterFailure !== undefined) {
|
|
331
|
+
const tpaf = policy.onTestPassAfterFailure;
|
|
332
|
+
if (typeof tpaf !== "object" || tpaf === null) {
|
|
333
|
+
throw new Error(`"onTestPassAfterFailure" must be an object`);
|
|
334
|
+
}
|
|
335
|
+
if (typeof tpaf.enabled !== "boolean") {
|
|
336
|
+
throw new Error(`"onTestPassAfterFailure.enabled" must be a boolean`);
|
|
337
|
+
}
|
|
338
|
+
validatePromptSource("onTestPassAfterFailure", tpaf);
|
|
339
|
+
if (typeof tpaf.cooldownMs !== "number" ||
|
|
340
|
+
!Number.isFinite(tpaf.cooldownMs)) {
|
|
341
|
+
throw new Error(`"onTestPassAfterFailure.cooldownMs" must be a number`);
|
|
342
|
+
}
|
|
343
|
+
if (tpaf.cooldownMs < MIN_COOLDOWN_MS) {
|
|
344
|
+
tpaf.cooldownMs = MIN_COOLDOWN_MS;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
329
347
|
// Validate onGitCommit
|
|
330
348
|
if (policy.onGitCommit !== undefined) {
|
|
331
349
|
const gc = policy.onGitCommit;
|
|
@@ -558,6 +576,15 @@ export class AutomationHooks {
|
|
|
558
576
|
activeFileChangedTasks = new Map();
|
|
559
577
|
/** Active task ID for the test-run handler (workspace-global). */
|
|
560
578
|
activeTestRunTaskId = null;
|
|
579
|
+
/** Active task ID for the test-pass-after-failure handler (workspace-global). */
|
|
580
|
+
activeTestPassAfterFailureTaskId = null;
|
|
581
|
+
/**
|
|
582
|
+
* Per-runner last outcome — used to detect fail→pass transitions.
|
|
583
|
+
* Key: runner name (e.g. "vitest", "jest"). Value: "pass" | "fail".
|
|
584
|
+
* Stored separately per runner so a vitest pass doesn't incorrectly trigger
|
|
585
|
+
* when a jest run was the one that previously failed.
|
|
586
|
+
*/
|
|
587
|
+
lastTestOutcomeByRunner = new Map();
|
|
561
588
|
/** Active task ID for the git-commit handler (workspace-global). */
|
|
562
589
|
activeGitCommitTaskId = null;
|
|
563
590
|
/** Active task ID for the git-push handler (workspace-global). */
|
|
@@ -1121,10 +1148,20 @@ export class AutomationHooks {
|
|
|
1121
1148
|
* Triggers an automation task when tests fail (or on every run if onFailureOnly is false).
|
|
1122
1149
|
*/
|
|
1123
1150
|
handleTestRun(result) {
|
|
1151
|
+
const failureCount = result.summary.failed + result.summary.errored;
|
|
1152
|
+
// Update per-runner outcome state unconditionally so onTestPassAfterFailure
|
|
1153
|
+
// can detect fail→pass transitions even when onTestRun is disabled/absent.
|
|
1154
|
+
for (const runner of result.runners) {
|
|
1155
|
+
const prev = this.lastTestOutcomeByRunner.get(runner);
|
|
1156
|
+
const current = failureCount === 0 ? "pass" : "fail";
|
|
1157
|
+
this.lastTestOutcomeByRunner.set(runner, current);
|
|
1158
|
+
if (prev === "fail" && current === "pass") {
|
|
1159
|
+
this._handleTestPassAfterFailure(result, runner);
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1124
1162
|
const cfg = this.policy.onTestRun;
|
|
1125
1163
|
if (!cfg?.enabled)
|
|
1126
1164
|
return;
|
|
1127
|
-
const failureCount = result.summary.failed + result.summary.errored;
|
|
1128
1165
|
// Honour onFailureOnly: skip trigger when all tests pass
|
|
1129
1166
|
if (cfg.onFailureOnly && failureCount === 0)
|
|
1130
1167
|
return;
|
|
@@ -1208,6 +1245,67 @@ export class AutomationHooks {
|
|
|
1208
1245
|
this.log(`[automation] failed to enqueue test-run task: ${err instanceof Error ? err.message : String(err)}`);
|
|
1209
1246
|
}
|
|
1210
1247
|
}
|
|
1248
|
+
/**
|
|
1249
|
+
* Internal — fires onTestPassAfterFailure when a specific runner transitions
|
|
1250
|
+
* from failing → passing. Called from handleTestRun after outcome state update.
|
|
1251
|
+
*/
|
|
1252
|
+
_handleTestPassAfterFailure(result, runner) {
|
|
1253
|
+
const cfg = this.policy.onTestPassAfterFailure;
|
|
1254
|
+
if (!cfg?.enabled)
|
|
1255
|
+
return;
|
|
1256
|
+
// Loop guard: skip if a task is still pending/running
|
|
1257
|
+
if (this.activeTestPassAfterFailureTaskId) {
|
|
1258
|
+
const existing = this.orchestrator.getTask(this.activeTestPassAfterFailureTaskId);
|
|
1259
|
+
if (existing &&
|
|
1260
|
+
(existing.status === "pending" || existing.status === "running")) {
|
|
1261
|
+
this.log(`[automation] skipping test-pass-after-failure — task ${this.activeTestPassAfterFailureTaskId.slice(0, 8)} still active`);
|
|
1262
|
+
return;
|
|
1263
|
+
}
|
|
1264
|
+
this.activeTestPassAfterFailureTaskId = null;
|
|
1265
|
+
}
|
|
1266
|
+
// Cooldown check (workspace-global key)
|
|
1267
|
+
const key = "testPassAfterFailure:global";
|
|
1268
|
+
const now = Date.now();
|
|
1269
|
+
const last = this.lastTrigger.get(key) ?? 0;
|
|
1270
|
+
if (now - last < cfg.cooldownMs) {
|
|
1271
|
+
this.log(`[automation] cooldown active for test-pass-after-failure (${cfg.cooldownMs - (now - last)}ms remaining)`);
|
|
1272
|
+
return;
|
|
1273
|
+
}
|
|
1274
|
+
this._pruneLastTrigger(now);
|
|
1275
|
+
let prompt;
|
|
1276
|
+
if (cfg.promptName) {
|
|
1277
|
+
const resolved = this._resolveNamedPrompt(cfg.promptName, cfg.promptArgs ?? {}, {
|
|
1278
|
+
runner,
|
|
1279
|
+
passed: String(result.summary.passed),
|
|
1280
|
+
total: String(result.summary.total),
|
|
1281
|
+
});
|
|
1282
|
+
if (resolved === null)
|
|
1283
|
+
return;
|
|
1284
|
+
prompt = resolved;
|
|
1285
|
+
}
|
|
1286
|
+
else {
|
|
1287
|
+
const nonce = crypto.randomBytes(6).toString("hex");
|
|
1288
|
+
prompt =
|
|
1289
|
+
(cfg.prompt ?? "")
|
|
1290
|
+
.replace(/\{\{runner\}\}/g, untrustedBlock("TEST RUNNER", runner, nonce))
|
|
1291
|
+
.replace(/\{\{passed\}\}/g, String(result.summary.passed))
|
|
1292
|
+
.replace(/\{\{total\}\}/g, String(result.summary.total)) ?? "";
|
|
1293
|
+
}
|
|
1294
|
+
prompt = truncatePrompt(buildHookMetadata("onTestPassAfterFailure") + prompt);
|
|
1295
|
+
try {
|
|
1296
|
+
const taskId = this._enqueueAutomationTask({
|
|
1297
|
+
prompt,
|
|
1298
|
+
triggerSource: "onTestPassAfterFailure",
|
|
1299
|
+
hookCfg: cfg,
|
|
1300
|
+
});
|
|
1301
|
+
this.lastTrigger.set(key, now);
|
|
1302
|
+
this.activeTestPassAfterFailureTaskId = taskId;
|
|
1303
|
+
this.log(`[automation] triggered test-pass-after-failure task ${taskId.slice(0, 8)} (runner: ${runner})`);
|
|
1304
|
+
}
|
|
1305
|
+
catch (err) {
|
|
1306
|
+
this.log(`[automation] failed to enqueue test-pass-after-failure task: ${err instanceof Error ? err.message : String(err)}`);
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1211
1309
|
/**
|
|
1212
1310
|
* Called after a successful gitCommit tool call.
|
|
1213
1311
|
* Fires the onGitCommit automation hook if configured.
|
|
@@ -1829,6 +1927,12 @@ export class AutomationHooks {
|
|
|
1829
1927
|
cooldownMs: p.onTestRun.cooldownMs,
|
|
1830
1928
|
}
|
|
1831
1929
|
: null,
|
|
1930
|
+
onTestPassAfterFailure: p.onTestPassAfterFailure
|
|
1931
|
+
? {
|
|
1932
|
+
enabled: p.onTestPassAfterFailure.enabled,
|
|
1933
|
+
cooldownMs: p.onTestPassAfterFailure.cooldownMs,
|
|
1934
|
+
}
|
|
1935
|
+
: null,
|
|
1832
1936
|
onGitCommit: p.onGitCommit
|
|
1833
1937
|
? {
|
|
1834
1938
|
enabled: p.onGitCommit.enabled,
|