@defai.digital/ax-cli 2.3.1 → 2.4.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 (100) hide show
  1. package/.ax-cli/CUSTOM.md +111 -89
  2. package/.ax-cli/index.json +4 -3
  3. package/README.md +43 -16
  4. package/config/prompts.yaml +9 -0
  5. package/config/settings.yaml +2 -0
  6. package/dist/agent/llm-agent.d.ts +17 -0
  7. package/dist/agent/llm-agent.js +151 -52
  8. package/dist/agent/llm-agent.js.map +1 -1
  9. package/dist/commands/init/wizard.d.ts +66 -0
  10. package/dist/commands/init/wizard.js +310 -0
  11. package/dist/commands/init/wizard.js.map +1 -0
  12. package/dist/commands/init.js +145 -31
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/mcp.js +3 -2
  15. package/dist/commands/mcp.js.map +1 -1
  16. package/dist/commands/memory.d.ts +5 -0
  17. package/dist/commands/memory.js +257 -0
  18. package/dist/commands/memory.js.map +1 -0
  19. package/dist/commands/setup.js +1 -1
  20. package/dist/commands/setup.js.map +1 -1
  21. package/dist/commands/templates.d.ts +5 -0
  22. package/dist/commands/templates.js +244 -0
  23. package/dist/commands/templates.js.map +1 -0
  24. package/dist/commands/update.js +9 -2
  25. package/dist/commands/update.js.map +1 -1
  26. package/dist/commands/usage.js +1 -1
  27. package/dist/commands/usage.js.map +1 -1
  28. package/dist/constants.d.ts +2 -0
  29. package/dist/constants.js +2 -0
  30. package/dist/constants.js.map +1 -1
  31. package/dist/hooks/use-input-handler.js +18 -4
  32. package/dist/hooks/use-input-handler.js.map +1 -1
  33. package/dist/index.js +143 -16
  34. package/dist/index.js.map +1 -1
  35. package/dist/llm/client.d.ts +5 -0
  36. package/dist/llm/client.js +43 -37
  37. package/dist/llm/client.js.map +1 -1
  38. package/dist/schemas/index.d.ts +69 -0
  39. package/dist/schemas/index.js +29 -0
  40. package/dist/schemas/index.js.map +1 -1
  41. package/dist/schemas/yaml-schemas.d.ts +10 -0
  42. package/dist/schemas/yaml-schemas.js +2 -0
  43. package/dist/schemas/yaml-schemas.js.map +1 -1
  44. package/dist/tools/search.js +7 -1
  45. package/dist/tools/search.js.map +1 -1
  46. package/dist/tools/text-editor.js +24 -14
  47. package/dist/tools/text-editor.js.map +1 -1
  48. package/dist/tools/todo-tool.js +62 -21
  49. package/dist/tools/todo-tool.js.map +1 -1
  50. package/dist/types/template.d.ts +53 -0
  51. package/dist/types/template.js +5 -0
  52. package/dist/types/template.js.map +1 -0
  53. package/dist/ui/components/command-suggestions.js +2 -2
  54. package/dist/ui/components/command-suggestions.js.map +1 -1
  55. package/dist/utils/cache.d.ts +1 -0
  56. package/dist/utils/cache.js +39 -5
  57. package/dist/utils/cache.js.map +1 -1
  58. package/dist/utils/config-loader.d.ts +2 -0
  59. package/dist/utils/config-loader.js +2 -1
  60. package/dist/utils/config-loader.js.map +1 -1
  61. package/dist/utils/confirmation-service.js +6 -3
  62. package/dist/utils/confirmation-service.js.map +1 -1
  63. package/dist/utils/error-handler.d.ts +5 -0
  64. package/dist/utils/error-handler.js +9 -3
  65. package/dist/utils/error-handler.js.map +1 -1
  66. package/dist/utils/init-previewer.d.ts +56 -0
  67. package/dist/utils/init-previewer.js +217 -0
  68. package/dist/utils/init-previewer.js.map +1 -0
  69. package/dist/utils/init-validator.d.ts +61 -0
  70. package/dist/utils/init-validator.js +248 -0
  71. package/dist/utils/init-validator.js.map +1 -0
  72. package/dist/utils/onboarding-manager.js +34 -9
  73. package/dist/utils/onboarding-manager.js.map +1 -1
  74. package/dist/utils/path-utils.d.ts +83 -0
  75. package/dist/utils/path-utils.js +122 -0
  76. package/dist/utils/path-utils.js.map +1 -0
  77. package/dist/utils/progress-tracker.d.ts +51 -0
  78. package/dist/utils/progress-tracker.js +152 -0
  79. package/dist/utils/progress-tracker.js.map +1 -0
  80. package/dist/utils/project-analyzer.js +8 -14
  81. package/dist/utils/project-analyzer.js.map +1 -1
  82. package/dist/utils/settings-manager.d.ts +3 -3
  83. package/dist/utils/settings-manager.js +6 -13
  84. package/dist/utils/settings-manager.js.map +1 -1
  85. package/dist/utils/string-utils.d.ts +19 -0
  86. package/dist/utils/string-utils.js +28 -0
  87. package/dist/utils/string-utils.js.map +1 -0
  88. package/dist/utils/template-manager.d.ts +54 -0
  89. package/dist/utils/template-manager.js +421 -0
  90. package/dist/utils/template-manager.js.map +1 -0
  91. package/dist/utils/text-utils.js +3 -1
  92. package/dist/utils/text-utils.js.map +1 -1
  93. package/package.json +2 -1
  94. package/vitest.config.ts +6 -0
  95. package/dist/utils/model-config.d.ts +0 -28
  96. package/dist/utils/model-config.js +0 -43
  97. package/dist/utils/model-config.js.map +0 -1
  98. package/dist/utils/tool-helpers.d.ts +0 -25
  99. package/dist/utils/tool-helpers.js +0 -53
  100. package/dist/utils/tool-helpers.js.map +0 -1
@@ -10,23 +10,16 @@ const messages = loadMessagesConfig();
10
10
  const migrationMessages = messages.migration || {};
11
11
  /**
12
12
  * Default values for user settings
13
+ * Note: These are minimal defaults. Users should run 'ax-cli setup' to configure properly.
13
14
  */
14
15
  const DEFAULT_USER_SETTINGS = {
15
- baseURL: "https://api.x.ai/v1",
16
- defaultModel: ModelIdSchema.parse("grok-code-fast-1"),
17
- models: [
18
- ModelIdSchema.parse("grok-code-fast-1"),
19
- ModelIdSchema.parse("grok-4-latest"),
20
- ModelIdSchema.parse("grok-3-latest"),
21
- ModelIdSchema.parse("grok-3-fast"),
22
- ModelIdSchema.parse("grok-3-mini-fast"),
23
- ],
16
+ // No hardcoded defaults - users must configure via setup command
24
17
  };
25
18
  /**
26
19
  * Default values for project settings
27
20
  */
28
21
  const DEFAULT_PROJECT_SETTINGS = {
29
- model: ModelIdSchema.parse("grok-code-fast-1"),
22
+ // Project settings inherit from user settings, no hardcoded defaults
30
23
  };
31
24
  /**
32
25
  * Unified settings manager that handles both user-level and project-level settings
@@ -329,7 +322,7 @@ export class SettingsManager {
329
322
  * Get the current model with proper fallback logic:
330
323
  * 1. Project-specific model setting
331
324
  * 2. User's default model
332
- * 3. System default
325
+ * 3. Undefined (user must configure)
333
326
  */
334
327
  getCurrentModel() {
335
328
  const projectModel = this.getProjectSetting("model");
@@ -340,7 +333,7 @@ export class SettingsManager {
340
333
  if (userDefaultModel) {
341
334
  return userDefaultModel;
342
335
  }
343
- return DEFAULT_PROJECT_SETTINGS.model || ModelIdSchema.parse("grok-code-fast-1");
336
+ return undefined; // No hardcoded fallback - user must run setup
344
337
  }
345
338
  /**
346
339
  * Set the current model for the project
@@ -378,7 +371,7 @@ export class SettingsManager {
378
371
  }
379
372
  // Then check user settings
380
373
  const userBaseURL = this.getUserSetting("baseURL");
381
- return (userBaseURL || DEFAULT_USER_SETTINGS.baseURL || "https://api.x.ai/v1");
374
+ return userBaseURL; // No hardcoded fallback - user must run setup
382
375
  }
383
376
  /**
384
377
  * Get the actual user settings path being used
@@ -1 +1 @@
1
- {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/utils/settings-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/utils/settings-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Case-insensitive string comparison utilities
3
+ */
4
+ /**
5
+ * Check if a string equals another string (case-insensitive)
6
+ */
7
+ export declare function equalsIgnoreCase(str1: string, str2: string): boolean;
8
+ /**
9
+ * Check if a string contains another string (case-insensitive)
10
+ */
11
+ export declare function containsIgnoreCase(text: string, searchString: string): boolean;
12
+ /**
13
+ * Check if a string starts with a prefix (case-insensitive)
14
+ */
15
+ export declare function startsWithIgnoreCase(text: string, prefix: string): boolean;
16
+ /**
17
+ * Check if a string ends with a suffix (case-insensitive)
18
+ */
19
+ export declare function endsWithIgnoreCase(text: string, suffix: string): boolean;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Case-insensitive string comparison utilities
3
+ */
4
+ /**
5
+ * Check if a string equals another string (case-insensitive)
6
+ */
7
+ export function equalsIgnoreCase(str1, str2) {
8
+ return str1.toLowerCase() === str2.toLowerCase();
9
+ }
10
+ /**
11
+ * Check if a string contains another string (case-insensitive)
12
+ */
13
+ export function containsIgnoreCase(text, searchString) {
14
+ return text.toLowerCase().includes(searchString.toLowerCase());
15
+ }
16
+ /**
17
+ * Check if a string starts with a prefix (case-insensitive)
18
+ */
19
+ export function startsWithIgnoreCase(text, prefix) {
20
+ return text.toLowerCase().startsWith(prefix.toLowerCase());
21
+ }
22
+ /**
23
+ * Check if a string ends with a suffix (case-insensitive)
24
+ */
25
+ export function endsWithIgnoreCase(text, suffix) {
26
+ return text.toLowerCase().endsWith(suffix.toLowerCase());
27
+ }
28
+ //# sourceMappingURL=string-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../src/utils/string-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAY;IACzD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,YAAoB;IACnE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,MAAc;IAC/D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAAc;IAC7D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Template Manager for AX CLI
3
+ * Manages project templates including built-in and user-created templates
4
+ */
5
+ import { type ProjectTemplate } from '../schemas/index.js';
6
+ import type { TemplateListItem, TemplateCreateOptions } from '../types/template.js';
7
+ export declare class TemplateManager {
8
+ private static readonly BUILTIN_TEMPLATES_DIR;
9
+ private static readonly USER_TEMPLATES_DIR;
10
+ /**
11
+ * Ensure user templates directory exists
12
+ */
13
+ private static ensureUserTemplatesDir;
14
+ /**
15
+ * List all available templates (built-in + user)
16
+ */
17
+ static listTemplates(): TemplateListItem[];
18
+ /**
19
+ * Get a specific template by ID
20
+ */
21
+ static getTemplate(templateId: string): ProjectTemplate | null;
22
+ /**
23
+ * Load and validate a template from file
24
+ */
25
+ private static loadTemplate;
26
+ /**
27
+ * Save a user template
28
+ */
29
+ static saveTemplate(template: ProjectTemplate): boolean;
30
+ /**
31
+ * Generate a unique template ID
32
+ */
33
+ private static generateUniqueId;
34
+ /**
35
+ * Create a new template from current project
36
+ */
37
+ static createFromProject(projectRoot: string, options: TemplateCreateOptions): ProjectTemplate;
38
+ /**
39
+ * Delete a user template
40
+ */
41
+ static deleteTemplate(templateId: string): boolean;
42
+ /**
43
+ * Export a template to a file (with atomic write)
44
+ */
45
+ static exportTemplate(templateId: string, outputPath: string): boolean;
46
+ /**
47
+ * Import a template from a file
48
+ */
49
+ static importTemplate(filePath: string): boolean;
50
+ /**
51
+ * Apply a template to a project directory
52
+ */
53
+ static applyTemplate(template: ProjectTemplate, projectRoot: string): boolean;
54
+ }
@@ -0,0 +1,421 @@
1
+ /**
2
+ * Template Manager for AX CLI
3
+ * Manages project templates including built-in and user-created templates
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import * as os from 'os';
8
+ import { fileURLToPath } from 'url';
9
+ import { safeValidateProjectTemplate, ProjectTemplateSchema } from '../schemas/index.js';
10
+ import { parseJsonFile } from './json-utils.js';
11
+ // ESM-compatible __dirname
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+ export class TemplateManager {
15
+ static BUILTIN_TEMPLATES_DIR = path.join(__dirname, '../../templates');
16
+ static USER_TEMPLATES_DIR = path.join(os.homedir(), '.ax-cli', 'templates');
17
+ /**
18
+ * Ensure user templates directory exists
19
+ */
20
+ static ensureUserTemplatesDir() {
21
+ if (!fs.existsSync(this.USER_TEMPLATES_DIR)) {
22
+ fs.mkdirSync(this.USER_TEMPLATES_DIR, { recursive: true });
23
+ }
24
+ }
25
+ /**
26
+ * List all available templates (built-in + user)
27
+ */
28
+ static listTemplates() {
29
+ const templates = [];
30
+ // Load built-in templates
31
+ if (fs.existsSync(this.BUILTIN_TEMPLATES_DIR)) {
32
+ const builtinFiles = fs.readdirSync(this.BUILTIN_TEMPLATES_DIR)
33
+ .filter(f => f.endsWith('.json'));
34
+ for (const file of builtinFiles) {
35
+ try {
36
+ const templatePath = path.join(this.BUILTIN_TEMPLATES_DIR, file);
37
+ const template = this.loadTemplate(templatePath);
38
+ if (template) {
39
+ templates.push({
40
+ id: template.id,
41
+ name: template.name,
42
+ description: template.description,
43
+ projectType: template.projectType,
44
+ tags: template.tags,
45
+ isBuiltIn: true,
46
+ });
47
+ }
48
+ }
49
+ catch (error) {
50
+ // Skip invalid templates
51
+ console.warn(`Failed to load built-in template ${file}:`, error);
52
+ }
53
+ }
54
+ }
55
+ // Load user templates
56
+ this.ensureUserTemplatesDir();
57
+ const userFiles = fs.readdirSync(this.USER_TEMPLATES_DIR)
58
+ .filter(f => f.endsWith('.json'));
59
+ for (const file of userFiles) {
60
+ try {
61
+ const templatePath = path.join(this.USER_TEMPLATES_DIR, file);
62
+ const template = this.loadTemplate(templatePath);
63
+ if (template) {
64
+ templates.push({
65
+ id: template.id,
66
+ name: template.name,
67
+ description: template.description,
68
+ projectType: template.projectType,
69
+ tags: template.tags,
70
+ isBuiltIn: false,
71
+ });
72
+ }
73
+ }
74
+ catch (error) {
75
+ // Skip invalid templates
76
+ console.warn(`Failed to load user template ${file}:`, error);
77
+ }
78
+ }
79
+ return templates;
80
+ }
81
+ /**
82
+ * Get a specific template by ID
83
+ */
84
+ static getTemplate(templateId) {
85
+ // Check built-in templates first
86
+ const builtinPath = path.join(this.BUILTIN_TEMPLATES_DIR, `${templateId}.json`);
87
+ if (fs.existsSync(builtinPath)) {
88
+ return this.loadTemplate(builtinPath);
89
+ }
90
+ // Check user templates
91
+ this.ensureUserTemplatesDir();
92
+ const userPath = path.join(this.USER_TEMPLATES_DIR, `${templateId}.json`);
93
+ if (fs.existsSync(userPath)) {
94
+ return this.loadTemplate(userPath);
95
+ }
96
+ return null;
97
+ }
98
+ /**
99
+ * Load and validate a template from file
100
+ */
101
+ static loadTemplate(filePath) {
102
+ try {
103
+ const result = parseJsonFile(filePath, ProjectTemplateSchema);
104
+ if (result.success) {
105
+ return result.data;
106
+ }
107
+ console.warn(`Invalid template at ${filePath}:`, result.error);
108
+ return null;
109
+ }
110
+ catch (error) {
111
+ console.warn(`Failed to load template at ${filePath}:`, error);
112
+ return null;
113
+ }
114
+ }
115
+ /**
116
+ * Save a user template
117
+ */
118
+ static saveTemplate(template) {
119
+ try {
120
+ // Only save user templates (not built-in)
121
+ if (template.isBuiltIn) {
122
+ console.error('Cannot modify built-in templates');
123
+ return false;
124
+ }
125
+ this.ensureUserTemplatesDir();
126
+ const templatePath = path.join(this.USER_TEMPLATES_DIR, `${template.id}.json`);
127
+ // Validate template before saving
128
+ const result = safeValidateProjectTemplate(template);
129
+ if (!result.success) {
130
+ console.error('Invalid template data:', result.error);
131
+ return false;
132
+ }
133
+ // Atomic write using temporary file
134
+ const tmpPath = `${templatePath}.tmp`;
135
+ try {
136
+ fs.writeFileSync(tmpPath, JSON.stringify(template, null, 2), 'utf-8');
137
+ fs.renameSync(tmpPath, templatePath); // Atomic operation on POSIX systems
138
+ }
139
+ catch (writeError) {
140
+ // Cleanup temp file on error
141
+ if (fs.existsSync(tmpPath)) {
142
+ try {
143
+ fs.unlinkSync(tmpPath);
144
+ }
145
+ catch {
146
+ // Ignore cleanup errors
147
+ }
148
+ }
149
+ throw writeError;
150
+ }
151
+ return true;
152
+ }
153
+ catch (error) {
154
+ console.error('Failed to save template:', error);
155
+ return false;
156
+ }
157
+ }
158
+ /**
159
+ * Generate a unique template ID
160
+ */
161
+ static generateUniqueId(name) {
162
+ const MAX_ATTEMPTS = 1000;
163
+ let baseId = name.toLowerCase()
164
+ .replace(/\s+/g, '-')
165
+ .replace(/[^a-z0-9-]/g, '')
166
+ .substring(0, 50); // Limit base ID length
167
+ if (!baseId) {
168
+ baseId = 'template'; // Fallback for empty names
169
+ }
170
+ let id = baseId;
171
+ let counter = 1;
172
+ while (this.getTemplate(id)) {
173
+ if (counter >= MAX_ATTEMPTS) {
174
+ // Use timestamp + random string to ensure uniqueness
175
+ const randomSuffix = Math.random().toString(36).substring(2, 9);
176
+ id = `${baseId}-${Date.now()}-${randomSuffix}`;
177
+ break;
178
+ }
179
+ id = `${baseId}-${counter++}`;
180
+ }
181
+ // Final verification
182
+ if (this.getTemplate(id)) {
183
+ throw new Error('Failed to generate unique template ID after maximum attempts');
184
+ }
185
+ return id;
186
+ }
187
+ /**
188
+ * Create a new template from current project
189
+ */
190
+ static createFromProject(projectRoot, options) {
191
+ const customMdPath = path.join(projectRoot, '.ax-cli', 'CUSTOM.md');
192
+ const indexPath = path.join(projectRoot, '.ax-cli', 'index.json');
193
+ // Load existing instructions if available
194
+ let instructions = '';
195
+ if (fs.existsSync(customMdPath)) {
196
+ instructions = fs.readFileSync(customMdPath, 'utf-8');
197
+ }
198
+ // Validate instructions are non-empty
199
+ if (!instructions || instructions.trim().length === 0) {
200
+ throw new Error('Cannot create template: CUSTOM.md is empty. ' +
201
+ 'Run "ax-cli init" first to generate custom instructions.');
202
+ }
203
+ // Validate minimum length
204
+ if (instructions.trim().length < 100) {
205
+ throw new Error('Cannot create template: CUSTOM.md is too short (< 100 characters). ' +
206
+ 'Ensure the file contains meaningful instructions.');
207
+ }
208
+ // Load existing metadata if available
209
+ let metadata = {};
210
+ if (fs.existsSync(indexPath)) {
211
+ const result = parseJsonFile(indexPath);
212
+ if (result.success) {
213
+ const indexData = result.data;
214
+ metadata = {
215
+ conventions: indexData.conventions,
216
+ scripts: indexData.scripts,
217
+ directories: indexData.directories,
218
+ keyFiles: indexData.keyFiles,
219
+ };
220
+ }
221
+ // Use empty metadata if index.json is invalid
222
+ }
223
+ const template = {
224
+ id: this.generateUniqueId(options.name),
225
+ name: options.name,
226
+ description: options.description,
227
+ version: '1.0.0',
228
+ projectType: options.projectType,
229
+ tags: options.tags || [],
230
+ instructions,
231
+ metadata,
232
+ createdAt: new Date().toISOString(),
233
+ isBuiltIn: false,
234
+ author: options.author,
235
+ };
236
+ return template;
237
+ }
238
+ /**
239
+ * Delete a user template
240
+ */
241
+ static deleteTemplate(templateId) {
242
+ try {
243
+ const template = this.getTemplate(templateId);
244
+ if (!template) {
245
+ console.error(`Template '${templateId}' not found`);
246
+ return false;
247
+ }
248
+ if (template.isBuiltIn) {
249
+ console.error('Cannot delete built-in templates');
250
+ return false;
251
+ }
252
+ const userPath = path.join(this.USER_TEMPLATES_DIR, `${templateId}.json`);
253
+ fs.unlinkSync(userPath);
254
+ return true;
255
+ }
256
+ catch (error) {
257
+ console.error('Failed to delete template:', error);
258
+ return false;
259
+ }
260
+ }
261
+ /**
262
+ * Export a template to a file (with atomic write)
263
+ */
264
+ static exportTemplate(templateId, outputPath) {
265
+ try {
266
+ const template = this.getTemplate(templateId);
267
+ if (!template) {
268
+ console.error(`Template '${templateId}' not found`);
269
+ return false;
270
+ }
271
+ // Atomic write using temporary file
272
+ const tmpPath = `${outputPath}.tmp`;
273
+ try {
274
+ fs.writeFileSync(tmpPath, JSON.stringify(template, null, 2), 'utf-8');
275
+ fs.renameSync(tmpPath, outputPath); // Atomic operation
276
+ }
277
+ catch (writeError) {
278
+ // Cleanup temp file on error
279
+ if (fs.existsSync(tmpPath)) {
280
+ try {
281
+ fs.unlinkSync(tmpPath);
282
+ }
283
+ catch {
284
+ // Ignore cleanup errors
285
+ }
286
+ }
287
+ throw writeError;
288
+ }
289
+ return true;
290
+ }
291
+ catch (error) {
292
+ console.error('Failed to export template:', error);
293
+ return false;
294
+ }
295
+ }
296
+ /**
297
+ * Import a template from a file
298
+ */
299
+ static importTemplate(filePath) {
300
+ try {
301
+ // Validate path to prevent directory traversal attacks
302
+ const resolvedPath = path.resolve(filePath);
303
+ // Check if path is absolute
304
+ if (!path.isAbsolute(resolvedPath)) {
305
+ console.error('Invalid file path - must be absolute');
306
+ return false;
307
+ }
308
+ // Ensure path is within safe directories (home or cwd)
309
+ const userHome = os.homedir();
310
+ const cwd = process.cwd();
311
+ const isInHome = resolvedPath.startsWith(userHome);
312
+ const isInCwd = resolvedPath.startsWith(cwd);
313
+ if (!isInHome && !isInCwd) {
314
+ console.error('Template must be in home directory or current directory');
315
+ return false;
316
+ }
317
+ // Prevent access to sensitive files
318
+ const sensitivePatterns = [
319
+ /\.ssh/i,
320
+ /\.gnupg/i,
321
+ /password/i,
322
+ /secret/i,
323
+ /\.env/i,
324
+ /id_rsa/i,
325
+ /\.pem$/i,
326
+ /\.key$/i,
327
+ ];
328
+ const basename = path.basename(resolvedPath);
329
+ if (sensitivePatterns.some(pattern => pattern.test(basename))) {
330
+ console.error('Cannot import sensitive files');
331
+ return false;
332
+ }
333
+ // Ensure file has .json extension
334
+ if (path.extname(resolvedPath) !== '.json') {
335
+ console.error('Template file must have .json extension');
336
+ return false;
337
+ }
338
+ // Ensure file exists and is readable
339
+ if (!fs.existsSync(resolvedPath)) {
340
+ console.error(`File not found: ${resolvedPath}`);
341
+ return false;
342
+ }
343
+ // Ensure it's a file, not a directory
344
+ const stats = fs.statSync(resolvedPath);
345
+ if (!stats.isFile()) {
346
+ console.error('Path must be a file, not a directory');
347
+ return false;
348
+ }
349
+ // Check file size to prevent DOS
350
+ const MAX_TEMPLATE_SIZE = 10 * 1024 * 1024; // 10MB
351
+ if (stats.size > MAX_TEMPLATE_SIZE) {
352
+ console.error(`Template file too large: ${(stats.size / 1024 / 1024).toFixed(2)}MB (max: 10MB)`);
353
+ return false;
354
+ }
355
+ const template = this.loadTemplate(resolvedPath);
356
+ if (!template) {
357
+ console.error('Invalid template file');
358
+ return false;
359
+ }
360
+ // Force as user template (not built-in)
361
+ template.isBuiltIn = false;
362
+ return this.saveTemplate(template);
363
+ }
364
+ catch (error) {
365
+ console.error('Failed to import template:', error);
366
+ return false;
367
+ }
368
+ }
369
+ /**
370
+ * Apply a template to a project directory
371
+ */
372
+ static applyTemplate(template, projectRoot) {
373
+ try {
374
+ const axCliDir = path.join(projectRoot, '.ax-cli');
375
+ if (!fs.existsSync(axCliDir)) {
376
+ fs.mkdirSync(axCliDir, { recursive: true });
377
+ }
378
+ // Write CUSTOM.md using atomic operation
379
+ const customMdPath = path.join(axCliDir, 'CUSTOM.md');
380
+ const tmpCustomPath = `${customMdPath}.tmp`;
381
+ // Write index.json with template metadata
382
+ const indexPath = path.join(axCliDir, 'index.json');
383
+ const tmpIndexPath = `${indexPath}.tmp`;
384
+ const indexData = {
385
+ projectName: template.name,
386
+ version: template.version,
387
+ projectType: template.projectType,
388
+ ...template.metadata,
389
+ templateId: template.id,
390
+ templateAppliedAt: new Date().toISOString(),
391
+ };
392
+ try {
393
+ // Write to temp files first
394
+ fs.writeFileSync(tmpCustomPath, template.instructions, 'utf-8');
395
+ fs.writeFileSync(tmpIndexPath, JSON.stringify(indexData, null, 2), 'utf-8');
396
+ // Atomic rename
397
+ fs.renameSync(tmpCustomPath, customMdPath);
398
+ fs.renameSync(tmpIndexPath, indexPath);
399
+ }
400
+ catch (writeError) {
401
+ // Cleanup temp files on error
402
+ try {
403
+ if (fs.existsSync(tmpCustomPath))
404
+ fs.unlinkSync(tmpCustomPath);
405
+ if (fs.existsSync(tmpIndexPath))
406
+ fs.unlinkSync(tmpIndexPath);
407
+ }
408
+ catch {
409
+ // Ignore cleanup errors
410
+ }
411
+ throw writeError;
412
+ }
413
+ return true;
414
+ }
415
+ catch (error) {
416
+ console.error('Failed to apply template:', error);
417
+ return false;
418
+ }
419
+ }
420
+ }
421
+ //# sourceMappingURL=template-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-manager.js","sourceRoot":"","sources":["../../src/utils/template-manager.ts"],"names":[],"mappings":"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"}