claude-flow-novice 1.6.1 → 1.6.2

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 (244) hide show
  1. package/.claude/agents/cfn-loop/product-owner.md +54 -4
  2. package/.claude/commands/cfn-claude-sync.md +303 -0
  3. package/.claude/commands/cfn-loop-epic.md +290 -0
  4. package/.claude/commands/cfn-loop-single.md +168 -0
  5. package/.claude/commands/cfn-loop-sprints.md +384 -0
  6. package/.claude/commands/cfn-loop.md +180 -0
  7. package/.claude/commands/metrics-summary.md +58 -0
  8. package/.claude/commands/parse-epic.md +357 -0
  9. package/.claude/settings.json +4 -4
  10. package/.claude/settings.local.json +9 -2
  11. package/.claude-flow-novice/.claude/agents/cfn-loop/product-owner.md +792 -0
  12. package/.claude-flow-novice/dist/mcp/server.js +21 -2
  13. package/.claude-flow-novice/dist/src/api/claude-client.js +138 -3
  14. package/.claude-flow-novice/dist/src/api/claude-client.js.map +1 -1
  15. package/.claude-flow-novice/dist/src/cfn-loop/phase-orchestrator-example.js +1 -1
  16. package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js +247 -0
  17. package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js.map +1 -0
  18. package/.claude-flow-novice/dist/src/cli/commands/swarm.js +32 -15
  19. package/.claude-flow-novice/dist/src/cli/commands/swarm.js.map +1 -1
  20. package/.claude-flow-novice/dist/src/cli/commands/transparency.js +455 -0
  21. package/.claude-flow-novice/dist/src/cli/commands/transparency.js.map +1 -0
  22. package/.claude-flow-novice/dist/src/cli/simple-commands/init/templates/CLAUDE.md +129 -13
  23. package/.claude-flow-novice/dist/src/components/visualizations/index.js +9 -0
  24. package/.claude-flow-novice/dist/src/components/visualizations/index.js.map +1 -0
  25. package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js +462 -0
  26. package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js.map +1 -0
  27. package/.claude-flow-novice/dist/src/coordination/config-translator.js +248 -0
  28. package/.claude-flow-novice/dist/src/coordination/config-translator.js.map +1 -0
  29. package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js +287 -0
  30. package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js.map +1 -0
  31. package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js +68 -9
  32. package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js.map +1 -1
  33. package/.claude-flow-novice/dist/src/coordination/feature-flags.js +166 -0
  34. package/.claude-flow-novice/dist/src/coordination/feature-flags.js.map +1 -0
  35. package/.claude-flow-novice/dist/src/coordination/queen-agent.js +18 -4
  36. package/.claude-flow-novice/dist/src/coordination/queen-agent.js.map +1 -1
  37. package/.claude-flow-novice/dist/src/coordination/role-assignment.js +6 -110
  38. package/.claude-flow-novice/dist/src/coordination/role-assignment.js.map +1 -1
  39. package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js +632 -0
  40. package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js.map +1 -0
  41. package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js +11 -0
  42. package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js.map +1 -0
  43. package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js +318 -0
  44. package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js.map +1 -0
  45. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js +364 -0
  46. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js.map +1 -0
  47. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js +492 -0
  48. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js.map +1 -0
  49. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js +786 -0
  50. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js.map +1 -0
  51. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js +16 -0
  52. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js.map +1 -0
  53. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js +342 -0
  54. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js.map +1 -0
  55. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js +601 -0
  56. package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js.map +1 -0
  57. package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js +211 -0
  58. package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js.map +1 -0
  59. package/.claude-flow-novice/dist/src/coordination/v2/core/index.js +1 -0
  60. package/.claude-flow-novice/dist/src/coordination/v2/core/index.js.map +1 -1
  61. package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js +365 -6
  62. package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js.map +1 -1
  63. package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js +478 -0
  64. package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js.map +1 -0
  65. package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js +5 -2
  66. package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js.map +1 -1
  67. package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js +189 -0
  68. package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js.map +1 -1
  69. package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js +424 -0
  70. package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js.map +1 -0
  71. package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js +9 -0
  72. package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js.map +1 -0
  73. package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js +669 -0
  74. package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js.map +1 -0
  75. package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js +451 -0
  76. package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js.map +1 -0
  77. package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js +271 -0
  78. package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js.map +1 -0
  79. package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js +335 -0
  80. package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js.map +1 -0
  81. package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js +439 -0
  82. package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js.map +1 -0
  83. package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js +92 -0
  84. package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js.map +1 -0
  85. package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js +21 -0
  86. package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js.map +1 -0
  87. package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js +223 -0
  88. package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js.map +1 -0
  89. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js +436 -0
  90. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js.map +1 -0
  91. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js +278 -0
  92. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js.map +1 -0
  93. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js +317 -0
  94. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js.map +1 -0
  95. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js +273 -0
  96. package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js.map +1 -0
  97. package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js +15 -0
  98. package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js.map +1 -0
  99. package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js +512 -0
  100. package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js.map +1 -0
  101. package/.claude-flow-novice/dist/src/coordination/v2/index.js +6 -0
  102. package/.claude-flow-novice/dist/src/coordination/v2/index.js.map +1 -1
  103. package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js +557 -0
  104. package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js.map +1 -0
  105. package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js +14 -0
  106. package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js.map +1 -0
  107. package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js +212 -0
  108. package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js.map +1 -0
  109. package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js +552 -0
  110. package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js.map +1 -0
  111. package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js +367 -0
  112. package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js.map +1 -0
  113. package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js +1 -0
  114. package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js.map +1 -1
  115. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js +371 -0
  116. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js.map +1 -0
  117. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js +355 -0
  118. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js.map +1 -0
  119. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js +424 -0
  120. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js.map +1 -0
  121. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js +16 -0
  122. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js.map +1 -0
  123. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js +295 -0
  124. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js.map +1 -0
  125. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js +411 -0
  126. package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js.map +1 -0
  127. package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js +14 -0
  128. package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js.map +1 -0
  129. package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js +387 -0
  130. package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js.map +1 -0
  131. package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js +589 -0
  132. package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js.map +1 -0
  133. package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js +444 -0
  134. package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js.map +1 -0
  135. package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js +29 -8
  136. package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js.map +1 -1
  137. package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js +470 -0
  138. package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js.map +1 -0
  139. package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js +450 -0
  140. package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js.map +1 -0
  141. package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js +5 -0
  142. package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js.map +1 -1
  143. package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js +545 -0
  144. package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js.map +1 -0
  145. package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js +44 -0
  146. package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js.map +1 -1
  147. package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js +415 -0
  148. package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js.map +1 -0
  149. package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js +615 -0
  150. package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js.map +1 -0
  151. package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js +259 -0
  152. package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js.map +1 -0
  153. package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js +17 -0
  154. package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js.map +1 -0
  155. package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js +357 -0
  156. package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js.map +1 -0
  157. package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js +679 -0
  158. package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js.map +1 -0
  159. package/.claude-flow-novice/dist/src/core/agent-manager.js +30 -0
  160. package/.claude-flow-novice/dist/src/core/agent-manager.js.map +1 -1
  161. package/.claude-flow-novice/dist/src/mcp/server.js +21 -2
  162. package/.claude-flow-novice/dist/src/mcp/server.js.map +1 -1
  163. package/.claude-flow-novice/dist/src/observability/metrics-counter.js +268 -0
  164. package/.claude-flow-novice/dist/src/observability/metrics-counter.js.map +1 -0
  165. package/.claude-flow-novice/dist/src/observability/metrics-storage.js +265 -0
  166. package/.claude-flow-novice/dist/src/observability/metrics-storage.js.map +1 -0
  167. package/.claude-flow-novice/dist/src/observability/telemetry.js +26 -0
  168. package/.claude-flow-novice/dist/src/observability/telemetry.js.map +1 -1
  169. package/.claude-flow-novice/dist/src/providers/tiered-router.js +64 -10
  170. package/.claude-flow-novice/dist/src/providers/tiered-router.js.map +1 -1
  171. package/.claude-flow-novice/dist/src/providers/zai-provider.js +196 -97
  172. package/.claude-flow-novice/dist/src/providers/zai-provider.js.map +1 -1
  173. package/.claude-flow-novice/dist/src/slash-commands/cfn-claude-sync.js +533 -0
  174. package/.claude-flow-novice/dist/src/slash-commands/index.js +5 -0
  175. package/.claude-flow-novice/dist/src/slash-commands/metrics-summary-class.js +74 -0
  176. package/.claude-flow-novice/dist/src/slash-commands/metrics-summary.js +335 -0
  177. package/.claude-flow-novice/dist/src/slash-commands/register-all-commands.js +12 -0
  178. package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js +96 -0
  179. package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js.map +1 -0
  180. package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js +406 -0
  181. package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js.map +1 -0
  182. package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js +35 -5
  183. package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js.map +1 -1
  184. package/.claude-flow-novice/dist/src/web/api/config/api-config.js +186 -0
  185. package/.claude-flow-novice/dist/src/web/api/config/api-config.js.map +1 -0
  186. package/.claude-flow-novice/dist/src/web/api/middleware/auth.js +205 -0
  187. package/.claude-flow-novice/dist/src/web/api/middleware/auth.js.map +1 -0
  188. package/.claude-flow-novice/dist/src/web/api/middleware/cache.js +262 -0
  189. package/.claude-flow-novice/dist/src/web/api/middleware/cache.js.map +1 -0
  190. package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js +250 -0
  191. package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js.map +1 -0
  192. package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js +217 -0
  193. package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js.map +1 -0
  194. package/.claude-flow-novice/dist/src/web/api/middleware/validation.js +325 -0
  195. package/.claude-flow-novice/dist/src/web/api/middleware/validation.js.map +1 -0
  196. package/.claude-flow-novice/dist/src/web/api/routes/events.js +465 -0
  197. package/.claude-flow-novice/dist/src/web/api/routes/events.js.map +1 -0
  198. package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js +302 -0
  199. package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js.map +1 -0
  200. package/.claude-flow-novice/dist/src/web/api/routes/index.js +14 -0
  201. package/.claude-flow-novice/dist/src/web/api/routes/index.js.map +1 -0
  202. package/.claude-flow-novice/dist/src/web/api/routes/metrics.js +561 -0
  203. package/.claude-flow-novice/dist/src/web/api/routes/metrics.js.map +1 -0
  204. package/.claude-flow-novice/dist/src/web/api/routes/status.js +450 -0
  205. package/.claude-flow-novice/dist/src/web/api/routes/status.js.map +1 -0
  206. package/.claude-flow-novice/dist/src/web/api/server.js +451 -0
  207. package/.claude-flow-novice/dist/src/web/api/server.js.map +1 -0
  208. package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js +385 -0
  209. package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js.map +1 -0
  210. package/.claude-flow-novice/dist/src/web/dashboard/index.js +87 -0
  211. package/.claude-flow-novice/dist/src/web/dashboard/index.js.map +1 -0
  212. package/.claude-flow-novice/dist/src/web/dashboard/types.js +6 -0
  213. package/.claude-flow-novice/dist/src/web/dashboard/types.js.map +1 -0
  214. package/.claude-flow-novice/metrics.db +0 -0
  215. package/.claude-flow-novice/metrics.db-shm +0 -0
  216. package/.claude-flow-novice/metrics.db-wal +0 -0
  217. package/CLAUDE.md +29 -0
  218. package/README.md +27 -0
  219. package/config/hooks/post-edit-pipeline.js +36 -2
  220. package/examples/metrics-counter-demo.ts +106 -0
  221. package/examples/persistent-metrics-demo.ts +83 -0
  222. package/examples/phase-5-multi-level-control.ts +282 -0
  223. package/examples/session-pool-optimizer-example.ts +311 -0
  224. package/package.json +15 -3
  225. package/scripts/check-routing-stats.cjs +122 -0
  226. package/scripts/pre-publish-validation.cjs +212 -0
  227. package/scripts/test-provider-routing.cjs +228 -0
  228. package/scripts/test-routing-telemetry.cjs +147 -0
  229. package/scripts/test-zai-10k.cjs +81 -0
  230. package/scripts/test-zai-api.cjs +191 -0
  231. package/scripts/test-zai-diagnostic.cjs +151 -0
  232. package/scripts/test-zai-final.cjs +128 -0
  233. package/scripts/test-zai-with-env.cjs +85 -0
  234. package/scripts/validate-coordination-cli.js +69 -0
  235. package/scripts/validate-coordination-toggle-integration.cjs +501 -0
  236. package/src/cli/simple-commands/init/templates/CLAUDE.md +29 -0
  237. package/src/observability/metrics-counter.ts +347 -0
  238. package/src/observability/metrics-storage.ts +356 -0
  239. package/src/observability/telemetry.ts +658 -0
  240. package/src/slash-commands/cfn-claude-sync.js +533 -0
  241. package/src/slash-commands/index.js +5 -0
  242. package/src/slash-commands/metrics-summary-class.js +74 -0
  243. package/src/slash-commands/metrics-summary.js +335 -0
  244. package/src/slash-commands/register-all-commands.js +12 -0
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Message Bus + Completion Detection Integration - Usage Example
3
+ *
4
+ * Demonstrates event-driven swarm completion with zero polling overhead.
5
+ *
6
+ * @module coordination/v2/integration/message-bus-completion-integration.example
7
+ */ import { MessageBusCompletionIntegration, IntegrationEvent } from './message-bus-completion-integration.js';
8
+ import { AgentState } from '../core/agent-state.js';
9
+ import { MessagePriority } from '../core/message.js';
10
+ /**
11
+ * Example: Event-driven swarm completion with automatic shutdown
12
+ */ async function example_eventDrivenCompletion(messageBus, stateMachine, completionDetector, swarmShutdown) {
13
+ console.log('=== Event-Driven Swarm Completion Example ===\n');
14
+ // 1. Create integration instance
15
+ const integration = new MessageBusCompletionIntegration(messageBus, completionDetector, stateMachine, swarmShutdown, {
16
+ autoDetectCompletion: true,
17
+ autoShutdownOnCompletion: true,
18
+ publishStateEvents: true,
19
+ publishCompletionEvents: true,
20
+ enableLogging: true,
21
+ completionCheckDebounceMs: 500
22
+ });
23
+ // 2. Subscribe to integration events
24
+ integration.on(IntegrationEvent.STATE_TRANSITION, (event)=>{
25
+ console.log(`[Integration] State transition: ${event.agentId} → ${event.transition}`);
26
+ });
27
+ integration.on(IntegrationEvent.COMPLETION_DETECTED, (event)=>{
28
+ console.log(`[Integration] Swarm completion detected: ${event.swarmId}`);
29
+ console.log(` Completed: ${event.completedCount}/${event.totalCount} agents`);
30
+ });
31
+ integration.on(IntegrationEvent.SHUTDOWN_INITIATED, (event)=>{
32
+ console.log(`[Integration] Shutdown initiated: ${event.agentCount} agents`);
33
+ });
34
+ integration.on(IntegrationEvent.SHUTDOWN_COMPLETED, (event)=>{
35
+ console.log(`[Integration] Shutdown completed: ${event.success ? 'SUCCESS' : 'FAILED'}`);
36
+ console.log(` Total latency: ${event.totalLatencyMs}ms`);
37
+ });
38
+ // 3. Subscribe to message bus events
39
+ messageBus.subscribe('agent.state.transition', async (message)=>{
40
+ console.log(`[MessageBus] State event: ${message.payload.agentId} ${message.payload.fromState} → ${message.payload.toState}`);
41
+ });
42
+ messageBus.subscribe('completion.detected', async (message)=>{
43
+ console.log(`[MessageBus] Completion event: ${message.payload.swarmId}`);
44
+ });
45
+ messageBus.subscribe('shutdown.*', async (message)=>{
46
+ console.log(`[MessageBus] Shutdown event: ${message.topic}`);
47
+ });
48
+ // 4. Start integration (wire event handlers)
49
+ integration.start();
50
+ console.log('Integration started\n');
51
+ // 5. Register agents
52
+ const swarmId = 'swarm-example';
53
+ const agentIds = [
54
+ 'agent-1',
55
+ 'agent-2',
56
+ 'agent-3'
57
+ ];
58
+ for (const agentId of agentIds){
59
+ await stateMachine.registerAgent(agentId, swarmId, AgentState.IDLE);
60
+ }
61
+ // 6. Simulate agent lifecycle (transitions trigger completion checks)
62
+ for (const agentId of agentIds){
63
+ await stateMachine.transition(agentId, AgentState.WORKING);
64
+ await new Promise((resolve)=>setTimeout(resolve, 100)); // Simulate work
65
+ }
66
+ // 7. Transition all agents to COMPLETED
67
+ // Integration automatically detects completion and initiates shutdown
68
+ for (const agentId of agentIds){
69
+ await stateMachine.transition(agentId, AgentState.COMPLETED);
70
+ }
71
+ // 8. Wait for debounced completion check + shutdown
72
+ await new Promise((resolve)=>setTimeout(resolve, 1500));
73
+ // 9. Get metrics
74
+ const metrics = integration.getMetrics();
75
+ console.log('\n=== Integration Metrics ===');
76
+ console.log(`State transitions: ${metrics.totalStateTransitions}`);
77
+ console.log(`Completion checks: ${metrics.totalCompletionChecks}`);
78
+ console.log(`Completions detected: ${metrics.totalCompletionsDetected}`);
79
+ console.log(`Shutdowns initiated: ${metrics.totalShutdownsInitiated}`);
80
+ console.log(`Events published: ${metrics.totalEventsPublished}`);
81
+ console.log(`Avg completion latency: ${metrics.avgCompletionLatencyMs.toFixed(2)}ms`);
82
+ // 10. Cleanup
83
+ await integration.cleanup();
84
+ console.log('\nIntegration cleanup complete');
85
+ }
86
+ /**
87
+ * Example: Manual completion checks with message bus events
88
+ */ async function example_manualCompletionChecks(messageBus, stateMachine, completionDetector, swarmShutdown) {
89
+ console.log('=== Manual Completion Checks Example ===\n');
90
+ // 1. Create integration with auto-detection disabled
91
+ const integration = new MessageBusCompletionIntegration(messageBus, completionDetector, stateMachine, swarmShutdown, {
92
+ autoDetectCompletion: false,
93
+ autoShutdownOnCompletion: false,
94
+ publishStateEvents: true,
95
+ publishCompletionEvents: true,
96
+ enableLogging: false
97
+ });
98
+ integration.start();
99
+ // 2. Listen for completion events and manually trigger shutdown
100
+ integration.on(IntegrationEvent.COMPLETION_DETECTED, async (event)=>{
101
+ console.log(`Completion detected for ${event.swarmId}`);
102
+ console.log('Manually initiating shutdown...');
103
+ // Manual shutdown trigger
104
+ const agentIds = [
105
+ 'agent-1',
106
+ 'agent-2'
107
+ ];
108
+ await swarmShutdown.shutdownSwarm(agentIds, 'Manual shutdown after completion');
109
+ });
110
+ // 3. Register and transition agents
111
+ const swarmId = 'swarm-manual';
112
+ await stateMachine.registerAgent('agent-1', swarmId, AgentState.IDLE);
113
+ await stateMachine.registerAgent('agent-2', swarmId, AgentState.IDLE);
114
+ await stateMachine.transition('agent-1', AgentState.WORKING);
115
+ await stateMachine.transition('agent-2', AgentState.WORKING);
116
+ // 4. Manually check completion
117
+ const result = await completionDetector.detectCompletion(swarmId);
118
+ console.log(`Manual completion check: ${result.completed ? 'COMPLETE' : 'INCOMPLETE'}`);
119
+ // 5. Complete agents
120
+ await stateMachine.transition('agent-1', AgentState.COMPLETED);
121
+ await stateMachine.transition('agent-2', AgentState.COMPLETED);
122
+ // 6. Manually check again
123
+ const finalResult = await completionDetector.detectCompletion(swarmId);
124
+ console.log(`Final completion check: ${finalResult.completed ? 'COMPLETE' : 'INCOMPLETE'}`);
125
+ await integration.cleanup();
126
+ console.log('Integration cleanup complete\n');
127
+ }
128
+ /**
129
+ * Example: Help system integration with message bus
130
+ */ async function example_helpSystemIntegration(messageBus, stateMachine, completionDetector, swarmShutdown) {
131
+ console.log('=== Help System Integration Example ===\n');
132
+ const integration = new MessageBusCompletionIntegration(messageBus, completionDetector, stateMachine, swarmShutdown, {
133
+ publishStateEvents: true,
134
+ enableLogging: false
135
+ });
136
+ // Subscribe to help events
137
+ messageBus.subscribe('help.requested', async (message)=>{
138
+ console.log(`Help requested: ${message.payload.requestingAgentId} → ${message.payload.helperAgentId}`);
139
+ });
140
+ messageBus.subscribe('help.completed', async (message)=>{
141
+ console.log(`Help completed for: ${message.payload.helperAgentId}`);
142
+ console.log(` Recovery latency: ${message.payload.recoveryLatencyMs}ms`);
143
+ });
144
+ integration.start();
145
+ // Register agents
146
+ await stateMachine.registerAgent('agent-waiting', 'swarm-help', AgentState.IDLE);
147
+ await stateMachine.registerAgent('agent-helper', 'swarm-help', AgentState.WORKING);
148
+ // Transition to WAITING (triggers help request eligibility)
149
+ await stateMachine.transition('agent-waiting', AgentState.WAITING);
150
+ // Request help (state machine emits help:requested event)
151
+ const helpResult = await stateMachine.requestHelp('agent-waiting', 'agent-helper', 'Need assistance with complex task');
152
+ console.log(`Help request created: ${helpResult.requestId}`);
153
+ console.log(`Checkpoint created: ${helpResult.checkpointId}`);
154
+ // Complete help (restores helper from checkpoint)
155
+ await new Promise((resolve)=>setTimeout(resolve, 100)); // Simulate help work
156
+ const completionResult = await stateMachine.completeHelp(helpResult.requestId);
157
+ console.log(`Help completion success: ${completionResult.success}`);
158
+ console.log(`Recovery latency: ${completionResult.recoveryLatencyMs}ms`);
159
+ await integration.cleanup();
160
+ console.log('Integration cleanup complete\n');
161
+ }
162
+ /**
163
+ * Example: Custom message routing with completion events
164
+ */ async function example_customMessageRouting(messageBus, stateMachine, completionDetector, swarmShutdown) {
165
+ console.log('=== Custom Message Routing Example ===\n');
166
+ const integration = new MessageBusCompletionIntegration(messageBus, completionDetector, stateMachine, swarmShutdown, {
167
+ publishStateEvents: true,
168
+ publishCompletionEvents: true
169
+ });
170
+ // Custom routing logic based on state transitions
171
+ messageBus.subscribe('agent.state.transition', async (message)=>{
172
+ const { agentId, toState } = message.payload;
173
+ // Route to different channels based on state
174
+ if (toState === AgentState.COMPLETED) {
175
+ // Publish to completion notification channel
176
+ messageBus.publish({
177
+ topic: 'notifications.agent.completed',
178
+ payload: {
179
+ agentId,
180
+ timestamp: Date.now()
181
+ },
182
+ priority: MessagePriority.NORMAL
183
+ });
184
+ } else if (toState === AgentState.ERROR) {
185
+ // Publish to error channel with high priority
186
+ messageBus.publish({
187
+ topic: 'notifications.agent.error',
188
+ payload: {
189
+ agentId,
190
+ timestamp: Date.now()
191
+ },
192
+ priority: MessagePriority.CRITICAL
193
+ });
194
+ }
195
+ });
196
+ // Subscribe to custom notification channels
197
+ messageBus.subscribe('notifications.*', async (message)=>{
198
+ console.log(`Notification: ${message.topic} - ${JSON.stringify(message.payload)}`);
199
+ });
200
+ integration.start();
201
+ // Simulate agent lifecycle
202
+ await stateMachine.registerAgent('agent-custom', 'swarm-custom', AgentState.IDLE);
203
+ await stateMachine.transition('agent-custom', AgentState.WORKING);
204
+ await stateMachine.transition('agent-custom', AgentState.COMPLETED);
205
+ await new Promise((resolve)=>setTimeout(resolve, 500));
206
+ await integration.cleanup();
207
+ console.log('Custom routing example complete\n');
208
+ }
209
+ // Export examples for documentation
210
+ export { example_eventDrivenCompletion, example_manualCompletionChecks, example_helpSystemIntegration, example_customMessageRouting };
211
+
212
+ //# sourceMappingURL=message-bus-completion-integration.example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/coordination/v2/integration/message-bus-completion-integration.example.ts"],"names":["MessageBusCompletionIntegration","IntegrationEvent","AgentState","MessagePriority","example_eventDrivenCompletion","messageBus","stateMachine","completionDetector","swarmShutdown","console","log","integration","autoDetectCompletion","autoShutdownOnCompletion","publishStateEvents","publishCompletionEvents","enableLogging","completionCheckDebounceMs","on","STATE_TRANSITION","event","agentId","transition","COMPLETION_DETECTED","swarmId","completedCount","totalCount","SHUTDOWN_INITIATED","agentCount","SHUTDOWN_COMPLETED","success","totalLatencyMs","subscribe","message","payload","fromState","toState","topic","start","agentIds","registerAgent","IDLE","WORKING","Promise","resolve","setTimeout","COMPLETED","metrics","getMetrics","totalStateTransitions","totalCompletionChecks","totalCompletionsDetected","totalShutdownsInitiated","totalEventsPublished","avgCompletionLatencyMs","toFixed","cleanup","example_manualCompletionChecks","shutdownSwarm","result","detectCompletion","completed","finalResult","example_helpSystemIntegration","requestingAgentId","helperAgentId","recoveryLatencyMs","WAITING","helpResult","requestHelp","requestId","checkpointId","completionResult","completeHelp","example_customMessageRouting","publish","timestamp","Date","now","priority","NORMAL","ERROR","CRITICAL","JSON","stringify"],"mappings":"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"}