reskill 0.1.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +161 -104
  2. package/README.zh-CN.md +257 -0
  3. package/dist/cli/commands/index.d.ts +3 -3
  4. package/dist/cli/commands/index.d.ts.map +1 -1
  5. package/dist/cli/commands/info.d.ts +1 -1
  6. package/dist/cli/commands/init.d.ts +1 -1
  7. package/dist/cli/commands/install.d.ts +12 -4
  8. package/dist/cli/commands/install.d.ts.map +1 -1
  9. package/dist/cli/commands/list.d.ts +1 -1
  10. package/dist/cli/commands/list.d.ts.map +1 -1
  11. package/dist/cli/commands/outdated.d.ts +1 -1
  12. package/dist/cli/commands/outdated.d.ts.map +1 -1
  13. package/dist/cli/commands/uninstall.d.ts +1 -1
  14. package/dist/cli/commands/update.d.ts +1 -1
  15. package/dist/cli/index.js +999 -353
  16. package/dist/core/agent-registry.d.ts +54 -0
  17. package/dist/core/agent-registry.d.ts.map +1 -0
  18. package/dist/core/cache-manager.d.ts +20 -16
  19. package/dist/core/cache-manager.d.ts.map +1 -1
  20. package/dist/core/config-loader.d.ts +18 -18
  21. package/dist/core/config-loader.d.ts.map +1 -1
  22. package/dist/core/git-resolver.d.ts +23 -23
  23. package/dist/core/git-resolver.d.ts.map +1 -1
  24. package/dist/core/index.d.ts +8 -2
  25. package/dist/core/index.d.ts.map +1 -1
  26. package/dist/core/installer.d.ts +96 -0
  27. package/dist/core/installer.d.ts.map +1 -0
  28. package/dist/core/lock-manager.d.ts +17 -17
  29. package/dist/core/lock-manager.d.ts.map +1 -1
  30. package/dist/core/skill-manager.d.ts +83 -24
  31. package/dist/core/skill-manager.d.ts.map +1 -1
  32. package/dist/core/skill-parser.d.ts +116 -0
  33. package/dist/core/skill-parser.d.ts.map +1 -0
  34. package/dist/index.d.ts +4 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +951 -323
  37. package/dist/types/index.d.ts +96 -74
  38. package/dist/types/index.d.ts.map +1 -1
  39. package/dist/utils/fs.d.ts +30 -0
  40. package/dist/utils/fs.d.ts.map +1 -1
  41. package/package.json +29 -13
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Agent Registry - Multi-Agent configuration definitions
3
+ *
4
+ * Supports global and project-level installation for 17 coding agents
5
+ * Reference: https://github.com/vercel-labs/add-skill
6
+ */
7
+ /**
8
+ * Supported Agent types
9
+ */
10
+ export type AgentType = 'amp' | 'antigravity' | 'claude-code' | 'clawdbot' | 'codex' | 'cursor' | 'droid' | 'gemini-cli' | 'github-copilot' | 'goose' | 'kilo' | 'kiro-cli' | 'opencode' | 'roo' | 'trae' | 'windsurf' | 'neovate';
11
+ /**
12
+ * Agent configuration interface
13
+ */
14
+ export interface AgentConfig {
15
+ /** Agent identifier */
16
+ name: AgentType;
17
+ /** Display name */
18
+ displayName: string;
19
+ /** Project-level skills directory (relative path) */
20
+ skillsDir: string;
21
+ /** Global skills directory (absolute path) */
22
+ globalSkillsDir: string;
23
+ /** Detect if agent is installed */
24
+ detectInstalled: () => Promise<boolean>;
25
+ }
26
+ /**
27
+ * All supported Agents configuration
28
+ */
29
+ export declare const agents: Record<AgentType, AgentConfig>;
30
+ /**
31
+ * Get all Agent type list
32
+ */
33
+ export declare function getAllAgentTypes(): AgentType[];
34
+ /**
35
+ * Detect installed Agents
36
+ */
37
+ export declare function detectInstalledAgents(): Promise<AgentType[]>;
38
+ /**
39
+ * Get Agent configuration
40
+ */
41
+ export declare function getAgentConfig(type: AgentType): AgentConfig;
42
+ /**
43
+ * Validate if Agent type is valid
44
+ */
45
+ export declare function isValidAgentType(type: string): type is AgentType;
46
+ /**
47
+ * Get Agent's project-level skills directory
48
+ */
49
+ export declare function getAgentSkillsDir(type: AgentType, options?: {
50
+ global?: boolean;
51
+ cwd?: string;
52
+ }): string;
53
+ export default agents;
54
+ //# sourceMappingURL=agent-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/core/agent-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,KAAK,GACL,aAAa,GACb,aAAa,GACb,UAAU,GACV,OAAO,GACP,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,OAAO,GACP,MAAM,GACN,UAAU,GACV,UAAU,GACV,KAAK,GACL,MAAM,GACN,UAAU,GACV,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAID;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CA4JjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAUlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAE3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,MAAM,CAOR;AAED,eAAe,MAAM,CAAC"}
@@ -1,24 +1,24 @@
1
1
  import type { ParsedSkillRef } from '../types/index.js';
2
2
  /**
3
- * CacheManager - 管理全局 skill 缓存
3
+ * CacheManager - Manage global skill cache
4
4
  *
5
- * 缓存目录结构:
5
+ * Cache directory structure:
6
6
  * ~/.reskill-cache/
7
- * ├── github/ # 简写格式的 registry
7
+ * ├── github/ # Shorthand format registry
8
8
  * │ └── user/
9
9
  * │ └── skill/
10
10
  * │ ├── v1.0.0/
11
11
  * │ └── v1.1.0/
12
- * ├── github.com/ # Git URL 格式,使用 host 作为目录
12
+ * ├── github.com/ # Git URL format, using host as directory
13
13
  * │ └── user/
14
14
  * │ └── private-skill/
15
15
  * │ └── v1.0.0/
16
- * └── gitlab.company.com/ # 私有 GitLab 实例
16
+ * └── gitlab.company.com/ # Private GitLab instance
17
17
  * └── team/
18
18
  * └── skill/
19
19
  * └── v2.0.0/
20
20
  *
21
- * 对于 Git URL 格式 (SSH/HTTPS):
21
+ * For Git URL format (SSH/HTTPS):
22
22
  * - git@github.com:user/repo.git -> github.com/user/repo/version
23
23
  * - https://gitlab.company.com/team/skill.git -> gitlab.company.com/team/skill/version
24
24
  */
@@ -26,50 +26,54 @@ export declare class CacheManager {
26
26
  private cacheDir;
27
27
  constructor(cacheDir?: string);
28
28
  /**
29
- * 获取缓存目录
29
+ * Get cache directory
30
30
  */
31
31
  getCacheDir(): string;
32
32
  /**
33
- * 获取 skill 在缓存中的路径
33
+ * Get skill path in cache
34
34
  *
35
- * 对于不同的引用格式,缓存路径如下:
35
+ * For different reference formats, cache paths are:
36
36
  * - github:user/repo@v1.0.0 -> ~/.reskill-cache/github/user/repo/v1.0.0
37
37
  * - git@github.com:user/repo.git@v1.0.0 -> ~/.reskill-cache/github.com/user/repo/v1.0.0
38
38
  * - https://gitlab.company.com/team/skill.git@v2.0.0 -> ~/.reskill-cache/gitlab.company.com/team/skill/v2.0.0
39
39
  */
40
40
  getSkillCachePath(parsed: ParsedSkillRef, version: string): string;
41
41
  /**
42
- * 检查 skill 是否已缓存
42
+ * Get cache path (alias for getSkillCachePath)
43
+ */
44
+ getCachePath(parsed: ParsedSkillRef, version: string): string;
45
+ /**
46
+ * Check if skill is cached
43
47
  */
44
48
  isCached(parsed: ParsedSkillRef, version: string): boolean;
45
49
  /**
46
- * 获取缓存的 skill
50
+ * Get cached skill
47
51
  */
48
52
  get(parsed: ParsedSkillRef, version: string): Promise<{
49
53
  path: string;
50
54
  commit: string;
51
55
  } | null>;
52
56
  /**
53
- * 缓存 skill
57
+ * Cache skill
54
58
  */
55
59
  cache(repoUrl: string, parsed: ParsedSkillRef, ref: string, version: string): Promise<{
56
60
  path: string;
57
61
  commit: string;
58
62
  }>;
59
63
  /**
60
- * 从缓存复制到目标目录
64
+ * Copy from cache to target directory
61
65
  */
62
66
  copyTo(parsed: ParsedSkillRef, version: string, destPath: string): Promise<void>;
63
67
  /**
64
- * 清理特定 skill 的缓存
68
+ * Clear cache for specific skill
65
69
  */
66
70
  clearSkill(parsed: ParsedSkillRef, version?: string): void;
67
71
  /**
68
- * 清理所有缓存
72
+ * Clear all cache
69
73
  */
70
74
  clearAll(): void;
71
75
  /**
72
- * 获取缓存统计
76
+ * Get cache statistics
73
77
  */
74
78
  getStats(): {
75
79
  totalSkills: number;
@@ -1 +1 @@
1
- {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/core/cache-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,CAAC,EAAE,MAAM;IAI7B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;;OAOG;IACH,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAUlE;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAK1D;;OAEG;IACG,GAAG,CACP,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAuBnD;;OAEG;IACG,KAAK,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAyC5C;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB1D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,QAAQ,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;CA4B1D;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/core/cache-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,CAAC,EAAE,MAAM;IAI7B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;;;OAOG;IACH,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAIlE;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAI7D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAK1D;;OAEG;IACG,GAAG,CACP,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAuBnD;;OAEG;IACG,KAAK,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAyC5C;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetF;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAW1D;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,QAAQ,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;CA0B1D;AAED,eAAe,YAAY,CAAC"}
@@ -1,10 +1,10 @@
1
- import type { SkillsJson, SkillsDefaults } from '../types/index.js';
1
+ import type { SkillsDefaults, SkillsJson } from '../types/index.js';
2
2
  /**
3
- * 默认 registry URLs
3
+ * Default registry URLs
4
4
  */
5
5
  export declare const DEFAULT_REGISTRIES: Record<string, string>;
6
6
  /**
7
- * ConfigLoader - 加载和管理 skills.json 配置
7
+ * ConfigLoader - Load and manage skills.json configuration
8
8
  */
9
9
  export declare class ConfigLoader {
10
10
  private projectRoot;
@@ -12,63 +12,63 @@ export declare class ConfigLoader {
12
12
  private config;
13
13
  constructor(projectRoot?: string);
14
14
  /**
15
- * 获取项目根目录
15
+ * Get project root directory
16
16
  */
17
17
  getProjectRoot(): string;
18
18
  /**
19
- * 获取配置文件路径
19
+ * Get configuration file path
20
20
  */
21
21
  getConfigPath(): string;
22
22
  /**
23
- * 检查配置文件是否存在
23
+ * Check if configuration file exists
24
24
  */
25
25
  exists(): boolean;
26
26
  /**
27
- * 加载配置
27
+ * Load configuration
28
28
  */
29
29
  load(): SkillsJson;
30
30
  /**
31
- * 重新加载配置(忽略缓存)
31
+ * Reload configuration (ignore cache)
32
32
  */
33
33
  reload(): SkillsJson;
34
34
  /**
35
- * 保存配置
35
+ * Save configuration
36
36
  */
37
37
  save(config?: SkillsJson): void;
38
38
  /**
39
- * 创建默认配置
39
+ * Create default configuration
40
40
  */
41
41
  create(options?: Partial<SkillsJson>): SkillsJson;
42
42
  /**
43
- * 获取默认配置
43
+ * Get default configuration
44
44
  */
45
45
  getDefaults(): Required<SkillsDefaults>;
46
46
  /**
47
- * 获取 registry URL
47
+ * Get registry URL
48
48
  */
49
49
  getRegistryUrl(registryName: string): string;
50
50
  /**
51
- * 获取安装目录
51
+ * Get installation directory
52
52
  */
53
53
  getInstallDir(): string;
54
54
  /**
55
- * 添加 skill 到配置
55
+ * Add skill to configuration
56
56
  */
57
57
  addSkill(name: string, ref: string): void;
58
58
  /**
59
- * 移除 skill 从配置
59
+ * Remove skill from configuration
60
60
  */
61
61
  removeSkill(name: string): boolean;
62
62
  /**
63
- * 获取所有 skills
63
+ * Get all skills
64
64
  */
65
65
  getSkills(): Record<string, string>;
66
66
  /**
67
- * 检查 skill 是否存在
67
+ * Check if skill exists
68
68
  */
69
69
  hasSkill(name: string): boolean;
70
70
  /**
71
- * 获取 skill 引用
71
+ * Get skill reference
72
72
  */
73
73
  getSkillRef(name: string): string | undefined;
74
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/core/config-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAcpE;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;gBAE7B,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,IAAI,IAAI,UAAU;IAmBlB;;OAEG;IACH,MAAM,IAAI,UAAU;IAKpB;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAS/B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAejD;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC;IAQvC;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAiB5C;;OAEG;IACH,aAAa,IAAI,MAAM;IAKvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQzC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAYlC;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK/B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAI9C;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/core/config-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAcpE;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA2B;gBAE7B,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,IAAI,IAAI,UAAU;IAiBlB;;OAEG;IACH,MAAM,IAAI,UAAU;IAKpB;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI;IAS/B;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU;IAejD;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,cAAc,CAAC;IAUvC;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAiB5C;;OAEG;IACH,aAAa,IAAI,MAAM;IAKvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAUzC;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAYlC;;OAEG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUnC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK/B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAI9C;AAED,eAAe,YAAY,CAAC"}
@@ -1,39 +1,39 @@
1
1
  import type { ParsedSkillRef, ParsedVersion } from '../types/index.js';
2
2
  /**
3
- * GitResolver - 解析 skill 引用和版本
3
+ * GitResolver - Parse skill references and versions
4
4
  *
5
- * 引用格式:
6
- * 完整: <registry>:<owner>/<repo>@<version>
7
- * 简写: <owner>/<repo>@<version>
5
+ * Reference formats:
6
+ * Full: <registry>:<owner>/<repo>@<version>
7
+ * Short: <owner>/<repo>@<version>
8
8
  * Git URL: git@github.com:user/repo.git[@version]
9
9
  * HTTPS: https://github.com/user/repo.git[@version]
10
10
  *
11
- * 版本格式:
12
- * - @v1.0.0 精确版本
13
- * - @latest 最新 tag
14
- * - @^2.0.0 semver 范围
15
- * - @branch:dev 分支
16
- * - @commit:abc commit hash
17
- * - () 默认分支
11
+ * Version formats:
12
+ * - @v1.0.0 Exact version
13
+ * - @latest Latest tag
14
+ * - @^2.0.0 Semver range
15
+ * - @branch:dev Branch
16
+ * - @commit:abc Commit hash
17
+ * - (none) Default branch
18
18
  */
19
19
  export declare class GitResolver {
20
20
  private defaultRegistry;
21
21
  constructor(defaultRegistry?: string);
22
22
  /**
23
- * 解析 skill 引用字符串
23
+ * Parse skill reference string
24
24
  *
25
- * 支持的格式:
26
- * - 简写: owner/repo[@version]
27
- * - 完整: registry:owner/repo[@version]
25
+ * Supported formats:
26
+ * - Short: owner/repo[@version]
27
+ * - Full: registry:owner/repo[@version]
28
28
  * - SSH URL: git@github.com:user/repo.git[@version]
29
29
  * - HTTPS URL: https://github.com/user/repo.git[@version]
30
30
  * - Monorepo: git@github.com:org/repo.git/subpath[@version]
31
31
  */
32
32
  parseRef(ref: string): ParsedSkillRef;
33
33
  /**
34
- * 解析 Git URL 格式的引用
34
+ * Parse Git URL format reference
35
35
  *
36
- * 支持的格式:
36
+ * Supported formats:
37
37
  * - git@github.com:user/repo.git
38
38
  * - git@github.com:user/repo.git@v1.0.0
39
39
  * - git@github.com:user/repo.git/subpath@v1.0.0
@@ -42,25 +42,25 @@ export declare class GitResolver {
42
42
  */
43
43
  private parseGitUrlRef;
44
44
  /**
45
- * 解析版本规范
45
+ * Parse version specification
46
46
  */
47
47
  parseVersion(versionSpec?: string): ParsedVersion;
48
48
  /**
49
- * 构建仓库 URL
49
+ * Build repository URL
50
50
  *
51
- * 如果 parsed 中包含 gitUrl,则直接返回;
52
- * 否则根据 registry owner/repo 构建 HTTPS URL
51
+ * If parsed contains gitUrl, return it directly;
52
+ * Otherwise build HTTPS URL from registry and owner/repo
53
53
  */
54
54
  buildRepoUrl(parsed: ParsedSkillRef): string;
55
55
  /**
56
- * 解析版本并获取具体的 reftag 名或 commit
56
+ * Resolve version and get specific ref (tag name or commit)
57
57
  */
58
58
  resolveVersion(repoUrl: string, versionSpec: ParsedVersion): Promise<{
59
59
  ref: string;
60
60
  commit?: string;
61
61
  }>;
62
62
  /**
63
- * 完整解析:从引用字符串到可用于克隆的信息
63
+ * Full resolution: from reference string to clone-ready information
64
64
  */
65
65
  resolve(ref: string): Promise<{
66
66
  parsed: ParsedSkillRef;
@@ -1 +1 @@
1
- {"version":3,"file":"git-resolver.d.ts","sourceRoot":"","sources":["../../src/core/git-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,eAAe,CAAS;gBAEpB,eAAe,SAAW;IAItC;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;IAmDrC;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IAuDtB;;OAEG;IACH,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa;IA+BjD;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAQ5C;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkD5C;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAClC,MAAM,EAAE,cAAc,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CAaH;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"git-resolver.d.ts","sourceRoot":"","sources":["../../src/core/git-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUvE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,eAAe,CAAS;gBAEpB,eAAe,SAAW;IAItC;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;IAmDrC;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IA0DtB;;OAEG;IACH,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,aAAa;IA+BjD;;;;;OAKG;IACH,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAQ5C;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkD5C;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAClC,MAAM,EAAE,cAAc,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CAaH;AAED,eAAe,WAAW,CAAC"}
@@ -1,7 +1,13 @@
1
- export { GitResolver } from './git-resolver.js';
1
+ export type { AgentConfig, AgentType } from './agent-registry.js';
2
+ export { agents, detectInstalledAgents, getAgentConfig, getAgentSkillsDir, getAllAgentTypes, isValidAgentType, } from './agent-registry.js';
2
3
  export { CacheManager } from './cache-manager.js';
3
4
  export { ConfigLoader, DEFAULT_REGISTRIES } from './config-loader.js';
5
+ export { GitResolver } from './git-resolver.js';
6
+ export type { InstallerOptions, InstallMode, InstallResult } from './installer.js';
7
+ export { Installer } from './installer.js';
4
8
  export { LockManager } from './lock-manager.js';
5
- export { SkillManager } from './skill-manager.js';
6
9
  export type { SkillManagerOptions } from './skill-manager.js';
10
+ export { SkillManager } from './skill-manager.js';
11
+ export type { ParsedSkill, SkillMdFrontmatter } from './skill-parser.js';
12
+ export { generateSkillMd, hasValidSkillMd, parseSkillFromDir, parseSkillMd, parseSkillMdFile, SkillValidationError, validateSkillDescription, validateSkillName, } from './skill-parser.js';
7
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Installer - Multi-Agent installer
3
+ *
4
+ * Supports two installation modes:
5
+ * - symlink: Canonical location (.agents/skills/) + symlinks to each agent directory
6
+ * - copy: Direct copy to each agent directory
7
+ *
8
+ * Reference: https://github.com/vercel-labs/add-skill/blob/main/src/installer.ts
9
+ */
10
+ import type { AgentType } from './agent-registry.js';
11
+ /**
12
+ * Installation mode
13
+ */
14
+ export type InstallMode = 'symlink' | 'copy';
15
+ /**
16
+ * Installation result
17
+ */
18
+ export interface InstallResult {
19
+ /** Whether successful */
20
+ success: boolean;
21
+ /** Installation path */
22
+ path: string;
23
+ /** Canonical path (symlink mode) */
24
+ canonicalPath?: string;
25
+ /** Installation mode */
26
+ mode: InstallMode;
27
+ /** Whether symlink failed (fallback to copy) */
28
+ symlinkFailed?: boolean;
29
+ /** Error message */
30
+ error?: string;
31
+ }
32
+ /**
33
+ * Installation options
34
+ */
35
+ export interface InstallerOptions {
36
+ /** Global installation */
37
+ global?: boolean;
38
+ /** Current working directory */
39
+ cwd?: string;
40
+ /** Installation mode */
41
+ mode?: InstallMode;
42
+ }
43
+ /**
44
+ * Installer class - Multi-Agent installer
45
+ */
46
+ export declare class Installer {
47
+ private cwd;
48
+ private isGlobal;
49
+ constructor(options?: {
50
+ cwd?: string;
51
+ global?: boolean;
52
+ });
53
+ /**
54
+ * Get canonical installation path
55
+ */
56
+ getCanonicalPath(skillName: string): string;
57
+ /**
58
+ * Get agent's skill installation path
59
+ */
60
+ getAgentSkillPath(skillName: string, agentType: AgentType): string;
61
+ /**
62
+ * Install skill to specified agent
63
+ *
64
+ * @param sourcePath - Skill source directory path
65
+ * @param skillName - Skill name
66
+ * @param agentType - Target agent type
67
+ * @param options - Installation options
68
+ */
69
+ installForAgent(sourcePath: string, skillName: string, agentType: AgentType, options?: {
70
+ mode?: InstallMode;
71
+ }): Promise<InstallResult>;
72
+ /**
73
+ * Install skill to multiple agents
74
+ */
75
+ installToAgents(sourcePath: string, skillName: string, targetAgents: AgentType[], options?: {
76
+ mode?: InstallMode;
77
+ }): Promise<Map<AgentType, InstallResult>>;
78
+ /**
79
+ * Check if skill is installed to specified agent
80
+ */
81
+ isInstalled(skillName: string, agentType: AgentType): boolean;
82
+ /**
83
+ * Uninstall skill from specified agent
84
+ */
85
+ uninstallFromAgent(skillName: string, agentType: AgentType): boolean;
86
+ /**
87
+ * Uninstall skill from multiple agents
88
+ */
89
+ uninstallFromAgents(skillName: string, targetAgents: AgentType[]): Map<AgentType, boolean>;
90
+ /**
91
+ * Get all skills installed to specified agent
92
+ */
93
+ listInstalledSkills(agentType: AgentType): string[];
94
+ }
95
+ export default Installer;
96
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,gDAAgD;IAChD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AA8ID;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAU;gBAEd,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO;IAK5D;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAM3C;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM;IAOlE;;;;;;;OAOG;IACG,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,WAAW,CAAA;KAAO,GACnC,OAAO,CAAC,aAAa,CAAC;IAwFzB;;OAEG;IACG,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,SAAS,EAAE,EACzB,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,WAAW,CAAA;KAAO,GACnC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAWzC;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;IAK7D;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;IAWpE;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC;IAgB1F;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE;CAapD;AAED,eAAe,SAAS,CAAC"}
@@ -1,8 +1,8 @@
1
- import type { SkillsLock, LockedSkill } from '../types/index.js';
1
+ import type { LockedSkill, SkillsLock } from '../types/index.js';
2
2
  /**
3
- * LockManager - 管理 skills.lock 文件
3
+ * LockManager - Manage skills.lock file
4
4
  *
5
- * 用于锁定精确版本,确保团队一致性
5
+ * Used for locking exact versions to ensure team consistency
6
6
  */
7
7
  export declare class LockManager {
8
8
  private projectRoot;
@@ -10,39 +10,39 @@ export declare class LockManager {
10
10
  private lockData;
11
11
  constructor(projectRoot?: string);
12
12
  /**
13
- * 获取 lock 文件路径
13
+ * Get lock file path
14
14
  */
15
15
  getLockPath(): string;
16
16
  /**
17
- * 检查 lock 文件是否存在
17
+ * Check if lock file exists
18
18
  */
19
19
  exists(): boolean;
20
20
  /**
21
- * 加载 lock 文件
21
+ * Load lock file
22
22
  */
23
23
  load(): SkillsLock;
24
24
  /**
25
- * 重新加载 lock 文件
25
+ * Reload lock file
26
26
  */
27
27
  reload(): SkillsLock;
28
28
  /**
29
- * 保存 lock 文件
29
+ * Save lock file
30
30
  */
31
31
  save(lockToSave?: SkillsLock): void;
32
32
  /**
33
- * 获取锁定的 skill
33
+ * Get locked skill
34
34
  */
35
35
  get(name: string): LockedSkill | undefined;
36
36
  /**
37
- * 设置锁定的 skill
37
+ * Set locked skill
38
38
  */
39
39
  set(name: string, skill: LockedSkill): void;
40
40
  /**
41
- * 移除锁定的 skill
41
+ * Remove locked skill
42
42
  */
43
43
  remove(name: string): boolean;
44
44
  /**
45
- * 锁定 skill
45
+ * Lock a skill
46
46
  */
47
47
  lockSkill(name: string, options: {
48
48
  source: string;
@@ -51,23 +51,23 @@ export declare class LockManager {
51
51
  commit: string;
52
52
  }): LockedSkill;
53
53
  /**
54
- * 获取所有锁定的 skills
54
+ * Get all locked skills
55
55
  */
56
56
  getAll(): Record<string, LockedSkill>;
57
57
  /**
58
- * 检查 skill 是否已锁定
58
+ * Check if skill is locked
59
59
  */
60
60
  has(name: string): boolean;
61
61
  /**
62
- * 检查锁定的版本是否与当前一致
62
+ * Check if locked version matches current version
63
63
  */
64
64
  isVersionMatch(name: string, version: string): boolean;
65
65
  /**
66
- * 清空所有锁定
66
+ * Clear all locks
67
67
  */
68
68
  clear(): void;
69
69
  /**
70
- * 删除 lock 文件
70
+ * Delete lock file
71
71
  */
72
72
  delete(): void;
73
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lock-manager.d.ts","sourceRoot":"","sources":["../../src/core/lock-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQjE;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,IAAI,IAAI,UAAU;IAsBlB;;OAEG;IACH,MAAM,IAAI,UAAU;IAKpB;;OAEG;IACH,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IASnC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAK1C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAM3C;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU7B;;OAEG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,GACA,WAAW;IAad;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAKrC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK1B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAQtD;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,MAAM,IAAI,IAAI;CAOf;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"lock-manager.d.ts","sourceRoot":"","sources":["../../src/core/lock-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQjE;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,IAAI,IAAI,UAAU;IAsBlB;;OAEG;IACH,MAAM,IAAI,UAAU;IAKpB;;OAEG;IACH,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IASnC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAK1C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAM3C;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU7B;;OAEG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,GACA,WAAW;IAad;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAKrC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK1B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAQtD;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,MAAM,IAAI,IAAI;CAOf;AAED,eAAe,WAAW,CAAC"}