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,478 @@
1
+ /**
2
+ * Thread-Safe Resource Manager (Phase 8 Preparation)
3
+ *
4
+ * Rust-inspired concurrency patterns applied to TypeScript:
5
+ * - Atomic test-and-set for lock acquisition
6
+ * - Immutable queue updates for wait queue
7
+ * - Hard resource limits for DoS prevention
8
+ * - No race conditions in critical sections
9
+ *
10
+ * @module coordination/v2/core/resource-manager-safe
11
+ */ /**
12
+ * Thread-safe resource manager with deadlock prevention.
13
+ *
14
+ * Key safety properties:
15
+ * 1. Atomic lock operations (no check-then-act races)
16
+ * 2. Immutable wait queue updates (no concurrent modification)
17
+ * 3. Hard resource limits (prevents DoS)
18
+ * 4. Automatic stale lock cleanup
19
+ *
20
+ * Rust equivalent patterns:
21
+ * - Arc<RwLock<HashMap<ResourceId, AgentId>>> for locks
22
+ * - Arc<Mutex<BinaryHeap<LockRequest>>> for wait queue
23
+ * - Automatic Drop cleanup for stale locks
24
+ */ export class SafeResourceManager {
25
+ config;
26
+ resources = new Map();
27
+ locks = new Map();
28
+ waitQueues = new Map();
29
+ agentResources = new Map();
30
+ // Concurrency control
31
+ operationLock = false;
32
+ cleanupInterval;
33
+ constructor(config){
34
+ this.config = config;
35
+ // Start periodic cleanup (equivalent to Rust's background task)
36
+ this.cleanupInterval = setInterval(()=>{
37
+ this.cleanupStaleLocks().catch(console.error);
38
+ }, 30000);
39
+ }
40
+ /**
41
+ * Acquire resource lock with atomic test-and-set.
42
+ *
43
+ * Rust equivalent:
44
+ * ```rust
45
+ * let guard = resource.lock.compare_exchange(
46
+ * false, true, Ordering::AcqRel, Ordering::Acquire
47
+ * )?;
48
+ * ```
49
+ *
50
+ * @param resourceId - Resource to acquire
51
+ * @param agentId - Agent requesting lock
52
+ * @param priority - Request priority (higher = more urgent)
53
+ */ async acquire(resourceId, agentId, priority = 0) {
54
+ return this.withOperationLock(async ()=>{
55
+ // Check hard resource limit (DoS prevention)
56
+ if (this.resources.size >= this.config.maxResources && !this.resources.has(resourceId)) {
57
+ throw new Error(`Resource limit reached (${this.config.maxResources} max)`);
58
+ }
59
+ // Ensure resource exists
60
+ if (!this.resources.has(resourceId)) {
61
+ this.resources.set(resourceId, {
62
+ id: resourceId,
63
+ type: 'generic',
64
+ locked: false
65
+ });
66
+ }
67
+ // ATOMIC: Try to acquire lock
68
+ const acquired = this.tryAcquireLock(resourceId, agentId);
69
+ if (acquired) {
70
+ return; // Success - lock acquired
71
+ }
72
+ // Lock already held - add to wait queue
73
+ await this.enqueueWaitRequest(resourceId, agentId, priority);
74
+ });
75
+ }
76
+ /**
77
+ * Release resource lock and grant to next waiter.
78
+ *
79
+ * Rust equivalent:
80
+ * ```rust
81
+ * drop(guard); // Automatically releases lock
82
+ * if let Some(next) = wait_queue.pop() {
83
+ * grant_lock(next);
84
+ * }
85
+ * ```
86
+ */ async release(resourceId, agentId) {
87
+ return this.withOperationLock(async ()=>{
88
+ const currentLock = this.locks.get(resourceId);
89
+ if (currentLock !== agentId) {
90
+ console.warn(`[ResourceManager] Agent ${agentId} attempted to release unowned resource ${resourceId}`);
91
+ return;
92
+ }
93
+ // Release lock
94
+ this.releaseLock(resourceId, agentId);
95
+ // Grant to next in queue
96
+ const queue = this.waitQueues.get(resourceId);
97
+ if (queue && queue.length > 0) {
98
+ // Remove first waiter (immutable update)
99
+ const [nextRequest, ...remainingQueue] = queue;
100
+ this.waitQueues.set(resourceId, remainingQueue);
101
+ // Grant lock atomically
102
+ this.grantLock(resourceId, nextRequest.agentId);
103
+ console.log(`[ResourceManager] Lock granted to ${nextRequest.agentId} for ${resourceId}`);
104
+ }
105
+ });
106
+ }
107
+ /**
108
+ * Release all resources held by agent.
109
+ * Used during agent shutdown or deadlock recovery.
110
+ */ async releaseAllForAgent(agentId) {
111
+ const resourceIds = this.agentResources.get(agentId);
112
+ if (!resourceIds) return;
113
+ for (const resourceId of Array.from(resourceIds)){
114
+ await this.release(resourceId, agentId);
115
+ }
116
+ this.agentResources.delete(agentId);
117
+ }
118
+ /**
119
+ * Get current resource allocations (for WFG construction).
120
+ */ getAllocations() {
121
+ return new Map(this.locks);
122
+ }
123
+ /**
124
+ * Get waiting agents (for WFG edge construction).
125
+ * Returns map of agentId → resources they're waiting for.
126
+ */ getWaitingAgents() {
127
+ const waiting = new Map();
128
+ for (const [resourceId, queue] of Array.from(this.waitQueues.entries())){
129
+ for (const request of queue){
130
+ const resources = waiting.get(request.agentId) || [];
131
+ resources.push(resourceId);
132
+ waiting.set(request.agentId, resources);
133
+ }
134
+ }
135
+ return waiting;
136
+ }
137
+ /**
138
+ * Cleanup stale locks (automatic Drop-like behavior).
139
+ *
140
+ * Rust equivalent:
141
+ * ```rust
142
+ * impl Drop for ResourceGuard {
143
+ * fn drop(&mut self) {
144
+ * if self.held_too_long() {
145
+ * force_release(self.resource_id);
146
+ * }
147
+ * }
148
+ * }
149
+ * ```
150
+ */ async cleanupStaleLocks() {
151
+ return this.withOperationLock(async ()=>{
152
+ const now = Date.now();
153
+ const staleThreshold = this.config.resourceTimeout * 2;
154
+ for (const [resourceId, agentId] of Array.from(this.locks)){
155
+ const resource = this.resources.get(resourceId);
156
+ if (!resource?.lockedAt) continue;
157
+ const lockAge = now - resource.lockedAt;
158
+ if (lockAge > staleThreshold) {
159
+ console.warn(`[ResourceManager] Force releasing stale lock: ${resourceId} held by ${agentId} for ${lockAge}ms`);
160
+ this.releaseLock(resourceId, agentId);
161
+ }
162
+ }
163
+ // Cleanup stale wait requests
164
+ for (const [resourceId, queue] of Array.from(this.waitQueues)){
165
+ const fresh = queue.filter((req)=>{
166
+ const age = now - req.timestamp;
167
+ if (age > this.config.maxWaitTime) {
168
+ console.warn(`[ResourceManager] Removing stale wait request: ${req.agentId} waiting ${age}ms`);
169
+ return false;
170
+ }
171
+ return true;
172
+ });
173
+ if (fresh.length === 0) {
174
+ this.waitQueues.delete(resourceId);
175
+ } else {
176
+ this.waitQueues.set(resourceId, fresh);
177
+ }
178
+ }
179
+ });
180
+ }
181
+ /**
182
+ * Atomic test-and-set lock operation.
183
+ *
184
+ * CRITICAL: This must be atomic to prevent race conditions.
185
+ * Returns true if lock was acquired, false otherwise.
186
+ */ tryAcquireLock(resourceId, agentId) {
187
+ const resource = this.resources.get(resourceId);
188
+ // Check if already locked (atomic read)
189
+ if (resource.locked) {
190
+ // Already locked by someone else
191
+ if (resource.lockedBy !== agentId) {
192
+ return false;
193
+ }
194
+ // Already locked by us (re-entrant lock)
195
+ return true;
196
+ }
197
+ // Atomically set lock flag and metadata
198
+ resource.locked = true;
199
+ resource.lockedBy = agentId;
200
+ resource.lockedAt = Date.now();
201
+ this.locks.set(resourceId, agentId);
202
+ // Track agent resources
203
+ if (!this.agentResources.has(agentId)) {
204
+ this.agentResources.set(agentId, new Set());
205
+ }
206
+ this.agentResources.get(agentId).add(resourceId);
207
+ console.log(`[ResourceManager] Lock acquired: ${resourceId} by ${agentId}`);
208
+ return true;
209
+ }
210
+ /**
211
+ * Grant lock to specific agent (used after queue processing).
212
+ */ grantLock(resourceId, agentId) {
213
+ const resource = this.resources.get(resourceId);
214
+ resource.locked = true;
215
+ resource.lockedBy = agentId;
216
+ resource.lockedAt = Date.now();
217
+ this.locks.set(resourceId, agentId);
218
+ if (!this.agentResources.has(agentId)) {
219
+ this.agentResources.set(agentId, new Set());
220
+ }
221
+ this.agentResources.get(agentId).add(resourceId);
222
+ }
223
+ /**
224
+ * Release lock (internal - assumes caller holds operation lock).
225
+ */ releaseLock(resourceId, agentId) {
226
+ const resource = this.resources.get(resourceId);
227
+ if (!resource) return;
228
+ resource.locked = false;
229
+ delete resource.lockedBy;
230
+ delete resource.lockedAt;
231
+ this.locks.delete(resourceId);
232
+ this.agentResources.get(agentId)?.delete(resourceId);
233
+ console.log(`[ResourceManager] Lock released: ${resourceId} by ${agentId}`);
234
+ }
235
+ /**
236
+ * Add request to wait queue with priority ordering (immutable update).
237
+ *
238
+ * Rust equivalent:
239
+ * ```rust
240
+ * let mut queue = self.wait_queue.lock().unwrap();
241
+ * queue.push(request);
242
+ * queue.sort_by_key(|r| (Reverse(r.priority), r.timestamp));
243
+ * ```
244
+ */ async enqueueWaitRequest(resourceId, agentId, priority) {
245
+ const request = {
246
+ agentId,
247
+ resourceId,
248
+ timestamp: Date.now(),
249
+ priority
250
+ };
251
+ // IMMUTABLE UPDATE: Create new sorted queue
252
+ const oldQueue = this.waitQueues.get(resourceId) || [];
253
+ const newQueue = [
254
+ ...oldQueue,
255
+ request
256
+ ].sort((a, b)=>{
257
+ // Higher priority first, then FIFO
258
+ if (a.priority !== b.priority) {
259
+ return b.priority - a.priority;
260
+ }
261
+ return a.timestamp - b.timestamp;
262
+ });
263
+ this.waitQueues.set(resourceId, newQueue);
264
+ console.log(`[ResourceManager] Agent ${agentId} enqueued for ${resourceId} (priority=${priority}, queue_len=${newQueue.length})`);
265
+ // Wait for lock with timeout
266
+ const startTime = Date.now();
267
+ while(Date.now() - startTime < this.config.maxWaitTime){
268
+ // Check if we got the lock
269
+ if (this.locks.get(resourceId) === agentId) {
270
+ return; // Success
271
+ }
272
+ // Check if still in queue
273
+ const currentQueue = this.waitQueues.get(resourceId) || [];
274
+ if (!currentQueue.some((req)=>req.agentId === agentId)) {
275
+ throw new Error(`Wait request cancelled for ${resourceId}`);
276
+ }
277
+ // Yield CPU
278
+ await new Promise((resolve)=>setImmediate(resolve));
279
+ }
280
+ // Timeout - remove from queue
281
+ const finalQueue = this.waitQueues.get(resourceId) || [];
282
+ const filtered = finalQueue.filter((req)=>req.agentId !== agentId);
283
+ this.waitQueues.set(resourceId, filtered);
284
+ throw new Error(`Resource acquisition timeout for ${resourceId} (waited ${this.config.maxWaitTime}ms)`);
285
+ }
286
+ /**
287
+ * Operation lock helper (prevents concurrent state modifications).
288
+ *
289
+ * Rust equivalent:
290
+ * ```rust
291
+ * async fn with_lock<T, F>(&self, f: F) -> T
292
+ * where F: FnOnce() -> T {
293
+ * let _guard = self.lock.lock().await;
294
+ * f()
295
+ * }
296
+ * ```
297
+ */ async withOperationLock(fn) {
298
+ // Spin-lock (simple re-entrance guard)
299
+ while(this.operationLock){
300
+ await new Promise((resolve)=>setImmediate(resolve));
301
+ }
302
+ this.operationLock = true;
303
+ try {
304
+ return await fn();
305
+ } finally{
306
+ this.operationLock = false;
307
+ }
308
+ }
309
+ /**
310
+ * Shutdown gracefully.
311
+ */ async shutdown() {
312
+ if (this.cleanupInterval) {
313
+ clearInterval(this.cleanupInterval);
314
+ this.cleanupInterval = undefined;
315
+ }
316
+ // Final cleanup
317
+ await this.cleanupStaleLocks();
318
+ // Release all locks
319
+ for (const [resourceId, agentId] of Array.from(this.locks)){
320
+ this.releaseLock(resourceId, agentId);
321
+ }
322
+ this.resources.clear();
323
+ this.locks.clear();
324
+ this.waitQueues.clear();
325
+ this.agentResources.clear();
326
+ }
327
+ /**
328
+ * Health check metrics.
329
+ */ getHealthStatus() {
330
+ const now = Date.now();
331
+ let totalLockAge = 0;
332
+ let lockedCount = 0;
333
+ for (const [resourceId] of Array.from(this.locks.entries())){
334
+ const resource = this.resources.get(resourceId);
335
+ if (resource?.lockedAt) {
336
+ totalLockAge += now - resource.lockedAt;
337
+ lockedCount++;
338
+ }
339
+ }
340
+ const waitingAgents = new Set();
341
+ let totalWaiting = 0;
342
+ for (const queue of Array.from(this.waitQueues.values())){
343
+ totalWaiting += queue.length;
344
+ queue.forEach((req)=>waitingAgents.add(req.agentId));
345
+ }
346
+ return {
347
+ healthy: true,
348
+ metrics: {
349
+ totalResources: this.resources.size,
350
+ lockedResources: this.locks.size,
351
+ freeResources: this.resources.size - this.locks.size,
352
+ waitingAgents: waitingAgents.size,
353
+ totalWaitingRequests: totalWaiting,
354
+ averageLockAge: lockedCount > 0 ? totalLockAge / lockedCount : 0
355
+ }
356
+ };
357
+ }
358
+ }
359
+ /**
360
+ * Wait-For-Graph for deadlock detection (Phase 8).
361
+ *
362
+ * Rust equivalent:
363
+ * ```rust
364
+ * struct WaitForGraph {
365
+ * edges: Arc<RwLock<HashMap<AgentId, HashSet<AgentId>>>>,
366
+ * }
367
+ * ```
368
+ */ export class WaitForGraph {
369
+ edges = new Map();
370
+ lock = false;
371
+ /**
372
+ * Add wait relationship: waiter is waiting for holder.
373
+ */ async addEdge(waiter, holder) {
374
+ return this.withLock(async ()=>{
375
+ if (!this.edges.has(waiter)) {
376
+ this.edges.set(waiter, new Set());
377
+ }
378
+ this.edges.get(waiter).add(holder);
379
+ });
380
+ }
381
+ /**
382
+ * Remove wait relationship.
383
+ */ async removeEdge(waiter, holder) {
384
+ return this.withLock(async ()=>{
385
+ const holders = this.edges.get(waiter);
386
+ if (holders) {
387
+ holders.delete(holder);
388
+ if (holders.size === 0) {
389
+ this.edges.delete(waiter);
390
+ }
391
+ }
392
+ });
393
+ }
394
+ /**
395
+ * Detect cycle using DFS (returns cycle path if found).
396
+ *
397
+ * Rust equivalent:
398
+ * ```rust
399
+ * fn detect_cycle(&self) -> Option<Vec<AgentId>> {
400
+ * let graph = self.edges.read().unwrap();
401
+ * // DFS with visited/stack sets
402
+ * }
403
+ * ```
404
+ */ async detectCycle() {
405
+ return this.withLock(async ()=>{
406
+ const visited = new Set();
407
+ const stack = new Set();
408
+ for (const node of Array.from(this.edges.keys())){
409
+ if (!visited.has(node)) {
410
+ const cycle = this.dfs(node, visited, stack, []);
411
+ if (cycle) return cycle;
412
+ }
413
+ }
414
+ return null;
415
+ });
416
+ }
417
+ /**
418
+ * DFS cycle detection (internal).
419
+ */ dfs(node, visited, stack, path) {
420
+ visited.add(node);
421
+ stack.add(node);
422
+ path.push(node);
423
+ const neighbors = this.edges.get(node) || new Set();
424
+ for (const neighbor of Array.from(neighbors)){
425
+ if (!visited.has(neighbor)) {
426
+ const cycle = this.dfs(neighbor, visited, stack, [
427
+ ...path
428
+ ]);
429
+ if (cycle) return cycle;
430
+ } else if (stack.has(neighbor)) {
431
+ // Cycle found - extract cycle path
432
+ const cycleStart = path.indexOf(neighbor);
433
+ return path.slice(cycleStart);
434
+ }
435
+ }
436
+ stack.delete(node);
437
+ return null;
438
+ }
439
+ /**
440
+ * Create immutable snapshot of graph.
441
+ *
442
+ * Rust equivalent:
443
+ * ```rust
444
+ * fn snapshot(&self) -> HashMap<AgentId, HashSet<AgentId>> {
445
+ * self.edges.read().unwrap().clone()
446
+ * }
447
+ * ```
448
+ */ async snapshot() {
449
+ return this.withLock(async ()=>{
450
+ return new Map(Array.from(this.edges.entries()).map(([k, v])=>[
451
+ k,
452
+ new Set(v)
453
+ ]));
454
+ });
455
+ }
456
+ /**
457
+ * Clear all edges.
458
+ */ async clear() {
459
+ return this.withLock(async ()=>{
460
+ this.edges.clear();
461
+ });
462
+ }
463
+ /**
464
+ * Lock helper for atomic operations.
465
+ */ async withLock(fn) {
466
+ while(this.lock){
467
+ await new Promise((resolve)=>setImmediate(resolve));
468
+ }
469
+ this.lock = true;
470
+ try {
471
+ return await fn();
472
+ } finally{
473
+ this.lock = false;
474
+ }
475
+ }
476
+ }
477
+
478
+ //# sourceMappingURL=resource-manager-safe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/coordination/v2/core/resource-manager-safe.ts"],"names":["SafeResourceManager","resources","Map","locks","waitQueues","agentResources","operationLock","cleanupInterval","config","setInterval","cleanupStaleLocks","catch","console","error","acquire","resourceId","agentId","priority","withOperationLock","size","maxResources","has","Error","set","id","type","locked","acquired","tryAcquireLock","enqueueWaitRequest","release","currentLock","get","warn","releaseLock","queue","length","nextRequest","remainingQueue","grantLock","log","releaseAllForAgent","resourceIds","Array","from","delete","getAllocations","getWaitingAgents","waiting","entries","request","push","now","Date","staleThreshold","resourceTimeout","resource","lockedAt","lockAge","fresh","filter","req","age","timestamp","maxWaitTime","lockedBy","Set","add","oldQueue","newQueue","sort","a","b","startTime","currentQueue","some","Promise","resolve","setImmediate","finalQueue","filtered","fn","shutdown","clearInterval","undefined","clear","getHealthStatus","totalLockAge","lockedCount","waitingAgents","totalWaiting","values","forEach","healthy","metrics","totalResources","lockedResources","freeResources","totalWaitingRequests","averageLockAge","WaitForGraph","edges","lock","addEdge","waiter","holder","withLock","removeEdge","holders","detectCycle","visited","stack","node","keys","cycle","dfs","path","neighbors","neighbor","cycleStart","indexOf","slice","snapshot","map","k","v"],"mappings":"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"}
@@ -16,12 +16,13 @@ import { TransitionEventType } from './state-transition.js';
16
16
  *
17
17
  * @example
18
18
  * ```typescript
19
- * STATE_TRANSITIONS[AgentState.IDLE] // [AgentState.WORKING]
19
+ * STATE_TRANSITIONS[AgentState.IDLE] // [AgentState.WORKING, AgentState.HELPING]
20
20
  * STATE_TRANSITIONS[AgentState.COMPLETED] // []
21
21
  * ```
22
22
  */ export const STATE_TRANSITIONS = {
23
23
  [AgentState.IDLE]: [
24
- AgentState.WORKING
24
+ AgentState.WORKING,
25
+ AgentState.HELPING
25
26
  ],
26
27
  [AgentState.WORKING]: [
27
28
  AgentState.WAITING,
@@ -34,6 +35,7 @@ import { TransitionEventType } from './state-transition.js';
34
35
  ],
35
36
  [AgentState.WAITING]: [
36
37
  AgentState.WORKING,
38
+ AgentState.HELPING,
37
39
  AgentState.BLOCKED,
38
40
  AgentState.PAUSED,
39
41
  AgentState.TERMINATED,
@@ -109,6 +111,7 @@ import { TransitionEventType } from './state-transition.js';
109
111
  },
110
112
  [TransitionEventType.HELP_REQUESTED]: {
111
113
  from: [
114
+ AgentState.IDLE,
112
115
  AgentState.WORKING
113
116
  ],
114
117
  to: AgentState.HELPING
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/coordination/v2/core/state-machine-config.ts"],"names":["AgentState","isAgentState","TransitionEventType","STATE_TRANSITIONS","IDLE","WORKING","WAITING","HELPING","PAUSED","BLOCKED","COMPLETED","TERMINATED","ERROR","EVENT_STATE_MAPPING","TASK_ASSIGNED","from","to","EXECUTION_STARTED","EXECUTION_COMPLETED","EXECUTION_FAILED","DEPENDENCY_BLOCKED","DEPENDENCY_RESOLVED","HELP_REQUESTED","HELP_COMPLETED","DEADLOCK_DETECTED","ERROR_RECOVERED","DEFAULT_STATE_MACHINE_CONFIG","strictValidation","enableLogging","enablePerformanceTracking","maxValidationTime","enableAutoRecovery","maxRetryAttempts","validateTransitionMatrix","transitions","errors","allStates","Object","values","state","push","sourceState","targetStates","entries","targetState","length","isValid","validateEventMapping","mapping","allEventTypes","eventType","eventMapping","fromState","getValidNextStates","currentState","Error","isValidTransition","toState","validStates","includes","getExpectedStateForEvent","validateStateMachineConfig","matrixValidation","eventValidation","process","env","NODE_ENV","validation","console","error","forEach","err"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/coordination/v2/core/state-machine-config.ts"],"names":["AgentState","isAgentState","TransitionEventType","STATE_TRANSITIONS","IDLE","WORKING","HELPING","WAITING","PAUSED","BLOCKED","COMPLETED","TERMINATED","ERROR","EVENT_STATE_MAPPING","TASK_ASSIGNED","from","to","EXECUTION_STARTED","EXECUTION_COMPLETED","EXECUTION_FAILED","DEPENDENCY_BLOCKED","DEPENDENCY_RESOLVED","HELP_REQUESTED","HELP_COMPLETED","DEADLOCK_DETECTED","ERROR_RECOVERED","DEFAULT_STATE_MACHINE_CONFIG","strictValidation","enableLogging","enablePerformanceTracking","maxValidationTime","enableAutoRecovery","maxRetryAttempts","validateTransitionMatrix","transitions","errors","allStates","Object","values","state","push","sourceState","targetStates","entries","targetState","length","isValid","validateEventMapping","mapping","allEventTypes","eventType","eventMapping","fromState","getValidNextStates","currentState","Error","isValidTransition","toState","validStates","includes","getExpectedStateForEvent","validateStateMachineConfig","matrixValidation","eventValidation","process","env","NODE_ENV","validation","console","error","forEach","err"],"mappings":"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"}