@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,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware application utilities.
|
|
3
|
+
*
|
|
4
|
+
* Applies middleware to collect hooks and manages middleware lifecycle.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import { createMiddlewareContext } from "./context.js";
|
|
9
|
+
/**
|
|
10
|
+
* Applies an array of middleware and returns the combined HookRegistration.
|
|
11
|
+
*
|
|
12
|
+
* Processes middleware in order, preserving hook registration order.
|
|
13
|
+
* Each middleware's hooks are added to the combined registration in the
|
|
14
|
+
* order the middleware appears in the array.
|
|
15
|
+
*
|
|
16
|
+
* @param middleware - Array of middleware to apply
|
|
17
|
+
* @returns Combined HookRegistration from all middleware
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const middleware = [
|
|
22
|
+
* createLoggingMiddleware({ transport: consoleTransport }),
|
|
23
|
+
* createMetricsMiddleware({ registry }),
|
|
24
|
+
* ];
|
|
25
|
+
*
|
|
26
|
+
* const hooks = applyMiddleware(middleware);
|
|
27
|
+
* // hooks contains all hooks from both middleware
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @category Middleware
|
|
31
|
+
*/
|
|
32
|
+
export function applyMiddleware(middleware) {
|
|
33
|
+
if (middleware.length === 0) {
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
// Create a shared context that all middleware will register into
|
|
37
|
+
const { context, getHooks } = createMiddlewareContext();
|
|
38
|
+
// Let each middleware register its hooks
|
|
39
|
+
for (const mw of middleware) {
|
|
40
|
+
try {
|
|
41
|
+
mw.register(context);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.error(`Error registering middleware "${mw.name}":`, error);
|
|
45
|
+
// Continue with other middleware even if one fails
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return getHooks();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calls setup on all middleware that have a setup method.
|
|
52
|
+
*
|
|
53
|
+
* @param middleware - Array of middleware to setup
|
|
54
|
+
* @returns Promise that resolves when all setup is complete
|
|
55
|
+
*
|
|
56
|
+
* @category Middleware
|
|
57
|
+
*/
|
|
58
|
+
export async function setupMiddleware(middleware) {
|
|
59
|
+
const setupPromises = middleware
|
|
60
|
+
.filter((mw) => mw.setup !== undefined)
|
|
61
|
+
.map(async (mw) => {
|
|
62
|
+
try {
|
|
63
|
+
await mw.setup();
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error(`Error in middleware "${mw.name}" setup:`, error);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
await Promise.all(setupPromises);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Calls teardown on all middleware that have a teardown method.
|
|
73
|
+
*
|
|
74
|
+
* @param middleware - Array of middleware to teardown
|
|
75
|
+
* @returns Promise that resolves when all teardown is complete
|
|
76
|
+
*
|
|
77
|
+
* @category Middleware
|
|
78
|
+
*/
|
|
79
|
+
export async function teardownMiddleware(middleware) {
|
|
80
|
+
const teardownPromises = middleware
|
|
81
|
+
.filter((mw) => mw.teardown !== undefined)
|
|
82
|
+
.map(async (mw) => {
|
|
83
|
+
try {
|
|
84
|
+
await mw.teardown();
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error(`Error in middleware "${mw.name}" teardown:`, error);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
await Promise.all(teardownPromises);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Merges multiple HookRegistration objects into one.
|
|
94
|
+
*
|
|
95
|
+
* Hooks are concatenated in order for each event type. This allows
|
|
96
|
+
* combining hooks from middleware with explicitly provided hooks.
|
|
97
|
+
*
|
|
98
|
+
* @param registrations - HookRegistration objects to merge
|
|
99
|
+
* @returns Merged HookRegistration
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const middlewareHooks = applyMiddleware(middleware);
|
|
104
|
+
* const explicitHooks = { PreToolUse: [{ matcher: "bash", hooks: [requireApproval] }] };
|
|
105
|
+
*
|
|
106
|
+
* const merged = mergeHooks(middlewareHooks, explicitHooks);
|
|
107
|
+
* // merged contains hooks from both, with middleware hooks first
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @category Middleware
|
|
111
|
+
*/
|
|
112
|
+
export function mergeHooks(...registrations) {
|
|
113
|
+
const result = {};
|
|
114
|
+
for (const reg of registrations) {
|
|
115
|
+
if (!reg)
|
|
116
|
+
continue;
|
|
117
|
+
// Merge generation hooks (arrays of HookCallback)
|
|
118
|
+
if (reg.PreGenerate) {
|
|
119
|
+
result.PreGenerate = [...(result.PreGenerate ?? []), ...reg.PreGenerate];
|
|
120
|
+
}
|
|
121
|
+
if (reg.PostGenerate) {
|
|
122
|
+
result.PostGenerate = [...(result.PostGenerate ?? []), ...reg.PostGenerate];
|
|
123
|
+
}
|
|
124
|
+
if (reg.PostGenerateFailure) {
|
|
125
|
+
result.PostGenerateFailure = [
|
|
126
|
+
...(result.PostGenerateFailure ?? []),
|
|
127
|
+
...reg.PostGenerateFailure,
|
|
128
|
+
];
|
|
129
|
+
}
|
|
130
|
+
// Merge tool hooks (arrays of HookMatcher)
|
|
131
|
+
if (reg.PreToolUse) {
|
|
132
|
+
result.PreToolUse = mergeToolHooks(result.PreToolUse, reg.PreToolUse);
|
|
133
|
+
}
|
|
134
|
+
if (reg.PostToolUse) {
|
|
135
|
+
result.PostToolUse = mergeToolHooks(result.PostToolUse, reg.PostToolUse);
|
|
136
|
+
}
|
|
137
|
+
if (reg.PostToolUseFailure) {
|
|
138
|
+
result.PostToolUseFailure = mergeToolHooks(result.PostToolUseFailure, reg.PostToolUseFailure);
|
|
139
|
+
}
|
|
140
|
+
// Merge compaction hooks
|
|
141
|
+
if (reg.PreCompact) {
|
|
142
|
+
result.PreCompact = [...(result.PreCompact ?? []), ...reg.PreCompact];
|
|
143
|
+
}
|
|
144
|
+
if (reg.PostCompact) {
|
|
145
|
+
result.PostCompact = [...(result.PostCompact ?? []), ...reg.PostCompact];
|
|
146
|
+
}
|
|
147
|
+
// Merge session hooks
|
|
148
|
+
if (reg.SessionStart) {
|
|
149
|
+
result.SessionStart = [...(result.SessionStart ?? []), ...reg.SessionStart];
|
|
150
|
+
}
|
|
151
|
+
if (reg.SessionEnd) {
|
|
152
|
+
result.SessionEnd = [...(result.SessionEnd ?? []), ...reg.SessionEnd];
|
|
153
|
+
}
|
|
154
|
+
// Merge subagent hooks
|
|
155
|
+
if (reg.SubagentStart) {
|
|
156
|
+
result.SubagentStart = [...(result.SubagentStart ?? []), ...reg.SubagentStart];
|
|
157
|
+
}
|
|
158
|
+
if (reg.SubagentStop) {
|
|
159
|
+
result.SubagentStop = [...(result.SubagentStop ?? []), ...reg.SubagentStop];
|
|
160
|
+
}
|
|
161
|
+
// Merge MCP hooks
|
|
162
|
+
if (reg.MCPConnectionFailed) {
|
|
163
|
+
result.MCPConnectionFailed = [
|
|
164
|
+
...(result.MCPConnectionFailed ?? []),
|
|
165
|
+
...reg.MCPConnectionFailed,
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
if (reg.MCPConnectionRestored) {
|
|
169
|
+
result.MCPConnectionRestored = [
|
|
170
|
+
...(result.MCPConnectionRestored ?? []),
|
|
171
|
+
...reg.MCPConnectionRestored,
|
|
172
|
+
];
|
|
173
|
+
}
|
|
174
|
+
// Merge tool registry hooks
|
|
175
|
+
if (reg.ToolRegistered) {
|
|
176
|
+
result.ToolRegistered = [...(result.ToolRegistered ?? []), ...reg.ToolRegistered];
|
|
177
|
+
}
|
|
178
|
+
if (reg.ToolLoadError) {
|
|
179
|
+
result.ToolLoadError = [...(result.ToolLoadError ?? []), ...reg.ToolLoadError];
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Merges tool hook matchers.
|
|
186
|
+
*
|
|
187
|
+
* Tool hooks use HookMatcher arrays which need special handling.
|
|
188
|
+
* Matchers with the same pattern have their hooks combined.
|
|
189
|
+
*
|
|
190
|
+
* @param existing - Existing tool hook matchers
|
|
191
|
+
* @param incoming - Incoming tool hook matchers
|
|
192
|
+
* @returns Merged tool hook matchers
|
|
193
|
+
*
|
|
194
|
+
* @internal
|
|
195
|
+
*/
|
|
196
|
+
function mergeToolHooks(existing, incoming) {
|
|
197
|
+
if (!existing) {
|
|
198
|
+
return [...incoming];
|
|
199
|
+
}
|
|
200
|
+
const result = [...existing];
|
|
201
|
+
for (const incomingMatcher of incoming) {
|
|
202
|
+
// Look for existing matcher with same pattern
|
|
203
|
+
const existingIndex = result.findIndex((m) => m.matcher === incomingMatcher.matcher);
|
|
204
|
+
if (existingIndex >= 0) {
|
|
205
|
+
// Merge hooks into existing matcher
|
|
206
|
+
const existingMatcher = result[existingIndex];
|
|
207
|
+
result[existingIndex] = {
|
|
208
|
+
...existingMatcher,
|
|
209
|
+
hooks: [...existingMatcher.hooks, ...incomingMatcher.hooks],
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Add new matcher
|
|
214
|
+
result.push(incomingMatcher);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/middleware/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware context implementation.
|
|
3
|
+
*
|
|
4
|
+
* Creates a context that collects hook registrations from middleware.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
import type { MiddlewareContextResult } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Creates a middleware context that collects hook registrations.
|
|
11
|
+
*
|
|
12
|
+
* The context provides methods for middleware to register hooks for various
|
|
13
|
+
* lifecycle events. Hooks are collected and can be retrieved as a
|
|
14
|
+
* HookRegistration object.
|
|
15
|
+
*
|
|
16
|
+
* @returns The context and a function to get the collected hooks
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const { context, getHooks } = createMiddlewareContext();
|
|
21
|
+
*
|
|
22
|
+
* // Middleware registers hooks through the context
|
|
23
|
+
* middleware.register(context);
|
|
24
|
+
*
|
|
25
|
+
* // Get the collected hooks as HookRegistration
|
|
26
|
+
* const hooks = getHooks();
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @category Middleware
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export declare function createMiddlewareContext(): MiddlewareContextResult;
|
|
33
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAqB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,uBAAuB,IAAI,uBAAuB,CA0KjE"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware context implementation.
|
|
3
|
+
*
|
|
4
|
+
* Creates a context that collects hook registrations from middleware.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Creates a middleware context that collects hook registrations.
|
|
10
|
+
*
|
|
11
|
+
* The context provides methods for middleware to register hooks for various
|
|
12
|
+
* lifecycle events. Hooks are collected and can be retrieved as a
|
|
13
|
+
* HookRegistration object.
|
|
14
|
+
*
|
|
15
|
+
* @returns The context and a function to get the collected hooks
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const { context, getHooks } = createMiddlewareContext();
|
|
20
|
+
*
|
|
21
|
+
* // Middleware registers hooks through the context
|
|
22
|
+
* middleware.register(context);
|
|
23
|
+
*
|
|
24
|
+
* // Get the collected hooks as HookRegistration
|
|
25
|
+
* const hooks = getHooks();
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @category Middleware
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export function createMiddlewareContext() {
|
|
32
|
+
// Storage for collected hooks
|
|
33
|
+
const preGenerate = [];
|
|
34
|
+
const postGenerate = [];
|
|
35
|
+
const postGenerateFailure = [];
|
|
36
|
+
const preToolUse = [];
|
|
37
|
+
const postToolUse = [];
|
|
38
|
+
const postToolUseFailure = [];
|
|
39
|
+
const preCompact = [];
|
|
40
|
+
const postCompact = [];
|
|
41
|
+
const sessionStart = [];
|
|
42
|
+
const sessionEnd = [];
|
|
43
|
+
const subagentStart = [];
|
|
44
|
+
const subagentStop = [];
|
|
45
|
+
const mcpConnectionFailed = [];
|
|
46
|
+
const mcpConnectionRestored = [];
|
|
47
|
+
const interruptRequested = [];
|
|
48
|
+
const interruptResolved = [];
|
|
49
|
+
/**
|
|
50
|
+
* Helper to add a tool hook with optional matcher.
|
|
51
|
+
*/
|
|
52
|
+
function addToolHook(storage, callback, matcher) {
|
|
53
|
+
// Find existing matcher or create new one
|
|
54
|
+
const existingMatcher = storage.find((m) => m.matcher === matcher);
|
|
55
|
+
if (existingMatcher) {
|
|
56
|
+
existingMatcher.hooks.push(callback);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
storage.push({
|
|
60
|
+
matcher,
|
|
61
|
+
hooks: [callback],
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const context = {
|
|
66
|
+
onPreGenerate(callback) {
|
|
67
|
+
preGenerate.push(callback);
|
|
68
|
+
},
|
|
69
|
+
onPostGenerate(callback) {
|
|
70
|
+
postGenerate.push(callback);
|
|
71
|
+
},
|
|
72
|
+
onPostGenerateFailure(callback) {
|
|
73
|
+
postGenerateFailure.push(callback);
|
|
74
|
+
},
|
|
75
|
+
onPreToolUse(callback, matcher) {
|
|
76
|
+
addToolHook(preToolUse, callback, matcher);
|
|
77
|
+
},
|
|
78
|
+
onPostToolUse(callback, matcher) {
|
|
79
|
+
addToolHook(postToolUse, callback, matcher);
|
|
80
|
+
},
|
|
81
|
+
onPostToolUseFailure(callback, matcher) {
|
|
82
|
+
addToolHook(postToolUseFailure, callback, matcher);
|
|
83
|
+
},
|
|
84
|
+
onPreCompact(callback) {
|
|
85
|
+
preCompact.push(callback);
|
|
86
|
+
},
|
|
87
|
+
onPostCompact(callback) {
|
|
88
|
+
postCompact.push(callback);
|
|
89
|
+
},
|
|
90
|
+
onSessionStart(callback) {
|
|
91
|
+
sessionStart.push(callback);
|
|
92
|
+
},
|
|
93
|
+
onSessionEnd(callback) {
|
|
94
|
+
sessionEnd.push(callback);
|
|
95
|
+
},
|
|
96
|
+
onSubagentStart(callback) {
|
|
97
|
+
subagentStart.push(callback);
|
|
98
|
+
},
|
|
99
|
+
onSubagentStop(callback) {
|
|
100
|
+
subagentStop.push(callback);
|
|
101
|
+
},
|
|
102
|
+
onMCPConnectionFailed(callback) {
|
|
103
|
+
mcpConnectionFailed.push(callback);
|
|
104
|
+
},
|
|
105
|
+
onMCPConnectionRestored(callback) {
|
|
106
|
+
mcpConnectionRestored.push(callback);
|
|
107
|
+
},
|
|
108
|
+
onInterruptRequested(callback) {
|
|
109
|
+
interruptRequested.push(callback);
|
|
110
|
+
},
|
|
111
|
+
onInterruptResolved(callback) {
|
|
112
|
+
interruptResolved.push(callback);
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
function getHooks() {
|
|
116
|
+
const hooks = {};
|
|
117
|
+
// Add generation hooks if any were registered
|
|
118
|
+
if (preGenerate.length > 0) {
|
|
119
|
+
hooks.PreGenerate = preGenerate;
|
|
120
|
+
}
|
|
121
|
+
if (postGenerate.length > 0) {
|
|
122
|
+
hooks.PostGenerate = postGenerate;
|
|
123
|
+
}
|
|
124
|
+
if (postGenerateFailure.length > 0) {
|
|
125
|
+
hooks.PostGenerateFailure = postGenerateFailure;
|
|
126
|
+
}
|
|
127
|
+
// Add tool hooks if any were registered
|
|
128
|
+
if (preToolUse.length > 0) {
|
|
129
|
+
hooks.PreToolUse = preToolUse;
|
|
130
|
+
}
|
|
131
|
+
if (postToolUse.length > 0) {
|
|
132
|
+
hooks.PostToolUse = postToolUse;
|
|
133
|
+
}
|
|
134
|
+
if (postToolUseFailure.length > 0) {
|
|
135
|
+
hooks.PostToolUseFailure = postToolUseFailure;
|
|
136
|
+
}
|
|
137
|
+
// Add compaction hooks if any were registered
|
|
138
|
+
if (preCompact.length > 0) {
|
|
139
|
+
hooks.PreCompact = preCompact;
|
|
140
|
+
}
|
|
141
|
+
if (postCompact.length > 0) {
|
|
142
|
+
hooks.PostCompact = postCompact;
|
|
143
|
+
}
|
|
144
|
+
// Add session hooks if any were registered
|
|
145
|
+
if (sessionStart.length > 0) {
|
|
146
|
+
hooks.SessionStart = sessionStart;
|
|
147
|
+
}
|
|
148
|
+
if (sessionEnd.length > 0) {
|
|
149
|
+
hooks.SessionEnd = sessionEnd;
|
|
150
|
+
}
|
|
151
|
+
// Add subagent hooks if any were registered
|
|
152
|
+
if (subagentStart.length > 0) {
|
|
153
|
+
hooks.SubagentStart = subagentStart;
|
|
154
|
+
}
|
|
155
|
+
if (subagentStop.length > 0) {
|
|
156
|
+
hooks.SubagentStop = subagentStop;
|
|
157
|
+
}
|
|
158
|
+
// Add MCP hooks if any were registered
|
|
159
|
+
if (mcpConnectionFailed.length > 0) {
|
|
160
|
+
hooks.MCPConnectionFailed = mcpConnectionFailed;
|
|
161
|
+
}
|
|
162
|
+
if (mcpConnectionRestored.length > 0) {
|
|
163
|
+
hooks.MCPConnectionRestored = mcpConnectionRestored;
|
|
164
|
+
}
|
|
165
|
+
// Add interrupt hooks if any were registered
|
|
166
|
+
if (interruptRequested.length > 0) {
|
|
167
|
+
hooks.InterruptRequested = interruptRequested;
|
|
168
|
+
}
|
|
169
|
+
if (interruptResolved.length > 0) {
|
|
170
|
+
hooks.InterruptResolved = interruptResolved;
|
|
171
|
+
}
|
|
172
|
+
return hooks;
|
|
173
|
+
}
|
|
174
|
+
return { context, getHooks };
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware system for agent cross-cutting concerns.
|
|
3
|
+
*
|
|
4
|
+
* Middleware provides a clean API for adding features like logging, metrics,
|
|
5
|
+
* caching, and rate limiting to agents. Middleware wraps the underlying hook
|
|
6
|
+
* system with a more ergonomic interface.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import {
|
|
11
|
+
* createAgent,
|
|
12
|
+
* createLoggingMiddleware,
|
|
13
|
+
* createConsoleTransport,
|
|
14
|
+
* } from "@lleverage-ai/agent-sdk";
|
|
15
|
+
*
|
|
16
|
+
* const agent = createAgent({
|
|
17
|
+
* model,
|
|
18
|
+
* middleware: [
|
|
19
|
+
* createLoggingMiddleware({ transport: createConsoleTransport() }),
|
|
20
|
+
* ],
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
export { applyMiddleware, mergeHooks, setupMiddleware, teardownMiddleware, } from "./apply.js";
|
|
27
|
+
export { createMiddlewareContext } from "./context.js";
|
|
28
|
+
export type { LoggingMiddlewareOptions } from "./logging.js";
|
|
29
|
+
export { createLoggingMiddleware } from "./logging.js";
|
|
30
|
+
export type { AgentMiddleware, MiddlewareContext, MiddlewareContextResult, } from "./types.js";
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware system for agent cross-cutting concerns.
|
|
3
|
+
*
|
|
4
|
+
* Middleware provides a clean API for adding features like logging, metrics,
|
|
5
|
+
* caching, and rate limiting to agents. Middleware wraps the underlying hook
|
|
6
|
+
* system with a more ergonomic interface.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import {
|
|
11
|
+
* createAgent,
|
|
12
|
+
* createLoggingMiddleware,
|
|
13
|
+
* createConsoleTransport,
|
|
14
|
+
* } from "@lleverage-ai/agent-sdk";
|
|
15
|
+
*
|
|
16
|
+
* const agent = createAgent({
|
|
17
|
+
* model,
|
|
18
|
+
* middleware: [
|
|
19
|
+
* createLoggingMiddleware({ transport: createConsoleTransport() }),
|
|
20
|
+
* ],
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
// Application utilities
|
|
27
|
+
export { applyMiddleware, mergeHooks, setupMiddleware, teardownMiddleware, } from "./apply.js";
|
|
28
|
+
// Context creation (internal)
|
|
29
|
+
export { createMiddlewareContext } from "./context.js";
|
|
30
|
+
// Built-in middleware
|
|
31
|
+
export { createLoggingMiddleware } from "./logging.js";
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,wBAAwB;AACxB,OAAO,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAGvD,sBAAsB;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging middleware.
|
|
3
|
+
*
|
|
4
|
+
* Provides middleware for logging agent lifecycle events using the SDK's
|
|
5
|
+
* logging primitives. The middleware is transport-agnostic - users provide
|
|
6
|
+
* their own transport which determines where logs go.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import type { LogLevel, LogTransport } from "../observability/logger.js";
|
|
11
|
+
import type { AgentMiddleware } from "./types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Options for configuring logging middleware.
|
|
14
|
+
*
|
|
15
|
+
* @category Middleware
|
|
16
|
+
*/
|
|
17
|
+
export interface LoggingMiddlewareOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Transport to write logs to.
|
|
20
|
+
*
|
|
21
|
+
* The transport determines where logs go - could be console, file,
|
|
22
|
+
* or streaming to a client. SDK is agnostic to the destination.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Console logging
|
|
27
|
+
* import { createConsoleTransport } from "@lleverage-ai/agent-sdk";
|
|
28
|
+
* const transport = createConsoleTransport();
|
|
29
|
+
*
|
|
30
|
+
* // Custom transport (e.g., streaming to client)
|
|
31
|
+
* const streamTransport: LogTransport = {
|
|
32
|
+
* name: "stream",
|
|
33
|
+
* write: (entry) => res.write(JSON.stringify(entry) + "\n"),
|
|
34
|
+
* };
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
transport: LogTransport;
|
|
38
|
+
/**
|
|
39
|
+
* Log level for filtering events.
|
|
40
|
+
* @default "info"
|
|
41
|
+
*/
|
|
42
|
+
level?: LogLevel;
|
|
43
|
+
/**
|
|
44
|
+
* Which events to log.
|
|
45
|
+
* @default all enabled
|
|
46
|
+
*/
|
|
47
|
+
events?: {
|
|
48
|
+
/** Log generation start/end events */
|
|
49
|
+
generation?: boolean;
|
|
50
|
+
/** Log tool use events */
|
|
51
|
+
tools?: boolean;
|
|
52
|
+
/** Log context compaction events */
|
|
53
|
+
compaction?: boolean;
|
|
54
|
+
/** Log failure/error events */
|
|
55
|
+
failures?: boolean;
|
|
56
|
+
/** Log subagent events */
|
|
57
|
+
subagents?: boolean;
|
|
58
|
+
/** Log interrupt events (approval requests, custom interrupts) */
|
|
59
|
+
interrupts?: boolean;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Maximum content length for truncation.
|
|
63
|
+
* @default 500
|
|
64
|
+
*/
|
|
65
|
+
maxContentLength?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Include timing information in logs.
|
|
68
|
+
* @default true
|
|
69
|
+
*/
|
|
70
|
+
includeTiming?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Logger name for identification.
|
|
73
|
+
* @default "agent"
|
|
74
|
+
*/
|
|
75
|
+
name?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Creates logging middleware that logs agent lifecycle events.
|
|
79
|
+
*
|
|
80
|
+
* The transport determines where logs go - SDK is agnostic. If you want
|
|
81
|
+
* streaming to a client, create a transport that writes to your stream.
|
|
82
|
+
*
|
|
83
|
+
* @param options - Logging middleware configuration
|
|
84
|
+
* @returns AgentMiddleware instance
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* // Console logging
|
|
89
|
+
* import { createAgent, createLoggingMiddleware, createConsoleTransport } from "@lleverage-ai/agent-sdk";
|
|
90
|
+
*
|
|
91
|
+
* const agent = createAgent({
|
|
92
|
+
* model,
|
|
93
|
+
* middleware: [
|
|
94
|
+
* createLoggingMiddleware({ transport: createConsoleTransport() }),
|
|
95
|
+
* ],
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // Custom transport (e.g., streaming to client)
|
|
102
|
+
* const streamTransport: LogTransport = {
|
|
103
|
+
* name: "client-stream",
|
|
104
|
+
* write: (entry) => {
|
|
105
|
+
* // User decides how to get this to the client
|
|
106
|
+
* res.write(`data: ${JSON.stringify(entry)}\n\n`);
|
|
107
|
+
* },
|
|
108
|
+
* };
|
|
109
|
+
*
|
|
110
|
+
* const agent = createAgent({
|
|
111
|
+
* model,
|
|
112
|
+
* middleware: [
|
|
113
|
+
* createLoggingMiddleware({ transport: streamTransport }),
|
|
114
|
+
* ],
|
|
115
|
+
* });
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* // External service (e.g., Datadog)
|
|
121
|
+
* const datadogTransport: LogTransport = {
|
|
122
|
+
* name: "datadog",
|
|
123
|
+
* write: (entry) => datadog.log(entry.level, entry.message, entry.context),
|
|
124
|
+
* };
|
|
125
|
+
*
|
|
126
|
+
* const agent = createAgent({
|
|
127
|
+
* model,
|
|
128
|
+
* middleware: [
|
|
129
|
+
* createLoggingMiddleware({ transport: datadogTransport }),
|
|
130
|
+
* ],
|
|
131
|
+
* });
|
|
132
|
+
* ```
|
|
133
|
+
*
|
|
134
|
+
* @category Middleware
|
|
135
|
+
*/
|
|
136
|
+
export declare function createLoggingMiddleware(options: LoggingMiddlewareOptions): AgentMiddleware;
|
|
137
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/middleware/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAgBzE,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAErE;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,EAAE,YAAY,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP,sCAAsC;QACtC,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,0BAA0B;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,oCAAoC;QACpC,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,+BAA+B;QAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,0BAA0B;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,kEAAkE;QAClE,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IAEF;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,eAAe,CA6V1F"}
|