@lleverage-ai/agent-sdk 0.0.1
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/LICENSE +21 -0
- package/README.md +2321 -0
- package/dist/agent.d.ts +52 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +2122 -0
- package/dist/agent.js.map +1 -0
- package/dist/backend.d.ts +378 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +71 -0
- package/dist/backend.js.map +1 -0
- package/dist/backends/composite.d.ts +258 -0
- package/dist/backends/composite.d.ts.map +1 -0
- package/dist/backends/composite.js +437 -0
- package/dist/backends/composite.js.map +1 -0
- package/dist/backends/filesystem.d.ts +268 -0
- package/dist/backends/filesystem.d.ts.map +1 -0
- package/dist/backends/filesystem.js +623 -0
- package/dist/backends/filesystem.js.map +1 -0
- package/dist/backends/index.d.ts +14 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +14 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/persistent.d.ts +312 -0
- package/dist/backends/persistent.d.ts.map +1 -0
- package/dist/backends/persistent.js +519 -0
- package/dist/backends/persistent.js.map +1 -0
- package/dist/backends/sandbox.d.ts +315 -0
- package/dist/backends/sandbox.d.ts.map +1 -0
- package/dist/backends/sandbox.js +490 -0
- package/dist/backends/sandbox.js.map +1 -0
- package/dist/backends/state.d.ts +225 -0
- package/dist/backends/state.d.ts.map +1 -0
- package/dist/backends/state.js +396 -0
- package/dist/backends/state.js.map +1 -0
- package/dist/checkpointer/file-saver.d.ts +182 -0
- package/dist/checkpointer/file-saver.d.ts.map +1 -0
- package/dist/checkpointer/file-saver.js +298 -0
- package/dist/checkpointer/file-saver.js.map +1 -0
- package/dist/checkpointer/index.d.ts +40 -0
- package/dist/checkpointer/index.d.ts.map +1 -0
- package/dist/checkpointer/index.js +40 -0
- package/dist/checkpointer/index.js.map +1 -0
- package/dist/checkpointer/kv-saver.d.ts +142 -0
- package/dist/checkpointer/kv-saver.d.ts.map +1 -0
- package/dist/checkpointer/kv-saver.js +176 -0
- package/dist/checkpointer/kv-saver.js.map +1 -0
- package/dist/checkpointer/memory-saver.d.ts +158 -0
- package/dist/checkpointer/memory-saver.d.ts.map +1 -0
- package/dist/checkpointer/memory-saver.js +222 -0
- package/dist/checkpointer/memory-saver.js.map +1 -0
- package/dist/checkpointer/types.d.ts +353 -0
- package/dist/checkpointer/types.d.ts.map +1 -0
- package/dist/checkpointer/types.js +159 -0
- package/dist/checkpointer/types.js.map +1 -0
- package/dist/context-manager.d.ts +627 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +1039 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/context.d.ts +57 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +76 -0
- package/dist/context.js.map +1 -0
- package/dist/errors/index.d.ts +611 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +1023 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/generation-helpers.d.ts +126 -0
- package/dist/generation-helpers.d.ts.map +1 -0
- package/dist/generation-helpers.js +181 -0
- package/dist/generation-helpers.js.map +1 -0
- package/dist/hooks/audit.d.ts +210 -0
- package/dist/hooks/audit.d.ts.map +1 -0
- package/dist/hooks/audit.js +305 -0
- package/dist/hooks/audit.js.map +1 -0
- package/dist/hooks/cache.d.ts +180 -0
- package/dist/hooks/cache.d.ts.map +1 -0
- package/dist/hooks/cache.js +273 -0
- package/dist/hooks/cache.js.map +1 -0
- package/dist/hooks/guardrails.d.ts +145 -0
- package/dist/hooks/guardrails.d.ts.map +1 -0
- package/dist/hooks/guardrails.js +326 -0
- package/dist/hooks/guardrails.js.map +1 -0
- package/dist/hooks/index.d.ts +18 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +32 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/logging.d.ts +193 -0
- package/dist/hooks/logging.d.ts.map +1 -0
- package/dist/hooks/logging.js +345 -0
- package/dist/hooks/logging.js.map +1 -0
- package/dist/hooks/parallel-guardrails.d.ts +268 -0
- package/dist/hooks/parallel-guardrails.d.ts.map +1 -0
- package/dist/hooks/parallel-guardrails.js +416 -0
- package/dist/hooks/parallel-guardrails.js.map +1 -0
- package/dist/hooks/rate-limit.d.ts +305 -0
- package/dist/hooks/rate-limit.d.ts.map +1 -0
- package/dist/hooks/rate-limit.js +372 -0
- package/dist/hooks/rate-limit.js.map +1 -0
- package/dist/hooks/retry.d.ts +144 -0
- package/dist/hooks/retry.d.ts.map +1 -0
- package/dist/hooks/retry.js +210 -0
- package/dist/hooks/retry.js.map +1 -0
- package/dist/hooks/secrets.d.ts +174 -0
- package/dist/hooks/secrets.d.ts.map +1 -0
- package/dist/hooks/secrets.js +306 -0
- package/dist/hooks/secrets.js.map +1 -0
- package/dist/hooks.d.ts +229 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +352 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/env.d.ts +25 -0
- package/dist/mcp/env.d.ts.map +1 -0
- package/dist/mcp/env.js +18 -0
- package/dist/mcp/env.js.map +1 -0
- package/dist/mcp/index.d.ts +16 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +184 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +446 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/types.d.ts +58 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +7 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/mcp/validation.d.ts +119 -0
- package/dist/mcp/validation.d.ts.map +1 -0
- package/dist/mcp/validation.js +407 -0
- package/dist/mcp/validation.js.map +1 -0
- package/dist/mcp/virtual-server.d.ts +78 -0
- package/dist/mcp/virtual-server.d.ts.map +1 -0
- package/dist/mcp/virtual-server.js +137 -0
- package/dist/mcp/virtual-server.js.map +1 -0
- package/dist/memory/filesystem-store.d.ts +217 -0
- package/dist/memory/filesystem-store.d.ts.map +1 -0
- package/dist/memory/filesystem-store.js +343 -0
- package/dist/memory/filesystem-store.js.map +1 -0
- package/dist/memory/index.d.ts +46 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +46 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/loader.d.ts +396 -0
- package/dist/memory/loader.d.ts.map +1 -0
- package/dist/memory/loader.js +419 -0
- package/dist/memory/loader.js.map +1 -0
- package/dist/memory/permissions.d.ts +282 -0
- package/dist/memory/permissions.d.ts.map +1 -0
- package/dist/memory/permissions.js +297 -0
- package/dist/memory/permissions.js.map +1 -0
- package/dist/memory/rules.d.ts +249 -0
- package/dist/memory/rules.d.ts.map +1 -0
- package/dist/memory/rules.js +362 -0
- package/dist/memory/rules.js.map +1 -0
- package/dist/memory/store.d.ts +286 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +263 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/middleware/apply.d.ts +73 -0
- package/dist/middleware/apply.d.ts.map +1 -0
- package/dist/middleware/apply.js +219 -0
- package/dist/middleware/apply.js.map +1 -0
- package/dist/middleware/context.d.ts +33 -0
- package/dist/middleware/context.d.ts.map +1 -0
- package/dist/middleware/context.js +176 -0
- package/dist/middleware/context.js.map +1 -0
- package/dist/middleware/index.d.ts +31 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +32 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/logging.d.ts +137 -0
- package/dist/middleware/logging.d.ts.map +1 -0
- package/dist/middleware/logging.js +374 -0
- package/dist/middleware/logging.js.map +1 -0
- package/dist/middleware/types.d.ts +183 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +11 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/observability/events.d.ts +183 -0
- package/dist/observability/events.d.ts.map +1 -0
- package/dist/observability/events.js +305 -0
- package/dist/observability/events.js.map +1 -0
- package/dist/observability/index.d.ts +55 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +87 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +318 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +436 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +341 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +490 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/preset.d.ts +161 -0
- package/dist/observability/preset.d.ts.map +1 -0
- package/dist/observability/preset.js +133 -0
- package/dist/observability/preset.js.map +1 -0
- package/dist/observability/streaming.d.ts +113 -0
- package/dist/observability/streaming.d.ts.map +1 -0
- package/dist/observability/streaming.js +114 -0
- package/dist/observability/streaming.js.map +1 -0
- package/dist/observability/tracing.d.ts +378 -0
- package/dist/observability/tracing.d.ts.map +1 -0
- package/dist/observability/tracing.js +539 -0
- package/dist/observability/tracing.js.map +1 -0
- package/dist/plugins.d.ts +55 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +63 -0
- package/dist/plugins.js.map +1 -0
- package/dist/presets/index.d.ts +7 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +7 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/production.d.ts +262 -0
- package/dist/presets/production.d.ts.map +1 -0
- package/dist/presets/production.js +295 -0
- package/dist/presets/production.js.map +1 -0
- package/dist/security/index.d.ts +179 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +323 -0
- package/dist/security/index.js.map +1 -0
- package/dist/subagents/advanced.d.ts +413 -0
- package/dist/subagents/advanced.d.ts.map +1 -0
- package/dist/subagents/advanced.js +396 -0
- package/dist/subagents/advanced.js.map +1 -0
- package/dist/subagents/index.d.ts +14 -0
- package/dist/subagents/index.d.ts.map +1 -0
- package/dist/subagents/index.js +15 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents.d.ts +73 -0
- package/dist/subagents.d.ts.map +1 -0
- package/dist/subagents.js +213 -0
- package/dist/subagents.js.map +1 -0
- package/dist/task-store/file-store.d.ts +76 -0
- package/dist/task-store/file-store.d.ts.map +1 -0
- package/dist/task-store/file-store.js +190 -0
- package/dist/task-store/file-store.js.map +1 -0
- package/dist/task-store/index.d.ts +11 -0
- package/dist/task-store/index.d.ts.map +1 -0
- package/dist/task-store/index.js +10 -0
- package/dist/task-store/index.js.map +1 -0
- package/dist/task-store/kv-store.d.ts +140 -0
- package/dist/task-store/kv-store.d.ts.map +1 -0
- package/dist/task-store/kv-store.js +169 -0
- package/dist/task-store/kv-store.js.map +1 -0
- package/dist/task-store/memory-store.d.ts +66 -0
- package/dist/task-store/memory-store.d.ts.map +1 -0
- package/dist/task-store/memory-store.js +125 -0
- package/dist/task-store/memory-store.js.map +1 -0
- package/dist/task-store/types.d.ts +235 -0
- package/dist/task-store/types.d.ts.map +1 -0
- package/dist/task-store/types.js +110 -0
- package/dist/task-store/types.js.map +1 -0
- package/dist/testing/assertions.d.ts +401 -0
- package/dist/testing/assertions.d.ts.map +1 -0
- package/dist/testing/assertions.js +630 -0
- package/dist/testing/assertions.js.map +1 -0
- package/dist/testing/index.d.ts +343 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +360 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-agent.d.ts +214 -0
- package/dist/testing/mock-agent.d.ts.map +1 -0
- package/dist/testing/mock-agent.js +448 -0
- package/dist/testing/mock-agent.js.map +1 -0
- package/dist/testing/recorder.d.ts +288 -0
- package/dist/testing/recorder.d.ts.map +1 -0
- package/dist/testing/recorder.js +499 -0
- package/dist/testing/recorder.js.map +1 -0
- package/dist/tools/execute.d.ts +104 -0
- package/dist/tools/execute.d.ts.map +1 -0
- package/dist/tools/execute.js +191 -0
- package/dist/tools/execute.js.map +1 -0
- package/dist/tools/factory.d.ts +260 -0
- package/dist/tools/factory.d.ts.map +1 -0
- package/dist/tools/factory.js +241 -0
- package/dist/tools/factory.js.map +1 -0
- package/dist/tools/filesystem.d.ts +215 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +311 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/index.d.ts +33 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +33 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/search.d.ts +59 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +94 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/skills.d.ts +354 -0
- package/dist/tools/skills.d.ts.map +1 -0
- package/dist/tools/skills.js +413 -0
- package/dist/tools/skills.js.map +1 -0
- package/dist/tools/task.d.ts +272 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +521 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todos.d.ts +131 -0
- package/dist/tools/todos.d.ts.map +1 -0
- package/dist/tools/todos.js +120 -0
- package/dist/tools/todos.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +424 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +607 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/user-interaction.d.ts +116 -0
- package/dist/tools/user-interaction.d.ts.map +1 -0
- package/dist/tools/user-interaction.js +147 -0
- package/dist/tools/user-interaction.js.map +1 -0
- package/dist/tools/utils.d.ts +124 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/tools/utils.js +189 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools.d.ts +74 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +73 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +2421 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +55 -0
- package/dist/types.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guardrails hook utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides content filtering and safety hooks using the unified hook system.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Extracts text content from a single message.
|
|
10
|
+
*/
|
|
11
|
+
function extractTextFromMessage(msg) {
|
|
12
|
+
if (typeof msg !== "object" || msg === null) {
|
|
13
|
+
return "";
|
|
14
|
+
}
|
|
15
|
+
const content = msg.content;
|
|
16
|
+
if (typeof content === "string") {
|
|
17
|
+
return content;
|
|
18
|
+
}
|
|
19
|
+
if (Array.isArray(content)) {
|
|
20
|
+
const texts = [];
|
|
21
|
+
for (const part of content) {
|
|
22
|
+
if (typeof part === "object" &&
|
|
23
|
+
part !== null &&
|
|
24
|
+
"text" in part &&
|
|
25
|
+
typeof part.text === "string") {
|
|
26
|
+
texts.push(part.text);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return texts.join("\n");
|
|
30
|
+
}
|
|
31
|
+
return "";
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Extracts text content from all messages for pattern matching.
|
|
35
|
+
*/
|
|
36
|
+
function extractTextFromMessages(messages = []) {
|
|
37
|
+
const texts = [];
|
|
38
|
+
for (const msg of messages) {
|
|
39
|
+
const text = extractTextFromMessage(msg);
|
|
40
|
+
if (text) {
|
|
41
|
+
texts.push(text);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return texts.join("\n");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Finds message IDs that match any of the given patterns.
|
|
48
|
+
* Returns IDs of messages containing blocked content.
|
|
49
|
+
*/
|
|
50
|
+
function findBlockedMessageIds(messages, patterns) {
|
|
51
|
+
const blockedIds = [];
|
|
52
|
+
for (const msg of messages) {
|
|
53
|
+
const typedMsg = msg;
|
|
54
|
+
if (!typedMsg.id)
|
|
55
|
+
continue;
|
|
56
|
+
const text = extractTextFromMessage(msg);
|
|
57
|
+
if (!text)
|
|
58
|
+
continue;
|
|
59
|
+
for (const pattern of patterns) {
|
|
60
|
+
if (pattern.test(text)) {
|
|
61
|
+
blockedIds.push(typedMsg.id);
|
|
62
|
+
break; // Only add each message once
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return blockedIds;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Creates guardrails hooks for input and output content filtering.
|
|
70
|
+
*
|
|
71
|
+
* The PreGenerate hook blocks requests matching input patterns.
|
|
72
|
+
* The PostGenerate hook filters output matching output patterns.
|
|
73
|
+
*
|
|
74
|
+
* This replaces guardrails middleware with hook-based filtering that
|
|
75
|
+
* works correctly with the unified hook system.
|
|
76
|
+
*
|
|
77
|
+
* @param options - Configuration options
|
|
78
|
+
* @returns Array of two hooks: [PreGenerate input filter, PostGenerate output filter]
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const [inputFilter, outputFilter] = createGuardrailsHooks({
|
|
83
|
+
* blockedInputPatterns: [
|
|
84
|
+
* /password/i,
|
|
85
|
+
* /api.?key/i,
|
|
86
|
+
* /secret/i,
|
|
87
|
+
* ],
|
|
88
|
+
* blockedOutputPatterns: [
|
|
89
|
+
* /\b\d{16}\b/, // Credit card numbers
|
|
90
|
+
* /\b\d{3}-\d{2}-\d{4}\b/, // SSN
|
|
91
|
+
* ],
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* const agent = createAgent({
|
|
95
|
+
* model,
|
|
96
|
+
* hooks: {
|
|
97
|
+
* PreGenerate: [{ hooks: [inputFilter] }],
|
|
98
|
+
* PostGenerate: [{ hooks: [outputFilter] }],
|
|
99
|
+
* },
|
|
100
|
+
* });
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* // Custom validation with transformation
|
|
106
|
+
* const hooks = createGuardrailsHooks({
|
|
107
|
+
* checkInput: (input) => {
|
|
108
|
+
* // Allow but transform: remove PII from messages
|
|
109
|
+
* const cleaned = cleanPII(input.options.messages);
|
|
110
|
+
* return {
|
|
111
|
+
* ...input,
|
|
112
|
+
* options: { ...input.options, messages: cleaned },
|
|
113
|
+
* };
|
|
114
|
+
* },
|
|
115
|
+
* checkOutput: (input) => {
|
|
116
|
+
* // Filter harmful content
|
|
117
|
+
* if (isHarmful(input.result.text)) {
|
|
118
|
+
* return { ...input.result, text: "[Content filtered for safety]" };
|
|
119
|
+
* }
|
|
120
|
+
* },
|
|
121
|
+
* });
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @category Hooks
|
|
125
|
+
*/
|
|
126
|
+
export function createGuardrailsHooks(options = {}) {
|
|
127
|
+
const { blockedInputPatterns = [], blockedOutputPatterns = [], blockedInputMessage = "Request blocked by content policy", filteredOutputMessage = "[Content filtered]", checkInput, checkOutput, } = options;
|
|
128
|
+
// PreGenerate: Block inputs matching patterns
|
|
129
|
+
const inputFilter = async (input) => {
|
|
130
|
+
if (input.hook_event_name !== "PreGenerate")
|
|
131
|
+
return {};
|
|
132
|
+
const preGenInput = input;
|
|
133
|
+
// Custom input validation
|
|
134
|
+
if (checkInput) {
|
|
135
|
+
const result = checkInput(preGenInput);
|
|
136
|
+
if (result && result !== preGenInput) {
|
|
137
|
+
// Transform input
|
|
138
|
+
return {
|
|
139
|
+
hookSpecificOutput: {
|
|
140
|
+
hookEventName: "PreGenerate",
|
|
141
|
+
updatedInput: result.options,
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Pattern-based blocking
|
|
147
|
+
if (blockedInputPatterns.length > 0) {
|
|
148
|
+
const messages = preGenInput.options.messages;
|
|
149
|
+
const text = extractTextFromMessages(messages);
|
|
150
|
+
for (const pattern of blockedInputPatterns) {
|
|
151
|
+
if (pattern.test(text)) {
|
|
152
|
+
// Find which messages contain blocked content
|
|
153
|
+
const blockedMessageIds = findBlockedMessageIds(messages, [pattern]);
|
|
154
|
+
return {
|
|
155
|
+
hookSpecificOutput: {
|
|
156
|
+
hookEventName: "PreGenerate",
|
|
157
|
+
permissionDecision: "deny",
|
|
158
|
+
permissionDecisionReason: blockedInputMessage,
|
|
159
|
+
blockedMessageIds,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return {};
|
|
166
|
+
};
|
|
167
|
+
// PostGenerate: Filter outputs matching patterns
|
|
168
|
+
const outputFilter = async (input) => {
|
|
169
|
+
if (input.hook_event_name !== "PostGenerate")
|
|
170
|
+
return {};
|
|
171
|
+
const postGenInput = input;
|
|
172
|
+
// Custom output validation
|
|
173
|
+
if (checkOutput) {
|
|
174
|
+
const result = checkOutput(postGenInput);
|
|
175
|
+
if (result && result !== postGenInput.result) {
|
|
176
|
+
// Transform output
|
|
177
|
+
return {
|
|
178
|
+
hookSpecificOutput: {
|
|
179
|
+
hookEventName: "PostGenerate",
|
|
180
|
+
updatedResult: result,
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Pattern-based filtering
|
|
186
|
+
if (blockedOutputPatterns.length > 0) {
|
|
187
|
+
const text = postGenInput.result.text || "";
|
|
188
|
+
for (const pattern of blockedOutputPatterns) {
|
|
189
|
+
if (pattern.test(text)) {
|
|
190
|
+
// Replace output text with filter message
|
|
191
|
+
return {
|
|
192
|
+
hookSpecificOutput: {
|
|
193
|
+
hookEventName: "PostGenerate",
|
|
194
|
+
updatedResult: {
|
|
195
|
+
...postGenInput.result,
|
|
196
|
+
text: filteredOutputMessage,
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return {};
|
|
204
|
+
};
|
|
205
|
+
return [inputFilter, outputFilter];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Creates guardrails hooks with statistics tracking.
|
|
209
|
+
*
|
|
210
|
+
* Returns hooks along with functions to get filtering statistics.
|
|
211
|
+
*
|
|
212
|
+
* @param options - Configuration options
|
|
213
|
+
* @returns Object with hooks and statistics getter
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* const { hooks, getStats } = createManagedGuardrailsHooks({
|
|
218
|
+
* blockedInputPatterns: [/password/i, /secret/i],
|
|
219
|
+
* blockedOutputPatterns: [/\b\d{16}\b/],
|
|
220
|
+
* });
|
|
221
|
+
*
|
|
222
|
+
* const agent = createAgent({
|
|
223
|
+
* model,
|
|
224
|
+
* hooks: {
|
|
225
|
+
* PreGenerate: [{ hooks: [hooks[0]] }],
|
|
226
|
+
* PostGenerate: [{ hooks: [hooks[1]] }],
|
|
227
|
+
* },
|
|
228
|
+
* });
|
|
229
|
+
*
|
|
230
|
+
* // Check statistics
|
|
231
|
+
* const stats = getStats();
|
|
232
|
+
* console.log(`Blocked inputs: ${stats.blockedInputs}`);
|
|
233
|
+
* console.log(`Filtered outputs: ${stats.filteredOutputs}`);
|
|
234
|
+
* ```
|
|
235
|
+
*
|
|
236
|
+
* @category Hooks
|
|
237
|
+
*/
|
|
238
|
+
export function createManagedGuardrailsHooks(options = {}) {
|
|
239
|
+
const { blockedInputPatterns = [], blockedOutputPatterns = [], blockedInputMessage = "Request blocked by content policy", filteredOutputMessage = "[Content filtered]", checkInput, checkOutput, } = options;
|
|
240
|
+
let blockedInputs = 0;
|
|
241
|
+
let filteredOutputs = 0;
|
|
242
|
+
let totalInputs = 0;
|
|
243
|
+
let totalOutputs = 0;
|
|
244
|
+
const inputFilter = async (input) => {
|
|
245
|
+
if (input.hook_event_name !== "PreGenerate")
|
|
246
|
+
return {};
|
|
247
|
+
const preGenInput = input;
|
|
248
|
+
totalInputs++;
|
|
249
|
+
if (checkInput) {
|
|
250
|
+
const result = checkInput(preGenInput);
|
|
251
|
+
if (result && result !== preGenInput) {
|
|
252
|
+
return {
|
|
253
|
+
hookSpecificOutput: {
|
|
254
|
+
hookEventName: "PreGenerate",
|
|
255
|
+
updatedInput: result.options,
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (blockedInputPatterns.length > 0) {
|
|
261
|
+
const messages = preGenInput.options.messages;
|
|
262
|
+
const text = extractTextFromMessages(messages);
|
|
263
|
+
for (const pattern of blockedInputPatterns) {
|
|
264
|
+
if (pattern.test(text)) {
|
|
265
|
+
blockedInputs++;
|
|
266
|
+
// Find which messages contain blocked content
|
|
267
|
+
const blockedMessageIds = findBlockedMessageIds(messages, [pattern]);
|
|
268
|
+
return {
|
|
269
|
+
hookSpecificOutput: {
|
|
270
|
+
hookEventName: "PreGenerate",
|
|
271
|
+
permissionDecision: "deny",
|
|
272
|
+
permissionDecisionReason: blockedInputMessage,
|
|
273
|
+
blockedMessageIds,
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return {};
|
|
280
|
+
};
|
|
281
|
+
const outputFilter = async (input) => {
|
|
282
|
+
if (input.hook_event_name !== "PostGenerate")
|
|
283
|
+
return {};
|
|
284
|
+
const postGenInput = input;
|
|
285
|
+
totalOutputs++;
|
|
286
|
+
if (checkOutput) {
|
|
287
|
+
const result = checkOutput(postGenInput);
|
|
288
|
+
if (result && result !== postGenInput.result) {
|
|
289
|
+
return {
|
|
290
|
+
hookSpecificOutput: {
|
|
291
|
+
hookEventName: "PostGenerate",
|
|
292
|
+
updatedResult: result,
|
|
293
|
+
},
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (blockedOutputPatterns.length > 0) {
|
|
298
|
+
const text = postGenInput.result.text || "";
|
|
299
|
+
for (const pattern of blockedOutputPatterns) {
|
|
300
|
+
if (pattern.test(text)) {
|
|
301
|
+
filteredOutputs++;
|
|
302
|
+
return {
|
|
303
|
+
hookSpecificOutput: {
|
|
304
|
+
hookEventName: "PostGenerate",
|
|
305
|
+
updatedResult: {
|
|
306
|
+
...postGenInput.result,
|
|
307
|
+
text: filteredOutputMessage,
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return {};
|
|
315
|
+
};
|
|
316
|
+
return {
|
|
317
|
+
hooks: [inputFilter, outputFilter],
|
|
318
|
+
getStats: () => ({
|
|
319
|
+
blockedInputs,
|
|
320
|
+
filteredOutputs,
|
|
321
|
+
totalInputs,
|
|
322
|
+
totalOutputs,
|
|
323
|
+
}),
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=guardrails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/hooks/guardrails.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook utility factories.
|
|
3
|
+
*
|
|
4
|
+
* This module provides convenience factories that create hooks for common
|
|
5
|
+
* use cases like caching, retries, rate limiting, and content filtering.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @category Hooks
|
|
9
|
+
*/
|
|
10
|
+
export { type AuditEvent, type AuditEventCategory, type AuditEventHandler, type AuditHooksOptions, createAuditHooks, createInMemoryAuditStore, exportAuditEventsJSONLines, } from "./audit.js";
|
|
11
|
+
export { type CacheEntry, type CacheHooksOptions, type CacheStore, createCacheHooks, createManagedCacheHooks, InMemoryCacheStore, } from "./cache.js";
|
|
12
|
+
export { createGuardrailsHooks, createManagedGuardrailsHooks, type GuardrailsHooksOptions, } from "./guardrails.js";
|
|
13
|
+
export { createCompactionLoggingHooks, createComprehensiveLoggingHooks, createLoggingHooks, createToolLoggingHooks, type LoggingHooksOptions, } from "./logging.js";
|
|
14
|
+
export { type BufferedGuardrailState, BufferedOutputGuardrail, createBufferedOutputGuardrail, createRegexGuardrail, extractTextFromMessages, findLastUserMessageId, type Guardrail, type GuardrailCheckResult, type OutputGuardrailConfig, type RaceGuardrailsOptions, raceGuardrails, runWithGuardrails, withTimeout, wrapStreamWithOutputGuardrail, } from "./parallel-guardrails.js";
|
|
15
|
+
export { createManagedRateLimitHooks, createRateLimitHooks, extractStandardRateLimitHeaders, type RateLimitHooksOptions, type ServerRateLimitInfo, TokenBucketRateLimiter, } from "./rate-limit.js";
|
|
16
|
+
export { createManagedRetryHooks, createRetryHooks, type RetryHooksOptions, } from "./retry.js";
|
|
17
|
+
export { COMMON_SECRET_PATTERNS, createManagedSecretsFilterHooks, createSecretsFilterHooks, type SecretsFilterHooksOptions, } from "./secrets.js";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,sBAAsB,EAC3B,uBAAuB,EAEvB,6BAA6B,EAE7B,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAE1B,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook utility factories.
|
|
3
|
+
*
|
|
4
|
+
* This module provides convenience factories that create hooks for common
|
|
5
|
+
* use cases like caching, retries, rate limiting, and content filtering.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @category Hooks
|
|
9
|
+
*/
|
|
10
|
+
// Audit hooks
|
|
11
|
+
export { createAuditHooks, createInMemoryAuditStore, exportAuditEventsJSONLines, } from "./audit.js";
|
|
12
|
+
// Cache hooks
|
|
13
|
+
export { createCacheHooks, createManagedCacheHooks, InMemoryCacheStore, } from "./cache.js";
|
|
14
|
+
// Guardrails hooks
|
|
15
|
+
export { createGuardrailsHooks, createManagedGuardrailsHooks, } from "./guardrails.js";
|
|
16
|
+
// Logging hooks
|
|
17
|
+
export { createCompactionLoggingHooks, createComprehensiveLoggingHooks, createLoggingHooks, createToolLoggingHooks, } from "./logging.js";
|
|
18
|
+
// Guardrails (composable content moderation)
|
|
19
|
+
export { BufferedOutputGuardrail,
|
|
20
|
+
// Buffered output guardrails
|
|
21
|
+
createBufferedOutputGuardrail,
|
|
22
|
+
// Helpers
|
|
23
|
+
createRegexGuardrail, extractTextFromMessages, findLastUserMessageId,
|
|
24
|
+
// Core
|
|
25
|
+
raceGuardrails, runWithGuardrails, withTimeout, wrapStreamWithOutputGuardrail, } from "./parallel-guardrails.js";
|
|
26
|
+
// Rate limit hooks
|
|
27
|
+
export { createManagedRateLimitHooks, createRateLimitHooks, extractStandardRateLimitHeaders, TokenBucketRateLimiter, } from "./rate-limit.js";
|
|
28
|
+
// Retry hooks
|
|
29
|
+
export { createManagedRetryHooks, createRetryHooks, } from "./retry.js";
|
|
30
|
+
// Secrets filter hooks
|
|
31
|
+
export { COMMON_SECRET_PATTERNS, createManagedSecretsFilterHooks, createSecretsFilterHooks, } from "./secrets.js";
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc;AACd,OAAO,EAKL,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,cAAc;AACd,OAAO,EAIL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAE7B,MAAM,iBAAiB,CAAC;AAEzB,gBAAgB;AAChB,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,EAC/B,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,cAAc,CAAC;AACtB,6CAA6C;AAC7C,OAAO,EAEL,uBAAuB;AACvB,6BAA6B;AAC7B,6BAA6B;AAC7B,UAAU;AACV,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB;AAKrB,OAAO;AACP,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,mBAAmB;AACnB,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,+BAA+B,EAG/B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,cAAc;AACd,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AACpB,uBAAuB;AACvB,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,wBAAwB,GAEzB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging hook utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides logging hooks for observability and debugging using the unified
|
|
5
|
+
* hook system.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { HookCallback } from "../types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Options for creating logging hooks.
|
|
12
|
+
*
|
|
13
|
+
* @category Hooks
|
|
14
|
+
*/
|
|
15
|
+
export interface LoggingHooksOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Custom logging function.
|
|
18
|
+
* @defaultValue console.log
|
|
19
|
+
*/
|
|
20
|
+
log?: (message: string) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to log generation requests.
|
|
23
|
+
* @defaultValue true
|
|
24
|
+
*/
|
|
25
|
+
logGeneration?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether to log tool usage.
|
|
28
|
+
* @defaultValue true
|
|
29
|
+
*/
|
|
30
|
+
logTools?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Whether to log timing information.
|
|
33
|
+
* @defaultValue true
|
|
34
|
+
*/
|
|
35
|
+
logTiming?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to log errors.
|
|
38
|
+
* @defaultValue true
|
|
39
|
+
*/
|
|
40
|
+
logErrors?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to log compaction events.
|
|
43
|
+
* @defaultValue true
|
|
44
|
+
*/
|
|
45
|
+
logCompaction?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Maximum length for logged text content.
|
|
48
|
+
* @defaultValue 200
|
|
49
|
+
*/
|
|
50
|
+
maxTextLength?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Prefix for all log messages.
|
|
53
|
+
* @defaultValue "[Agent]"
|
|
54
|
+
*/
|
|
55
|
+
prefix?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Whether to log full message arrays.
|
|
58
|
+
* @defaultValue false (just count)
|
|
59
|
+
*/
|
|
60
|
+
logFullMessages?: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates logging hooks for generation lifecycle events.
|
|
64
|
+
*
|
|
65
|
+
* Provides Pre/Post logging for generation with timing information,
|
|
66
|
+
* usage statistics, and error logging.
|
|
67
|
+
*
|
|
68
|
+
* @param options - Configuration options
|
|
69
|
+
* @returns Array of hooks for generation events
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const logHooks = createLoggingHooks({
|
|
74
|
+
* prefix: "[MyAgent]",
|
|
75
|
+
* logTiming: true,
|
|
76
|
+
* maxTextLength: 100,
|
|
77
|
+
* });
|
|
78
|
+
*
|
|
79
|
+
* const agent = createAgent({
|
|
80
|
+
* model,
|
|
81
|
+
* hooks: {
|
|
82
|
+
* PreGenerate: [{ hooks: [logHooks[0]] }],
|
|
83
|
+
* PostGenerate: [{ hooks: [logHooks[1]] }],
|
|
84
|
+
* PostGenerateFailure: [{ hooks: [logHooks[2]] }],
|
|
85
|
+
* },
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* // Custom logger (e.g., structured logging)
|
|
92
|
+
* const logHooks = createLoggingHooks({
|
|
93
|
+
* log: (msg) => logger.info(msg),
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @category Hooks
|
|
98
|
+
*/
|
|
99
|
+
export declare function createLoggingHooks(options?: LoggingHooksOptions): HookCallback[];
|
|
100
|
+
/**
|
|
101
|
+
* Creates logging hooks for tool execution events.
|
|
102
|
+
*
|
|
103
|
+
* Provides Pre/Post logging for tool calls with arguments, results,
|
|
104
|
+
* and error information.
|
|
105
|
+
*
|
|
106
|
+
* @param options - Configuration options
|
|
107
|
+
* @returns Array of hooks for tool events
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const toolLogHooks = createToolLoggingHooks({
|
|
112
|
+
* prefix: "[Tools]",
|
|
113
|
+
* maxTextLength: 150,
|
|
114
|
+
* });
|
|
115
|
+
*
|
|
116
|
+
* const agent = createAgent({
|
|
117
|
+
* model,
|
|
118
|
+
* hooks: {
|
|
119
|
+
* PreToolUse: [{ hooks: [toolLogHooks[0]] }],
|
|
120
|
+
* PostToolUse: [{ hooks: [toolLogHooks[1]] }],
|
|
121
|
+
* PostToolUseFailure: [{ hooks: [toolLogHooks[2]] }],
|
|
122
|
+
* },
|
|
123
|
+
* });
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @category Hooks
|
|
127
|
+
*/
|
|
128
|
+
export declare function createToolLoggingHooks(options?: LoggingHooksOptions): HookCallback[];
|
|
129
|
+
/**
|
|
130
|
+
* Creates logging hooks for context compaction events.
|
|
131
|
+
*
|
|
132
|
+
* Provides Pre/Post logging for compaction with token savings
|
|
133
|
+
* and message count information.
|
|
134
|
+
*
|
|
135
|
+
* @param options - Configuration options
|
|
136
|
+
* @returns Array of hooks for compaction events
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* const compactLogHooks = createCompactionLoggingHooks({
|
|
141
|
+
* prefix: "[Compaction]",
|
|
142
|
+
* });
|
|
143
|
+
*
|
|
144
|
+
* const agent = createAgent({
|
|
145
|
+
* model,
|
|
146
|
+
* hooks: {
|
|
147
|
+
* PreCompact: [compactLogHooks[0]],
|
|
148
|
+
* PostCompact: [compactLogHooks[1]],
|
|
149
|
+
* },
|
|
150
|
+
* });
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* @category Hooks
|
|
154
|
+
*/
|
|
155
|
+
export declare function createCompactionLoggingHooks(options?: LoggingHooksOptions): HookCallback[];
|
|
156
|
+
/**
|
|
157
|
+
* Creates comprehensive logging hooks for all lifecycle events.
|
|
158
|
+
*
|
|
159
|
+
* Combines generation, tool, and compaction logging into a single set of hooks.
|
|
160
|
+
*
|
|
161
|
+
* @param options - Configuration options
|
|
162
|
+
* @returns Object with hooks for all events
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* const { generationHooks, toolHooks, compactionHooks } = createComprehensiveLoggingHooks({
|
|
167
|
+
* prefix: "[MyAgent]",
|
|
168
|
+
* logTiming: true,
|
|
169
|
+
* });
|
|
170
|
+
*
|
|
171
|
+
* const agent = createAgent({
|
|
172
|
+
* model,
|
|
173
|
+
* hooks: {
|
|
174
|
+
* PreGenerate: [generationHooks[0]],
|
|
175
|
+
* PostGenerate: [generationHooks[1]],
|
|
176
|
+
* PostGenerateFailure: [generationHooks[2]],
|
|
177
|
+
* PreToolUse: [toolHooks[0]],
|
|
178
|
+
* PostToolUse: [toolHooks[1]],
|
|
179
|
+
* PostToolUseFailure: [toolHooks[2]],
|
|
180
|
+
* PreCompact: [compactionHooks[0]],
|
|
181
|
+
* PostCompact: [compactionHooks[1]],
|
|
182
|
+
* },
|
|
183
|
+
* });
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @category Hooks
|
|
187
|
+
*/
|
|
188
|
+
export declare function createComprehensiveLoggingHooks(options?: LoggingHooksOptions): {
|
|
189
|
+
generationHooks: HookCallback[];
|
|
190
|
+
toolHooks: HookCallback[];
|
|
191
|
+
compactionHooks: HookCallback[];
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/hooks/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EASb,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,EAAE,CA6FpF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,EAAE,CAmFxF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,EAAE,CA0D9F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,mBAAwB,GAAG;IAClF,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,eAAe,EAAE,YAAY,EAAE,CAAC;CACjC,CAMA"}
|