awesome-copilot-mcp 0.0.1-beta

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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +95 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +590 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/github-adapter.d.ts +33 -0
  8. package/dist/github-adapter.d.ts.map +1 -0
  9. package/dist/github-adapter.js +226 -0
  10. package/dist/github-adapter.js.map +1 -0
  11. package/dist/http-server.d.ts +55 -0
  12. package/dist/http-server.d.ts.map +1 -0
  13. package/dist/http-server.js +270 -0
  14. package/dist/http-server.js.map +1 -0
  15. package/dist/index.d.ts +6 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +27 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/logger.d.ts +3 -0
  20. package/dist/logger.d.ts.map +1 -0
  21. package/dist/logger.js +25 -0
  22. package/dist/logger.js.map +1 -0
  23. package/dist/mcp-prompts.d.ts +18 -0
  24. package/dist/mcp-prompts.d.ts.map +1 -0
  25. package/dist/mcp-prompts.js +81 -0
  26. package/dist/mcp-prompts.js.map +1 -0
  27. package/dist/mcp-resources.d.ts +37 -0
  28. package/dist/mcp-resources.d.ts.map +1 -0
  29. package/dist/mcp-resources.js +394 -0
  30. package/dist/mcp-resources.js.map +1 -0
  31. package/dist/mcp-server.d.ts +11 -0
  32. package/dist/mcp-server.d.ts.map +1 -0
  33. package/dist/mcp-server.js +49 -0
  34. package/dist/mcp-server.js.map +1 -0
  35. package/dist/mcp-shared.d.ts +10 -0
  36. package/dist/mcp-shared.d.ts.map +1 -0
  37. package/dist/mcp-shared.js +160 -0
  38. package/dist/mcp-shared.js.map +1 -0
  39. package/dist/mcp-tools.d.ts +41 -0
  40. package/dist/mcp-tools.d.ts.map +1 -0
  41. package/dist/mcp-tools.js +249 -0
  42. package/dist/mcp-tools.js.map +1 -0
  43. package/dist/sse.d.ts +15 -0
  44. package/dist/sse.d.ts.map +1 -0
  45. package/dist/sse.js +11 -0
  46. package/dist/sse.js.map +1 -0
  47. package/dist/types.d.ts +94 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +3 -0
  50. package/dist/types.js.map +1 -0
  51. package/metadata.json +5767 -0
  52. package/package.json +85 -0
@@ -0,0 +1,10 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { MCPTools } from './mcp-tools';
3
+ import { MCPPrompts } from './mcp-prompts';
4
+ import { MCPResources } from './mcp-resources';
5
+ export interface HandlerHooks {
6
+ onCallStart?: (requestId: string, controller: AbortController) => void;
7
+ onCallEnd?: (requestId: string) => void;
8
+ }
9
+ export declare function registerMcpHandlers(server: Server, tools: MCPTools, prompts: MCPPrompts, resources: MCPResources, hooks?: HandlerHooks): void;
10
+ //# sourceMappingURL=mcp-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-shared.d.ts","sourceRoot":"","sources":["../src/mcp-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IACvE,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,GAAE,YAAiB,GAAG,IAAI,CAkHjJ"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerMcpHandlers = registerMcpHandlers;
4
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
5
+ const logger_1 = require("./logger");
6
+ function registerMcpHandlers(server, tools, prompts, resources, hooks = {}) {
7
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
8
+ return { tools: tools.getTools() };
9
+ });
10
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request, extra) => {
11
+ const { name, arguments: args } = request.params;
12
+ const requestId = extra?.requestId ? String(extra.requestId) : undefined;
13
+ const controller = new AbortController();
14
+ if (requestId && hooks.onCallStart)
15
+ hooks.onCallStart(requestId, controller);
16
+ try {
17
+ const extraAny = extra;
18
+ const result = await tools.handleTool(name, args || {}, {
19
+ signal: controller.signal,
20
+ onProgress: (p) => extraAny?.sendProgress?.(p),
21
+ onPartial: (c) => extraAny?.sendPartial?.(c),
22
+ });
23
+ return {
24
+ content: [
25
+ {
26
+ type: 'text',
27
+ text: formatResultText(result),
28
+ },
29
+ ],
30
+ structuredContent: result,
31
+ };
32
+ }
33
+ catch (error) {
34
+ logger_1.logger.error(`Tool execution failed: ${error}`);
35
+ return {
36
+ content: [
37
+ {
38
+ type: 'text',
39
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
40
+ },
41
+ ],
42
+ isError: true,
43
+ };
44
+ }
45
+ finally {
46
+ if (requestId && hooks.onCallEnd)
47
+ hooks.onCallEnd(requestId);
48
+ }
49
+ });
50
+ server.setRequestHandler(types_js_1.ListPromptsRequestSchema, async () => {
51
+ return { prompts: prompts.getPrompts() };
52
+ });
53
+ server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
54
+ const { name, arguments: args } = request.params;
55
+ try {
56
+ if (name === 'get_search_prompt') {
57
+ const keyword = args?.keyword;
58
+ if (keyword === undefined) {
59
+ throw new Error('Missing keyword for get_search_prompt');
60
+ }
61
+ const content = prompts.getSearchPromptContent(keyword);
62
+ return {
63
+ description: 'Interactive prompt guidance for searching awesome-copilot content',
64
+ messages: [
65
+ {
66
+ role: 'user',
67
+ content: {
68
+ type: 'text',
69
+ text: content,
70
+ },
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ throw new Error(`Unknown prompt: ${name}`);
76
+ }
77
+ catch (error) {
78
+ logger_1.logger.error(`Prompt execution failed: ${error}`);
79
+ return {
80
+ description: 'Error',
81
+ messages: [
82
+ {
83
+ role: 'user',
84
+ content: {
85
+ type: 'text',
86
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
87
+ },
88
+ },
89
+ ],
90
+ };
91
+ }
92
+ });
93
+ // Resources handlers
94
+ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
95
+ return { resources: await resources.getResources() };
96
+ });
97
+ server.setRequestHandler(types_js_1.ListResourceTemplatesRequestSchema, async () => {
98
+ return { resourceTemplates: await resources.getResourceTemplates() };
99
+ });
100
+ server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
101
+ const { uri } = request.params;
102
+ try {
103
+ const content = await resources.readResource(uri);
104
+ return {
105
+ contents: [content]
106
+ };
107
+ }
108
+ catch (error) {
109
+ logger_1.logger.error(`Failed to read resource ${uri}: ${error}`);
110
+ throw error;
111
+ }
112
+ });
113
+ }
114
+ function formatResultText(result) {
115
+ if (!result || typeof result !== 'object')
116
+ return String(result ?? '');
117
+ // SearchResult shape
118
+ if ('items' in result && Array.isArray(result.items)) {
119
+ if (result.items.length === 0)
120
+ return `No results found for query: "${result.query}"`;
121
+ const lines = [`搜索结果 (${result.count ?? result.items.length}):`, '', '| 名称 | 类型 | 描述 | 标签 |', '|------|------|------|------|'];
122
+ result.items.forEach((item) => {
123
+ const tags = item.tags && item.tags.length > 0 ? item.tags.join(', ') : '-';
124
+ const description = item.description ? item.description.substring(0, 50) : '-';
125
+ lines.push(`| ${item.name} | ${item.type} | ${description} | ${tags} |`);
126
+ });
127
+ return lines.join('\n');
128
+ }
129
+ // Loaded content shape
130
+ if ('name' in result) {
131
+ const lines = [];
132
+ if (result.name)
133
+ lines.push(`## ${result.name}`);
134
+ if (result.description)
135
+ lines.push(`\n**描述:** ${result.description}`);
136
+ if (result.type)
137
+ lines.push(`**类型:** ${result.type}`);
138
+ if (result.tags && result.tags.length > 0)
139
+ lines.push(`**标签:** ${result.tags.join(', ')}`);
140
+ if (result.type === 'collection' && Array.isArray(result.items) && result.items.length > 0) {
141
+ lines.push(`\n**集合项 (${result.items.length}):**`);
142
+ lines.push('');
143
+ result.items.forEach((item) => {
144
+ if (typeof item === 'object' && item.path && item.kind) {
145
+ lines.push(`- [${item.kind}] ${item.path}`);
146
+ }
147
+ else {
148
+ lines.push(`- ${item}`);
149
+ }
150
+ });
151
+ }
152
+ // Collections don't have content field - skip content display for them
153
+ if (result.type !== 'collection' && result.content) {
154
+ lines.push(`\n**内容:**\n\n${result.content}`);
155
+ }
156
+ return lines.join('\n');
157
+ }
158
+ return JSON.stringify(result, null, 2);
159
+ }
160
+ //# sourceMappingURL=mcp-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-shared.js","sourceRoot":"","sources":["../src/mcp-shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import { IndexData } from './types';
3
+ export interface SearchResult {
4
+ query: string;
5
+ count: number;
6
+ items: Array<{
7
+ name: string;
8
+ description: string;
9
+ type: string;
10
+ tags: string[];
11
+ path: string;
12
+ }>;
13
+ }
14
+ interface AdapterLike {
15
+ fetchIndex: () => Promise<IndexData>;
16
+ refresh: () => Promise<IndexData>;
17
+ loadSkillDirectory: (name: string) => Promise<{
18
+ name: string;
19
+ files: Array<{
20
+ path: string;
21
+ content: string;
22
+ }>;
23
+ }>;
24
+ }
25
+ export declare class MCPTools {
26
+ private adapter;
27
+ constructor(adapter: AdapterLike);
28
+ getTools(): Tool[];
29
+ handleTool(name: string, args: any, opts?: {
30
+ signal?: AbortSignal;
31
+ onProgress?: (p: any) => void;
32
+ onPartial?: (c: any) => void;
33
+ }): Promise<any>;
34
+ private search;
35
+ private download;
36
+ private refreshMetadata;
37
+ private loadSkillDirectory;
38
+ private performSearch;
39
+ }
40
+ export {};
41
+ //# sourceMappingURL=mcp-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tools.d.ts","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAGD,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAClH;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,EAAE,WAAW;IAIhC,QAAQ,IAAI,IAAI,EAAE;IA2EZ,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;YAyBvI,MAAM;YA4BN,QAAQ;YAmCR,eAAe;YAYf,kBAAkB;IAKhC,OAAO,CAAC,aAAa;CAoCtB"}
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MCPTools = void 0;
4
+ const logger_1 = require("./logger");
5
+ class MCPTools {
6
+ adapter;
7
+ constructor(adapter) {
8
+ this.adapter = adapter;
9
+ }
10
+ getTools() {
11
+ return [
12
+ {
13
+ name: 'search',
14
+ description: 'Search for content (agents, prompts, instructions, skills, collections).',
15
+ inputSchema: {
16
+ type: 'object',
17
+ properties: {
18
+ query: {
19
+ type: 'string',
20
+ description: 'The keyword to search for.'
21
+ },
22
+ type: {
23
+ type: 'string',
24
+ description: 'Optional content type filter (agent, prompt, instruction, skill, collection).',
25
+ enum: ['agent', 'prompt', 'instruction', 'skill', 'collection']
26
+ },
27
+ tags: {
28
+ type: 'array',
29
+ items: { type: 'string' },
30
+ description: 'Filter by tags.'
31
+ },
32
+ limit: {
33
+ type: 'number',
34
+ description: 'Maximum number of results to return. Default is 10.'
35
+ }
36
+ },
37
+ required: ['query']
38
+ }
39
+ },
40
+ {
41
+ name: 'download',
42
+ description: 'Get the download URL for a specific item. The returned URL can be used directly to fetch and save the file content.',
43
+ inputSchema: {
44
+ type: 'object',
45
+ properties: {
46
+ name: {
47
+ type: 'string',
48
+ description: 'The name of the item to download.'
49
+ },
50
+ type: {
51
+ type: 'string',
52
+ description: 'Optional type hint (agent, prompt, instruction, skill, collection) to resolve name collisions.',
53
+ enum: ['agent', 'prompt', 'instruction', 'skill', 'collection']
54
+ }
55
+ },
56
+ required: ['name']
57
+ }
58
+ },
59
+ {
60
+ name: 'refresh_metadata',
61
+ description: 'Force refresh metadata from upstream repository.',
62
+ inputSchema: {
63
+ type: 'object',
64
+ properties: {},
65
+ required: []
66
+ }
67
+ },
68
+ {
69
+ name: 'load_skill_directory',
70
+ description: 'Load all files from a skill directory at once. Returns the complete directory structure with all file contents.',
71
+ inputSchema: {
72
+ type: 'object',
73
+ properties: {
74
+ name: {
75
+ type: 'string',
76
+ description: 'The skill name (e.g., webapp-testing)'
77
+ }
78
+ },
79
+ required: ['name']
80
+ }
81
+ }
82
+ ];
83
+ }
84
+ async handleTool(name, args, opts) {
85
+ try {
86
+ if (opts?.signal?.aborted)
87
+ throw new Error('aborted');
88
+ switch (name) {
89
+ case 'search': {
90
+ opts?.onProgress?.({ phase: 'searching' });
91
+ const r1 = await this.search(args);
92
+ opts?.onProgress?.({ phase: 'done', count: r1.count });
93
+ return r1;
94
+ }
95
+ case 'download':
96
+ return await this.download(args);
97
+ case 'refresh_metadata':
98
+ return await this.refreshMetadata();
99
+ case 'load_skill_directory':
100
+ return await this.loadSkillDirectory(args);
101
+ default:
102
+ throw new Error(`Unknown tool: ${name}`);
103
+ }
104
+ }
105
+ catch (error) {
106
+ logger_1.logger.error(`Tool execution error: ${error}`);
107
+ throw error;
108
+ }
109
+ }
110
+ async search(args) {
111
+ if (!args || typeof args.query !== 'string')
112
+ throw new Error('Missing required argument: query');
113
+ const index = await this.adapter.fetchIndex();
114
+ let allItems = [];
115
+ const type = args.type ? args.type.toLowerCase() : 'all';
116
+ // Filter items by type
117
+ if (type === 'all') {
118
+ allItems = [
119
+ ...index.agents,
120
+ ...index.prompts,
121
+ ...index.instructions,
122
+ ...index.skills,
123
+ ...index.collections
124
+ ];
125
+ }
126
+ else {
127
+ // Direct type mapping
128
+ if (type === 'agent' || type === 'agents')
129
+ allItems = index.agents;
130
+ else if (type === 'prompt' || type === 'prompts')
131
+ allItems = index.prompts;
132
+ else if (type === 'instruction' || type === 'instructions')
133
+ allItems = index.instructions;
134
+ else if (type === 'skill' || type === 'skills')
135
+ allItems = index.skills;
136
+ else if (type === 'collection' || type === 'collections')
137
+ allItems = index.collections;
138
+ }
139
+ return this.performSearch(allItems, args);
140
+ }
141
+ async download(args) {
142
+ if (!args || !args.name)
143
+ throw new Error('Missing required argument: name');
144
+ const index = await this.adapter.fetchIndex();
145
+ const type = args.type ? args.type.toLowerCase() : null;
146
+ // Helper to find by name within a specific subset
147
+ const findIn = (items) => items.find(i => i.name === args.name);
148
+ // Return item info with URL for direct download (no content fetching)
149
+ const formatResult = (item) => ({
150
+ name: item.name,
151
+ type: item.type,
152
+ url: item.url,
153
+ path: item.path,
154
+ description: item.description
155
+ });
156
+ if (type) {
157
+ if ((type === 'agent' || type === 'agents')) {
158
+ const f = findIn(index.agents);
159
+ if (f)
160
+ return formatResult(f);
161
+ }
162
+ if ((type === 'skill' || type === 'skills')) {
163
+ const f = findIn(index.skills);
164
+ if (f)
165
+ return formatResult(f);
166
+ }
167
+ if ((type === 'prompt' || type === 'prompts')) {
168
+ const f = findIn(index.prompts);
169
+ if (f)
170
+ return formatResult(f);
171
+ }
172
+ if ((type === 'instruction' || type === 'instructions')) {
173
+ const f = findIn(index.instructions);
174
+ if (f)
175
+ return formatResult(f);
176
+ }
177
+ if ((type === 'collection' || type === 'collections')) {
178
+ const f = findIn(index.collections);
179
+ if (f)
180
+ return formatResult(f);
181
+ }
182
+ }
183
+ // Generic priority order
184
+ const agent = findIn(index.agents);
185
+ if (agent)
186
+ return formatResult(agent);
187
+ const skill = findIn(index.skills);
188
+ if (skill)
189
+ return formatResult(skill);
190
+ const prompt = findIn(index.prompts);
191
+ if (prompt)
192
+ return formatResult(prompt);
193
+ const instruction = findIn(index.instructions);
194
+ if (instruction)
195
+ return formatResult(instruction);
196
+ const collection = findIn(index.collections);
197
+ if (collection)
198
+ return formatResult(collection);
199
+ throw new Error(`Item not found: ${args.name}`);
200
+ }
201
+ async refreshMetadata() {
202
+ const start = Date.now();
203
+ const index = await this.adapter.refresh();
204
+ const count = index.agents.length + index.prompts.length + index.instructions.length + index.skills.length + index.collections.length;
205
+ return {
206
+ status: 'success',
207
+ count,
208
+ updated: index.lastUpdated
209
+ };
210
+ }
211
+ async loadSkillDirectory(args) {
212
+ if (!args || !args.name)
213
+ throw new Error('Missing required argument: name');
214
+ return await this.adapter.loadSkillDirectory(args.name);
215
+ }
216
+ performSearch(items, args) {
217
+ const query = args.query.toLowerCase();
218
+ // Normalize requested tags to lowercase to avoid case-sensitive mismatches
219
+ const requestedTags = (Array.isArray(args.tags) ? args.tags : []).map(t => t.toLowerCase());
220
+ let results = items.filter(item => {
221
+ const nameMatch = typeof item.name === 'string' && item.name.toLowerCase().includes(query);
222
+ const descMatch = typeof item.description === 'string' && item.description.toLowerCase().includes(query);
223
+ const tagsLower = Array.isArray(item.tags) ? item.tags.map((t) => t.toLowerCase()) : [];
224
+ const tagMatch = tagsLower.some((t) => t.includes(query));
225
+ return nameMatch || descMatch || tagMatch;
226
+ });
227
+ if (requestedTags.length > 0) {
228
+ results = results.filter(item => {
229
+ const tagsLower = Array.isArray(item.tags) ? item.tags.map((t) => t.toLowerCase()) : [];
230
+ return requestedTags.some(t => tagsLower.includes(t));
231
+ });
232
+ }
233
+ const limit = args.limit || 10;
234
+ results = results.slice(0, limit);
235
+ return {
236
+ query: args.query,
237
+ count: results.length,
238
+ items: results.map(item => ({
239
+ name: item.name,
240
+ description: item.description,
241
+ type: item.type,
242
+ tags: item.tags || [],
243
+ path: item.path
244
+ }))
245
+ };
246
+ }
247
+ }
248
+ exports.MCPTools = MCPTools;
249
+ //# sourceMappingURL=mcp-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":";;;AAEA,qCAAkC;AAqBlC,MAAa,QAAQ;IACX,OAAO,CAAc;IAE7B,YAAY,OAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0EAA0E;gBACvF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,4BAA4B;yBAC1C;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+EAA+E;4BAC5F,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC;yBAChE;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,iBAAiB;yBAC/B;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,qDAAqD;yBACnE;qBACF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,qHAAqH;gBAClI,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mCAAmC;yBACjD;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,gGAAgG;4BAC7G,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC;yBAChE;qBACF;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,kDAAkD;gBAC/D,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;oBACd,QAAQ,EAAE,EAAE;iBACb;aACF;YACD;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,WAAW,EAAE,iHAAiH;gBAC9H,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uCAAuC;yBACrD;qBACF;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,IAAS,EAAE,IAA4F;QACpI,IAAI,CAAC;YACH,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YACtD,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC3C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACnC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;oBACvD,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,KAAK,UAAU;oBACb,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnC,KAAK,kBAAkB;oBACrB,OAAO,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtC,KAAK,sBAAsB;oBACzB,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC7C;oBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,IAAuE;QAC1F,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAE9C,IAAI,QAAQ,GAAU,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAEzD,uBAAuB;QACvB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,QAAQ,GAAG;gBACT,GAAG,KAAK,CAAC,MAAM;gBACf,GAAG,KAAK,CAAC,OAAO;gBAChB,GAAG,KAAK,CAAC,YAAY;gBACrB,GAAG,KAAK,CAAC,MAAM;gBACf,GAAG,KAAK,CAAC,WAAW;aACrB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;gBAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;iBAC9D,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;gBAAE,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;iBACtE,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc;gBAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC;iBACrF,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ;gBAAE,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;iBACnE,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,aAAa;gBAAE,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC;QACzF,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAqC;QAC1D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAExD,kDAAkD;QAClD,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvE,sEAAsE;QACtE,MAAM,YAAY,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAAC,IAAI,CAAC;oBAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAC/G,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAAC,IAAI,CAAC;oBAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAC/G,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAAC,IAAI,CAAC;oBAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAClH,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAAC,IAAI,CAAC;oBAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YACjI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;gBAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAAC,IAAI,CAAC;oBAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;QAChI,CAAC;QAED,yBAAyB;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,KAAK;YAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,IAAI,KAAK;YAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,MAAM;YAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAAC,IAAI,WAAW;YAAE,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;QAClG,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAAC,IAAI,UAAU;YAAE,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;QAE9F,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QAEtI,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK;YACL,OAAO,EAAE,KAAK,CAAC,WAAW;SAC3B,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAsB;QACrD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC5E,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAEO,aAAa,CAAC,KAAY,EAAE,IAAwD;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEvC,2EAA2E;QAC3E,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAE5F,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAChC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzG,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChG,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,OAAO,SAAS,IAAI,SAAS,IAAI,QAAQ,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChG,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAElC,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF;AA/ND,4BA+NC"}
package/dist/sse.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const SseEventEnvelopeSchema: z.ZodObject<{
3
+ event: z.ZodEnum<{
4
+ error: "error";
5
+ done: "done";
6
+ progress: "progress";
7
+ result: "result";
8
+ partial: "partial";
9
+ cancel_ack: "cancel_ack";
10
+ }>;
11
+ requestId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
12
+ payload: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodAny>>>;
13
+ }, z.core.$strict>;
14
+ export type SseEventEnvelope = z.infer<typeof SseEventEnvelopeSchema>;
15
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;kBAIxB,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
package/dist/sse.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SseEventEnvelopeSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ // Project-specific SSE envelope used by metadata streaming and other server-initiated notifications.
6
+ exports.SseEventEnvelopeSchema = zod_1.z.object({
7
+ event: zod_1.z.enum(['progress', 'partial', 'result', 'error', 'done', 'cancel_ack']),
8
+ requestId: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]),
9
+ payload: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).nullable().optional() // Zod v4: record(key, value)
10
+ }).strict();
11
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,qGAAqG;AACxF,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/E,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,6BAA6B;CAC3F,CAAC,CAAC,MAAM,EAAE,CAAC"}
@@ -0,0 +1,94 @@
1
+ export interface Agent {
2
+ name: string;
3
+ description: string;
4
+ tags: string[];
5
+ path: string;
6
+ url: string;
7
+ type: 'agent';
8
+ }
9
+ export interface Prompt {
10
+ name: string;
11
+ description: string;
12
+ tags: string[];
13
+ path: string;
14
+ url: string;
15
+ type: 'prompt';
16
+ }
17
+ export interface Instruction {
18
+ name: string;
19
+ description: string;
20
+ tags: string[];
21
+ path: string;
22
+ url: string;
23
+ type: 'instruction';
24
+ }
25
+ export interface Skill {
26
+ name: string;
27
+ description: string;
28
+ tags: string[];
29
+ path: string;
30
+ files?: string[];
31
+ url: string;
32
+ type: 'skill';
33
+ }
34
+ export interface CollectionItem {
35
+ path: string;
36
+ kind: 'prompt' | 'instruction' | 'agent' | 'skill';
37
+ }
38
+ export interface CollectionDisplay {
39
+ ordering?: 'alpha' | 'manual';
40
+ show_badge?: boolean;
41
+ }
42
+ export interface Collection {
43
+ id: string;
44
+ name: string;
45
+ description: string;
46
+ tags: string[];
47
+ items: CollectionItem[];
48
+ display?: CollectionDisplay;
49
+ path: string;
50
+ url: string;
51
+ type: 'collection';
52
+ }
53
+ export type ContentItem = Agent | Prompt | Instruction | Skill | Collection;
54
+ export interface RepoConfig {
55
+ owner: string;
56
+ repo: string;
57
+ branch?: string;
58
+ token?: string;
59
+ metadataUrl?: string;
60
+ }
61
+ export interface IndexData {
62
+ agents: Agent[];
63
+ prompts: Prompt[];
64
+ instructions: Instruction[];
65
+ skills: Skill[];
66
+ collections: Collection[];
67
+ lastUpdated: string;
68
+ version?: string;
69
+ generatedAt?: string;
70
+ source?: string;
71
+ }
72
+ export interface CacheEntry {
73
+ data: any;
74
+ timestamp: number;
75
+ ttl: number;
76
+ }
77
+ export interface SearchOptions {
78
+ query: string;
79
+ type?: 'agents' | 'prompts' | 'instructions' | 'skills' | 'collections' | 'all';
80
+ tags?: string[];
81
+ limit?: number;
82
+ }
83
+ export interface LoadOptions {
84
+ name: string;
85
+ type: 'agent' | 'prompt' | 'instruction' | 'skill' | 'collection';
86
+ refresh?: boolean;
87
+ }
88
+ export interface CliOptions {
89
+ json?: boolean;
90
+ refresh?: boolean;
91
+ verbose?: boolean;
92
+ config?: string;
93
+ }
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}