@openrouter/agent 0.7.2 → 0.9.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/README.md +728 -19
- package/esm/index.d.ts +24 -6
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +20 -5
- package/esm/index.js.map +1 -1
- package/esm/inner-loop/call-model.d.ts +8 -5
- package/esm/inner-loop/call-model.d.ts.map +1 -1
- package/esm/inner-loop/call-model.js +49 -40
- package/esm/inner-loop/call-model.js.map +1 -1
- package/esm/inner-loop/resume-tool-results.d.ts +128 -0
- package/esm/inner-loop/resume-tool-results.d.ts.map +1 -0
- package/esm/inner-loop/resume-tool-results.js +244 -0
- package/esm/inner-loop/resume-tool-results.js.map +1 -0
- package/esm/lib/agent-tool.d.ts +92 -0
- package/esm/lib/agent-tool.d.ts.map +1 -0
- package/esm/lib/agent-tool.js +211 -0
- package/esm/lib/agent-tool.js.map +1 -0
- package/esm/lib/async-params.d.ts +107 -6
- package/esm/lib/async-params.d.ts.map +1 -1
- package/esm/lib/async-params.js +8 -1
- package/esm/lib/async-params.js.map +1 -1
- package/esm/lib/async-tool-registry.d.ts +134 -0
- package/esm/lib/async-tool-registry.d.ts.map +1 -0
- package/esm/lib/async-tool-registry.js +352 -0
- package/esm/lib/async-tool-registry.js.map +1 -0
- package/esm/lib/async-tools.d.ts +23 -0
- package/esm/lib/async-tools.d.ts.map +1 -0
- package/esm/lib/async-tools.js +19 -0
- package/esm/lib/async-tools.js.map +1 -0
- package/esm/lib/conversation-state.d.ts +45 -1
- package/esm/lib/conversation-state.d.ts.map +1 -1
- package/esm/lib/conversation-state.js +119 -0
- package/esm/lib/conversation-state.js.map +1 -1
- package/esm/lib/doom-loop.d.ts +533 -0
- package/esm/lib/doom-loop.d.ts.map +1 -0
- package/esm/lib/doom-loop.js +1221 -0
- package/esm/lib/doom-loop.js.map +1 -0
- package/esm/lib/hooks-emit.d.ts +50 -0
- package/esm/lib/hooks-emit.d.ts.map +1 -0
- package/esm/lib/hooks-emit.js +307 -0
- package/esm/lib/hooks-emit.js.map +1 -0
- package/esm/lib/hooks-manager.d.ts +141 -0
- package/esm/lib/hooks-manager.d.ts.map +1 -0
- package/esm/lib/hooks-manager.js +282 -0
- package/esm/lib/hooks-manager.js.map +1 -0
- package/esm/lib/hooks-matchers.d.ts +12 -0
- package/esm/lib/hooks-matchers.d.ts.map +1 -0
- package/esm/lib/hooks-matchers.js +26 -0
- package/esm/lib/hooks-matchers.js.map +1 -0
- package/esm/lib/hooks-resolve.d.ts +17 -0
- package/esm/lib/hooks-resolve.d.ts.map +1 -0
- package/esm/lib/hooks-resolve.js +42 -0
- package/esm/lib/hooks-resolve.js.map +1 -0
- package/esm/lib/hooks-schemas.d.ts +221 -0
- package/esm/lib/hooks-schemas.d.ts.map +1 -0
- package/esm/lib/hooks-schemas.js +238 -0
- package/esm/lib/hooks-schemas.js.map +1 -0
- package/esm/lib/hooks-types.d.ts +178 -0
- package/esm/lib/hooks-types.d.ts.map +1 -0
- package/esm/lib/hooks-types.js +45 -0
- package/esm/lib/hooks-types.js.map +1 -0
- package/esm/lib/model-result.d.ts +848 -12
- package/esm/lib/model-result.d.ts.map +1 -1
- package/esm/lib/model-result.js +4055 -410
- package/esm/lib/model-result.js.map +1 -1
- package/esm/lib/reusable-stream.d.ts +15 -0
- package/esm/lib/reusable-stream.d.ts.map +1 -1
- package/esm/lib/reusable-stream.js +25 -0
- package/esm/lib/reusable-stream.js.map +1 -1
- package/esm/lib/stream-transformers.d.ts +20 -0
- package/esm/lib/stream-transformers.d.ts.map +1 -1
- package/esm/lib/stream-transformers.js +45 -0
- package/esm/lib/stream-transformers.js.map +1 -1
- package/esm/lib/tool-check.d.ts +76 -0
- package/esm/lib/tool-check.d.ts.map +1 -0
- package/esm/lib/tool-check.js +241 -0
- package/esm/lib/tool-check.js.map +1 -0
- package/esm/lib/tool-concurrency.d.ts +42 -0
- package/esm/lib/tool-concurrency.d.ts.map +1 -0
- package/esm/lib/tool-concurrency.js +80 -0
- package/esm/lib/tool-concurrency.js.map +1 -0
- package/esm/lib/tool-context.d.ts +45 -1
- package/esm/lib/tool-context.d.ts.map +1 -1
- package/esm/lib/tool-context.js +60 -1
- package/esm/lib/tool-context.js.map +1 -1
- package/esm/lib/tool-executor.d.ts +52 -9
- package/esm/lib/tool-executor.d.ts.map +1 -1
- package/esm/lib/tool-executor.js +263 -21
- package/esm/lib/tool-executor.js.map +1 -1
- package/esm/lib/tool-orchestrator.d.ts.map +1 -1
- package/esm/lib/tool-orchestrator.js +87 -47
- package/esm/lib/tool-orchestrator.js.map +1 -1
- package/esm/lib/tool-task.d.ts +157 -0
- package/esm/lib/tool-task.d.ts.map +1 -0
- package/esm/lib/tool-task.js +206 -0
- package/esm/lib/tool-task.js.map +1 -0
- package/esm/lib/tool-types.d.ts +609 -58
- package/esm/lib/tool-types.d.ts.map +1 -1
- package/esm/lib/tool-types.js +72 -10
- package/esm/lib/tool-types.js.map +1 -1
- package/esm/lib/tool.d.ts +217 -25
- package/esm/lib/tool.d.ts.map +1 -1
- package/esm/lib/tool.js +210 -1
- package/esm/lib/tool.js.map +1 -1
- package/package.json +35 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doom-loop.js","sourceRoot":"","sources":["../../src/lib/doom-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { $ZodType } from 'zod/v4/core';
|
|
2
|
+
import type { EmitResult, HookEntry, LifecycleHookContext } from './hooks-types.js';
|
|
3
|
+
export interface ExecuteChainOptions {
|
|
4
|
+
readonly hookName: string;
|
|
5
|
+
readonly throwOnHandlerError: boolean;
|
|
6
|
+
readonly toolName?: string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Optional Zod schema to validate each handler's result BEFORE the chain
|
|
9
|
+
* applies mutation piping or short-circuit logic. Validation errors are
|
|
10
|
+
* handled the same way as handler throws: either re-thrown (strict mode) or
|
|
11
|
+
* logged as a warning (default).
|
|
12
|
+
*
|
|
13
|
+
* Void-typed hooks typically pass `undefined` here; results in that case are
|
|
14
|
+
* not validated.
|
|
15
|
+
*/
|
|
16
|
+
readonly resultSchema?: $ZodType | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Invoked when a handler's fire-and-forget `work` exceeds its
|
|
19
|
+
* `asyncTimeout`. The manager uses this to abort the emit's signal so
|
|
20
|
+
* handlers that observe `context.signal` can cancel the stale work.
|
|
21
|
+
*/
|
|
22
|
+
readonly onAsyncTimeout?: ((hookName: string) => void) | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Execute a chain of hook handlers sequentially.
|
|
26
|
+
*
|
|
27
|
+
* Supports:
|
|
28
|
+
* - ToolMatcher and filter-based skipping (matcher fails closed: a handler with
|
|
29
|
+
* a matcher and no `options.toolName` is skipped)
|
|
30
|
+
* - Sync results validated against `options.resultSchema` and collected into `results`
|
|
31
|
+
* - Async fire-and-forget via a returned {@link AsyncOutput} -- the handler's
|
|
32
|
+
* `work` promise is pushed to `pending` without being awaited; the manager is
|
|
33
|
+
* responsible for draining/timing out that work
|
|
34
|
+
* - Per-hook mutation piping (driven by {@link HOOK_BEHAVIOR})
|
|
35
|
+
* - Short-circuit on block/reject fields (non-empty string or `true`)
|
|
36
|
+
* - Cooperative abort via `context.signal`: the chain checks
|
|
37
|
+
* `signal.aborted` between handlers and bails out when set so
|
|
38
|
+
* `abortInflight()` has a deterministic effect on the chain itself (not just
|
|
39
|
+
* on handlers that happen to consult the signal).
|
|
40
|
+
*
|
|
41
|
+
* Payload isolation: the initial payload is shallow-cloned before entering the
|
|
42
|
+
* chain so mutation piping (via {@link HOOK_BEHAVIOR}) doesn't mutate the
|
|
43
|
+
* caller's payload at the top level. This is a top-level-only guarantee:
|
|
44
|
+
* handlers that directly mutate a nested object (e.g.
|
|
45
|
+
* `payload.toolInput.foo = 'bar'`) still reach the caller's original nested
|
|
46
|
+
* reference. Handlers MUST return mutations via the documented result fields
|
|
47
|
+
* (e.g. `mutatedInput`) rather than mutating nested payload fields in place.
|
|
48
|
+
*/
|
|
49
|
+
export declare function executeHandlerChain<P, R>(entries: ReadonlyArray<HookEntry<P, R>>, initialPayload: P, context: LifecycleHookContext, options: ExecuteChainOptions): Promise<EmitResult<R, P>>;
|
|
50
|
+
//# sourceMappingURL=hooks-emit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-emit.d.ts","sourceRoot":"","sources":["../../src/lib/hooks-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAEV,UAAU,EAEV,SAAS,EACT,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACpE;AAoBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAC5C,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACvC,cAAc,EAAE,CAAC,EACjB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CA6F3B"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { safeParse } from 'zod/v4/core';
|
|
2
|
+
import { matchesTool } from './hooks-matchers.js';
|
|
3
|
+
import { DEFAULT_ASYNC_TIMEOUT, HOOK_BEHAVIOR, isAsyncOutput } from './hooks-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Returns true only for plain objects (prototype of `Object.prototype` or
|
|
6
|
+
* `null`) -- values where object-spread cloning is safe. Custom hooks can
|
|
7
|
+
* register payload schemas like `z.number()`, `z.string()`, `z.array(...)`,
|
|
8
|
+
* or `z.date()`; spreading a primitive silently produces `{}`, spreading an
|
|
9
|
+
* array reindexes it into an object, and spreading a `Date`/`Map`/class
|
|
10
|
+
* instance flattens it to a near-empty POJO. All of those would hand handlers
|
|
11
|
+
* a mangled value, so only true plain objects are cloned; everything else
|
|
12
|
+
* passes through untouched (and does not participate in mutation piping).
|
|
13
|
+
*/
|
|
14
|
+
function isPlainMutableObject(value) {
|
|
15
|
+
if (typeof value !== 'object' || value === null) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const proto = Object.getPrototypeOf(value);
|
|
19
|
+
return proto === Object.prototype || proto === null;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Execute a chain of hook handlers sequentially.
|
|
23
|
+
*
|
|
24
|
+
* Supports:
|
|
25
|
+
* - ToolMatcher and filter-based skipping (matcher fails closed: a handler with
|
|
26
|
+
* a matcher and no `options.toolName` is skipped)
|
|
27
|
+
* - Sync results validated against `options.resultSchema` and collected into `results`
|
|
28
|
+
* - Async fire-and-forget via a returned {@link AsyncOutput} -- the handler's
|
|
29
|
+
* `work` promise is pushed to `pending` without being awaited; the manager is
|
|
30
|
+
* responsible for draining/timing out that work
|
|
31
|
+
* - Per-hook mutation piping (driven by {@link HOOK_BEHAVIOR})
|
|
32
|
+
* - Short-circuit on block/reject fields (non-empty string or `true`)
|
|
33
|
+
* - Cooperative abort via `context.signal`: the chain checks
|
|
34
|
+
* `signal.aborted` between handlers and bails out when set so
|
|
35
|
+
* `abortInflight()` has a deterministic effect on the chain itself (not just
|
|
36
|
+
* on handlers that happen to consult the signal).
|
|
37
|
+
*
|
|
38
|
+
* Payload isolation: the initial payload is shallow-cloned before entering the
|
|
39
|
+
* chain so mutation piping (via {@link HOOK_BEHAVIOR}) doesn't mutate the
|
|
40
|
+
* caller's payload at the top level. This is a top-level-only guarantee:
|
|
41
|
+
* handlers that directly mutate a nested object (e.g.
|
|
42
|
+
* `payload.toolInput.foo = 'bar'`) still reach the caller's original nested
|
|
43
|
+
* reference. Handlers MUST return mutations via the documented result fields
|
|
44
|
+
* (e.g. `mutatedInput`) rather than mutating nested payload fields in place.
|
|
45
|
+
*/
|
|
46
|
+
export async function executeHandlerChain(entries, initialPayload, context, options) {
|
|
47
|
+
const results = [];
|
|
48
|
+
const pending = [];
|
|
49
|
+
// Only clone when the payload is a plain mutable object. Spreading a
|
|
50
|
+
// primitive (e.g. a custom hook's `z.number()` payload) would silently
|
|
51
|
+
// produce `{}`; spreading an array reindexes it into an object. For those
|
|
52
|
+
// cases we pass the value through untouched so handlers see the original
|
|
53
|
+
// typed-`P` value. For plain objects we still clone so the chain can apply
|
|
54
|
+
// mutation piping without mutating the caller's payload at the top level.
|
|
55
|
+
// Nested fields are shared with the caller; see the function-level docstring
|
|
56
|
+
// for the invariant handlers are expected to respect.
|
|
57
|
+
let currentPayload = isPlainMutableObject(initialPayload)
|
|
58
|
+
? {
|
|
59
|
+
...initialPayload,
|
|
60
|
+
}
|
|
61
|
+
: initialPayload;
|
|
62
|
+
let blocked = false;
|
|
63
|
+
let mutated = false;
|
|
64
|
+
// Per-hook mutation/block behavior. Hooks absent from the table (all
|
|
65
|
+
// observation-only hooks and every custom hook) collect results without
|
|
66
|
+
// altering the payload or short-circuiting.
|
|
67
|
+
const behavior = HOOK_BEHAVIOR[options.hookName];
|
|
68
|
+
for (let i = 0; i < entries.length; i++) {
|
|
69
|
+
// Cooperative abort: bail out of the chain when abortInflight() has fired.
|
|
70
|
+
// Checked before each handler so synchronous chains stop promptly instead
|
|
71
|
+
// of running to completion with only advisory notice to each handler.
|
|
72
|
+
if (context.signal.aborted) {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
const entry = entries[i];
|
|
76
|
+
if (!entry) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
// Matcher and filter checks run under the same error policy as handlers:
|
|
80
|
+
// in non-strict mode a throwing user-supplied matcher function or filter
|
|
81
|
+
// is logged and the entry skipped, instead of crashing the whole chain.
|
|
82
|
+
const gate = evaluateEntryGate(entry, currentPayload, i, options);
|
|
83
|
+
if (gate === 'skip') {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const returnValue = await entry.handler(currentPayload, context);
|
|
88
|
+
const outcome = classifyHandlerReturn(returnValue, i, options);
|
|
89
|
+
if (outcome.kind === 'async') {
|
|
90
|
+
// Fire-and-forget: track the (optional) work promise for drain/timeout.
|
|
91
|
+
if (outcome.trackedWork !== undefined) {
|
|
92
|
+
pending.push(outcome.trackedWork);
|
|
93
|
+
}
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (outcome.kind === 'skip') {
|
|
97
|
+
// Void return, or result-schema validation failed in non-strict mode.
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const result = outcome.result;
|
|
101
|
+
results.push(result);
|
|
102
|
+
// Apply mutation piping -- only hooks with declared mutations participate.
|
|
103
|
+
if (behavior?.mutations) {
|
|
104
|
+
const applied = applyMutations(currentPayload, result, behavior.mutations);
|
|
105
|
+
if (applied !== currentPayload) {
|
|
106
|
+
currentPayload = applied;
|
|
107
|
+
mutated = true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Short-circuit on the hook's declared block field.
|
|
111
|
+
if (behavior?.blockField && isBlockTriggered(result, behavior.blockField)) {
|
|
112
|
+
blocked = true;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (options.throwOnHandlerError) {
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
console.warn(`[HooksManager] Handler ${i} for hook "${options.hookName}" threw:`, error);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
results,
|
|
125
|
+
pending,
|
|
126
|
+
finalPayload: currentPayload,
|
|
127
|
+
blocked,
|
|
128
|
+
mutated,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Evaluate an entry's matcher and filter under the chain's error policy.
|
|
133
|
+
*
|
|
134
|
+
* Matchers fail closed: if a matcher is registered and no toolName is
|
|
135
|
+
* available for this emit, the handler is skipped rather than invoked
|
|
136
|
+
* globally. A throwing matcher function or filter is re-thrown in strict
|
|
137
|
+
* mode, or logged and treated as a skip otherwise.
|
|
138
|
+
*/
|
|
139
|
+
function evaluateEntryGate(entry, payload, index, options) {
|
|
140
|
+
try {
|
|
141
|
+
// Matcher first; the filter must not run when the matcher already
|
|
142
|
+
// rejected the entry (filters can be effectful or expensive).
|
|
143
|
+
const matcherPasses = entry.matcher === undefined ||
|
|
144
|
+
(options.toolName !== undefined && matchesTool(entry.matcher, options.toolName));
|
|
145
|
+
if (!matcherPasses) {
|
|
146
|
+
return 'skip';
|
|
147
|
+
}
|
|
148
|
+
return !entry.filter || Boolean(entry.filter(payload)) ? 'run' : 'skip';
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
if (options.throwOnHandlerError) {
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
console.warn(`[HooksManager] Matcher/filter for handler ${index} of hook "${options.hookName}" threw:`, error);
|
|
155
|
+
return 'skip';
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Classify a handler's return value into one of three outcomes:
|
|
160
|
+
*
|
|
161
|
+
* - `async`: an {@link AsyncOutput} fire-and-forget signal (with the tracked
|
|
162
|
+
* work promise, if any)
|
|
163
|
+
* - `skip`: void/undefined/null (side-effect only), or a result that failed
|
|
164
|
+
* schema validation in non-strict mode
|
|
165
|
+
* - `result`: a validated result. When a result schema is supplied, the
|
|
166
|
+
* parsed output is returned -- which may differ from the input for schemas
|
|
167
|
+
* with .transform() / .default() / .catch() / .coerce -- so downstream
|
|
168
|
+
* callers see transformed values. Validation failure in strict mode throws.
|
|
169
|
+
*/
|
|
170
|
+
function classifyHandlerReturn(returnValue, index, options) {
|
|
171
|
+
if (isAsyncOutput(returnValue)) {
|
|
172
|
+
return {
|
|
173
|
+
kind: 'async',
|
|
174
|
+
trackedWork: trackAsyncWork(returnValue, options.hookName, options.onAsyncTimeout),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
if (returnValue === undefined || returnValue === null) {
|
|
178
|
+
return {
|
|
179
|
+
kind: 'skip',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if (!options.resultSchema) {
|
|
183
|
+
return {
|
|
184
|
+
kind: 'result',
|
|
185
|
+
result: returnValue,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
const validation = safeParse(options.resultSchema, returnValue);
|
|
189
|
+
if (!validation.success) {
|
|
190
|
+
const err = new Error(`[HooksManager] Handler ${index} for hook "${options.hookName}" returned an invalid result: ${validation.error.message}`);
|
|
191
|
+
if (options.throwOnHandlerError) {
|
|
192
|
+
throw err;
|
|
193
|
+
}
|
|
194
|
+
console.warn(err.message);
|
|
195
|
+
return {
|
|
196
|
+
kind: 'skip',
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
kind: 'result',
|
|
201
|
+
result: validation.data,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Given an {@link AsyncOutput} signal, return a Promise<void> that resolves
|
|
206
|
+
* when the handler's detached `work` settles OR the timeout fires -- whichever
|
|
207
|
+
* is first. Returns `undefined` if there is no work to track.
|
|
208
|
+
*
|
|
209
|
+
* On timeout, `onTimeout` is invoked (the manager uses it to abort the emit's
|
|
210
|
+
* signal) and the tracking promise resolves so `drain()` stops waiting. The
|
|
211
|
+
* detached `work` itself cannot be forcibly cancelled -- handlers must observe
|
|
212
|
+
* `context.signal` to actually stop; the timeout only bounds how long the
|
|
213
|
+
* manager waits and signals cancellation cooperatively.
|
|
214
|
+
*
|
|
215
|
+
* Rejections of the detached `work` promise are logged as warnings. Note:
|
|
216
|
+
* `throwOnHandlerError` governs synchronous handler failures only -- detached
|
|
217
|
+
* fire-and-forget work never re-throws here, it just surfaces via the warning.
|
|
218
|
+
*/
|
|
219
|
+
function trackAsyncWork(output, hookName, onTimeout) {
|
|
220
|
+
if (output.work === undefined) {
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
const timeout = output.asyncTimeout ?? DEFAULT_ASYNC_TIMEOUT;
|
|
224
|
+
return new Promise((resolve) => {
|
|
225
|
+
let settled = false;
|
|
226
|
+
const finish = () => {
|
|
227
|
+
if (settled) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
settled = true;
|
|
231
|
+
clearTimeout(timeoutId);
|
|
232
|
+
resolve();
|
|
233
|
+
};
|
|
234
|
+
const timeoutId = setTimeout(() => {
|
|
235
|
+
if (!settled) {
|
|
236
|
+
console.warn(`[HooksManager] Async work for hook "${hookName}" exceeded its ${timeout}ms timeout; abandoning wait.`);
|
|
237
|
+
onTimeout?.(hookName);
|
|
238
|
+
}
|
|
239
|
+
finish();
|
|
240
|
+
}, timeout);
|
|
241
|
+
// In Node.js, Timeout objects expose `.unref()` to remove the reference
|
|
242
|
+
// the timer holds on the event loop. Without this, a leaked hook whose
|
|
243
|
+
// `work` never settles keeps the process alive for the full
|
|
244
|
+
// DEFAULT_ASYNC_TIMEOUT window after the main workload has finished.
|
|
245
|
+
// Guarded for browsers / other environments that return a plain number
|
|
246
|
+
// from setTimeout and don't expose the method.
|
|
247
|
+
if (isUnrefable(timeoutId)) {
|
|
248
|
+
timeoutId.unref();
|
|
249
|
+
}
|
|
250
|
+
output.work?.then(finish, (error) => {
|
|
251
|
+
console.warn(`[HooksManager] Async work for hook "${hookName}" rejected:`, error);
|
|
252
|
+
finish();
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Typeguard for the Node.js Timeout object that carries a `.unref()` method.
|
|
258
|
+
* Browsers and other environments return a number from setTimeout, which has
|
|
259
|
+
* no such method.
|
|
260
|
+
*/
|
|
261
|
+
function isUnrefable(handle) {
|
|
262
|
+
if (typeof handle !== 'object' || handle === null || !('unref' in handle)) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
const candidate = handle;
|
|
266
|
+
return typeof candidate.unref === 'function';
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Apply mutation fields from a result onto the current payload.
|
|
270
|
+
*/
|
|
271
|
+
function applyMutations(payload, result, mutationMap) {
|
|
272
|
+
if (typeof result !== 'object' || result === null) {
|
|
273
|
+
return payload;
|
|
274
|
+
}
|
|
275
|
+
let mutated = payload;
|
|
276
|
+
for (const [resultField, payloadField] of Object.entries(mutationMap)) {
|
|
277
|
+
if (resultField in result) {
|
|
278
|
+
const value = result[resultField];
|
|
279
|
+
if (value !== undefined) {
|
|
280
|
+
mutated = {
|
|
281
|
+
...mutated,
|
|
282
|
+
[payloadField]: value,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return mutated;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Check if a result triggers a short-circuit block.
|
|
291
|
+
*
|
|
292
|
+
* A block fires when the field is `=== true` or a non-empty string. Empty
|
|
293
|
+
* strings are treated as "no block reason supplied" -- they do NOT trigger a
|
|
294
|
+
* short-circuit, which keeps emit consistent with callers that look up the
|
|
295
|
+
* first block reason with a truthy check.
|
|
296
|
+
*/
|
|
297
|
+
function isBlockTriggered(result, blockField) {
|
|
298
|
+
if (typeof result !== 'object' || result === null) {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
const value = result[blockField];
|
|
302
|
+
if (value === true) {
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
return typeof value === 'string' && value.length > 0;
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=hooks-emit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-emit.js","sourceRoot":"","sources":["../../src/lib/hooks-emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { $ZodType, infer as zodInfer, input as zodInput } from 'zod/v4/core';
|
|
2
|
+
import type { BuiltInHookDefinitions, EmitResult, HookEntry, HookHandler, HookRegistry, HooksManagerOptions } from './hooks-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type-level registry of every hook this manager knows: built-ins plus the
|
|
5
|
+
* instance's custom hooks. Each entry carries:
|
|
6
|
+
*
|
|
7
|
+
* - `payload`: the schema OUTPUT -- what handlers receive and `finalPayload`
|
|
8
|
+
* holds (post-validation, transforms/defaults applied)
|
|
9
|
+
* - `payloadIn`: the schema INPUT -- what `emit()` accepts (differs from
|
|
10
|
+
* `payload` for schemas with .transform()/.default()/.coerce). Built-in
|
|
11
|
+
* schemas have no transforms, so input == output there.
|
|
12
|
+
* - `result`: the validated handler result
|
|
13
|
+
*/
|
|
14
|
+
type AllHooks<Custom extends HookRegistry> = {
|
|
15
|
+
[K in keyof BuiltInHookDefinitions]: {
|
|
16
|
+
payload: BuiltInHookDefinitions[K]['payload'];
|
|
17
|
+
payloadIn: BuiltInHookDefinitions[K]['payload'];
|
|
18
|
+
result: BuiltInHookDefinitions[K]['result'];
|
|
19
|
+
};
|
|
20
|
+
} & {
|
|
21
|
+
[K in keyof Custom]: {
|
|
22
|
+
payload: zodInfer<Custom[K]['payload']>;
|
|
23
|
+
payloadIn: zodInput<Custom[K]['payload']>;
|
|
24
|
+
result: zodInfer<Custom[K]['result']>;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Module-private key used by `resolveHooks` to call the internal
|
|
29
|
+
* untyped-registration path without exposing it as a public method on the
|
|
30
|
+
* class. See {@link getInternalRegistrar} below.
|
|
31
|
+
*/
|
|
32
|
+
declare const INTERNAL_REGISTRAR_KEY: unique symbol;
|
|
33
|
+
type InternalRegistrar = (hookName: string, entry: HookEntry<unknown, unknown>) => () => void;
|
|
34
|
+
/**
|
|
35
|
+
* Typed, extensible hook system for agent lifecycle events.
|
|
36
|
+
*
|
|
37
|
+
* Supports both built-in hooks (PreToolUse, PostToolUse, etc.) and
|
|
38
|
+
* user-defined custom hooks with full type safety.
|
|
39
|
+
*/
|
|
40
|
+
export declare class HooksManager<Custom extends HookRegistry = Record<string, never>> {
|
|
41
|
+
private readonly entries;
|
|
42
|
+
private readonly pendingAsync;
|
|
43
|
+
private readonly customHooks;
|
|
44
|
+
private readonly inflightControllers;
|
|
45
|
+
private readonly throwOnHandlerError;
|
|
46
|
+
private sessionId;
|
|
47
|
+
constructor(customHooks?: Custom, options?: HooksManagerOptions);
|
|
48
|
+
/**
|
|
49
|
+
* Set the manager-level default session ID exposed as `context.sessionId`
|
|
50
|
+
* to handler invocations. Payloads deliberately do not carry session
|
|
51
|
+
* identity.
|
|
52
|
+
*
|
|
53
|
+
* This is a single mutable default on the manager instance: when one
|
|
54
|
+
* manager is shared by concurrent runs, callers MUST pass `sessionId` in
|
|
55
|
+
* the per-emit context instead (as the engine does), otherwise the last
|
|
56
|
+
* `setSessionId()` wins and concurrent emits observe the wrong id.
|
|
57
|
+
*/
|
|
58
|
+
setSessionId(sessionId: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Register a handler for a hook. Returns an unsubscribe function.
|
|
61
|
+
*/
|
|
62
|
+
on<K extends keyof AllHooks<Custom> & string>(hookName: K, entry: HookEntry<AllHooks<Custom>[K]['payload'], AllHooks<Custom>[K]['result']>): () => void;
|
|
63
|
+
/**
|
|
64
|
+
* Remove a specific handler function from a hook.
|
|
65
|
+
* Returns true if found and removed, false otherwise.
|
|
66
|
+
*/
|
|
67
|
+
off<K extends keyof AllHooks<Custom> & string>(hookName: K, handler: HookHandler<AllHooks<Custom>[K]['payload'], AllHooks<Custom>[K]['result']>): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Remove all handlers for a specific hook, or all handlers if no name given.
|
|
70
|
+
*/
|
|
71
|
+
removeAll<K extends keyof AllHooks<Custom> & string>(hookName?: K): void;
|
|
72
|
+
/**
|
|
73
|
+
* Validate the payload (and each handler's result) against the registered
|
|
74
|
+
* Zod schemas, invoke matching handlers, and return results.
|
|
75
|
+
*
|
|
76
|
+
* Payload validation failure is treated according to `throwOnHandlerError`:
|
|
77
|
+
* strict mode re-throws, default mode logs a warning and returns an empty
|
|
78
|
+
* result without invoking any handlers.
|
|
79
|
+
*/
|
|
80
|
+
emit<K extends keyof AllHooks<Custom> & string>(hookName: K, payload: AllHooks<Custom>[K]['payloadIn'], emitContext?: {
|
|
81
|
+
toolName?: string;
|
|
82
|
+
/**
|
|
83
|
+
* Session identity for THIS emit's `context.sessionId`, overriding the
|
|
84
|
+
* manager-level default from `setSessionId()`. Pass it whenever the
|
|
85
|
+
* manager instance may be shared across concurrent runs.
|
|
86
|
+
*/
|
|
87
|
+
sessionId?: string;
|
|
88
|
+
}): Promise<EmitResult<AllHooks<Custom>[K]['result'], AllHooks<Custom>[K]['payload']>>;
|
|
89
|
+
/**
|
|
90
|
+
* Await all in-flight async handler work. Used for graceful shutdown.
|
|
91
|
+
*/
|
|
92
|
+
drain(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Abort every in-flight `emit()` by firing their context `signal`s. Handlers
|
|
95
|
+
* that kick off async work should observe `context.signal` to honor this.
|
|
96
|
+
*
|
|
97
|
+
* Does not remove pending async work from `pendingAsync` — callers that want
|
|
98
|
+
* to wait for handlers to wind down should still call `drain()` afterward.
|
|
99
|
+
*/
|
|
100
|
+
abortInflight(reason?: unknown): void;
|
|
101
|
+
/**
|
|
102
|
+
* Check if any handlers are registered for a given hook.
|
|
103
|
+
*/
|
|
104
|
+
hasHandlers(hookName: string): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Internal registration path used by `resolveHooks` to translate an
|
|
107
|
+
* InlineHookConfig object into this manager. User code should use `on()`.
|
|
108
|
+
*/
|
|
109
|
+
[INTERNAL_REGISTRAR_KEY](hookName: string, entry: HookEntry<unknown, unknown>): () => void;
|
|
110
|
+
private _register;
|
|
111
|
+
private _definitionFor;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Internal: return the private registrar of a HooksManager instance. This
|
|
115
|
+
* lets `resolveHooks` register arbitrary hook names (including unknown ones
|
|
116
|
+
* from an inline config) without exposing a public bypass of the typed `on()`.
|
|
117
|
+
*
|
|
118
|
+
* NOT PART OF THE PUBLIC API.
|
|
119
|
+
*/
|
|
120
|
+
export declare function getInternalRegistrar(manager: HooksManager): InternalRegistrar;
|
|
121
|
+
/**
|
|
122
|
+
* Detect a `z.void()` schema (zod v4 core). Result validation is skipped for
|
|
123
|
+
* void-result hooks so side-effect-only handlers can return arbitrary values
|
|
124
|
+
* without tripping validation -- for built-ins and custom hooks alike.
|
|
125
|
+
*
|
|
126
|
+
* Implementation note: `schema._zod.def.type` is zod v4's designated
|
|
127
|
+
* introspection surface for library authors (every `$ZodType` carries a
|
|
128
|
+
* `_zod: $ZodTypeInternals` with a stable `def.type` discriminator). A string
|
|
129
|
+
* check is deliberately preferred over `instanceof $ZodVoid`, which breaks
|
|
130
|
+
* across duplicated zod module instances (dual-package hazard) and mixed
|
|
131
|
+
* zod/v4 vs zod/v4-mini usage. Behavior is pinned by tests in
|
|
132
|
+
* hooks-contract-fixes.test.ts ("void schema detection") so a zod upgrade
|
|
133
|
+
* that restructures the internals fails loudly instead of silently
|
|
134
|
+
* re-enabling result validation on void hooks.
|
|
135
|
+
*
|
|
136
|
+
* Exported for the pinning tests only; NOT re-exported from the package
|
|
137
|
+
* index and NOT part of the public API.
|
|
138
|
+
*/
|
|
139
|
+
export declare function isVoidSchema(schema: $ZodType): boolean;
|
|
140
|
+
export {};
|
|
141
|
+
//# sourceMappingURL=hooks-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-manager.d.ts","sourceRoot":"","sources":["../../src/lib/hooks-manager.ts"],"names":[],"mappings":"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"}
|