@jclaw/core 0.1.0

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 (189) hide show
  1. package/dist/auto-skill/generator.d.ts +30 -0
  2. package/dist/auto-skill/generator.d.ts.map +1 -0
  3. package/dist/auto-skill/generator.js +262 -0
  4. package/dist/auto-skill/generator.js.map +1 -0
  5. package/dist/auto-skill/index.d.ts +11 -0
  6. package/dist/auto-skill/index.d.ts.map +1 -0
  7. package/dist/auto-skill/index.js +10 -0
  8. package/dist/auto-skill/index.js.map +1 -0
  9. package/dist/auto-skill/installer.d.ts +44 -0
  10. package/dist/auto-skill/installer.d.ts.map +1 -0
  11. package/dist/auto-skill/installer.js +201 -0
  12. package/dist/auto-skill/installer.js.map +1 -0
  13. package/dist/auto-skill/types.d.ts +179 -0
  14. package/dist/auto-skill/types.d.ts.map +1 -0
  15. package/dist/auto-skill/types.js +9 -0
  16. package/dist/auto-skill/types.js.map +1 -0
  17. package/dist/cli/commands/config.d.ts +16 -0
  18. package/dist/cli/commands/config.d.ts.map +1 -0
  19. package/dist/cli/commands/config.js +119 -0
  20. package/dist/cli/commands/config.js.map +1 -0
  21. package/dist/cli/commands/exec.d.ts +12 -0
  22. package/dist/cli/commands/exec.d.ts.map +1 -0
  23. package/dist/cli/commands/exec.js +41 -0
  24. package/dist/cli/commands/exec.js.map +1 -0
  25. package/dist/cli/index.d.ts +10 -0
  26. package/dist/cli/index.d.ts.map +1 -0
  27. package/dist/cli/index.js +91 -0
  28. package/dist/cli/index.js.map +1 -0
  29. package/dist/cli/run.d.ts +9 -0
  30. package/dist/cli/run.d.ts.map +1 -0
  31. package/dist/cli/run.js +13 -0
  32. package/dist/cli/run.js.map +1 -0
  33. package/dist/context/index.d.ts +6 -0
  34. package/dist/context/index.d.ts.map +1 -0
  35. package/dist/context/index.js +12 -0
  36. package/dist/context/index.js.map +1 -0
  37. package/dist/context/memsearch-client.d.ts +34 -0
  38. package/dist/context/memsearch-client.d.ts.map +1 -0
  39. package/dist/context/memsearch-client.js +182 -0
  40. package/dist/context/memsearch-client.js.map +1 -0
  41. package/dist/context/mock-client.d.ts +116 -0
  42. package/dist/context/mock-client.d.ts.map +1 -0
  43. package/dist/context/mock-client.js +150 -0
  44. package/dist/context/mock-client.js.map +1 -0
  45. package/dist/context/openviking-client.d.ts +87 -0
  46. package/dist/context/openviking-client.d.ts.map +1 -0
  47. package/dist/context/openviking-client.js +166 -0
  48. package/dist/context/openviking-client.js.map +1 -0
  49. package/dist/context/openviking-mcp-client.d.ts +29 -0
  50. package/dist/context/openviking-mcp-client.d.ts.map +1 -0
  51. package/dist/context/openviking-mcp-client.js +81 -0
  52. package/dist/context/openviking-mcp-client.js.map +1 -0
  53. package/dist/context/simple-memory-client.d.ts +43 -0
  54. package/dist/context/simple-memory-client.d.ts.map +1 -0
  55. package/dist/context/simple-memory-client.enhanced.d.ts +39 -0
  56. package/dist/context/simple-memory-client.enhanced.d.ts.map +1 -0
  57. package/dist/context/simple-memory-client.enhanced.js +207 -0
  58. package/dist/context/simple-memory-client.enhanced.js.map +1 -0
  59. package/dist/context/simple-memory-client.js +270 -0
  60. package/dist/context/simple-memory-client.js.map +1 -0
  61. package/dist/evolution/continuous.d.ts +127 -0
  62. package/dist/evolution/continuous.d.ts.map +1 -0
  63. package/dist/evolution/continuous.js +238 -0
  64. package/dist/evolution/continuous.js.map +1 -0
  65. package/dist/evolution/engine.d.ts +97 -0
  66. package/dist/evolution/engine.d.ts.map +1 -0
  67. package/dist/evolution/engine.js +187 -0
  68. package/dist/evolution/engine.js.map +1 -0
  69. package/dist/evolution/evolver-adapter.d.ts +104 -0
  70. package/dist/evolution/evolver-adapter.d.ts.map +1 -0
  71. package/dist/evolution/evolver-adapter.js +227 -0
  72. package/dist/evolution/evolver-adapter.js.map +1 -0
  73. package/dist/evolution/index.d.ts +9 -0
  74. package/dist/evolution/index.d.ts.map +1 -0
  75. package/dist/evolution/index.js +8 -0
  76. package/dist/evolution/index.js.map +1 -0
  77. package/dist/evolution/memory.d.ts +106 -0
  78. package/dist/evolution/memory.d.ts.map +1 -0
  79. package/dist/evolution/memory.js +232 -0
  80. package/dist/evolution/memory.js.map +1 -0
  81. package/dist/evolution/mutation.d.ts +66 -0
  82. package/dist/evolution/mutation.d.ts.map +1 -0
  83. package/dist/evolution/mutation.js +139 -0
  84. package/dist/evolution/mutation.js.map +1 -0
  85. package/dist/evolution/sandbox.d.ts +96 -0
  86. package/dist/evolution/sandbox.d.ts.map +1 -0
  87. package/dist/evolution/sandbox.js +194 -0
  88. package/dist/evolution/sandbox.js.map +1 -0
  89. package/dist/evolution/types.d.ts +93 -0
  90. package/dist/evolution/types.d.ts.map +1 -0
  91. package/dist/evolution/types.js +9 -0
  92. package/dist/evolution/types.js.map +1 -0
  93. package/dist/executor/index.d.ts +10 -0
  94. package/dist/executor/index.d.ts.map +1 -0
  95. package/dist/executor/index.js +10 -0
  96. package/dist/executor/index.js.map +1 -0
  97. package/dist/executor/interface.d.ts +9 -0
  98. package/dist/executor/interface.d.ts.map +1 -0
  99. package/dist/executor/interface.js +9 -0
  100. package/dist/executor/interface.js.map +1 -0
  101. package/dist/executor/local.d.ts +36 -0
  102. package/dist/executor/local.d.ts.map +1 -0
  103. package/dist/executor/local.js +95 -0
  104. package/dist/executor/local.js.map +1 -0
  105. package/dist/extension-system/capability-router.d.ts +106 -0
  106. package/dist/extension-system/capability-router.d.ts.map +1 -0
  107. package/dist/extension-system/capability-router.js +167 -0
  108. package/dist/extension-system/capability-router.js.map +1 -0
  109. package/dist/extension-system/index.d.ts +11 -0
  110. package/dist/extension-system/index.d.ts.map +1 -0
  111. package/dist/extension-system/index.js +11 -0
  112. package/dist/extension-system/index.js.map +1 -0
  113. package/dist/extension-system/loader.d.ts +93 -0
  114. package/dist/extension-system/loader.d.ts.map +1 -0
  115. package/dist/extension-system/loader.js +245 -0
  116. package/dist/extension-system/loader.js.map +1 -0
  117. package/dist/extension-system/registry.d.ts +112 -0
  118. package/dist/extension-system/registry.d.ts.map +1 -0
  119. package/dist/extension-system/registry.js +161 -0
  120. package/dist/extension-system/registry.js.map +1 -0
  121. package/dist/index.d.ts +14 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +20 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/network/client.d.ts +130 -0
  126. package/dist/network/client.d.ts.map +1 -0
  127. package/dist/network/client.js +230 -0
  128. package/dist/network/client.js.map +1 -0
  129. package/dist/network/index.d.ts +10 -0
  130. package/dist/network/index.d.ts.map +1 -0
  131. package/dist/network/index.js +10 -0
  132. package/dist/network/index.js.map +1 -0
  133. package/dist/network/protocol.d.ts +159 -0
  134. package/dist/network/protocol.d.ts.map +1 -0
  135. package/dist/network/protocol.js +118 -0
  136. package/dist/network/protocol.js.map +1 -0
  137. package/dist/runtime/agent.d.ts +124 -0
  138. package/dist/runtime/agent.d.ts.map +1 -0
  139. package/dist/runtime/agent.js +286 -0
  140. package/dist/runtime/agent.js.map +1 -0
  141. package/dist/runtime/agent_fixed.d.ts +39 -0
  142. package/dist/runtime/agent_fixed.d.ts.map +1 -0
  143. package/dist/runtime/agent_fixed.js +193 -0
  144. package/dist/runtime/agent_fixed.js.map +1 -0
  145. package/dist/runtime/index.d.ts +11 -0
  146. package/dist/runtime/index.d.ts.map +1 -0
  147. package/dist/runtime/index.js +11 -0
  148. package/dist/runtime/index.js.map +1 -0
  149. package/dist/runtime/llm-client.d.ts +108 -0
  150. package/dist/runtime/llm-client.d.ts.map +1 -0
  151. package/dist/runtime/llm-client.js +125 -0
  152. package/dist/runtime/llm-client.js.map +1 -0
  153. package/dist/runtime/task-executor.d.ts +92 -0
  154. package/dist/runtime/task-executor.d.ts.map +1 -0
  155. package/dist/runtime/task-executor.js +203 -0
  156. package/dist/runtime/task-executor.js.map +1 -0
  157. package/dist/skill-sh/adapter.d.ts +40 -0
  158. package/dist/skill-sh/adapter.d.ts.map +1 -0
  159. package/dist/skill-sh/adapter.js +258 -0
  160. package/dist/skill-sh/adapter.js.map +1 -0
  161. package/dist/skill-sh/converter.d.ts +37 -0
  162. package/dist/skill-sh/converter.d.ts.map +1 -0
  163. package/dist/skill-sh/converter.js +175 -0
  164. package/dist/skill-sh/converter.js.map +1 -0
  165. package/dist/skill-sh/discovery.d.ts +29 -0
  166. package/dist/skill-sh/discovery.d.ts.map +1 -0
  167. package/dist/skill-sh/discovery.js +189 -0
  168. package/dist/skill-sh/discovery.js.map +1 -0
  169. package/dist/skill-sh/index.d.ts +19 -0
  170. package/dist/skill-sh/index.d.ts.map +1 -0
  171. package/dist/skill-sh/index.js +20 -0
  172. package/dist/skill-sh/index.js.map +1 -0
  173. package/dist/skill-sh/quality.d.ts +51 -0
  174. package/dist/skill-sh/quality.d.ts.map +1 -0
  175. package/dist/skill-sh/quality.js +146 -0
  176. package/dist/skill-sh/quality.js.map +1 -0
  177. package/dist/skill-sh/registry.d.ts +58 -0
  178. package/dist/skill-sh/registry.d.ts.map +1 -0
  179. package/dist/skill-sh/registry.js +118 -0
  180. package/dist/skill-sh/registry.js.map +1 -0
  181. package/dist/skill-sh/types.d.ts +228 -0
  182. package/dist/skill-sh/types.d.ts.map +1 -0
  183. package/dist/skill-sh/types.js +9 -0
  184. package/dist/skill-sh/types.js.map +1 -0
  185. package/dist/types.d.ts +199 -0
  186. package/dist/types.d.ts.map +1 -0
  187. package/dist/types.js +10 -0
  188. package/dist/types.js.map +1 -0
  189. package/package.json +41 -0
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Sandbox Validator
3
+ *
4
+ * Validates mutations in an isolated environment.
5
+ *
6
+ * @module @jclaw/core/evolution/sandbox
7
+ */
8
+ import path from 'path';
9
+ import fs from 'fs/promises';
10
+ import os from 'os';
11
+ /**
12
+ * Default test command template
13
+ */
14
+ const DEFAULT_TEST_COMMAND = 'npm test -- --passWithNoTests';
15
+ /**
16
+ * Sandbox Validator
17
+ *
18
+ * Validates mutations by running tests in an isolated environment.
19
+ * Supports both local and docker execution modes.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const sandbox = new SandboxValidator({
24
+ * executor: localExecutor,
25
+ * testCommand: 'npm test'
26
+ * });
27
+ *
28
+ * const result = await sandbox.validate(mutation);
29
+ * if (result.passed) {
30
+ * console.log('Mutation is safe to apply');
31
+ * }
32
+ * ```
33
+ */
34
+ export class SandboxValidator {
35
+ config;
36
+ /**
37
+ * Create a new sandbox validator.
38
+ *
39
+ * @param config - Configuration options
40
+ */
41
+ constructor(config) {
42
+ this.config = {
43
+ timeout: 30000,
44
+ tempDir: os.tmpdir(),
45
+ testCommand: DEFAULT_TEST_COMMAND,
46
+ verbose: false,
47
+ ...config,
48
+ };
49
+ }
50
+ /**
51
+ * Validate a mutation in the sandbox.
52
+ *
53
+ * @param mutation - The mutation to validate
54
+ * @param targetPath - Path to the target file to mutate (optional)
55
+ * @returns Validation result
56
+ */
57
+ async validate(mutation, targetPath) {
58
+ const startTime = Date.now();
59
+ try {
60
+ // Create sandbox directory
61
+ const sandboxDir = await this.createSandbox();
62
+ // Apply mutation to sandbox
63
+ if (targetPath) {
64
+ await this.applyMutation(mutation, sandboxDir, targetPath);
65
+ }
66
+ else {
67
+ // Create a test file for the mutation
68
+ const testFile = path.join(sandboxDir, 'mutation-test.ts');
69
+ await fs.writeFile(testFile, mutation.mutated, 'utf-8');
70
+ }
71
+ // Run validation tests
72
+ const result = await this.runTests(sandboxDir);
73
+ // Cleanup sandbox
74
+ await this.cleanup(sandboxDir);
75
+ return result;
76
+ }
77
+ catch (error) {
78
+ const duration = Date.now() - startTime;
79
+ return {
80
+ passed: false,
81
+ errors: [error instanceof Error ? error.message : 'Unknown error'],
82
+ duration,
83
+ };
84
+ }
85
+ }
86
+ /**
87
+ * Validate multiple mutations.
88
+ *
89
+ * @param mutations - Mutations to validate
90
+ * @param targetPath - Target file path
91
+ * @returns Array of validation results
92
+ */
93
+ async validateBatch(mutations, targetPath) {
94
+ const results = new Map();
95
+ for (const mutation of mutations) {
96
+ const result = await this.validate(mutation, targetPath);
97
+ results.set(mutation.id, result);
98
+ }
99
+ return results;
100
+ }
101
+ /**
102
+ * Create a sandbox directory.
103
+ */
104
+ async createSandbox() {
105
+ const sandboxDir = path.join(this.config.tempDir, `jclaw-sandbox-${Date.now()}-${Math.random().toString(36).slice(2)}`);
106
+ await fs.mkdir(sandboxDir, { recursive: true });
107
+ this.log(`Created sandbox: ${sandboxDir}`);
108
+ return sandboxDir;
109
+ }
110
+ /**
111
+ * Apply mutation to the sandbox.
112
+ */
113
+ async applyMutation(mutation, sandboxDir, targetPath) {
114
+ // Get relative path
115
+ const fileName = path.basename(targetPath);
116
+ const sandboxTarget = path.join(sandboxDir, fileName);
117
+ // Write mutated content
118
+ await fs.writeFile(sandboxTarget, mutation.mutated, 'utf-8');
119
+ this.log(`Applied mutation to: ${sandboxTarget}`);
120
+ }
121
+ /**
122
+ * Run tests in the sandbox.
123
+ */
124
+ async runTests(sandboxDir) {
125
+ const startTime = Date.now();
126
+ const errors = [];
127
+ let output = '';
128
+ try {
129
+ const result = await this.config.executor.execute(this.config.testCommand, {
130
+ cwd: sandboxDir,
131
+ timeout: this.config.timeout,
132
+ });
133
+ output = result.stdout + '\n' + result.stderr;
134
+ if (result.exitCode === 0) {
135
+ this.log('Tests passed');
136
+ return {
137
+ passed: true,
138
+ errors: [],
139
+ output,
140
+ duration: Date.now() - startTime,
141
+ };
142
+ }
143
+ else {
144
+ this.log(`Tests failed with exit code ${result.exitCode}`);
145
+ errors.push(`Test command exited with code ${result.exitCode}`);
146
+ return {
147
+ passed: false,
148
+ errors,
149
+ output,
150
+ duration: Date.now() - startTime,
151
+ };
152
+ }
153
+ }
154
+ catch (error) {
155
+ errors.push(error instanceof Error ? error.message : 'Unknown error');
156
+ return {
157
+ passed: false,
158
+ errors,
159
+ output,
160
+ duration: Date.now() - startTime,
161
+ };
162
+ }
163
+ }
164
+ /**
165
+ * Cleanup sandbox directory.
166
+ */
167
+ async cleanup(sandboxDir) {
168
+ try {
169
+ await fs.rm(sandboxDir, { recursive: true, force: true });
170
+ this.log(`Cleaned up sandbox: ${sandboxDir}`);
171
+ }
172
+ catch (error) {
173
+ this.log(`Warning: Failed to cleanup sandbox: ${error}`);
174
+ }
175
+ }
176
+ /**
177
+ * Log message if verbose mode is enabled.
178
+ */
179
+ log(message) {
180
+ if (this.config.verbose) {
181
+ console.log(`[SandboxValidator] ${message}`);
182
+ }
183
+ }
184
+ }
185
+ /**
186
+ * Create a new sandbox validator.
187
+ *
188
+ * @param config - Configuration options
189
+ * @returns New SandboxValidator instance
190
+ */
191
+ export function createSandbox(config) {
192
+ return new SandboxValidator(config);
193
+ }
194
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/evolution/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;AAkBpB;;GAEG;AACH,MAAM,oBAAoB,GAAG,+BAA+B,CAAC;AAE7D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,gBAAgB;IACV,MAAM,CAAiE;IAExF;;;;OAIG;IACH,YAAY,MAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE;YACpB,WAAW,EAAE,oBAAoB;YACjC,OAAO,EAAE,KAAK;YACd,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAkB,EAAE,UAAmB;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,2BAA2B;YAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE9C,4BAA4B;YAC5B,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;gBAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC;YAED,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE/C,kBAAkB;YAClB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE/B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAClE,QAAQ;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CACjB,SAAqB,EACrB,UAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;QAEpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,iBAAiB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACF,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACzB,QAAkB,EAClB,UAAkB,EAClB,UAAkB;QAElB,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtD,wBAAwB;QACxB,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CAAC,UAAkB;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACzE,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAC7B,CAAC,CAAC;YAEH,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;YAE9C,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzB,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,EAAE;oBACV,MAAM;oBACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACjC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,iCAAiC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChE,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,MAAM;oBACN,MAAM;oBACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACjC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YACtE,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,MAAM;gBACN,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,UAAkB;QACtC,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,GAAG,CAAC,OAAe;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Evolution Types
3
+ *
4
+ * Type definitions for the evolution engine.
5
+ *
6
+ * @module @jclaw/core/evolution/types
7
+ */
8
+ /**
9
+ * Evolution strategy types
10
+ */
11
+ export type EvolutionStrategy = 'repair' | 'optimize' | 'innovate';
12
+ /**
13
+ * Represents a mutation in the evolution process
14
+ */
15
+ export interface Mutation {
16
+ /** Unique identifier for the mutation */
17
+ id: string;
18
+ /** The strategy used to generate this mutation */
19
+ strategy: EvolutionStrategy;
20
+ /** Original code or behavior */
21
+ original: string;
22
+ /** Mutated code or behavior */
23
+ mutated: string;
24
+ /** Description of the change */
25
+ description: string;
26
+ /** Timestamp when mutation was created */
27
+ createdAt: Date;
28
+ /** Fitness score (if evaluated) */
29
+ fitness?: number;
30
+ }
31
+ /**
32
+ * Result of mutation validation in sandbox
33
+ */
34
+ export interface ValidationResult {
35
+ /** Whether the mutation passed validation */
36
+ passed: boolean;
37
+ /** Error messages if validation failed */
38
+ errors: string[];
39
+ /** Output from validation tests */
40
+ output?: string;
41
+ /** Duration of validation in milliseconds */
42
+ duration: number;
43
+ }
44
+ /**
45
+ * Configuration for evolution engine
46
+ */
47
+ export interface EvolutionConfig {
48
+ /** Maximum mutations per evolution cycle */
49
+ maxMutations?: number;
50
+ /** Minimum fitness threshold for accepting mutations */
51
+ minFitness?: number;
52
+ /** Enable sandbox validation */
53
+ enableSandbox?: boolean;
54
+ /** Timeout for sandbox validation in milliseconds */
55
+ sandboxTimeout?: number;
56
+ /** Strategies to use for evolution */
57
+ strategies?: EvolutionStrategy[];
58
+ }
59
+ /**
60
+ * Gene representation for EvoMap integration
61
+ */
62
+ export interface Gene {
63
+ /** Unique gene identifier */
64
+ id: string;
65
+ /** Gene type (behavior, knowledge, skill) */
66
+ type: 'behavior' | 'knowledge' | 'skill';
67
+ /** Gene content/code */
68
+ content: string;
69
+ /** Fitness score */
70
+ fitness: number;
71
+ /** Generation number */
72
+ generation: number;
73
+ /** Parent gene IDs */
74
+ parents: string[];
75
+ /** Creation timestamp */
76
+ createdAt: Date;
77
+ }
78
+ /**
79
+ * Evolution cycle result
80
+ */
81
+ export interface EvolutionResult {
82
+ /** Whether evolution produced any improvements */
83
+ improved: boolean;
84
+ /** Mutations generated in this cycle */
85
+ mutations: Mutation[];
86
+ /** Mutations that passed validation */
87
+ validatedMutations: Mutation[];
88
+ /** Best mutation (if any) */
89
+ bestMutation?: Mutation;
90
+ /** Duration of the evolution cycle */
91
+ duration: number;
92
+ }
93
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/evolution/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,IAAI,CAAC;IAChB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;IACzC,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,uCAAuC;IACvC,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IAC/B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Evolution Types
3
+ *
4
+ * Type definitions for the evolution engine.
5
+ *
6
+ * @module @jclaw/core/evolution/types
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/evolution/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Executor Module
3
+ *
4
+ * Re-exports executor interfaces and implementations.
5
+ *
6
+ * @module @jclaw/core/executor
7
+ */
8
+ export type { Executor, ExecuteOptions, ExecuteResult } from './interface.js';
9
+ export { LocalExecutor, createLocalExecutor } from './local.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Executor Module
3
+ *
4
+ * Re-exports executor interfaces and implementations.
5
+ *
6
+ * @module @jclaw/core/executor
7
+ */
8
+ // Implementations
9
+ export { LocalExecutor, createLocalExecutor } from './local.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Executor Interface Module
3
+ *
4
+ * Re-exports the Executor interface and related types for the command execution system.
5
+ *
6
+ * @module @jclaw/core/executor/interface
7
+ */
8
+ export type { Executor, ExecuteOptions, ExecuteResult } from '../types.js';
9
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/executor/interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Executor Interface Module
3
+ *
4
+ * Re-exports the Executor interface and related types for the command execution system.
5
+ *
6
+ * @module @jclaw/core/executor/interface
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/executor/interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Local Executor Implementation
3
+ *
4
+ * Executes shell commands locally using Node.js spawn.
5
+ * Supports Windows and Unix platforms with timeout control.
6
+ *
7
+ * @module @jclaw/core/executor/local
8
+ */
9
+ import type { Executor, ExecuteOptions, ExecuteResult } from './interface.js';
10
+ /**
11
+ * Local command executor using Node.js spawn
12
+ *
13
+ * Executes shell commands on the local system with support for:
14
+ * - Cross-platform execution (Windows/Unix)
15
+ * - Configurable timeout
16
+ * - Working directory and environment variable customization
17
+ */
18
+ export declare class LocalExecutor implements Executor {
19
+ /** Execution mode identifier */
20
+ readonly mode: "local";
21
+ /**
22
+ * Execute a shell command locally
23
+ *
24
+ * @param command - The command to execute
25
+ * @param options - Execution options (timeout, cwd, env, etc.)
26
+ * @returns Promise resolving to execution result
27
+ */
28
+ execute(command: string, options?: ExecuteOptions): Promise<ExecuteResult>;
29
+ }
30
+ /**
31
+ * Create a new LocalExecutor instance
32
+ *
33
+ * @returns A new LocalExecutor instance
34
+ */
35
+ export declare function createLocalExecutor(): LocalExecutor;
36
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/executor/local.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAO9E;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC5C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC;;;;;;OAMG;IACG,OAAO,CACX,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;CAgE1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Local Executor Implementation
3
+ *
4
+ * Executes shell commands locally using Node.js spawn.
5
+ * Supports Windows and Unix platforms with timeout control.
6
+ *
7
+ * @module @jclaw/core/executor/local
8
+ */
9
+ import { spawn } from 'child_process';
10
+ /**
11
+ * Default timeout for command execution (5 minutes)
12
+ */
13
+ const DEFAULT_TIMEOUT = 5 * 60 * 1000;
14
+ /**
15
+ * Local command executor using Node.js spawn
16
+ *
17
+ * Executes shell commands on the local system with support for:
18
+ * - Cross-platform execution (Windows/Unix)
19
+ * - Configurable timeout
20
+ * - Working directory and environment variable customization
21
+ */
22
+ export class LocalExecutor {
23
+ /** Execution mode identifier */
24
+ mode = 'local';
25
+ /**
26
+ * Execute a shell command locally
27
+ *
28
+ * @param command - The command to execute
29
+ * @param options - Execution options (timeout, cwd, env, etc.)
30
+ * @returns Promise resolving to execution result
31
+ */
32
+ async execute(command, options) {
33
+ const startTime = Date.now();
34
+ const timeout = options?.timeout ?? DEFAULT_TIMEOUT;
35
+ return new Promise((resolve) => {
36
+ let stdout = '';
37
+ let stderr = '';
38
+ let timedOut = false;
39
+ // Determine shell based on platform
40
+ const isWindows = process.platform === 'win32';
41
+ const shell = isWindows ? 'cmd.exe' : '/bin/sh';
42
+ const shellArgs = isWindows ? ['/c', command] : ['-c', command];
43
+ // Spawn the process
44
+ const proc = spawn(shell, shellArgs, {
45
+ cwd: options?.cwd,
46
+ env: { ...process.env, ...options?.env },
47
+ windowsHide: true,
48
+ });
49
+ // Set up timeout handler
50
+ const timeoutId = setTimeout(() => {
51
+ timedOut = true;
52
+ proc.kill('SIGKILL');
53
+ }, timeout);
54
+ // Collect stdout
55
+ proc.stdout.on('data', (data) => {
56
+ stdout += data.toString('utf8');
57
+ });
58
+ // Collect stderr
59
+ proc.stderr.on('data', (data) => {
60
+ stderr += data.toString('utf8');
61
+ });
62
+ // Handle process completion
63
+ proc.on('close', (code) => {
64
+ clearTimeout(timeoutId);
65
+ const duration = Date.now() - startTime;
66
+ resolve({
67
+ stdout,
68
+ stderr,
69
+ exitCode: timedOut ? 124 : (code ?? 1),
70
+ duration,
71
+ });
72
+ });
73
+ // Handle process errors
74
+ proc.on('error', (error) => {
75
+ clearTimeout(timeoutId);
76
+ const duration = Date.now() - startTime;
77
+ resolve({
78
+ stdout,
79
+ stderr: error.message,
80
+ exitCode: 1,
81
+ duration,
82
+ });
83
+ });
84
+ });
85
+ }
86
+ }
87
+ /**
88
+ * Create a new LocalExecutor instance
89
+ *
90
+ * @returns A new LocalExecutor instance
91
+ */
92
+ export function createLocalExecutor() {
93
+ return new LocalExecutor();
94
+ }
95
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/executor/local.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Capability Router
3
+ *
4
+ * Routes capability requests to the appropriate extension.
5
+ *
6
+ * @module @jclaw/core/extension-system/capability-router
7
+ */
8
+ import type { Capability } from '../types.js';
9
+ import { ExtensionRegistry } from './registry.js';
10
+ /**
11
+ * Capability resolution result
12
+ */
13
+ export interface CapabilityResolution {
14
+ /** Name of the extension providing the capability */
15
+ extensionName: string;
16
+ /** The resolved capability */
17
+ capability: Capability;
18
+ }
19
+ /**
20
+ * Capability Router
21
+ *
22
+ * Provides capability lookup and routing functionality.
23
+ * Acts as a query interface over the extension registry.
24
+ */
25
+ export declare class CapabilityRouter {
26
+ private readonly registry;
27
+ constructor(registry: ExtensionRegistry);
28
+ /**
29
+ * Resolve a capability by name
30
+ *
31
+ * @param capabilityName - Name of the capability to resolve
32
+ * @returns Capability resolution or null if not found
33
+ */
34
+ resolve(capabilityName: string): CapabilityResolution | null;
35
+ /**
36
+ * Check if a capability is available
37
+ *
38
+ * @param name - Capability name
39
+ * @returns True if capability is registered
40
+ */
41
+ hasCapability(name: string): boolean;
42
+ /**
43
+ * Get all available capability names
44
+ *
45
+ * @returns Array of capability names
46
+ */
47
+ getAvailableCapabilities(): string[];
48
+ /**
49
+ * Get all capabilities with their providers
50
+ *
51
+ * @returns Array of capability resolutions
52
+ */
53
+ getAllCapabilities(): CapabilityResolution[];
54
+ /**
55
+ * Get capabilities provided by a specific extension
56
+ *
57
+ * @param extensionName - Name of the extension
58
+ * @returns Array of capabilities or empty array if extension not found
59
+ */
60
+ getCapabilitiesByExtension(extensionName: string): Capability[];
61
+ /**
62
+ * Check if an extension provides a specific capability
63
+ *
64
+ * @param extensionName - Name of the extension
65
+ * @param capabilityName - Name of the capability
66
+ * @returns True if the extension provides the capability
67
+ */
68
+ extensionProvides(extensionName: string, capabilityName: string): boolean;
69
+ /**
70
+ * Find capability by partial name match
71
+ *
72
+ * @param partial - Partial capability name to search for
73
+ * @returns Array of matching capabilities
74
+ */
75
+ searchCapabilities(partial: string): CapabilityResolution[];
76
+ /**
77
+ * Get the extension name that provides a capability
78
+ *
79
+ * @param capabilityName - Name of the capability
80
+ * @returns Extension name or undefined if not found
81
+ */
82
+ getProvider(capabilityName: string): string | undefined;
83
+ /**
84
+ * Validate capability input against its schema
85
+ *
86
+ * @param capabilityName - Name of the capability
87
+ * @param input - Input to validate
88
+ * @returns True if valid, false if invalid or no schema defined
89
+ */
90
+ validateInput(capabilityName: string, input: unknown): boolean;
91
+ /**
92
+ * Basic input validation against schema
93
+ *
94
+ * Note: This is a simplified validation. For production use,
95
+ * integrate a proper JSON Schema validator like ajv.
96
+ */
97
+ private performBasicValidation;
98
+ /**
99
+ * Get capability statistics
100
+ */
101
+ get stats(): {
102
+ totalCapabilities: number;
103
+ capabilitiesByExtension: Map<string, number>;
104
+ };
105
+ }
106
+ //# sourceMappingURL=capability-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-router.d.ts","sourceRoot":"","sources":["../../src/extension-system/capability-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,iBAAiB;IAExD;;;;;OAKG;IACH,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAU5D;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;OAIG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAIpC;;;;OAIG;IACH,kBAAkB,IAAI,oBAAoB,EAAE;IAO5C;;;;;OAKG;IACH,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,EAAE;IAI/D;;;;;;OAMG;IACH,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO;IAKzE;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE;IAgB3D;;;;;OAKG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKvD;;;;;;OAMG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAY9D;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAyB9B;;OAEG;IACH,IAAI,KAAK,IAAI;QACX,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9C,CAcA;CACF"}