moflo 4.8.17 → 4.8.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/.claude/guidance/shipped/moflo.md +45 -0
  2. package/.claude/helpers/statusline.cjs +1 -1
  3. package/.claude/workflow-state.json +9 -0
  4. package/bin/generate-code-map.mjs +91 -12
  5. package/package.json +2 -2
  6. package/src/@claude-flow/cli/bin/cli.js +5 -0
  7. package/src/@claude-flow/cli/dist/src/init/moflo-init.js +9 -0
  8. package/src/@claude-flow/cli/dist/src/init/statusline-generator.js +1 -1
  9. package/src/@claude-flow/cli/dist/src/services/agentic-flow-bridge.js +8 -0
  10. package/src/@claude-flow/cli/package.json +1 -1
  11. package/src/@claude-flow/memory/dist/agent-memory-scope.d.ts +131 -0
  12. package/src/@claude-flow/memory/dist/agent-memory-scope.js +223 -0
  13. package/src/@claude-flow/memory/dist/agent-memory-scope.test.d.ts +8 -0
  14. package/src/@claude-flow/memory/dist/agent-memory-scope.test.js +466 -0
  15. package/src/@claude-flow/memory/dist/agentdb-adapter.d.ts +165 -0
  16. package/src/@claude-flow/memory/dist/agentdb-adapter.js +806 -0
  17. package/src/@claude-flow/memory/dist/agentdb-backend.d.ts +212 -0
  18. package/src/@claude-flow/memory/dist/agentdb-backend.js +842 -0
  19. package/src/@claude-flow/memory/dist/agentdb-backend.test.d.ts +7 -0
  20. package/src/@claude-flow/memory/dist/agentdb-backend.test.js +258 -0
  21. package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.d.ts +65 -0
  22. package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.js +129 -0
  23. package/src/@claude-flow/memory/dist/application/commands/store-memory.command.d.ts +48 -0
  24. package/src/@claude-flow/memory/dist/application/commands/store-memory.command.js +72 -0
  25. package/src/@claude-flow/memory/dist/application/index.d.ts +12 -0
  26. package/src/@claude-flow/memory/dist/application/index.js +15 -0
  27. package/src/@claude-flow/memory/dist/application/queries/search-memory.query.d.ts +72 -0
  28. package/src/@claude-flow/memory/dist/application/queries/search-memory.query.js +143 -0
  29. package/src/@claude-flow/memory/dist/application/services/memory-application-service.d.ts +121 -0
  30. package/src/@claude-flow/memory/dist/application/services/memory-application-service.js +190 -0
  31. package/src/@claude-flow/memory/dist/auto-memory-bridge.d.ts +226 -0
  32. package/src/@claude-flow/memory/dist/auto-memory-bridge.js +709 -0
  33. package/src/@claude-flow/memory/dist/auto-memory-bridge.test.d.ts +8 -0
  34. package/src/@claude-flow/memory/dist/auto-memory-bridge.test.js +757 -0
  35. package/src/@claude-flow/memory/dist/benchmark.test.d.ts +2 -0
  36. package/src/@claude-flow/memory/dist/benchmark.test.js +277 -0
  37. package/src/@claude-flow/memory/dist/cache-manager.d.ts +134 -0
  38. package/src/@claude-flow/memory/dist/cache-manager.js +407 -0
  39. package/src/@claude-flow/memory/dist/controller-registry.d.ts +216 -0
  40. package/src/@claude-flow/memory/dist/controller-registry.js +893 -0
  41. package/src/@claude-flow/memory/dist/controller-registry.test.d.ts +14 -0
  42. package/src/@claude-flow/memory/dist/controller-registry.test.js +593 -0
  43. package/src/@claude-flow/memory/dist/database-provider.d.ts +87 -0
  44. package/src/@claude-flow/memory/dist/database-provider.js +372 -0
  45. package/src/@claude-flow/memory/dist/database-provider.test.d.ts +7 -0
  46. package/src/@claude-flow/memory/dist/database-provider.test.js +287 -0
  47. package/src/@claude-flow/memory/dist/domain/entities/memory-entry.d.ts +143 -0
  48. package/src/@claude-flow/memory/dist/domain/entities/memory-entry.js +226 -0
  49. package/src/@claude-flow/memory/dist/domain/index.d.ts +11 -0
  50. package/src/@claude-flow/memory/dist/domain/index.js +12 -0
  51. package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
  52. package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.js +11 -0
  53. package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.d.ts +105 -0
  54. package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.js +297 -0
  55. package/src/@claude-flow/memory/dist/hnsw-index.d.ts +111 -0
  56. package/src/@claude-flow/memory/dist/hnsw-index.js +781 -0
  57. package/src/@claude-flow/memory/dist/hnsw-lite.d.ts +23 -0
  58. package/src/@claude-flow/memory/dist/hnsw-lite.js +168 -0
  59. package/src/@claude-flow/memory/dist/index.d.ts +204 -0
  60. package/src/@claude-flow/memory/dist/index.js +358 -0
  61. package/src/@claude-flow/memory/dist/infrastructure/index.d.ts +17 -0
  62. package/src/@claude-flow/memory/dist/infrastructure/index.js +16 -0
  63. package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
  64. package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
  65. package/src/@claude-flow/memory/dist/learning-bridge.d.ts +137 -0
  66. package/src/@claude-flow/memory/dist/learning-bridge.js +335 -0
  67. package/src/@claude-flow/memory/dist/learning-bridge.test.d.ts +8 -0
  68. package/src/@claude-flow/memory/dist/learning-bridge.test.js +578 -0
  69. package/src/@claude-flow/memory/dist/memory-graph.d.ts +100 -0
  70. package/src/@claude-flow/memory/dist/memory-graph.js +333 -0
  71. package/src/@claude-flow/memory/dist/memory-graph.test.d.ts +8 -0
  72. package/src/@claude-flow/memory/dist/memory-graph.test.js +609 -0
  73. package/src/@claude-flow/memory/dist/migration.d.ts +68 -0
  74. package/src/@claude-flow/memory/dist/migration.js +513 -0
  75. package/src/@claude-flow/memory/dist/persistent-sona.d.ts +144 -0
  76. package/src/@claude-flow/memory/dist/persistent-sona.js +332 -0
  77. package/src/@claude-flow/memory/dist/query-builder.d.ts +211 -0
  78. package/src/@claude-flow/memory/dist/query-builder.js +438 -0
  79. package/src/@claude-flow/memory/dist/rvf-backend.d.ts +51 -0
  80. package/src/@claude-flow/memory/dist/rvf-backend.js +481 -0
  81. package/src/@claude-flow/memory/dist/rvf-learning-store.d.ts +139 -0
  82. package/src/@claude-flow/memory/dist/rvf-learning-store.js +295 -0
  83. package/src/@claude-flow/memory/dist/rvf-migration.d.ts +45 -0
  84. package/src/@claude-flow/memory/dist/rvf-migration.js +234 -0
  85. package/src/@claude-flow/memory/dist/sqljs-backend.d.ts +127 -0
  86. package/src/@claude-flow/memory/dist/sqljs-backend.js +600 -0
  87. package/src/@claude-flow/memory/dist/types.d.ts +484 -0
  88. package/src/@claude-flow/memory/dist/types.js +58 -0
  89. package/src/@claude-flow/shared/dist/core/config/defaults.d.ts +41 -0
  90. package/src/@claude-flow/shared/dist/core/config/defaults.js +186 -0
  91. package/src/@claude-flow/shared/dist/core/config/index.d.ts +8 -0
  92. package/src/@claude-flow/shared/dist/core/config/index.js +12 -0
  93. package/src/@claude-flow/shared/dist/core/config/loader.d.ts +45 -0
  94. package/src/@claude-flow/shared/dist/core/config/loader.js +222 -0
  95. package/src/@claude-flow/shared/dist/core/config/schema.d.ts +1134 -0
  96. package/src/@claude-flow/shared/dist/core/config/schema.js +158 -0
  97. package/src/@claude-flow/shared/dist/core/config/validator.d.ts +92 -0
  98. package/src/@claude-flow/shared/dist/core/config/validator.js +147 -0
  99. package/src/@claude-flow/shared/dist/core/event-bus.d.ts +31 -0
  100. package/src/@claude-flow/shared/dist/core/event-bus.js +197 -0
  101. package/src/@claude-flow/shared/dist/core/index.d.ts +15 -0
  102. package/src/@claude-flow/shared/dist/core/index.js +19 -0
  103. package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +200 -0
  104. package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.js +6 -0
  105. package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +310 -0
  106. package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +7 -0
  107. package/src/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +224 -0
  108. package/src/@claude-flow/shared/dist/core/interfaces/event.interface.js +46 -0
  109. package/src/@claude-flow/shared/dist/core/interfaces/index.d.ts +10 -0
  110. package/src/@claude-flow/shared/dist/core/interfaces/index.js +15 -0
  111. package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +298 -0
  112. package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.js +7 -0
  113. package/src/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +185 -0
  114. package/src/@claude-flow/shared/dist/core/interfaces/task.interface.js +6 -0
  115. package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +35 -0
  116. package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +101 -0
  117. package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +60 -0
  118. package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +166 -0
  119. package/src/@claude-flow/shared/dist/core/orchestrator/index.d.ts +46 -0
  120. package/src/@claude-flow/shared/dist/core/orchestrator/index.js +64 -0
  121. package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +56 -0
  122. package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +195 -0
  123. package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +83 -0
  124. package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.js +193 -0
  125. package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +49 -0
  126. package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.js +253 -0
  127. package/src/@claude-flow/shared/dist/events/domain-events.d.ts +282 -0
  128. package/src/@claude-flow/shared/dist/events/domain-events.js +165 -0
  129. package/src/@claude-flow/shared/dist/events/event-store.d.ts +126 -0
  130. package/src/@claude-flow/shared/dist/events/event-store.js +432 -0
  131. package/src/@claude-flow/shared/dist/events/event-store.test.d.ts +8 -0
  132. package/src/@claude-flow/shared/dist/events/event-store.test.js +297 -0
  133. package/src/@claude-flow/shared/dist/events/example-usage.d.ts +10 -0
  134. package/src/@claude-flow/shared/dist/events/example-usage.js +193 -0
  135. package/src/@claude-flow/shared/dist/events/index.d.ts +21 -0
  136. package/src/@claude-flow/shared/dist/events/index.js +22 -0
  137. package/src/@claude-flow/shared/dist/events/projections.d.ts +177 -0
  138. package/src/@claude-flow/shared/dist/events/projections.js +421 -0
  139. package/src/@claude-flow/shared/dist/events/rvf-event-log.d.ts +82 -0
  140. package/src/@claude-flow/shared/dist/events/rvf-event-log.js +340 -0
  141. package/src/@claude-flow/shared/dist/events/state-reconstructor.d.ts +101 -0
  142. package/src/@claude-flow/shared/dist/events/state-reconstructor.js +263 -0
  143. package/src/@claude-flow/shared/dist/events.d.ts +80 -0
  144. package/src/@claude-flow/shared/dist/events.js +249 -0
  145. package/src/@claude-flow/shared/dist/hooks/example-usage.d.ts +42 -0
  146. package/src/@claude-flow/shared/dist/hooks/example-usage.js +351 -0
  147. package/src/@claude-flow/shared/dist/hooks/executor.d.ts +100 -0
  148. package/src/@claude-flow/shared/dist/hooks/executor.js +267 -0
  149. package/src/@claude-flow/shared/dist/hooks/hooks.test.d.ts +9 -0
  150. package/src/@claude-flow/shared/dist/hooks/hooks.test.js +322 -0
  151. package/src/@claude-flow/shared/dist/hooks/index.d.ts +52 -0
  152. package/src/@claude-flow/shared/dist/hooks/index.js +51 -0
  153. package/src/@claude-flow/shared/dist/hooks/registry.d.ts +133 -0
  154. package/src/@claude-flow/shared/dist/hooks/registry.js +277 -0
  155. package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +105 -0
  156. package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.js +481 -0
  157. package/src/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +144 -0
  158. package/src/@claude-flow/shared/dist/hooks/safety/file-organization.js +328 -0
  159. package/src/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +158 -0
  160. package/src/@claude-flow/shared/dist/hooks/safety/git-commit.js +450 -0
  161. package/src/@claude-flow/shared/dist/hooks/safety/index.d.ts +17 -0
  162. package/src/@claude-flow/shared/dist/hooks/safety/index.js +17 -0
  163. package/src/@claude-flow/shared/dist/hooks/session-hooks.d.ts +234 -0
  164. package/src/@claude-flow/shared/dist/hooks/session-hooks.js +334 -0
  165. package/src/@claude-flow/shared/dist/hooks/task-hooks.d.ts +163 -0
  166. package/src/@claude-flow/shared/dist/hooks/task-hooks.js +326 -0
  167. package/src/@claude-flow/shared/dist/hooks/types.d.ts +267 -0
  168. package/src/@claude-flow/shared/dist/hooks/types.js +62 -0
  169. package/src/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +9 -0
  170. package/src/@claude-flow/shared/dist/hooks/verify-exports.test.js +93 -0
  171. package/src/@claude-flow/shared/dist/index.d.ts +20 -0
  172. package/src/@claude-flow/shared/dist/index.js +50 -0
  173. package/src/@claude-flow/shared/dist/mcp/connection-pool.d.ts +98 -0
  174. package/src/@claude-flow/shared/dist/mcp/connection-pool.js +364 -0
  175. package/src/@claude-flow/shared/dist/mcp/index.d.ts +69 -0
  176. package/src/@claude-flow/shared/dist/mcp/index.js +84 -0
  177. package/src/@claude-flow/shared/dist/mcp/server.d.ts +166 -0
  178. package/src/@claude-flow/shared/dist/mcp/server.js +593 -0
  179. package/src/@claude-flow/shared/dist/mcp/session-manager.d.ts +136 -0
  180. package/src/@claude-flow/shared/dist/mcp/session-manager.js +335 -0
  181. package/src/@claude-flow/shared/dist/mcp/tool-registry.d.ts +178 -0
  182. package/src/@claude-flow/shared/dist/mcp/tool-registry.js +439 -0
  183. package/src/@claude-flow/shared/dist/mcp/transport/http.d.ts +104 -0
  184. package/src/@claude-flow/shared/dist/mcp/transport/http.js +476 -0
  185. package/src/@claude-flow/shared/dist/mcp/transport/index.d.ts +102 -0
  186. package/src/@claude-flow/shared/dist/mcp/transport/index.js +238 -0
  187. package/src/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +104 -0
  188. package/src/@claude-flow/shared/dist/mcp/transport/stdio.js +263 -0
  189. package/src/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +133 -0
  190. package/src/@claude-flow/shared/dist/mcp/transport/websocket.js +396 -0
  191. package/src/@claude-flow/shared/dist/mcp/types.d.ts +438 -0
  192. package/src/@claude-flow/shared/dist/mcp/types.js +54 -0
  193. package/src/@claude-flow/shared/dist/plugin-interface.d.ts +544 -0
  194. package/src/@claude-flow/shared/dist/plugin-interface.js +23 -0
  195. package/src/@claude-flow/shared/dist/plugin-loader.d.ts +139 -0
  196. package/src/@claude-flow/shared/dist/plugin-loader.js +434 -0
  197. package/src/@claude-flow/shared/dist/plugin-registry.d.ts +183 -0
  198. package/src/@claude-flow/shared/dist/plugin-registry.js +457 -0
  199. package/src/@claude-flow/shared/dist/plugins/index.d.ts +10 -0
  200. package/src/@claude-flow/shared/dist/plugins/index.js +10 -0
  201. package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +106 -0
  202. package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +241 -0
  203. package/src/@claude-flow/shared/dist/plugins/official/index.d.ts +10 -0
  204. package/src/@claude-flow/shared/dist/plugins/official/index.js +10 -0
  205. package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +121 -0
  206. package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +355 -0
  207. package/src/@claude-flow/shared/dist/plugins/types.d.ts +93 -0
  208. package/src/@claude-flow/shared/dist/plugins/types.js +9 -0
  209. package/src/@claude-flow/shared/dist/resilience/bulkhead.d.ts +105 -0
  210. package/src/@claude-flow/shared/dist/resilience/bulkhead.js +206 -0
  211. package/src/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +132 -0
  212. package/src/@claude-flow/shared/dist/resilience/circuit-breaker.js +233 -0
  213. package/src/@claude-flow/shared/dist/resilience/index.d.ts +19 -0
  214. package/src/@claude-flow/shared/dist/resilience/index.js +19 -0
  215. package/src/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +168 -0
  216. package/src/@claude-flow/shared/dist/resilience/rate-limiter.js +314 -0
  217. package/src/@claude-flow/shared/dist/resilience/retry.d.ts +91 -0
  218. package/src/@claude-flow/shared/dist/resilience/retry.js +159 -0
  219. package/src/@claude-flow/shared/dist/security/index.d.ts +10 -0
  220. package/src/@claude-flow/shared/dist/security/index.js +12 -0
  221. package/src/@claude-flow/shared/dist/security/input-validation.d.ts +73 -0
  222. package/src/@claude-flow/shared/dist/security/input-validation.js +201 -0
  223. package/src/@claude-flow/shared/dist/security/secure-random.d.ts +92 -0
  224. package/src/@claude-flow/shared/dist/security/secure-random.js +142 -0
  225. package/src/@claude-flow/shared/dist/services/index.d.ts +7 -0
  226. package/src/@claude-flow/shared/dist/services/index.js +7 -0
  227. package/src/@claude-flow/shared/dist/services/v3-progress.service.d.ts +124 -0
  228. package/src/@claude-flow/shared/dist/services/v3-progress.service.js +402 -0
  229. package/src/@claude-flow/shared/dist/types/agent.types.d.ts +137 -0
  230. package/src/@claude-flow/shared/dist/types/agent.types.js +6 -0
  231. package/src/@claude-flow/shared/dist/types/index.d.ts +11 -0
  232. package/src/@claude-flow/shared/dist/types/index.js +17 -0
  233. package/src/@claude-flow/shared/dist/types/mcp.types.d.ts +266 -0
  234. package/src/@claude-flow/shared/dist/types/mcp.types.js +7 -0
  235. package/src/@claude-flow/shared/dist/types/memory.types.d.ts +236 -0
  236. package/src/@claude-flow/shared/dist/types/memory.types.js +7 -0
  237. package/src/@claude-flow/shared/dist/types/swarm.types.d.ts +186 -0
  238. package/src/@claude-flow/shared/dist/types/swarm.types.js +65 -0
  239. package/src/@claude-flow/shared/dist/types/task.types.d.ts +178 -0
  240. package/src/@claude-flow/shared/dist/types/task.types.js +32 -0
  241. package/src/@claude-flow/shared/dist/types.d.ts +197 -0
  242. package/src/@claude-flow/shared/dist/types.js +21 -0
  243. package/src/@claude-flow/shared/dist/utils/secure-logger.d.ts +69 -0
  244. package/src/@claude-flow/shared/dist/utils/secure-logger.js +208 -0
@@ -0,0 +1,457 @@
1
+ /**
2
+ * V3 Plugin Registry
3
+ * Domain-Driven Design - Plugin-Based Architecture (ADR-004)
4
+ *
5
+ * Central registry for tracking plugin state, metadata, and registrations
6
+ */
7
+ import { PluginError } from './plugin-interface.js';
8
+ /**
9
+ * Plugin registry for managing plugin lifecycle and registrations
10
+ */
11
+ export class PluginRegistry {
12
+ plugins = new Map();
13
+ agentTypes = new Map();
14
+ taskTypes = new Map();
15
+ mcpTools = new Map();
16
+ cliCommands = new Map();
17
+ memoryBackends = new Map();
18
+ /**
19
+ * Register a plugin in the registry
20
+ */
21
+ registerPlugin(plugin, initialState, context) {
22
+ if (this.plugins.has(plugin.name)) {
23
+ throw new PluginError(`Plugin '${plugin.name}' is already registered`, plugin.name, 'DUPLICATE_PLUGIN');
24
+ }
25
+ const info = {
26
+ plugin,
27
+ state: initialState,
28
+ context,
29
+ metrics: {
30
+ agentTypesRegistered: 0,
31
+ taskTypesRegistered: 0,
32
+ mcpToolsRegistered: 0,
33
+ cliCommandsRegistered: 0,
34
+ memoryBackendsRegistered: 0,
35
+ },
36
+ };
37
+ this.plugins.set(plugin.name, info);
38
+ }
39
+ /**
40
+ * Unregister a plugin from the registry
41
+ */
42
+ unregisterPlugin(pluginName) {
43
+ const info = this.plugins.get(pluginName);
44
+ if (!info) {
45
+ return false;
46
+ }
47
+ // Unregister all plugin's registrations
48
+ this.unregisterPluginAgentTypes(pluginName);
49
+ this.unregisterPluginTaskTypes(pluginName);
50
+ this.unregisterPluginMCPTools(pluginName);
51
+ this.unregisterPluginCLICommands(pluginName);
52
+ this.unregisterPluginMemoryBackends(pluginName);
53
+ // Remove plugin
54
+ return this.plugins.delete(pluginName);
55
+ }
56
+ /**
57
+ * Get a plugin by name
58
+ */
59
+ getPlugin(pluginName) {
60
+ return this.plugins.get(pluginName);
61
+ }
62
+ /**
63
+ * Get all registered plugins
64
+ */
65
+ getAllPlugins() {
66
+ return new Map(this.plugins);
67
+ }
68
+ /**
69
+ * Get all plugin names
70
+ */
71
+ getPluginNames() {
72
+ return Array.from(this.plugins.keys());
73
+ }
74
+ /**
75
+ * Check if a plugin is registered
76
+ */
77
+ hasPlugin(pluginName) {
78
+ return this.plugins.has(pluginName);
79
+ }
80
+ /**
81
+ * Get plugins by state
82
+ */
83
+ getPluginsByState(state) {
84
+ return Array.from(this.plugins.values()).filter((info) => info.state === state);
85
+ }
86
+ /**
87
+ * Get plugin count
88
+ */
89
+ getPluginCount() {
90
+ return this.plugins.size;
91
+ }
92
+ /**
93
+ * Update plugin state
94
+ */
95
+ updatePluginState(pluginName, state, error) {
96
+ const info = this.plugins.get(pluginName);
97
+ if (!info) {
98
+ throw new PluginError(`Plugin '${pluginName}' not found`, pluginName, 'INVALID_PLUGIN');
99
+ }
100
+ info.state = state;
101
+ if (state === 'initialized') {
102
+ info.initializedAt = new Date();
103
+ }
104
+ else if (state === 'shutdown') {
105
+ info.shutdownAt = new Date();
106
+ }
107
+ else if (state === 'error') {
108
+ info.error = error;
109
+ }
110
+ }
111
+ /**
112
+ * Collect and update plugin metrics
113
+ */
114
+ collectPluginMetrics(pluginName) {
115
+ const info = this.plugins.get(pluginName);
116
+ if (!info || !info.metrics) {
117
+ return;
118
+ }
119
+ const plugin = info.plugin;
120
+ // Count registered items
121
+ info.metrics.agentTypesRegistered = plugin.registerAgentTypes?.()?.length || 0;
122
+ info.metrics.taskTypesRegistered = plugin.registerTaskTypes?.()?.length || 0;
123
+ info.metrics.mcpToolsRegistered = plugin.registerMCPTools?.()?.length || 0;
124
+ info.metrics.cliCommandsRegistered = plugin.registerCLICommands?.()?.length || 0;
125
+ info.metrics.memoryBackendsRegistered = plugin.registerMemoryBackends?.()?.length || 0;
126
+ }
127
+ /**
128
+ * Get plugin status summary
129
+ */
130
+ getStatusSummary() {
131
+ const states = Array.from(this.plugins.values()).reduce((acc, info) => {
132
+ acc[info.state] = (acc[info.state] || 0) + 1;
133
+ return acc;
134
+ }, {});
135
+ return {
136
+ totalPlugins: this.plugins.size,
137
+ states,
138
+ agentTypesRegistered: this.agentTypes.size,
139
+ taskTypesRegistered: this.taskTypes.size,
140
+ mcpToolsRegistered: this.mcpTools.size,
141
+ cliCommandsRegistered: this.cliCommands.size,
142
+ memoryBackendsRegistered: this.memoryBackends.size,
143
+ };
144
+ }
145
+ // =============================================================================
146
+ // Agent Type Registry
147
+ // =============================================================================
148
+ /**
149
+ * Register agent types from a plugin
150
+ */
151
+ registerAgentTypes(pluginName) {
152
+ const info = this.plugins.get(pluginName);
153
+ if (!info) {
154
+ throw new PluginError(`Plugin '${pluginName}' not found`, pluginName, 'INVALID_PLUGIN');
155
+ }
156
+ const agentTypes = info.plugin.registerAgentTypes?.();
157
+ if (!agentTypes || agentTypes.length === 0) {
158
+ return;
159
+ }
160
+ for (const definition of agentTypes) {
161
+ if (this.agentTypes.has(definition.type)) {
162
+ throw new PluginError(`Agent type '${definition.type}' is already registered by plugin '${this.agentTypes.get(definition.type)?.plugin}'`, pluginName, 'DUPLICATE_PLUGIN');
163
+ }
164
+ this.agentTypes.set(definition.type, { plugin: pluginName, definition });
165
+ }
166
+ }
167
+ /**
168
+ * Unregister agent types from a plugin
169
+ */
170
+ unregisterPluginAgentTypes(pluginName) {
171
+ for (const [type, entry] of Array.from(this.agentTypes.entries())) {
172
+ if (entry.plugin === pluginName) {
173
+ this.agentTypes.delete(type);
174
+ }
175
+ }
176
+ }
177
+ /**
178
+ * Get agent type definition
179
+ */
180
+ getAgentType(type) {
181
+ return this.agentTypes.get(type)?.definition;
182
+ }
183
+ /**
184
+ * Get all agent types
185
+ */
186
+ getAllAgentTypes() {
187
+ return Array.from(this.agentTypes.values()).map((entry) => entry.definition);
188
+ }
189
+ /**
190
+ * Get agent types by plugin
191
+ */
192
+ getAgentTypesByPlugin(pluginName) {
193
+ return Array.from(this.agentTypes.values())
194
+ .filter((entry) => entry.plugin === pluginName)
195
+ .map((entry) => entry.definition);
196
+ }
197
+ // =============================================================================
198
+ // Task Type Registry
199
+ // =============================================================================
200
+ /**
201
+ * Register task types from a plugin
202
+ */
203
+ registerTaskTypes(pluginName) {
204
+ const info = this.plugins.get(pluginName);
205
+ if (!info) {
206
+ throw new PluginError(`Plugin '${pluginName}' not found`, pluginName, 'INVALID_PLUGIN');
207
+ }
208
+ const taskTypes = info.plugin.registerTaskTypes?.();
209
+ if (!taskTypes || taskTypes.length === 0) {
210
+ return;
211
+ }
212
+ for (const definition of taskTypes) {
213
+ if (this.taskTypes.has(definition.type)) {
214
+ throw new PluginError(`Task type '${definition.type}' is already registered by plugin '${this.taskTypes.get(definition.type)?.plugin}'`, pluginName, 'DUPLICATE_PLUGIN');
215
+ }
216
+ this.taskTypes.set(definition.type, { plugin: pluginName, definition });
217
+ }
218
+ }
219
+ /**
220
+ * Unregister task types from a plugin
221
+ */
222
+ unregisterPluginTaskTypes(pluginName) {
223
+ for (const [type, entry] of Array.from(this.taskTypes.entries())) {
224
+ if (entry.plugin === pluginName) {
225
+ this.taskTypes.delete(type);
226
+ }
227
+ }
228
+ }
229
+ /**
230
+ * Get task type definition
231
+ */
232
+ getTaskType(type) {
233
+ return this.taskTypes.get(type)?.definition;
234
+ }
235
+ /**
236
+ * Get all task types
237
+ */
238
+ getAllTaskTypes() {
239
+ return Array.from(this.taskTypes.values()).map((entry) => entry.definition);
240
+ }
241
+ /**
242
+ * Get task types by plugin
243
+ */
244
+ getTaskTypesByPlugin(pluginName) {
245
+ return Array.from(this.taskTypes.values())
246
+ .filter((entry) => entry.plugin === pluginName)
247
+ .map((entry) => entry.definition);
248
+ }
249
+ // =============================================================================
250
+ // MCP Tool Registry
251
+ // =============================================================================
252
+ /**
253
+ * Register MCP tools from a plugin
254
+ */
255
+ registerMCPTools(pluginName) {
256
+ const info = this.plugins.get(pluginName);
257
+ if (!info) {
258
+ throw new PluginError(`Plugin '${pluginName}' not found`, pluginName, 'INVALID_PLUGIN');
259
+ }
260
+ const mcpTools = info.plugin.registerMCPTools?.();
261
+ if (!mcpTools || mcpTools.length === 0) {
262
+ return;
263
+ }
264
+ for (const definition of mcpTools) {
265
+ if (this.mcpTools.has(definition.name)) {
266
+ throw new PluginError(`MCP tool '${definition.name}' is already registered by plugin '${this.mcpTools.get(definition.name)?.plugin}'`, pluginName, 'DUPLICATE_PLUGIN');
267
+ }
268
+ // Add plugin metadata
269
+ definition.pluginName = pluginName;
270
+ this.mcpTools.set(definition.name, { plugin: pluginName, definition });
271
+ }
272
+ }
273
+ /**
274
+ * Unregister MCP tools from a plugin
275
+ */
276
+ unregisterPluginMCPTools(pluginName) {
277
+ for (const [name, entry] of Array.from(this.mcpTools.entries())) {
278
+ if (entry.plugin === pluginName) {
279
+ this.mcpTools.delete(name);
280
+ }
281
+ }
282
+ }
283
+ /**
284
+ * Get MCP tool definition
285
+ */
286
+ getMCPTool(name) {
287
+ return this.mcpTools.get(name)?.definition;
288
+ }
289
+ /**
290
+ * Get all MCP tools
291
+ */
292
+ getAllMCPTools() {
293
+ return Array.from(this.mcpTools.values()).map((entry) => entry.definition);
294
+ }
295
+ /**
296
+ * Get MCP tools by plugin
297
+ */
298
+ getMCPToolsByPlugin(pluginName) {
299
+ return Array.from(this.mcpTools.values())
300
+ .filter((entry) => entry.plugin === pluginName)
301
+ .map((entry) => entry.definition);
302
+ }
303
+ // =============================================================================
304
+ // CLI Command Registry
305
+ // =============================================================================
306
+ /**
307
+ * Register CLI commands from a plugin
308
+ */
309
+ registerCLICommands(pluginName) {
310
+ const info = this.plugins.get(pluginName);
311
+ if (!info) {
312
+ throw new PluginError(`Plugin '${pluginName}' not found`, pluginName, 'INVALID_PLUGIN');
313
+ }
314
+ const cliCommands = info.plugin.registerCLICommands?.();
315
+ if (!cliCommands || cliCommands.length === 0) {
316
+ return;
317
+ }
318
+ for (const definition of cliCommands) {
319
+ if (this.cliCommands.has(definition.name)) {
320
+ throw new PluginError(`CLI command '${definition.name}' is already registered by plugin '${this.cliCommands.get(definition.name)?.plugin}'`, pluginName, 'DUPLICATE_PLUGIN');
321
+ }
322
+ this.cliCommands.set(definition.name, { plugin: pluginName, definition });
323
+ // Register aliases
324
+ if (definition.aliases) {
325
+ for (const alias of definition.aliases) {
326
+ if (this.cliCommands.has(alias)) {
327
+ throw new PluginError(`CLI command alias '${alias}' is already registered`, pluginName, 'DUPLICATE_PLUGIN');
328
+ }
329
+ this.cliCommands.set(alias, { plugin: pluginName, definition });
330
+ }
331
+ }
332
+ }
333
+ }
334
+ /**
335
+ * Unregister CLI commands from a plugin
336
+ */
337
+ unregisterPluginCLICommands(pluginName) {
338
+ for (const [name, entry] of Array.from(this.cliCommands.entries())) {
339
+ if (entry.plugin === pluginName) {
340
+ this.cliCommands.delete(name);
341
+ }
342
+ }
343
+ }
344
+ /**
345
+ * Get CLI command definition
346
+ */
347
+ getCLICommand(name) {
348
+ return this.cliCommands.get(name)?.definition;
349
+ }
350
+ /**
351
+ * Get all CLI commands
352
+ */
353
+ getAllCLICommands() {
354
+ const seen = new Set();
355
+ return Array.from(this.cliCommands.values())
356
+ .map((entry) => entry.definition)
357
+ .filter((def) => {
358
+ if (seen.has(def))
359
+ return false;
360
+ seen.add(def);
361
+ return true;
362
+ });
363
+ }
364
+ /**
365
+ * Get CLI commands by plugin
366
+ */
367
+ getCLICommandsByPlugin(pluginName) {
368
+ const seen = new Set();
369
+ return Array.from(this.cliCommands.values())
370
+ .filter((entry) => entry.plugin === pluginName)
371
+ .map((entry) => entry.definition)
372
+ .filter((def) => {
373
+ if (seen.has(def))
374
+ return false;
375
+ seen.add(def);
376
+ return true;
377
+ });
378
+ }
379
+ // =============================================================================
380
+ // Memory Backend Registry
381
+ // =============================================================================
382
+ /**
383
+ * Register memory backends from a plugin
384
+ */
385
+ registerMemoryBackends(pluginName) {
386
+ const info = this.plugins.get(pluginName);
387
+ if (!info) {
388
+ throw new PluginError(`Plugin '${pluginName}' not found`, pluginName, 'INVALID_PLUGIN');
389
+ }
390
+ const memoryBackends = info.plugin.registerMemoryBackends?.();
391
+ if (!memoryBackends || memoryBackends.length === 0) {
392
+ return;
393
+ }
394
+ for (const factory of memoryBackends) {
395
+ if (this.memoryBackends.has(factory.name)) {
396
+ throw new PluginError(`Memory backend '${factory.name}' is already registered by plugin '${this.memoryBackends.get(factory.name)?.plugin}'`, pluginName, 'DUPLICATE_PLUGIN');
397
+ }
398
+ this.memoryBackends.set(factory.name, { plugin: pluginName, factory });
399
+ }
400
+ }
401
+ /**
402
+ * Unregister memory backends from a plugin
403
+ */
404
+ unregisterPluginMemoryBackends(pluginName) {
405
+ for (const [name, entry] of Array.from(this.memoryBackends.entries())) {
406
+ if (entry.plugin === pluginName) {
407
+ this.memoryBackends.delete(name);
408
+ }
409
+ }
410
+ }
411
+ /**
412
+ * Get memory backend factory
413
+ */
414
+ getMemoryBackend(name) {
415
+ return this.memoryBackends.get(name)?.factory;
416
+ }
417
+ /**
418
+ * Get all memory backends
419
+ */
420
+ getAllMemoryBackends() {
421
+ return Array.from(this.memoryBackends.values()).map((entry) => entry.factory);
422
+ }
423
+ /**
424
+ * Get memory backends by plugin
425
+ */
426
+ getMemoryBackendsByPlugin(pluginName) {
427
+ return Array.from(this.memoryBackends.values())
428
+ .filter((entry) => entry.plugin === pluginName)
429
+ .map((entry) => entry.factory);
430
+ }
431
+ // =============================================================================
432
+ // Bulk Registration
433
+ // =============================================================================
434
+ /**
435
+ * Register all extension points from a plugin
436
+ */
437
+ registerAllFromPlugin(pluginName) {
438
+ this.registerAgentTypes(pluginName);
439
+ this.registerTaskTypes(pluginName);
440
+ this.registerMCPTools(pluginName);
441
+ this.registerCLICommands(pluginName);
442
+ this.registerMemoryBackends(pluginName);
443
+ this.collectPluginMetrics(pluginName);
444
+ }
445
+ /**
446
+ * Clear all registrations (for testing)
447
+ */
448
+ clear() {
449
+ this.plugins.clear();
450
+ this.agentTypes.clear();
451
+ this.taskTypes.clear();
452
+ this.mcpTools.clear();
453
+ this.cliCommands.clear();
454
+ this.memoryBackends.clear();
455
+ }
456
+ }
457
+ //# sourceMappingURL=plugin-registry.js.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Plugins System - ADR-004 Implementation
3
+ *
4
+ * Plugin architecture for extending Claude Flow functionality.
5
+ *
6
+ * @module v3/shared/plugins
7
+ */
8
+ export type { PluginConfig, PluginContext, PluginEvent, PluginEventHandler, ClaudeFlowPlugin, PluginMetadata, IPluginRegistry, IPluginLoader, } from './types.js';
9
+ export { HiveMindPlugin, createHiveMindPlugin, type HiveMindConfig, type CollectiveDecision, type EmergentPattern, MaestroPlugin, createMaestroPlugin, type MaestroConfig, type WorkflowStep, type Workflow, type OrchestrationResult, } from './official/index.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Plugins System - ADR-004 Implementation
3
+ *
4
+ * Plugin architecture for extending Claude Flow functionality.
5
+ *
6
+ * @module v3/shared/plugins
7
+ */
8
+ // Official Plugins
9
+ export { HiveMindPlugin, createHiveMindPlugin, MaestroPlugin, createMaestroPlugin, } from './official/index.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,106 @@
1
+ /**
2
+ * HiveMind Plugin - Official Plugin (ADR-004)
3
+ *
4
+ * Implements collective intelligence and emergent behavior patterns.
5
+ * Part of the official plugin collection.
6
+ *
7
+ * @module v3/shared/plugins/official/hive-mind
8
+ */
9
+ import type { ClaudeFlowPlugin, PluginContext, PluginConfig } from '../types.js';
10
+ /**
11
+ * HiveMind configuration
12
+ */
13
+ export interface HiveMindConfig extends PluginConfig {
14
+ consensusThreshold: number;
15
+ collectiveMemoryEnabled: boolean;
16
+ emergentBehaviorEnabled: boolean;
17
+ maxVotingRounds: number;
18
+ decisionTimeout: number;
19
+ }
20
+ /**
21
+ * Collective decision
22
+ */
23
+ export interface CollectiveDecision {
24
+ id: string;
25
+ question: string;
26
+ votes: Map<string, {
27
+ agentId: string;
28
+ vote: string;
29
+ confidence: number;
30
+ }>;
31
+ consensus?: string;
32
+ consensusConfidence: number;
33
+ timestamp: Date;
34
+ }
35
+ /**
36
+ * Emergent pattern
37
+ */
38
+ export interface EmergentPattern {
39
+ id: string;
40
+ type: string;
41
+ description: string;
42
+ contributors: string[];
43
+ strength: number;
44
+ discoveredAt: Date;
45
+ }
46
+ /**
47
+ * HiveMind Plugin Implementation
48
+ */
49
+ export declare class HiveMindPlugin implements ClaudeFlowPlugin {
50
+ readonly id = "hive-mind";
51
+ readonly name = "HiveMind Collective Intelligence";
52
+ readonly version = "1.0.0";
53
+ readonly description = "Collective intelligence with consensus mechanisms and emergent behavior";
54
+ private context?;
55
+ private config;
56
+ private decisions;
57
+ private patterns;
58
+ private collectiveMemory;
59
+ constructor(config?: Partial<HiveMindConfig>);
60
+ initialize(context: PluginContext): Promise<void>;
61
+ shutdown(): Promise<void>;
62
+ /**
63
+ * Request a collective decision from the swarm
64
+ */
65
+ requestDecision(question: string, options: string[]): Promise<CollectiveDecision>;
66
+ /**
67
+ * Submit a vote for a decision
68
+ */
69
+ submitVote(decisionId: string, agentId: string, vote: string, confidence: number): boolean;
70
+ /**
71
+ * Get decision result
72
+ */
73
+ getDecision(decisionId: string): CollectiveDecision | undefined;
74
+ /**
75
+ * Detect emergent patterns from agent behavior
76
+ */
77
+ private detectEmergentPatterns;
78
+ /**
79
+ * Get emergent patterns
80
+ */
81
+ getEmergentPatterns(): EmergentPattern[];
82
+ /**
83
+ * Store in collective memory
84
+ */
85
+ storeCollective(key: string, value: unknown): void;
86
+ /**
87
+ * Retrieve from collective memory
88
+ */
89
+ retrieveCollective(key: string): unknown;
90
+ /**
91
+ * Get collective memory statistics
92
+ */
93
+ getCollectiveStats(): {
94
+ totalEntries: number;
95
+ patterns: number;
96
+ decisions: number;
97
+ topPatterns: EmergentPattern[];
98
+ };
99
+ private generateTaskKey;
100
+ private recalculateConsensus;
101
+ }
102
+ /**
103
+ * Factory function
104
+ */
105
+ export declare function createHiveMindPlugin(config?: Partial<HiveMindConfig>): HiveMindPlugin;
106
+ //# sourceMappingURL=hive-mind-plugin.d.ts.map