feat(hooks): add cleanup params and integrate hook-run-registry into dispatchAgentHook
This commit is contained in:
parent
d60f9b920f
commit
8984bc4779
@ -9,6 +9,7 @@ import { requestHeartbeatNow } from "../../infra/heartbeat-wake.js";
|
|||||||
import { enqueueSystemEvent } from "../../infra/system-events.js";
|
import { enqueueSystemEvent } from "../../infra/system-events.js";
|
||||||
import type { createSubsystemLogger } from "../../logging/subsystem.js";
|
import type { createSubsystemLogger } from "../../logging/subsystem.js";
|
||||||
import type { HookMessageChannel, HooksConfigResolved } from "../hooks.js";
|
import type { HookMessageChannel, HooksConfigResolved } from "../hooks.js";
|
||||||
|
import { markHookRunComplete, registerHookRun } from "../hook-run-registry.js";
|
||||||
import { createHooksRequestHandler } from "../server-http.js";
|
import { createHooksRequestHandler } from "../server-http.js";
|
||||||
|
|
||||||
type SubsystemLogger = ReturnType<typeof createSubsystemLogger>;
|
type SubsystemLogger = ReturnType<typeof createSubsystemLogger>;
|
||||||
@ -42,6 +43,8 @@ export function createGatewayHooksRequestHandler(params: {
|
|||||||
thinking?: string;
|
thinking?: string;
|
||||||
timeoutSeconds?: number;
|
timeoutSeconds?: number;
|
||||||
allowUnsafeExternalContent?: boolean;
|
allowUnsafeExternalContent?: boolean;
|
||||||
|
cleanup?: "delete" | "keep";
|
||||||
|
cleanupDelayMinutes?: number;
|
||||||
}) => {
|
}) => {
|
||||||
const sessionKey = value.sessionKey.trim() ? value.sessionKey.trim() : `hook:${randomUUID()}`;
|
const sessionKey = value.sessionKey.trim() ? value.sessionKey.trim() : `hook:${randomUUID()}`;
|
||||||
const mainSessionKey = resolveMainSessionKeyFromConfig();
|
const mainSessionKey = resolveMainSessionKeyFromConfig();
|
||||||
@ -71,6 +74,13 @@ export function createGatewayHooksRequestHandler(params: {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const runId = randomUUID();
|
const runId = randomUUID();
|
||||||
|
registerHookRun({
|
||||||
|
runId,
|
||||||
|
sessionKey,
|
||||||
|
jobName: value.name,
|
||||||
|
cleanup: value.cleanup,
|
||||||
|
cleanupDelayMinutes: value.cleanupDelayMinutes,
|
||||||
|
});
|
||||||
void (async () => {
|
void (async () => {
|
||||||
try {
|
try {
|
||||||
const cfg = loadConfig();
|
const cfg = loadConfig();
|
||||||
@ -88,10 +98,12 @@ export function createGatewayHooksRequestHandler(params: {
|
|||||||
enqueueSystemEvent(`${prefix}: ${summary}`.trim(), {
|
enqueueSystemEvent(`${prefix}: ${summary}`.trim(), {
|
||||||
sessionKey: mainSessionKey,
|
sessionKey: mainSessionKey,
|
||||||
});
|
});
|
||||||
|
markHookRunComplete(runId);
|
||||||
if (value.wakeMode === "now") {
|
if (value.wakeMode === "now") {
|
||||||
requestHeartbeatNow({ reason: `hook:${jobId}` });
|
requestHeartbeatNow({ reason: `hook:${jobId}` });
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
markHookRunComplete(runId);
|
||||||
logHooks.warn(`hook agent failed: ${String(err)}`);
|
logHooks.warn(`hook agent failed: ${String(err)}`);
|
||||||
enqueueSystemEvent(`Hook ${value.name} (error): ${String(err)}`, {
|
enqueueSystemEvent(`Hook ${value.name} (error): ${String(err)}`, {
|
||||||
sessionKey: mainSessionKey,
|
sessionKey: mainSessionKey,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user