@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,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path-based rule matching for memory documents.
|
|
3
|
+
*
|
|
4
|
+
* Memory documents can specify path patterns in their frontmatter to
|
|
5
|
+
* control when they should be applied. This module provides matching
|
|
6
|
+
* functionality for determining which memories are relevant.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { filterMemoriesByPath, matchesPathPattern } from "@lleverage-ai/agent-sdk";
|
|
11
|
+
*
|
|
12
|
+
* // Check if a file matches a pattern
|
|
13
|
+
* const matches = matchesPathPattern("src/api/users.ts", "src/api/**\/*.ts");
|
|
14
|
+
* // matches = true
|
|
15
|
+
*
|
|
16
|
+
* // Filter memories by current file
|
|
17
|
+
* const relevant = filterMemoriesByPath(memories, "src/api/users.ts");
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @packageDocumentation
|
|
21
|
+
*/
|
|
22
|
+
import type { AdditionalMemoryFile } from "./loader.js";
|
|
23
|
+
import type { MemoryDocument } from "./store.js";
|
|
24
|
+
/**
|
|
25
|
+
* Check if a file path matches a glob pattern.
|
|
26
|
+
*
|
|
27
|
+
* Supports standard glob patterns:
|
|
28
|
+
* - `*` - matches any characters except /
|
|
29
|
+
* - `**` - matches any characters including /
|
|
30
|
+
* - `?` - matches exactly one character except /
|
|
31
|
+
* - `[abc]` - matches any character in the brackets
|
|
32
|
+
* - `[!abc]` - matches any character not in the brackets
|
|
33
|
+
*
|
|
34
|
+
* @param filePath - The file path to test
|
|
35
|
+
* @param pattern - The glob pattern to match against
|
|
36
|
+
* @returns True if the path matches the pattern
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* matchesPathPattern("src/api/users.ts", "src/**\/*.ts"); // true
|
|
41
|
+
* matchesPathPattern("src/api/users.ts", "src/api/*.ts"); // true
|
|
42
|
+
* matchesPathPattern("src/api/users.ts", "tests/**\/*.ts"); // false
|
|
43
|
+
* matchesPathPattern("src/api/users.ts", "**\/*.ts"); // true
|
|
44
|
+
* matchesPathPattern("README.md", "*.md"); // true
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @category Memory
|
|
48
|
+
*/
|
|
49
|
+
export declare function matchesPathPattern(filePath: string, pattern: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Check if a file path matches any of the given patterns.
|
|
52
|
+
*
|
|
53
|
+
* @param filePath - The file path to test
|
|
54
|
+
* @param patterns - Array of glob patterns
|
|
55
|
+
* @returns True if the path matches any pattern
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const patterns = ["src/**\/*.ts", "tests/**\/*.ts"];
|
|
60
|
+
* matchesAnyPathPattern("src/index.ts", patterns); // true
|
|
61
|
+
* matchesAnyPathPattern("README.md", patterns); // false
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @category Memory
|
|
65
|
+
*/
|
|
66
|
+
export declare function matchesAnyPathPattern(filePath: string, patterns: string[]): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Filter memory documents by path relevance.
|
|
69
|
+
*
|
|
70
|
+
* A memory document is considered relevant if:
|
|
71
|
+
* 1. It has no `paths` metadata (applies to all files)
|
|
72
|
+
* 2. The file path matches any of the patterns in `paths` metadata
|
|
73
|
+
*
|
|
74
|
+
* @param documents - Array of memory documents to filter
|
|
75
|
+
* @param currentPath - The current file path to match against
|
|
76
|
+
* @returns Array of relevant memory documents, sorted by priority
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const memories: MemoryDocument[] = [
|
|
81
|
+
* {
|
|
82
|
+
* path: "/memory/api.md",
|
|
83
|
+
* metadata: { paths: ["src/api/**\/*.ts"], priority: 10 },
|
|
84
|
+
* content: "API rules...",
|
|
85
|
+
* modifiedAt: Date.now(),
|
|
86
|
+
* },
|
|
87
|
+
* {
|
|
88
|
+
* path: "/memory/general.md",
|
|
89
|
+
* metadata: {}, // No paths = applies to all
|
|
90
|
+
* content: "General rules...",
|
|
91
|
+
* modifiedAt: Date.now(),
|
|
92
|
+
* },
|
|
93
|
+
* ];
|
|
94
|
+
*
|
|
95
|
+
* const relevant = filterMemoriesByPath(memories, "src/api/users.ts");
|
|
96
|
+
* // Returns both, sorted by priority (api.md first)
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @category Memory
|
|
100
|
+
*/
|
|
101
|
+
export declare function filterMemoriesByPath(documents: MemoryDocument[], currentPath: string): MemoryDocument[];
|
|
102
|
+
/**
|
|
103
|
+
* Filter additional memory files by path relevance.
|
|
104
|
+
*
|
|
105
|
+
* @param files - Array of additional memory files
|
|
106
|
+
* @param currentPath - The current file path to match against
|
|
107
|
+
* @returns Array of relevant files, sorted by priority
|
|
108
|
+
*
|
|
109
|
+
* @category Memory
|
|
110
|
+
*/
|
|
111
|
+
export declare function filterAdditionalFilesByPath(files: AdditionalMemoryFile[], currentPath: string): AdditionalMemoryFile[];
|
|
112
|
+
/**
|
|
113
|
+
* Options for building path-specific memory context.
|
|
114
|
+
*
|
|
115
|
+
* @category Memory
|
|
116
|
+
*/
|
|
117
|
+
export interface BuildPathMemoryContextOptions {
|
|
118
|
+
/**
|
|
119
|
+
* User memory document.
|
|
120
|
+
*/
|
|
121
|
+
userMemory?: MemoryDocument;
|
|
122
|
+
/**
|
|
123
|
+
* Project memory document.
|
|
124
|
+
*/
|
|
125
|
+
projectMemory?: MemoryDocument;
|
|
126
|
+
/**
|
|
127
|
+
* Additional memory files.
|
|
128
|
+
*/
|
|
129
|
+
additionalFiles?: AdditionalMemoryFile[];
|
|
130
|
+
/**
|
|
131
|
+
* Current file path for filtering.
|
|
132
|
+
*/
|
|
133
|
+
currentPath?: string;
|
|
134
|
+
/**
|
|
135
|
+
* Include memories without path restrictions.
|
|
136
|
+
* @defaultValue true
|
|
137
|
+
*/
|
|
138
|
+
includeGeneral?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Include file names as subheaders for additional files.
|
|
141
|
+
* @defaultValue true
|
|
142
|
+
*/
|
|
143
|
+
includeFilenames?: boolean;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Result from building path-specific memory context.
|
|
147
|
+
*
|
|
148
|
+
* @category Memory
|
|
149
|
+
*/
|
|
150
|
+
export interface PathMemoryContext {
|
|
151
|
+
/**
|
|
152
|
+
* Whether user memory applies to current path.
|
|
153
|
+
*/
|
|
154
|
+
userMemoryApplies: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Whether project memory applies to current path.
|
|
157
|
+
*/
|
|
158
|
+
projectMemoryApplies: boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Filtered additional files that apply to current path.
|
|
161
|
+
*/
|
|
162
|
+
relevantAdditionalFiles: AdditionalMemoryFile[];
|
|
163
|
+
/**
|
|
164
|
+
* Combined memory content formatted for prompt injection.
|
|
165
|
+
*/
|
|
166
|
+
combinedContent: string;
|
|
167
|
+
/**
|
|
168
|
+
* Paths from all applicable memories (for debugging).
|
|
169
|
+
*/
|
|
170
|
+
appliedPatterns: string[];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Build memory context filtered by current file path.
|
|
174
|
+
*
|
|
175
|
+
* This function filters all memory sources based on their path patterns
|
|
176
|
+
* and the current file being worked on. Useful for providing context-aware
|
|
177
|
+
* memory injection.
|
|
178
|
+
*
|
|
179
|
+
* @param options - Context building options
|
|
180
|
+
* @returns Path-filtered memory context
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```typescript
|
|
184
|
+
* const context = buildPathMemoryContext({
|
|
185
|
+
* userMemory,
|
|
186
|
+
* projectMemory,
|
|
187
|
+
* additionalFiles,
|
|
188
|
+
* currentPath: "src/api/users.ts",
|
|
189
|
+
* });
|
|
190
|
+
*
|
|
191
|
+
* if (context.combinedContent) {
|
|
192
|
+
* systemPrompt += `\n\n## Relevant Context\n\n${context.combinedContent}`;
|
|
193
|
+
* }
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* @category Memory
|
|
197
|
+
*/
|
|
198
|
+
export declare function buildPathMemoryContext(options: BuildPathMemoryContextOptions): PathMemoryContext;
|
|
199
|
+
/**
|
|
200
|
+
* Filter memory documents by tags.
|
|
201
|
+
*
|
|
202
|
+
* @param documents - Array of memory documents
|
|
203
|
+
* @param tags - Tags to filter by (document must have at least one)
|
|
204
|
+
* @returns Filtered array of documents
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```typescript
|
|
208
|
+
* const docs = filterMemoriesByTags(memories, ["api", "security"]);
|
|
209
|
+
* // Returns documents that have either "api" or "security" tag
|
|
210
|
+
* ```
|
|
211
|
+
*
|
|
212
|
+
* @category Memory
|
|
213
|
+
*/
|
|
214
|
+
export declare function filterMemoriesByTags(documents: MemoryDocument[], tags: string[]): MemoryDocument[];
|
|
215
|
+
/**
|
|
216
|
+
* Filter memory documents by all required tags.
|
|
217
|
+
*
|
|
218
|
+
* @param documents - Array of memory documents
|
|
219
|
+
* @param tags - Tags to filter by (document must have all)
|
|
220
|
+
* @returns Filtered array of documents
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* const docs = filterMemoriesByAllTags(memories, ["api", "security"]);
|
|
225
|
+
* // Returns documents that have both "api" AND "security" tags
|
|
226
|
+
* ```
|
|
227
|
+
*
|
|
228
|
+
* @category Memory
|
|
229
|
+
*/
|
|
230
|
+
export declare function filterMemoriesByAllTags(documents: MemoryDocument[], tags: string[]): MemoryDocument[];
|
|
231
|
+
/**
|
|
232
|
+
* Filter memory documents by auto-load setting.
|
|
233
|
+
*
|
|
234
|
+
* @param documents - Array of memory documents
|
|
235
|
+
* @returns Documents that should be auto-loaded
|
|
236
|
+
*
|
|
237
|
+
* @category Memory
|
|
238
|
+
*/
|
|
239
|
+
export declare function filterAutoLoadMemories(documents: MemoryDocument[]): MemoryDocument[];
|
|
240
|
+
/**
|
|
241
|
+
* Filter additional files by auto-load setting.
|
|
242
|
+
*
|
|
243
|
+
* @param files - Array of additional memory files
|
|
244
|
+
* @returns Files that should be auto-loaded
|
|
245
|
+
*
|
|
246
|
+
* @category Memory
|
|
247
|
+
*/
|
|
248
|
+
export declare function filterAutoLoadAdditionalFiles(files: AdditionalMemoryFile[]): AdditionalMemoryFile[];
|
|
249
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/memory/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CA2B7E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAEnF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,MAAM,GAClB,cAAc,EAAE,CAwBlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,oBAAoB,EAAE,EAC7B,WAAW,EAAE,MAAM,GAClB,oBAAoB,EAAE,CAuBxB;AAMD;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B;;OAEG;IACH,aAAa,CAAC,EAAE,cAAc,CAAC;IAE/B;;OAEG;IACH,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEzC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,uBAAuB,EAAE,oBAAoB,EAAE,CAAC;IAEhD;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,iBAAiB,CAiFhG;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,cAAc,EAAE,EAC3B,IAAI,EAAE,MAAM,EAAE,GACb,cAAc,EAAE,CAalB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,cAAc,EAAE,EAC3B,IAAI,EAAE,MAAM,EAAE,GACb,cAAc,EAAE,CAalB;AAMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAKpF;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,oBAAoB,EAAE,GAC5B,oBAAoB,EAAE,CAIxB"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path-based rule matching for memory documents.
|
|
3
|
+
*
|
|
4
|
+
* Memory documents can specify path patterns in their frontmatter to
|
|
5
|
+
* control when they should be applied. This module provides matching
|
|
6
|
+
* functionality for determining which memories are relevant.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { filterMemoriesByPath, matchesPathPattern } from "@lleverage-ai/agent-sdk";
|
|
11
|
+
*
|
|
12
|
+
* // Check if a file matches a pattern
|
|
13
|
+
* const matches = matchesPathPattern("src/api/users.ts", "src/api/**\/*.ts");
|
|
14
|
+
* // matches = true
|
|
15
|
+
*
|
|
16
|
+
* // Filter memories by current file
|
|
17
|
+
* const relevant = filterMemoriesByPath(memories, "src/api/users.ts");
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @packageDocumentation
|
|
21
|
+
*/
|
|
22
|
+
// =============================================================================
|
|
23
|
+
// Path Pattern Matching
|
|
24
|
+
// =============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Check if a file path matches a glob pattern.
|
|
27
|
+
*
|
|
28
|
+
* Supports standard glob patterns:
|
|
29
|
+
* - `*` - matches any characters except /
|
|
30
|
+
* - `**` - matches any characters including /
|
|
31
|
+
* - `?` - matches exactly one character except /
|
|
32
|
+
* - `[abc]` - matches any character in the brackets
|
|
33
|
+
* - `[!abc]` - matches any character not in the brackets
|
|
34
|
+
*
|
|
35
|
+
* @param filePath - The file path to test
|
|
36
|
+
* @param pattern - The glob pattern to match against
|
|
37
|
+
* @returns True if the path matches the pattern
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* matchesPathPattern("src/api/users.ts", "src/**\/*.ts"); // true
|
|
42
|
+
* matchesPathPattern("src/api/users.ts", "src/api/*.ts"); // true
|
|
43
|
+
* matchesPathPattern("src/api/users.ts", "tests/**\/*.ts"); // false
|
|
44
|
+
* matchesPathPattern("src/api/users.ts", "**\/*.ts"); // true
|
|
45
|
+
* matchesPathPattern("README.md", "*.md"); // true
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @category Memory
|
|
49
|
+
*/
|
|
50
|
+
export function matchesPathPattern(filePath, pattern) {
|
|
51
|
+
// Normalize paths to use forward slashes
|
|
52
|
+
const normalizedPath = filePath.replace(/\\/g, "/");
|
|
53
|
+
const normalizedPattern = pattern.replace(/\\/g, "/");
|
|
54
|
+
// Convert glob pattern to regex using placeholder approach
|
|
55
|
+
// to avoid conflicts between different glob patterns
|
|
56
|
+
const regexPattern = normalizedPattern
|
|
57
|
+
// Escape special regex characters (except glob chars * and ?)
|
|
58
|
+
.replace(/[.+^${}()|[\]\\]/g, "\\$&")
|
|
59
|
+
// Replace ** followed by / with a placeholder
|
|
60
|
+
.replace(/\*\*\//g, "<<<GLOBSTAR_SLASH>>>")
|
|
61
|
+
// Replace standalone ** with a placeholder
|
|
62
|
+
.replace(/\*\*/g, "<<<GLOBSTAR>>>")
|
|
63
|
+
// Handle * (matches anything except /)
|
|
64
|
+
.replace(/\*/g, "[^/]*")
|
|
65
|
+
// Handle ? (matches exactly one char except /)
|
|
66
|
+
.replace(/\?/g, "[^/]")
|
|
67
|
+
// Now replace placeholders with actual regex
|
|
68
|
+
// **/ matches zero or more directories (including none)
|
|
69
|
+
.replace(/<<<GLOBSTAR_SLASH>>>/g, "(?:[^/]+/)*")
|
|
70
|
+
// ** at end matches any remaining path
|
|
71
|
+
.replace(/<<<GLOBSTAR>>>/g, ".*");
|
|
72
|
+
// Anchor the pattern
|
|
73
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
74
|
+
return regex.test(normalizedPath);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if a file path matches any of the given patterns.
|
|
78
|
+
*
|
|
79
|
+
* @param filePath - The file path to test
|
|
80
|
+
* @param patterns - Array of glob patterns
|
|
81
|
+
* @returns True if the path matches any pattern
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const patterns = ["src/**\/*.ts", "tests/**\/*.ts"];
|
|
86
|
+
* matchesAnyPathPattern("src/index.ts", patterns); // true
|
|
87
|
+
* matchesAnyPathPattern("README.md", patterns); // false
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* @category Memory
|
|
91
|
+
*/
|
|
92
|
+
export function matchesAnyPathPattern(filePath, patterns) {
|
|
93
|
+
return patterns.some((pattern) => matchesPathPattern(filePath, pattern));
|
|
94
|
+
}
|
|
95
|
+
// =============================================================================
|
|
96
|
+
// Memory Filtering
|
|
97
|
+
// =============================================================================
|
|
98
|
+
/**
|
|
99
|
+
* Filter memory documents by path relevance.
|
|
100
|
+
*
|
|
101
|
+
* A memory document is considered relevant if:
|
|
102
|
+
* 1. It has no `paths` metadata (applies to all files)
|
|
103
|
+
* 2. The file path matches any of the patterns in `paths` metadata
|
|
104
|
+
*
|
|
105
|
+
* @param documents - Array of memory documents to filter
|
|
106
|
+
* @param currentPath - The current file path to match against
|
|
107
|
+
* @returns Array of relevant memory documents, sorted by priority
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const memories: MemoryDocument[] = [
|
|
112
|
+
* {
|
|
113
|
+
* path: "/memory/api.md",
|
|
114
|
+
* metadata: { paths: ["src/api/**\/*.ts"], priority: 10 },
|
|
115
|
+
* content: "API rules...",
|
|
116
|
+
* modifiedAt: Date.now(),
|
|
117
|
+
* },
|
|
118
|
+
* {
|
|
119
|
+
* path: "/memory/general.md",
|
|
120
|
+
* metadata: {}, // No paths = applies to all
|
|
121
|
+
* content: "General rules...",
|
|
122
|
+
* modifiedAt: Date.now(),
|
|
123
|
+
* },
|
|
124
|
+
* ];
|
|
125
|
+
*
|
|
126
|
+
* const relevant = filterMemoriesByPath(memories, "src/api/users.ts");
|
|
127
|
+
* // Returns both, sorted by priority (api.md first)
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @category Memory
|
|
131
|
+
*/
|
|
132
|
+
export function filterMemoriesByPath(documents, currentPath) {
|
|
133
|
+
const relevant = documents.filter((doc) => {
|
|
134
|
+
const paths = doc.metadata.paths;
|
|
135
|
+
// No paths metadata = applies to all files
|
|
136
|
+
if (!paths || paths.length === 0) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
// Check if current path matches any pattern
|
|
140
|
+
return matchesAnyPathPattern(currentPath, paths);
|
|
141
|
+
});
|
|
142
|
+
// Sort by priority (higher first), then by path
|
|
143
|
+
return relevant.sort((a, b) => {
|
|
144
|
+
const priorityA = a.metadata.priority ?? 0;
|
|
145
|
+
const priorityB = b.metadata.priority ?? 0;
|
|
146
|
+
if (priorityB !== priorityA) {
|
|
147
|
+
return priorityB - priorityA;
|
|
148
|
+
}
|
|
149
|
+
return a.path.localeCompare(b.path);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Filter additional memory files by path relevance.
|
|
154
|
+
*
|
|
155
|
+
* @param files - Array of additional memory files
|
|
156
|
+
* @param currentPath - The current file path to match against
|
|
157
|
+
* @returns Array of relevant files, sorted by priority
|
|
158
|
+
*
|
|
159
|
+
* @category Memory
|
|
160
|
+
*/
|
|
161
|
+
export function filterAdditionalFilesByPath(files, currentPath) {
|
|
162
|
+
const relevant = files.filter((file) => {
|
|
163
|
+
const paths = file.metadata.paths;
|
|
164
|
+
// No paths metadata = applies to all files
|
|
165
|
+
if (!paths || paths.length === 0) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
return matchesAnyPathPattern(currentPath, paths);
|
|
169
|
+
});
|
|
170
|
+
// Sort by priority (higher first), then by filename
|
|
171
|
+
return relevant.sort((a, b) => {
|
|
172
|
+
const priorityA = a.metadata.priority ?? 0;
|
|
173
|
+
const priorityB = b.metadata.priority ?? 0;
|
|
174
|
+
if (priorityB !== priorityA) {
|
|
175
|
+
return priorityB - priorityA;
|
|
176
|
+
}
|
|
177
|
+
return a.filename.localeCompare(b.filename);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Build memory context filtered by current file path.
|
|
182
|
+
*
|
|
183
|
+
* This function filters all memory sources based on their path patterns
|
|
184
|
+
* and the current file being worked on. Useful for providing context-aware
|
|
185
|
+
* memory injection.
|
|
186
|
+
*
|
|
187
|
+
* @param options - Context building options
|
|
188
|
+
* @returns Path-filtered memory context
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* const context = buildPathMemoryContext({
|
|
193
|
+
* userMemory,
|
|
194
|
+
* projectMemory,
|
|
195
|
+
* additionalFiles,
|
|
196
|
+
* currentPath: "src/api/users.ts",
|
|
197
|
+
* });
|
|
198
|
+
*
|
|
199
|
+
* if (context.combinedContent) {
|
|
200
|
+
* systemPrompt += `\n\n## Relevant Context\n\n${context.combinedContent}`;
|
|
201
|
+
* }
|
|
202
|
+
* ```
|
|
203
|
+
*
|
|
204
|
+
* @category Memory
|
|
205
|
+
*/
|
|
206
|
+
export function buildPathMemoryContext(options) {
|
|
207
|
+
const { userMemory, projectMemory, additionalFiles = [], currentPath, includeGeneral = true, includeFilenames = true, } = options;
|
|
208
|
+
const appliedPatterns = [];
|
|
209
|
+
const contentParts = [];
|
|
210
|
+
// Check user memory
|
|
211
|
+
let userMemoryApplies = false;
|
|
212
|
+
if (userMemory) {
|
|
213
|
+
const paths = userMemory.metadata.paths;
|
|
214
|
+
if (!paths || paths.length === 0) {
|
|
215
|
+
userMemoryApplies = includeGeneral;
|
|
216
|
+
}
|
|
217
|
+
else if (currentPath) {
|
|
218
|
+
userMemoryApplies = matchesAnyPathPattern(currentPath, paths);
|
|
219
|
+
if (userMemoryApplies) {
|
|
220
|
+
appliedPatterns.push(...paths);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (userMemoryApplies && userMemory.content) {
|
|
224
|
+
contentParts.push(userMemory.content);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Check project memory
|
|
228
|
+
let projectMemoryApplies = false;
|
|
229
|
+
if (projectMemory) {
|
|
230
|
+
const paths = projectMemory.metadata.paths;
|
|
231
|
+
if (!paths || paths.length === 0) {
|
|
232
|
+
projectMemoryApplies = includeGeneral;
|
|
233
|
+
}
|
|
234
|
+
else if (currentPath) {
|
|
235
|
+
projectMemoryApplies = matchesAnyPathPattern(currentPath, paths);
|
|
236
|
+
if (projectMemoryApplies) {
|
|
237
|
+
appliedPatterns.push(...paths);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (projectMemoryApplies && projectMemory.content) {
|
|
241
|
+
contentParts.push(projectMemory.content);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Filter additional files
|
|
245
|
+
let relevantAdditionalFiles = [];
|
|
246
|
+
if (currentPath) {
|
|
247
|
+
relevantAdditionalFiles = filterAdditionalFilesByPath(additionalFiles, currentPath);
|
|
248
|
+
}
|
|
249
|
+
else if (includeGeneral) {
|
|
250
|
+
// Include files without path restrictions
|
|
251
|
+
relevantAdditionalFiles = additionalFiles.filter((f) => !f.metadata.paths || f.metadata.paths.length === 0);
|
|
252
|
+
}
|
|
253
|
+
// Add additional file content
|
|
254
|
+
for (const file of relevantAdditionalFiles) {
|
|
255
|
+
if (file.content) {
|
|
256
|
+
if (includeFilenames) {
|
|
257
|
+
contentParts.push(`## ${file.filename}\n\n${file.content}`);
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
contentParts.push(file.content);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (file.metadata.paths) {
|
|
264
|
+
appliedPatterns.push(...file.metadata.paths);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
userMemoryApplies,
|
|
269
|
+
projectMemoryApplies,
|
|
270
|
+
relevantAdditionalFiles,
|
|
271
|
+
combinedContent: contentParts.join("\n\n---\n\n"),
|
|
272
|
+
appliedPatterns: [...new Set(appliedPatterns)], // Deduplicate
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
// =============================================================================
|
|
276
|
+
// Tag-Based Filtering
|
|
277
|
+
// =============================================================================
|
|
278
|
+
/**
|
|
279
|
+
* Filter memory documents by tags.
|
|
280
|
+
*
|
|
281
|
+
* @param documents - Array of memory documents
|
|
282
|
+
* @param tags - Tags to filter by (document must have at least one)
|
|
283
|
+
* @returns Filtered array of documents
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```typescript
|
|
287
|
+
* const docs = filterMemoriesByTags(memories, ["api", "security"]);
|
|
288
|
+
* // Returns documents that have either "api" or "security" tag
|
|
289
|
+
* ```
|
|
290
|
+
*
|
|
291
|
+
* @category Memory
|
|
292
|
+
*/
|
|
293
|
+
export function filterMemoriesByTags(documents, tags) {
|
|
294
|
+
if (tags.length === 0) {
|
|
295
|
+
return documents;
|
|
296
|
+
}
|
|
297
|
+
return documents.filter((doc) => {
|
|
298
|
+
const docTags = doc.metadata.tags;
|
|
299
|
+
if (!docTags || docTags.length === 0) {
|
|
300
|
+
return false;
|
|
301
|
+
}
|
|
302
|
+
return tags.some((tag) => docTags.includes(tag));
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Filter memory documents by all required tags.
|
|
307
|
+
*
|
|
308
|
+
* @param documents - Array of memory documents
|
|
309
|
+
* @param tags - Tags to filter by (document must have all)
|
|
310
|
+
* @returns Filtered array of documents
|
|
311
|
+
*
|
|
312
|
+
* @example
|
|
313
|
+
* ```typescript
|
|
314
|
+
* const docs = filterMemoriesByAllTags(memories, ["api", "security"]);
|
|
315
|
+
* // Returns documents that have both "api" AND "security" tags
|
|
316
|
+
* ```
|
|
317
|
+
*
|
|
318
|
+
* @category Memory
|
|
319
|
+
*/
|
|
320
|
+
export function filterMemoriesByAllTags(documents, tags) {
|
|
321
|
+
if (tags.length === 0) {
|
|
322
|
+
return documents;
|
|
323
|
+
}
|
|
324
|
+
return documents.filter((doc) => {
|
|
325
|
+
const docTags = doc.metadata.tags;
|
|
326
|
+
if (!docTags || docTags.length === 0) {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
return tags.every((tag) => docTags.includes(tag));
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
// =============================================================================
|
|
333
|
+
// Auto-Load Filtering
|
|
334
|
+
// =============================================================================
|
|
335
|
+
/**
|
|
336
|
+
* Filter memory documents by auto-load setting.
|
|
337
|
+
*
|
|
338
|
+
* @param documents - Array of memory documents
|
|
339
|
+
* @returns Documents that should be auto-loaded
|
|
340
|
+
*
|
|
341
|
+
* @category Memory
|
|
342
|
+
*/
|
|
343
|
+
export function filterAutoLoadMemories(documents) {
|
|
344
|
+
return documents.filter((doc) => {
|
|
345
|
+
// Default to true if not specified
|
|
346
|
+
return doc.metadata.autoLoad !== false;
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Filter additional files by auto-load setting.
|
|
351
|
+
*
|
|
352
|
+
* @param files - Array of additional memory files
|
|
353
|
+
* @returns Files that should be auto-loaded
|
|
354
|
+
*
|
|
355
|
+
* @category Memory
|
|
356
|
+
*/
|
|
357
|
+
export function filterAutoLoadAdditionalFiles(files) {
|
|
358
|
+
return files.filter((file) => {
|
|
359
|
+
return file.metadata.autoLoad !== false;
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/memory/rules.ts"],"names":[],"mappings":"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"}
|