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.
- package/dist/adapters/base.d.ts +48 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +54 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude-code.d.ts +39 -0
- package/dist/adapters/claude-code.d.ts.map +1 -0
- package/dist/adapters/claude-code.js +172 -0
- package/dist/adapters/claude-code.js.map +1 -0
- package/dist/adapters/cline.d.ts +43 -0
- package/dist/adapters/cline.d.ts.map +1 -0
- package/dist/adapters/cline.js +157 -0
- package/dist/adapters/cline.js.map +1 -0
- package/dist/adapters/codex.d.ts +31 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +117 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/copilot.d.ts +44 -0
- package/dist/adapters/copilot.d.ts.map +1 -0
- package/dist/adapters/copilot.js +183 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +13 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.d.ts +51 -0
- package/dist/adapters/manager.d.ts.map +1 -0
- package/dist/adapters/manager.js +147 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/adapters/types.d.ts +93 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/exporter/exporter.d.ts +54 -0
- package/dist/exporter/exporter.d.ts.map +1 -0
- package/dist/exporter/exporter.js +303 -0
- package/dist/exporter/exporter.js.map +1 -0
- package/dist/exporter/index.d.ts +6 -0
- package/dist/exporter/index.d.ts.map +1 -0
- package/dist/exporter/index.js +6 -0
- package/dist/exporter/index.js.map +1 -0
- package/dist/exporter/types.d.ts +38 -0
- package/dist/exporter/types.d.ts.map +1 -0
- package/dist/exporter/types.js +5 -0
- package/dist/exporter/types.js.map +1 -0
- package/dist/importer/importer.d.ts +37 -0
- package/dist/importer/importer.d.ts.map +1 -0
- package/dist/importer/importer.js +204 -0
- package/dist/importer/importer.js.map +1 -0
- package/dist/importer/index.d.ts +6 -0
- package/dist/importer/index.d.ts.map +1 -0
- package/dist/importer/index.js +6 -0
- package/dist/importer/index.js.map +1 -0
- package/dist/importer/types.d.ts +43 -0
- package/dist/importer/types.d.ts.map +1 -0
- package/dist/importer/types.js +2 -0
- package/dist/importer/types.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/index.d.ts +23 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +24 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/parser.d.ts +64 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +121 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/schema.d.ts +155 -0
- package/dist/parser/schema.d.ts.map +1 -0
- package/dist/parser/schema.js +147 -0
- package/dist/parser/schema.js.map +1 -0
- package/dist/parser/validator.d.ts +38 -0
- package/dist/parser/validator.d.ts.map +1 -0
- package/dist/parser/validator.js +125 -0
- package/dist/parser/validator.js.map +1 -0
- package/dist/registry/auth.d.ts +38 -0
- package/dist/registry/auth.d.ts.map +1 -0
- package/dist/registry/auth.js +142 -0
- package/dist/registry/auth.js.map +1 -0
- package/dist/registry/client.d.ts +80 -0
- package/dist/registry/client.d.ts.map +1 -0
- package/dist/registry/client.js +238 -0
- package/dist/registry/client.js.map +1 -0
- package/dist/registry/index.d.ts +10 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +9 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/types.d.ts +94 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +18 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/store/config.d.ts +30 -0
- package/dist/store/config.d.ts.map +1 -0
- package/dist/store/config.js +112 -0
- package/dist/store/config.js.map +1 -0
- package/dist/store/index.d.ts +21 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +24 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/manager.d.ts +113 -0
- package/dist/store/manager.d.ts.map +1 -0
- package/dist/store/manager.js +250 -0
- package/dist/store/manager.js.map +1 -0
- package/dist/store/paths.d.ts +37 -0
- package/dist/store/paths.d.ts.map +1 -0
- package/dist/store/paths.js +60 -0
- package/dist/store/paths.js.map +1 -0
- package/dist/store/registry.d.ts +34 -0
- package/dist/store/registry.d.ts.map +1 -0
- package/dist/store/registry.js +105 -0
- package/dist/store/registry.js.map +1 -0
- package/dist/types.d.ts +130 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|