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
@@ -3,6 +3,46 @@
3
3
  * Secure discovery mechanism for finding patterns in decentralized environment
4
4
  */
5
5
  import * as crypto from 'crypto';
6
+ /** Maximum bytes read from any IPFS gateway response to prevent OOM */
7
+ const MAX_DISCOVERY_RESPONSE_BYTES = 10 * 1024 * 1024; // 10 MB
8
+ /**
9
+ * Read a fetch response body with a hard byte cap.
10
+ * Aborts the stream early if the limit is exceeded.
11
+ */
12
+ async function readBodyCapped(response, maxBytes = MAX_DISCOVERY_RESPONSE_BYTES) {
13
+ const lengthHeader = response.headers.get('content-length');
14
+ if (lengthHeader) {
15
+ const declared = parseInt(lengthHeader, 10);
16
+ if (Number.isFinite(declared) && declared > maxBytes) {
17
+ throw new Error(`Response too large: ${declared} bytes (max ${maxBytes})`);
18
+ }
19
+ }
20
+ const reader = response.body?.getReader();
21
+ if (!reader)
22
+ return '';
23
+ const chunks = [];
24
+ let total = 0;
25
+ while (true) {
26
+ const { done, value } = await reader.read();
27
+ if (done)
28
+ break;
29
+ if (value) {
30
+ total += value.byteLength;
31
+ if (total > maxBytes) {
32
+ await reader.cancel();
33
+ throw new Error(`Response too large: exceeded ${maxBytes} bytes`);
34
+ }
35
+ chunks.push(value);
36
+ }
37
+ }
38
+ const combined = new Uint8Array(total);
39
+ let offset = 0;
40
+ for (const c of chunks) {
41
+ combined.set(c, offset);
42
+ offset += c.byteLength;
43
+ }
44
+ return new TextDecoder('utf-8').decode(combined);
45
+ }
6
46
  import { DEFAULT_STORE_CONFIG, } from './registry.js';
7
47
  /**
8
48
  * Pattern Store Discovery Service
@@ -136,7 +176,8 @@ export class PatternDiscovery {
136
176
  signal: AbortSignal.timeout(10000),
137
177
  });
138
178
  if (response.ok) {
139
- const data = await response.json();
179
+ const text = await readBodyCapped(response, 64 * 1024); // IPNS resolve is tiny
180
+ const data = JSON.parse(text);
140
181
  const cid = data.Path?.replace('/ipfs/', '') || '';
141
182
  if (cid) {
142
183
  const resolution = {
@@ -226,7 +267,7 @@ export class PatternDiscovery {
226
267
  signal: AbortSignal.timeout(30000),
227
268
  });
228
269
  if (response.ok) {
229
- const text = await response.text();
270
+ const text = await readBodyCapped(response);
230
271
  try {
231
272
  const registry = JSON.parse(text);
232
273
  console.log(`[Discovery] Fetched registry with ${registry.patterns?.length || 0} patterns`);
@@ -257,7 +298,8 @@ export class PatternDiscovery {
257
298
  signal: AbortSignal.timeout(15000),
258
299
  });
259
300
  if (response.ok) {
260
- const registry = await response.json();
301
+ const altText = await readBodyCapped(response);
302
+ const registry = JSON.parse(altText);
261
303
  console.log(`[Discovery] Fetched registry from ${altGateway}`);
262
304
  return registry;
263
305
  }
@@ -11,6 +11,7 @@ import { DEFAULT_STORE_CONFIG } from './registry.js';
11
11
  * Handles secure download and verification of patterns
12
12
  */
13
13
  const MAX_DOWNLOAD_CACHE = 500;
14
+ const MAX_PATTERN_FILE_BYTES = 50 * 1024 * 1024; // 50 MB — matches client.ts MAX_IPFS_RESPONSE_BYTES
14
15
  const ALLOWED_GATEWAYS = new Set([
15
16
  'https://w3s.link',
16
17
  'https://dweb.link',
@@ -362,6 +363,10 @@ export class PatternDownloader {
362
363
  async importPattern(filePath, strategy = 'merge') {
363
364
  console.log(`[Download] Importing pattern with strategy: ${strategy}`);
364
365
  try {
366
+ if (fs.statSync(filePath).size > MAX_PATTERN_FILE_BYTES) {
367
+ console.error(`[Download] Pattern file exceeds size limit (${MAX_PATTERN_FILE_BYTES} bytes)`);
368
+ return false;
369
+ }
365
370
  const content = fs.readFileSync(filePath, 'utf-8');
366
371
  const cfp = JSON.parse(content);
367
372
  // In production: Import to local pattern store
@@ -137,13 +137,17 @@ export class PatternPublisher {
137
137
  }
138
138
  catch (error) {
139
139
  console.error(`[Publish] Failed:`, error);
140
+ // Sanitize error message: strip control chars and cap length to prevent
141
+ // internal paths / stack traces from leaking into CLI output or logs.
142
+ const rawMsg = error instanceof Error ? error.message : String(error);
143
+ const safeMsg = rawMsg.replace(/[\x00-\x1f\x7f]/g, '?').slice(0, 256);
140
144
  return {
141
145
  success: false,
142
146
  patternId: '',
143
147
  cid: '',
144
148
  registryCid: '',
145
149
  gatewayUrl: '',
146
- message: `Publish failed: ${error}`,
150
+ message: `Publish failed: ${safeMsg}`,
147
151
  };
148
152
  }
149
153
  }
@@ -152,6 +156,14 @@ export class PatternPublisher {
152
156
  */
153
157
  async signContent(content, privateKeyPath) {
154
158
  const ed = await import('@noble/ed25519');
159
+ // Guard: cap key file size to prevent OOM on oversized or malicious files.
160
+ // A valid 32-byte Ed25519 seed encoded as hex is 64 chars; even with a
161
+ // newline and BOM the file should never exceed a few hundred bytes.
162
+ const MAX_KEY_FILE_BYTES = 4 * 1024; // 4 KB — generous upper bound
163
+ const keyFileStat = fs.statSync(privateKeyPath);
164
+ if (keyFileStat.size > MAX_KEY_FILE_BYTES) {
165
+ throw new Error(`Private key file exceeds size limit (${MAX_KEY_FILE_BYTES} bytes)`);
166
+ }
155
167
  const keyHex = fs.readFileSync(privateKeyPath, 'utf-8').trim();
156
168
  // Accept 64-char hex (32-byte seed) directly; otherwise derive via SHA-256
157
169
  const privKeyBytes = keyHex.length === 64
@@ -37,6 +37,14 @@ export declare function removePatternFromRegistry(registry: PatternRegistry, pat
37
37
  export declare function serializeRegistry(registry: PatternRegistry): string;
38
38
  /**
39
39
  * Deserialize registry from JSON
40
+ *
41
+ * Caps the input string length before parsing to prevent OOM on a malicious or
42
+ * oversized registry fetched from IPFS / Pinata. The in-flight body is already
43
+ * capped by readBodyWithLimit (50 MB), but deserializeRegistry is also called
44
+ * with locally-cached data, so we add a 10 MB guard here too.
45
+ *
46
+ * We also reject non-semver and suspiciously long version strings to prevent
47
+ * version fields being used as a side-channel for large-payload injection.
40
48
  */
41
49
  export declare function deserializeRegistry(json: string): PatternRegistry;
42
50
  /**
@@ -206,12 +206,26 @@ export function serializeRegistry(registry) {
206
206
  }
207
207
  /**
208
208
  * Deserialize registry from JSON
209
+ *
210
+ * Caps the input string length before parsing to prevent OOM on a malicious or
211
+ * oversized registry fetched from IPFS / Pinata. The in-flight body is already
212
+ * capped by readBodyWithLimit (50 MB), but deserializeRegistry is also called
213
+ * with locally-cached data, so we add a 10 MB guard here too.
214
+ *
215
+ * We also reject non-semver and suspiciously long version strings to prevent
216
+ * version fields being used as a side-channel for large-payload injection.
209
217
  */
210
218
  export function deserializeRegistry(json) {
219
+ const MAX_JSON_BYTES = 10 * 1024 * 1024; // 10 MB
220
+ if (typeof json !== 'string' || json.length > MAX_JSON_BYTES) {
221
+ throw new Error(`Registry JSON too large: ${typeof json === 'string' ? json.length : typeof json} bytes (max ${MAX_JSON_BYTES})`);
222
+ }
211
223
  const registry = JSON.parse(json);
212
- // Validate version
213
- if (!registry.version) {
214
- throw new Error('Invalid registry: missing version');
224
+ // Validate version — must be a non-empty semver-like string (e.g. "1.0.0").
225
+ if (!registry.version || typeof registry.version !== 'string'
226
+ || registry.version.length > 32
227
+ || !/^\d+\.\d+\.\d+/.test(registry.version)) {
228
+ throw new Error('Invalid registry: missing or malformed version');
215
229
  }
216
230
  return registry;
217
231
  }
@@ -266,9 +280,16 @@ export async function verifyRegistrySignature(registry) {
266
280
  */
267
281
  export function mergeRegistries(local, remote) {
268
282
  const merged = createRegistry(local.ipnsName);
283
+ // Cap combined input sizes to prevent OOM when merging a large remote registry.
284
+ // A remote registry fetched from IPFS could contain hundreds of thousands of
285
+ // entries; without a hard cap, patternMap grows unboundedly in memory.
286
+ const MAX_MERGE_PATTERNS = 10_000;
287
+ const MAX_MERGE_AUTHORS = 1_000;
269
288
  // Combine patterns, preferring newer versions
270
289
  const patternMap = new Map();
271
290
  for (const pattern of [...local.patterns, ...remote.patterns]) {
291
+ if (patternMap.size >= MAX_MERGE_PATTERNS && !patternMap.has(pattern.name))
292
+ continue;
272
293
  const existing = patternMap.get(pattern.name);
273
294
  if (!existing || new Date(pattern.lastUpdated) > new Date(existing.lastUpdated)) {
274
295
  patternMap.set(pattern.name, pattern);
@@ -278,6 +299,8 @@ export function mergeRegistries(local, remote) {
278
299
  // Combine authors
279
300
  const authorMap = new Map();
280
301
  for (const author of [...local.authors, ...remote.authors]) {
302
+ if (authorMap.size >= MAX_MERGE_AUTHORS && !authorMap.has(author.id))
303
+ continue;
281
304
  const existing = authorMap.get(author.id);
282
305
  if (!existing || author.patterns > existing.patterns) {
283
306
  authorMap.set(author.id, author);
@@ -294,8 +317,10 @@ export function mergeRegistries(local, remote) {
294
317
  * Generate pattern ID from name
295
318
  */
296
319
  export function generatePatternId(name) {
297
- const normalized = name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
298
- const hash = crypto.createHash('sha256').update(name + Date.now()).digest('hex').slice(0, 8);
320
+ // Cap name before normalizing to prevent OOM from an extremely long input string
321
+ const safeName = typeof name === 'string' ? name.slice(0, 128) : '';
322
+ const normalized = safeName.toLowerCase().replace(/[^a-z0-9-]/g, '-');
323
+ const hash = crypto.createHash('sha256').update(safeName + Date.now()).digest('hex').slice(0, 8);
299
324
  return `${normalized}-${hash}`;
300
325
  }
301
326
  //# sourceMappingURL=registry.js.map
@@ -2,6 +2,16 @@
2
2
  * Pattern Search Service
3
3
  * Search and filter patterns from decentralized registry
4
4
  */
5
+ /** Maximum query string length to prevent O(n*m) regex/includes DoS */
6
+ const MAX_QUERY_LEN = 256;
7
+ /** Hard cap on page size to prevent huge slice allocations */
8
+ const MAX_PAGE_LIMIT = 200;
9
+ /** Hard cap on offset to prevent absurdly large slice calculations */
10
+ const MAX_OFFSET = 10_000;
11
+ /** Hard cap on suggestion partial string length */
12
+ const MAX_PARTIAL_LEN = 128;
13
+ /** Hard cap on similar-pattern limit */
14
+ const MAX_SIMILAR_LIMIT = 50;
5
15
  /**
6
16
  * Search patterns in registry
7
17
  */
@@ -9,7 +19,7 @@ export function searchPatterns(registry, options = {}) {
9
19
  let patterns = [...registry.patterns];
10
20
  // Text search
11
21
  if (options.query) {
12
- const query = options.query.toLowerCase();
22
+ const query = String(options.query).slice(0, MAX_QUERY_LEN).toLowerCase();
13
23
  patterns = patterns.filter(p => p.name.toLowerCase().includes(query) ||
14
24
  p.displayName.toLowerCase().includes(query) ||
15
25
  p.description.toLowerCase().includes(query) ||
@@ -77,10 +87,12 @@ export function searchPatterns(registry, options = {}) {
77
87
  }
78
88
  return sortOrder === 'desc' ? -comparison : comparison;
79
89
  });
80
- // Pagination
90
+ // Pagination — cap limit and offset to prevent huge slice allocations
81
91
  const total = patterns.length;
82
- const limit = options.limit || 20;
83
- const offset = options.offset || 0;
92
+ const rawLimit = typeof options.limit === 'number' && Number.isFinite(options.limit) ? options.limit : 20;
93
+ const limit = Math.min(Math.max(1, Math.floor(rawLimit)), MAX_PAGE_LIMIT);
94
+ const rawOffset = typeof options.offset === 'number' && Number.isFinite(options.offset) ? options.offset : 0;
95
+ const offset = Math.min(Math.max(0, Math.floor(rawOffset)), MAX_OFFSET);
84
96
  const page = Math.floor(offset / limit) + 1;
85
97
  patterns = patterns.slice(offset, offset + limit);
86
98
  return {
@@ -144,6 +156,7 @@ export function getPatternsByCategory(registry, categoryId) {
144
156
  * Get similar patterns (by tags and category)
145
157
  */
146
158
  export function getSimilarPatterns(registry, pattern, limit = 5) {
159
+ limit = Math.min(Math.max(1, Math.floor(limit)), MAX_SIMILAR_LIMIT);
147
160
  const scores = new Map();
148
161
  for (const p of registry.patterns) {
149
162
  if (p.id === pattern.id)
@@ -203,7 +216,9 @@ export function getTagCloud(registry) {
203
216
  */
204
217
  export function getSearchSuggestions(registry, partial, limit = 10) {
205
218
  const suggestions = new Set();
206
- const query = partial.toLowerCase();
219
+ // Cap partial length to prevent O(n*m) DoS via enormous query strings
220
+ const query = String(partial).slice(0, MAX_PARTIAL_LEN).toLowerCase();
221
+ limit = Math.min(Math.max(1, Math.floor(limit)), MAX_SIMILAR_LIMIT);
207
222
  // Add matching pattern names
208
223
  for (const pattern of registry.patterns) {
209
224
  if (pattern.name.toLowerCase().includes(query)) {
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Standalone Pattern Store Test
4
+ * Run this in any environment to verify the IPFS-based pattern store works
5
+ *
6
+ * Usage:
7
+ * npx tsx standalone-test.ts
8
+ * # or
9
+ * npm run test:pattern-store
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=standalone-test.d.ts.map
@@ -0,0 +1,190 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Standalone Pattern Store Test
4
+ * Run this in any environment to verify the IPFS-based pattern store works
5
+ *
6
+ * Usage:
7
+ * npx tsx standalone-test.ts
8
+ * # or
9
+ * npm run test:pattern-store
10
+ */
11
+ import { PatternStore, createDiscoveryService, searchPatterns, getFeaturedPatterns, getTrendingPatterns, getNewestPatterns, getCategoryStats, getTagCloud, getSearchSuggestions, } from '../index.js';
12
+ async function main() {
13
+ console.log('');
14
+ console.log('╔══════════════════════════════════════════════════════════════╗');
15
+ console.log('║ MONOMIND - STANDALONE PATTERN STORE TEST ║');
16
+ console.log('║ IPFS-Based Decentralized Pattern Marketplace ║');
17
+ console.log('╚══════════════════════════════════════════════════════════════╝');
18
+ console.log('');
19
+ let passed = 0;
20
+ let failed = 0;
21
+ // Test 1: Discovery Service Creation
22
+ console.log('▶ Test 1: Create Discovery Service');
23
+ try {
24
+ const discovery = createDiscoveryService();
25
+ const registries = discovery.listRegistries();
26
+ console.log(` ✅ Created service with ${registries.length} bootstrap registries`);
27
+ passed++;
28
+ }
29
+ catch (e) {
30
+ console.log(` ❌ Failed: ${e.message}`);
31
+ failed++;
32
+ }
33
+ // Test 2: Discover Registry
34
+ console.log('▶ Test 2: Discover Registry via IPNS');
35
+ let registry = null;
36
+ try {
37
+ const discovery = createDiscoveryService();
38
+ const result = await discovery.discoverRegistry();
39
+ if (result.success && result.registry) {
40
+ registry = result.registry;
41
+ console.log(` ✅ Discovered ${result.registry.patterns.length} patterns from ${result.source}`);
42
+ passed++;
43
+ }
44
+ else {
45
+ throw new Error(result.error || 'No registry');
46
+ }
47
+ }
48
+ catch (e) {
49
+ console.log(` ❌ Failed: ${e.message}`);
50
+ failed++;
51
+ }
52
+ if (!registry) {
53
+ console.log('\n❌ Cannot continue without registry\n');
54
+ process.exit(1);
55
+ }
56
+ // Test 3: Search Patterns
57
+ console.log('▶ Test 3: Search for "agent"');
58
+ try {
59
+ const results = searchPatterns(registry, { query: 'agent' });
60
+ console.log(` ✅ Found ${results.patterns.length} patterns matching "agent"`);
61
+ passed++;
62
+ }
63
+ catch (e) {
64
+ console.log(` ❌ Failed: ${e.message}`);
65
+ failed++;
66
+ }
67
+ // Test 4: Get Featured Patterns
68
+ console.log('▶ Test 4: Get Featured Patterns');
69
+ try {
70
+ const featured = getFeaturedPatterns(registry);
71
+ console.log(` ✅ Found ${featured.length} featured patterns`);
72
+ if (featured.length > 0) {
73
+ console.log(` - ${featured[0].name} (${featured[0].id})`);
74
+ }
75
+ passed++;
76
+ }
77
+ catch (e) {
78
+ console.log(` ❌ Failed: ${e.message}`);
79
+ failed++;
80
+ }
81
+ // Test 5: Get Trending Patterns
82
+ console.log('▶ Test 5: Get Trending Patterns');
83
+ try {
84
+ const trending = getTrendingPatterns(registry);
85
+ console.log(` ✅ Found ${trending.length} trending patterns`);
86
+ passed++;
87
+ }
88
+ catch (e) {
89
+ console.log(` ❌ Failed: ${e.message}`);
90
+ failed++;
91
+ }
92
+ // Test 6: Get Newest Patterns
93
+ console.log('▶ Test 6: Get Newest Patterns');
94
+ try {
95
+ const newest = getNewestPatterns(registry);
96
+ console.log(` ✅ Found ${newest.length} newest patterns`);
97
+ passed++;
98
+ }
99
+ catch (e) {
100
+ console.log(` ❌ Failed: ${e.message}`);
101
+ failed++;
102
+ }
103
+ // Test 7: Search with Filters
104
+ console.log('▶ Test 7: Search with Filters (verified only)');
105
+ try {
106
+ const results = searchPatterns(registry, { verified: true });
107
+ console.log(` ✅ Found ${results.patterns.length} verified patterns`);
108
+ passed++;
109
+ }
110
+ catch (e) {
111
+ console.log(` ❌ Failed: ${e.message}`);
112
+ failed++;
113
+ }
114
+ // Test 8: Category Stats
115
+ console.log('▶ Test 8: Get Category Statistics');
116
+ try {
117
+ const stats = getCategoryStats(registry);
118
+ const count = Array.isArray(stats) ? stats.length : Object.keys(stats).length;
119
+ console.log(` ✅ Found ${count} categories with stats`);
120
+ passed++;
121
+ }
122
+ catch (e) {
123
+ console.log(` ❌ Failed: ${e.message}`);
124
+ failed++;
125
+ }
126
+ // Test 9: Tag Cloud
127
+ console.log('▶ Test 9: Get Tag Cloud');
128
+ try {
129
+ const tags = getTagCloud(registry);
130
+ console.log(` ✅ Found ${tags.size} unique tags`);
131
+ passed++;
132
+ }
133
+ catch (e) {
134
+ console.log(` ❌ Failed: ${e.message}`);
135
+ failed++;
136
+ }
137
+ // Test 10: Search Suggestions
138
+ console.log('▶ Test 10: Get Search Suggestions');
139
+ try {
140
+ const suggestions = getSearchSuggestions(registry, 'pat');
141
+ console.log(` ✅ Got ${suggestions.length} suggestions for "pat"`);
142
+ passed++;
143
+ }
144
+ catch (e) {
145
+ console.log(` ❌ Failed: ${e.message}`);
146
+ failed++;
147
+ }
148
+ // Test 11: PatternStore Class
149
+ console.log('▶ Test 11: PatternStore Class API');
150
+ try {
151
+ const store = new PatternStore();
152
+ await store.initialize();
153
+ const stats = store.getStats();
154
+ console.log(` ✅ PatternStore initialized:`);
155
+ console.log(` Total Patterns: ${stats.totalPatterns}`);
156
+ console.log(` Total Downloads: ${stats.totalDownloads.toLocaleString()}`);
157
+ console.log(` Categories: ${stats.categories}`);
158
+ passed++;
159
+ }
160
+ catch (e) {
161
+ console.log(` ❌ Failed: ${e.message}`);
162
+ failed++;
163
+ }
164
+ // Summary
165
+ console.log('');
166
+ console.log('═══════════════════════════════════════════════════════════════');
167
+ console.log(' TEST RESULTS ');
168
+ console.log('═══════════════════════════════════════════════════════════════');
169
+ console.log('');
170
+ console.log(` Total: ${passed + failed}`);
171
+ console.log(` ✅ Passed: ${passed}`);
172
+ console.log(` ❌ Failed: ${failed}`);
173
+ console.log('');
174
+ if (failed === 0) {
175
+ console.log(' 🎉 All tests passed! Pattern Store is working correctly.');
176
+ console.log('');
177
+ console.log(' Available CLI Commands:');
178
+ console.log(' npx @monoes/cli patterns list');
179
+ console.log(' npx @monoes/cli patterns list --featured');
180
+ console.log(' npx @monoes/cli patterns search -q "agent"');
181
+ console.log(' npx @monoes/cli patterns info -n <pattern-id>');
182
+ console.log('');
183
+ }
184
+ process.exit(failed > 0 ? 1 : 0);
185
+ }
186
+ main().catch(err => {
187
+ console.error('Fatal error:', err);
188
+ process.exit(1);
189
+ });
190
+ //# sourceMappingURL=standalone-test.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Test Seraphine Genesis Model
3
+ * Quick validation of the transfer pipeline
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=test-seraphine.d.ts.map
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Test Seraphine Genesis Model
3
+ * Quick validation of the transfer pipeline
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+ // Simple test without complex imports
11
+ async function test() {
12
+ console.log('');
13
+ console.log('╔══════════════════════════════════════════════════════════╗');
14
+ console.log('║ SERAPHINE GENESIS TEST SUITE ║');
15
+ console.log('╚══════════════════════════════════════════════════════════╝');
16
+ console.log('');
17
+ let passed = 0;
18
+ let failed = 0;
19
+ // Test 1: Types file exists
20
+ const typesPath = path.join(__dirname, 'types.ts');
21
+ if (fs.existsSync(typesPath)) {
22
+ console.log('✅ Test 1: Types module exists');
23
+ passed++;
24
+ }
25
+ else {
26
+ console.log('❌ Test 1: Types module missing');
27
+ failed++;
28
+ }
29
+ // Test 2: Seraphine model exists
30
+ const seraphPath = path.join(__dirname, 'models', 'seraphine.ts');
31
+ if (fs.existsSync(seraphPath)) {
32
+ console.log('✅ Test 2: Seraphine model exists');
33
+ passed++;
34
+ }
35
+ else {
36
+ console.log('❌ Test 2: Seraphine model missing');
37
+ failed++;
38
+ }
39
+ // Test 3: CFP serializer exists
40
+ const cfpPath = path.join(__dirname, 'serialization', 'cfp.ts');
41
+ if (fs.existsSync(cfpPath)) {
42
+ console.log('✅ Test 3: CFP serializer exists');
43
+ passed++;
44
+ }
45
+ else {
46
+ console.log('❌ Test 3: CFP serializer missing');
47
+ failed++;
48
+ }
49
+ // Test 4: Anonymization module exists
50
+ const anonPath = path.join(__dirname, 'anonymization', 'index.ts');
51
+ if (fs.existsSync(anonPath)) {
52
+ console.log('✅ Test 4: Anonymization module exists');
53
+ passed++;
54
+ }
55
+ else {
56
+ console.log('❌ Test 4: Anonymization module missing');
57
+ failed++;
58
+ }
59
+ // Test 5: IPFS upload module exists
60
+ const ipfsPath = path.join(__dirname, 'ipfs', 'upload.ts');
61
+ if (fs.existsSync(ipfsPath)) {
62
+ console.log('✅ Test 5: IPFS upload module exists');
63
+ passed++;
64
+ }
65
+ else {
66
+ console.log('❌ Test 5: IPFS upload module missing');
67
+ failed++;
68
+ }
69
+ // Test 6: Export module exists
70
+ const exportPath = path.join(__dirname, 'export.ts');
71
+ if (fs.existsSync(exportPath)) {
72
+ console.log('✅ Test 6: Export module exists');
73
+ passed++;
74
+ }
75
+ else {
76
+ console.log('❌ Test 6: Export module missing');
77
+ failed++;
78
+ }
79
+ // Test 7: Index module exists
80
+ const indexPath = path.join(__dirname, 'index.ts');
81
+ if (fs.existsSync(indexPath)) {
82
+ console.log('✅ Test 7: Index module exists');
83
+ passed++;
84
+ }
85
+ else {
86
+ console.log('❌ Test 7: Index module missing');
87
+ failed++;
88
+ }
89
+ console.log('');
90
+ console.log('═══════════════════════════════════════════════════════════');
91
+ console.log(` Results: ${passed} passed, ${failed} failed`);
92
+ console.log('═══════════════════════════════════════════════════════════');
93
+ console.log('');
94
+ if (failed === 0) {
95
+ console.log('🎉 All module tests passed!');
96
+ console.log('');
97
+ console.log('Next steps:');
98
+ console.log(' 1. Compile TypeScript: cd packages/@monoes/cli && npm run build');
99
+ console.log(' 2. Run deployment: npx ts-node src/transfer/deploy-seraphine.ts --to-ipfs');
100
+ console.log('');
101
+ }
102
+ process.exit(failed > 0 ? 1 : 0);
103
+ }
104
+ test().catch(console.error);
105
+ //# sourceMappingURL=test-seraphine.js.map
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Pattern Store Test Suite
4
+ * Tests list, search, download, and publish functionality
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=test-store.d.ts.map