@julianpedro/plugin-dev-ai-hub-common 0.2.0 → 0.3.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.
- package/dist/index.cjs.js +1 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +51 -6
- package/dist/index.esm.js +1 -1
- package/dist/installPaths.cjs.js +9 -0
- package/dist/installPaths.cjs.js.map +1 -1
- package/dist/installPaths.esm.js +9 -0
- package/dist/installPaths.esm.js.map +1 -1
- package/dist/schemas.cjs.js +30 -2
- package/dist/schemas.cjs.js.map +1 -1
- package/dist/schemas.esm.js +30 -3
- package/dist/schemas.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -8,6 +8,7 @@ var installPaths = require('./installPaths.cjs.js');
|
|
|
8
8
|
exports.AiAssetFrontmatterSchema = schemas.AiAssetFrontmatterSchema;
|
|
9
9
|
exports.AiToolEnum = schemas.AiToolEnum;
|
|
10
10
|
exports.AssetTypeEnum = schemas.AssetTypeEnum;
|
|
11
|
+
exports.McpCatalogFileSchema = schemas.McpCatalogFileSchema;
|
|
11
12
|
exports.getInstallPath = installPaths.getInstallPath;
|
|
12
13
|
exports.getInstallPathsForAsset = installPaths.getInstallPathsForAsset;
|
|
13
14
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
-
type AssetType = 'instruction' | 'agent' | 'skill' | 'workflow';
|
|
3
|
+
type AssetType = 'instruction' | 'agent' | 'skill' | 'workflow' | 'bundle';
|
|
4
4
|
type AiTool = 'all' | 'github-copilot' | 'claude-code' | 'google-gemini' | 'cursor';
|
|
5
|
+
interface BundleItem {
|
|
6
|
+
ref: string;
|
|
7
|
+
assetId?: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
label?: string;
|
|
10
|
+
type?: Exclude<AssetType, 'bundle'>;
|
|
11
|
+
description?: string;
|
|
12
|
+
tools?: AiTool[];
|
|
13
|
+
}
|
|
14
|
+
interface McpCatalogEntry {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
icon?: string;
|
|
19
|
+
type: 'http' | 'stdio';
|
|
20
|
+
url?: string;
|
|
21
|
+
command?: string;
|
|
22
|
+
args?: string[];
|
|
23
|
+
env?: Record<string, string>;
|
|
24
|
+
}
|
|
5
25
|
/** Lightweight summary returned by list endpoints — no markdown content. */
|
|
6
26
|
interface AiAssetSummary {
|
|
7
27
|
id: string;
|
|
@@ -17,6 +37,8 @@ interface AiAssetSummary {
|
|
|
17
37
|
icon?: string;
|
|
18
38
|
version: string;
|
|
19
39
|
installCount: number;
|
|
40
|
+
/** Number of items in a bundle (only set for type === 'bundle'). */
|
|
41
|
+
itemCount?: number;
|
|
20
42
|
syncedAt: string;
|
|
21
43
|
createdAt: string;
|
|
22
44
|
updatedAt: string;
|
|
@@ -49,6 +71,8 @@ interface AiAsset {
|
|
|
49
71
|
* Only populated for assets of type `skill` that declare `resources` in the envelope.
|
|
50
72
|
*/
|
|
51
73
|
resourcesContent?: Record<string, string>;
|
|
74
|
+
/** Resolved bundle items — only populated for type === 'bundle'. */
|
|
75
|
+
items?: BundleItem[];
|
|
52
76
|
/** Path of the .yaml file in the repository */
|
|
53
77
|
yamlPath: string;
|
|
54
78
|
/** Path of the .md file in the repository */
|
|
@@ -96,7 +120,7 @@ interface AssetListFilter {
|
|
|
96
120
|
}
|
|
97
121
|
|
|
98
122
|
declare const AiToolEnum: z.ZodEnum<["all", "github-copilot", "claude-code", "google-gemini", "cursor"]>;
|
|
99
|
-
declare const AssetTypeEnum: z.ZodEnum<["instruction", "agent", "skill", "workflow"]>;
|
|
123
|
+
declare const AssetTypeEnum: z.ZodEnum<["instruction", "agent", "skill", "workflow", "bundle"]>;
|
|
100
124
|
/**
|
|
101
125
|
* Schema for the YAML metadata file (.yaml) that acts as an envelope.
|
|
102
126
|
* The actual asset content lives in the referenced .md file.
|
|
@@ -109,7 +133,7 @@ declare const AiAssetFrontmatterSchema: z.ZodObject<{
|
|
|
109
133
|
/** Human-readable display label shown in the UI. Falls back to `name` when omitted. */
|
|
110
134
|
label: z.ZodOptional<z.ZodString>;
|
|
111
135
|
description: z.ZodString;
|
|
112
|
-
type: z.ZodEnum<["instruction", "agent", "skill", "workflow"]>;
|
|
136
|
+
type: z.ZodEnum<["instruction", "agent", "skill", "workflow", "bundle"]>;
|
|
113
137
|
tools: z.ZodArray<z.ZodEnum<["all", "github-copilot", "claude-code", "google-gemini", "cursor"]>, "many">;
|
|
114
138
|
tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
115
139
|
author: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
@@ -119,6 +143,13 @@ declare const AiAssetFrontmatterSchema: z.ZodObject<{
|
|
|
119
143
|
installPath: z.ZodOptional<z.ZodString>;
|
|
120
144
|
installPaths: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
121
145
|
resources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
146
|
+
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
147
|
+
ref: z.ZodString;
|
|
148
|
+
}, "strip", z.ZodTypeAny, {
|
|
149
|
+
ref: string;
|
|
150
|
+
}, {
|
|
151
|
+
ref: string;
|
|
152
|
+
}>, "many">>;
|
|
122
153
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
123
154
|
/** Path to the .md content file, relative to the .yaml file directory.
|
|
124
155
|
* If omitted, the parser falls back to <same-name>.md by convention. */
|
|
@@ -127,7 +158,7 @@ declare const AiAssetFrontmatterSchema: z.ZodObject<{
|
|
|
127
158
|
/** Human-readable display label shown in the UI. Falls back to `name` when omitted. */
|
|
128
159
|
label: z.ZodOptional<z.ZodString>;
|
|
129
160
|
description: z.ZodString;
|
|
130
|
-
type: z.ZodEnum<["instruction", "agent", "skill", "workflow"]>;
|
|
161
|
+
type: z.ZodEnum<["instruction", "agent", "skill", "workflow", "bundle"]>;
|
|
131
162
|
tools: z.ZodArray<z.ZodEnum<["all", "github-copilot", "claude-code", "google-gemini", "cursor"]>, "many">;
|
|
132
163
|
tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
133
164
|
author: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
@@ -137,6 +168,13 @@ declare const AiAssetFrontmatterSchema: z.ZodObject<{
|
|
|
137
168
|
installPath: z.ZodOptional<z.ZodString>;
|
|
138
169
|
installPaths: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
139
170
|
resources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
171
|
+
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
172
|
+
ref: z.ZodString;
|
|
173
|
+
}, "strip", z.ZodTypeAny, {
|
|
174
|
+
ref: string;
|
|
175
|
+
}, {
|
|
176
|
+
ref: string;
|
|
177
|
+
}>, "many">>;
|
|
140
178
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
141
179
|
/** Path to the .md content file, relative to the .yaml file directory.
|
|
142
180
|
* If omitted, the parser falls back to <same-name>.md by convention. */
|
|
@@ -145,7 +183,7 @@ declare const AiAssetFrontmatterSchema: z.ZodObject<{
|
|
|
145
183
|
/** Human-readable display label shown in the UI. Falls back to `name` when omitted. */
|
|
146
184
|
label: z.ZodOptional<z.ZodString>;
|
|
147
185
|
description: z.ZodString;
|
|
148
|
-
type: z.ZodEnum<["instruction", "agent", "skill", "workflow"]>;
|
|
186
|
+
type: z.ZodEnum<["instruction", "agent", "skill", "workflow", "bundle"]>;
|
|
149
187
|
tools: z.ZodArray<z.ZodEnum<["all", "github-copilot", "claude-code", "google-gemini", "cursor"]>, "many">;
|
|
150
188
|
tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
151
189
|
author: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
@@ -155,6 +193,13 @@ declare const AiAssetFrontmatterSchema: z.ZodObject<{
|
|
|
155
193
|
installPath: z.ZodOptional<z.ZodString>;
|
|
156
194
|
installPaths: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
157
195
|
resources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
196
|
+
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
197
|
+
ref: z.ZodString;
|
|
198
|
+
}, "strip", z.ZodTypeAny, {
|
|
199
|
+
ref: string;
|
|
200
|
+
}, {
|
|
201
|
+
ref: string;
|
|
202
|
+
}>, "many">>;
|
|
158
203
|
}, z.ZodTypeAny, "passthrough">>;
|
|
159
204
|
type AiAssetFrontmatter = z.infer<typeof AiAssetFrontmatterSchema>;
|
|
160
205
|
|
|
@@ -176,4 +221,4 @@ declare function getInstallPath(type: AssetType, tool: AiTool | string, name: st
|
|
|
176
221
|
declare function getInstallPathsForAsset(type: AssetType, tools: (AiTool | string)[], name: string, overrides?: InstallPathOverrides): Record<string, string>;
|
|
177
222
|
|
|
178
223
|
export { AiAssetFrontmatterSchema, AiToolEnum, AssetTypeEnum, getInstallPath, getInstallPathsForAsset };
|
|
179
|
-
export type { AiAsset, AiAssetFrontmatter, AiAssetListResponse, AiAssetSummary, AiHubProvider, AiHubStats, AiTool, AssetListFilter, AssetType, InstallPathOverrides };
|
|
224
|
+
export type { AiAsset, AiAssetFrontmatter, AiAssetListResponse, AiAssetSummary, AiHubProvider, AiHubStats, AiTool, AssetListFilter, AssetType, BundleItem, InstallPathOverrides, McpCatalogEntry };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { AiAssetFrontmatterSchema, AiToolEnum, AssetTypeEnum } from './schemas.esm.js';
|
|
1
|
+
export { AiAssetFrontmatterSchema, AiToolEnum, AssetTypeEnum, McpCatalogFileSchema } from './schemas.esm.js';
|
|
2
2
|
export { getInstallPath, getInstallPathsForAsset } from './installPaths.esm.js';
|
|
3
3
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/installPaths.cjs.js
CHANGED
|
@@ -4,6 +4,14 @@ function toSlug(name) {
|
|
|
4
4
|
return name.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9-_]/g, "");
|
|
5
5
|
}
|
|
6
6
|
const CONVENTIONS = {
|
|
7
|
+
bundle: {
|
|
8
|
+
"claude-code": () => "",
|
|
9
|
+
"github-copilot": () => "",
|
|
10
|
+
"google-gemini": () => "",
|
|
11
|
+
"cursor": () => "",
|
|
12
|
+
"all": () => "",
|
|
13
|
+
"default": () => ""
|
|
14
|
+
},
|
|
7
15
|
instruction: {
|
|
8
16
|
"claude-code": (name) => `.claude/rules/${name}.md`,
|
|
9
17
|
"github-copilot": (name) => `.github/instructions/${name}.instructions.md`,
|
|
@@ -46,6 +54,7 @@ function getInstallPath(type, tool, name, overrides) {
|
|
|
46
54
|
return fn(slug);
|
|
47
55
|
}
|
|
48
56
|
function getInstallPathsForAsset(type, tools, name, overrides) {
|
|
57
|
+
if (type === "bundle") return {};
|
|
49
58
|
const ALL_TOOLS = ["claude-code", "github-copilot", "google-gemini", "cursor"];
|
|
50
59
|
const resolvedTools = tools.includes("all") ? ALL_TOOLS : tools;
|
|
51
60
|
return Object.fromEntries(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installPaths.cjs.js","sources":["../src/installPaths.ts"],"sourcesContent":["import type { AssetType, AiTool } from './types';\n\n/** Sanitize asset name for use in file paths */\nfunction toSlug(name: string): string {\n return name.toLowerCase().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n}\n\n/**\n * Convention table: (type, tool) → install path template.\n * Returns the recommended filesystem path for an asset given the target tool.\n *\n * Priority: installPaths[tool] > installPath > convention below.\n */\nconst CONVENTIONS: Record<AssetType, Record<AiTool | 'default', (name: string) => string>> = {\n instruction: {\n 'claude-code': name => `.claude/rules/${name}.md`,\n 'github-copilot': name => `.github/instructions/${name}.instructions.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/instructions/${name}.md`,\n 'default': name => `.ai/instructions/${name}.md`,\n },\n agent: {\n 'claude-code': name => `.claude/agents/${name}.md`,\n 'github-copilot': name => `.github/agents/${name}.agent.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/agents/${name}.md`,\n 'default': name => `.ai/agents/${name}.md`,\n },\n skill: {\n 'claude-code': name => `.claude/skills/${name}/SKILL.md`,\n 'github-copilot': name => `.claude/skills/${name}/SKILL.md`,\n 'google-gemini': name => `.claude/skills/${name}/SKILL.md`,\n 'cursor': name => `.cursor/skills/${name}/SKILL.md`,\n 'all': name => `.claude/skills/${name}/SKILL.md`,\n 'default': name => `.claude/skills/${name}/SKILL.md`,\n },\n workflow: {\n 'claude-code': name => `.claude/workflows/${name}.md`,\n 'github-copilot': name => `.github/workflows/${name}.workflow.md`,\n 'google-gemini': name => `.gemini/workflows/${name}.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/workflows/${name}.md`,\n 'default': name => `.ai/workflows/${name}.md`,\n },\n};\n\nexport interface InstallPathOverrides {\n /** Single path override — applies to all tools when installPaths has no entry for the tool */\n installPath?: string;\n /** Per-tool path overrides — highest priority */\n installPaths?: Record<string, string>;\n}\n\n/**\n * Returns the recommended install path for an asset in a given tool's workspace.\n * Resolution order: installPaths[tool] > installPath > built-in convention.\n */\nexport function getInstallPath(\n type: AssetType,\n tool: AiTool | string,\n name: string,\n overrides?: InstallPathOverrides,\n): string {\n if (overrides?.installPaths?.[tool]) return overrides.installPaths[tool];\n if (overrides?.installPath) return overrides.installPath;\n\n const slug = toSlug(name);\n const toolConventions = CONVENTIONS[type];\n const fn = toolConventions[tool as AiTool] ?? toolConventions.default;\n return fn(slug);\n}\n\n/**\n * Returns install paths for all tools in the asset's tools list.\n * If tools contains 'all', returns paths for every known tool.\n */\nexport function getInstallPathsForAsset(\n type: AssetType,\n tools: (AiTool | string)[],\n name: string,\n overrides?: InstallPathOverrides,\n): Record<string, string> {\n const ALL_TOOLS: AiTool[] = ['claude-code', 'github-copilot', 'google-gemini', 'cursor'];\n const resolvedTools = tools.includes('all') ? ALL_TOOLS : tools;\n\n return Object.fromEntries(\n resolvedTools.map(tool => [tool, getInstallPath(type, tool, name, overrides)]),\n );\n}\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"installPaths.cjs.js","sources":["../src/installPaths.ts"],"sourcesContent":["import type { AssetType, AiTool } from './types';\n\n/** Sanitize asset name for use in file paths */\nfunction toSlug(name: string): string {\n return name.toLowerCase().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n}\n\n/**\n * Convention table: (type, tool) → install path template.\n * Returns the recommended filesystem path for an asset given the target tool.\n *\n * Priority: installPaths[tool] > installPath > convention below.\n */\nconst CONVENTIONS: Record<AssetType, Record<AiTool | 'default', (name: string) => string>> = {\n bundle: {\n 'claude-code': () => '',\n 'github-copilot': () => '',\n 'google-gemini': () => '',\n 'cursor': () => '',\n 'all': () => '', 'default': () => '',\n },\n instruction: {\n 'claude-code': name => `.claude/rules/${name}.md`,\n 'github-copilot': name => `.github/instructions/${name}.instructions.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/instructions/${name}.md`,\n 'default': name => `.ai/instructions/${name}.md`,\n },\n agent: {\n 'claude-code': name => `.claude/agents/${name}.md`,\n 'github-copilot': name => `.github/agents/${name}.agent.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/agents/${name}.md`,\n 'default': name => `.ai/agents/${name}.md`,\n },\n skill: {\n 'claude-code': name => `.claude/skills/${name}/SKILL.md`,\n 'github-copilot': name => `.claude/skills/${name}/SKILL.md`,\n 'google-gemini': name => `.claude/skills/${name}/SKILL.md`,\n 'cursor': name => `.cursor/skills/${name}/SKILL.md`,\n 'all': name => `.claude/skills/${name}/SKILL.md`,\n 'default': name => `.claude/skills/${name}/SKILL.md`,\n },\n workflow: {\n 'claude-code': name => `.claude/workflows/${name}.md`,\n 'github-copilot': name => `.github/workflows/${name}.workflow.md`,\n 'google-gemini': name => `.gemini/workflows/${name}.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/workflows/${name}.md`,\n 'default': name => `.ai/workflows/${name}.md`,\n },\n};\n\nexport interface InstallPathOverrides {\n /** Single path override — applies to all tools when installPaths has no entry for the tool */\n installPath?: string;\n /** Per-tool path overrides — highest priority */\n installPaths?: Record<string, string>;\n}\n\n/**\n * Returns the recommended install path for an asset in a given tool's workspace.\n * Resolution order: installPaths[tool] > installPath > built-in convention.\n */\nexport function getInstallPath(\n type: AssetType,\n tool: AiTool | string,\n name: string,\n overrides?: InstallPathOverrides,\n): string {\n if (overrides?.installPaths?.[tool]) return overrides.installPaths[tool];\n if (overrides?.installPath) return overrides.installPath;\n\n const slug = toSlug(name);\n const toolConventions = CONVENTIONS[type];\n const fn = toolConventions[tool as AiTool] ?? toolConventions.default;\n return fn(slug);\n}\n\n/**\n * Returns install paths for all tools in the asset's tools list.\n * If tools contains 'all', returns paths for every known tool.\n */\nexport function getInstallPathsForAsset(\n type: AssetType,\n tools: (AiTool | string)[],\n name: string,\n overrides?: InstallPathOverrides,\n): Record<string, string> {\n // Bundles have no single install path — they're composed of individual items\n if (type === 'bundle') return {};\n\n const ALL_TOOLS: AiTool[] = ['claude-code', 'github-copilot', 'google-gemini', 'cursor'];\n const resolvedTools = tools.includes('all') ? ALL_TOOLS : tools;\n\n return Object.fromEntries(\n resolvedTools.map(tool => [tool, getInstallPath(type, tool, name, overrides)]),\n );\n}\n"],"names":[],"mappings":"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"}
|
package/dist/installPaths.esm.js
CHANGED
|
@@ -2,6 +2,14 @@ function toSlug(name) {
|
|
|
2
2
|
return name.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9-_]/g, "");
|
|
3
3
|
}
|
|
4
4
|
const CONVENTIONS = {
|
|
5
|
+
bundle: {
|
|
6
|
+
"claude-code": () => "",
|
|
7
|
+
"github-copilot": () => "",
|
|
8
|
+
"google-gemini": () => "",
|
|
9
|
+
"cursor": () => "",
|
|
10
|
+
"all": () => "",
|
|
11
|
+
"default": () => ""
|
|
12
|
+
},
|
|
5
13
|
instruction: {
|
|
6
14
|
"claude-code": (name) => `.claude/rules/${name}.md`,
|
|
7
15
|
"github-copilot": (name) => `.github/instructions/${name}.instructions.md`,
|
|
@@ -44,6 +52,7 @@ function getInstallPath(type, tool, name, overrides) {
|
|
|
44
52
|
return fn(slug);
|
|
45
53
|
}
|
|
46
54
|
function getInstallPathsForAsset(type, tools, name, overrides) {
|
|
55
|
+
if (type === "bundle") return {};
|
|
47
56
|
const ALL_TOOLS = ["claude-code", "github-copilot", "google-gemini", "cursor"];
|
|
48
57
|
const resolvedTools = tools.includes("all") ? ALL_TOOLS : tools;
|
|
49
58
|
return Object.fromEntries(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installPaths.esm.js","sources":["../src/installPaths.ts"],"sourcesContent":["import type { AssetType, AiTool } from './types';\n\n/** Sanitize asset name for use in file paths */\nfunction toSlug(name: string): string {\n return name.toLowerCase().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n}\n\n/**\n * Convention table: (type, tool) → install path template.\n * Returns the recommended filesystem path for an asset given the target tool.\n *\n * Priority: installPaths[tool] > installPath > convention below.\n */\nconst CONVENTIONS: Record<AssetType, Record<AiTool | 'default', (name: string) => string>> = {\n instruction: {\n 'claude-code': name => `.claude/rules/${name}.md`,\n 'github-copilot': name => `.github/instructions/${name}.instructions.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/instructions/${name}.md`,\n 'default': name => `.ai/instructions/${name}.md`,\n },\n agent: {\n 'claude-code': name => `.claude/agents/${name}.md`,\n 'github-copilot': name => `.github/agents/${name}.agent.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/agents/${name}.md`,\n 'default': name => `.ai/agents/${name}.md`,\n },\n skill: {\n 'claude-code': name => `.claude/skills/${name}/SKILL.md`,\n 'github-copilot': name => `.claude/skills/${name}/SKILL.md`,\n 'google-gemini': name => `.claude/skills/${name}/SKILL.md`,\n 'cursor': name => `.cursor/skills/${name}/SKILL.md`,\n 'all': name => `.claude/skills/${name}/SKILL.md`,\n 'default': name => `.claude/skills/${name}/SKILL.md`,\n },\n workflow: {\n 'claude-code': name => `.claude/workflows/${name}.md`,\n 'github-copilot': name => `.github/workflows/${name}.workflow.md`,\n 'google-gemini': name => `.gemini/workflows/${name}.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/workflows/${name}.md`,\n 'default': name => `.ai/workflows/${name}.md`,\n },\n};\n\nexport interface InstallPathOverrides {\n /** Single path override — applies to all tools when installPaths has no entry for the tool */\n installPath?: string;\n /** Per-tool path overrides — highest priority */\n installPaths?: Record<string, string>;\n}\n\n/**\n * Returns the recommended install path for an asset in a given tool's workspace.\n * Resolution order: installPaths[tool] > installPath > built-in convention.\n */\nexport function getInstallPath(\n type: AssetType,\n tool: AiTool | string,\n name: string,\n overrides?: InstallPathOverrides,\n): string {\n if (overrides?.installPaths?.[tool]) return overrides.installPaths[tool];\n if (overrides?.installPath) return overrides.installPath;\n\n const slug = toSlug(name);\n const toolConventions = CONVENTIONS[type];\n const fn = toolConventions[tool as AiTool] ?? toolConventions.default;\n return fn(slug);\n}\n\n/**\n * Returns install paths for all tools in the asset's tools list.\n * If tools contains 'all', returns paths for every known tool.\n */\nexport function getInstallPathsForAsset(\n type: AssetType,\n tools: (AiTool | string)[],\n name: string,\n overrides?: InstallPathOverrides,\n): Record<string, string> {\n const ALL_TOOLS: AiTool[] = ['claude-code', 'github-copilot', 'google-gemini', 'cursor'];\n const resolvedTools = tools.includes('all') ? ALL_TOOLS : tools;\n\n return Object.fromEntries(\n resolvedTools.map(tool => [tool, getInstallPath(type, tool, name, overrides)]),\n );\n}\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"installPaths.esm.js","sources":["../src/installPaths.ts"],"sourcesContent":["import type { AssetType, AiTool } from './types';\n\n/** Sanitize asset name for use in file paths */\nfunction toSlug(name: string): string {\n return name.toLowerCase().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n}\n\n/**\n * Convention table: (type, tool) → install path template.\n * Returns the recommended filesystem path for an asset given the target tool.\n *\n * Priority: installPaths[tool] > installPath > convention below.\n */\nconst CONVENTIONS: Record<AssetType, Record<AiTool | 'default', (name: string) => string>> = {\n bundle: {\n 'claude-code': () => '',\n 'github-copilot': () => '',\n 'google-gemini': () => '',\n 'cursor': () => '',\n 'all': () => '', 'default': () => '',\n },\n instruction: {\n 'claude-code': name => `.claude/rules/${name}.md`,\n 'github-copilot': name => `.github/instructions/${name}.instructions.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/instructions/${name}.md`,\n 'default': name => `.ai/instructions/${name}.md`,\n },\n agent: {\n 'claude-code': name => `.claude/agents/${name}.md`,\n 'github-copilot': name => `.github/agents/${name}.agent.md`,\n 'google-gemini': _ => `GEMINI.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/agents/${name}.md`,\n 'default': name => `.ai/agents/${name}.md`,\n },\n skill: {\n 'claude-code': name => `.claude/skills/${name}/SKILL.md`,\n 'github-copilot': name => `.claude/skills/${name}/SKILL.md`,\n 'google-gemini': name => `.claude/skills/${name}/SKILL.md`,\n 'cursor': name => `.cursor/skills/${name}/SKILL.md`,\n 'all': name => `.claude/skills/${name}/SKILL.md`,\n 'default': name => `.claude/skills/${name}/SKILL.md`,\n },\n workflow: {\n 'claude-code': name => `.claude/workflows/${name}.md`,\n 'github-copilot': name => `.github/workflows/${name}.workflow.md`,\n 'google-gemini': name => `.gemini/workflows/${name}.md`,\n 'cursor': name => `.cursor/rules/${name}.mdc`,\n 'all': name => `.ai/workflows/${name}.md`,\n 'default': name => `.ai/workflows/${name}.md`,\n },\n};\n\nexport interface InstallPathOverrides {\n /** Single path override — applies to all tools when installPaths has no entry for the tool */\n installPath?: string;\n /** Per-tool path overrides — highest priority */\n installPaths?: Record<string, string>;\n}\n\n/**\n * Returns the recommended install path for an asset in a given tool's workspace.\n * Resolution order: installPaths[tool] > installPath > built-in convention.\n */\nexport function getInstallPath(\n type: AssetType,\n tool: AiTool | string,\n name: string,\n overrides?: InstallPathOverrides,\n): string {\n if (overrides?.installPaths?.[tool]) return overrides.installPaths[tool];\n if (overrides?.installPath) return overrides.installPath;\n\n const slug = toSlug(name);\n const toolConventions = CONVENTIONS[type];\n const fn = toolConventions[tool as AiTool] ?? toolConventions.default;\n return fn(slug);\n}\n\n/**\n * Returns install paths for all tools in the asset's tools list.\n * If tools contains 'all', returns paths for every known tool.\n */\nexport function getInstallPathsForAsset(\n type: AssetType,\n tools: (AiTool | string)[],\n name: string,\n overrides?: InstallPathOverrides,\n): Record<string, string> {\n // Bundles have no single install path — they're composed of individual items\n if (type === 'bundle') return {};\n\n const ALL_TOOLS: AiTool[] = ['claude-code', 'github-copilot', 'google-gemini', 'cursor'];\n const resolvedTools = tools.includes('all') ? ALL_TOOLS : tools;\n\n return Object.fromEntries(\n resolvedTools.map(tool => [tool, getInstallPath(type, tool, name, overrides)]),\n );\n}\n"],"names":[],"mappings":"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"}
|
package/dist/schemas.cjs.js
CHANGED
|
@@ -13,7 +13,8 @@ const AssetTypeEnum = zod.z.enum([
|
|
|
13
13
|
"instruction",
|
|
14
14
|
"agent",
|
|
15
15
|
"skill",
|
|
16
|
-
"workflow"
|
|
16
|
+
"workflow",
|
|
17
|
+
"bundle"
|
|
17
18
|
]);
|
|
18
19
|
const AiAssetFrontmatterSchema = zod.z.object({
|
|
19
20
|
/** Path to the .md content file, relative to the .yaml file directory.
|
|
@@ -34,10 +35,37 @@ const AiAssetFrontmatterSchema = zod.z.object({
|
|
|
34
35
|
installPath: zod.z.string().optional(),
|
|
35
36
|
installPaths: zod.z.record(zod.z.string()).optional(),
|
|
36
37
|
// skill-specific
|
|
37
|
-
resources: zod.z.array(zod.z.string()).optional()
|
|
38
|
+
resources: zod.z.array(zod.z.string()).optional(),
|
|
39
|
+
// bundle-specific
|
|
40
|
+
items: zod.z.array(zod.z.object({ ref: zod.z.string() })).optional(),
|
|
41
|
+
// usage guide — markdown shown when the user clicks the help button
|
|
42
|
+
help: zod.z.string().optional(),
|
|
43
|
+
// MCP servers required by this agent/skill
|
|
44
|
+
mcps: zod.z.array(
|
|
45
|
+
zod.z.union([
|
|
46
|
+
zod.z.string(),
|
|
47
|
+
zod.z.object({ id: zod.z.string(), name: zod.z.string().optional(), icon: zod.z.string().optional() })
|
|
48
|
+
])
|
|
49
|
+
).optional()
|
|
38
50
|
}).passthrough();
|
|
51
|
+
const McpCatalogFileSchema = zod.z.object({
|
|
52
|
+
servers: zod.z.array(
|
|
53
|
+
zod.z.object({
|
|
54
|
+
id: zod.z.string().min(1),
|
|
55
|
+
name: zod.z.string().min(1),
|
|
56
|
+
description: zod.z.string().optional(),
|
|
57
|
+
icon: zod.z.string().optional(),
|
|
58
|
+
type: zod.z.enum(["http", "stdio"]),
|
|
59
|
+
url: zod.z.string().optional(),
|
|
60
|
+
command: zod.z.string().optional(),
|
|
61
|
+
args: zod.z.array(zod.z.string()).optional(),
|
|
62
|
+
env: zod.z.record(zod.z.string()).optional()
|
|
63
|
+
})
|
|
64
|
+
)
|
|
65
|
+
});
|
|
39
66
|
|
|
40
67
|
exports.AiAssetFrontmatterSchema = AiAssetFrontmatterSchema;
|
|
41
68
|
exports.AiToolEnum = AiToolEnum;
|
|
42
69
|
exports.AssetTypeEnum = AssetTypeEnum;
|
|
70
|
+
exports.McpCatalogFileSchema = McpCatalogFileSchema;
|
|
43
71
|
//# sourceMappingURL=schemas.cjs.js.map
|
package/dist/schemas.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.cjs.js","sources":["../src/schemas.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const AiToolEnum = z.enum([\n 'all',\n 'github-copilot',\n 'claude-code',\n 'google-gemini',\n 'cursor',\n]);\n\nexport const AssetTypeEnum = z.enum([\n 'instruction',\n 'agent',\n 'skill',\n 'workflow',\n]);\n\n/**\n * Schema for the YAML metadata file (.yaml) that acts as an envelope.\n * The actual asset content lives in the referenced .md file.\n */\nexport const AiAssetFrontmatterSchema = z\n .object({\n /** Path to the .md content file, relative to the .yaml file directory.\n * If omitted, the parser falls back to <same-name>.md by convention. */\n content: z.string().optional(),\n name: z.string().min(1).max(200),\n /** Human-readable display label shown in the UI. Falls back to `name` when omitted. */\n label: z.string().min(1).max(200).optional(),\n description: z.string().min(1).max(500),\n type: AssetTypeEnum,\n tools: z.array(AiToolEnum).min(1),\n tags: z.array(z.string()).optional().default([]),\n author: z.string().optional().default('Unknown'),\n icon: z.string().optional(),\n version: z.string().optional().default('1.0.0'),\n updatedAt: z.string().optional(),\n // install path overrides\n installPath: z.string().optional(),\n installPaths: z.record(z.string()).optional(),\n // skill-specific\n resources: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type AiAssetFrontmatter = z.infer<typeof AiAssetFrontmatterSchema>;\n"],"names":["z"],"mappings":";;;;AAEO,MAAM,UAAA,GAAaA,MAAE,IAAA,CAAK;AAAA,EAC/B,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAC;AAEM,MAAM,aAAA,GAAgBA,MAAE,IAAA,CAAK;AAAA,EAClC,aAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC;AAMM,MAAM,wBAAA,GAA2BA,MACrC,MAAA,CAAO;AAAA;AAAA;AAAA,EAGN,OAAA,EAASA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,IAAA,EAAMA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA;AAAA,EAE/B,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EAC3C,WAAA,EAAaA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EACN,OAAOA,KAAA,CAAE,KAAA,CAAM,UAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EAChC,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAMA,KAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC/C,QAAQA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,SAAS,CAAA;AAAA,EAC/C,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,SAASA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,OAAO,CAAA;AAAA,EAC9C,SAAA,EAAWA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAE/B,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,cAAcA,KAAA,CAAE,MAAA,CAAOA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA;AAAA,EAE5C,WAAWA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA;
|
|
1
|
+
{"version":3,"file":"schemas.cjs.js","sources":["../src/schemas.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const AiToolEnum = z.enum([\n 'all',\n 'github-copilot',\n 'claude-code',\n 'google-gemini',\n 'cursor',\n]);\n\nexport const AssetTypeEnum = z.enum([\n 'instruction',\n 'agent',\n 'skill',\n 'workflow',\n 'bundle',\n]);\n\n/**\n * Schema for the YAML metadata file (.yaml) that acts as an envelope.\n * The actual asset content lives in the referenced .md file.\n */\nexport const AiAssetFrontmatterSchema = z\n .object({\n /** Path to the .md content file, relative to the .yaml file directory.\n * If omitted, the parser falls back to <same-name>.md by convention. */\n content: z.string().optional(),\n name: z.string().min(1).max(200),\n /** Human-readable display label shown in the UI. Falls back to `name` when omitted. */\n label: z.string().min(1).max(200).optional(),\n description: z.string().min(1).max(500),\n type: AssetTypeEnum,\n tools: z.array(AiToolEnum).min(1),\n tags: z.array(z.string()).optional().default([]),\n author: z.string().optional().default('Unknown'),\n icon: z.string().optional(),\n version: z.string().optional().default('1.0.0'),\n updatedAt: z.string().optional(),\n // install path overrides\n installPath: z.string().optional(),\n installPaths: z.record(z.string()).optional(),\n // skill-specific\n resources: z.array(z.string()).optional(),\n // bundle-specific\n items: z.array(z.object({ ref: z.string() })).optional(),\n // usage guide — markdown shown when the user clicks the help button\n help: z.string().optional(),\n // MCP servers required by this agent/skill\n mcps: z.array(\n z.union([\n z.string(),\n z.object({ id: z.string(), name: z.string().optional(), icon: z.string().optional() }),\n ]),\n ).optional(),\n })\n .passthrough();\n\nexport type AiAssetFrontmatter = z.infer<typeof AiAssetFrontmatterSchema>;\n\n/**\n * Schema for the mcp-catalog.yaml file placed at the root of a provider repository.\n * Defines external MCP servers that users can install with one click.\n */\nexport const McpCatalogFileSchema = z.object({\n servers: z.array(\n z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n icon: z.string().optional(),\n type: z.enum(['http', 'stdio']),\n url: z.string().optional(),\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string()).optional(),\n }),\n ),\n});\n\nexport type McpCatalogFile = z.infer<typeof McpCatalogFileSchema>;\n"],"names":["z"],"mappings":"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"}
|
package/dist/schemas.esm.js
CHANGED
|
@@ -11,7 +11,8 @@ const AssetTypeEnum = z.enum([
|
|
|
11
11
|
"instruction",
|
|
12
12
|
"agent",
|
|
13
13
|
"skill",
|
|
14
|
-
"workflow"
|
|
14
|
+
"workflow",
|
|
15
|
+
"bundle"
|
|
15
16
|
]);
|
|
16
17
|
const AiAssetFrontmatterSchema = z.object({
|
|
17
18
|
/** Path to the .md content file, relative to the .yaml file directory.
|
|
@@ -32,8 +33,34 @@ const AiAssetFrontmatterSchema = z.object({
|
|
|
32
33
|
installPath: z.string().optional(),
|
|
33
34
|
installPaths: z.record(z.string()).optional(),
|
|
34
35
|
// skill-specific
|
|
35
|
-
resources: z.array(z.string()).optional()
|
|
36
|
+
resources: z.array(z.string()).optional(),
|
|
37
|
+
// bundle-specific
|
|
38
|
+
items: z.array(z.object({ ref: z.string() })).optional(),
|
|
39
|
+
// usage guide — markdown shown when the user clicks the help button
|
|
40
|
+
help: z.string().optional(),
|
|
41
|
+
// MCP servers required by this agent/skill
|
|
42
|
+
mcps: z.array(
|
|
43
|
+
z.union([
|
|
44
|
+
z.string(),
|
|
45
|
+
z.object({ id: z.string(), name: z.string().optional(), icon: z.string().optional() })
|
|
46
|
+
])
|
|
47
|
+
).optional()
|
|
36
48
|
}).passthrough();
|
|
49
|
+
const McpCatalogFileSchema = z.object({
|
|
50
|
+
servers: z.array(
|
|
51
|
+
z.object({
|
|
52
|
+
id: z.string().min(1),
|
|
53
|
+
name: z.string().min(1),
|
|
54
|
+
description: z.string().optional(),
|
|
55
|
+
icon: z.string().optional(),
|
|
56
|
+
type: z.enum(["http", "stdio"]),
|
|
57
|
+
url: z.string().optional(),
|
|
58
|
+
command: z.string().optional(),
|
|
59
|
+
args: z.array(z.string()).optional(),
|
|
60
|
+
env: z.record(z.string()).optional()
|
|
61
|
+
})
|
|
62
|
+
)
|
|
63
|
+
});
|
|
37
64
|
|
|
38
|
-
export { AiAssetFrontmatterSchema, AiToolEnum, AssetTypeEnum };
|
|
65
|
+
export { AiAssetFrontmatterSchema, AiToolEnum, AssetTypeEnum, McpCatalogFileSchema };
|
|
39
66
|
//# sourceMappingURL=schemas.esm.js.map
|
package/dist/schemas.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.esm.js","sources":["../src/schemas.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const AiToolEnum = z.enum([\n 'all',\n 'github-copilot',\n 'claude-code',\n 'google-gemini',\n 'cursor',\n]);\n\nexport const AssetTypeEnum = z.enum([\n 'instruction',\n 'agent',\n 'skill',\n 'workflow',\n]);\n\n/**\n * Schema for the YAML metadata file (.yaml) that acts as an envelope.\n * The actual asset content lives in the referenced .md file.\n */\nexport const AiAssetFrontmatterSchema = z\n .object({\n /** Path to the .md content file, relative to the .yaml file directory.\n * If omitted, the parser falls back to <same-name>.md by convention. */\n content: z.string().optional(),\n name: z.string().min(1).max(200),\n /** Human-readable display label shown in the UI. Falls back to `name` when omitted. */\n label: z.string().min(1).max(200).optional(),\n description: z.string().min(1).max(500),\n type: AssetTypeEnum,\n tools: z.array(AiToolEnum).min(1),\n tags: z.array(z.string()).optional().default([]),\n author: z.string().optional().default('Unknown'),\n icon: z.string().optional(),\n version: z.string().optional().default('1.0.0'),\n updatedAt: z.string().optional(),\n // install path overrides\n installPath: z.string().optional(),\n installPaths: z.record(z.string()).optional(),\n // skill-specific\n resources: z.array(z.string()).optional(),\n })\n .passthrough();\n\nexport type AiAssetFrontmatter = z.infer<typeof AiAssetFrontmatterSchema>;\n"],"names":[],"mappings":";;AAEO,MAAM,UAAA,GAAa,EAAE,IAAA,CAAK;AAAA,EAC/B,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAC;AAEM,MAAM,aAAA,GAAgB,EAAE,IAAA,CAAK;AAAA,EAClC,aAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC;AAMM,MAAM,wBAAA,GAA2B,EACrC,MAAA,CAAO;AAAA;AAAA;AAAA,EAGN,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,IAAA,EAAM,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA;AAAA,EAE/B,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EAC3C,WAAA,EAAa,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EACtC,IAAA,EAAM,aAAA;AAAA,EACN,OAAO,CAAA,CAAE,KAAA,CAAM,UAAU,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EAChC,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC/C,QAAQ,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,SAAS,CAAA;AAAA,EAC/C,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,OAAO,CAAA;AAAA,EAC9C,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAE/B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,cAAc,CAAA,CAAE,MAAA,CAAO,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA;AAAA,EAE5C,WAAW,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA;
|
|
1
|
+
{"version":3,"file":"schemas.esm.js","sources":["../src/schemas.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const AiToolEnum = z.enum([\n 'all',\n 'github-copilot',\n 'claude-code',\n 'google-gemini',\n 'cursor',\n]);\n\nexport const AssetTypeEnum = z.enum([\n 'instruction',\n 'agent',\n 'skill',\n 'workflow',\n 'bundle',\n]);\n\n/**\n * Schema for the YAML metadata file (.yaml) that acts as an envelope.\n * The actual asset content lives in the referenced .md file.\n */\nexport const AiAssetFrontmatterSchema = z\n .object({\n /** Path to the .md content file, relative to the .yaml file directory.\n * If omitted, the parser falls back to <same-name>.md by convention. */\n content: z.string().optional(),\n name: z.string().min(1).max(200),\n /** Human-readable display label shown in the UI. Falls back to `name` when omitted. */\n label: z.string().min(1).max(200).optional(),\n description: z.string().min(1).max(500),\n type: AssetTypeEnum,\n tools: z.array(AiToolEnum).min(1),\n tags: z.array(z.string()).optional().default([]),\n author: z.string().optional().default('Unknown'),\n icon: z.string().optional(),\n version: z.string().optional().default('1.0.0'),\n updatedAt: z.string().optional(),\n // install path overrides\n installPath: z.string().optional(),\n installPaths: z.record(z.string()).optional(),\n // skill-specific\n resources: z.array(z.string()).optional(),\n // bundle-specific\n items: z.array(z.object({ ref: z.string() })).optional(),\n // usage guide — markdown shown when the user clicks the help button\n help: z.string().optional(),\n // MCP servers required by this agent/skill\n mcps: z.array(\n z.union([\n z.string(),\n z.object({ id: z.string(), name: z.string().optional(), icon: z.string().optional() }),\n ]),\n ).optional(),\n })\n .passthrough();\n\nexport type AiAssetFrontmatter = z.infer<typeof AiAssetFrontmatterSchema>;\n\n/**\n * Schema for the mcp-catalog.yaml file placed at the root of a provider repository.\n * Defines external MCP servers that users can install with one click.\n */\nexport const McpCatalogFileSchema = z.object({\n servers: z.array(\n z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n icon: z.string().optional(),\n type: z.enum(['http', 'stdio']),\n url: z.string().optional(),\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string()).optional(),\n }),\n ),\n});\n\nexport type McpCatalogFile = z.infer<typeof McpCatalogFileSchema>;\n"],"names":[],"mappings":"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"}
|