uasp-skills 0.1.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/LICENSE +21 -0
- package/README.md +117 -0
- package/bin/skills.js +6 -0
- package/dist/cli/commands/add.d.ts +6 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +81 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +28 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +39 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/remove.d.ts +6 -0
- package/dist/cli/commands/remove.d.ts.map +1 -0
- package/dist/cli/commands/remove.js +44 -0
- package/dist/cli/commands/remove.js.map +1 -0
- package/dist/cli/commands/search.d.ts +6 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +46 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/github.d.ts +39 -0
- package/dist/core/github.d.ts.map +1 -0
- package/dist/core/github.js +91 -0
- package/dist/core/github.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/installer.d.ts +88 -0
- package/dist/core/installer.d.ts.map +1 -0
- package/dist/core/installer.js +493 -0
- package/dist/core/installer.js.map +1 -0
- package/dist/core/registry.d.ts +26 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +69 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/validator.d.ts +17 -0
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/core/validator.js +318 -0
- package/dist/core/validator.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/registry.d.ts +43 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/registry.js +5 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/skill.d.ts +128 -0
- package/dist/types/skill.d.ts.map +1 -0
- package/dist/types/skill.js +6 -0
- package/dist/types/skill.js.map +1 -0
- package/package.json +66 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 ifoster01
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# @uasp/skills
|
|
2
|
+
|
|
3
|
+
CLI tool for managing UASP agent skills.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Use directly with npx
|
|
9
|
+
npx @uasp/skills <command>
|
|
10
|
+
|
|
11
|
+
# Or install globally
|
|
12
|
+
npm install -g @uasp/skills
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Commands
|
|
16
|
+
|
|
17
|
+
### Add a skill
|
|
18
|
+
|
|
19
|
+
Install a skill from a GitHub registry:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Install a specific skill
|
|
23
|
+
npx @uasp/skills add https://github.com/ifoster01/uasp/agent-skills --skill agent-browser
|
|
24
|
+
|
|
25
|
+
# Install all skills from a registry
|
|
26
|
+
npx @uasp/skills add https://github.com/ifoster01/uasp/agent-skills --all
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### List installed skills
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx @uasp/skills list
|
|
33
|
+
|
|
34
|
+
# Output as JSON
|
|
35
|
+
npx @uasp/skills list --json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Remove a skill
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx @uasp/skills remove agent-browser
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Search for skills
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx @uasp/skills search browser
|
|
48
|
+
|
|
49
|
+
# Search a specific registry
|
|
50
|
+
npx @uasp/skills search payment --registry https://github.com/other/skills
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Initialize .agent directory
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npx @uasp/skills init
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Directory Structure
|
|
60
|
+
|
|
61
|
+
After installing skills, your project will have:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
.agent/
|
|
65
|
+
├── settings.json # Configuration and installed skills
|
|
66
|
+
└── skills/
|
|
67
|
+
└── skill-name/
|
|
68
|
+
└── skill-name.uasp.yaml
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Settings Format
|
|
72
|
+
|
|
73
|
+
The `settings.json` file tracks installed skills:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"version": "1.0.0",
|
|
78
|
+
"skills": {
|
|
79
|
+
"installed": [
|
|
80
|
+
{
|
|
81
|
+
"name": "agent-browser",
|
|
82
|
+
"version": "e3fbde81",
|
|
83
|
+
"type": "cli",
|
|
84
|
+
"path": ".agent/skills/agent-browser/agent-browser.uasp.yaml",
|
|
85
|
+
"enabled": true,
|
|
86
|
+
"installedAt": "2026-01-29T00:00:00Z",
|
|
87
|
+
"source": "ifoster01/uasp/agent-skills"
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"triggers": {
|
|
92
|
+
"keywords": {
|
|
93
|
+
"browser": ["agent-browser"],
|
|
94
|
+
"web": ["agent-browser"]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Programmatic Usage
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import { loadRegistry, searchSkills, installSkill } from '@uasp/skills';
|
|
104
|
+
|
|
105
|
+
// Load a registry
|
|
106
|
+
const registry = await loadRegistry('https://github.com/ifoster01/uasp/agent-skills');
|
|
107
|
+
|
|
108
|
+
// Search for skills
|
|
109
|
+
const results = searchSkills(registry, 'browser');
|
|
110
|
+
|
|
111
|
+
// Install a skill programmatically
|
|
112
|
+
const result = await installSkill(githubSource, skill);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## License
|
|
116
|
+
|
|
117
|
+
MIT
|
package/bin/skills.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,UAAU,SAoFnB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Add command - Install a skill from a registry
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { loadRegistry, findSkill, getGitHubSource } from '../../core/registry.js';
|
|
8
|
+
import { installSkill } from '../../core/installer.js';
|
|
9
|
+
export const addCommand = new Command('add')
|
|
10
|
+
.description('Install a skill from a GitHub registry')
|
|
11
|
+
.argument('<source>', 'GitHub URL or local path to the skills registry')
|
|
12
|
+
.option('-s, --skill <name>', 'Specific skill to install')
|
|
13
|
+
.option('-a, --all', 'Install all skills from the registry')
|
|
14
|
+
.option('-f, --force', 'Overwrite existing installation')
|
|
15
|
+
.option('--no-claude-code', 'Skip Claude Code installation (only install to .agent/)')
|
|
16
|
+
.action(async (source, options) => {
|
|
17
|
+
const spinner = ora('Loading registry...').start();
|
|
18
|
+
const enableClaudeCode = options.claudeCode !== false;
|
|
19
|
+
try {
|
|
20
|
+
// Load the registry
|
|
21
|
+
const registry = await loadRegistry(source);
|
|
22
|
+
const githubSource = getGitHubSource(source);
|
|
23
|
+
spinner.succeed(`Found ${registry.skills.length} skills in registry`);
|
|
24
|
+
// Determine which skills to install
|
|
25
|
+
let skillsToInstall = registry.skills;
|
|
26
|
+
if (options.skill) {
|
|
27
|
+
const skill = findSkill(registry, options.skill);
|
|
28
|
+
if (!skill) {
|
|
29
|
+
console.error(chalk.red(`Skill '${options.skill}' not found in registry`));
|
|
30
|
+
console.log('\nAvailable skills:');
|
|
31
|
+
registry.skills.forEach((s) => {
|
|
32
|
+
console.log(` - ${chalk.cyan(s.name)}: ${s.description}`);
|
|
33
|
+
});
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
skillsToInstall = [skill];
|
|
37
|
+
}
|
|
38
|
+
else if (!options.all) {
|
|
39
|
+
console.log(chalk.yellow('\nNo skill specified. Use --skill <name> or --all'));
|
|
40
|
+
console.log('\nAvailable skills:');
|
|
41
|
+
registry.skills.forEach((s) => {
|
|
42
|
+
console.log(` - ${chalk.cyan(s.name)}: ${s.description}`);
|
|
43
|
+
});
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
// Track Claude Code installations
|
|
47
|
+
let claudeCodeCount = 0;
|
|
48
|
+
// Install each skill
|
|
49
|
+
for (const skill of skillsToInstall) {
|
|
50
|
+
const installSpinner = ora(`Installing ${skill.name}...`).start();
|
|
51
|
+
const result = await installSkill(githubSource, skill, {
|
|
52
|
+
claudeCode: enableClaudeCode,
|
|
53
|
+
});
|
|
54
|
+
if (result.success) {
|
|
55
|
+
const claudeStatus = result.claudeCodeInstalled
|
|
56
|
+
? chalk.dim(' + Claude Code')
|
|
57
|
+
: '';
|
|
58
|
+
installSpinner.succeed(`Installed ${chalk.cyan(skill.name)} v${skill.version} (${skill.type})${claudeStatus}`);
|
|
59
|
+
if (result.claudeCodeInstalled) {
|
|
60
|
+
claudeCodeCount++;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
installSpinner.fail(`Failed to install ${skill.name}: ${result.error}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
console.log(chalk.green('\nInstallation complete!'));
|
|
68
|
+
console.log(`\nLocations:`);
|
|
69
|
+
console.log(` ${chalk.dim('.agent/skills/')} - UASP format (project-local)`);
|
|
70
|
+
if (claudeCodeCount > 0) {
|
|
71
|
+
console.log(` ${chalk.dim('~/.agents/skills/')} - SKILL.md format (Claude Code compatible)`);
|
|
72
|
+
console.log(`\n${chalk.cyan('Claude Code:')} ${claudeCodeCount} skill(s) available immediately`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
spinner.fail('Installation failed');
|
|
77
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,WAAW,SAwBpB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init command - Initialize .agent directory
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { initAgentDir, getAgentDir } from '../../core/installer.js';
|
|
8
|
+
export const initCommand = new Command('init')
|
|
9
|
+
.description('Initialize .agent directory structure')
|
|
10
|
+
.action(async () => {
|
|
11
|
+
const spinner = ora('Initializing...').start();
|
|
12
|
+
try {
|
|
13
|
+
await initAgentDir();
|
|
14
|
+
spinner.succeed('Initialized .agent directory');
|
|
15
|
+
console.log(`\nCreated:`);
|
|
16
|
+
console.log(` ${chalk.dim(getAgentDir())}/`);
|
|
17
|
+
console.log(` ${chalk.dim('settings.json')}`);
|
|
18
|
+
console.log(` ${chalk.dim('skills/')}`);
|
|
19
|
+
console.log(`\n${chalk.green('Ready to install skills!')}`);
|
|
20
|
+
console.log(chalk.dim('Run `skills add <registry-url> --skill <name>` to install a skill'));
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
spinner.fail('Initialization failed');
|
|
24
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,YAAY,EAAE,CAAC;QAErB,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAEhD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAC/E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SAmCpB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List command - Show installed skills
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { listInstalledSkills } from '../../core/installer.js';
|
|
7
|
+
export const listCommand = new Command('list')
|
|
8
|
+
.description('List installed skills')
|
|
9
|
+
.option('-j, --json', 'Output as JSON')
|
|
10
|
+
.action(async (options) => {
|
|
11
|
+
try {
|
|
12
|
+
const skills = await listInstalledSkills();
|
|
13
|
+
if (options.json) {
|
|
14
|
+
console.log(JSON.stringify(skills, null, 2));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (skills.length === 0) {
|
|
18
|
+
console.log(chalk.yellow('No skills installed'));
|
|
19
|
+
console.log('\nRun `skills add <source> --skill <name>` to install a skill');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.log(chalk.bold(`\nInstalled Skills (${skills.length}):\n`));
|
|
23
|
+
for (const skill of skills) {
|
|
24
|
+
const status = skill.enabled ? chalk.green('enabled') : chalk.gray('disabled');
|
|
25
|
+
const type = chalk.dim(`[${skill.type}]`);
|
|
26
|
+
console.log(` ${chalk.cyan(skill.name)} ${type}`);
|
|
27
|
+
console.log(` Version: ${skill.version}`);
|
|
28
|
+
console.log(` Status: ${status}`);
|
|
29
|
+
console.log(` Path: ${chalk.dim(skill.path)}`);
|
|
30
|
+
console.log(` Source: ${chalk.dim(skill.source)}`);
|
|
31
|
+
console.log();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAE3C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;QAEpE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YAE1C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,aAAa,SAqCtB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove command - Uninstall a skill
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { removeSkill, listInstalledSkills } from '../../core/installer.js';
|
|
8
|
+
export const removeCommand = new Command('remove')
|
|
9
|
+
.description('Remove an installed skill')
|
|
10
|
+
.argument('<name>', 'Name of the skill to remove')
|
|
11
|
+
.option('--no-claude-code', 'Skip removal from Claude Code directories')
|
|
12
|
+
.action(async (name, options) => {
|
|
13
|
+
const spinner = ora(`Removing ${name}...`).start();
|
|
14
|
+
const enableClaudeCode = options.claudeCode !== false;
|
|
15
|
+
try {
|
|
16
|
+
// Check if skill exists
|
|
17
|
+
const installed = await listInstalledSkills();
|
|
18
|
+
const skill = installed.find((s) => s.name === name);
|
|
19
|
+
if (!skill) {
|
|
20
|
+
spinner.fail(`Skill '${name}' is not installed`);
|
|
21
|
+
console.log('\nInstalled skills:');
|
|
22
|
+
installed.forEach((s) => {
|
|
23
|
+
console.log(` - ${chalk.cyan(s.name)}`);
|
|
24
|
+
});
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
// Remove the skill
|
|
28
|
+
const success = await removeSkill(name, { claudeCode: enableClaudeCode });
|
|
29
|
+
if (success) {
|
|
30
|
+
const claudeStatus = enableClaudeCode ? ' (+ Claude Code)' : '';
|
|
31
|
+
spinner.succeed(`Removed ${chalk.cyan(name)}${claudeStatus}`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
spinner.fail(`Failed to remove ${name}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
spinner.fail('Removal failed');
|
|
40
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM3E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,2BAA2B,CAAC;KACxC,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;KACjD,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAsB,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC;IAEtD,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,SAAS,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE1E,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,aAAa,SA0CtB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search command - Search for skills in a registry
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { loadRegistry, searchSkills } from '../../core/registry.js';
|
|
8
|
+
// Default registry URL
|
|
9
|
+
const DEFAULT_REGISTRY = 'https://github.com/ifoster01/uasp/agent-skills';
|
|
10
|
+
export const searchCommand = new Command('search')
|
|
11
|
+
.description('Search for skills in a registry')
|
|
12
|
+
.argument('<query>', 'Search query')
|
|
13
|
+
.option('-r, --registry <url>', 'Registry URL', DEFAULT_REGISTRY)
|
|
14
|
+
.option('-j, --json', 'Output as JSON')
|
|
15
|
+
.action(async (query, options) => {
|
|
16
|
+
const spinner = ora('Searching...').start();
|
|
17
|
+
try {
|
|
18
|
+
const registry = await loadRegistry(options.registry);
|
|
19
|
+
const results = searchSkills(registry, query);
|
|
20
|
+
spinner.stop();
|
|
21
|
+
if (options.json) {
|
|
22
|
+
console.log(JSON.stringify(results, null, 2));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (results.length === 0) {
|
|
26
|
+
console.log(chalk.yellow(`No skills found matching '${query}'`));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.log(chalk.bold(`\nFound ${results.length} skill(s):\n`));
|
|
30
|
+
for (const skill of results) {
|
|
31
|
+
const type = chalk.dim(`[${skill.type}]`);
|
|
32
|
+
const keywords = skill.keywords.slice(0, 5).join(', ');
|
|
33
|
+
console.log(` ${chalk.cyan(skill.name)} ${type}`);
|
|
34
|
+
console.log(` ${skill.description}`);
|
|
35
|
+
console.log(` Keywords: ${chalk.dim(keywords)}`);
|
|
36
|
+
console.log();
|
|
37
|
+
}
|
|
38
|
+
console.log(chalk.dim(`Install with: skills add ${options.registry} --skill <name>`));
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
spinner.fail('Search failed');
|
|
42
|
+
console.error(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEpE,uBAAuB;AACvB,MAAM,gBAAgB,GAAG,gDAAgD,CAAC;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,CAAC;KAChE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA6C,EAAE,EAAE;IAC7E,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE9C,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,KAAK,GAAG,CAAC,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;QAEjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,QAAQ,iBAAiB,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* UASP Skills CLI
|
|
4
|
+
*
|
|
5
|
+
* CLI tool for managing UASP agent skills
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { addCommand } from './commands/add.js';
|
|
9
|
+
import { listCommand } from './commands/list.js';
|
|
10
|
+
import { removeCommand } from './commands/remove.js';
|
|
11
|
+
import { searchCommand } from './commands/search.js';
|
|
12
|
+
import { initCommand } from './commands/init.js';
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('skills')
|
|
16
|
+
.description('CLI tool for managing UASP agent skills')
|
|
17
|
+
.version('0.1.0');
|
|
18
|
+
// Add commands
|
|
19
|
+
program.addCommand(addCommand);
|
|
20
|
+
program.addCommand(listCommand);
|
|
21
|
+
program.addCommand(removeCommand);
|
|
22
|
+
program.addCommand(searchCommand);
|
|
23
|
+
program.addCommand(initCommand);
|
|
24
|
+
// Parse and execute
|
|
25
|
+
program.parse(process.argv);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,oBAAoB;AACpB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub integration for fetching skills
|
|
3
|
+
*/
|
|
4
|
+
export interface GitHubSource {
|
|
5
|
+
owner: string;
|
|
6
|
+
repo: string;
|
|
7
|
+
path: string;
|
|
8
|
+
ref: string;
|
|
9
|
+
isLocal?: boolean;
|
|
10
|
+
localPath?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse a GitHub URL or local path into components
|
|
14
|
+
* Supports formats:
|
|
15
|
+
* - https://github.com/owner/repo/tree/branch/path
|
|
16
|
+
* - https://github.com/owner/repo/path (assumes main branch)
|
|
17
|
+
* - github:owner/repo/path
|
|
18
|
+
* - file:///absolute/path (local file)
|
|
19
|
+
* - /absolute/path (local file)
|
|
20
|
+
* - ./relative/path (local file)
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseGitHubUrl(url: string): GitHubSource | null;
|
|
23
|
+
/**
|
|
24
|
+
* Build a raw GitHub URL for fetching file content
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildRawUrl(source: GitHubSource, filePath: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Fetch a file from GitHub or local filesystem
|
|
29
|
+
*/
|
|
30
|
+
export declare function fetchFromGitHub(source: GitHubSource, filePath: string): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Fetch the registry.json from a GitHub repository
|
|
33
|
+
*/
|
|
34
|
+
export declare function fetchRegistry(source: GitHubSource): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Fetch a skill file from a GitHub repository
|
|
37
|
+
*/
|
|
38
|
+
export declare function fetchSkillFile(source: GitHubSource, skillPath: string): Promise<string>;
|
|
39
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/core/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAoC/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|