@sysprompthub/cli 0.1.0 → 0.2.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 +16 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +15 -19
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/sync.d.ts +20 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +63 -90
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/sync.test.d.ts +2 -0
- package/dist/commands/sync.test.d.ts.map +1 -0
- package/dist/commands/sync.test.js +265 -0
- package/dist/commands/sync.test.js.map +1 -0
- package/dist/index.js +7 -8
- package/dist/index.js.map +1 -1
- package/package.json +19 -12
package/README.md
CHANGED
|
@@ -73,16 +73,28 @@ See the [SDK documentation](../nodejs_sdk/README.md) for API details.
|
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
# Install dependencies
|
|
76
|
-
|
|
76
|
+
pnpm install
|
|
77
77
|
|
|
78
78
|
# Build
|
|
79
|
-
|
|
79
|
+
pnpm run build
|
|
80
80
|
|
|
81
81
|
# Type check
|
|
82
|
-
|
|
82
|
+
pnpm run typecheck
|
|
83
83
|
|
|
84
84
|
# Run CLI in development
|
|
85
|
-
|
|
85
|
+
pnpm run dev -- sync user/pack/latest
|
|
86
|
+
|
|
87
|
+
# Run tests
|
|
88
|
+
pnpm test
|
|
89
|
+
|
|
90
|
+
# Run tests in watch mode
|
|
91
|
+
pnpm test:watch
|
|
92
|
+
|
|
93
|
+
# Run tests with coverage
|
|
94
|
+
pnpm test:coverage
|
|
95
|
+
|
|
96
|
+
# Run tests with UI
|
|
97
|
+
pnpm test:ui
|
|
86
98
|
```
|
|
87
99
|
|
|
88
100
|
## License
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,iBAAiB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAmD3C"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import {
|
|
3
|
-
import { join } from 'path';
|
|
4
|
-
import { CONFIG_FILE_NAME, VscodeConfigManager } from '@sysprompthub/sdk';
|
|
2
|
+
import { CONFIG_FILE_NAME, VscodeConfigManager, ConfigManager, NodeFileSystem } from '@sysprompthub/sdk';
|
|
5
3
|
function getAssistants(copilot, claude) {
|
|
6
4
|
const assistants = [];
|
|
7
5
|
if (copilot)
|
|
@@ -22,27 +20,25 @@ export function createInitCommand() {
|
|
|
22
20
|
.option('--cwd <dir>', 'Working directory', process.cwd())
|
|
23
21
|
.action(async (options) => {
|
|
24
22
|
try {
|
|
23
|
+
const fs = new NodeFileSystem(options.cwd);
|
|
24
|
+
const config = {
|
|
25
|
+
packName: options.pack,
|
|
26
|
+
assistants: getAssistants(options.copilot, options.claude),
|
|
27
|
+
environment: options.environment
|
|
28
|
+
};
|
|
25
29
|
if (options.vscode) {
|
|
26
|
-
const vscodeManager = new VscodeConfigManager(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
copilot: options.copilot,
|
|
30
|
-
claude: options.claude,
|
|
31
|
-
environment: options.environment
|
|
32
|
-
});
|
|
30
|
+
const vscodeManager = new VscodeConfigManager();
|
|
31
|
+
await vscodeManager.update(fs, config);
|
|
32
|
+
const serialized = await vscodeManager.serialize(config, fs);
|
|
33
33
|
console.log(`✓ Created .vscode/settings.json`);
|
|
34
|
-
console.log(
|
|
34
|
+
console.log(serialized);
|
|
35
35
|
}
|
|
36
36
|
else {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
environment: options.environment
|
|
41
|
-
};
|
|
42
|
-
const configPath = join(options.cwd, CONFIG_FILE_NAME);
|
|
43
|
-
await writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
37
|
+
const configManager = new ConfigManager();
|
|
38
|
+
await configManager.update(fs, config);
|
|
39
|
+
const serialized = await configManager.serialize(config, fs);
|
|
44
40
|
console.log(`✓ Created ${CONFIG_FILE_NAME}`);
|
|
45
|
-
console.log(
|
|
41
|
+
console.log(serialized);
|
|
46
42
|
}
|
|
47
43
|
}
|
|
48
44
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EAGb,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,SAAS,aAAa,CAAC,OAAgB,EAAE,MAAe;IACtD,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,IAAI,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO;SACJ,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC;SAC3C,MAAM,CAAC,WAAW,EAAE,uBAAuB,EAAE,KAAK,CAAC;SACnD,MAAM,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,CAAC;SAC1C,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,EAAE,aAAa,CAAC;SAClF,MAAM,CAAC,UAAU,EAAE,4DAA4D,EAAE,KAAK,CAAC;SACvF,MAAM,CAAC,aAAa,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,OAOd,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAW;gBACrB,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;gBAC1D,WAAW,EAAE,OAAO,CAAC,WAAkB;aACxC,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,aAAa,GAAG,IAAI,mBAAmB,EAAE,CAAC;gBAChD,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;gBAC1C,MAAM,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,aAAa,gBAAgB,EAAE,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/commands/sync.d.ts
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
|
|
2
|
+
import { Environment } from '@sysprompthub/sdk';
|
|
3
|
+
interface SyncOptions {
|
|
4
|
+
copilot?: boolean;
|
|
5
|
+
claude?: boolean;
|
|
6
|
+
path?: string;
|
|
7
|
+
vscode: boolean;
|
|
8
|
+
environment?: Environment;
|
|
9
|
+
}
|
|
10
|
+
export declare class SyncCommand {
|
|
11
|
+
private readonly fs;
|
|
12
|
+
private readonly defaultConfig;
|
|
13
|
+
private readonly vscodeConfig;
|
|
14
|
+
private configManager;
|
|
15
|
+
private config;
|
|
16
|
+
run(packArg: string | undefined, options: SyncOptions): Promise<void>;
|
|
17
|
+
private updateConfig;
|
|
18
|
+
useVscode(): Promise<boolean>;
|
|
19
|
+
create(): Command;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
3
22
|
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAGL,WAAW,EAKZ,MAAM,mBAAmB,CAAC;AAI3B,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAwB;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAU;IAElB,GAAG,CACP,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,WAAW;YAQR,YAAY;IAqCpB,SAAS;IAIf,MAAM,IAAI,OAAO;CAelB"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -1,94 +1,67 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
.
|
|
15
|
-
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
if (!ConfigManager.validatePackName(packName)) {
|
|
28
|
-
console.error('Error: Invalid pack name format. Expected: user/pack/version (e.g., example-user/example-pack/latest)');
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
// Determine assistants
|
|
32
|
-
let assistants;
|
|
33
|
-
if (options.copilot !== undefined || options.claude !== undefined) {
|
|
34
|
-
assistants = [];
|
|
35
|
-
if (options.copilot)
|
|
36
|
-
assistants.push('copilot');
|
|
37
|
-
if (options.claude)
|
|
38
|
-
assistants.push('claude');
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
assistants = config?.assistants || ['copilot'];
|
|
42
|
-
}
|
|
43
|
-
// Determine environment
|
|
44
|
-
const environment = options.environment || config?.environment || DEFAULT_ENVIRONMENT;
|
|
45
|
-
// Check if config needs updating or creating
|
|
46
|
-
const configChanged = !config || (config.packName !== packName ||
|
|
47
|
-
JSON.stringify(config.assistants?.sort()) !== JSON.stringify(assistants.sort()));
|
|
48
|
-
// Update or create config if needed
|
|
49
|
-
if (configChanged && !options.stdout) {
|
|
50
|
-
const updates = {
|
|
51
|
-
packName,
|
|
52
|
-
assistants,
|
|
53
|
-
environment
|
|
54
|
-
};
|
|
55
|
-
// Check which config file to use
|
|
56
|
-
const vscodeSettingsPath = join(options.cwd, VSCODE_SETTINGS_PATH);
|
|
57
|
-
if (options.vscode || existsSync(vscodeSettingsPath)) {
|
|
58
|
-
const vscodeManager = configManager.getVscodeManager();
|
|
59
|
-
await vscodeManager.update(updates);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
await configManager.update(updates);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// Sync
|
|
66
|
-
const syncManager = new SyncManager(options.cwd);
|
|
67
|
-
const prompt = await syncManager.sync({
|
|
68
|
-
packName,
|
|
69
|
-
assistants,
|
|
70
|
-
environment,
|
|
71
|
-
cwd: options.cwd,
|
|
72
|
-
stdout: options.stdout
|
|
73
|
-
});
|
|
74
|
-
if (options.stdout) {
|
|
75
|
-
console.log(prompt);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
console.log(`✓ Successfully synced prompt pack: ${packName}`);
|
|
79
|
-
console.log(` Assistants: ${assistants.join(', ')}`);
|
|
80
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SyncCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const sdk_1 = require("@sysprompthub/sdk");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
class SyncCommand {
|
|
8
|
+
fs = new sdk_1.NodeFileSystem();
|
|
9
|
+
defaultConfig = new sdk_1.DefaultConfigManager();
|
|
10
|
+
vscodeConfig = new sdk_1.VscodeConfigManager();
|
|
11
|
+
configManager = null;
|
|
12
|
+
config;
|
|
13
|
+
async run(packArg, options) {
|
|
14
|
+
await this.updateConfig(packArg, options);
|
|
15
|
+
const syncManager = new sdk_1.SyncManager();
|
|
16
|
+
await syncManager.sync({ config: this.config, fs: this.fs });
|
|
17
|
+
}
|
|
18
|
+
async updateConfig(packArg, { copilot, claude, path, vscode, environment }) {
|
|
19
|
+
this.configManager = (vscode || await this.useVscode()) ? this.vscodeConfig : this.defaultConfig;
|
|
20
|
+
this.config = await this.configManager.load(this.fs) || {};
|
|
21
|
+
if (packArg)
|
|
22
|
+
this.config.packName = packArg;
|
|
23
|
+
if (!this.config.packName) {
|
|
24
|
+
console.error('Error: Pack name is required. Provide it as an argument or in .sysprompthub.json');
|
|
25
|
+
process.exit(1);
|
|
81
26
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
console.error(`Error: ${error.message}`);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
console.error('An unknown error occurred');
|
|
88
|
-
}
|
|
27
|
+
if (!sdk_1.SysPromptHubClient.validatePackName(this.config.packName)) {
|
|
28
|
+
console.error('Error: Invalid pack name format. Expected: user/pack/version (e.g., example-user/example-pack/latest)');
|
|
89
29
|
process.exit(1);
|
|
90
30
|
}
|
|
91
|
-
|
|
92
|
-
|
|
31
|
+
if (copilot || claude) {
|
|
32
|
+
this.config.assistants = [];
|
|
33
|
+
if (copilot)
|
|
34
|
+
this.config.assistants.push('copilot');
|
|
35
|
+
if (claude)
|
|
36
|
+
this.config.assistants.push('claude');
|
|
37
|
+
}
|
|
38
|
+
if (path)
|
|
39
|
+
this.config.path = path;
|
|
40
|
+
if (this.config.path && (0, path_1.isAbsolute)(this.config.path)) {
|
|
41
|
+
console.error('Error: Path must be relative to the current working directory');
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
if (environment)
|
|
45
|
+
this.config.environment = environment;
|
|
46
|
+
if (packArg || copilot || claude || path || environment) {
|
|
47
|
+
this.configManager.update(this.fs, this.config);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async useVscode() {
|
|
51
|
+
return await this.vscodeConfig.exists(this.fs);
|
|
52
|
+
}
|
|
53
|
+
create() {
|
|
54
|
+
const command = new commander_1.Command('sync');
|
|
55
|
+
command
|
|
56
|
+
.description('Sync system prompts from SysPromptHub')
|
|
57
|
+
.argument('[pack]', 'Prompt pack name in format user/pack/version')
|
|
58
|
+
.option('--copilot', 'Enable GitHub Copilot')
|
|
59
|
+
.option('--claude', 'Enable Claude')
|
|
60
|
+
.option('--path <PATH>', 'Output to a custom path')
|
|
61
|
+
.option('--vscode', 'Use .vscode/settings.json instead of .sysprompthub.json', false)
|
|
62
|
+
.option('-e, --environment <ENV>', '')
|
|
63
|
+
.action(async (pack, options) => await this.run(pack, options));
|
|
64
|
+
return command;
|
|
65
|
+
}
|
|
93
66
|
}
|
|
94
|
-
|
|
67
|
+
exports.SyncCommand = SyncCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.test.d.ts","sourceRoot":"","sources":["../../src/commands/sync.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const vitest_1 = require("vitest");
|
|
37
|
+
const sync_js_1 = require("./sync.js");
|
|
38
|
+
vitest_1.vi.mock('@sysprompthub/sdk', () => {
|
|
39
|
+
const mockFs = {
|
|
40
|
+
readFile: vitest_1.vi.fn(),
|
|
41
|
+
writeFile: vitest_1.vi.fn(),
|
|
42
|
+
exists: vitest_1.vi.fn()
|
|
43
|
+
};
|
|
44
|
+
const mockDefaultConfig = {
|
|
45
|
+
load: vitest_1.vi.fn(),
|
|
46
|
+
update: vitest_1.vi.fn(),
|
|
47
|
+
exists: vitest_1.vi.fn()
|
|
48
|
+
};
|
|
49
|
+
const mockVscodeConfig = {
|
|
50
|
+
load: vitest_1.vi.fn(),
|
|
51
|
+
update: vitest_1.vi.fn(),
|
|
52
|
+
exists: vitest_1.vi.fn()
|
|
53
|
+
};
|
|
54
|
+
const mockSyncManager = {
|
|
55
|
+
sync: vitest_1.vi.fn()
|
|
56
|
+
};
|
|
57
|
+
return {
|
|
58
|
+
SyncManager: class {
|
|
59
|
+
sync = mockSyncManager.sync;
|
|
60
|
+
},
|
|
61
|
+
NodeFileSystem: class {
|
|
62
|
+
readFile = mockFs.readFile;
|
|
63
|
+
writeFile = mockFs.writeFile;
|
|
64
|
+
exists = mockFs.exists;
|
|
65
|
+
},
|
|
66
|
+
DefaultConfigManager: class {
|
|
67
|
+
load = mockDefaultConfig.load;
|
|
68
|
+
update = mockDefaultConfig.update;
|
|
69
|
+
exists = mockDefaultConfig.exists;
|
|
70
|
+
},
|
|
71
|
+
VscodeConfigManager: class {
|
|
72
|
+
load = mockVscodeConfig.load;
|
|
73
|
+
update = mockVscodeConfig.update;
|
|
74
|
+
exists = mockVscodeConfig.exists;
|
|
75
|
+
},
|
|
76
|
+
SysPromptHubClient: {
|
|
77
|
+
validatePackName: vitest_1.vi.fn()
|
|
78
|
+
},
|
|
79
|
+
// Export mocks so tests can access them
|
|
80
|
+
__mocks: {
|
|
81
|
+
mockFs,
|
|
82
|
+
mockDefaultConfig,
|
|
83
|
+
mockVscodeConfig,
|
|
84
|
+
mockSyncManager
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.describe)('SyncCommand', () => {
|
|
89
|
+
let syncCommand;
|
|
90
|
+
let consoleErrorSpy;
|
|
91
|
+
let processExitSpy;
|
|
92
|
+
let mocks;
|
|
93
|
+
(0, vitest_1.beforeEach)(async () => {
|
|
94
|
+
const sdk = await Promise.resolve().then(() => __importStar(require('@sysprompthub/sdk')));
|
|
95
|
+
mocks = sdk.__mocks;
|
|
96
|
+
vitest_1.vi.clearAllMocks();
|
|
97
|
+
mocks.mockFs.readFile.mockReset();
|
|
98
|
+
mocks.mockFs.writeFile.mockReset();
|
|
99
|
+
mocks.mockFs.exists.mockReset();
|
|
100
|
+
mocks.mockDefaultConfig.load.mockReset().mockResolvedValue({});
|
|
101
|
+
mocks.mockDefaultConfig.update.mockReset();
|
|
102
|
+
mocks.mockDefaultConfig.exists.mockReset();
|
|
103
|
+
mocks.mockVscodeConfig.load.mockReset().mockResolvedValue({});
|
|
104
|
+
mocks.mockVscodeConfig.update.mockReset();
|
|
105
|
+
mocks.mockVscodeConfig.exists.mockReset().mockResolvedValue(false);
|
|
106
|
+
mocks.mockSyncManager.sync.mockReset().mockResolvedValue(undefined);
|
|
107
|
+
vitest_1.vi.mocked(sdk.SysPromptHubClient.validatePackName).mockReset().mockReturnValue(true);
|
|
108
|
+
consoleErrorSpy = vitest_1.vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
109
|
+
processExitSpy = vitest_1.vi.spyOn(process, 'exit').mockImplementation(() => undefined);
|
|
110
|
+
syncCommand = new sync_js_1.SyncCommand();
|
|
111
|
+
});
|
|
112
|
+
(0, vitest_1.afterEach)(() => {
|
|
113
|
+
consoleErrorSpy.mockRestore();
|
|
114
|
+
processExitSpy.mockRestore();
|
|
115
|
+
});
|
|
116
|
+
(0, vitest_1.describe)('create', () => {
|
|
117
|
+
(0, vitest_1.it)('should create a Command with correct configuration', () => {
|
|
118
|
+
const command = syncCommand.create();
|
|
119
|
+
(0, vitest_1.expect)(command.name()).toBe('sync');
|
|
120
|
+
(0, vitest_1.expect)(command.description()).toBe('Sync system prompts from SysPromptHub');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
(0, vitest_1.describe)('run', () => {
|
|
124
|
+
(0, vitest_1.beforeEach)(async () => {
|
|
125
|
+
const sdk = await Promise.resolve().then(() => __importStar(require('@sysprompthub/sdk')));
|
|
126
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
127
|
+
packName: 'user/pack/latest'
|
|
128
|
+
});
|
|
129
|
+
vitest_1.vi.mocked(sdk.SysPromptHubClient.validatePackName).mockReturnValue(true);
|
|
130
|
+
});
|
|
131
|
+
(0, vitest_1.it)('should sync with pack name from argument', async () => {
|
|
132
|
+
await syncCommand.run('user/pack/v1', { vscode: false });
|
|
133
|
+
(0, vitest_1.expect)(mocks.mockSyncManager.sync).toHaveBeenCalledWith({
|
|
134
|
+
config: vitest_1.expect.objectContaining({ packName: 'user/pack/v1' }),
|
|
135
|
+
fs: vitest_1.expect.any(Object)
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.it)('should sync with pack name from config', async () => {
|
|
139
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
140
|
+
packName: 'user/pack/latest'
|
|
141
|
+
});
|
|
142
|
+
await syncCommand.run(undefined, { vscode: false });
|
|
143
|
+
(0, vitest_1.expect)(mocks.mockSyncManager.sync).toHaveBeenCalledWith({
|
|
144
|
+
config: vitest_1.expect.objectContaining({ packName: 'user/pack/latest' }),
|
|
145
|
+
fs: vitest_1.expect.any(Object)
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
(0, vitest_1.it)('should exit with error if no pack name provided', async () => {
|
|
149
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({});
|
|
150
|
+
await syncCommand.run(undefined, { vscode: false });
|
|
151
|
+
(0, vitest_1.expect)(consoleErrorSpy).toHaveBeenCalledWith('Error: Pack name is required. Provide it as an argument or in .sysprompthub.json');
|
|
152
|
+
(0, vitest_1.expect)(processExitSpy).toHaveBeenCalledWith(1);
|
|
153
|
+
});
|
|
154
|
+
(0, vitest_1.it)('should exit with error if pack name is invalid', async () => {
|
|
155
|
+
const sdk = await Promise.resolve().then(() => __importStar(require('@sysprompthub/sdk')));
|
|
156
|
+
vitest_1.vi.mocked(sdk.SysPromptHubClient.validatePackName).mockReturnValue(false);
|
|
157
|
+
await syncCommand.run('invalid-pack', { vscode: false });
|
|
158
|
+
(0, vitest_1.expect)(consoleErrorSpy).toHaveBeenCalledWith('Error: Invalid pack name format. Expected: user/pack/version (e.g., example-user/example-pack/latest)');
|
|
159
|
+
(0, vitest_1.expect)(processExitSpy).toHaveBeenCalledWith(1);
|
|
160
|
+
});
|
|
161
|
+
(0, vitest_1.it)('should update assistants when copilot option is provided', async () => {
|
|
162
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
163
|
+
packName: 'user/pack/latest'
|
|
164
|
+
});
|
|
165
|
+
await syncCommand.run(undefined, { copilot: true, vscode: false });
|
|
166
|
+
(0, vitest_1.expect)(mocks.mockDefaultConfig.update).toHaveBeenCalledWith(vitest_1.expect.any(Object), vitest_1.expect.objectContaining({
|
|
167
|
+
assistants: ['copilot']
|
|
168
|
+
}));
|
|
169
|
+
});
|
|
170
|
+
(0, vitest_1.it)('should update assistants when claude option is provided', async () => {
|
|
171
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
172
|
+
packName: 'user/pack/latest'
|
|
173
|
+
});
|
|
174
|
+
await syncCommand.run(undefined, { claude: true, vscode: false });
|
|
175
|
+
(0, vitest_1.expect)(mocks.mockDefaultConfig.update).toHaveBeenCalledWith(vitest_1.expect.any(Object), vitest_1.expect.objectContaining({
|
|
176
|
+
assistants: ['claude']
|
|
177
|
+
}));
|
|
178
|
+
});
|
|
179
|
+
(0, vitest_1.it)('should update assistants when both copilot and claude options are provided', async () => {
|
|
180
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
181
|
+
packName: 'user/pack/latest'
|
|
182
|
+
});
|
|
183
|
+
await syncCommand.run(undefined, { copilot: true, claude: true, vscode: false });
|
|
184
|
+
(0, vitest_1.expect)(mocks.mockDefaultConfig.update).toHaveBeenCalledWith(vitest_1.expect.any(Object), vitest_1.expect.objectContaining({
|
|
185
|
+
assistants: ['copilot', 'claude']
|
|
186
|
+
}));
|
|
187
|
+
});
|
|
188
|
+
(0, vitest_1.it)('should update path when path option is provided', async () => {
|
|
189
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
190
|
+
packName: 'user/pack/latest'
|
|
191
|
+
});
|
|
192
|
+
await syncCommand.run(undefined, { path: 'custom/path', vscode: false });
|
|
193
|
+
(0, vitest_1.expect)(mocks.mockDefaultConfig.update).toHaveBeenCalledWith(vitest_1.expect.any(Object), vitest_1.expect.objectContaining({
|
|
194
|
+
path: 'custom/path'
|
|
195
|
+
}));
|
|
196
|
+
});
|
|
197
|
+
(0, vitest_1.it)('should exit with error if absolute path is provided', async () => {
|
|
198
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
199
|
+
packName: 'user/pack/latest'
|
|
200
|
+
});
|
|
201
|
+
await syncCommand.run(undefined, { path: '/absolute/path', vscode: false });
|
|
202
|
+
(0, vitest_1.expect)(consoleErrorSpy).toHaveBeenCalledWith('Error: Path must be relative to the current working directory');
|
|
203
|
+
(0, vitest_1.expect)(processExitSpy).toHaveBeenCalledWith(1);
|
|
204
|
+
});
|
|
205
|
+
(0, vitest_1.it)('should update environment when environment option is provided', async () => {
|
|
206
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
207
|
+
packName: 'user/pack/latest'
|
|
208
|
+
});
|
|
209
|
+
await syncCommand.run(undefined, { environment: 'production', vscode: false });
|
|
210
|
+
(0, vitest_1.expect)(mocks.mockDefaultConfig.update).toHaveBeenCalledWith(vitest_1.expect.any(Object), vitest_1.expect.objectContaining({
|
|
211
|
+
environment: 'production'
|
|
212
|
+
}));
|
|
213
|
+
});
|
|
214
|
+
(0, vitest_1.it)('should use vscode config when vscode option is true', async () => {
|
|
215
|
+
mocks.mockVscodeConfig.load.mockResolvedValue({
|
|
216
|
+
packName: 'user/pack/latest'
|
|
217
|
+
});
|
|
218
|
+
await syncCommand.run(undefined, { vscode: true });
|
|
219
|
+
(0, vitest_1.expect)(mocks.mockVscodeConfig.load).toHaveBeenCalled();
|
|
220
|
+
(0, vitest_1.expect)(mocks.mockSyncManager.sync).toHaveBeenCalledWith({
|
|
221
|
+
config: vitest_1.expect.objectContaining({ packName: 'user/pack/latest' }),
|
|
222
|
+
fs: vitest_1.expect.any(Object)
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
(0, vitest_1.it)('should use vscode config when .vscode/settings.json exists', async () => {
|
|
226
|
+
mocks.mockVscodeConfig.exists.mockResolvedValue(true);
|
|
227
|
+
mocks.mockVscodeConfig.load.mockResolvedValue({
|
|
228
|
+
packName: 'user/pack/latest'
|
|
229
|
+
});
|
|
230
|
+
await syncCommand.run(undefined, { vscode: false });
|
|
231
|
+
(0, vitest_1.expect)(mocks.mockVscodeConfig.load).toHaveBeenCalled();
|
|
232
|
+
(0, vitest_1.expect)(mocks.mockSyncManager.sync).toHaveBeenCalled();
|
|
233
|
+
});
|
|
234
|
+
(0, vitest_1.it)('should use default config when vscode option is false and no .vscode/settings.json', async () => {
|
|
235
|
+
mocks.mockVscodeConfig.exists.mockResolvedValue(false);
|
|
236
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
237
|
+
packName: 'user/pack/latest'
|
|
238
|
+
});
|
|
239
|
+
await syncCommand.run(undefined, { vscode: false });
|
|
240
|
+
(0, vitest_1.expect)(mocks.mockDefaultConfig.load).toHaveBeenCalled();
|
|
241
|
+
(0, vitest_1.expect)(mocks.mockSyncManager.sync).toHaveBeenCalled();
|
|
242
|
+
});
|
|
243
|
+
(0, vitest_1.it)('should not update config when no options change values', async () => {
|
|
244
|
+
mocks.mockDefaultConfig.load.mockResolvedValue({
|
|
245
|
+
packName: 'user/pack/latest'
|
|
246
|
+
});
|
|
247
|
+
await syncCommand.run(undefined, { vscode: false });
|
|
248
|
+
(0, vitest_1.expect)(mocks.mockDefaultConfig.update).not.toHaveBeenCalled();
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
(0, vitest_1.describe)('useVscode', () => {
|
|
252
|
+
(0, vitest_1.it)('should return true when vscode config exists', async () => {
|
|
253
|
+
mocks.mockVscodeConfig.exists.mockResolvedValue(true);
|
|
254
|
+
const result = await syncCommand.useVscode();
|
|
255
|
+
(0, vitest_1.expect)(result).toBe(true);
|
|
256
|
+
(0, vitest_1.expect)(mocks.mockVscodeConfig.exists).toHaveBeenCalled();
|
|
257
|
+
});
|
|
258
|
+
(0, vitest_1.it)('should return false when vscode config does not exist', async () => {
|
|
259
|
+
mocks.mockVscodeConfig.exists.mockResolvedValue(false);
|
|
260
|
+
const result = await syncCommand.useVscode();
|
|
261
|
+
(0, vitest_1.expect)(result).toBe(false);
|
|
262
|
+
(0, vitest_1.expect)(mocks.mockVscodeConfig.exists).toHaveBeenCalled();
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.test.js","sourceRoot":"","sources":["../../src/commands/sync.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const sync_js_1 = require("./commands/sync.js");
|
|
6
|
+
const program = new commander_1.Command();
|
|
6
7
|
program
|
|
7
8
|
.name('sysprompthub')
|
|
8
9
|
.description('CLI for syncing system prompts from SysPromptHub')
|
|
9
|
-
.version('0.
|
|
10
|
-
program.addCommand(
|
|
11
|
-
program.addCommand(createInitCommand());
|
|
10
|
+
.version('0.2.0');
|
|
11
|
+
program.addCommand(new sync_js_1.SyncCommand().create());
|
|
12
12
|
program.parse();
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;AAE/C,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sysprompthub/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "CLI for syncing system prompts from SysPromptHub",
|
|
5
|
-
"type": "
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"main": "dist/index.js",
|
|
6
7
|
"bin": {
|
|
7
|
-
"sysprompthub": "
|
|
8
|
+
"sysprompthub": "dist/index.js"
|
|
8
9
|
},
|
|
9
10
|
"files": [
|
|
10
11
|
"dist",
|
|
11
12
|
"README.md"
|
|
12
13
|
],
|
|
13
|
-
"scripts": {
|
|
14
|
-
"build": "tsc",
|
|
15
|
-
"dev": "tsx src/index.ts",
|
|
16
|
-
"typecheck": "tsc --noEmit"
|
|
17
|
-
},
|
|
18
14
|
"keywords": [
|
|
19
15
|
"ai",
|
|
20
16
|
"prompts",
|
|
@@ -30,13 +26,24 @@
|
|
|
30
26
|
"node": ">=18.0.0"
|
|
31
27
|
},
|
|
32
28
|
"dependencies": {
|
|
33
|
-
"@sysprompthub/sdk": "^0.
|
|
29
|
+
"@sysprompthub/sdk": "^0.2.2",
|
|
34
30
|
"commander": "^14.0.2"
|
|
35
31
|
},
|
|
36
32
|
"devDependencies": {
|
|
37
33
|
"@types/node": "^25.0.3",
|
|
34
|
+
"@vitest/coverage-v8": "^4.0.16",
|
|
35
|
+
"@vitest/ui": "^4.0.16",
|
|
38
36
|
"tsx": "^4.21.0",
|
|
39
|
-
"typescript": "^5.9.3"
|
|
37
|
+
"typescript": "^5.9.3",
|
|
38
|
+
"vitest": "^4.0.16"
|
|
40
39
|
},
|
|
41
|
-
"
|
|
42
|
-
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc",
|
|
42
|
+
"dev": "tsx src/index.ts",
|
|
43
|
+
"typecheck": "tsc --noEmit",
|
|
44
|
+
"test": "vitest run",
|
|
45
|
+
"test:watch": "vitest",
|
|
46
|
+
"test:ui": "vitest --ui",
|
|
47
|
+
"test:coverage": "vitest run --coverage"
|
|
48
|
+
}
|
|
49
|
+
}
|