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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 MycoHive
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,222 @@
1
+ # MycoHive-Claw
2
+
3
+ > OpenClaw Plugin for Multi-Agent Orchestration with LLM Intent Routing
4
+
5
+ [English](#english) | [中文](#中文)
6
+
7
+ ---
8
+
9
+ ## English
10
+
11
+ ### Overview
12
+
13
+ MycoHive-Claw is an OpenClaw plugin that implements a **corporate-style multi-agent collaboration system** with 24 specialized agents. It features **LLM-driven intent analysis** that automatically routes user requests to the appropriate agents — no manual `@agent` or `!!` prefixes needed.
14
+
15
+ ### Architecture
16
+
17
+ ```
18
+ Entry Layer → Router (LLM Intent Analysis)
19
+
20
+ Coordinator (Task Decomposition)
21
+
22
+ ┌──────────┴──────────┐
23
+ ↓ ↓ ↓
24
+ Management Execution Review
25
+ (planner, (coder, (reviewer,
26
+ observer) frontend, qa,
27
+ backend...) security)
28
+ ```
29
+
30
+ **24 Agents** organized in 7 categories:
31
+ - **Entry**: `front_director`, `router`
32
+ - **Management**: `coordinator`, `planner`, `observer`
33
+ - **Architecture**: `architect`
34
+ - **Execution**: `coder`, `frontend_dev`, `backend_dev`, `api_dev`, `data_engineer`, `scripter`, `researcher`, `writer`, `translator`
35
+ - **Review**: `reviewer`, `qa`, `security`, `evaluator`
36
+ - **Tool**: `browser`, `scraper`, `deployer`
37
+ - **Autonomous**: `builder`, `dreamer`
38
+
39
+ ### Key Features
40
+
41
+ - **LLM Intent Routing** — Natural language auto-routing without `@xxx` / `!!` prefixes
42
+ - **Context Tree** — WAL-based incremental persistence with crash recovery and CRC validation
43
+ - **Event Bus** — Trie-prefix subscription matching + DLQ retry with exponential backoff
44
+ - **Circuit Breaker** — Failure protection for dispatch pipeline
45
+ - **Workspace Loader** — Dynamic agent capability discovery from filesystem
46
+ - **Review Agent Isolation** — `session_mode: isolated` for reviewer/qa/security/evaluator
47
+
48
+ ### Requirements
49
+
50
+ - **OpenClaw** (Plugin SDK compatible version)
51
+ - **Node.js 18+** (for building)
52
+ - **TypeScript 5.x** (dev dependency included)
53
+
54
+ ### Installation
55
+
56
+ ```bash
57
+ # Install via npm (recommended)
58
+ npm install mycohive-claw
59
+
60
+ # Or install from GitHub directly
61
+ npm install github:LiamLucas-m/MycoHive-Claw
62
+
63
+ # Install to OpenClaw
64
+ openclaw plugins install ./mycohive-claw
65
+
66
+ # Restart OpenClaw
67
+ openclaw restart
68
+ ```
69
+
70
+ ### Update
71
+
72
+ ```bash
73
+ # Pull latest changes
74
+ git pull
75
+
76
+ # Rebuild
77
+ npm run build
78
+
79
+ # Restart OpenClaw
80
+ openclaw restart
81
+ ```
82
+
83
+ ### Uninstall
84
+
85
+ ```bash
86
+ openclaw plugins uninstall mycohive-claw
87
+ ```
88
+
89
+ ### Project Structure
90
+
91
+ ```
92
+ src/
93
+ ├── index.ts # Plugin entry (createExtension)
94
+ ├── setup-entry.ts # Setup entry (setup)
95
+ ├── router.ts # Intent routing + dispatch with circuit breaker
96
+ ├── intent-analyzer.ts # LLM + keyword dual-engine intent analysis
97
+ ├── context-tree.ts # WAL-based incremental persistence + CRC
98
+ ├── event-bus.ts # Pub/sub + Trie matching + DLQ retry
99
+ ├── circuit-breaker.ts # Failure protection
100
+ ├── tool-handlers.ts # mycohive_* tool handlers
101
+ ├── tools/mycohive-tools.ts # Tool registration
102
+ ├── workspace-loader.ts # Agent workspace loader (SOUL/SKILL/RULES/CONFIG)
103
+ ├── metrics.ts # Metrics collection
104
+ ├── rate-limiter.ts # Rate limiting
105
+ ├── result-cache.ts # Result caching
106
+ ├── token-counter.ts # Token counting
107
+ ├── logger.ts # Logging
108
+ ├── i18n.ts # Internationalization
109
+ └── types.ts # Shared type definitions
110
+
111
+ workspaces/ # 24 Agent workspace definitions (SOUL.md + SKILL.md + RULES.md + CONFIG.md)
112
+ ```
113
+
114
+ ### License
115
+
116
+ MIT
117
+
118
+ ---
119
+
120
+ ## 中文
121
+
122
+ ### 概述
123
+
124
+ MycoHive-Claw 是一个 OpenClaw 插件,实现了**企业级多 Agent 协作系统**,包含 **24 个专业 Agent**。通过 **LLM 驱动的意图分析**自动将用户请求路由到合适的 Agent,无需手动指定 `@agent` 或 `!!` 前缀。
125
+
126
+ ### 架构
127
+
128
+ ```
129
+ 入口层 → 路由器(LLM 意图分析)
130
+
131
+ 协调者(任务分解)
132
+
133
+ ┌───────────┴───────────┐
134
+ ↓ ↓ ↓
135
+ 管理 执行 审查
136
+ (planner, (coder, (reviewer,
137
+ observer) frontend, qa,
138
+ backend...) security)
139
+ ```
140
+
141
+ ### 24 个 Agent
142
+
143
+ - **入口层**: front_director, router
144
+ - **管理类**: coordinator, planner, observer
145
+ - **架构类**: architect
146
+ - **执行类**: coder, frontend_dev, backend_dev, api_dev, data_engineer, scripter, researcher, writer, translator
147
+ - **审查类**: reviewer, qa, security, evaluator
148
+ - **工具类**: browser, scraper, deployer
149
+ - **自主产出类**: builder, dreamer
150
+
151
+ ### 核心特性
152
+
153
+ - **LLM 意图路由** — 自然语言自动路由,无需 `@xxx` / `!!` 前缀
154
+ - **Context Tree** — WAL 增量持久化 + CRC 校验 + 崩溃恢复
155
+ - **Event Bus** — 前缀树订阅匹配 + DLQ 重试(指数退避)
156
+ - **熔断器** — 派发管道故障保护
157
+ - **Workspace Loader** — 文件系统动态 Agent 能力发现
158
+ - **审查类 Agent 隔离** — reviewer/qa/security/evaluator 使用独立 Session
159
+
160
+ ### 系统要求
161
+
162
+ - **OpenClaw**(兼容 Plugin SDK 版本)
163
+ - **Node.js 18+**
164
+ - **TypeScript 5.x**
165
+
166
+ ### 安装
167
+
168
+ ```bash
169
+ # 通过 npm 安装(推荐)
170
+ npm install mycohive-claw
171
+
172
+ # 或从 GitHub 直接安装
173
+ npm install github:LiamLucas-m/MycoHive-Claw
174
+
175
+ # 安装到 OpenClaw
176
+ openclaw plugins install ./mycohive-claw
177
+
178
+ # 重启 OpenClaw
179
+ openclaw restart
180
+ ```
181
+
182
+ ### 更新
183
+
184
+ ```bash
185
+ npm install mycohive-claw@latest
186
+ openclaw restart
187
+ ```
188
+
189
+ ### 卸载
190
+
191
+ ```bash
192
+ openclaw plugins uninstall mycohive-claw
193
+ ```
194
+
195
+ ### 目录结构
196
+
197
+ ```
198
+ src/ # TypeScript 源码
199
+ ├── index.ts # 插件入口
200
+ ├── setup-entry.ts # 安装入口
201
+ ├── router.ts # 意图路由(含熔断器)
202
+ ├── intent-analyzer.ts # LLM + 关键词双引擎意图分析
203
+ ├── context-tree.ts # WAL 增量持久化 + CRC 校验
204
+ ├── event-bus.ts # 事件总线(前缀树 + DLQ 重试)
205
+ ├── circuit-breaker.ts # 熔断器
206
+ ├── tool-handlers.ts # mycohive_* 工具处理
207
+ ├── tools/mycohive-tools.ts # 工具注册
208
+ ├── workspace-loader.ts # Agent workspace 加载器
209
+ ├── metrics.ts # 指标收集
210
+ ├── rate-limiter.ts # 限流
211
+ ├── result-cache.ts # 结果缓存
212
+ ├── token-counter.ts # Token 计数
213
+ ├── logger.ts # 日志
214
+ ├── i18n.ts # 国际化
215
+ └── types.ts # 类型定义
216
+
217
+ workspaces/ # 24 个 Agent 工作区定义(SOUL.md + SKILL.md + RULES.md + CONFIG.md)
218
+ ```
219
+
220
+ ### License
221
+
222
+ MIT
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Circuit Breaker 模块
3
+ * 版本: v4.0.0
4
+ *
5
+ * 熔断机制:连续失败超过阈值时暂停路由,防止雪崩
6
+ */
7
+ export declare enum CircuitState {
8
+ CLOSED = "closed",// 正常,允许请求
9
+ OPEN = "open",// 熔断,拒绝请求
10
+ HALF_OPEN = "half_open"
11
+ }
12
+ export interface CircuitBreakerConfig {
13
+ failureThreshold: number;
14
+ successThreshold: number;
15
+ timeoutMs: number;
16
+ monitorIntervalMs: number;
17
+ }
18
+ export interface CircuitBreakerStats {
19
+ state: CircuitState;
20
+ failures: number;
21
+ successes: number;
22
+ lastFailureTime: number | null;
23
+ lastSuccessTime: number | null;
24
+ totalRequests: number;
25
+ totalFailures: number;
26
+ }
27
+ export declare class CircuitBreaker {
28
+ private config;
29
+ private state;
30
+ private failures;
31
+ private successes;
32
+ private lastFailureTime;
33
+ private lastSuccessTime;
34
+ private totalRequests;
35
+ private totalFailures;
36
+ private monitorTimer;
37
+ private logger;
38
+ constructor(name: string, config?: Partial<CircuitBreakerConfig>);
39
+ /**
40
+ * 执行请求,自动处理熔断
41
+ * 返回 { success: true, result } 或 { success: false, error, rejected: true }
42
+ */
43
+ execute<T>(operation: () => Promise<T>, fallback?: () => Promise<T>): Promise<{
44
+ success: boolean;
45
+ result?: T;
46
+ error?: Error;
47
+ rejected?: boolean;
48
+ }>;
49
+ /**
50
+ * 手动记录成功
51
+ */
52
+ recordSuccess(): void;
53
+ /**
54
+ * 手动记录失败
55
+ */
56
+ recordFailure(): void;
57
+ /**
58
+ * 获取当前状态
59
+ */
60
+ getState(): CircuitState;
61
+ /**
62
+ * 获取统计数据
63
+ */
64
+ getStats(): CircuitBreakerStats;
65
+ /**
66
+ * 重置熔断器
67
+ */
68
+ reset(): void;
69
+ /**
70
+ * 停止监控
71
+ */
72
+ dispose(): void;
73
+ private transitionToOpen;
74
+ private transitionToHalfOpen;
75
+ private transitionToClosed;
76
+ private checkStateTransition;
77
+ private startMonitor;
78
+ }
79
+ export declare function getCircuitBreaker(name: string, config?: CircuitBreakerConfig): CircuitBreaker;
80
+ export declare function resetAllCircuitBreakers(): void;
81
+ export declare function disposeCircuitBreakers(): void;
82
+ //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,oBAAY,YAAY;IACtB,MAAM,WAAW,CAAM,UAAU;IACjC,IAAI,SAAS,CAAU,UAAU;IACjC,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AASD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,MAAM,CAAe;gBAEjB,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAKhE;;;OAGG;IACG,OAAO,CAAC,CAAC,EACb,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAuC/E;;OAEG;IACH,aAAa,IAAI,IAAI;IAYrB;;OAEG;IACH,aAAa,IAAI,IAAI;IAerB;;OAEG;IACH,QAAQ,IAAI,YAAY;IAIxB;;OAEG;IACH,QAAQ,IAAI,mBAAmB;IAY/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,YAAY;CAQrB;AAsCD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAE7F;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Circuit Breaker 模块
3
+ * 版本: v4.0.0
4
+ *
5
+ * 熔断机制:连续失败超过阈值时暂停路由,防止雪崩
6
+ */
7
+ import { getLogger } from "./logger.js";
8
+ export var CircuitState;
9
+ (function (CircuitState) {
10
+ CircuitState["CLOSED"] = "closed";
11
+ CircuitState["OPEN"] = "open";
12
+ CircuitState["HALF_OPEN"] = "half_open";
13
+ })(CircuitState || (CircuitState = {}));
14
+ const DEFAULT_CONFIG = {
15
+ failureThreshold: 5,
16
+ successThreshold: 3,
17
+ timeoutMs: 30000, // 30秒
18
+ monitorIntervalMs: 1000,
19
+ };
20
+ export class CircuitBreaker {
21
+ config;
22
+ state = CircuitState.CLOSED;
23
+ failures = 0;
24
+ successes = 0;
25
+ lastFailureTime = null;
26
+ lastSuccessTime = null;
27
+ totalRequests = 0;
28
+ totalFailures = 0;
29
+ monitorTimer = null;
30
+ logger = getLogger();
31
+ constructor(name, config) {
32
+ this.config = { ...DEFAULT_CONFIG, ...config };
33
+ this.startMonitor(name);
34
+ }
35
+ /**
36
+ * 执行请求,自动处理熔断
37
+ * 返回 { success: true, result } 或 { success: false, error, rejected: true }
38
+ */
39
+ async execute(operation, fallback) {
40
+ this.totalRequests++;
41
+ // 检查是否应该转换状态
42
+ this.checkStateTransition();
43
+ // OPEN 状态时拒绝请求
44
+ if (this.state === CircuitState.OPEN) {
45
+ this.logger.warn(`Circuit breaker OPEN, rejecting request`);
46
+ if (fallback) {
47
+ try {
48
+ const result = await fallback();
49
+ return { success: true, result };
50
+ }
51
+ catch (fbError) {
52
+ return { success: false, error: fbError, rejected: true };
53
+ }
54
+ }
55
+ return {
56
+ success: false,
57
+ error: new Error("Circuit breaker is open"),
58
+ rejected: true,
59
+ };
60
+ }
61
+ // HALF_OPEN 状态时只允许一个请求
62
+ // (通过 success/failure 计数来控制)
63
+ try {
64
+ const result = await operation();
65
+ this.recordSuccess();
66
+ return { success: true, result };
67
+ }
68
+ catch (error) {
69
+ this.recordFailure();
70
+ return { success: false, error: error };
71
+ }
72
+ }
73
+ /**
74
+ * 手动记录成功
75
+ */
76
+ recordSuccess() {
77
+ this.successes++;
78
+ this.lastSuccessTime = Date.now();
79
+ this.totalRequests++;
80
+ if (this.state === CircuitState.HALF_OPEN) {
81
+ if (this.successes >= this.config.successThreshold) {
82
+ this.transitionToClosed();
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * 手动记录失败
88
+ */
89
+ recordFailure() {
90
+ this.failures++;
91
+ this.lastFailureTime = Date.now();
92
+ this.totalFailures++;
93
+ if (this.state === CircuitState.CLOSED) {
94
+ if (this.failures >= this.config.failureThreshold) {
95
+ this.transitionToOpen();
96
+ }
97
+ }
98
+ else if (this.state === CircuitState.HALF_OPEN) {
99
+ // 半开状态失败,立即重新打开
100
+ this.transitionToOpen();
101
+ }
102
+ }
103
+ /**
104
+ * 获取当前状态
105
+ */
106
+ getState() {
107
+ return this.state;
108
+ }
109
+ /**
110
+ * 获取统计数据
111
+ */
112
+ getStats() {
113
+ return {
114
+ state: this.state,
115
+ failures: this.failures,
116
+ successes: this.successes,
117
+ lastFailureTime: this.lastFailureTime,
118
+ lastSuccessTime: this.lastSuccessTime,
119
+ totalRequests: this.totalRequests,
120
+ totalFailures: this.totalFailures,
121
+ };
122
+ }
123
+ /**
124
+ * 重置熔断器
125
+ */
126
+ reset() {
127
+ this.transitionToClosed();
128
+ this.totalRequests = 0;
129
+ this.totalFailures = 0;
130
+ }
131
+ /**
132
+ * 停止监控
133
+ */
134
+ dispose() {
135
+ if (this.monitorTimer) {
136
+ clearInterval(this.monitorTimer);
137
+ this.monitorTimer = null;
138
+ }
139
+ }
140
+ transitionToOpen() {
141
+ this.state = CircuitState.OPEN;
142
+ this.logger.warn(`Circuit breaker opened after ${this.failures} failures`);
143
+ }
144
+ transitionToHalfOpen() {
145
+ this.state = CircuitState.HALF_OPEN;
146
+ this.successes = 0;
147
+ this.logger.info(`Circuit breaker half-open`);
148
+ }
149
+ transitionToClosed() {
150
+ this.state = CircuitState.CLOSED;
151
+ this.failures = 0;
152
+ this.successes = 0;
153
+ this.logger.info(`Circuit breaker closed`);
154
+ }
155
+ checkStateTransition() {
156
+ if (this.state === CircuitState.OPEN) {
157
+ if (this.lastFailureTime) {
158
+ const elapsed = Date.now() - this.lastFailureTime;
159
+ if (elapsed >= this.config.timeoutMs) {
160
+ this.transitionToHalfOpen();
161
+ }
162
+ }
163
+ }
164
+ }
165
+ startMonitor(name) {
166
+ // 定期记录状态
167
+ this.monitorTimer = setInterval(() => {
168
+ if (this.state !== CircuitState.CLOSED) {
169
+ this.logger.info(`Circuit breaker [${name}] state: ${this.state}`, this.getStats());
170
+ }
171
+ }, this.config.monitorIntervalMs * 10);
172
+ }
173
+ }
174
+ // 熔断器管理器
175
+ class CircuitBreakerManager {
176
+ breakers = new Map();
177
+ logger = getLogger();
178
+ get(name, config) {
179
+ if (!this.breakers.has(name)) {
180
+ this.breakers.set(name, new CircuitBreaker(name, config));
181
+ }
182
+ return this.breakers.get(name);
183
+ }
184
+ getAll() {
185
+ return new Map(this.breakers);
186
+ }
187
+ reset(name) {
188
+ if (name) {
189
+ this.breakers.get(name)?.reset();
190
+ }
191
+ else {
192
+ for (const breaker of this.breakers.values()) {
193
+ breaker.reset();
194
+ }
195
+ }
196
+ }
197
+ dispose() {
198
+ for (const breaker of this.breakers.values()) {
199
+ breaker.dispose();
200
+ }
201
+ this.breakers.clear();
202
+ }
203
+ }
204
+ const globalManager = new CircuitBreakerManager();
205
+ export function getCircuitBreaker(name, config) {
206
+ return globalManager.get(name, config);
207
+ }
208
+ export function resetAllCircuitBreakers() {
209
+ globalManager.reset();
210
+ }
211
+ export function disposeCircuitBreakers() {
212
+ globalManager.dispose();
213
+ }
214
+ //# sourceMappingURL=circuit-breaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Context Tree 实现
3
+ * 版本: v4.0.0
4
+ *
5
+ * 全局共享上下文树,支持惰性加载,修复内存泄漏风险。
6
+ * 增量持久化:WAL(Write-Ahead Log)+ 定期 checkpoint + 批量写入
7
+ */
8
+ import { ContextNode, NodeState, TaskStatus, ProgressStep } from "./types.js";
9
+ export declare class ContextTree {
10
+ private storagePath;
11
+ private root;
12
+ private loadedNodes;
13
+ private dirtyNodes;
14
+ private wal;
15
+ private walFlushTimer;
16
+ private writeCountSinceCheckpoint;
17
+ private pendingWrites;
18
+ constructor(storagePath?: string);
19
+ private startWalFlushTimer;
20
+ private stopWalFlushTimer;
21
+ /**
22
+ * 刷新 WAL 到磁盘(增量写)
23
+ */
24
+ private flushWal;
25
+ /**
26
+ * 执行全量 checkpoint(合并 WAL 到主文件)
27
+ */
28
+ private performCheckpoint;
29
+ /**
30
+ * 从 checkpoint 恢复
31
+ */
32
+ private restoreFromCheckpoint;
33
+ /**
34
+ * 将待写入操作加入 pending WAL(用于批量合并)
35
+ */
36
+ private queueWalEntry;
37
+ /**
38
+ * 标记节点为脏
39
+ */
40
+ private markDirty;
41
+ /**
42
+ * 移除脏标记
43
+ */
44
+ private clearDirty;
45
+ private createRoot;
46
+ private load;
47
+ /**
48
+ * 应用 WAL 条目到内存树
49
+ */
50
+ private applyWalEntries;
51
+ private isMemoryMode;
52
+ /**
53
+ * 增量保存(仅保存脏节点,不保存整个树)
54
+ * 注意:为了兼容性,仍然提供全量保存方法 saveFull()
55
+ */
56
+ save(): void;
57
+ /**
58
+ * 全量保存(强制保存整个树,用于 shutdown 等场景)
59
+ */
60
+ saveFull(): void;
61
+ private findNode;
62
+ getNode(nodeId: string): ContextNode | null;
63
+ getTopic(topicId: string): ContextNode | null;
64
+ getActiveTopics(): ContextNode[];
65
+ getTasks(topicId: string): ContextNode[];
66
+ getArtifacts(taskId: string): ContextNode[];
67
+ getArtifact(artifactId: string): ContextNode | null;
68
+ getMessages(topicId: string): ContextNode[];
69
+ addTopic(topicId: string, label: string): ContextNode;
70
+ addTask(topicId: string, taskId: string, agent: string, taskDesc: string): ContextNode;
71
+ addArtifact(taskId: string, artifactId: string, artifactData: Record<string, unknown>): ContextNode;
72
+ addMessage(topicId: string, messageId: string, role: string, content: string, contextAnnotation?: Record<string, unknown>): ContextNode;
73
+ updateTopicState(topicId: string, state: NodeState, updates?: Partial<ContextNode>): void;
74
+ updateTaskState(taskId: string, state: NodeState, updates?: Partial<ContextNode> & {
75
+ task_status?: TaskStatus;
76
+ }): void;
77
+ addProgressStep(taskId: string, step: ProgressStep): void;
78
+ findTasksByState(state: NodeState): ContextNode[];
79
+ private findTasksRecursive;
80
+ findTopicsByState(state: NodeState): ContextNode[];
81
+ getStats(): {
82
+ topics: number;
83
+ tasks: number;
84
+ activeTopics: number;
85
+ activeTasks: number;
86
+ };
87
+ /**
88
+ * 销毁实例(清理定时器,强制刷盘)
89
+ */
90
+ dispose(): void;
91
+ }
92
+ export declare function getContextTree(storagePath?: string): ContextTree;
93
+ export declare function resetContextTree(): void;
94
+ //# sourceMappingURL=context-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tree.d.ts","sourceRoot":"","sources":["../src/context-tree.ts"],"names":[],"mappings":"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"}