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,295 @@
1
+ /**
2
+ * Agent Coordination V2 - State Channel
3
+ *
4
+ * Specialized channel for broadcasting agent state change events.
5
+ * Integrates with Phase 1 state machine to publish state transitions
6
+ * across the coordination system.
7
+ *
8
+ * @module coordination/v2/messaging/channels/state-channel
9
+ */ import { AgentState, AGENT_STATE_METADATA } from '../../core/agent-state.js';
10
+ import { MessagePriority } from '../../core/message.js';
11
+ /**
12
+ * State channel validation error.
13
+ */ export class StateChannelError extends Error {
14
+ constructor(message){
15
+ super(message);
16
+ this.name = 'StateChannelError';
17
+ }
18
+ }
19
+ /**
20
+ * State Channel Implementation.
21
+ *
22
+ * Specialized messaging channel for agent state transitions with:
23
+ * - Type-safe state change payloads
24
+ * - Automatic priority assignment based on state criticality
25
+ * - Integration with Phase 1 state machine
26
+ * - Validation of state transitions
27
+ * - Monitoring and observability hooks
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const stateChannel = new StateChannel(messageBroker);
32
+ *
33
+ * // Subscribe to all state changes
34
+ * await stateChannel.subscribeToStateChanges(async (payload) => {
35
+ * console.log(`Agent ${payload.agentId}: ${payload.fromState} -> ${payload.toState}`);
36
+ * });
37
+ *
38
+ * // Publish state change
39
+ * await stateChannel.publishStateChange({
40
+ * agentId: 'agent-1',
41
+ * fromState: AgentState.IDLE,
42
+ * toState: AgentState.WORKING
43
+ * });
44
+ * ```
45
+ */ export class StateChannel {
46
+ /** Base topic for all state change messages */ static BASE_TOPIC = 'agent.state';
47
+ broker;
48
+ /**
49
+ * Creates a new state channel instance.
50
+ *
51
+ * @param broker - Message broker for publishing/subscribing
52
+ */ constructor(broker){
53
+ if (!broker) {
54
+ throw new StateChannelError('Message broker is required');
55
+ }
56
+ this.broker = broker;
57
+ }
58
+ // ============================================
59
+ // Publishing
60
+ // ============================================
61
+ /**
62
+ * Publishes an agent state change event.
63
+ *
64
+ * @param config - State change configuration
65
+ * @returns Promise resolving to published message
66
+ * @throws {StateChannelError} If validation fails
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * await stateChannel.publishStateChange({
71
+ * agentId: 'agent-1',
72
+ * fromState: AgentState.WORKING,
73
+ * toState: AgentState.COMPLETED,
74
+ * reason: 'Task finished successfully'
75
+ * });
76
+ * ```
77
+ */ async publishStateChange(config) {
78
+ this.validateStateChange(config);
79
+ const payload = {
80
+ agentId: config.agentId,
81
+ fromState: config.fromState,
82
+ toState: config.toState,
83
+ timestamp: Date.now(),
84
+ reason: config.reason,
85
+ metadata: config.metadata,
86
+ durationInPreviousState: config.durationInPreviousState
87
+ };
88
+ const priority = this.calculatePriority(config.toState);
89
+ const topic = this.buildTopic(config.agentId, config.toState);
90
+ const messageConfig = {
91
+ topic,
92
+ payload,
93
+ priority,
94
+ senderId: config.agentId,
95
+ metadata: {
96
+ channel: 'state',
97
+ stateChange: true,
98
+ fromState: config.fromState,
99
+ toState: config.toState
100
+ }
101
+ };
102
+ return this.broker.publish(messageConfig);
103
+ }
104
+ /**
105
+ * Publishes a batch of state changes (for efficiency).
106
+ *
107
+ * @param changes - Array of state change configurations
108
+ * @returns Promise resolving to array of published messages
109
+ */ async publishBatchStateChanges(changes) {
110
+ const results = [];
111
+ for (const change of changes){
112
+ const message = await this.publishStateChange(change);
113
+ results.push(message);
114
+ }
115
+ return results;
116
+ }
117
+ // ============================================
118
+ // Subscribing
119
+ // ============================================
120
+ /**
121
+ * Subscribes to all state change events.
122
+ *
123
+ * @param handler - Callback function for state changes
124
+ * @returns Subscription handle
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const sub = await stateChannel.subscribeToStateChanges(async (payload) => {
129
+ * console.log(`State change: ${payload.agentId} ${payload.fromState} -> ${payload.toState}`);
130
+ * });
131
+ * ```
132
+ */ async subscribeToStateChanges(handler) {
133
+ return this.broker.subscribe({
134
+ topic: `${StateChannel.BASE_TOPIC}.*.*`,
135
+ handler: async (message)=>{
136
+ await handler(message.payload);
137
+ }
138
+ });
139
+ }
140
+ /**
141
+ * Subscribes to state changes for a specific agent.
142
+ *
143
+ * @param agentId - Agent ID to monitor
144
+ * @param handler - Callback function for state changes
145
+ * @returns Subscription handle
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const sub = await stateChannel.subscribeToAgent('agent-1', async (payload) => {
150
+ * console.log(`Agent 1 state: ${payload.toState}`);
151
+ * });
152
+ * ```
153
+ */ async subscribeToAgent(agentId, handler) {
154
+ this.validateAgentId(agentId);
155
+ return this.broker.subscribe({
156
+ topic: `${StateChannel.BASE_TOPIC}.${agentId}.*`,
157
+ handler: async (message)=>{
158
+ await handler(message.payload);
159
+ }
160
+ });
161
+ }
162
+ /**
163
+ * Subscribes to a specific state across all agents.
164
+ *
165
+ * @param state - Agent state to monitor
166
+ * @param handler - Callback function for state changes
167
+ * @returns Subscription handle
168
+ *
169
+ * @example
170
+ * ```typescript
171
+ * const sub = await stateChannel.subscribeToState(AgentState.ERROR, async (payload) => {
172
+ * console.error(`Agent ${payload.agentId} entered ERROR state`);
173
+ * });
174
+ * ```
175
+ */ async subscribeToState(state, handler) {
176
+ return this.broker.subscribe({
177
+ topic: `${StateChannel.BASE_TOPIC}.*.${state}`,
178
+ handler: async (message)=>{
179
+ await handler(message.payload);
180
+ }
181
+ });
182
+ }
183
+ /**
184
+ * Subscribes to error states (ERROR, BLOCKED).
185
+ *
186
+ * @param handler - Callback function for error state changes
187
+ * @returns Subscription handle
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * const sub = await stateChannel.subscribeToErrors(async (payload) => {
192
+ * console.error(`Agent ${payload.agentId} error: ${payload.reason}`);
193
+ * });
194
+ * ```
195
+ */ async subscribeToErrors(handler) {
196
+ return this.broker.subscribe({
197
+ topic: `${StateChannel.BASE_TOPIC}.*.*`,
198
+ handler: async (message)=>{
199
+ const payload = message.payload;
200
+ const metadata = AGENT_STATE_METADATA[payload.toState];
201
+ if (metadata.isError) {
202
+ await handler(payload);
203
+ }
204
+ }
205
+ });
206
+ }
207
+ // ============================================
208
+ // Validation
209
+ // ============================================
210
+ /**
211
+ * Validates state change configuration.
212
+ *
213
+ * @param config - State change to validate
214
+ * @throws {StateChannelError} If validation fails
215
+ */ validateStateChange(config) {
216
+ this.validateAgentId(config.agentId);
217
+ if (!config.fromState || !Object.values(AgentState).includes(config.fromState)) {
218
+ throw new StateChannelError(`Invalid fromState: ${config.fromState}`);
219
+ }
220
+ if (!config.toState || !Object.values(AgentState).includes(config.toState)) {
221
+ throw new StateChannelError(`Invalid toState: ${config.toState}`);
222
+ }
223
+ if (config.fromState === config.toState) {
224
+ throw new StateChannelError(`Cannot transition to same state: ${config.fromState} -> ${config.toState}`);
225
+ }
226
+ if (config.reason !== undefined && typeof config.reason !== 'string') {
227
+ throw new StateChannelError('Reason must be a string');
228
+ }
229
+ if (config.durationInPreviousState !== undefined) {
230
+ if (typeof config.durationInPreviousState !== 'number' || config.durationInPreviousState < 0) {
231
+ throw new StateChannelError('Duration must be a non-negative number');
232
+ }
233
+ }
234
+ }
235
+ /**
236
+ * Validates agent ID.
237
+ *
238
+ * @param agentId - Agent ID to validate
239
+ * @throws {StateChannelError} If validation fails
240
+ */ validateAgentId(agentId) {
241
+ if (!agentId || typeof agentId !== 'string') {
242
+ throw new StateChannelError('Agent ID must be a non-empty string');
243
+ }
244
+ if (agentId.length > 256) {
245
+ throw new StateChannelError('Agent ID exceeds 256 characters');
246
+ }
247
+ }
248
+ // ============================================
249
+ // Utility Methods
250
+ // ============================================
251
+ /**
252
+ * Builds topic string for state change message.
253
+ *
254
+ * Format: agent.state.{agentId}.{toState}
255
+ *
256
+ * @param agentId - Agent identifier
257
+ * @param state - Target state
258
+ * @returns Topic string
259
+ */ buildTopic(agentId, state) {
260
+ return `${StateChannel.BASE_TOPIC}.${agentId}.${state}`;
261
+ }
262
+ /**
263
+ * Calculates message priority based on state criticality.
264
+ *
265
+ * Priority mapping:
266
+ * - CRITICAL (10): ERROR, BLOCKED
267
+ * - HIGH (8): COMPLETED, TERMINATED
268
+ * - NORMAL (5): WORKING, HELPING
269
+ * - LOW (2): IDLE, WAITING, PAUSED
270
+ *
271
+ * @param state - Target state
272
+ * @returns Priority level (0-10)
273
+ */ calculatePriority(state) {
274
+ const metadata = AGENT_STATE_METADATA[state];
275
+ if (metadata.isError) {
276
+ return MessagePriority.CRITICAL; // ERROR, BLOCKED
277
+ }
278
+ if (metadata.isTerminal) {
279
+ return MessagePriority.HIGH; // COMPLETED, TERMINATED
280
+ }
281
+ if (metadata.isActive) {
282
+ return MessagePriority.NORMAL; // WORKING, HELPING
283
+ }
284
+ return MessagePriority.LOW; // IDLE, WAITING, PAUSED
285
+ }
286
+ /**
287
+ * Gets the base topic for all state changes.
288
+ *
289
+ * @returns Base topic string
290
+ */ static getBaseTopic() {
291
+ return StateChannel.BASE_TOPIC;
292
+ }
293
+ }
294
+
295
+ //# sourceMappingURL=state-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/coordination/v2/messaging/channels/state-channel.ts"],"names":["AgentState","AGENT_STATE_METADATA","MessagePriority","StateChannelError","Error","message","name","StateChannel","BASE_TOPIC","broker","publishStateChange","config","validateStateChange","payload","agentId","fromState","toState","timestamp","Date","now","reason","metadata","durationInPreviousState","priority","calculatePriority","topic","buildTopic","messageConfig","senderId","channel","stateChange","publish","publishBatchStateChanges","changes","results","change","push","subscribeToStateChanges","handler","subscribe","subscribeToAgent","validateAgentId","subscribeToState","state","subscribeToErrors","isError","Object","values","includes","undefined","length","CRITICAL","isTerminal","HIGH","isActive","NORMAL","LOW","getBaseTopic"],"mappings":"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"}