@speclife/core 0.10.0 → 0.12.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.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Antigravity editor configurator
3
+ * Google's AI-powered IDE using .agent directory with flat workflow files
4
+ */
5
+ import { EditorConfigurator, type ConfigureResult, type ConfigureOptions } from './base.js';
6
+ export declare class AntigravityConfigurator extends EditorConfigurator {
7
+ readonly name = "Antigravity";
8
+ readonly id = "antigravity";
9
+ readonly description = "Google's AI-powered IDE";
10
+ readonly configDir = ".agent";
11
+ readonly supportsDashPrefix = false;
12
+ isAvailable(_projectPath: string): Promise<boolean>;
13
+ isConfigured(projectPath: string): Promise<boolean>;
14
+ configure(options: ConfigureOptions): Promise<ConfigureResult>;
15
+ unconfigure(projectPath: string): Promise<void>;
16
+ /**
17
+ * Override detection paths for Antigravity
18
+ */
19
+ getDetectionPaths(): string[];
20
+ private discoverCommands;
21
+ }
22
+ //# sourceMappingURL=antigravity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/configurators/antigravity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE5F,qBAAa,uBAAwB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,WAAW,6BAA6B;IACjD,QAAQ,CAAC,SAAS,YAAY;IAC9B,QAAQ,CAAC,kBAAkB,SAAS;IAE9B,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWnD,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoD9D,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD;;OAEG;IACM,iBAAiB,IAAI,MAAM,EAAE;YAIxB,gBAAgB;CAU/B"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Antigravity editor configurator
3
+ * Google's AI-powered IDE using .agent directory with flat workflow files
4
+ */
5
+ import { access, mkdir, symlink, unlink, lstat, readdir } from 'fs/promises';
6
+ import { join } from 'path';
7
+ import { EditorConfigurator } from './base.js';
8
+ export class AntigravityConfigurator extends EditorConfigurator {
9
+ name = 'Antigravity';
10
+ id = 'antigravity';
11
+ description = "Google's AI-powered IDE";
12
+ configDir = '.agent';
13
+ supportsDashPrefix = false; // Dash-prefix IS the primary format, not secondary
14
+ async isAvailable(_projectPath) {
15
+ // Antigravity is always available as a supported editor
16
+ return true;
17
+ }
18
+ async isConfigured(projectPath) {
19
+ try {
20
+ // Check if any speclife-*.md files exist in .agent/workflows/
21
+ const workflowsDir = join(projectPath, this.configDir, 'workflows');
22
+ const files = await readdir(workflowsDir);
23
+ return files.some(f => f.startsWith('speclife-') && f.endsWith('.md'));
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
29
+ async configure(options) {
30
+ const { projectPath, specDir, force = false } = options;
31
+ const result = {
32
+ success: true,
33
+ filesModified: [],
34
+ filesSkipped: [],
35
+ warnings: [],
36
+ };
37
+ const sourceDir = join(projectPath, specDir, 'commands', 'speclife');
38
+ // Antigravity uses flat files: .agent/workflows/speclife-<cmd>.md
39
+ const workflowsDir = join(projectPath, this.configDir, 'workflows');
40
+ try {
41
+ // Ensure workflows directory exists
42
+ await mkdir(workflowsDir, { recursive: true });
43
+ // Discover available commands
44
+ const commands = await this.discoverCommands(sourceDir);
45
+ // Create individual symlinks for each command
46
+ for (const cmd of commands) {
47
+ const dashFile = join(workflowsDir, `speclife-${cmd}.md`);
48
+ const targetFile = join(sourceDir, `${cmd}.md`);
49
+ try {
50
+ await access(dashFile);
51
+ if (force) {
52
+ await unlink(dashFile);
53
+ await symlink(targetFile, dashFile);
54
+ result.filesModified.push(dashFile);
55
+ }
56
+ else {
57
+ result.filesSkipped.push(dashFile);
58
+ }
59
+ }
60
+ catch {
61
+ // File doesn't exist, create symlink
62
+ try {
63
+ await symlink(targetFile, dashFile);
64
+ result.filesModified.push(dashFile);
65
+ }
66
+ catch (err) {
67
+ result.warnings.push(`Failed to create ${dashFile}: ${err}`);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ catch (err) {
73
+ result.success = false;
74
+ result.warnings.push(`Configuration failed: ${err}`);
75
+ }
76
+ return result;
77
+ }
78
+ async unconfigure(projectPath) {
79
+ const workflowsDir = join(projectPath, this.configDir, 'workflows');
80
+ try {
81
+ // Remove all speclife-*.md symlinks
82
+ const files = await readdir(workflowsDir);
83
+ for (const file of files) {
84
+ if (file.startsWith('speclife-') && file.endsWith('.md')) {
85
+ const filePath = join(workflowsDir, file);
86
+ const stats = await lstat(filePath);
87
+ if (stats.isSymbolicLink()) {
88
+ await unlink(filePath);
89
+ }
90
+ }
91
+ }
92
+ }
93
+ catch {
94
+ // Ignore errors during cleanup
95
+ }
96
+ }
97
+ /**
98
+ * Override detection paths for Antigravity
99
+ */
100
+ getDetectionPaths() {
101
+ return [this.configDir, join(this.configDir, 'workflows')];
102
+ }
103
+ async discoverCommands(sourceDir) {
104
+ try {
105
+ const files = await readdir(sourceDir);
106
+ return files
107
+ .filter(f => f.endsWith('.md'))
108
+ .map(f => f.replace('.md', ''));
109
+ }
110
+ catch {
111
+ return [];
112
+ }
113
+ }
114
+ }
115
+ //# sourceMappingURL=antigravity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/configurators/antigravity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Gemini CLI editor configurator
3
+ * Google's AI-powered CLI tool
4
+ */
5
+ import { EditorConfigurator, type ConfigureResult, type ConfigureOptions } from './base.js';
6
+ export declare class GeminiConfigurator extends EditorConfigurator {
7
+ readonly name = "Gemini CLI";
8
+ readonly id = "gemini";
9
+ readonly description = "Google's AI-powered command-line coding assistant";
10
+ readonly configDir = ".gemini";
11
+ readonly supportsDashPrefix = false;
12
+ isAvailable(_projectPath: string): Promise<boolean>;
13
+ isConfigured(projectPath: string): Promise<boolean>;
14
+ configure(options: ConfigureOptions): Promise<ConfigureResult>;
15
+ unconfigure(projectPath: string): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/configurators/gemini.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE5F,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,YAAY;IACvB,QAAQ,CAAC,WAAW,uDAAuD;IAC3E,QAAQ,CAAC,SAAS,aAAa;IAC/B,QAAQ,CAAC,kBAAkB,SAAS;IAE9B,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnD,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAsD9D,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYtD"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Gemini CLI editor configurator
3
+ * Google's AI-powered CLI tool
4
+ */
5
+ import { access, mkdir, symlink, unlink, lstat, readlink } from 'fs/promises';
6
+ import { join } from 'path';
7
+ import { EditorConfigurator } from './base.js';
8
+ export class GeminiConfigurator extends EditorConfigurator {
9
+ name = 'Gemini CLI';
10
+ id = 'gemini';
11
+ description = "Google's AI-powered command-line coding assistant";
12
+ configDir = '.gemini';
13
+ supportsDashPrefix = false; // Gemini CLI uses subdirectory format
14
+ async isAvailable(_projectPath) {
15
+ // Gemini CLI is always available as a supported editor
16
+ return true;
17
+ }
18
+ async isConfigured(projectPath) {
19
+ try {
20
+ const commandsDir = join(projectPath, this.configDir, 'commands', 'speclife');
21
+ await access(commandsDir);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ async configure(options) {
29
+ const { projectPath, specDir, force = false } = options;
30
+ const result = {
31
+ success: true,
32
+ filesModified: [],
33
+ filesSkipped: [],
34
+ warnings: [],
35
+ };
36
+ const sourceDir = join(projectPath, specDir, 'commands', 'speclife');
37
+ const editorCommandsBase = join(projectPath, this.configDir, 'commands');
38
+ const editorCommandsDir = join(editorCommandsBase, 'speclife');
39
+ try {
40
+ // Ensure editor commands directory exists
41
+ await mkdir(editorCommandsBase, { recursive: true });
42
+ // Create symlink for speclife/ directory
43
+ try {
44
+ const stats = await lstat(editorCommandsDir);
45
+ if (stats.isSymbolicLink()) {
46
+ if (force) {
47
+ await unlink(editorCommandsDir);
48
+ await symlink(sourceDir, editorCommandsDir);
49
+ result.filesModified.push(editorCommandsDir);
50
+ }
51
+ else {
52
+ // Check if symlink points to correct location
53
+ const target = await readlink(editorCommandsDir);
54
+ if (target !== sourceDir) {
55
+ result.warnings.push(`Existing symlink points to ${target}, not ${sourceDir}`);
56
+ }
57
+ result.filesSkipped.push(editorCommandsDir);
58
+ }
59
+ }
60
+ else {
61
+ result.warnings.push(`${editorCommandsDir} exists but is not a symlink`);
62
+ result.filesSkipped.push(editorCommandsDir);
63
+ }
64
+ }
65
+ catch {
66
+ // Symlink doesn't exist, create it
67
+ await symlink(sourceDir, editorCommandsDir);
68
+ result.filesModified.push(editorCommandsDir);
69
+ }
70
+ // Gemini CLI doesn't need dash-prefixed symlinks
71
+ // It uses the subdirectory format: /speclife/command
72
+ }
73
+ catch (err) {
74
+ result.success = false;
75
+ result.warnings.push(`Configuration failed: ${err}`);
76
+ }
77
+ return result;
78
+ }
79
+ async unconfigure(projectPath) {
80
+ const editorCommandsDir = join(projectPath, this.configDir, 'commands', 'speclife');
81
+ try {
82
+ const stats = await lstat(editorCommandsDir);
83
+ if (stats.isSymbolicLink()) {
84
+ await unlink(editorCommandsDir);
85
+ }
86
+ }
87
+ catch {
88
+ // Ignore errors during cleanup
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/configurators/gemini.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,9 @@ export { CursorConfigurator } from './cursor.js';
8
8
  export { ClaudeCodeConfigurator } from './claude-code.js';
9
9
  export { VSCodeConfigurator } from './vscode.js';
10
10
  export { WindsurfConfigurator } from './windsurf.js';
11
+ export { QwenConfigurator } from './qwen.js';
12
+ export { GeminiConfigurator } from './gemini.js';
13
+ export { AntigravityConfigurator } from './antigravity.js';
11
14
  export { detectEditors, sortByPreference, formatDetectionSummary, type EditorDetectionResult, } from './detector.js';
12
15
  /**
13
16
  * Initialize the editor registry with default editors
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AASvB;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAK/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAYvB;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAQ/C"}
@@ -11,6 +11,9 @@ export { CursorConfigurator } from './cursor.js';
11
11
  export { ClaudeCodeConfigurator } from './claude-code.js';
12
12
  export { VSCodeConfigurator } from './vscode.js';
13
13
  export { WindsurfConfigurator } from './windsurf.js';
14
+ export { QwenConfigurator } from './qwen.js';
15
+ export { GeminiConfigurator } from './gemini.js';
16
+ export { AntigravityConfigurator } from './antigravity.js';
14
17
  // Export detection utilities
15
18
  export { detectEditors, sortByPreference, formatDetectionSummary, } from './detector.js';
16
19
  // Auto-register default editors
@@ -19,6 +22,9 @@ import { CursorConfigurator } from './cursor.js';
19
22
  import { ClaudeCodeConfigurator } from './claude-code.js';
20
23
  import { VSCodeConfigurator } from './vscode.js';
21
24
  import { WindsurfConfigurator } from './windsurf.js';
25
+ import { QwenConfigurator } from './qwen.js';
26
+ import { GeminiConfigurator } from './gemini.js';
27
+ import { AntigravityConfigurator } from './antigravity.js';
22
28
  /**
23
29
  * Initialize the editor registry with default editors
24
30
  * Call this once at startup
@@ -28,6 +34,9 @@ export function initializeEditorRegistry() {
28
34
  EditorRegistry.register(new ClaudeCodeConfigurator());
29
35
  EditorRegistry.register(new VSCodeConfigurator());
30
36
  EditorRegistry.register(new WindsurfConfigurator());
37
+ EditorRegistry.register(new QwenConfigurator());
38
+ EditorRegistry.register(new GeminiConfigurator());
39
+ EditorRegistry.register(new AntigravityConfigurator());
31
40
  }
32
41
  // Auto-initialize on import
33
42
  initializeEditorRegistry();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kCAAkC;AAClC,OAAO,EACL,kBAAkB,GAGnB,MAAM,WAAW,CAAC;AAEnB,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,6BAA6B;AAC7B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GAEvB,MAAM,eAAe,CAAC;AAEvB,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,cAAc,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;IACtD,cAAc,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,4BAA4B;AAC5B,wBAAwB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kCAAkC;AAClC,OAAO,EACL,kBAAkB,GAGnB,MAAM,WAAW,CAAC;AAEnB,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,yBAAyB;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,6BAA6B;AAC7B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GAEvB,MAAM,eAAe,CAAC;AAEvB,gCAAgC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,cAAc,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;IACtD,cAAc,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IACpD,cAAc,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAChD,cAAc,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,QAAQ,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,4BAA4B;AAC5B,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Qwen Code editor configurator
3
+ * Alibaba's AI-powered code editor
4
+ */
5
+ import { EditorConfigurator, type ConfigureResult, type ConfigureOptions } from './base.js';
6
+ export declare class QwenConfigurator extends EditorConfigurator {
7
+ readonly name = "Qwen Code";
8
+ readonly id = "qwen";
9
+ readonly description = "Alibaba's AI-powered code editor with Qwen integration";
10
+ readonly configDir = ".qwen";
11
+ readonly supportsDashPrefix = true;
12
+ isAvailable(_projectPath: string): Promise<boolean>;
13
+ isConfigured(projectPath: string): Promise<boolean>;
14
+ configure(options: ConfigureOptions): Promise<ConfigureResult>;
15
+ unconfigure(projectPath: string): Promise<void>;
16
+ private discoverCommands;
17
+ }
18
+ //# sourceMappingURL=qwen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../src/configurators/qwen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE5F,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,WAAW,4DAA4D;IAChF,QAAQ,CAAC,SAAS,WAAW;IAC7B,QAAQ,CAAC,kBAAkB,QAAQ;IAE7B,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnD,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6E9D,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA2BvC,gBAAgB;CAU/B"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Qwen Code editor configurator
3
+ * Alibaba's AI-powered code editor
4
+ */
5
+ import { access, mkdir, symlink, unlink, readdir, lstat, readlink } from 'fs/promises';
6
+ import { join } from 'path';
7
+ import { EditorConfigurator } from './base.js';
8
+ export class QwenConfigurator extends EditorConfigurator {
9
+ name = 'Qwen Code';
10
+ id = 'qwen';
11
+ description = "Alibaba's AI-powered code editor with Qwen integration";
12
+ configDir = '.qwen';
13
+ supportsDashPrefix = true;
14
+ async isAvailable(_projectPath) {
15
+ // Qwen Code is always available as a supported editor
16
+ return true;
17
+ }
18
+ async isConfigured(projectPath) {
19
+ try {
20
+ const commandsDir = join(projectPath, this.configDir, 'commands', 'speclife');
21
+ await access(commandsDir);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ async configure(options) {
29
+ const { projectPath, specDir, force = false } = options;
30
+ const result = {
31
+ success: true,
32
+ filesModified: [],
33
+ filesSkipped: [],
34
+ warnings: [],
35
+ };
36
+ const sourceDir = join(projectPath, specDir, 'commands', 'speclife');
37
+ const editorCommandsBase = join(projectPath, this.configDir, 'commands');
38
+ const editorCommandsDir = join(editorCommandsBase, 'speclife');
39
+ try {
40
+ // Ensure editor commands directory exists
41
+ await mkdir(editorCommandsBase, { recursive: true });
42
+ // Create symlink for speclife/ directory
43
+ try {
44
+ const stats = await lstat(editorCommandsDir);
45
+ if (stats.isSymbolicLink()) {
46
+ if (force) {
47
+ await unlink(editorCommandsDir);
48
+ await symlink(sourceDir, editorCommandsDir);
49
+ result.filesModified.push(editorCommandsDir);
50
+ }
51
+ else {
52
+ // Check if symlink points to correct location
53
+ const target = await readlink(editorCommandsDir);
54
+ if (target !== sourceDir) {
55
+ result.warnings.push(`Existing symlink points to ${target}, not ${sourceDir}`);
56
+ }
57
+ result.filesSkipped.push(editorCommandsDir);
58
+ }
59
+ }
60
+ else {
61
+ result.warnings.push(`${editorCommandsDir} exists but is not a symlink`);
62
+ result.filesSkipped.push(editorCommandsDir);
63
+ }
64
+ }
65
+ catch {
66
+ // Symlink doesn't exist, create it
67
+ await symlink(sourceDir, editorCommandsDir);
68
+ result.filesModified.push(editorCommandsDir);
69
+ }
70
+ // Create dash-prefixed symlinks for Qwen Code
71
+ const slashCommands = await this.discoverCommands(sourceDir);
72
+ for (const cmd of slashCommands) {
73
+ const dashFile = join(editorCommandsBase, `speclife-${cmd}.md`);
74
+ const targetFile = join('speclife', `${cmd}.md`);
75
+ try {
76
+ await access(dashFile);
77
+ if (force) {
78
+ await unlink(dashFile);
79
+ await symlink(targetFile, dashFile);
80
+ result.filesModified.push(dashFile);
81
+ }
82
+ else {
83
+ result.filesSkipped.push(dashFile);
84
+ }
85
+ }
86
+ catch {
87
+ // File doesn't exist, create symlink
88
+ try {
89
+ await symlink(targetFile, dashFile);
90
+ result.filesModified.push(dashFile);
91
+ }
92
+ catch (err) {
93
+ result.warnings.push(`Failed to create ${dashFile}: ${err}`);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ catch (err) {
99
+ result.success = false;
100
+ result.warnings.push(`Configuration failed: ${err}`);
101
+ }
102
+ return result;
103
+ }
104
+ async unconfigure(projectPath) {
105
+ const editorCommandsBase = join(projectPath, this.configDir, 'commands');
106
+ const editorCommandsDir = join(editorCommandsBase, 'speclife');
107
+ try {
108
+ // Remove speclife directory symlink
109
+ const stats = await lstat(editorCommandsDir);
110
+ if (stats.isSymbolicLink()) {
111
+ await unlink(editorCommandsDir);
112
+ }
113
+ // Remove dash-prefixed symlinks
114
+ const files = await readdir(editorCommandsBase);
115
+ for (const file of files) {
116
+ if (file.startsWith('speclife-') && file.endsWith('.md')) {
117
+ const filePath = join(editorCommandsBase, file);
118
+ const fileStats = await lstat(filePath);
119
+ if (fileStats.isSymbolicLink()) {
120
+ await unlink(filePath);
121
+ }
122
+ }
123
+ }
124
+ }
125
+ catch {
126
+ // Ignore errors during cleanup
127
+ }
128
+ }
129
+ async discoverCommands(sourceDir) {
130
+ try {
131
+ const files = await readdir(sourceDir);
132
+ return files
133
+ .filter(f => f.endsWith('.md'))
134
+ .map(f => f.replace('.md', ''));
135
+ }
136
+ catch {
137
+ return [];
138
+ }
139
+ }
140
+ }
141
+ //# sourceMappingURL=qwen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../src/configurators/qwen.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speclife/core",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Core library for SpecLife - adapters and workflows",
5
5
  "repository": {
6
6
  "type": "git",