@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 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
- npm install
76
+ pnpm install
77
77
 
78
78
  # Build
79
- npm run build
79
+ pnpm run build
80
80
 
81
81
  # Type check
82
- npm run typecheck
82
+ pnpm run typecheck
83
83
 
84
84
  # Run CLI in development
85
- npm run dev -- sync user/pack/latest
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,CAsD3C"}
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"}
@@ -1,7 +1,5 @@
1
1
  import { Command } from 'commander';
2
- import { writeFile } from 'fs/promises';
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(options.cwd);
27
- const settings = await vscodeManager.init({
28
- pack: options.pack,
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(JSON.stringify(settings, null, 2));
34
+ console.log(serialized);
35
35
  }
36
36
  else {
37
- const config = {
38
- packName: options.pack,
39
- assistants: getAssistants(options.copilot, options.claude),
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(JSON.stringify(config, null, 2));
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":"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"}
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"}
@@ -1,3 +1,22 @@
1
1
  import { Command } from 'commander';
2
- export declare function createSyncCommand(): Command;
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;AAYpC,wBAAgB,iBAAiB,IAAI,OAAO,CAsG3C"}
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"}
@@ -1,94 +1,67 @@
1
- import { Command } from 'commander';
2
- import { SyncManager, ConfigManager, DEFAULT_ENVIRONMENT, VSCODE_SETTINGS_PATH } from '@sysprompthub/sdk';
3
- import { existsSync } from 'fs';
4
- import { join } from 'path';
5
- export function createSyncCommand() {
6
- const command = new Command('sync');
7
- command
8
- .description('Sync system prompts from SysPromptHub')
9
- .argument('[pack]', 'Prompt pack name in format user/pack/version')
10
- .option('--copilot', 'Enable GitHub Copilot')
11
- .option('--claude', 'Enable Claude')
12
- .option('--stdout', 'Output to stdout instead of writing files', false)
13
- .option('--vscode', 'Use .vscode/settings.json instead of .sysprompthub.json', false)
14
- .option('--cwd <dir>', 'Working directory', process.cwd())
15
- .option('-e, --environment <env>', '')
16
- .action(async (packArg, options) => {
17
- try {
18
- // Load config file
19
- const configManager = new ConfigManager(options.cwd);
20
- const config = await configManager.load();
21
- // Determine pack name
22
- const packName = packArg || config?.packName;
23
- if (!packName) {
24
- console.error('Error: Pack name is required. Provide it as an argument or in .sysprompthub.json');
25
- process.exit(1);
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
- catch (error) {
83
- if (error instanceof Error) {
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
- return command;
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
- //# sourceMappingURL=sync.js.map
67
+ exports.SyncCommand = SyncCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sync.test.d.ts.map
@@ -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
- import { Command } from 'commander';
3
- import { createSyncCommand } from './commands/sync.js';
4
- import { createInitCommand } from './commands/init.js';
5
- const program = new Command();
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.1.0');
10
- program.addCommand(createSyncCommand());
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,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,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,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAExC,OAAO,CAAC,KAAK,EAAE,CAAC"}
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.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "CLI for syncing system prompts from SysPromptHub",
5
- "type": "module",
5
+ "type": "commonjs",
6
+ "main": "dist/index.js",
6
7
  "bin": {
7
- "sysprompthub": "./dist/index.js"
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.1.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
- "packageManager": "pnpm@9.0.0+sha512.b4106707c7225b1748b61595953ccbebff97b54ad05d002aa3635f633b9c53cd666f7ce9b8bc44704f1fa048b9a49b55371ab2d9e9d667d1efe2ef1514bcd513"
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
+ }