agent-switchboard 0.1.26 → 0.1.28

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 (97) hide show
  1. package/README.md +37 -11
  2. package/dist/commands/distribution.js +2 -2
  3. package/dist/commands/distribution.js.map +1 -1
  4. package/dist/commands/library.d.ts +1 -1
  5. package/dist/commands/library.js +5 -6
  6. package/dist/commands/library.js.map +1 -1
  7. package/dist/config/application-config.d.ts +37 -0
  8. package/dist/config/application-config.js +83 -0
  9. package/dist/config/application-config.js.map +1 -0
  10. package/dist/config/layered-config.js +43 -2
  11. package/dist/config/layered-config.js.map +1 -1
  12. package/dist/config/paths.d.ts +13 -2
  13. package/dist/config/paths.js +21 -3
  14. package/dist/config/paths.js.map +1 -1
  15. package/dist/config/schemas.d.ts +408 -43
  16. package/dist/config/schemas.js +32 -22
  17. package/dist/config/schemas.js.map +1 -1
  18. package/dist/config/switchboard-config.d.ts +3 -6
  19. package/dist/config/switchboard-config.js +3 -6
  20. package/dist/config/switchboard-config.js.map +1 -1
  21. package/dist/hooks/distribution.d.ts +27 -0
  22. package/dist/hooks/distribution.js +235 -0
  23. package/dist/hooks/distribution.js.map +1 -0
  24. package/dist/hooks/library.d.ts +40 -0
  25. package/dist/hooks/library.js +143 -0
  26. package/dist/hooks/library.js.map +1 -0
  27. package/dist/hooks/schema.d.ts +542 -0
  28. package/dist/hooks/schema.js +49 -0
  29. package/dist/hooks/schema.js.map +1 -0
  30. package/dist/index.js +708 -168
  31. package/dist/index.js.map +1 -1
  32. package/dist/library/fs.d.ts +1 -3
  33. package/dist/library/fs.js +24 -7
  34. package/dist/library/fs.js.map +1 -1
  35. package/dist/library/schema.d.ts +1 -1
  36. package/dist/library/schema.js +1 -1
  37. package/dist/library/sources.d.ts +75 -0
  38. package/dist/library/sources.js +285 -0
  39. package/dist/library/sources.js.map +1 -0
  40. package/dist/library/state.d.ts +4 -5
  41. package/dist/library/state.js +15 -31
  42. package/dist/library/state.js.map +1 -1
  43. package/dist/marketplace/plugin-loader.d.ts +30 -0
  44. package/dist/marketplace/plugin-loader.js +178 -0
  45. package/dist/marketplace/plugin-loader.js.map +1 -0
  46. package/dist/marketplace/reader.d.ts +36 -0
  47. package/dist/marketplace/reader.js +90 -0
  48. package/dist/marketplace/reader.js.map +1 -0
  49. package/dist/marketplace/schemas.d.ts +467 -0
  50. package/dist/marketplace/schemas.js +57 -0
  51. package/dist/marketplace/schemas.js.map +1 -0
  52. package/dist/marketplace/source-loader.d.ts +32 -0
  53. package/dist/marketplace/source-loader.js +45 -0
  54. package/dist/marketplace/source-loader.js.map +1 -0
  55. package/dist/rules/agents.d.ts +4 -4
  56. package/dist/rules/agents.js +10 -4
  57. package/dist/rules/agents.js.map +1 -1
  58. package/dist/rules/composer.d.ts +2 -2
  59. package/dist/rules/composer.js +5 -5
  60. package/dist/rules/composer.js.map +1 -1
  61. package/dist/rules/distribution.js +48 -112
  62. package/dist/rules/distribution.js.map +1 -1
  63. package/dist/rules/library.d.ts +1 -1
  64. package/dist/rules/library.js +4 -5
  65. package/dist/rules/library.js.map +1 -1
  66. package/dist/skills/distribution.js +6 -6
  67. package/dist/skills/distribution.js.map +1 -1
  68. package/dist/skills/library.d.ts +1 -2
  69. package/dist/skills/library.js +6 -7
  70. package/dist/skills/library.js.map +1 -1
  71. package/dist/subagents/distribution.d.ts +1 -1
  72. package/dist/subagents/distribution.js +319 -20
  73. package/dist/subagents/distribution.js.map +1 -1
  74. package/dist/subagents/importer.d.ts +1 -1
  75. package/dist/subagents/importer.js +61 -1
  76. package/dist/subagents/importer.js.map +1 -1
  77. package/dist/subagents/inventory.js +3 -3
  78. package/dist/subagents/inventory.js.map +1 -1
  79. package/dist/subagents/library.d.ts +2 -2
  80. package/dist/subagents/library.js +14 -20
  81. package/dist/subagents/library.js.map +1 -1
  82. package/dist/ui/hook-ui.d.ts +8 -0
  83. package/dist/ui/hook-ui.js +17 -0
  84. package/dist/ui/hook-ui.js.map +1 -0
  85. package/dist/ui/library-selector.d.ts +1 -1
  86. package/dist/ui/subagent-ui.js +3 -3
  87. package/dist/ui/subagent-ui.js.map +1 -1
  88. package/dist/util/cli.d.ts +20 -0
  89. package/dist/util/cli.js +107 -14
  90. package/dist/util/cli.js.map +1 -1
  91. package/package.json +3 -2
  92. package/dist/config/agent-config.d.ts +0 -35
  93. package/dist/config/agent-config.js +0 -88
  94. package/dist/config/agent-config.js.map +0 -1
  95. package/dist/library/subscriptions.d.ts +0 -42
  96. package/dist/library/subscriptions.js +0 -116
  97. package/dist/library/subscriptions.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Marketplace reader: detects and parses Claude Code marketplace repositories.
3
+ *
4
+ * A marketplace is a repository containing `.claude-plugin/marketplace.json`.
5
+ * Each plugin is either a relative path within the same repo or a standalone
6
+ * directory with `.claude-plugin/plugin.json`.
7
+ */
8
+ import { type PluginManifest } from './schemas.js';
9
+ export interface ResolvedPlugin {
10
+ name: string;
11
+ description?: string;
12
+ version?: string;
13
+ /** Absolute path to the plugin root directory */
14
+ localPath: string;
15
+ /** Plugin manifest if `.claude-plugin/plugin.json` exists */
16
+ manifest?: PluginManifest;
17
+ /** Whether plugin is in strict mode */
18
+ strict: boolean;
19
+ }
20
+ export interface MarketplaceReadResult {
21
+ name: string;
22
+ owner: {
23
+ name: string;
24
+ email?: string;
25
+ };
26
+ plugins: ResolvedPlugin[];
27
+ warnings: string[];
28
+ }
29
+ /**
30
+ * Check whether a local path is a Claude Code marketplace (has .claude-plugin/marketplace.json).
31
+ */
32
+ export declare function isMarketplace(localPath: string): boolean;
33
+ /**
34
+ * Read and resolve a marketplace, returning all resolvable plugins with metadata.
35
+ */
36
+ export declare function readMarketplace(localPath: string): MarketplaceReadResult;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Marketplace reader: detects and parses Claude Code marketplace repositories.
3
+ *
4
+ * A marketplace is a repository containing `.claude-plugin/marketplace.json`.
5
+ * Each plugin is either a relative path within the same repo or a standalone
6
+ * directory with `.claude-plugin/plugin.json`.
7
+ */
8
+ import fs from 'node:fs';
9
+ import path from 'node:path';
10
+ import { marketplaceManifestSchema, pluginManifestSchema, } from './schemas.js';
11
+ const MARKETPLACE_MANIFEST = '.claude-plugin/marketplace.json';
12
+ const PLUGIN_MANIFEST = '.claude-plugin/plugin.json';
13
+ /**
14
+ * Check whether a local path is a Claude Code marketplace (has .claude-plugin/marketplace.json).
15
+ */
16
+ export function isMarketplace(localPath) {
17
+ const manifestPath = path.join(localPath, MARKETPLACE_MANIFEST);
18
+ return fs.existsSync(manifestPath);
19
+ }
20
+ /**
21
+ * Read and resolve a marketplace, returning all resolvable plugins with metadata.
22
+ */
23
+ export function readMarketplace(localPath) {
24
+ const manifestPath = path.join(localPath, MARKETPLACE_MANIFEST);
25
+ const warnings = [];
26
+ const raw = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
27
+ const manifest = marketplaceManifestSchema.parse(raw);
28
+ const pluginRoot = manifest.metadata?.pluginRoot ?? '';
29
+ const plugins = [];
30
+ for (const entry of manifest.plugins) {
31
+ const resolved = resolvePluginDir(localPath, pluginRoot, entry.name, entry.source);
32
+ if (!resolved) {
33
+ warnings.push(`Plugin "${entry.name}": unsupported source type, skipped`);
34
+ continue;
35
+ }
36
+ if (!fs.existsSync(resolved)) {
37
+ warnings.push(`Plugin "${entry.name}": directory not found at ${resolved}`);
38
+ continue;
39
+ }
40
+ const pluginManifest = readPluginManifest(resolved);
41
+ plugins.push({
42
+ name: entry.name,
43
+ description: entry.description ?? pluginManifest?.description,
44
+ version: entry.version ?? pluginManifest?.version,
45
+ localPath: resolved,
46
+ manifest: pluginManifest ?? undefined,
47
+ strict: entry.strict,
48
+ });
49
+ }
50
+ return {
51
+ name: manifest.name,
52
+ owner: manifest.owner,
53
+ plugins,
54
+ warnings,
55
+ };
56
+ }
57
+ /**
58
+ * Resolve a plugin source to a local absolute path.
59
+ * Only supports relative paths and local `path` sources for MVP.
60
+ * GitHub/git/npm/pip sources return null with a warning.
61
+ */
62
+ function resolvePluginDir(marketplaceRoot, pluginRoot, _pluginName, source) {
63
+ if (typeof source === 'string') {
64
+ if (source.startsWith('./') || source.startsWith('../') || !source.includes(':')) {
65
+ return path.resolve(marketplaceRoot, pluginRoot, source);
66
+ }
67
+ return null;
68
+ }
69
+ if (source.path && typeof source.path === 'string') {
70
+ return path.resolve(marketplaceRoot, pluginRoot, source.path);
71
+ }
72
+ // npm, pip, github, git sources are not supported in MVP
73
+ return null;
74
+ }
75
+ /**
76
+ * Read optional `.claude-plugin/plugin.json` from a plugin directory.
77
+ */
78
+ function readPluginManifest(pluginDir) {
79
+ const manifestPath = path.join(pluginDir, PLUGIN_MANIFEST);
80
+ if (!fs.existsSync(manifestPath))
81
+ return null;
82
+ try {
83
+ const raw = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
84
+ return pluginManifestSchema.parse(raw);
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/marketplace/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,467 @@
1
+ /**
2
+ * Zod schemas for Claude Code marketplace and plugin manifests.
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const pluginSourceSchema: z.ZodObject<{
6
+ github: z.ZodOptional<z.ZodString>;
7
+ git: z.ZodOptional<z.ZodString>;
8
+ npm: z.ZodOptional<z.ZodString>;
9
+ pip: z.ZodOptional<z.ZodString>;
10
+ path: z.ZodOptional<z.ZodString>;
11
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
12
+ github: z.ZodOptional<z.ZodString>;
13
+ git: z.ZodOptional<z.ZodString>;
14
+ npm: z.ZodOptional<z.ZodString>;
15
+ pip: z.ZodOptional<z.ZodString>;
16
+ path: z.ZodOptional<z.ZodString>;
17
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
18
+ github: z.ZodOptional<z.ZodString>;
19
+ git: z.ZodOptional<z.ZodString>;
20
+ npm: z.ZodOptional<z.ZodString>;
21
+ pip: z.ZodOptional<z.ZodString>;
22
+ path: z.ZodOptional<z.ZodString>;
23
+ }, z.ZodTypeAny, "passthrough">>;
24
+ export declare const pluginEntrySchema: z.ZodObject<{
25
+ name: z.ZodString;
26
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
27
+ github: z.ZodOptional<z.ZodString>;
28
+ git: z.ZodOptional<z.ZodString>;
29
+ npm: z.ZodOptional<z.ZodString>;
30
+ pip: z.ZodOptional<z.ZodString>;
31
+ path: z.ZodOptional<z.ZodString>;
32
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
33
+ github: z.ZodOptional<z.ZodString>;
34
+ git: z.ZodOptional<z.ZodString>;
35
+ npm: z.ZodOptional<z.ZodString>;
36
+ pip: z.ZodOptional<z.ZodString>;
37
+ path: z.ZodOptional<z.ZodString>;
38
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
39
+ github: z.ZodOptional<z.ZodString>;
40
+ git: z.ZodOptional<z.ZodString>;
41
+ npm: z.ZodOptional<z.ZodString>;
42
+ pip: z.ZodOptional<z.ZodString>;
43
+ path: z.ZodOptional<z.ZodString>;
44
+ }, z.ZodTypeAny, "passthrough">>]>;
45
+ description: z.ZodOptional<z.ZodString>;
46
+ version: z.ZodOptional<z.ZodString>;
47
+ strict: z.ZodDefault<z.ZodBoolean>;
48
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
49
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
50
+ hooks: z.ZodOptional<z.ZodUnknown>;
51
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
52
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
53
+ name: z.ZodString;
54
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
55
+ github: z.ZodOptional<z.ZodString>;
56
+ git: z.ZodOptional<z.ZodString>;
57
+ npm: z.ZodOptional<z.ZodString>;
58
+ pip: z.ZodOptional<z.ZodString>;
59
+ path: z.ZodOptional<z.ZodString>;
60
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
61
+ github: z.ZodOptional<z.ZodString>;
62
+ git: z.ZodOptional<z.ZodString>;
63
+ npm: z.ZodOptional<z.ZodString>;
64
+ pip: z.ZodOptional<z.ZodString>;
65
+ path: z.ZodOptional<z.ZodString>;
66
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
67
+ github: z.ZodOptional<z.ZodString>;
68
+ git: z.ZodOptional<z.ZodString>;
69
+ npm: z.ZodOptional<z.ZodString>;
70
+ pip: z.ZodOptional<z.ZodString>;
71
+ path: z.ZodOptional<z.ZodString>;
72
+ }, z.ZodTypeAny, "passthrough">>]>;
73
+ description: z.ZodOptional<z.ZodString>;
74
+ version: z.ZodOptional<z.ZodString>;
75
+ strict: z.ZodDefault<z.ZodBoolean>;
76
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
77
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
78
+ hooks: z.ZodOptional<z.ZodUnknown>;
79
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
80
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
81
+ name: z.ZodString;
82
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
83
+ github: z.ZodOptional<z.ZodString>;
84
+ git: z.ZodOptional<z.ZodString>;
85
+ npm: z.ZodOptional<z.ZodString>;
86
+ pip: z.ZodOptional<z.ZodString>;
87
+ path: z.ZodOptional<z.ZodString>;
88
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
89
+ github: z.ZodOptional<z.ZodString>;
90
+ git: z.ZodOptional<z.ZodString>;
91
+ npm: z.ZodOptional<z.ZodString>;
92
+ pip: z.ZodOptional<z.ZodString>;
93
+ path: z.ZodOptional<z.ZodString>;
94
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
95
+ github: z.ZodOptional<z.ZodString>;
96
+ git: z.ZodOptional<z.ZodString>;
97
+ npm: z.ZodOptional<z.ZodString>;
98
+ pip: z.ZodOptional<z.ZodString>;
99
+ path: z.ZodOptional<z.ZodString>;
100
+ }, z.ZodTypeAny, "passthrough">>]>;
101
+ description: z.ZodOptional<z.ZodString>;
102
+ version: z.ZodOptional<z.ZodString>;
103
+ strict: z.ZodDefault<z.ZodBoolean>;
104
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
105
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
106
+ hooks: z.ZodOptional<z.ZodUnknown>;
107
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
108
+ }, z.ZodTypeAny, "passthrough">>;
109
+ export declare const marketplaceOwnerSchema: z.ZodObject<{
110
+ name: z.ZodString;
111
+ email: z.ZodOptional<z.ZodString>;
112
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
113
+ name: z.ZodString;
114
+ email: z.ZodOptional<z.ZodString>;
115
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
116
+ name: z.ZodString;
117
+ email: z.ZodOptional<z.ZodString>;
118
+ }, z.ZodTypeAny, "passthrough">>;
119
+ export declare const marketplaceMetadataSchema: z.ZodObject<{
120
+ pluginRoot: z.ZodOptional<z.ZodString>;
121
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
122
+ pluginRoot: z.ZodOptional<z.ZodString>;
123
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
124
+ pluginRoot: z.ZodOptional<z.ZodString>;
125
+ }, z.ZodTypeAny, "passthrough">>;
126
+ export declare const marketplaceManifestSchema: z.ZodObject<{
127
+ name: z.ZodString;
128
+ owner: z.ZodObject<{
129
+ name: z.ZodString;
130
+ email: z.ZodOptional<z.ZodString>;
131
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
132
+ name: z.ZodString;
133
+ email: z.ZodOptional<z.ZodString>;
134
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
135
+ name: z.ZodString;
136
+ email: z.ZodOptional<z.ZodString>;
137
+ }, z.ZodTypeAny, "passthrough">>;
138
+ metadata: z.ZodOptional<z.ZodObject<{
139
+ pluginRoot: z.ZodOptional<z.ZodString>;
140
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
141
+ pluginRoot: z.ZodOptional<z.ZodString>;
142
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
143
+ pluginRoot: z.ZodOptional<z.ZodString>;
144
+ }, z.ZodTypeAny, "passthrough">>>;
145
+ plugins: z.ZodDefault<z.ZodArray<z.ZodObject<{
146
+ name: z.ZodString;
147
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
148
+ github: z.ZodOptional<z.ZodString>;
149
+ git: z.ZodOptional<z.ZodString>;
150
+ npm: z.ZodOptional<z.ZodString>;
151
+ pip: z.ZodOptional<z.ZodString>;
152
+ path: z.ZodOptional<z.ZodString>;
153
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
154
+ github: z.ZodOptional<z.ZodString>;
155
+ git: z.ZodOptional<z.ZodString>;
156
+ npm: z.ZodOptional<z.ZodString>;
157
+ pip: z.ZodOptional<z.ZodString>;
158
+ path: z.ZodOptional<z.ZodString>;
159
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
160
+ github: z.ZodOptional<z.ZodString>;
161
+ git: z.ZodOptional<z.ZodString>;
162
+ npm: z.ZodOptional<z.ZodString>;
163
+ pip: z.ZodOptional<z.ZodString>;
164
+ path: z.ZodOptional<z.ZodString>;
165
+ }, z.ZodTypeAny, "passthrough">>]>;
166
+ description: z.ZodOptional<z.ZodString>;
167
+ version: z.ZodOptional<z.ZodString>;
168
+ strict: z.ZodDefault<z.ZodBoolean>;
169
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
170
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
171
+ hooks: z.ZodOptional<z.ZodUnknown>;
172
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
173
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
174
+ name: z.ZodString;
175
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
176
+ github: z.ZodOptional<z.ZodString>;
177
+ git: z.ZodOptional<z.ZodString>;
178
+ npm: z.ZodOptional<z.ZodString>;
179
+ pip: z.ZodOptional<z.ZodString>;
180
+ path: z.ZodOptional<z.ZodString>;
181
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
182
+ github: z.ZodOptional<z.ZodString>;
183
+ git: z.ZodOptional<z.ZodString>;
184
+ npm: z.ZodOptional<z.ZodString>;
185
+ pip: z.ZodOptional<z.ZodString>;
186
+ path: z.ZodOptional<z.ZodString>;
187
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
188
+ github: z.ZodOptional<z.ZodString>;
189
+ git: z.ZodOptional<z.ZodString>;
190
+ npm: z.ZodOptional<z.ZodString>;
191
+ pip: z.ZodOptional<z.ZodString>;
192
+ path: z.ZodOptional<z.ZodString>;
193
+ }, z.ZodTypeAny, "passthrough">>]>;
194
+ description: z.ZodOptional<z.ZodString>;
195
+ version: z.ZodOptional<z.ZodString>;
196
+ strict: z.ZodDefault<z.ZodBoolean>;
197
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
198
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
199
+ hooks: z.ZodOptional<z.ZodUnknown>;
200
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
201
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
202
+ name: z.ZodString;
203
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
204
+ github: z.ZodOptional<z.ZodString>;
205
+ git: z.ZodOptional<z.ZodString>;
206
+ npm: z.ZodOptional<z.ZodString>;
207
+ pip: z.ZodOptional<z.ZodString>;
208
+ path: z.ZodOptional<z.ZodString>;
209
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
210
+ github: z.ZodOptional<z.ZodString>;
211
+ git: z.ZodOptional<z.ZodString>;
212
+ npm: z.ZodOptional<z.ZodString>;
213
+ pip: z.ZodOptional<z.ZodString>;
214
+ path: z.ZodOptional<z.ZodString>;
215
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
216
+ github: z.ZodOptional<z.ZodString>;
217
+ git: z.ZodOptional<z.ZodString>;
218
+ npm: z.ZodOptional<z.ZodString>;
219
+ pip: z.ZodOptional<z.ZodString>;
220
+ path: z.ZodOptional<z.ZodString>;
221
+ }, z.ZodTypeAny, "passthrough">>]>;
222
+ description: z.ZodOptional<z.ZodString>;
223
+ version: z.ZodOptional<z.ZodString>;
224
+ strict: z.ZodDefault<z.ZodBoolean>;
225
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
226
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
227
+ hooks: z.ZodOptional<z.ZodUnknown>;
228
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
229
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
230
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
231
+ name: z.ZodString;
232
+ owner: z.ZodObject<{
233
+ name: z.ZodString;
234
+ email: z.ZodOptional<z.ZodString>;
235
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
236
+ name: z.ZodString;
237
+ email: z.ZodOptional<z.ZodString>;
238
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
239
+ name: z.ZodString;
240
+ email: z.ZodOptional<z.ZodString>;
241
+ }, z.ZodTypeAny, "passthrough">>;
242
+ metadata: z.ZodOptional<z.ZodObject<{
243
+ pluginRoot: z.ZodOptional<z.ZodString>;
244
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
245
+ pluginRoot: z.ZodOptional<z.ZodString>;
246
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
247
+ pluginRoot: z.ZodOptional<z.ZodString>;
248
+ }, z.ZodTypeAny, "passthrough">>>;
249
+ plugins: z.ZodDefault<z.ZodArray<z.ZodObject<{
250
+ name: z.ZodString;
251
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
252
+ github: z.ZodOptional<z.ZodString>;
253
+ git: z.ZodOptional<z.ZodString>;
254
+ npm: z.ZodOptional<z.ZodString>;
255
+ pip: z.ZodOptional<z.ZodString>;
256
+ path: z.ZodOptional<z.ZodString>;
257
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
258
+ github: z.ZodOptional<z.ZodString>;
259
+ git: z.ZodOptional<z.ZodString>;
260
+ npm: z.ZodOptional<z.ZodString>;
261
+ pip: z.ZodOptional<z.ZodString>;
262
+ path: z.ZodOptional<z.ZodString>;
263
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
264
+ github: z.ZodOptional<z.ZodString>;
265
+ git: z.ZodOptional<z.ZodString>;
266
+ npm: z.ZodOptional<z.ZodString>;
267
+ pip: z.ZodOptional<z.ZodString>;
268
+ path: z.ZodOptional<z.ZodString>;
269
+ }, z.ZodTypeAny, "passthrough">>]>;
270
+ description: z.ZodOptional<z.ZodString>;
271
+ version: z.ZodOptional<z.ZodString>;
272
+ strict: z.ZodDefault<z.ZodBoolean>;
273
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
274
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
275
+ hooks: z.ZodOptional<z.ZodUnknown>;
276
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
277
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
278
+ name: z.ZodString;
279
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
280
+ github: z.ZodOptional<z.ZodString>;
281
+ git: z.ZodOptional<z.ZodString>;
282
+ npm: z.ZodOptional<z.ZodString>;
283
+ pip: z.ZodOptional<z.ZodString>;
284
+ path: z.ZodOptional<z.ZodString>;
285
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
286
+ github: z.ZodOptional<z.ZodString>;
287
+ git: z.ZodOptional<z.ZodString>;
288
+ npm: z.ZodOptional<z.ZodString>;
289
+ pip: z.ZodOptional<z.ZodString>;
290
+ path: z.ZodOptional<z.ZodString>;
291
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
292
+ github: z.ZodOptional<z.ZodString>;
293
+ git: z.ZodOptional<z.ZodString>;
294
+ npm: z.ZodOptional<z.ZodString>;
295
+ pip: z.ZodOptional<z.ZodString>;
296
+ path: z.ZodOptional<z.ZodString>;
297
+ }, z.ZodTypeAny, "passthrough">>]>;
298
+ description: z.ZodOptional<z.ZodString>;
299
+ version: z.ZodOptional<z.ZodString>;
300
+ strict: z.ZodDefault<z.ZodBoolean>;
301
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
302
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
303
+ hooks: z.ZodOptional<z.ZodUnknown>;
304
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
305
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
306
+ name: z.ZodString;
307
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
308
+ github: z.ZodOptional<z.ZodString>;
309
+ git: z.ZodOptional<z.ZodString>;
310
+ npm: z.ZodOptional<z.ZodString>;
311
+ pip: z.ZodOptional<z.ZodString>;
312
+ path: z.ZodOptional<z.ZodString>;
313
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
314
+ github: z.ZodOptional<z.ZodString>;
315
+ git: z.ZodOptional<z.ZodString>;
316
+ npm: z.ZodOptional<z.ZodString>;
317
+ pip: z.ZodOptional<z.ZodString>;
318
+ path: z.ZodOptional<z.ZodString>;
319
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
320
+ github: z.ZodOptional<z.ZodString>;
321
+ git: z.ZodOptional<z.ZodString>;
322
+ npm: z.ZodOptional<z.ZodString>;
323
+ pip: z.ZodOptional<z.ZodString>;
324
+ path: z.ZodOptional<z.ZodString>;
325
+ }, z.ZodTypeAny, "passthrough">>]>;
326
+ description: z.ZodOptional<z.ZodString>;
327
+ version: z.ZodOptional<z.ZodString>;
328
+ strict: z.ZodDefault<z.ZodBoolean>;
329
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
330
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
331
+ hooks: z.ZodOptional<z.ZodUnknown>;
332
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
333
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
334
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
335
+ name: z.ZodString;
336
+ owner: z.ZodObject<{
337
+ name: z.ZodString;
338
+ email: z.ZodOptional<z.ZodString>;
339
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
340
+ name: z.ZodString;
341
+ email: z.ZodOptional<z.ZodString>;
342
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
343
+ name: z.ZodString;
344
+ email: z.ZodOptional<z.ZodString>;
345
+ }, z.ZodTypeAny, "passthrough">>;
346
+ metadata: z.ZodOptional<z.ZodObject<{
347
+ pluginRoot: z.ZodOptional<z.ZodString>;
348
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
349
+ pluginRoot: z.ZodOptional<z.ZodString>;
350
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
351
+ pluginRoot: z.ZodOptional<z.ZodString>;
352
+ }, z.ZodTypeAny, "passthrough">>>;
353
+ plugins: z.ZodDefault<z.ZodArray<z.ZodObject<{
354
+ name: z.ZodString;
355
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
356
+ github: z.ZodOptional<z.ZodString>;
357
+ git: z.ZodOptional<z.ZodString>;
358
+ npm: z.ZodOptional<z.ZodString>;
359
+ pip: z.ZodOptional<z.ZodString>;
360
+ path: z.ZodOptional<z.ZodString>;
361
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
362
+ github: z.ZodOptional<z.ZodString>;
363
+ git: z.ZodOptional<z.ZodString>;
364
+ npm: z.ZodOptional<z.ZodString>;
365
+ pip: z.ZodOptional<z.ZodString>;
366
+ path: z.ZodOptional<z.ZodString>;
367
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
368
+ github: z.ZodOptional<z.ZodString>;
369
+ git: z.ZodOptional<z.ZodString>;
370
+ npm: z.ZodOptional<z.ZodString>;
371
+ pip: z.ZodOptional<z.ZodString>;
372
+ path: z.ZodOptional<z.ZodString>;
373
+ }, z.ZodTypeAny, "passthrough">>]>;
374
+ description: z.ZodOptional<z.ZodString>;
375
+ version: z.ZodOptional<z.ZodString>;
376
+ strict: z.ZodDefault<z.ZodBoolean>;
377
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
378
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
379
+ hooks: z.ZodOptional<z.ZodUnknown>;
380
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
381
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
382
+ name: z.ZodString;
383
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
384
+ github: z.ZodOptional<z.ZodString>;
385
+ git: z.ZodOptional<z.ZodString>;
386
+ npm: z.ZodOptional<z.ZodString>;
387
+ pip: z.ZodOptional<z.ZodString>;
388
+ path: z.ZodOptional<z.ZodString>;
389
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
390
+ github: z.ZodOptional<z.ZodString>;
391
+ git: z.ZodOptional<z.ZodString>;
392
+ npm: z.ZodOptional<z.ZodString>;
393
+ pip: z.ZodOptional<z.ZodString>;
394
+ path: z.ZodOptional<z.ZodString>;
395
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
396
+ github: z.ZodOptional<z.ZodString>;
397
+ git: z.ZodOptional<z.ZodString>;
398
+ npm: z.ZodOptional<z.ZodString>;
399
+ pip: z.ZodOptional<z.ZodString>;
400
+ path: z.ZodOptional<z.ZodString>;
401
+ }, z.ZodTypeAny, "passthrough">>]>;
402
+ description: z.ZodOptional<z.ZodString>;
403
+ version: z.ZodOptional<z.ZodString>;
404
+ strict: z.ZodDefault<z.ZodBoolean>;
405
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
406
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
407
+ hooks: z.ZodOptional<z.ZodUnknown>;
408
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
409
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
410
+ name: z.ZodString;
411
+ source: z.ZodUnion<[z.ZodString, z.ZodObject<{
412
+ github: z.ZodOptional<z.ZodString>;
413
+ git: z.ZodOptional<z.ZodString>;
414
+ npm: z.ZodOptional<z.ZodString>;
415
+ pip: z.ZodOptional<z.ZodString>;
416
+ path: z.ZodOptional<z.ZodString>;
417
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
418
+ github: z.ZodOptional<z.ZodString>;
419
+ git: z.ZodOptional<z.ZodString>;
420
+ npm: z.ZodOptional<z.ZodString>;
421
+ pip: z.ZodOptional<z.ZodString>;
422
+ path: z.ZodOptional<z.ZodString>;
423
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
424
+ github: z.ZodOptional<z.ZodString>;
425
+ git: z.ZodOptional<z.ZodString>;
426
+ npm: z.ZodOptional<z.ZodString>;
427
+ pip: z.ZodOptional<z.ZodString>;
428
+ path: z.ZodOptional<z.ZodString>;
429
+ }, z.ZodTypeAny, "passthrough">>]>;
430
+ description: z.ZodOptional<z.ZodString>;
431
+ version: z.ZodOptional<z.ZodString>;
432
+ strict: z.ZodDefault<z.ZodBoolean>;
433
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
434
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
435
+ hooks: z.ZodOptional<z.ZodUnknown>;
436
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
437
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
438
+ }, z.ZodTypeAny, "passthrough">>;
439
+ export declare const pluginManifestSchema: z.ZodObject<{
440
+ name: z.ZodString;
441
+ description: z.ZodOptional<z.ZodString>;
442
+ version: z.ZodOptional<z.ZodString>;
443
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
444
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
445
+ hooks: z.ZodOptional<z.ZodUnknown>;
446
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
447
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
448
+ name: z.ZodString;
449
+ description: z.ZodOptional<z.ZodString>;
450
+ version: z.ZodOptional<z.ZodString>;
451
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
452
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
453
+ hooks: z.ZodOptional<z.ZodUnknown>;
454
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
455
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
456
+ name: z.ZodString;
457
+ description: z.ZodOptional<z.ZodString>;
458
+ version: z.ZodOptional<z.ZodString>;
459
+ commands: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
460
+ agents: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
461
+ hooks: z.ZodOptional<z.ZodUnknown>;
462
+ mcpServers: z.ZodOptional<z.ZodUnknown>;
463
+ }, z.ZodTypeAny, "passthrough">>;
464
+ export type PluginSource = z.infer<typeof pluginSourceSchema>;
465
+ export type PluginEntry = z.infer<typeof pluginEntrySchema>;
466
+ export type MarketplaceManifest = z.infer<typeof marketplaceManifestSchema>;
467
+ export type PluginManifest = z.infer<typeof pluginManifestSchema>;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Zod schemas for Claude Code marketplace and plugin manifests.
3
+ */
4
+ import { z } from 'zod';
5
+ export const pluginSourceSchema = z
6
+ .object({
7
+ github: z.string().optional(),
8
+ git: z.string().optional(),
9
+ npm: z.string().optional(),
10
+ pip: z.string().optional(),
11
+ path: z.string().optional(),
12
+ })
13
+ .passthrough();
14
+ export const pluginEntrySchema = z
15
+ .object({
16
+ name: z.string().min(1),
17
+ source: z.union([z.string(), pluginSourceSchema]),
18
+ description: z.string().optional(),
19
+ version: z.string().optional(),
20
+ strict: z.boolean().default(true),
21
+ commands: z.union([z.string(), z.array(z.string())]).optional(),
22
+ agents: z.union([z.string(), z.array(z.string())]).optional(),
23
+ hooks: z.unknown().optional(),
24
+ mcpServers: z.unknown().optional(),
25
+ })
26
+ .passthrough();
27
+ export const marketplaceOwnerSchema = z
28
+ .object({
29
+ name: z.string(),
30
+ email: z.string().optional(),
31
+ })
32
+ .passthrough();
33
+ export const marketplaceMetadataSchema = z
34
+ .object({
35
+ pluginRoot: z.string().optional(),
36
+ })
37
+ .passthrough();
38
+ export const marketplaceManifestSchema = z
39
+ .object({
40
+ name: z.string().min(1),
41
+ owner: marketplaceOwnerSchema,
42
+ metadata: marketplaceMetadataSchema.optional(),
43
+ plugins: z.array(pluginEntrySchema).default([]),
44
+ })
45
+ .passthrough();
46
+ export const pluginManifestSchema = z
47
+ .object({
48
+ name: z.string().min(1),
49
+ description: z.string().optional(),
50
+ version: z.string().optional(),
51
+ commands: z.union([z.string(), z.array(z.string())]).optional(),
52
+ agents: z.union([z.string(), z.array(z.string())]).optional(),
53
+ hooks: z.unknown().optional(),
54
+ mcpServers: z.unknown().optional(),
55
+ })
56
+ .passthrough();
57
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/marketplace/schemas.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,sBAAsB;IAC7B,QAAQ,EAAE,yBAAyB,CAAC,QAAQ,EAAE;IAC9C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAChD,CAAC;KACD,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,WAAW,EAAE,CAAC"}