@sembix/cli 1.2.1 → 1.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 (205) hide show
  1. package/COMMANDS.md +1522 -0
  2. package/QUICKSTART.md +829 -0
  3. package/README.md +1976 -309
  4. package/USAGE-EXAMPLES.md +872 -0
  5. package/config.example.yaml +3 -0
  6. package/dist/commands/configure.d.ts.map +1 -1
  7. package/dist/commands/configure.js +172 -2
  8. package/dist/commands/configure.js.map +1 -1
  9. package/dist/commands/index.d.ts +10 -0
  10. package/dist/commands/index.d.ts.map +1 -0
  11. package/dist/commands/index.js +11 -0
  12. package/dist/commands/index.js.map +1 -0
  13. package/dist/commands/login.d.ts +19 -0
  14. package/dist/commands/login.d.ts.map +1 -0
  15. package/dist/commands/login.js +118 -0
  16. package/dist/commands/login.js.map +1 -0
  17. package/dist/commands/logout.d.ts +21 -0
  18. package/dist/commands/logout.d.ts.map +1 -0
  19. package/dist/commands/logout.js +66 -0
  20. package/dist/commands/logout.js.map +1 -0
  21. package/dist/commands/profile-project.d.ts +14 -0
  22. package/dist/commands/profile-project.d.ts.map +1 -0
  23. package/dist/commands/profile-project.js +123 -0
  24. package/dist/commands/profile-project.js.map +1 -0
  25. package/dist/commands/profile.d.ts +26 -0
  26. package/dist/commands/profile.d.ts.map +1 -0
  27. package/dist/commands/profile.js +177 -0
  28. package/dist/commands/profile.js.map +1 -0
  29. package/dist/commands/project.d.ts +16 -0
  30. package/dist/commands/project.d.ts.map +1 -0
  31. package/dist/commands/project.js +153 -0
  32. package/dist/commands/project.js.map +1 -0
  33. package/dist/commands/setup.js +3 -0
  34. package/dist/commands/setup.js.map +1 -1
  35. package/dist/commands/workflow.d.ts +91 -0
  36. package/dist/commands/workflow.d.ts.map +1 -0
  37. package/dist/commands/workflow.js +1201 -0
  38. package/dist/commands/workflow.js.map +1 -0
  39. package/dist/config-schema.d.ts +26 -0
  40. package/dist/config-schema.d.ts.map +1 -1
  41. package/dist/config-schema.js +24 -1
  42. package/dist/config-schema.js.map +1 -1
  43. package/dist/config.d.ts +4 -0
  44. package/dist/config.d.ts.map +1 -1
  45. package/dist/config.js +23 -2
  46. package/dist/config.js.map +1 -1
  47. package/dist/index.js +324 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/prompts/environment-setup.d.ts.map +1 -1
  50. package/dist/prompts/environment-setup.js +12 -0
  51. package/dist/prompts/environment-setup.js.map +1 -1
  52. package/dist/prompts/project-selection.d.ts +8 -0
  53. package/dist/prompts/project-selection.d.ts.map +1 -0
  54. package/dist/prompts/project-selection.js +132 -0
  55. package/dist/prompts/project-selection.js.map +1 -0
  56. package/dist/prompts/workflow-inputs.d.ts +10 -0
  57. package/dist/prompts/workflow-inputs.d.ts.map +1 -0
  58. package/dist/prompts/workflow-inputs.js +71 -0
  59. package/dist/prompts/workflow-inputs.js.map +1 -0
  60. package/dist/prompts/workflow-selection.d.ts +8 -0
  61. package/dist/prompts/workflow-selection.d.ts.map +1 -0
  62. package/dist/prompts/workflow-selection.js +147 -0
  63. package/dist/prompts/workflow-selection.js.map +1 -0
  64. package/dist/sembix-cli-1.4.0.tgz +0 -0
  65. package/dist/services/cognito-auth.d.ts +92 -0
  66. package/dist/services/cognito-auth.d.ts.map +1 -0
  67. package/dist/services/cognito-auth.js +319 -0
  68. package/dist/services/cognito-auth.js.map +1 -0
  69. package/dist/services/studio-api-client.d.ts +127 -0
  70. package/dist/services/studio-api-client.d.ts.map +1 -0
  71. package/dist/services/studio-api-client.js +291 -0
  72. package/dist/services/studio-api-client.js.map +1 -0
  73. package/dist/types/studio.d.ts +82 -0
  74. package/dist/types/studio.d.ts.map +1 -0
  75. package/dist/types/studio.js +7 -0
  76. package/dist/types/studio.js.map +1 -0
  77. package/dist/types.d.ts +286 -0
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/types.js +5 -0
  80. package/dist/types.js.map +1 -1
  81. package/dist/utils/browser-auth.d.ts +45 -0
  82. package/dist/utils/browser-auth.d.ts.map +1 -0
  83. package/dist/utils/browser-auth.js +168 -0
  84. package/dist/utils/browser-auth.js.map +1 -0
  85. package/dist/utils/cognito-auth.d.ts +3 -0
  86. package/dist/utils/cognito-auth.d.ts.map +1 -0
  87. package/dist/utils/cognito-auth.js +3 -0
  88. package/dist/utils/cognito-auth.js.map +1 -0
  89. package/dist/utils/config-file.d.ts +40 -0
  90. package/dist/utils/config-file.d.ts.map +1 -1
  91. package/dist/utils/config-file.js +158 -4
  92. package/dist/utils/config-file.js.map +1 -1
  93. package/dist/utils/config-loader.d.ts.map +1 -1
  94. package/dist/utils/config-loader.js +15 -2
  95. package/dist/utils/config-loader.js.map +1 -1
  96. package/dist/utils/environment.d.ts +22 -0
  97. package/dist/utils/environment.d.ts.map +1 -0
  98. package/dist/utils/environment.js +39 -0
  99. package/dist/utils/environment.js.map +1 -0
  100. package/dist/utils/error-handler.d.ts +53 -0
  101. package/dist/utils/error-handler.d.ts.map +1 -0
  102. package/dist/utils/error-handler.js +174 -0
  103. package/dist/utils/error-handler.js.map +1 -0
  104. package/dist/utils/fuzzy-match.d.ts +31 -0
  105. package/dist/utils/fuzzy-match.d.ts.map +1 -0
  106. package/dist/utils/fuzzy-match.js +138 -0
  107. package/dist/utils/fuzzy-match.js.map +1 -0
  108. package/dist/utils/input-parser.d.ts +14 -0
  109. package/dist/utils/input-parser.d.ts.map +1 -0
  110. package/dist/utils/input-parser.js +34 -0
  111. package/dist/utils/input-parser.js.map +1 -0
  112. package/dist/utils/output.d.ts +55 -0
  113. package/dist/utils/output.d.ts.map +1 -0
  114. package/dist/utils/output.js +80 -0
  115. package/dist/utils/output.js.map +1 -0
  116. package/dist/utils/recent-workflows.d.ts +37 -0
  117. package/dist/utils/recent-workflows.d.ts.map +1 -0
  118. package/dist/utils/recent-workflows.js +172 -0
  119. package/dist/utils/recent-workflows.js.map +1 -0
  120. package/dist/utils/studio-api-client.d.ts +3 -0
  121. package/dist/utils/studio-api-client.d.ts.map +1 -0
  122. package/dist/utils/studio-api-client.js +3 -0
  123. package/dist/utils/studio-api-client.js.map +1 -0
  124. package/dist/utils/studio-api.d.ts +53 -0
  125. package/dist/utils/studio-api.d.ts.map +1 -0
  126. package/dist/utils/studio-api.js +102 -0
  127. package/dist/utils/studio-api.js.map +1 -0
  128. package/dist/utils/studio-config.d.ts +74 -0
  129. package/dist/utils/studio-config.d.ts.map +1 -0
  130. package/dist/utils/studio-config.js +213 -0
  131. package/dist/utils/studio-config.js.map +1 -0
  132. package/dist/utils/token-manager.d.ts +4 -0
  133. package/dist/utils/token-manager.d.ts.map +1 -0
  134. package/dist/utils/token-manager.js +3 -0
  135. package/dist/utils/token-manager.js.map +1 -0
  136. package/dist/utils/ui.d.ts +55 -1
  137. package/dist/utils/ui.d.ts.map +1 -1
  138. package/dist/utils/ui.js +151 -2
  139. package/dist/utils/ui.js.map +1 -1
  140. package/package.json +4 -1
  141. package/dist/__tests__/config-schema.test.d.ts +0 -2
  142. package/dist/__tests__/config-schema.test.d.ts.map +0 -1
  143. package/dist/__tests__/config-schema.test.js +0 -471
  144. package/dist/__tests__/config-schema.test.js.map +0 -1
  145. package/dist/__tests__/config.test.d.ts +0 -2
  146. package/dist/__tests__/config.test.d.ts.map +0 -1
  147. package/dist/__tests__/config.test.js +0 -75
  148. package/dist/__tests__/config.test.js.map +0 -1
  149. package/dist/__tests__/integration/configure.test.d.ts +0 -2
  150. package/dist/__tests__/integration/configure.test.d.ts.map +0 -1
  151. package/dist/__tests__/integration/configure.test.js +0 -247
  152. package/dist/__tests__/integration/configure.test.js.map +0 -1
  153. package/dist/__tests__/integration/fixtures/configs.d.ts +0 -477
  154. package/dist/__tests__/integration/fixtures/configs.d.ts.map +0 -1
  155. package/dist/__tests__/integration/fixtures/configs.js +0 -175
  156. package/dist/__tests__/integration/fixtures/configs.js.map +0 -1
  157. package/dist/__tests__/integration/helpers/cli-runner.d.ts +0 -63
  158. package/dist/__tests__/integration/helpers/cli-runner.d.ts.map +0 -1
  159. package/dist/__tests__/integration/helpers/cli-runner.js +0 -152
  160. package/dist/__tests__/integration/helpers/cli-runner.js.map +0 -1
  161. package/dist/__tests__/integration/helpers/command-runner.d.ts +0 -53
  162. package/dist/__tests__/integration/helpers/command-runner.d.ts.map +0 -1
  163. package/dist/__tests__/integration/helpers/command-runner.js +0 -117
  164. package/dist/__tests__/integration/helpers/command-runner.js.map +0 -1
  165. package/dist/__tests__/integration/studio-create.test.d.ts +0 -2
  166. package/dist/__tests__/integration/studio-create.test.d.ts.map +0 -1
  167. package/dist/__tests__/integration/studio-create.test.js +0 -209
  168. package/dist/__tests__/integration/studio-create.test.js.map +0 -1
  169. package/dist/__tests__/integration/studio-update.test.d.ts +0 -2
  170. package/dist/__tests__/integration/studio-update.test.d.ts.map +0 -1
  171. package/dist/__tests__/integration/studio-update.test.js +0 -166
  172. package/dist/__tests__/integration/studio-update.test.js.map +0 -1
  173. package/dist/commands/__tests__/configure.test.d.ts +0 -2
  174. package/dist/commands/__tests__/configure.test.d.ts.map +0 -1
  175. package/dist/commands/__tests__/configure.test.js +0 -229
  176. package/dist/commands/__tests__/configure.test.js.map +0 -1
  177. package/dist/prompts/__tests__/environment-setup.test.d.ts +0 -2
  178. package/dist/prompts/__tests__/environment-setup.test.d.ts.map +0 -1
  179. package/dist/prompts/__tests__/environment-setup.test.js +0 -206
  180. package/dist/prompts/__tests__/environment-setup.test.js.map +0 -1
  181. package/dist/prompts/__tests__/hub-integration.test.d.ts +0 -2
  182. package/dist/prompts/__tests__/hub-integration.test.d.ts.map +0 -1
  183. package/dist/prompts/__tests__/hub-integration.test.js +0 -126
  184. package/dist/prompts/__tests__/hub-integration.test.js.map +0 -1
  185. package/dist/prompts/__tests__/prompt-helpers.test.d.ts +0 -2
  186. package/dist/prompts/__tests__/prompt-helpers.test.d.ts.map +0 -1
  187. package/dist/prompts/__tests__/prompt-helpers.test.js +0 -235
  188. package/dist/prompts/__tests__/prompt-helpers.test.js.map +0 -1
  189. package/dist/sembix-cli-1.2.1.tgz +0 -0
  190. package/dist/utils/__tests__/config-file.test.d.ts +0 -2
  191. package/dist/utils/__tests__/config-file.test.d.ts.map +0 -1
  192. package/dist/utils/__tests__/config-file.test.js +0 -218
  193. package/dist/utils/__tests__/config-file.test.js.map +0 -1
  194. package/dist/utils/__tests__/config-loader.test.d.ts +0 -2
  195. package/dist/utils/__tests__/config-loader.test.d.ts.map +0 -1
  196. package/dist/utils/__tests__/config-loader.test.js +0 -325
  197. package/dist/utils/__tests__/config-loader.test.js.map +0 -1
  198. package/dist/utils/__tests__/github.test.d.ts +0 -2
  199. package/dist/utils/__tests__/github.test.d.ts.map +0 -1
  200. package/dist/utils/__tests__/github.test.js +0 -282
  201. package/dist/utils/__tests__/github.test.js.map +0 -1
  202. package/dist/utils/__tests__/ui.test.d.ts +0 -2
  203. package/dist/utils/__tests__/ui.test.d.ts.map +0 -1
  204. package/dist/utils/__tests__/ui.test.js +0 -256
  205. package/dist/utils/__tests__/ui.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Fuzzy matching utility for searching workflows and projects
3
+ */
4
+ export interface FuzzyMatch<T> {
5
+ item: T;
6
+ score: number;
7
+ matches: number[];
8
+ }
9
+ /**
10
+ * Performs fuzzy matching on a list of items
11
+ * @param query Search query
12
+ * @param items List of items to search
13
+ * @param getText Function to extract searchable text from an item
14
+ * @param minScore Minimum score threshold (default: 100)
15
+ * @returns Sorted array of matches (highest score first)
16
+ */
17
+ export declare function fuzzyMatch<T>(query: string, items: T[], getText: (item: T) => string, minScore?: number): FuzzyMatch<T>[];
18
+ /**
19
+ * Highlights matched characters in terminal output
20
+ * @param text Original text
21
+ * @param matches Array of character indices to highlight
22
+ * @returns Text with ANSI color codes for highlighting
23
+ */
24
+ export declare function highlightMatches(text: string, matches: number[]): string;
25
+ /**
26
+ * Converts a score to a percentage (0-100)
27
+ * @param score Fuzzy match score
28
+ * @returns Percentage (0-100)
29
+ */
30
+ export declare function scoreToPercentage(score: number): number;
31
+ //# sourceMappingURL=fuzzy-match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-match.d.ts","sourceRoot":"","sources":["../../src/utils/fuzzy-match.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC5B,QAAQ,GAAE,MAAY,GACrB,UAAU,CAAC,CAAC,CAAC,EAAE,CAwBjB;AAsFD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAgBxE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvD"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Fuzzy matching utility for searching workflows and projects
3
+ */
4
+ /**
5
+ * Performs fuzzy matching on a list of items
6
+ * @param query Search query
7
+ * @param items List of items to search
8
+ * @param getText Function to extract searchable text from an item
9
+ * @param minScore Minimum score threshold (default: 100)
10
+ * @returns Sorted array of matches (highest score first)
11
+ */
12
+ export function fuzzyMatch(query, items, getText, minScore = 100) {
13
+ const normalizedQuery = query.toLowerCase().trim();
14
+ if (!normalizedQuery)
15
+ return [];
16
+ const results = [];
17
+ for (const item of items) {
18
+ const text = getText(item);
19
+ const normalizedText = text.toLowerCase();
20
+ const score = calculateScore(normalizedQuery, normalizedText);
21
+ if (score >= minScore) {
22
+ results.push({
23
+ item,
24
+ score,
25
+ matches: findMatches(normalizedQuery, normalizedText)
26
+ });
27
+ }
28
+ }
29
+ // Sort by score descending
30
+ results.sort((a, b) => b.score - a.score);
31
+ return results;
32
+ }
33
+ /**
34
+ * Calculates a fuzzy match score
35
+ * Higher score = better match
36
+ */
37
+ function calculateScore(query, text) {
38
+ // Exact match (case-insensitive)
39
+ if (text === query)
40
+ return 1000;
41
+ // Starts with query
42
+ if (text.startsWith(query)) {
43
+ return 500 + (100 - text.indexOf(query));
44
+ }
45
+ // Word boundary match (after space, dash, or underscore)
46
+ const words = text.split(/[\s\-_]+/);
47
+ for (let i = 0; i < words.length; i++) {
48
+ if (words[i].startsWith(query)) {
49
+ // Earlier words get higher scores
50
+ return 300 + (100 - i * 10);
51
+ }
52
+ }
53
+ // Substring match
54
+ const index = text.indexOf(query);
55
+ if (index >= 0) {
56
+ // Earlier matches get higher scores
57
+ return 200 + (100 - index);
58
+ }
59
+ // Character sequence match (all characters appear in order)
60
+ let score = 0;
61
+ let queryIndex = 0;
62
+ let consecutive = 0;
63
+ let lastMatchIndex = -1;
64
+ for (let i = 0; i < text.length && queryIndex < query.length; i++) {
65
+ if (text[i] === query[queryIndex]) {
66
+ queryIndex++;
67
+ // Bonus for consecutive matches
68
+ if (lastMatchIndex === i - 1) {
69
+ consecutive++;
70
+ score += consecutive * 10;
71
+ }
72
+ else {
73
+ consecutive = 1;
74
+ score += 5;
75
+ }
76
+ // Bonus for matches at word boundaries
77
+ if (i === 0 || /[\s\-_]/.test(text[i - 1])) {
78
+ score += 15;
79
+ }
80
+ lastMatchIndex = i;
81
+ }
82
+ else {
83
+ consecutive = 0;
84
+ }
85
+ }
86
+ // All characters matched?
87
+ if (queryIndex === query.length) {
88
+ return score;
89
+ }
90
+ return 0;
91
+ }
92
+ /**
93
+ * Finds the indices of matched characters
94
+ */
95
+ function findMatches(query, text) {
96
+ const matches = [];
97
+ let queryIndex = 0;
98
+ for (let i = 0; i < text.length && queryIndex < query.length; i++) {
99
+ if (text[i] === query[queryIndex]) {
100
+ matches.push(i);
101
+ queryIndex++;
102
+ }
103
+ }
104
+ return matches;
105
+ }
106
+ /**
107
+ * Highlights matched characters in terminal output
108
+ * @param text Original text
109
+ * @param matches Array of character indices to highlight
110
+ * @returns Text with ANSI color codes for highlighting
111
+ */
112
+ export function highlightMatches(text, matches) {
113
+ if (matches.length === 0)
114
+ return text;
115
+ let result = '';
116
+ const matchSet = new Set(matches);
117
+ for (let i = 0; i < text.length; i++) {
118
+ if (matchSet.has(i)) {
119
+ // Bold yellow for matched characters
120
+ result += `\x1b[1m\x1b[33m${text[i]}\x1b[0m`;
121
+ }
122
+ else {
123
+ result += text[i];
124
+ }
125
+ }
126
+ return result;
127
+ }
128
+ /**
129
+ * Converts a score to a percentage (0-100)
130
+ * @param score Fuzzy match score
131
+ * @returns Percentage (0-100)
132
+ */
133
+ export function scoreToPercentage(score) {
134
+ // Map score to percentage
135
+ // 1000 = 100%, 0 = 0%
136
+ return Math.min(100, Math.round((score / 1000) * 100));
137
+ }
138
+ //# sourceMappingURL=fuzzy-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-match.js","sourceRoot":"","sources":["../../src/utils/fuzzy-match.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { StartWorkflowConfiguration } from '../types.js';
2
+ /**
3
+ * Parse workflow inputs from JSON string and detect format.
4
+ * Supports two formats:
5
+ * 1. Simple key-value object: {"key": "value"} -> maps to inputVariables (deprecated)
6
+ * 2. InitialInstructions array: [{"id": "x", "instruction": "value"}] -> maps to initialInstructions
7
+ * 3. Complete StartWorkflowConfiguration object with initialInstructions or workspaceMetadata
8
+ *
9
+ * @param inputsJson - JSON string containing workflow inputs
10
+ * @returns StartWorkflowConfiguration object ready to send to API
11
+ * @throws Error if JSON is invalid or format is unrecognized
12
+ */
13
+ export declare function parseWorkflowInputs(inputsJson: string): StartWorkflowConfiguration;
14
+ //# sourceMappingURL=input-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-parser.d.ts","sourceRoot":"","sources":["../../src/utils/input-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,0BAA0B,CAuBlF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Parse workflow inputs from JSON string and detect format.
3
+ * Supports two formats:
4
+ * 1. Simple key-value object: {"key": "value"} -> maps to inputVariables (deprecated)
5
+ * 2. InitialInstructions array: [{"id": "x", "instruction": "value"}] -> maps to initialInstructions
6
+ * 3. Complete StartWorkflowConfiguration object with initialInstructions or workspaceMetadata
7
+ *
8
+ * @param inputsJson - JSON string containing workflow inputs
9
+ * @returns StartWorkflowConfiguration object ready to send to API
10
+ * @throws Error if JSON is invalid or format is unrecognized
11
+ */
12
+ export function parseWorkflowInputs(inputsJson) {
13
+ const parsed = JSON.parse(inputsJson);
14
+ // Detect format by structure
15
+ if (Array.isArray(parsed)) {
16
+ // Array format → InitialInstructions
17
+ return {
18
+ initialInstructions: parsed
19
+ };
20
+ }
21
+ else if (typeof parsed === 'object' && parsed !== null) {
22
+ // Check if it's already a complete StartWorkflowConfiguration
23
+ if ('initialInstructions' in parsed || 'workspaceMetadata' in parsed || 'inputVariables' in parsed) {
24
+ // Already in correct format
25
+ return parsed;
26
+ }
27
+ // Simple key-value object → Legacy inputVariables
28
+ return {
29
+ inputVariables: parsed
30
+ };
31
+ }
32
+ throw new Error('Invalid input format. Expected object or array.');
33
+ }
34
+ //# sourceMappingURL=input-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-parser.js","sourceRoot":"","sources":["../../src/utils/input-parser.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEtC,6BAA6B;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,qCAAqC;QACrC,OAAO;YACL,mBAAmB,EAAE,MAAM;SAC5B,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACzD,8DAA8D;QAC9D,IAAI,qBAAqB,IAAI,MAAM,IAAI,mBAAmB,IAAI,MAAM,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAAC;YACnG,4BAA4B;YAC5B,OAAO,MAAoC,CAAC;QAC9C,CAAC;QAED,kDAAkD;QAClD,OAAO;YACL,cAAc,EAAE,MAAM;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Output formatting utilities for CLI commands.
3
+ * Supports JSON (compact), PRETTY (pretty-printed JSON), and TEXT (human-readable) formats.
4
+ * Follows AWS CLI patterns for output and error handling.
5
+ */
6
+ export declare enum OutputFormat {
7
+ JSON = "json",// Default: compact JSON
8
+ PRETTY = "pretty",// Pretty-printed JSON
9
+ TEXT = "text"
10
+ }
11
+ export interface OutputOptions {
12
+ format: OutputFormat;
13
+ command?: string;
14
+ }
15
+ /**
16
+ * Output successful command results.
17
+ * For JSON/PRETTY modes, outputs to stdout and exits with code 0.
18
+ * For TEXT mode, returns control to the command for custom formatting.
19
+ *
20
+ * @param data - Data to output
21
+ * @param options - Output options including format
22
+ */
23
+ export declare function outputSuccess<T>(data: T, options: OutputOptions): void;
24
+ /**
25
+ * Output error to stderr in JSON format and exit with specified code.
26
+ * Follows AWS CLI error formatting pattern.
27
+ *
28
+ * @param error - Error object or message
29
+ * @param exitCode - Exit code (default: 1)
30
+ */
31
+ export declare function outputError(error: Error | string, exitCode?: number): void;
32
+ /**
33
+ * Command options interface for output format selection
34
+ */
35
+ export interface CommandOptionsWithOutput {
36
+ output?: string;
37
+ pretty?: boolean;
38
+ }
39
+ /**
40
+ * Determine output format from command options.
41
+ * Priority: --pretty flag > --output flag > default (json)
42
+ *
43
+ * @param options - Command options
44
+ * @returns Output format
45
+ */
46
+ export declare function getOutputFormat(options: CommandOptionsWithOutput): OutputFormat;
47
+ /**
48
+ * Check if the command is running in quiet mode (JSON/PRETTY output).
49
+ * In quiet mode, UI elements like banners and spinners should be suppressed.
50
+ *
51
+ * @param format - Output format
52
+ * @returns true if quiet mode (JSON/PRETTY), false if TEXT mode
53
+ */
54
+ export declare function isQuietMode(format: OutputFormat): boolean;
55
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,YAAY;IACtB,IAAI,SAAS,CAAO,wBAAwB;IAC5C,MAAM,WAAW,CAAG,sBAAsB;IAC1C,IAAI,SAAS;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAYtE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,IAAI,CAY7E;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,wBAAwB,GAAG,YAAY,CAe/E;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAEzD"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Output formatting utilities for CLI commands.
3
+ * Supports JSON (compact), PRETTY (pretty-printed JSON), and TEXT (human-readable) formats.
4
+ * Follows AWS CLI patterns for output and error handling.
5
+ */
6
+ export var OutputFormat;
7
+ (function (OutputFormat) {
8
+ OutputFormat["JSON"] = "json";
9
+ OutputFormat["PRETTY"] = "pretty";
10
+ OutputFormat["TEXT"] = "text"; // Human-readable (legacy mode)
11
+ })(OutputFormat || (OutputFormat = {}));
12
+ /**
13
+ * Output successful command results.
14
+ * For JSON/PRETTY modes, outputs to stdout and exits with code 0.
15
+ * For TEXT mode, returns control to the command for custom formatting.
16
+ *
17
+ * @param data - Data to output
18
+ * @param options - Output options including format
19
+ */
20
+ export function outputSuccess(data, options) {
21
+ if (options.format === OutputFormat.TEXT) {
22
+ // Return control to command for human-readable output
23
+ return;
24
+ }
25
+ const output = options.format === OutputFormat.PRETTY
26
+ ? JSON.stringify(data, null, 2)
27
+ : JSON.stringify(data);
28
+ console.log(output);
29
+ process.exit(0);
30
+ }
31
+ /**
32
+ * Output error to stderr in JSON format and exit with specified code.
33
+ * Follows AWS CLI error formatting pattern.
34
+ *
35
+ * @param error - Error object or message
36
+ * @param exitCode - Exit code (default: 1)
37
+ */
38
+ export function outputError(error, exitCode = 1) {
39
+ const errorObj = typeof error === 'string' ? new Error(error) : error;
40
+ const errorData = {
41
+ error: {
42
+ message: errorObj.message,
43
+ code: 'code' in errorObj && typeof errorObj.code === 'string' ? errorObj.code : 'CLI_ERROR',
44
+ type: errorObj.name || 'Error'
45
+ }
46
+ };
47
+ console.error(JSON.stringify(errorData));
48
+ process.exit(exitCode);
49
+ }
50
+ /**
51
+ * Determine output format from command options.
52
+ * Priority: --pretty flag > --output flag > default (json)
53
+ *
54
+ * @param options - Command options
55
+ * @returns Output format
56
+ */
57
+ export function getOutputFormat(options) {
58
+ if (options.pretty) {
59
+ return OutputFormat.PRETTY;
60
+ }
61
+ if (options.output === 'text') {
62
+ return OutputFormat.TEXT;
63
+ }
64
+ if (options.output === 'pretty') {
65
+ return OutputFormat.PRETTY;
66
+ }
67
+ // Default to JSON
68
+ return OutputFormat.JSON;
69
+ }
70
+ /**
71
+ * Check if the command is running in quiet mode (JSON/PRETTY output).
72
+ * In quiet mode, UI elements like banners and spinners should be suppressed.
73
+ *
74
+ * @param format - Output format
75
+ * @returns true if quiet mode (JSON/PRETTY), false if TEXT mode
76
+ */
77
+ export function isQuietMode(format) {
78
+ return format !== OutputFormat.TEXT;
79
+ }
80
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,iCAAiB,CAAA;IACjB,6BAAa,CAAA,CAAO,+BAA+B;AACrD,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAI,IAAO,EAAE,OAAsB;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;QACzC,sDAAsD;QACtD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;QACnD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAqB,EAAE,WAAmB,CAAC;IACrE,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE;YACL,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW;YAC3F,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,OAAO;SAC/B;KACF,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,OAAiC;IAC/D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,YAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,kBAAkB;IAClB,OAAO,YAAY,CAAC,IAAI,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB;IAC9C,OAAO,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC;AACtC,CAAC"}
@@ -0,0 +1,37 @@
1
+ export interface RecentWorkflowEntry {
2
+ profileName: string;
3
+ projectId: string;
4
+ projectName: string;
5
+ workflowId: string;
6
+ workflowName: string;
7
+ lastUsed: string;
8
+ useCount: number;
9
+ }
10
+ /**
11
+ * Adds or updates a recent workflow entry
12
+ * Increments use count if entry already exists
13
+ */
14
+ export declare function addRecentWorkflow(profileName: string, projectId: string, projectName: string, workflowId: string, workflowName: string): Promise<void>;
15
+ /**
16
+ * Gets recent workflows for a profile, optionally filtered by project
17
+ * Sorted by use count (desc) then last used (desc)
18
+ */
19
+ export declare function getRecentWorkflows(profileName: string, projectId?: string, limit?: number): Promise<RecentWorkflowEntry[]>;
20
+ /**
21
+ * Gets recent projects for a profile
22
+ * Returns unique projects sorted by most recently used workflow
23
+ */
24
+ export declare function getRecentProjects(profileName: string, limit?: number): Promise<Array<{
25
+ projectId: string;
26
+ projectName: string;
27
+ lastUsed: string;
28
+ }>>;
29
+ /**
30
+ * Clears all cached workflows for a specific profile
31
+ */
32
+ export declare function clearCacheForProfile(profileName: string): Promise<void>;
33
+ /**
34
+ * Clears the entire cache
35
+ */
36
+ export declare function clearCache(): Promise<void>;
37
+ //# sourceMappingURL=recent-workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recent-workflows.d.ts","sourceRoot":"","sources":["../../src/utils/recent-workflows.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAkBhC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAwB9E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7E;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD"}
@@ -0,0 +1,172 @@
1
+ import { homedir } from 'os';
2
+ import { join } from 'path';
3
+ import { promises as fs } from 'fs';
4
+ import { existsSync } from 'fs';
5
+ const CACHE_DIR = join(homedir(), '.sembix');
6
+ const CACHE_FILE = join(CACHE_DIR, 'recent-workflows.json');
7
+ const MAX_ENTRIES = 50;
8
+ const MAX_ENTRIES_PER_PROFILE = 10;
9
+ const CACHE_VERSION = '1.0';
10
+ /**
11
+ * Adds or updates a recent workflow entry
12
+ * Increments use count if entry already exists
13
+ */
14
+ export async function addRecentWorkflow(profileName, projectId, projectName, workflowId, workflowName) {
15
+ const cache = await loadCache();
16
+ // Find existing entry
17
+ const existingIndex = cache.entries.findIndex(e => e.profileName === profileName &&
18
+ e.projectId === projectId &&
19
+ e.workflowId === workflowId);
20
+ if (existingIndex >= 0) {
21
+ // Update existing entry
22
+ cache.entries[existingIndex].lastUsed = new Date().toISOString();
23
+ cache.entries[existingIndex].useCount++;
24
+ cache.entries[existingIndex].projectName = projectName; // update in case changed
25
+ cache.entries[existingIndex].workflowName = workflowName; // update in case changed
26
+ }
27
+ else {
28
+ // Add new entry
29
+ cache.entries.push({
30
+ profileName,
31
+ projectId,
32
+ projectName,
33
+ workflowId,
34
+ workflowName,
35
+ lastUsed: new Date().toISOString(),
36
+ useCount: 1
37
+ });
38
+ }
39
+ // Evict old entries if needed
40
+ await evictOldEntries(cache);
41
+ await saveCache(cache);
42
+ }
43
+ /**
44
+ * Gets recent workflows for a profile, optionally filtered by project
45
+ * Sorted by use count (desc) then last used (desc)
46
+ */
47
+ export async function getRecentWorkflows(profileName, projectId, limit = 10) {
48
+ const cache = await loadCache();
49
+ let filtered = cache.entries.filter(e => e.profileName === profileName);
50
+ if (projectId) {
51
+ filtered = filtered.filter(e => e.projectId === projectId);
52
+ }
53
+ // Sort by useCount (desc), then lastUsed (desc)
54
+ filtered.sort((a, b) => {
55
+ if (b.useCount !== a.useCount) {
56
+ return b.useCount - a.useCount;
57
+ }
58
+ return new Date(b.lastUsed).getTime() - new Date(a.lastUsed).getTime();
59
+ });
60
+ return filtered.slice(0, limit);
61
+ }
62
+ /**
63
+ * Gets recent projects for a profile
64
+ * Returns unique projects sorted by most recently used workflow
65
+ */
66
+ export async function getRecentProjects(profileName, limit = 5) {
67
+ const cache = await loadCache();
68
+ const filtered = cache.entries.filter(e => e.profileName === profileName);
69
+ // Group by project and get most recent usage
70
+ const projectMap = new Map();
71
+ for (const entry of filtered) {
72
+ const existing = projectMap.get(entry.projectId);
73
+ if (!existing || new Date(entry.lastUsed) > new Date(existing.lastUsed)) {
74
+ projectMap.set(entry.projectId, {
75
+ projectId: entry.projectId,
76
+ projectName: entry.projectName,
77
+ lastUsed: entry.lastUsed
78
+ });
79
+ }
80
+ }
81
+ // Convert to array and sort by most recent
82
+ const projects = Array.from(projectMap.values());
83
+ projects.sort((a, b) => new Date(b.lastUsed).getTime() - new Date(a.lastUsed).getTime());
84
+ return projects.slice(0, limit);
85
+ }
86
+ /**
87
+ * Clears all cached workflows for a specific profile
88
+ */
89
+ export async function clearCacheForProfile(profileName) {
90
+ const cache = await loadCache();
91
+ cache.entries = cache.entries.filter(e => e.profileName !== profileName);
92
+ await saveCache(cache);
93
+ }
94
+ /**
95
+ * Clears the entire cache
96
+ */
97
+ export async function clearCache() {
98
+ if (existsSync(CACHE_FILE)) {
99
+ await fs.unlink(CACHE_FILE);
100
+ }
101
+ }
102
+ /**
103
+ * Evicts old entries based on LRU and per-profile limits
104
+ */
105
+ async function evictOldEntries(cache) {
106
+ // Overall limit - keep most recently used
107
+ if (cache.entries.length > MAX_ENTRIES) {
108
+ cache.entries.sort((a, b) => new Date(b.lastUsed).getTime() - new Date(a.lastUsed).getTime());
109
+ cache.entries = cache.entries.slice(0, MAX_ENTRIES);
110
+ }
111
+ // Per-profile limit - keep most frequently used within each profile
112
+ const profileGroups = new Map();
113
+ for (const entry of cache.entries) {
114
+ if (!profileGroups.has(entry.profileName)) {
115
+ profileGroups.set(entry.profileName, []);
116
+ }
117
+ profileGroups.get(entry.profileName).push(entry);
118
+ }
119
+ const kept = [];
120
+ for (const [, entries] of profileGroups) {
121
+ // Sort by useCount (desc), then lastUsed (desc)
122
+ entries.sort((a, b) => {
123
+ if (b.useCount !== a.useCount)
124
+ return b.useCount - a.useCount;
125
+ return new Date(b.lastUsed).getTime() - new Date(a.lastUsed).getTime();
126
+ });
127
+ kept.push(...entries.slice(0, MAX_ENTRIES_PER_PROFILE));
128
+ }
129
+ cache.entries = kept;
130
+ }
131
+ /**
132
+ * Loads the cache from disk
133
+ * Returns empty cache if file doesn't exist or can't be parsed
134
+ */
135
+ async function loadCache() {
136
+ try {
137
+ if (!existsSync(CACHE_FILE)) {
138
+ return { version: CACHE_VERSION, entries: [] };
139
+ }
140
+ const content = await fs.readFile(CACHE_FILE, 'utf-8');
141
+ const cache = JSON.parse(content);
142
+ // Validate version and structure
143
+ if (!cache.version || !Array.isArray(cache.entries)) {
144
+ return { version: CACHE_VERSION, entries: [] };
145
+ }
146
+ return cache;
147
+ }
148
+ catch {
149
+ // If we can't read or parse the cache, return empty cache
150
+ return { version: CACHE_VERSION, entries: [] };
151
+ }
152
+ }
153
+ /**
154
+ * Saves the cache to disk with restricted permissions
155
+ */
156
+ async function saveCache(cache) {
157
+ try {
158
+ // Ensure directory exists
159
+ if (!existsSync(CACHE_DIR)) {
160
+ await fs.mkdir(CACHE_DIR, { recursive: true, mode: 0o700 });
161
+ }
162
+ // Write cache file with restricted permissions (only user can read/write)
163
+ const content = JSON.stringify(cache, null, 2);
164
+ await fs.writeFile(CACHE_FILE, content, { mode: 0o600 });
165
+ }
166
+ catch (error) {
167
+ // Silently fail if we can't write the cache
168
+ // This shouldn't break the CLI functionality
169
+ console.error('Warning: Failed to save recent workflows cache:', error instanceof Error ? error.message : 'Unknown error');
170
+ }
171
+ }
172
+ //# sourceMappingURL=recent-workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recent-workflows.js","sourceRoot":"","sources":["../../src/utils/recent-workflows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { StudioApiClient } from '../services/studio-api-client.js';
2
+ export type { StudioProfile, StudioAuthTokens, StartWorkflowConfiguration, WorkflowStartResponse, FetchWorkflowRunResponse, FetchWorkflowRunListItem, SearchParams } from '../types.js';
3
+ //# sourceMappingURL=studio-api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-api-client.d.ts","sourceRoot":"","sources":["../../src/utils/studio-api-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGnE,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,YAAY,EACb,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-export from service layer
2
+ export { StudioApiClient } from '../services/studio-api-client.js';
3
+ //# sourceMappingURL=studio-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-api-client.js","sourceRoot":"","sources":["../../src/utils/studio-api-client.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC"}