@defai.digital/ax-cli 3.14.10 → 3.14.11

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 (106) hide show
  1. package/README.md +10 -1
  2. package/dist/agent/execution/tool-executor.d.ts +6 -0
  3. package/dist/agent/execution/tool-executor.js +72 -0
  4. package/dist/agent/execution/tool-executor.js.map +1 -1
  5. package/dist/commands/design.d.ts +18 -0
  6. package/dist/commands/design.js +495 -0
  7. package/dist/commands/design.js.map +1 -0
  8. package/dist/commands/vscode.js +1 -1
  9. package/dist/commands/vscode.js.map +1 -1
  10. package/dist/design/figma-alias.d.ts +88 -0
  11. package/dist/design/figma-alias.js +324 -0
  12. package/dist/design/figma-alias.js.map +1 -0
  13. package/dist/design/figma-audit.d.ts +40 -0
  14. package/dist/design/figma-audit.js +375 -0
  15. package/dist/design/figma-audit.js.map +1 -0
  16. package/dist/design/figma-client.d.ts +123 -0
  17. package/dist/design/figma-client.js +316 -0
  18. package/dist/design/figma-client.js.map +1 -0
  19. package/dist/design/figma-map.d.ts +29 -0
  20. package/dist/design/figma-map.js +274 -0
  21. package/dist/design/figma-map.js.map +1 -0
  22. package/dist/design/figma-tokens.d.ts +73 -0
  23. package/dist/design/figma-tokens.js +431 -0
  24. package/dist/design/figma-tokens.js.map +1 -0
  25. package/dist/design/index.d.ts +13 -0
  26. package/dist/design/index.js +18 -0
  27. package/dist/design/index.js.map +1 -0
  28. package/dist/design/types.d.ts +89 -0
  29. package/dist/design/types.js +9 -0
  30. package/dist/design/types.js.map +1 -0
  31. package/dist/hooks/hook-runner.js +2 -2
  32. package/dist/hooks/hook-runner.js.map +1 -1
  33. package/dist/index.js +3 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/ipc/vscode-client.js +1 -1
  36. package/dist/ipc/vscode-client.js.map +1 -1
  37. package/dist/llm/tools.js +170 -0
  38. package/dist/llm/tools.js.map +1 -1
  39. package/dist/mcp/client-v2.js +1 -1
  40. package/dist/mcp/client-v2.js.map +1 -1
  41. package/dist/mcp/validation.js +1 -1
  42. package/dist/mcp/validation.js.map +1 -1
  43. package/dist/permissions/permission-manager.js +2 -2
  44. package/dist/permissions/permission-manager.js.map +1 -1
  45. package/dist/tools/design-tool.d.ts +59 -0
  46. package/dist/tools/design-tool.js +258 -0
  47. package/dist/tools/design-tool.js.map +1 -0
  48. package/dist/ui/hooks/use-input-history.js +1 -1
  49. package/dist/ui/hooks/use-input-history.js.map +1 -1
  50. package/dist/ui/utils/image-handler.js +1 -1
  51. package/dist/ui/utils/image-handler.js.map +1 -1
  52. package/dist/utils/path-security.js +2 -2
  53. package/dist/utils/path-security.js.map +1 -1
  54. package/dist/utils/progress-tracker.js +1 -1
  55. package/dist/utils/progress-tracker.js.map +1 -1
  56. package/dist/utils/settings-manager.js +8 -3
  57. package/dist/utils/settings-manager.js.map +1 -1
  58. package/node_modules/@ax-cli/schemas/dist/index.d.ts +1 -0
  59. package/node_modules/@ax-cli/schemas/dist/index.d.ts.map +1 -1
  60. package/node_modules/@ax-cli/schemas/dist/index.js +2 -2
  61. package/node_modules/@ax-cli/schemas/dist/index.js.map +1 -1
  62. package/node_modules/@ax-cli/schemas/dist/public/design/alias-types.d.ts +346 -0
  63. package/node_modules/@ax-cli/schemas/dist/public/design/alias-types.d.ts.map +1 -0
  64. package/node_modules/@ax-cli/schemas/dist/public/design/alias-types.js +171 -0
  65. package/node_modules/@ax-cli/schemas/dist/public/design/alias-types.js.map +1 -0
  66. package/node_modules/@ax-cli/schemas/dist/public/design/audit-types.d.ts +545 -0
  67. package/node_modules/@ax-cli/schemas/dist/public/design/audit-types.d.ts.map +1 -0
  68. package/node_modules/@ax-cli/schemas/dist/public/design/audit-types.js +307 -0
  69. package/node_modules/@ax-cli/schemas/dist/public/design/audit-types.js.map +1 -0
  70. package/node_modules/@ax-cli/schemas/dist/public/design/figma-types.d.ts +1306 -0
  71. package/node_modules/@ax-cli/schemas/dist/public/design/figma-types.d.ts.map +1 -0
  72. package/node_modules/@ax-cli/schemas/dist/public/design/figma-types.js +428 -0
  73. package/node_modules/@ax-cli/schemas/dist/public/design/figma-types.js.map +1 -0
  74. package/node_modules/@ax-cli/schemas/dist/public/design/index.d.ts +13 -0
  75. package/node_modules/@ax-cli/schemas/dist/public/design/index.d.ts.map +1 -0
  76. package/node_modules/@ax-cli/schemas/dist/public/design/index.js +82 -0
  77. package/node_modules/@ax-cli/schemas/dist/public/design/index.js.map +1 -0
  78. package/node_modules/@ax-cli/schemas/dist/public/design/token-types.d.ts +1245 -0
  79. package/node_modules/@ax-cli/schemas/dist/public/design/token-types.d.ts.map +1 -0
  80. package/node_modules/@ax-cli/schemas/dist/public/design/token-types.js +282 -0
  81. package/node_modules/@ax-cli/schemas/dist/public/design/token-types.js.map +1 -0
  82. package/package.json +1 -1
  83. package/packages/schemas/dist/index.d.ts +1 -0
  84. package/packages/schemas/dist/index.d.ts.map +1 -1
  85. package/packages/schemas/dist/index.js +2 -2
  86. package/packages/schemas/dist/index.js.map +1 -1
  87. package/packages/schemas/dist/public/design/alias-types.d.ts +346 -0
  88. package/packages/schemas/dist/public/design/alias-types.d.ts.map +1 -0
  89. package/packages/schemas/dist/public/design/alias-types.js +171 -0
  90. package/packages/schemas/dist/public/design/alias-types.js.map +1 -0
  91. package/packages/schemas/dist/public/design/audit-types.d.ts +545 -0
  92. package/packages/schemas/dist/public/design/audit-types.d.ts.map +1 -0
  93. package/packages/schemas/dist/public/design/audit-types.js +307 -0
  94. package/packages/schemas/dist/public/design/audit-types.js.map +1 -0
  95. package/packages/schemas/dist/public/design/figma-types.d.ts +1306 -0
  96. package/packages/schemas/dist/public/design/figma-types.d.ts.map +1 -0
  97. package/packages/schemas/dist/public/design/figma-types.js +428 -0
  98. package/packages/schemas/dist/public/design/figma-types.js.map +1 -0
  99. package/packages/schemas/dist/public/design/index.d.ts +13 -0
  100. package/packages/schemas/dist/public/design/index.d.ts.map +1 -0
  101. package/packages/schemas/dist/public/design/index.js +82 -0
  102. package/packages/schemas/dist/public/design/index.js.map +1 -0
  103. package/packages/schemas/dist/public/design/token-types.d.ts +1245 -0
  104. package/packages/schemas/dist/public/design/token-types.d.ts.map +1 -0
  105. package/packages/schemas/dist/public/design/token-types.js +282 -0
  106. package/packages/schemas/dist/public/design/token-types.js.map +1 -0
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Figma Alias System
3
+ *
4
+ * Maps human-readable names to Figma file keys and node IDs.
5
+ * Stored in .ax-cli/design.json
6
+ *
7
+ * @module design/figma-alias
8
+ */
9
+ import { type DesignConfig, type AliasTarget, type AliasOperationResult, type ResolvedAlias, type AliasListEntry, type AliasListResponse } from '@ax-cli/schemas';
10
+ /**
11
+ * Get the path to the design config file
12
+ */
13
+ export declare function getDesignConfigPath(basePath?: string): string;
14
+ /**
15
+ * Load the design config from disk
16
+ */
17
+ export declare function loadDesignConfig(basePath?: string): DesignConfig;
18
+ /**
19
+ * Save the design config to disk
20
+ */
21
+ export declare function saveDesignConfig(config: DesignConfig, basePath?: string): void;
22
+ /**
23
+ * Add or update an alias
24
+ */
25
+ export declare function addAlias(aliasName: string, fileKey: string, nodeId: string, options?: {
26
+ description?: string;
27
+ basePath?: string;
28
+ }): AliasOperationResult;
29
+ /**
30
+ * Remove an alias
31
+ */
32
+ export declare function removeAlias(aliasName: string, options?: {
33
+ basePath?: string;
34
+ }): AliasOperationResult;
35
+ /**
36
+ * List all aliases
37
+ */
38
+ export declare function listAliases(options?: {
39
+ basePath?: string;
40
+ }): AliasListResponse;
41
+ /**
42
+ * Resolve an alias to its target
43
+ */
44
+ export declare function resolveAlias(aliasOrNodeId: string, options?: {
45
+ basePath?: string;
46
+ }): ResolvedAlias | {
47
+ error: string;
48
+ suggestions?: string[];
49
+ };
50
+ /**
51
+ * Set the default file key
52
+ */
53
+ export declare function setDefaultFile(fileKey: string, options?: {
54
+ basePath?: string;
55
+ fileName?: string;
56
+ }): AliasOperationResult;
57
+ /**
58
+ * Set the design system file key
59
+ */
60
+ export declare function setDsFile(fileKey: string, options?: {
61
+ basePath?: string;
62
+ fileName?: string;
63
+ }): AliasOperationResult;
64
+ /**
65
+ * Get an alias by name
66
+ */
67
+ export declare function getAlias(aliasName: string, options?: {
68
+ basePath?: string;
69
+ }): AliasTarget | null;
70
+ /**
71
+ * Check if an alias exists
72
+ */
73
+ export declare function hasAlias(aliasName: string, options?: {
74
+ basePath?: string;
75
+ }): boolean;
76
+ /**
77
+ * Get all aliases for a specific file
78
+ */
79
+ export declare function getAliasesForFile(fileKey: string, options?: {
80
+ basePath?: string;
81
+ }): AliasListEntry[];
82
+ /**
83
+ * Import aliases from another config file
84
+ */
85
+ export declare function importAliases(sourcePath: string, options?: {
86
+ basePath?: string;
87
+ overwrite?: boolean;
88
+ }): AliasOperationResult;
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Figma Alias System
3
+ *
4
+ * Maps human-readable names to Figma file keys and node IDs.
5
+ * Stored in .ax-cli/design.json
6
+ *
7
+ * @module design/figma-alias
8
+ */
9
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
10
+ import { dirname, join } from 'path';
11
+ import { DesignConfigSchema, AliasTargetSchema, createEmptyDesignConfig, createDesignAlias, } from '@ax-cli/schemas';
12
+ // =============================================================================
13
+ // Constants
14
+ // =============================================================================
15
+ const AX_CLI_DIR = '.ax-cli';
16
+ const DESIGN_CONFIG_FILE = 'design.json';
17
+ // =============================================================================
18
+ // Config File Management
19
+ // =============================================================================
20
+ /**
21
+ * Get the path to the design config file
22
+ */
23
+ export function getDesignConfigPath(basePath) {
24
+ const base = basePath ?? process.cwd();
25
+ return join(base, AX_CLI_DIR, DESIGN_CONFIG_FILE);
26
+ }
27
+ /**
28
+ * Load the design config from disk
29
+ */
30
+ export function loadDesignConfig(basePath) {
31
+ const configPath = getDesignConfigPath(basePath);
32
+ if (!existsSync(configPath)) {
33
+ return createEmptyDesignConfig();
34
+ }
35
+ try {
36
+ const content = readFileSync(configPath, 'utf-8');
37
+ const parsed = JSON.parse(content);
38
+ return DesignConfigSchema.parse(parsed);
39
+ }
40
+ catch {
41
+ // If parsing fails, return empty config
42
+ console.warn(`Warning: Could not parse ${configPath}, using empty config`);
43
+ return createEmptyDesignConfig();
44
+ }
45
+ }
46
+ /**
47
+ * Save the design config to disk
48
+ */
49
+ export function saveDesignConfig(config, basePath) {
50
+ const configPath = getDesignConfigPath(basePath);
51
+ const configDir = dirname(configPath);
52
+ // Ensure directory exists
53
+ if (!existsSync(configDir)) {
54
+ mkdirSync(configDir, { recursive: true });
55
+ }
56
+ // Update last modified timestamp
57
+ const updatedConfig = {
58
+ ...config,
59
+ meta: {
60
+ ...config.meta,
61
+ lastModified: new Date().toISOString(),
62
+ },
63
+ };
64
+ writeFileSync(configPath, JSON.stringify(updatedConfig, null, 2), 'utf-8');
65
+ }
66
+ // =============================================================================
67
+ // Alias Operations
68
+ // =============================================================================
69
+ /**
70
+ * Add or update an alias
71
+ */
72
+ export function addAlias(aliasName, fileKey, nodeId, options) {
73
+ try {
74
+ // Validate alias name (throws if invalid)
75
+ createDesignAlias(aliasName);
76
+ // Validate target
77
+ const target = AliasTargetSchema.parse({
78
+ fileKey,
79
+ nodeId,
80
+ description: options?.description,
81
+ updatedAt: new Date().toISOString(),
82
+ });
83
+ // Load existing config
84
+ const config = loadDesignConfig(options?.basePath);
85
+ // Check if alias already exists
86
+ const existed = aliasName in config.aliases;
87
+ // Add/update alias
88
+ config.aliases[aliasName] = target;
89
+ // Save config
90
+ saveDesignConfig(config, options?.basePath);
91
+ return {
92
+ success: true,
93
+ alias: aliasName,
94
+ message: existed
95
+ ? `Updated alias "${aliasName}" → ${fileKey}/${nodeId}`
96
+ : `Added alias "${aliasName}" → ${fileKey}/${nodeId}`,
97
+ target,
98
+ };
99
+ }
100
+ catch (error) {
101
+ return {
102
+ success: false,
103
+ alias: aliasName,
104
+ message: error instanceof Error ? error.message : 'Failed to add alias',
105
+ };
106
+ }
107
+ }
108
+ /**
109
+ * Remove an alias
110
+ */
111
+ export function removeAlias(aliasName, options) {
112
+ try {
113
+ const config = loadDesignConfig(options?.basePath);
114
+ if (!(aliasName in config.aliases)) {
115
+ return {
116
+ success: false,
117
+ alias: aliasName,
118
+ message: `Alias "${aliasName}" not found`,
119
+ };
120
+ }
121
+ const target = config.aliases[aliasName];
122
+ delete config.aliases[aliasName];
123
+ saveDesignConfig(config, options?.basePath);
124
+ return {
125
+ success: true,
126
+ alias: aliasName,
127
+ message: `Removed alias "${aliasName}"`,
128
+ target,
129
+ };
130
+ }
131
+ catch (error) {
132
+ return {
133
+ success: false,
134
+ alias: aliasName,
135
+ message: error instanceof Error ? error.message : 'Failed to remove alias',
136
+ };
137
+ }
138
+ }
139
+ /**
140
+ * List all aliases
141
+ */
142
+ export function listAliases(options) {
143
+ const config = loadDesignConfig(options?.basePath);
144
+ const aliases = Object.entries(config.aliases).map(([alias, target]) => ({
145
+ alias,
146
+ fileKey: target.fileKey,
147
+ nodeId: target.nodeId,
148
+ fileName: config.meta?.fileNames?.[target.fileKey],
149
+ description: target.description,
150
+ updatedAt: target.updatedAt,
151
+ }));
152
+ // Sort by alias name
153
+ aliases.sort((a, b) => a.alias.localeCompare(b.alias));
154
+ return {
155
+ defaultFile: config.defaultFile,
156
+ dsFile: config.dsFile,
157
+ aliases,
158
+ total: aliases.length,
159
+ };
160
+ }
161
+ /**
162
+ * Resolve an alias to its target
163
+ */
164
+ export function resolveAlias(aliasOrNodeId, options) {
165
+ const config = loadDesignConfig(options?.basePath);
166
+ // Check if it's a direct alias match
167
+ if (aliasOrNodeId in config.aliases) {
168
+ const target = config.aliases[aliasOrNodeId];
169
+ return {
170
+ alias: aliasOrNodeId,
171
+ fileKey: target.fileKey,
172
+ nodeId: target.nodeId,
173
+ source: 'explicit',
174
+ description: target.description,
175
+ };
176
+ }
177
+ // Check if it's a node ID format (number:number)
178
+ if (/^\d+:\d+$/.test(aliasOrNodeId)) {
179
+ // Need a default file to resolve bare node IDs
180
+ if (!config.defaultFile) {
181
+ return {
182
+ error: 'No default file set. Use "ax-cli design alias set-default <file-key>" or provide full alias.',
183
+ };
184
+ }
185
+ return {
186
+ alias: aliasOrNodeId,
187
+ fileKey: config.defaultFile,
188
+ nodeId: aliasOrNodeId,
189
+ source: 'default-file',
190
+ };
191
+ }
192
+ // Check for partial matches (suggestions)
193
+ const suggestions = Object.keys(config.aliases).filter((alias) => alias.toLowerCase().includes(aliasOrNodeId.toLowerCase()));
194
+ return {
195
+ error: `Alias "${aliasOrNodeId}" not found`,
196
+ suggestions: suggestions.length > 0 ? suggestions.slice(0, 5) : undefined,
197
+ };
198
+ }
199
+ /**
200
+ * Set the default file key
201
+ */
202
+ export function setDefaultFile(fileKey, options) {
203
+ try {
204
+ const config = loadDesignConfig(options?.basePath);
205
+ config.defaultFile = fileKey;
206
+ // Store file name if provided
207
+ if (options?.fileName) {
208
+ config.meta = {
209
+ ...config.meta,
210
+ fileNames: {
211
+ ...config.meta?.fileNames,
212
+ [fileKey]: options.fileName,
213
+ },
214
+ };
215
+ }
216
+ saveDesignConfig(config, options?.basePath);
217
+ return {
218
+ success: true,
219
+ alias: 'default',
220
+ message: `Set default file to "${fileKey}"${options?.fileName ? ` (${options.fileName})` : ''}`,
221
+ };
222
+ }
223
+ catch (error) {
224
+ return {
225
+ success: false,
226
+ alias: 'default',
227
+ message: error instanceof Error ? error.message : 'Failed to set default file',
228
+ };
229
+ }
230
+ }
231
+ /**
232
+ * Set the design system file key
233
+ */
234
+ export function setDsFile(fileKey, options) {
235
+ try {
236
+ const config = loadDesignConfig(options?.basePath);
237
+ config.dsFile = fileKey;
238
+ // Store file name if provided
239
+ if (options?.fileName) {
240
+ config.meta = {
241
+ ...config.meta,
242
+ fileNames: {
243
+ ...config.meta?.fileNames,
244
+ [fileKey]: options.fileName,
245
+ },
246
+ };
247
+ }
248
+ saveDesignConfig(config, options?.basePath);
249
+ return {
250
+ success: true,
251
+ alias: 'ds',
252
+ message: `Set design system file to "${fileKey}"${options?.fileName ? ` (${options.fileName})` : ''}`,
253
+ };
254
+ }
255
+ catch (error) {
256
+ return {
257
+ success: false,
258
+ alias: 'ds',
259
+ message: error instanceof Error ? error.message : 'Failed to set DS file',
260
+ };
261
+ }
262
+ }
263
+ /**
264
+ * Get an alias by name
265
+ */
266
+ export function getAlias(aliasName, options) {
267
+ const config = loadDesignConfig(options?.basePath);
268
+ return config.aliases[aliasName] ?? null;
269
+ }
270
+ /**
271
+ * Check if an alias exists
272
+ */
273
+ export function hasAlias(aliasName, options) {
274
+ const config = loadDesignConfig(options?.basePath);
275
+ return aliasName in config.aliases;
276
+ }
277
+ /**
278
+ * Get all aliases for a specific file
279
+ */
280
+ export function getAliasesForFile(fileKey, options) {
281
+ const config = loadDesignConfig(options?.basePath);
282
+ return Object.entries(config.aliases)
283
+ .filter(([_, target]) => target.fileKey === fileKey)
284
+ .map(([alias, target]) => ({
285
+ alias,
286
+ fileKey: target.fileKey,
287
+ nodeId: target.nodeId,
288
+ description: target.description,
289
+ updatedAt: target.updatedAt,
290
+ }));
291
+ }
292
+ /**
293
+ * Import aliases from another config file
294
+ */
295
+ export function importAliases(sourcePath, options) {
296
+ try {
297
+ const sourceConfig = loadDesignConfig(sourcePath);
298
+ const targetConfig = loadDesignConfig(options?.basePath);
299
+ let added = 0;
300
+ let skipped = 0;
301
+ for (const [alias, target] of Object.entries(sourceConfig.aliases)) {
302
+ if (alias in targetConfig.aliases && !options?.overwrite) {
303
+ skipped++;
304
+ continue;
305
+ }
306
+ targetConfig.aliases[alias] = target;
307
+ added++;
308
+ }
309
+ saveDesignConfig(targetConfig, options?.basePath);
310
+ return {
311
+ success: true,
312
+ alias: 'import',
313
+ message: `Imported ${added} alias(es), skipped ${skipped} existing`,
314
+ };
315
+ }
316
+ catch (error) {
317
+ return {
318
+ success: false,
319
+ alias: 'import',
320
+ message: error instanceof Error ? error.message : 'Failed to import aliases',
321
+ };
322
+ }
323
+ }
324
+ //# sourceMappingURL=figma-alias.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figma-alias.js","sourceRoot":"","sources":["../../src/design/figma-alias.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Figma Design Audit
3
+ *
4
+ * Rule-based audit system for checking design consistency,
5
+ * accessibility, and best practices.
6
+ *
7
+ * @module design/figma-audit
8
+ */
9
+ import type { AuditRuleId, AuditResult, AuditSeverity } from '@ax-cli/schemas';
10
+ import type { MapResult } from './types.js';
11
+ /**
12
+ * Audit configuration options (input type with optional fields)
13
+ */
14
+ interface AuditConfigInput {
15
+ rules?: AuditRuleId[];
16
+ excludeRules?: AuditRuleId[];
17
+ ruleConfig?: Record<AuditRuleId, {
18
+ enabled?: boolean;
19
+ severity?: AuditSeverity;
20
+ options?: Record<string, unknown>;
21
+ }>;
22
+ maxDepth?: number;
23
+ failOnError?: boolean;
24
+ failOnWarning?: boolean;
25
+ includeHidden?: boolean;
26
+ tokensPath?: string;
27
+ }
28
+ /**
29
+ * Audit a Figma file/node for design issues
30
+ */
31
+ export declare function auditDesign(mapResult: MapResult, config?: AuditConfigInput): AuditResult;
32
+ /**
33
+ * Format audit result for terminal display
34
+ */
35
+ export declare function formatAuditResult(result: AuditResult): string;
36
+ /**
37
+ * Format audit result as compact summary
38
+ */
39
+ export declare function formatAuditSummary(result: AuditResult): string;
40
+ export {};