claude-flow 3.25.5 → 3.26.0

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 (312) hide show
  1. package/.claude/helpers/.helpers-version +1 -1
  2. package/.claude/helpers/helpers.manifest.json +5 -4
  3. package/.claude/helpers/hook-handler.cjs +129 -0
  4. package/.claude/helpers/statusline.cjs +300 -123
  5. package/.claude/proven-config.json +1 -1
  6. package/.claude/security-scans/scan-all-standard.json +321 -0
  7. package/.claude/security-scans/scan-code-deep.json +1209 -0
  8. package/.claude/security-scans/scan-deps-full.json +14 -0
  9. package/package.json +3 -1
  10. package/v3/@claude-flow/cli/catalog-manifest.json +12 -0
  11. package/v3/@claude-flow/cli/dist/src/commands/advisor.d.ts +15 -0
  12. package/v3/@claude-flow/cli/dist/src/commands/advisor.js +94 -0
  13. package/v3/@claude-flow/cli/dist/src/commands/doctor.js +151 -32
  14. package/v3/@claude-flow/cli/dist/src/commands/funnel.d.ts +13 -0
  15. package/v3/@claude-flow/cli/dist/src/commands/funnel.js +103 -0
  16. package/v3/@claude-flow/cli/dist/src/commands/hooks.js +112 -46
  17. package/v3/@claude-flow/cli/dist/src/commands/index.js +10 -0
  18. package/v3/@claude-flow/cli/dist/src/commands/init.js +44 -0
  19. package/v3/@claude-flow/cli/dist/src/commands/proxy.d.ts +21 -0
  20. package/v3/@claude-flow/cli/dist/src/commands/proxy.js +310 -0
  21. package/v3/@claude-flow/cli/dist/src/commands/security.js +29 -0
  22. package/v3/@claude-flow/cli/dist/src/commands/settings.d.ts +19 -0
  23. package/v3/@claude-flow/cli/dist/src/commands/settings.js +180 -0
  24. package/v3/@claude-flow/cli/dist/src/commands/version.d.ts +42 -0
  25. package/v3/@claude-flow/cli/dist/src/commands/version.js +106 -0
  26. package/v3/@claude-flow/cli/dist/src/funnel/advisor-tip.d.ts +58 -0
  27. package/v3/@claude-flow/cli/dist/src/funnel/advisor-tip.js +92 -0
  28. package/v3/@claude-flow/cli/dist/src/funnel/attribution.d.ts +37 -0
  29. package/v3/@claude-flow/cli/dist/src/funnel/attribution.js +101 -0
  30. package/v3/@claude-flow/cli/dist/src/funnel/consent.d.ts +22 -0
  31. package/v3/@claude-flow/cli/dist/src/funnel/consent.js +55 -0
  32. package/v3/@claude-flow/cli/dist/src/funnel/credit-errors.d.ts +31 -0
  33. package/v3/@claude-flow/cli/dist/src/funnel/credit-errors.js +88 -0
  34. package/v3/@claude-flow/cli/dist/src/funnel/credit-notifier.d.ts +44 -0
  35. package/v3/@claude-flow/cli/dist/src/funnel/credit-notifier.js +74 -0
  36. package/v3/@claude-flow/cli/dist/src/funnel/disclosure.d.ts +46 -0
  37. package/v3/@claude-flow/cli/dist/src/funnel/disclosure.js +97 -0
  38. package/v3/@claude-flow/cli/dist/src/funnel/enrollment.d.ts +36 -0
  39. package/v3/@claude-flow/cli/dist/src/funnel/enrollment.js +64 -0
  40. package/v3/@claude-flow/cli/dist/src/funnel/environment.d.ts +17 -0
  41. package/v3/@claude-flow/cli/dist/src/funnel/environment.js +39 -0
  42. package/v3/@claude-flow/cli/dist/src/funnel/event-transport.d.ts +51 -0
  43. package/v3/@claude-flow/cli/dist/src/funnel/event-transport.js +199 -0
  44. package/v3/@claude-flow/cli/dist/src/funnel/events.d.ts +42 -0
  45. package/v3/@claude-flow/cli/dist/src/funnel/events.js +150 -0
  46. package/v3/@claude-flow/cli/dist/src/funnel/index.d.ts +20 -0
  47. package/v3/@claude-flow/cli/dist/src/funnel/index.js +20 -0
  48. package/v3/@claude-flow/cli/dist/src/funnel/insights.d.ts +49 -0
  49. package/v3/@claude-flow/cli/dist/src/funnel/insights.js +120 -0
  50. package/v3/@claude-flow/cli/dist/src/funnel/local-signals.d.ts +15 -0
  51. package/v3/@claude-flow/cli/dist/src/funnel/local-signals.js +68 -0
  52. package/v3/@claude-flow/cli/dist/src/funnel/message-transport.d.ts +51 -0
  53. package/v3/@claude-flow/cli/dist/src/funnel/message-transport.js +149 -0
  54. package/v3/@claude-flow/cli/dist/src/funnel/messages.d.ts +55 -0
  55. package/v3/@claude-flow/cli/dist/src/funnel/messages.js +160 -0
  56. package/v3/@claude-flow/cli/dist/src/funnel/power-saver-notifier.d.ts +44 -0
  57. package/v3/@claude-flow/cli/dist/src/funnel/power-saver-notifier.js +92 -0
  58. package/v3/@claude-flow/cli/dist/src/funnel/precedence.d.ts +16 -0
  59. package/v3/@claude-flow/cli/dist/src/funnel/precedence.js +85 -0
  60. package/v3/@claude-flow/cli/dist/src/funnel/promo.d.ts +41 -0
  61. package/v3/@claude-flow/cli/dist/src/funnel/promo.js +144 -0
  62. package/v3/@claude-flow/cli/dist/src/funnel/rate-limit-notifier.d.ts +55 -0
  63. package/v3/@claude-flow/cli/dist/src/funnel/rate-limit-notifier.js +102 -0
  64. package/v3/@claude-flow/cli/dist/src/funnel/rotation.d.ts +19 -0
  65. package/v3/@claude-flow/cli/dist/src/funnel/rotation.js +70 -0
  66. package/v3/@claude-flow/cli/dist/src/funnel/state.d.ts +13 -0
  67. package/v3/@claude-flow/cli/dist/src/funnel/state.js +52 -0
  68. package/v3/@claude-flow/cli/dist/src/funnel/toggle-cooldown.d.ts +17 -0
  69. package/v3/@claude-flow/cli/dist/src/funnel/toggle-cooldown.js +32 -0
  70. package/v3/@claude-flow/cli/dist/src/funnel/types.d.ts +86 -0
  71. package/v3/@claude-flow/cli/dist/src/funnel/types.js +26 -0
  72. package/v3/@claude-flow/cli/dist/src/init/executor.js +25 -19
  73. package/v3/@claude-flow/cli/dist/src/init/helper-refresh.d.ts +33 -2
  74. package/v3/@claude-flow/cli/dist/src/init/helper-refresh.js +102 -12
  75. package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +52 -0
  76. package/v3/@claude-flow/cli/dist/src/init/mcp-generator.js +11 -6
  77. package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +282 -116
  78. package/v3/@claude-flow/cli/dist/src/services/daemon-autostart.js +28 -5
  79. package/v3/@claude-flow/cli/dist/src/services/fable-harness.d.ts +39 -0
  80. package/v3/@claude-flow/cli/dist/src/services/fable-harness.js +41 -0
  81. package/v3/@claude-flow/cli/package.json +16 -4
  82. package/v3/README.md +493 -0
  83. package/.claude/coordinator/config.json +0 -24
  84. package/.claude/coordinator/state.json +0 -37
  85. package/.claude/coordinator/tick-log/tick-01.json +0 -17
  86. package/.claude/coordinator/tick-log/tick-02.json +0 -17
  87. package/.claude/coordinator/tick-log/tick-03.json +0 -17
  88. package/.claude/coordinator/tick-log/tick-04.json +0 -14
  89. package/.claude/coordinator/tick-log/tick-05.json +0 -16
  90. package/.claude/settings.local.json +0 -11
  91. package/v3/@claude-flow/cli/dist/src/ruvector/lattice-wasm.d.ts +0 -14
  92. package/v3/@claude-flow/cli/dist/src/ruvector/lattice-wasm.js +0 -144
  93. package/v3/@claude-flow/guidance/dist/adversarial.d.ts +0 -284
  94. package/v3/@claude-flow/guidance/dist/adversarial.js +0 -572
  95. package/v3/@claude-flow/guidance/dist/analyzer.d.ts +0 -530
  96. package/v3/@claude-flow/guidance/dist/analyzer.js +0 -2587
  97. package/v3/@claude-flow/guidance/dist/artifacts.d.ts +0 -283
  98. package/v3/@claude-flow/guidance/dist/artifacts.js +0 -356
  99. package/v3/@claude-flow/guidance/dist/authority.d.ts +0 -290
  100. package/v3/@claude-flow/guidance/dist/authority.js +0 -558
  101. package/v3/@claude-flow/guidance/dist/capabilities.d.ts +0 -209
  102. package/v3/@claude-flow/guidance/dist/capabilities.js +0 -485
  103. package/v3/@claude-flow/guidance/dist/coherence.d.ts +0 -233
  104. package/v3/@claude-flow/guidance/dist/coherence.js +0 -372
  105. package/v3/@claude-flow/guidance/dist/compiler.d.ts +0 -87
  106. package/v3/@claude-flow/guidance/dist/compiler.js +0 -410
  107. package/v3/@claude-flow/guidance/dist/conformance-kit.d.ts +0 -225
  108. package/v3/@claude-flow/guidance/dist/conformance-kit.js +0 -629
  109. package/v3/@claude-flow/guidance/dist/continue-gate.d.ts +0 -214
  110. package/v3/@claude-flow/guidance/dist/continue-gate.js +0 -353
  111. package/v3/@claude-flow/guidance/dist/crypto-utils.d.ts +0 -17
  112. package/v3/@claude-flow/guidance/dist/crypto-utils.js +0 -24
  113. package/v3/@claude-flow/guidance/dist/evolution.d.ts +0 -282
  114. package/v3/@claude-flow/guidance/dist/evolution.js +0 -500
  115. package/v3/@claude-flow/guidance/dist/gates.d.ts +0 -79
  116. package/v3/@claude-flow/guidance/dist/gates.js +0 -302
  117. package/v3/@claude-flow/guidance/dist/gateway.d.ts +0 -206
  118. package/v3/@claude-flow/guidance/dist/gateway.js +0 -452
  119. package/v3/@claude-flow/guidance/dist/generators.d.ts +0 -153
  120. package/v3/@claude-flow/guidance/dist/generators.js +0 -682
  121. package/v3/@claude-flow/guidance/dist/headless.d.ts +0 -177
  122. package/v3/@claude-flow/guidance/dist/headless.js +0 -342
  123. package/v3/@claude-flow/guidance/dist/hooks.d.ts +0 -109
  124. package/v3/@claude-flow/guidance/dist/hooks.js +0 -347
  125. package/v3/@claude-flow/guidance/dist/index.d.ts +0 -205
  126. package/v3/@claude-flow/guidance/dist/index.js +0 -321
  127. package/v3/@claude-flow/guidance/dist/ledger.d.ts +0 -162
  128. package/v3/@claude-flow/guidance/dist/ledger.js +0 -375
  129. package/v3/@claude-flow/guidance/dist/manifest-validator.d.ts +0 -289
  130. package/v3/@claude-flow/guidance/dist/manifest-validator.js +0 -838
  131. package/v3/@claude-flow/guidance/dist/memory-gate.d.ts +0 -222
  132. package/v3/@claude-flow/guidance/dist/memory-gate.js +0 -382
  133. package/v3/@claude-flow/guidance/dist/meta-governance.d.ts +0 -265
  134. package/v3/@claude-flow/guidance/dist/meta-governance.js +0 -348
  135. package/v3/@claude-flow/guidance/dist/optimizer.d.ts +0 -104
  136. package/v3/@claude-flow/guidance/dist/optimizer.js +0 -329
  137. package/v3/@claude-flow/guidance/dist/persistence.d.ts +0 -189
  138. package/v3/@claude-flow/guidance/dist/persistence.js +0 -464
  139. package/v3/@claude-flow/guidance/dist/proof.d.ts +0 -185
  140. package/v3/@claude-flow/guidance/dist/proof.js +0 -238
  141. package/v3/@claude-flow/guidance/dist/retriever.d.ts +0 -172
  142. package/v3/@claude-flow/guidance/dist/retriever.js +0 -596
  143. package/v3/@claude-flow/guidance/dist/ruvbot-integration.d.ts +0 -370
  144. package/v3/@claude-flow/guidance/dist/ruvbot-integration.js +0 -738
  145. package/v3/@claude-flow/guidance/dist/temporal.d.ts +0 -426
  146. package/v3/@claude-flow/guidance/dist/temporal.js +0 -658
  147. package/v3/@claude-flow/guidance/dist/trust.d.ts +0 -283
  148. package/v3/@claude-flow/guidance/dist/trust.js +0 -473
  149. package/v3/@claude-flow/guidance/dist/truth-anchors.d.ts +0 -276
  150. package/v3/@claude-flow/guidance/dist/truth-anchors.js +0 -488
  151. package/v3/@claude-flow/guidance/dist/types.d.ts +0 -378
  152. package/v3/@claude-flow/guidance/dist/types.js +0 -10
  153. package/v3/@claude-flow/guidance/dist/uncertainty.d.ts +0 -372
  154. package/v3/@claude-flow/guidance/dist/uncertainty.js +0 -619
  155. package/v3/@claude-flow/guidance/dist/wasm-kernel.d.ts +0 -48
  156. package/v3/@claude-flow/guidance/dist/wasm-kernel.js +0 -158
  157. package/v3/@claude-flow/shared/dist/core/config/defaults.d.ts +0 -41
  158. package/v3/@claude-flow/shared/dist/core/config/defaults.js +0 -186
  159. package/v3/@claude-flow/shared/dist/core/config/index.d.ts +0 -8
  160. package/v3/@claude-flow/shared/dist/core/config/index.js +0 -12
  161. package/v3/@claude-flow/shared/dist/core/config/loader.d.ts +0 -45
  162. package/v3/@claude-flow/shared/dist/core/config/loader.js +0 -238
  163. package/v3/@claude-flow/shared/dist/core/config/schema.d.ts +0 -1728
  164. package/v3/@claude-flow/shared/dist/core/config/schema.js +0 -160
  165. package/v3/@claude-flow/shared/dist/core/config/validator.d.ts +0 -92
  166. package/v3/@claude-flow/shared/dist/core/config/validator.js +0 -147
  167. package/v3/@claude-flow/shared/dist/core/event-bus.d.ts +0 -31
  168. package/v3/@claude-flow/shared/dist/core/event-bus.js +0 -197
  169. package/v3/@claude-flow/shared/dist/core/index.d.ts +0 -15
  170. package/v3/@claude-flow/shared/dist/core/index.js +0 -19
  171. package/v3/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +0 -200
  172. package/v3/@claude-flow/shared/dist/core/interfaces/agent.interface.js +0 -6
  173. package/v3/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +0 -310
  174. package/v3/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +0 -7
  175. package/v3/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +0 -224
  176. package/v3/@claude-flow/shared/dist/core/interfaces/event.interface.js +0 -46
  177. package/v3/@claude-flow/shared/dist/core/interfaces/index.d.ts +0 -10
  178. package/v3/@claude-flow/shared/dist/core/interfaces/index.js +0 -15
  179. package/v3/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +0 -298
  180. package/v3/@claude-flow/shared/dist/core/interfaces/memory.interface.js +0 -7
  181. package/v3/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +0 -185
  182. package/v3/@claude-flow/shared/dist/core/interfaces/task.interface.js +0 -6
  183. package/v3/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +0 -35
  184. package/v3/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +0 -101
  185. package/v3/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +0 -60
  186. package/v3/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +0 -166
  187. package/v3/@claude-flow/shared/dist/core/orchestrator/index.d.ts +0 -46
  188. package/v3/@claude-flow/shared/dist/core/orchestrator/index.js +0 -64
  189. package/v3/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +0 -56
  190. package/v3/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +0 -195
  191. package/v3/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +0 -83
  192. package/v3/@claude-flow/shared/dist/core/orchestrator/session-manager.js +0 -193
  193. package/v3/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +0 -49
  194. package/v3/@claude-flow/shared/dist/core/orchestrator/task-manager.js +0 -253
  195. package/v3/@claude-flow/shared/dist/events/domain-events.d.ts +0 -282
  196. package/v3/@claude-flow/shared/dist/events/domain-events.js +0 -165
  197. package/v3/@claude-flow/shared/dist/events/event-store.d.ts +0 -126
  198. package/v3/@claude-flow/shared/dist/events/event-store.js +0 -427
  199. package/v3/@claude-flow/shared/dist/events/event-store.test.d.ts +0 -8
  200. package/v3/@claude-flow/shared/dist/events/event-store.test.js +0 -293
  201. package/v3/@claude-flow/shared/dist/events/example-usage.d.ts +0 -10
  202. package/v3/@claude-flow/shared/dist/events/example-usage.js +0 -193
  203. package/v3/@claude-flow/shared/dist/events/index.d.ts +0 -21
  204. package/v3/@claude-flow/shared/dist/events/index.js +0 -22
  205. package/v3/@claude-flow/shared/dist/events/projections.d.ts +0 -177
  206. package/v3/@claude-flow/shared/dist/events/projections.js +0 -421
  207. package/v3/@claude-flow/shared/dist/events/rvf-event-log.d.ts +0 -82
  208. package/v3/@claude-flow/shared/dist/events/rvf-event-log.js +0 -340
  209. package/v3/@claude-flow/shared/dist/events/state-reconstructor.d.ts +0 -101
  210. package/v3/@claude-flow/shared/dist/events/state-reconstructor.js +0 -263
  211. package/v3/@claude-flow/shared/dist/events.d.ts +0 -80
  212. package/v3/@claude-flow/shared/dist/events.js +0 -249
  213. package/v3/@claude-flow/shared/dist/hooks/example-usage.d.ts +0 -42
  214. package/v3/@claude-flow/shared/dist/hooks/example-usage.js +0 -351
  215. package/v3/@claude-flow/shared/dist/hooks/executor.d.ts +0 -100
  216. package/v3/@claude-flow/shared/dist/hooks/executor.js +0 -267
  217. package/v3/@claude-flow/shared/dist/hooks/hooks.test.d.ts +0 -9
  218. package/v3/@claude-flow/shared/dist/hooks/hooks.test.js +0 -322
  219. package/v3/@claude-flow/shared/dist/hooks/index.d.ts +0 -52
  220. package/v3/@claude-flow/shared/dist/hooks/index.js +0 -51
  221. package/v3/@claude-flow/shared/dist/hooks/registry.d.ts +0 -133
  222. package/v3/@claude-flow/shared/dist/hooks/registry.js +0 -277
  223. package/v3/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +0 -105
  224. package/v3/@claude-flow/shared/dist/hooks/safety/bash-safety.js +0 -481
  225. package/v3/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +0 -144
  226. package/v3/@claude-flow/shared/dist/hooks/safety/file-organization.js +0 -328
  227. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +0 -158
  228. package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +0 -450
  229. package/v3/@claude-flow/shared/dist/hooks/safety/index.d.ts +0 -17
  230. package/v3/@claude-flow/shared/dist/hooks/safety/index.js +0 -17
  231. package/v3/@claude-flow/shared/dist/hooks/session-hooks.d.ts +0 -234
  232. package/v3/@claude-flow/shared/dist/hooks/session-hooks.js +0 -334
  233. package/v3/@claude-flow/shared/dist/hooks/task-hooks.d.ts +0 -163
  234. package/v3/@claude-flow/shared/dist/hooks/task-hooks.js +0 -326
  235. package/v3/@claude-flow/shared/dist/hooks/types.d.ts +0 -267
  236. package/v3/@claude-flow/shared/dist/hooks/types.js +0 -62
  237. package/v3/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +0 -9
  238. package/v3/@claude-flow/shared/dist/hooks/verify-exports.test.js +0 -93
  239. package/v3/@claude-flow/shared/dist/index.d.ts +0 -20
  240. package/v3/@claude-flow/shared/dist/index.js +0 -50
  241. package/v3/@claude-flow/shared/dist/mcp/connection-pool.d.ts +0 -98
  242. package/v3/@claude-flow/shared/dist/mcp/connection-pool.js +0 -364
  243. package/v3/@claude-flow/shared/dist/mcp/index.d.ts +0 -69
  244. package/v3/@claude-flow/shared/dist/mcp/index.js +0 -84
  245. package/v3/@claude-flow/shared/dist/mcp/server.d.ts +0 -166
  246. package/v3/@claude-flow/shared/dist/mcp/server.js +0 -590
  247. package/v3/@claude-flow/shared/dist/mcp/session-manager.d.ts +0 -136
  248. package/v3/@claude-flow/shared/dist/mcp/session-manager.js +0 -335
  249. package/v3/@claude-flow/shared/dist/mcp/tool-registry.d.ts +0 -178
  250. package/v3/@claude-flow/shared/dist/mcp/tool-registry.js +0 -439
  251. package/v3/@claude-flow/shared/dist/mcp/transport/http.d.ts +0 -104
  252. package/v3/@claude-flow/shared/dist/mcp/transport/http.js +0 -476
  253. package/v3/@claude-flow/shared/dist/mcp/transport/index.d.ts +0 -102
  254. package/v3/@claude-flow/shared/dist/mcp/transport/index.js +0 -238
  255. package/v3/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +0 -104
  256. package/v3/@claude-flow/shared/dist/mcp/transport/stdio.js +0 -263
  257. package/v3/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +0 -133
  258. package/v3/@claude-flow/shared/dist/mcp/transport/websocket.js +0 -396
  259. package/v3/@claude-flow/shared/dist/mcp/types.d.ts +0 -436
  260. package/v3/@claude-flow/shared/dist/mcp/types.js +0 -54
  261. package/v3/@claude-flow/shared/dist/plugin-interface.d.ts +0 -544
  262. package/v3/@claude-flow/shared/dist/plugin-interface.js +0 -23
  263. package/v3/@claude-flow/shared/dist/plugin-loader.d.ts +0 -139
  264. package/v3/@claude-flow/shared/dist/plugin-loader.js +0 -434
  265. package/v3/@claude-flow/shared/dist/plugin-registry.d.ts +0 -183
  266. package/v3/@claude-flow/shared/dist/plugin-registry.js +0 -457
  267. package/v3/@claude-flow/shared/dist/plugins/index.d.ts +0 -10
  268. package/v3/@claude-flow/shared/dist/plugins/index.js +0 -10
  269. package/v3/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +0 -106
  270. package/v3/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +0 -241
  271. package/v3/@claude-flow/shared/dist/plugins/official/index.d.ts +0 -10
  272. package/v3/@claude-flow/shared/dist/plugins/official/index.js +0 -10
  273. package/v3/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +0 -121
  274. package/v3/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +0 -355
  275. package/v3/@claude-flow/shared/dist/plugins/types.d.ts +0 -93
  276. package/v3/@claude-flow/shared/dist/plugins/types.js +0 -9
  277. package/v3/@claude-flow/shared/dist/resilience/bulkhead.d.ts +0 -105
  278. package/v3/@claude-flow/shared/dist/resilience/bulkhead.js +0 -206
  279. package/v3/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +0 -132
  280. package/v3/@claude-flow/shared/dist/resilience/circuit-breaker.js +0 -233
  281. package/v3/@claude-flow/shared/dist/resilience/index.d.ts +0 -19
  282. package/v3/@claude-flow/shared/dist/resilience/index.js +0 -19
  283. package/v3/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +0 -168
  284. package/v3/@claude-flow/shared/dist/resilience/rate-limiter.js +0 -314
  285. package/v3/@claude-flow/shared/dist/resilience/retry.d.ts +0 -91
  286. package/v3/@claude-flow/shared/dist/resilience/retry.js +0 -159
  287. package/v3/@claude-flow/shared/dist/security/index.d.ts +0 -10
  288. package/v3/@claude-flow/shared/dist/security/index.js +0 -12
  289. package/v3/@claude-flow/shared/dist/security/input-validation.d.ts +0 -73
  290. package/v3/@claude-flow/shared/dist/security/input-validation.js +0 -201
  291. package/v3/@claude-flow/shared/dist/security/secure-random.d.ts +0 -92
  292. package/v3/@claude-flow/shared/dist/security/secure-random.js +0 -142
  293. package/v3/@claude-flow/shared/dist/services/index.d.ts +0 -7
  294. package/v3/@claude-flow/shared/dist/services/index.js +0 -7
  295. package/v3/@claude-flow/shared/dist/services/v3-progress.service.d.ts +0 -124
  296. package/v3/@claude-flow/shared/dist/services/v3-progress.service.js +0 -402
  297. package/v3/@claude-flow/shared/dist/types/agent.types.d.ts +0 -137
  298. package/v3/@claude-flow/shared/dist/types/agent.types.js +0 -6
  299. package/v3/@claude-flow/shared/dist/types/index.d.ts +0 -11
  300. package/v3/@claude-flow/shared/dist/types/index.js +0 -17
  301. package/v3/@claude-flow/shared/dist/types/mcp.types.d.ts +0 -266
  302. package/v3/@claude-flow/shared/dist/types/mcp.types.js +0 -7
  303. package/v3/@claude-flow/shared/dist/types/memory.types.d.ts +0 -236
  304. package/v3/@claude-flow/shared/dist/types/memory.types.js +0 -7
  305. package/v3/@claude-flow/shared/dist/types/swarm.types.d.ts +0 -186
  306. package/v3/@claude-flow/shared/dist/types/swarm.types.js +0 -65
  307. package/v3/@claude-flow/shared/dist/types/task.types.d.ts +0 -178
  308. package/v3/@claude-flow/shared/dist/types/task.types.js +0 -32
  309. package/v3/@claude-flow/shared/dist/types.d.ts +0 -197
  310. package/v3/@claude-flow/shared/dist/types.js +0 -21
  311. package/v3/@claude-flow/shared/dist/utils/secure-logger.d.ts +0 -69
  312. package/v3/@claude-flow/shared/dist/utils/secure-logger.js +0 -208
@@ -1,629 +0,0 @@
1
- /**
2
- * Agent Cell Conformance Kit
3
- *
4
- * Canonical acceptance test proving the entire guidance control plane works
5
- * end-to-end. Implements the "Memory Clerk" agent cell pattern:
6
- *
7
- * 1. Read 20 memory entries (knowledge retrieval)
8
- * 2. Run 1 model inference (reasoning)
9
- * 3. Propose 5 memory writes based on inference
10
- * 4. Inject a coherence drop at write #3
11
- * 5. Verify the system switches to read-only and blocks remaining writes
12
- * 6. Emit a signed proof envelope
13
- * 7. Return a complete, replayable trace
14
- *
15
- * @module @claude-flow/guidance/conformance-kit
16
- */
17
- import { createHash, randomUUID } from 'node:crypto';
18
- import { createMemoryWriteGate, createMemoryEntry, } from './memory-gate.js';
19
- import { createProofChain } from './proof.js';
20
- import { createLedger } from './ledger.js';
21
- import { createCoherenceScheduler, createEconomicGovernor, } from './coherence.js';
22
- import { createToolGateway } from './gateway.js';
23
- // ============================================================================
24
- // Simulated Runtime
25
- // ============================================================================
26
- /**
27
- * A test runtime that wires together all guidance control plane components
28
- * and records every operation as a TraceEvent.
29
- */
30
- export class SimulatedRuntime {
31
- memoryGate;
32
- proofChain;
33
- ledger;
34
- coherenceScheduler;
35
- economicGovernor;
36
- toolGateway;
37
- authority;
38
- coherenceScore;
39
- memoryStore = new Map();
40
- memoryEntries = [];
41
- traceEvents = [];
42
- coherenceHistory = [];
43
- seq = 0;
44
- memoryReadCount = 0;
45
- memoryWritesAttemptedCount = 0;
46
- memoryWritesCommittedCount = 0;
47
- memoryWritesBlockedCount = 0;
48
- memoryOps = [];
49
- constructor(config) {
50
- this.memoryGate = config.memoryGate;
51
- this.proofChain = config.proofChain;
52
- this.ledger = config.ledger;
53
- this.coherenceScheduler = config.coherenceScheduler;
54
- this.economicGovernor = config.economicGovernor;
55
- this.toolGateway = config.toolGateway ?? createToolGateway();
56
- this.authority = config.authority;
57
- this.coherenceScore = config.initialCoherenceScore ?? 0.9;
58
- if (config.initialMemory) {
59
- for (const [key, entry] of config.initialMemory) {
60
- this.memoryStore.set(`${entry.namespace}:${key}`, entry);
61
- }
62
- }
63
- }
64
- // =========================================================================
65
- // CellRuntime implementation
66
- // =========================================================================
67
- readMemory(key, namespace) {
68
- this.memoryReadCount++;
69
- const storeKey = `${namespace}:${key}`;
70
- const entry = this.memoryStore.get(storeKey);
71
- const value = entry?.value ?? null;
72
- const valueHash = createHash('sha256')
73
- .update(JSON.stringify(value))
74
- .digest('hex');
75
- this.memoryOps.push({
76
- key,
77
- namespace,
78
- operation: 'read',
79
- valueHash,
80
- timestamp: Date.now(),
81
- });
82
- this.emitTrace('memory_read', { key, namespace, found: entry !== undefined }, 'read_allowed');
83
- this.economicGovernor.recordToolCall('memory_read', 1);
84
- return value;
85
- }
86
- writeMemory(key, namespace, value, evidence) {
87
- this.memoryWritesAttemptedCount++;
88
- // Emit proposal trace
89
- this.emitTrace('memory_write_proposed', {
90
- key,
91
- namespace,
92
- valuePreview: typeof value === 'string' ? value.slice(0, 100) : typeof value,
93
- evidence: evidence ?? {},
94
- }, 'proposed');
95
- // Check coherence before allowing the write
96
- const privilegeLevel = this.resolvePrivilegeLevel(this.coherenceScore);
97
- this.emitTrace('coherence_check', { score: this.coherenceScore, privilegeLevel }, privilegeLevel);
98
- if (privilegeLevel === 'read-only' || privilegeLevel === 'suspended') {
99
- this.memoryWritesBlockedCount++;
100
- const reason = `Write blocked: privilege level is "${privilegeLevel}" (coherence: ${this.coherenceScore.toFixed(3)})`;
101
- this.emitTrace('memory_write_blocked', {
102
- key,
103
- namespace,
104
- privilegeLevel,
105
- coherenceScore: this.coherenceScore,
106
- }, 'blocked_coherence');
107
- return { allowed: false, reason };
108
- }
109
- // Evaluate through the MemoryWriteGate
110
- const decision = this.memoryGate.evaluateWrite(this.authority, key, namespace, value, this.memoryEntries);
111
- if (!decision.allowed) {
112
- this.memoryWritesBlockedCount++;
113
- this.emitTrace('memory_write_blocked', { key, namespace, gateReason: decision.reason }, 'blocked_gate');
114
- return { allowed: false, reason: decision.reason };
115
- }
116
- // Commit the write
117
- this.memoryWritesCommittedCount++;
118
- const storeKey = `${namespace}:${key}`;
119
- this.memoryStore.set(storeKey, { namespace, value });
120
- const entry = createMemoryEntry(key, namespace, value, this.authority);
121
- this.memoryEntries.push(entry);
122
- const valueHash = createHash('sha256')
123
- .update(JSON.stringify(value))
124
- .digest('hex');
125
- this.memoryOps.push({
126
- key,
127
- namespace,
128
- operation: 'write',
129
- valueHash,
130
- timestamp: Date.now(),
131
- });
132
- this.emitTrace('memory_write_committed', { key, namespace, valueHash }, 'committed');
133
- this.economicGovernor.recordToolCall('memory_write', 2);
134
- this.economicGovernor.recordStorageUsage(Buffer.byteLength(JSON.stringify(value), 'utf-8'));
135
- return { allowed: true, reason: 'Write committed' };
136
- }
137
- invokeModel(prompt) {
138
- const tokens = Math.ceil(prompt.length / 4) + 50;
139
- this.economicGovernor.recordTokenUsage(tokens);
140
- const response = `[Simulated inference for: ${prompt.slice(0, 50)}...]`;
141
- this.emitTrace('model_infer', {
142
- promptLength: prompt.length,
143
- responseLength: response.length,
144
- tokensEstimated: tokens,
145
- }, 'inference_complete');
146
- return response;
147
- }
148
- invokeTool(name, params) {
149
- const decision = this.toolGateway.evaluate(name, params);
150
- this.emitTrace('tool_invoke', {
151
- toolName: name,
152
- params,
153
- allowed: decision.allowed,
154
- gate: decision.gate,
155
- }, decision.allowed ? 'allowed' : 'blocked');
156
- if (!decision.allowed) {
157
- return { result: null, allowed: false };
158
- }
159
- const result = { status: 'ok', tool: name };
160
- this.toolGateway.recordCall(name, params, result, 10);
161
- this.economicGovernor.recordToolCall(name, 10);
162
- return { result, allowed: true };
163
- }
164
- getCoherenceScore() {
165
- return this.coherenceScore;
166
- }
167
- setCoherenceScore(score) {
168
- const previousScore = this.coherenceScore;
169
- this.coherenceScore = score;
170
- this.coherenceHistory.push(score);
171
- const previousLevel = this.resolvePrivilegeLevel(previousScore);
172
- const newLevel = this.resolvePrivilegeLevel(score);
173
- if (previousLevel !== newLevel) {
174
- this.emitTrace('privilege_change', { previousScore, newScore: score, previousLevel, newLevel }, `${previousLevel}->${newLevel}`);
175
- }
176
- }
177
- getProofChain() {
178
- return this.proofChain;
179
- }
180
- getLedger() {
181
- return this.ledger;
182
- }
183
- // =========================================================================
184
- // Public trace emission (used by cells for run_start / run_end)
185
- // =========================================================================
186
- /**
187
- * Emit a custom trace event. Exposed so agent cells can record
188
- * lifecycle events (run_start, run_end) through the same trace stream.
189
- */
190
- emitCustomTrace(type, payload, decision) {
191
- this.emitTrace(type, payload, decision);
192
- }
193
- // =========================================================================
194
- // Accessors for test inspection
195
- // =========================================================================
196
- getTraceEvents() {
197
- return [...this.traceEvents];
198
- }
199
- getCoherenceHistory() {
200
- return [...this.coherenceHistory];
201
- }
202
- getMemoryReads() {
203
- return this.memoryReadCount;
204
- }
205
- getMemoryWritesAttempted() {
206
- return this.memoryWritesAttemptedCount;
207
- }
208
- getMemoryWritesCommitted() {
209
- return this.memoryWritesCommittedCount;
210
- }
211
- getMemoryWritesBlocked() {
212
- return this.memoryWritesBlockedCount;
213
- }
214
- getMemoryOps() {
215
- return [...this.memoryOps];
216
- }
217
- getBudgetUsage() {
218
- const usage = this.economicGovernor.getUsageSummary();
219
- return {
220
- tokens: usage.tokens.used,
221
- toolCalls: usage.toolCalls.used,
222
- storageBytes: usage.storage.usedBytes,
223
- timeMs: usage.time.usedMs,
224
- costUsd: usage.cost.totalUsd,
225
- };
226
- }
227
- // =========================================================================
228
- // Private helpers
229
- // =========================================================================
230
- resolvePrivilegeLevel(score) {
231
- const thresholds = this.coherenceScheduler.getThresholds();
232
- if (score >= thresholds.healthyThreshold)
233
- return 'full';
234
- if (score >= thresholds.warningThreshold)
235
- return 'restricted';
236
- if (score >= thresholds.readOnlyThreshold)
237
- return 'read-only';
238
- return 'suspended';
239
- }
240
- emitTrace(type, payload, decision) {
241
- const usage = this.economicGovernor.getUsageSummary();
242
- const event = {
243
- seq: this.seq++,
244
- ts: Date.now(),
245
- type,
246
- payload,
247
- decision,
248
- budgetSnapshot: {
249
- tokens: usage.tokens.used,
250
- toolCalls: usage.toolCalls.used,
251
- storageBytes: usage.storage.usedBytes,
252
- },
253
- };
254
- this.traceEvents.push(event);
255
- }
256
- }
257
- // ============================================================================
258
- // Memory Clerk Cell
259
- // ============================================================================
260
- /**
261
- * The canonical test agent cell. Exercises every layer of the guidance
262
- * control plane by performing reads, inference, and gated writes with
263
- * a deliberate coherence drop mid-run.
264
- */
265
- export class MemoryClerkCell {
266
- cellId;
267
- name = 'MemoryClerk';
268
- readCount;
269
- inferenceCount;
270
- writeCount;
271
- coherenceDropAtWrite;
272
- droppedCoherenceScore;
273
- constructor(cellId, options) {
274
- this.cellId = cellId ?? `cell-${randomUUID()}`;
275
- this.readCount = options?.readCount ?? 20;
276
- this.inferenceCount = options?.inferenceCount ?? 1;
277
- this.writeCount = options?.writeCount ?? 5;
278
- this.coherenceDropAtWrite = options?.coherenceDropAtWrite ?? 3;
279
- this.droppedCoherenceScore = options?.droppedCoherenceScore ?? 0.2;
280
- }
281
- run(runtime) {
282
- const runId = `run-${randomUUID()}`;
283
- const startTime = Date.now();
284
- const sim = runtime;
285
- // ----- Step 1: run_start -----
286
- sim.emitCustomTrace('run_start', { cellId: this.cellId, runId, name: this.name }, 'started');
287
- const coherenceHistory = [runtime.getCoherenceScore()];
288
- // ----- Step 2: 20 memory reads -----
289
- for (let i = 0; i < this.readCount; i++) {
290
- runtime.readMemory(`knowledge-${i}`, 'clerk-workspace');
291
- }
292
- coherenceHistory.push(runtime.getCoherenceScore());
293
- // ----- Step 3: Model inference -----
294
- let inferenceResult = '';
295
- for (let i = 0; i < this.inferenceCount; i++) {
296
- inferenceResult = runtime.invokeModel(`Analyze the ${this.readCount} knowledge entries and determine ` +
297
- `which ${this.writeCount} insights to persist.`);
298
- }
299
- coherenceHistory.push(runtime.getCoherenceScore());
300
- // ----- Steps 4-7: Propose writes with coherence drop -----
301
- let writesCommitted = 0;
302
- let writesBlocked = 0;
303
- for (let i = 1; i <= this.writeCount; i++) {
304
- // Inject coherence drop just before the target write
305
- if (i === this.coherenceDropAtWrite) {
306
- runtime.setCoherenceScore(this.droppedCoherenceScore);
307
- }
308
- coherenceHistory.push(runtime.getCoherenceScore());
309
- const result = runtime.writeMemory(`insight-${i}`, 'clerk-workspace', {
310
- insightId: i,
311
- content: `Insight #${i} derived from model inference`,
312
- inferenceRef: inferenceResult.slice(0, 20),
313
- timestamp: Date.now(),
314
- }, { source: 'model_inference', writeIndex: i });
315
- if (result.allowed) {
316
- writesCommitted++;
317
- }
318
- else {
319
- writesBlocked++;
320
- }
321
- }
322
- // ----- Step 8: Emit proof envelope -----
323
- const event = runtime.getLedger().createEvent(`task-${this.cellId}`, 'general', 'conformance-test');
324
- event.toolsUsed = ['memory_read', 'memory_write', 'model_infer'];
325
- event.filesTouched = [];
326
- runtime.getLedger().finalizeEvent(event);
327
- const proofEnvelope = runtime.getProofChain().append(event, [], sim.getMemoryOps(), { agentId: this.cellId, sessionId: runId });
328
- const proofEnvelopeHash = proofEnvelope.contentHash;
329
- // Determine final outcome
330
- let outcome = 'completed';
331
- if (writesBlocked > 0 && writesCommitted > 0) {
332
- outcome = 'restricted';
333
- }
334
- else if (writesBlocked > 0 && writesCommitted === 0) {
335
- outcome = 'suspended';
336
- }
337
- // ----- Step 9: run_end -----
338
- sim.emitCustomTrace('run_end', {
339
- cellId: this.cellId,
340
- runId,
341
- outcome,
342
- duration: Date.now() - startTime,
343
- writesCommitted,
344
- writesBlocked,
345
- }, outcome);
346
- return {
347
- cellId: this.cellId,
348
- runId,
349
- traceEvents: sim.getTraceEvents(),
350
- memoryReads: sim.getMemoryReads(),
351
- memoryWritesAttempted: sim.getMemoryWritesAttempted(),
352
- memoryWritesCommitted: sim.getMemoryWritesCommitted(),
353
- memoryWritesBlocked: sim.getMemoryWritesBlocked(),
354
- proofEnvelopeHash,
355
- coherenceHistory,
356
- budgetUsage: sim.getBudgetUsage(),
357
- outcome,
358
- };
359
- }
360
- }
361
- // ============================================================================
362
- // Conformance Runner
363
- // ============================================================================
364
- /**
365
- * Orchestrates conformance tests by creating all control plane components,
366
- * running the MemoryClerkCell, and verifying every invariant.
367
- */
368
- export class ConformanceRunner {
369
- authority;
370
- signingKey;
371
- constructor(authority, signingKey) {
372
- if (!signingKey) {
373
- throw new Error('ConformanceRunner requires an explicit signingKey');
374
- }
375
- this.signingKey = signingKey;
376
- this.authority = authority ?? {
377
- agentId: 'memory-clerk-agent',
378
- role: 'worker',
379
- namespaces: ['clerk-workspace'],
380
- maxWritesPerMinute: 100,
381
- canDelete: false,
382
- canOverwrite: true,
383
- trustLevel: 0.8,
384
- };
385
- }
386
- /**
387
- * Run the full conformance test suite and return a structured result
388
- * with individual pass/fail checks.
389
- */
390
- runConformanceTest() {
391
- const startTime = Date.now();
392
- const checks = [];
393
- // Assemble the control plane
394
- const memoryGate = createMemoryWriteGate({
395
- authorities: [this.authority],
396
- enableContradictionTracking: false,
397
- });
398
- const proofChain = createProofChain({ signingKey: this.signingKey });
399
- const ledger = createLedger();
400
- const coherenceScheduler = createCoherenceScheduler();
401
- const economicGovernor = createEconomicGovernor({
402
- tokenLimit: 100_000,
403
- toolCallLimit: 1_000,
404
- });
405
- const runtime = new SimulatedRuntime({
406
- memoryGate,
407
- proofChain,
408
- ledger,
409
- coherenceScheduler,
410
- economicGovernor,
411
- authority: this.authority,
412
- initialCoherenceScore: 0.9,
413
- });
414
- const cell = new MemoryClerkCell();
415
- const result = cell.run(runtime);
416
- // ----- Check 1: Exactly 20 memory reads -----
417
- checks.push({
418
- name: 'memory_reads_count',
419
- passed: result.memoryReads === 20,
420
- expected: 20,
421
- actual: result.memoryReads,
422
- details: `Expected 20 memory reads, got ${result.memoryReads}`,
423
- });
424
- // ----- Check 2: 5 memory writes attempted -----
425
- checks.push({
426
- name: 'memory_writes_attempted',
427
- passed: result.memoryWritesAttempted === 5,
428
- expected: 5,
429
- actual: result.memoryWritesAttempted,
430
- details: `Expected 5 write attempts, got ${result.memoryWritesAttempted}`,
431
- });
432
- // ----- Check 3: First 2 writes committed -----
433
- checks.push({
434
- name: 'memory_writes_committed',
435
- passed: result.memoryWritesCommitted === 2,
436
- expected: 2,
437
- actual: result.memoryWritesCommitted,
438
- details: `Expected 2 committed writes (writes 1-2 before coherence drop), got ${result.memoryWritesCommitted}`,
439
- });
440
- // ----- Check 4: Last 3 writes blocked -----
441
- checks.push({
442
- name: 'memory_writes_blocked',
443
- passed: result.memoryWritesBlocked === 3,
444
- expected: 3,
445
- actual: result.memoryWritesBlocked,
446
- details: `Expected 3 blocked writes (writes 3-5 after coherence drop), got ${result.memoryWritesBlocked}`,
447
- });
448
- // ----- Check 5: Proof envelope hash is valid SHA-256 hex -----
449
- const isValidHash = typeof result.proofEnvelopeHash === 'string' &&
450
- /^[0-9a-f]{64}$/.test(result.proofEnvelopeHash);
451
- checks.push({
452
- name: 'proof_envelope_hash',
453
- passed: isValidHash,
454
- expected: 'SHA-256 hex string (64 chars)',
455
- actual: result.proofEnvelopeHash,
456
- details: `Hash length: ${result.proofEnvelopeHash.length}, valid hex: ${isValidHash}`,
457
- });
458
- // ----- Check 6: Sequential seq numbers -----
459
- let seqValid = true;
460
- let seqErrorAt = -1;
461
- for (let i = 0; i < result.traceEvents.length; i++) {
462
- if (result.traceEvents[i].seq !== i) {
463
- seqValid = false;
464
- seqErrorAt = i;
465
- break;
466
- }
467
- }
468
- checks.push({
469
- name: 'sequential_seq_numbers',
470
- passed: seqValid,
471
- expected: 'Sequential 0..N',
472
- actual: seqValid
473
- ? `0..${result.traceEvents.length - 1}`
474
- : `Gap at index ${seqErrorAt} (seq=${result.traceEvents[seqErrorAt]?.seq})`,
475
- details: seqValid
476
- ? `All ${result.traceEvents.length} events have sequential seq numbers`
477
- : `Sequence breaks at index ${seqErrorAt}`,
478
- });
479
- // ----- Check 7: Budget tracking is consistent -----
480
- const budgetValid = result.budgetUsage.tokens > 0 && result.budgetUsage.toolCalls > 0;
481
- checks.push({
482
- name: 'budget_tracking_consistent',
483
- passed: budgetValid,
484
- expected: 'Non-zero token and tool call usage',
485
- actual: result.budgetUsage,
486
- details: `tokens=${result.budgetUsage.tokens}, toolCalls=${result.budgetUsage.toolCalls}, storageBytes=${result.budgetUsage.storageBytes}`,
487
- });
488
- // ----- Check 8: Outcome is "restricted" -----
489
- checks.push({
490
- name: 'outcome_restricted',
491
- passed: result.outcome === 'restricted',
492
- expected: 'restricted',
493
- actual: result.outcome,
494
- details: 'Expected "restricted" when some writes committed and some blocked',
495
- });
496
- // ----- Check 9: Proof chain integrity -----
497
- const chainValid = proofChain.verifyChain();
498
- checks.push({
499
- name: 'proof_chain_valid',
500
- passed: chainValid,
501
- expected: true,
502
- actual: chainValid,
503
- details: 'Full proof chain HMAC and hash-chain verification',
504
- });
505
- // ----- Check 10: Trace has run_start and run_end bookends -----
506
- const hasRunStart = result.traceEvents.some((e) => e.type === 'run_start');
507
- const hasRunEnd = result.traceEvents.some((e) => e.type === 'run_end');
508
- checks.push({
509
- name: 'trace_bookends',
510
- passed: hasRunStart && hasRunEnd,
511
- expected: 'run_start and run_end present',
512
- actual: { hasRunStart, hasRunEnd },
513
- details: `run_start=${hasRunStart}, run_end=${hasRunEnd}`,
514
- });
515
- // ----- Check 11: Coherence history records the drop -----
516
- const hasCoherenceDrop = result.coherenceHistory.some((s) => s < 0.3);
517
- checks.push({
518
- name: 'coherence_drop_recorded',
519
- passed: hasCoherenceDrop,
520
- expected: 'At least one coherence score below 0.3',
521
- actual: result.coherenceHistory,
522
- details: `Min coherence: ${Math.min(...result.coherenceHistory).toFixed(3)}`,
523
- });
524
- const allPassed = checks.every((c) => c.passed);
525
- return {
526
- passed: allPassed,
527
- checks,
528
- trace: result.traceEvents,
529
- proofHash: result.proofEnvelopeHash,
530
- duration: Date.now() - startTime,
531
- };
532
- }
533
- /**
534
- * Replay a previously captured trace and verify that every decision
535
- * is reproduced identically by the control plane logic.
536
- */
537
- runReplayTest(originalTrace) {
538
- const coherenceScheduler = createCoherenceScheduler();
539
- const thresholds = coherenceScheduler.getThresholds();
540
- const divergences = [];
541
- for (const event of originalTrace) {
542
- let replayDecision;
543
- switch (event.type) {
544
- case 'memory_read':
545
- replayDecision = 'read_allowed';
546
- break;
547
- case 'memory_write_proposed':
548
- replayDecision = 'proposed';
549
- break;
550
- case 'coherence_check': {
551
- const score = event.payload.score;
552
- if (score >= thresholds.healthyThreshold) {
553
- replayDecision = 'full';
554
- }
555
- else if (score >= thresholds.warningThreshold) {
556
- replayDecision = 'restricted';
557
- }
558
- else if (score >= thresholds.readOnlyThreshold) {
559
- replayDecision = 'read-only';
560
- }
561
- else {
562
- replayDecision = 'suspended';
563
- }
564
- break;
565
- }
566
- case 'memory_write_committed':
567
- replayDecision = 'committed';
568
- break;
569
- case 'memory_write_blocked': {
570
- const hasPrivilegeLevel = event.payload.privilegeLevel !== undefined;
571
- replayDecision = hasPrivilegeLevel
572
- ? 'blocked_coherence'
573
- : 'blocked_gate';
574
- break;
575
- }
576
- case 'model_infer':
577
- replayDecision = 'inference_complete';
578
- break;
579
- case 'tool_invoke':
580
- replayDecision = event.payload.allowed
581
- ? 'allowed'
582
- : 'blocked';
583
- break;
584
- case 'privilege_change': {
585
- const prev = event.payload.previousLevel;
586
- const next = event.payload.newLevel;
587
- replayDecision = `${prev}->${next}`;
588
- break;
589
- }
590
- case 'run_start':
591
- replayDecision = 'started';
592
- break;
593
- case 'run_end':
594
- replayDecision = event.payload.outcome;
595
- break;
596
- default:
597
- replayDecision = 'unknown';
598
- }
599
- if (replayDecision !== event.decision) {
600
- divergences.push({
601
- seq: event.seq,
602
- originalDecision: event.decision,
603
- replayDecision,
604
- });
605
- }
606
- }
607
- return {
608
- identical: divergences.length === 0,
609
- totalEvents: originalTrace.length,
610
- divergences,
611
- };
612
- }
613
- }
614
- // ============================================================================
615
- // Factory Functions
616
- // ============================================================================
617
- /**
618
- * Create a MemoryClerkCell with an optional cellId override.
619
- */
620
- export function createMemoryClerkCell(cellId) {
621
- return new MemoryClerkCell(cellId);
622
- }
623
- /**
624
- * Create a ConformanceRunner with optional authority override.
625
- */
626
- export function createConformanceRunner(authority, signingKey) {
627
- return new ConformanceRunner(authority, signingKey ?? 'conformance-test-key');
628
- }
629
- //# sourceMappingURL=conformance-kit.js.map