@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,106 @@
1
+ /**
2
+ * 进化记忆管理器
3
+ *
4
+ * 保存进化历史,让后续进化能利用之前的经验
5
+ *
6
+ * @module @jclaw/core/evolution/memory
7
+ */
8
+ import type { Gene, EvolutionResult } from './types.js';
9
+ import type { ContextManager } from '../types.js';
10
+ /**
11
+ * 进化记忆条目
12
+ */
13
+ export interface EvolutionMemory {
14
+ /** 原始代码哈希 */
15
+ codeHash: string;
16
+ /** 使用的策略 */
17
+ strategy: string;
18
+ /** 进化结果 */
19
+ result: {
20
+ fitness: number;
21
+ description: string;
22
+ improved: boolean;
23
+ };
24
+ /** 时间戳 */
25
+ timestamp: number;
26
+ /** 基因数据 */
27
+ gene?: Gene;
28
+ }
29
+ /**
30
+ * 进化记忆配置
31
+ */
32
+ export interface EvolutionMemoryConfig {
33
+ /** 上下文管理器 (用于持久化) */
34
+ contextManager?: ContextManager;
35
+ /** 最大记忆条目 */
36
+ maxMemory?: number;
37
+ }
38
+ /**
39
+ * 进化记忆管理器
40
+ *
41
+ * 管理进化历史,支持:
42
+ * - 保存进化结果
43
+ * - 检索相关经验
44
+ * - 学习历史模式
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const memory = new EvolutionMemoryManager(contextManager);
49
+ *
50
+ * // 保存进化结果
51
+ * await memory.remember(code, result);
52
+ *
53
+ * // 检索相关经验
54
+ * const experience = await memory.recall(code);
55
+ * ```
56
+ */
57
+ export declare class EvolutionMemoryManager {
58
+ private memories;
59
+ private readonly config;
60
+ constructor(config?: EvolutionMemoryConfig);
61
+ /**
62
+ * 记住一次进化结果
63
+ */
64
+ remember(code: string, result: EvolutionResult): Promise<void>;
65
+ /**
66
+ * 回忆相关经验
67
+ */
68
+ recall(code: string): Promise<EvolutionMemory[]>;
69
+ /**
70
+ * 获取最佳实践(从历史中学习)
71
+ */
72
+ getBestPractices(): Map<string, {
73
+ strategy: string;
74
+ avgFitness: number;
75
+ }>;
76
+ /**
77
+ * 获取进化统计
78
+ */
79
+ getStats(): {
80
+ totalEvolutions: number;
81
+ successfulEvolutions: number;
82
+ avgFitness: number;
83
+ bestStrategy: string;
84
+ };
85
+ /**
86
+ * 导出记忆(用于 EvoMap 共享)
87
+ */
88
+ exportGenes(): Gene[];
89
+ /**
90
+ * 导入基因(从 EvoMap 或其他来源)
91
+ */
92
+ importGenes(genes: Gene[]): void;
93
+ /**
94
+ * 清除记忆
95
+ */
96
+ clear(): void;
97
+ private hashCode;
98
+ private isSimilar;
99
+ private toGene;
100
+ private syncToContext;
101
+ }
102
+ /**
103
+ * 创建进化记忆管理器
104
+ */
105
+ export declare function createEvolutionMemory(config?: EvolutionMemoryConfig): EvolutionMemoryManager;
106
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/evolution/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;gBAEU,MAAM,GAAE,qBAA0B;IAO9C;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAYtD;;OAEG;IACH,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAgDzE;;OAEG;IACH,QAAQ,IAAI;QACV,eAAe,EAAE,MAAM,CAAC;QACxB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB;IAmCD;;OAEG;IACH,WAAW,IAAI,IAAI,EAAE;IAOrB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAiBhC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,MAAM;YAYA,aAAa;CAe1B;AAGH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,sBAAsB,CAE5F"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * 进化记忆管理器
3
+ *
4
+ * 保存进化历史,让后续进化能利用之前的经验
5
+ *
6
+ * @module @jclaw/core/evolution/memory
7
+ */
8
+ /**
9
+ * 进化记忆管理器
10
+ *
11
+ * 管理进化历史,支持:
12
+ * - 保存进化结果
13
+ * - 检索相关经验
14
+ * - 学习历史模式
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const memory = new EvolutionMemoryManager(contextManager);
19
+ *
20
+ * // 保存进化结果
21
+ * await memory.remember(code, result);
22
+ *
23
+ * // 检索相关经验
24
+ * const experience = await memory.recall(code);
25
+ * ```
26
+ */
27
+ export class EvolutionMemoryManager {
28
+ memories = [];
29
+ config;
30
+ constructor(config = {}) {
31
+ this.config = {
32
+ maxMemory: 1000,
33
+ ...config,
34
+ };
35
+ }
36
+ /**
37
+ * 记住一次进化结果
38
+ */
39
+ async remember(code, result) {
40
+ const hash = this.hashCode(code);
41
+ for (const mutation of result.validatedMutations) {
42
+ const memory = {
43
+ codeHash: hash,
44
+ strategy: mutation.strategy,
45
+ result: {
46
+ fitness: mutation.fitness ?? 0,
47
+ description: mutation.description,
48
+ improved: result.improved,
49
+ },
50
+ timestamp: Date.now(),
51
+ gene: this.toGene(mutation),
52
+ };
53
+ this.memories.push(memory);
54
+ }
55
+ // 限制记忆数量
56
+ if (this.memories.length > this.config.maxMemory) {
57
+ this.memories = this.memories.slice(-this.config.maxMemory);
58
+ }
59
+ // 同步到上下文管理器
60
+ if (this.config.contextManager) {
61
+ await this.syncToContext();
62
+ }
63
+ }
64
+ /**
65
+ * 回忆相关经验
66
+ */
67
+ async recall(code) {
68
+ const hash = this.hashCode(code);
69
+ // 查找相同或相似代码的进化历史
70
+ const related = this.memories.filter(m => m.codeHash === hash || this.isSimilar(m.codeHash, hash));
71
+ // 按适应度排序
72
+ return related.sort((a, b) => b.result.fitness - a.result.fitness);
73
+ }
74
+ /**
75
+ * 获取最佳实践(从历史中学习)
76
+ */
77
+ getBestPractices() {
78
+ const stats = new Map();
79
+ for (const memory of this.memories) {
80
+ const key = memory.codeHash.slice(0, 8);
81
+ const current = stats.get(key) || { total: 0, count: 0 };
82
+ stats.set(key, {
83
+ total: current.total + memory.result.fitness,
84
+ count: current.count + 1,
85
+ });
86
+ }
87
+ const best = new Map();
88
+ // 找出每个代码类型的最佳策略
89
+ const strategies = new Map();
90
+ for (const memory of this.memories) {
91
+ const key = memory.codeHash.slice(0, 8);
92
+ if (!strategies.has(key)) {
93
+ strategies.set(key, new Map());
94
+ }
95
+ const stratMap = strategies.get(key);
96
+ const strat = stratMap.get(memory.strategy) || { total: 0, count: 0 };
97
+ stratMap.set(memory.strategy, {
98
+ total: strat.total + memory.result.fitness,
99
+ count: strat.count + 1,
100
+ });
101
+ }
102
+ for (const [key, stratMap] of strategies) {
103
+ let bestStrat = '';
104
+ let bestAvg = 0;
105
+ for (const [strat, data] of stratMap) {
106
+ const avg = data.total / data.count;
107
+ if (avg > bestAvg) {
108
+ bestAvg = avg;
109
+ bestStrat = strat;
110
+ }
111
+ }
112
+ best.set(key, { strategy: bestStrat, avgFitness: bestAvg });
113
+ }
114
+ return best;
115
+ }
116
+ /**
117
+ * 获取进化统计
118
+ */
119
+ getStats() {
120
+ const total = this.memories.length;
121
+ const successful = this.memories.filter(m => m.result.improved).length;
122
+ const avgFitness = total > 0
123
+ ? this.memories.reduce((sum, m) => sum + m.result.fitness, 0) / total
124
+ : 0;
125
+ // 找出最佳策略
126
+ const strategyStats = new Map();
127
+ for (const m of this.memories) {
128
+ const current = strategyStats.get(m.strategy) || { total: 0, count: 0 };
129
+ strategyStats.set(m.strategy, {
130
+ total: current.total + m.result.fitness,
131
+ count: current.count + 1,
132
+ });
133
+ }
134
+ let bestStrategy = 'optimize';
135
+ let bestAvg = 0;
136
+ for (const [strat, data] of strategyStats) {
137
+ const avg = data.total / data.count;
138
+ if (avg > bestAvg) {
139
+ bestAvg = avg;
140
+ bestStrategy = strat;
141
+ }
142
+ }
143
+ return {
144
+ totalEvolutions: total,
145
+ successfulEvolutions: successful,
146
+ avgFitness,
147
+ bestStrategy,
148
+ };
149
+ }
150
+ /**
151
+ * 导出记忆(用于 EvoMap 共享)
152
+ */
153
+ exportGenes() {
154
+ return this.memories
155
+ .filter(m => m.gene && m.result.fitness > 0.7)
156
+ .map(m => m.gene)
157
+ .slice(-100); // 只导出最好的 100 个
158
+ }
159
+ /**
160
+ * 导入基因(从 EvoMap 或其他来源)
161
+ */
162
+ importGenes(genes) {
163
+ for (const gene of genes) {
164
+ const memory = {
165
+ codeHash: gene.id,
166
+ strategy: 'imported',
167
+ result: {
168
+ fitness: gene.fitness,
169
+ description: `Imported gene from generation ${gene.generation}`,
170
+ improved: true,
171
+ },
172
+ timestamp: gene.createdAt.getTime(),
173
+ gene,
174
+ };
175
+ this.memories.push(memory);
176
+ }
177
+ }
178
+ /**
179
+ * 清除记忆
180
+ */
181
+ clear() {
182
+ this.memories = [];
183
+ }
184
+ // 私有方法
185
+ hashCode(code) {
186
+ let hash = 0;
187
+ const normalized = code.replace(/\s+/g, ' ').trim();
188
+ for (let i = 0; i < normalized.length; i++) {
189
+ const char = normalized.charCodeAt(i);
190
+ hash = ((hash << 5) - hash) + char;
191
+ hash = hash & hash;
192
+ }
193
+ return Math.abs(hash).toString(16);
194
+ }
195
+ isSimilar(hash1, hash2) {
196
+ // 简单的相似度判断:前4位相同
197
+ return hash1.slice(0, 4) === hash2.slice(0, 4);
198
+ }
199
+ toGene(mutation) {
200
+ return {
201
+ id: mutation.id,
202
+ type: 'behavior',
203
+ content: mutation.mutated,
204
+ fitness: mutation.fitness ?? 0,
205
+ generation: 1,
206
+ parents: [],
207
+ createdAt: mutation.createdAt,
208
+ };
209
+ }
210
+ async syncToContext() {
211
+ if (!this.config.contextManager)
212
+ return;
213
+ // 将进化记忆同步到上下文管理器
214
+ const summary = this.getStats();
215
+ const bestPractices = this.getBestPractices();
216
+ // const knowledge = ...
217
+ evolutionStats: summary,
218
+ bestPractices;
219
+ Object.fromEntries(bestPractices),
220
+ lastUpdated;
221
+ Date.now(),
222
+ ;
223
+ }
224
+ ;
225
+ }
226
+ /**
227
+ * 创建进化记忆管理器
228
+ */
229
+ export function createEvolutionMemory(config) {
230
+ return new EvolutionMemoryManager(config);
231
+ }
232
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/evolution/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Mutation Generator
3
+ *
4
+ * Generates code and behavior mutations for evolution.
5
+ *
6
+ * @module @jclaw/core/evolution/mutation
7
+ */
8
+ import type { EvolutionStrategy, Mutation } from './types.js';
9
+ import { LLMClient } from '../runtime/llm-client.js';
10
+ /**
11
+ * Configuration for mutation generator
12
+ */
13
+ export interface MutationGeneratorConfig {
14
+ /** LLM client for generating mutations */
15
+ llmClient: LLMClient;
16
+ /** Enable verbose logging */
17
+ verbose?: boolean;
18
+ }
19
+ /**
20
+ * Mutation Generator
21
+ *
22
+ * Uses LLM to generate code mutations based on different strategies.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const generator = new MutationGenerator({ llmClient });
27
+ * const mutations = await generator.generate(originalCode, ['repair', 'optimize']);
28
+ * ```
29
+ */
30
+ export declare class MutationGenerator {
31
+ private readonly config;
32
+ /**
33
+ * Create a new mutation generator.
34
+ *
35
+ * @param config - Configuration options
36
+ */
37
+ constructor(config: MutationGeneratorConfig);
38
+ /**
39
+ * Generate mutations for the given code.
40
+ *
41
+ * @param code - The original code to mutate
42
+ * @param strategies - Evolution strategies to use
43
+ * @returns Array of generated mutations
44
+ */
45
+ generate(code: string, strategies: EvolutionStrategy[]): Promise<Mutation[]>;
46
+ /**
47
+ * Generate a single mutation using a specific strategy.
48
+ */
49
+ private generateSingle;
50
+ /**
51
+ * Generate a description for the mutation.
52
+ */
53
+ private generateDescription;
54
+ /**
55
+ * Log message if verbose mode is enabled.
56
+ */
57
+ private log;
58
+ }
59
+ /**
60
+ * Create a new mutation generator.
61
+ *
62
+ * @param config - Configuration options
63
+ * @returns New MutationGenerator instance
64
+ */
65
+ export declare function createMutationGenerator(config: MutationGeneratorConfig): MutationGenerator;
66
+ //# sourceMappingURL=mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../../src/evolution/mutation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAoB,MAAM,0BAA0B,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6BD;;;;;;;;;;GAUG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IAEF;;;;OAIG;gBACS,MAAM,EAAE,uBAAuB;IAO3C;;;;;;OAMG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAelF;;OAEG;YACW,cAAc;IAsB5B;;OAEG;YACW,mBAAmB;IAwBjC;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAE1F"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Mutation Generator
3
+ *
4
+ * Generates code and behavior mutations for evolution.
5
+ *
6
+ * @module @jclaw/core/evolution/mutation
7
+ */
8
+ /**
9
+ * Prompt templates for different strategies
10
+ */
11
+ const STRATEGY_PROMPTS = {
12
+ repair: `You are a code repair specialist. Analyze the code and generate a repaired version that:
13
+ 1. Fixes any bugs or errors
14
+ 2. Maintains the original functionality
15
+ 3. Improves code quality where possible
16
+ 4. Keeps changes minimal and focused
17
+
18
+ Return ONLY the repaired code, no explanations.`,
19
+ optimize: `You are a performance optimization specialist. Analyze the code and generate an optimized version that:
20
+ 1. Improves performance and efficiency
21
+ 2. Reduces complexity where possible
22
+ 3. Maintains exact same functionality
23
+ 4. Uses best practices and patterns
24
+
25
+ Return ONLY the optimized code, no explanations.`,
26
+ innovate: `You are an innovation specialist. Analyze the code and generate an innovative version that:
27
+ 1. Introduces new approaches or patterns
28
+ 2. Explores alternative solutions
29
+ 3. Adds new capabilities or features
30
+ 4. Takes calculated risks while maintaining safety
31
+
32
+ Return ONLY the innovative code, no explanations.`,
33
+ };
34
+ /**
35
+ * Mutation Generator
36
+ *
37
+ * Uses LLM to generate code mutations based on different strategies.
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const generator = new MutationGenerator({ llmClient });
42
+ * const mutations = await generator.generate(originalCode, ['repair', 'optimize']);
43
+ * ```
44
+ */
45
+ export class MutationGenerator {
46
+ config;
47
+ /**
48
+ * Create a new mutation generator.
49
+ *
50
+ * @param config - Configuration options
51
+ */
52
+ constructor(config) {
53
+ this.config = {
54
+ verbose: false,
55
+ ...config,
56
+ };
57
+ }
58
+ /**
59
+ * Generate mutations for the given code.
60
+ *
61
+ * @param code - The original code to mutate
62
+ * @param strategies - Evolution strategies to use
63
+ * @returns Array of generated mutations
64
+ */
65
+ async generate(code, strategies) {
66
+ const mutations = [];
67
+ for (const strategy of strategies) {
68
+ try {
69
+ const mutation = await this.generateSingle(code, strategy);
70
+ mutations.push(mutation);
71
+ }
72
+ catch (error) {
73
+ this.log(`Failed to generate ${strategy} mutation: ${error}`);
74
+ }
75
+ }
76
+ return mutations;
77
+ }
78
+ /**
79
+ * Generate a single mutation using a specific strategy.
80
+ */
81
+ async generateSingle(code, strategy) {
82
+ const messages = [
83
+ { role: 'system', content: STRATEGY_PROMPTS[strategy] },
84
+ { role: 'user', content: code },
85
+ ];
86
+ const response = await this.config.llmClient.chat(messages);
87
+ const mutated = response.content;
88
+ // Generate mutation description
89
+ const description = await this.generateDescription(code, mutated, strategy);
90
+ return {
91
+ id: `mutation-${Date.now()}-${Math.random().toString(36).slice(2)}`,
92
+ strategy,
93
+ original: code,
94
+ mutated,
95
+ description,
96
+ createdAt: new Date(),
97
+ };
98
+ }
99
+ /**
100
+ * Generate a description for the mutation.
101
+ */
102
+ async generateDescription(original, mutated, strategy) {
103
+ const messages = [
104
+ {
105
+ role: 'system',
106
+ content: 'You are a technical writer. Describe the changes between two code snippets in one concise sentence.',
107
+ },
108
+ {
109
+ role: 'user',
110
+ content: `Original:\n\`\`\`\n${original}\n\`\`\`\n\nMutated (${strategy}):\n\`\`\`\n${mutated}\n\`\`\`\n\nDescribe the changes:`,
111
+ },
112
+ ];
113
+ try {
114
+ const response = await this.config.llmClient.chat(messages, { maxTokens: 100 });
115
+ return response.content.trim();
116
+ }
117
+ catch {
118
+ return `${strategy} mutation applied`;
119
+ }
120
+ }
121
+ /**
122
+ * Log message if verbose mode is enabled.
123
+ */
124
+ log(message) {
125
+ if (this.config.verbose) {
126
+ console.log(`[MutationGenerator] ${message}`);
127
+ }
128
+ }
129
+ }
130
+ /**
131
+ * Create a new mutation generator.
132
+ *
133
+ * @param config - Configuration options
134
+ * @returns New MutationGenerator instance
135
+ */
136
+ export function createMutationGenerator(config) {
137
+ return new MutationGenerator(config);
138
+ }
139
+ //# sourceMappingURL=mutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../src/evolution/mutation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Sandbox Validator
3
+ *
4
+ * Validates mutations in an isolated environment.
5
+ *
6
+ * @module @jclaw/core/evolution/sandbox
7
+ */
8
+ import type { Executor } from '../types.js';
9
+ import type { Mutation, ValidationResult } from './types.js';
10
+ /**
11
+ * Configuration for sandbox validator
12
+ */
13
+ export interface SandboxConfig {
14
+ /** Command executor */
15
+ executor: Executor;
16
+ /** Validation timeout in milliseconds (default: 30000) */
17
+ timeout?: number;
18
+ /** Temporary directory for sandbox (default: os.tmpdir()) */
19
+ tempDir?: string;
20
+ /** Test command to run for validation */
21
+ testCommand?: string;
22
+ /** Enable verbose logging */
23
+ verbose?: boolean;
24
+ }
25
+ /**
26
+ * Sandbox Validator
27
+ *
28
+ * Validates mutations by running tests in an isolated environment.
29
+ * Supports both local and docker execution modes.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const sandbox = new SandboxValidator({
34
+ * executor: localExecutor,
35
+ * testCommand: 'npm test'
36
+ * });
37
+ *
38
+ * const result = await sandbox.validate(mutation);
39
+ * if (result.passed) {
40
+ * console.log('Mutation is safe to apply');
41
+ * }
42
+ * ```
43
+ */
44
+ export declare class SandboxValidator {
45
+ private readonly config;
46
+ /**
47
+ * Create a new sandbox validator.
48
+ *
49
+ * @param config - Configuration options
50
+ */
51
+ constructor(config: SandboxConfig);
52
+ /**
53
+ * Validate a mutation in the sandbox.
54
+ *
55
+ * @param mutation - The mutation to validate
56
+ * @param targetPath - Path to the target file to mutate (optional)
57
+ * @returns Validation result
58
+ */
59
+ validate(mutation: Mutation, targetPath?: string): Promise<ValidationResult>;
60
+ /**
61
+ * Validate multiple mutations.
62
+ *
63
+ * @param mutations - Mutations to validate
64
+ * @param targetPath - Target file path
65
+ * @returns Array of validation results
66
+ */
67
+ validateBatch(mutations: Mutation[], targetPath?: string): Promise<Map<string, ValidationResult>>;
68
+ /**
69
+ * Create a sandbox directory.
70
+ */
71
+ private createSandbox;
72
+ /**
73
+ * Apply mutation to the sandbox.
74
+ */
75
+ private applyMutation;
76
+ /**
77
+ * Run tests in the sandbox.
78
+ */
79
+ private runTests;
80
+ /**
81
+ * Cleanup sandbox directory.
82
+ */
83
+ private cleanup;
84
+ /**
85
+ * Log message if verbose mode is enabled.
86
+ */
87
+ private log;
88
+ }
89
+ /**
90
+ * Create a new sandbox validator.
91
+ *
92
+ * @param config - Configuration options
93
+ * @returns New SandboxValidator instance
94
+ */
95
+ export declare function createSandbox(config: SandboxConfig): SandboxValidator;
96
+ //# sourceMappingURL=sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/evolution/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK7D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiE;IAExF;;;;OAIG;gBACS,MAAM,EAAE,aAAa;IAUjC;;;;;;OAMG;IACG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiClF;;;;;;OAMG;IACG,aAAa,CACjB,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAWzC;;OAEG;YACW,aAAa;IAU3B;;OAEG;YACW,aAAa;IAc3B;;OAEG;YACW,QAAQ;IA0CtB;;OAEG;YACW,OAAO;IASrB;;OAEG;IACH,OAAO,CAAC,GAAG;CAKZ;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAErE"}