@iamramo/zanat-cli 0.7.0 → 0.10.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 +30 -12
- package/dist/cli.js +7 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +26 -8
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +39 -52
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +17 -14
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +16 -8
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +14 -30
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +35 -52
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +9 -11
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +38 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/utils/validation.d.ts +0 -2
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +4 -15
- package/dist/utils/validation.js.map +1 -1
- package/package.json +2 -2
- package/dist/schemas/index.d.ts +0 -5
- package/dist/schemas/index.d.ts.map +0 -1
- package/dist/schemas/index.js +0 -5
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/skill-arg.d.ts +0 -10
- package/dist/schemas/skill-arg.d.ts.map +0 -1
- package/dist/schemas/skill-arg.js +0 -22
- package/dist/schemas/skill-arg.js.map +0 -1
package/README.md
CHANGED
|
@@ -10,14 +10,16 @@ npm install -g @iamramo/zanat-cli
|
|
|
10
10
|
|
|
11
11
|
## Commands
|
|
12
12
|
|
|
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 <
|
|
19
|
-
| `rm` | Remove a skill from your local skills | `zanat rm <
|
|
20
|
-
| `list` | List all added skills | `zanat list`
|
|
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 <skill>` |
|
|
19
|
+
| `rm` | Remove a skill from your local skills | `zanat rm <skill>` |
|
|
20
|
+
| `list` | List all added skills | `zanat list` |
|
|
21
|
+
| `update` | Update skill(s) from hub | `zanat update [skill]` |
|
|
22
|
+
| `status` | Show hub and skills status | `zanat status` |
|
|
21
23
|
|
|
22
24
|
## Getting Started
|
|
23
25
|
|
|
@@ -47,15 +49,31 @@ npm install -g @iamramo/zanat-cli
|
|
|
47
49
|
zanat add company.team.code-review
|
|
48
50
|
```
|
|
49
51
|
|
|
50
|
-
4. **
|
|
52
|
+
4. **List added skills:**
|
|
51
53
|
|
|
52
54
|
```bash
|
|
53
|
-
zanat
|
|
55
|
+
zanat list
|
|
54
56
|
```
|
|
55
57
|
|
|
56
|
-
5. **
|
|
58
|
+
5. **Update skills:**
|
|
59
|
+
|
|
57
60
|
```bash
|
|
58
|
-
|
|
61
|
+
# Update a specific skill
|
|
62
|
+
zanat update yurchi.code-review
|
|
63
|
+
|
|
64
|
+
# Update all skills
|
|
65
|
+
zanat update
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
6. **Check status:**
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
zanat status
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
7. **Remove a skill:**
|
|
75
|
+
```bash
|
|
76
|
+
zanat rm yurchi.code-review
|
|
59
77
|
```
|
|
60
78
|
|
|
61
79
|
## Configuration
|
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Command } from '@iamramo/zanat-core';
|
|
2
2
|
import packageJson from '../package.json' with { type: 'json' };
|
|
3
3
|
import { initCommand } from './commands/init.js';
|
|
4
4
|
import { syncCommand } from './commands/sync.js';
|
|
5
5
|
import { addCommand } from './commands/add.js';
|
|
6
6
|
import { removeCommand } from './commands/remove.js';
|
|
7
|
+
import { updateCommand } from './commands/update.js';
|
|
7
8
|
import { listCommand } from './commands/list.js';
|
|
8
9
|
import { searchCommand } from './commands/search.js';
|
|
9
10
|
import { statusCommand } from './commands/status.js';
|
|
10
|
-
const program =
|
|
11
|
+
const program = Command.create();
|
|
11
12
|
program.name('zanat').description('A skill hub for AI agents').version(packageJson.version);
|
|
12
13
|
program.helpCommand(false);
|
|
13
14
|
program
|
|
@@ -23,6 +24,10 @@ program
|
|
|
23
24
|
.command('rm <skill>')
|
|
24
25
|
.description('Remove a skill (format: namespace.skill-name or namespace.sub.skill-name)')
|
|
25
26
|
.action(removeCommand);
|
|
27
|
+
program
|
|
28
|
+
.command('update [skill]')
|
|
29
|
+
.description('Update skill(s) from hub (updates all if no skill specified)')
|
|
30
|
+
.action(updateCommand);
|
|
26
31
|
program.command('list').description('List added skills').action(listCommand);
|
|
27
32
|
program.command('search [query]').description('Search for skills in the hub').action(searchCommand);
|
|
28
33
|
program.command('status').description('Show hub and skills status').action(statusCommand);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,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,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACjC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5F,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAE3B,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,wEAAwE,CAAC;KACrF,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,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,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1F,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAqC/D,CAAC"}
|
package/dist/commands/add.js
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Log, Prompt, LockFile, Skill, Path } from '@iamramo/zanat-core';
|
|
2
|
+
import { ensureHubExists } from '../utils/validation.js';
|
|
3
3
|
export const addCommand = async (skillArg) => {
|
|
4
|
-
logger.info(`Adding skill: ${skillArg}...`);
|
|
5
4
|
try {
|
|
6
5
|
await ensureHubExists();
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
Log.blue(`Adding skill: ${skillArg}...`);
|
|
7
|
+
const { namespace, skillName } = Path.toSkillParts(skillArg);
|
|
8
|
+
const fullSkillName = Path.getFullSkillName(namespace, skillName);
|
|
9
|
+
const exists = await LockFile.find(fullSkillName);
|
|
10
|
+
if (exists) {
|
|
11
|
+
const shouldUpdate = await Prompt.confirm({
|
|
12
|
+
message: `Skill ${skillArg} is already added. Update from hub?`,
|
|
13
|
+
default: true,
|
|
14
|
+
});
|
|
15
|
+
if (!shouldUpdate) {
|
|
16
|
+
Log.blue('Cancelled');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
await Skill.update(namespace, skillName);
|
|
20
|
+
Log.green(`Updated ${skillArg}`, { prefix: '✓' });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const sourcePath = await Path.getSkillHubDir(namespace, skillName);
|
|
24
|
+
const targetPath = Path.getSkillTargetDir(fullSkillName);
|
|
25
|
+
const skillFile = Path.getSkillFile(sourcePath);
|
|
26
|
+
await Skill.add(namespace, skillName, skillFile, targetPath);
|
|
27
|
+
Log.green(`Added ${skillArg}`);
|
|
10
28
|
}
|
|
11
|
-
catch
|
|
12
|
-
|
|
29
|
+
catch {
|
|
30
|
+
Log.red('Failed to add', { prefix: '✗' });
|
|
13
31
|
process.exit(1);
|
|
14
32
|
}
|
|
15
33
|
};
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,GAAG,CAAC,IAAI,CAAC,iBAAiB,QAAQ,KAAK,CAAC,CAAC;QAEzC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAElD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;gBACxC,OAAO,EAAE,SAAS,QAAQ,qCAAqC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,WAAW,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7D,GAAG,CAAC,KAAK,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1C,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":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CA+EhD,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,76 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import fs from 'fs-extra';
|
|
1
|
+
import { Path, Config, Fs, Git, Log, Format, Prompt } from '@iamramo/zanat-core';
|
|
3
2
|
export const initCommand = async () => {
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Log.blue('Initializing Zanat...');
|
|
4
|
+
Log.blank();
|
|
6
5
|
try {
|
|
7
|
-
const
|
|
8
|
-
if (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
if (status.branch) {
|
|
17
|
-
console.log(`Branch: ${status.branch}`);
|
|
18
|
-
}
|
|
19
|
-
logger.blank();
|
|
20
|
-
const shouldReinitialize = await confirm({
|
|
6
|
+
const existingConfig = await Config.get().catch(() => undefined);
|
|
7
|
+
if (existingConfig) {
|
|
8
|
+
Log.blue('Zanat is already initialized.');
|
|
9
|
+
Log.blank();
|
|
10
|
+
Log.blue(`Repository: ${existingConfig.hubUrl}`);
|
|
11
|
+
Log.blue(`Branch: ${existingConfig.hubBranch}`);
|
|
12
|
+
Log.blank();
|
|
13
|
+
const shouldReinitialize = await Prompt.confirm({
|
|
21
14
|
message: 'Reinitialize? Your hub directory will be replaced but added skills stay safe.',
|
|
22
15
|
default: false,
|
|
23
16
|
});
|
|
24
17
|
if (!shouldReinitialize) {
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
Log.blank();
|
|
19
|
+
Log.blue('Keeping existing setup.');
|
|
27
20
|
return;
|
|
28
21
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
logger.blank();
|
|
22
|
+
Log.blank();
|
|
23
|
+
Log.blue('Removing existing hub...');
|
|
24
|
+
await Fs.remove(existingConfig.hubDir);
|
|
25
|
+
Log.green('Removed existing hub', { prefix: '✓' });
|
|
26
|
+
Log.blank();
|
|
35
27
|
}
|
|
36
|
-
const hubUrl = await input({
|
|
28
|
+
const hubUrl = await Prompt.input({
|
|
37
29
|
message: 'Hub repository URL:',
|
|
38
|
-
|
|
30
|
+
required: true,
|
|
39
31
|
});
|
|
40
|
-
const hubBranch = await input({
|
|
32
|
+
const hubBranch = await Prompt.input({
|
|
41
33
|
message: 'Hub branch:',
|
|
42
34
|
default: 'main',
|
|
43
35
|
});
|
|
44
|
-
const hubDir = await input({
|
|
36
|
+
const hubDir = await Prompt.input({
|
|
45
37
|
message: 'Hub directory path:',
|
|
46
|
-
default: `${ZANAT_DIR}/hub`,
|
|
38
|
+
default: `${Path.ZANAT_DIR}/hub`,
|
|
47
39
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
await
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
Log.blank();
|
|
41
|
+
Log.blue('Setting up directories...');
|
|
42
|
+
await Fs.ensureDir(Path.ZANAT_DIR);
|
|
43
|
+
Log.green(`Created ${Path.ZANAT_DIR}`, { prefix: '✓' });
|
|
44
|
+
await Fs.ensureDir(Path.AGENTS_DIR);
|
|
45
|
+
Log.blank();
|
|
46
|
+
Log.blue('Cloning hub repository...');
|
|
47
|
+
await Git.clone(hubUrl, hubBranch, hubDir);
|
|
48
|
+
Log.green(`Cloned hub from branch ${hubBranch} to "${hubDir}"`, { prefix: '✓' });
|
|
49
|
+
await Fs.writeFile(Path.CONFIG_FILE, Format.json({
|
|
53
50
|
hubUrl,
|
|
54
51
|
hubBranch,
|
|
55
52
|
hubDir,
|
|
56
53
|
lastSync: new Date().toISOString(),
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const actualBranch = await cloneHub(hubUrl, hubBranch, hubDir);
|
|
62
|
-
if (actualBranch !== hubBranch) {
|
|
63
|
-
config.hubBranch = actualBranch;
|
|
64
|
-
logger.warning(`Branch '${hubBranch}' not found, using '${actualBranch}' instead`);
|
|
65
|
-
}
|
|
66
|
-
logger.success(`Cloned hub to ${hubDir}`);
|
|
67
|
-
await saveConfig(config);
|
|
68
|
-
logger.success(`Created config.json in ${CONFIG_FILE}`);
|
|
69
|
-
logger.blank();
|
|
70
|
-
logger.success('Zanat initialized successfully!');
|
|
54
|
+
}));
|
|
55
|
+
Log.green(`Created config.json in ${Path.CONFIG_FILE}`, { prefix: '✓' });
|
|
56
|
+
Log.blank();
|
|
57
|
+
Log.green('Zanat initialized successfully!', { prefix: '✓' });
|
|
71
58
|
}
|
|
72
|
-
catch
|
|
73
|
-
|
|
59
|
+
catch {
|
|
60
|
+
Log.red('Failed to initialize', { prefix: '✗' });
|
|
74
61
|
process.exit(1);
|
|
75
62
|
}
|
|
76
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAGA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CA6BhD,CAAC"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import chalk from 'chalk';
|
|
1
|
+
import { LockFile, Display, Log } from '@iamramo/zanat-core';
|
|
3
2
|
import { ensureHubExists } from '../utils/validation.js';
|
|
4
3
|
export const listCommand = async () => {
|
|
5
4
|
try {
|
|
6
5
|
await ensureHubExists();
|
|
7
|
-
const skills = await
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const skills = await LockFile.findAll();
|
|
7
|
+
const skillNames = Object.keys(skills);
|
|
8
|
+
if (skillNames.length === 0) {
|
|
9
|
+
Log.gray('No skills added.');
|
|
10
|
+
Log.gray('Run `zanat search` to find skills or `zanat add <skill>` to add one.');
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
Log.blue('Added skills:');
|
|
14
|
+
Log.blank();
|
|
15
|
+
skillNames.forEach((skillName) => {
|
|
16
|
+
const skill = skills[skillName];
|
|
17
|
+
Log.green(`${skillName} ${Display.getDisplayVersion(skill?.version ?? 'latest')}`, {
|
|
18
|
+
prefix: '•',
|
|
19
|
+
});
|
|
17
20
|
});
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
Log.blank();
|
|
22
|
+
Log.gray(`Total: ${skillNames.length} skill${skillNames.length === 1 ? '' : 's'}`);
|
|
20
23
|
}
|
|
21
|
-
catch
|
|
22
|
-
|
|
24
|
+
catch {
|
|
25
|
+
Log.red('Failed to list skills', { prefix: '✗' });
|
|
23
26
|
process.exit(1);
|
|
24
27
|
}
|
|
25
28
|
};
|
|
@@ -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,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1B,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,UAAU,CAAC,OAAO,CAAC,CAAC,SAAiB,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAC,EAAE,EAAE;gBACjF,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,MAAM,SAAS,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"
|
|
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,CAuBlE,CAAC"}
|
package/dist/commands/remove.js
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { Skill, Fs, Path, Log } from '@iamramo/zanat-core';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { ensureHubExists } from '../utils/validation.js';
|
|
3
4
|
export const removeCommand = async (skillArg) => {
|
|
4
|
-
logger.info(`Removing skill: ${skillArg}...`);
|
|
5
5
|
try {
|
|
6
6
|
await ensureHubExists();
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
Log.blue(`Removing skill: ${skillArg}...`);
|
|
8
|
+
const { namespace, skillName } = Path.toSkillParts(skillArg);
|
|
9
|
+
const fullSkillName = Path.getFullSkillName(namespace, skillName);
|
|
10
|
+
const skillPath = path.join(Path.AGENTS_SKILLS_DIR, fullSkillName);
|
|
11
|
+
const exists = await Fs.exists(skillPath);
|
|
12
|
+
if (!exists) {
|
|
13
|
+
Log.red('Skill not found.', { prefix: '✗' });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
await Skill.remove(skillPath);
|
|
17
|
+
Log.green(`Removed ${skillArg}`, { prefix: '✓' });
|
|
10
18
|
}
|
|
11
|
-
catch
|
|
12
|
-
|
|
19
|
+
catch {
|
|
20
|
+
Log.red('Failed to remove', { prefix: '✗' });
|
|
13
21
|
process.exit(1);
|
|
14
22
|
}
|
|
15
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACrE,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,GAAG,CAAC,IAAI,CAAC,mBAAmB,QAAQ,KAAK,CAAC,CAAC;QAE3C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE9B,GAAG,CAAC,KAAK,CAAC,WAAW,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,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":"AAGA,eAAO,MAAM,aAAa,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CA4BhE,CAAC"}
|
package/dist/commands/search.js
CHANGED
|
@@ -1,43 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import chalk from 'chalk';
|
|
1
|
+
import { Skill, Log, Display } from '@iamramo/zanat-core';
|
|
3
2
|
import { ensureHubExists } from '../utils/validation.js';
|
|
4
|
-
const ELLIPSIS = '...';
|
|
5
|
-
const truncateDescription = (description, maxLength = 256) => {
|
|
6
|
-
if (description.length <= maxLength)
|
|
7
|
-
return description;
|
|
8
|
-
const lastSpace = description.lastIndexOf(' ', maxLength - ELLIPSIS.length);
|
|
9
|
-
if (lastSpace === -1) {
|
|
10
|
-
return description.slice(0, maxLength - ELLIPSIS.length) + ELLIPSIS;
|
|
11
|
-
}
|
|
12
|
-
return description.slice(0, lastSpace) + ELLIPSIS;
|
|
13
|
-
};
|
|
14
3
|
export const searchCommand = async (query) => {
|
|
15
4
|
try {
|
|
16
5
|
await ensureHubExists();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
else {
|
|
21
|
-
logger.info('Available skills:');
|
|
22
|
-
}
|
|
23
|
-
logger.blank();
|
|
24
|
-
const results = await searchSkills(query);
|
|
6
|
+
query ? Log.blue(`Searching for: "${query}"...`) : Log.blue('Available skills:');
|
|
7
|
+
Log.blank();
|
|
8
|
+
const results = query ? await Skill.search(query) : await Skill.findAll();
|
|
25
9
|
if (results.length === 0) {
|
|
26
|
-
|
|
10
|
+
Log.gray('No skills found.');
|
|
27
11
|
return;
|
|
28
12
|
}
|
|
29
13
|
results.forEach((skill) => {
|
|
30
|
-
|
|
31
|
-
const truncatedDesc =
|
|
32
|
-
|
|
33
|
-
|
|
14
|
+
Log.green(skill.fullName, { prefix: '•' });
|
|
15
|
+
const truncatedDesc = Display.truncate(skill.description);
|
|
16
|
+
Log.gray(truncatedDesc, { spacing: 2 });
|
|
17
|
+
Log.blank();
|
|
34
18
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
19
|
+
Log.gray(`Found ${results.length} skill(s)`);
|
|
20
|
+
Log.blank();
|
|
21
|
+
Log.gray('Add a skill with: zanat add <skill>');
|
|
38
22
|
}
|
|
39
|
-
catch
|
|
40
|
-
|
|
23
|
+
catch {
|
|
24
|
+
Log.red('Failed to search', { prefix: '✗' });
|
|
41
25
|
process.exit(1);
|
|
42
26
|
}
|
|
43
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC1D,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,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjF,GAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAE1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,IAAI,CA+ClD,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,63 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
const formatLastSync = (lastSync) => {
|
|
4
|
-
if (!lastSync)
|
|
5
|
-
return 'Never';
|
|
6
|
-
const last = new Date(lastSync);
|
|
7
|
-
const now = new Date();
|
|
8
|
-
const diffMs = now.getTime() - last.getTime();
|
|
9
|
-
const diffMins = Math.floor(diffMs / 60000);
|
|
10
|
-
const diffHours = Math.floor(diffMs / 3600000);
|
|
11
|
-
const diffDays = Math.floor(diffMs / 86400000);
|
|
12
|
-
if (diffMins < 1)
|
|
13
|
-
return 'Just now';
|
|
14
|
-
if (diffMins < 60)
|
|
15
|
-
return `${diffMins} minute${diffMins === 1 ? '' : 's'} ago`;
|
|
16
|
-
if (diffHours < 24)
|
|
17
|
-
return `${diffHours} hour${diffHours === 1 ? '' : 's'} ago`;
|
|
18
|
-
if (diffDays < 7)
|
|
19
|
-
return `${diffDays} day${diffDays === 1 ? '' : 's'} ago`;
|
|
20
|
-
return last.toLocaleDateString();
|
|
21
|
-
};
|
|
1
|
+
import { Fs, Git, LockFile, Display, Config, Log } from '@iamramo/zanat-core';
|
|
2
|
+
import { ensureHubExists } from '../utils/validation.js';
|
|
22
3
|
export const statusCommand = async () => {
|
|
23
4
|
try {
|
|
24
|
-
|
|
25
|
-
const skills = await
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
console.log(chalk.green('•'), 'Last sync:', chalk.bold(formatLastSync(config?.lastSync)));
|
|
42
|
-
if (hubStatus.behind > 0) {
|
|
43
|
-
logger.warning(`Behind: ${hubStatus.behind} commit${hubStatus.behind === 1 ? '' : 's'}`);
|
|
5
|
+
await ensureHubExists();
|
|
6
|
+
const skills = await LockFile.findAll();
|
|
7
|
+
const skillNames = Object.keys(skills);
|
|
8
|
+
const config = await Config.get();
|
|
9
|
+
Log.blue('Hub Status:');
|
|
10
|
+
Log.blank();
|
|
11
|
+
Log.green(`Initialized: ${Log.bold('yes')}`, { prefix: '•', spacing: 2 });
|
|
12
|
+
Log.green(`Repository: ${Log.bold(config.hubUrl)}`, { prefix: '•', spacing: 2 });
|
|
13
|
+
Log.green(`Branch: ${Log.bold(config.hubBranch)}`, { prefix: '•', spacing: 2 });
|
|
14
|
+
Log.green(`Last sync: ${Log.bold(Display.timeAgo(config?.lastSync))}`, {
|
|
15
|
+
prefix: '•',
|
|
16
|
+
spacing: 2,
|
|
17
|
+
});
|
|
18
|
+
const behind = await Git.behind(config.hubDir, config.hubBranch);
|
|
19
|
+
if (behind > 0) {
|
|
20
|
+
Log.yellow(`Behind: ${behind} commit(s)`, { prefix: '•', spacing: 2 });
|
|
44
21
|
}
|
|
45
22
|
else {
|
|
46
|
-
|
|
23
|
+
Log.green(`Behind: ${Log.bold('up-to-date')}`, { prefix: '•', spacing: 2 });
|
|
47
24
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
25
|
+
Log.blank();
|
|
26
|
+
Log.blue('Skills:');
|
|
27
|
+
Log.blank();
|
|
28
|
+
if (skillNames.length > 0) {
|
|
29
|
+
skillNames.forEach((skillName) => {
|
|
30
|
+
const skill = skills[skillName];
|
|
31
|
+
Log.green(`${skillName} ${Display.getDisplayVersion(skill?.version ?? 'latest')}`, {
|
|
32
|
+
prefix: '•',
|
|
33
|
+
spacing: 2,
|
|
34
|
+
});
|
|
55
35
|
});
|
|
56
36
|
}
|
|
57
|
-
|
|
37
|
+
else {
|
|
38
|
+
Log.gray('No skills added.', { spacing: 2 });
|
|
39
|
+
}
|
|
40
|
+
Log.blank();
|
|
58
41
|
}
|
|
59
|
-
catch
|
|
60
|
-
|
|
42
|
+
catch {
|
|
43
|
+
Log.red('Failed to get status', { prefix: '✗' });
|
|
61
44
|
process.exit(1);
|
|
62
45
|
}
|
|
63
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAiBhD,CAAC"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Git, Config, Log } from '@iamramo/zanat-core';
|
|
2
2
|
import { ensureHubExists } from '../utils/validation.js';
|
|
3
3
|
export const syncCommand = async () => {
|
|
4
|
-
logger.info('Syncing with hub...');
|
|
5
4
|
try {
|
|
6
5
|
await ensureHubExists();
|
|
7
|
-
|
|
8
|
-
const config = await
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
logger.success('Hub synced successfully');
|
|
6
|
+
Log.blue('Syncing with hub...');
|
|
7
|
+
const config = await Config.get();
|
|
8
|
+
await Git.pull(config.hubDir);
|
|
9
|
+
config.lastSync = new Date().toISOString();
|
|
10
|
+
await Config.update(config);
|
|
11
|
+
Log.green('Hub synced successfully', { prefix: '✓' });
|
|
14
12
|
}
|
|
15
|
-
catch
|
|
16
|
-
|
|
13
|
+
catch {
|
|
14
|
+
Log.red('Failed to sync', { prefix: '✗' });
|
|
17
15
|
process.exit(1);
|
|
18
16
|
}
|
|
19
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE5B,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,IAAI,CAwC9E,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Log, Prompt, LockFile, Path, Skill } from '@iamramo/zanat-core';
|
|
2
|
+
import { ensureHubExists } from '../utils/validation.js';
|
|
3
|
+
export const updateCommand = async (skillArg) => {
|
|
4
|
+
try {
|
|
5
|
+
await ensureHubExists();
|
|
6
|
+
// Update one skill
|
|
7
|
+
if (skillArg) {
|
|
8
|
+
const { namespace, skillName } = Path.toSkillParts(skillArg);
|
|
9
|
+
Log.blue(`Updating skill: ${skillArg}...`);
|
|
10
|
+
await Skill.update(namespace, skillName);
|
|
11
|
+
Log.green(`Updated ${skillArg}`, { prefix: '✓' });
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// Update all skill
|
|
15
|
+
const skills = await LockFile.findAll();
|
|
16
|
+
const addedSkills = Object.keys(skills);
|
|
17
|
+
if (addedSkills.length === 0) {
|
|
18
|
+
Log.blue('No skills to update');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const shouldUpdate = await Prompt.confirm({
|
|
22
|
+
message: `This will update ${addedSkills.length} skill(s). Continue?`,
|
|
23
|
+
default: true,
|
|
24
|
+
});
|
|
25
|
+
if (!shouldUpdate) {
|
|
26
|
+
Log.blue('Update cancelled');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
Log.blue(`Updating ${addedSkills.length} skill(s)...`);
|
|
30
|
+
await Skill.updateAll();
|
|
31
|
+
Log.green('Updated all skills', { prefix: '✓' });
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
Log.red('Failed to update', { prefix: '✗' });
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAA4B,EAAiB,EAAE;IACjF,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;QAExB,mBAAmB;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAE7D,GAAG,CAAC,IAAI,CAAC,mBAAmB,QAAQ,KAAK,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,WAAW,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YACxC,OAAO,EAAE,oBAAoB,WAAW,CAAC,MAAM,sBAAsB;YACrE,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,YAAY,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;QACvD,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC,IAAI,CAMpD,CAAC"}
|
package/dist/utils/validation.js
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SkillArgSchema } from '../schemas/skill-arg.js';
|
|
3
|
-
export const validateSkillArg = (skillArg) => {
|
|
4
|
-
const result = SkillArgSchema.safeParse(skillArg);
|
|
5
|
-
if (!result.success) {
|
|
6
|
-
const errorMessage = result.error.issues[0]?.message ?? 'Invalid skill format';
|
|
7
|
-
logger.error(errorMessage);
|
|
8
|
-
logger.dim('Example: mycompany.hello-world or mycompany.team.hello-world');
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
11
|
-
return result.data;
|
|
12
|
-
};
|
|
1
|
+
import { Config, Log } from '@iamramo/zanat-core';
|
|
13
2
|
export const ensureHubExists = async () => {
|
|
14
|
-
const
|
|
15
|
-
if (!
|
|
16
|
-
|
|
3
|
+
const config = await Config.get().catch(() => undefined);
|
|
4
|
+
if (!config) {
|
|
5
|
+
Log.red('Hub not found. Run `zanat init` first.', { prefix: '✗' });
|
|
17
6
|
process.exit(1);
|
|
18
7
|
}
|
|
19
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,wCAAwC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,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.10.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.10.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^25.5.0",
|
package/dist/schemas/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { SourceNameSchema, type SourceName } from './source-name.js';
|
|
2
|
-
export { SkillNameSchema, type SkillName } from './skill-name.js';
|
|
3
|
-
export { SkillArgSchema, type SkillArg } from './skill-arg.js';
|
|
4
|
-
export * from './common.js';
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/D,cAAc,aAAa,CAAC"}
|
package/dist/schemas/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAiB,MAAM,gBAAgB,CAAC;AAC/D,cAAc,aAAa,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
export declare const SkillArgSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<{
|
|
3
|
-
namespace: string[];
|
|
4
|
-
skillName: string | undefined;
|
|
5
|
-
}, string>>, z.ZodObject<{
|
|
6
|
-
namespace: z.ZodArray<z.ZodString>;
|
|
7
|
-
skillName: z.ZodString;
|
|
8
|
-
}, z.core.$strip>>;
|
|
9
|
-
export type SkillArg = z.infer<typeof SkillArgSchema>;
|
|
10
|
-
//# sourceMappingURL=skill-arg.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-arg.d.ts","sourceRoot":"","sources":["../../src/schemas/skill-arg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;;kBAqBxB,CAAC;AAEJ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { SegmentNameSchema } from './segment-name.js';
|
|
3
|
-
export const SkillArgSchema = z
|
|
4
|
-
.string()
|
|
5
|
-
.transform((val, ctx) => {
|
|
6
|
-
const parts = val.split('.');
|
|
7
|
-
if (parts.length < 2) {
|
|
8
|
-
ctx.addIssue({
|
|
9
|
-
code: z.ZodIssueCode.custom,
|
|
10
|
-
message: 'Invalid format. Use: namespace.skill-name or namespace.subnamespace.skill-name (e.g., mycompany.hello-world or mycompany.team.hello-world)',
|
|
11
|
-
});
|
|
12
|
-
return z.NEVER;
|
|
13
|
-
}
|
|
14
|
-
const skillName = parts[parts.length - 1];
|
|
15
|
-
const namespace = parts.slice(0, -1);
|
|
16
|
-
return { namespace, skillName };
|
|
17
|
-
})
|
|
18
|
-
.pipe(z.object({
|
|
19
|
-
namespace: z.array(SegmentNameSchema).min(1),
|
|
20
|
-
skillName: SegmentNameSchema,
|
|
21
|
-
}));
|
|
22
|
-
//# sourceMappingURL=skill-arg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skill-arg.js","sourceRoot":"","sources":["../../src/schemas/skill-arg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EACL,4IAA4I;SAC/I,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC,CAAC;KACD,IAAI,CACH,CAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CACH,CAAC"}
|