overskill 1.0.3 → 2.0.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 +13 -2
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +8 -35
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/bundle.d.ts.map +1 -1
- package/dist/commands/bundle.js +1 -6
- package/dist/commands/bundle.js.map +1 -1
- package/dist/commands/delete.d.ts +1 -1
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +19 -19
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/edit.js +5 -5
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/feedback.d.ts +3 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +40 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +5 -19
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/info.d.ts.map +1 -1
- package/dist/commands/info.js +10 -39
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +14 -20
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +81 -116
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/open.d.ts +3 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +75 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/publish.d.ts +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js +48 -105
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +1 -13
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/rename.d.ts +3 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +177 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/save.d.ts +3 -0
- package/dist/commands/save.d.ts.map +1 -0
- package/dist/commands/save.js +112 -0
- package/dist/commands/save.js.map +1 -0
- package/dist/commands/search.js +1 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/sync.d.ts +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +29 -63
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +80 -98
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upgrade.d.ts +3 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +98 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +2 -8
- package/dist/commands/validate.js.map +1 -1
- package/dist/index.js +38 -25
- package/dist/index.js.map +1 -1
- package/dist/lib/index-gen.d.ts.map +1 -1
- package/dist/lib/index-gen.js +0 -2
- package/dist/lib/index-gen.js.map +1 -1
- package/dist/lib/local-registry/index.d.ts +3 -5
- package/dist/lib/local-registry/index.d.ts.map +1 -1
- package/dist/lib/local-registry/index.js +2 -5
- package/dist/lib/local-registry/index.js.map +1 -1
- package/dist/lib/local-registry/paths.d.ts +2 -2
- package/dist/lib/local-registry/paths.d.ts.map +1 -1
- package/dist/lib/local-registry/paths.js +4 -4
- package/dist/lib/local-registry/paths.js.map +1 -1
- package/dist/lib/local-registry/skills.d.ts +10 -29
- package/dist/lib/local-registry/skills.d.ts.map +1 -1
- package/dist/lib/local-registry/skills.js +57 -83
- package/dist/lib/local-registry/skills.js.map +1 -1
- package/dist/lib/local-registry/types.d.ts +6 -38
- package/dist/lib/local-registry/types.d.ts.map +1 -1
- package/dist/lib/local-registry/versions.d.ts +6 -57
- package/dist/lib/local-registry/versions.d.ts.map +1 -1
- package/dist/lib/local-registry/versions.js +6 -159
- package/dist/lib/local-registry/versions.js.map +1 -1
- package/dist/lib/lockfile.d.ts +2 -2
- package/dist/lib/lockfile.d.ts.map +1 -1
- package/dist/lib/lockfile.js +5 -10
- package/dist/lib/lockfile.js.map +1 -1
- package/dist/lib/meta-skill.d.ts +1 -1
- package/dist/lib/meta-skill.d.ts.map +1 -1
- package/dist/lib/meta-skill.js +19 -15
- package/dist/lib/meta-skill.js.map +1 -1
- package/dist/types.d.ts +0 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { spawn } from 'child_process';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import * as localRegistry from '../lib/local-registry/index.js';
|
|
5
|
+
import * as auth from '../lib/auth.js';
|
|
6
|
+
import { parseEditorCommand } from '../lib/editor.js';
|
|
7
|
+
export const openCommand = new Command('open')
|
|
8
|
+
.description('Open a skill in your editor (works globally, no project required)')
|
|
9
|
+
.argument('<slug>', 'Skill slug to open')
|
|
10
|
+
.option('-e, --editor <editor>', 'Editor to use')
|
|
11
|
+
.action(async (slug, options) => {
|
|
12
|
+
try {
|
|
13
|
+
// Check if skill exists in local registry
|
|
14
|
+
if (!localRegistry.skillExists(slug)) {
|
|
15
|
+
console.log(chalk.red(`Error: Skill '${slug}' not found in local registry.`));
|
|
16
|
+
console.log('');
|
|
17
|
+
console.log('Available skills:');
|
|
18
|
+
const skills = localRegistry.listSkills();
|
|
19
|
+
if (skills.length === 0) {
|
|
20
|
+
console.log(chalk.yellow(' No skills in local registry.'));
|
|
21
|
+
console.log(` Run ${chalk.cyan('skill new <slug>')} to create one.`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
for (const skill of skills.slice(0, 10)) {
|
|
25
|
+
console.log(` ${chalk.cyan(skill.slug)}`);
|
|
26
|
+
}
|
|
27
|
+
if (skills.length > 10) {
|
|
28
|
+
console.log(chalk.gray(` ... and ${skills.length - 10} more`));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
// Ensure the SKILL.md working copy exists in the registry
|
|
34
|
+
const skillData = localRegistry.getSkill(slug);
|
|
35
|
+
if (!skillData) {
|
|
36
|
+
console.log(chalk.red(`Error: Could not read skill '${slug}' from registry.`));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
// The getSkill call ensures SKILL.md exists via putSkill/migration,
|
|
40
|
+
// but let's also ensure it's written at the registry path
|
|
41
|
+
const skillFilePath = localRegistry.getSkillFilePath(slug);
|
|
42
|
+
// Determine editor
|
|
43
|
+
const editor = options.editor || auth.getEditor();
|
|
44
|
+
console.log(`Opening ${chalk.cyan(skillFilePath)} in ${editor}...`);
|
|
45
|
+
// Open editor
|
|
46
|
+
let command;
|
|
47
|
+
let args;
|
|
48
|
+
try {
|
|
49
|
+
const parsed = parseEditorCommand(editor);
|
|
50
|
+
command = parsed.command;
|
|
51
|
+
args = parsed.args;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
55
|
+
console.log(`Try setting a different editor with ${chalk.cyan('skill config editor <name>')}`);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
const child = spawn(command, [...args, skillFilePath], {
|
|
59
|
+
stdio: 'ignore',
|
|
60
|
+
detached: true,
|
|
61
|
+
});
|
|
62
|
+
// Detach so the CLI doesn't wait for the editor to close
|
|
63
|
+
child.unref();
|
|
64
|
+
child.on('error', (err) => {
|
|
65
|
+
console.error(chalk.red(`Error opening editor: ${err.message}`));
|
|
66
|
+
console.log(`Try setting a different editor with ${chalk.cyan('skill config editor <name>')}`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=open.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmFpC,eAAO,MAAM,cAAc,SAoHvB,CAAC"}
|
package/dist/commands/publish.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { Command } from
|
|
2
|
-
import * as fs from
|
|
3
|
-
import * as
|
|
4
|
-
import * as
|
|
5
|
-
import { spawn } from
|
|
6
|
-
import chalk from
|
|
7
|
-
import ora from
|
|
8
|
-
import * as localRegistry from
|
|
9
|
-
import * as auth from
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import { parseEditorCommand } from '../lib/editor.js';
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as os from "os";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { spawn } from "child_process";
|
|
6
|
+
import chalk from "chalk";
|
|
7
|
+
import ora from "ora";
|
|
8
|
+
import * as localRegistry from "../lib/local-registry/index.js";
|
|
9
|
+
import * as auth from "../lib/auth.js";
|
|
10
|
+
import * as readline from "readline";
|
|
11
|
+
import { parseEditorCommand } from "../lib/editor.js";
|
|
13
12
|
/**
|
|
14
13
|
* Prompt user for input
|
|
15
14
|
*/
|
|
@@ -19,10 +18,10 @@ async function prompt(question, defaultValue) {
|
|
|
19
18
|
output: process.stdout,
|
|
20
19
|
});
|
|
21
20
|
return new Promise((resolve) => {
|
|
22
|
-
const displayDefault = defaultValue ? ` [${defaultValue}]` :
|
|
21
|
+
const displayDefault = defaultValue ? ` [${defaultValue}]` : "";
|
|
23
22
|
rl.question(`${question}${displayDefault}: `, (answer) => {
|
|
24
23
|
rl.close();
|
|
25
|
-
resolve(answer.trim() || defaultValue ||
|
|
24
|
+
resolve(answer.trim() || defaultValue || "");
|
|
26
25
|
});
|
|
27
26
|
});
|
|
28
27
|
}
|
|
@@ -33,7 +32,7 @@ async function openInEditor(content) {
|
|
|
33
32
|
const editor = auth.getEditor();
|
|
34
33
|
const tempFile = path.join(os.tmpdir(), `skill-${Date.now()}.md`);
|
|
35
34
|
// Write initial content to temp file
|
|
36
|
-
fs.writeFileSync(tempFile, content,
|
|
35
|
+
fs.writeFileSync(tempFile, content, "utf-8");
|
|
37
36
|
return new Promise((resolve, reject) => {
|
|
38
37
|
let command;
|
|
39
38
|
let args;
|
|
@@ -47,40 +46,35 @@ async function openInEditor(content) {
|
|
|
47
46
|
reject(error);
|
|
48
47
|
return;
|
|
49
48
|
}
|
|
50
|
-
const child = spawn(command, [...args, tempFile], { stdio:
|
|
51
|
-
child.on(
|
|
49
|
+
const child = spawn(command, [...args, tempFile], { stdio: "inherit" });
|
|
50
|
+
child.on("error", (err) => {
|
|
52
51
|
fs.unlinkSync(tempFile);
|
|
53
|
-
reject(new Error(`Failed to open editor: ${err.message}`));
|
|
52
|
+
reject(new Error(`Failed to open editor. Ensure your editor is properly configured by running ${chalk.cyan("skill config show")} to view your current configuration and ${chalk.cyan("skill config editor <name>")} to set your preferred editor. Error message: ${err.message}`));
|
|
54
53
|
});
|
|
55
|
-
child.on(
|
|
54
|
+
child.on("exit", (code) => {
|
|
56
55
|
if (code !== 0) {
|
|
57
56
|
fs.unlinkSync(tempFile);
|
|
58
57
|
reject(new Error(`Editor exited with code ${code}`));
|
|
59
58
|
return;
|
|
60
59
|
}
|
|
61
60
|
// Read the edited content
|
|
62
|
-
const editedContent = fs.readFileSync(tempFile,
|
|
61
|
+
const editedContent = fs.readFileSync(tempFile, "utf-8");
|
|
63
62
|
fs.unlinkSync(tempFile);
|
|
64
63
|
resolve(editedContent);
|
|
65
64
|
});
|
|
66
65
|
});
|
|
67
66
|
}
|
|
68
|
-
export const publishCommand = new Command(
|
|
69
|
-
.description(
|
|
70
|
-
.argument(
|
|
71
|
-
.option(
|
|
72
|
-
.option(
|
|
73
|
-
.option('--minor', 'Bump minor version (1.0.0 -> 1.1.0)')
|
|
74
|
-
.option('--major', 'Bump major version (1.0.0 -> 2.0.0)')
|
|
75
|
-
.option('-m, --message <message>', 'Changelog message for this version')
|
|
76
|
-
.option('--content <file>', 'Read new content from file')
|
|
77
|
-
.option('--no-editor', 'Skip editor (use current content)')
|
|
67
|
+
export const publishCommand = new Command("publish")
|
|
68
|
+
.description("Update a skill's content in the local registry")
|
|
69
|
+
.argument("<slug>", "Skill slug")
|
|
70
|
+
.option("--content <file>", "Read new content from file")
|
|
71
|
+
.option("--no-editor", "Skip editor (use current content)")
|
|
78
72
|
.action(async (slug, options) => {
|
|
79
73
|
try {
|
|
80
74
|
// Check if skill exists
|
|
81
75
|
if (!localRegistry.skillExists(slug)) {
|
|
82
76
|
console.log(chalk.red(`Error: Skill '${slug}' not found in local registry.`));
|
|
83
|
-
console.log(`Use ${chalk.cyan(`
|
|
77
|
+
console.log(`Use ${chalk.cyan(`skill new ${slug}`)} to create it first.`);
|
|
84
78
|
process.exit(1);
|
|
85
79
|
}
|
|
86
80
|
// Get current skill info
|
|
@@ -89,61 +83,20 @@ export const publishCommand = new Command('publish')
|
|
|
89
83
|
console.log(chalk.red(`Error: Could not read skill '${slug}'.`));
|
|
90
84
|
process.exit(1);
|
|
91
85
|
}
|
|
92
|
-
const
|
|
93
|
-
if (!currentVersion) {
|
|
94
|
-
console.log(chalk.red(`Error: Skill '${slug}' has no versions.`));
|
|
95
|
-
process.exit(1);
|
|
96
|
-
}
|
|
97
|
-
console.log(`Current version: ${chalk.cyan(currentVersion)}`);
|
|
98
|
-
// Determine new version
|
|
99
|
-
let newVersion;
|
|
100
|
-
if (options.version) {
|
|
101
|
-
newVersion = options.version;
|
|
102
|
-
}
|
|
103
|
-
else if (options.patch) {
|
|
104
|
-
newVersion = bumpVersion(currentVersion, 'patch') || '';
|
|
105
|
-
}
|
|
106
|
-
else if (options.minor) {
|
|
107
|
-
newVersion = bumpVersion(currentVersion, 'minor') || '';
|
|
108
|
-
}
|
|
109
|
-
else if (options.major) {
|
|
110
|
-
newVersion = bumpVersion(currentVersion, 'major') || '';
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
// Prompt for version
|
|
114
|
-
const suggestedVersion = bumpVersion(currentVersion, 'patch') || '';
|
|
115
|
-
newVersion = await prompt('New version', suggestedVersion);
|
|
116
|
-
}
|
|
117
|
-
// Validate new version
|
|
118
|
-
if (!isValidVersion(newVersion)) {
|
|
119
|
-
console.log(chalk.red(`Error: Invalid version '${newVersion}'. Use semver format (e.g., 1.0.1).`));
|
|
120
|
-
process.exit(1);
|
|
121
|
-
}
|
|
122
|
-
// Check version is higher
|
|
123
|
-
if (!isGreaterThan(newVersion, currentVersion)) {
|
|
124
|
-
console.log(chalk.red(`Error: New version '${newVersion}' must be higher than current '${currentVersion}'.`));
|
|
125
|
-
process.exit(1);
|
|
126
|
-
}
|
|
127
|
-
// Check if version already exists
|
|
128
|
-
if (localRegistry.versionExists(slug, newVersion)) {
|
|
129
|
-
console.log(chalk.red(`Error: Version '${newVersion}' already exists.`));
|
|
130
|
-
process.exit(1);
|
|
131
|
-
}
|
|
132
|
-
// Get content
|
|
133
|
-
let content;
|
|
134
|
-
// Get current content
|
|
135
|
-
const currentSkill = localRegistry.getLatest(slug);
|
|
86
|
+
const currentSkill = localRegistry.getSkill(slug);
|
|
136
87
|
if (!currentSkill) {
|
|
137
88
|
console.log(chalk.red(`Error: Could not read current content for '${slug}'.`));
|
|
138
89
|
process.exit(1);
|
|
139
90
|
}
|
|
91
|
+
// Get content
|
|
92
|
+
let content;
|
|
140
93
|
if (options.content) {
|
|
141
94
|
// Read from file
|
|
142
95
|
if (!fs.existsSync(options.content)) {
|
|
143
96
|
console.log(chalk.red(`Error: File not found: ${options.content}`));
|
|
144
97
|
process.exit(1);
|
|
145
98
|
}
|
|
146
|
-
content = fs.readFileSync(options.content,
|
|
99
|
+
content = fs.readFileSync(options.content, "utf-8");
|
|
147
100
|
}
|
|
148
101
|
else if (options.editor === false) {
|
|
149
102
|
// Use current content without editing
|
|
@@ -151,31 +104,30 @@ export const publishCommand = new Command('publish')
|
|
|
151
104
|
}
|
|
152
105
|
else {
|
|
153
106
|
// Open editor with current content
|
|
154
|
-
console.log(chalk.gray(
|
|
107
|
+
console.log(chalk.gray("Opening editor with current content..."));
|
|
155
108
|
try {
|
|
156
109
|
content = await openInEditor(currentSkill.content);
|
|
157
110
|
}
|
|
158
111
|
catch (error) {
|
|
159
|
-
console.log(chalk.red(
|
|
112
|
+
console.log(chalk.red("Error:"), error instanceof Error ? error.message : error);
|
|
160
113
|
process.exit(1);
|
|
161
114
|
}
|
|
162
115
|
}
|
|
163
116
|
// Validate content
|
|
164
117
|
if (!content.trim()) {
|
|
165
|
-
console.log(chalk.red(
|
|
118
|
+
console.log(chalk.red("Error: Skill content cannot be empty."));
|
|
166
119
|
process.exit(1);
|
|
167
120
|
}
|
|
168
|
-
//
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
121
|
+
// Check if content actually changed
|
|
122
|
+
if (content === currentSkill.content) {
|
|
123
|
+
console.log(chalk.yellow("No changes detected."));
|
|
124
|
+
return;
|
|
172
125
|
}
|
|
173
|
-
const spinner = ora(`
|
|
126
|
+
const spinner = ora(`Saving ${slug}...`).start();
|
|
174
127
|
try {
|
|
175
128
|
// Save to local registry
|
|
176
|
-
const { sha256 } = localRegistry.
|
|
129
|
+
const { sha256 } = localRegistry.putSkill({
|
|
177
130
|
slug,
|
|
178
|
-
version: newVersion,
|
|
179
131
|
content,
|
|
180
132
|
meta: {
|
|
181
133
|
name: skillInfo.meta.name,
|
|
@@ -183,32 +135,23 @@ export const publishCommand = new Command('publish')
|
|
|
183
135
|
tags: skillInfo.meta.tags,
|
|
184
136
|
compat: skillInfo.meta.compat,
|
|
185
137
|
},
|
|
186
|
-
provenance: {
|
|
187
|
-
kind: 'local',
|
|
188
|
-
source: 'created',
|
|
189
|
-
},
|
|
190
|
-
changelog: changelog || undefined,
|
|
191
138
|
});
|
|
192
|
-
spinner.succeed(`
|
|
193
|
-
console.log(
|
|
194
|
-
console.log(
|
|
195
|
-
console.log(` ${chalk.bold(
|
|
196
|
-
console.log(
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
console.log('');
|
|
201
|
-
console.log('Next steps:');
|
|
202
|
-
console.log(` ${chalk.cyan(`skills sync`)} Update projects using this skill`);
|
|
203
|
-
console.log(` ${chalk.cyan(`skills info ${slug}`)} View all versions`);
|
|
139
|
+
spinner.succeed(`Saved ${chalk.cyan(slug)}`);
|
|
140
|
+
console.log("");
|
|
141
|
+
console.log("Details:");
|
|
142
|
+
console.log(` ${chalk.bold("SHA256:")} ${sha256.substring(0, 16)}...`);
|
|
143
|
+
console.log("");
|
|
144
|
+
console.log("Next steps:");
|
|
145
|
+
console.log(` ${chalk.cyan(`skill sync`)} Update projects using this skill`);
|
|
146
|
+
console.log(` ${chalk.cyan(`skill info ${slug}`)} View skill details`);
|
|
204
147
|
}
|
|
205
148
|
catch (error) {
|
|
206
|
-
spinner.fail(
|
|
149
|
+
spinner.fail("Failed to save");
|
|
207
150
|
throw error;
|
|
208
151
|
}
|
|
209
152
|
}
|
|
210
153
|
catch (error) {
|
|
211
|
-
console.error(chalk.red(
|
|
154
|
+
console.error(chalk.red("Error:"), error instanceof Error ? error.message : error);
|
|
212
155
|
process.exit(1);
|
|
213
156
|
}
|
|
214
157
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,WAAW,SAiJpB,CAAC"}
|
package/dist/commands/push.js
CHANGED
|
@@ -104,21 +104,11 @@ export const pushCommand = new Command('push')
|
|
|
104
104
|
}
|
|
105
105
|
else {
|
|
106
106
|
// Push new version
|
|
107
|
-
const
|
|
108
|
-
const currentVersion = locked?.version || '1.0.0';
|
|
109
|
-
// Determine new version
|
|
110
|
-
let newVersion = options.version;
|
|
111
|
-
if (!newVersion) {
|
|
112
|
-
newVersion = semverLib.autoBump(currentVersion);
|
|
113
|
-
}
|
|
107
|
+
const newVersion = options.version || '1.0.0';
|
|
114
108
|
if (!semverLib.isValidVersion(newVersion)) {
|
|
115
109
|
spinner.fail(`Invalid version: ${newVersion}`);
|
|
116
110
|
continue;
|
|
117
111
|
}
|
|
118
|
-
if (!semverLib.isGreaterThan(newVersion, currentVersion)) {
|
|
119
|
-
spinner.fail(`New version (${newVersion}) must be greater than current (${currentVersion})`);
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
112
|
// Push version
|
|
123
113
|
const result = await api.createVersion(source.registry, skillSlug, {
|
|
124
114
|
version: newVersion,
|
|
@@ -129,8 +119,6 @@ export const pushCommand = new Command('push')
|
|
|
129
119
|
const hash = await fs.computeHash(content);
|
|
130
120
|
lockfile.updateLockedSkill({
|
|
131
121
|
slug: skillSlug,
|
|
132
|
-
registry: source.registry,
|
|
133
|
-
version: newVersion,
|
|
134
122
|
sha256: hash,
|
|
135
123
|
});
|
|
136
124
|
// Clear modified marker
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename.d.ts","sourceRoot":"","sources":["../../src/commands/rename.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsJpC,eAAO,MAAM,aAAa,SA2EtB,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import * as nodeFs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import * as yaml from 'yaml';
|
|
5
|
+
import * as readline from 'readline';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import * as localRegistry from '../lib/local-registry/index.js';
|
|
9
|
+
import * as projectConfig from '../lib/config.js';
|
|
10
|
+
import * as projectFs from '../lib/fs.js';
|
|
11
|
+
import * as indexGen from '../lib/index-gen.js';
|
|
12
|
+
function createQuestionInterface() {
|
|
13
|
+
return readline.createInterface({
|
|
14
|
+
input: process.stdin,
|
|
15
|
+
output: process.stdout
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async function promptForNewName(params) {
|
|
19
|
+
const { currentName } = params;
|
|
20
|
+
const rl = createQuestionInterface();
|
|
21
|
+
const question = (prompt) => new Promise(resolve => {
|
|
22
|
+
rl.question(prompt, answer => resolve(answer));
|
|
23
|
+
});
|
|
24
|
+
const answer = await question(`New name [${currentName}]: `);
|
|
25
|
+
rl.close();
|
|
26
|
+
const trimmed = answer.trim();
|
|
27
|
+
return trimmed || currentName;
|
|
28
|
+
}
|
|
29
|
+
function slugFromName(params) {
|
|
30
|
+
const { name } = params;
|
|
31
|
+
const normalized = name.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-');
|
|
32
|
+
return normalized.replace(/^-+|-+$/g, '');
|
|
33
|
+
}
|
|
34
|
+
function validateSlug(params) {
|
|
35
|
+
const { slug } = params;
|
|
36
|
+
if (!slug) {
|
|
37
|
+
throw new Error('Slug cannot be empty after normalization.');
|
|
38
|
+
}
|
|
39
|
+
if (!/^[a-z0-9-]+$/.test(slug)) {
|
|
40
|
+
throw new Error("Slug must be lowercase alphanumeric with hyphens only (generated from the new name).");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function renameInRegistry(params) {
|
|
44
|
+
const { oldSlug, newSlug, newName } = params;
|
|
45
|
+
const existingMeta = localRegistry.readMeta(oldSlug);
|
|
46
|
+
if (!existingMeta) {
|
|
47
|
+
throw new Error(`Could not read metadata for '${oldSlug}' in local registry.`);
|
|
48
|
+
}
|
|
49
|
+
// Rename the skill directory if the slug changed
|
|
50
|
+
if (oldSlug !== newSlug) {
|
|
51
|
+
const oldDir = localRegistry.getSkillDir(oldSlug);
|
|
52
|
+
const newDir = localRegistry.getSkillDir(newSlug);
|
|
53
|
+
if (!nodeFs.existsSync(oldDir)) {
|
|
54
|
+
throw new Error(`Skill directory not found in registry: ${oldDir}`);
|
|
55
|
+
}
|
|
56
|
+
if (nodeFs.existsSync(newDir)) {
|
|
57
|
+
throw new Error(`Target slug '${newSlug}' already exists in registry at ${newDir}. Choose a different name.`);
|
|
58
|
+
}
|
|
59
|
+
nodeFs.renameSync(oldDir, newDir);
|
|
60
|
+
}
|
|
61
|
+
const updatedMeta = {
|
|
62
|
+
...existingMeta,
|
|
63
|
+
slug: newSlug,
|
|
64
|
+
name: newName
|
|
65
|
+
};
|
|
66
|
+
localRegistry.writeMeta(newSlug, updatedMeta);
|
|
67
|
+
}
|
|
68
|
+
function renameInProject(params) {
|
|
69
|
+
const { oldSlug, newSlug, newName } = params;
|
|
70
|
+
if (!projectConfig.configExists()) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const skillsConfig = projectConfig.readConfig();
|
|
74
|
+
let configChanged = false;
|
|
75
|
+
const updatedSkills = skillsConfig.skills.map(skill => {
|
|
76
|
+
if (skill.slug !== oldSlug) {
|
|
77
|
+
return skill;
|
|
78
|
+
}
|
|
79
|
+
configChanged = true;
|
|
80
|
+
return {
|
|
81
|
+
...skill,
|
|
82
|
+
slug: newSlug
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
if (configChanged) {
|
|
86
|
+
projectConfig.writeConfig({
|
|
87
|
+
...skillsConfig,
|
|
88
|
+
skills: updatedSkills
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Rename installed skill directory in the project, if present
|
|
92
|
+
const projectOldDir = projectFs.getSkillDir(oldSlug);
|
|
93
|
+
const projectNewDir = projectFs.getSkillDir(newSlug);
|
|
94
|
+
if (nodeFs.existsSync(projectOldDir)) {
|
|
95
|
+
if (nodeFs.existsSync(projectNewDir)) {
|
|
96
|
+
throw new Error(`Cannot rename project skill directory: target '${newSlug}' already exists at ${projectNewDir}.`);
|
|
97
|
+
}
|
|
98
|
+
nodeFs.renameSync(projectOldDir, projectNewDir);
|
|
99
|
+
// Update project meta.yaml slug and name
|
|
100
|
+
const projectMeta = projectFs.readSkillMeta(newSlug);
|
|
101
|
+
if (projectMeta) {
|
|
102
|
+
const updatedProjectMeta = {
|
|
103
|
+
...projectMeta,
|
|
104
|
+
slug: newSlug,
|
|
105
|
+
name: newName
|
|
106
|
+
};
|
|
107
|
+
const metaPath = path.join(projectFs.getSkillDir(newSlug), 'meta.yaml');
|
|
108
|
+
const content = yaml.stringify(updatedProjectMeta, { lineWidth: 0 });
|
|
109
|
+
nodeFs.writeFileSync(metaPath, content, 'utf-8');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Regenerate SKILLS_INDEX.md if we are in a project
|
|
113
|
+
indexGen.regenerateIndex();
|
|
114
|
+
}
|
|
115
|
+
export const renameCommand = new Command('rename')
|
|
116
|
+
.description('Rename a skill (updates slug and display name)')
|
|
117
|
+
.argument('<slug>', 'Current skill slug')
|
|
118
|
+
.action(async (slug) => {
|
|
119
|
+
try {
|
|
120
|
+
if (!localRegistry.skillExists(slug)) {
|
|
121
|
+
console.log(chalk.red(`Error: Skill '${slug}' not found in local registry.`));
|
|
122
|
+
console.log('');
|
|
123
|
+
console.log('To create this skill:');
|
|
124
|
+
console.log(` ${chalk.cyan(`skill new ${slug}`)}`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
const skillInfo = localRegistry.getSkillInfo(slug);
|
|
128
|
+
if (!skillInfo) {
|
|
129
|
+
console.log(chalk.red(`Error: Could not read skill '${slug}' from local registry.`));
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
const currentName = skillInfo.meta.name || slug;
|
|
133
|
+
console.log('');
|
|
134
|
+
console.log(chalk.bold('Rename skill'));
|
|
135
|
+
console.log(` ${chalk.bold('Current slug:')} ${chalk.cyan(slug)}`);
|
|
136
|
+
console.log(` ${chalk.bold('Current name:')} ${currentName}`);
|
|
137
|
+
console.log('');
|
|
138
|
+
const newName = await promptForNewName({ currentName });
|
|
139
|
+
if (newName === currentName) {
|
|
140
|
+
console.log(chalk.yellow('Name unchanged. Nothing to do.'));
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const newSlug = slugFromName({ name: newName });
|
|
144
|
+
try {
|
|
145
|
+
validateSlug({ slug: newSlug });
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.log(chalk.red(`Error: Could not derive a valid slug from '${newName}'. ` +
|
|
149
|
+
(error instanceof Error ? error.message : String(error))));
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
if (newSlug !== slug && localRegistry.skillExists(newSlug)) {
|
|
153
|
+
console.log(chalk.red(`Error: A skill with slug '${newSlug}' already exists in the local registry. ` +
|
|
154
|
+
'Choose a different name.'));
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
const spinner = ora('Renaming skill...').start();
|
|
158
|
+
try {
|
|
159
|
+
renameInRegistry({ oldSlug: slug, newSlug, newName });
|
|
160
|
+
renameInProject({ oldSlug: slug, newSlug, newName });
|
|
161
|
+
spinner.succeed(`Renamed skill to ${chalk.cyan(newSlug)}`);
|
|
162
|
+
console.log('');
|
|
163
|
+
console.log('Updated details:');
|
|
164
|
+
console.log(` ${chalk.bold('Slug:')} ${chalk.cyan(newSlug)}`);
|
|
165
|
+
console.log(` ${chalk.bold('Name:')} ${newName}`);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
spinner.fail('Failed to rename skill');
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
|
|
174
|
+
process.exit(1);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=rename.js.map
|