gencode-ai 0.1.0 → 0.1.2
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/.gencode/settings.local.json +7 -0
- package/README.md +20 -102
- package/dist/agent/agent.d.ts +43 -2
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +90 -17
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/types.d.ts +9 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/cli/components/AllModelsSelector.d.ts +11 -0
- package/dist/cli/components/AllModelsSelector.d.ts.map +1 -0
- package/dist/cli/components/AllModelsSelector.js +153 -0
- package/dist/cli/components/AllModelsSelector.js.map +1 -0
- package/dist/cli/components/App.d.ts +8 -1
- package/dist/cli/components/App.d.ts.map +1 -1
- package/dist/cli/components/App.js +276 -40
- package/dist/cli/components/App.js.map +1 -1
- package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
- package/dist/cli/components/CommandSuggestions.js +3 -0
- package/dist/cli/components/CommandSuggestions.js.map +1 -1
- package/dist/cli/components/Header.d.ts +1 -1
- package/dist/cli/components/Header.d.ts.map +1 -1
- package/dist/cli/components/Header.js +4 -6
- package/dist/cli/components/Header.js.map +1 -1
- package/dist/cli/components/Logo.d.ts +1 -0
- package/dist/cli/components/Logo.d.ts.map +1 -1
- package/dist/cli/components/Logo.js +16 -3
- package/dist/cli/components/Logo.js.map +1 -1
- package/dist/cli/components/Messages.d.ts +17 -3
- package/dist/cli/components/Messages.d.ts.map +1 -1
- package/dist/cli/components/Messages.js +70 -18
- package/dist/cli/components/Messages.js.map +1 -1
- package/dist/cli/components/ModelSelector.d.ts +7 -7
- package/dist/cli/components/ModelSelector.d.ts.map +1 -1
- package/dist/cli/components/ModelSelector.js +116 -33
- package/dist/cli/components/ModelSelector.js.map +1 -1
- package/dist/cli/components/PermissionPrompt.d.ts +60 -0
- package/dist/cli/components/PermissionPrompt.d.ts.map +1 -0
- package/dist/cli/components/PermissionPrompt.js +192 -0
- package/dist/cli/components/PermissionPrompt.js.map +1 -0
- package/dist/cli/components/ProviderManager.d.ts +8 -0
- package/dist/cli/components/ProviderManager.d.ts.map +1 -0
- package/dist/cli/components/ProviderManager.js +280 -0
- package/dist/cli/components/ProviderManager.js.map +1 -0
- package/dist/cli/components/Spinner.d.ts +7 -2
- package/dist/cli/components/Spinner.d.ts.map +1 -1
- package/dist/cli/components/Spinner.js +116 -25
- package/dist/cli/components/Spinner.js.map +1 -1
- package/dist/cli/components/TodoList.d.ts +7 -0
- package/dist/cli/components/TodoList.d.ts.map +1 -0
- package/dist/cli/components/TodoList.js +34 -0
- package/dist/cli/components/TodoList.js.map +1 -0
- package/dist/cli/components/index.d.ts +1 -0
- package/dist/cli/components/index.d.ts.map +1 -1
- package/dist/cli/components/index.js +1 -0
- package/dist/cli/components/index.js.map +1 -1
- package/dist/cli/components/markdown.d.ts +9 -0
- package/dist/cli/components/markdown.d.ts.map +1 -0
- package/dist/cli/components/markdown.js +129 -0
- package/dist/cli/components/markdown.js.map +1 -0
- package/dist/cli/components/theme.d.ts +5 -0
- package/dist/cli/components/theme.d.ts.map +1 -1
- package/dist/cli/components/theme.js +7 -0
- package/dist/cli/components/theme.js.map +1 -1
- package/dist/cli/index.js +66 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +14 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +19 -3
- package/dist/config/index.js.map +1 -1
- package/dist/config/levels.d.ts +49 -0
- package/dist/config/levels.d.ts.map +1 -0
- package/dist/config/levels.js +222 -0
- package/dist/config/levels.js.map +1 -0
- package/dist/config/loader.d.ts +46 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +153 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/manager.d.ts +115 -15
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +260 -34
- package/dist/config/manager.js.map +1 -1
- package/dist/config/manager.test.d.ts +5 -0
- package/dist/config/manager.test.d.ts.map +1 -0
- package/dist/config/manager.test.js +192 -0
- package/dist/config/manager.test.js.map +1 -0
- package/dist/config/merger.d.ts +56 -0
- package/dist/config/merger.d.ts.map +1 -0
- package/dist/config/merger.js +177 -0
- package/dist/config/merger.js.map +1 -0
- package/dist/config/providers-config.d.ts +28 -0
- package/dist/config/providers-config.d.ts.map +1 -0
- package/dist/config/providers-config.js +79 -0
- package/dist/config/providers-config.js.map +1 -0
- package/dist/config/test-utils.d.ts +24 -0
- package/dist/config/test-utils.d.ts.map +1 -0
- package/dist/config/test-utils.js +55 -0
- package/dist/config/test-utils.js.map +1 -0
- package/dist/config/types.d.ts +108 -9
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +53 -2
- package/dist/config/types.js.map +1 -1
- package/dist/memory/import-resolver.d.ts +46 -0
- package/dist/memory/import-resolver.d.ts.map +1 -0
- package/dist/memory/import-resolver.js +117 -0
- package/dist/memory/import-resolver.js.map +1 -0
- package/dist/memory/index.d.ts +7 -6
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +7 -5
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/init-prompt.d.ts +22 -0
- package/dist/memory/init-prompt.d.ts.map +1 -0
- package/dist/memory/init-prompt.js +103 -0
- package/dist/memory/init-prompt.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +119 -0
- package/dist/memory/memory-manager.d.ts.map +1 -0
- package/dist/memory/memory-manager.js +587 -0
- package/dist/memory/memory-manager.js.map +1 -0
- package/dist/memory/rules-parser.d.ts +38 -0
- package/dist/memory/rules-parser.d.ts.map +1 -0
- package/dist/memory/rules-parser.js +69 -0
- package/dist/memory/rules-parser.js.map +1 -0
- package/dist/memory/test-utils.d.ts +20 -0
- package/dist/memory/test-utils.d.ts.map +1 -0
- package/dist/memory/test-utils.js +44 -0
- package/dist/memory/test-utils.js.map +1 -0
- package/dist/memory/types.d.ts +70 -63
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +42 -2
- package/dist/memory/types.js.map +1 -1
- package/dist/permissions/audit.d.ts +82 -0
- package/dist/permissions/audit.d.ts.map +1 -0
- package/dist/permissions/audit.js +229 -0
- package/dist/permissions/audit.js.map +1 -0
- package/dist/permissions/index.d.ts +11 -1
- package/dist/permissions/index.d.ts.map +1 -1
- package/dist/permissions/index.js +15 -0
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/manager.d.ts +149 -13
- package/dist/permissions/manager.d.ts.map +1 -1
- package/dist/permissions/manager.js +480 -35
- package/dist/permissions/manager.js.map +1 -1
- package/dist/permissions/manager.test.d.ts +5 -0
- package/dist/permissions/manager.test.d.ts.map +1 -0
- package/dist/permissions/manager.test.js +213 -0
- package/dist/permissions/manager.test.js.map +1 -0
- package/dist/permissions/persistence.d.ts +74 -0
- package/dist/permissions/persistence.d.ts.map +1 -0
- package/dist/permissions/persistence.js +248 -0
- package/dist/permissions/persistence.js.map +1 -0
- package/dist/permissions/persistence.test.d.ts +5 -0
- package/dist/permissions/persistence.test.d.ts.map +1 -0
- package/dist/permissions/persistence.test.js +171 -0
- package/dist/permissions/persistence.test.js.map +1 -0
- package/dist/permissions/prompt-matcher.d.ts +64 -0
- package/dist/permissions/prompt-matcher.d.ts.map +1 -0
- package/dist/permissions/prompt-matcher.js +415 -0
- package/dist/permissions/prompt-matcher.js.map +1 -0
- package/dist/permissions/prompt-matcher.test.d.ts +5 -0
- package/dist/permissions/prompt-matcher.test.d.ts.map +1 -0
- package/dist/permissions/prompt-matcher.test.js +107 -0
- package/dist/permissions/prompt-matcher.test.js.map +1 -0
- package/dist/permissions/types.d.ts +157 -0
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/permissions/types.js +43 -8
- package/dist/permissions/types.js.map +1 -1
- package/dist/prompts/index.d.ts +92 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +241 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +14 -3
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/index.d.ts +5 -3
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +13 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/registry.d.ts +66 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +158 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/search/brave.d.ts +14 -0
- package/dist/providers/search/brave.d.ts.map +1 -0
- package/dist/providers/search/brave.js +87 -0
- package/dist/providers/search/brave.js.map +1 -0
- package/dist/providers/search/exa.d.ts +12 -0
- package/dist/providers/search/exa.d.ts.map +1 -0
- package/dist/providers/search/exa.js +158 -0
- package/dist/providers/search/exa.js.map +1 -0
- package/dist/providers/search/index.d.ts +31 -0
- package/dist/providers/search/index.d.ts.map +1 -0
- package/dist/providers/search/index.js +75 -0
- package/dist/providers/search/index.js.map +1 -0
- package/dist/providers/search/serper.d.ts +14 -0
- package/dist/providers/search/serper.d.ts.map +1 -0
- package/dist/providers/search/serper.js +87 -0
- package/dist/providers/search/serper.js.map +1 -0
- package/dist/providers/search/types.d.ts +21 -0
- package/dist/providers/search/types.d.ts.map +1 -0
- package/dist/providers/search/types.js +5 -0
- package/dist/providers/search/types.js.map +1 -0
- package/dist/providers/store.d.ts +104 -0
- package/dist/providers/store.d.ts.map +1 -0
- package/dist/providers/store.js +171 -0
- package/dist/providers/store.js.map +1 -0
- package/dist/providers/types.d.ts +7 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/vertex-ai.d.ts +33 -0
- package/dist/providers/vertex-ai.d.ts.map +1 -0
- package/dist/providers/vertex-ai.js +407 -0
- package/dist/providers/vertex-ai.js.map +1 -0
- package/dist/tools/builtin/bash.d.ts.map +1 -1
- package/dist/tools/builtin/bash.js +2 -1
- package/dist/tools/builtin/bash.js.map +1 -1
- package/dist/tools/builtin/edit.d.ts.map +1 -1
- package/dist/tools/builtin/edit.js +2 -1
- package/dist/tools/builtin/edit.js.map +1 -1
- package/dist/tools/builtin/glob.d.ts.map +1 -1
- package/dist/tools/builtin/glob.js +2 -1
- package/dist/tools/builtin/glob.js.map +1 -1
- package/dist/tools/builtin/grep.d.ts.map +1 -1
- package/dist/tools/builtin/grep.js +2 -1
- package/dist/tools/builtin/grep.js.map +1 -1
- package/dist/tools/builtin/read.d.ts.map +1 -1
- package/dist/tools/builtin/read.js +2 -1
- package/dist/tools/builtin/read.js.map +1 -1
- package/dist/tools/builtin/todowrite.d.ts +15 -0
- package/dist/tools/builtin/todowrite.d.ts.map +1 -0
- package/dist/tools/builtin/todowrite.js +88 -0
- package/dist/tools/builtin/todowrite.js.map +1 -0
- package/dist/tools/builtin/webfetch.d.ts +20 -0
- package/dist/tools/builtin/webfetch.d.ts.map +1 -0
- package/dist/tools/builtin/webfetch.js +228 -0
- package/dist/tools/builtin/webfetch.js.map +1 -0
- package/dist/tools/builtin/websearch.d.ts +17 -0
- package/dist/tools/builtin/websearch.d.ts.map +1 -0
- package/dist/tools/builtin/websearch.js +87 -0
- package/dist/tools/builtin/websearch.js.map +1 -0
- package/dist/tools/builtin/write.d.ts.map +1 -1
- package/dist/tools/builtin/write.js +2 -1
- package/dist/tools/builtin/write.js.map +1 -1
- package/dist/tools/index.d.ts +18 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +28 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +16 -0
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/utils/ssrf.d.ts +18 -0
- package/dist/tools/utils/ssrf.d.ts.map +1 -0
- package/dist/tools/utils/ssrf.js +70 -0
- package/dist/tools/utils/ssrf.js.map +1 -0
- package/docs/README.md +5 -4
- package/docs/config-system-comparison.md +707 -0
- package/docs/memory-system.md +238 -0
- package/docs/permissions.md +368 -0
- package/docs/proposals/0001-web-fetch-tool.md +32 -2
- package/docs/proposals/0002-web-search-tool.md +59 -2
- package/docs/proposals/0005-todo-system.md +350 -85
- package/docs/proposals/0006-memory-system.md +11 -10
- package/docs/proposals/0012-ask-user-question.md +941 -206
- package/docs/proposals/0023-permission-enhancements.md +61 -2
- package/docs/proposals/0041-configuration-system.md +587 -0
- package/docs/proposals/0042-prompt-optimization.md +866 -0
- package/docs/proposals/README.md +8 -6
- package/docs/providers.md +220 -0
- package/jest.config.js +26 -0
- package/package.json +14 -3
- package/src/agent/agent.ts +120 -18
- package/src/agent/types.ts +9 -1
- package/src/cli/components/App.tsx +369 -47
- package/src/cli/components/CommandSuggestions.tsx +3 -0
- package/src/cli/components/Header.tsx +11 -17
- package/src/cli/components/Logo.tsx +76 -9
- package/src/cli/components/Messages.tsx +146 -38
- package/src/cli/components/ModelSelector.tsx +169 -52
- package/src/cli/components/PermissionPrompt.tsx +388 -0
- package/src/cli/components/ProviderManager.tsx +534 -0
- package/src/cli/components/Spinner.tsx +138 -25
- package/src/cli/components/TodoList.tsx +54 -0
- package/src/cli/components/index.ts +6 -0
- package/src/cli/components/markdown.ts +157 -0
- package/src/cli/components/theme.ts +7 -0
- package/src/cli/index.tsx +76 -13
- package/src/config/index.ts +79 -4
- package/src/config/levels.test.ts +163 -0
- package/src/config/levels.ts +285 -0
- package/src/config/loader.test.ts +120 -0
- package/src/config/loader.ts +178 -0
- package/src/config/manager.test.ts +215 -0
- package/src/config/manager.ts +328 -40
- package/src/config/merger.test.ts +360 -0
- package/src/config/merger.ts +221 -0
- package/src/config/providers-config.ts +85 -0
- package/src/config/test-utils.ts +79 -0
- package/src/config/types.ts +186 -9
- package/src/memory/import-resolver.test.ts +117 -0
- package/src/memory/import-resolver.ts +149 -0
- package/src/memory/index.ts +11 -0
- package/src/memory/init-prompt.ts +113 -0
- package/src/memory/memory-manager.test.ts +198 -0
- package/src/memory/memory-manager.ts +716 -0
- package/src/memory/rules-parser.test.ts +182 -0
- package/src/memory/rules-parser.ts +82 -0
- package/src/memory/test-utils.ts +60 -0
- package/src/memory/types.ts +119 -0
- package/src/permissions/audit.ts +284 -0
- package/src/permissions/index.ts +20 -1
- package/src/permissions/manager.test.ts +260 -0
- package/src/permissions/manager.ts +592 -40
- package/src/permissions/persistence.test.ts +220 -0
- package/src/permissions/persistence.ts +301 -0
- package/src/permissions/prompt-matcher.test.ts +213 -0
- package/src/permissions/prompt-matcher.ts +472 -0
- package/src/permissions/types.ts +236 -8
- package/src/prompts/index.test.ts +279 -0
- package/src/prompts/index.ts +306 -0
- package/src/prompts/system/anthropic.txt +29 -0
- package/src/prompts/system/base.txt +124 -0
- package/src/prompts/system/gemini.txt +35 -0
- package/src/prompts/system/generic.txt +128 -0
- package/src/prompts/system/openai.txt +29 -0
- package/src/prompts/tools/bash.txt +60 -0
- package/src/prompts/tools/edit.txt +29 -0
- package/src/prompts/tools/glob.txt +35 -0
- package/src/prompts/tools/grep.txt +43 -0
- package/src/prompts/tools/read.txt +22 -0
- package/src/prompts/tools/todowrite.txt +71 -0
- package/src/prompts/tools/webfetch.txt +34 -0
- package/src/prompts/tools/websearch.txt +41 -0
- package/src/prompts/tools/write.txt +23 -0
- package/src/providers/gemini.ts +20 -4
- package/src/providers/index.ts +18 -3
- package/src/providers/registry.ts +198 -0
- package/src/providers/search/brave.ts +132 -0
- package/src/providers/search/exa.ts +217 -0
- package/src/providers/search/index.ts +79 -0
- package/src/providers/search/serper.ts +133 -0
- package/src/providers/search/types.ts +24 -0
- package/src/providers/store.ts +216 -0
- package/src/providers/types.ts +9 -1
- package/src/providers/vertex-ai.ts +594 -0
- package/src/tools/builtin/bash.ts +2 -1
- package/src/tools/builtin/edit.ts +2 -1
- package/src/tools/builtin/glob.ts +2 -1
- package/src/tools/builtin/grep.ts +2 -1
- package/src/tools/builtin/read.ts +2 -1
- package/src/tools/builtin/todowrite.ts +102 -0
- package/src/tools/builtin/webfetch.ts +261 -0
- package/src/tools/builtin/websearch.ts +103 -0
- package/src/tools/builtin/write.ts +2 -1
- package/src/tools/index.ts +28 -2
- package/src/tools/types.ts +32 -0
- package/src/tools/utils/ssrf.ts +79 -0
- package/tsconfig.json +1 -1
- package/CLAUDE.md +0 -70
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules Parser - Parse frontmatter from rules files
|
|
3
|
+
*
|
|
4
|
+
* Uses gray-matter for YAML frontmatter parsing.
|
|
5
|
+
* Supports 'paths:' frontmatter for glob-based rule scoping.
|
|
6
|
+
*
|
|
7
|
+
* Example rule file:
|
|
8
|
+
* ---
|
|
9
|
+
* paths:
|
|
10
|
+
* - "src/api/**\/*.ts"
|
|
11
|
+
* - "src/routes/**\/*.ts"
|
|
12
|
+
* ---
|
|
13
|
+
*
|
|
14
|
+
* # API Development Rules
|
|
15
|
+
* - Use async/await consistently
|
|
16
|
+
*/
|
|
17
|
+
import matter from 'gray-matter';
|
|
18
|
+
import { minimatch } from 'minimatch';
|
|
19
|
+
/**
|
|
20
|
+
* Parse frontmatter from a rule file
|
|
21
|
+
*/
|
|
22
|
+
export function parseRuleFrontmatter(fileContent) {
|
|
23
|
+
try {
|
|
24
|
+
const { data, content } = matter(fileContent);
|
|
25
|
+
// Extract paths from frontmatter
|
|
26
|
+
let paths = [];
|
|
27
|
+
if (data.paths) {
|
|
28
|
+
if (Array.isArray(data.paths)) {
|
|
29
|
+
paths = data.paths.filter((p) => typeof p === 'string');
|
|
30
|
+
}
|
|
31
|
+
else if (typeof data.paths === 'string') {
|
|
32
|
+
paths = [data.paths];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return { paths, content: content.trim() };
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// If frontmatter parsing fails, return full content with no paths
|
|
39
|
+
return { paths: [], content: fileContent };
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if a file path matches any of the glob patterns
|
|
44
|
+
*/
|
|
45
|
+
export function matchesPatterns(filePath, patterns) {
|
|
46
|
+
if (patterns.length === 0) {
|
|
47
|
+
return true; // No patterns = always active
|
|
48
|
+
}
|
|
49
|
+
return patterns.some((pattern) => minimatch(filePath, pattern, {
|
|
50
|
+
matchBase: true,
|
|
51
|
+
dot: true,
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Activate rules based on current file context
|
|
56
|
+
*/
|
|
57
|
+
export function activateRules(rules, currentFile) {
|
|
58
|
+
return rules.map((rule) => ({
|
|
59
|
+
...rule,
|
|
60
|
+
isActive: currentFile ? matchesPatterns(currentFile, rule.patterns) : rule.patterns.length === 0,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get only active rules
|
|
65
|
+
*/
|
|
66
|
+
export function getActiveRules(rules) {
|
|
67
|
+
return rules.filter((rule) => rule.isActive);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=rules-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules-parser.js","sourceRoot":"","sources":["../../src/memory/rules-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAQtC;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QAE9C,iCAAiC;QACjC,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC1C,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,kEAAkE;QAClE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,QAAkB;IAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAC7C,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/B,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE;QAC3B,SAAS,EAAE,IAAI;QACf,GAAG,EAAE,IAAI;KACV,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAmB,EAAE,WAAoB;IACrE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,IAAI;QACP,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;KACjG,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmB;IAChD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared test utilities for memory tests
|
|
3
|
+
*/
|
|
4
|
+
export interface TestProject {
|
|
5
|
+
tempDir: string;
|
|
6
|
+
projectDir: string;
|
|
7
|
+
cleanup: () => Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Create a test project with temp directory and git marker
|
|
11
|
+
*/
|
|
12
|
+
export declare function createTestProject(prefix?: string): Promise<TestProject>;
|
|
13
|
+
/**
|
|
14
|
+
* Write memory file to a directory
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeMemory(projectDir: string, namespace: 'claude' | 'gencode', content: string, options?: {
|
|
17
|
+
local?: boolean;
|
|
18
|
+
inDir?: boolean;
|
|
19
|
+
}): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/memory/test-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,SAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAetF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACjD,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared test utilities for memory tests
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs/promises';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import * as os from 'os';
|
|
7
|
+
/**
|
|
8
|
+
* Create a test project with temp directory and git marker
|
|
9
|
+
*/
|
|
10
|
+
export async function createTestProject(prefix = 'gencode-test-') {
|
|
11
|
+
const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), prefix));
|
|
12
|
+
const projectDir = path.join(tempDir, 'project');
|
|
13
|
+
await fs.mkdir(projectDir, { recursive: true });
|
|
14
|
+
await fs.mkdir(path.join(projectDir, '.git'));
|
|
15
|
+
return {
|
|
16
|
+
tempDir,
|
|
17
|
+
projectDir,
|
|
18
|
+
cleanup: async () => {
|
|
19
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
20
|
+
delete process.env.GENCODE_CONFIG_DIRS;
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Write memory file to a directory
|
|
26
|
+
*/
|
|
27
|
+
export async function writeMemory(projectDir, namespace, content, options = {}) {
|
|
28
|
+
const { local = false, inDir = true } = options;
|
|
29
|
+
const filename = namespace === 'claude'
|
|
30
|
+
? (local ? 'CLAUDE.local.md' : 'CLAUDE.md')
|
|
31
|
+
: (local ? 'AGENT.local.md' : 'AGENT.md');
|
|
32
|
+
let filePath;
|
|
33
|
+
if (inDir) {
|
|
34
|
+
const dir = path.join(projectDir, namespace === 'claude' ? '.claude' : '.gencode');
|
|
35
|
+
await fs.mkdir(dir, { recursive: true });
|
|
36
|
+
filePath = path.join(dir, filename);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
filePath = path.join(projectDir, filename);
|
|
40
|
+
}
|
|
41
|
+
await fs.writeFile(filePath, content);
|
|
42
|
+
return filePath;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/memory/test-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAQzB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAM,GAAG,eAAe;IAC9D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEjD,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAE9C,OAAO;QACL,OAAO;QACP,UAAU;QACV,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,SAA+B,EAC/B,OAAe,EACf,UAAgD,EAAE;IAElD,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ;QACrC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE5C,IAAI,QAAgB,CAAC;IACrB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACnF,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/memory/types.d.ts
CHANGED
|
@@ -1,74 +1,81 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Memory System Types
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* Hierarchical memory loading compatible with Claude Code:
|
|
5
|
+
* At each level, both .gencode and .claude are loaded and merged (gencode has higher priority).
|
|
6
|
+
*
|
|
7
|
+
* Levels:
|
|
8
|
+
* - Enterprise: System-wide managed memory (enforced)
|
|
9
|
+
* - User: ~/.gencode/ + ~/.claude/ (both loaded, gencode content appears later)
|
|
10
|
+
* - User Rules: ~/.gencode/rules/ + ~/.claude/rules/
|
|
11
|
+
* - Extra: GENCODE_CONFIG_DIRS directories
|
|
12
|
+
* - Project: ./AGENT.md, .gencode/, ./CLAUDE.md, .claude/ (recursive upward search)
|
|
13
|
+
* - Project Rules: .gencode/rules/ + .claude/rules/
|
|
14
|
+
* - Local: *.local.md files (gitignored)
|
|
11
15
|
*/
|
|
16
|
+
export type MemoryLevel = 'enterprise' | 'user' | 'user-rules' | 'extra' | 'project' | 'project-rules' | 'local';
|
|
17
|
+
export type MemoryNamespace = 'gencode' | 'claude' | 'extra';
|
|
12
18
|
export interface MemoryFile {
|
|
13
|
-
/** Absolute path to the file */
|
|
14
19
|
path: string;
|
|
15
|
-
/** File content */
|
|
16
20
|
content: string;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
filename: string;
|
|
21
|
+
level: MemoryLevel;
|
|
22
|
+
namespace: MemoryNamespace;
|
|
23
|
+
loadedAt: Date;
|
|
24
|
+
resolvedImports: string[];
|
|
25
|
+
enforced?: boolean;
|
|
23
26
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
type: 'node' | 'python' | 'go' | 'rust' | 'java' | 'unknown';
|
|
32
|
-
/** Build commands found in config files */
|
|
33
|
-
buildCommands: string[];
|
|
34
|
-
/** Test commands found in config files */
|
|
35
|
-
testCommands: string[];
|
|
36
|
-
/** Key directories and their purposes */
|
|
37
|
-
directories: Array<{
|
|
38
|
-
path: string;
|
|
39
|
-
purpose: string;
|
|
40
|
-
}>;
|
|
41
|
-
/** Configuration files found */
|
|
42
|
-
configFiles: string[];
|
|
43
|
-
/** Package manager detected */
|
|
44
|
-
packageManager?: 'npm' | 'yarn' | 'pnpm' | 'pip' | 'poetry' | 'cargo' | 'go';
|
|
27
|
+
export interface MemoryRule {
|
|
28
|
+
path: string;
|
|
29
|
+
content: string;
|
|
30
|
+
patterns: string[];
|
|
31
|
+
isActive: boolean;
|
|
32
|
+
level: 'user-rules' | 'project-rules';
|
|
33
|
+
namespace: MemoryNamespace;
|
|
45
34
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
35
|
+
export interface MemoryConfig {
|
|
36
|
+
gencodeFilename: string;
|
|
37
|
+
gencodeLocalFilename: string;
|
|
38
|
+
gencodeDir: string;
|
|
39
|
+
claudeFilename: string;
|
|
40
|
+
claudeLocalFilename: string;
|
|
41
|
+
claudeDir: string;
|
|
42
|
+
rulesDir: string;
|
|
43
|
+
maxFileSize: number;
|
|
44
|
+
maxTotalSize: number;
|
|
45
|
+
maxImportDepth: number;
|
|
56
46
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
export declare const DEFAULT_MEMORY_CONFIG: MemoryConfig;
|
|
48
|
+
export declare const LEGACY_MEMORY_CONFIG: {
|
|
49
|
+
primaryFilename: string;
|
|
50
|
+
fallbackFilename: string;
|
|
51
|
+
localFilename: string;
|
|
52
|
+
localFallbackFilename: string;
|
|
53
|
+
primaryUserDir: string;
|
|
54
|
+
fallbackUserDir: string;
|
|
55
|
+
primaryLocalDir: string;
|
|
56
|
+
fallbackLocalDir: string;
|
|
57
|
+
rulesDir: string;
|
|
58
|
+
maxFileSize: number;
|
|
59
|
+
maxTotalSize: number;
|
|
60
|
+
maxImportDepth: number;
|
|
61
|
+
};
|
|
62
|
+
export interface LoadedMemory {
|
|
63
|
+
files: MemoryFile[];
|
|
64
|
+
rules: MemoryRule[];
|
|
65
|
+
totalSize: number;
|
|
66
|
+
context: string;
|
|
67
|
+
errors: string[];
|
|
68
|
+
sources: MemorySource[];
|
|
69
|
+
}
|
|
70
|
+
export interface MemorySource {
|
|
71
|
+
level: MemoryLevel;
|
|
72
|
+
namespace: MemoryNamespace;
|
|
73
|
+
path: string;
|
|
74
|
+
type: 'file' | 'rule';
|
|
75
|
+
size: number;
|
|
76
|
+
}
|
|
77
|
+
export interface MemoryLoadOptions {
|
|
78
|
+
cwd: string;
|
|
79
|
+
currentFile?: string;
|
|
69
80
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Conflict resolution choice when file exists
|
|
72
|
-
*/
|
|
73
|
-
export type ConflictResolution = 'overwrite' | 'merge' | 'cancel';
|
|
74
81
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,OAAO,GACP,SAAS,GACT,eAAe,GACf,OAAO,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,IAAI,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,YAAY,GAAG,eAAe,CAAC;IACtC,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAE3B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IAGnB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,qBAAqB,EAAE,YAgBnC,CAAC;AAGF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;CAahC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,eAAe,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
package/dist/memory/types.js
CHANGED
|
@@ -1,6 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Memory System Types
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* Hierarchical memory loading compatible with Claude Code:
|
|
5
|
+
* At each level, both .gencode and .claude are loaded and merged (gencode has higher priority).
|
|
6
|
+
*
|
|
7
|
+
* Levels:
|
|
8
|
+
* - Enterprise: System-wide managed memory (enforced)
|
|
9
|
+
* - User: ~/.gencode/ + ~/.claude/ (both loaded, gencode content appears later)
|
|
10
|
+
* - User Rules: ~/.gencode/rules/ + ~/.claude/rules/
|
|
11
|
+
* - Extra: GENCODE_CONFIG_DIRS directories
|
|
12
|
+
* - Project: ./AGENT.md, .gencode/, ./CLAUDE.md, .claude/ (recursive upward search)
|
|
13
|
+
* - Project Rules: .gencode/rules/ + .claude/rules/
|
|
14
|
+
* - Local: *.local.md files (gitignored)
|
|
4
15
|
*/
|
|
5
|
-
export {
|
|
16
|
+
export const DEFAULT_MEMORY_CONFIG = {
|
|
17
|
+
// GenCode
|
|
18
|
+
gencodeFilename: 'AGENT.md',
|
|
19
|
+
gencodeLocalFilename: 'AGENT.local.md',
|
|
20
|
+
gencodeDir: '.gencode',
|
|
21
|
+
// Claude
|
|
22
|
+
claudeFilename: 'CLAUDE.md',
|
|
23
|
+
claudeLocalFilename: 'CLAUDE.local.md',
|
|
24
|
+
claudeDir: '.claude',
|
|
25
|
+
// Common
|
|
26
|
+
rulesDir: 'rules',
|
|
27
|
+
maxFileSize: 100 * 1024, // 100KB
|
|
28
|
+
maxTotalSize: 500 * 1024, // 500KB
|
|
29
|
+
maxImportDepth: 5,
|
|
30
|
+
};
|
|
31
|
+
// Legacy compatibility
|
|
32
|
+
export const LEGACY_MEMORY_CONFIG = {
|
|
33
|
+
primaryFilename: 'AGENT.md',
|
|
34
|
+
fallbackFilename: 'CLAUDE.md',
|
|
35
|
+
localFilename: 'AGENT.local.md',
|
|
36
|
+
localFallbackFilename: 'CLAUDE.local.md',
|
|
37
|
+
primaryUserDir: '.gencode',
|
|
38
|
+
fallbackUserDir: '.claude',
|
|
39
|
+
primaryLocalDir: '.gencode',
|
|
40
|
+
fallbackLocalDir: '.claude',
|
|
41
|
+
rulesDir: 'rules',
|
|
42
|
+
maxFileSize: 100 * 1024,
|
|
43
|
+
maxTotalSize: 500 * 1024,
|
|
44
|
+
maxImportDepth: 5,
|
|
45
|
+
};
|
|
6
46
|
//# sourceMappingURL=types.js.map
|
package/dist/memory/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkDH,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,UAAU;IACV,eAAe,EAAE,UAAU;IAC3B,oBAAoB,EAAE,gBAAgB;IACtC,UAAU,EAAE,UAAU;IAEtB,SAAS;IACT,cAAc,EAAE,WAAW;IAC3B,mBAAmB,EAAE,iBAAiB;IACtC,SAAS,EAAE,SAAS;IAEpB,SAAS;IACT,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,GAAG,GAAG,IAAI,EAAE,QAAQ;IACjC,YAAY,EAAE,GAAG,GAAG,IAAI,EAAE,QAAQ;IAClC,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe,EAAE,UAAU;IAC3B,gBAAgB,EAAE,WAAW;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,qBAAqB,EAAE,iBAAiB;IACxC,cAAc,EAAE,UAAU;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,UAAU;IAC3B,gBAAgB,EAAE,SAAS;IAC3B,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,GAAG,GAAG,IAAI;IACvB,YAAY,EAAE,GAAG,GAAG,IAAI;IACxB,cAAc,EAAE,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission Audit - Log permission decisions for transparency
|
|
3
|
+
*
|
|
4
|
+
* Maintains an in-memory audit log with optional file persistence.
|
|
5
|
+
* Useful for debugging, security review, and compliance.
|
|
6
|
+
*/
|
|
7
|
+
import type { PermissionAuditEntry, AuditDecision } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Permission Audit Logger
|
|
10
|
+
*/
|
|
11
|
+
export declare class PermissionAudit {
|
|
12
|
+
private entries;
|
|
13
|
+
private persistToFile;
|
|
14
|
+
private filePath;
|
|
15
|
+
constructor(options?: {
|
|
16
|
+
persistToFile?: boolean;
|
|
17
|
+
auditDir?: string;
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Log a permission decision
|
|
21
|
+
*/
|
|
22
|
+
log(tool: string, input: unknown, decision: AuditDecision, reason: string, options?: {
|
|
23
|
+
matchedRule?: string;
|
|
24
|
+
sessionId?: string;
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Append entry to file
|
|
28
|
+
*/
|
|
29
|
+
private appendToFile;
|
|
30
|
+
/**
|
|
31
|
+
* Get recent audit entries
|
|
32
|
+
*/
|
|
33
|
+
getRecent(count?: number): PermissionAuditEntry[];
|
|
34
|
+
/**
|
|
35
|
+
* Get all entries in memory
|
|
36
|
+
*/
|
|
37
|
+
getAll(): PermissionAuditEntry[];
|
|
38
|
+
/**
|
|
39
|
+
* Get entries by tool
|
|
40
|
+
*/
|
|
41
|
+
getByTool(tool: string): PermissionAuditEntry[];
|
|
42
|
+
/**
|
|
43
|
+
* Get entries by decision
|
|
44
|
+
*/
|
|
45
|
+
getByDecision(decision: AuditDecision): PermissionAuditEntry[];
|
|
46
|
+
/**
|
|
47
|
+
* Get entries by session
|
|
48
|
+
*/
|
|
49
|
+
getBySession(sessionId: string): PermissionAuditEntry[];
|
|
50
|
+
/**
|
|
51
|
+
* Get statistics
|
|
52
|
+
*/
|
|
53
|
+
getStats(): {
|
|
54
|
+
total: number;
|
|
55
|
+
allowed: number;
|
|
56
|
+
denied: number;
|
|
57
|
+
confirmed: number;
|
|
58
|
+
rejected: number;
|
|
59
|
+
byTool: Record<string, number>;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Clear in-memory entries
|
|
63
|
+
*/
|
|
64
|
+
clear(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Load entries from file
|
|
67
|
+
*/
|
|
68
|
+
loadFromFile(): Promise<PermissionAuditEntry[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Clear file entries
|
|
71
|
+
*/
|
|
72
|
+
clearFile(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Format entry for display
|
|
75
|
+
*/
|
|
76
|
+
formatEntry(entry: PermissionAuditEntry): string;
|
|
77
|
+
/**
|
|
78
|
+
* Format entries as table
|
|
79
|
+
*/
|
|
80
|
+
formatTable(entries: PermissionAuditEntry[]): string;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/permissions/audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkDtE;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;IAMxE;;OAEG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GACL,OAAO,CAAC,IAAI,CAAC;IAyBhB;;OAEG;YACW,YAAY;IAkC1B;;OAEG;IACH,SAAS,CAAC,KAAK,GAAE,MAAW,GAAG,oBAAoB,EAAE;IAIrD;;OAEG;IACH,MAAM,IAAI,oBAAoB,EAAE;IAIhC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAI/C;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,oBAAoB,EAAE;IAI9D;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAIvD;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC;IAkCD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IASrD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM;IAahD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM;CAOrD"}
|