reskill 1.12.0 → 1.13.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 +17 -1
- package/README.zh-CN.md +17 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/index.js +153 -136
- package/dist/core/registry-resolver.d.ts +2 -1
- package/dist/core/registry-resolver.d.ts.map +1 -1
- package/dist/core/skill-manager.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -75,7 +75,8 @@ npx reskill@latest <command> # Or use npx directly
|
|
|
75
75
|
| `-f, --force` | `install` | Force reinstall even if already installed |
|
|
76
76
|
| `-s, --skill <names...>` | `install` | Select specific skill(s) by name from a multi-skill repo |
|
|
77
77
|
| `--list` | `install` | List available skills in the repository without installing |
|
|
78
|
-
| `-r, --registry <url>` | `install`
|
|
78
|
+
| `-r, --registry <url>` | `install`, `publish` | Registry URL override for registry-based installs |
|
|
79
|
+
| `-t, --token <token>` | `install` | Auth token for registry API requests (for CI/CD) |
|
|
79
80
|
| `-j, --json` | `list`, `info`, `outdated`, `doctor` | Output as JSON |
|
|
80
81
|
|
|
81
82
|
Run `reskill <command> --help` for complete options and detailed usage.
|
|
@@ -223,6 +224,21 @@ reskill publish
|
|
|
223
224
|
|
|
224
225
|
For detailed publishing guidelines, see the [CLI Specification](./docs/cli-spec.md#publish).
|
|
225
226
|
|
|
227
|
+
### Installing Private Skills
|
|
228
|
+
|
|
229
|
+
After logging in with `reskill login`, the token stored in `~/.reskillrc` is automatically used during `reskill install` to access private skills:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# Token is automatically read from ~/.reskillrc (requires --registry to match)
|
|
233
|
+
reskill install @scope/private-skill --registry https://your-registry.com
|
|
234
|
+
|
|
235
|
+
# Or use RESKILL_TOKEN env var (works without --registry)
|
|
236
|
+
RESKILL_TOKEN=<token> reskill install @scope/private-skill
|
|
237
|
+
|
|
238
|
+
# Or pass token directly (for CI/CD)
|
|
239
|
+
reskill install @scope/private-skill --registry https://your-registry.com --token <token>
|
|
240
|
+
```
|
|
241
|
+
|
|
226
242
|
## Environment Variables
|
|
227
243
|
|
|
228
244
|
| Variable | Description | Default |
|
package/README.zh-CN.md
CHANGED
|
@@ -75,7 +75,8 @@ npx reskill@latest <command> # 或直接使用 npx
|
|
|
75
75
|
| `-f, --force` | `install` | 强制重新安装 |
|
|
76
76
|
| `-s, --skill <names...>` | `install` | 从多 skill 仓库中选择指定 skill |
|
|
77
77
|
| `--list` | `install` | 列出仓库中可用的 skills(不安装) |
|
|
78
|
-
| `-r, --registry <url>` | `install`
|
|
78
|
+
| `-r, --registry <url>` | `install`, `publish` | 覆盖 registry URL(用于 registry 安装) |
|
|
79
|
+
| `-t, --token <token>` | `install` | 认证令牌(用于 CI/CD 访问私有 skill) |
|
|
79
80
|
| `-j, --json` | `list`, `info`, `outdated`, `doctor` | JSON 格式输出 |
|
|
80
81
|
|
|
81
82
|
运行 `reskill <command> --help` 查看完整选项和详细用法。
|
|
@@ -220,6 +221,21 @@ reskill publish
|
|
|
220
221
|
|
|
221
222
|
详细的发布指南请参考 [CLI 规范](./docs/cli-spec.md#publish)。
|
|
222
223
|
|
|
224
|
+
### 安装私有 Skills
|
|
225
|
+
|
|
226
|
+
通过 `reskill login` 登录后,`reskill install` 会自动使用 `~/.reskillrc` 中的 token 访问私有 skill:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# 自动从 ~/.reskillrc 读取 token(需配合 --registry 指定 registry)
|
|
230
|
+
reskill install @scope/private-skill --registry https://your-registry.com
|
|
231
|
+
|
|
232
|
+
# 或通过 RESKILL_TOKEN 环境变量(无需 --registry)
|
|
233
|
+
RESKILL_TOKEN=<token> reskill install @scope/private-skill
|
|
234
|
+
|
|
235
|
+
# 或直接传入 token(用于 CI/CD)
|
|
236
|
+
reskill install @scope/private-skill --registry https://your-registry.com --token <token>
|
|
237
|
+
```
|
|
238
|
+
|
|
223
239
|
## 环境变量
|
|
224
240
|
|
|
225
241
|
| 变量 | 说明 | 默认值 |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6yBpC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,SA8GvB,CAAC;AAEL,eAAe,cAAc,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -3710,13 +3710,14 @@ class RegistryResolver {
|
|
|
3710
3710
|
*
|
|
3711
3711
|
* @param ref - Skill reference (e.g., "@kanyun/planning-with-files@2.4.5" or "my-skill@latest")
|
|
3712
3712
|
* @param overrideRegistryUrl - Optional registry URL override (bypasses scope-based lookup)
|
|
3713
|
+
* @param token - Optional auth token for private skill access
|
|
3713
3714
|
* @returns Resolved skill information including downloaded tarball
|
|
3714
3715
|
*
|
|
3715
3716
|
* @example
|
|
3716
3717
|
* const result = await resolver.resolve('@kanyun/planning-with-files@2.4.5');
|
|
3717
3718
|
* console.log(result.shortName); // 'planning-with-files'
|
|
3718
3719
|
* console.log(result.version); // '2.4.5'
|
|
3719
|
-
*/ async resolve(ref, overrideRegistryUrl) {
|
|
3720
|
+
*/ async resolve(ref, overrideRegistryUrl, token) {
|
|
3720
3721
|
// 1. Parse skill identifier
|
|
3721
3722
|
const parsed = parseSkillIdentifier(ref);
|
|
3722
3723
|
const shortName = getShortName(parsed.fullName);
|
|
@@ -3724,7 +3725,8 @@ class RegistryResolver {
|
|
|
3724
3725
|
const registryUrl = overrideRegistryUrl || getRegistryUrl(parsed.scope);
|
|
3725
3726
|
// 3. Create client and resolve version
|
|
3726
3727
|
const client = new RegistryClient({
|
|
3727
|
-
registry: registryUrl
|
|
3728
|
+
registry: registryUrl,
|
|
3729
|
+
token
|
|
3728
3730
|
});
|
|
3729
3731
|
const version = await client.resolveVersion(parsed.fullName, parsed.version);
|
|
3730
3732
|
// 4. Download tarball
|
|
@@ -4134,6 +4136,9 @@ class RegistryResolver {
|
|
|
4134
4136
|
const locked = this.lockManager.get(parsed.name);
|
|
4135
4137
|
if (locked?.registry) return locked.registry;
|
|
4136
4138
|
// Slow path: probe configured registries (skip git hosts)
|
|
4139
|
+
// Note: token is intentionally NOT passed during probe to avoid leaking
|
|
4140
|
+
// credentials to unrelated registries. Token is only used after the
|
|
4141
|
+
// target registry is determined.
|
|
4137
4142
|
const registries = this.config.getRegistries();
|
|
4138
4143
|
for (const [name, url] of Object.entries(registries))if (!this.isGitHostRegistry(name, url)) try {
|
|
4139
4144
|
const client = new RegistryClient({
|
|
@@ -4601,7 +4606,8 @@ class RegistryResolver {
|
|
|
4601
4606
|
const parsed = parseSkillIdentifier(ref);
|
|
4602
4607
|
const registryUrl = await this.resolveRegistryUrl(ref, options.registry);
|
|
4603
4608
|
const client = new RegistryClient({
|
|
4604
|
-
registry: registryUrl
|
|
4609
|
+
registry: registryUrl,
|
|
4610
|
+
token: options.token
|
|
4605
4611
|
});
|
|
4606
4612
|
// Query skill info to determine source_type
|
|
4607
4613
|
let skillInfo;
|
|
@@ -4622,7 +4628,7 @@ class RegistryResolver {
|
|
|
4622
4628
|
});
|
|
4623
4629
|
// 1. Resolve registry skill (pass pre-resolved registryUrl)
|
|
4624
4630
|
logger_logger["package"](`Resolving ${ref} from registry...`);
|
|
4625
|
-
const resolved = await this.registryResolver.resolve(ref, registryUrl);
|
|
4631
|
+
const resolved = await this.registryResolver.resolve(ref, registryUrl, options.token);
|
|
4626
4632
|
const { shortName, version, registryUrl: resolvedRegistryUrl, tarball, parsed: resolvedParsed } = resolved;
|
|
4627
4633
|
// 2. Check if already installed (skip if --force)
|
|
4628
4634
|
const skillPath = this.getSkillPath(shortName);
|
|
@@ -4832,7 +4838,8 @@ class RegistryResolver {
|
|
|
4832
4838
|
const version = 'latest';
|
|
4833
4839
|
// Download tarball via RegistryClient (handles auth + 302 redirect to signed URL)
|
|
4834
4840
|
const client = new RegistryClient({
|
|
4835
|
-
registry: registryUrl
|
|
4841
|
+
registry: registryUrl,
|
|
4842
|
+
token: options.token
|
|
4836
4843
|
});
|
|
4837
4844
|
const { tarball } = await client.downloadSkill(parsed.fullName, version);
|
|
4838
4845
|
logger_logger["package"](`Installing ${shortName} from ${registryUrl} to ${targetAgents.length} agent(s)...`);
|
|
@@ -6136,6 +6143,133 @@ const DEFAULT_INSTALL_DIR = '.skills';
|
|
|
6136
6143
|
// Display summary (use options.installDir directly since we just set it)
|
|
6137
6144
|
displayConfigSummary(options.installDir);
|
|
6138
6145
|
});
|
|
6146
|
+
/**
|
|
6147
|
+
* AuthManager - Handle authentication token management
|
|
6148
|
+
*
|
|
6149
|
+
* Manages tokens for registry authentication.
|
|
6150
|
+
* Tokens are stored in ~/.reskillrc or via RESKILL_TOKEN environment variable.
|
|
6151
|
+
*/ // ============================================================================
|
|
6152
|
+
// Constants
|
|
6153
|
+
// ============================================================================
|
|
6154
|
+
const CONFIG_FILE_NAME = '.reskillrc';
|
|
6155
|
+
// ============================================================================
|
|
6156
|
+
// AuthManager Class
|
|
6157
|
+
// ============================================================================
|
|
6158
|
+
class AuthManager {
|
|
6159
|
+
configPath;
|
|
6160
|
+
constructor(){
|
|
6161
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
6162
|
+
this.configPath = __WEBPACK_EXTERNAL_MODULE_node_path__.join(home, CONFIG_FILE_NAME);
|
|
6163
|
+
}
|
|
6164
|
+
/**
|
|
6165
|
+
* Get the default registry URL from environment variable
|
|
6166
|
+
*
|
|
6167
|
+
* Returns undefined if no registry is configured - there is no hardcoded default
|
|
6168
|
+
* to prevent accidental publishing to unintended registries.
|
|
6169
|
+
*/ getDefaultRegistry() {
|
|
6170
|
+
return process.env.RESKILL_REGISTRY;
|
|
6171
|
+
}
|
|
6172
|
+
/**
|
|
6173
|
+
* Get path to config file
|
|
6174
|
+
*/ getConfigPath() {
|
|
6175
|
+
return this.configPath;
|
|
6176
|
+
}
|
|
6177
|
+
/**
|
|
6178
|
+
* Get token for a registry
|
|
6179
|
+
*
|
|
6180
|
+
* Priority:
|
|
6181
|
+
* 1. RESKILL_TOKEN environment variable
|
|
6182
|
+
* 2. Token from ~/.reskillrc for the specified registry
|
|
6183
|
+
*/ getToken(registry) {
|
|
6184
|
+
// Check environment variable first
|
|
6185
|
+
const envToken = process.env.RESKILL_TOKEN;
|
|
6186
|
+
if (envToken) return envToken;
|
|
6187
|
+
// Read from config file
|
|
6188
|
+
const config = this.readConfig();
|
|
6189
|
+
if (!config?.registries) return;
|
|
6190
|
+
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6191
|
+
if (!targetRegistry) return;
|
|
6192
|
+
const auth = config.registries[targetRegistry];
|
|
6193
|
+
return auth?.token;
|
|
6194
|
+
}
|
|
6195
|
+
/**
|
|
6196
|
+
* Check if token exists for a registry
|
|
6197
|
+
*/ hasToken(registry) {
|
|
6198
|
+
return void 0 !== this.getToken(registry);
|
|
6199
|
+
}
|
|
6200
|
+
/**
|
|
6201
|
+
* Get email for a registry
|
|
6202
|
+
*/ getEmail(registry) {
|
|
6203
|
+
const config = this.readConfig();
|
|
6204
|
+
if (!config?.registries) return;
|
|
6205
|
+
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6206
|
+
if (!targetRegistry) return;
|
|
6207
|
+
const auth = config.registries[targetRegistry];
|
|
6208
|
+
return auth?.email;
|
|
6209
|
+
}
|
|
6210
|
+
/**
|
|
6211
|
+
* Get handle for a registry
|
|
6212
|
+
*/ getHandle(registry) {
|
|
6213
|
+
const config = this.readConfig();
|
|
6214
|
+
if (!config?.registries) return;
|
|
6215
|
+
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6216
|
+
if (!targetRegistry) return;
|
|
6217
|
+
const auth = config.registries[targetRegistry];
|
|
6218
|
+
return auth?.handle;
|
|
6219
|
+
}
|
|
6220
|
+
/**
|
|
6221
|
+
* Set token for a registry
|
|
6222
|
+
*
|
|
6223
|
+
* Note: When no registry is specified and RESKILL_REGISTRY env var is not set,
|
|
6224
|
+
* this method will throw an error. The calling code should ensure a registry
|
|
6225
|
+
* is always provided (either explicitly or via environment variable).
|
|
6226
|
+
*/ setToken(token, registry, email, handle) {
|
|
6227
|
+
const config = this.readConfig() || {};
|
|
6228
|
+
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6229
|
+
if (!targetRegistry) throw new Error('No registry specified. Set RESKILL_REGISTRY environment variable or provide registry explicitly.');
|
|
6230
|
+
if (!config.registries) config.registries = {};
|
|
6231
|
+
config.registries[targetRegistry] = {
|
|
6232
|
+
token,
|
|
6233
|
+
...email && {
|
|
6234
|
+
email
|
|
6235
|
+
},
|
|
6236
|
+
...handle && {
|
|
6237
|
+
handle
|
|
6238
|
+
}
|
|
6239
|
+
};
|
|
6240
|
+
this.writeConfig(config);
|
|
6241
|
+
}
|
|
6242
|
+
/**
|
|
6243
|
+
* Remove token for a registry
|
|
6244
|
+
*/ removeToken(registry) {
|
|
6245
|
+
const config = this.readConfig();
|
|
6246
|
+
if (!config?.registries) return;
|
|
6247
|
+
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6248
|
+
if (!targetRegistry) return;
|
|
6249
|
+
delete config.registries[targetRegistry];
|
|
6250
|
+
this.writeConfig(config);
|
|
6251
|
+
}
|
|
6252
|
+
/**
|
|
6253
|
+
* Read config file
|
|
6254
|
+
*/ readConfig() {
|
|
6255
|
+
try {
|
|
6256
|
+
if (!external_node_fs_.existsSync(this.configPath)) return null;
|
|
6257
|
+
const content = external_node_fs_.readFileSync(this.configPath, 'utf-8');
|
|
6258
|
+
if (!content.trim()) return null;
|
|
6259
|
+
return JSON.parse(content);
|
|
6260
|
+
} catch {
|
|
6261
|
+
return null;
|
|
6262
|
+
}
|
|
6263
|
+
}
|
|
6264
|
+
/**
|
|
6265
|
+
* Write config file
|
|
6266
|
+
*/ writeConfig(config) {
|
|
6267
|
+
const content = JSON.stringify(config, null, 2);
|
|
6268
|
+
external_node_fs_.writeFileSync(this.configPath, content, {
|
|
6269
|
+
mode: 384
|
|
6270
|
+
});
|
|
6271
|
+
}
|
|
6272
|
+
}
|
|
6139
6273
|
// ============================================================================
|
|
6140
6274
|
// Utility Functions
|
|
6141
6275
|
// ============================================================================
|
|
@@ -6381,7 +6515,8 @@ const DEFAULT_INSTALL_DIR = '.skills';
|
|
|
6381
6515
|
force: options.force,
|
|
6382
6516
|
save: false,
|
|
6383
6517
|
mode: installMode,
|
|
6384
|
-
registry: options.registry
|
|
6518
|
+
registry: options.registry,
|
|
6519
|
+
token: options.token
|
|
6385
6520
|
});
|
|
6386
6521
|
const successCount = Array.from(results.values()).filter((r)=>r.success).length;
|
|
6387
6522
|
totalInstalled += successCount;
|
|
@@ -6431,7 +6566,8 @@ const DEFAULT_INSTALL_DIR = '.skills';
|
|
|
6431
6566
|
force: options.force,
|
|
6432
6567
|
save: false !== options.save && !installGlobally,
|
|
6433
6568
|
mode: installMode,
|
|
6434
|
-
registry: options.registry
|
|
6569
|
+
registry: options.registry,
|
|
6570
|
+
token: options.token
|
|
6435
6571
|
});
|
|
6436
6572
|
spinner.stop('Installation complete');
|
|
6437
6573
|
// Process and display results
|
|
@@ -6495,7 +6631,8 @@ const DEFAULT_INSTALL_DIR = '.skills';
|
|
|
6495
6631
|
force: ctx.options.force,
|
|
6496
6632
|
save: false !== ctx.options.save && !installGlobally,
|
|
6497
6633
|
mode: installMode,
|
|
6498
|
-
registry: ctx.options.registry
|
|
6634
|
+
registry: ctx.options.registry,
|
|
6635
|
+
token: ctx.options.token
|
|
6499
6636
|
});
|
|
6500
6637
|
spinner.stop('Installation complete');
|
|
6501
6638
|
// listOnly is always false here (the listOnly path returns early above)
|
|
@@ -6555,6 +6692,7 @@ const DEFAULT_INSTALL_DIR = '.skills';
|
|
|
6555
6692
|
force: options.force,
|
|
6556
6693
|
save: false !== options.save && !installGlobally,
|
|
6557
6694
|
registry: options.registry,
|
|
6695
|
+
token: options.token,
|
|
6558
6696
|
mode: installMode
|
|
6559
6697
|
});
|
|
6560
6698
|
const successful = Array.from(results.values()).filter((r)=>r.success);
|
|
@@ -6681,12 +6819,18 @@ const DEFAULT_INSTALL_DIR = '.skills';
|
|
|
6681
6819
|
* Behavior:
|
|
6682
6820
|
* - Single skill install: Prompts for agents/mode (stored config as defaults)
|
|
6683
6821
|
* - Reinstall all (no args): Uses stored config directly, no confirmation
|
|
6684
|
-
*/ const installCommand = new __WEBPACK_EXTERNAL_MODULE_commander__.Command('install').alias('i').description('Install one or more skills, or all skills from skills.json').argument('[skills...]', 'Skill references (e.g., github:user/skill@v1.0.0 or git@github.com:user/repo.git)').option('-f, --force', 'Force reinstall even if already installed').option('-g, --global', 'Install globally to user home directory').option('--no-save', 'Do not save to skills.json').option('-a, --agent <agents...>', 'Specify target agents (e.g., cursor, claude-code)').option('--mode <mode>', 'Installation mode: symlink or copy').option('-y, --yes', 'Skip confirmation prompts').option('--all', 'Install to all agents (implies -y -g)').option('-s, --skill <names...>', 'Select specific skill(s) by name from a multi-skill repository').option('--list', 'List available skills in the repository without installing').option('-r, --registry <url>', 'Registry URL override for registry-based installs').action(async (skills, options)=>{
|
|
6822
|
+
*/ const installCommand = new __WEBPACK_EXTERNAL_MODULE_commander__.Command('install').alias('i').description('Install one or more skills, or all skills from skills.json').argument('[skills...]', 'Skill references (e.g., github:user/skill@v1.0.0 or git@github.com:user/repo.git)').option('-f, --force', 'Force reinstall even if already installed').option('-g, --global', 'Install globally to user home directory').option('--no-save', 'Do not save to skills.json').option('-a, --agent <agents...>', 'Specify target agents (e.g., cursor, claude-code)').option('--mode <mode>', 'Installation mode: symlink or copy').option('-y, --yes', 'Skip confirmation prompts').option('--all', 'Install to all agents (implies -y -g)').option('-s, --skill <names...>', 'Select specific skill(s) by name from a multi-skill repository').option('--list', 'List available skills in the repository without installing').option('-r, --registry <url>', 'Registry URL override for registry-based installs').option('-t, --token <token>', 'Auth token for registry API requests (for CI/CD)').action(async (skills, options)=>{
|
|
6685
6823
|
// Handle --all flag implications
|
|
6686
6824
|
if (options.all) {
|
|
6687
6825
|
options.yes = true;
|
|
6688
6826
|
options.global = true;
|
|
6689
6827
|
}
|
|
6828
|
+
// Resolve auth token: --token flag > RESKILL_TOKEN env > ~/.reskillrc
|
|
6829
|
+
if (!options.token) {
|
|
6830
|
+
const authManager = new AuthManager();
|
|
6831
|
+
const token = authManager.getToken(options.registry);
|
|
6832
|
+
if (token) options.token = token;
|
|
6833
|
+
}
|
|
6690
6834
|
// Create execution context
|
|
6691
6835
|
const ctx = createInstallContext(skills, options);
|
|
6692
6836
|
// Print banner
|
|
@@ -6769,133 +6913,6 @@ const DEFAULT_INSTALL_DIR = '.skills';
|
|
|
6769
6913
|
logger_logger.newline();
|
|
6770
6914
|
logger_logger.log(`Total: ${skills.length} skill(s)`);
|
|
6771
6915
|
});
|
|
6772
|
-
/**
|
|
6773
|
-
* AuthManager - Handle authentication token management
|
|
6774
|
-
*
|
|
6775
|
-
* Manages tokens for registry authentication.
|
|
6776
|
-
* Tokens are stored in ~/.reskillrc or via RESKILL_TOKEN environment variable.
|
|
6777
|
-
*/ // ============================================================================
|
|
6778
|
-
// Constants
|
|
6779
|
-
// ============================================================================
|
|
6780
|
-
const CONFIG_FILE_NAME = '.reskillrc';
|
|
6781
|
-
// ============================================================================
|
|
6782
|
-
// AuthManager Class
|
|
6783
|
-
// ============================================================================
|
|
6784
|
-
class AuthManager {
|
|
6785
|
-
configPath;
|
|
6786
|
-
constructor(){
|
|
6787
|
-
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
6788
|
-
this.configPath = __WEBPACK_EXTERNAL_MODULE_node_path__.join(home, CONFIG_FILE_NAME);
|
|
6789
|
-
}
|
|
6790
|
-
/**
|
|
6791
|
-
* Get the default registry URL from environment variable
|
|
6792
|
-
*
|
|
6793
|
-
* Returns undefined if no registry is configured - there is no hardcoded default
|
|
6794
|
-
* to prevent accidental publishing to unintended registries.
|
|
6795
|
-
*/ getDefaultRegistry() {
|
|
6796
|
-
return process.env.RESKILL_REGISTRY;
|
|
6797
|
-
}
|
|
6798
|
-
/**
|
|
6799
|
-
* Get path to config file
|
|
6800
|
-
*/ getConfigPath() {
|
|
6801
|
-
return this.configPath;
|
|
6802
|
-
}
|
|
6803
|
-
/**
|
|
6804
|
-
* Get token for a registry
|
|
6805
|
-
*
|
|
6806
|
-
* Priority:
|
|
6807
|
-
* 1. RESKILL_TOKEN environment variable
|
|
6808
|
-
* 2. Token from ~/.reskillrc for the specified registry
|
|
6809
|
-
*/ getToken(registry) {
|
|
6810
|
-
// Check environment variable first
|
|
6811
|
-
const envToken = process.env.RESKILL_TOKEN;
|
|
6812
|
-
if (envToken) return envToken;
|
|
6813
|
-
// Read from config file
|
|
6814
|
-
const config = this.readConfig();
|
|
6815
|
-
if (!config?.registries) return;
|
|
6816
|
-
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6817
|
-
if (!targetRegistry) return;
|
|
6818
|
-
const auth = config.registries[targetRegistry];
|
|
6819
|
-
return auth?.token;
|
|
6820
|
-
}
|
|
6821
|
-
/**
|
|
6822
|
-
* Check if token exists for a registry
|
|
6823
|
-
*/ hasToken(registry) {
|
|
6824
|
-
return void 0 !== this.getToken(registry);
|
|
6825
|
-
}
|
|
6826
|
-
/**
|
|
6827
|
-
* Get email for a registry
|
|
6828
|
-
*/ getEmail(registry) {
|
|
6829
|
-
const config = this.readConfig();
|
|
6830
|
-
if (!config?.registries) return;
|
|
6831
|
-
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6832
|
-
if (!targetRegistry) return;
|
|
6833
|
-
const auth = config.registries[targetRegistry];
|
|
6834
|
-
return auth?.email;
|
|
6835
|
-
}
|
|
6836
|
-
/**
|
|
6837
|
-
* Get handle for a registry
|
|
6838
|
-
*/ getHandle(registry) {
|
|
6839
|
-
const config = this.readConfig();
|
|
6840
|
-
if (!config?.registries) return;
|
|
6841
|
-
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6842
|
-
if (!targetRegistry) return;
|
|
6843
|
-
const auth = config.registries[targetRegistry];
|
|
6844
|
-
return auth?.handle;
|
|
6845
|
-
}
|
|
6846
|
-
/**
|
|
6847
|
-
* Set token for a registry
|
|
6848
|
-
*
|
|
6849
|
-
* Note: When no registry is specified and RESKILL_REGISTRY env var is not set,
|
|
6850
|
-
* this method will throw an error. The calling code should ensure a registry
|
|
6851
|
-
* is always provided (either explicitly or via environment variable).
|
|
6852
|
-
*/ setToken(token, registry, email, handle) {
|
|
6853
|
-
const config = this.readConfig() || {};
|
|
6854
|
-
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6855
|
-
if (!targetRegistry) throw new Error('No registry specified. Set RESKILL_REGISTRY environment variable or provide registry explicitly.');
|
|
6856
|
-
if (!config.registries) config.registries = {};
|
|
6857
|
-
config.registries[targetRegistry] = {
|
|
6858
|
-
token,
|
|
6859
|
-
...email && {
|
|
6860
|
-
email
|
|
6861
|
-
},
|
|
6862
|
-
...handle && {
|
|
6863
|
-
handle
|
|
6864
|
-
}
|
|
6865
|
-
};
|
|
6866
|
-
this.writeConfig(config);
|
|
6867
|
-
}
|
|
6868
|
-
/**
|
|
6869
|
-
* Remove token for a registry
|
|
6870
|
-
*/ removeToken(registry) {
|
|
6871
|
-
const config = this.readConfig();
|
|
6872
|
-
if (!config?.registries) return;
|
|
6873
|
-
const targetRegistry = registry || this.getDefaultRegistry();
|
|
6874
|
-
if (!targetRegistry) return;
|
|
6875
|
-
delete config.registries[targetRegistry];
|
|
6876
|
-
this.writeConfig(config);
|
|
6877
|
-
}
|
|
6878
|
-
/**
|
|
6879
|
-
* Read config file
|
|
6880
|
-
*/ readConfig() {
|
|
6881
|
-
try {
|
|
6882
|
-
if (!external_node_fs_.existsSync(this.configPath)) return null;
|
|
6883
|
-
const content = external_node_fs_.readFileSync(this.configPath, 'utf-8');
|
|
6884
|
-
if (!content.trim()) return null;
|
|
6885
|
-
return JSON.parse(content);
|
|
6886
|
-
} catch {
|
|
6887
|
-
return null;
|
|
6888
|
-
}
|
|
6889
|
-
}
|
|
6890
|
-
/**
|
|
6891
|
-
* Write config file
|
|
6892
|
-
*/ writeConfig(config) {
|
|
6893
|
-
const content = JSON.stringify(config, null, 2);
|
|
6894
|
-
external_node_fs_.writeFileSync(this.configPath, content, {
|
|
6895
|
-
mode: 384
|
|
6896
|
-
});
|
|
6897
|
-
}
|
|
6898
|
-
}
|
|
6899
6916
|
/**
|
|
6900
6917
|
* login command - Authenticate with a reskill registry
|
|
6901
6918
|
*
|
|
@@ -43,6 +43,7 @@ export declare class RegistryResolver {
|
|
|
43
43
|
*
|
|
44
44
|
* @param ref - Skill reference (e.g., "@kanyun/planning-with-files@2.4.5" or "my-skill@latest")
|
|
45
45
|
* @param overrideRegistryUrl - Optional registry URL override (bypasses scope-based lookup)
|
|
46
|
+
* @param token - Optional auth token for private skill access
|
|
46
47
|
* @returns Resolved skill information including downloaded tarball
|
|
47
48
|
*
|
|
48
49
|
* @example
|
|
@@ -50,7 +51,7 @@ export declare class RegistryResolver {
|
|
|
50
51
|
* console.log(result.shortName); // 'planning-with-files'
|
|
51
52
|
* console.log(result.version); // '2.4.5'
|
|
52
53
|
*/
|
|
53
|
-
resolve(ref: string, overrideRegistryUrl?: string): Promise<RegistryResolveResult>;
|
|
54
|
+
resolve(ref: string, overrideRegistryUrl?: string, token?: string): Promise<RegistryResolveResult>;
|
|
54
55
|
/**
|
|
55
56
|
* Extract tarball to a target directory
|
|
56
57
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-resolver.d.ts","sourceRoot":"","sources":["../../src/core/registry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAGL,KAAK,qBAAqB,EAE3B,MAAM,4BAA4B,CAAC;AAQpC,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAwC1C
|
|
1
|
+
{"version":3,"file":"registry-resolver.d.ts","sourceRoot":"","sources":["../../src/core/registry-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAGL,KAAK,qBAAqB,EAE3B,MAAM,4BAA4B,CAAC;AAQpC,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAwC1C;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA+BxG;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/core/skill-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAIf,MAAM,mBAAmB,CAAC;AAmB3B,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAU;gBAEd,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB;IAc/D;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAOvB;;;;;;OAMG;IACH,qBAAqB,IAAI,MAAM;IAM/B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA0BlC;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAoB/B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAQjF;;OAEG;YACW,cAAc;IAwF5B;;OAEG;YACW,eAAe;IAwF7B;;OAEG;IACG,UAAU,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsBzE;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IA2BhC;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAY7D;;OAEG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAmEtD;;;;;;;;;OASG;YACW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"skill-manager.d.ts","sourceRoot":"","sources":["../../src/core/skill-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3705,13 +3705,14 @@ class RegistryResolver {
|
|
|
3705
3705
|
*
|
|
3706
3706
|
* @param ref - Skill reference (e.g., "@kanyun/planning-with-files@2.4.5" or "my-skill@latest")
|
|
3707
3707
|
* @param overrideRegistryUrl - Optional registry URL override (bypasses scope-based lookup)
|
|
3708
|
+
* @param token - Optional auth token for private skill access
|
|
3708
3709
|
* @returns Resolved skill information including downloaded tarball
|
|
3709
3710
|
*
|
|
3710
3711
|
* @example
|
|
3711
3712
|
* const result = await resolver.resolve('@kanyun/planning-with-files@2.4.5');
|
|
3712
3713
|
* console.log(result.shortName); // 'planning-with-files'
|
|
3713
3714
|
* console.log(result.version); // '2.4.5'
|
|
3714
|
-
*/ async resolve(ref, overrideRegistryUrl) {
|
|
3715
|
+
*/ async resolve(ref, overrideRegistryUrl, token) {
|
|
3715
3716
|
// 1. Parse skill identifier
|
|
3716
3717
|
const parsed = parseSkillIdentifier(ref);
|
|
3717
3718
|
const shortName = getShortName(parsed.fullName);
|
|
@@ -3719,7 +3720,8 @@ class RegistryResolver {
|
|
|
3719
3720
|
const registryUrl = overrideRegistryUrl || getRegistryUrl(parsed.scope);
|
|
3720
3721
|
// 3. Create client and resolve version
|
|
3721
3722
|
const client = new RegistryClient({
|
|
3722
|
-
registry: registryUrl
|
|
3723
|
+
registry: registryUrl,
|
|
3724
|
+
token
|
|
3723
3725
|
});
|
|
3724
3726
|
const version = await client.resolveVersion(parsed.fullName, parsed.version);
|
|
3725
3727
|
// 4. Download tarball
|
|
@@ -4129,6 +4131,9 @@ class RegistryResolver {
|
|
|
4129
4131
|
const locked = this.lockManager.get(parsed.name);
|
|
4130
4132
|
if (locked?.registry) return locked.registry;
|
|
4131
4133
|
// Slow path: probe configured registries (skip git hosts)
|
|
4134
|
+
// Note: token is intentionally NOT passed during probe to avoid leaking
|
|
4135
|
+
// credentials to unrelated registries. Token is only used after the
|
|
4136
|
+
// target registry is determined.
|
|
4132
4137
|
const registries = this.config.getRegistries();
|
|
4133
4138
|
for (const [name, url] of Object.entries(registries))if (!this.isGitHostRegistry(name, url)) try {
|
|
4134
4139
|
const client = new RegistryClient({
|
|
@@ -4596,7 +4601,8 @@ class RegistryResolver {
|
|
|
4596
4601
|
const parsed = parseSkillIdentifier(ref);
|
|
4597
4602
|
const registryUrl = await this.resolveRegistryUrl(ref, options.registry);
|
|
4598
4603
|
const client = new RegistryClient({
|
|
4599
|
-
registry: registryUrl
|
|
4604
|
+
registry: registryUrl,
|
|
4605
|
+
token: options.token
|
|
4600
4606
|
});
|
|
4601
4607
|
// Query skill info to determine source_type
|
|
4602
4608
|
let skillInfo;
|
|
@@ -4617,7 +4623,7 @@ class RegistryResolver {
|
|
|
4617
4623
|
});
|
|
4618
4624
|
// 1. Resolve registry skill (pass pre-resolved registryUrl)
|
|
4619
4625
|
logger_logger["package"](`Resolving ${ref} from registry...`);
|
|
4620
|
-
const resolved = await this.registryResolver.resolve(ref, registryUrl);
|
|
4626
|
+
const resolved = await this.registryResolver.resolve(ref, registryUrl, options.token);
|
|
4621
4627
|
const { shortName, version, registryUrl: resolvedRegistryUrl, tarball, parsed: resolvedParsed } = resolved;
|
|
4622
4628
|
// 2. Check if already installed (skip if --force)
|
|
4623
4629
|
const skillPath = this.getSkillPath(shortName);
|
|
@@ -4827,7 +4833,8 @@ class RegistryResolver {
|
|
|
4827
4833
|
const version = 'latest';
|
|
4828
4834
|
// Download tarball via RegistryClient (handles auth + 302 redirect to signed URL)
|
|
4829
4835
|
const client = new RegistryClient({
|
|
4830
|
-
registry: registryUrl
|
|
4836
|
+
registry: registryUrl,
|
|
4837
|
+
token: options.token
|
|
4831
4838
|
});
|
|
4832
4839
|
const { tarball } = await client.downloadSkill(parsed.fullName, version);
|
|
4833
4840
|
logger_logger["package"](`Installing ${shortName} from ${registryUrl} to ${targetAgents.length} agent(s)...`);
|
package/dist/types/index.d.ts
CHANGED
|
@@ -244,6 +244,8 @@ export interface InstallOptions {
|
|
|
244
244
|
yes?: boolean;
|
|
245
245
|
/** Registry URL override (for registry-based installs) */
|
|
246
246
|
registry?: string;
|
|
247
|
+
/** Auth token for registry API requests (enables private skill access) */
|
|
248
|
+
token?: string;
|
|
247
249
|
/** Registry context for web-published skills (carries registry name through Git/HTTP install) */
|
|
248
250
|
registryContext?: RegistryInstallContext;
|
|
249
251
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|