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,259 @@
1
+ /**
2
+ * Payload Validator - SEC-INJ-001 Mitigation
3
+ *
4
+ * Validates and sanitizes message payloads to prevent:
5
+ * - Prototype pollution attacks
6
+ * - Code injection via eval/Function
7
+ * - Memory bombs (deeply nested objects)
8
+ * - Oversized payloads
9
+ *
10
+ * @module coordination/v2/security/payload-validator
11
+ */ /**
12
+ * Payload validation rule configuration.
13
+ */ /**
14
+ * Payload validation error.
15
+ */ export class PayloadValidationError extends Error {
16
+ constructor(message){
17
+ super(message);
18
+ this.name = 'PayloadValidationError';
19
+ }
20
+ }
21
+ /**
22
+ * Payload Validator Implementation.
23
+ *
24
+ * Provides comprehensive validation and sanitization of message payloads
25
+ * to prevent injection attacks and resource exhaustion.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const validator = new PayloadValidator({
30
+ * maxDepth: 5,
31
+ * maxSize: 1024 * 1024,
32
+ * forbiddenKeys: ['__proto__', 'constructor', 'prototype'],
33
+ * allowedTypes: ['string', 'number', 'boolean', 'object', 'array']
34
+ * });
35
+ *
36
+ * const result = validator.validate(userPayload);
37
+ * if (!result.valid) {
38
+ * throw new Error(`Validation failed: ${result.errors.join(', ')}`);
39
+ * }
40
+ *
41
+ * const sanitized = validator.sanitize(userPayload);
42
+ * ```
43
+ */ export class PayloadValidator {
44
+ rules;
45
+ /**
46
+ * Default validation rules (secure defaults).
47
+ */ static DEFAULT_RULES = {
48
+ maxDepth: 5,
49
+ maxSize: 1024 * 1024,
50
+ allowedTypes: [
51
+ 'string',
52
+ 'number',
53
+ 'boolean',
54
+ 'object',
55
+ 'array',
56
+ 'null'
57
+ ],
58
+ forbiddenKeys: [
59
+ '__proto__',
60
+ 'constructor',
61
+ 'prototype',
62
+ 'eval',
63
+ 'Function'
64
+ ]
65
+ };
66
+ /**
67
+ * Creates a new payload validator.
68
+ *
69
+ * @param rules - Validation rules (uses secure defaults if not provided)
70
+ */ constructor(rules){
71
+ this.rules = {
72
+ ...PayloadValidator.DEFAULT_RULES,
73
+ ...rules
74
+ };
75
+ }
76
+ /**
77
+ * Validates a payload against configured rules.
78
+ *
79
+ * @param payload - Payload to validate
80
+ * @returns Validation result with errors if any
81
+ */ validate(payload) {
82
+ const errors = [];
83
+ try {
84
+ // SEC-INJ-001-BYPASS: Check for prototype chain pollution BEFORE serialization
85
+ // Object literals with __proto__ can pollute the prototype chain before validation runs
86
+ if (typeof payload === 'object' && payload !== null) {
87
+ const proto = Object.getPrototypeOf(payload);
88
+ if (proto !== Object.prototype && proto !== null) {
89
+ errors.push(`Prototype pollution detected: object has modified prototype chain`);
90
+ }
91
+ }
92
+ // SEC-INJ-001: Check payload size
93
+ const serialized = JSON.stringify(payload);
94
+ const size = Buffer.byteLength(serialized, 'utf8');
95
+ if (size > this.rules.maxSize) {
96
+ errors.push(`Payload size ${size} bytes exceeds maximum ${this.rules.maxSize} bytes`);
97
+ }
98
+ // SEC-INJ-001: Check object depth
99
+ const depth = this.getObjectDepth(payload);
100
+ if (depth > this.rules.maxDepth) {
101
+ errors.push(`Payload depth ${depth} exceeds maximum depth ${this.rules.maxDepth}`);
102
+ }
103
+ // SEC-INJ-001: Check for forbidden keys (prototype pollution vectors)
104
+ const allKeys = this.getAllKeys(payload);
105
+ const foundForbidden = allKeys.filter((key)=>this.rules.forbiddenKeys.includes(key));
106
+ if (foundForbidden.length > 0) {
107
+ errors.push(`Forbidden keys detected: ${foundForbidden.join(', ')}`);
108
+ }
109
+ // SEC-INJ-001: Check for dangerous type patterns
110
+ const typeErrors = this.validateTypes(payload);
111
+ errors.push(...typeErrors);
112
+ return {
113
+ valid: errors.length === 0,
114
+ errors,
115
+ depth,
116
+ size
117
+ };
118
+ } catch (error) {
119
+ // Catch circular reference or serialization errors
120
+ return {
121
+ valid: false,
122
+ errors: [
123
+ `Validation error: ${error instanceof Error ? error.message : String(error)}`
124
+ ]
125
+ };
126
+ }
127
+ }
128
+ /**
129
+ * Sanitizes a payload by removing dangerous keys and normalizing structure.
130
+ *
131
+ * Creates a deep clone with prototype chain stripped to prevent pollution attacks.
132
+ *
133
+ * @param payload - Payload to sanitize
134
+ * @returns Sanitized payload (deep frozen)
135
+ */ sanitize(payload) {
136
+ if (payload === null || payload === undefined) {
137
+ return payload;
138
+ }
139
+ // SEC-INJ-001: JSON round-trip removes prototype chain and functions
140
+ const serialized = JSON.stringify(payload);
141
+ const parsed = JSON.parse(serialized);
142
+ // SEC-INJ-001: Remove forbidden keys recursively
143
+ const cleaned = this.removeForbiddenKeys(parsed);
144
+ // SEC-INJ-001: Deep freeze to prevent modification
145
+ return this.deepFreeze(cleaned);
146
+ }
147
+ /**
148
+ * Gets the maximum depth of an object.
149
+ *
150
+ * @param obj - Object to measure
151
+ * @param currentDepth - Current recursion depth (internal)
152
+ * @returns Maximum nesting depth
153
+ */ getObjectDepth(obj, currentDepth = 0) {
154
+ if (obj === null || typeof obj !== 'object') {
155
+ return currentDepth;
156
+ }
157
+ if (Array.isArray(obj)) {
158
+ if (obj.length === 0) return currentDepth + 1;
159
+ return Math.max(...obj.map((item)=>this.getObjectDepth(item, currentDepth + 1)));
160
+ }
161
+ const keys = Object.keys(obj);
162
+ if (keys.length === 0) return currentDepth + 1;
163
+ return Math.max(...keys.map((key)=>this.getObjectDepth(obj[key], currentDepth + 1)));
164
+ }
165
+ /**
166
+ * Extracts all keys from an object recursively.
167
+ *
168
+ * @param obj - Object to extract keys from
169
+ * @returns Array of all keys (including nested)
170
+ */ getAllKeys(obj) {
171
+ if (obj === null || typeof obj !== 'object') {
172
+ return [];
173
+ }
174
+ const keys = [];
175
+ if (Array.isArray(obj)) {
176
+ obj.forEach((item)=>{
177
+ keys.push(...this.getAllKeys(item));
178
+ });
179
+ } else {
180
+ // FIX SEC-INJ-001: Use getOwnPropertyNames + getOwnPropertySymbols
181
+ // to detect non-enumerable properties like __proto__, constructor
182
+ const propertyNames = Object.getOwnPropertyNames(obj);
183
+ const propertySymbols = Object.getOwnPropertySymbols(obj);
184
+ propertyNames.forEach((key)=>{
185
+ keys.push(key);
186
+ keys.push(...this.getAllKeys(obj[key]));
187
+ });
188
+ // Include symbol properties for comprehensive coverage
189
+ propertySymbols.forEach((sym)=>{
190
+ keys.push(sym.toString());
191
+ keys.push(...this.getAllKeys(obj[sym]));
192
+ });
193
+ }
194
+ return keys;
195
+ }
196
+ /**
197
+ * Validates payload types recursively.
198
+ *
199
+ * @param obj - Object to validate
200
+ * @returns Array of type validation errors
201
+ */ validateTypes(obj) {
202
+ const errors = [];
203
+ if (obj === null) {
204
+ return errors; // null is allowed
205
+ }
206
+ const type = Array.isArray(obj) ? 'array' : typeof obj;
207
+ if (!this.rules.allowedTypes.includes(type)) {
208
+ errors.push(`Type '${type}' not allowed in payload`);
209
+ return errors; // Don't recurse into invalid types
210
+ }
211
+ if (type === 'object' || type === 'array') {
212
+ const values = Array.isArray(obj) ? obj : Object.values(obj);
213
+ values.forEach((value)=>{
214
+ errors.push(...this.validateTypes(value));
215
+ });
216
+ }
217
+ return errors;
218
+ }
219
+ /**
220
+ * Removes forbidden keys from object recursively.
221
+ *
222
+ * @param obj - Object to clean
223
+ * @returns Cleaned object
224
+ */ removeForbiddenKeys(obj) {
225
+ if (obj === null || typeof obj !== 'object') {
226
+ return obj;
227
+ }
228
+ if (Array.isArray(obj)) {
229
+ return obj.map((item)=>this.removeForbiddenKeys(item));
230
+ }
231
+ const cleaned = {};
232
+ Object.keys(obj).forEach((key)=>{
233
+ if (!this.rules.forbiddenKeys.includes(key)) {
234
+ cleaned[key] = this.removeForbiddenKeys(obj[key]);
235
+ }
236
+ });
237
+ return cleaned;
238
+ }
239
+ /**
240
+ * Deep freezes an object to prevent modification.
241
+ *
242
+ * @param obj - Object to freeze
243
+ * @returns Frozen object
244
+ */ deepFreeze(obj) {
245
+ if (obj === null || typeof obj !== 'object') {
246
+ return obj;
247
+ }
248
+ if (Array.isArray(obj)) {
249
+ obj.forEach((item)=>this.deepFreeze(item));
250
+ } else {
251
+ Object.keys(obj).forEach((key)=>{
252
+ this.deepFreeze(obj[key]);
253
+ });
254
+ }
255
+ return Object.freeze(obj);
256
+ }
257
+ }
258
+
259
+ //# sourceMappingURL=payload-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/coordination/v2/security/payload-validator.ts"],"names":["PayloadValidationError","Error","message","name","PayloadValidator","rules","DEFAULT_RULES","maxDepth","maxSize","allowedTypes","forbiddenKeys","validate","payload","errors","proto","Object","getPrototypeOf","prototype","push","serialized","JSON","stringify","size","Buffer","byteLength","depth","getObjectDepth","allKeys","getAllKeys","foundForbidden","filter","key","includes","length","join","typeErrors","validateTypes","valid","error","String","sanitize","undefined","parsed","parse","cleaned","removeForbiddenKeys","deepFreeze","obj","currentDepth","Array","isArray","Math","max","map","item","keys","forEach","propertyNames","getOwnPropertyNames","propertySymbols","getOwnPropertySymbols","sym","toString","type","values","value","freeze"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * V2 Coordination Transparency System
3
+ *
4
+ * Comprehensive transparency and monitoring for multi-level agent coordination.
5
+ * Provides real-time visibility into agent operations, hierarchy relationships,
6
+ * and performance metrics.
7
+ *
8
+ * @module coordination/v2/transparency
9
+ */ // Core interfaces and types
10
+ // Core implementation
11
+ export { TransparencySystem } from './transparency-system.js';
12
+ // Integration layer
13
+ export { TransparentCoordinator, withTransparency } from './transparency-integration.js';
14
+ // CLI interface
15
+ export { createTransparencyCommand } from '../../cli/commands/transparency.js';
16
+
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/coordination/v2/transparency/index.ts"],"names":["TransparencySystem","TransparentCoordinator","withTransparency","createTransparencyCommand"],"mappings":"AAAA;;;;;;;;CAQC,GAED,4BAA4B;AAW5B,sBAAsB;AACtB,SAASA,kBAAkB,QAAQ,2BAA2B;AAE9D,oBAAoB;AACpB,SAASC,sBAAsB,EAAEC,gBAAgB,QAAQ,gCAAgC;AAEzF,gBAAgB;AAChB,SAASC,yBAAyB,QAAQ,qCAAqC"}
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Transparency System Integration
3
+ *
4
+ * Integrates transparency monitoring with V2 coordinator for real-time
5
+ * agent visibility, hierarchy tracking, and performance metrics.
6
+ *
7
+ * @module coordination/v2/transparency/transparency-integration
8
+ */ import { TransparencySystem } from './transparency-system.js';
9
+ import { Logger } from '../../../core/logger.js';
10
+ /**
11
+ * Enhanced coordinator with transparency integration
12
+ *
13
+ * Wraps any ICoordinator implementation to add transparency features:
14
+ * - Automatic agent registration/deregistration
15
+ * - State change tracking
16
+ * - Performance monitoring
17
+ * - Event streaming
18
+ */ export class TransparentCoordinator {
19
+ logger = new Logger({
20
+ level: 'info',
21
+ format: 'text',
22
+ destination: 'console'
23
+ });
24
+ baseCoordinator;
25
+ transparency;
26
+ agentMetadata = new Map();
27
+ constructor(baseCoordinator){
28
+ this.baseCoordinator = baseCoordinator;
29
+ this.transparency = new TransparencySystem();
30
+ }
31
+ // ===========================
32
+ // Coordinator Lifecycle
33
+ // ===========================
34
+ async initialize() {
35
+ this.logger.info('Initializing TransparentCoordinator');
36
+ // Initialize base coordinator
37
+ await this.baseCoordinator.initialize();
38
+ // Initialize transparency system
39
+ await this.transparency.initialize({
40
+ enableRealTimeMonitoring: true,
41
+ enableEventStreaming: true,
42
+ enablePerformanceTracking: true,
43
+ enableDependencyTracking: true,
44
+ metricsUpdateIntervalMs: 5000,
45
+ heartbeatIntervalMs: 10000
46
+ });
47
+ // Start transparency monitoring
48
+ await this.transparency.startMonitoring();
49
+ // Register transparency event listeners
50
+ this.registerTransparencyListeners();
51
+ this.logger.info('TransparentCoordinator initialized successfully');
52
+ }
53
+ async cleanup() {
54
+ this.logger.info('Cleaning up TransparentCoordinator');
55
+ // Stop transparency monitoring
56
+ await this.transparency.cleanup();
57
+ // Cleanup base coordinator
58
+ await this.baseCoordinator.cleanup();
59
+ this.logger.info('TransparentCoordinator cleanup complete');
60
+ }
61
+ isReady() {
62
+ return this.baseCoordinator.isReady();
63
+ }
64
+ // ===========================
65
+ // Agent Lifecycle (Enhanced with Transparency)
66
+ // ===========================
67
+ async spawnAgent(config) {
68
+ const startTime = Date.now();
69
+ // Spawn agent through base coordinator
70
+ const agent = await this.baseCoordinator.spawnAgent(config);
71
+ // Calculate spawn time
72
+ const spawnTimeMs = Date.now() - startTime;
73
+ // Determine parent agent from metadata or hierarchy
74
+ const parentAgentId = this.determineParentAgentId(agent);
75
+ // Register agent with transparency system
76
+ this.transparency.registerAgent(agent, parentAgentId);
77
+ // Store additional metadata
78
+ this.agentMetadata.set(agent.agentId, {
79
+ ...config,
80
+ spawnTimeMs,
81
+ parentAgentId,
82
+ registeredAt: new Date()
83
+ });
84
+ this.logger.info(`Agent ${agent.agentId} spawned and registered with transparency`, {
85
+ type: agent.type,
86
+ level: await this.getAgentLevel(agent.agentId),
87
+ spawnTimeMs,
88
+ parentAgentId
89
+ });
90
+ return agent;
91
+ }
92
+ async pauseAgent(agentId, reason) {
93
+ const pauseStartTime = Date.now();
94
+ // Get current state for transparency tracking
95
+ const currentState = await this.baseCoordinator.getAgentState(agentId);
96
+ // Pause agent through base coordinator
97
+ await this.baseCoordinator.pauseAgent(agentId, reason);
98
+ // Record pause in transparency
99
+ this.transparency.updateAgentState(agentId, 'paused', reason);
100
+ const pauseLatencyMs = Date.now() - pauseStartTime;
101
+ this.logger.info(`Agent ${agentId} paused`, {
102
+ reason,
103
+ pauseLatencyMs,
104
+ previousState: currentState
105
+ });
106
+ // Update performance metrics
107
+ this.updatePerformanceMetrics(agentId, {
108
+ pauseLatencyMs
109
+ });
110
+ }
111
+ async resumeAgent(agentId, checkpointId, messageUUID) {
112
+ const resumeStartTime = Date.now();
113
+ // Resume agent through base coordinator
114
+ await this.baseCoordinator.resumeAgent(agentId, checkpointId, messageUUID);
115
+ // Record resume in transparency
116
+ this.transparency.updateAgentState(agentId, 'active', 'Resumed from checkpoint');
117
+ const resumeLatencyMs = Date.now() - resumeStartTime;
118
+ this.logger.info(`Agent ${agentId} resumed`, {
119
+ checkpointId,
120
+ messageUUID,
121
+ resumeLatencyMs
122
+ });
123
+ // Update performance metrics
124
+ this.updatePerformanceMetrics(agentId, {
125
+ resumeLatencyMs
126
+ });
127
+ }
128
+ async terminateAgent(agentId, reason) {
129
+ // Get final state for transparency tracking
130
+ const finalState = await this.baseCoordinator.getAgentState(agentId);
131
+ // Terminate agent through base coordinator
132
+ await this.baseCoordinator.terminateAgent(agentId, reason);
133
+ // Record termination in transparency
134
+ this.transparency.updateAgentState(agentId, 'terminated', reason);
135
+ // Cleanup agent metadata
136
+ this.agentMetadata.delete(agentId);
137
+ this.logger.info(`Agent ${agentId} terminated`, {
138
+ reason,
139
+ finalState
140
+ });
141
+ }
142
+ // ===========================
143
+ // State Management (Enhanced with Transparency)
144
+ // ===========================
145
+ async getAgentState(agentId) {
146
+ const state = await this.baseCoordinator.getAgentState(agentId);
147
+ // Update transparency state tracking
148
+ this.transparency.updateAgentState(agentId, state);
149
+ return state;
150
+ }
151
+ async getAgentSession(agentId) {
152
+ return await this.baseCoordinator.getAgentSession(agentId);
153
+ }
154
+ async createCheckpoint(agentId, reason, metadata) {
155
+ // Create checkpoint through base coordinator
156
+ const checkpoint = await this.baseCoordinator.createCheckpoint(agentId, reason, metadata);
157
+ // Record checkpoint creation in transparency
158
+ this.transparency.updateAgentState(agentId, 'checkpointing', reason);
159
+ this.logger.debug(`Checkpoint created for agent ${agentId}`, {
160
+ checkpointId: checkpoint.id,
161
+ reason
162
+ });
163
+ return checkpoint;
164
+ }
165
+ async restoreCheckpoint(checkpointId) {
166
+ // Restore checkpoint through base coordinator
167
+ const agent = await this.baseCoordinator.restoreCheckpoint(checkpointId);
168
+ // Record checkpoint restoration in transparency
169
+ this.transparency.updateAgentState(agent.agentId, 'active', 'Restored from checkpoint');
170
+ this.logger.info(`Checkpoint restored for agent ${agent.agentId}`, {
171
+ checkpointId
172
+ });
173
+ return agent;
174
+ }
175
+ async listCheckpoints(agentId, limit) {
176
+ return await this.baseCoordinator.listCheckpoints(agentId, limit);
177
+ }
178
+ // ===========================
179
+ // Metrics & Monitoring (Enhanced with Transparency)
180
+ // ===========================
181
+ getMetrics() {
182
+ const baseMetrics = this.baseCoordinator.getMetrics();
183
+ // Add transparency-specific metrics
184
+ return {
185
+ ...baseMetrics,
186
+ transparency: {
187
+ // These will be populated asynchronously
188
+ agentHierarchyDepth: 0,
189
+ agentDistribution: {},
190
+ eventStreamStats: {
191
+ totalEvents: 0,
192
+ eventsPerSecond: 0
193
+ },
194
+ performanceAlerts: 0
195
+ }
196
+ };
197
+ }
198
+ getActiveAgents() {
199
+ return this.baseCoordinator.getActiveAgents();
200
+ }
201
+ getPausedAgents() {
202
+ return this.baseCoordinator.getPausedAgents();
203
+ }
204
+ async updateTokenUsage(agentId, tokensUsed) {
205
+ // Update base coordinator
206
+ await this.baseCoordinator.updateTokenUsage(agentId, tokensUsed);
207
+ // Update transparency tracking
208
+ this.transparency.updateTokenUsage(agentId, tokensUsed);
209
+ }
210
+ // ===========================
211
+ // Transparency-Specific Methods
212
+ // ===========================
213
+ /**
214
+ * Get transparency system instance
215
+ */ getTransparencySystem() {
216
+ return this.transparency;
217
+ }
218
+ /**
219
+ * Get agent hierarchy information
220
+ */ async getAgentHierarchy() {
221
+ return await this.transparency.getAgentHierarchy();
222
+ }
223
+ /**
224
+ * Get real-time agent statuses
225
+ */ async getAgentStatuses() {
226
+ return await this.transparency.getAllAgentStatuses();
227
+ }
228
+ /**
229
+ * Get recent lifecycle events
230
+ */ async getRecentEvents(limit = 100) {
231
+ return await this.transparency.getRecentEvents(limit);
232
+ }
233
+ /**
234
+ * Get transparency metrics
235
+ */ async getTransparencyMetrics() {
236
+ return await this.transparency.getTransparencyMetrics();
237
+ }
238
+ /**
239
+ * Get performance metrics for specific agent
240
+ */ async getAgentPerformanceMetrics(agentId) {
241
+ return await this.transparency.getAgentPerformanceMetrics(agentId);
242
+ }
243
+ // ===========================
244
+ // Private Helper Methods
245
+ // ===========================
246
+ determineParentAgentId(agent) {
247
+ // Try to determine parent from agent metadata
248
+ const metadata = this.agentMetadata.get(agent.agentId);
249
+ if (metadata?.parentAgentId) {
250
+ return metadata.parentAgentId;
251
+ }
252
+ // Try to determine from agent type and session
253
+ // This is a simplified heuristic - in practice, you'd have
254
+ // more sophisticated parent-child relationship tracking
255
+ const agentType = agent.type;
256
+ const sessionId = agent.sessionId;
257
+ // For certain agent types, we can infer hierarchy
258
+ if (agentType.includes('helper') || agentType.includes('-helper')) {
259
+ // Helper agents usually have parent workers
260
+ return this.findAgentInSession(sessionId, agentType.replace('-helper', '').replace('helper-', ''));
261
+ }
262
+ if (agentType.includes('worker')) {
263
+ // Workers might have root orchestrator as parent
264
+ return this.findAgentInSession(sessionId, 'orchestrator');
265
+ }
266
+ return undefined; // No parent found (root level)
267
+ }
268
+ async findAgentInSession(sessionId, type) {
269
+ try {
270
+ const allAgents = await this.transparency.getAgentHierarchy();
271
+ const found = allAgents.find((agent)=>agent.sessionId === sessionId && agent.type === type && agent.state !== 'terminated');
272
+ return found?.agentId;
273
+ } catch (error) {
274
+ this.logger.warn('Error finding parent agent', error);
275
+ return undefined;
276
+ }
277
+ }
278
+ async getAgentLevel(agentId) {
279
+ try {
280
+ const hierarchy = await this.transparency.getAgentHierarchy();
281
+ const agent = hierarchy.find((a)=>a.agentId === agentId);
282
+ return agent?.level || 1;
283
+ } catch (error) {
284
+ this.logger.warn('Error getting agent level', error);
285
+ return 1;
286
+ }
287
+ }
288
+ updatePerformanceMetrics(agentId, metrics) {
289
+ // Store performance metrics in agent metadata
290
+ const existing = this.agentMetadata.get(agentId) || {};
291
+ const performance = existing.performance || {};
292
+ this.agentMetadata.set(agentId, {
293
+ ...existing,
294
+ performance: {
295
+ ...performance,
296
+ ...metrics,
297
+ lastUpdated: new Date()
298
+ }
299
+ });
300
+ }
301
+ registerTransparencyListeners() {
302
+ // Register for hierarchy changes
303
+ this.transparency.registerEventListener({
304
+ onHierarchyChange: (change)=>{
305
+ this.logger.info('Agent hierarchy changed', {
306
+ type: change.type,
307
+ agentId: change.agentId
308
+ });
309
+ },
310
+ onAgentStateChange: (change)=>{
311
+ this.logger.debug('Agent state changed', {
312
+ agentId: change.agentId,
313
+ previousState: change.previousState,
314
+ newState: change.newState
315
+ });
316
+ },
317
+ onMetricsUpdate: (metrics)=>{
318
+ // Update coordinator metrics with transparency data
319
+ this.updateCoordinatorMetrics(metrics);
320
+ },
321
+ onLifecycleEvent: (event)=>{
322
+ this.logger.debug('Agent lifecycle event', {
323
+ agentId: event.agentId,
324
+ eventType: event.eventType
325
+ });
326
+ },
327
+ onPerformanceAlert: (alert)=>{
328
+ this.logger.warn('Performance alert', {
329
+ agentId: alert.agentId,
330
+ metric: alert.metric,
331
+ value: alert.value,
332
+ threshold: alert.threshold,
333
+ severity: alert.severity
334
+ });
335
+ }
336
+ });
337
+ }
338
+ updateCoordinatorMetrics(transparencyMetrics) {
339
+ // This would update the base coordinator's metrics
340
+ // to include transparency information
341
+ // Implementation depends on the specific coordinator type
342
+ this.logger.debug('Updating coordinator metrics with transparency data', {
343
+ totalAgents: transparencyMetrics.totalAgents,
344
+ eventStreamStats: transparencyMetrics.eventStreamStats
345
+ });
346
+ }
347
+ }
348
+ /**
349
+ * Factory function to wrap any coordinator with transparency
350
+ *
351
+ * @param baseCoordinator - Base coordinator to wrap
352
+ * @returns Transparent coordinator instance
353
+ */ export function withTransparency(baseCoordinator) {
354
+ return new TransparentCoordinator(baseCoordinator);
355
+ }
356
+
357
+ //# sourceMappingURL=transparency-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/coordination/v2/transparency/transparency-integration.ts"],"names":["TransparencySystem","Logger","TransparentCoordinator","logger","level","format","destination","baseCoordinator","transparency","agentMetadata","Map","initialize","info","enableRealTimeMonitoring","enableEventStreaming","enablePerformanceTracking","enableDependencyTracking","metricsUpdateIntervalMs","heartbeatIntervalMs","startMonitoring","registerTransparencyListeners","cleanup","isReady","spawnAgent","config","startTime","Date","now","agent","spawnTimeMs","parentAgentId","determineParentAgentId","registerAgent","set","agentId","registeredAt","type","getAgentLevel","pauseAgent","reason","pauseStartTime","currentState","getAgentState","updateAgentState","pauseLatencyMs","previousState","updatePerformanceMetrics","resumeAgent","checkpointId","messageUUID","resumeStartTime","resumeLatencyMs","terminateAgent","finalState","delete","state","getAgentSession","createCheckpoint","metadata","checkpoint","debug","id","restoreCheckpoint","listCheckpoints","limit","getMetrics","baseMetrics","agentHierarchyDepth","agentDistribution","eventStreamStats","totalEvents","eventsPerSecond","performanceAlerts","getActiveAgents","getPausedAgents","updateTokenUsage","tokensUsed","getTransparencySystem","getAgentHierarchy","getAgentStatuses","getAllAgentStatuses","getRecentEvents","getTransparencyMetrics","getAgentPerformanceMetrics","get","agentType","sessionId","includes","findAgentInSession","replace","undefined","allAgents","found","find","error","warn","hierarchy","a","metrics","existing","performance","lastUpdated","registerEventListener","onHierarchyChange","change","onAgentStateChange","newState","onMetricsUpdate","updateCoordinatorMetrics","onLifecycleEvent","event","eventType","onPerformanceAlert","alert","metric","value","threshold","severity","transparencyMetrics","totalAgents","withTransparency"],"mappings":"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"}