@cyanheads/mcp-ts-core 0.12.7 → 0.12.9

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 (242) hide show
  1. package/AGENTS.md +10 -5
  2. package/CLAUDE.md +10 -5
  3. package/README.md +12 -5
  4. package/changelog/0.12.x/0.12.8.md +55 -0
  5. package/changelog/0.12.x/0.12.9.md +36 -0
  6. package/dist/config/index.d.ts +3 -34
  7. package/dist/config/index.d.ts.map +1 -1
  8. package/dist/config/index.js +4 -26
  9. package/dist/config/index.js.map +1 -1
  10. package/dist/core/app.d.ts +0 -8
  11. package/dist/core/app.d.ts.map +1 -1
  12. package/dist/core/app.js +0 -7
  13. package/dist/core/app.js.map +1 -1
  14. package/dist/core/serverManifest.d.ts +0 -7
  15. package/dist/core/serverManifest.d.ts.map +1 -1
  16. package/dist/core/serverManifest.js +1 -13
  17. package/dist/core/serverManifest.js.map +1 -1
  18. package/dist/linter/rules/enrichment-rules.js +2 -2
  19. package/dist/linter/rules/enrichment-rules.js.map +1 -1
  20. package/dist/linter/rules/format-parity-rules.d.ts.map +1 -1
  21. package/dist/linter/rules/format-parity-rules.js +14 -36
  22. package/dist/linter/rules/format-parity-rules.js.map +1 -1
  23. package/dist/linter/rules/prompt-rules.d.ts +1 -1
  24. package/dist/linter/rules/prompt-rules.d.ts.map +1 -1
  25. package/dist/linter/rules/prompt-rules.js +2 -19
  26. package/dist/linter/rules/prompt-rules.js.map +1 -1
  27. package/dist/linter/rules/resource-rules.d.ts +1 -1
  28. package/dist/linter/rules/resource-rules.d.ts.map +1 -1
  29. package/dist/linter/rules/resource-rules.js +9 -39
  30. package/dist/linter/rules/resource-rules.js.map +1 -1
  31. package/dist/linter/rules/schema-rules.d.ts +22 -2
  32. package/dist/linter/rules/schema-rules.d.ts.map +1 -1
  33. package/dist/linter/rules/schema-rules.js +28 -5
  34. package/dist/linter/rules/schema-rules.js.map +1 -1
  35. package/dist/linter/rules/tool-rules.d.ts +1 -1
  36. package/dist/linter/rules/tool-rules.d.ts.map +1 -1
  37. package/dist/linter/rules/tool-rules.js +13 -41
  38. package/dist/linter/rules/tool-rules.js.map +1 -1
  39. package/dist/linter/validate.d.ts.map +1 -1
  40. package/dist/linter/validate.js +22 -42
  41. package/dist/linter/validate.js.map +1 -1
  42. package/dist/mcp-server/apps/appBuilders.d.ts.map +1 -1
  43. package/dist/mcp-server/apps/appBuilders.js +2 -16
  44. package/dist/mcp-server/apps/appBuilders.js.map +1 -1
  45. package/dist/mcp-server/handlerContext.d.ts +66 -0
  46. package/dist/mcp-server/handlerContext.d.ts.map +1 -0
  47. package/dist/mcp-server/handlerContext.js +71 -0
  48. package/dist/mcp-server/handlerContext.js.map +1 -0
  49. package/dist/mcp-server/inputRequired.d.ts +7 -1
  50. package/dist/mcp-server/inputRequired.d.ts.map +1 -1
  51. package/dist/mcp-server/inputRequired.js +10 -3
  52. package/dist/mcp-server/inputRequired.js.map +1 -1
  53. package/dist/mcp-server/resources/resource-registration.d.ts +2 -2
  54. package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
  55. package/dist/mcp-server/resources/resource-registration.js.map +1 -1
  56. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +14 -43
  57. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
  58. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +11 -50
  59. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
  60. package/dist/mcp-server/tools/tool-registration.d.ts +5 -9
  61. package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
  62. package/dist/mcp-server/tools/tool-registration.js +9 -11
  63. package/dist/mcp-server/tools/tool-registration.js.map +1 -1
  64. package/dist/mcp-server/tools/utils/schemaShape.d.ts +21 -0
  65. package/dist/mcp-server/tools/utils/schemaShape.d.ts.map +1 -1
  66. package/dist/mcp-server/tools/utils/schemaShape.js +8 -6
  67. package/dist/mcp-server/tools/utils/schemaShape.js.map +1 -1
  68. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +15 -43
  69. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
  70. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +31 -72
  71. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
  72. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
  73. package/dist/mcp-server/transports/http/httpErrorHandler.js +2 -1
  74. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
  75. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
  76. package/dist/mcp-server/transports/http/httpTransport.js +70 -2
  77. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
  78. package/dist/mcp-server/transports/http/landing-page/handler.d.ts.map +1 -1
  79. package/dist/mcp-server/transports/http/landing-page/handler.js +2 -1
  80. package/dist/mcp-server/transports/http/landing-page/handler.js.map +1 -1
  81. package/dist/mcp-server/transports/http/landing-page/sections/connect.d.ts.map +1 -1
  82. package/dist/mcp-server/transports/http/landing-page/sections/connect.js +9 -2
  83. package/dist/mcp-server/transports/http/landing-page/sections/connect.js.map +1 -1
  84. package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -1
  85. package/dist/mcp-server/transports/http/protectedResourceMetadata.js +2 -1
  86. package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -1
  87. package/dist/mcp-server/transports/http/publicOrigin.d.ts +11 -0
  88. package/dist/mcp-server/transports/http/publicOrigin.d.ts.map +1 -0
  89. package/dist/mcp-server/transports/http/publicOrigin.js +13 -0
  90. package/dist/mcp-server/transports/http/publicOrigin.js.map +1 -0
  91. package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -1
  92. package/dist/mcp-server/transports/http/serverCard.js +2 -1
  93. package/dist/mcp-server/transports/http/serverCard.js.map +1 -1
  94. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts +4 -0
  95. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts.map +1 -1
  96. package/dist/mcp-server/transports/http/sessionIdUtils.js +3 -13
  97. package/dist/mcp-server/transports/http/sessionIdUtils.js.map +1 -1
  98. package/dist/mcp-server/transports/http/sessionStore.d.ts +10 -2
  99. package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
  100. package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
  101. package/dist/mcp-server/transports/manager.d.ts +0 -3
  102. package/dist/mcp-server/transports/manager.d.ts.map +1 -1
  103. package/dist/mcp-server/transports/manager.js +0 -7
  104. package/dist/mcp-server/transports/manager.js.map +1 -1
  105. package/dist/services/canvas/core/CanvasRegistry.d.ts +14 -0
  106. package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
  107. package/dist/services/canvas/core/CanvasRegistry.js +3 -2
  108. package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
  109. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +16 -0
  110. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
  111. package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +78 -103
  112. package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
  113. package/dist/services/graph/core/GraphService.d.ts +3 -3
  114. package/dist/services/graph/core/GraphService.js +3 -3
  115. package/dist/services/graph/types.d.ts +2 -79
  116. package/dist/services/graph/types.d.ts.map +1 -1
  117. package/dist/services/graph/types.js +2 -2
  118. package/dist/services/index.d.ts +1 -2
  119. package/dist/services/index.d.ts.map +1 -1
  120. package/dist/services/index.js +0 -1
  121. package/dist/services/index.js.map +1 -1
  122. package/dist/services/mirror/sqlite/handle.d.ts.map +1 -1
  123. package/dist/services/mirror/sqlite/handle.js +27 -39
  124. package/dist/services/mirror/sqlite/handle.js.map +1 -1
  125. package/dist/services/mirror/sqlite/sqliteMirrorStore.js +8 -9
  126. package/dist/services/mirror/sqlite/sqliteMirrorStore.js.map +1 -1
  127. package/dist/services/mirror/types.d.ts +5 -1
  128. package/dist/services/mirror/types.d.ts.map +1 -1
  129. package/dist/services/speech/core/ISpeechProvider.d.ts +0 -24
  130. package/dist/services/speech/core/ISpeechProvider.d.ts.map +1 -1
  131. package/dist/services/speech/core/ISpeechProvider.js +1 -28
  132. package/dist/services/speech/core/ISpeechProvider.js.map +1 -1
  133. package/dist/services/speech/core/SpeechService.d.ts.map +1 -1
  134. package/dist/services/speech/core/SpeechService.js +5 -8
  135. package/dist/services/speech/core/SpeechService.js.map +1 -1
  136. package/dist/services/speech/providers/elevenlabs.provider.d.ts.map +1 -1
  137. package/dist/services/speech/providers/elevenlabs.provider.js +1 -0
  138. package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
  139. package/dist/services/speech/types.d.ts +2 -19
  140. package/dist/services/speech/types.d.ts.map +1 -1
  141. package/dist/storage/core/providerHelpers.d.ts +52 -0
  142. package/dist/storage/core/providerHelpers.d.ts.map +1 -0
  143. package/dist/storage/core/providerHelpers.js +96 -0
  144. package/dist/storage/core/providerHelpers.js.map +1 -0
  145. package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
  146. package/dist/storage/providers/cloudflare/d1Provider.js +1 -4
  147. package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
  148. package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
  149. package/dist/storage/providers/cloudflare/kvProvider.js +4 -31
  150. package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
  151. package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
  152. package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
  153. package/dist/storage/providers/cloudflare/r2Provider.js +8 -48
  154. package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
  155. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +1 -1
  156. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -1
  157. package/dist/storage/providers/fileSystem/fileSystemProvider.js +17 -86
  158. package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -1
  159. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
  160. package/dist/storage/providers/inMemory/inMemoryProvider.js +5 -38
  161. package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
  162. package/dist/storage/providers/supabase/supabaseProvider.d.ts.map +1 -1
  163. package/dist/storage/providers/supabase/supabaseProvider.js +1 -4
  164. package/dist/storage/providers/supabase/supabaseProvider.js.map +1 -1
  165. package/dist/testing/fuzz.d.ts.map +1 -1
  166. package/dist/testing/fuzz.js +17 -31
  167. package/dist/testing/fuzz.js.map +1 -1
  168. package/dist/testing/index.d.ts.map +1 -1
  169. package/dist/testing/index.js +4 -26
  170. package/dist/testing/index.js.map +1 -1
  171. package/dist/utils/internal/error-handler/types.d.ts +0 -4
  172. package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
  173. package/dist/utils/internal/logger.d.ts.map +1 -1
  174. package/dist/utils/internal/logger.js +2 -16
  175. package/dist/utils/internal/logger.js.map +1 -1
  176. package/dist/utils/internal/performance.d.ts +9 -32
  177. package/dist/utils/internal/performance.d.ts.map +1 -1
  178. package/dist/utils/internal/performance.js +175 -297
  179. package/dist/utils/internal/performance.js.map +1 -1
  180. package/dist/utils/network/fetchWithTimeout.js +1 -1
  181. package/dist/utils/network/retry.js +1 -1
  182. package/dist/utils/security/idGenerator.d.ts +3 -1
  183. package/dist/utils/security/idGenerator.d.ts.map +1 -1
  184. package/dist/utils/security/idGenerator.js +35 -43
  185. package/dist/utils/security/idGenerator.js.map +1 -1
  186. package/dist/utils/security/sanitization.d.ts +0 -7
  187. package/dist/utils/security/sanitization.d.ts.map +1 -1
  188. package/dist/utils/security/sanitization.js +4 -31
  189. package/dist/utils/security/sanitization.js.map +1 -1
  190. package/dist/utils/security/sensitiveFields.d.ts +14 -0
  191. package/dist/utils/security/sensitiveFields.d.ts.map +1 -0
  192. package/dist/utils/security/sensitiveFields.js +31 -0
  193. package/dist/utils/security/sensitiveFields.js.map +1 -0
  194. package/dist/utils/telemetry/trace.d.ts +8 -10
  195. package/dist/utils/telemetry/trace.d.ts.map +1 -1
  196. package/dist/utils/telemetry/trace.js +19 -18
  197. package/dist/utils/telemetry/trace.js.map +1 -1
  198. package/dist/utils/types/guards.d.ts +0 -102
  199. package/dist/utils/types/guards.d.ts.map +1 -1
  200. package/dist/utils/types/guards.js +0 -114
  201. package/dist/utils/types/guards.js.map +1 -1
  202. package/package.json +11 -11
  203. package/scripts/devcheck.ts +21 -14
  204. package/skills/add-provider/SKILL.md +18 -4
  205. package/skills/add-tool/SKILL.md +4 -4
  206. package/skills/api-config/SKILL.md +4 -18
  207. package/skills/api-errors/SKILL.md +2 -1
  208. package/skills/api-mirror/SKILL.md +3 -1
  209. package/skills/api-services/SKILL.md +1 -1
  210. package/skills/api-services/references/speech.md +1 -2
  211. package/skills/api-telemetry/SKILL.md +2 -2
  212. package/skills/api-utils/SKILL.md +2 -2
  213. package/skills/code-simplifier/SKILL.md +47 -20
  214. package/skills/design-mcp-server/SKILL.md +59 -101
  215. package/skills/field-test/SKILL.md +101 -17
  216. package/skills/git-wrapup/SKILL.md +68 -29
  217. package/skills/orchestrations/SKILL.md +17 -6
  218. package/skills/orchestrations/workflows/field-test-fix.md +6 -4
  219. package/skills/orchestrations/workflows/fix-wrapup-release.md +6 -4
  220. package/skills/orchestrations/workflows/greenfield-build.md +2 -2
  221. package/skills/orchestrations/workflows/maintenance-release.md +4 -2
  222. package/skills/polish-docs-meta/SKILL.md +1 -1
  223. package/skills/polish-docs-meta/references/package-meta.md +1 -1
  224. package/skills/polish-docs-meta/references/readme.md +2 -2
  225. package/skills/release-and-publish/SKILL.md +104 -23
  226. package/skills/release-pr-review/SKILL.md +147 -0
  227. package/skills/security-pass/SKILL.md +2 -2
  228. package/templates/AGENTS.md +5 -3
  229. package/templates/CLAUDE.md +5 -3
  230. package/templates/package.json +1 -1
  231. package/dist/mcp-server/transports/ITransport.d.ts +0 -15
  232. package/dist/mcp-server/transports/ITransport.d.ts.map +0 -1
  233. package/dist/mcp-server/transports/ITransport.js +0 -2
  234. package/dist/mcp-server/transports/ITransport.js.map +0 -1
  235. package/dist/services/llm/types.d.ts +0 -16
  236. package/dist/services/llm/types.d.ts.map +0 -1
  237. package/dist/services/llm/types.js +0 -9
  238. package/dist/services/llm/types.js.map +0 -1
  239. package/dist/utils/internal/health.d.ts +0 -60
  240. package/dist/utils/internal/health.d.ts.map +0 -1
  241. package/dist/utils/internal/health.js +0 -46
  242. package/dist/utils/internal/health.js.map +0 -1
@@ -1,60 +0,0 @@
1
- /**
2
- * @fileoverview Health snapshot utility to surface observability/runtime readiness.
3
- * This avoids heavy checks and focuses on quick signals for status endpoints or logs.
4
- * @module src/utils/internal/health
5
- */
6
- /**
7
- * A point-in-time snapshot of server health signals.
8
- * Intentionally lightweight — all fields are derived from already-initialized
9
- * singletons and involve no I/O, so this is safe to call at any time.
10
- */
11
- export interface HealthSnapshot {
12
- /** Core application identity pulled from the active config. */
13
- app: {
14
- /** Server name (from `MCP_SERVER_NAME` or `package.json`). */
15
- name: string;
16
- /** Server version string (from `MCP_SERVER_VERSION` or `package.json`). */
17
- version: string;
18
- /** Deployment environment (e.g. `'development'`, `'production'`). */
19
- environment: string;
20
- };
21
- /** Logger initialization state. */
22
- logging: {
23
- /** True when the logger has been fully initialized and is ready to emit records. */
24
- initialized: boolean;
25
- };
26
- /** Runtime environment classification from {@link runtimeCaps}. */
27
- runtime: {
28
- /** True when running under Node.js or Bun. */
29
- isNode: boolean;
30
- /** True when running inside a Web Worker or Cloudflare Worker. */
31
- isWorkerLike: boolean;
32
- /** True when running in a browser main thread. */
33
- isBrowserLike: boolean;
34
- };
35
- /** OpenTelemetry configuration state. */
36
- telemetry: {
37
- /** True when OpenTelemetry export is enabled (`OTEL_ENABLED=true`). */
38
- enabled: boolean;
39
- /** The OTel diagnostic log level, or `undefined` if not configured. */
40
- diagLevel: string | undefined;
41
- };
42
- }
43
- /**
44
- * Returns a lightweight, synchronous health snapshot of the running server.
45
- *
46
- * Aggregates app identity, runtime environment flags, logger state, and
47
- * OpenTelemetry configuration into a single object. Suitable for `/healthz`
48
- * endpoints, startup log lines, or diagnostic tooling.
49
- *
50
- * No I/O is performed — all data comes from already-initialized module singletons.
51
- *
52
- * @returns A {@link HealthSnapshot} reflecting current server state.
53
- * @example
54
- * ```typescript
55
- * const health = getHealthSnapshot();
56
- * logger.info('Server health', health);
57
- * ```
58
- */
59
- export declare function getHealthSnapshot(): HealthSnapshot;
60
- //# sourceMappingURL=health.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/utils/internal/health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,GAAG,EAAE;QACH,8DAA8D;QAC9D,IAAI,EAAE,MAAM,CAAC;QACb,2EAA2E;QAC3E,OAAO,EAAE,MAAM,CAAC;QAChB,qEAAqE;QACrE,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,mCAAmC;IACnC,OAAO,EAAE;QACP,oFAAoF;QACpF,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,mEAAmE;IACnE,OAAO,EAAE;QACP,8CAA8C;QAC9C,MAAM,EAAE,OAAO,CAAC;QAChB,kEAAkE;QAClE,YAAY,EAAE,OAAO,CAAC;QACtB,kDAAkD;QAClD,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,yCAAyC;IACzC,SAAS,EAAE;QACT,uEAAuE;QACvE,OAAO,EAAE,OAAO,CAAC;QACjB,uEAAuE;QACvE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;KAC/B,CAAC;CACH;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAoBlD"}
@@ -1,46 +0,0 @@
1
- /**
2
- * @fileoverview Health snapshot utility to surface observability/runtime readiness.
3
- * This avoids heavy checks and focuses on quick signals for status endpoints or logs.
4
- * @module src/utils/internal/health
5
- */
6
- import { config } from '../../config/index.js';
7
- import { logger } from './logger.js';
8
- import { runtimeCaps } from './runtime.js';
9
- /**
10
- * Returns a lightweight, synchronous health snapshot of the running server.
11
- *
12
- * Aggregates app identity, runtime environment flags, logger state, and
13
- * OpenTelemetry configuration into a single object. Suitable for `/healthz`
14
- * endpoints, startup log lines, or diagnostic tooling.
15
- *
16
- * No I/O is performed — all data comes from already-initialized module singletons.
17
- *
18
- * @returns A {@link HealthSnapshot} reflecting current server state.
19
- * @example
20
- * ```typescript
21
- * const health = getHealthSnapshot();
22
- * logger.info('Server health', health);
23
- * ```
24
- */
25
- export function getHealthSnapshot() {
26
- return {
27
- app: {
28
- name: config.mcpServerName,
29
- version: config.mcpServerVersion,
30
- environment: config.environment,
31
- },
32
- runtime: {
33
- isNode: runtimeCaps.isNode,
34
- isWorkerLike: runtimeCaps.isWorkerLike,
35
- isBrowserLike: runtimeCaps.isBrowserLike,
36
- },
37
- telemetry: {
38
- enabled: Boolean(config.openTelemetry.enabled),
39
- diagLevel: config.openTelemetry.logLevel,
40
- },
41
- logging: {
42
- initialized: logger.isInitialized(),
43
- },
44
- };
45
- }
46
- //# sourceMappingURL=health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/utils/internal/health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAwC1D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,GAAG,EAAE;YACH,IAAI,EAAE,MAAM,CAAC,aAAa;YAC1B,OAAO,EAAE,MAAM,CAAC,gBAAgB;YAChC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC;QACD,OAAO,EAAE;YACP,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,aAAa,EAAE,WAAW,CAAC,aAAa;SACzC;QACD,SAAS,EAAE;YACT,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;YAC9C,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ;SACzC;QACD,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE;SACpC;KACF,CAAC;AACJ,CAAC"}