skillpkg-core 0.1.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 (117) hide show
  1. package/dist/adapters/base.d.ts +48 -0
  2. package/dist/adapters/base.d.ts.map +1 -0
  3. package/dist/adapters/base.js +54 -0
  4. package/dist/adapters/base.js.map +1 -0
  5. package/dist/adapters/claude-code.d.ts +39 -0
  6. package/dist/adapters/claude-code.d.ts.map +1 -0
  7. package/dist/adapters/claude-code.js +172 -0
  8. package/dist/adapters/claude-code.js.map +1 -0
  9. package/dist/adapters/cline.d.ts +43 -0
  10. package/dist/adapters/cline.d.ts.map +1 -0
  11. package/dist/adapters/cline.js +157 -0
  12. package/dist/adapters/cline.js.map +1 -0
  13. package/dist/adapters/codex.d.ts +31 -0
  14. package/dist/adapters/codex.d.ts.map +1 -0
  15. package/dist/adapters/codex.js +117 -0
  16. package/dist/adapters/codex.js.map +1 -0
  17. package/dist/adapters/copilot.d.ts +44 -0
  18. package/dist/adapters/copilot.d.ts.map +1 -0
  19. package/dist/adapters/copilot.js +183 -0
  20. package/dist/adapters/copilot.js.map +1 -0
  21. package/dist/adapters/index.d.ts +11 -0
  22. package/dist/adapters/index.d.ts.map +1 -0
  23. package/dist/adapters/index.js +13 -0
  24. package/dist/adapters/index.js.map +1 -0
  25. package/dist/adapters/manager.d.ts +51 -0
  26. package/dist/adapters/manager.d.ts.map +1 -0
  27. package/dist/adapters/manager.js +147 -0
  28. package/dist/adapters/manager.js.map +1 -0
  29. package/dist/adapters/types.d.ts +93 -0
  30. package/dist/adapters/types.d.ts.map +1 -0
  31. package/dist/adapters/types.js +2 -0
  32. package/dist/adapters/types.js.map +1 -0
  33. package/dist/exporter/exporter.d.ts +54 -0
  34. package/dist/exporter/exporter.d.ts.map +1 -0
  35. package/dist/exporter/exporter.js +303 -0
  36. package/dist/exporter/exporter.js.map +1 -0
  37. package/dist/exporter/index.d.ts +6 -0
  38. package/dist/exporter/index.d.ts.map +1 -0
  39. package/dist/exporter/index.js +6 -0
  40. package/dist/exporter/index.js.map +1 -0
  41. package/dist/exporter/types.d.ts +38 -0
  42. package/dist/exporter/types.d.ts.map +1 -0
  43. package/dist/exporter/types.js +5 -0
  44. package/dist/exporter/types.js.map +1 -0
  45. package/dist/importer/importer.d.ts +37 -0
  46. package/dist/importer/importer.d.ts.map +1 -0
  47. package/dist/importer/importer.js +204 -0
  48. package/dist/importer/importer.js.map +1 -0
  49. package/dist/importer/index.d.ts +6 -0
  50. package/dist/importer/index.d.ts.map +1 -0
  51. package/dist/importer/index.js +6 -0
  52. package/dist/importer/index.js.map +1 -0
  53. package/dist/importer/types.d.ts +43 -0
  54. package/dist/importer/types.d.ts.map +1 -0
  55. package/dist/importer/types.js +2 -0
  56. package/dist/importer/types.js.map +1 -0
  57. package/dist/index.d.ts +14 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +21 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/parser/index.d.ts +23 -0
  62. package/dist/parser/index.d.ts.map +1 -0
  63. package/dist/parser/index.js +24 -0
  64. package/dist/parser/index.js.map +1 -0
  65. package/dist/parser/parser.d.ts +64 -0
  66. package/dist/parser/parser.d.ts.map +1 -0
  67. package/dist/parser/parser.js +121 -0
  68. package/dist/parser/parser.js.map +1 -0
  69. package/dist/parser/schema.d.ts +155 -0
  70. package/dist/parser/schema.d.ts.map +1 -0
  71. package/dist/parser/schema.js +147 -0
  72. package/dist/parser/schema.js.map +1 -0
  73. package/dist/parser/validator.d.ts +38 -0
  74. package/dist/parser/validator.d.ts.map +1 -0
  75. package/dist/parser/validator.js +125 -0
  76. package/dist/parser/validator.js.map +1 -0
  77. package/dist/registry/auth.d.ts +38 -0
  78. package/dist/registry/auth.d.ts.map +1 -0
  79. package/dist/registry/auth.js +142 -0
  80. package/dist/registry/auth.js.map +1 -0
  81. package/dist/registry/client.d.ts +80 -0
  82. package/dist/registry/client.d.ts.map +1 -0
  83. package/dist/registry/client.js +238 -0
  84. package/dist/registry/client.js.map +1 -0
  85. package/dist/registry/index.d.ts +10 -0
  86. package/dist/registry/index.d.ts.map +1 -0
  87. package/dist/registry/index.js +9 -0
  88. package/dist/registry/index.js.map +1 -0
  89. package/dist/registry/types.d.ts +94 -0
  90. package/dist/registry/types.d.ts.map +1 -0
  91. package/dist/registry/types.js +18 -0
  92. package/dist/registry/types.js.map +1 -0
  93. package/dist/store/config.d.ts +30 -0
  94. package/dist/store/config.d.ts.map +1 -0
  95. package/dist/store/config.js +112 -0
  96. package/dist/store/config.js.map +1 -0
  97. package/dist/store/index.d.ts +21 -0
  98. package/dist/store/index.d.ts.map +1 -0
  99. package/dist/store/index.js +24 -0
  100. package/dist/store/index.js.map +1 -0
  101. package/dist/store/manager.d.ts +113 -0
  102. package/dist/store/manager.d.ts.map +1 -0
  103. package/dist/store/manager.js +250 -0
  104. package/dist/store/manager.js.map +1 -0
  105. package/dist/store/paths.d.ts +37 -0
  106. package/dist/store/paths.d.ts.map +1 -0
  107. package/dist/store/paths.js +60 -0
  108. package/dist/store/paths.js.map +1 -0
  109. package/dist/store/registry.d.ts +34 -0
  110. package/dist/store/registry.d.ts.map +1 -0
  111. package/dist/store/registry.js +105 -0
  112. package/dist/store/registry.js.map +1 -0
  113. package/dist/types.d.ts +130 -0
  114. package/dist/types.d.ts.map +1 -0
  115. package/dist/types.js +8 -0
  116. package/dist/types.js.map +1 -0
  117. package/package.json +61 -0
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Adapter types and interfaces
3
+ */
4
+ import type { Skill } from '../types.js';
5
+ /**
6
+ * Platform adapter interface
7
+ */
8
+ export interface PlatformAdapter {
9
+ /** Platform identifier (e.g., 'claude-code', 'codex') */
10
+ name: string;
11
+ /** Human-readable name (e.g., 'Claude Code') */
12
+ displayName: string;
13
+ /**
14
+ * Detect if this platform is present in the project
15
+ */
16
+ detect(projectPath: string): Promise<boolean>;
17
+ /**
18
+ * Sync a skill to this platform
19
+ */
20
+ sync(skill: Skill, projectPath: string): Promise<void>;
21
+ /**
22
+ * Remove a skill from this platform
23
+ */
24
+ remove(skillName: string, projectPath: string): Promise<void>;
25
+ /**
26
+ * Get the output path for a skill
27
+ */
28
+ getOutputPath(skillName: string, projectPath: string): string;
29
+ /**
30
+ * Check if a path can be imported from this platform
31
+ */
32
+ canImport(path: string): Promise<boolean>;
33
+ /**
34
+ * Import a skill from this platform format
35
+ */
36
+ import(path: string): Promise<Skill>;
37
+ }
38
+ /**
39
+ * Detected platform info
40
+ */
41
+ export interface DetectedPlatform {
42
+ name: string;
43
+ displayName: string;
44
+ detected: boolean;
45
+ path: string;
46
+ }
47
+ /**
48
+ * Sync options
49
+ */
50
+ export interface SyncOptions {
51
+ /** Project path (default: cwd) */
52
+ projectPath?: string;
53
+ /** Only sync to specific platforms */
54
+ platforms?: string[];
55
+ /** Dry run mode (preview only) */
56
+ dryRun?: boolean;
57
+ /** Backup existing files */
58
+ backup?: boolean;
59
+ }
60
+ /**
61
+ * Synced item info
62
+ */
63
+ export interface SyncedItem {
64
+ skill: string;
65
+ platform: string;
66
+ path: string;
67
+ }
68
+ /**
69
+ * Skipped item info
70
+ */
71
+ export interface SkippedItem {
72
+ skill: string;
73
+ platform: string;
74
+ reason: string;
75
+ }
76
+ /**
77
+ * Sync error info
78
+ */
79
+ export interface SyncError {
80
+ skill: string;
81
+ platform: string;
82
+ error: string;
83
+ }
84
+ /**
85
+ * Sync result
86
+ */
87
+ export interface SyncResult {
88
+ success: boolean;
89
+ synced: SyncedItem[];
90
+ skipped: SkippedItem[];
91
+ errors: SyncError[];
92
+ }
93
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IAEb,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9C;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import type { Skill } from '../types.js';
2
+ import type { ExportOptions, ExportResult, BatchExportResult } from './types.js';
3
+ /**
4
+ * Exporter class
5
+ */
6
+ export declare class Exporter {
7
+ /**
8
+ * Export a skill to the specified format
9
+ */
10
+ export(skill: Skill, options?: ExportOptions): Promise<ExportResult>;
11
+ /**
12
+ * Export multiple skills
13
+ */
14
+ exportBatch(skills: Skill[], options?: ExportOptions): Promise<BatchExportResult>;
15
+ /**
16
+ * Export as directory with skill.yaml
17
+ */
18
+ private exportAsDir;
19
+ /**
20
+ * Export as zip file
21
+ * Uses a simple implementation without external dependencies
22
+ */
23
+ private exportAsZip;
24
+ /**
25
+ * Export as tarball (.tar.gz)
26
+ */
27
+ private exportAsTarball;
28
+ /**
29
+ * Export as .skillpkg pack (same as tarball but with .skillpkg extension)
30
+ */
31
+ private exportAsPack;
32
+ /**
33
+ * Create a simple zip file (store method, no compression)
34
+ * Minimal implementation without external dependencies
35
+ */
36
+ private createSimpleZip;
37
+ /**
38
+ * Calculate CRC-32 checksum
39
+ */
40
+ private crc32;
41
+ /**
42
+ * Get CRC-32 lookup table
43
+ */
44
+ private getCrc32Table;
45
+ /**
46
+ * Check if a path exists
47
+ */
48
+ private pathExists;
49
+ }
50
+ /**
51
+ * Create a new Exporter instance
52
+ */
53
+ export declare function createExporter(): Exporter;
54
+ //# sourceMappingURL=exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/exporter/exporter.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAkCxB;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAoB7B;;OAEG;YACW,WAAW;IAmCzB;;;OAGG;YACW,WAAW;IAqCzB;;OAEG;YACW,eAAe;IA4C7B;;OAEG;YACW,YAAY;IA0C1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA6DvB;;OAEG;IACH,OAAO,CAAC,KAAK;IAWb;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;YACW,UAAU;CAQzB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAEzC"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * Exporter - Export skills to various formats
3
+ */
4
+ import { mkdir, writeFile, stat } from 'fs/promises';
5
+ import { createWriteStream } from 'fs';
6
+ import { join } from 'path';
7
+ import { createGzip } from 'zlib';
8
+ import { pipeline } from 'stream/promises';
9
+ import { pack as tarPack } from 'tar-stream';
10
+ import { stringify } from '../parser/index.js';
11
+ /**
12
+ * Exporter class
13
+ */
14
+ export class Exporter {
15
+ /**
16
+ * Export a skill to the specified format
17
+ */
18
+ async export(skill, options = {}) {
19
+ const format = options.format || 'dir';
20
+ const outputBase = options.output || process.cwd();
21
+ try {
22
+ switch (format) {
23
+ case 'dir':
24
+ return await this.exportAsDir(skill, outputBase, options);
25
+ case 'zip':
26
+ return await this.exportAsZip(skill, outputBase, options);
27
+ case 'tarball':
28
+ return await this.exportAsTarball(skill, outputBase, options);
29
+ case 'pack':
30
+ return await this.exportAsPack(skill, outputBase, options);
31
+ default:
32
+ return {
33
+ success: false,
34
+ skillName: skill.name,
35
+ format,
36
+ outputPath: '',
37
+ error: `Unknown format: ${format}`,
38
+ };
39
+ }
40
+ }
41
+ catch (error) {
42
+ return {
43
+ success: false,
44
+ skillName: skill.name,
45
+ format,
46
+ outputPath: '',
47
+ error: error instanceof Error ? error.message : String(error),
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Export multiple skills
53
+ */
54
+ async exportBatch(skills, options = {}) {
55
+ const result = {
56
+ exported: [],
57
+ failed: [],
58
+ total: skills.length,
59
+ };
60
+ for (const skill of skills) {
61
+ const exportResult = await this.export(skill, options);
62
+ if (exportResult.success) {
63
+ result.exported.push(exportResult);
64
+ }
65
+ else {
66
+ result.failed.push(exportResult);
67
+ }
68
+ }
69
+ return result;
70
+ }
71
+ /**
72
+ * Export as directory with skill.yaml
73
+ */
74
+ async exportAsDir(skill, outputBase, options) {
75
+ const dirPath = join(outputBase, skill.name);
76
+ const yamlPath = join(dirPath, 'skill.yaml');
77
+ // Check if directory exists
78
+ const exists = await this.pathExists(dirPath);
79
+ if (exists && !options.overwrite) {
80
+ return {
81
+ success: false,
82
+ skillName: skill.name,
83
+ format: 'dir',
84
+ outputPath: dirPath,
85
+ error: 'Directory already exists',
86
+ };
87
+ }
88
+ // Create directory
89
+ await mkdir(dirPath, { recursive: true });
90
+ // Write skill.yaml
91
+ const yamlContent = stringify(skill);
92
+ await writeFile(yamlPath, yamlContent, 'utf-8');
93
+ return {
94
+ success: true,
95
+ skillName: skill.name,
96
+ format: 'dir',
97
+ outputPath: dirPath,
98
+ };
99
+ }
100
+ /**
101
+ * Export as zip file
102
+ * Uses a simple implementation without external dependencies
103
+ */
104
+ async exportAsZip(skill, outputBase, options) {
105
+ const zipPath = join(outputBase, `${skill.name}.zip`);
106
+ // Check if file exists
107
+ const exists = await this.pathExists(zipPath);
108
+ if (exists && !options.overwrite) {
109
+ return {
110
+ success: false,
111
+ skillName: skill.name,
112
+ format: 'zip',
113
+ outputPath: zipPath,
114
+ error: 'File already exists',
115
+ };
116
+ }
117
+ // Create a simple zip file using store method (no compression)
118
+ // This is a minimal implementation without archiver dependency
119
+ const yamlContent = stringify(skill);
120
+ const zipBuffer = this.createSimpleZip(skill.name, yamlContent);
121
+ await writeFile(zipPath, zipBuffer);
122
+ const stats = await stat(zipPath);
123
+ return {
124
+ success: true,
125
+ skillName: skill.name,
126
+ format: 'zip',
127
+ outputPath: zipPath,
128
+ size: stats.size,
129
+ };
130
+ }
131
+ /**
132
+ * Export as tarball (.tar.gz)
133
+ */
134
+ async exportAsTarball(skill, outputBase, options) {
135
+ const tarPath = join(outputBase, `${skill.name}.tar.gz`);
136
+ // Check if file exists
137
+ const exists = await this.pathExists(tarPath);
138
+ if (exists && !options.overwrite) {
139
+ return {
140
+ success: false,
141
+ skillName: skill.name,
142
+ format: 'tarball',
143
+ outputPath: tarPath,
144
+ error: 'File already exists',
145
+ };
146
+ }
147
+ // Create tarball
148
+ const yamlContent = stringify(skill);
149
+ const pack = tarPack();
150
+ // Add skill.yaml to archive
151
+ pack.entry({ name: `${skill.name}/skill.yaml` }, yamlContent);
152
+ pack.finalize();
153
+ // Gzip and write to file
154
+ const gzip = createGzip();
155
+ const output = createWriteStream(tarPath);
156
+ await pipeline(pack, gzip, output);
157
+ const stats = await stat(tarPath);
158
+ return {
159
+ success: true,
160
+ skillName: skill.name,
161
+ format: 'tarball',
162
+ outputPath: tarPath,
163
+ size: stats.size,
164
+ };
165
+ }
166
+ /**
167
+ * Export as .skillpkg pack (same as tarball but with .skillpkg extension)
168
+ */
169
+ async exportAsPack(skill, outputBase, options) {
170
+ const packPath = join(outputBase, `${skill.name}.skillpkg`);
171
+ // Check if file exists
172
+ const exists = await this.pathExists(packPath);
173
+ if (exists && !options.overwrite) {
174
+ return {
175
+ success: false,
176
+ skillName: skill.name,
177
+ format: 'pack',
178
+ outputPath: packPath,
179
+ error: 'File already exists',
180
+ };
181
+ }
182
+ // Create tarball (same as tarball format)
183
+ const yamlContent = stringify(skill);
184
+ const pack = tarPack();
185
+ pack.entry({ name: `${skill.name}/skill.yaml` }, yamlContent);
186
+ pack.finalize();
187
+ const gzip = createGzip();
188
+ const output = createWriteStream(packPath);
189
+ await pipeline(pack, gzip, output);
190
+ const stats = await stat(packPath);
191
+ return {
192
+ success: true,
193
+ skillName: skill.name,
194
+ format: 'pack',
195
+ outputPath: packPath,
196
+ size: stats.size,
197
+ };
198
+ }
199
+ /**
200
+ * Create a simple zip file (store method, no compression)
201
+ * Minimal implementation without external dependencies
202
+ */
203
+ createSimpleZip(skillName, content) {
204
+ const fileName = `${skillName}/skill.yaml`;
205
+ const fileNameBuffer = Buffer.from(fileName, 'utf-8');
206
+ const contentBuffer = Buffer.from(content, 'utf-8');
207
+ // Local file header
208
+ const localHeader = Buffer.alloc(30 + fileNameBuffer.length);
209
+ localHeader.writeUInt32LE(0x04034b50, 0); // Signature
210
+ localHeader.writeUInt16LE(20, 4); // Version needed
211
+ localHeader.writeUInt16LE(0, 6); // Flags
212
+ localHeader.writeUInt16LE(0, 8); // Compression method (store)
213
+ localHeader.writeUInt16LE(0, 10); // Mod time
214
+ localHeader.writeUInt16LE(0, 12); // Mod date
215
+ localHeader.writeUInt32LE(this.crc32(contentBuffer), 14); // CRC-32
216
+ localHeader.writeUInt32LE(contentBuffer.length, 18); // Compressed size
217
+ localHeader.writeUInt32LE(contentBuffer.length, 22); // Uncompressed size
218
+ localHeader.writeUInt16LE(fileNameBuffer.length, 26); // File name length
219
+ localHeader.writeUInt16LE(0, 28); // Extra field length
220
+ fileNameBuffer.copy(localHeader, 30);
221
+ // Central directory header
222
+ const centralHeader = Buffer.alloc(46 + fileNameBuffer.length);
223
+ centralHeader.writeUInt32LE(0x02014b50, 0); // Signature
224
+ centralHeader.writeUInt16LE(20, 4); // Version made by
225
+ centralHeader.writeUInt16LE(20, 6); // Version needed
226
+ centralHeader.writeUInt16LE(0, 8); // Flags
227
+ centralHeader.writeUInt16LE(0, 10); // Compression method
228
+ centralHeader.writeUInt16LE(0, 12); // Mod time
229
+ centralHeader.writeUInt16LE(0, 14); // Mod date
230
+ centralHeader.writeUInt32LE(this.crc32(contentBuffer), 16); // CRC-32
231
+ centralHeader.writeUInt32LE(contentBuffer.length, 20); // Compressed size
232
+ centralHeader.writeUInt32LE(contentBuffer.length, 24); // Uncompressed size
233
+ centralHeader.writeUInt16LE(fileNameBuffer.length, 28); // File name length
234
+ centralHeader.writeUInt16LE(0, 30); // Extra field length
235
+ centralHeader.writeUInt16LE(0, 32); // Comment length
236
+ centralHeader.writeUInt16LE(0, 34); // Disk number
237
+ centralHeader.writeUInt16LE(0, 36); // Internal attributes
238
+ centralHeader.writeUInt32LE(0, 38); // External attributes
239
+ centralHeader.writeUInt32LE(0, 42); // Offset of local header
240
+ fileNameBuffer.copy(centralHeader, 46);
241
+ // End of central directory
242
+ const endOfCentral = Buffer.alloc(22);
243
+ const centralOffset = localHeader.length + contentBuffer.length;
244
+ endOfCentral.writeUInt32LE(0x06054b50, 0); // Signature
245
+ endOfCentral.writeUInt16LE(0, 4); // Disk number
246
+ endOfCentral.writeUInt16LE(0, 6); // Central dir disk
247
+ endOfCentral.writeUInt16LE(1, 8); // Entries on this disk
248
+ endOfCentral.writeUInt16LE(1, 10); // Total entries
249
+ endOfCentral.writeUInt32LE(centralHeader.length, 12); // Central dir size
250
+ endOfCentral.writeUInt32LE(centralOffset, 16); // Central dir offset
251
+ endOfCentral.writeUInt16LE(0, 20); // Comment length
252
+ return Buffer.concat([
253
+ localHeader,
254
+ contentBuffer,
255
+ centralHeader,
256
+ endOfCentral,
257
+ ]);
258
+ }
259
+ /**
260
+ * Calculate CRC-32 checksum
261
+ */
262
+ crc32(buffer) {
263
+ let crc = 0xffffffff;
264
+ const table = this.getCrc32Table();
265
+ for (const byte of buffer) {
266
+ crc = (crc >>> 8) ^ table[(crc ^ byte) & 0xff];
267
+ }
268
+ return (crc ^ 0xffffffff) >>> 0;
269
+ }
270
+ /**
271
+ * Get CRC-32 lookup table
272
+ */
273
+ getCrc32Table() {
274
+ const table = [];
275
+ for (let i = 0; i < 256; i++) {
276
+ let crc = i;
277
+ for (let j = 0; j < 8; j++) {
278
+ crc = crc & 1 ? (crc >>> 1) ^ 0xedb88320 : crc >>> 1;
279
+ }
280
+ table[i] = crc;
281
+ }
282
+ return table;
283
+ }
284
+ /**
285
+ * Check if a path exists
286
+ */
287
+ async pathExists(path) {
288
+ try {
289
+ await stat(path);
290
+ return true;
291
+ }
292
+ catch {
293
+ return false;
294
+ }
295
+ }
296
+ }
297
+ /**
298
+ * Create a new Exporter instance
299
+ */
300
+ export function createExporter() {
301
+ return new Exporter();
302
+ }
303
+ //# sourceMappingURL=exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../src/exporter/exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Exporter module - Export skills to various formats
3
+ */
4
+ export type { ExportFormat, ExportOptions, ExportResult, BatchExportResult, } from './types.js';
5
+ export { Exporter, createExporter } from './exporter.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Exporter module - Export skills to various formats
3
+ */
4
+ // Exporter
5
+ export { Exporter, createExporter } from './exporter.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,WAAW;AACX,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Exporter types
3
+ */
4
+ /**
5
+ * Export format
6
+ */
7
+ export type ExportFormat = 'dir' | 'zip' | 'tarball' | 'pack';
8
+ /**
9
+ * Export options
10
+ */
11
+ export interface ExportOptions {
12
+ /** Output path (directory for 'dir', file path for others) */
13
+ output?: string;
14
+ /** Export format */
15
+ format?: ExportFormat;
16
+ /** Overwrite existing files */
17
+ overwrite?: boolean;
18
+ }
19
+ /**
20
+ * Export result
21
+ */
22
+ export interface ExportResult {
23
+ success: boolean;
24
+ skillName: string;
25
+ format: ExportFormat;
26
+ outputPath: string;
27
+ size?: number;
28
+ error?: string;
29
+ }
30
+ /**
31
+ * Batch export result
32
+ */
33
+ export interface BatchExportResult {
34
+ exported: ExportResult[];
35
+ failed: ExportResult[];
36
+ total: number;
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exporter/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Exporter types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/exporter/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,37 @@
1
+ import type { ImportResult, BatchImportResult, ImportOptions, DetectedFile } from './types.js';
2
+ /**
3
+ * Importer class
4
+ */
5
+ export declare class Importer {
6
+ private adapters;
7
+ constructor();
8
+ /**
9
+ * Detect importable files in a path
10
+ */
11
+ detect(path: string): Promise<DetectedFile[]>;
12
+ /**
13
+ * Scan directory recursively for importable files
14
+ */
15
+ private scanDirectory;
16
+ /**
17
+ * Check if a directory should be skipped during scanning
18
+ */
19
+ private shouldSkipDirectory;
20
+ /**
21
+ * Import a single file
22
+ */
23
+ importFile(path: string, options?: ImportOptions): Promise<ImportResult>;
24
+ /**
25
+ * Import multiple files (batch import)
26
+ */
27
+ importBatch(paths: string[], options?: ImportOptions): Promise<BatchImportResult>;
28
+ /**
29
+ * Import from a path (file or directory)
30
+ */
31
+ importFrom(path: string, options?: ImportOptions): Promise<BatchImportResult>;
32
+ }
33
+ /**
34
+ * Create a new Importer instance
35
+ */
36
+ export declare function createImporter(): Importer;
37
+ //# sourceMappingURL=importer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../src/importer/importer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAoB;;IAOpC;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA4BnD;;OAEG;YACW,aAAa;IAyC3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAmDxB;;OAEG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAqB7B;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;CAyB9B;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAEzC"}