skillpkg-cli 0.1.1 → 0.3.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.
Files changed (37) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +40 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/deps.d.ts +17 -0
  5. package/dist/commands/deps.d.ts.map +1 -0
  6. package/dist/commands/deps.js +234 -0
  7. package/dist/commands/deps.js.map +1 -0
  8. package/dist/commands/init.d.ts.map +1 -1
  9. package/dist/commands/init.js +77 -107
  10. package/dist/commands/init.js.map +1 -1
  11. package/dist/commands/install.d.ts.map +1 -1
  12. package/dist/commands/install.js +272 -148
  13. package/dist/commands/install.js.map +1 -1
  14. package/dist/commands/list.d.ts.map +1 -1
  15. package/dist/commands/list.js +47 -17
  16. package/dist/commands/list.js.map +1 -1
  17. package/dist/commands/migrate.d.ts +10 -0
  18. package/dist/commands/migrate.d.ts.map +1 -0
  19. package/dist/commands/migrate.js +122 -0
  20. package/dist/commands/migrate.js.map +1 -0
  21. package/dist/commands/search.d.ts +0 -3
  22. package/dist/commands/search.d.ts.map +1 -1
  23. package/dist/commands/search.js +38 -44
  24. package/dist/commands/search.js.map +1 -1
  25. package/dist/commands/status.d.ts +9 -0
  26. package/dist/commands/status.d.ts.map +1 -0
  27. package/dist/commands/status.js +180 -0
  28. package/dist/commands/status.js.map +1 -0
  29. package/dist/commands/sync.d.ts.map +1 -1
  30. package/dist/commands/sync.js +105 -127
  31. package/dist/commands/sync.js.map +1 -1
  32. package/dist/commands/uninstall.d.ts +1 -0
  33. package/dist/commands/uninstall.d.ts.map +1 -1
  34. package/dist/commands/uninstall.js +56 -12
  35. package/dist/commands/uninstall.js.map +1 -1
  36. package/dist/index.js +0 -0
  37. package/package.json +8 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAeA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkI3E"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * migrate command - Migrate from v1.x to v2.0
3
+ *
4
+ * Generates skillpkg.json and state.json from existing v1.x store.
5
+ */
6
+ import { existsSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { createConfigManager, createStateManager, createLocalStore, } from 'skillpkg-core';
9
+ import { logger, colors, withSpinner } from '../ui/index.js';
10
+ /**
11
+ * migrate command handler
12
+ */
13
+ export async function migrateCommand(options) {
14
+ const cwd = process.cwd();
15
+ const storeDir = join(cwd, '.skillpkg');
16
+ const skillpkgJsonPath = join(cwd, 'skillpkg.json');
17
+ const stateJsonPath = join(storeDir, 'state.json');
18
+ logger.header('Migrate to skillpkg v2.0');
19
+ // Check if v1.x store exists
20
+ if (!existsSync(storeDir)) {
21
+ logger.error('No .skillpkg directory found');
22
+ logger.log('Nothing to migrate. Use `skillpkg init` to create a new project.');
23
+ process.exit(1);
24
+ }
25
+ // Check if already migrated
26
+ if (existsSync(skillpkgJsonPath) && !options.force) {
27
+ logger.warn('skillpkg.json already exists');
28
+ logger.log(`Use ${colors.cyan('--force')} to overwrite`);
29
+ process.exit(1);
30
+ }
31
+ if (existsSync(stateJsonPath) && !options.force) {
32
+ logger.warn('state.json already exists');
33
+ logger.log(`Use ${colors.cyan('--force')} to overwrite`);
34
+ process.exit(1);
35
+ }
36
+ // Get existing skills from v1.x store
37
+ const store = createLocalStore();
38
+ if (!(await store.isInitialized())) {
39
+ logger.error('Store is not properly initialized');
40
+ logger.log('Run `skillpkg init` to create a new project.');
41
+ process.exit(1);
42
+ }
43
+ const skills = await store.listSkills();
44
+ if (skills.length === 0) {
45
+ logger.warn('No skills found in store');
46
+ logger.log('Creating empty skillpkg.json...');
47
+ }
48
+ else {
49
+ logger.log(`Found ${colors.cyan(String(skills.length))} skill(s) to migrate`);
50
+ }
51
+ if (options.dryRun) {
52
+ logger.blank();
53
+ logger.warn('Dry run mode - no changes will be made');
54
+ logger.blank();
55
+ // Show what would be created
56
+ logger.log('Would create:');
57
+ logger.item(`${colors.cyan('skillpkg.json')} - Project configuration`);
58
+ logger.item(`${colors.cyan('.skillpkg/state.json')} - Dependency state`);
59
+ if (skills.length > 0) {
60
+ logger.blank();
61
+ logger.log('Skills to include:');
62
+ for (const skill of skills) {
63
+ logger.item(`${colors.cyan(skill.name)} v${skill.version}`);
64
+ }
65
+ }
66
+ logger.blank();
67
+ return;
68
+ }
69
+ // Create skillpkg.json
70
+ const configManager = createConfigManager();
71
+ const stateManager = createStateManager();
72
+ const newConfig = {
73
+ name: 'migrated-project',
74
+ version: '1.0.0',
75
+ skills: {},
76
+ mcp: {},
77
+ sync_targets: {
78
+ 'claude-code': true,
79
+ },
80
+ };
81
+ // Add skills to config (skills is Record<string, string> - name -> source)
82
+ for (const skill of skills) {
83
+ // Determine source from registry entry
84
+ const entry = await store.getSkillEntry(skill.name);
85
+ const source = entry?.sourceUrl || `local:.skillpkg/skills/${skill.name}`;
86
+ // newConfig.skills is optional, but we initialized it above
87
+ if (newConfig.skills) {
88
+ newConfig.skills[skill.name] = source;
89
+ }
90
+ }
91
+ await withSpinner('Creating skillpkg.json', async () => {
92
+ await configManager.saveProjectConfig(cwd, newConfig);
93
+ });
94
+ // Create state.json
95
+ await withSpinner('Creating state.json', async () => {
96
+ // Initialize empty state first
97
+ await stateManager.loadState(cwd);
98
+ // Record each skill as installed by "user" (since they were manually installed in v1.x)
99
+ for (const skill of skills) {
100
+ const entry = await store.getSkillEntry(skill.name);
101
+ const source = entry?.sourceUrl || `local:.skillpkg/skills/${skill.name}`;
102
+ await stateManager.recordSkillInstall(cwd, skill.name, {
103
+ version: skill.version,
104
+ source,
105
+ installed_by: 'user',
106
+ });
107
+ }
108
+ });
109
+ logger.blank();
110
+ logger.success('Migration complete!');
111
+ logger.blank();
112
+ logger.log('Created files:');
113
+ logger.item(`${colors.cyan('skillpkg.json')} - Project configuration`);
114
+ logger.item(`${colors.cyan('.skillpkg/state.json')} - Dependency state`);
115
+ logger.blank();
116
+ logger.log('Next steps:');
117
+ logger.item(`Edit ${colors.cyan('skillpkg.json')} to customize your project`);
118
+ logger.item(`Run ${colors.cyan('skillpkg sync')} to sync skills to platforms`);
119
+ logger.item(`Run ${colors.cyan('skillpkg status')} to see project status`);
120
+ logger.blank();
121
+ }
122
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,6 @@
1
1
  interface SearchCommandOptions {
2
2
  limit?: string;
3
- page?: string;
4
- sort?: string;
5
3
  json?: boolean;
6
- registry?: string;
7
4
  }
8
5
  /**
9
6
  * search command handler
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAWA,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkFf"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Ef"}
@@ -1,7 +1,10 @@
1
1
  /**
2
- * search command - Search for skills in the registry
2
+ * search command - Search for skills on GitHub
3
+ *
4
+ * Uses GitHub API to find repositories with SKILL.md files.
5
+ * SKILL.md is the industry standard for Claude Code and OpenAI Codex.
3
6
  */
4
- import { createRegistryClient, RegistryError, DEFAULT_REGISTRY_URL, } from 'skillpkg-core';
7
+ import { searchGitHubSkills } from 'skillpkg-core';
5
8
  import { logger, colors } from '../ui/index.js';
6
9
  /**
7
10
  * search command handler
@@ -12,77 +15,68 @@ export async function searchCommand(query, options) {
12
15
  logger.log(`Usage: ${colors.cyan('skillpkg search <query>')}`);
13
16
  process.exit(1);
14
17
  }
15
- const client = createRegistryClient({
16
- registryUrl: options.registry || DEFAULT_REGISTRY_URL,
17
- });
18
- logger.header('Search Skills');
18
+ logger.header('Search Skills on GitHub');
19
19
  logger.log(`Searching for: ${colors.cyan(query)}`);
20
20
  logger.blank();
21
21
  try {
22
- const searchOptions = {};
23
- if (options.limit) {
24
- searchOptions.limit = parseInt(options.limit, 10);
25
- }
26
- if (options.page) {
27
- searchOptions.page = parseInt(options.page, 10);
28
- }
29
- if (options.sort) {
30
- searchOptions.sort = options.sort;
31
- }
32
- const result = await client.search(query, searchOptions);
22
+ const limit = options.limit ? parseInt(options.limit, 10) : 20;
23
+ const results = await searchGitHubSkills(query, { limit });
33
24
  // JSON output mode
34
25
  if (options.json) {
35
- console.log(JSON.stringify(result, null, 2));
26
+ console.log(JSON.stringify(results, null, 2));
36
27
  return;
37
28
  }
38
- if (result.results.length === 0) {
29
+ if (results.length === 0) {
39
30
  logger.warn('No skills found matching your query');
31
+ logger.log(colors.dim('Try different keywords or check GitHub directly.'));
40
32
  return;
41
33
  }
42
- logger.log(`Found ${colors.cyan(String(result.total))} skill(s)`);
34
+ // Count skills with SKILL.md
35
+ const withSkillMd = results.filter((r) => r.hasSkill).length;
36
+ logger.log(`Found ${colors.cyan(String(results.length))} repository(s)` +
37
+ (withSkillMd > 0 ? ` (${colors.green(String(withSkillMd))} with SKILL.md)` : ''));
43
38
  logger.blank();
44
39
  // Display results
45
- for (const item of result.results) {
40
+ for (const item of results) {
46
41
  const name = colors.cyan(item.name);
47
- const version = colors.dim(`@${item.version}`);
48
- const downloads = colors.dim(`(${formatDownloads(item.downloads)} downloads)`);
49
- logger.log(`${name}${version} ${downloads}`);
42
+ const hasSkill = item.hasSkill ? colors.green(' ✓ SKILL.md') : '';
43
+ const stars = colors.yellow(`⭐${formatNumber(item.stars)}`);
44
+ logger.log(`${name}${hasSkill} ${stars}`);
45
+ logger.log(` ${colors.dim(item.fullName)}`);
50
46
  if (item.description) {
51
- logger.log(` ${colors.dim(item.description)}`);
47
+ logger.log(` ${item.description}`);
52
48
  }
53
- if (item.keywords && item.keywords.length > 0) {
54
- logger.log(` ${colors.dim('Keywords:')} ${item.keywords.join(', ')}`);
49
+ if (item.topics && item.topics.length > 0) {
50
+ logger.log(` ${colors.dim('Topics:')} ${item.topics.slice(0, 5).join(', ')}`);
51
+ }
52
+ if (item.installSource) {
53
+ logger.log(` ${colors.dim('Install:')} skillpkg install ${item.installSource}`);
55
54
  }
56
55
  logger.blank();
57
56
  }
58
- // Pagination info
59
- const totalPages = Math.ceil(result.total / result.limit);
60
- if (totalPages > 1) {
61
- logger.log(colors.dim(`Page ${result.page} of ${totalPages}. `) +
62
- colors.dim(`Use --page to navigate.`));
57
+ // Tip
58
+ if (withSkillMd === 0) {
59
+ logger.log(colors.dim('Tip: Repositories with SKILL.md can be installed directly. ' +
60
+ 'Others may require manual setup.'));
63
61
  }
64
62
  }
65
63
  catch (error) {
66
- if (error instanceof RegistryError) {
67
- if (error.code === 'NETWORK_ERROR') {
68
- logger.error('Unable to connect to registry');
69
- logger.log(`Registry URL: ${colors.dim(client.getRegistryUrl())}`);
70
- logger.log('Check your network connection or try again later.');
71
- }
72
- else {
73
- logger.error(`Registry error: ${error.message}`);
74
- }
64
+ const message = error instanceof Error ? error.message : String(error);
65
+ if (message.includes('rate limit')) {
66
+ logger.error('GitHub API rate limit exceeded');
67
+ logger.log(colors.dim('Set GITHUB_TOKEN environment variable for higher limits:'));
68
+ logger.log(colors.dim(' export GITHUB_TOKEN=your_token_here'));
75
69
  }
76
70
  else {
77
- logger.error(`Search failed: ${error instanceof Error ? error.message : error}`);
71
+ logger.error(`Search failed: ${message}`);
78
72
  }
79
73
  process.exit(1);
80
74
  }
81
75
  }
82
76
  /**
83
- * Format download count for display
77
+ * Format number for display (1000 -> 1K, 1000000 -> 1M)
84
78
  */
85
- function formatDownloads(count) {
79
+ function formatNumber(count) {
86
80
  if (count >= 1000000) {
87
81
  return `${(count / 1000000).toFixed(1)}M`;
88
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface StatusOptions {
2
+ json?: boolean;
3
+ }
4
+ /**
5
+ * status command handler
6
+ */
7
+ export declare function statusCommand(options: StatusOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAcA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAgCD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuLzE"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * status command - Show overall project status
3
+ *
4
+ * v2.0: Shows skills, MCP, and sync status
5
+ */
6
+ import { existsSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { createStateManager, createConfigManager, getImplementedTargets, } from 'skillpkg-core';
9
+ import { logger, colors } from '../ui/index.js';
10
+ /**
11
+ * status command handler
12
+ */
13
+ export async function statusCommand(options) {
14
+ const cwd = process.cwd();
15
+ const stateManager = createStateManager();
16
+ const configManager = createConfigManager();
17
+ // Load state and config
18
+ const state = await stateManager.loadState(cwd);
19
+ const config = await configManager.loadProjectConfig(cwd);
20
+ // Build status output
21
+ const output = {
22
+ project: {
23
+ name: config?.name || null,
24
+ configExists: config !== null,
25
+ stateExists: Object.keys(state.skills).length > 0,
26
+ },
27
+ skills: {
28
+ total: 0,
29
+ userInstalled: 0,
30
+ transitive: 0,
31
+ list: [],
32
+ },
33
+ mcp: {
34
+ configured: 0,
35
+ list: [],
36
+ },
37
+ sync: {
38
+ targetsEnabled: [],
39
+ lastSync: {},
40
+ },
41
+ };
42
+ // Skills info
43
+ for (const [name, skillState] of Object.entries(state.skills)) {
44
+ output.skills.total++;
45
+ if (skillState.installed_by === 'user') {
46
+ output.skills.userInstalled++;
47
+ }
48
+ else {
49
+ output.skills.transitive++;
50
+ }
51
+ output.skills.list.push({
52
+ name,
53
+ version: skillState.version,
54
+ installedBy: skillState.installed_by,
55
+ source: skillState.source,
56
+ });
57
+ }
58
+ // MCP info
59
+ if (config?.mcp) {
60
+ for (const [name, mcpConfig] of Object.entries(config.mcp)) {
61
+ output.mcp.configured++;
62
+ output.mcp.list.push({
63
+ name,
64
+ command: mcpConfig.command || mcpConfig.package,
65
+ });
66
+ }
67
+ }
68
+ // Sync info
69
+ if (config?.sync_targets) {
70
+ output.sync.targetsEnabled = Object.entries(config.sync_targets)
71
+ .filter(([_, enabled]) => enabled)
72
+ .map(([name]) => name);
73
+ }
74
+ // Get sync history from state
75
+ if (state.sync_history) {
76
+ for (const [target, timestamp] of Object.entries(state.sync_history)) {
77
+ output.sync.lastSync[target] = timestamp
78
+ ? new Date(timestamp).toLocaleString()
79
+ : null;
80
+ }
81
+ }
82
+ if (options.json) {
83
+ console.log(JSON.stringify(output, null, 2));
84
+ return;
85
+ }
86
+ // Human-readable output
87
+ logger.header('skillpkg Status');
88
+ logger.blank();
89
+ // Project section
90
+ logger.log(colors.bold('Project'));
91
+ if (config) {
92
+ logger.item(`Name: ${colors.cyan(config.name)}`);
93
+ logger.item(`Config: ${colors.green('skillpkg.json found')}`);
94
+ }
95
+ else {
96
+ logger.item(`Config: ${colors.yellow('No skillpkg.json')}`);
97
+ logger.log(` Run ${colors.cyan('skillpkg init')} to create one`);
98
+ }
99
+ logger.blank();
100
+ // Skills section
101
+ logger.log(colors.bold('Skills'));
102
+ if (output.skills.total === 0) {
103
+ logger.item(colors.dim('No skills installed'));
104
+ logger.log(` Run ${colors.cyan('skillpkg install <skill>')} to install`);
105
+ }
106
+ else {
107
+ logger.item(`Total: ${colors.cyan(String(output.skills.total))} ` +
108
+ `(${output.skills.userInstalled} direct, ${output.skills.transitive} transitive)`);
109
+ // List skills grouped by install type
110
+ const userSkills = output.skills.list.filter((s) => s.installedBy === 'user');
111
+ const transitiveSkills = output.skills.list.filter((s) => s.installedBy !== 'user');
112
+ if (userSkills.length > 0) {
113
+ logger.log(' Direct:');
114
+ for (const skill of userSkills) {
115
+ logger.log(` ${colors.cyan(skill.name)} ${colors.dim(`v${skill.version}`)}`);
116
+ }
117
+ }
118
+ if (transitiveSkills.length > 0) {
119
+ logger.log(' Transitive:');
120
+ for (const skill of transitiveSkills) {
121
+ logger.log(` ${colors.dim(skill.name)} ${colors.dim(`v${skill.version}`)} ` +
122
+ colors.dim(`(via ${skill.installedBy})`));
123
+ }
124
+ }
125
+ }
126
+ logger.blank();
127
+ // MCP section
128
+ logger.log(colors.bold('MCP Servers'));
129
+ if (output.mcp.configured === 0) {
130
+ logger.item(colors.dim('No MCP servers configured'));
131
+ }
132
+ else {
133
+ logger.item(`Configured: ${colors.cyan(String(output.mcp.configured))}`);
134
+ for (const mcp of output.mcp.list) {
135
+ logger.log(` ${colors.cyan(mcp.name)}: ${colors.dim(mcp.command)}`);
136
+ }
137
+ }
138
+ logger.blank();
139
+ // Sync section
140
+ logger.log(colors.bold('Sync Targets'));
141
+ const implementedTargets = getImplementedTargets();
142
+ const implementedIds = implementedTargets.map((t) => t.id);
143
+ if (output.sync.targetsEnabled.length === 0) {
144
+ logger.item(colors.dim('No sync targets enabled'));
145
+ }
146
+ else {
147
+ for (const target of output.sync.targetsEnabled) {
148
+ const isImplemented = implementedIds.includes(target);
149
+ const lastSync = output.sync.lastSync[target];
150
+ const status = isImplemented
151
+ ? lastSync
152
+ ? colors.green(`synced ${lastSync}`)
153
+ : colors.yellow('not synced')
154
+ : colors.dim('(not implemented)');
155
+ logger.item(`${colors.cyan(target)}: ${status}`);
156
+ // Check if target directory exists
157
+ const targetConfig = implementedTargets.find((t) => t.id === target);
158
+ if (targetConfig) {
159
+ const targetPath = join(cwd, targetConfig.outputPath);
160
+ const exists = existsSync(targetPath);
161
+ if (!exists) {
162
+ logger.log(` ${colors.dim('Directory not created yet')}`);
163
+ }
164
+ }
165
+ }
166
+ }
167
+ logger.blank();
168
+ // Quick actions
169
+ logger.log(colors.bold('Quick Actions'));
170
+ if (output.skills.total === 0) {
171
+ logger.item(`${colors.cyan('skillpkg search <query>')} - Find skills`);
172
+ logger.item(`${colors.cyan('skillpkg install <skill>')} - Install a skill`);
173
+ }
174
+ else {
175
+ logger.item(`${colors.cyan('skillpkg sync')} - Sync skills to platforms`);
176
+ logger.item(`${colors.cyan('skillpkg tree')} - View dependency tree`);
177
+ }
178
+ logger.blank();
179
+ }
180
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA6If"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Jf"}