@iamramo/zanat-cli 0.2.1 → 0.4.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/README.md +32 -27
- package/dist/cli.js +11 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +2 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +17 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +12 -15
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +8 -9
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/remove.d.ts +2 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +17 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +10 -16
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +7 -10
- package/dist/commands/sync.js.map +1 -1
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +28 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/validation.d.ts +4 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +21 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +2 -2
- package/dist/commands/install.d.ts +0 -2
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -33
- package/dist/commands/install.js.map +0 -1
package/README.md
CHANGED
|
@@ -8,48 +8,53 @@ CLI for Zanat - a skill hub for AI agents.
|
|
|
8
8
|
npm install -g @iamramo/zanat-cli
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Commands
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
| Command | Description | Usage |
|
|
14
|
+
| -------- | ----------------------------------------------------------- | ------------------------------------ |
|
|
15
|
+
| `init` | Initialize zanat configuration and clone the hub repository | `zanat init` |
|
|
16
|
+
| `sync` | Pull the latest changes from the hub repository | `zanat sync` |
|
|
17
|
+
| `search` | Search for available skills in the hub | `zanat search [query]` |
|
|
18
|
+
| `add` | Add a skill to your local skills | `zanat add <source>/<skill-name>` |
|
|
19
|
+
| `remove` | Remove a skill from your local skills | `zanat remove <source>/<skill-name>` |
|
|
20
|
+
| `list` | List all added skills | `zanat list` |
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
zanat init
|
|
17
|
-
```
|
|
22
|
+
## Getting Started
|
|
18
23
|
|
|
19
|
-
|
|
24
|
+
1. **Initialize zanat:**
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
```bash
|
|
27
|
+
zanat init
|
|
28
|
+
```
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
This will prompt you for the hub repository URL and branch.
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
zanat sync
|
|
28
|
-
```
|
|
32
|
+
2. **Search for skills:**
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
```bash
|
|
35
|
+
zanat search code-review
|
|
36
|
+
```
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
zanat search [query]
|
|
34
|
-
```
|
|
38
|
+
3. **Add a skill:**
|
|
35
39
|
|
|
36
|
-
|
|
40
|
+
```bash
|
|
41
|
+
zanat add yurchi/code-review
|
|
42
|
+
```
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
zanat install <source>/<skill-name>
|
|
40
|
-
```
|
|
44
|
+
4. **Remove a skill:**
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
```bash
|
|
47
|
+
zanat remove yurchi/code-review
|
|
48
|
+
```
|
|
43
49
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
5. **List added skills:**
|
|
51
|
+
```bash
|
|
52
|
+
zanat list
|
|
53
|
+
```
|
|
47
54
|
|
|
48
55
|
## Configuration
|
|
49
56
|
|
|
50
|
-
Configuration is stored in `~/.zanat/config.json
|
|
51
|
-
|
|
52
|
-
You can manually edit this file to change settings:
|
|
57
|
+
Configuration is stored in `~/.zanat/config.json`:
|
|
53
58
|
|
|
54
59
|
```json
|
|
55
60
|
{
|
package/dist/cli.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { program } from 'commander';
|
|
2
2
|
import { initCommand } from './commands/init.js';
|
|
3
3
|
import { syncCommand } from './commands/sync.js';
|
|
4
|
-
import {
|
|
4
|
+
import { addCommand } from './commands/add.js';
|
|
5
|
+
import { removeCommand } from './commands/remove.js';
|
|
5
6
|
import { listCommand } from './commands/list.js';
|
|
6
7
|
import { searchCommand } from './commands/search.js';
|
|
7
|
-
program.name('zanat').description('A skill hub for AI agents').version('0.
|
|
8
|
+
program.name('zanat').description('A skill hub for AI agents').version('0.3.0');
|
|
8
9
|
program
|
|
9
10
|
.command('init')
|
|
10
11
|
.description('Initialize zanat configuration and clone the hub')
|
|
11
12
|
.action(initCommand);
|
|
12
13
|
program.command('sync').description('Sync with the hub repository').action(syncCommand);
|
|
13
14
|
program
|
|
14
|
-
.command('
|
|
15
|
-
.description('
|
|
16
|
-
.action(
|
|
17
|
-
program
|
|
15
|
+
.command('add <skill>')
|
|
16
|
+
.description('Add a skill (format: source/skill-name)')
|
|
17
|
+
.action(addCommand);
|
|
18
|
+
program
|
|
19
|
+
.command('remove <skill>')
|
|
20
|
+
.description('Remove a skill (format: source/skill-name)')
|
|
21
|
+
.action(removeCommand);
|
|
22
|
+
program.command('list').description('List added skills').action(listCommand);
|
|
18
23
|
program.command('search [query]').description('Search for skills in the hub').action(searchCommand);
|
|
19
24
|
program.parse();
|
|
20
25
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAExF,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAE7E,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEpG,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAa/D,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { installSkill } from '@iamramo/zanat-core';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { validateSkillArg, ensureHubExists } from '../utils/validation.js';
|
|
4
|
+
export const addCommand = async (skillArg) => {
|
|
5
|
+
logger.info(`Adding skill: ${skillArg}...`);
|
|
6
|
+
try {
|
|
7
|
+
await ensureHubExists();
|
|
8
|
+
const { source, skillName } = validateSkillArg(skillArg);
|
|
9
|
+
await installSkill(source, skillName);
|
|
10
|
+
logger.success(`Added zanat.${source}.${skillName}`);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
logger.error('Failed to add', error);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEtC,MAAM,CAAC,OAAO,CAAC,eAAe,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAkDhD,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ZANAT_DIR, HUB_DIR, AGENTS_DIR, saveConfig, cloneHub, isHubCloned, } from '@iamramo/zanat-core';
|
|
2
2
|
import { input } from '@inquirer/prompts';
|
|
3
3
|
import fs from 'fs-extra';
|
|
4
|
-
import
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
5
|
export const initCommand = async () => {
|
|
6
|
-
|
|
6
|
+
logger.info('Initializing Zanat...\n');
|
|
7
7
|
try {
|
|
8
8
|
const hubUrl = await input({
|
|
9
9
|
message: 'Hub repository URL:',
|
|
@@ -13,9 +13,9 @@ export const initCommand = async () => {
|
|
|
13
13
|
message: 'Hub branch:',
|
|
14
14
|
default: 'main',
|
|
15
15
|
});
|
|
16
|
-
|
|
16
|
+
logger.info('\nSetting up directories...');
|
|
17
17
|
await fs.ensureDir(ZANAT_DIR);
|
|
18
|
-
|
|
18
|
+
logger.success(`Created ${ZANAT_DIR}`);
|
|
19
19
|
const config = {
|
|
20
20
|
hubUrl,
|
|
21
21
|
hubBranch,
|
|
@@ -23,27 +23,24 @@ export const initCommand = async () => {
|
|
|
23
23
|
await fs.ensureDir(AGENTS_DIR);
|
|
24
24
|
const hubExists = await isHubCloned();
|
|
25
25
|
if (!hubExists) {
|
|
26
|
-
|
|
26
|
+
logger.info('Cloning hub repository...');
|
|
27
27
|
const actualBranch = await cloneHub(hubUrl, hubBranch);
|
|
28
28
|
if (actualBranch !== hubBranch) {
|
|
29
29
|
config.hubBranch = actualBranch;
|
|
30
|
-
|
|
30
|
+
logger.warning(`Branch '${hubBranch}' not found, using '${actualBranch}' instead`);
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
logger.success(`Cloned hub to ${HUB_DIR}`);
|
|
33
33
|
}
|
|
34
34
|
else {
|
|
35
|
-
|
|
35
|
+
logger.warning('Hub already exists, skipping clone');
|
|
36
36
|
}
|
|
37
37
|
await saveConfig(config);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
console.log(chalk.gray(` zanat sync - Update skills from hub`));
|
|
42
|
-
console.log(chalk.gray(` zanat search - Find available skills`));
|
|
43
|
-
console.log(chalk.gray(` zanat install - Install a skill`));
|
|
38
|
+
logger.success(`Created config`);
|
|
39
|
+
logger.success('\n✨ Zanat initialized successfully!');
|
|
40
|
+
logger.dim(`\nNext steps:\n zanat sync - Update skills from hub\n zanat search - Find available skills\n zanat add - Add a skill`);
|
|
44
41
|
}
|
|
45
42
|
catch (error) {
|
|
46
|
-
|
|
43
|
+
logger.error('Failed to initialize', error);
|
|
47
44
|
process.exit(1);
|
|
48
45
|
}
|
|
49
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;YACzB,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,0CAA0C;SACpD,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC;YAC5B,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE3C,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG;YACb,MAAM;YACN,SAAS;SACV,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE/B,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC;gBAChC,MAAM,CAAC,OAAO,CAAC,WAAW,SAAS,uBAAuB,YAAY,WAAW,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAEjC,MAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,CACR,6IAA6I,CAC9I,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAqBhD,CAAC"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getAddedSkills } from '@iamramo/zanat-core';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
3
4
|
export const listCommand = async () => {
|
|
4
|
-
console.log(chalk.blue('Installed skills:'));
|
|
5
|
-
console.log();
|
|
6
5
|
try {
|
|
7
|
-
const skills = await
|
|
6
|
+
const skills = await getAddedSkills();
|
|
8
7
|
if (skills.length === 0) {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
logger.dim('No skills added.');
|
|
9
|
+
logger.dim('Run `zanat search` to find skills or `zanat add <skill>` to add one.');
|
|
11
10
|
return;
|
|
12
11
|
}
|
|
12
|
+
logger.info('Added skills:\n');
|
|
13
13
|
skills.forEach((skill) => {
|
|
14
14
|
console.log(chalk.green('•'), skill);
|
|
15
15
|
});
|
|
16
|
-
|
|
17
|
-
console.log(chalk.gray(`Total: ${skills.length} skill${skills.length === 1 ? '' : 's'}`));
|
|
16
|
+
logger.dim(`\nTotal: ${skills.length} skill${skills.length === 1 ? '' : 's'}`);
|
|
18
17
|
}
|
|
19
18
|
catch (error) {
|
|
20
|
-
|
|
19
|
+
logger.error('Failed to list skills', error);
|
|
21
20
|
process.exit(1);
|
|
22
21
|
}
|
|
23
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;QAEtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE/B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAalE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { removeSkill } from '@iamramo/zanat-core';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { validateSkillArg, ensureHubExists } from '../utils/validation.js';
|
|
4
|
+
export const removeCommand = async (skillArg) => {
|
|
5
|
+
logger.info(`Removing skill: ${skillArg}...`);
|
|
6
|
+
try {
|
|
7
|
+
await ensureHubExists();
|
|
8
|
+
const { source, skillName } = validateSkillArg(skillArg);
|
|
9
|
+
await removeSkill(source, skillName);
|
|
10
|
+
logger.success(`Removed zanat.${source}.${skillName}`);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
logger.error('Failed to remove', error);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACrE,MAAM,CAAC,IAAI,CAAC,mBAAmB,QAAQ,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAErC,MAAM,CAAC,OAAO,CAAC,iBAAiB,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CA6BhE,CAAC"}
|
package/dist/commands/search.js
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
|
-
import { searchSkills
|
|
1
|
+
import { searchSkills } from '@iamramo/zanat-core';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
import { logger } from '../utils/logger.js';
|
|
4
|
+
import { ensureHubExists } from '../utils/validation.js';
|
|
3
5
|
export const searchCommand = async (query) => {
|
|
4
6
|
try {
|
|
5
|
-
|
|
6
|
-
if (!hubExists) {
|
|
7
|
-
console.error(chalk.red('Hub not found. Run `zanat init` first.'));
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
7
|
+
await ensureHubExists();
|
|
10
8
|
if (query) {
|
|
11
|
-
|
|
9
|
+
logger.info(`Searching for: "${query}"...\n`);
|
|
12
10
|
}
|
|
13
11
|
else {
|
|
14
|
-
|
|
12
|
+
logger.info('Available skills:\n');
|
|
15
13
|
}
|
|
16
|
-
console.log();
|
|
17
14
|
const results = await searchSkills(query);
|
|
18
15
|
if (results.length === 0) {
|
|
19
|
-
|
|
16
|
+
logger.dim('No skills found.');
|
|
20
17
|
return;
|
|
21
18
|
}
|
|
22
19
|
results.forEach((skill) => {
|
|
23
20
|
console.log(chalk.green('•'), `${skill.source}/${skill.name}`);
|
|
24
|
-
|
|
25
|
-
console.log();
|
|
21
|
+
logger.dim(` ${skill.description}\n`);
|
|
26
22
|
});
|
|
27
|
-
|
|
28
|
-
console.log();
|
|
29
|
-
console.log(chalk.gray('Install a skill with: zanat install <source>/<skill-name>'));
|
|
23
|
+
logger.dim(`Found ${results.length} skill${results.length === 1 ? '' : 's'}\nAdd a skill with: zanat add <source>/<skill-name>`);
|
|
30
24
|
}
|
|
31
25
|
catch (error) {
|
|
32
|
-
|
|
26
|
+
logger.error('Failed to search', error);
|
|
33
27
|
process.exit(1);
|
|
34
28
|
}
|
|
35
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAc,EAAiB,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CACR,SAAS,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,qDAAqD,CACrH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAkBhD,CAAC"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
import { pullHub,
|
|
2
|
-
import
|
|
1
|
+
import { pullHub, saveConfig, loadConfig } from '@iamramo/zanat-core';
|
|
2
|
+
import { logger } from '../utils/logger.js';
|
|
3
|
+
import { ensureHubExists } from '../utils/validation.js';
|
|
3
4
|
export const syncCommand = async () => {
|
|
4
|
-
|
|
5
|
+
logger.info('Syncing with hub...');
|
|
5
6
|
try {
|
|
6
|
-
|
|
7
|
-
if (!hubExists) {
|
|
8
|
-
console.error(chalk.red('Hub not found. Run `zanat init` first.'));
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
7
|
+
await ensureHubExists();
|
|
11
8
|
await pullHub();
|
|
12
9
|
const config = await loadConfig();
|
|
13
10
|
if (config) {
|
|
14
11
|
config.lastSync = new Date().toISOString();
|
|
15
12
|
await saveConfig(config);
|
|
16
13
|
}
|
|
17
|
-
|
|
14
|
+
logger.success('Hub synced successfully');
|
|
18
15
|
}
|
|
19
16
|
catch (error) {
|
|
20
|
-
|
|
17
|
+
logger.error('Failed to sync', error);
|
|
21
18
|
process.exit(1);
|
|
22
19
|
}
|
|
23
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,OAAO,EAAE,CAAC;QAEhB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface Logger {
|
|
2
|
+
info(message: string): void;
|
|
3
|
+
success(message: string): void;
|
|
4
|
+
warning(message: string): void;
|
|
5
|
+
error(message: string, error?: unknown): void;
|
|
6
|
+
dim(message: string): void;
|
|
7
|
+
}
|
|
8
|
+
declare class ConsoleLogger implements Logger {
|
|
9
|
+
info(message: string): void;
|
|
10
|
+
success(message: string): void;
|
|
11
|
+
warning(message: string): void;
|
|
12
|
+
error(message: string, error?: unknown): void;
|
|
13
|
+
dim(message: string): void;
|
|
14
|
+
}
|
|
15
|
+
export declare const logger: ConsoleLogger;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,cAAM,aAAc,YAAW,MAAM;IACnC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAU7C,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG3B;AAED,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
class ConsoleLogger {
|
|
3
|
+
info(message) {
|
|
4
|
+
console.log(chalk.blue(message));
|
|
5
|
+
}
|
|
6
|
+
success(message) {
|
|
7
|
+
console.log(chalk.green(`✓ ${message}`));
|
|
8
|
+
}
|
|
9
|
+
warning(message) {
|
|
10
|
+
console.log(chalk.yellow(`⚠ ${message}`));
|
|
11
|
+
}
|
|
12
|
+
error(message, error) {
|
|
13
|
+
if (error instanceof Error) {
|
|
14
|
+
console.error(chalk.red(`✗ ${message}`), error.message);
|
|
15
|
+
}
|
|
16
|
+
else if (error !== undefined) {
|
|
17
|
+
console.error(chalk.red(`✗ ${message}`), error);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
console.error(chalk.red(`✗ ${message}`));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
dim(message) {
|
|
24
|
+
console.log(chalk.gray(message));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export const logger = new ConsoleLogger();
|
|
28
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,aAAa;IACjB,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAAe;QACpC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxE,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,QASnD,CAAC;AAEF,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,IAAI,CAMpD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isHubCloned } from '@iamramo/zanat-core';
|
|
2
|
+
import { SkillArgSchema } from '../schemas/skill-arg.js';
|
|
3
|
+
import { logger } from './logger.js';
|
|
4
|
+
export const validateSkillArg = (skillArg) => {
|
|
5
|
+
const result = SkillArgSchema.safeParse(skillArg);
|
|
6
|
+
if (!result.success) {
|
|
7
|
+
const errorMessage = result.error.issues[0]?.message ?? 'Invalid skill format';
|
|
8
|
+
logger.error(errorMessage);
|
|
9
|
+
logger.dim('Example: mycompany/hello-world');
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
return result.data;
|
|
13
|
+
};
|
|
14
|
+
export const ensureHubExists = async () => {
|
|
15
|
+
const hubExists = await isHubCloned();
|
|
16
|
+
if (!hubExists) {
|
|
17
|
+
logger.error('Hub not found. Run `zanat init` first.');
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAiB,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAY,EAAE;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,sBAAsB,CAAC;QAC/E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iamramo/zanat-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "CLI for zanat - a skill hub for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"typecheck": "tsc --noEmit"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@iamramo/zanat-core": "^0.
|
|
30
|
+
"@iamramo/zanat-core": "^0.4.0",
|
|
31
31
|
"@inquirer/prompts": "^8.3.2",
|
|
32
32
|
"chalk": "^5.6.2",
|
|
33
33
|
"commander": "^14.0.3",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CA8BnE,CAAC"}
|
package/dist/commands/install.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { installSkill, isHubCloned } from '@iamramo/zanat-core';
|
|
2
|
-
import { SkillArgSchema } from '../schemas/skill-arg.js';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
export const installCommand = async (skillArg) => {
|
|
5
|
-
console.log(chalk.blue(`Installing skill: ${skillArg}...`));
|
|
6
|
-
try {
|
|
7
|
-
const hubExists = await isHubCloned();
|
|
8
|
-
if (!hubExists) {
|
|
9
|
-
console.error(chalk.red('Hub not found. Run `zanat init` first.'));
|
|
10
|
-
process.exit(1);
|
|
11
|
-
}
|
|
12
|
-
const result = SkillArgSchema.safeParse(skillArg);
|
|
13
|
-
if (!result.success) {
|
|
14
|
-
const errorMessage = result.error.issues[0]?.message ?? 'Invalid skill format';
|
|
15
|
-
console.error(chalk.red(errorMessage));
|
|
16
|
-
console.error(chalk.gray('Example: mycompany/hello-world'));
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
const { source, skillName } = result.data;
|
|
20
|
-
await installSkill(source, skillName);
|
|
21
|
-
console.log(chalk.green(`✓ Installed zanat.${source}.${skillName}`));
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
if (error instanceof Error) {
|
|
25
|
-
console.error(chalk.red('Failed to install:'), error.message);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
console.error(chalk.red('Failed to install:'), error);
|
|
29
|
-
}
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=install.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,QAAQ,KAAK,CAAC,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,sBAAsB,CAAC;YAC/E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1C,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|