@iamramo/zanat-cli 0.14.3 → 0.14.4
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/dist/cli.js +45 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +2 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +51 -66
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +73 -80
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +18 -26
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +39 -48
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +11 -20
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +23 -31
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +8 -18
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +40 -48
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +81 -91
- package/dist/commands/update.js.map +1 -1
- package/dist/schemas/pin.d.ts +4 -0
- package/dist/schemas/pin.d.ts.map +1 -0
- package/dist/schemas/pin.js +6 -0
- package/dist/schemas/pin.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Display, Command } from '@iamramo/zanat-core';
|
|
1
|
+
import { Display, Command, Config, Zod, Log } 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 { pullCommand } from './commands/pull.js';
|
|
@@ -9,10 +9,11 @@ import { listCommand } from './commands/list.js';
|
|
|
9
9
|
import { searchCommand } from './commands/search.js';
|
|
10
10
|
import { statusCommand } from './commands/status.js';
|
|
11
11
|
import { showCommand } from './commands/show.js';
|
|
12
|
+
import { PinOptionSchema } from './schemas/pin.js';
|
|
12
13
|
const program = Command.create();
|
|
13
14
|
program
|
|
14
15
|
.name('zanat')
|
|
15
|
-
.description('Your personal skill library from any Git repository')
|
|
16
|
+
.description('Your personal skill library from any Git repository.')
|
|
16
17
|
.version(packageJson.version);
|
|
17
18
|
program.helpCommand(false);
|
|
18
19
|
program.configureHelp({
|
|
@@ -25,6 +26,48 @@ program.configureHelp({
|
|
|
25
26
|
return originalHelp;
|
|
26
27
|
},
|
|
27
28
|
});
|
|
29
|
+
program.hook('preAction', async (_thisCommand, actionCommand) => {
|
|
30
|
+
const cmd = actionCommand.name();
|
|
31
|
+
const args = actionCommand.args;
|
|
32
|
+
const opts = actionCommand.opts();
|
|
33
|
+
switch (cmd) {
|
|
34
|
+
case 'init':
|
|
35
|
+
return;
|
|
36
|
+
case 'add':
|
|
37
|
+
await Config.validate();
|
|
38
|
+
await Config.ensureOnTrackedBranch();
|
|
39
|
+
Zod.skill.FullSchema.shape.fullName.parse(args[0]);
|
|
40
|
+
PinOptionSchema.parse(opts.pin);
|
|
41
|
+
return;
|
|
42
|
+
case 'pull':
|
|
43
|
+
await Config.validate();
|
|
44
|
+
await Config.ensureOnTrackedBranch();
|
|
45
|
+
return;
|
|
46
|
+
case 'rm':
|
|
47
|
+
await Config.validate();
|
|
48
|
+
Zod.skill.FullSchema.shape.fullName.parse(args[0]);
|
|
49
|
+
return;
|
|
50
|
+
case 'show':
|
|
51
|
+
await Config.validate();
|
|
52
|
+
Zod.skill.FullSchema.shape.fullName.parse(args[0]);
|
|
53
|
+
return;
|
|
54
|
+
case 'update':
|
|
55
|
+
await Config.validate();
|
|
56
|
+
if (args[0]) {
|
|
57
|
+
Zod.skill.FullSchema.shape.fullName.parse(args[0]);
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
case 'list':
|
|
61
|
+
await Config.validate();
|
|
62
|
+
return;
|
|
63
|
+
case 'search':
|
|
64
|
+
await Config.validate();
|
|
65
|
+
return;
|
|
66
|
+
case 'status':
|
|
67
|
+
await Config.validate();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
28
71
|
program
|
|
29
72
|
.command('init')
|
|
30
73
|
.description('Initialize zanat configuration and clone the hub')
|
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,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/add.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,UAAU;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,GAAU,eAAe,MAAM,EAAE,SAAS,UAAU,KAAG,OAAO,CAAC,IAAI,CAoEzF,CAAC"}
|
package/dist/commands/add.js
CHANGED
|
@@ -1,75 +1,60 @@
|
|
|
1
|
-
import { Log, Prompt, LockFile, Skill, Path, Config, Git, Display, Fs,
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
const PinOptionSchema = z.union([
|
|
4
|
-
z.string().min(1, '--pin requires a ref value (branch, tag, or commit)'),
|
|
5
|
-
z.undefined(),
|
|
6
|
-
]);
|
|
1
|
+
import { Log, Prompt, LockFile, Skill, Path, Config, Git, Display, Fs, } from '@iamramo/zanat-core';
|
|
7
2
|
export const addCommand = async (fullSkillName, options) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
default: true,
|
|
21
|
-
});
|
|
22
|
-
if (!shouldUpdate) {
|
|
23
|
-
Log.blue('Cancelled');
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
await Skill.update(namespace, skillName);
|
|
27
|
-
Log.green(`Updated ${fullSkillName}`, { prefix: '✓' });
|
|
3
|
+
// Step 1: Parse inputs (validated in preAction hook)
|
|
4
|
+
const pinOption = options.pin;
|
|
5
|
+
const { namespace, skillName } = Path.toSkillParts(fullSkillName);
|
|
6
|
+
// Step 2: Handle existing skill or prepare to add new one
|
|
7
|
+
const exists = await LockFile.find(fullSkillName);
|
|
8
|
+
if (exists) {
|
|
9
|
+
const shouldUpdate = await Prompt.confirm({
|
|
10
|
+
message: `Skill ${fullSkillName} is already added. Update from hub?`,
|
|
11
|
+
default: true,
|
|
12
|
+
});
|
|
13
|
+
if (!shouldUpdate) {
|
|
14
|
+
Log.blue('Cancelled');
|
|
28
15
|
return;
|
|
29
16
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
});
|
|
44
|
-
Log.debug(error);
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
requestedRef = config.hubBranch;
|
|
50
|
-
resolvedCommit = await Git.resolveCommit(config.hubBranch);
|
|
51
|
-
Log.blue(`Tracking ${config.hubBranch} branch`);
|
|
17
|
+
await Skill.update(namespace, skillName);
|
|
18
|
+
Log.green(`Updated ${fullSkillName}`, { prefix: '✓' });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Step 3: Determine requested ref and resolve commit
|
|
22
|
+
const config = await Config.get();
|
|
23
|
+
let requestedRef;
|
|
24
|
+
let resolvedCommit;
|
|
25
|
+
if (pinOption !== undefined) {
|
|
26
|
+
requestedRef = pinOption;
|
|
27
|
+
try {
|
|
28
|
+
resolvedCommit = await Git.resolveCommit(requestedRef);
|
|
29
|
+
Log.blue(`Pinning to '${requestedRef}' (${Display.getShortSha(resolvedCommit)})`);
|
|
52
30
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
Log.red('Skill not found in hub.', { prefix: '✗' });
|
|
60
|
-
Log.gray(`If the skill exists on a different branch, use: zanat add ${fullSkillName} --pin=<branch>`);
|
|
61
|
-
process.exit(1);
|
|
62
|
-
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
Log.red(`Invalid ref: '${requestedRef}' does not exist in the hub repository.`, {
|
|
33
|
+
prefix: '✗',
|
|
34
|
+
});
|
|
35
|
+
Log.debug(error);
|
|
36
|
+
process.exit(1);
|
|
63
37
|
}
|
|
64
|
-
// Step 5: Add skill to local storage
|
|
65
|
-
const targetPath = Path.getSkillTargetDir(fullSkillName);
|
|
66
|
-
await Skill.add(namespace, skillName, skillFile, targetPath, requestedRef, resolvedCommit);
|
|
67
|
-
Log.green(`Added ${fullSkillName}`);
|
|
68
38
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
39
|
+
else {
|
|
40
|
+
requestedRef = config.hubBranch;
|
|
41
|
+
resolvedCommit = await Git.resolveCommit(config.hubBranch);
|
|
42
|
+
Log.blue(`Tracking ${config.hubBranch} branch`);
|
|
43
|
+
}
|
|
44
|
+
// Step 4: Check if skill exists in hub (only check filesystem when not using --pin)
|
|
45
|
+
const sourcePath = await Path.getSkillHubDir(namespace, skillName);
|
|
46
|
+
const skillFile = Path.getSkillFile(sourcePath);
|
|
47
|
+
if (pinOption === undefined) {
|
|
48
|
+
const skillExistsInHub = await Fs.exists(skillFile);
|
|
49
|
+
if (!skillExistsInHub) {
|
|
50
|
+
Log.red('Skill not found in hub.', { prefix: '✗' });
|
|
51
|
+
Log.gray(`If the skill exists on a different branch, use: zanat add ${fullSkillName} --pin=<branch>`);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
73
54
|
}
|
|
55
|
+
// Step 5: Add skill to local storage
|
|
56
|
+
const targetPath = Path.getSkillTargetDir(fullSkillName);
|
|
57
|
+
await Skill.add(namespace, skillName, skillFile, targetPath, requestedRef, resolvedCommit);
|
|
58
|
+
Log.green(`Added ${fullSkillName}`);
|
|
74
59
|
};
|
|
75
60
|
//# sourceMappingURL=add.js.map
|
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,EACL,GAAG,EACH,MAAM,EACN,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,MAAM,EACN,GAAG,EACH,OAAO,EACP,EAAE,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAoGhD,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -3,90 +3,83 @@ import { Path, Config, Fs, Git, LockFile, Log, Format, Prompt, Zod } from '@iamr
|
|
|
3
3
|
export const initCommand = async () => {
|
|
4
4
|
Log.blue('Initializing Zanat...');
|
|
5
5
|
Log.blank();
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (!shouldReinitialize) {
|
|
21
|
-
Log.blank();
|
|
22
|
-
Log.blue('Keeping existing setup.');
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
Log.blank();
|
|
26
|
-
Log.blue('Removing existing hub...');
|
|
27
|
-
await Fs.remove(config.hubDir);
|
|
28
|
-
Log.green('Removed existing hub', { prefix: '✓' });
|
|
6
|
+
// Step 1: Check for existing configuration and handle reinitialization
|
|
7
|
+
const hasConfig = await Config.exists();
|
|
8
|
+
if (hasConfig) {
|
|
9
|
+
Log.blue('Zanat is already initialized.');
|
|
10
|
+
Log.blank();
|
|
11
|
+
const config = await Config.get();
|
|
12
|
+
Log.blue(`Repository: ${config.hubUrl}`);
|
|
13
|
+
Log.blue(`Branch: ${config.hubBranch}`);
|
|
14
|
+
Log.blank();
|
|
15
|
+
const shouldReinitialize = await Prompt.confirm({
|
|
16
|
+
message: 'Reinitialize? Your hub directory will be replaced but added skills stay safe.',
|
|
17
|
+
default: false,
|
|
18
|
+
});
|
|
19
|
+
if (!shouldReinitialize) {
|
|
29
20
|
Log.blank();
|
|
21
|
+
Log.blue('Keeping existing setup.');
|
|
22
|
+
return;
|
|
30
23
|
}
|
|
31
|
-
// Step 2: Collect configuration from user
|
|
32
|
-
const hubUrl = await Prompt.input({
|
|
33
|
-
message: 'Hub repository URL:',
|
|
34
|
-
required: true,
|
|
35
|
-
validate: Prompt.validate(Zod.config.ConfigSchema.shape.hubUrl),
|
|
36
|
-
});
|
|
37
|
-
const hubBranch = await Prompt.input({
|
|
38
|
-
message: 'Hub branch:',
|
|
39
|
-
default: 'main',
|
|
40
|
-
validate: async (value) => {
|
|
41
|
-
// Validate format
|
|
42
|
-
const formatResult = Prompt.validate(Zod.config.ConfigSchema.shape.hubBranch)(value);
|
|
43
|
-
if (formatResult !== true) {
|
|
44
|
-
return formatResult;
|
|
45
|
-
}
|
|
46
|
-
// Validate branch existence on remote
|
|
47
|
-
try {
|
|
48
|
-
await Git.lsRemote(hubUrl, value);
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
Log.debug(error);
|
|
52
|
-
return `Branch '${value}' does not exist in the repository`;
|
|
53
|
-
}
|
|
54
|
-
return true;
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
const hubDir = await Prompt.input({
|
|
58
|
-
message: 'Hub directory path:',
|
|
59
|
-
default: path.join(Path.ZANAT_DIR, 'hub'),
|
|
60
|
-
validate: Prompt.validate(Zod.config.ConfigSchema.shape.hubDir),
|
|
61
|
-
});
|
|
62
|
-
// Step 3: Create directories and config files
|
|
63
|
-
Log.blank();
|
|
64
|
-
Log.blue('Setting up directories...');
|
|
65
|
-
await Fs.ensureDir(Path.ZANAT_DIR);
|
|
66
|
-
Log.green(`Created ${Path.ZANAT_DIR}`, { prefix: '✓' });
|
|
67
|
-
await Fs.ensureDir(Path.AGENTS_DIR);
|
|
68
|
-
Log.green(`Created ${Path.AGENTS_DIR}`, { prefix: '✓' });
|
|
69
|
-
await LockFile.ensure();
|
|
70
|
-
Log.green(`Created ${Path.SKILL_LOCK_FILE}`, { prefix: '✓' });
|
|
71
|
-
await Fs.writeFile(Path.CONFIG_FILE, Format.json({
|
|
72
|
-
hubUrl,
|
|
73
|
-
hubBranch,
|
|
74
|
-
hubDir,
|
|
75
|
-
lastPull: new Date().toISOString(),
|
|
76
|
-
}));
|
|
77
|
-
Log.green(`Created ${Path.CONFIG_FILE}`, { prefix: '✓' });
|
|
78
24
|
Log.blank();
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
Log.green(`Cloned hub from branch ${hubBranch} to "${hubDir}"`, { prefix: '✓' });
|
|
25
|
+
Log.blue('Removing existing hub...');
|
|
26
|
+
await Fs.remove(config.hubDir);
|
|
27
|
+
Log.green('Removed existing hub', { prefix: '✓' });
|
|
83
28
|
Log.blank();
|
|
84
|
-
Log.white(Log.bold('Zanat initialized successfully!'), { prefix: '✨' });
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
Log.red('Failed to initialize', { prefix: '✗' });
|
|
88
|
-
Log.debug(error);
|
|
89
|
-
process.exit(1);
|
|
90
29
|
}
|
|
30
|
+
// Step 2: Collect configuration from user
|
|
31
|
+
const hubUrl = await Prompt.input({
|
|
32
|
+
message: 'Hub repository URL:',
|
|
33
|
+
required: true,
|
|
34
|
+
validate: Prompt.validate(Zod.config.ConfigSchema.shape.hubUrl),
|
|
35
|
+
});
|
|
36
|
+
const hubBranch = await Prompt.input({
|
|
37
|
+
message: 'Hub branch:',
|
|
38
|
+
default: 'main',
|
|
39
|
+
validate: async (value) => {
|
|
40
|
+
// Validate format
|
|
41
|
+
const formatResult = Prompt.validate(Zod.config.ConfigSchema.shape.hubBranch)(value);
|
|
42
|
+
if (formatResult !== true) {
|
|
43
|
+
return formatResult;
|
|
44
|
+
}
|
|
45
|
+
// Validate branch existence on remote
|
|
46
|
+
try {
|
|
47
|
+
await Git.lsRemote(hubUrl, value);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
Log.debug(error);
|
|
51
|
+
return `Branch '${value}' does not exist in the repository`;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const hubDir = await Prompt.input({
|
|
57
|
+
message: 'Hub directory path:',
|
|
58
|
+
default: path.join(Path.ZANAT_DIR, 'hub'),
|
|
59
|
+
validate: Prompt.validate(Zod.config.ConfigSchema.shape.hubDir),
|
|
60
|
+
});
|
|
61
|
+
// Step 3: Create directories and config files
|
|
62
|
+
Log.blank();
|
|
63
|
+
Log.blue('Setting up directories...');
|
|
64
|
+
await Fs.ensureDir(Path.ZANAT_DIR);
|
|
65
|
+
Log.green(`Created ${Path.ZANAT_DIR}`, { prefix: '✓' });
|
|
66
|
+
await Fs.ensureDir(Path.AGENTS_DIR);
|
|
67
|
+
Log.green(`Created ${Path.AGENTS_DIR}`, { prefix: '✓' });
|
|
68
|
+
await LockFile.ensure();
|
|
69
|
+
Log.green(`Created ${Path.SKILL_LOCK_FILE}`, { prefix: '✓' });
|
|
70
|
+
await Fs.writeFile(Path.CONFIG_FILE, Format.json({
|
|
71
|
+
hubUrl,
|
|
72
|
+
hubBranch,
|
|
73
|
+
hubDir,
|
|
74
|
+
lastPull: new Date().toISOString(),
|
|
75
|
+
}));
|
|
76
|
+
Log.green(`Created ${Path.CONFIG_FILE}`, { prefix: '✓' });
|
|
77
|
+
Log.blank();
|
|
78
|
+
// Step 4: Clone repository
|
|
79
|
+
Log.blue('Cloning hub repository...');
|
|
80
|
+
await Git.clone(hubUrl, hubBranch, hubDir);
|
|
81
|
+
Log.green(`Cloned hub from branch ${hubBranch} to "${hubDir}"`, { prefix: '✓' });
|
|
82
|
+
Log.blank();
|
|
83
|
+
Log.white(Log.bold('Zanat initialized successfully!'), { prefix: '✨' });
|
|
91
84
|
};
|
|
92
85
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAEhG,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAClC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEZ,
|
|
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":"AAEA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAwBhD,CAAC"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,31 +1,23 @@
|
|
|
1
|
-
import { LockFile, Display, Log
|
|
1
|
+
import { LockFile, Display, Log } from '@iamramo/zanat-core';
|
|
2
2
|
export const listCommand = async () => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Log.gray('Run `zanat search` to find skills or `zanat add <skill>` to add one.');
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
// Step 2: Display skills with versions
|
|
14
|
-
Log.blue('Added skills:');
|
|
15
|
-
Log.blank();
|
|
16
|
-
for (const skillName of skillNames) {
|
|
17
|
-
const displayVersion = await Display.getDisplayVersion(skillName);
|
|
18
|
-
Log.status(`${skillName}`, displayVersion, 'blue', {
|
|
19
|
-
prefix: '•',
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
Log.blank();
|
|
23
|
-
Log.gray(`Total: ${skillNames.length} skill(s)`);
|
|
3
|
+
// Step 1: Load and check skills
|
|
4
|
+
const skills = await LockFile.findAll();
|
|
5
|
+
const skillNames = Object.keys(skills);
|
|
6
|
+
if (skillNames.length === 0) {
|
|
7
|
+
Log.gray('No skills added.');
|
|
8
|
+
Log.gray('Run `zanat search` to find skills or `zanat add <skill>` to add one.');
|
|
9
|
+
return;
|
|
24
10
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
11
|
+
// Step 2: Display skills with versions
|
|
12
|
+
Log.blue('Added skills:');
|
|
13
|
+
Log.blank();
|
|
14
|
+
for (const skillName of skillNames) {
|
|
15
|
+
const displayVersion = await Display.getDisplayVersion(skillName);
|
|
16
|
+
Log.status(`${skillName}`, displayVersion, 'blue', {
|
|
17
|
+
prefix: '•',
|
|
18
|
+
});
|
|
29
19
|
}
|
|
20
|
+
Log.blank();
|
|
21
|
+
Log.gray(`Total: ${skillNames.length} skill(s)`);
|
|
30
22
|
};
|
|
31
23
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
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;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,gCAAgC;IAChC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,uCAAuC;IACvC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1B,GAAG,CAAC,KAAK,EAAE,CAAC;IAEZ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE;YACjD,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,MAAM,WAAW,CAAC,CAAC;AACrD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAqDhD,CAAC"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -1,56 +1,47 @@
|
|
|
1
1
|
import { Git, Config, LockFile, Log } from '@iamramo/zanat-core';
|
|
2
2
|
export const pullCommand = async () => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
try {
|
|
18
|
-
await Git.fetch([ref]);
|
|
19
|
-
fetchedRefs.push(ref);
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
Log.debug(error);
|
|
23
|
-
// Find skills using this ref for user guidance
|
|
24
|
-
const affectedSkills = await LockFile.findSkillsByRef(ref);
|
|
25
|
-
failedRefs.push({ ref, skills: affectedSkills });
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// Step 3: Report results
|
|
29
|
-
if (fetchedRefs.length > 0) {
|
|
30
|
-
Log.green(`Fetched ${fetchedRefs.length} additional ref(s):`, { prefix: '✓' });
|
|
31
|
-
fetchedRefs.forEach((ref) => Log.green(ref, { spacing: 2 }));
|
|
3
|
+
const config = await Config.get();
|
|
4
|
+
// Step 1: Pull hubBranch
|
|
5
|
+
Log.blue('Pulling latest changes...');
|
|
6
|
+
await Git.pull();
|
|
7
|
+
Log.green(`Pulled ${config.hubBranch}`, { prefix: '✓' });
|
|
8
|
+
// Step 2: Get unique refs and fetch each
|
|
9
|
+
const allRefs = await LockFile.findUniqueRefs();
|
|
10
|
+
const additionalRefs = allRefs.filter((r) => r !== config.hubBranch);
|
|
11
|
+
const fetchedRefs = [];
|
|
12
|
+
const failedRefs = [];
|
|
13
|
+
for (const ref of additionalRefs) {
|
|
14
|
+
try {
|
|
15
|
+
await Git.fetch([ref]);
|
|
16
|
+
fetchedRefs.push(ref);
|
|
32
17
|
}
|
|
33
|
-
|
|
34
|
-
Log.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (skills.length > 0) {
|
|
39
|
-
Log.gray(`Affects: ${skills.join(', ')}`, { spacing: 4 });
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
Log.blank();
|
|
43
|
-
Log.gray('These refs may have been deleted from the remote.');
|
|
44
|
-
Log.gray(`To fix affected skills, run: zanat add <skill-name> (re-pins to ${config.hubBranch})`);
|
|
18
|
+
catch (error) {
|
|
19
|
+
Log.debug(error);
|
|
20
|
+
// Find skills using this ref for user guidance
|
|
21
|
+
const affectedSkills = await LockFile.findSkillsByRef(ref);
|
|
22
|
+
failedRefs.push({ ref, skills: affectedSkills });
|
|
45
23
|
}
|
|
46
|
-
// Step 4: Always update timestamp
|
|
47
|
-
config.lastPull = new Date().toISOString();
|
|
48
|
-
await Config.update(config);
|
|
49
24
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
Log.
|
|
53
|
-
|
|
25
|
+
// Step 3: Report results
|
|
26
|
+
if (fetchedRefs.length > 0) {
|
|
27
|
+
Log.green(`Fetched ${fetchedRefs.length} additional ref(s):`, { prefix: '✓' });
|
|
28
|
+
fetchedRefs.forEach((ref) => Log.green(ref, { spacing: 2 }));
|
|
29
|
+
}
|
|
30
|
+
if (failedRefs.length > 0) {
|
|
31
|
+
Log.blank();
|
|
32
|
+
Log.yellow(`Warning: Could not fetch ${failedRefs.length} ref(s):`, { prefix: '⚠' });
|
|
33
|
+
failedRefs.forEach(({ ref, skills }) => {
|
|
34
|
+
Log.yellow(ref, { spacing: 2 });
|
|
35
|
+
if (skills.length > 0) {
|
|
36
|
+
Log.gray(`Affects: ${skills.join(', ')}`, { spacing: 4 });
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
Log.blank();
|
|
40
|
+
Log.gray('These refs may have been deleted from the remote.');
|
|
41
|
+
Log.gray(`To fix affected skills, run: zanat add <skill-name> (re-pins to ${config.hubBranch})`);
|
|
54
42
|
}
|
|
43
|
+
// Step 4: Always update timestamp
|
|
44
|
+
config.lastPull = new Date().toISOString();
|
|
45
|
+
await Config.update(config);
|
|
55
46
|
};
|
|
56
47
|
//# sourceMappingURL=pull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAEjE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAU,eAAe,MAAM,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAU,eAAe,MAAM,KAAG,OAAO,CAAC,IAAI,CAgBvE,CAAC"}
|
package/dist/commands/remove.js
CHANGED
|
@@ -1,25 +1,16 @@
|
|
|
1
|
-
import { Skill, Fs, Path, Log
|
|
1
|
+
import { Skill, Fs, Path, Log } from '@iamramo/zanat-core';
|
|
2
2
|
export const removeCommand = async (fullSkillName) => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const exists = await Fs.exists(skillPath);
|
|
11
|
-
if (!exists) {
|
|
12
|
-
Log.red('Skill not found.', { prefix: '✗' });
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
// Step 2: Remove skill from storage
|
|
16
|
-
await Skill.remove(skillPath);
|
|
17
|
-
Log.green(`Removed ${fullSkillName}`, { prefix: '✓' });
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
Log.red('Failed to remove', { prefix: '✗' });
|
|
21
|
-
Log.debug(error);
|
|
3
|
+
// Step 1: Parse skill name (validated in preAction hook)
|
|
4
|
+
Path.toSkillParts(fullSkillName);
|
|
5
|
+
// Step 2: Check skill exists
|
|
6
|
+
const skillPath = Path.getSkillTargetDir(fullSkillName);
|
|
7
|
+
const exists = await Fs.exists(skillPath);
|
|
8
|
+
if (!exists) {
|
|
9
|
+
Log.red('Skill not found.', { prefix: '✗' });
|
|
22
10
|
process.exit(1);
|
|
23
11
|
}
|
|
12
|
+
// Step 2: Remove skill from storage
|
|
13
|
+
await Skill.remove(skillPath);
|
|
14
|
+
Log.green(`Removed ${fullSkillName}`, { prefix: '✓' });
|
|
24
15
|
};
|
|
25
16
|
//# sourceMappingURL=remove.js.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,aAAqB,EAAiB,EAAE;IAC1E,yDAAyD;IACzD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAE/B,6BAA6B;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,oCAAoC;IACpC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,CAAC,WAAW,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CA4BhE,CAAC"}
|
package/dist/commands/search.js
CHANGED
|
@@ -1,36 +1,28 @@
|
|
|
1
|
-
import { Skill, Log, Display
|
|
1
|
+
import { Skill, Log, Display } from '@iamramo/zanat-core';
|
|
2
2
|
export const searchCommand = async (query) => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Log.gray('No skills found.');
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
results.forEach((skill) => {
|
|
20
|
-
Log.white(skill.fullName, { prefix: '•' });
|
|
21
|
-
const truncatedDesc = Display.truncate(skill.description);
|
|
22
|
-
Log.gray(truncatedDesc, { spacing: 2 });
|
|
23
|
-
Log.blank();
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
Log.gray(`Found ${results.length} skill(s)`);
|
|
27
|
-
Log.blank();
|
|
28
|
-
Log.gray('Add a skill with: zanat add <skill>');
|
|
3
|
+
// Step 1: Validate and normalize input
|
|
4
|
+
const normalizedQuery = query?.trim();
|
|
5
|
+
// Step 2: Search for skills
|
|
6
|
+
normalizedQuery
|
|
7
|
+
? Log.blue(`Searching for: "${normalizedQuery}"...`)
|
|
8
|
+
: Log.blue('Available skills:');
|
|
9
|
+
Log.blank();
|
|
10
|
+
const results = normalizedQuery ? await Skill.search(normalizedQuery) : await Skill.findAll();
|
|
11
|
+
// Step 2: Display results
|
|
12
|
+
if (results.length === 0) {
|
|
13
|
+
Log.gray('No skills found.');
|
|
14
|
+
return;
|
|
29
15
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
else {
|
|
17
|
+
results.forEach((skill) => {
|
|
18
|
+
Log.white(skill.fullName, { prefix: '•' });
|
|
19
|
+
const truncatedDesc = Display.truncate(skill.description);
|
|
20
|
+
Log.gray(truncatedDesc, { spacing: 2 });
|
|
21
|
+
Log.blank();
|
|
22
|
+
});
|
|
34
23
|
}
|
|
24
|
+
Log.gray(`Found ${results.length} skill(s)`);
|
|
25
|
+
Log.blank();
|
|
26
|
+
Log.gray('Add a skill with: zanat add <skill>');
|
|
35
27
|
};
|
|
36
28
|
//# sourceMappingURL=search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,
|
|
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;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAc,EAAiB,EAAE;IACnE,uCAAuC;IACvC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAEpC,4BAA4B;IAC5B,eAAe;QACb,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,eAAe,MAAM,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClC,GAAG,CAAC,KAAK,EAAE,CAAC;IAEZ,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IAE9F,0BAA0B;IAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;SAAM,CAAC;QACN,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;IACL,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;IAC7C,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AACpD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,GAAU,eAAe,MAAM,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,GAAU,eAAe,MAAM,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAY3F,CAAC"}
|
package/dist/commands/show.js
CHANGED
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
import { Skill, Log, Config
|
|
1
|
+
import { Skill, Log, Config } from '@iamramo/zanat-core';
|
|
2
2
|
export const showCommand = async (fullSkillName, options) => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const skill = await Skill.find(fullSkillName);
|
|
9
|
-
if (!skill) {
|
|
10
|
-
Log.red(`Skill not found in hub: ${fullSkillName}`, { prefix: '✗' });
|
|
11
|
-
Log.gray('Use "zanat search" to find available skills.');
|
|
12
|
-
process.exit(1);
|
|
13
|
-
}
|
|
14
|
-
// Step 3: Print the content
|
|
15
|
-
console.log(skill.content);
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
Log.red('Failed to show skill', { prefix: '✗' });
|
|
19
|
-
Log.debug(error);
|
|
3
|
+
// Step 1: Get skill from filesystem (current branch)
|
|
4
|
+
const skill = await Skill.find(fullSkillName);
|
|
5
|
+
if (!skill) {
|
|
6
|
+
Log.red(`Skill not found in hub: ${fullSkillName}`, { prefix: '✗' });
|
|
7
|
+
Log.gray('Use "zanat search" to find available skills.');
|
|
20
8
|
process.exit(1);
|
|
21
9
|
}
|
|
10
|
+
// Step 3: Print the content
|
|
11
|
+
console.log(skill.content);
|
|
22
12
|
};
|
|
23
13
|
//# sourceMappingURL=show.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,aAAqB,EAAE,OAAoB,EAAiB,EAAE;IAC9F,qDAAqD;IACrD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,GAAG,CAAC,2BAA2B,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,IAAI,CAqDlD,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,59 +1,51 @@
|
|
|
1
1
|
import { Git, LockFile, Display, Config, Log } from '@iamramo/zanat-core';
|
|
2
2
|
export const statusCommand = async () => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
// Step 1: Load configuration and skills
|
|
4
|
+
const skills = await LockFile.findAll();
|
|
5
|
+
const skillNames = Object.keys(skills);
|
|
6
|
+
const config = await Config.get();
|
|
7
|
+
// Step 2: Display hub status
|
|
8
|
+
Log.blue(Log.bold('Hub Status:'));
|
|
9
|
+
Log.blank();
|
|
10
|
+
Log.status('Initialized:', 'yes', 'green', { prefix: '•', spacing: 2 });
|
|
11
|
+
Log.status('Repository:', config.hubUrl, 'green', { prefix: '•', spacing: 2 });
|
|
12
|
+
Log.status('Branch:', config.hubBranch, 'green', { prefix: '•', spacing: 2 });
|
|
13
|
+
Log.status('Last pull:', Display.timeAgo(config?.lastPull), 'green', {
|
|
14
|
+
prefix: '•',
|
|
15
|
+
spacing: 2,
|
|
16
|
+
});
|
|
17
|
+
// Check if remote branch exists before trying to get behind count
|
|
18
|
+
const remoteExists = await Git.remoteBranchExists(config.hubBranch);
|
|
19
|
+
if (!remoteExists) {
|
|
20
|
+
Log.yellow(`Remote branch 'origin/${config.hubBranch}' not found.`, {
|
|
21
|
+
prefix: '⚠',
|
|
17
22
|
spacing: 2,
|
|
18
23
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const behind = await Git.behind(config.hubBranch);
|
|
27
|
+
if (behind === 0) {
|
|
28
|
+
Log.status('Behind:', Log.bold('up-to-date'), 'green', { prefix: '•', spacing: 2 });
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
Log.status('Behind:', `${behind} commit(s)`, 'yellow', { prefix: '•', spacing: 2 });
|
|
32
|
+
}
|
|
33
|
+
// Step 3: Display skills status
|
|
34
|
+
Log.blank();
|
|
35
|
+
Log.blue(Log.bold('Skills:'));
|
|
36
|
+
Log.blank();
|
|
37
|
+
if (skillNames.length > 0) {
|
|
38
|
+
for (const skillName of skillNames) {
|
|
39
|
+
const displayVersion = await Display.getDisplayVersion(skillName);
|
|
40
|
+
Log.status(`${skillName}`, displayVersion, 'blue', {
|
|
41
|
+
prefix: '•',
|
|
24
42
|
spacing: 2,
|
|
25
43
|
});
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const behind = await Git.behind(config.hubBranch);
|
|
29
|
-
if (behind === 0) {
|
|
30
|
-
Log.status('Behind:', Log.bold('up-to-date'), 'green', { prefix: '•', spacing: 2 });
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
Log.status('Behind:', `${behind} commit(s)`, 'yellow', { prefix: '•', spacing: 2 });
|
|
34
|
-
}
|
|
35
|
-
// Step 3: Display skills status
|
|
36
|
-
Log.blank();
|
|
37
|
-
Log.blue(Log.bold('Skills:'));
|
|
38
|
-
Log.blank();
|
|
39
|
-
if (skillNames.length > 0) {
|
|
40
|
-
for (const skillName of skillNames) {
|
|
41
|
-
const displayVersion = await Display.getDisplayVersion(skillName);
|
|
42
|
-
Log.status(`${skillName}`, displayVersion, 'blue', {
|
|
43
|
-
prefix: '•',
|
|
44
|
-
spacing: 2,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
Log.gray('No skills added.', { spacing: 2 });
|
|
50
44
|
}
|
|
51
|
-
Log.blank();
|
|
52
45
|
}
|
|
53
|
-
|
|
54
|
-
Log.
|
|
55
|
-
Log.debug(error);
|
|
56
|
-
process.exit(1);
|
|
46
|
+
else {
|
|
47
|
+
Log.gray('No skills added.', { spacing: 2 });
|
|
57
48
|
}
|
|
49
|
+
Log.blank();
|
|
58
50
|
};
|
|
59
51
|
//# sourceMappingURL=status.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,IAAmB,EAAE;IACrD,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAU,eAAe,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAU,eAAe,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,IAAI,CA4GnF,CAAC"}
|
package/dist/commands/update.js
CHANGED
|
@@ -1,104 +1,94 @@
|
|
|
1
|
-
import { Log, Prompt, LockFile, Path, Skill, Config
|
|
1
|
+
import { Log, Prompt, LockFile, Path, Skill, Config } from '@iamramo/zanat-core';
|
|
2
2
|
export const updateCommand = async (fullSkillName) => {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const skill = await LockFile.find(fullSkillName);
|
|
12
|
-
if (!skill) {
|
|
13
|
-
Log.red(`Error: ${fullSkillName} was not found`, { prefix: '✗' });
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
const refStatus = await LockFile.getRefStatus(skill);
|
|
17
|
-
if (refStatus === 'orphaned') {
|
|
18
|
-
Log.yellow(`Warning: ${fullSkillName} is orphaned - Branch '${skill.requestedRef}' no longer exists, but commit is preserved`, {
|
|
19
|
-
prefix: '⚠',
|
|
20
|
-
});
|
|
21
|
-
const shouldContinue = await Prompt.confirm({
|
|
22
|
-
message: 'Update anyway? (will preserve current commit)',
|
|
23
|
-
default: true,
|
|
24
|
-
});
|
|
25
|
-
if (!shouldContinue) {
|
|
26
|
-
Log.blue('Update cancelled');
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
else if (refStatus === 'broken') {
|
|
31
|
-
Log.red(`Error: ${fullSkillName} is broken - Neither ref nor commit exist`, {
|
|
32
|
-
prefix: '✗',
|
|
33
|
-
});
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
// Step 3a: Update the single skill
|
|
37
|
-
await Skill.update(namespace, skillName);
|
|
38
|
-
Log.green(`Updated ${fullSkillName}`, { prefix: '✓' });
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
// Update all skills
|
|
42
|
-
// Step 2b: Load all skills and categorize by status
|
|
43
|
-
const skills = await LockFile.findAll();
|
|
44
|
-
const skillEntries = Object.entries(skills);
|
|
45
|
-
if (skillEntries.length === 0) {
|
|
46
|
-
Log.blue('No skills to update');
|
|
47
|
-
return;
|
|
3
|
+
// Update one skill
|
|
4
|
+
if (fullSkillName) {
|
|
5
|
+
// Step 2a: Parse skill name and check ref status (validated in preAction hook)
|
|
6
|
+
const { namespace, skillName } = Path.toSkillParts(fullSkillName);
|
|
7
|
+
const skill = await LockFile.find(fullSkillName);
|
|
8
|
+
if (!skill) {
|
|
9
|
+
Log.red(`Error: ${fullSkillName} was not found`, { prefix: '✗' });
|
|
10
|
+
process.exit(1);
|
|
48
11
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
updatableSkills.push({ name, namespace: skill.namespace, skillName: skill.skillName });
|
|
12
|
+
const refStatus = await LockFile.getRefStatus(skill);
|
|
13
|
+
if (refStatus === 'orphaned') {
|
|
14
|
+
Log.yellow(`Warning: ${fullSkillName} is orphaned - Branch '${skill.requestedRef}' no longer exists, but commit is preserved`, {
|
|
15
|
+
prefix: '⚠',
|
|
16
|
+
});
|
|
17
|
+
const shouldContinue = await Prompt.confirm({
|
|
18
|
+
message: 'Update anyway? (will preserve current commit)',
|
|
19
|
+
default: true,
|
|
20
|
+
});
|
|
21
|
+
if (!shouldContinue) {
|
|
22
|
+
Log.blue('Update cancelled');
|
|
23
|
+
return;
|
|
64
24
|
}
|
|
65
25
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
26
|
+
else if (refStatus === 'broken') {
|
|
27
|
+
Log.red(`Error: ${fullSkillName} is broken - Neither ref nor commit exist`, {
|
|
28
|
+
prefix: '✗',
|
|
29
|
+
});
|
|
30
|
+
process.exit(1);
|
|
71
31
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
32
|
+
// Step 3a: Update the single skill
|
|
33
|
+
await Skill.update(namespace, skillName);
|
|
34
|
+
Log.green(`Updated ${fullSkillName}`, { prefix: '✓' });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Update all skills
|
|
38
|
+
// Step 2b: Load all skills and categorize by status
|
|
39
|
+
const skills = await LockFile.findAll();
|
|
40
|
+
const skillEntries = Object.entries(skills);
|
|
41
|
+
if (skillEntries.length === 0) {
|
|
42
|
+
Log.blue('No skills to update');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const orphanedSkills = [];
|
|
46
|
+
const brokenSkills = [];
|
|
47
|
+
const updatableSkills = [];
|
|
48
|
+
for (const [name, skill] of skillEntries) {
|
|
49
|
+
if (!skill)
|
|
50
|
+
continue;
|
|
51
|
+
const status = await LockFile.getRefStatus(skill);
|
|
52
|
+
if (status === 'orphaned') {
|
|
53
|
+
orphanedSkills.push(`${name} (orphaned from ${skill.requestedRef})`);
|
|
76
54
|
}
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
Log.blue('No updatable skills.');
|
|
80
|
-
return;
|
|
55
|
+
else if (status === 'broken') {
|
|
56
|
+
brokenSkills.push(`${name} (broken)`);
|
|
81
57
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
message: `Update ${updatableSkills.length} skill(s)?`,
|
|
85
|
-
default: true,
|
|
86
|
-
});
|
|
87
|
-
if (!shouldUpdate) {
|
|
88
|
-
Log.blue('Update cancelled');
|
|
89
|
-
return;
|
|
58
|
+
else {
|
|
59
|
+
updatableSkills.push({ name, namespace: skill.namespace, skillName: skill.skillName });
|
|
90
60
|
}
|
|
61
|
+
}
|
|
62
|
+
// Step 3b: Show summary of skill statuses
|
|
63
|
+
if (orphanedSkills.length > 0) {
|
|
91
64
|
Log.blank();
|
|
92
|
-
Log.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
Log.
|
|
65
|
+
Log.yellow(`Orphaned skills (will preserve current commits):`, { prefix: '⚠' });
|
|
66
|
+
orphanedSkills.forEach((s) => Log.yellow(s, { spacing: 2 }));
|
|
67
|
+
}
|
|
68
|
+
if (brokenSkills.length > 0) {
|
|
69
|
+
Log.blank();
|
|
70
|
+
Log.red(`Broken skills (cannot update):`, { prefix: '✗' });
|
|
71
|
+
brokenSkills.forEach((s) => Log.red(s, { spacing: 2 }));
|
|
72
|
+
}
|
|
73
|
+
if (updatableSkills.length === 0) {
|
|
74
|
+
Log.blank();
|
|
75
|
+
Log.blue('No updatable skills.');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Step 4: Prompt user and update all updatable skills
|
|
79
|
+
const shouldUpdate = await Prompt.confirm({
|
|
80
|
+
message: `Update ${updatableSkills.length} skill(s)?`,
|
|
81
|
+
default: true,
|
|
82
|
+
});
|
|
83
|
+
if (!shouldUpdate) {
|
|
84
|
+
Log.blue('Update cancelled');
|
|
85
|
+
return;
|
|
97
86
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
87
|
+
Log.blank();
|
|
88
|
+
Log.blue(`Updating ${updatableSkills.length} skill(s)...`);
|
|
89
|
+
for (const { namespace, skillName } of updatableSkills) {
|
|
90
|
+
await Skill.update(namespace, skillName);
|
|
102
91
|
}
|
|
92
|
+
Log.green('Updated all skills', { prefix: '✓' });
|
|
103
93
|
};
|
|
104
94
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +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,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../src/schemas/pin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,2CAG1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin.js","sourceRoot":"","sources":["../../src/schemas/pin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;IACrC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qDAAqD,CAAC;IACxE,CAAC,CAAC,SAAS,EAAE;CACd,CAAC,CAAC"}
|