ecomcoder-cli 1.3.12 → 1.3.14

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 (45) hide show
  1. package/dist/commands/product/add-tags.d.ts +9 -0
  2. package/dist/commands/product/add-tags.d.ts.map +1 -0
  3. package/dist/commands/product/add-tags.js +93 -0
  4. package/dist/commands/product/add-tags.js.map +1 -0
  5. package/dist/commands/product/create.d.ts.map +1 -1
  6. package/dist/commands/product/create.js +78 -4
  7. package/dist/commands/product/create.js.map +1 -1
  8. package/dist/commands/product/index.d.ts.map +1 -1
  9. package/dist/commands/product/index.js +32 -0
  10. package/dist/commands/product/index.js.map +1 -1
  11. package/dist/commands/product/queries.d.ts +23 -0
  12. package/dist/commands/product/queries.d.ts.map +1 -1
  13. package/dist/commands/product/queries.js +80 -0
  14. package/dist/commands/product/queries.js.map +1 -1
  15. package/dist/commands/product/remove-tags.d.ts +9 -0
  16. package/dist/commands/product/remove-tags.d.ts.map +1 -0
  17. package/dist/commands/product/remove-tags.js +108 -0
  18. package/dist/commands/product/remove-tags.js.map +1 -0
  19. package/dist/commands/product/service.d.ts +81 -2
  20. package/dist/commands/product/service.d.ts.map +1 -1
  21. package/dist/commands/product/service.js +291 -13
  22. package/dist/commands/product/service.js.map +1 -1
  23. package/dist/commands/product/set-tags.d.ts +9 -0
  24. package/dist/commands/product/set-tags.d.ts.map +1 -0
  25. package/dist/commands/product/set-tags.js +107 -0
  26. package/dist/commands/product/set-tags.js.map +1 -0
  27. package/dist/commands/product/types.d.ts +58 -0
  28. package/dist/commands/product/types.d.ts.map +1 -1
  29. package/dist/commands/product/update-images.d.ts +8 -0
  30. package/dist/commands/product/update-images.d.ts.map +1 -0
  31. package/dist/commands/product/update-images.js +191 -0
  32. package/dist/commands/product/update-images.js.map +1 -0
  33. package/dist/lib/approval.d.ts +19 -4
  34. package/dist/lib/approval.d.ts.map +1 -1
  35. package/dist/lib/approval.js +26 -5
  36. package/dist/lib/approval.js.map +1 -1
  37. package/dist/lib/config.d.ts +52 -0
  38. package/dist/lib/config.d.ts.map +1 -0
  39. package/dist/lib/config.js +83 -0
  40. package/dist/lib/config.js.map +1 -0
  41. package/dist/lib/image-library.d.ts +65 -0
  42. package/dist/lib/image-library.d.ts.map +1 -0
  43. package/dist/lib/image-library.js +143 -0
  44. package/dist/lib/image-library.js.map +1 -0
  45. package/package.json +2 -1
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Set/Replace Product Tags Command
3
+ *
4
+ * Following Command Pattern - thin orchestration layer
5
+ * Delegates business logic to ProductService
6
+ * DESTRUCTIVE - Requires approval flow
7
+ */
8
+ import { getCredentials, getSessionId } from '../../lib/api-client.js';
9
+ import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
10
+ import { ProductService } from './service.js';
11
+ import { requestApproval } from '../../lib/approval.js';
12
+ function showHelp() {
13
+ console.log(`
14
+ Set/Replace Product Tags
15
+
16
+ USAGE:
17
+ ecomcoder product set-tags --id=<id> --tags=<tag1,tag2,tag3>
18
+
19
+ REQUIRED OPTIONS:
20
+ --id <id> Product ID (numeric or GID)
21
+ --tags <tags> Comma-separated tags (replaces ALL existing tags)
22
+
23
+ EXAMPLES:
24
+ # Replace all tags
25
+ ecomcoder product set-tags --id=123 --tags="summer,sale,featured"
26
+
27
+ # Remove all tags (set to empty)
28
+ ecomcoder product set-tags --id=123 --tags=""
29
+
30
+ # Using GID
31
+ ecomcoder product set-tags --id="gid://shopify/Product/123" --tags="clearance"
32
+
33
+ NOTES:
34
+ - DESTRUCTIVE operation (replaces ALL existing tags)
35
+ - Requires approval before execution
36
+ - Pass empty string ("") to remove all tags
37
+ - Use add-tags for non-destructive tag additions
38
+ - Use remove-tags to selectively remove specific tags
39
+ - Tags are case-sensitive
40
+ `);
41
+ process.exit(0);
42
+ }
43
+ export async function run(argv = process.argv.slice(2)) {
44
+ if (hasHelpFlag(argv)) {
45
+ showHelp();
46
+ }
47
+ const args = parseArgs(argv);
48
+ // Validate required arguments
49
+ if (!args.id) {
50
+ console.error(JSON.stringify({
51
+ success: false,
52
+ error: 'Missing required argument: --id'
53
+ }));
54
+ process.exit(1);
55
+ }
56
+ if (args.tags === undefined) {
57
+ console.error(JSON.stringify({
58
+ success: false,
59
+ error: 'Missing required argument: --tags (use "" to remove all tags)'
60
+ }));
61
+ process.exit(1);
62
+ }
63
+ try {
64
+ // Parse tags from comma-separated string (empty string = remove all)
65
+ const tags = args.tags === ''
66
+ ? []
67
+ : args.tags.split(',').map((tag) => tag.trim()).filter(Boolean);
68
+ // Get credentials
69
+ const sessionId = getSessionId(args.sessionId);
70
+ const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
71
+ // Request approval before executing
72
+ const tagCount = tags.length;
73
+ const message = tagCount === 0
74
+ ? `This will REMOVE ALL tags from your product on the live Shopify store.`
75
+ : `This will REPLACE all existing tags with ${tagCount} new tag(s) on your live Shopify store. All current tags will be removed.`;
76
+ const approved = await requestApproval({
77
+ command: `ecomcoder product set-tags --id=${args.id} --tags=${args.tags}`,
78
+ message,
79
+ riskLevel: 'moderate'
80
+ });
81
+ if (!approved) {
82
+ console.log(JSON.stringify({
83
+ success: false,
84
+ error: 'Operation cancelled by user'
85
+ }));
86
+ process.exit(1);
87
+ }
88
+ // Execute set via service
89
+ const result = await ProductService.setTags(credentials, {
90
+ id: args.id,
91
+ tags
92
+ });
93
+ // Output result
94
+ console.log(JSON.stringify(result, null, 2));
95
+ if (!result.success) {
96
+ process.exit(1);
97
+ }
98
+ }
99
+ catch (error) {
100
+ console.error(JSON.stringify({
101
+ success: false,
102
+ error: error.message || 'Unknown error occurred'
103
+ }));
104
+ process.exit(1);
105
+ }
106
+ }
107
+ //# sourceMappingURL=set-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-tags.js","sourceRoot":"","sources":["../../../src/commands/product/set-tags.ts"],"names":[],"mappings":"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"}
@@ -211,6 +211,16 @@ export interface UpdateOptionInput {
211
211
  deleteValues?: string[];
212
212
  variantStrategy?: 'LEAVE_AS_IS' | 'CREATE';
213
213
  }
214
+ export interface UpdateImagesInput {
215
+ id: string;
216
+ images?: Array<string | {
217
+ url: string;
218
+ alt?: string;
219
+ }>;
220
+ search?: string;
221
+ random?: number;
222
+ source?: 'pexels' | 'picsum';
223
+ }
214
224
  /**
215
225
  * Shopify GraphQL response types
216
226
  */
@@ -221,6 +231,7 @@ export interface ProductUpdateResponse {
221
231
  title: string;
222
232
  description: string;
223
233
  templateSuffix: string | null;
234
+ tags?: string[];
224
235
  };
225
236
  userErrors: ShopifyUserError[];
226
237
  };
@@ -402,4 +413,51 @@ export interface NormalizedId {
402
413
  gid: string;
403
414
  numeric: string;
404
415
  }
416
+ /**
417
+ * Input type for add-tags command
418
+ */
419
+ export interface AddTagsInput {
420
+ id: string;
421
+ tags: string[];
422
+ }
423
+ /**
424
+ * Input type for remove-tags command
425
+ */
426
+ export interface RemoveTagsInput {
427
+ id: string;
428
+ tags: string[];
429
+ }
430
+ /**
431
+ * Input type for set-tags command
432
+ */
433
+ export interface SetTagsInput {
434
+ id: string;
435
+ tags: string[];
436
+ }
437
+ /**
438
+ * Response type for tagsAdd mutation
439
+ */
440
+ export interface TagsAddResponse {
441
+ tagsAdd: {
442
+ node: {
443
+ id: string;
444
+ title: string;
445
+ tags: string[];
446
+ } | null;
447
+ userErrors: ShopifyUserError[];
448
+ };
449
+ }
450
+ /**
451
+ * Response type for tagsRemove mutation
452
+ */
453
+ export interface TagsRemoveResponse {
454
+ tagsRemove: {
455
+ node: {
456
+ id: string;
457
+ title: string;
458
+ tags: string[];
459
+ } | null;
460
+ userErrors: ShopifyUserError[];
461
+ };
462
+ }
405
463
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/product/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/product/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Update Product Images Command
3
+ *
4
+ * Following Command Pattern - thin orchestration layer
5
+ * Delegates business logic to ProductService
6
+ */
7
+ export declare function run(argv?: string[]): Promise<void>;
8
+ //# sourceMappingURL=update-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-images.d.ts","sourceRoot":"","sources":["../../../src/commands/product/update-images.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0EH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBAkI/D"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Update Product Images Command
3
+ *
4
+ * Following Command Pattern - thin orchestration layer
5
+ * Delegates business logic to ProductService
6
+ */
7
+ import { getCredentials, getSessionId } from '../../lib/api-client.js';
8
+ import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
9
+ import { ProductService } from './service.js';
10
+ import { requestApproval } from '../../lib/approval.js';
11
+ function showHelp() {
12
+ console.log(`
13
+ Update Product Images
14
+
15
+ Add smart, context-aware images to your products. Images are automatically
16
+ selected based on your product title, or you can provide custom URLs.
17
+
18
+ USAGE:
19
+ ecomcoder product update-images [OPTIONS]
20
+
21
+ REQUIRED:
22
+ --id <id> Product ID (numeric or GID format)
23
+
24
+ OPTIONS (at least one required):
25
+ --images <json> JSON array of image URLs or objects with url/alt
26
+ --search <query> Search Pexels for specific images (e.g., "organic skincare")
27
+ --random <count> Generate N random placeholder images (default: 6)
28
+ --source <source> Image source: 'pexels' or 'picsum' (default: pexels)
29
+ --session-id Session ID (auto-provided via SESSION_ID env var)
30
+ --help, -h Show this help message
31
+
32
+ EXAMPLES:
33
+ # Add images from custom URLs
34
+ ecomcoder product update-images --id=123 \\
35
+ --images='["https://example.com/1.jpg","https://example.com/2.jpg"]'
36
+
37
+ # Add images with alt text
38
+ ecomcoder product update-images --id=123 \\
39
+ --images='[{"url":"https://example.com/1.jpg","alt":"Front view"}]'
40
+
41
+ # Search Pexels for specific images
42
+ ecomcoder product update-images --id=123 --search="organic skincare"
43
+
44
+ # Generate 5 random placeholder images
45
+ ecomcoder product update-images --id=123 --random=5
46
+
47
+ # Use Lorem Picsum instead of Pexels
48
+ ecomcoder product update-images --id=123 --random=6 --source=picsum
49
+
50
+ SMART IMAGE SELECTION:
51
+ When using --search, the CLI searches Pexels for relevant, high-quality
52
+ stock photos. This gives your products professional imagery that matches
53
+ the product type.
54
+
55
+ Example: Searching for "hair serum" returns actual skincare product images
56
+ instead of random placeholders.
57
+
58
+ IMPORTANT NOTES:
59
+ ⚠️ Adding Images: This command ADDS new images to the product.
60
+ It does not replace existing images. To replace all images:
61
+ 1. Delete old images manually in Shopify Admin
62
+ 2. Run this command to add new images
63
+
64
+ ℹ️ Image Sources:
65
+ - pexels: High-quality stock photos (requires PEXELS_API_KEY env var)
66
+ Falls back to Lorem Picsum if API key not set
67
+ - picsum: Lorem Picsum placeholders (no API key required)
68
+
69
+ ℹ️ Async Upload: Shopify processes image uploads asynchronously.
70
+ Images may take a few seconds to appear in your store.
71
+
72
+ ℹ️ Get Pexels API Key: https://www.pexels.com/api/ (free, 200/hour limit)
73
+ Set environment variable: export PEXELS_API_KEY=your-key-here
74
+ `);
75
+ process.exit(0);
76
+ }
77
+ export async function run(argv = process.argv.slice(2)) {
78
+ if (hasHelpFlag(argv)) {
79
+ showHelp();
80
+ }
81
+ const args = parseArgs(argv);
82
+ // Validate required argument
83
+ if (!args.id) {
84
+ console.error(JSON.stringify({
85
+ success: false,
86
+ error: 'Missing required argument: --id'
87
+ }));
88
+ process.exit(1);
89
+ }
90
+ // Validate that at least one image source is provided
91
+ if (!args.images && !args.search && !args.random) {
92
+ console.error(JSON.stringify({
93
+ success: false,
94
+ error: 'At least one of --images, --search, or --random must be provided'
95
+ }));
96
+ process.exit(1);
97
+ }
98
+ // Parse images if provided
99
+ let parsedImages;
100
+ if (args.images) {
101
+ try {
102
+ parsedImages = JSON.parse(args.images);
103
+ if (!Array.isArray(parsedImages)) {
104
+ throw new Error('--images must be a JSON array');
105
+ }
106
+ }
107
+ catch (error) {
108
+ console.error(JSON.stringify({
109
+ success: false,
110
+ error: `Invalid --images format: ${error.message}. Expected JSON array.`
111
+ }));
112
+ process.exit(1);
113
+ }
114
+ }
115
+ // Validate source if provided
116
+ if (args.source && !['picsum', 'pexels'].includes(args.source)) {
117
+ console.error(JSON.stringify({
118
+ success: false,
119
+ error: 'Invalid --source. Must be "picsum" or "pexels"'
120
+ }));
121
+ process.exit(1);
122
+ }
123
+ // Validate random count if provided
124
+ if (args.random) {
125
+ const count = parseInt(args.random);
126
+ if (isNaN(count) || count < 1 || count > 50) {
127
+ console.error(JSON.stringify({
128
+ success: false,
129
+ error: 'Invalid --random value. Must be a number between 1 and 50'
130
+ }));
131
+ process.exit(1);
132
+ }
133
+ }
134
+ try {
135
+ // Get credentials
136
+ const sessionId = getSessionId(args.sessionId);
137
+ const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
138
+ // Request approval
139
+ const operationDesc = args.images
140
+ ? `add custom images`
141
+ : args.search
142
+ ? `add images for "${args.search}"`
143
+ : `add ${args.random || 6} random images`;
144
+ const approved = await requestApproval({
145
+ command: `ecomcoder product update-images --id=${args.id}`,
146
+ message: `This will ${operationDesc} to product ${args.id}`,
147
+ riskLevel: 'moderate'
148
+ });
149
+ if (!approved) {
150
+ console.log(JSON.stringify({
151
+ success: false,
152
+ error: 'Operation cancelled by user'
153
+ }));
154
+ process.exit(1);
155
+ }
156
+ // Build input for service
157
+ const input = {
158
+ id: args.id
159
+ };
160
+ if (parsedImages) {
161
+ input.images = parsedImages;
162
+ }
163
+ if (args.search) {
164
+ input.search = args.search;
165
+ }
166
+ if (args.random) {
167
+ input.random = parseInt(args.random);
168
+ }
169
+ if (args.source) {
170
+ input.source = args.source;
171
+ }
172
+ // Execute update via service
173
+ const result = await ProductService.updateImages(credentials, input);
174
+ // Output result
175
+ console.log(JSON.stringify(result, null, 2));
176
+ if (result.success) {
177
+ console.error(`\n✅ ${result.data?.imagesAdded || 0} image(s) added to product. Images upload asynchronously and may take a few seconds to appear.\n`);
178
+ }
179
+ if (!result.success) {
180
+ process.exit(1);
181
+ }
182
+ }
183
+ catch (error) {
184
+ console.error(JSON.stringify({
185
+ success: false,
186
+ error: error.message || 'Unknown error occurred'
187
+ }));
188
+ process.exit(1);
189
+ }
190
+ }
191
+ //# sourceMappingURL=update-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-images.js","sourceRoot":"","sources":["../../../src/commands/product/update-images.ts"],"names":[],"mappings":"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"}
@@ -17,12 +17,27 @@ export interface ApprovalResponse {
17
17
  * Request approval from user (via ecomcoder-app)
18
18
  *
19
19
  * Protocol:
20
- * 1. Check if APPROVAL_GRANTED=true env var is set
21
- * 2. If set, return true (approved)
22
- * 3. If not set, output APPROVAL_REQUIRED JSON and exit
20
+ * 1. Check if approvals are globally disabled via configuration
21
+ * 2. Check if APPROVAL_GRANTED=true env var is set (for testing)
22
+ * 3. If neither, output APPROVAL_REQUIRED JSON and exit
23
+ *
24
+ * Configuration priority:
25
+ * - REQUIRE_APPROVAL environment variable
26
+ * - .ecomcoder.json in current directory
27
+ * - .ecomcoder.json in home directory
28
+ * - Default (true)
23
29
  *
24
30
  * @param request - Approval request details
25
- * @returns true if approved (only returns if pre-approved via env var)
31
+ * @returns true if approved (only returns if pre-approved)
32
+ *
33
+ * @example
34
+ * // Disable approvals globally
35
+ * REQUIRE_APPROVAL=false ecomcoder product update-price --id=123 --price=29.99
36
+ *
37
+ * @example
38
+ * // Disable approvals via config file
39
+ * echo '{"requireApproval": false}' > .ecomcoder.json
40
+ * ecomcoder product update-price --id=123 --price=29.99
26
41
  */
27
42
  export declare function requestApproval(request: ApprovalRequest): Promise<boolean>;
28
43
  //# sourceMappingURL=approval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../src/lib/approval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBhF"}
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../src/lib/approval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA4BhF"}
@@ -5,19 +5,40 @@
5
5
  * Communicates with ecomcoder-app via stdout/stdin
6
6
  */
7
7
  import { randomUUID } from 'crypto';
8
+ import { getConfig } from './config.js';
8
9
  /**
9
10
  * Request approval from user (via ecomcoder-app)
10
11
  *
11
12
  * Protocol:
12
- * 1. Check if APPROVAL_GRANTED=true env var is set
13
- * 2. If set, return true (approved)
14
- * 3. If not set, output APPROVAL_REQUIRED JSON and exit
13
+ * 1. Check if approvals are globally disabled via configuration
14
+ * 2. Check if APPROVAL_GRANTED=true env var is set (for testing)
15
+ * 3. If neither, output APPROVAL_REQUIRED JSON and exit
16
+ *
17
+ * Configuration priority:
18
+ * - REQUIRE_APPROVAL environment variable
19
+ * - .ecomcoder.json in current directory
20
+ * - .ecomcoder.json in home directory
21
+ * - Default (true)
15
22
  *
16
23
  * @param request - Approval request details
17
- * @returns true if approved (only returns if pre-approved via env var)
24
+ * @returns true if approved (only returns if pre-approved)
25
+ *
26
+ * @example
27
+ * // Disable approvals globally
28
+ * REQUIRE_APPROVAL=false ecomcoder product update-price --id=123 --price=29.99
29
+ *
30
+ * @example
31
+ * // Disable approvals via config file
32
+ * echo '{"requireApproval": false}' > .ecomcoder.json
33
+ * ecomcoder product update-price --id=123 --price=29.99
18
34
  */
19
35
  export async function requestApproval(request) {
20
- // Check if approval was pre-granted via environment variable
36
+ // Check if approvals are globally disabled
37
+ const config = getConfig();
38
+ if (!config.requireApproval) {
39
+ return true; // Auto-approve when disabled
40
+ }
41
+ // Check if approval was pre-granted via environment variable (for automated tests)
21
42
  if (process.env.APPROVAL_GRANTED === 'true') {
22
43
  return true;
23
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/lib/approval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAapC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAwB;IAC5D,6DAA6D;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAEhC,yCAAyC;IACzC,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAE7C,sFAAsF;IACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/lib/approval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAaxC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAwB;IAC5D,2CAA2C;IAC3C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,CAAC,6BAA6B;IAC5C,CAAC;IAED,mFAAmF;IACnF,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAEhC,yCAAyC;IACzC,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAE7C,sFAAsF;IACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Configuration Management
3
+ *
4
+ * Centralized configuration for CLI behavior
5
+ * Supports multiple configuration sources with priority order:
6
+ * 1. Environment variables (highest priority)
7
+ * 2. .ecomcoder.json in current directory
8
+ * 3. .ecomcoder.json in home directory
9
+ * 4. Default values (lowest priority)
10
+ */
11
+ /**
12
+ * CLI Configuration Interface
13
+ */
14
+ export interface Config {
15
+ /**
16
+ * Whether to require user approval for destructive operations
17
+ * Set to true to enable approval prompts (useful for safety)
18
+ * @default false
19
+ */
20
+ requireApproval: boolean;
21
+ }
22
+ /**
23
+ * Get current CLI configuration
24
+ *
25
+ * Priority order:
26
+ * 1. REQUIRE_APPROVAL environment variable
27
+ * 2. .ecomcoder.json in current working directory
28
+ * 3. .ecomcoder.json in home directory
29
+ * 4. Default values (requireApproval: false)
30
+ *
31
+ * @returns Current configuration
32
+ *
33
+ * @example
34
+ * // Environment variable (highest priority)
35
+ * REQUIRE_APPROVAL=false ecomcoder product update-price --id=123 --price=29.99
36
+ *
37
+ * @example
38
+ * // Project-specific config
39
+ * echo '{"requireApproval": false}' > .ecomcoder.json
40
+ * ecomcoder product update-price --id=123 --price=29.99
41
+ *
42
+ * @example
43
+ * // Global user config
44
+ * echo '{"requireApproval": false}' > ~/.ecomcoder.json
45
+ * ecomcoder product update-price --id=123 --price=29.99
46
+ */
47
+ export declare function getConfig(): Config;
48
+ /**
49
+ * Clear cached configuration (useful for testing)
50
+ */
51
+ export declare function clearConfigCache(): void;
52
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAWD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAsClC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}