patchwork-os 0.2.0-beta.0 → 0.2.0-beta.2
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 +4 -1
- package/deploy/deploy-dashboard.sh +25 -1
- package/deploy/macos/README.md +153 -0
- package/deploy/macos/com.patchwork.bridge.plist.template +54 -0
- package/deploy/macos/com.patchwork.tunnel.plist.template +76 -0
- package/deploy/macos/install-mac-bridge.sh +244 -0
- package/deploy/macos/uninstall-mac-bridge.sh +22 -0
- package/dist/analyticsAggregator.d.ts +5 -1
- package/dist/analyticsAggregator.js +15 -4
- package/dist/analyticsAggregator.js.map +1 -1
- package/dist/analyticsPrefs.d.ts +11 -0
- package/dist/analyticsPrefs.js +33 -0
- package/dist/analyticsPrefs.js.map +1 -1
- package/dist/approvalHttp.d.ts +14 -0
- package/dist/approvalHttp.js +172 -1
- package/dist/approvalHttp.js.map +1 -1
- package/dist/approvalQueue.d.ts +27 -2
- package/dist/approvalQueue.js +44 -7
- package/dist/approvalQueue.js.map +1 -1
- package/dist/automation.d.ts +34 -3
- package/dist/automation.js +85 -10
- package/dist/automation.js.map +1 -1
- package/dist/bridge.js +39 -27
- package/dist/bridge.js.map +1 -1
- package/dist/claudeDriver.d.ts +0 -16
- package/dist/claudeDriver.js +19 -20
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeMdPatch.d.ts +9 -3
- package/dist/claudeMdPatch.js +79 -13
- package/dist/claudeMdPatch.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +12 -0
- package/dist/claudeOrchestrator.js +7 -2
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/marketplace.d.ts +15 -10
- package/dist/commands/marketplace.js +27 -115
- package/dist/commands/marketplace.js.map +1 -1
- package/dist/commands/recipe.js +10 -1
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commitIssueLinkLog.d.ts +8 -0
- package/dist/commitIssueLinkLog.js +53 -1
- package/dist/commitIssueLinkLog.js.map +1 -1
- package/dist/config.d.ts +11 -3
- package/dist/config.js +32 -2
- package/dist/config.js.map +1 -1
- package/dist/connectorRoutes.js +63 -372
- package/dist/connectorRoutes.js.map +1 -1
- package/dist/connectors/baseConnector.js +25 -3
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/jira.js +18 -1
- package/dist/connectors/jira.js.map +1 -1
- package/dist/drivers/claude/subprocess.d.ts +12 -2
- package/dist/drivers/claude/subprocess.js +79 -6
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/gemini/api.d.ts +18 -0
- package/dist/drivers/gemini/api.js +29 -0
- package/dist/drivers/gemini/api.js.map +1 -0
- package/dist/drivers/gemini/index.d.ts +22 -0
- package/dist/drivers/gemini/index.js +240 -129
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/index.d.ts +3 -1
- package/dist/drivers/index.js +9 -1
- package/dist/drivers/index.js.map +1 -1
- package/dist/drivers/local/index.d.ts +43 -0
- package/dist/drivers/local/index.js +140 -0
- package/dist/drivers/local/index.js.map +1 -0
- package/dist/drivers/openai/index.js +30 -2
- package/dist/drivers/openai/index.js.map +1 -1
- package/dist/extensionClient.d.ts +8 -0
- package/dist/extensionClient.js +24 -2
- package/dist/extensionClient.js.map +1 -1
- package/dist/fp/automationInterpreter.d.ts +9 -1
- package/dist/fp/automationInterpreter.js +151 -34
- package/dist/fp/automationInterpreter.js.map +1 -1
- package/dist/fp/automationProgram.d.ts +30 -0
- package/dist/fp/automationProgram.js.map +1 -1
- package/dist/fp/automationState.d.ts +23 -4
- package/dist/fp/automationState.js +28 -4
- package/dist/fp/automationState.js.map +1 -1
- package/dist/fp/interpreterContext.d.ts +66 -1
- package/dist/fp/interpreterContext.js +140 -1
- package/dist/fp/interpreterContext.js.map +1 -1
- package/dist/fp/policyParser.js +29 -1
- package/dist/fp/policyParser.js.map +1 -1
- package/dist/httpErrorResponse.d.ts +36 -0
- package/dist/httpErrorResponse.js +46 -0
- package/dist/httpErrorResponse.js.map +1 -0
- package/dist/inboxRoutes.js +90 -11
- package/dist/inboxRoutes.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/oauth.d.ts +22 -0
- package/dist/oauth.js +46 -0
- package/dist/oauth.js.map +1 -1
- package/dist/oauthRoutes.js +3 -8
- package/dist/oauthRoutes.js.map +1 -1
- package/dist/patchworkConfig.d.ts +30 -1
- package/dist/patchworkConfig.js +99 -4
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/preToolUseHook.js +7 -1
- package/dist/preToolUseHook.js.map +1 -1
- package/dist/prompts.js +4 -0
- package/dist/prompts.js.map +1 -1
- package/dist/recipeOrchestration.js +13 -3
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.d.ts +5 -0
- package/dist/recipeRoutes.js +57 -33
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +10 -1
- package/dist/recipes/agentExecutor.js +5 -4
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/scheduler.d.ts +7 -0
- package/dist/recipes/scheduler.js +30 -13
- package/dist/recipes/scheduler.js.map +1 -1
- package/dist/recipes/schema.d.ts +6 -0
- package/dist/recipes/tools/file.js +5 -2
- package/dist/recipes/tools/file.js.map +1 -1
- package/dist/recipes/tools/gmail.js +18 -1
- package/dist/recipes/tools/gmail.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +32 -2
- package/dist/recipes/yamlRunner.js +71 -6
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/recipesHttp.d.ts +17 -1
- package/dist/recipesHttp.js +68 -4
- package/dist/recipesHttp.js.map +1 -1
- package/dist/server.d.ts +52 -1
- package/dist/server.js +427 -248
- package/dist/server.js.map +1 -1
- package/dist/streamableHttp.d.ts +9 -4
- package/dist/streamableHttp.js +17 -9
- package/dist/streamableHttp.js.map +1 -1
- package/dist/tools/openInBrowser.js +6 -1
- package/dist/tools/openInBrowser.js.map +1 -1
- package/dist/tools/runCommand.js +5 -0
- package/dist/tools/runCommand.js.map +1 -1
- package/dist/tools/terminal.js +4 -0
- package/dist/tools/terminal.js.map +1 -1
- package/dist/tools/utils.d.ts +4 -0
- package/dist/tools/utils.js +62 -0
- package/dist/tools/utils.js.map +1 -1
- package/package.json +2 -2
- package/scripts/start-all.sh +4 -2
- package/templates/recipes/approval-queue-ui-test.yaml +205 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import crypto from "node:crypto";
|
|
7
7
|
import { minimatch } from "minimatch";
|
|
8
8
|
import { getPrompt } from "../prompts.js";
|
|
9
|
-
import { clearPendingRetry, isDeduped, isOnCooldown, recordDedup, recordPendingRetry, recordTrigger, tasksInLastHour, } from "./automationState.js";
|
|
9
|
+
import { clearPendingRetry, isDeduped, isOnCooldown, recordDedup, recordPendingRetry, recordTrigger, recordWebhookFired, tasksInLastHour, } from "./automationState.js";
|
|
10
10
|
import { buildHookMetadata, truncatePrompt, untrustedBlock, } from "./automationUtils.js";
|
|
11
11
|
import { err, ok } from "./result.js";
|
|
12
12
|
function emptyAcc(state) {
|
|
@@ -126,8 +126,15 @@ export function primaryValue(hookType, eventData) {
|
|
|
126
126
|
* Resolve a PromptSourceNode to a string.
|
|
127
127
|
* For named prompts, calls getPrompt() and concatenates user messages.
|
|
128
128
|
* Returns null if a named prompt cannot be resolved (unknown name / missing args).
|
|
129
|
+
*
|
|
130
|
+
* When `source.kind === "none"`, returns the symbol `NO_PROMPT` so callers
|
|
131
|
+
* can distinguish "no inline prompt configured" (webhook-only hook) from
|
|
132
|
+
* "named prompt failed to resolve" (skip silently).
|
|
129
133
|
*/
|
|
134
|
+
export const NO_PROMPT = Symbol("no-prompt");
|
|
130
135
|
export function resolvePromptSource(source, eventData) {
|
|
136
|
+
if (source.kind === "none")
|
|
137
|
+
return NO_PROMPT;
|
|
131
138
|
if (source.kind === "inline")
|
|
132
139
|
return source.prompt;
|
|
133
140
|
// Substitute event placeholders into promptArgs values
|
|
@@ -311,33 +318,98 @@ async function interpret(program, ctx, acc) {
|
|
|
311
318
|
],
|
|
312
319
|
};
|
|
313
320
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
321
|
+
// When promptTemplate is a string, enqueue a Claude task. When it is
|
|
322
|
+
// NO_PROMPT, the hook is webhook-only — skip the enqueue but still
|
|
323
|
+
// proceed to webhook fan-out below. A webhook-only hook still records
|
|
324
|
+
// a trigger in state so cooldown gating can observe its firing.
|
|
325
|
+
let working = acc;
|
|
326
|
+
if (promptTemplate !== NO_PROMPT) {
|
|
327
|
+
const nonce = crypto.randomBytes(8).toString("hex");
|
|
328
|
+
const finalPrompt = buildFinalPrompt(promptTemplate, program.hookType, ctx.eventData, nonce);
|
|
329
|
+
try {
|
|
330
|
+
const taskId = await ctx.backend.enqueueTask({
|
|
331
|
+
prompt: finalPrompt,
|
|
332
|
+
triggerSource: program.hookType,
|
|
333
|
+
sessionId: "",
|
|
334
|
+
isAutomationTask: true,
|
|
335
|
+
model: program.model,
|
|
336
|
+
effort: program.effort,
|
|
337
|
+
systemPrompt: program.systemPrompt,
|
|
338
|
+
});
|
|
339
|
+
const newState = recordTrigger(working.state, program.hookType, taskId, ctx.now);
|
|
340
|
+
working = {
|
|
341
|
+
...working,
|
|
342
|
+
taskIds: [...working.taskIds, taskId],
|
|
343
|
+
state: newState,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
catch (e) {
|
|
347
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
348
|
+
ctx.log(`[interpreter] hook ${program.hookType} enqueue failed: ${message}`);
|
|
349
|
+
return {
|
|
350
|
+
...working,
|
|
351
|
+
errors: [...working.errors, { message, hook: program.hookType }],
|
|
352
|
+
};
|
|
353
|
+
}
|
|
332
354
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
355
|
+
// Webhook fan-out — runs AFTER the inline prompt enqueue (if any).
|
|
356
|
+
// Failures are recorded as interpreter errors and do not throw, so
|
|
357
|
+
// other hooks in the same run continue to fire. Always records
|
|
358
|
+
// `lastWebhookFiredAt` regardless of HTTP outcome — operators
|
|
359
|
+
// debugging webhook delivery want "we attempted X" telemetry.
|
|
360
|
+
if (program.webhook) {
|
|
361
|
+
const phase = program.hookType === "onPreCompact"
|
|
362
|
+
? "pre"
|
|
363
|
+
: program.hookType === "onPostCompact"
|
|
364
|
+
? "post"
|
|
365
|
+
: undefined;
|
|
366
|
+
const body = {
|
|
367
|
+
hookType: program.hookType,
|
|
368
|
+
timestamp: ctx.now,
|
|
369
|
+
...ctx.eventData,
|
|
339
370
|
};
|
|
371
|
+
if (phase)
|
|
372
|
+
body.phase = phase;
|
|
373
|
+
try {
|
|
374
|
+
const result = await ctx.backend.postWebhook({
|
|
375
|
+
url: program.webhook.url,
|
|
376
|
+
method: program.webhook.method ?? "POST",
|
|
377
|
+
headers: program.webhook.headers ?? {},
|
|
378
|
+
body,
|
|
379
|
+
hookKey: program.hookType,
|
|
380
|
+
});
|
|
381
|
+
working = {
|
|
382
|
+
...working,
|
|
383
|
+
state: recordWebhookFired(working.state, program.hookType, ctx.now),
|
|
384
|
+
};
|
|
385
|
+
if (!result.ok) {
|
|
386
|
+
const message = `webhook fan-out failed: ${result.error ?? "unknown"}${result.status !== undefined ? ` (status=${result.status})` : ""}`;
|
|
387
|
+
ctx.log(`[interpreter] hook ${program.hookType} ${message}`);
|
|
388
|
+
working = {
|
|
389
|
+
...working,
|
|
390
|
+
errors: [...working.errors, { message, hook: program.hookType }],
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
catch (e) {
|
|
395
|
+
// Defensive: postWebhook contract is "never rejects", but a buggy
|
|
396
|
+
// backend could still throw. Log + record but do not propagate.
|
|
397
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
398
|
+
ctx.log(`[interpreter] hook ${program.hookType} webhook threw: ${message}`);
|
|
399
|
+
working = {
|
|
400
|
+
...working,
|
|
401
|
+
state: recordWebhookFired(working.state, program.hookType, ctx.now),
|
|
402
|
+
errors: [
|
|
403
|
+
...working.errors,
|
|
404
|
+
{
|
|
405
|
+
message: `webhook fan-out threw: ${message}`,
|
|
406
|
+
hook: program.hookType,
|
|
407
|
+
},
|
|
408
|
+
],
|
|
409
|
+
};
|
|
410
|
+
}
|
|
340
411
|
}
|
|
412
|
+
return working;
|
|
341
413
|
}
|
|
342
414
|
case "Sequence": {
|
|
343
415
|
let current = acc;
|
|
@@ -392,13 +464,26 @@ async function interpret(program, ctx, acc) {
|
|
|
392
464
|
};
|
|
393
465
|
}
|
|
394
466
|
const innerAcc = await interpret(program.program, ctx, acc);
|
|
395
|
-
// If we produced new task IDs, record the cooldown trigger
|
|
467
|
+
// If we produced new task IDs, record the cooldown trigger.
|
|
468
|
+
// For webhook-only hooks (kind: "none") no taskId is produced, but the
|
|
469
|
+
// webhook firing still counts as a trigger — detected via a delta in
|
|
470
|
+
// `lastWebhookFiredAt`. Without this branch, cooldowns never apply to
|
|
471
|
+
// webhook-only hooks, defeating the cooldown gate the operator
|
|
472
|
+
// configured.
|
|
396
473
|
const newTaskIds = innerAcc.taskIds.slice(acc.taskIds.length);
|
|
474
|
+
const webhookFired = innerAcc.state.lastWebhookFiredAt.size >
|
|
475
|
+
acc.state.lastWebhookFiredAt.size ||
|
|
476
|
+
// Same key was already in the map but timestamp moved forward
|
|
477
|
+
Array.from(innerAcc.state.lastWebhookFiredAt.entries()).some(([k, v]) => (acc.state.lastWebhookFiredAt.get(k) ?? -1) < v);
|
|
397
478
|
if (newTaskIds.length > 0) {
|
|
398
479
|
const lastTaskId = newTaskIds[newTaskIds.length - 1] ?? "";
|
|
399
480
|
const newState = recordTrigger(innerAcc.state, program.key, lastTaskId, ctx.now);
|
|
400
481
|
return { ...innerAcc, state: newState };
|
|
401
482
|
}
|
|
483
|
+
if (webhookFired) {
|
|
484
|
+
const newState = recordTrigger(innerAcc.state, program.key, "webhook", ctx.now);
|
|
485
|
+
return { ...innerAcc, state: newState };
|
|
486
|
+
}
|
|
402
487
|
return innerAcc;
|
|
403
488
|
}
|
|
404
489
|
case "WithDedup": {
|
|
@@ -451,28 +536,60 @@ async function interpret(program, ctx, acc) {
|
|
|
451
536
|
if (attempt < program.maxRetries) {
|
|
452
537
|
const nextAttempt = attempt + 1;
|
|
453
538
|
const nextRetryAt = ctx.now + program.retryDelayMs;
|
|
454
|
-
// Schedule retry: re-
|
|
455
|
-
// fires.
|
|
456
|
-
//
|
|
457
|
-
//
|
|
539
|
+
// Schedule retry: re-run the wrapped program when the timer
|
|
540
|
+
// fires. The work runs INSIDE AutomationHooks' mutation lock
|
|
541
|
+
// (`runRetryUnderLock`) so:
|
|
542
|
+
// 1. Read of live state is atomic w.r.t. concurrent _runInterpreter
|
|
543
|
+
// calls — the retry sees their cooldown / dedup / rateLimit
|
|
544
|
+
// writes, can't clobber them.
|
|
545
|
+
// 2. Write of post-retry state is atomic w.r.t. the same chain,
|
|
546
|
+
// so the retry's effects can't be lost to a concurrent run
|
|
547
|
+
// that started between scheduling and merge.
|
|
548
|
+
// 3. `clearPendingRetry` is in a try/finally so the
|
|
549
|
+
// pendingRetries entry is dropped even if the inner
|
|
550
|
+
// interpret() throws (otherwise the retry leaks the entry
|
|
551
|
+
// forever).
|
|
552
|
+
//
|
|
553
|
+
// TestBackend records the call but does not actually fire the timer.
|
|
554
|
+
// Tests that exercise retry dispatch synchronously override
|
|
555
|
+
// `scheduleRetry`.
|
|
458
556
|
const wrappedProgram = program.program;
|
|
459
557
|
const retrySnapshot = innerAcc.state;
|
|
558
|
+
const liveStateFn = ctx.getLiveState;
|
|
559
|
+
const runUnderLock = ctx.runRetryUnderLock;
|
|
460
560
|
ctx.backend.scheduleRetry(program.key, program.retryDelayMs, () => {
|
|
461
561
|
ctx.log(`[interpreter] retry attempt ${nextAttempt} for ${program.key}`);
|
|
462
|
-
|
|
562
|
+
const doRetry = async (live) => {
|
|
463
563
|
try {
|
|
464
564
|
const retryCtx = {
|
|
465
565
|
...ctx,
|
|
466
|
-
state:
|
|
566
|
+
state: live,
|
|
467
567
|
now: Date.now(),
|
|
468
568
|
};
|
|
469
|
-
await interpret(wrappedProgram, retryCtx, emptyAcc(
|
|
569
|
+
const retryResult = await interpret(wrappedProgram, retryCtx, emptyAcc(live));
|
|
570
|
+
return clearPendingRetry(retryResult.state, program.key);
|
|
470
571
|
}
|
|
471
572
|
catch (e) {
|
|
472
573
|
const m = e instanceof Error ? e.message : String(e);
|
|
473
574
|
ctx.log(`[interpreter] retry ${program.key} failed: ${m}`);
|
|
575
|
+
// Drop the pending entry even on error — leaving it would
|
|
576
|
+
// make `pendingRetries.get(key)` look truthy forever.
|
|
577
|
+
return clearPendingRetry(live, program.key);
|
|
474
578
|
}
|
|
475
|
-
}
|
|
579
|
+
};
|
|
580
|
+
if (runUnderLock) {
|
|
581
|
+
runUnderLock(doRetry);
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
// Fallback for tests that didn't supply a lock executor:
|
|
585
|
+
// run against the snapshot (or live read if available),
|
|
586
|
+
// discard result. Not atomic, but tests don't observe the
|
|
587
|
+
// chain anyway.
|
|
588
|
+
void (async () => {
|
|
589
|
+
const seed = liveStateFn ? liveStateFn() : retrySnapshot;
|
|
590
|
+
await doRetry(seed);
|
|
591
|
+
})();
|
|
592
|
+
}
|
|
476
593
|
});
|
|
477
594
|
const newState = recordPendingRetry(innerAcc.state, program.key, nextAttempt, nextRetryAt, "");
|
|
478
595
|
return { ...innerAcc, state: newState };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automationInterpreter.js","sourceRoot":"","sources":["../../src/fp/automationInterpreter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"automationInterpreter.js","sourceRoot":"","sources":["../../src/fp/automationInterpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,14 @@ export type PromptSourceNode = {
|
|
|
12
12
|
readonly kind: "named";
|
|
13
13
|
readonly promptName: string;
|
|
14
14
|
readonly promptArgs?: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Webhook-only hook entry — no inline prompt, no task enqueue. The hook
|
|
18
|
+
* still flows through cooldown/dedup/rateLimit gates and fires its
|
|
19
|
+
* `webhook` (if configured) on the success path.
|
|
20
|
+
*/
|
|
21
|
+
| {
|
|
22
|
+
readonly kind: "none";
|
|
15
23
|
};
|
|
16
24
|
export interface WhenCondition {
|
|
17
25
|
readonly minDiagnosticCount?: number;
|
|
@@ -34,6 +42,22 @@ export interface TestRunExtras {
|
|
|
34
42
|
export type HookExtras = DiagnosticsErrorExtras | TestRunExtras | {
|
|
35
43
|
readonly kind: "none";
|
|
36
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Outbound webhook configuration for an automation hook.
|
|
47
|
+
*
|
|
48
|
+
* When attached to a HookNode, the interpreter POSTs (or sends via the chosen
|
|
49
|
+
* method) a JSON body to `url` AFTER any inline prompt has been enqueued. The
|
|
50
|
+
* body shape is `{ phase, timestamp, hookType, ...eventData }` for v1.
|
|
51
|
+
*
|
|
52
|
+
* Failure modes (timeout, non-2xx, network error) are recorded and logged
|
|
53
|
+
* via the Backend, never thrown — webhook fan-out is always best-effort and
|
|
54
|
+
* does not block other hooks or the prompt enqueue.
|
|
55
|
+
*/
|
|
56
|
+
export interface WebhookConfig {
|
|
57
|
+
readonly url: string;
|
|
58
|
+
readonly method?: "POST" | "PUT" | "PATCH";
|
|
59
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
60
|
+
}
|
|
37
61
|
export interface HookNode {
|
|
38
62
|
readonly _tag: "Hook";
|
|
39
63
|
readonly hookType: HookType;
|
|
@@ -46,6 +70,12 @@ export interface HookNode {
|
|
|
46
70
|
readonly effort?: "low" | "medium" | "high" | "max";
|
|
47
71
|
readonly systemPrompt?: string;
|
|
48
72
|
readonly extras?: HookExtras;
|
|
73
|
+
/**
|
|
74
|
+
* Optional outbound webhook fired AFTER the inline prompt enqueue. Wired
|
|
75
|
+
* for `onCompaction` (onPreCompact/onPostCompact) only in v1; other hook
|
|
76
|
+
* types may opt in later by widening the parser. See ADR-0009.
|
|
77
|
+
*/
|
|
78
|
+
readonly webhook?: WebhookConfig;
|
|
49
79
|
}
|
|
50
80
|
export interface SequenceNode {
|
|
51
81
|
readonly _tag: "Sequence";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automationProgram.js","sourceRoot":"","sources":["../../src/fp/automationProgram.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"automationProgram.js","sourceRoot":"","sources":["../../src/fp/automationProgram.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiKH,iFAAiF;AAEjF,MAAM,UAAU,IAAI,CAAC,MAA8B;IACjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,QAAsC;IAC7D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,QAAsC;IAC7D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,UAAkB,EAClB,OAA0B;IAE1B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,UAAkB,EAClB,OAA0B;IAE1B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,OAA0B;IAE1B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,UAAkB,EAClB,YAAoB,EACpB,OAA0B;IAE1B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -59,6 +59,14 @@ export interface AutomationState {
|
|
|
59
59
|
* Last known test runner outcome (pass/fail) for evaluateWhen checks.
|
|
60
60
|
*/
|
|
61
61
|
readonly lastTestRunnerStatusByRunner: ReadonlyMap<string, "pass" | "fail">;
|
|
62
|
+
/**
|
|
63
|
+
* Last successful webhook fan-out time (ms since epoch) per hook key.
|
|
64
|
+
* Recorded after `Backend.postWebhook` resolves regardless of `ok` —
|
|
65
|
+
* the timestamp marks "we attempted to deliver", which is what an
|
|
66
|
+
* operator wants when debugging webhook health. Merged via max-per-key
|
|
67
|
+
* in `mergeAutomationStates`.
|
|
68
|
+
*/
|
|
69
|
+
readonly lastWebhookFiredAt: ReadonlyMap<string, number>;
|
|
62
70
|
}
|
|
63
71
|
export declare const EMPTY_AUTOMATION_STATE: AutomationState;
|
|
64
72
|
/**
|
|
@@ -123,13 +131,24 @@ export declare function clearPendingRetry(state: AutomationState, key: string):
|
|
|
123
131
|
*/
|
|
124
132
|
export declare function setLatestDiagnostics(state: AutomationState, file: string, severity: number, count: number): AutomationState;
|
|
125
133
|
/**
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
134
|
+
* @deprecated Not called from production code. Parallel was rewritten to be
|
|
135
|
+
* sequential (see automationInterpreter.ts case "Parallel") so that branches
|
|
136
|
+
* see each other's cooldown/dedup writes — the merge-max semantics here lost
|
|
137
|
+
* those guarantees. Function + tests retained as a reference for any future
|
|
138
|
+
* truly-concurrent execution model. NOTE: `unionMap` of `activeTasks` is
|
|
139
|
+
* last-write-wins, which silently drops one taskId when both branches record
|
|
140
|
+
* the same key — restore as union-of-arrays before re-introducing parallelism.
|
|
130
141
|
*/
|
|
131
142
|
export declare function mergeAutomationStates(a: AutomationState, b: AutomationState): AutomationState;
|
|
132
143
|
/**
|
|
133
144
|
* Update the last known test runner outcome for `runner`.
|
|
134
145
|
*/
|
|
135
146
|
export declare function setTestRunnerStatus(state: AutomationState, runner: string, outcome: "pass" | "fail"): AutomationState;
|
|
147
|
+
/**
|
|
148
|
+
* Record that an automation webhook fan-out attempt for `key` resolved at
|
|
149
|
+
* `now`. Used for telemetry / dashboards — does NOT gate future fires on its
|
|
150
|
+
* own (cooldown is already enforced by WithCooldown around the parent hook).
|
|
151
|
+
*
|
|
152
|
+
* Bounded at 5_000 entries, FIFO eviction.
|
|
153
|
+
*/
|
|
154
|
+
export declare function recordWebhookFired(state: AutomationState, key: string, now: number): AutomationState;
|
|
@@ -19,6 +19,7 @@ export const EMPTY_AUTOMATION_STATE = {
|
|
|
19
19
|
pendingRetries: new Map(),
|
|
20
20
|
latestDiagnosticsByFile: new Map(),
|
|
21
21
|
lastTestRunnerStatusByRunner: new Map(),
|
|
22
|
+
lastWebhookFiredAt: new Map(),
|
|
22
23
|
};
|
|
23
24
|
// ── Cooldown helpers ──────────────────────────────────────────────────────────
|
|
24
25
|
/**
|
|
@@ -165,10 +166,13 @@ export function setLatestDiagnostics(state, file, severity, count) {
|
|
|
165
166
|
}
|
|
166
167
|
// ── Merge helper (for Parallel node) ──────────────────────────────────────────
|
|
167
168
|
/**
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
169
|
+
* @deprecated Not called from production code. Parallel was rewritten to be
|
|
170
|
+
* sequential (see automationInterpreter.ts case "Parallel") so that branches
|
|
171
|
+
* see each other's cooldown/dedup writes — the merge-max semantics here lost
|
|
172
|
+
* those guarantees. Function + tests retained as a reference for any future
|
|
173
|
+
* truly-concurrent execution model. NOTE: `unionMap` of `activeTasks` is
|
|
174
|
+
* last-write-wins, which silently drops one taskId when both branches record
|
|
175
|
+
* the same key — restore as union-of-arrays before re-introducing parallelism.
|
|
172
176
|
*/
|
|
173
177
|
export function mergeAutomationStates(a, b) {
|
|
174
178
|
const maxNumMap = (x, y) => {
|
|
@@ -195,6 +199,7 @@ export function mergeAutomationStates(a, b) {
|
|
|
195
199
|
pendingRetries: unionMap(a.pendingRetries, b.pendingRetries),
|
|
196
200
|
latestDiagnosticsByFile: unionMap(a.latestDiagnosticsByFile, b.latestDiagnosticsByFile),
|
|
197
201
|
lastTestRunnerStatusByRunner: unionMap(a.lastTestRunnerStatusByRunner, b.lastTestRunnerStatusByRunner),
|
|
202
|
+
lastWebhookFiredAt: maxNumMap(a.lastWebhookFiredAt, b.lastWebhookFiredAt),
|
|
198
203
|
};
|
|
199
204
|
}
|
|
200
205
|
// ── Test runner status helpers ────────────────────────────────────────────────
|
|
@@ -206,4 +211,23 @@ export function setTestRunnerStatus(state, runner, outcome) {
|
|
|
206
211
|
newMap.set(runner, outcome);
|
|
207
212
|
return { ...state, lastTestRunnerStatusByRunner: newMap };
|
|
208
213
|
}
|
|
214
|
+
// ── Webhook helpers ───────────────────────────────────────────────────────────
|
|
215
|
+
const WEBHOOK_FIRED_MAX_SIZE = 5_000;
|
|
216
|
+
/**
|
|
217
|
+
* Record that an automation webhook fan-out attempt for `key` resolved at
|
|
218
|
+
* `now`. Used for telemetry / dashboards — does NOT gate future fires on its
|
|
219
|
+
* own (cooldown is already enforced by WithCooldown around the parent hook).
|
|
220
|
+
*
|
|
221
|
+
* Bounded at 5_000 entries, FIFO eviction.
|
|
222
|
+
*/
|
|
223
|
+
export function recordWebhookFired(state, key, now) {
|
|
224
|
+
const newMap = new Map(state.lastWebhookFiredAt);
|
|
225
|
+
newMap.delete(key);
|
|
226
|
+
newMap.set(key, now);
|
|
227
|
+
if (newMap.size > WEBHOOK_FIRED_MAX_SIZE) {
|
|
228
|
+
const firstKey = newMap.keys().next().value;
|
|
229
|
+
newMap.delete(firstKey);
|
|
230
|
+
}
|
|
231
|
+
return { ...state, lastWebhookFiredAt: newMap };
|
|
232
|
+
}
|
|
209
233
|
//# sourceMappingURL=automationState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automationState.js","sourceRoot":"","sources":["../../src/fp/automationState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"automationState.js","sourceRoot":"","sources":["../../src/fp/automationState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6DH,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,WAAW,EAAE,IAAI,GAAG,EAAE;IACtB,WAAW,EAAE,IAAI,GAAG,EAAE;IACtB,oBAAoB,EAAE,IAAI,GAAG,EAAE;IAC/B,uBAAuB,EAAE,IAAI,GAAG,EAAE;IAClC,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE,IAAI,GAAG,EAAE;IAC9B,cAAc,EAAE,IAAI,GAAG,EAAE;IACzB,uBAAuB,EAAE,IAAI,GAAG,EAAE;IAClC,4BAA4B,EAAE,IAAI,GAAG,EAAE;IACvC,kBAAkB,EAAE,IAAI,GAAG,EAAE;CAC9B,CAAC;AAEF,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAsB,EACtB,GAAW,EACX,GAAW,EACX,UAAkB;IAElB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,GAAG,GAAG,IAAI,GAAG,UAAU,CAAC;AACjC,CAAC;AAED,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAsB,EACtB,GAAW,EACX,MAAc,EACd,GAAW;IAEX,MAAM,mBAAmB,GAAG,MAAM,CAAC;IACnC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClD,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClD,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEhC,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,iBAAiB,GACrB,aAAa,CAAC,MAAM,GAAG,mBAAmB;QACxC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,mBAAmB,CAAC;QACjE,CAAC,CAAC,aAAa,CAAC;IAEpB,OAAO;QACL,GAAG,KAAK;QACR,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,cAAc;QAC3B,cAAc,EAAE,iBAAiB;KAClC,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAsB,EAAE,GAAW;IAC9D,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAsB,EACtB,GAAW;IAEX,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClD,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AACnD,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,IAAY,EACZ,KAAa;IAEb,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,OAAO,EAAE,GAAG,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,MAAc,EACd,OAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,GAAG,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAsB,EAAE,GAAW;IACjE,MAAM,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IAC/B,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;AAC/D,CAAC;AAED,iFAAiF;AAEjF,MAAM,cAAc,GAAG,KAAK,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,KAAsB,EACtB,GAAW,EACX,GAAW;IAEX,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,uEAAuE;IACvE,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,IAAI,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,KAAsB,EACtB,GAAW,EACX,GAAW,EACX,UAAkB;IAElB,MAAM,IAAI,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,GAAG,GAAG,IAAI,GAAG,UAAU,CAAC;AACjC,CAAC;AAED,iFAAiF;AAEjF;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,GAAW,EACX,OAAe,EACf,WAAmB,EACnB,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAsB,EACtB,GAAW;IAEX,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,iFAAiF;AAEjF,MAAM,yBAAyB,GAAG,KAAK,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAsB,EACtB,IAAY,EACZ,QAAgB,EAChB,KAAa;IAEb,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,CAAkB,EAClB,CAAkB;IAElB,MAAM,SAAS,GAAG,CAChB,CAA8B,EAC9B,CAA8B,EACT,EAAE;QACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CACf,CAAyB,EACzB,CAAyB,EACT,EAAE;QAClB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;QACpD,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;QACnD,oBAAoB,EAAE,QAAQ,CAC5B,CAAC,CAAC,oBAAoB,EACtB,CAAC,CAAC,oBAAoB,CACvB;QACD,uBAAuB,EAAE,QAAQ,CAC/B,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,CAC1B;QACD,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACzE,mBAAmB,EAAE,SAAS,CAC5B,CAAC,CAAC,mBAAmB,EACrB,CAAC,CAAC,mBAAmB,CACtB;QACD,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,CAAC;QAC5D,uBAAuB,EAAE,QAAQ,CAC/B,CAAC,CAAC,uBAAuB,EACzB,CAAC,CAAC,uBAAuB,CAC1B;QACD,4BAA4B,EAAE,QAAQ,CACpC,CAAC,CAAC,4BAA4B,EAC9B,CAAC,CAAC,4BAA4B,CAC/B;QACD,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAsB,EACtB,MAAc,EACd,OAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,EAAE,GAAG,KAAK,EAAE,4BAA4B,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AAED,iFAAiF;AAEjF,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,GAAW,EACX,GAAW;IAEX,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,IAAI,MAAM,CAAC,IAAI,GAAG,sBAAsB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;AAClD,CAAC"}
|
|
@@ -13,6 +13,32 @@ export interface BackendEnqueueOpts {
|
|
|
13
13
|
effort?: "low" | "medium" | "high" | "max";
|
|
14
14
|
systemPrompt?: string;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Options for an outbound webhook fired by an automation hook.
|
|
18
|
+
*
|
|
19
|
+
* `body` is the JSON-serializable payload. Backends serialize and set
|
|
20
|
+
* Content-Type if not already in `headers`. SSRF guarding is the backend's
|
|
21
|
+
* responsibility (production: loopback-only by default; tests: collect).
|
|
22
|
+
*/
|
|
23
|
+
export interface BackendWebhookOpts {
|
|
24
|
+
url: string;
|
|
25
|
+
method: "POST" | "PUT" | "PATCH";
|
|
26
|
+
headers: Readonly<Record<string, string>>;
|
|
27
|
+
body: Readonly<Record<string, unknown>>;
|
|
28
|
+
/** Hook key for diagnostic logging (e.g. "precompact"). */
|
|
29
|
+
hookKey: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result of a webhook call. Always resolves — never throws — so a failed
|
|
33
|
+
* webhook does not block the rest of the interpreter run.
|
|
34
|
+
*/
|
|
35
|
+
export interface BackendWebhookResult {
|
|
36
|
+
ok: boolean;
|
|
37
|
+
/** HTTP status code on a completed request; absent on network error / timeout. */
|
|
38
|
+
status?: number;
|
|
39
|
+
/** Reason on failure — surfaced in the interpreter error list and logs. */
|
|
40
|
+
error?: string;
|
|
41
|
+
}
|
|
16
42
|
export interface Backend {
|
|
17
43
|
/** Enqueue a task and return the task ID. */
|
|
18
44
|
enqueueTask(opts: BackendEnqueueOpts): Promise<string>;
|
|
@@ -20,6 +46,12 @@ export interface Backend {
|
|
|
20
46
|
scheduleRetry(key: string, delayMs: number, fn: () => void): () => void;
|
|
21
47
|
/** Emit an informational notification (fire-and-forget). */
|
|
22
48
|
notify(msg: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Fire an outbound webhook. Always resolves — never rejects — so failures
|
|
51
|
+
* never block other hooks. Production impl applies a 10s timeout and SSRF
|
|
52
|
+
* guard. Test impl pushes to `webhookCalls`.
|
|
53
|
+
*/
|
|
54
|
+
postWebhook(opts: BackendWebhookOpts): Promise<BackendWebhookResult>;
|
|
23
55
|
}
|
|
24
56
|
export interface InterpreterContext {
|
|
25
57
|
readonly state: AutomationState;
|
|
@@ -29,6 +61,30 @@ export interface InterpreterContext {
|
|
|
29
61
|
readonly eventData: Readonly<Record<string, string>>;
|
|
30
62
|
readonly backend: Backend;
|
|
31
63
|
readonly log: (msg: string) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Optional accessor for the live AutomationState at retry-fire time. If
|
|
66
|
+
* present, WithRetry uses this instead of the snapshot taken when the retry
|
|
67
|
+
* was scheduled — preventing retries from re-firing hooks that have since
|
|
68
|
+
* entered cooldown / dedup. AutomationHooks supplies a function that returns
|
|
69
|
+
* `this._automationState`; tests may omit.
|
|
70
|
+
*/
|
|
71
|
+
readonly getLiveState?: () => AutomationState;
|
|
72
|
+
/**
|
|
73
|
+
* Optional atomic-retry executor. Receives a function that, given the
|
|
74
|
+
* truly-current `AutomationState` at lock-acquisition time, returns the
|
|
75
|
+
* post-retry state. AutomationHooks runs this through `_enqueueMutation`
|
|
76
|
+
* so the read-run-write happens atomically with respect to other
|
|
77
|
+
* `_runInterpreter` calls (the same chain that prevents two concurrent
|
|
78
|
+
* events from clobbering each other's writes).
|
|
79
|
+
*
|
|
80
|
+
* Replaces the older `mergeRetryState` setter API, which let a retry
|
|
81
|
+
* publish stale absolute state and clobber writes from concurrent runs
|
|
82
|
+
* that landed between scheduling and merge. Now the retry's interpret()
|
|
83
|
+
* is itself executed inside the lock against fresh live state.
|
|
84
|
+
*
|
|
85
|
+
* Tests may omit (TestBackend doesn't fire retries by default).
|
|
86
|
+
*/
|
|
87
|
+
readonly runRetryUnderLock?: (work: (live: AutomationState) => Promise<AutomationState>) => void;
|
|
32
88
|
}
|
|
33
89
|
export interface InterpreterResult {
|
|
34
90
|
readonly taskIds: ReadonlyArray<string>;
|
|
@@ -45,12 +101,14 @@ export interface InterpreterResult {
|
|
|
45
101
|
export declare class VsCodeBackend implements Backend {
|
|
46
102
|
private readonly orchestrator;
|
|
47
103
|
private readonly logger?;
|
|
104
|
+
private readonly allowPrivateWebhooks;
|
|
48
105
|
constructor(orchestrator: ClaudeOrchestrator, logger?: {
|
|
49
106
|
info: (msg: string) => void;
|
|
50
|
-
} | undefined);
|
|
107
|
+
} | undefined, allowPrivateWebhooks?: boolean);
|
|
51
108
|
enqueueTask(opts: BackendEnqueueOpts): Promise<string>;
|
|
52
109
|
scheduleRetry(key: string, delayMs: number, fn: () => void): () => void;
|
|
53
110
|
notify(msg: string): void;
|
|
111
|
+
postWebhook(opts: BackendWebhookOpts): Promise<BackendWebhookResult>;
|
|
54
112
|
}
|
|
55
113
|
export interface TestBackendCollector {
|
|
56
114
|
enqueuedTasks: BackendEnqueueOpts[];
|
|
@@ -59,11 +117,18 @@ export interface TestBackendCollector {
|
|
|
59
117
|
delayMs: number;
|
|
60
118
|
}>;
|
|
61
119
|
notifications: string[];
|
|
120
|
+
webhookCalls: BackendWebhookOpts[];
|
|
62
121
|
}
|
|
63
122
|
export declare class TestBackend implements Backend {
|
|
64
123
|
readonly collector: TestBackendCollector;
|
|
124
|
+
/**
|
|
125
|
+
* Optional override for the webhook result a test wants to simulate.
|
|
126
|
+
* When unset, postWebhook returns `{ ok: true, status: 200 }`.
|
|
127
|
+
*/
|
|
128
|
+
webhookResponse: BackendWebhookResult;
|
|
65
129
|
enqueueTask(opts: BackendEnqueueOpts): Promise<string>;
|
|
66
130
|
scheduleRetry(key: string, delayMs: number, _fn: () => void): () => void;
|
|
67
131
|
notify(msg: string): void;
|
|
132
|
+
postWebhook(opts: BackendWebhookOpts): Promise<BackendWebhookResult>;
|
|
68
133
|
reset(): void;
|
|
69
134
|
}
|