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
@@ -13,6 +13,7 @@ import { createSwarmTools } from './swarm-tools.js';
13
13
  import { createRuvSwarmTools, isRuvSwarmAvailable, initializeRuvSwarmIntegration } from './ruv-swarm-tools.js';
14
14
  import { platform, arch } from 'node:os';
15
15
  import { performance } from 'node:perf_hooks';
16
+ import { incrementMetric, recordTiming } from '../observability/metrics-counter.js';
16
17
  /**
17
18
  * MCP server implementation
18
19
  */ export class MCPServer {
@@ -209,6 +210,12 @@ import { performance } from 'node:perf_hooks';
209
210
  }
210
211
  }
211
212
  async handleRequest(request) {
213
+ const startTime = Date.now();
214
+ // Track incoming request
215
+ incrementMetric('api.request.received', 1, {
216
+ endpoint: request.method,
217
+ clientId: this.currentSession?.id || 'unknown'
218
+ });
212
219
  this.logger.debug('Handling MCP request', {
213
220
  id: request.id,
214
221
  method: request.method
@@ -257,13 +264,25 @@ import { performance } from 'node:perf_hooks';
257
264
  id: request.id,
258
265
  result
259
266
  };
260
- // Record success
267
+ // Record success metrics
268
+ recordTiming('api.request.duration', Date.now() - startTime, {
269
+ endpoint: request.method,
270
+ status: 'success'
271
+ });
261
272
  if (requestMetrics) {
262
273
  this.loadBalancer?.recordRequestEnd(requestMetrics, response);
263
274
  }
264
275
  return response;
265
276
  } catch (error) {
266
- // Record failure
277
+ // Record failure metrics
278
+ recordTiming('api.request.duration', Date.now() - startTime, {
279
+ endpoint: request.method,
280
+ status: 'error'
281
+ });
282
+ incrementMetric('api.error.count', 1, {
283
+ errorType: error instanceof Error ? error.name : 'Unknown',
284
+ endpoint: request.method
285
+ });
267
286
  if (requestMetrics) {
268
287
  this.loadBalancer?.recordRequestEnd(requestMetrics, undefined, error);
269
288
  }
@@ -4,6 +4,7 @@
4
4
  */ import { EventEmitter } from 'events';
5
5
  import { ClaudeAPIError, ClaudeInternalServerError, ClaudeServiceUnavailableError, ClaudeRateLimitError, ClaudeTimeoutError, ClaudeNetworkError, ClaudeAuthenticationError, ClaudeValidationError, getUserFriendlyError } from './claude-api-errors.js';
6
6
  import { circuitBreaker } from '../utils/helpers.js';
7
+ import { incrementMetric, recordTiming } from '../observability/metrics-counter.js';
7
8
  export class ClaudeAPIClient extends EventEmitter {
8
9
  config;
9
10
  logger;
@@ -154,6 +155,16 @@ export class ClaudeAPIClient extends EventEmitter {
154
155
  /**
155
156
  * Send a non-streaming request
156
157
  */ async sendRequest(request) {
158
+ const startTime = Date.now();
159
+ const model = request.model || 'unknown';
160
+ // Detect provider from apiUrl (z.ai vs anthropic)
161
+ const provider = this.config.apiUrl?.includes('z.ai') ? 'z.ai' : 'anthropic';
162
+ // Track API request
163
+ incrementMetric('claude.api.request', 1, {
164
+ model,
165
+ provider,
166
+ stream: 'false'
167
+ });
157
168
  let lastError;
158
169
  for(let attempt = 0; attempt < (this.config.retryAttempts || 3); attempt++){
159
170
  try {
@@ -183,6 +194,24 @@ export class ClaudeAPIClient extends EventEmitter {
183
194
  throw this.createAPIError(response.status, errorData);
184
195
  }
185
196
  const data = await response.json();
197
+ // Track successful response timing
198
+ recordTiming('claude.api.duration', Date.now() - startTime, {
199
+ model,
200
+ status: 'success',
201
+ stream: 'false'
202
+ });
203
+ // Track token usage
204
+ if (data.usage) {
205
+ incrementMetric('claude.tokens.input', data.usage.input_tokens, {
206
+ model
207
+ });
208
+ incrementMetric('claude.tokens.output', data.usage.output_tokens, {
209
+ model
210
+ });
211
+ incrementMetric('claude.tokens.total', data.usage.input_tokens + data.usage.output_tokens, {
212
+ model
213
+ });
214
+ }
186
215
  this.logger.info('Claude API response received', {
187
216
  model: data.model,
188
217
  inputTokens: data.usage.input_tokens,
@@ -193,8 +222,20 @@ export class ClaudeAPIClient extends EventEmitter {
193
222
  return data;
194
223
  } catch (error) {
195
224
  lastError = this.transformError(error);
225
+ // Track error
226
+ incrementMetric('claude.api.error', 1, {
227
+ model,
228
+ errorType: lastError.code || lastError.constructor.name || 'Unknown',
229
+ statusCode: lastError.statusCode?.toString() || 'unknown',
230
+ retryable: lastError.retryable ? 'true' : 'false'
231
+ });
196
232
  // Don't retry non-retryable errors
197
233
  if (!lastError.retryable) {
234
+ recordTiming('claude.api.duration', Date.now() - startTime, {
235
+ model,
236
+ status: 'error',
237
+ stream: 'false'
238
+ });
198
239
  this.handleError(lastError);
199
240
  throw lastError;
200
241
  }
@@ -209,12 +250,30 @@ export class ClaudeAPIClient extends EventEmitter {
209
250
  }
210
251
  }
211
252
  }
253
+ // Track final error timing after all retries exhausted
254
+ recordTiming('claude.api.duration', Date.now() - startTime, {
255
+ model,
256
+ status: 'error',
257
+ stream: 'false'
258
+ });
212
259
  this.handleError(lastError);
213
260
  throw lastError;
214
261
  }
215
262
  /**
216
263
  * Send a streaming request
217
264
  */ async *streamRequest(request) {
265
+ const startTime = Date.now();
266
+ const model = request.model || 'unknown';
267
+ let totalInputTokens = 0;
268
+ let totalOutputTokens = 0;
269
+ // Detect provider from apiUrl (z.ai vs anthropic)
270
+ const provider = this.config.apiUrl?.includes('z.ai') ? 'z.ai' : 'anthropic';
271
+ // Track API request
272
+ incrementMetric('claude.api.request', 1, {
273
+ model,
274
+ provider,
275
+ stream: 'true'
276
+ });
218
277
  const controller = new AbortController();
219
278
  const timeout = setTimeout(()=>controller.abort(), (this.config.timeout || 30000) * 2); // Double timeout for streaming
220
279
  try {
@@ -241,10 +300,35 @@ export class ClaudeAPIClient extends EventEmitter {
241
300
  message: errorText
242
301
  };
243
302
  }
244
- throw this.createAPIError(response.status, errorData);
303
+ const apiError = this.createAPIError(response.status, errorData);
304
+ // Track error
305
+ incrementMetric('claude.api.error', 1, {
306
+ model,
307
+ errorType: apiError.code || apiError.constructor.name || 'Unknown',
308
+ statusCode: apiError.statusCode?.toString() || 'unknown',
309
+ retryable: apiError.retryable ? 'true' : 'false'
310
+ });
311
+ recordTiming('claude.api.duration', Date.now() - startTime, {
312
+ model,
313
+ status: 'error',
314
+ stream: 'true'
315
+ });
316
+ throw apiError;
245
317
  }
246
318
  if (!response.body) {
247
- throw new ClaudeAPIError('Response body is null');
319
+ const bodyError = new ClaudeAPIError('Response body is null');
320
+ incrementMetric('claude.api.error', 1, {
321
+ model,
322
+ errorType: 'ResponseBodyNull',
323
+ statusCode: 'unknown',
324
+ retryable: 'false'
325
+ });
326
+ recordTiming('claude.api.duration', Date.now() - startTime, {
327
+ model,
328
+ status: 'error',
329
+ stream: 'true'
330
+ });
331
+ throw bodyError;
248
332
  }
249
333
  const reader = response.body.getReader();
250
334
  const decoder = new TextDecoder();
@@ -263,6 +347,13 @@ export class ClaudeAPIClient extends EventEmitter {
263
347
  if (data === '[DONE]') continue;
264
348
  try {
265
349
  const event = JSON.parse(data);
350
+ // Track token usage from stream events
351
+ if (event.type === 'message_start' && event.message?.usage) {
352
+ totalInputTokens = event.message.usage.input_tokens || 0;
353
+ }
354
+ if (event.type === 'message_delta' && event.usage) {
355
+ totalOutputTokens += event.usage.output_tokens || 0;
356
+ }
266
357
  this.emit('stream_event', event);
267
358
  yield event;
268
359
  } catch (e) {
@@ -274,11 +365,55 @@ export class ClaudeAPIClient extends EventEmitter {
274
365
  }
275
366
  }
276
367
  }
368
+ // Track successful completion
369
+ recordTiming('claude.api.duration', Date.now() - startTime, {
370
+ model,
371
+ status: 'success',
372
+ stream: 'true'
373
+ });
374
+ // Track token usage
375
+ if (totalInputTokens > 0 || totalOutputTokens > 0) {
376
+ incrementMetric('claude.tokens.input', totalInputTokens, {
377
+ model
378
+ });
379
+ incrementMetric('claude.tokens.output', totalOutputTokens, {
380
+ model
381
+ });
382
+ incrementMetric('claude.tokens.total', totalInputTokens + totalOutputTokens, {
383
+ model
384
+ });
385
+ }
277
386
  } catch (error) {
278
387
  clearTimeout(timeout);
279
388
  // Handle abort/timeout
280
389
  if (error instanceof Error && error.name === 'AbortError') {
281
- throw new ClaudeTimeoutError('Request timed out', this.config.timeout || 60000);
390
+ const timeoutError = new ClaudeTimeoutError('Request timed out', this.config.timeout || 60000);
391
+ incrementMetric('claude.api.error', 1, {
392
+ model,
393
+ errorType: 'Timeout',
394
+ statusCode: 'timeout',
395
+ retryable: 'true'
396
+ });
397
+ recordTiming('claude.api.duration', Date.now() - startTime, {
398
+ model,
399
+ status: 'error',
400
+ stream: 'true'
401
+ });
402
+ throw timeoutError;
403
+ }
404
+ // Track error if not already tracked
405
+ if (!(error instanceof ClaudeAPIError)) {
406
+ incrementMetric('claude.api.error', 1, {
407
+ model,
408
+ errorType: error instanceof Error ? error.constructor.name : 'Unknown',
409
+ statusCode: 'unknown',
410
+ retryable: 'false'
411
+ });
412
+ recordTiming('claude.api.duration', Date.now() - startTime, {
413
+ model,
414
+ status: 'error',
415
+ stream: 'true'
416
+ });
282
417
  }
283
418
  throw error;
284
419
  } finally{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/api/claude-client.ts"],"names":["EventEmitter","ClaudeAPIError","ClaudeInternalServerError","ClaudeServiceUnavailableError","ClaudeRateLimitError","ClaudeTimeoutError","ClaudeNetworkError","ClaudeAuthenticationError","ClaudeValidationError","getUserFriendlyError","circuitBreaker","ClaudeAPIClient","config","logger","configManager","defaultModel","defaultTemperature","defaultMaxTokens","lastHealthCheck","healthCheckTimer","loadConfiguration","threshold","circuitBreakerThreshold","timeout","circuitBreakerTimeout","resetTimeout","circuitBreakerResetTimeout","enableHealthCheck","startHealthCheck","overrides","apiKey","apiUrl","model","temperature","maxTokens","topP","topK","undefined","systemPrompt","retryAttempts","retryDelay","healthCheckInterval","retryJitter","process","env","ANTHROPIC_API_KEY","CLAUDE_API_URL","CLAUDE_MODEL","CLAUDE_TEMPERATURE","parseFloat","CLAUDE_MAX_TOKENS","parseInt","claudeConfig","get","Object","assign","validateConfiguration","updateConfig","updates","info","getConfig","sendMessage","messages","options","request","system","max_tokens","top_p","top_k","stream","debug","messageCount","length","streamRequest","sendRequest","lastError","attempt","controller","AbortController","setTimeout","abort","response","fetch","method","headers","body","JSON","stringify","signal","clearTimeout","ok","errorText","text","errorData","parse","message","createAPIError","status","data","json","inputTokens","usage","input_tokens","outputTokens","output_tokens","stopReason","stop_reason","emit","error","transformError","retryable","handleError","warn","statusCode","delay","calculateRetryDelay","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","lines","split","pop","line","startsWith","slice","event","e","Error","name","complete","prompt","role","content","streamComplete","type","delta","getAvailableModels","getModelInfo","modelInfo","contextWindow","description","ms","Promise","resolve","performHealthCheck","setInterval","startTime","Date","now","latency","healthy","timestamp","getHealthStatus","retryAfter","retry_after","includes","String","baseDelay","maxDelay","Math","min","pow","jitter","random","floor","errorInfo","title","code","details","level","suggestions","userFriendly","destroy","clearInterval","removeAllListeners"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/api/claude-client.ts"],"names":["EventEmitter","ClaudeAPIError","ClaudeInternalServerError","ClaudeServiceUnavailableError","ClaudeRateLimitError","ClaudeTimeoutError","ClaudeNetworkError","ClaudeAuthenticationError","ClaudeValidationError","getUserFriendlyError","circuitBreaker","incrementMetric","recordTiming","ClaudeAPIClient","config","logger","configManager","defaultModel","defaultTemperature","defaultMaxTokens","lastHealthCheck","healthCheckTimer","loadConfiguration","threshold","circuitBreakerThreshold","timeout","circuitBreakerTimeout","resetTimeout","circuitBreakerResetTimeout","enableHealthCheck","startHealthCheck","overrides","apiKey","apiUrl","model","temperature","maxTokens","topP","topK","undefined","systemPrompt","retryAttempts","retryDelay","healthCheckInterval","retryJitter","process","env","ANTHROPIC_API_KEY","CLAUDE_API_URL","CLAUDE_MODEL","CLAUDE_TEMPERATURE","parseFloat","CLAUDE_MAX_TOKENS","parseInt","claudeConfig","get","Object","assign","validateConfiguration","updateConfig","updates","info","getConfig","sendMessage","messages","options","request","system","max_tokens","top_p","top_k","stream","debug","messageCount","length","streamRequest","sendRequest","startTime","Date","now","provider","includes","lastError","attempt","controller","AbortController","setTimeout","abort","response","fetch","method","headers","body","JSON","stringify","signal","clearTimeout","ok","errorText","text","errorData","parse","message","createAPIError","status","data","json","usage","input_tokens","output_tokens","inputTokens","outputTokens","stopReason","stop_reason","emit","error","transformError","errorType","code","name","statusCode","toString","retryable","handleError","warn","delay","calculateRetryDelay","totalInputTokens","totalOutputTokens","apiError","bodyError","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","lines","split","pop","line","startsWith","slice","event","type","e","Error","timeoutError","complete","prompt","role","content","streamComplete","delta","getAvailableModels","getModelInfo","modelInfo","contextWindow","description","ms","Promise","resolve","performHealthCheck","setInterval","latency","healthy","timestamp","getHealthStatus","retryAfter","retry_after","String","baseDelay","maxDelay","Math","min","pow","jitter","random","floor","errorInfo","title","details","level","suggestions","userFriendly","destroy","clearInterval","removeAllListeners"],"mappings":"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"}
@@ -85,7 +85,7 @@ Key deliverables:
85
85
  selfLoopingPrompt: `
86
86
  Phase 1 (State Machine) complete with {consensusScore}% consensus.
87
87
 
88
- ✅ State transitions operational with <100ms latency
88
+ ✅ State transitions operational
89
89
  ✅ SDK auto-checkpoints working
90
90
 
91
91
  🚀 **IMMEDIATELY proceed to Phase 2: Dependency Graph**
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Scope Control System for CFN Loop Product Owner
3
+ *
4
+ * Provides scope boundary management, cost function calculation,
5
+ * and scope validation for GOAP-based Product Owner decisions.
6
+ */ export class ScopeControl {
7
+ /**
8
+ * Initialize scope boundaries at project start
9
+ */ static createScopeBoundaries(config) {
10
+ return {
11
+ primary_goal: config.primaryGoal,
12
+ in_scope: config.inScope,
13
+ out_of_scope: config.outOfScope,
14
+ risk_profile: config.riskProfile,
15
+ decision_authority_config: {
16
+ auto_approve_threshold: config.autoApproveThreshold || 0.90,
17
+ auto_relaunch_max_iteration: config.maxIterations || 10,
18
+ escalation_criteria: config.escalationCriteria || [
19
+ 'Breaking changes to public API',
20
+ 'Security model changes affecting other systems',
21
+ 'Budget impact >$50 in single phase'
22
+ ]
23
+ }
24
+ };
25
+ }
26
+ /**
27
+ * Classify validator concern as in-scope or out-of-scope
28
+ */ static classifyConcern(concern, scope) {
29
+ const concernLower = concern.concern.toLowerCase();
30
+ const recommendationLower = concern.recommendation.toLowerCase();
31
+ // Check if concern relates to in-scope items
32
+ const inScopeMatch = scope.in_scope.some((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase()));
33
+ // Check if concern relates to out-of-scope items
34
+ const outOfScopeMatch = scope.out_of_scope.some((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase()));
35
+ if (outOfScopeMatch && !inScopeMatch) {
36
+ return {
37
+ concern,
38
+ classification: 'out-of-scope',
39
+ reasoning: `Recommendation involves out-of-scope items: ${scope.out_of_scope.filter((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase())).join(', ')}`,
40
+ cost_penalty: 1000 // Prohibitive cost
41
+ };
42
+ }
43
+ if (inScopeMatch || concern.severity === 'critical') {
44
+ return {
45
+ concern,
46
+ classification: 'in-scope',
47
+ reasoning: inScopeMatch ? `Relates to in-scope items: ${scope.in_scope.filter((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase())).join(', ')}` : `Critical severity requires attention regardless of explicit scope match`,
48
+ cost_penalty: concern.severity === 'critical' ? 20 : 50
49
+ };
50
+ }
51
+ // Default: treat as in-scope if unclear (safer approach)
52
+ return {
53
+ concern,
54
+ classification: 'in-scope',
55
+ reasoning: 'No explicit out-of-scope match; defaulting to in-scope for safety',
56
+ cost_penalty: 50
57
+ };
58
+ }
59
+ /**
60
+ * Calculate GOAP action cost based on scope impact
61
+ */ static calculateActionCost(action, state) {
62
+ let cost = action.baseComplexity * 10;
63
+ // Scope impact (CRITICAL)
64
+ if (action.scopeImpact === 'expands') {
65
+ cost += 1000; // Prohibitive (effectively blocked)
66
+ }
67
+ if (action.scopeImpact === 'reduces') {
68
+ cost += 500; // Heavily penalized
69
+ }
70
+ // Add penalties from addressed concerns
71
+ if (action.addressesConcerns) {
72
+ action.addressesConcerns.forEach((classification)=>{
73
+ cost += classification.cost_penalty;
74
+ });
75
+ }
76
+ // Iteration pressure (prefer faster solutions near limits)
77
+ if (state.loop2Iteration >= 8) {
78
+ cost *= 1.5;
79
+ }
80
+ // Blocker severity
81
+ cost += state.criticalBlockers * 20;
82
+ return Math.round(cost);
83
+ }
84
+ /**
85
+ * Generate memory storage payload for scope boundaries
86
+ */ static generateMemoryPayload(scope) {
87
+ return {
88
+ namespace: 'scope-control',
89
+ key: 'project-boundaries',
90
+ value: JSON.stringify(scope)
91
+ };
92
+ }
93
+ /**
94
+ * Parse validator concerns from consensus feedback
95
+ */ static parseValidatorConcerns(validatorFeedback, validatorTypes) {
96
+ return Object.entries(validatorFeedback).map(([validator, feedback])=>{
97
+ // Infer severity from keywords
98
+ const feedbackLower = feedback.toLowerCase();
99
+ let severity = 'medium';
100
+ if (feedbackLower.includes('critical') || feedbackLower.includes('blocker') || feedbackLower.includes('security vulnerability') || feedbackLower.includes('data loss')) {
101
+ severity = 'critical';
102
+ } else if (feedbackLower.includes('important') || feedbackLower.includes('significant') || feedbackLower.includes('must')) {
103
+ severity = 'high';
104
+ } else if (feedbackLower.includes('minor') || feedbackLower.includes('nice to have') || feedbackLower.includes('consider')) {
105
+ severity = 'low';
106
+ }
107
+ return {
108
+ validator,
109
+ concern: feedback,
110
+ recommendation: feedback,
111
+ severity
112
+ };
113
+ });
114
+ }
115
+ /**
116
+ * Create backlog items for deferred out-of-scope concerns
117
+ */ static createBacklogItems(outOfScopeConcerns) {
118
+ return outOfScopeConcerns.map((classification)=>({
119
+ title: `${classification.concern.validator}: ${classification.concern.concern.substring(0, 60)}...`,
120
+ description: classification.concern.recommendation,
121
+ source: classification.concern.validator,
122
+ deferred_at: new Date().toISOString(),
123
+ reasoning: classification.reasoning
124
+ }));
125
+ }
126
+ /**
127
+ * Validate scope boundaries structure
128
+ */ static validateScopeBoundaries(scope) {
129
+ return typeof scope === 'object' && typeof scope.primary_goal === 'string' && Array.isArray(scope.in_scope) && Array.isArray(scope.out_of_scope) && typeof scope.risk_profile === 'string' && [
130
+ 'internal-only-low-risk',
131
+ 'public-facing-medium-risk',
132
+ 'critical-high-risk'
133
+ ].includes(scope.risk_profile) && typeof scope.decision_authority_config === 'object' && typeof scope.decision_authority_config.auto_approve_threshold === 'number' && typeof scope.decision_authority_config.auto_relaunch_max_iteration === 'number' && Array.isArray(scope.decision_authority_config.escalation_criteria);
134
+ }
135
+ /**
136
+ * Example scope boundaries for common scenarios
137
+ */ static getExampleScopes() {
138
+ return {
139
+ 'help-system': ScopeControl.createScopeBoundaries({
140
+ primaryGoal: 'Implement help coordinator system',
141
+ inScope: [
142
+ 'help routing via MessageBroker',
143
+ 'agent capability matching',
144
+ 'waiting pool management',
145
+ 'state machine integration (HELPING state)'
146
+ ],
147
+ outOfScope: [
148
+ 'ML-based help suggestions',
149
+ 'External API integrations',
150
+ 'Advanced analytics',
151
+ 'JWT authentication',
152
+ 'OAuth providers'
153
+ ],
154
+ riskProfile: 'internal-only-low-risk'
155
+ }),
156
+ 'user-auth': ScopeControl.createScopeBoundaries({
157
+ primaryGoal: 'Build user authentication system',
158
+ inScope: [
159
+ 'user registration and login',
160
+ 'password hashing',
161
+ 'session management',
162
+ 'basic RBAC'
163
+ ],
164
+ outOfScope: [
165
+ 'social login',
166
+ 'passwordless authentication',
167
+ 'advanced MFA',
168
+ 'SSO integration'
169
+ ],
170
+ riskProfile: 'public-facing-medium-risk',
171
+ escalationCriteria: [
172
+ 'Changes to password storage mechanism',
173
+ 'Modifications to session token generation',
174
+ 'Security model changes'
175
+ ]
176
+ }),
177
+ 'payment-processing': ScopeControl.createScopeBoundaries({
178
+ primaryGoal: 'Integrate payment processing',
179
+ inScope: [
180
+ 'Stripe API integration',
181
+ 'payment intent creation',
182
+ 'webhook handling',
183
+ 'basic refund support'
184
+ ],
185
+ outOfScope: [
186
+ 'multi-currency support',
187
+ 'subscription billing',
188
+ 'split payments',
189
+ 'cryptocurrency'
190
+ ],
191
+ riskProfile: 'critical-high-risk',
192
+ autoApproveThreshold: 0.95,
193
+ escalationCriteria: [
194
+ 'Changes to payment data handling',
195
+ 'Modifications to webhook security',
196
+ 'Budget impact >$100 in single phase',
197
+ 'PCI DSS compliance concerns'
198
+ ]
199
+ })
200
+ };
201
+ }
202
+ } /**
203
+ * Example usage in Product Owner agent:
204
+ *
205
+ * // At project start:
206
+ * const scope = ScopeControl.createScopeBoundaries({
207
+ * primaryGoal: "Implement help coordinator system",
208
+ * inScope: ["help routing", "agent matching"],
209
+ * outOfScope: ["ML features", "external APIs"],
210
+ * riskProfile: "internal-only-low-risk"
211
+ * });
212
+ *
213
+ * // Store in memory:
214
+ * const payload = ScopeControl.generateMemoryPayload(scope);
215
+ * await memoryUsage({
216
+ * action: "store",
217
+ * namespace: payload.namespace,
218
+ * key: payload.key,
219
+ * value: payload.value
220
+ * });
221
+ *
222
+ * // In Product Owner decision:
223
+ * const concerns = ScopeControl.parseValidatorConcerns(validatorFeedback);
224
+ * const classifications = concerns.map(c =>
225
+ * ScopeControl.classifyConcern(c, scope)
226
+ * );
227
+ *
228
+ * const inScopeConcerns = classifications.filter(c => c.classification === 'in-scope');
229
+ * const outOfScopeConcerns = classifications.filter(c => c.classification === 'out-of-scope');
230
+ *
231
+ * if (outOfScopeConcerns.length > 0) {
232
+ * const backlogItems = ScopeControl.createBacklogItems(outOfScopeConcerns);
233
+ * // Defer to backlog, approve phase
234
+ * }
235
+ *
236
+ * if (inScopeConcerns.length > 0) {
237
+ * const cost = ScopeControl.calculateActionCost({
238
+ * name: "relaunch_loop3",
239
+ * baseComplexity: 3,
240
+ * scopeImpact: "maintains",
241
+ * addressesConcerns: inScopeConcerns
242
+ * }, state);
243
+ * // PROCEED with Loop 3 relaunch
244
+ * }
245
+ */
246
+
247
+ //# sourceMappingURL=scope-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cfn-loop/scope-control.ts"],"names":["ScopeControl","createScopeBoundaries","config","primary_goal","primaryGoal","in_scope","inScope","out_of_scope","outOfScope","risk_profile","riskProfile","decision_authority_config","auto_approve_threshold","autoApproveThreshold","auto_relaunch_max_iteration","maxIterations","escalation_criteria","escalationCriteria","classifyConcern","concern","scope","concernLower","toLowerCase","recommendationLower","recommendation","inScopeMatch","some","item","includes","outOfScopeMatch","classification","reasoning","filter","join","cost_penalty","severity","calculateActionCost","action","state","cost","baseComplexity","scopeImpact","addressesConcerns","forEach","loop2Iteration","criticalBlockers","Math","round","generateMemoryPayload","namespace","key","value","JSON","stringify","parseValidatorConcerns","validatorFeedback","validatorTypes","Object","entries","map","validator","feedback","feedbackLower","createBacklogItems","outOfScopeConcerns","title","substring","description","source","deferred_at","Date","toISOString","validateScopeBoundaries","Array","isArray","getExampleScopes"],"mappings":"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"}