claude-flow-novice 1.6.4 → 1.6.5

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 (269) hide show
  1. package/.claude/commands/parse-epic.js +180 -0
  2. package/.claude/settings.local.json +2 -1
  3. package/.claude-flow-novice/dist/mcp/mcp-server-novice.js +37 -2
  4. package/.claude-flow-novice/dist/mcp/transports/base.js +5 -0
  5. package/.claude-flow-novice/dist/mcp/transports/base.js.map +1 -0
  6. package/.claude-flow-novice/dist/mcp/transports/http.js +414 -0
  7. package/.claude-flow-novice/dist/mcp/transports/http.js.map +1 -0
  8. package/.claude-flow-novice/dist/mcp/transports/stdio.js +217 -0
  9. package/.claude-flow-novice/dist/mcp/transports/stdio.js.map +1 -0
  10. package/.claude-flow-novice/dist/src/cli/commands/parse-epic.js +129 -0
  11. package/.claude-flow-novice/dist/src/cli/commands/parse-epic.js.map +1 -0
  12. package/.claude-flow-novice/dist/src/cli/index.js +3 -0
  13. package/.claude-flow-novice/dist/src/cli/index.js.map +1 -1
  14. package/.claude-flow-novice/dist/src/cli/utils/epic-parser.js +266 -0
  15. package/.claude-flow-novice/dist/src/cli/utils/epic-parser.js.map +1 -0
  16. package/.claude-flow-novice/dist/src/communication/message-bus.js +105 -2
  17. package/.claude-flow-novice/dist/src/communication/message-bus.js.map +1 -1
  18. package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js +1 -1
  19. package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js.map +1 -1
  20. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/artifact-cache-optimizer.js +632 -0
  21. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/artifact-cache-optimizer.js.map +1 -0
  22. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/index.js +11 -0
  23. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/cache/index.js.map +1 -0
  24. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/checkpoints/checkpoint-compressor.js +318 -0
  25. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/checkpoints/checkpoint-compressor.js.map +1 -0
  26. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/completion-detector.js +234 -0
  27. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/completion-detector.js.map +1 -0
  28. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/hierarchical-detector.js +347 -0
  29. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/hierarchical-detector.js.map +1 -0
  30. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/index.js +13 -0
  31. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/index.js.map +1 -0
  32. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/lamport-clock.js +173 -0
  33. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/lamport-clock.js.map +1 -0
  34. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/mesh-detector.js +526 -0
  35. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/mesh-detector.js.map +1 -0
  36. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/sdk-completion-detector.js +443 -0
  37. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/sdk-completion-detector.js.map +1 -0
  38. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/swarm-shutdown.js +366 -0
  39. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/completion/swarm-shutdown.js.map +1 -0
  40. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinator-factory.js +287 -0
  41. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinator-factory.js.map +1 -0
  42. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.example.js +364 -0
  43. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.example.js.map +1 -0
  44. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.js +492 -0
  45. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/cascading-shutdown.js.map +1 -0
  46. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/hierarchical-coordinator.js +786 -0
  47. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/hierarchical-coordinator.js.map +1 -0
  48. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/index.js +16 -0
  49. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/index.js.map +1 -0
  50. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/parent-child-manager.js +342 -0
  51. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/parent-child-manager.js.map +1 -0
  52. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/swarm-coordinator-v2.js +601 -0
  53. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/coordinators/swarm-coordinator-v2.js.map +1 -0
  54. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/agent-state.js +9 -0
  55. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/agent-state.js.map +1 -0
  56. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dead-letter-queue.js +413 -0
  57. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dead-letter-queue.js.map +1 -0
  58. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-graph.js +471 -0
  59. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-graph.js.map +1 -0
  60. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-node.js +379 -0
  61. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-node.js.map +1 -0
  62. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-resolver.js +335 -0
  63. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/dependency-resolver.js.map +1 -0
  64. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/help-request-metrics.js +211 -0
  65. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/help-request-metrics.js.map +1 -0
  66. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/index.js +33 -0
  67. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/index.js.map +1 -0
  68. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-broker.js +920 -0
  69. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-broker.js.map +1 -0
  70. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-router.js +385 -0
  71. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message-router.js.map +1 -0
  72. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message.js +138 -0
  73. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/message.js.map +1 -0
  74. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/resource-manager-safe.js +478 -0
  75. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/resource-manager-safe.js.map +1 -0
  76. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine-config.js +358 -0
  77. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine-config.js.map +1 -0
  78. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine.js +588 -0
  79. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-machine.js.map +1 -0
  80. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-transition.js +153 -0
  81. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/state-transition.js.map +1 -0
  82. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/task-scheduler.js +360 -0
  83. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/task-scheduler.js.map +1 -0
  84. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/topic-manager.js +337 -0
  85. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/core/topic-manager.js.map +1 -0
  86. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/deadlock-detector.js +424 -0
  87. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/deadlock-detector.js.map +1 -0
  88. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/index.js +9 -0
  89. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/index.js.map +1 -0
  90. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/resource-manager.js +669 -0
  91. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/deadlock/resource-manager.js.map +1 -0
  92. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/artifact-storage.js +451 -0
  93. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/artifact-storage.js.map +1 -0
  94. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/cycle-detector.js +271 -0
  95. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/cycle-detector.js.map +1 -0
  96. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-graph.js +335 -0
  97. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-graph.js.map +1 -0
  98. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-manager.js +439 -0
  99. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-manager.js.map +1 -0
  100. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-request.js +92 -0
  101. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/dependency-request.js.map +1 -0
  102. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/index.js +21 -0
  103. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/index.js.map +1 -0
  104. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/topological-sort.js +223 -0
  105. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/dependency/topological-sort.js.map +1 -0
  106. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-coordinator.js +436 -0
  107. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-coordinator.js.map +1 -0
  108. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-matcher.js +278 -0
  109. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-matcher.js.map +1 -0
  110. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request-handler.js +317 -0
  111. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request-handler.js.map +1 -0
  112. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request.js +273 -0
  113. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/help-request.js.map +1 -0
  114. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/index.js +15 -0
  115. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/index.js.map +1 -0
  116. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/waiting-agent-pool.js +512 -0
  117. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/help-system/waiting-agent-pool.js.map +1 -0
  118. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/index.js +67 -0
  119. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/index.js.map +1 -0
  120. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/help-deadlock-integration.js +557 -0
  121. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/help-deadlock-integration.js.map +1 -0
  122. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/index.js +14 -0
  123. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/index.js.map +1 -0
  124. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.example.js +212 -0
  125. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.example.js.map +1 -0
  126. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.js +552 -0
  127. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/message-bus-completion-integration.js.map +1 -0
  128. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/state-machine-integration.js +635 -0
  129. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/integration/state-machine-integration.js.map +1 -0
  130. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/IArtifactStorage.js +28 -0
  131. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/IArtifactStorage.js.map +1 -0
  132. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ICoordinator.js +9 -0
  133. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ICoordinator.js.map +1 -0
  134. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ISessionStore.js +25 -0
  135. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/ISessionStore.js.map +1 -0
  136. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/index.js +14 -0
  137. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/interfaces/index.js.map +1 -0
  138. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/artifact-adapter.js +308 -0
  139. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/artifact-adapter.js.map +1 -0
  140. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/completion-storage.js +439 -0
  141. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/completion-storage.js.map +1 -0
  142. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-graph-storage.js +540 -0
  143. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-graph-storage.js.map +1 -0
  144. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-storage.js +367 -0
  145. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/dependency-storage.js.map +1 -0
  146. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/index.js +14 -0
  147. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/index.js.map +1 -0
  148. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/message-storage.js +518 -0
  149. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/message-storage.js.map +1 -0
  150. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/state-storage.js +377 -0
  151. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/memory/state-storage.js.map +1 -0
  152. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channel.js +371 -0
  153. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channel.js.map +1 -0
  154. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/dependency-channel.js +355 -0
  155. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/dependency-channel.js.map +1 -0
  156. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/help-channel.js +424 -0
  157. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/help-channel.js.map +1 -0
  158. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/index.js +16 -0
  159. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/index.js.map +1 -0
  160. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/state-channel.js +295 -0
  161. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/state-channel.js.map +1 -0
  162. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/task-channel.js +411 -0
  163. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/channels/task-channel.js.map +1 -0
  164. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/index.js +14 -0
  165. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/index.js.map +1 -0
  166. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-bus.js +387 -0
  167. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-bus.js.map +1 -0
  168. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-persistence.js +589 -0
  169. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-persistence.js.map +1 -0
  170. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-router.js +444 -0
  171. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/messaging/message-router.js.map +1 -0
  172. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/artifact-storage.js +560 -0
  173. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/artifact-storage.js.map +1 -0
  174. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/background-orchestrator.js +335 -0
  175. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/background-orchestrator.js.map +1 -0
  176. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/bash-output-monitor.js +104 -0
  177. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/bash-output-monitor.js.map +1 -0
  178. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/checkpoint-manager.js +847 -0
  179. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/checkpoint-manager.js.map +1 -0
  180. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/help-coordinator.js +470 -0
  181. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/help-coordinator.js.map +1 -0
  182. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/hierarchical-background-integration.js +450 -0
  183. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/hierarchical-background-integration.js.map +1 -0
  184. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/index.js +13 -0
  185. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/index.js.map +1 -0
  186. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/message-bus-integration.js +625 -0
  187. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/message-bus-integration.js.map +1 -0
  188. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/multi-level-control.js +545 -0
  189. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/multi-level-control.js.map +1 -0
  190. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-controller.js +740 -0
  191. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-controller.js.map +1 -0
  192. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-message-integration.js +415 -0
  193. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/query-message-integration.js.map +1 -0
  194. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/session-pool-optimizer.js +615 -0
  195. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/session-pool-optimizer.js.map +1 -0
  196. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-machine-integration.js +547 -0
  197. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-machine-integration.js.map +1 -0
  198. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-sdk-integration.js +342 -0
  199. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/sdk/state-sdk-integration.js.map +1 -0
  200. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/security/payload-validator.js +259 -0
  201. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/security/payload-validator.js.map +1 -0
  202. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/framework-registry.js +273 -0
  203. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/framework-registry.js.map +1 -0
  204. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/index.js +8 -0
  205. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/index.js.map +1 -0
  206. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-config-manager.js +310 -0
  207. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-config-manager.js.map +1 -0
  208. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-validator.js +218 -0
  209. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/truth/truth-validator.js.map +1 -0
  210. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/types/sdk.js +9 -0
  211. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/types/sdk.js.map +1 -0
  212. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/index.js +6 -0
  213. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/index.js.map +1 -0
  214. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/priority-queue.js +145 -0
  215. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/priority-queue.js.map +1 -0
  216. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/sdk-helpers.js +122 -0
  217. package/.claude-flow-novice/dist/src/coordination/archives/v2-sdk-typescript/v2/utils/sdk-helpers.js.map +1 -0
  218. package/.claude-flow-novice/dist/src/coordination/config-translator.js +17 -43
  219. package/.claude-flow-novice/dist/src/coordination/config-translator.js.map +1 -1
  220. package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js +34 -76
  221. package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js.map +1 -1
  222. package/.claude-flow-novice/dist/src/coordination/shared/core/agent-state.js +172 -0
  223. package/.claude-flow-novice/dist/src/coordination/shared/core/agent-state.js.map +1 -0
  224. package/.claude-flow-novice/dist/src/coordination/shared/core/index.js +7 -0
  225. package/.claude-flow-novice/dist/src/coordination/shared/core/index.js.map +1 -0
  226. package/.claude-flow-novice/dist/src/coordination/shared/index.js +19 -0
  227. package/.claude-flow-novice/dist/src/coordination/shared/index.js.map +1 -0
  228. package/.claude-flow-novice/dist/src/coordination/shared/interfaces/ICoordinator.js +24 -0
  229. package/.claude-flow-novice/dist/src/coordination/shared/interfaces/ICoordinator.js.map +1 -0
  230. package/.claude-flow-novice/dist/src/coordination/shared/interfaces/index.js +7 -0
  231. package/.claude-flow-novice/dist/src/coordination/shared/interfaces/index.js.map +1 -0
  232. package/.claude-flow-novice/dist/src/coordination/shared/message-broker.js +920 -0
  233. package/.claude-flow-novice/dist/src/coordination/shared/message-broker.js.map +1 -0
  234. package/.claude-flow-novice/dist/src/coordination/shared/message.js +138 -0
  235. package/.claude-flow-novice/dist/src/coordination/shared/message.js.map +1 -0
  236. package/.claude-flow-novice/dist/src/coordination/shared/security/payload-validator.js +259 -0
  237. package/.claude-flow-novice/dist/src/coordination/shared/security/payload-validator.js.map +1 -0
  238. package/.claude-flow-novice/dist/src/coordination/shared/transparency/index.js +17 -0
  239. package/.claude-flow-novice/dist/src/coordination/shared/transparency/index.js.map +1 -0
  240. package/.claude-flow-novice/dist/src/coordination/shared/transparency/interfaces/transparency-system.js +19 -0
  241. package/.claude-flow-novice/dist/src/coordination/shared/transparency/interfaces/transparency-system.js.map +1 -0
  242. package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-integration.js +357 -0
  243. package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-integration.js.map +1 -0
  244. package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-system.js +679 -0
  245. package/.claude-flow-novice/dist/src/coordination/shared/transparency/transparency-system.js.map +1 -0
  246. package/.claude-flow-novice/dist/src/coordination/shared/types/index.js +7 -0
  247. package/.claude-flow-novice/dist/src/coordination/shared/types/index.js.map +1 -0
  248. package/.claude-flow-novice/dist/src/coordination/shared/types/sdk.js +10 -0
  249. package/.claude-flow-novice/dist/src/coordination/shared/types/sdk.js.map +1 -0
  250. package/.claude-flow-novice/dist/src/feature-flags/core/FeatureFlagManager.js +52 -2
  251. package/.claude-flow-novice/dist/src/feature-flags/core/FeatureFlagManager.js.map +1 -1
  252. package/.claude-flow-novice/dist/src/mcp/mcp-server-novice.js +37 -2
  253. package/.claude-flow-novice/dist/src/mcp/session-manager.js +3 -1
  254. package/.claude-flow-novice/dist/src/mcp/session-manager.js.map +1 -1
  255. package/.claude-flow-novice/dist/src/providers/provider-manager.js +36 -3
  256. package/.claude-flow-novice/dist/src/providers/provider-manager.js.map +1 -1
  257. package/.claude-flow-novice/dist/src/utils/markdown-sanitizer.js +65 -41
  258. package/.claude-flow-novice/dist/src/utils/markdown-sanitizer.js.map +1 -1
  259. package/.claude-flow-novice/dist/src/web/api/server.js +1 -1
  260. package/.claude-flow-novice/dist/src/web/api/server.js.map +1 -1
  261. package/.claude-flow-novice/dist/src/workflows/progressive-rollout-manager.js +30 -0
  262. package/.claude-flow-novice/dist/src/workflows/progressive-rollout-manager.js.map +1 -1
  263. package/.claude-flow-novice/metrics.db-shm +0 -0
  264. package/.claude-flow-novice/metrics.db-wal +0 -0
  265. package/package.json +2 -2
  266. package/scripts/monitoring/alert-monitor.sh +220 -0
  267. package/scripts/monitoring/view-alerts.sh +307 -0
  268. package/scripts/test-zai-api.cjs +2 -2
  269. package/src/slash-commands/parse-epic.js +1 -1
@@ -0,0 +1,615 @@
1
+ /**
2
+ * Agent Coordination V2 - Session Pool Optimizer
3
+ *
4
+ * Optimized session pool for 50+ concurrent agents with:
5
+ * - Connection pooling and reuse
6
+ * - LRU eviction for idle sessions
7
+ * - Auto-scaling based on load
8
+ * - Resource limits and throttling
9
+ * - Health checks and auto-recovery
10
+ *
11
+ * @module coordination/v2/sdk/session-pool-optimizer
12
+ */ import { EventEmitter } from 'node:events';
13
+ import { Logger } from '../../../core/logger.js';
14
+ import { generateId } from '../../../utils/helpers.js';
15
+ import { AgentState } from '../../shared/core/agent-state.js';
16
+ /**
17
+ * Session Pool Optimizer - High-performance session management for 50+ agents.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const pool = new SessionPoolOptimizer({
22
+ * maxPoolSize: 60,
23
+ * minPoolSize: 10,
24
+ * autoScaleThreshold: 80
25
+ * });
26
+ *
27
+ * await pool.initialize();
28
+ *
29
+ * // Acquire session
30
+ * const session = await pool.acquireSession({ agentId: 'agent-1', priority: 8 });
31
+ *
32
+ * // Release session (returns to pool for reuse)
33
+ * await pool.releaseSession(session.sessionId);
34
+ *
35
+ * // Cleanup
36
+ * await pool.shutdown();
37
+ * ```
38
+ */ export class SessionPoolOptimizer extends EventEmitter {
39
+ logger;
40
+ config;
41
+ sessionPool;
42
+ activeSessions;
43
+ agentSessions;
44
+ requestCounts;
45
+ healthCheckTimer;
46
+ evictionTimer;
47
+ metrics;
48
+ initialized = false;
49
+ startTime;
50
+ constructor(config){
51
+ super();
52
+ this.logger = new Logger({
53
+ level: 'info',
54
+ format: 'text',
55
+ destination: 'console'
56
+ });
57
+ this.config = {
58
+ maxPoolSize: config?.maxPoolSize ?? 60,
59
+ minPoolSize: config?.minPoolSize ?? 10,
60
+ maxIdleTimeMs: config?.maxIdleTimeMs ?? 300000,
61
+ healthCheckIntervalMs: config?.healthCheckIntervalMs ?? 30000,
62
+ autoScaleThreshold: config?.autoScaleThreshold ?? 80,
63
+ autoScaleStep: config?.autoScaleStep ?? 10,
64
+ connectionTimeoutMs: config?.connectionTimeoutMs ?? 5000,
65
+ throttleLimit: config?.throttleLimit ?? 10,
66
+ enableReuse: config?.enableReuse ?? true,
67
+ enableAutoRecovery: config?.enableAutoRecovery ?? true
68
+ };
69
+ this.sessionPool = new Map();
70
+ this.activeSessions = new Set();
71
+ this.agentSessions = new Map();
72
+ this.requestCounts = new Map();
73
+ this.metrics = this.initializeMetrics();
74
+ this.startTime = Date.now();
75
+ }
76
+ /**
77
+ * Initialize the session pool optimizer.
78
+ */ async initialize() {
79
+ if (this.initialized) {
80
+ this.logger.warn('SessionPoolOptimizer already initialized');
81
+ return;
82
+ }
83
+ this.logger.info('Initializing session pool optimizer', {
84
+ maxPoolSize: this.config.maxPoolSize,
85
+ minPoolSize: this.config.minPoolSize,
86
+ autoScaleThreshold: this.config.autoScaleThreshold
87
+ });
88
+ // Pre-warm pool with minimum sessions
89
+ await this.warmPool();
90
+ // Start health checks
91
+ this.startHealthChecks();
92
+ // Start eviction timer
93
+ this.startEvictionTimer();
94
+ this.initialized = true;
95
+ this.emit('pool:initialized', {
96
+ poolSize: this.sessionPool.size
97
+ });
98
+ this.logger.info('Session pool optimizer initialized', {
99
+ preWarmedSessions: this.sessionPool.size
100
+ });
101
+ }
102
+ /**
103
+ * Acquire a session from the pool or create new one.
104
+ *
105
+ * @param request - Session request with agent ID and priority
106
+ * @returns Pooled session
107
+ * @throws Error if pool is at capacity or throttle limit exceeded
108
+ */ async acquireSession(request) {
109
+ if (!this.initialized) {
110
+ throw new Error('SessionPoolOptimizer not initialized. Call initialize() first.');
111
+ }
112
+ // Check throttle limit
113
+ if (!this.checkThrottleLimit(request.agentId)) {
114
+ throw new Error(`Agent ${request.agentId} exceeded throttle limit (${this.config.throttleLimit} req/s)`);
115
+ }
116
+ // Check if agent already has an active session
117
+ const existingSessionId = this.agentSessions.get(request.agentId);
118
+ if (existingSessionId && this.activeSessions.has(existingSessionId)) {
119
+ const pooledSession = this.sessionPool.get(existingSessionId);
120
+ if (pooledSession) {
121
+ pooledSession.lastAccessTime = Date.now();
122
+ pooledSession.reuseCount++;
123
+ this.metrics.totalReuses++;
124
+ this.logger.debug('Reusing existing session', {
125
+ agentId: request.agentId,
126
+ sessionId: existingSessionId,
127
+ reuseCount: pooledSession.reuseCount
128
+ });
129
+ return pooledSession;
130
+ }
131
+ }
132
+ // Try to reuse idle session
133
+ if (this.config.enableReuse) {
134
+ const reusedSession = this.findReusableSession(request);
135
+ if (reusedSession) {
136
+ return reusedSession;
137
+ }
138
+ }
139
+ // Create new session if under capacity
140
+ if (this.sessionPool.size < this.config.maxPoolSize) {
141
+ return await this.createSession(request);
142
+ }
143
+ // Pool at capacity - check auto-scaling
144
+ const utilization = this.calculateUtilization();
145
+ if (utilization >= this.config.autoScaleThreshold) {
146
+ await this.autoScale();
147
+ return await this.createSession(request);
148
+ }
149
+ // Evict LRU session to make space
150
+ this.evictLRU();
151
+ return await this.createSession(request);
152
+ }
153
+ /**
154
+ * Release a session back to the pool.
155
+ *
156
+ * @param sessionId - Session ID to release
157
+ * @returns True if released successfully
158
+ */ async releaseSession(sessionId) {
159
+ const pooledSession = this.sessionPool.get(sessionId);
160
+ if (!pooledSession) {
161
+ this.logger.warn('Session not found in pool', {
162
+ sessionId
163
+ });
164
+ return false;
165
+ }
166
+ // Mark as idle
167
+ this.activeSessions.delete(sessionId);
168
+ pooledSession.lastAccessTime = Date.now();
169
+ // Update metrics
170
+ this.updateMetrics();
171
+ this.logger.debug('Session released to pool', {
172
+ sessionId,
173
+ agentId: pooledSession.agentId,
174
+ reuseCount: pooledSession.reuseCount
175
+ });
176
+ this.emit('session:released', {
177
+ sessionId,
178
+ agentId: pooledSession.agentId
179
+ });
180
+ return true;
181
+ }
182
+ /**
183
+ * Remove a session from the pool.
184
+ *
185
+ * @param sessionId - Session ID to remove
186
+ * @returns True if removed successfully
187
+ */ async removeSession(sessionId) {
188
+ const pooledSession = this.sessionPool.get(sessionId);
189
+ if (!pooledSession) {
190
+ return false;
191
+ }
192
+ // Remove from all indices
193
+ this.sessionPool.delete(sessionId);
194
+ this.activeSessions.delete(sessionId);
195
+ this.agentSessions.delete(pooledSession.agentId);
196
+ // Update metrics
197
+ this.metrics.totalEvicted++;
198
+ this.updateMetrics();
199
+ this.logger.debug('Session removed from pool', {
200
+ sessionId,
201
+ agentId: pooledSession.agentId
202
+ });
203
+ this.emit('session:removed', {
204
+ sessionId,
205
+ agentId: pooledSession.agentId
206
+ });
207
+ return true;
208
+ }
209
+ /**
210
+ * Pin a session to prevent eviction.
211
+ *
212
+ * @param sessionId - Session ID to pin
213
+ */ pinSession(sessionId) {
214
+ const pooledSession = this.sessionPool.get(sessionId);
215
+ if (pooledSession) {
216
+ pooledSession.metadata.isPinned = true;
217
+ this.logger.debug('Session pinned', {
218
+ sessionId
219
+ });
220
+ }
221
+ }
222
+ /**
223
+ * Unpin a session to allow eviction.
224
+ *
225
+ * @param sessionId - Session ID to unpin
226
+ */ unpinSession(sessionId) {
227
+ const pooledSession = this.sessionPool.get(sessionId);
228
+ if (pooledSession) {
229
+ pooledSession.metadata.isPinned = false;
230
+ this.logger.debug('Session unpinned', {
231
+ sessionId
232
+ });
233
+ }
234
+ }
235
+ /**
236
+ * Get pool metrics.
237
+ *
238
+ * @returns Current pool metrics
239
+ */ getMetrics() {
240
+ this.updateMetrics();
241
+ return {
242
+ ...this.metrics
243
+ };
244
+ }
245
+ /**
246
+ * Get all sessions in the pool.
247
+ *
248
+ * @returns Array of pooled sessions
249
+ */ getSessions() {
250
+ return Array.from(this.sessionPool.values());
251
+ }
252
+ /**
253
+ * Get session by ID.
254
+ *
255
+ * @param sessionId - Session ID
256
+ * @returns Pooled session if found
257
+ */ getSession(sessionId) {
258
+ return this.sessionPool.get(sessionId);
259
+ }
260
+ /**
261
+ * Shutdown the session pool optimizer.
262
+ */ async shutdown() {
263
+ if (!this.initialized) {
264
+ return;
265
+ }
266
+ this.logger.info('Shutting down session pool optimizer', {
267
+ poolSize: this.sessionPool.size,
268
+ activeSessions: this.activeSessions.size
269
+ });
270
+ // Emit shutdown event BEFORE removing listeners
271
+ this.emit('pool:shutdown');
272
+ // Stop timers
273
+ if (this.healthCheckTimer) {
274
+ clearInterval(this.healthCheckTimer);
275
+ this.healthCheckTimer = undefined;
276
+ }
277
+ if (this.evictionTimer) {
278
+ clearInterval(this.evictionTimer);
279
+ this.evictionTimer = undefined;
280
+ }
281
+ // Clear all data
282
+ this.sessionPool.clear();
283
+ this.activeSessions.clear();
284
+ this.agentSessions.clear();
285
+ this.requestCounts.clear();
286
+ this.removeAllListeners();
287
+ this.initialized = false;
288
+ this.logger.info('Session pool optimizer shut down');
289
+ }
290
+ // ============================================
291
+ // Private Methods
292
+ // ============================================
293
+ /**
294
+ * Initialize pool metrics.
295
+ */ initializeMetrics() {
296
+ return {
297
+ currentPoolSize: 0,
298
+ activeSessions: 0,
299
+ idleSessions: 0,
300
+ unhealthySessions: 0,
301
+ utilizationPercent: 0,
302
+ totalCreated: 0,
303
+ totalEvicted: 0,
304
+ totalReuses: 0,
305
+ averageLifetimeMs: 0,
306
+ healthCheckPassRate: 100,
307
+ requestRate: 0,
308
+ autoScaleEvents: 0
309
+ };
310
+ }
311
+ /**
312
+ * Pre-warm the pool with minimum sessions.
313
+ */ async warmPool() {
314
+ const warmCount = this.config.minPoolSize;
315
+ for(let i = 0; i < warmCount; i++){
316
+ const sessionId = generateId('session');
317
+ const agentId = `warm-agent-${i}`;
318
+ const pooledSession = {
319
+ sessionId,
320
+ agentId,
321
+ session: this.createAgentSession(sessionId, agentId),
322
+ lastAccessTime: Date.now(),
323
+ createdTime: Date.now(),
324
+ reuseCount: 0,
325
+ health: 'healthy',
326
+ lastHealthCheck: Date.now(),
327
+ metadata: {
328
+ priority: 5,
329
+ isPinned: false,
330
+ tags: [
331
+ 'warmed'
332
+ ]
333
+ }
334
+ };
335
+ this.sessionPool.set(sessionId, pooledSession);
336
+ }
337
+ this.logger.info('Pool pre-warmed', {
338
+ sessionCount: warmCount
339
+ });
340
+ }
341
+ /**
342
+ * Create a new agent session object.
343
+ */ createAgentSession(sessionId, agentId) {
344
+ return {
345
+ sessionId,
346
+ agentId,
347
+ state: AgentState.IDLE,
348
+ isPaused: false,
349
+ checkpoints: [],
350
+ priority: 5,
351
+ metadata: {}
352
+ };
353
+ }
354
+ /**
355
+ * Create a new session in the pool.
356
+ */ async createSession(request) {
357
+ const sessionId = generateId('session');
358
+ const now = Date.now();
359
+ const pooledSession = {
360
+ sessionId,
361
+ agentId: request.agentId,
362
+ session: this.createAgentSession(sessionId, request.agentId),
363
+ lastAccessTime: now,
364
+ createdTime: now,
365
+ reuseCount: 0,
366
+ health: 'healthy',
367
+ lastHealthCheck: now,
368
+ metadata: {
369
+ priority: request.priority,
370
+ isPinned: false,
371
+ tags: [],
372
+ context: request.metadata
373
+ }
374
+ };
375
+ // Add to pool
376
+ this.sessionPool.set(sessionId, pooledSession);
377
+ this.activeSessions.add(sessionId);
378
+ this.agentSessions.set(request.agentId, sessionId);
379
+ // Update metrics
380
+ this.metrics.totalCreated++;
381
+ this.updateMetrics();
382
+ this.logger.debug('Session created', {
383
+ sessionId,
384
+ agentId: request.agentId,
385
+ poolSize: this.sessionPool.size
386
+ });
387
+ this.emit('session:created', {
388
+ sessionId,
389
+ agentId: request.agentId
390
+ });
391
+ return pooledSession;
392
+ }
393
+ /**
394
+ * Find a reusable idle session.
395
+ */ findReusableSession(request) {
396
+ // Find healthy idle sessions sorted by LRU
397
+ const idleSessions = Array.from(this.sessionPool.values()).filter((s)=>!this.activeSessions.has(s.sessionId) && s.health === 'healthy').sort((a, b)=>a.lastAccessTime - b.lastAccessTime);
398
+ if (idleSessions.length === 0) {
399
+ return null;
400
+ }
401
+ // Reuse oldest idle session
402
+ const session = idleSessions[0];
403
+ // Update session metadata
404
+ session.agentId = request.agentId;
405
+ session.lastAccessTime = Date.now();
406
+ session.reuseCount++;
407
+ session.metadata.priority = request.priority;
408
+ session.metadata.context = request.metadata;
409
+ // Update indices
410
+ this.activeSessions.add(session.sessionId);
411
+ this.agentSessions.set(request.agentId, session.sessionId);
412
+ // Update metrics
413
+ this.metrics.totalReuses++;
414
+ this.updateMetrics();
415
+ this.logger.debug('Session reused', {
416
+ sessionId: session.sessionId,
417
+ agentId: request.agentId,
418
+ reuseCount: session.reuseCount
419
+ });
420
+ this.emit('session:reused', {
421
+ sessionId: session.sessionId,
422
+ agentId: request.agentId
423
+ });
424
+ return session;
425
+ }
426
+ /**
427
+ * Evict least recently used session.
428
+ */ evictLRU() {
429
+ // Find evictable sessions (not pinned, not active)
430
+ const evictable = Array.from(this.sessionPool.values()).filter((s)=>!s.metadata.isPinned && !this.activeSessions.has(s.sessionId)).sort((a, b)=>a.lastAccessTime - b.lastAccessTime);
431
+ if (evictable.length === 0) {
432
+ this.logger.warn('No evictable sessions found');
433
+ return;
434
+ }
435
+ // Evict oldest
436
+ const session = evictable[0];
437
+ this.removeSession(session.sessionId);
438
+ this.logger.info('Session evicted (LRU)', {
439
+ sessionId: session.sessionId,
440
+ agentId: session.agentId,
441
+ idleTimeMs: Date.now() - session.lastAccessTime
442
+ });
443
+ this.emit('session:evicted', {
444
+ sessionId: session.sessionId,
445
+ reason: 'lru'
446
+ });
447
+ }
448
+ /**
449
+ * Start health check timer.
450
+ */ startHealthChecks() {
451
+ this.healthCheckTimer = setInterval(()=>{
452
+ this.performHealthChecks();
453
+ }, this.config.healthCheckIntervalMs);
454
+ }
455
+ /**
456
+ * Perform health checks on all sessions.
457
+ */ performHealthChecks() {
458
+ const now = Date.now();
459
+ let healthyCount = 0;
460
+ let totalChecked = 0;
461
+ for (const session of Array.from(this.sessionPool.values())){
462
+ totalChecked++;
463
+ // Simple health check: session age and reuse count
464
+ const age = now - session.createdTime;
465
+ const isHealthy = age < 3600000 && session.reuseCount < 100; // 1 hour, 100 reuses
466
+ session.lastHealthCheck = now;
467
+ session.health = isHealthy ? 'healthy' : 'degraded';
468
+ if (isHealthy) {
469
+ healthyCount++;
470
+ }
471
+ // Auto-recovery for degraded sessions
472
+ if (!isHealthy && this.config.enableAutoRecovery && !this.activeSessions.has(session.sessionId)) {
473
+ this.removeSession(session.sessionId);
474
+ this.logger.info('Unhealthy session removed', {
475
+ sessionId: session.sessionId
476
+ });
477
+ }
478
+ }
479
+ // Update metrics
480
+ this.metrics.healthCheckPassRate = totalChecked > 0 ? healthyCount / totalChecked * 100 : 100;
481
+ this.emit('health:checked', {
482
+ totalChecked,
483
+ healthyCount,
484
+ passRate: this.metrics.healthCheckPassRate
485
+ });
486
+ }
487
+ /**
488
+ * Start eviction timer for idle sessions.
489
+ */ startEvictionTimer() {
490
+ this.evictionTimer = setInterval(()=>{
491
+ this.evictIdleSessions();
492
+ }, this.config.maxIdleTimeMs / 2); // Check at half interval
493
+ }
494
+ /**
495
+ * Evict idle sessions exceeding max idle time.
496
+ */ evictIdleSessions() {
497
+ const now = Date.now();
498
+ const sessionsToEvict = [];
499
+ for (const session of Array.from(this.sessionPool.values())){
500
+ // Skip active and pinned sessions
501
+ if (this.activeSessions.has(session.sessionId) || session.metadata.isPinned) {
502
+ continue;
503
+ }
504
+ // Check idle time
505
+ const idleTime = now - session.lastAccessTime;
506
+ if (idleTime > this.config.maxIdleTimeMs) {
507
+ sessionsToEvict.push(session.sessionId);
508
+ }
509
+ }
510
+ // Evict but maintain minimum pool size
511
+ for (const sessionId of sessionsToEvict){
512
+ if (this.sessionPool.size > this.config.minPoolSize) {
513
+ this.removeSession(sessionId);
514
+ this.logger.info('Idle session evicted', {
515
+ sessionId
516
+ });
517
+ }
518
+ }
519
+ if (sessionsToEvict.length > 0) {
520
+ this.emit('sessions:evicted', {
521
+ count: sessionsToEvict.length,
522
+ reason: 'idle'
523
+ });
524
+ }
525
+ }
526
+ /**
527
+ * Calculate pool utilization percentage.
528
+ */ calculateUtilization() {
529
+ return this.activeSessions.size / this.sessionPool.size * 100;
530
+ }
531
+ /**
532
+ * Auto-scale the pool based on utilization.
533
+ */ async autoScale() {
534
+ const utilization = this.calculateUtilization();
535
+ if (utilization >= this.config.autoScaleThreshold) {
536
+ const newSize = Math.min(this.config.maxPoolSize, this.sessionPool.size + this.config.autoScaleStep);
537
+ const toAdd = newSize - this.sessionPool.size;
538
+ if (toAdd > 0) {
539
+ // Add new warm sessions
540
+ for(let i = 0; i < toAdd; i++){
541
+ const sessionId = generateId('session');
542
+ const agentId = `autoscale-${Date.now()}-${i}`;
543
+ const pooledSession = {
544
+ sessionId,
545
+ agentId,
546
+ session: this.createAgentSession(sessionId, agentId),
547
+ lastAccessTime: Date.now(),
548
+ createdTime: Date.now(),
549
+ reuseCount: 0,
550
+ health: 'healthy',
551
+ lastHealthCheck: Date.now(),
552
+ metadata: {
553
+ priority: 5,
554
+ isPinned: false,
555
+ tags: [
556
+ 'autoscaled'
557
+ ]
558
+ }
559
+ };
560
+ this.sessionPool.set(sessionId, pooledSession);
561
+ }
562
+ this.metrics.autoScaleEvents++;
563
+ this.logger.info('Pool auto-scaled', {
564
+ previousSize: this.sessionPool.size - toAdd,
565
+ newSize: this.sessionPool.size,
566
+ utilization
567
+ });
568
+ this.emit('pool:autoscaled', {
569
+ previousSize: this.sessionPool.size - toAdd,
570
+ newSize: this.sessionPool.size,
571
+ utilization
572
+ });
573
+ }
574
+ }
575
+ }
576
+ /**
577
+ * Check if agent is within throttle limit.
578
+ */ checkThrottleLimit(agentId) {
579
+ const now = Date.now();
580
+ const windowMs = 1000; // 1 second
581
+ // Get request timestamps for agent
582
+ let timestamps = this.requestCounts.get(agentId) || [];
583
+ // Remove timestamps outside window
584
+ timestamps = timestamps.filter((ts)=>now - ts < windowMs);
585
+ // Check limit
586
+ if (timestamps.length >= this.config.throttleLimit) {
587
+ return false;
588
+ }
589
+ // Add current request
590
+ timestamps.push(now);
591
+ this.requestCounts.set(agentId, timestamps);
592
+ return true;
593
+ }
594
+ /**
595
+ * Update pool metrics.
596
+ */ updateMetrics() {
597
+ const unhealthyCount = Array.from(this.sessionPool.values()).filter((s)=>s.health !== 'healthy').length;
598
+ const totalLifetime = Array.from(this.sessionPool.values()).reduce((sum, s)=>sum + (Date.now() - s.createdTime), 0);
599
+ this.metrics.currentPoolSize = this.sessionPool.size;
600
+ this.metrics.activeSessions = this.activeSessions.size;
601
+ this.metrics.idleSessions = this.sessionPool.size - this.activeSessions.size;
602
+ this.metrics.unhealthySessions = unhealthyCount;
603
+ this.metrics.utilizationPercent = this.calculateUtilization();
604
+ this.metrics.averageLifetimeMs = this.sessionPool.size > 0 ? totalLifetime / this.sessionPool.size : 0;
605
+ // Calculate request rate
606
+ const now = Date.now();
607
+ let totalRequests = 0;
608
+ for (const timestamps of Array.from(this.requestCounts.values())){
609
+ totalRequests += timestamps.filter((ts)=>now - ts < 1000).length;
610
+ }
611
+ this.metrics.requestRate = totalRequests;
612
+ }
613
+ }
614
+
615
+ //# sourceMappingURL=session-pool-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../src/coordination/archives/v2-sdk-typescript/v2/sdk/session-pool-optimizer.ts"],"names":["EventEmitter","Logger","generateId","AgentState","SessionPoolOptimizer","logger","config","sessionPool","activeSessions","agentSessions","requestCounts","healthCheckTimer","evictionTimer","metrics","initialized","startTime","level","format","destination","maxPoolSize","minPoolSize","maxIdleTimeMs","healthCheckIntervalMs","autoScaleThreshold","autoScaleStep","connectionTimeoutMs","throttleLimit","enableReuse","enableAutoRecovery","Map","Set","initializeMetrics","Date","now","initialize","warn","info","warmPool","startHealthChecks","startEvictionTimer","emit","poolSize","size","preWarmedSessions","acquireSession","request","Error","checkThrottleLimit","agentId","existingSessionId","get","has","pooledSession","lastAccessTime","reuseCount","totalReuses","debug","sessionId","reusedSession","findReusableSession","createSession","utilization","calculateUtilization","autoScale","evictLRU","releaseSession","delete","updateMetrics","removeSession","totalEvicted","pinSession","metadata","isPinned","unpinSession","getMetrics","getSessions","Array","from","values","getSession","shutdown","clearInterval","undefined","clear","removeAllListeners","currentPoolSize","idleSessions","unhealthySessions","utilizationPercent","totalCreated","averageLifetimeMs","healthCheckPassRate","requestRate","autoScaleEvents","warmCount","i","session","createAgentSession","createdTime","health","lastHealthCheck","priority","tags","set","sessionCount","state","IDLE","isPaused","checkpoints","context","add","filter","s","sort","a","b","length","evictable","idleTimeMs","reason","setInterval","performHealthChecks","healthyCount","totalChecked","age","isHealthy","passRate","evictIdleSessions","sessionsToEvict","idleTime","push","count","newSize","Math","min","toAdd","previousSize","windowMs","timestamps","ts","unhealthyCount","totalLifetime","reduce","sum","totalRequests"],"mappings":"AAAA;;;;;;;;;;;CAWC,GAED,SAASA,YAAY,QAAQ,cAAc;AAC3C,SAASC,MAAM,QAAQ,0BAA0B;AACjD,SAASC,UAAU,QAAQ,4BAA4B;AAEvD,SAASC,UAAU,QAAQ,mCAAmC;AA4H9D;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,MAAMC,6BAA6BJ;IACvBK,OAAe;IACfC,OAAoC;IAE7CC,YAAwC;IACxCC,eAA4B;IAC5BC,cAAmC;IACnCC,cAAqC;IAErCC,iBAAkC;IAClCC,cAA+B;IAC/BC,QAAqB;IACrBC,cAAuB,MAAM;IAC7BC,UAAkB;IAE1B,YAAYT,MAA0B,CAAE;QACtC,KAAK;QAEL,IAAI,CAACD,MAAM,GAAG,IAAIJ,OAAO;YACvBe,OAAO;YACPC,QAAQ;YACRC,aAAa;QACf;QAEA,IAAI,CAACZ,MAAM,GAAG;YACZa,aAAab,QAAQa,eAAe;YACpCC,aAAad,QAAQc,eAAe;YACpCC,eAAef,QAAQe,iBAAiB;YACxCC,uBAAuBhB,QAAQgB,yBAAyB;YACxDC,oBAAoBjB,QAAQiB,sBAAsB;YAClDC,eAAelB,QAAQkB,iBAAiB;YACxCC,qBAAqBnB,QAAQmB,uBAAuB;YACpDC,eAAepB,QAAQoB,iBAAiB;YACxCC,aAAarB,QAAQqB,eAAe;YACpCC,oBAAoBtB,QAAQsB,sBAAsB;QACpD;QAEA,IAAI,CAACrB,WAAW,GAAG,IAAIsB;QACvB,IAAI,CAACrB,cAAc,GAAG,IAAIsB;QAC1B,IAAI,CAACrB,aAAa,GAAG,IAAIoB;QACzB,IAAI,CAACnB,aAAa,GAAG,IAAImB;QACzB,IAAI,CAAChB,OAAO,GAAG,IAAI,CAACkB,iBAAiB;QACrC,IAAI,CAAChB,SAAS,GAAGiB,KAAKC,GAAG;IAC3B;IAEA;;GAEC,GACD,MAAMC,aAA4B;QAChC,IAAI,IAAI,CAACpB,WAAW,EAAE;YACpB,IAAI,CAACT,MAAM,CAAC8B,IAAI,CAAC;YACjB;QACF;QAEA,IAAI,CAAC9B,MAAM,CAAC+B,IAAI,CAAC,uCAAuC;YACtDjB,aAAa,IAAI,CAACb,MAAM,CAACa,WAAW;YACpCC,aAAa,IAAI,CAACd,MAAM,CAACc,WAAW;YACpCG,oBAAoB,IAAI,CAACjB,MAAM,CAACiB,kBAAkB;QACpD;QAEA,sCAAsC;QACtC,MAAM,IAAI,CAACc,QAAQ;QAEnB,sBAAsB;QACtB,IAAI,CAACC,iBAAiB;QAEtB,uBAAuB;QACvB,IAAI,CAACC,kBAAkB;QAEvB,IAAI,CAACzB,WAAW,GAAG;QACnB,IAAI,CAAC0B,IAAI,CAAC,oBAAoB;YAAEC,UAAU,IAAI,CAAClC,WAAW,CAACmC,IAAI;QAAC;QAEhE,IAAI,CAACrC,MAAM,CAAC+B,IAAI,CAAC,sCAAsC;YACrDO,mBAAmB,IAAI,CAACpC,WAAW,CAACmC,IAAI;QAC1C;IACF;IAEA;;;;;;GAMC,GACD,MAAME,eAAeC,OAAuB,EAA0B;QACpE,IAAI,CAAC,IAAI,CAAC/B,WAAW,EAAE;YACrB,MAAM,IAAIgC,MAAM;QAClB;QAEA,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAACC,kBAAkB,CAACF,QAAQG,OAAO,GAAG;YAC7C,MAAM,IAAIF,MACR,CAAC,MAAM,EAAED,QAAQG,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC1C,MAAM,CAACoB,aAAa,CAAC,OAAO,CAAC;QAE3F;QAEA,+CAA+C;QAC/C,MAAMuB,oBAAoB,IAAI,CAACxC,aAAa,CAACyC,GAAG,CAACL,QAAQG,OAAO;QAChE,IAAIC,qBAAqB,IAAI,CAACzC,cAAc,CAAC2C,GAAG,CAACF,oBAAoB;YACnE,MAAMG,gBAAgB,IAAI,CAAC7C,WAAW,CAAC2C,GAAG,CAACD;YAC3C,IAAIG,eAAe;gBACjBA,cAAcC,cAAc,GAAGrB,KAAKC,GAAG;gBACvCmB,cAAcE,UAAU;gBACxB,IAAI,CAACzC,OAAO,CAAC0C,WAAW;gBAExB,IAAI,CAAClD,MAAM,CAACmD,KAAK,CAAC,4BAA4B;oBAC5CR,SAASH,QAAQG,OAAO;oBACxBS,WAAWR;oBACXK,YAAYF,cAAcE,UAAU;gBACtC;gBAEA,OAAOF;YACT;QACF;QAEA,4BAA4B;QAC5B,IAAI,IAAI,CAAC9C,MAAM,CAACqB,WAAW,EAAE;YAC3B,MAAM+B,gBAAgB,IAAI,CAACC,mBAAmB,CAACd;YAC/C,IAAIa,eAAe;gBACjB,OAAOA;YACT;QACF;QAEA,uCAAuC;QACvC,IAAI,IAAI,CAACnD,WAAW,CAACmC,IAAI,GAAG,IAAI,CAACpC,MAAM,CAACa,WAAW,EAAE;YACnD,OAAO,MAAM,IAAI,CAACyC,aAAa,CAACf;QAClC;QAEA,wCAAwC;QACxC,MAAMgB,cAAc,IAAI,CAACC,oBAAoB;QAC7C,IAAID,eAAe,IAAI,CAACvD,MAAM,CAACiB,kBAAkB,EAAE;YACjD,MAAM,IAAI,CAACwC,SAAS;YACpB,OAAO,MAAM,IAAI,CAACH,aAAa,CAACf;QAClC;QAEA,kCAAkC;QAClC,IAAI,CAACmB,QAAQ;QACb,OAAO,MAAM,IAAI,CAACJ,aAAa,CAACf;IAClC;IAEA;;;;;GAKC,GACD,MAAMoB,eAAeR,SAAiB,EAAoB;QACxD,MAAML,gBAAgB,IAAI,CAAC7C,WAAW,CAAC2C,GAAG,CAACO;QAC3C,IAAI,CAACL,eAAe;YAClB,IAAI,CAAC/C,MAAM,CAAC8B,IAAI,CAAC,6BAA6B;gBAAEsB;YAAU;YAC1D,OAAO;QACT;QAEA,eAAe;QACf,IAAI,CAACjD,cAAc,CAAC0D,MAAM,CAACT;QAC3BL,cAAcC,cAAc,GAAGrB,KAAKC,GAAG;QAEvC,iBAAiB;QACjB,IAAI,CAACkC,aAAa;QAElB,IAAI,CAAC9D,MAAM,CAACmD,KAAK,CAAC,4BAA4B;YAC5CC;YACAT,SAASI,cAAcJ,OAAO;YAC9BM,YAAYF,cAAcE,UAAU;QACtC;QAEA,IAAI,CAACd,IAAI,CAAC,oBAAoB;YAAEiB;YAAWT,SAASI,cAAcJ,OAAO;QAAC;QAE1E,OAAO;IACT;IAEA;;;;;GAKC,GACD,MAAMoB,cAAcX,SAAiB,EAAoB;QACvD,MAAML,gBAAgB,IAAI,CAAC7C,WAAW,CAAC2C,GAAG,CAACO;QAC3C,IAAI,CAACL,eAAe;YAClB,OAAO;QACT;QAEA,0BAA0B;QAC1B,IAAI,CAAC7C,WAAW,CAAC2D,MAAM,CAACT;QACxB,IAAI,CAACjD,cAAc,CAAC0D,MAAM,CAACT;QAC3B,IAAI,CAAChD,aAAa,CAACyD,MAAM,CAACd,cAAcJ,OAAO;QAE/C,iBAAiB;QACjB,IAAI,CAACnC,OAAO,CAACwD,YAAY;QACzB,IAAI,CAACF,aAAa;QAElB,IAAI,CAAC9D,MAAM,CAACmD,KAAK,CAAC,6BAA6B;YAC7CC;YACAT,SAASI,cAAcJ,OAAO;QAChC;QAEA,IAAI,CAACR,IAAI,CAAC,mBAAmB;YAAEiB;YAAWT,SAASI,cAAcJ,OAAO;QAAC;QAEzE,OAAO;IACT;IAEA;;;;GAIC,GACDsB,WAAWb,SAAiB,EAAQ;QAClC,MAAML,gBAAgB,IAAI,CAAC7C,WAAW,CAAC2C,GAAG,CAACO;QAC3C,IAAIL,eAAe;YACjBA,cAAcmB,QAAQ,CAACC,QAAQ,GAAG;YAClC,IAAI,CAACnE,MAAM,CAACmD,KAAK,CAAC,kBAAkB;gBAAEC;YAAU;QAClD;IACF;IAEA;;;;GAIC,GACDgB,aAAahB,SAAiB,EAAQ;QACpC,MAAML,gBAAgB,IAAI,CAAC7C,WAAW,CAAC2C,GAAG,CAACO;QAC3C,IAAIL,eAAe;YACjBA,cAAcmB,QAAQ,CAACC,QAAQ,GAAG;YAClC,IAAI,CAACnE,MAAM,CAACmD,KAAK,CAAC,oBAAoB;gBAAEC;YAAU;QACpD;IACF;IAEA;;;;GAIC,GACDiB,aAA0B;QACxB,IAAI,CAACP,aAAa;QAClB,OAAO;YAAE,GAAG,IAAI,CAACtD,OAAO;QAAC;IAC3B;IAEA;;;;GAIC,GACD8D,cAA+B;QAC7B,OAAOC,MAAMC,IAAI,CAAC,IAAI,CAACtE,WAAW,CAACuE,MAAM;IAC3C;IAEA;;;;;GAKC,GACDC,WAAWtB,SAAiB,EAA6B;QACvD,OAAO,IAAI,CAAClD,WAAW,CAAC2C,GAAG,CAACO;IAC9B;IAEA;;GAEC,GACD,MAAMuB,WAA0B;QAC9B,IAAI,CAAC,IAAI,CAAClE,WAAW,EAAE;YACrB;QACF;QAEA,IAAI,CAACT,MAAM,CAAC+B,IAAI,CAAC,wCAAwC;YACvDK,UAAU,IAAI,CAAClC,WAAW,CAACmC,IAAI;YAC/BlC,gBAAgB,IAAI,CAACA,cAAc,CAACkC,IAAI;QAC1C;QAEA,gDAAgD;QAChD,IAAI,CAACF,IAAI,CAAC;QAEV,cAAc;QACd,IAAI,IAAI,CAAC7B,gBAAgB,EAAE;YACzBsE,cAAc,IAAI,CAACtE,gBAAgB;YACnC,IAAI,CAACA,gBAAgB,GAAGuE;QAC1B;QAEA,IAAI,IAAI,CAACtE,aAAa,EAAE;YACtBqE,cAAc,IAAI,CAACrE,aAAa;YAChC,IAAI,CAACA,aAAa,GAAGsE;QACvB;QAEA,iBAAiB;QACjB,IAAI,CAAC3E,WAAW,CAAC4E,KAAK;QACtB,IAAI,CAAC3E,cAAc,CAAC2E,KAAK;QACzB,IAAI,CAAC1E,aAAa,CAAC0E,KAAK;QACxB,IAAI,CAACzE,aAAa,CAACyE,KAAK;QACxB,IAAI,CAACC,kBAAkB;QAEvB,IAAI,CAACtE,WAAW,GAAG;QAEnB,IAAI,CAACT,MAAM,CAAC+B,IAAI,CAAC;IACnB;IAEA,+CAA+C;IAC/C,kBAAkB;IAClB,+CAA+C;IAE/C;;GAEC,GACD,AAAQL,oBAAiC;QACvC,OAAO;YACLsD,iBAAiB;YACjB7E,gBAAgB;YAChB8E,cAAc;YACdC,mBAAmB;YACnBC,oBAAoB;YACpBC,cAAc;YACdpB,cAAc;YACdd,aAAa;YACbmC,mBAAmB;YACnBC,qBAAqB;YACrBC,aAAa;YACbC,iBAAiB;QACnB;IACF;IAEA;;GAEC,GACD,MAAcxD,WAA0B;QACtC,MAAMyD,YAAY,IAAI,CAACxF,MAAM,CAACc,WAAW;QAEzC,IAAK,IAAI2E,IAAI,GAAGA,IAAID,WAAWC,IAAK;YAClC,MAAMtC,YAAYvD,WAAW;YAC7B,MAAM8C,UAAU,CAAC,WAAW,EAAE+C,GAAG;YAEjC,MAAM3C,gBAA+B;gBACnCK;gBACAT;gBACAgD,SAAS,IAAI,CAACC,kBAAkB,CAACxC,WAAWT;gBAC5CK,gBAAgBrB,KAAKC,GAAG;gBACxBiE,aAAalE,KAAKC,GAAG;gBACrBqB,YAAY;gBACZ6C,QAAQ;gBACRC,iBAAiBpE,KAAKC,GAAG;gBACzBsC,UAAU;oBACR8B,UAAU;oBACV7B,UAAU;oBACV8B,MAAM;wBAAC;qBAAS;gBAClB;YACF;YAEA,IAAI,CAAC/F,WAAW,CAACgG,GAAG,CAAC9C,WAAWL;QAClC;QAEA,IAAI,CAAC/C,MAAM,CAAC+B,IAAI,CAAC,mBAAmB;YAAEoE,cAAcV;QAAU;IAChE;IAEA;;GAEC,GACD,AAAQG,mBAAmBxC,SAAiB,EAAET,OAAe,EAAgB;QAC3E,OAAO;YACLS;YACAT;YACAyD,OAAOtG,WAAWuG,IAAI;YACtBC,UAAU;YACVC,aAAa,EAAE;YACfP,UAAU;YACV9B,UAAU,CAAC;QACb;IACF;IAEA;;GAEC,GACD,MAAcX,cAAcf,OAAuB,EAA0B;QAC3E,MAAMY,YAAYvD,WAAW;QAC7B,MAAM+B,MAAMD,KAAKC,GAAG;QAEpB,MAAMmB,gBAA+B;YACnCK;YACAT,SAASH,QAAQG,OAAO;YACxBgD,SAAS,IAAI,CAACC,kBAAkB,CAACxC,WAAWZ,QAAQG,OAAO;YAC3DK,gBAAgBpB;YAChBiE,aAAajE;YACbqB,YAAY;YACZ6C,QAAQ;YACRC,iBAAiBnE;YACjBsC,UAAU;gBACR8B,UAAUxD,QAAQwD,QAAQ;gBAC1B7B,UAAU;gBACV8B,MAAM,EAAE;gBACRO,SAAShE,QAAQ0B,QAAQ;YAC3B;QACF;QAEA,cAAc;QACd,IAAI,CAAChE,WAAW,CAACgG,GAAG,CAAC9C,WAAWL;QAChC,IAAI,CAAC5C,cAAc,CAACsG,GAAG,CAACrD;QACxB,IAAI,CAAChD,aAAa,CAAC8F,GAAG,CAAC1D,QAAQG,OAAO,EAAES;QAExC,iBAAiB;QACjB,IAAI,CAAC5C,OAAO,CAAC4E,YAAY;QACzB,IAAI,CAACtB,aAAa;QAElB,IAAI,CAAC9D,MAAM,CAACmD,KAAK,CAAC,mBAAmB;YACnCC;YACAT,SAASH,QAAQG,OAAO;YACxBP,UAAU,IAAI,CAAClC,WAAW,CAACmC,IAAI;QACjC;QAEA,IAAI,CAACF,IAAI,CAAC,mBAAmB;YAAEiB;YAAWT,SAASH,QAAQG,OAAO;QAAC;QAEnE,OAAOI;IACT;IAEA;;GAEC,GACD,AAAQO,oBAAoBd,OAAuB,EAAwB;QACzE,2CAA2C;QAC3C,MAAMyC,eAAeV,MAAMC,IAAI,CAAC,IAAI,CAACtE,WAAW,CAACuE,MAAM,IACpDiC,MAAM,CAAC,CAACC,IAAM,CAAC,IAAI,CAACxG,cAAc,CAAC2C,GAAG,CAAC6D,EAAEvD,SAAS,KAAKuD,EAAEb,MAAM,KAAK,WACpEc,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAE7D,cAAc,GAAG8D,EAAE9D,cAAc;QAErD,IAAIiC,aAAa8B,MAAM,KAAK,GAAG;YAC7B,OAAO;QACT;QAEA,4BAA4B;QAC5B,MAAMpB,UAAUV,YAAY,CAAC,EAAE;QAE/B,0BAA0B;QAC1BU,QAAQhD,OAAO,GAAGH,QAAQG,OAAO;QACjCgD,QAAQ3C,cAAc,GAAGrB,KAAKC,GAAG;QACjC+D,QAAQ1C,UAAU;QAClB0C,QAAQzB,QAAQ,CAAC8B,QAAQ,GAAGxD,QAAQwD,QAAQ;QAC5CL,QAAQzB,QAAQ,CAACsC,OAAO,GAAGhE,QAAQ0B,QAAQ;QAE3C,iBAAiB;QACjB,IAAI,CAAC/D,cAAc,CAACsG,GAAG,CAACd,QAAQvC,SAAS;QACzC,IAAI,CAAChD,aAAa,CAAC8F,GAAG,CAAC1D,QAAQG,OAAO,EAAEgD,QAAQvC,SAAS;QAEzD,iBAAiB;QACjB,IAAI,CAAC5C,OAAO,CAAC0C,WAAW;QACxB,IAAI,CAACY,aAAa;QAElB,IAAI,CAAC9D,MAAM,CAACmD,KAAK,CAAC,kBAAkB;YAClCC,WAAWuC,QAAQvC,SAAS;YAC5BT,SAASH,QAAQG,OAAO;YACxBM,YAAY0C,QAAQ1C,UAAU;QAChC;QAEA,IAAI,CAACd,IAAI,CAAC,kBAAkB;YAAEiB,WAAWuC,QAAQvC,SAAS;YAAET,SAASH,QAAQG,OAAO;QAAC;QAErF,OAAOgD;IACT;IAEA;;GAEC,GACD,AAAQhC,WAAiB;QACvB,mDAAmD;QACnD,MAAMqD,YAAYzC,MAAMC,IAAI,CAAC,IAAI,CAACtE,WAAW,CAACuE,MAAM,IACjDiC,MAAM,CAAC,CAACC,IAAM,CAACA,EAAEzC,QAAQ,CAACC,QAAQ,IAAI,CAAC,IAAI,CAAChE,cAAc,CAAC2C,GAAG,CAAC6D,EAAEvD,SAAS,GAC1EwD,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAE7D,cAAc,GAAG8D,EAAE9D,cAAc;QAErD,IAAIgE,UAAUD,MAAM,KAAK,GAAG;YAC1B,IAAI,CAAC/G,MAAM,CAAC8B,IAAI,CAAC;YACjB;QACF;QAEA,eAAe;QACf,MAAM6D,UAAUqB,SAAS,CAAC,EAAE;QAC5B,IAAI,CAACjD,aAAa,CAAC4B,QAAQvC,SAAS;QAEpC,IAAI,CAACpD,MAAM,CAAC+B,IAAI,CAAC,yBAAyB;YACxCqB,WAAWuC,QAAQvC,SAAS;YAC5BT,SAASgD,QAAQhD,OAAO;YACxBsE,YAAYtF,KAAKC,GAAG,KAAK+D,QAAQ3C,cAAc;QACjD;QAEA,IAAI,CAACb,IAAI,CAAC,mBAAmB;YAC3BiB,WAAWuC,QAAQvC,SAAS;YAC5B8D,QAAQ;QACV;IACF;IAEA;;GAEC,GACD,AAAQjF,oBAA0B;QAChC,IAAI,CAAC3B,gBAAgB,GAAG6G,YAAY;YAClC,IAAI,CAACC,mBAAmB;QAC1B,GAAG,IAAI,CAACnH,MAAM,CAACgB,qBAAqB;IACtC;IAEA;;GAEC,GACD,AAAQmG,sBAA4B;QAClC,MAAMxF,MAAMD,KAAKC,GAAG;QACpB,IAAIyF,eAAe;QACnB,IAAIC,eAAe;QAEnB,KAAK,MAAM3B,WAAWpB,MAAMC,IAAI,CAAC,IAAI,CAACtE,WAAW,CAACuE,MAAM,IAAK;YAC3D6C;YAEA,mDAAmD;YACnD,MAAMC,MAAM3F,MAAM+D,QAAQE,WAAW;YACrC,MAAM2B,YAAYD,MAAM,WAAW5B,QAAQ1C,UAAU,GAAG,KAAK,qBAAqB;YAElF0C,QAAQI,eAAe,GAAGnE;YAC1B+D,QAAQG,MAAM,GAAG0B,YAAY,YAAY;YAEzC,IAAIA,WAAW;gBACbH;YACF;YAEA,sCAAsC;YACtC,IAAI,CAACG,aAAa,IAAI,CAACvH,MAAM,CAACsB,kBAAkB,IAAI,CAAC,IAAI,CAACpB,cAAc,CAAC2C,GAAG,CAAC6C,QAAQvC,SAAS,GAAG;gBAC/F,IAAI,CAACW,aAAa,CAAC4B,QAAQvC,SAAS;gBACpC,IAAI,CAACpD,MAAM,CAAC+B,IAAI,CAAC,6BAA6B;oBAAEqB,WAAWuC,QAAQvC,SAAS;gBAAC;YAC/E;QACF;QAEA,iBAAiB;QACjB,IAAI,CAAC5C,OAAO,CAAC8E,mBAAmB,GAAGgC,eAAe,IAAI,AAACD,eAAeC,eAAgB,MAAM;QAE5F,IAAI,CAACnF,IAAI,CAAC,kBAAkB;YAC1BmF;YACAD;YACAI,UAAU,IAAI,CAACjH,OAAO,CAAC8E,mBAAmB;QAC5C;IACF;IAEA;;GAEC,GACD,AAAQpD,qBAA2B;QACjC,IAAI,CAAC3B,aAAa,GAAG4G,YAAY;YAC/B,IAAI,CAACO,iBAAiB;QACxB,GAAG,IAAI,CAACzH,MAAM,CAACe,aAAa,GAAG,IAAI,yBAAyB;IAC9D;IAEA;;GAEC,GACD,AAAQ0G,oBAA0B;QAChC,MAAM9F,MAAMD,KAAKC,GAAG;QACpB,MAAM+F,kBAA4B,EAAE;QAEpC,KAAK,MAAMhC,WAAWpB,MAAMC,IAAI,CAAC,IAAI,CAACtE,WAAW,CAACuE,MAAM,IAAK;YAC3D,kCAAkC;YAClC,IAAI,IAAI,CAACtE,cAAc,CAAC2C,GAAG,CAAC6C,QAAQvC,SAAS,KAAKuC,QAAQzB,QAAQ,CAACC,QAAQ,EAAE;gBAC3E;YACF;YAEA,kBAAkB;YAClB,MAAMyD,WAAWhG,MAAM+D,QAAQ3C,cAAc;YAC7C,IAAI4E,WAAW,IAAI,CAAC3H,MAAM,CAACe,aAAa,EAAE;gBACxC2G,gBAAgBE,IAAI,CAAClC,QAAQvC,SAAS;YACxC;QACF;QAEA,uCAAuC;QACvC,KAAK,MAAMA,aAAauE,gBAAiB;YACvC,IAAI,IAAI,CAACzH,WAAW,CAACmC,IAAI,GAAG,IAAI,CAACpC,MAAM,CAACc,WAAW,EAAE;gBACnD,IAAI,CAACgD,aAAa,CAACX;gBACnB,IAAI,CAACpD,MAAM,CAAC+B,IAAI,CAAC,wBAAwB;oBAAEqB;gBAAU;YACvD;QACF;QAEA,IAAIuE,gBAAgBZ,MAAM,GAAG,GAAG;YAC9B,IAAI,CAAC5E,IAAI,CAAC,oBAAoB;gBAAE2F,OAAOH,gBAAgBZ,MAAM;gBAAEG,QAAQ;YAAO;QAChF;IACF;IAEA;;GAEC,GACD,AAAQzD,uBAA+B;QACrC,OAAO,AAAC,IAAI,CAACtD,cAAc,CAACkC,IAAI,GAAG,IAAI,CAACnC,WAAW,CAACmC,IAAI,GAAI;IAC9D;IAEA;;GAEC,GACD,MAAcqB,YAA2B;QACvC,MAAMF,cAAc,IAAI,CAACC,oBAAoB;QAE7C,IAAID,eAAe,IAAI,CAACvD,MAAM,CAACiB,kBAAkB,EAAE;YACjD,MAAM6G,UAAUC,KAAKC,GAAG,CACtB,IAAI,CAAChI,MAAM,CAACa,WAAW,EACvB,IAAI,CAACZ,WAAW,CAACmC,IAAI,GAAG,IAAI,CAACpC,MAAM,CAACkB,aAAa;YAGnD,MAAM+G,QAAQH,UAAU,IAAI,CAAC7H,WAAW,CAACmC,IAAI;YAE7C,IAAI6F,QAAQ,GAAG;gBACb,wBAAwB;gBACxB,IAAK,IAAIxC,IAAI,GAAGA,IAAIwC,OAAOxC,IAAK;oBAC9B,MAAMtC,YAAYvD,WAAW;oBAC7B,MAAM8C,UAAU,CAAC,UAAU,EAAEhB,KAAKC,GAAG,GAAG,CAAC,EAAE8D,GAAG;oBAE9C,MAAM3C,gBAA+B;wBACnCK;wBACAT;wBACAgD,SAAS,IAAI,CAACC,kBAAkB,CAACxC,WAAWT;wBAC5CK,gBAAgBrB,KAAKC,GAAG;wBACxBiE,aAAalE,KAAKC,GAAG;wBACrBqB,YAAY;wBACZ6C,QAAQ;wBACRC,iBAAiBpE,KAAKC,GAAG;wBACzBsC,UAAU;4BACR8B,UAAU;4BACV7B,UAAU;4BACV8B,MAAM;gCAAC;6BAAa;wBACtB;oBACF;oBAEA,IAAI,CAAC/F,WAAW,CAACgG,GAAG,CAAC9C,WAAWL;gBAClC;gBAEA,IAAI,CAACvC,OAAO,CAACgF,eAAe;gBAE5B,IAAI,CAACxF,MAAM,CAAC+B,IAAI,CAAC,oBAAoB;oBACnCoG,cAAc,IAAI,CAACjI,WAAW,CAACmC,IAAI,GAAG6F;oBACtCH,SAAS,IAAI,CAAC7H,WAAW,CAACmC,IAAI;oBAC9BmB;gBACF;gBAEA,IAAI,CAACrB,IAAI,CAAC,mBAAmB;oBAC3BgG,cAAc,IAAI,CAACjI,WAAW,CAACmC,IAAI,GAAG6F;oBACtCH,SAAS,IAAI,CAAC7H,WAAW,CAACmC,IAAI;oBAC9BmB;gBACF;YACF;QACF;IACF;IAEA;;GAEC,GACD,AAAQd,mBAAmBC,OAAe,EAAW;QACnD,MAAMf,MAAMD,KAAKC,GAAG;QACpB,MAAMwG,WAAW,MAAM,WAAW;QAElC,mCAAmC;QACnC,IAAIC,aAAa,IAAI,CAAChI,aAAa,CAACwC,GAAG,CAACF,YAAY,EAAE;QAEtD,mCAAmC;QACnC0F,aAAaA,WAAW3B,MAAM,CAAC,CAAC4B,KAAO1G,MAAM0G,KAAKF;QAElD,cAAc;QACd,IAAIC,WAAWtB,MAAM,IAAI,IAAI,CAAC9G,MAAM,CAACoB,aAAa,EAAE;YAClD,OAAO;QACT;QAEA,sBAAsB;QACtBgH,WAAWR,IAAI,CAACjG;QAChB,IAAI,CAACvB,aAAa,CAAC6F,GAAG,CAACvD,SAAS0F;QAEhC,OAAO;IACT;IAEA;;GAEC,GACD,AAAQvE,gBAAsB;QAC5B,MAAMyE,iBAAiBhE,MAAMC,IAAI,CAAC,IAAI,CAACtE,WAAW,CAACuE,MAAM,IAAIiC,MAAM,CACjE,CAACC,IAAMA,EAAEb,MAAM,KAAK,WACpBiB,MAAM;QAER,MAAMyB,gBAAgBjE,MAAMC,IAAI,CAAC,IAAI,CAACtE,WAAW,CAACuE,MAAM,IAAIgE,MAAM,CAChE,CAACC,KAAK/B,IAAM+B,MAAO/G,CAAAA,KAAKC,GAAG,KAAK+E,EAAEd,WAAW,AAAD,GAC5C;QAGF,IAAI,CAACrF,OAAO,CAACwE,eAAe,GAAG,IAAI,CAAC9E,WAAW,CAACmC,IAAI;QACpD,IAAI,CAAC7B,OAAO,CAACL,cAAc,GAAG,IAAI,CAACA,cAAc,CAACkC,IAAI;QACtD,IAAI,CAAC7B,OAAO,CAACyE,YAAY,GAAG,IAAI,CAAC/E,WAAW,CAACmC,IAAI,GAAG,IAAI,CAAClC,cAAc,CAACkC,IAAI;QAC5E,IAAI,CAAC7B,OAAO,CAAC0E,iBAAiB,GAAGqD;QACjC,IAAI,CAAC/H,OAAO,CAAC2E,kBAAkB,GAAG,IAAI,CAAC1B,oBAAoB;QAC3D,IAAI,CAACjD,OAAO,CAAC6E,iBAAiB,GAC5B,IAAI,CAACnF,WAAW,CAACmC,IAAI,GAAG,IAAImG,gBAAgB,IAAI,CAACtI,WAAW,CAACmC,IAAI,GAAG;QAEtE,yBAAyB;QACzB,MAAMT,MAAMD,KAAKC,GAAG;QACpB,IAAI+G,gBAAgB;QACpB,KAAK,MAAMN,cAAc9D,MAAMC,IAAI,CAAC,IAAI,CAACnE,aAAa,CAACoE,MAAM,IAAK;YAChEkE,iBAAiBN,WAAW3B,MAAM,CAAC,CAAC4B,KAAO1G,MAAM0G,KAAK,MAAMvB,MAAM;QACpE;QACA,IAAI,CAACvG,OAAO,CAAC+E,WAAW,GAAGoD;IAC7B;AACF"}