cognitive-core 0.0.2 → 0.1.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 (329) hide show
  1. package/README.md +302 -116
  2. package/SKILL.md +193 -0
  3. package/dist/agents/index.d.ts +3 -0
  4. package/dist/agents/index.d.ts.map +1 -0
  5. package/dist/agents/index.js +5 -0
  6. package/dist/agents/index.js.map +1 -0
  7. package/dist/agents/mock-provider.d.ts +23 -0
  8. package/dist/agents/mock-provider.d.ts.map +1 -0
  9. package/dist/agents/mock-provider.js +71 -0
  10. package/dist/agents/mock-provider.js.map +1 -0
  11. package/dist/agents/types.d.ts +98 -0
  12. package/dist/agents/types.d.ts.map +1 -0
  13. package/dist/agents/types.js +44 -0
  14. package/dist/agents/types.js.map +1 -0
  15. package/dist/atlas.d.ts +196 -0
  16. package/dist/atlas.d.ts.map +1 -0
  17. package/dist/atlas.js +373 -0
  18. package/dist/atlas.js.map +1 -0
  19. package/dist/bin/cognitive-core.d.ts +18 -0
  20. package/dist/bin/cognitive-core.d.ts.map +1 -0
  21. package/dist/bin/cognitive-core.js +419 -0
  22. package/dist/bin/cognitive-core.js.map +1 -0
  23. package/dist/embeddings/bm25.d.ts +104 -0
  24. package/dist/embeddings/bm25.d.ts.map +1 -0
  25. package/dist/embeddings/bm25.js +264 -0
  26. package/dist/embeddings/bm25.js.map +1 -0
  27. package/dist/embeddings/index.d.ts +12 -0
  28. package/dist/embeddings/index.d.ts.map +1 -0
  29. package/dist/embeddings/index.js +16 -0
  30. package/dist/embeddings/index.js.map +1 -0
  31. package/dist/embeddings/manager.d.ts +112 -0
  32. package/dist/embeddings/manager.d.ts.map +1 -0
  33. package/dist/embeddings/manager.js +215 -0
  34. package/dist/embeddings/manager.js.map +1 -0
  35. package/dist/embeddings/provider.d.ts +101 -0
  36. package/dist/embeddings/provider.d.ts.map +1 -0
  37. package/dist/embeddings/provider.js +232 -0
  38. package/dist/embeddings/provider.js.map +1 -0
  39. package/dist/embeddings/vector-store.d.ts +101 -0
  40. package/dist/embeddings/vector-store.d.ts.map +1 -0
  41. package/dist/embeddings/vector-store.js +256 -0
  42. package/dist/embeddings/vector-store.js.map +1 -0
  43. package/dist/factory.d.ts +193 -0
  44. package/dist/factory.d.ts.map +1 -0
  45. package/dist/factory.js +109 -0
  46. package/dist/factory.js.map +1 -0
  47. package/dist/index.d.ts +30 -453
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +84 -509
  50. package/dist/index.js.map +1 -0
  51. package/dist/learning/analyzer.d.ts +110 -0
  52. package/dist/learning/analyzer.d.ts.map +1 -0
  53. package/dist/learning/analyzer.js +213 -0
  54. package/dist/learning/analyzer.js.map +1 -0
  55. package/dist/learning/effectiveness.d.ts +158 -0
  56. package/dist/learning/effectiveness.d.ts.map +1 -0
  57. package/dist/learning/effectiveness.js +251 -0
  58. package/dist/learning/effectiveness.js.map +1 -0
  59. package/dist/learning/index.d.ts +8 -0
  60. package/dist/learning/index.d.ts.map +1 -0
  61. package/dist/learning/index.js +11 -0
  62. package/dist/learning/index.js.map +1 -0
  63. package/dist/learning/llm-extractor.d.ts +88 -0
  64. package/dist/learning/llm-extractor.d.ts.map +1 -0
  65. package/dist/learning/llm-extractor.js +372 -0
  66. package/dist/learning/llm-extractor.js.map +1 -0
  67. package/dist/learning/meta-learner.d.ts +80 -0
  68. package/dist/learning/meta-learner.d.ts.map +1 -0
  69. package/dist/learning/meta-learner.js +355 -0
  70. package/dist/learning/meta-learner.js.map +1 -0
  71. package/dist/learning/pipeline.d.ts +65 -0
  72. package/dist/learning/pipeline.d.ts.map +1 -0
  73. package/dist/learning/pipeline.js +170 -0
  74. package/dist/learning/pipeline.js.map +1 -0
  75. package/dist/learning/playbook-extractor.d.ts +113 -0
  76. package/dist/learning/playbook-extractor.d.ts.map +1 -0
  77. package/dist/learning/playbook-extractor.js +523 -0
  78. package/dist/learning/playbook-extractor.js.map +1 -0
  79. package/dist/learning/usage-inference.d.ts +82 -0
  80. package/dist/learning/usage-inference.d.ts.map +1 -0
  81. package/dist/learning/usage-inference.js +261 -0
  82. package/dist/learning/usage-inference.js.map +1 -0
  83. package/dist/mcp/index.d.ts +6 -0
  84. package/dist/mcp/index.d.ts.map +1 -0
  85. package/dist/mcp/index.js +6 -0
  86. package/dist/mcp/index.js.map +1 -0
  87. package/dist/mcp/playbook-server.d.ts +120 -0
  88. package/dist/mcp/playbook-server.d.ts.map +1 -0
  89. package/dist/mcp/playbook-server.js +427 -0
  90. package/dist/mcp/playbook-server.js.map +1 -0
  91. package/dist/memory/curated-loader.d.ts +62 -0
  92. package/dist/memory/curated-loader.d.ts.map +1 -0
  93. package/dist/memory/curated-loader.js +106 -0
  94. package/dist/memory/curated-loader.js.map +1 -0
  95. package/dist/memory/experience.d.ts +122 -0
  96. package/dist/memory/experience.d.ts.map +1 -0
  97. package/dist/memory/experience.js +392 -0
  98. package/dist/memory/experience.js.map +1 -0
  99. package/dist/memory/index.d.ts +6 -0
  100. package/dist/memory/index.d.ts.map +1 -0
  101. package/dist/memory/index.js +9 -0
  102. package/dist/memory/index.js.map +1 -0
  103. package/dist/memory/meta.d.ts +90 -0
  104. package/dist/memory/meta.d.ts.map +1 -0
  105. package/dist/memory/meta.js +362 -0
  106. package/dist/memory/meta.js.map +1 -0
  107. package/dist/memory/playbook.d.ts +133 -0
  108. package/dist/memory/playbook.d.ts.map +1 -0
  109. package/dist/memory/playbook.js +357 -0
  110. package/dist/memory/playbook.js.map +1 -0
  111. package/dist/memory/system.d.ts +167 -0
  112. package/dist/memory/system.d.ts.map +1 -0
  113. package/dist/memory/system.js +383 -0
  114. package/dist/memory/system.js.map +1 -0
  115. package/dist/runtime/backends/acp.d.ts +67 -0
  116. package/dist/runtime/backends/acp.d.ts.map +1 -0
  117. package/dist/runtime/backends/acp.js +290 -0
  118. package/dist/runtime/backends/acp.js.map +1 -0
  119. package/dist/runtime/backends/index.d.ts +5 -0
  120. package/dist/runtime/backends/index.d.ts.map +1 -0
  121. package/dist/runtime/backends/index.js +6 -0
  122. package/dist/runtime/backends/index.js.map +1 -0
  123. package/dist/runtime/backends/mock.d.ts +67 -0
  124. package/dist/runtime/backends/mock.d.ts.map +1 -0
  125. package/dist/runtime/backends/mock.js +153 -0
  126. package/dist/runtime/backends/mock.js.map +1 -0
  127. package/dist/runtime/backends/subprocess.d.ts +56 -0
  128. package/dist/runtime/backends/subprocess.d.ts.map +1 -0
  129. package/dist/runtime/backends/subprocess.js +260 -0
  130. package/dist/runtime/backends/subprocess.js.map +1 -0
  131. package/dist/runtime/flows/learning.d.ts +73 -0
  132. package/dist/runtime/flows/learning.d.ts.map +1 -0
  133. package/dist/runtime/flows/learning.js +116 -0
  134. package/dist/runtime/flows/learning.js.map +1 -0
  135. package/dist/runtime/flows/validation.d.ts +122 -0
  136. package/dist/runtime/flows/validation.d.ts.map +1 -0
  137. package/dist/runtime/flows/validation.js +223 -0
  138. package/dist/runtime/flows/validation.js.map +1 -0
  139. package/dist/runtime/index.d.ts +6 -0
  140. package/dist/runtime/index.d.ts.map +1 -0
  141. package/dist/runtime/index.js +8 -0
  142. package/dist/runtime/index.js.map +1 -0
  143. package/dist/runtime/manager.d.ts +116 -0
  144. package/dist/runtime/manager.d.ts.map +1 -0
  145. package/dist/runtime/manager.js +416 -0
  146. package/dist/runtime/manager.js.map +1 -0
  147. package/dist/runtime/types.d.ts +138 -0
  148. package/dist/runtime/types.d.ts.map +1 -0
  149. package/dist/runtime/types.js +2 -0
  150. package/dist/runtime/types.js.map +1 -0
  151. package/dist/search/evaluator.d.ts +102 -0
  152. package/dist/search/evaluator.d.ts.map +1 -0
  153. package/dist/search/evaluator.js +352 -0
  154. package/dist/search/evaluator.js.map +1 -0
  155. package/dist/search/index.d.ts +7 -0
  156. package/dist/search/index.d.ts.map +1 -0
  157. package/dist/search/index.js +11 -0
  158. package/dist/search/index.js.map +1 -0
  159. package/dist/search/refinement-loop.d.ts +73 -0
  160. package/dist/search/refinement-loop.d.ts.map +1 -0
  161. package/dist/search/refinement-loop.js +245 -0
  162. package/dist/search/refinement-loop.js.map +1 -0
  163. package/dist/search/refinement-types.d.ts +154 -0
  164. package/dist/search/refinement-types.d.ts.map +1 -0
  165. package/dist/search/refinement-types.js +99 -0
  166. package/dist/search/refinement-types.js.map +1 -0
  167. package/dist/search/router.d.ts +61 -0
  168. package/dist/search/router.d.ts.map +1 -0
  169. package/dist/search/router.js +197 -0
  170. package/dist/search/router.js.map +1 -0
  171. package/dist/search/solver.d.ts +75 -0
  172. package/dist/search/solver.d.ts.map +1 -0
  173. package/dist/search/solver.js +216 -0
  174. package/dist/search/solver.js.map +1 -0
  175. package/dist/search/verification-runner.d.ts +125 -0
  176. package/dist/search/verification-runner.d.ts.map +1 -0
  177. package/dist/search/verification-runner.js +440 -0
  178. package/dist/search/verification-runner.js.map +1 -0
  179. package/dist/surfacing/index.d.ts +2 -0
  180. package/dist/surfacing/index.d.ts.map +1 -0
  181. package/dist/surfacing/index.js +2 -0
  182. package/dist/surfacing/index.js.map +1 -0
  183. package/dist/surfacing/skill-library.d.ts +158 -0
  184. package/dist/surfacing/skill-library.d.ts.map +1 -0
  185. package/dist/surfacing/skill-library.js +429 -0
  186. package/dist/surfacing/skill-library.js.map +1 -0
  187. package/dist/types/config.d.ts +1113 -0
  188. package/dist/types/config.d.ts.map +1 -0
  189. package/dist/types/config.js +274 -0
  190. package/dist/types/config.js.map +1 -0
  191. package/dist/types/index.d.ts +9 -0
  192. package/dist/types/index.d.ts.map +1 -0
  193. package/dist/types/index.js +14 -0
  194. package/dist/types/index.js.map +1 -0
  195. package/dist/types/memory.d.ts +339 -0
  196. package/dist/types/memory.d.ts.map +1 -0
  197. package/dist/types/memory.js +207 -0
  198. package/dist/types/memory.js.map +1 -0
  199. package/dist/types/meta.d.ts +146 -0
  200. package/dist/types/meta.d.ts.map +1 -0
  201. package/dist/types/meta.js +51 -0
  202. package/dist/types/meta.js.map +1 -0
  203. package/dist/types/outcome.d.ts +42 -0
  204. package/dist/types/outcome.d.ts.map +1 -0
  205. package/dist/types/outcome.js +50 -0
  206. package/dist/types/outcome.js.map +1 -0
  207. package/dist/types/playbook.d.ts +119 -0
  208. package/dist/types/playbook.d.ts.map +1 -0
  209. package/dist/types/playbook.js +71 -0
  210. package/dist/types/playbook.js.map +1 -0
  211. package/dist/types/step.d.ts +44 -0
  212. package/dist/types/step.d.ts.map +1 -0
  213. package/dist/types/step.js +32 -0
  214. package/dist/types/step.js.map +1 -0
  215. package/dist/types/task.d.ts +91 -0
  216. package/dist/types/task.d.ts.map +1 -0
  217. package/dist/types/task.js +39 -0
  218. package/dist/types/task.js.map +1 -0
  219. package/dist/types/trajectory.d.ts +221 -0
  220. package/dist/types/trajectory.d.ts.map +1 -0
  221. package/dist/types/trajectory.js +60 -0
  222. package/dist/types/trajectory.js.map +1 -0
  223. package/dist/utils/index.d.ts +4 -0
  224. package/dist/utils/index.d.ts.map +1 -0
  225. package/dist/utils/index.js +4 -0
  226. package/dist/utils/index.js.map +1 -0
  227. package/dist/utils/similarity.d.ts +31 -0
  228. package/dist/utils/similarity.d.ts.map +1 -0
  229. package/dist/utils/similarity.js +107 -0
  230. package/dist/utils/similarity.js.map +1 -0
  231. package/dist/utils/storage.d.ts +106 -0
  232. package/dist/utils/storage.d.ts.map +1 -0
  233. package/dist/utils/storage.js +203 -0
  234. package/dist/utils/storage.js.map +1 -0
  235. package/dist/utils/validation.d.ts +129 -0
  236. package/dist/utils/validation.d.ts.map +1 -0
  237. package/dist/utils/validation.js +171 -0
  238. package/dist/utils/validation.js.map +1 -0
  239. package/package.json +50 -34
  240. package/scripts/migrate-to-playbooks.ts +307 -0
  241. package/src/agents/index.ts +14 -0
  242. package/src/agents/mock-provider.ts +93 -0
  243. package/src/agents/types.ts +137 -0
  244. package/src/atlas.ts +560 -0
  245. package/src/bin/cognitive-core.ts +470 -0
  246. package/src/embeddings/bm25.ts +337 -0
  247. package/src/embeddings/index.ts +39 -0
  248. package/src/embeddings/manager.ts +288 -0
  249. package/src/embeddings/provider.ts +311 -0
  250. package/src/embeddings/vector-store.ts +353 -0
  251. package/src/factory.ts +263 -0
  252. package/src/index.ts +246 -0
  253. package/src/learning/analyzer.ts +335 -0
  254. package/src/learning/effectiveness.ts +428 -0
  255. package/src/learning/index.ts +58 -0
  256. package/src/learning/llm-extractor.ts +542 -0
  257. package/src/learning/meta-learner.ts +516 -0
  258. package/src/learning/pipeline.ts +244 -0
  259. package/src/learning/playbook-extractor.ts +702 -0
  260. package/src/learning/usage-inference.ts +372 -0
  261. package/src/mcp/index.ts +12 -0
  262. package/src/mcp/playbook-server.ts +565 -0
  263. package/src/memory/curated-loader.ts +160 -0
  264. package/src/memory/experience.ts +515 -0
  265. package/src/memory/index.ts +27 -0
  266. package/src/memory/meta.ts +506 -0
  267. package/src/memory/playbook.ts +493 -0
  268. package/src/memory/system.ts +551 -0
  269. package/src/runtime/backends/acp.ts +378 -0
  270. package/src/runtime/backends/index.ts +24 -0
  271. package/src/runtime/backends/mock.ts +218 -0
  272. package/src/runtime/backends/subprocess.ts +356 -0
  273. package/src/runtime/flows/learning.ts +183 -0
  274. package/src/runtime/flows/validation.ts +381 -0
  275. package/src/runtime/index.ts +53 -0
  276. package/src/runtime/manager.ts +541 -0
  277. package/src/runtime/types.ts +157 -0
  278. package/src/search/evaluator.ts +474 -0
  279. package/src/search/index.ts +59 -0
  280. package/src/search/refinement-loop.ts +363 -0
  281. package/src/search/refinement-types.ts +159 -0
  282. package/src/search/router.ts +261 -0
  283. package/src/search/solver.ts +303 -0
  284. package/src/search/verification-runner.ts +570 -0
  285. package/src/surfacing/index.ts +6 -0
  286. package/src/surfacing/skill-library.ts +594 -0
  287. package/src/types/config.ts +333 -0
  288. package/src/types/index.ts +130 -0
  289. package/src/types/memory.ts +270 -0
  290. package/src/types/meta.ts +218 -0
  291. package/src/types/outcome.ts +66 -0
  292. package/src/types/playbook.ts +196 -0
  293. package/src/types/step.ts +40 -0
  294. package/src/types/task.ts +52 -0
  295. package/src/types/trajectory.ts +80 -0
  296. package/src/utils/index.ts +38 -0
  297. package/src/utils/similarity.ts +139 -0
  298. package/src/utils/storage.ts +249 -0
  299. package/src/utils/validation.ts +286 -0
  300. package/tests/embeddings/bm25.test.ts +130 -0
  301. package/tests/embeddings/manager.test.ts +205 -0
  302. package/tests/integration/atlas.test.ts +266 -0
  303. package/tests/integration/e2e.test.ts +929 -0
  304. package/tests/learning/analyzer.test.ts +426 -0
  305. package/tests/learning/effectiveness.test.ts +542 -0
  306. package/tests/learning/pipeline.test.ts +176 -0
  307. package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
  308. package/tests/learning/usage-inference.test.ts +254 -0
  309. package/tests/mcp/playbook-server.test.ts +252 -0
  310. package/tests/memory/experience.test.ts +198 -0
  311. package/tests/memory/playbook.test.ts +338 -0
  312. package/tests/memory/provenance.test.ts +639 -0
  313. package/tests/memory/system.test.ts +325 -0
  314. package/tests/runtime/agent-manager.test.ts +512 -0
  315. package/tests/runtime/mock-backend.test.ts +248 -0
  316. package/tests/search/refinement-loop.test.ts +468 -0
  317. package/tests/search/refinement.test.ts +267 -0
  318. package/tests/search/router.test.ts +427 -0
  319. package/tests/surfacing/skill-library.test.ts +292 -0
  320. package/tests/types/outcome.test.ts +147 -0
  321. package/tests/types/step.test.ts +133 -0
  322. package/tests/types/task.test.ts +158 -0
  323. package/tests/types/trajectory.test.ts +253 -0
  324. package/tests/utils/similarity.test.ts +188 -0
  325. package/tests/utils/validation.test.ts +252 -0
  326. package/tsconfig.json +25 -0
  327. package/vitest.config.ts +22 -0
  328. package/dist/index.d.mts +0 -466
  329. package/dist/index.mjs +0 -478
@@ -0,0 +1,427 @@
1
+ /**
2
+ * MCP Playbook Server
3
+ * Exposes playbook retrieval via Model Context Protocol
4
+ *
5
+ * @deprecated This module is deprecated in favor of the CLI interface and SKILL.md approach.
6
+ * See /SKILL.md for instructions on how agents should interact with cognitive-core.
7
+ * Use the CLI at bin/cognitive-core instead of this MCP server.
8
+ *
9
+ * This server provides on-demand access to the full playbook library,
10
+ * allowing agents to search for specific guidance beyond what's in their
11
+ * system prompt.
12
+ */
13
+ import { validateMCPArgs, MCPSearchPlaybooksSchema, MCPGetPlaybookDetailsSchema, MCPGetPlaybooksByDomainSchema, } from '../utils/validation.js';
14
+ /**
15
+ * Default configuration
16
+ */
17
+ const DEFAULT_CONFIG = {
18
+ enabled: true,
19
+ exposeResources: true,
20
+ exposeTools: true,
21
+ maxResults: 5,
22
+ minConfidence: 0.3,
23
+ includeRefinements: true,
24
+ enableDomainFiltering: true,
25
+ };
26
+ /**
27
+ * MCP Playbook Server
28
+ * Provides playbook search tools for agents
29
+ */
30
+ export class PlaybookMCPServer {
31
+ playbooks;
32
+ config;
33
+ constructor(playbooks, _skillLibrary, config) {
34
+ this.playbooks = playbooks;
35
+ this.config = { ...DEFAULT_CONFIG, ...config };
36
+ }
37
+ /**
38
+ * Get available MCP tools
39
+ */
40
+ getTools() {
41
+ return [
42
+ {
43
+ name: 'search_playbooks',
44
+ description: 'Search for playbooks that provide guidance for solving a problem. ' +
45
+ 'Returns strategies, tactics, and success indicators for matching playbooks.',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ query: {
50
+ type: 'string',
51
+ description: 'Description of the problem or task to find playbooks for',
52
+ },
53
+ domain: {
54
+ type: 'string',
55
+ description: 'Optional domain to filter results (e.g., "code", "testing", "refactoring")',
56
+ },
57
+ maxResults: {
58
+ type: 'number',
59
+ description: 'Maximum number of playbooks to return (default: 5)',
60
+ },
61
+ },
62
+ required: ['query'],
63
+ },
64
+ },
65
+ {
66
+ name: 'get_playbook_details',
67
+ description: 'Get detailed information about a specific playbook by ID, ' +
68
+ 'including full tactics, steps, refinements, and usage statistics.',
69
+ inputSchema: {
70
+ type: 'object',
71
+ properties: {
72
+ playbookId: {
73
+ type: 'string',
74
+ description: 'The ID of the playbook to retrieve',
75
+ },
76
+ },
77
+ required: ['playbookId'],
78
+ },
79
+ },
80
+ {
81
+ name: 'list_domains',
82
+ description: 'List all domains that have playbooks available.',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {},
86
+ },
87
+ },
88
+ {
89
+ name: 'get_playbooks_by_domain',
90
+ description: 'Get all playbooks for a specific domain.',
91
+ inputSchema: {
92
+ type: 'object',
93
+ properties: {
94
+ domain: {
95
+ type: 'string',
96
+ description: 'The domain to get playbooks for',
97
+ },
98
+ maxResults: {
99
+ type: 'number',
100
+ description: 'Maximum number of playbooks to return (default: 10)',
101
+ },
102
+ },
103
+ required: ['domain'],
104
+ },
105
+ },
106
+ ];
107
+ }
108
+ /**
109
+ * Handle an MCP tool call
110
+ */
111
+ async handleToolCall(call) {
112
+ try {
113
+ switch (call.name) {
114
+ case 'search_playbooks':
115
+ return await this.handleSearchPlaybooks(call.arguments);
116
+ case 'get_playbook_details':
117
+ return await this.handleGetPlaybookDetails(call.arguments);
118
+ case 'list_domains':
119
+ return await this.handleListDomains();
120
+ case 'get_playbooks_by_domain':
121
+ return await this.handleGetPlaybooksByDomain(call.arguments);
122
+ default:
123
+ return {
124
+ content: [{ type: 'text', text: `Unknown tool: ${call.name}` }],
125
+ isError: true,
126
+ };
127
+ }
128
+ }
129
+ catch (error) {
130
+ return {
131
+ content: [
132
+ {
133
+ type: 'text',
134
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
135
+ },
136
+ ],
137
+ isError: true,
138
+ };
139
+ }
140
+ }
141
+ /**
142
+ * Handle search_playbooks tool call
143
+ */
144
+ async handleSearchPlaybooks(args) {
145
+ // Validate arguments
146
+ const validated = validateMCPArgs(MCPSearchPlaybooksSchema, args, 'search_playbooks');
147
+ const { query, domain } = validated;
148
+ const maxResults = validated.maxResults ?? this.config.maxResults;
149
+ const matches = await this.playbooks.findMatching(query, {
150
+ k: maxResults,
151
+ domains: domain ? [domain] : undefined,
152
+ minConfidence: this.config.minConfidence,
153
+ excludeAntiPatterns: true,
154
+ });
155
+ if (matches.length === 0) {
156
+ return {
157
+ content: [
158
+ {
159
+ type: 'text',
160
+ text: 'No playbooks found matching your query. Try a different description or broader search terms.',
161
+ },
162
+ ],
163
+ };
164
+ }
165
+ const results = matches.map((m) => this.formatPlaybookForSearch(m));
166
+ const formattedResults = results
167
+ .map((r) => this.formatSearchResultAsText(r))
168
+ .join('\n\n---\n\n');
169
+ return {
170
+ content: [{ type: 'text', text: formattedResults }],
171
+ };
172
+ }
173
+ /**
174
+ * Handle get_playbook_details tool call
175
+ */
176
+ async handleGetPlaybookDetails(args) {
177
+ // Validate arguments
178
+ const validated = validateMCPArgs(MCPGetPlaybookDetailsSchema, args, 'get_playbook_details');
179
+ const playbook = await this.playbooks.get(validated.playbookId);
180
+ if (!playbook) {
181
+ return {
182
+ content: [
183
+ {
184
+ type: 'text',
185
+ text: `Playbook not found: ${validated.playbookId}`,
186
+ },
187
+ ],
188
+ isError: true,
189
+ };
190
+ }
191
+ const details = this.formatPlaybookDetails(playbook);
192
+ return {
193
+ content: [{ type: 'text', text: details }],
194
+ };
195
+ }
196
+ /**
197
+ * Handle list_domains tool call
198
+ */
199
+ async handleListDomains() {
200
+ const allPlaybooks = await this.playbooks.getAll();
201
+ const domains = new Set();
202
+ for (const playbook of allPlaybooks) {
203
+ for (const domain of playbook.applicability.domains) {
204
+ domains.add(domain);
205
+ }
206
+ }
207
+ const domainList = Array.from(domains).sort();
208
+ if (domainList.length === 0) {
209
+ return {
210
+ content: [
211
+ {
212
+ type: 'text',
213
+ text: 'No domains found. Playbooks may not have domain assignments yet.',
214
+ },
215
+ ],
216
+ };
217
+ }
218
+ const text = `Available domains:\n${domainList.map((d) => ` - ${d}`).join('\n')}`;
219
+ return {
220
+ content: [{ type: 'text', text }],
221
+ };
222
+ }
223
+ /**
224
+ * Handle get_playbooks_by_domain tool call
225
+ */
226
+ async handleGetPlaybooksByDomain(args) {
227
+ // Validate arguments
228
+ const validated = validateMCPArgs(MCPGetPlaybooksByDomainSchema, args, 'get_playbooks_by_domain');
229
+ const { domain } = validated;
230
+ const maxResults = validated.maxResults ?? 10;
231
+ const allPlaybooks = await this.playbooks.getAll();
232
+ const domainPlaybooks = allPlaybooks
233
+ .filter((p) => p.applicability.domains.includes(domain))
234
+ .sort((a, b) => b.confidence - a.confidence)
235
+ .slice(0, maxResults);
236
+ if (domainPlaybooks.length === 0) {
237
+ return {
238
+ content: [
239
+ {
240
+ type: 'text',
241
+ text: `No playbooks found for domain: ${domain}`,
242
+ },
243
+ ],
244
+ };
245
+ }
246
+ const formatted = domainPlaybooks
247
+ .map((p) => this.formatPlaybookSummary(p))
248
+ .join('\n\n');
249
+ return {
250
+ content: [{ type: 'text', text: formatted }],
251
+ };
252
+ }
253
+ /**
254
+ * Format playbook match for search results
255
+ */
256
+ formatPlaybookForSearch(match) {
257
+ const { playbook, score, matchType } = match;
258
+ const { successCount, failureCount } = playbook.evolution;
259
+ const totalUses = successCount + failureCount;
260
+ return {
261
+ id: playbook.id,
262
+ name: playbook.name,
263
+ confidence: playbook.confidence,
264
+ matchScore: score,
265
+ matchType,
266
+ strategy: playbook.guidance.strategy,
267
+ tactics: playbook.guidance.tactics,
268
+ successRate: totalUses > 0 ? successCount / totalUses : 0,
269
+ domains: playbook.applicability.domains,
270
+ };
271
+ }
272
+ /**
273
+ * Format search result as text
274
+ */
275
+ formatSearchResultAsText(result) {
276
+ const lines = [];
277
+ lines.push(`## ${result.name}`);
278
+ lines.push(`ID: ${result.id}`);
279
+ lines.push(`Match: ${Math.round(result.matchScore * 100)}% (${result.matchType})`);
280
+ lines.push(`Confidence: ${Math.round(result.confidence * 100)}%`);
281
+ lines.push(`Success Rate: ${Math.round(result.successRate * 100)}%`);
282
+ if (result.domains.length > 0) {
283
+ lines.push(`Domains: ${result.domains.join(', ')}`);
284
+ }
285
+ lines.push('');
286
+ lines.push(`**Strategy**: ${result.strategy}`);
287
+ if (result.tactics.length > 0) {
288
+ lines.push('**Tactics**:');
289
+ for (const tactic of result.tactics.slice(0, 5)) {
290
+ lines.push(` - ${tactic}`);
291
+ }
292
+ if (result.tactics.length > 5) {
293
+ lines.push(` ... and ${result.tactics.length - 5} more`);
294
+ }
295
+ }
296
+ return lines.join('\n');
297
+ }
298
+ /**
299
+ * Format playbook summary
300
+ */
301
+ formatPlaybookSummary(playbook) {
302
+ const lines = [];
303
+ const { successCount, failureCount } = playbook.evolution;
304
+ const totalUses = successCount + failureCount;
305
+ const successRate = totalUses > 0 ? successCount / totalUses : 0;
306
+ lines.push(`## ${playbook.name}`);
307
+ lines.push(`ID: ${playbook.id}`);
308
+ lines.push(`Confidence: ${Math.round(playbook.confidence * 100)}%`);
309
+ lines.push(`Uses: ${totalUses} (${Math.round(successRate * 100)}% success)`);
310
+ lines.push('');
311
+ lines.push(`**Strategy**: ${playbook.guidance.strategy}`);
312
+ return lines.join('\n');
313
+ }
314
+ /**
315
+ * Format full playbook details
316
+ */
317
+ formatPlaybookDetails(playbook) {
318
+ const lines = [];
319
+ const { successCount, failureCount } = playbook.evolution;
320
+ const totalUses = successCount + failureCount;
321
+ const successRate = totalUses > 0 ? successCount / totalUses : 0;
322
+ lines.push(`# ${playbook.name}`);
323
+ lines.push(`ID: ${playbook.id}`);
324
+ lines.push(`Version: ${playbook.evolution.version}`);
325
+ lines.push(`Confidence: ${Math.round(playbook.confidence * 100)}%`);
326
+ lines.push(`Complexity: ${playbook.complexity}`);
327
+ lines.push(`Estimated Effort: ${playbook.estimatedEffort} steps`);
328
+ lines.push('');
329
+ // Applicability
330
+ lines.push('## Applicability');
331
+ if (playbook.applicability.situations.length > 0) {
332
+ lines.push('**When to use**:');
333
+ for (const sit of playbook.applicability.situations) {
334
+ lines.push(` - ${sit}`);
335
+ }
336
+ }
337
+ if (playbook.applicability.triggers.length > 0) {
338
+ lines.push('**Triggers**:');
339
+ for (const trigger of playbook.applicability.triggers) {
340
+ lines.push(` - ${trigger}`);
341
+ }
342
+ }
343
+ if (playbook.applicability.antiPatterns.length > 0) {
344
+ lines.push('**Avoid when**:');
345
+ for (const anti of playbook.applicability.antiPatterns) {
346
+ lines.push(` - ${anti}`);
347
+ }
348
+ }
349
+ if (playbook.applicability.domains.length > 0) {
350
+ lines.push(`**Domains**: ${playbook.applicability.domains.join(', ')}`);
351
+ }
352
+ lines.push('');
353
+ // Guidance
354
+ lines.push('## Guidance');
355
+ lines.push(`**Strategy**: ${playbook.guidance.strategy}`);
356
+ if (playbook.guidance.tactics.length > 0) {
357
+ lines.push('**Tactics**:');
358
+ for (const tactic of playbook.guidance.tactics) {
359
+ lines.push(` - ${tactic}`);
360
+ }
361
+ }
362
+ if (playbook.guidance.steps && playbook.guidance.steps.length > 0) {
363
+ lines.push('**Steps**:');
364
+ for (let i = 0; i < playbook.guidance.steps.length; i++) {
365
+ lines.push(` ${i + 1}. ${playbook.guidance.steps[i]}`);
366
+ }
367
+ }
368
+ lines.push('');
369
+ // Verification
370
+ lines.push('## Verification');
371
+ if (playbook.verification.successIndicators.length > 0) {
372
+ lines.push('**Success indicators**:');
373
+ for (const ind of playbook.verification.successIndicators) {
374
+ lines.push(` - ${ind}`);
375
+ }
376
+ }
377
+ if (playbook.verification.failureIndicators.length > 0) {
378
+ lines.push('**Failure indicators**:');
379
+ for (const ind of playbook.verification.failureIndicators) {
380
+ lines.push(` - ${ind}`);
381
+ }
382
+ }
383
+ lines.push('');
384
+ // Statistics
385
+ lines.push('## Statistics');
386
+ lines.push(`- Total uses: ${totalUses}`);
387
+ lines.push(`- Success rate: ${Math.round(successRate * 100)}%`);
388
+ lines.push(`- Successes: ${successCount}`);
389
+ lines.push(`- Failures: ${failureCount}`);
390
+ lines.push('');
391
+ // Refinements (if enabled)
392
+ if (this.config.includeRefinements &&
393
+ playbook.evolution.refinements.length > 0) {
394
+ lines.push('## Context-Specific Refinements');
395
+ for (const ref of playbook.evolution.refinements) {
396
+ lines.push(`- **${ref.context}**: ${ref.addition}`);
397
+ }
398
+ lines.push('');
399
+ }
400
+ // Failure modes
401
+ if (playbook.evolution.failures.length > 0) {
402
+ lines.push('## Known Failure Modes');
403
+ for (const failure of playbook.evolution.failures.slice(0, 5)) {
404
+ lines.push(`- ${failure.context}: ${failure.failureMode}`);
405
+ }
406
+ lines.push('');
407
+ }
408
+ return lines.join('\n');
409
+ }
410
+ /**
411
+ * Get server info for MCP protocol
412
+ */
413
+ getServerInfo() {
414
+ return {
415
+ name: 'atlas-playbook-server',
416
+ version: '1.0.0',
417
+ description: 'MCP server providing access to the Atlas playbook library for on-demand guidance retrieval',
418
+ };
419
+ }
420
+ }
421
+ /**
422
+ * Create an MCP playbook server
423
+ */
424
+ export function createPlaybookMCPServer(playbooks, skillLibrary, config) {
425
+ return new PlaybookMCPServer(playbooks, skillLibrary, config);
426
+ }
427
+ //# sourceMappingURL=playbook-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook-server.js","sourceRoot":"","sources":["../../src/mcp/playbook-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Curated Playbook Loader
3
+ *
4
+ * Loads playbooks from JSON files on disk and manages them separately
5
+ * from runtime-extracted playbooks. Supports a --recreate workflow:
6
+ * drop all curated playbooks and reload from source files without
7
+ * losing extracted or imported playbooks.
8
+ *
9
+ * Inspired by Dash's separation of curated knowledge (file-loaded)
10
+ * vs learnings (runtime-discovered).
11
+ */
12
+ import type { PlaybookLibrary } from './playbook.js';
13
+ /**
14
+ * Schema for a curated playbook JSON file
15
+ */
16
+ export interface CuratedPlaybookFile {
17
+ name: string;
18
+ applicability: {
19
+ situations: string[];
20
+ triggers?: string[];
21
+ antiPatterns?: string[];
22
+ domains: string[];
23
+ };
24
+ guidance: {
25
+ strategy: string;
26
+ tactics: string[];
27
+ steps?: string[];
28
+ codeExample?: string;
29
+ };
30
+ verification?: {
31
+ successIndicators?: string[];
32
+ failureIndicators?: string[];
33
+ rollbackStrategy?: string;
34
+ };
35
+ confidence?: number;
36
+ complexity?: 'simple' | 'moderate' | 'complex';
37
+ estimatedEffort?: number;
38
+ curatedBy?: string;
39
+ }
40
+ /**
41
+ * Result of a curated playbook load operation
42
+ */
43
+ export interface CuratedLoadResult {
44
+ loaded: number;
45
+ skipped: number;
46
+ errors: Array<{
47
+ file: string;
48
+ error: string;
49
+ }>;
50
+ recreated: boolean;
51
+ }
52
+ /**
53
+ * Load curated playbooks from a directory of JSON files into the library.
54
+ *
55
+ * @param curatedDir - Directory containing curated playbook JSON files
56
+ * @param library - PlaybookLibrary to load into
57
+ * @param options.recreate - If true, delete existing curated playbooks before loading
58
+ */
59
+ export declare function loadCuratedPlaybooks(curatedDir: string, library: PlaybookLibrary, options?: {
60
+ recreate?: boolean;
61
+ }): Promise<CuratedLoadResult>;
62
+ //# sourceMappingURL=curated-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curated-loader.d.ts","sourceRoot":"","sources":["../../src/memory/curated-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE;QACb,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CA2F5B"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Curated Playbook Loader
3
+ *
4
+ * Loads playbooks from JSON files on disk and manages them separately
5
+ * from runtime-extracted playbooks. Supports a --recreate workflow:
6
+ * drop all curated playbooks and reload from source files without
7
+ * losing extracted or imported playbooks.
8
+ *
9
+ * Inspired by Dash's separation of curated knowledge (file-loaded)
10
+ * vs learnings (runtime-discovered).
11
+ */
12
+ import { readFile, readdir, stat } from 'node:fs/promises';
13
+ import { join, relative } from 'node:path';
14
+ import { existsSync } from 'node:fs';
15
+ import { createPlaybook } from '../types/index.js';
16
+ /**
17
+ * Load curated playbooks from a directory of JSON files into the library.
18
+ *
19
+ * @param curatedDir - Directory containing curated playbook JSON files
20
+ * @param library - PlaybookLibrary to load into
21
+ * @param options.recreate - If true, delete existing curated playbooks before loading
22
+ */
23
+ export async function loadCuratedPlaybooks(curatedDir, library, options) {
24
+ const result = {
25
+ loaded: 0,
26
+ skipped: 0,
27
+ errors: [],
28
+ recreated: false,
29
+ };
30
+ if (!existsSync(curatedDir)) {
31
+ return result;
32
+ }
33
+ // Recreate: drop all curated playbooks first
34
+ if (options?.recreate) {
35
+ await library.deleteByOrigin('curated');
36
+ result.recreated = true;
37
+ }
38
+ // Find all JSON files in the directory (non-recursive)
39
+ const files = await readdir(curatedDir);
40
+ const jsonFiles = files.filter((f) => f.endsWith('.json'));
41
+ for (const file of jsonFiles) {
42
+ const filePath = join(curatedDir, file);
43
+ const fileStat = await stat(filePath);
44
+ if (!fileStat.isFile())
45
+ continue;
46
+ try {
47
+ const content = await readFile(filePath, 'utf-8');
48
+ const parsed = JSON.parse(content);
49
+ // Validate required fields
50
+ if (!parsed.name || !parsed.applicability || !parsed.guidance) {
51
+ result.errors.push({
52
+ file,
53
+ error: 'Missing required fields: name, applicability, guidance',
54
+ });
55
+ continue;
56
+ }
57
+ // Check if this curated playbook already exists (by name)
58
+ const existing = await library.getByName(parsed.name);
59
+ if (existing && !options?.recreate) {
60
+ result.skipped++;
61
+ continue;
62
+ }
63
+ const relativePath = relative(process.cwd(), filePath);
64
+ const provenance = {
65
+ origin: 'curated',
66
+ sourceFile: relativePath,
67
+ curatedBy: parsed.curatedBy,
68
+ recordedAt: new Date(),
69
+ };
70
+ const playbook = createPlaybook({
71
+ name: parsed.name,
72
+ applicability: {
73
+ situations: parsed.applicability.situations,
74
+ triggers: parsed.applicability.triggers ?? [],
75
+ antiPatterns: parsed.applicability.antiPatterns ?? [],
76
+ domains: parsed.applicability.domains,
77
+ },
78
+ guidance: {
79
+ strategy: parsed.guidance.strategy,
80
+ tactics: parsed.guidance.tactics,
81
+ steps: parsed.guidance.steps,
82
+ codeExample: parsed.guidance.codeExample,
83
+ },
84
+ verification: {
85
+ successIndicators: parsed.verification?.successIndicators ?? [],
86
+ failureIndicators: parsed.verification?.failureIndicators ?? [],
87
+ rollbackStrategy: parsed.verification?.rollbackStrategy,
88
+ },
89
+ provenance,
90
+ confidence: parsed.confidence ?? 0.7, // Curated starts higher than extracted (0.3)
91
+ complexity: parsed.complexity ?? 'moderate',
92
+ estimatedEffort: parsed.estimatedEffort ?? 3,
93
+ });
94
+ await library.add(playbook);
95
+ result.loaded++;
96
+ }
97
+ catch (error) {
98
+ result.errors.push({
99
+ file,
100
+ error: error instanceof Error ? error.message : String(error),
101
+ });
102
+ }
103
+ }
104
+ return result;
105
+ }
106
+ //# sourceMappingURL=curated-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curated-loader.js","sourceRoot":"","sources":["../../src/memory/curated-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyCnD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,OAAwB,EACxB,OAAgC;IAEhC,MAAM,MAAM,GAAsB;QAChC,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,KAAK;KACjB,CAAC;IAEF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,uDAAuD;IACvD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,SAAS;QAEjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwB,CAAC;YAE1D,2BAA2B;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,IAAI;oBACJ,KAAK,EAAE,wDAAwD;iBAChE,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACnC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;YACvD,MAAM,UAAU,GAAuB;gBACrC,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU,EAAE,IAAI,IAAI,EAAE;aACvB,CAAC;YAEF,MAAM,QAAQ,GAAG,cAAc,CAAC;gBAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,aAAa,EAAE;oBACb,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU;oBAC3C,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE;oBAC7C,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY,IAAI,EAAE;oBACrD,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO;iBACtC;gBACD,QAAQ,EAAE;oBACR,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;oBAClC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;oBAChC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;oBAC5B,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW;iBACzC;gBACD,YAAY,EAAE;oBACZ,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,IAAI,EAAE;oBAC/D,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,IAAI,EAAE;oBAC/D,gBAAgB,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB;iBACxD;gBACD,UAAU;gBACV,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE,6CAA6C;gBACnF,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,UAAU;gBAC3C,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC;aAC7C,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI;gBACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}