mycohive-claw 4.0.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 (171) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +222 -0
  3. package/dist/circuit-breaker.d.ts +82 -0
  4. package/dist/circuit-breaker.d.ts.map +1 -0
  5. package/dist/circuit-breaker.js +214 -0
  6. package/dist/circuit-breaker.js.map +1 -0
  7. package/dist/context-tree.d.ts +94 -0
  8. package/dist/context-tree.d.ts.map +1 -0
  9. package/dist/context-tree.js +624 -0
  10. package/dist/context-tree.js.map +1 -0
  11. package/dist/event-bus.d.ts +174 -0
  12. package/dist/event-bus.d.ts.map +1 -0
  13. package/dist/event-bus.js +750 -0
  14. package/dist/event-bus.js.map +1 -0
  15. package/dist/i18n.d.ts +91 -0
  16. package/dist/i18n.d.ts.map +1 -0
  17. package/dist/i18n.js +150 -0
  18. package/dist/i18n.js.map +1 -0
  19. package/dist/index.d.ts +38 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +301 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/intent-analyzer.d.ts +119 -0
  24. package/dist/intent-analyzer.d.ts.map +1 -0
  25. package/dist/intent-analyzer.js +563 -0
  26. package/dist/intent-analyzer.js.map +1 -0
  27. package/dist/logger.d.ts +46 -0
  28. package/dist/logger.d.ts.map +1 -0
  29. package/dist/logger.js +126 -0
  30. package/dist/logger.js.map +1 -0
  31. package/dist/metrics.d.ts +98 -0
  32. package/dist/metrics.d.ts.map +1 -0
  33. package/dist/metrics.js +192 -0
  34. package/dist/metrics.js.map +1 -0
  35. package/dist/openclaw-api.d.ts +122 -0
  36. package/dist/openclaw-api.d.ts.map +1 -0
  37. package/dist/openclaw-api.js +8 -0
  38. package/dist/openclaw-api.js.map +1 -0
  39. package/dist/rate-limiter.d.ts +46 -0
  40. package/dist/rate-limiter.d.ts.map +1 -0
  41. package/dist/rate-limiter.js +134 -0
  42. package/dist/rate-limiter.js.map +1 -0
  43. package/dist/result-cache.d.ts +76 -0
  44. package/dist/result-cache.d.ts.map +1 -0
  45. package/dist/result-cache.js +158 -0
  46. package/dist/result-cache.js.map +1 -0
  47. package/dist/router.d.ts +90 -0
  48. package/dist/router.d.ts.map +1 -0
  49. package/dist/router.js +447 -0
  50. package/dist/router.js.map +1 -0
  51. package/dist/setup-entry.d.ts +18 -0
  52. package/dist/setup-entry.d.ts.map +1 -0
  53. package/dist/setup-entry.js +64 -0
  54. package/dist/setup-entry.js.map +1 -0
  55. package/dist/token-counter.d.ts +57 -0
  56. package/dist/token-counter.d.ts.map +1 -0
  57. package/dist/token-counter.js +125 -0
  58. package/dist/token-counter.js.map +1 -0
  59. package/dist/tool-handlers.d.ts +52 -0
  60. package/dist/tool-handlers.d.ts.map +1 -0
  61. package/dist/tool-handlers.js +317 -0
  62. package/dist/tool-handlers.js.map +1 -0
  63. package/dist/tools/mycohive-tools.d.ts +11 -0
  64. package/dist/tools/mycohive-tools.d.ts.map +1 -0
  65. package/dist/tools/mycohive-tools.js +160 -0
  66. package/dist/tools/mycohive-tools.js.map +1 -0
  67. package/dist/types.d.ts +58 -0
  68. package/dist/types.d.ts.map +1 -0
  69. package/dist/types.js +57 -0
  70. package/dist/types.js.map +1 -0
  71. package/dist/workspace-loader.d.ts +67 -0
  72. package/dist/workspace-loader.d.ts.map +1 -0
  73. package/dist/workspace-loader.js +175 -0
  74. package/dist/workspace-loader.js.map +1 -0
  75. package/package.json +52 -0
  76. package/workspaces/api_dev/CONFIG.md +31 -0
  77. package/workspaces/api_dev/RULES.md +8 -0
  78. package/workspaces/api_dev/SKILL.md +69 -0
  79. package/workspaces/api_dev/SOUL.md +19 -0
  80. package/workspaces/architect/CONFIG.md +32 -0
  81. package/workspaces/architect/RULES.md +8 -0
  82. package/workspaces/architect/SKILL.md +63 -0
  83. package/workspaces/architect/SOUL.md +19 -0
  84. package/workspaces/backend_dev/CONFIG.md +42 -0
  85. package/workspaces/backend_dev/RULES.md +8 -0
  86. package/workspaces/backend_dev/SKILL.md +41 -0
  87. package/workspaces/backend_dev/SOUL.md +19 -0
  88. package/workspaces/browser/CONFIG.md +42 -0
  89. package/workspaces/browser/RULES.md +8 -0
  90. package/workspaces/browser/SKILL.md +57 -0
  91. package/workspaces/browser/SOUL.md +19 -0
  92. package/workspaces/builder/CONFIG.md +31 -0
  93. package/workspaces/builder/RULES.md +8 -0
  94. package/workspaces/builder/SKILL.md +39 -0
  95. package/workspaces/builder/SOUL.md +18 -0
  96. package/workspaces/coder/CONFIG.md +44 -0
  97. package/workspaces/coder/RULES.md +9 -0
  98. package/workspaces/coder/SKILL.md +53 -0
  99. package/workspaces/coder/SOUL.md +19 -0
  100. package/workspaces/coordinator/CONFIG.md +62 -0
  101. package/workspaces/coordinator/RULES.md +8 -0
  102. package/workspaces/coordinator/SKILL.md +77 -0
  103. package/workspaces/coordinator/SOUL.md +20 -0
  104. package/workspaces/data_engineer/CONFIG.md +32 -0
  105. package/workspaces/data_engineer/RULES.md +8 -0
  106. package/workspaces/data_engineer/SKILL.md +44 -0
  107. package/workspaces/data_engineer/SOUL.md +19 -0
  108. package/workspaces/deployer/CONFIG.md +45 -0
  109. package/workspaces/deployer/RULES.md +8 -0
  110. package/workspaces/deployer/SKILL.md +74 -0
  111. package/workspaces/deployer/SOUL.md +19 -0
  112. package/workspaces/dreamer/CONFIG.md +34 -0
  113. package/workspaces/dreamer/RULES.md +8 -0
  114. package/workspaces/dreamer/SKILL.md +48 -0
  115. package/workspaces/dreamer/SOUL.md +19 -0
  116. package/workspaces/evaluator/CONFIG.md +40 -0
  117. package/workspaces/evaluator/RULES.md +21 -0
  118. package/workspaces/evaluator/SKILL.md +65 -0
  119. package/workspaces/evaluator/SOUL.md +20 -0
  120. package/workspaces/front_director/CONFIG.md +54 -0
  121. package/workspaces/front_director/RULES.md +8 -0
  122. package/workspaces/front_director/SKILL.md +52 -0
  123. package/workspaces/front_director/SOUL.md +20 -0
  124. package/workspaces/frontend_dev/CONFIG.md +33 -0
  125. package/workspaces/frontend_dev/RULES.md +8 -0
  126. package/workspaces/frontend_dev/SKILL.md +42 -0
  127. package/workspaces/frontend_dev/SOUL.md +19 -0
  128. package/workspaces/observer/CONFIG.md +60 -0
  129. package/workspaces/observer/RULES.md +7 -0
  130. package/workspaces/observer/SKILL.md +77 -0
  131. package/workspaces/observer/SOUL.md +19 -0
  132. package/workspaces/planner/CONFIG.md +43 -0
  133. package/workspaces/planner/RULES.md +8 -0
  134. package/workspaces/planner/SKILL.md +65 -0
  135. package/workspaces/planner/SOUL.md +20 -0
  136. package/workspaces/qa/CONFIG.md +32 -0
  137. package/workspaces/qa/RULES.md +8 -0
  138. package/workspaces/qa/SKILL.md +52 -0
  139. package/workspaces/qa/SOUL.md +19 -0
  140. package/workspaces/researcher/CONFIG.md +32 -0
  141. package/workspaces/researcher/RULES.md +8 -0
  142. package/workspaces/researcher/SKILL.md +58 -0
  143. package/workspaces/researcher/SOUL.md +20 -0
  144. package/workspaces/reviewer/CONFIG.md +41 -0
  145. package/workspaces/reviewer/RULES.md +17 -0
  146. package/workspaces/reviewer/SKILL.md +56 -0
  147. package/workspaces/reviewer/SOUL.md +20 -0
  148. package/workspaces/router/CONFIG.md +58 -0
  149. package/workspaces/router/RULES.md +8 -0
  150. package/workspaces/router/SKILL.md +97 -0
  151. package/workspaces/router/SOUL.md +20 -0
  152. package/workspaces/scraper/CONFIG.md +41 -0
  153. package/workspaces/scraper/RULES.md +8 -0
  154. package/workspaces/scraper/SKILL.md +51 -0
  155. package/workspaces/scraper/SOUL.md +19 -0
  156. package/workspaces/scripter/CONFIG.md +42 -0
  157. package/workspaces/scripter/RULES.md +8 -0
  158. package/workspaces/scripter/SKILL.md +54 -0
  159. package/workspaces/scripter/SOUL.md +18 -0
  160. package/workspaces/security/CONFIG.md +47 -0
  161. package/workspaces/security/RULES.md +8 -0
  162. package/workspaces/security/SKILL.md +50 -0
  163. package/workspaces/security/SOUL.md +19 -0
  164. package/workspaces/translator/CONFIG.md +43 -0
  165. package/workspaces/translator/RULES.md +8 -0
  166. package/workspaces/translator/SKILL.md +35 -0
  167. package/workspaces/translator/SOUL.md +19 -0
  168. package/workspaces/writer/CONFIG.md +31 -0
  169. package/workspaces/writer/RULES.md +8 -0
  170. package/workspaces/writer/SKILL.md +40 -0
  171. package/workspaces/writer/SOUL.md +19 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * OpenClaw API 类型定义
3
+ * 版本: v4.0.0
4
+ *
5
+ * 来自 OpenClaw Plugin SDK 的 API 接口类型
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=openclaw-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-api.js","sourceRoot":"","sources":["../src/openclaw-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Rate Limiter 模块
3
+ * 版本: v4.0.0
4
+ *
5
+ * 基于 Token Bucket 的限流器
6
+ */
7
+ export interface RateLimiterConfig {
8
+ maxTokens: number;
9
+ refillRate: number;
10
+ windowMs: number;
11
+ maxRequestsPerWindow: number;
12
+ }
13
+ export declare class RateLimiter {
14
+ private config;
15
+ private tokens;
16
+ private lastRefill;
17
+ private requests;
18
+ private logger;
19
+ constructor(config?: Partial<RateLimiterConfig>);
20
+ /**
21
+ * 检查是否允许请求
22
+ * @param key 标识符(如 sessionKey)
23
+ * @returns 是否允许
24
+ */
25
+ tryAcquire(key: string): boolean;
26
+ /**
27
+ * 获取剩余请求次数
28
+ */
29
+ getRemaining(key: string): number;
30
+ /**
31
+ * 重置限流器
32
+ */
33
+ reset(key?: string): void;
34
+ /**
35
+ * 消耗令牌
36
+ */
37
+ private tryConsume;
38
+ /**
39
+ * 补充令牌
40
+ */
41
+ private refill;
42
+ }
43
+ export declare function getRateLimiter(key: string, config?: RateLimiterConfig): RateLimiter;
44
+ export declare function resetAllRateLimiters(): void;
45
+ export declare function disposeRateLimiters(): void;
46
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAcD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,MAAM,CAAsC;gBAExC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAM/C;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAsBhC;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAejC;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAUzB;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,MAAM;CAUf;AAgCD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAEnF;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Rate Limiter 模块
3
+ * 版本: v4.0.0
4
+ *
5
+ * 基于 Token Bucket 的限流器
6
+ */
7
+ import { getLogger } from "./logger.js";
8
+ const DEFAULT_CONFIG = {
9
+ maxTokens: 100,
10
+ refillRate: 10, // 每秒10个
11
+ windowMs: 60000, // 1分钟
12
+ maxRequestsPerWindow: 100,
13
+ };
14
+ export class RateLimiter {
15
+ config;
16
+ tokens;
17
+ lastRefill;
18
+ requests = new Map();
19
+ logger = getLogger().child("[RateLimiter]");
20
+ constructor(config) {
21
+ this.config = { ...DEFAULT_CONFIG, ...config };
22
+ this.tokens = this.config.maxTokens;
23
+ this.lastRefill = Date.now();
24
+ }
25
+ /**
26
+ * 检查是否允许请求
27
+ * @param key 标识符(如 sessionKey)
28
+ * @returns 是否允许
29
+ */
30
+ tryAcquire(key) {
31
+ this.refill();
32
+ // 检查窗口限流
33
+ const now = Date.now();
34
+ const entry = this.requests.get(key);
35
+ if (!entry || now - entry.windowStart >= this.config.windowMs) {
36
+ // 新窗口或新key
37
+ this.requests.set(key, { count: 1, windowStart: now });
38
+ return this.tryConsume();
39
+ }
40
+ if (entry.count >= this.config.maxRequestsPerWindow) {
41
+ this.logger.warn(`Rate limit exceeded for ${key}`);
42
+ return false;
43
+ }
44
+ entry.count++;
45
+ return this.tryConsume();
46
+ }
47
+ /**
48
+ * 获取剩余请求次数
49
+ */
50
+ getRemaining(key) {
51
+ this.refill();
52
+ const entry = this.requests.get(key);
53
+ if (!entry) {
54
+ return this.config.maxRequestsPerWindow;
55
+ }
56
+ const now = Date.now();
57
+ if (now - entry.windowStart >= this.config.windowMs) {
58
+ return this.config.maxRequestsPerWindow;
59
+ }
60
+ return Math.max(0, this.config.maxRequestsPerWindow - entry.count);
61
+ }
62
+ /**
63
+ * 重置限流器
64
+ */
65
+ reset(key) {
66
+ if (key) {
67
+ this.requests.delete(key);
68
+ }
69
+ else {
70
+ this.requests.clear();
71
+ }
72
+ this.tokens = this.config.maxTokens;
73
+ this.lastRefill = Date.now();
74
+ }
75
+ /**
76
+ * 消耗令牌
77
+ */
78
+ tryConsume() {
79
+ if (this.tokens > 0) {
80
+ this.tokens--;
81
+ return true;
82
+ }
83
+ this.logger.warn("Token bucket exhausted");
84
+ return false;
85
+ }
86
+ /**
87
+ * 补充令牌
88
+ */
89
+ refill() {
90
+ const now = Date.now();
91
+ const elapsed = now - this.lastRefill;
92
+ const tokensToAdd = Math.floor(elapsed * (this.config.refillRate / 1000));
93
+ if (tokensToAdd > 0) {
94
+ this.tokens = Math.min(this.config.maxTokens, this.tokens + tokensToAdd);
95
+ this.lastRefill = now;
96
+ }
97
+ }
98
+ }
99
+ /**
100
+ * 全局限流器管理器
101
+ */
102
+ class RateLimiterManager {
103
+ limiters = new Map();
104
+ get(key, config) {
105
+ if (!this.limiters.has(key)) {
106
+ this.limiters.set(key, new RateLimiter(config));
107
+ }
108
+ return this.limiters.get(key);
109
+ }
110
+ reset(key) {
111
+ if (key) {
112
+ this.limiters.get(key)?.reset();
113
+ }
114
+ else {
115
+ for (const limiter of this.limiters.values()) {
116
+ limiter.reset();
117
+ }
118
+ }
119
+ }
120
+ dispose() {
121
+ this.limiters.clear();
122
+ }
123
+ }
124
+ const globalManager = new RateLimiterManager();
125
+ export function getRateLimiter(key, config) {
126
+ return globalManager.get(key, config);
127
+ }
128
+ export function resetAllRateLimiters() {
129
+ globalManager.reset();
130
+ }
131
+ export function disposeRateLimiters() {
132
+ globalManager.dispose();
133
+ }
134
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Result Cache 模块
3
+ * 版本: v4.0.0
4
+ *
5
+ * 工具结果缓存,减少重复 LLM 调用。
6
+ * 基于内容 hash 的智能缓存,支持 TTL 和 LRU 淘汰。
7
+ */
8
+ export interface CacheEntry<T> {
9
+ key: string;
10
+ value: T;
11
+ createdAt: number;
12
+ lastAccessedAt: number;
13
+ hits: number;
14
+ }
15
+ export interface CacheConfig {
16
+ maxSize: number;
17
+ maxAgeMs: number;
18
+ maxMemoryMB: number;
19
+ }
20
+ export declare class ResultCache<T = unknown> {
21
+ private cache;
22
+ private config;
23
+ private logger;
24
+ private totalHits;
25
+ private totalMisses;
26
+ constructor(config?: Partial<CacheConfig>);
27
+ /**
28
+ * 生成缓存 key
29
+ */
30
+ static generateKey(...parts: string[]): string;
31
+ /**
32
+ * 获取缓存值
33
+ */
34
+ get(key: string): T | null;
35
+ /**
36
+ * 设置缓存值
37
+ */
38
+ set(key: string, value: T): void;
39
+ /**
40
+ * 删除缓存项
41
+ */
42
+ delete(key: string): boolean;
43
+ /**
44
+ * 清空缓存
45
+ */
46
+ clear(): void;
47
+ /**
48
+ * 获取缓存统计
49
+ */
50
+ getStats(): {
51
+ size: number;
52
+ maxSize: number;
53
+ hitRate: number;
54
+ totalHits: number;
55
+ totalMisses: number;
56
+ };
57
+ /**
58
+ * LRU 淘汰:删除最久未访问的条目
59
+ */
60
+ private evictLRU;
61
+ /**
62
+ * 启动定期清理过期条目
63
+ */
64
+ private cleanupTimer;
65
+ private startCleanupTimer;
66
+ /**
67
+ * 清理过期条目
68
+ */
69
+ cleanup(): number;
70
+ /**
71
+ * 停止清理定时器
72
+ */
73
+ dispose(): void;
74
+ }
75
+ export declare function getResultCache<T = unknown>(): ResultCache<T>;
76
+ //# sourceMappingURL=result-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-cache.d.ts","sourceRoot":"","sources":["../src/result-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD,qBAAa,WAAW,CAAC,CAAC,GAAG,OAAO;IAClC,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAK;gBAEZ,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAK7C;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAK9C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAuB1B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAiBhC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB;IAaD;;OAEG;IACH,OAAO,CAAC,QAAQ;IAiBhB;;OAEG;IACH,OAAO,CAAC,YAAY,CAA+C;IAEnE,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,IAAI,MAAM;IAkBjB;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB;AAKD,wBAAgB,cAAc,CAAC,CAAC,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,CAK5D"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Result Cache 模块
3
+ * 版本: v4.0.0
4
+ *
5
+ * 工具结果缓存,减少重复 LLM 调用。
6
+ * 基于内容 hash 的智能缓存,支持 TTL 和 LRU 淘汰。
7
+ */
8
+ import { getLogger } from "./logger.js";
9
+ import * as crypto from "crypto";
10
+ const DEFAULT_CONFIG = {
11
+ maxSize: 1000,
12
+ maxAgeMs: 5 * 60 * 1000, // 5 分钟
13
+ maxMemoryMB: 50,
14
+ };
15
+ export class ResultCache {
16
+ cache = new Map();
17
+ config;
18
+ logger = getLogger().child("[ResultCache]");
19
+ totalHits = 0;
20
+ totalMisses = 0;
21
+ constructor(config = {}) {
22
+ this.config = { ...DEFAULT_CONFIG, ...config };
23
+ this.startCleanupTimer();
24
+ }
25
+ /**
26
+ * 生成缓存 key
27
+ */
28
+ static generateKey(...parts) {
29
+ const content = parts.join("|");
30
+ return crypto.createHash("sha256").update(content).digest("hex").slice(0, 16);
31
+ }
32
+ /**
33
+ * 获取缓存值
34
+ */
35
+ get(key) {
36
+ const entry = this.cache.get(key);
37
+ if (!entry) {
38
+ this.totalMisses++;
39
+ return null;
40
+ }
41
+ // 检查是否过期
42
+ if (Date.now() - entry.createdAt > this.config.maxAgeMs) {
43
+ this.cache.delete(key);
44
+ this.totalMisses++;
45
+ return null;
46
+ }
47
+ // 更新访问信息
48
+ entry.lastAccessedAt = Date.now();
49
+ entry.hits++;
50
+ this.totalHits++;
51
+ return entry.value;
52
+ }
53
+ /**
54
+ * 设置缓存值
55
+ */
56
+ set(key, value) {
57
+ // 如果已满,执行 LRU 淘汰
58
+ if (this.cache.size >= this.config.maxSize) {
59
+ this.evictLRU();
60
+ }
61
+ const entry = {
62
+ key,
63
+ value,
64
+ createdAt: Date.now(),
65
+ lastAccessedAt: Date.now(),
66
+ hits: 0,
67
+ };
68
+ this.cache.set(key, entry);
69
+ }
70
+ /**
71
+ * 删除缓存项
72
+ */
73
+ delete(key) {
74
+ return this.cache.delete(key);
75
+ }
76
+ /**
77
+ * 清空缓存
78
+ */
79
+ clear() {
80
+ this.cache.clear();
81
+ }
82
+ /**
83
+ * 获取缓存统计
84
+ */
85
+ getStats() {
86
+ const total = this.totalHits + this.totalMisses;
87
+ const hitRate = total > 0 ? (this.totalHits / total) * 100 : 0;
88
+ return {
89
+ size: this.cache.size,
90
+ maxSize: this.config.maxSize,
91
+ hitRate: Math.round(hitRate * 100) / 100,
92
+ totalHits: this.totalHits,
93
+ totalMisses: this.totalMisses,
94
+ };
95
+ }
96
+ /**
97
+ * LRU 淘汰:删除最久未访问的条目
98
+ */
99
+ evictLRU() {
100
+ let oldestKey = null;
101
+ let oldestTime = Infinity;
102
+ for (const [key, entry] of this.cache) {
103
+ if (entry.lastAccessedAt < oldestTime) {
104
+ oldestTime = entry.lastAccessedAt;
105
+ oldestKey = key;
106
+ }
107
+ }
108
+ if (oldestKey) {
109
+ this.cache.delete(oldestKey);
110
+ this.logger.debug(`Evicted LRU entry: ${oldestKey}`);
111
+ }
112
+ }
113
+ /**
114
+ * 启动定期清理过期条目
115
+ */
116
+ cleanupTimer = null;
117
+ startCleanupTimer() {
118
+ this.cleanupTimer = setInterval(() => {
119
+ this.cleanup();
120
+ }, 60000); // 每分钟清理一次
121
+ }
122
+ /**
123
+ * 清理过期条目
124
+ */
125
+ cleanup() {
126
+ const now = Date.now();
127
+ let removed = 0;
128
+ for (const [key, entry] of this.cache) {
129
+ if (now - entry.createdAt > this.config.maxAgeMs) {
130
+ this.cache.delete(key);
131
+ removed++;
132
+ }
133
+ }
134
+ if (removed > 0) {
135
+ this.logger.debug(`Cleaned up ${removed} expired entries`);
136
+ }
137
+ return removed;
138
+ }
139
+ /**
140
+ * 停止清理定时器
141
+ */
142
+ dispose() {
143
+ if (this.cleanupTimer) {
144
+ clearInterval(this.cleanupTimer);
145
+ this.cleanupTimer = null;
146
+ }
147
+ this.cache.clear();
148
+ }
149
+ }
150
+ // 全局缓存实例
151
+ let globalCache = null;
152
+ export function getResultCache() {
153
+ if (!globalCache) {
154
+ globalCache = new ResultCache();
155
+ }
156
+ return globalCache;
157
+ }
158
+ //# sourceMappingURL=result-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-cache.js","sourceRoot":"","sources":["../src/result-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Router 模块
3
+ * 版本: v4.0.0
4
+ *
5
+ * 意图分析 + 自动路由的核心模块。
6
+ * 取消 @xxx/!! 标识,用户只需描述需求,系统自动分析并派发。
7
+ * 包含:dispatch 重试、熔断机制
8
+ */
9
+ import { IntentAnalyzer, Intent } from "./intent-analyzer.js";
10
+ import { EventBus } from "./event-bus.js";
11
+ import { ContextTree } from "./context-tree.js";
12
+ import { WorkspaceLoader } from "./workspace-loader.js";
13
+ import type { OpenClawAPI } from "./openclaw-api.js";
14
+ export interface RouterConfig {
15
+ defaultAgents: string[];
16
+ fallbackAgent: string;
17
+ confidenceThreshold: number;
18
+ maxRetries: number;
19
+ dispatchTimeoutMs: number;
20
+ dispatchRetries: number;
21
+ }
22
+ export declare class Router {
23
+ private sharedStateStore;
24
+ private analyzer;
25
+ private eventBus;
26
+ private contextTree;
27
+ private config;
28
+ private openclawApi;
29
+ private logger;
30
+ private circuitBreaker;
31
+ private workspaceLoader;
32
+ constructor(config?: Partial<RouterConfig>, eventBus?: EventBus, contextTree?: ContextTree);
33
+ /**
34
+ * 从内存 shared_state 读取(带 TTL 缓存)
35
+ */
36
+ private readSharedState;
37
+ /**
38
+ * 写入内存 shared_state(5秒 TTL)
39
+ */
40
+ private writeSharedState;
41
+ /**
42
+ * 检查是否有 route_error 并尝试 replan
43
+ */
44
+ private checkAndHandleRouteError;
45
+ setOpenClawAPI(api: OpenClawAPI): void;
46
+ setLLMClient(client: (prompt: string, context?: Record<string, unknown>) => Promise<Record<string, unknown> | string>): void;
47
+ setWorkspaceLoader(loader: WorkspaceLoader): void;
48
+ /**
49
+ * 核心路由方法
50
+ * 接收用户消息,自动分析意图并派发到对应 Agent
51
+ */
52
+ route(userMessage: string, sessionKey: string, context?: Record<string, unknown>): Promise<RoutingResult>;
53
+ private doRoute;
54
+ /**
55
+ * 带重试的派发
56
+ */
57
+ private dispatchWithRetry;
58
+ private sleep;
59
+ /**
60
+ * 派发执行计划到 Agent
61
+ */
62
+ private dispatch;
63
+ private dispatchSingle;
64
+ private getAgentConfig;
65
+ private getOrCreateTopic;
66
+ private createTopicId;
67
+ private createTaskId;
68
+ /**
69
+ * 确认路由(用于置信度不足时)
70
+ */
71
+ confirmAndRoute(userMessage: string, sessionKey: string, confirmedAgents: string[], context?: Record<string, unknown>): Promise<RoutingResult>;
72
+ /**
73
+ * 获取熔断器状态
74
+ */
75
+ getCircuitBreakerStats(): import("./circuit-breaker.js").CircuitBreakerStats;
76
+ }
77
+ export interface RoutingResult {
78
+ success: boolean;
79
+ intent: Intent;
80
+ plan?: ReturnType<IntentAnalyzer["generateExecutionPlan"]>;
81
+ topicId?: string;
82
+ taskId?: string;
83
+ reason?: string;
84
+ requiresConfirmation?: boolean;
85
+ suggestedAgents?: string[];
86
+ rejected?: boolean;
87
+ }
88
+ export declare function getRouter(): Router;
89
+ export declare function setRouter(router: Router | null): void;
90
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}