claude-mycelium 2.0.0 → 2.2.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 (208) hide show
  1. package/.agent-meta/_inhibitors.ndjson +1287 -0
  2. package/.agent-meta/_quarantine.json +45 -0
  3. package/.agent-meta/config.json +9 -0
  4. package/.agent-meta/tasks/_active.json +4 -0
  5. package/.agent-meta/tasks/task_0657b028-05a0-4b0c-b0b9-a4eae3d66cd9.json +168 -0
  6. package/.claude/memory.db +0 -0
  7. package/.claude/settings.local.json +4 -1
  8. package/README.md +85 -233
  9. package/SECURITY.md +145 -0
  10. package/dist/agent/task-worker.d.ts +11 -0
  11. package/dist/agent/task-worker.d.ts.map +1 -0
  12. package/dist/agent/task-worker.js +173 -0
  13. package/dist/agent/task-worker.js.map +1 -0
  14. package/dist/agent/worker.d.ts +8 -0
  15. package/dist/agent/worker.d.ts.map +1 -0
  16. package/dist/agent/worker.js +97 -0
  17. package/dist/agent/worker.js.map +1 -0
  18. package/dist/bin.d.ts +7 -0
  19. package/dist/bin.d.ts.map +1 -0
  20. package/dist/bin.js +11 -0
  21. package/dist/bin.js.map +1 -0
  22. package/dist/cli/cost.d.ts +10 -0
  23. package/dist/cli/cost.d.ts.map +1 -0
  24. package/dist/cli/cost.js +163 -0
  25. package/dist/cli/cost.js.map +1 -0
  26. package/dist/cli/gc.d.ts +10 -0
  27. package/dist/cli/gc.d.ts.map +1 -0
  28. package/dist/cli/gc.js +108 -0
  29. package/dist/cli/gc.js.map +1 -0
  30. package/dist/cli/gradients.d.ts +10 -0
  31. package/dist/cli/gradients.d.ts.map +1 -0
  32. package/dist/cli/gradients.js +70 -0
  33. package/dist/cli/gradients.js.map +1 -0
  34. package/dist/cli/grow.d.ts +17 -0
  35. package/dist/cli/grow.d.ts.map +1 -0
  36. package/dist/cli/grow.js +373 -0
  37. package/dist/cli/grow.js.map +1 -0
  38. package/dist/cli/index.d.ts +17 -0
  39. package/dist/cli/index.d.ts.map +1 -0
  40. package/dist/cli/index.js +74 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/cli/init.d.ts +11 -0
  43. package/dist/cli/init.d.ts.map +1 -0
  44. package/dist/cli/init.js +97 -0
  45. package/dist/cli/init.js.map +1 -0
  46. package/dist/cli/status.d.ts +10 -0
  47. package/dist/cli/status.d.ts.map +1 -0
  48. package/dist/cli/status.js +191 -0
  49. package/dist/cli/status.js.map +1 -0
  50. package/dist/coordination/file-locks.d.ts +42 -0
  51. package/dist/coordination/file-locks.d.ts.map +1 -0
  52. package/dist/coordination/file-locks.js +269 -0
  53. package/dist/coordination/file-locks.js.map +1 -0
  54. package/dist/coordination/index.d.ts +4 -0
  55. package/dist/coordination/index.d.ts.map +1 -1
  56. package/dist/coordination/index.js +4 -0
  57. package/dist/coordination/index.js.map +1 -1
  58. package/dist/coordination/inhibitors.d.ts +84 -0
  59. package/dist/coordination/inhibitors.d.ts.map +1 -0
  60. package/dist/coordination/inhibitors.js +290 -0
  61. package/dist/coordination/inhibitors.js.map +1 -0
  62. package/dist/coordination/process-manager.d.ts +73 -0
  63. package/dist/coordination/process-manager.d.ts.map +1 -0
  64. package/dist/coordination/process-manager.js +144 -0
  65. package/dist/coordination/process-manager.js.map +1 -0
  66. package/dist/core/agent-executor.d.ts +4 -1
  67. package/dist/core/agent-executor.d.ts.map +1 -1
  68. package/dist/core/agent-executor.js +38 -12
  69. package/dist/core/agent-executor.js.map +1 -1
  70. package/dist/core/change-applier.d.ts +29 -5
  71. package/dist/core/change-applier.d.ts.map +1 -1
  72. package/dist/core/change-applier.js +254 -24
  73. package/dist/core/change-applier.js.map +1 -1
  74. package/dist/core/signals/churn.d.ts.map +1 -1
  75. package/dist/core/signals/churn.js +6 -4
  76. package/dist/core/signals/churn.js.map +1 -1
  77. package/dist/core/signals/debt.d.ts.map +1 -1
  78. package/dist/core/signals/debt.js +4 -3
  79. package/dist/core/signals/debt.js.map +1 -1
  80. package/dist/cost/cost-tracker.d.ts.map +1 -1
  81. package/dist/cost/cost-tracker.js +2 -0
  82. package/dist/cost/cost-tracker.js.map +1 -1
  83. package/dist/gc/index.d.ts +17 -0
  84. package/dist/gc/index.d.ts.map +1 -0
  85. package/dist/gc/index.js +17 -0
  86. package/dist/gc/index.js.map +1 -0
  87. package/dist/gc/runner.d.ts +39 -0
  88. package/dist/gc/runner.d.ts.map +1 -0
  89. package/dist/gc/runner.js +277 -0
  90. package/dist/gc/runner.js.map +1 -0
  91. package/dist/gc/trace-compactor.d.ts +31 -0
  92. package/dist/gc/trace-compactor.d.ts.map +1 -0
  93. package/dist/gc/trace-compactor.js +162 -0
  94. package/dist/gc/trace-compactor.js.map +1 -0
  95. package/dist/index.d.ts +5 -1
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +6 -1
  98. package/dist/index.js.map +1 -1
  99. package/dist/prompts/index.d.ts +2 -1
  100. package/dist/prompts/index.d.ts.map +1 -1
  101. package/dist/prompts/index.js.map +1 -1
  102. package/dist/quarantine/explorer.d.ts +65 -0
  103. package/dist/quarantine/explorer.d.ts.map +1 -0
  104. package/dist/quarantine/explorer.js +175 -0
  105. package/dist/quarantine/explorer.js.map +1 -0
  106. package/dist/quarantine/index.d.ts +7 -0
  107. package/dist/quarantine/index.d.ts.map +1 -0
  108. package/dist/quarantine/index.js +7 -0
  109. package/dist/quarantine/index.js.map +1 -0
  110. package/dist/quarantine/manager.d.ts +75 -0
  111. package/dist/quarantine/manager.d.ts.map +1 -0
  112. package/dist/quarantine/manager.js +275 -0
  113. package/dist/quarantine/manager.js.map +1 -0
  114. package/dist/task/acceptance.d.ts +29 -0
  115. package/dist/task/acceptance.d.ts.map +1 -0
  116. package/dist/task/acceptance.js +228 -0
  117. package/dist/task/acceptance.js.map +1 -0
  118. package/dist/task/agent-coordinator.d.ts +40 -0
  119. package/dist/task/agent-coordinator.d.ts.map +1 -0
  120. package/dist/task/agent-coordinator.js +168 -0
  121. package/dist/task/agent-coordinator.js.map +1 -0
  122. package/dist/task/executor.d.ts +37 -0
  123. package/dist/task/executor.d.ts.map +1 -0
  124. package/dist/task/executor.js +462 -0
  125. package/dist/task/executor.js.map +1 -0
  126. package/dist/task/index.d.ts +12 -0
  127. package/dist/task/index.d.ts.map +1 -0
  128. package/dist/task/index.js +12 -0
  129. package/dist/task/index.js.map +1 -0
  130. package/dist/task/planner.d.ts +21 -0
  131. package/dist/task/planner.d.ts.map +1 -0
  132. package/dist/task/planner.js +253 -0
  133. package/dist/task/planner.js.map +1 -0
  134. package/dist/task/storage.d.ts +46 -0
  135. package/dist/task/storage.d.ts.map +1 -0
  136. package/dist/task/storage.js +266 -0
  137. package/dist/task/storage.js.map +1 -0
  138. package/dist/trace/trace-event.d.ts +2 -18
  139. package/dist/trace/trace-event.d.ts.map +1 -1
  140. package/dist/trace/trace-event.js +6 -6
  141. package/dist/trace/trace-event.js.map +1 -1
  142. package/dist/utils/file-utils.d.ts.map +1 -1
  143. package/dist/utils/file-utils.js +54 -15
  144. package/dist/utils/file-utils.js.map +1 -1
  145. package/docs/PHASE5_IMPLEMENTATION.md +237 -0
  146. package/docs/PHASES-3-7-COMPLETE.md +177 -0
  147. package/docs/PHASE_4_COMPLETE.md +135 -0
  148. package/docs/PHASE_7_DELIVERABLES.md +295 -0
  149. package/docs/PHASE_7_IMPLEMENTATION.md +306 -0
  150. package/docs/PHASE_7_SUMMARY.txt +195 -0
  151. package/docs/RELEASE-NOTES-v2.1.md +213 -0
  152. package/docs/ROADMAP.md +194 -107
  153. package/docs/SECURITY-AUDIT.md +387 -0
  154. package/docs/SNAPSHOT.md +59 -32
  155. package/docs/implementation/phase3-summary.md +220 -0
  156. package/package.json +27 -11
  157. package/src/agent/task-worker.ts +196 -0
  158. package/src/agent/worker.ts +111 -0
  159. package/src/bin.ts +13 -0
  160. package/src/cli/cost.ts +210 -0
  161. package/src/cli/gc.ts +138 -0
  162. package/src/cli/gradients.ts +97 -0
  163. package/src/cli/grow.ts +416 -0
  164. package/src/cli/index.ts +81 -0
  165. package/src/cli/init.ts +139 -0
  166. package/src/cli/status.ts +218 -0
  167. package/src/coordination/file-locks.ts +300 -0
  168. package/src/coordination/index.ts +4 -0
  169. package/src/coordination/inhibitors.ts +345 -0
  170. package/src/coordination/process-manager.ts +199 -0
  171. package/src/core/agent-executor.ts +37 -8
  172. package/src/core/signals/churn.ts +8 -5
  173. package/src/core/signals/debt.ts +4 -3
  174. package/src/cost/cost-tracker.ts +2 -0
  175. package/src/gc/index.ts +17 -0
  176. package/src/gc/runner.ts +314 -0
  177. package/src/gc/trace-compactor.ts +187 -0
  178. package/src/index.ts +7 -1
  179. package/src/prompts/index.ts +2 -1
  180. package/src/quarantine/explorer.ts +234 -0
  181. package/src/quarantine/index.ts +7 -0
  182. package/src/quarantine/manager.ts +336 -0
  183. package/src/task/acceptance.ts +267 -0
  184. package/src/task/agent-coordinator.ts +220 -0
  185. package/src/task/executor.ts +543 -0
  186. package/src/task/index.ts +38 -0
  187. package/src/task/planner.ts +294 -0
  188. package/src/task/storage.ts +332 -0
  189. package/src/trace/trace-event.ts +7 -26
  190. package/src/utils/file-utils.ts +61 -15
  191. package/tests/cli/gc.test.ts +206 -0
  192. package/tests/cli/init.test.ts +181 -0
  193. package/tests/cli/status.test.ts +282 -0
  194. package/tests/coordination/file-locks.test.ts +196 -0
  195. package/tests/coordination/inhibitors.test.ts +459 -0
  196. package/tests/coordination/integration.test.ts +195 -0
  197. package/tests/coordination/process-manager.test.ts +165 -0
  198. package/tests/gc/trace-compactor.test.ts +245 -0
  199. package/tests/integration/phase-7.test.ts +145 -0
  200. package/tests/quarantine/explorer.test.ts +381 -0
  201. package/tests/quarantine/manager.test.ts +399 -0
  202. package/tests/security/command-injection.test.ts +88 -0
  203. package/tests/security/path-traversal.test.ts +103 -0
  204. package/tests/task/acceptance.test.ts +411 -0
  205. package/tests/task/executor.test.ts +421 -0
  206. package/tests/task/planner.test.ts +359 -0
  207. package/tests/trace/trace-event.test.ts +62 -20
  208. package/tsconfig.json +2 -2
package/dist/index.d.ts CHANGED
@@ -9,10 +9,11 @@
9
9
  * - LLM: Anthropic integration
10
10
  * - Trace: Event tracking
11
11
  * - Cost: Token and cost tracking
12
+ * - Task: LLM-based task planning and execution (Phase 5)
12
13
  * - Utils: Logging, file I/O, configuration
13
14
  * - Types: Complete TypeScript interfaces
14
15
  *
15
- * Per initial-spec and Phase 2 spec.
16
+ * Per initial-spec, Phase 2 spec, and Phase 5 (Task System).
16
17
  *
17
18
  * Usage:
18
19
  * ```typescript
@@ -22,6 +23,8 @@
22
23
  * createAnthropicClient,
23
24
  * recordTraceEvent,
24
25
  * calculateCost,
26
+ * planTask,
27
+ * executeTask,
25
28
  * } from 'claude-mycelium';
26
29
  * ```
27
30
  */
@@ -30,6 +33,7 @@ export * from './coordination/index.js';
30
33
  export { createAnthropicClient, type LLMRequest, type LLMResponse, LLMError } from './llm/index.js';
31
34
  export * from './trace/index.js';
32
35
  export * from './cost/index.js';
36
+ export * from './task/index.js';
33
37
  export * from './utils/index.js';
34
38
  export * from './types/index.js';
35
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAIxC,OAAO,EAAE,qBAAqB,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpG,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAIxC,OAAO,EAAE,qBAAqB,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpG,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -9,10 +9,11 @@
9
9
  * - LLM: Anthropic integration
10
10
  * - Trace: Event tracking
11
11
  * - Cost: Token and cost tracking
12
+ * - Task: LLM-based task planning and execution (Phase 5)
12
13
  * - Utils: Logging, file I/O, configuration
13
14
  * - Types: Complete TypeScript interfaces
14
15
  *
15
- * Per initial-spec and Phase 2 spec.
16
+ * Per initial-spec, Phase 2 spec, and Phase 5 (Task System).
16
17
  *
17
18
  * Usage:
18
19
  * ```typescript
@@ -22,6 +23,8 @@
22
23
  * createAnthropicClient,
23
24
  * recordTraceEvent,
24
25
  * calculateCost,
26
+ * planTask,
27
+ * executeTask,
25
28
  * } from 'claude-mycelium';
26
29
  * ```
27
30
  */
@@ -33,6 +36,8 @@ export * from './coordination/index.js';
33
36
  export { createAnthropicClient, LLMError } from './llm/index.js';
34
37
  export * from './trace/index.js';
35
38
  export * from './cost/index.js';
39
+ // Phase 5: Task System
40
+ export * from './task/index.js';
36
41
  // Utilities
37
42
  export * from './utils/index.js';
38
43
  // Types
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAExC,sEAAsE;AACtE,2EAA2E;AAC3E,OAAO,EAAE,qBAAqB,EAAqC,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpG,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,YAAY;AACZ,cAAc,kBAAkB,CAAC;AAEjC,QAAQ;AACR,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AAExC,sEAAsE;AACtE,2EAA2E;AAC3E,OAAO,EAAE,qBAAqB,EAAqC,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpG,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAEhC,uBAAuB;AACvB,cAAc,iBAAiB,CAAC;AAEhC,YAAY;AACZ,cAAc,kBAAkB,CAAC;AAEjC,QAAQ;AACR,cAAc,kBAAkB,CAAC"}
@@ -5,7 +5,8 @@
5
5
  * Mode-specific prompts for guiding agents.
6
6
  * Each prompt provides context and instructions for a specific improvement mode.
7
7
  */
8
- import type { Mode, GradientScore } from '../types/index.js';
8
+ import type { Mode } from '../types/index.js';
9
+ import type { GradientScore } from '../core/gradient.js';
9
10
  export { generatePrompt as generateErrorReducerPrompt } from './error-reducer.js';
10
11
  export { generatePrompt as generateComplexityReducerPrompt } from './complexity-reducer.js';
11
12
  export { generatePrompt as generateDebtPayerPrompt } from './debt-payer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EAAE,cAAc,IAAI,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,cAAc,IAAI,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkE3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,cAAc,IAAI,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,cAAc,IAAI,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAkE3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EAAE,cAAc,IAAI,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,cAAc,IAAI,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAI7E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAAU,EACV,QAAuB;IAEvB,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE9C,gBAAgB;IAChB,MAAM,OAAO,GAAkB;QAC7B,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,IAAI;KACL,CAAC;IAEF,gCAAgC;IAChC,IAAI,UAAkB,CAAC;IACvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC9D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACnE,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,iDAAiD;YACjD,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM;QACR,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,2CAA2C;IAC3C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;oCAea,CAAC;IAEnC,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAsB;IACjD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE5C,OAAO;sBACa,IAAI;;;gBAGV,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;sBACnB,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;EAgB9F,OAAO;;;;6EAIoE,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,OAAO,EAAE,cAAc,IAAI,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,cAAc,IAAI,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,cAAc,IAAI,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAI7E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,IAAU,EACV,QAAuB;IAEvB,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE9C,gBAAgB;IAChB,MAAM,OAAO,GAAkB;QAC7B,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,IAAI;KACL,CAAC;IAEF,gCAAgC;IAChC,IAAI,UAAkB,CAAC;IACvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC9D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACnE,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC3D,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM;QACR,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,iDAAiD;YACjD,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM;QACR,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,2CAA2C;IAC3C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;oCAea,CAAC;IAEnC,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;KACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAsB;IACjD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE5C,OAAO;sBACa,IAAI;;;gBAGV,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;sBACnB,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;EAgB9F,OAAO;;;;6EAIoE,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Explorer Mode Spawning for Claude-Mycelium
3
+ * Adaptive probability based on system efficiency and centrality
4
+ * Reference: initial-spec §7, second-spec §10
5
+ */
6
+ import type { Gradient, TraceEvent } from '../types/index.js';
7
+ export interface ExplorerConfig {
8
+ baseProbability: number;
9
+ maxProbability: number;
10
+ efficiencyThreshold: number;
11
+ lookbackRuns: number;
12
+ }
13
+ /**
14
+ * Determine if explorer should spawn based on system-wide efficiency
15
+ * Probability increases as efficiency drops
16
+ *
17
+ * Formula from spec:
18
+ * - efficiency >= 0.3 → 5% chance
19
+ * - efficiency = 0.15 → 15% chance
20
+ * - efficiency = 0.0 → 25% chance
21
+ */
22
+ export declare function shouldSpawnExplorer(getRecentTraces: (limit: number) => Promise<TraceEvent[]>, config?: ExplorerConfig): Promise<boolean>;
23
+ /**
24
+ * Select target for explorer mode
25
+ * Priority:
26
+ * 1. Quarantined files with explorer attempts remaining
27
+ * 2. Highest gradient non-quarantined file
28
+ */
29
+ export declare function selectExplorerTarget(gradients: Gradient[], isFileLocked: (file: string) => Promise<boolean>): Promise<string | null>;
30
+ /**
31
+ * Calculate explorer spawn probability for a specific file
32
+ * Based on centrality: 0.1 × (1 + centrality)
33
+ *
34
+ * Examples from spec:
35
+ * - centrality 0.0 → 10% chance
36
+ * - centrality 0.5 → 15% chance
37
+ * - centrality 1.0 → 20% chance
38
+ */
39
+ export declare function calculateExplorerProbability(centrality: number): number;
40
+ /**
41
+ * Check if explorer should be spawned for a specific file
42
+ * Uses centrality-based probability
43
+ */
44
+ export declare function shouldSpawnExplorerForFile(centrality: number): boolean;
45
+ /**
46
+ * Execute explorer mode with different system prompt
47
+ * Explorer has:
48
+ * - Higher temperature (more creative)
49
+ * - Different instruction set (exploratory)
50
+ * - Less constrained by patterns
51
+ */
52
+ export interface ExplorerPromptConfig {
53
+ temperature: number;
54
+ systemPromptAddition: string;
55
+ }
56
+ export declare const EXPLORER_PROMPT_CONFIG: ExplorerPromptConfig;
57
+ /**
58
+ * Get explorer mode configuration
59
+ */
60
+ export declare function getExplorerConfig(): ExplorerPromptConfig;
61
+ /**
62
+ * Format explorer instructions for prompt
63
+ */
64
+ export declare function formatExplorerInstructions(file: string, isQuarantined: boolean, explorerAttempts: number): string;
65
+ //# sourceMappingURL=explorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explorer.d.ts","sourceRoot":"","sources":["../../src/quarantine/explorer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQ9D,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AASD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,EACzD,MAAM,GAAE,cAA+B,GACtC,OAAO,CAAC,OAAO,CAAC,CA0ClB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,QAAQ,EAAE,EACrB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC/C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4CxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGtE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,sBAAsB,EAAE,oBAsBpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,oBAAoB,CAExD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAqBR"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Explorer Mode Spawning for Claude-Mycelium
3
+ * Adaptive probability based on system efficiency and centrality
4
+ * Reference: initial-spec §7, second-spec §10
5
+ */
6
+ import { logInfo, logDebug, logError } from '../utils/logger.js';
7
+ import { getQuarantinedFiles, canExplorerAttempt, recordExplorerAttempt, isQuarantined, } from './manager.js';
8
+ const DEFAULT_CONFIG = {
9
+ baseProbability: 0.05, // 5% base chance
10
+ maxProbability: 0.25, // 25% max chance
11
+ efficiencyThreshold: 0.3, // Below this, increase probability
12
+ lookbackRuns: 20,
13
+ };
14
+ /**
15
+ * Determine if explorer should spawn based on system-wide efficiency
16
+ * Probability increases as efficiency drops
17
+ *
18
+ * Formula from spec:
19
+ * - efficiency >= 0.3 → 5% chance
20
+ * - efficiency = 0.15 → 15% chance
21
+ * - efficiency = 0.0 → 25% chance
22
+ */
23
+ export async function shouldSpawnExplorer(getRecentTraces, config = DEFAULT_CONFIG) {
24
+ try {
25
+ const recentTraces = await getRecentTraces(config.lookbackRuns);
26
+ if (recentTraces.length < 10) {
27
+ // Not enough data
28
+ return false;
29
+ }
30
+ // Calculate system-wide efficiency
31
+ const efficiencies = recentTraces.map(t => t.efficiency || 0);
32
+ const avgEfficiency = efficiencies.reduce((a, b) => a + b, 0) / efficiencies.length;
33
+ // Probability increases as efficiency drops
34
+ const efficiencyFactor = Math.max(0, config.efficiencyThreshold - avgEfficiency) / config.efficiencyThreshold;
35
+ const probability = config.baseProbability +
36
+ (config.maxProbability - config.baseProbability) * efficiencyFactor;
37
+ const shouldSpawn = Math.random() < probability;
38
+ if (shouldSpawn) {
39
+ logInfo('Explorer spawn triggered', {
40
+ avgEfficiency: avgEfficiency.toFixed(3),
41
+ probability: (probability * 100).toFixed(1) + '%',
42
+ });
43
+ }
44
+ else {
45
+ logDebug('Explorer spawn skipped', {
46
+ avgEfficiency: avgEfficiency.toFixed(3),
47
+ probability: (probability * 100).toFixed(1) + '%',
48
+ });
49
+ }
50
+ return shouldSpawn;
51
+ }
52
+ catch (error) {
53
+ logError('Failed to check explorer spawn', error);
54
+ return false;
55
+ }
56
+ }
57
+ /**
58
+ * Select target for explorer mode
59
+ * Priority:
60
+ * 1. Quarantined files with explorer attempts remaining
61
+ * 2. Highest gradient non-quarantined file
62
+ */
63
+ export async function selectExplorerTarget(gradients, isFileLocked) {
64
+ try {
65
+ // First, try quarantined files that still have explorer attempts
66
+ const quarantined = await getQuarantinedFiles();
67
+ for (const entry of quarantined) {
68
+ if (await canExplorerAttempt(entry.file)) {
69
+ const locked = await isFileLocked(entry.file);
70
+ if (!locked) {
71
+ logInfo('Explorer targeting quarantined file', {
72
+ file: entry.file,
73
+ attempts: entry.explorer_attempts,
74
+ max: entry.max_explorer_attempts,
75
+ });
76
+ // Record the attempt
77
+ await recordExplorerAttempt(entry.file);
78
+ return entry.file;
79
+ }
80
+ }
81
+ }
82
+ // Otherwise, pick highest gradient non-quarantined file
83
+ const sorted = [...gradients].sort((a, b) => b.score - a.score);
84
+ for (const g of sorted) {
85
+ const quarantinedCheck = await isQuarantined(g.file);
86
+ const lockedCheck = await isFileLocked(g.file);
87
+ if (!quarantinedCheck && !lockedCheck) {
88
+ logInfo('Explorer targeting high-gradient file', {
89
+ file: g.file,
90
+ gradient: g.score.toFixed(3),
91
+ });
92
+ return g.file;
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+ catch (error) {
98
+ logError('Failed to select explorer target', error);
99
+ return null;
100
+ }
101
+ }
102
+ /**
103
+ * Calculate explorer spawn probability for a specific file
104
+ * Based on centrality: 0.1 × (1 + centrality)
105
+ *
106
+ * Examples from spec:
107
+ * - centrality 0.0 → 10% chance
108
+ * - centrality 0.5 → 15% chance
109
+ * - centrality 1.0 → 20% chance
110
+ */
111
+ export function calculateExplorerProbability(centrality) {
112
+ return 0.1 * (1 + centrality);
113
+ }
114
+ /**
115
+ * Check if explorer should be spawned for a specific file
116
+ * Uses centrality-based probability
117
+ */
118
+ export function shouldSpawnExplorerForFile(centrality) {
119
+ const probability = calculateExplorerProbability(centrality);
120
+ return Math.random() < probability;
121
+ }
122
+ export const EXPLORER_PROMPT_CONFIG = {
123
+ temperature: 0.8, // More creative than normal modes
124
+ systemPromptAddition: `
125
+ ## Explorer Mode
126
+
127
+ You are in EXPLORER mode. This file has resisted conventional approaches.
128
+
129
+ Your goal is to try creative, unconventional solutions that other modes might not consider:
130
+ - Radical refactoring
131
+ - Complete rewrites of problematic sections
132
+ - Alternative algorithms or patterns
133
+ - Breaking changes if necessary
134
+
135
+ Don't be constrained by existing patterns. Think outside the box.
136
+
137
+ Success criteria:
138
+ - Meaningful gradient improvement (efficiency > 0.2)
139
+ - CI passes
140
+ - Code quality maintained or improved
141
+
142
+ Be bold but careful.
143
+ `,
144
+ };
145
+ /**
146
+ * Get explorer mode configuration
147
+ */
148
+ export function getExplorerConfig() {
149
+ return { ...EXPLORER_PROMPT_CONFIG };
150
+ }
151
+ /**
152
+ * Format explorer instructions for prompt
153
+ */
154
+ export function formatExplorerInstructions(file, isQuarantined, explorerAttempts) {
155
+ if (isQuarantined) {
156
+ return `
157
+ ## 🔬 Explorer Mode: Quarantined File
158
+
159
+ File: ${file}
160
+ Status: QUARANTINED (${explorerAttempts} explorer attempts made)
161
+
162
+ This file has failed ${explorerAttempts > 0 ? 'multiple' : 'many'} conventional improvement attempts.
163
+ Try creative, unconventional approaches. Don't be afraid to make bold changes.
164
+ `;
165
+ }
166
+ return `
167
+ ## 🔬 Explorer Mode: Creative Exploration
168
+
169
+ File: ${file}
170
+ Status: Selected for exploratory improvement
171
+
172
+ Try innovative approaches that might not be obvious. Think creatively.
173
+ `;
174
+ }
175
+ //# sourceMappingURL=explorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explorer.js","sourceRoot":"","sources":["../../src/quarantine/explorer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Quarantine System for Claude-Mycelium
3
+ * Exports quarantine manager and explorer mode
4
+ */
5
+ export * from './manager.js';
6
+ export * from './explorer.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quarantine/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Quarantine System for Claude-Mycelium
3
+ * Exports quarantine manager and explorer mode
4
+ */
5
+ export * from './manager.js';
6
+ export * from './explorer.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quarantine/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Quarantine Manager for Claude-Mycelium
3
+ * Full withdrawal mechanism when files resist all approaches
4
+ * Storage: .agent-meta/_quarantine.json
5
+ * Reference: initial-spec §6, second-spec §9
6
+ */
7
+ import type { TraceEvent } from '../types/index.js';
8
+ export interface QuarantineEntry {
9
+ file: string;
10
+ quarantined_at: string;
11
+ reason: string;
12
+ attempts_before_quarantine: number;
13
+ explorer_attempts: number;
14
+ max_explorer_attempts: number;
15
+ }
16
+ export interface QuarantineState {
17
+ updated_at: string;
18
+ entries: QuarantineEntry[];
19
+ }
20
+ export interface QuarantineConfig {
21
+ minSamplesBeforeQuarantine: number;
22
+ efficiencyThreshold: number;
23
+ maxExplorerAttempts: number;
24
+ }
25
+ /**
26
+ * Check if a file should be quarantined
27
+ * Trigger: 10+ samples, all with efficiency < 0.02
28
+ */
29
+ export declare function shouldQuarantine(file: string, getTracesForFile: (file: string) => Promise<TraceEvent[]>, config?: QuarantineConfig): Promise<boolean>;
30
+ /**
31
+ * Add a file to quarantine
32
+ */
33
+ export declare function addToQuarantine(entry: QuarantineEntry): Promise<void>;
34
+ /**
35
+ * Check if a file is quarantined
36
+ */
37
+ export declare function isQuarantined(file: string): Promise<boolean>;
38
+ /**
39
+ * Get quarantine entry for a file
40
+ */
41
+ export declare function getQuarantineEntry(file: string): Promise<QuarantineEntry | null>;
42
+ /**
43
+ * Check if explorer can attempt quarantined file
44
+ */
45
+ export declare function canExplorerAttempt(file: string): Promise<boolean>;
46
+ /**
47
+ * Record an explorer attempt on quarantined file
48
+ */
49
+ export declare function recordExplorerAttempt(file: string): Promise<void>;
50
+ /**
51
+ * Check if quarantine should be released after explorer success
52
+ * Only explorer mode with efficiency >= 0.2 can release
53
+ */
54
+ export declare function checkQuarantineRelease(file: string, trace: TraceEvent): Promise<boolean>;
55
+ /**
56
+ * Remove a file from quarantine
57
+ */
58
+ export declare function removeFromQuarantine(file: string): Promise<void>;
59
+ /**
60
+ * Get all quarantined files
61
+ */
62
+ export declare function getQuarantinedFiles(): Promise<QuarantineEntry[]>;
63
+ /**
64
+ * Check and potentially quarantine a file after agent run
65
+ */
66
+ export declare function checkAndQuarantine(file: string, getTracesForFile: (file: string) => Promise<TraceEvent[]>, config?: QuarantineConfig): Promise<boolean>;
67
+ /**
68
+ * Get quarantine statistics
69
+ */
70
+ export declare function getQuarantineStats(): Promise<{
71
+ total: number;
72
+ withExplorerAttempts: number;
73
+ exhausted: number;
74
+ }>;
75
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/quarantine/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B,EAAE,MAAM,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAQD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,EACzD,MAAM,GAAE,gBAAiC,GACxC,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B3E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAQtF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBvE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAQtE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,EACzD,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAoCD;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAeD"}