@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,30 @@
1
+ /**
2
+ * AutoSkill Generator - Enhanced Version
3
+ *
4
+ * Improved code generation with templates, validation, and evolution
5
+ *
6
+ * @module @jclaw/core/auto-skill/generator
7
+ */
8
+ import type { Task } from '../types.js';
9
+ import type { ExtensionRegistry } from '../extension-system/registry.js';
10
+ import type { LLMClient } from '../runtime/llm-client.js';
11
+ import type { EvolutionEngine } from '../evolution/engine.js';
12
+ import type { AutoSkillConfig, CapabilityGap, DiscoveryResult, GeneratedExtension, GenerationResult } from './types.js';
13
+ export declare class AutoSkillGenerator {
14
+ private llmClient;
15
+ private registry;
16
+ private evolutionEngine;
17
+ private readonly config;
18
+ constructor(llmClient: LLMClient, registry: ExtensionRegistry, evolutionEngine: EvolutionEngine, config?: Partial<AutoSkillConfig>);
19
+ discoverCapabilities(task: Task): Promise<DiscoveryResult>;
20
+ generateExtension(gap: CapabilityGap, attempt?: number): Promise<GenerationResult>;
21
+ private findTemplateForCapability;
22
+ private generateCode;
23
+ private optimizeCode;
24
+ private validateCode;
25
+ saveExtension(extension: GeneratedExtension): Promise<string>;
26
+ }
27
+ export declare function createAutoSkillGenerator(llmClient: LLMClient, registry: ExtensionRegistry, evolutionEngine: EvolutionEngine, config?: Partial<AutoSkillConfig>): AutoSkillGenerator;
28
+ export declare function addCodeTemplate(name: string, template: string): void;
29
+ export declare function getAvailableTemplates(): string[];
30
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/auto-skill/generator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAoFpB,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IALzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAGzC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,iBAAiB,EAC3B,eAAe,EAAE,eAAe,EACxC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAK7B,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAyC1D,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8CnF,OAAO,CAAC,yBAAyB;YAUnB,YAAY;YAqBZ,YAAY;YAuBZ,YAAY;IAUpB,aAAa,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;CAapE;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,iBAAiB,EAC3B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,kBAAkB,CAEpB;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEpE;AAGD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD"}
@@ -0,0 +1,262 @@
1
+ /**
2
+ * AutoSkill Generator - Enhanced Version
3
+ *
4
+ * Improved code generation with templates, validation, and evolution
5
+ *
6
+ * @module @jclaw/core/auto-skill/generator
7
+ */
8
+ import { writeFile, mkdir } from 'fs/promises';
9
+ import { join } from 'path';
10
+ const DEFAULT_CONFIG = {
11
+ enabled: true,
12
+ maxGenerationAttempts: 3,
13
+ storageDir: './.jclaw/auto-skills',
14
+ autoInstall: true,
15
+ minFitness: 0.7,
16
+ generationTimeout: 120000,
17
+ enableEvolution: true,
18
+ };
19
+ // Pre-built code templates for common capabilities
20
+ const CODE_TEMPLATES = {
21
+ http_client: `/**
22
+ * Auto-generated HTTP Client Extension
23
+ */
24
+ import type { Extension, AgentRuntime } from '@jclaw/core';
25
+
26
+ export const autoHttpClientExtension: Extension = {
27
+ name: 'auto-http-client',
28
+ version: '1.0.0',
29
+ description: 'HTTP client for making API requests',
30
+ capabilities: [
31
+ {
32
+ name: 'http_client',
33
+ description: 'Make HTTP requests to external APIs',
34
+ handler: async (options: { url: string; method?: string; headers?: Record<string, string>; body?: any }) => {
35
+ const response = await fetch(options.url, {
36
+ method: options.method || 'GET',
37
+ headers: { 'Content-Type': 'application/json', ...options.headers },
38
+ body: options.body ? JSON.stringify(options.body) : undefined,
39
+ });
40
+ return await response.json();
41
+ },
42
+ },
43
+ ],
44
+ async install(_runtime: AgentRuntime): Promise<void> {
45
+ console.log('Installing HTTP client capability...');
46
+ },
47
+ async uninstall(): Promise<void> {
48
+ console.log('Uninstalling HTTP client capability...');
49
+ },
50
+ };
51
+
52
+ export default autoHttpClientExtension;`,
53
+ file_operations: `/**
54
+ * Auto-generated File Operations Extension
55
+ */
56
+ import type { Extension, AgentRuntime } from '@jclaw/core';
57
+ import { readFile, writeFile, mkdir, readdir } from 'fs/promises';
58
+ import { existsSync } from 'fs';
59
+
60
+ export const autoFileOpsExtension: Extension = {
61
+ name: 'auto-file-operations',
62
+ version: '1.0.0',
63
+ description: 'File system operations',
64
+ capabilities: [
65
+ {
66
+ name: 'file_read',
67
+ description: 'Read file contents',
68
+ handler: async (path: string) => await readFile(path, 'utf-8'),
69
+ },
70
+ {
71
+ name: 'file_write',
72
+ description: 'Write file contents',
73
+ handler: async (path: string, content: string) => {
74
+ await writeFile(path, content, 'utf-8');
75
+ return { success: true };
76
+ },
77
+ },
78
+ ],
79
+ async install(_runtime: AgentRuntime): Promise<void> {
80
+ console.log('Installing file operations capability...');
81
+ },
82
+ async uninstall(): Promise<void> {
83
+ console.log('Uninstalling file operations capability...');
84
+ },
85
+ };
86
+
87
+ export default autoFileOpsExtension;`,
88
+ };
89
+ export class AutoSkillGenerator {
90
+ llmClient;
91
+ registry;
92
+ evolutionEngine;
93
+ config;
94
+ constructor(llmClient, registry, evolutionEngine, config) {
95
+ this.llmClient = llmClient;
96
+ this.registry = registry;
97
+ this.evolutionEngine = evolutionEngine;
98
+ this.config = { ...DEFAULT_CONFIG, ...config };
99
+ }
100
+ async discoverCapabilities(task) {
101
+ const existingCapabilities = this.registry.getCapabilityNames();
102
+ const prompt = `Analyze the task and identify missing capabilities.
103
+
104
+ Task: ${task.prompt}
105
+
106
+ Existing Capabilities:
107
+ ${existingCapabilities.map(c => `- ${c}`).join('\n')}
108
+
109
+ Return JSON:
110
+ {
111
+ "taskAnalysis": "Brief analysis",
112
+ "gaps": [
113
+ {
114
+ "capability": "snake_case_name",
115
+ "description": "What this does",
116
+ "complexity": "simple|medium|complex",
117
+ "reasoning": "Why needed"
118
+ }
119
+ ],
120
+ "suggestedCapabilities": ["existing_cap"]
121
+ }`;
122
+ try {
123
+ const response = await this.llmClient.chat([
124
+ { role: 'system', content: 'You are a capability analyzer.' },
125
+ { role: 'user', content: prompt }
126
+ ]);
127
+ const content = response.content;
128
+ const jsonMatch = content.match(/{[\s\S]*}/);
129
+ if (!jsonMatch)
130
+ throw new Error('No JSON found');
131
+ return JSON.parse(jsonMatch[0]);
132
+ }
133
+ catch (error) {
134
+ console.error('Discovery failed:', error);
135
+ return { taskAnalysis: 'Failed to analyze', gaps: [], suggestedCapabilities: [] };
136
+ }
137
+ }
138
+ async generateExtension(gap, attempt = 1) {
139
+ const steps = [
140
+ { name: 'analyze', status: 'success' },
141
+ { name: 'generate', status: 'running' },
142
+ { name: 'validate', status: 'pending' },
143
+ ];
144
+ try {
145
+ const templateKey = this.findTemplateForCapability(gap.capability);
146
+ let code;
147
+ if (templateKey) {
148
+ code = CODE_TEMPLATES[templateKey] || '';
149
+ console.log(' Using template for:', templateKey);
150
+ }
151
+ else {
152
+ code = await this.generateCode(gap);
153
+ }
154
+ steps[1].status = 'success';
155
+ steps[2].status = 'running';
156
+ const validation = await this.validateCode(code);
157
+ if (!validation.valid) {
158
+ steps[2].status = 'failed';
159
+ if (attempt < this.config.maxGenerationAttempts) {
160
+ return this.generateExtension(gap, attempt + 1);
161
+ }
162
+ return { success: false, steps, error: validation.error };
163
+ }
164
+ steps[2].status = 'success';
165
+ if (this.config.enableEvolution) {
166
+ code = await this.optimizeCode(code, gap);
167
+ }
168
+ return {
169
+ success: true,
170
+ extension: { name: `auto-${gap.capability}`, code, gap, version: '1.0.0', generatedAt: new Date(), model: 'gpt-4o' },
171
+ steps
172
+ };
173
+ }
174
+ catch (error) {
175
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
176
+ return { success: false, steps, error: errorMessage };
177
+ }
178
+ }
179
+ findTemplateForCapability(capability) {
180
+ const templates = Object.keys(CODE_TEMPLATES);
181
+ for (const template of templates) {
182
+ if (capability.includes(template) || template.includes(capability)) {
183
+ return template;
184
+ }
185
+ }
186
+ return null;
187
+ }
188
+ async generateCode(gap) {
189
+ const prompt = `Generate a complete JClaw Extension for capability: ${gap.capability}
190
+
191
+ Description: ${gap.description}
192
+
193
+ Requirements:
194
+ 1. Implement Extension interface from '@jclaw/core'
195
+ 2. Include install() and uninstall() methods
196
+ 3. Export as default
197
+ 4. Use TypeScript
198
+ 5. Add proper error handling`;
199
+ const response = await this.llmClient.chat([
200
+ { role: 'system', content: 'You are a TypeScript expert.' },
201
+ { role: 'user', content: prompt }
202
+ ]);
203
+ const codeMatch = response.content.match(/```typescript\n([\s\S]*?)```/);
204
+ return codeMatch && codeMatch[1] ? codeMatch[1].trim() : response.content.trim();
205
+ }
206
+ async optimizeCode(code, gap) {
207
+ const prompt = `Optimize this TypeScript code for better quality:
208
+
209
+ ${code}
210
+
211
+ Focus on:
212
+ 1. Error handling
213
+ 2. Type safety
214
+ 3. Performance
215
+ 4. Readability`;
216
+ try {
217
+ const response = await this.llmClient.chat([
218
+ { role: 'system', content: 'You are a code optimizer.' },
219
+ { role: 'user', content: prompt }
220
+ ]);
221
+ const codeMatch = response.content.match(/```typescript\n([\s\S]*?)```/);
222
+ return codeMatch && codeMatch[1] ? codeMatch[1].trim() : response.content.trim();
223
+ }
224
+ catch {
225
+ return code;
226
+ }
227
+ }
228
+ async validateCode(code) {
229
+ const required = ['export', 'install', 'uninstall', 'capabilities'];
230
+ for (const part of required) {
231
+ if (!code.includes(part)) {
232
+ return { valid: false, error: `Missing: ${part}` };
233
+ }
234
+ }
235
+ return { valid: true };
236
+ }
237
+ async saveExtension(extension) {
238
+ const dir = join(this.config.storageDir, extension.name);
239
+ await mkdir(join(dir, 'src'), { recursive: true });
240
+ await writeFile(join(dir, 'src', 'index.ts'), extension.code);
241
+ await writeFile(join(dir, 'package.json'), JSON.stringify({
242
+ name: extension.name,
243
+ version: extension.version,
244
+ type: 'module',
245
+ main: 'dist/index.js',
246
+ dependencies: { '@jclaw/core': '^0.1.0' }
247
+ }, null, 2));
248
+ return dir;
249
+ }
250
+ }
251
+ export function createAutoSkillGenerator(llmClient, registry, evolutionEngine, config) {
252
+ return new AutoSkillGenerator(llmClient, registry, evolutionEngine, config);
253
+ }
254
+ // Add more code templates
255
+ export function addCodeTemplate(name, template) {
256
+ CODE_TEMPLATES[name] = template;
257
+ }
258
+ // Get all available templates
259
+ export function getAvailableTemplates() {
260
+ return Object.keys(CODE_TEMPLATES);
261
+ }
262
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/auto-skill/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * AutoSkill Module
3
+ *
4
+ * Automatic skill discovery, generation, and installation.
5
+ *
6
+ * @module @jclaw/core/auto-skill
7
+ */
8
+ export { AutoSkillGenerator, createAutoSkillGenerator, } from './generator.js';
9
+ export { AutoSkillInstaller, createAutoSkillInstaller, } from './installer.js';
10
+ export type { AutoSkillConfig, CapabilityGap, DiscoveryResult, GeneratedExtension, GenerationResult, GenerationStep, InstallationResult, SkillUsageStats, AutoSkillMetadata, SkillVersion, } from './types.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auto-skill/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * AutoSkill Module
3
+ *
4
+ * Automatic skill discovery, generation, and installation.
5
+ *
6
+ * @module @jclaw/core/auto-skill
7
+ */
8
+ export { AutoSkillGenerator, createAutoSkillGenerator, } from './generator.js';
9
+ export { AutoSkillInstaller, createAutoSkillInstaller, } from './installer.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auto-skill/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * AutoSkill Installer
3
+ *
4
+ * Compiles and installs generated skills.
5
+ *
6
+ * @module @jclaw/core/auto-skill/installer
7
+ */
8
+ import type { ExtensionRegistry } from '../extension-system/registry.js';
9
+ import type { GeneratedExtension, InstallationResult } from './types.js';
10
+ export declare class AutoSkillInstaller {
11
+ private registry;
12
+ private storageDir;
13
+ constructor(registry: ExtensionRegistry, storageDir?: string);
14
+ /**
15
+ * 编译并安装生成的 Extension
16
+ */
17
+ install(extension: GeneratedExtension): Promise<InstallationResult>;
18
+ /**
19
+ * 保存源文件
20
+ */
21
+ private saveSourceFiles;
22
+ /**
23
+ * 安装 npm 依赖
24
+ */
25
+ private installDependencies;
26
+ /**
27
+ * 编译 TypeScript
28
+ */
29
+ private compileExtension;
30
+ /**
31
+ * 验证 Extension 接口
32
+ */
33
+ private isValidExtension;
34
+ /**
35
+ * 卸载已安装的 skill
36
+ */
37
+ uninstall(skillName: string): Promise<boolean>;
38
+ /**
39
+ * 列出已安装的 auto skills
40
+ */
41
+ listInstalled(): Promise<string[]>;
42
+ }
43
+ export declare function createAutoSkillInstaller(registry: ExtensionRegistry, storageDir?: string): AutoSkillInstaller;
44
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/auto-skill/installer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEzE,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;gBADV,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,GAAE,MAA+B;IAGrD;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiEzE;;OAEG;YACW,eAAe;IAgD7B;;OAEG;YACW,mBAAmB;IAYjC;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAepD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAYzC;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,kBAAkB,CAEpB"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * AutoSkill Installer
3
+ *
4
+ * Compiles and installs generated skills.
5
+ *
6
+ * @module @jclaw/core/auto-skill/installer
7
+ */
8
+ import { execSync } from 'child_process';
9
+ import { writeFile, mkdir, rm } from 'fs/promises';
10
+ import { existsSync } from 'fs';
11
+ import { join } from 'path';
12
+ import { readdir } from 'fs/promises';
13
+ export class AutoSkillInstaller {
14
+ registry;
15
+ storageDir;
16
+ constructor(registry, storageDir = './.jclaw/auto-skills') {
17
+ this.registry = registry;
18
+ this.storageDir = storageDir;
19
+ }
20
+ /**
21
+ * 编译并安装生成的 Extension
22
+ */
23
+ async install(extension) {
24
+ const extensionDir = join(this.storageDir, extension.name);
25
+ try {
26
+ // 1. 保存源代码
27
+ await this.saveSourceFiles(extensionDir, extension);
28
+ // 2. 安装依赖
29
+ await this.installDependencies(extensionDir);
30
+ // 3. 编译 TypeScript
31
+ const compileOutput = await this.compileExtension(extensionDir);
32
+ // 4. 验证编译结果
33
+ const distPath = join(extensionDir, 'dist', 'index.js');
34
+ if (!existsSync(distPath)) {
35
+ throw new Error('Compilation failed: dist/index.js not found');
36
+ }
37
+ // 5. 动态加载并注册
38
+ const module = await import(distPath);
39
+ const extensionInstance = module.default;
40
+ if (!extensionInstance) {
41
+ throw new Error('Extension does not export default');
42
+ }
43
+ // 验证 Extension 接口
44
+ if (!this.isValidExtension(extensionInstance)) {
45
+ throw new Error('Extension does not implement required interface');
46
+ }
47
+ // 注册到系统
48
+ this.registry.register(extensionInstance);
49
+ return {
50
+ success: true,
51
+ extensionName: extension.name,
52
+ installPath: extensionDir,
53
+ compileOutput,
54
+ validationResult: {
55
+ passed: true,
56
+ errors: []
57
+ }
58
+ };
59
+ }
60
+ catch (error) {
61
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
62
+ // 清理失败的安装
63
+ try {
64
+ await rm(extensionDir, { recursive: true, force: true });
65
+ }
66
+ catch {
67
+ // 忽略清理错误
68
+ }
69
+ return {
70
+ success: false,
71
+ extensionName: extension.name,
72
+ installPath: extensionDir,
73
+ error: errorMessage
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * 保存源文件
79
+ */
80
+ async saveSourceFiles(extensionDir, extension) {
81
+ // 创建目录结构
82
+ const srcDir = join(extensionDir, 'src');
83
+ await mkdir(srcDir, { recursive: true });
84
+ // 保存主代码文件
85
+ await writeFile(join(srcDir, 'index.ts'), extension.code);
86
+ // 创建 package.json
87
+ const packageJson = {
88
+ name: extension.name,
89
+ version: extension.version,
90
+ type: 'module',
91
+ main: 'dist/index.js',
92
+ types: 'dist/index.d.ts',
93
+ dependencies: {
94
+ '@jclaw/core': '^0.1.0'
95
+ },
96
+ devDependencies: {
97
+ typescript: '^5.3.0'
98
+ }
99
+ };
100
+ await writeFile(join(extensionDir, 'package.json'), JSON.stringify(packageJson, null, 2));
101
+ // 创建 tsconfig.json
102
+ const tsConfig = {
103
+ compilerOptions: {
104
+ target: 'ES2022',
105
+ module: 'NodeNext',
106
+ moduleResolution: 'NodeNext',
107
+ strict: true,
108
+ esModuleInterop: true,
109
+ skipLibCheck: true,
110
+ forceConsistentCasingInFileNames: true,
111
+ declaration: true,
112
+ outDir: 'dist'
113
+ },
114
+ include: ['src/**/*']
115
+ };
116
+ await writeFile(join(extensionDir, 'tsconfig.json'), JSON.stringify(tsConfig, null, 2));
117
+ }
118
+ /**
119
+ * 安装 npm 依赖
120
+ */
121
+ async installDependencies(extensionDir) {
122
+ try {
123
+ execSync('npm install', {
124
+ cwd: extensionDir,
125
+ stdio: 'pipe',
126
+ timeout: 60000
127
+ });
128
+ }
129
+ catch (error) {
130
+ throw new Error(`Failed to install dependencies: ${error}`);
131
+ }
132
+ }
133
+ /**
134
+ * 编译 TypeScript
135
+ */
136
+ async compileExtension(extensionDir) {
137
+ try {
138
+ const output = execSync('npx tsc', {
139
+ cwd: extensionDir,
140
+ stdio: 'pipe',
141
+ encoding: 'utf-8',
142
+ timeout: 60000
143
+ });
144
+ return output;
145
+ }
146
+ catch (error) {
147
+ const errorMessage = error instanceof Error ? error.message : String(error);
148
+ throw new Error(`Compilation failed: ${errorMessage}`);
149
+ }
150
+ }
151
+ /**
152
+ * 验证 Extension 接口
153
+ */
154
+ isValidExtension(obj) {
155
+ if (typeof obj !== 'object' || obj === null) {
156
+ return false;
157
+ }
158
+ const ext = obj;
159
+ return (typeof ext.name === 'string' &&
160
+ typeof ext.version === 'string' &&
161
+ typeof ext.description === 'string' &&
162
+ Array.isArray(ext.capabilities) &&
163
+ typeof ext.install === 'function' &&
164
+ typeof ext.uninstall === 'function');
165
+ }
166
+ /**
167
+ * 卸载已安装的 skill
168
+ */
169
+ async uninstall(skillName) {
170
+ try {
171
+ // 从 registry 注销
172
+ this.registry.unregister(skillName);
173
+ // 删除文件
174
+ const extensionDir = join(this.storageDir, skillName);
175
+ await rm(extensionDir, { recursive: true, force: true });
176
+ return true;
177
+ }
178
+ catch {
179
+ return false;
180
+ }
181
+ }
182
+ /**
183
+ * 列出已安装的 auto skills
184
+ */
185
+ async listInstalled() {
186
+ if (!existsSync(this.storageDir)) {
187
+ return [];
188
+ }
189
+ try {
190
+ const items = await readdir(this.storageDir);
191
+ return items;
192
+ }
193
+ catch {
194
+ return [];
195
+ }
196
+ }
197
+ }
198
+ export function createAutoSkillInstaller(registry, storageDir) {
199
+ return new AutoSkillInstaller(registry, storageDir);
200
+ }
201
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/auto-skill/installer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAMtC,MAAM,OAAO,kBAAkB;IAEnB;IACA;IAFV,YACU,QAA2B,EAC3B,aAAqB,sBAAsB;QAD3C,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,eAAU,GAAV,UAAU,CAAiC;IAClD,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,SAA6B;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,WAAW;YACX,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAEpD,UAAU;YACV,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAE7C,mBAAmB;YACnB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEhE,YAAY;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YAED,aAAa;YACb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC;YAEzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YAED,kBAAkB;YAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YAED,QAAQ;YACR,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAE1C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,SAAS,CAAC,IAAI;gBAC7B,WAAW,EAAE,YAAY;gBACzB,aAAa;gBACb,gBAAgB,EAAE;oBAChB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,EAAE;iBACX;aACF,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAE9E,UAAU;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,SAAS,CAAC,IAAI;gBAC7B,WAAW,EAAE,YAAY;gBACzB,KAAK,EAAE,YAAY;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,YAAoB,EAAE,SAA6B;QAC/E,SAAS;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,UAAU;QACV,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAE1D,kBAAkB;QAClB,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,iBAAiB;YACxB,YAAY,EAAE;gBACZ,aAAa,EAAE,QAAQ;aACxB;YACD,eAAe,EAAE;gBACf,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC;QACF,MAAM,SAAS,CACb,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAClC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CACrC,CAAC;QAEF,mBAAmB;QACnB,MAAM,QAAQ,GAAG;YACf,eAAe,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,UAAU;gBAClB,gBAAgB,EAAE,UAAU;gBAC5B,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,IAAI;gBAClB,gCAAgC,EAAE,IAAI;gBACtC,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,MAAM;aACf;YACD,OAAO,EAAE,CAAC,UAAU,CAAC;SACtB,CAAC;QACF,MAAM,SAAS,CACb,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,YAAoB;QACpD,IAAI,CAAC;YACH,QAAQ,CAAC,aAAa,EAAE;gBACtB,GAAG,EAAE,YAAY;gBACjB,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,YAAoB;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE;gBACjC,GAAG,EAAE,YAAY;gBACjB,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,GAAY;QACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,GAA8B,CAAC;QAE3C,OAAO,CACL,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAC5B,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAC/B,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;YACnC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YAC/B,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU;YACjC,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,CACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,IAAI,CAAC;YACH,gBAAgB;YAChB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAEpC,OAAO;YACP,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CACtC,QAA2B,EAC3B,UAAmB;IAEnB,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC"}