@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.
Files changed (105) hide show
  1. package/README.md +728 -19
  2. package/esm/index.d.ts +24 -6
  3. package/esm/index.d.ts.map +1 -1
  4. package/esm/index.js +20 -5
  5. package/esm/index.js.map +1 -1
  6. package/esm/inner-loop/call-model.d.ts +8 -5
  7. package/esm/inner-loop/call-model.d.ts.map +1 -1
  8. package/esm/inner-loop/call-model.js +49 -40
  9. package/esm/inner-loop/call-model.js.map +1 -1
  10. package/esm/inner-loop/resume-tool-results.d.ts +128 -0
  11. package/esm/inner-loop/resume-tool-results.d.ts.map +1 -0
  12. package/esm/inner-loop/resume-tool-results.js +244 -0
  13. package/esm/inner-loop/resume-tool-results.js.map +1 -0
  14. package/esm/lib/agent-tool.d.ts +92 -0
  15. package/esm/lib/agent-tool.d.ts.map +1 -0
  16. package/esm/lib/agent-tool.js +211 -0
  17. package/esm/lib/agent-tool.js.map +1 -0
  18. package/esm/lib/async-params.d.ts +107 -6
  19. package/esm/lib/async-params.d.ts.map +1 -1
  20. package/esm/lib/async-params.js +8 -1
  21. package/esm/lib/async-params.js.map +1 -1
  22. package/esm/lib/async-tool-registry.d.ts +134 -0
  23. package/esm/lib/async-tool-registry.d.ts.map +1 -0
  24. package/esm/lib/async-tool-registry.js +352 -0
  25. package/esm/lib/async-tool-registry.js.map +1 -0
  26. package/esm/lib/async-tools.d.ts +23 -0
  27. package/esm/lib/async-tools.d.ts.map +1 -0
  28. package/esm/lib/async-tools.js +19 -0
  29. package/esm/lib/async-tools.js.map +1 -0
  30. package/esm/lib/conversation-state.d.ts +45 -1
  31. package/esm/lib/conversation-state.d.ts.map +1 -1
  32. package/esm/lib/conversation-state.js +119 -0
  33. package/esm/lib/conversation-state.js.map +1 -1
  34. package/esm/lib/doom-loop.d.ts +533 -0
  35. package/esm/lib/doom-loop.d.ts.map +1 -0
  36. package/esm/lib/doom-loop.js +1221 -0
  37. package/esm/lib/doom-loop.js.map +1 -0
  38. package/esm/lib/hooks-emit.d.ts +50 -0
  39. package/esm/lib/hooks-emit.d.ts.map +1 -0
  40. package/esm/lib/hooks-emit.js +307 -0
  41. package/esm/lib/hooks-emit.js.map +1 -0
  42. package/esm/lib/hooks-manager.d.ts +141 -0
  43. package/esm/lib/hooks-manager.d.ts.map +1 -0
  44. package/esm/lib/hooks-manager.js +282 -0
  45. package/esm/lib/hooks-manager.js.map +1 -0
  46. package/esm/lib/hooks-matchers.d.ts +12 -0
  47. package/esm/lib/hooks-matchers.d.ts.map +1 -0
  48. package/esm/lib/hooks-matchers.js +26 -0
  49. package/esm/lib/hooks-matchers.js.map +1 -0
  50. package/esm/lib/hooks-resolve.d.ts +17 -0
  51. package/esm/lib/hooks-resolve.d.ts.map +1 -0
  52. package/esm/lib/hooks-resolve.js +42 -0
  53. package/esm/lib/hooks-resolve.js.map +1 -0
  54. package/esm/lib/hooks-schemas.d.ts +221 -0
  55. package/esm/lib/hooks-schemas.d.ts.map +1 -0
  56. package/esm/lib/hooks-schemas.js +238 -0
  57. package/esm/lib/hooks-schemas.js.map +1 -0
  58. package/esm/lib/hooks-types.d.ts +178 -0
  59. package/esm/lib/hooks-types.d.ts.map +1 -0
  60. package/esm/lib/hooks-types.js +45 -0
  61. package/esm/lib/hooks-types.js.map +1 -0
  62. package/esm/lib/model-result.d.ts +848 -12
  63. package/esm/lib/model-result.d.ts.map +1 -1
  64. package/esm/lib/model-result.js +4055 -410
  65. package/esm/lib/model-result.js.map +1 -1
  66. package/esm/lib/reusable-stream.d.ts +15 -0
  67. package/esm/lib/reusable-stream.d.ts.map +1 -1
  68. package/esm/lib/reusable-stream.js +25 -0
  69. package/esm/lib/reusable-stream.js.map +1 -1
  70. package/esm/lib/stream-transformers.d.ts +20 -0
  71. package/esm/lib/stream-transformers.d.ts.map +1 -1
  72. package/esm/lib/stream-transformers.js +45 -0
  73. package/esm/lib/stream-transformers.js.map +1 -1
  74. package/esm/lib/tool-check.d.ts +76 -0
  75. package/esm/lib/tool-check.d.ts.map +1 -0
  76. package/esm/lib/tool-check.js +241 -0
  77. package/esm/lib/tool-check.js.map +1 -0
  78. package/esm/lib/tool-concurrency.d.ts +42 -0
  79. package/esm/lib/tool-concurrency.d.ts.map +1 -0
  80. package/esm/lib/tool-concurrency.js +80 -0
  81. package/esm/lib/tool-concurrency.js.map +1 -0
  82. package/esm/lib/tool-context.d.ts +45 -1
  83. package/esm/lib/tool-context.d.ts.map +1 -1
  84. package/esm/lib/tool-context.js +60 -1
  85. package/esm/lib/tool-context.js.map +1 -1
  86. package/esm/lib/tool-executor.d.ts +52 -9
  87. package/esm/lib/tool-executor.d.ts.map +1 -1
  88. package/esm/lib/tool-executor.js +263 -21
  89. package/esm/lib/tool-executor.js.map +1 -1
  90. package/esm/lib/tool-orchestrator.d.ts.map +1 -1
  91. package/esm/lib/tool-orchestrator.js +87 -47
  92. package/esm/lib/tool-orchestrator.js.map +1 -1
  93. package/esm/lib/tool-task.d.ts +157 -0
  94. package/esm/lib/tool-task.d.ts.map +1 -0
  95. package/esm/lib/tool-task.js +206 -0
  96. package/esm/lib/tool-task.js.map +1 -0
  97. package/esm/lib/tool-types.d.ts +609 -58
  98. package/esm/lib/tool-types.d.ts.map +1 -1
  99. package/esm/lib/tool-types.js +72 -10
  100. package/esm/lib/tool-types.js.map +1 -1
  101. package/esm/lib/tool.d.ts +217 -25
  102. package/esm/lib/tool.d.ts.map +1 -1
  103. package/esm/lib/tool.js +210 -1
  104. package/esm/lib/tool.js.map +1 -1
  105. 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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"}