monomind 1.11.13 → 1.12.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 (389) hide show
  1. package/.claude/agents/generated/channel-intelligence-director.md +87 -0
  2. package/.claude/agents/generated/chief-growth-officer.md +88 -0
  3. package/.claude/agents/generated/content-seo-strategist.md +90 -0
  4. package/.claude/agents/generated/developer-community-strategist.md +91 -0
  5. package/.claude/agents/generated/outreach-partnership-strategist.md +90 -0
  6. package/.claude/agents/generated/social-media-strategist.md +91 -0
  7. package/.claude/agents/generated/video-visual-strategist.md +90 -0
  8. package/.claude/commands/mastermind/idea.md +1 -1
  9. package/.claude/helpers/auto-memory-hook.mjs +13 -4
  10. package/.claude/helpers/control-start.cjs +5 -0
  11. package/.claude/helpers/event-logger.cjs +114 -0
  12. package/.claude/helpers/handlers/adr-draft-handler.cjs +19 -5
  13. package/.claude/helpers/handlers/agent-start-handler.cjs +13 -4
  14. package/.claude/helpers/handlers/compact-handler.cjs +2 -0
  15. package/.claude/helpers/handlers/edit-handler.cjs +1 -1
  16. package/.claude/helpers/handlers/gates-handler.cjs +3 -0
  17. package/.claude/helpers/handlers/graph-status-handler.cjs +14 -8
  18. package/.claude/helpers/handlers/loops-status-handler.cjs +5 -2
  19. package/.claude/helpers/handlers/route-handler.cjs +13 -6
  20. package/.claude/helpers/handlers/session-handler.cjs +11 -4
  21. package/.claude/helpers/handlers/session-restore-handler.cjs +21 -11
  22. package/.claude/helpers/handlers/task-handler.cjs +13 -5
  23. package/.claude/helpers/intelligence.cjs +7 -2
  24. package/.claude/helpers/loop-tracker.cjs +15 -3
  25. package/.claude/helpers/memory.cjs +6 -1
  26. package/.claude/helpers/router.cjs +5 -2
  27. package/.claude/helpers/session.cjs +2 -0
  28. package/.claude/helpers/statusline.cjs +10 -2
  29. package/.claude/helpers/utils/micro-agents.cjs +20 -4
  30. package/.claude/scheduled_tasks.lock +1 -1
  31. package/.claude/settings.json +92 -1
  32. package/.claude/skills/mastermind/_protocol.md +23 -13
  33. package/.claude/skills/mastermind/architect.md +6 -9
  34. package/.claude/skills/mastermind/build.md +3 -3
  35. package/.claude/skills/mastermind/content.md +3 -3
  36. package/.claude/skills/mastermind/createorg.md +2 -2
  37. package/.claude/skills/mastermind/finance.md +3 -3
  38. package/.claude/skills/mastermind/idea.md +5 -3
  39. package/.claude/skills/mastermind/marketing.md +3 -3
  40. package/.claude/skills/mastermind/monitor.md +2 -2
  41. package/.claude/skills/mastermind/release.md +3 -3
  42. package/.claude/skills/mastermind/research.md +3 -3
  43. package/.claude/skills/mastermind/review.md +3 -3
  44. package/.claude/skills/mastermind/runorg.md +153 -86
  45. package/.claude/skills/mastermind/sales.md +3 -3
  46. package/README.md +286 -129
  47. package/package.json +19 -2
  48. package/packages/@monomind/cli/README.md +286 -129
  49. package/packages/@monomind/cli/bundled-graph/dist/src/build.js +73 -0
  50. package/packages/@monomind/cli/bundled-graph/dist/src/cluster.js +120 -0
  51. package/packages/@monomind/cli/bundled-graph/package.json +57 -0
  52. package/packages/@monomind/cli/dist/src/agents/halt-signal.d.ts +25 -0
  53. package/packages/@monomind/cli/dist/src/agents/halt-signal.js +76 -0
  54. package/packages/@monomind/cli/dist/src/agents/index.d.ts +18 -0
  55. package/packages/@monomind/cli/dist/src/agents/index.js +13 -0
  56. package/packages/@monomind/cli/dist/src/agents/managed-agent.d.ts +41 -0
  57. package/packages/@monomind/cli/dist/src/agents/managed-agent.js +69 -0
  58. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.d.ts +23 -0
  59. package/packages/@monomind/cli/dist/src/agents/prompt-experiment.js +49 -0
  60. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.d.ts +22 -0
  61. package/packages/@monomind/cli/dist/src/agents/prompt-version-manager.js +80 -0
  62. package/packages/@monomind/cli/dist/src/agents/registry-builder.js +2 -0
  63. package/packages/@monomind/cli/dist/src/agents/registry-query.d.ts +71 -0
  64. package/packages/@monomind/cli/dist/src/agents/registry-query.js +125 -0
  65. package/packages/@monomind/cli/dist/src/agents/score-decay.d.ts +19 -0
  66. package/packages/@monomind/cli/dist/src/agents/score-decay.js +22 -0
  67. package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.d.ts +13 -0
  68. package/packages/@monomind/cli/dist/src/agents/shared-instructions-loader.js +40 -0
  69. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.d.ts +54 -0
  70. package/packages/@monomind/cli/dist/src/agents/specialization-scorer.js +212 -0
  71. package/packages/@monomind/cli/dist/src/agents/termination-watcher.d.ts +30 -0
  72. package/packages/@monomind/cli/dist/src/agents/termination-watcher.js +84 -0
  73. package/packages/@monomind/cli/dist/src/agents/trigger-index.d.ts +20 -0
  74. package/packages/@monomind/cli/dist/src/agents/trigger-index.js +38 -0
  75. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.d.ts +64 -0
  76. package/packages/@monomind/cli/dist/src/agents/trigger-scanner.js +308 -0
  77. package/packages/@monomind/cli/dist/src/agents/version-diff.d.ts +18 -0
  78. package/packages/@monomind/cli/dist/src/agents/version-diff.js +64 -0
  79. package/packages/@monomind/cli/dist/src/agents/version-store.d.ts +60 -0
  80. package/packages/@monomind/cli/dist/src/agents/version-store.js +235 -0
  81. package/packages/@monomind/cli/dist/src/autopilot-state.js +10 -5
  82. package/packages/@monomind/cli/dist/src/benchmarks/benchmark-runner.js +13 -0
  83. package/packages/@monomind/cli/dist/src/benchmarks/metric-evaluators.js +20 -9
  84. package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.d.ts +45 -0
  85. package/packages/@monomind/cli/dist/src/benchmarks/pretrain/index.js +404 -0
  86. package/packages/@monomind/cli/dist/src/browser/actions.js +10 -3
  87. package/packages/@monomind/cli/dist/src/browser/browser.js +12 -2
  88. package/packages/@monomind/cli/dist/src/browser/cdp.js +21 -3
  89. package/packages/@monomind/cli/dist/src/browser/har.js +27 -5
  90. package/packages/@monomind/cli/dist/src/commands/agent-wasm.d.ts +14 -0
  91. package/packages/@monomind/cli/dist/src/commands/agent-wasm.js +333 -0
  92. package/packages/@monomind/cli/dist/src/commands/agent.js +11 -8
  93. package/packages/@monomind/cli/dist/src/commands/analyze.js +36 -21
  94. package/packages/@monomind/cli/dist/src/commands/autopilot.js +12 -4
  95. package/packages/@monomind/cli/dist/src/commands/benchmark.js +51 -8
  96. package/packages/@monomind/cli/dist/src/commands/browse.js +5 -2
  97. package/packages/@monomind/cli/dist/src/commands/claims.js +29 -11
  98. package/packages/@monomind/cli/dist/src/commands/cleanup.js +25 -5
  99. package/packages/@monomind/cli/dist/src/commands/config.js +15 -7
  100. package/packages/@monomind/cli/dist/src/commands/daemon.js +6 -0
  101. package/packages/@monomind/cli/dist/src/commands/deployment.js +34 -19
  102. package/packages/@monomind/cli/dist/src/commands/doctor.js +151 -20
  103. package/packages/@monomind/cli/dist/src/commands/guidance.js +15 -2
  104. package/packages/@monomind/cli/dist/src/commands/hive-mind.js +37 -14
  105. package/packages/@monomind/cli/dist/src/commands/hooks.js +42 -25
  106. package/packages/@monomind/cli/dist/src/commands/init.js +9 -4
  107. package/packages/@monomind/cli/dist/src/commands/issues.js +29 -26
  108. package/packages/@monomind/cli/dist/src/commands/mcp.js +11 -5
  109. package/packages/@monomind/cli/dist/src/commands/memory.js +10 -0
  110. package/packages/@monomind/cli/dist/src/commands/migrate.js +5 -5
  111. package/packages/@monomind/cli/dist/src/commands/monograph.js +18 -5
  112. package/packages/@monomind/cli/dist/src/commands/monovector/backup.js +8 -2
  113. package/packages/@monomind/cli/dist/src/commands/monovector/benchmark.js +20 -7
  114. package/packages/@monomind/cli/dist/src/commands/monovector/import.js +15 -0
  115. package/packages/@monomind/cli/dist/src/commands/monovector/migrate.js +4 -1
  116. package/packages/@monomind/cli/dist/src/commands/monovector/optimize.js +11 -0
  117. package/packages/@monomind/cli/dist/src/commands/monovector/setup.js +11 -1
  118. package/packages/@monomind/cli/dist/src/commands/neural.js +1 -1
  119. package/packages/@monomind/cli/dist/src/commands/performance.js +20 -7
  120. package/packages/@monomind/cli/dist/src/commands/platforms.js +90 -8
  121. package/packages/@monomind/cli/dist/src/commands/plugins.js +12 -5
  122. package/packages/@monomind/cli/dist/src/commands/process.js +33 -10
  123. package/packages/@monomind/cli/dist/src/commands/progress.js +5 -3
  124. package/packages/@monomind/cli/dist/src/commands/providers.js +5 -5
  125. package/packages/@monomind/cli/dist/src/commands/replay.js +8 -2
  126. package/packages/@monomind/cli/dist/src/commands/route.js +27 -7
  127. package/packages/@monomind/cli/dist/src/commands/security.js +4 -0
  128. package/packages/@monomind/cli/dist/src/commands/session.js +12 -1
  129. package/packages/@monomind/cli/dist/src/commands/start.js +11 -4
  130. package/packages/@monomind/cli/dist/src/commands/status.js +7 -4
  131. package/packages/@monomind/cli/dist/src/commands/swarm.js +27 -13
  132. package/packages/@monomind/cli/dist/src/commands/task.js +26 -11
  133. package/packages/@monomind/cli/dist/src/commands/tokens.js +7 -2
  134. package/packages/@monomind/cli/dist/src/commands/transfer-store.js +36 -22
  135. package/packages/@monomind/cli/dist/src/commands/ui.js +68 -0
  136. package/packages/@monomind/cli/dist/src/commands/update.js +15 -3
  137. package/packages/@monomind/cli/dist/src/commands/workflow.js +39 -6
  138. package/packages/@monomind/cli/dist/src/consensus/audit-writer.js +18 -7
  139. package/packages/@monomind/cli/dist/src/consensus/index.d.ts +7 -0
  140. package/packages/@monomind/cli/dist/src/consensus/index.js +6 -0
  141. package/packages/@monomind/cli/dist/src/consensus/vote-signer.js +25 -8
  142. package/packages/@monomind/cli/dist/src/context/context-provider.d.ts +44 -0
  143. package/packages/@monomind/cli/dist/src/context/context-provider.js +25 -0
  144. package/packages/@monomind/cli/dist/src/context/git-state-provider.d.ts +12 -0
  145. package/packages/@monomind/cli/dist/src/context/git-state-provider.js +34 -0
  146. package/packages/@monomind/cli/dist/src/context/index.d.ts +12 -0
  147. package/packages/@monomind/cli/dist/src/context/index.js +12 -0
  148. package/packages/@monomind/cli/dist/src/context/project-conventions-provider.d.ts +15 -0
  149. package/packages/@monomind/cli/dist/src/context/project-conventions-provider.js +19 -0
  150. package/packages/@monomind/cli/dist/src/context/prompt-assembler.d.ts +26 -0
  151. package/packages/@monomind/cli/dist/src/context/prompt-assembler.js +93 -0
  152. package/packages/@monomind/cli/dist/src/context/task-history-provider.d.ts +24 -0
  153. package/packages/@monomind/cli/dist/src/context/task-history-provider.js +32 -0
  154. package/packages/@monomind/cli/dist/src/context/user-preferences-provider.d.ts +14 -0
  155. package/packages/@monomind/cli/dist/src/context/user-preferences-provider.js +27 -0
  156. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.d.ts +31 -0
  157. package/packages/@monomind/cli/dist/src/dlq/dlq-reader.js +81 -0
  158. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.d.ts +24 -0
  159. package/packages/@monomind/cli/dist/src/dlq/dlq-writer.js +65 -0
  160. package/packages/@monomind/cli/dist/src/dlq/index.d.ts +10 -0
  161. package/packages/@monomind/cli/dist/src/dlq/index.js +7 -0
  162. package/packages/@monomind/cli/dist/src/eval/dataset-manager.d.ts +33 -0
  163. package/packages/@monomind/cli/dist/src/eval/dataset-manager.js +107 -0
  164. package/packages/@monomind/cli/dist/src/eval/dataset-runner.d.ts +23 -0
  165. package/packages/@monomind/cli/dist/src/eval/dataset-runner.js +59 -0
  166. package/packages/@monomind/cli/dist/src/eval/index.d.ts +10 -0
  167. package/packages/@monomind/cli/dist/src/eval/index.js +7 -0
  168. package/packages/@monomind/cli/dist/src/eval/trace-collector.d.ts +40 -0
  169. package/packages/@monomind/cli/dist/src/eval/trace-collector.js +102 -0
  170. package/packages/@monomind/cli/dist/src/index.js +7 -3
  171. package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
  172. package/packages/@monomind/cli/dist/src/infrastructure/in-memory-repositories.js +264 -0
  173. package/packages/@monomind/cli/dist/src/init/executor.js +14 -11
  174. package/packages/@monomind/cli/dist/src/init/shared-instructions-generator.js +20 -4
  175. package/packages/@monomind/cli/dist/src/init/statusline-generator.js +33 -12
  176. package/packages/@monomind/cli/dist/src/interactive/interrupt.d.ts +22 -0
  177. package/packages/@monomind/cli/dist/src/interactive/interrupt.js +71 -0
  178. package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.d.ts +25 -0
  179. package/packages/@monomind/cli/dist/src/mcp/deprecation-injector.js +48 -0
  180. package/packages/@monomind/cli/dist/src/mcp/tool-registry.d.ts +61 -0
  181. package/packages/@monomind/cli/dist/src/mcp/tool-registry.js +246 -0
  182. package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.js +98 -13
  183. package/packages/@monomind/cli/dist/src/mcp-tools/agent-tools.js +16 -3
  184. package/packages/@monomind/cli/dist/src/mcp-tools/analyze-tools.js +80 -17
  185. package/packages/@monomind/cli/dist/src/mcp-tools/browser-tools.js +84 -22
  186. package/packages/@monomind/cli/dist/src/mcp-tools/claims-tools.js +35 -7
  187. package/packages/@monomind/cli/dist/src/mcp-tools/config-tools.js +82 -17
  188. package/packages/@monomind/cli/dist/src/mcp-tools/coordination-tools.js +37 -4
  189. package/packages/@monomind/cli/dist/src/mcp-tools/daa-tools.js +49 -7
  190. package/packages/@monomind/cli/dist/src/mcp-tools/embeddings-tools.js +45 -18
  191. package/packages/@monomind/cli/dist/src/mcp-tools/github-tools.js +75 -25
  192. package/packages/@monomind/cli/dist/src/mcp-tools/guidance-tools.js +32 -10
  193. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +91 -20
  194. package/packages/@monomind/cli/dist/src/mcp-tools/hooks-tools.js +188 -29
  195. package/packages/@monomind/cli/dist/src/mcp-tools/memory-tools.js +25 -7
  196. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +11 -2
  197. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +148 -26
  198. package/packages/@monomind/cli/dist/src/mcp-tools/neural-tools.js +44 -9
  199. package/packages/@monomind/cli/dist/src/mcp-tools/performance-tools.js +45 -10
  200. package/packages/@monomind/cli/dist/src/mcp-tools/progress-tools.js +7 -4
  201. package/packages/@monomind/cli/dist/src/mcp-tools/request-tracker.js +15 -1
  202. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +61 -9
  203. package/packages/@monomind/cli/dist/src/mcp-tools/session-tools.js +45 -14
  204. package/packages/@monomind/cli/dist/src/mcp-tools/swarm-tools.js +15 -3
  205. package/packages/@monomind/cli/dist/src/mcp-tools/system-tools.js +14 -7
  206. package/packages/@monomind/cli/dist/src/mcp-tools/task-tools.js +52 -10
  207. package/packages/@monomind/cli/dist/src/mcp-tools/terminal-tools.js +40 -6
  208. package/packages/@monomind/cli/dist/src/mcp-tools/transfer-tools.js +37 -4
  209. package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
  210. package/packages/@monomind/cli/dist/src/mcp-tools/wasm-agent-tools.js +230 -0
  211. package/packages/@monomind/cli/dist/src/mcp-tools/workflow-tools.js +29 -6
  212. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.js +26 -10
  213. package/packages/@monomind/cli/dist/src/memory/intelligence.js +80 -19
  214. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +21 -2
  215. package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +67 -3
  216. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.js +14 -4
  217. package/packages/@monomind/cli/dist/src/model/complexity-scorer.d.ts +21 -0
  218. package/packages/@monomind/cli/dist/src/model/complexity-scorer.js +106 -0
  219. package/packages/@monomind/cli/dist/src/model/index.d.ts +4 -0
  220. package/packages/@monomind/cli/dist/src/model/index.js +4 -0
  221. package/packages/@monomind/cli/dist/src/model/model-settings.d.ts +22 -0
  222. package/packages/@monomind/cli/dist/src/model/model-settings.js +33 -0
  223. package/packages/@monomind/cli/dist/src/model/model-tier-resolver.d.ts +24 -0
  224. package/packages/@monomind/cli/dist/src/model/model-tier-resolver.js +65 -0
  225. package/packages/@monomind/cli/dist/src/monovector/capabilities.d.ts +34 -0
  226. package/packages/@monomind/cli/dist/src/monovector/capabilities.js +37 -0
  227. package/packages/@monomind/cli/dist/src/monovector/command-outcomes.js +43 -7
  228. package/packages/@monomind/cli/dist/src/monovector/coverage-router.js +8 -4
  229. package/packages/@monomind/cli/dist/src/monovector/coverage-tools.js +6 -3
  230. package/packages/@monomind/cli/dist/src/monovector/diff-classifier.js +13 -0
  231. package/packages/@monomind/cli/dist/src/monovector/route-outcomes.d.ts +2 -1
  232. package/packages/@monomind/cli/dist/src/monovector/route-outcomes.js +46 -4
  233. package/packages/@monomind/cli/dist/src/observability/replay-reader.d.ts +1 -1
  234. package/packages/@monomind/cli/dist/src/orchestration/index.d.ts +7 -0
  235. package/packages/@monomind/cli/dist/src/orchestration/index.js +6 -0
  236. package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.d.ts +11 -0
  237. package/packages/@monomind/cli/dist/src/orchestration/mode-dispatcher.js +31 -0
  238. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.d.ts +68 -0
  239. package/packages/@monomind/cli/dist/src/orchestration/routing-modes.js +180 -0
  240. package/packages/@monomind/cli/dist/src/plugins/manager.js +8 -3
  241. package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +46 -2
  242. package/packages/@monomind/cli/dist/src/plugins/store/search.js +5 -4
  243. package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
  244. package/packages/@monomind/cli/dist/src/plugins/tests/demo-plugin-store.js +126 -0
  245. package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.d.ts +12 -0
  246. package/packages/@monomind/cli/dist/src/plugins/tests/standalone-test.js +188 -0
  247. package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
  248. package/packages/@monomind/cli/dist/src/plugins/tests/test-plugin-store.js +206 -0
  249. package/packages/@monomind/cli/dist/src/production/circuit-breaker.js +17 -3
  250. package/packages/@monomind/cli/dist/src/production/error-handler.js +3 -0
  251. package/packages/@monomind/cli/dist/src/production/monitoring.js +20 -3
  252. package/packages/@monomind/cli/dist/src/production/rate-limiter.js +13 -4
  253. package/packages/@monomind/cli/dist/src/production/retry.js +17 -9
  254. package/packages/@monomind/cli/dist/src/routing/embed-worker.js +6 -2
  255. package/packages/@monomind/cli/dist/src/routing/embedder.js +0 -0
  256. package/packages/@monomind/cli/dist/src/routing/llm-caller.js +13 -2
  257. package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +18 -3
  258. package/packages/@monomind/cli/dist/src/runtime/headless.d.ts +60 -0
  259. package/packages/@monomind/cli/dist/src/runtime/headless.js +284 -0
  260. package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  261. package/packages/@monomind/cli/dist/src/services/agentic-flow-bridge.js +95 -0
  262. package/packages/@monomind/cli/dist/src/services/claim-service.d.ts +1 -0
  263. package/packages/@monomind/cli/dist/src/services/claim-service.js +8 -0
  264. package/packages/@monomind/cli/dist/src/services/config-file-manager.js +14 -2
  265. package/packages/@monomind/cli/dist/src/services/container-worker-pool.d.ts +197 -0
  266. package/packages/@monomind/cli/dist/src/services/container-worker-pool.js +623 -0
  267. package/packages/@monomind/cli/dist/src/services/headless-worker-executor.js +18 -2
  268. package/packages/@monomind/cli/dist/src/services/index.d.ts +13 -0
  269. package/packages/@monomind/cli/dist/src/services/index.js +11 -0
  270. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +53 -12
  271. package/packages/@monomind/cli/dist/src/services/worker-queue.d.ts +201 -0
  272. package/packages/@monomind/cli/dist/src/services/worker-queue.js +594 -0
  273. package/packages/@monomind/cli/dist/src/swarm/communication-graph.d.ts +25 -0
  274. package/packages/@monomind/cli/dist/src/swarm/communication-graph.js +77 -0
  275. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.d.ts +31 -0
  276. package/packages/@monomind/cli/dist/src/swarm/flow-enforcer.js +61 -0
  277. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.d.ts +19 -0
  278. package/packages/@monomind/cli/dist/src/swarm/flow-visualizer.js +68 -0
  279. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.d.ts +0 -3
  280. package/packages/@monomind/cli/dist/src/transfer/anonymization/index.js +16 -1
  281. package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.d.ts +13 -0
  282. package/packages/@monomind/cli/dist/src/transfer/deploy-seraphine.js +205 -0
  283. package/packages/@monomind/cli/dist/src/transfer/export.js +8 -0
  284. package/packages/@monomind/cli/dist/src/transfer/ipfs/upload.js +33 -3
  285. package/packages/@monomind/cli/dist/src/transfer/serialization/cfp.js +9 -3
  286. package/packages/@monomind/cli/dist/src/transfer/storage/gcs.js +37 -3
  287. package/packages/@monomind/cli/dist/src/transfer/store/discovery.js +45 -3
  288. package/packages/@monomind/cli/dist/src/transfer/store/download.js +5 -0
  289. package/packages/@monomind/cli/dist/src/transfer/store/publish.js +13 -1
  290. package/packages/@monomind/cli/dist/src/transfer/store/registry.d.ts +8 -0
  291. package/packages/@monomind/cli/dist/src/transfer/store/registry.js +30 -5
  292. package/packages/@monomind/cli/dist/src/transfer/store/search.js +20 -5
  293. package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
  294. package/packages/@monomind/cli/dist/src/transfer/store/tests/standalone-test.js +190 -0
  295. package/packages/@monomind/cli/dist/src/transfer/test-seraphine.d.ts +6 -0
  296. package/packages/@monomind/cli/dist/src/transfer/test-seraphine.js +105 -0
  297. package/packages/@monomind/cli/dist/src/transfer/tests/test-store.d.ts +7 -0
  298. package/packages/@monomind/cli/dist/src/transfer/tests/test-store.js +214 -0
  299. package/packages/@monomind/cli/dist/src/update/checker.js +59 -7
  300. package/packages/@monomind/cli/dist/src/update/executor.js +50 -3
  301. package/packages/@monomind/cli/dist/src/update/index.js +18 -1
  302. package/packages/@monomind/cli/dist/src/update/rate-limiter.d.ts +6 -0
  303. package/packages/@monomind/cli/dist/src/update/rate-limiter.js +79 -7
  304. package/packages/@monomind/cli/dist/src/update/validator.js +52 -1
  305. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.d.ts +10 -0
  306. package/packages/@monomind/cli/dist/src/workflow/condition-evaluator.js +82 -0
  307. package/packages/@monomind/cli/dist/src/workflow/context-resolver.d.ts +12 -0
  308. package/packages/@monomind/cli/dist/src/workflow/context-resolver.js +23 -0
  309. package/packages/@monomind/cli/dist/src/workflow/dag-builder.d.ts +17 -0
  310. package/packages/@monomind/cli/dist/src/workflow/dag-builder.js +129 -0
  311. package/packages/@monomind/cli/dist/src/workflow/dag-executor.d.ts +9 -0
  312. package/packages/@monomind/cli/dist/src/workflow/dag-executor.js +116 -0
  313. package/packages/@monomind/cli/dist/src/workflow/dag-types.d.ts +41 -0
  314. package/packages/@monomind/cli/dist/src/workflow/dag-types.js +8 -0
  315. package/packages/@monomind/cli/dist/src/workflow/dsl-parser.d.ts +12 -0
  316. package/packages/@monomind/cli/dist/src/workflow/dsl-parser.js +20 -0
  317. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.d.ts +165 -0
  318. package/packages/@monomind/cli/dist/src/workflow/dsl-schema.js +82 -0
  319. package/packages/@monomind/cli/dist/src/workflow/index.d.ts +13 -0
  320. package/packages/@monomind/cli/dist/src/workflow/index.js +11 -0
  321. package/packages/@monomind/cli/dist/src/workflow/template-engine.d.ts +11 -0
  322. package/packages/@monomind/cli/dist/src/workflow/template-engine.js +40 -0
  323. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.d.ts +29 -0
  324. package/packages/@monomind/cli/dist/src/workflow/workflow-executor.js +227 -0
  325. package/packages/@monomind/cli/package.json +9 -10
  326. package/packages/@monomind/guidance/dist/adversarial.d.ts +284 -0
  327. package/packages/@monomind/guidance/dist/adversarial.js +572 -0
  328. package/packages/@monomind/guidance/dist/analyzer.d.ts +530 -0
  329. package/packages/@monomind/guidance/dist/analyzer.js +2518 -0
  330. package/packages/@monomind/guidance/dist/artifacts.d.ts +283 -0
  331. package/packages/@monomind/guidance/dist/artifacts.js +356 -0
  332. package/packages/@monomind/guidance/dist/authority.d.ts +290 -0
  333. package/packages/@monomind/guidance/dist/authority.js +558 -0
  334. package/packages/@monomind/guidance/dist/capabilities.d.ts +209 -0
  335. package/packages/@monomind/guidance/dist/capabilities.js +485 -0
  336. package/packages/@monomind/guidance/dist/coherence.d.ts +233 -0
  337. package/packages/@monomind/guidance/dist/coherence.js +372 -0
  338. package/packages/@monomind/guidance/dist/compiler.d.ts +87 -0
  339. package/packages/@monomind/guidance/dist/compiler.js +419 -0
  340. package/packages/@monomind/guidance/dist/conformance-kit.d.ts +225 -0
  341. package/packages/@monomind/guidance/dist/conformance-kit.js +629 -0
  342. package/packages/@monomind/guidance/dist/continue-gate.d.ts +214 -0
  343. package/packages/@monomind/guidance/dist/continue-gate.js +353 -0
  344. package/packages/@monomind/guidance/dist/crypto-utils.d.ts +17 -0
  345. package/packages/@monomind/guidance/dist/crypto-utils.js +24 -0
  346. package/packages/@monomind/guidance/dist/evolution.d.ts +282 -0
  347. package/packages/@monomind/guidance/dist/evolution.js +500 -0
  348. package/packages/@monomind/guidance/dist/gates.d.ts +79 -0
  349. package/packages/@monomind/guidance/dist/gates.js +302 -0
  350. package/packages/@monomind/guidance/dist/gateway.d.ts +206 -0
  351. package/packages/@monomind/guidance/dist/gateway.js +452 -0
  352. package/packages/@monomind/guidance/dist/generators.d.ts +153 -0
  353. package/packages/@monomind/guidance/dist/generators.js +682 -0
  354. package/packages/@monomind/guidance/dist/headless.d.ts +177 -0
  355. package/packages/@monomind/guidance/dist/headless.js +342 -0
  356. package/packages/@monomind/guidance/dist/hooks.d.ts +109 -0
  357. package/packages/@monomind/guidance/dist/hooks.js +347 -0
  358. package/packages/@monomind/guidance/dist/index.d.ts +205 -0
  359. package/packages/@monomind/guidance/dist/index.js +321 -0
  360. package/packages/@monomind/guidance/dist/ledger.d.ts +162 -0
  361. package/packages/@monomind/guidance/dist/ledger.js +375 -0
  362. package/packages/@monomind/guidance/dist/manifest-validator.d.ts +289 -0
  363. package/packages/@monomind/guidance/dist/manifest-validator.js +838 -0
  364. package/packages/@monomind/guidance/dist/memory-gate.d.ts +222 -0
  365. package/packages/@monomind/guidance/dist/memory-gate.js +382 -0
  366. package/packages/@monomind/guidance/dist/meta-governance.d.ts +265 -0
  367. package/packages/@monomind/guidance/dist/meta-governance.js +348 -0
  368. package/packages/@monomind/guidance/dist/optimizer.d.ts +104 -0
  369. package/packages/@monomind/guidance/dist/optimizer.js +329 -0
  370. package/packages/@monomind/guidance/dist/persistence.d.ts +189 -0
  371. package/packages/@monomind/guidance/dist/persistence.js +464 -0
  372. package/packages/@monomind/guidance/dist/proof.d.ts +185 -0
  373. package/packages/@monomind/guidance/dist/proof.js +238 -0
  374. package/packages/@monomind/guidance/dist/retriever.d.ts +116 -0
  375. package/packages/@monomind/guidance/dist/retriever.js +394 -0
  376. package/packages/@monomind/guidance/dist/ruvbot-integration.d.ts +370 -0
  377. package/packages/@monomind/guidance/dist/ruvbot-integration.js +738 -0
  378. package/packages/@monomind/guidance/dist/temporal.d.ts +426 -0
  379. package/packages/@monomind/guidance/dist/temporal.js +658 -0
  380. package/packages/@monomind/guidance/dist/trust.d.ts +283 -0
  381. package/packages/@monomind/guidance/dist/trust.js +473 -0
  382. package/packages/@monomind/guidance/dist/truth-anchors.d.ts +276 -0
  383. package/packages/@monomind/guidance/dist/truth-anchors.js +488 -0
  384. package/packages/@monomind/guidance/dist/types.d.ts +378 -0
  385. package/packages/@monomind/guidance/dist/types.js +10 -0
  386. package/packages/@monomind/guidance/dist/uncertainty.d.ts +372 -0
  387. package/packages/@monomind/guidance/dist/uncertainty.js +619 -0
  388. package/packages/@monomind/guidance/dist/wasm-kernel.d.ts +48 -0
  389. package/packages/@monomind/guidance/dist/wasm-kernel.js +158 -0
@@ -0,0 +1,629 @@
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 @monomind/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