gencode-ai 0.1.1 → 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.
Files changed (263) hide show
  1. package/.gencode/settings.local.json +7 -0
  2. package/README.md +11 -11
  3. package/dist/agent/agent.d.ts +42 -1
  4. package/dist/agent/agent.d.ts.map +1 -1
  5. package/dist/agent/agent.js +82 -15
  6. package/dist/agent/agent.js.map +1 -1
  7. package/dist/cli/components/App.d.ts +8 -1
  8. package/dist/cli/components/App.d.ts.map +1 -1
  9. package/dist/cli/components/App.js +231 -29
  10. package/dist/cli/components/App.js.map +1 -1
  11. package/dist/cli/components/CommandSuggestions.d.ts.map +1 -1
  12. package/dist/cli/components/CommandSuggestions.js +2 -0
  13. package/dist/cli/components/CommandSuggestions.js.map +1 -1
  14. package/dist/cli/components/Header.d.ts +1 -1
  15. package/dist/cli/components/Header.d.ts.map +1 -1
  16. package/dist/cli/components/Header.js +4 -6
  17. package/dist/cli/components/Header.js.map +1 -1
  18. package/dist/cli/components/Logo.d.ts +1 -0
  19. package/dist/cli/components/Logo.d.ts.map +1 -1
  20. package/dist/cli/components/Logo.js +16 -3
  21. package/dist/cli/components/Logo.js.map +1 -1
  22. package/dist/cli/components/Messages.d.ts +4 -4
  23. package/dist/cli/components/Messages.d.ts.map +1 -1
  24. package/dist/cli/components/Messages.js +51 -25
  25. package/dist/cli/components/Messages.js.map +1 -1
  26. package/dist/cli/components/PermissionPrompt.d.ts +60 -0
  27. package/dist/cli/components/PermissionPrompt.d.ts.map +1 -0
  28. package/dist/cli/components/PermissionPrompt.js +192 -0
  29. package/dist/cli/components/PermissionPrompt.js.map +1 -0
  30. package/dist/cli/components/ProviderManager.js +3 -3
  31. package/dist/cli/components/ProviderManager.js.map +1 -1
  32. package/dist/cli/components/Spinner.d.ts +7 -2
  33. package/dist/cli/components/Spinner.d.ts.map +1 -1
  34. package/dist/cli/components/Spinner.js +116 -25
  35. package/dist/cli/components/Spinner.js.map +1 -1
  36. package/dist/cli/components/TodoList.d.ts +7 -0
  37. package/dist/cli/components/TodoList.d.ts.map +1 -0
  38. package/dist/cli/components/TodoList.js +34 -0
  39. package/dist/cli/components/TodoList.js.map +1 -0
  40. package/dist/cli/components/index.d.ts +1 -0
  41. package/dist/cli/components/index.d.ts.map +1 -1
  42. package/dist/cli/components/index.js +1 -0
  43. package/dist/cli/components/index.js.map +1 -1
  44. package/dist/cli/index.js +47 -7
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/config/index.d.ts +13 -4
  47. package/dist/config/index.d.ts.map +1 -1
  48. package/dist/config/index.js +18 -3
  49. package/dist/config/index.js.map +1 -1
  50. package/dist/config/levels.d.ts +49 -0
  51. package/dist/config/levels.d.ts.map +1 -0
  52. package/dist/config/levels.js +222 -0
  53. package/dist/config/levels.js.map +1 -0
  54. package/dist/config/loader.d.ts +46 -0
  55. package/dist/config/loader.d.ts.map +1 -0
  56. package/dist/config/loader.js +153 -0
  57. package/dist/config/loader.js.map +1 -0
  58. package/dist/config/manager.d.ts +115 -15
  59. package/dist/config/manager.d.ts.map +1 -1
  60. package/dist/config/manager.js +260 -34
  61. package/dist/config/manager.js.map +1 -1
  62. package/dist/config/manager.test.d.ts +5 -0
  63. package/dist/config/manager.test.d.ts.map +1 -0
  64. package/dist/config/manager.test.js +192 -0
  65. package/dist/config/manager.test.js.map +1 -0
  66. package/dist/config/merger.d.ts +56 -0
  67. package/dist/config/merger.d.ts.map +1 -0
  68. package/dist/config/merger.js +177 -0
  69. package/dist/config/merger.js.map +1 -0
  70. package/dist/config/test-utils.d.ts +24 -0
  71. package/dist/config/test-utils.d.ts.map +1 -0
  72. package/dist/config/test-utils.js +55 -0
  73. package/dist/config/test-utils.js.map +1 -0
  74. package/dist/config/types.d.ts +78 -9
  75. package/dist/config/types.d.ts.map +1 -1
  76. package/dist/config/types.js +52 -2
  77. package/dist/config/types.js.map +1 -1
  78. package/dist/memory/import-resolver.d.ts +46 -0
  79. package/dist/memory/import-resolver.d.ts.map +1 -0
  80. package/dist/memory/import-resolver.js +117 -0
  81. package/dist/memory/import-resolver.js.map +1 -0
  82. package/dist/memory/index.d.ts +7 -6
  83. package/dist/memory/index.d.ts.map +1 -1
  84. package/dist/memory/index.js +7 -5
  85. package/dist/memory/index.js.map +1 -1
  86. package/dist/memory/init-prompt.d.ts +22 -0
  87. package/dist/memory/init-prompt.d.ts.map +1 -0
  88. package/dist/memory/init-prompt.js +103 -0
  89. package/dist/memory/init-prompt.js.map +1 -0
  90. package/dist/memory/memory-manager.d.ts +119 -0
  91. package/dist/memory/memory-manager.d.ts.map +1 -0
  92. package/dist/memory/memory-manager.js +587 -0
  93. package/dist/memory/memory-manager.js.map +1 -0
  94. package/dist/memory/rules-parser.d.ts +38 -0
  95. package/dist/memory/rules-parser.d.ts.map +1 -0
  96. package/dist/memory/rules-parser.js +69 -0
  97. package/dist/memory/rules-parser.js.map +1 -0
  98. package/dist/memory/test-utils.d.ts +20 -0
  99. package/dist/memory/test-utils.d.ts.map +1 -0
  100. package/dist/memory/test-utils.js +44 -0
  101. package/dist/memory/test-utils.js.map +1 -0
  102. package/dist/memory/types.d.ts +70 -63
  103. package/dist/memory/types.d.ts.map +1 -1
  104. package/dist/memory/types.js +42 -2
  105. package/dist/memory/types.js.map +1 -1
  106. package/dist/permissions/audit.d.ts +82 -0
  107. package/dist/permissions/audit.d.ts.map +1 -0
  108. package/dist/permissions/audit.js +229 -0
  109. package/dist/permissions/audit.js.map +1 -0
  110. package/dist/permissions/index.d.ts +11 -1
  111. package/dist/permissions/index.d.ts.map +1 -1
  112. package/dist/permissions/index.js +15 -0
  113. package/dist/permissions/index.js.map +1 -1
  114. package/dist/permissions/manager.d.ts +149 -13
  115. package/dist/permissions/manager.d.ts.map +1 -1
  116. package/dist/permissions/manager.js +480 -35
  117. package/dist/permissions/manager.js.map +1 -1
  118. package/dist/permissions/manager.test.d.ts +5 -0
  119. package/dist/permissions/manager.test.d.ts.map +1 -0
  120. package/dist/permissions/manager.test.js +213 -0
  121. package/dist/permissions/manager.test.js.map +1 -0
  122. package/dist/permissions/persistence.d.ts +74 -0
  123. package/dist/permissions/persistence.d.ts.map +1 -0
  124. package/dist/permissions/persistence.js +248 -0
  125. package/dist/permissions/persistence.js.map +1 -0
  126. package/dist/permissions/persistence.test.d.ts +5 -0
  127. package/dist/permissions/persistence.test.d.ts.map +1 -0
  128. package/dist/permissions/persistence.test.js +171 -0
  129. package/dist/permissions/persistence.test.js.map +1 -0
  130. package/dist/permissions/prompt-matcher.d.ts +64 -0
  131. package/dist/permissions/prompt-matcher.d.ts.map +1 -0
  132. package/dist/permissions/prompt-matcher.js +415 -0
  133. package/dist/permissions/prompt-matcher.js.map +1 -0
  134. package/dist/permissions/prompt-matcher.test.d.ts +5 -0
  135. package/dist/permissions/prompt-matcher.test.d.ts.map +1 -0
  136. package/dist/permissions/prompt-matcher.test.js +107 -0
  137. package/dist/permissions/prompt-matcher.test.js.map +1 -0
  138. package/dist/permissions/types.d.ts +157 -0
  139. package/dist/permissions/types.d.ts.map +1 -1
  140. package/dist/permissions/types.js +43 -8
  141. package/dist/permissions/types.js.map +1 -1
  142. package/dist/prompts/index.d.ts +92 -0
  143. package/dist/prompts/index.d.ts.map +1 -0
  144. package/dist/prompts/index.js +241 -0
  145. package/dist/prompts/index.js.map +1 -0
  146. package/dist/tools/builtin/bash.d.ts.map +1 -1
  147. package/dist/tools/builtin/bash.js +2 -1
  148. package/dist/tools/builtin/bash.js.map +1 -1
  149. package/dist/tools/builtin/edit.d.ts.map +1 -1
  150. package/dist/tools/builtin/edit.js +2 -1
  151. package/dist/tools/builtin/edit.js.map +1 -1
  152. package/dist/tools/builtin/glob.d.ts.map +1 -1
  153. package/dist/tools/builtin/glob.js +2 -1
  154. package/dist/tools/builtin/glob.js.map +1 -1
  155. package/dist/tools/builtin/grep.d.ts.map +1 -1
  156. package/dist/tools/builtin/grep.js +2 -1
  157. package/dist/tools/builtin/grep.js.map +1 -1
  158. package/dist/tools/builtin/read.d.ts.map +1 -1
  159. package/dist/tools/builtin/read.js +2 -1
  160. package/dist/tools/builtin/read.js.map +1 -1
  161. package/dist/tools/builtin/todowrite.d.ts +15 -0
  162. package/dist/tools/builtin/todowrite.d.ts.map +1 -0
  163. package/dist/tools/builtin/todowrite.js +88 -0
  164. package/dist/tools/builtin/todowrite.js.map +1 -0
  165. package/dist/tools/builtin/webfetch.d.ts.map +1 -1
  166. package/dist/tools/builtin/webfetch.js +2 -5
  167. package/dist/tools/builtin/webfetch.js.map +1 -1
  168. package/dist/tools/builtin/websearch.d.ts.map +1 -1
  169. package/dist/tools/builtin/websearch.js +2 -16
  170. package/dist/tools/builtin/websearch.js.map +1 -1
  171. package/dist/tools/builtin/write.d.ts.map +1 -1
  172. package/dist/tools/builtin/write.js +2 -1
  173. package/dist/tools/builtin/write.js.map +1 -1
  174. package/dist/tools/index.d.ts +7 -0
  175. package/dist/tools/index.d.ts.map +1 -1
  176. package/dist/tools/index.js +4 -0
  177. package/dist/tools/index.js.map +1 -1
  178. package/dist/tools/types.d.ts +22 -0
  179. package/dist/tools/types.d.ts.map +1 -1
  180. package/dist/tools/types.js +8 -0
  181. package/dist/tools/types.js.map +1 -1
  182. package/docs/config-system-comparison.md +707 -0
  183. package/docs/memory-system.md +238 -0
  184. package/docs/permissions.md +368 -0
  185. package/docs/proposals/0005-todo-system.md +350 -85
  186. package/docs/proposals/0006-memory-system.md +11 -10
  187. package/docs/proposals/0012-ask-user-question.md +941 -206
  188. package/docs/proposals/0023-permission-enhancements.md +61 -2
  189. package/docs/proposals/0041-configuration-system.md +33 -2
  190. package/docs/proposals/0042-prompt-optimization.md +866 -0
  191. package/docs/proposals/README.md +6 -5
  192. package/jest.config.js +26 -0
  193. package/package.json +8 -2
  194. package/src/agent/agent.ts +111 -16
  195. package/src/cli/components/App.tsx +309 -36
  196. package/src/cli/components/CommandSuggestions.tsx +2 -0
  197. package/src/cli/components/Header.tsx +11 -17
  198. package/src/cli/components/Logo.tsx +76 -9
  199. package/src/cli/components/Messages.tsx +73 -53
  200. package/src/cli/components/PermissionPrompt.tsx +388 -0
  201. package/src/cli/components/ProviderManager.tsx +5 -5
  202. package/src/cli/components/Spinner.tsx +138 -25
  203. package/src/cli/components/TodoList.tsx +54 -0
  204. package/src/cli/components/index.ts +6 -0
  205. package/src/cli/index.tsx +54 -6
  206. package/src/config/index.ts +78 -4
  207. package/src/config/levels.test.ts +163 -0
  208. package/src/config/levels.ts +285 -0
  209. package/src/config/loader.test.ts +120 -0
  210. package/src/config/loader.ts +178 -0
  211. package/src/config/manager.test.ts +215 -0
  212. package/src/config/manager.ts +328 -40
  213. package/src/config/merger.test.ts +360 -0
  214. package/src/config/merger.ts +221 -0
  215. package/src/config/test-utils.ts +79 -0
  216. package/src/config/types.ts +152 -9
  217. package/src/memory/import-resolver.test.ts +117 -0
  218. package/src/memory/import-resolver.ts +149 -0
  219. package/src/memory/index.ts +11 -0
  220. package/src/memory/init-prompt.ts +113 -0
  221. package/src/memory/memory-manager.test.ts +198 -0
  222. package/src/memory/memory-manager.ts +716 -0
  223. package/src/memory/rules-parser.test.ts +182 -0
  224. package/src/memory/rules-parser.ts +82 -0
  225. package/src/memory/test-utils.ts +60 -0
  226. package/src/memory/types.ts +119 -0
  227. package/src/permissions/audit.ts +284 -0
  228. package/src/permissions/index.ts +20 -1
  229. package/src/permissions/manager.test.ts +260 -0
  230. package/src/permissions/manager.ts +592 -40
  231. package/src/permissions/persistence.test.ts +220 -0
  232. package/src/permissions/persistence.ts +301 -0
  233. package/src/permissions/prompt-matcher.test.ts +213 -0
  234. package/src/permissions/prompt-matcher.ts +472 -0
  235. package/src/permissions/types.ts +236 -8
  236. package/src/prompts/index.test.ts +279 -0
  237. package/src/prompts/index.ts +306 -0
  238. package/src/prompts/system/anthropic.txt +29 -0
  239. package/src/prompts/system/base.txt +124 -0
  240. package/src/prompts/system/gemini.txt +35 -0
  241. package/src/prompts/system/generic.txt +128 -0
  242. package/src/prompts/system/openai.txt +29 -0
  243. package/src/prompts/tools/bash.txt +60 -0
  244. package/src/prompts/tools/edit.txt +29 -0
  245. package/src/prompts/tools/glob.txt +35 -0
  246. package/src/prompts/tools/grep.txt +43 -0
  247. package/src/prompts/tools/read.txt +22 -0
  248. package/src/prompts/tools/todowrite.txt +71 -0
  249. package/src/prompts/tools/webfetch.txt +34 -0
  250. package/src/prompts/tools/websearch.txt +41 -0
  251. package/src/prompts/tools/write.txt +23 -0
  252. package/src/tools/builtin/bash.ts +2 -1
  253. package/src/tools/builtin/edit.ts +2 -1
  254. package/src/tools/builtin/glob.ts +2 -1
  255. package/src/tools/builtin/grep.ts +2 -1
  256. package/src/tools/builtin/read.ts +2 -1
  257. package/src/tools/builtin/todowrite.ts +102 -0
  258. package/src/tools/builtin/webfetch.ts +2 -5
  259. package/src/tools/builtin/websearch.ts +2 -16
  260. package/src/tools/builtin/write.ts +2 -1
  261. package/src/tools/index.ts +4 -0
  262. package/src/tools/types.ts +12 -0
  263. package/tsconfig.json +1 -1
@@ -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"}
@@ -1,74 +1,81 @@
1
1
  /**
2
2
  * Memory System Types
3
- * Types for the memory/context management system
4
- */
5
- /**
6
- * Type of memory file based on its location
7
- */
8
- export type MemoryType = 'user' | 'project' | 'local' | 'rules';
9
- /**
10
- * Represents a loaded memory file
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
- /** Type of memory (user, project, local, rules) */
18
- type: MemoryType;
19
- /** Priority for merging (lower = loaded first, higher = takes precedence) */
20
- priority: number;
21
- /** Original filename */
22
- filename: string;
21
+ level: MemoryLevel;
22
+ namespace: MemoryNamespace;
23
+ loadedAt: Date;
24
+ resolvedImports: string[];
25
+ enforced?: boolean;
23
26
  }
24
- /**
25
- * Result of project analysis for /init command
26
- */
27
- export interface ProjectAnalysis {
28
- /** Project name (from package.json, go.mod, etc.) */
29
- name: string;
30
- /** Detected project type */
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
- * Options for the /init command
48
- */
49
- export interface InitOptions {
50
- /** Working directory to analyze */
51
- cwd: string;
52
- /** Force overwrite without prompting */
53
- force?: boolean;
54
- /** Output file path (default: AGENT.md in cwd) */
55
- output?: string;
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
- * Result from running /init
59
- */
60
- export interface InitResult {
61
- /** Whether initialization succeeded */
62
- success: boolean;
63
- /** Path to created/updated file */
64
- filePath?: string;
65
- /** User-friendly message */
66
- message: string;
67
- /** Whether file was created (true) or updated (false) */
68
- created?: boolean;
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;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,IAAI,EAAE,UAAU,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7D,2CAA2C;IAC3C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yCAAyC;IACzC,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,gCAAgC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;CAC9E;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC"}
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"}
@@ -1,6 +1,46 @@
1
1
  /**
2
2
  * Memory System Types
3
- * Types for the memory/context management system
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
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
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"}