@nevermined-io/cli 1.0.3-rc1

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 (209) hide show
  1. package/README.md +194 -0
  2. package/bin/dev.js +5 -0
  3. package/bin/run.js +5 -0
  4. package/dist/base-command.d.ts +36 -0
  5. package/dist/base-command.d.ts.map +1 -0
  6. package/dist/base-command.js +161 -0
  7. package/dist/base-command.js.map +1 -0
  8. package/dist/commands/agents/add-plan-to-agent.d.ts +19 -0
  9. package/dist/commands/agents/add-plan-to-agent.d.ts.map +1 -0
  10. package/dist/commands/agents/add-plan-to-agent.js +33 -0
  11. package/dist/commands/agents/add-plan-to-agent.js.map +1 -0
  12. package/dist/commands/agents/get-agent-plans.d.ts +19 -0
  13. package/dist/commands/agents/get-agent-plans.d.ts.map +1 -0
  14. package/dist/commands/agents/get-agent-plans.js +36 -0
  15. package/dist/commands/agents/get-agent-plans.js.map +1 -0
  16. package/dist/commands/agents/get-agent.d.ts +18 -0
  17. package/dist/commands/agents/get-agent.d.ts.map +1 -0
  18. package/dist/commands/agents/get-agent.js +32 -0
  19. package/dist/commands/agents/get-agent.js.map +1 -0
  20. package/dist/commands/agents/register-agent-and-plan.d.ts +21 -0
  21. package/dist/commands/agents/register-agent-and-plan.d.ts.map +1 -0
  22. package/dist/commands/agents/register-agent-and-plan.js +44 -0
  23. package/dist/commands/agents/register-agent-and-plan.js.map +1 -0
  24. package/dist/commands/agents/register-agent.d.ts +18 -0
  25. package/dist/commands/agents/register-agent.d.ts.map +1 -0
  26. package/dist/commands/agents/register-agent.js +32 -0
  27. package/dist/commands/agents/register-agent.js.map +1 -0
  28. package/dist/commands/agents/remove-plan-from-agent.d.ts +19 -0
  29. package/dist/commands/agents/remove-plan-from-agent.d.ts.map +1 -0
  30. package/dist/commands/agents/remove-plan-from-agent.js +33 -0
  31. package/dist/commands/agents/remove-plan-from-agent.js.map +1 -0
  32. package/dist/commands/agents/update-agent-metadata.d.ts +20 -0
  33. package/dist/commands/agents/update-agent-metadata.d.ts.map +1 -0
  34. package/dist/commands/agents/update-agent-metadata.js +37 -0
  35. package/dist/commands/agents/update-agent-metadata.js.map +1 -0
  36. package/dist/commands/config/init.d.ts +15 -0
  37. package/dist/commands/config/init.d.ts.map +1 -0
  38. package/dist/commands/config/init.js +78 -0
  39. package/dist/commands/config/init.js.map +1 -0
  40. package/dist/commands/config/set.d.ts +16 -0
  41. package/dist/commands/config/set.d.ts.map +1 -0
  42. package/dist/commands/config/set.js +44 -0
  43. package/dist/commands/config/set.js.map +1 -0
  44. package/dist/commands/config/show.d.ts +13 -0
  45. package/dist/commands/config/show.d.ts.map +1 -0
  46. package/dist/commands/config/show.js +53 -0
  47. package/dist/commands/config/show.js.map +1 -0
  48. package/dist/commands/facilitator/settle-permissions.d.ts +16 -0
  49. package/dist/commands/facilitator/settle-permissions.d.ts.map +1 -0
  50. package/dist/commands/facilitator/settle-permissions.js +30 -0
  51. package/dist/commands/facilitator/settle-permissions.js.map +1 -0
  52. package/dist/commands/facilitator/verify-permissions.d.ts +16 -0
  53. package/dist/commands/facilitator/verify-permissions.d.ts.map +1 -0
  54. package/dist/commands/facilitator/verify-permissions.js +30 -0
  55. package/dist/commands/facilitator/verify-permissions.js.map +1 -0
  56. package/dist/commands/organizations/connect-stripe-account.d.ts +18 -0
  57. package/dist/commands/organizations/connect-stripe-account.d.ts.map +1 -0
  58. package/dist/commands/organizations/connect-stripe-account.js +29 -0
  59. package/dist/commands/organizations/connect-stripe-account.js.map +1 -0
  60. package/dist/commands/organizations/create-member.d.ts +20 -0
  61. package/dist/commands/organizations/create-member.d.ts.map +1 -0
  62. package/dist/commands/organizations/create-member.js +34 -0
  63. package/dist/commands/organizations/create-member.js.map +1 -0
  64. package/dist/commands/organizations/get-members.d.ts +19 -0
  65. package/dist/commands/organizations/get-members.d.ts.map +1 -0
  66. package/dist/commands/organizations/get-members.js +30 -0
  67. package/dist/commands/organizations/get-members.js.map +1 -0
  68. package/dist/commands/plans/get-agents-associated-to-a-plan.d.ts +19 -0
  69. package/dist/commands/plans/get-agents-associated-to-a-plan.d.ts.map +1 -0
  70. package/dist/commands/plans/get-agents-associated-to-a-plan.js +36 -0
  71. package/dist/commands/plans/get-agents-associated-to-a-plan.js.map +1 -0
  72. package/dist/commands/plans/get-crypto-price-config.d.ts +18 -0
  73. package/dist/commands/plans/get-crypto-price-config.d.ts.map +1 -0
  74. package/dist/commands/plans/get-crypto-price-config.js +35 -0
  75. package/dist/commands/plans/get-crypto-price-config.js.map +1 -0
  76. package/dist/commands/plans/get-dynamic-credits-config.d.ts +18 -0
  77. package/dist/commands/plans/get-dynamic-credits-config.d.ts.map +1 -0
  78. package/dist/commands/plans/get-dynamic-credits-config.js +29 -0
  79. package/dist/commands/plans/get-dynamic-credits-config.js.map +1 -0
  80. package/dist/commands/plans/get-erc20-price-config.d.ts +18 -0
  81. package/dist/commands/plans/get-erc20-price-config.d.ts.map +1 -0
  82. package/dist/commands/plans/get-erc20-price-config.js +35 -0
  83. package/dist/commands/plans/get-erc20-price-config.js.map +1 -0
  84. package/dist/commands/plans/get-expirable-duration-config.d.ts +16 -0
  85. package/dist/commands/plans/get-expirable-duration-config.d.ts.map +1 -0
  86. package/dist/commands/plans/get-expirable-duration-config.js +27 -0
  87. package/dist/commands/plans/get-expirable-duration-config.js.map +1 -0
  88. package/dist/commands/plans/get-fiat-price-config.d.ts +17 -0
  89. package/dist/commands/plans/get-fiat-price-config.d.ts.map +1 -0
  90. package/dist/commands/plans/get-fiat-price-config.js +31 -0
  91. package/dist/commands/plans/get-fiat-price-config.js.map +1 -0
  92. package/dist/commands/plans/get-fixed-credits-config.d.ts +17 -0
  93. package/dist/commands/plans/get-fixed-credits-config.d.ts.map +1 -0
  94. package/dist/commands/plans/get-fixed-credits-config.js +28 -0
  95. package/dist/commands/plans/get-fixed-credits-config.js.map +1 -0
  96. package/dist/commands/plans/get-free-price-config.d.ts +15 -0
  97. package/dist/commands/plans/get-free-price-config.d.ts.map +1 -0
  98. package/dist/commands/plans/get-free-price-config.js +25 -0
  99. package/dist/commands/plans/get-free-price-config.js.map +1 -0
  100. package/dist/commands/plans/get-native-token-price-config.d.ts +17 -0
  101. package/dist/commands/plans/get-native-token-price-config.d.ts.map +1 -0
  102. package/dist/commands/plans/get-native-token-price-config.js +31 -0
  103. package/dist/commands/plans/get-native-token-price-config.js.map +1 -0
  104. package/dist/commands/plans/get-non-expirable-duration-config.d.ts +15 -0
  105. package/dist/commands/plans/get-non-expirable-duration-config.d.ts.map +1 -0
  106. package/dist/commands/plans/get-non-expirable-duration-config.js +25 -0
  107. package/dist/commands/plans/get-non-expirable-duration-config.js.map +1 -0
  108. package/dist/commands/plans/get-pay-as-you-go-credits-config.d.ts +15 -0
  109. package/dist/commands/plans/get-pay-as-you-go-credits-config.d.ts.map +1 -0
  110. package/dist/commands/plans/get-pay-as-you-go-credits-config.js +25 -0
  111. package/dist/commands/plans/get-pay-as-you-go-credits-config.js.map +1 -0
  112. package/dist/commands/plans/get-pay-as-you-go-price-config.d.ts +18 -0
  113. package/dist/commands/plans/get-pay-as-you-go-price-config.d.ts.map +1 -0
  114. package/dist/commands/plans/get-pay-as-you-go-price-config.js +35 -0
  115. package/dist/commands/plans/get-pay-as-you-go-price-config.js.map +1 -0
  116. package/dist/commands/plans/get-plan-balance.d.ts +19 -0
  117. package/dist/commands/plans/get-plan-balance.d.ts.map +1 -0
  118. package/dist/commands/plans/get-plan-balance.js +36 -0
  119. package/dist/commands/plans/get-plan-balance.js.map +1 -0
  120. package/dist/commands/plans/get-plan.d.ts +18 -0
  121. package/dist/commands/plans/get-plan.d.ts.map +1 -0
  122. package/dist/commands/plans/get-plan.js +32 -0
  123. package/dist/commands/plans/get-plan.js.map +1 -0
  124. package/dist/commands/plans/get-plans.d.ts +19 -0
  125. package/dist/commands/plans/get-plans.d.ts.map +1 -0
  126. package/dist/commands/plans/get-plans.js +30 -0
  127. package/dist/commands/plans/get-plans.js.map +1 -0
  128. package/dist/commands/plans/mint-plan-credits.d.ts +20 -0
  129. package/dist/commands/plans/mint-plan-credits.d.ts.map +1 -0
  130. package/dist/commands/plans/mint-plan-credits.js +37 -0
  131. package/dist/commands/plans/mint-plan-credits.js.map +1 -0
  132. package/dist/commands/plans/mint-plan-expirable.d.ts +21 -0
  133. package/dist/commands/plans/mint-plan-expirable.d.ts.map +1 -0
  134. package/dist/commands/plans/mint-plan-expirable.js +38 -0
  135. package/dist/commands/plans/mint-plan-expirable.js.map +1 -0
  136. package/dist/commands/plans/order-fiat-plan.d.ts +18 -0
  137. package/dist/commands/plans/order-fiat-plan.d.ts.map +1 -0
  138. package/dist/commands/plans/order-fiat-plan.js +32 -0
  139. package/dist/commands/plans/order-fiat-plan.js.map +1 -0
  140. package/dist/commands/plans/order-plan.d.ts +18 -0
  141. package/dist/commands/plans/order-plan.d.ts.map +1 -0
  142. package/dist/commands/plans/order-plan.js +32 -0
  143. package/dist/commands/plans/order-plan.js.map +1 -0
  144. package/dist/commands/plans/redeem-credits.d.ts +21 -0
  145. package/dist/commands/plans/redeem-credits.d.ts.map +1 -0
  146. package/dist/commands/plans/redeem-credits.js +38 -0
  147. package/dist/commands/plans/redeem-credits.js.map +1 -0
  148. package/dist/commands/plans/register-credits-plan.d.ts +18 -0
  149. package/dist/commands/plans/register-credits-plan.d.ts.map +1 -0
  150. package/dist/commands/plans/register-credits-plan.js +38 -0
  151. package/dist/commands/plans/register-credits-plan.js.map +1 -0
  152. package/dist/commands/plans/register-credits-trial-plan.d.ts +18 -0
  153. package/dist/commands/plans/register-credits-trial-plan.d.ts.map +1 -0
  154. package/dist/commands/plans/register-credits-trial-plan.js +38 -0
  155. package/dist/commands/plans/register-credits-trial-plan.js.map +1 -0
  156. package/dist/commands/plans/register-plan.d.ts +20 -0
  157. package/dist/commands/plans/register-plan.d.ts.map +1 -0
  158. package/dist/commands/plans/register-plan.js +40 -0
  159. package/dist/commands/plans/register-plan.js.map +1 -0
  160. package/dist/commands/plans/register-time-plan.d.ts +18 -0
  161. package/dist/commands/plans/register-time-plan.d.ts.map +1 -0
  162. package/dist/commands/plans/register-time-plan.js +38 -0
  163. package/dist/commands/plans/register-time-plan.js.map +1 -0
  164. package/dist/commands/plans/register-time-trial-plan.d.ts +18 -0
  165. package/dist/commands/plans/register-time-trial-plan.d.ts.map +1 -0
  166. package/dist/commands/plans/register-time-trial-plan.js +38 -0
  167. package/dist/commands/plans/register-time-trial-plan.js.map +1 -0
  168. package/dist/commands/plans/set-proof-required.d.ts +17 -0
  169. package/dist/commands/plans/set-proof-required.d.ts.map +1 -0
  170. package/dist/commands/plans/set-proof-required.js +31 -0
  171. package/dist/commands/plans/set-proof-required.js.map +1 -0
  172. package/dist/commands/plans/set-redemption-type.d.ts +17 -0
  173. package/dist/commands/plans/set-redemption-type.d.ts.map +1 -0
  174. package/dist/commands/plans/set-redemption-type.js +31 -0
  175. package/dist/commands/plans/set-redemption-type.js.map +1 -0
  176. package/dist/commands/x402token/get-x402-access-token.d.ts +22 -0
  177. package/dist/commands/x402token/get-x402-access-token.d.ts.map +1 -0
  178. package/dist/commands/x402token/get-x402-access-token.js +36 -0
  179. package/dist/commands/x402token/get-x402-access-token.js.map +1 -0
  180. package/dist/generator/api-scanner.d.ts +63 -0
  181. package/dist/generator/api-scanner.d.ts.map +1 -0
  182. package/dist/generator/api-scanner.js +228 -0
  183. package/dist/generator/api-scanner.js.map +1 -0
  184. package/dist/generator/command-generator.d.ts +91 -0
  185. package/dist/generator/command-generator.d.ts.map +1 -0
  186. package/dist/generator/command-generator.js +334 -0
  187. package/dist/generator/command-generator.js.map +1 -0
  188. package/dist/generator/generate.d.ts +7 -0
  189. package/dist/generator/generate.d.ts.map +1 -0
  190. package/dist/generator/generate.js +70 -0
  191. package/dist/generator/generate.js.map +1 -0
  192. package/dist/generator/sync-check.d.ts +7 -0
  193. package/dist/generator/sync-check.d.ts.map +1 -0
  194. package/dist/generator/sync-check.js +115 -0
  195. package/dist/generator/sync-check.js.map +1 -0
  196. package/dist/index.d.ts +2 -0
  197. package/dist/index.d.ts.map +1 -0
  198. package/dist/index.js +2 -0
  199. package/dist/index.js.map +1 -0
  200. package/dist/utils/config-manager.d.ts +27 -0
  201. package/dist/utils/config-manager.d.ts.map +1 -0
  202. package/dist/utils/config-manager.js +120 -0
  203. package/dist/utils/config-manager.js.map +1 -0
  204. package/dist/utils/output-formatter.d.ts +46 -0
  205. package/dist/utils/output-formatter.d.ts.map +1 -0
  206. package/dist/utils/output-formatter.js +113 -0
  207. package/dist/utils/output-formatter.js.map +1 -0
  208. package/oclif.manifest.json +3136 -0
  209. package/package.json +111 -0
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Command Generator - Generates oclif command files from API scanner output
3
+ * Uses manual commands as templates and generates new commands from SDK API
4
+ */
5
+ import { writeFile, mkdir, readFile } from 'fs/promises';
6
+ import { join, dirname } from 'path';
7
+ import { existsSync } from 'fs';
8
+ export class CommandGenerator {
9
+ outputDir;
10
+ metadataPath;
11
+ metadata;
12
+ constructor(outputDir, metadataPath) {
13
+ this.outputDir = outputDir;
14
+ this.metadataPath = metadataPath || join(outputDir, 'generator-metadata.json');
15
+ this.metadata = new Map();
16
+ }
17
+ /**
18
+ * Load metadata about custom command modifications
19
+ */
20
+ async loadMetadata() {
21
+ if (!existsSync(this.metadataPath)) {
22
+ return;
23
+ }
24
+ try {
25
+ const content = await readFile(this.metadataPath, 'utf-8');
26
+ const data = JSON.parse(content);
27
+ for (const key in data) {
28
+ this.metadata.set(key, data[key]);
29
+ }
30
+ }
31
+ catch (error) {
32
+ console.warn(`Failed to load metadata: ${error}`);
33
+ }
34
+ }
35
+ /**
36
+ * Save metadata about custom command modifications
37
+ */
38
+ async saveMetadata() {
39
+ const data = {};
40
+ for (const [key, value] of this.metadata.entries()) {
41
+ data[key] = value;
42
+ }
43
+ await mkdir(dirname(this.metadataPath), { recursive: true });
44
+ await writeFile(this.metadataPath, JSON.stringify(data, null, 2));
45
+ }
46
+ /**
47
+ * Generate all commands from API classes
48
+ */
49
+ async generateCommands(apis) {
50
+ await this.loadMetadata();
51
+ for (const api of apis) {
52
+ for (const method of api.methods) {
53
+ await this.generateCommand(api, method);
54
+ }
55
+ }
56
+ await this.saveMetadata();
57
+ }
58
+ /**
59
+ * Generate a single command file
60
+ */
61
+ async generateCommand(api, method) {
62
+ const commandPath = this.getCommandPath(api.name, method.name);
63
+ const metadataKey = `${api.name}.${method.name}`;
64
+ // Check if command already exists and has customizations
65
+ const existingMetadata = this.metadata.get(metadataKey);
66
+ const commandContent = this.generateCommandContent(api, method, existingMetadata);
67
+ await mkdir(dirname(commandPath), { recursive: true });
68
+ await writeFile(commandPath, commandContent);
69
+ console.log(`Generated: ${commandPath}`);
70
+ }
71
+ /**
72
+ * Get the file path for a command
73
+ */
74
+ getCommandPath(className, methodName) {
75
+ // Convert PlansAPI -> plans, AgentsAPI -> agents
76
+ const topic = className.replace('API', '').toLowerCase();
77
+ // Convert camelCase method name to kebab-case
78
+ const commandName = this.camelToKebab(methodName);
79
+ return join(this.outputDir, 'commands', topic, `${commandName}.ts`);
80
+ }
81
+ /**
82
+ * Generate the TypeScript content for a command
83
+ */
84
+ generateCommandContent(api, method, metadata) {
85
+ const className = this.getCommandClassName(method.name);
86
+ const topic = api.name.replace('API', '').toLowerCase();
87
+ const apiProperty = this.getAPIProperty(api.name);
88
+ const hasArgs = this.hasPositionalArgs(method);
89
+ const flags = this.generateFlags(method, metadata?.customizations?.flags);
90
+ const examples = this.generateExamples(method, metadata?.customizations?.examples, topic);
91
+ const runMethod = this.generateRunMethod(method, apiProperty, metadata, hasArgs);
92
+ const imports = hasArgs ? 'import { Args, Flags } from \'@oclif/core\'' : 'import { Flags } from \'@oclif/core\'';
93
+ return `${imports}
94
+ import { BaseCommand } from '../../base-command.js'
95
+
96
+ /**
97
+ * ${method.description || `${method.name} command`}
98
+ */
99
+ export default class ${className} extends BaseCommand {
100
+ static override description = ${JSON.stringify(method.description || `${api.name} ${method.name}`)}
101
+
102
+ static override examples = [
103
+ ${examples}
104
+ ]
105
+
106
+ static override flags = {
107
+ ...BaseCommand.baseFlags,
108
+ ${flags}
109
+ }
110
+
111
+ ${this.generateArgs(method)}
112
+
113
+ public async run(): Promise<void> {
114
+ ${runMethod}
115
+ }
116
+ }
117
+ `;
118
+ }
119
+ /**
120
+ * Generate flag definitions from method parameters
121
+ */
122
+ generateFlags(method, customFlags) {
123
+ const flags = [];
124
+ for (const param of method.parameters) {
125
+ // Skip positional args (first parameter with ID in name)
126
+ const isPositionalArg = param.name.toLowerCase().includes('id') &&
127
+ method.parameters.indexOf(param) === 0;
128
+ if (isPositionalArg) {
129
+ continue;
130
+ }
131
+ // For complex objects, create a string flag for JSON input
132
+ if (this.isComplexType(param.type)) {
133
+ const flagName = this.camelToKebab(param.name);
134
+ flags.push(` '${flagName}': Flags.string({\n description: ${JSON.stringify(param.description || `${param.name} as JSON string`)},\n required: ${!param.optional}\n }),`);
135
+ continue;
136
+ }
137
+ const flagName = this.camelToKebab(param.name);
138
+ const flagDef = this.generateFlagDefinition(param);
139
+ flags.push(` '${flagName}': ${flagDef},`);
140
+ }
141
+ // Add custom flags if any
142
+ if (customFlags) {
143
+ for (const [name, def] of Object.entries(customFlags)) {
144
+ flags.push(` '${name}': ${JSON.stringify(def)},`);
145
+ }
146
+ }
147
+ return flags.join('\n');
148
+ }
149
+ /**
150
+ * Generate a single flag definition
151
+ */
152
+ generateFlagDefinition(param) {
153
+ let flagType = 'Flags.string';
154
+ if (param.type === 'number') {
155
+ flagType = 'Flags.integer';
156
+ }
157
+ else if (param.type === 'boolean') {
158
+ flagType = 'Flags.boolean';
159
+ }
160
+ const parts = [flagType];
161
+ if (param.description) {
162
+ parts.push(`{\n description: ${JSON.stringify(param.description)}`);
163
+ if (param.optional) {
164
+ parts.push(` required: false`);
165
+ }
166
+ else {
167
+ parts.push(` required: true`);
168
+ }
169
+ if (param.defaultValue) {
170
+ parts.push(` default: ${param.defaultValue}`);
171
+ }
172
+ return parts.join(',\n') + '\n }';
173
+ }
174
+ return `${flagType}({ required: ${!param.optional} })`;
175
+ }
176
+ /**
177
+ * Generate args definitions for positional arguments
178
+ */
179
+ generateArgs(method) {
180
+ // Only the first parameter with 'id' in the name becomes a positional arg
181
+ if (method.parameters.length === 0) {
182
+ return '';
183
+ }
184
+ const firstParam = method.parameters[0];
185
+ if (!firstParam.name.toLowerCase().includes('id')) {
186
+ return '';
187
+ }
188
+ const argName = firstParam.name.replace(/Id$/, '');
189
+ return ` static override args = {
190
+ ${argName}: Args.string({
191
+ description: ${JSON.stringify(firstParam.description || `${argName} identifier`)},
192
+ required: ${!firstParam.optional},
193
+ }),
194
+ }
195
+ `;
196
+ }
197
+ /**
198
+ * Generate example commands
199
+ */
200
+ generateExamples(method, customExamples, topic) {
201
+ const examples = [];
202
+ // Add custom examples first (they're CLI examples)
203
+ if (customExamples && customExamples.length > 0) {
204
+ examples.push(...customExamples);
205
+ }
206
+ // Generate default CLI example if none exist
207
+ if (examples.length === 0) {
208
+ const commandName = this.camelToKebab(method.name);
209
+ // Find ID parameter for the example
210
+ const idParam = method.parameters.find(p => p.name.toLowerCase().includes('id'));
211
+ const idExample = idParam ? `<${idParam.name}>` : '';
212
+ examples.push(`$ nvm ${topic} ${commandName} ${idExample}`.trim());
213
+ }
214
+ return examples.map(ex => ` '${ex.replace(/'/g, "\\'")}'`).join(',\n');
215
+ }
216
+ /**
217
+ * Check if method has positional arguments
218
+ */
219
+ hasPositionalArgs(method) {
220
+ // Only the first parameter with 'id' in the name is treated as positional
221
+ return method.parameters.length > 0 &&
222
+ method.parameters[0].name.toLowerCase().includes('id');
223
+ }
224
+ /**
225
+ * Generate the run method implementation
226
+ */
227
+ generateRunMethod(method, apiProperty, metadata, hasArgs = false) {
228
+ const lines = [];
229
+ // Parse flags and args
230
+ if (hasArgs) {
231
+ lines.push(' const { flags, args } = await this.parse(this.constructor as any)');
232
+ }
233
+ else {
234
+ lines.push(' const { flags } = await this.parse(this.constructor as any)');
235
+ }
236
+ // Add custom before-init code
237
+ if (metadata?.customizations?.beforeInit) {
238
+ lines.push('');
239
+ lines.push(metadata.customizations.beforeInit);
240
+ }
241
+ // Initialize payments
242
+ lines.push('');
243
+ lines.push(' const payments = await this.initPayments()');
244
+ // Add custom after-init code
245
+ if (metadata?.customizations?.afterInit) {
246
+ lines.push('');
247
+ lines.push(metadata.customizations.afterInit);
248
+ }
249
+ // Build method call
250
+ lines.push('');
251
+ lines.push(' try {');
252
+ const methodCall = this.generateMethodCall(method, apiProperty);
253
+ lines.push(` const result = await payments.${apiProperty}.${method.name}(${methodCall})`);
254
+ lines.push('');
255
+ lines.push(' this.formatter.output(result)');
256
+ lines.push(' } catch (error) {');
257
+ lines.push(' this.handleError(error)');
258
+ lines.push(' }');
259
+ return lines.join('\n');
260
+ }
261
+ /**
262
+ * Check if type is a complex object that needs JSON parsing
263
+ */
264
+ isComplexType(type) {
265
+ // Complex objects have literal braces or are explicitly 'object'
266
+ if (type.includes('{') || type === 'object') {
267
+ return true;
268
+ }
269
+ // Types ending with Config, Metadata, Options are likely interfaces
270
+ if (/(Config|Metadata|Options|Settings|Params)$/.test(type)) {
271
+ return true;
272
+ }
273
+ return false;
274
+ }
275
+ /**
276
+ * Generate method call arguments
277
+ */
278
+ generateMethodCall(method, _apiProperty) {
279
+ const args = [];
280
+ const hasComplexTypes = method.parameters.some(p => this.isComplexType(p.type) &&
281
+ !(p.name.toLowerCase().includes('id') && method.parameters.indexOf(p) === 0));
282
+ for (const param of method.parameters) {
283
+ // Check if this is a positional arg (first parameter with ID in name)
284
+ const isPositionalArg = param.name.toLowerCase().includes('id') &&
285
+ method.parameters.indexOf(param) === 0;
286
+ if (isPositionalArg) {
287
+ const argName = param.name.replace(/Id$/, '');
288
+ args.push(`args.${argName}`);
289
+ }
290
+ else if (this.isComplexType(param.type)) {
291
+ // Complex object - use JSON input flag with await
292
+ const flagName = this.camelToKebab(param.name);
293
+ args.push(`await this.parseJsonInput(flags['${flagName}'])`);
294
+ }
295
+ else {
296
+ // Regular flag (string, number, boolean, Address, etc.)
297
+ const flagName = this.camelToKebab(param.name);
298
+ args.push(`flags['${flagName}']`);
299
+ }
300
+ }
301
+ // Return with or without await prefix based on whether we have complex types
302
+ return args.join(', ');
303
+ }
304
+ /**
305
+ * Get the API property name (e.g., PlansAPI -> plans)
306
+ */
307
+ getAPIProperty(className) {
308
+ const name = className.replace('API', '');
309
+ const lowercaseName = name.charAt(0).toLowerCase() + name.slice(1);
310
+ // Handle special cases
311
+ if (lowercaseName === 'x402Token')
312
+ return 'x402';
313
+ if (lowercaseName === 'facilitator')
314
+ return 'facilitator';
315
+ return lowercaseName;
316
+ }
317
+ /**
318
+ * Get the command class name (e.g., getPlan -> GetPlan)
319
+ */
320
+ getCommandClassName(methodName) {
321
+ return methodName.charAt(0).toUpperCase() + methodName.slice(1);
322
+ }
323
+ /**
324
+ * Convert camelCase to kebab-case
325
+ * Handles consecutive capitals like ERC20 -> erc20, APlan -> aplan
326
+ */
327
+ camelToKebab(str) {
328
+ return str
329
+ .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2') // Handle consecutive capitals: ERC20Config -> ERC20-Config
330
+ .replace(/([a-z0-9])([A-Z])/g, '$1-$2') // Handle camelCase: myVariable -> my-Variable
331
+ .toLowerCase();
332
+ }
333
+ }
334
+ //# sourceMappingURL=command-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-generator.js","sourceRoot":"","sources":["../../src/generator/command-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAc/B,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAQ;IACjB,YAAY,CAAQ;IACpB,QAAQ,CAA8B;IAE9C,YAAY,SAAiB,EAAE,YAAqB;QAClD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAA;QAC9E,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEhC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,GAAoC,EAAE,CAAA;QAEhD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACnB,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5D,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAoB;QACzC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAEzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,GAAiB,EAAE,MAAkB;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAA;QAEhD,yDAAyD;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEvD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAA;QAEjF,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,MAAM,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;QAE5C,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,SAAiB,EAAE,UAAkB;QAC1D,iDAAiD;QACjD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QAExD,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QAEjD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,WAAW,KAAK,CAAC,CAAA;IACrE,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC5B,GAAiB,EACjB,MAAkB,EAClB,QAA0B;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,CAAA;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;QACzF,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEhF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,uCAAuC,CAAA;QAEjH,OAAO,GAAG,OAAO;;;;KAIhB,MAAM,CAAC,WAAW,IAAI,GAAG,MAAM,CAAC,IAAI,UAAU;;uBAE5B,SAAS;kCACE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;;;EAGlG,QAAQ;;;;;EAKR,KAAK;;;EAGL,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;;EAGzB,SAAS;;;CAGV,CAAA;IACC,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAkB,EAAE,WAAiC;QACzE,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtC,yDAAyD;YACzD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACxC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC7D,IAAI,eAAe,EAAE,CAAC;gBACpB,SAAQ;YACV,CAAC;YAED,2DAA2D;YAC3D,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC9C,KAAK,CAAC,IAAI,CAAC,QAAQ,QAAQ,yCAAyC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,IAAI,GAAG,KAAK,CAAC,IAAI,iBAAiB,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,WAAW,CAAC,CAAA;gBACxL,SAAQ;YACV,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;YAElD,KAAK,CAAC,IAAI,CAAC,QAAQ,QAAQ,MAAM,OAAO,GAAG,CAAC,CAAA;QAC9C,CAAC;QAED,0BAA0B;QAC1B,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACtD,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,KAAqG;QAClI,IAAI,QAAQ,GAAG,cAAc,CAAA;QAE7B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,QAAQ,GAAG,eAAe,CAAA;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,QAAQ,GAAG,eAAe,CAAA;QAC5B,CAAC;QAED,MAAM,KAAK,GAAa,CAAC,QAAQ,CAAC,CAAA;QAElC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YAExE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;YACrC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAA;QACtC,CAAC;QAED,OAAO,GAAG,QAAQ,gBAAgB,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAA;IACxD,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,MAAkB;QACrC,0EAA0E;QAC1E,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAElD,OAAO;MACL,OAAO;qBACQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,IAAI,GAAG,OAAO,aAAa,CAAC;kBACpE,CAAC,UAAU,CAAC,QAAQ;;;CAGrC,CAAA;IACC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAkB,EAAE,cAAyB,EAAE,KAAc;QACpF,MAAM,QAAQ,GAAa,EAAE,CAAA;QAE7B,mDAAmD;QACnD,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAA;QAClC,CAAC;QAED,6CAA6C;QAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAElD,oCAAoC;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;YAChF,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YAEpD,QAAQ,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QACpE,CAAC;QAED,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3E,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAkB;QAC1C,0EAA0E;QAC1E,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC5B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACK,iBAAiB,CACvB,MAAkB,EAClB,WAAmB,EACnB,QAA0B,EAC1B,UAAmB,KAAK;QAExB,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,uBAAuB;QACvB,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAA;QACrF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;QAC/E,CAAC;QAED,8BAA8B;QAC9B,IAAI,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;QAChD,CAAC;QAED,sBAAsB;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAE5D,6BAA6B;QAC7B,IAAI,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACd,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;QAC/C,CAAC;QAED,oBAAoB;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAEvB,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QAC/D,KAAK,CAAC,IAAI,CAAC,uCAAuC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,UAAU,GAAG,CAAC,CAAA;QAE9F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;QACjD,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACnC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAEnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAY;QAChC,iEAAiE;QACjE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,oEAAoE;QACpE,IAAI,4CAA4C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAkB,EAAE,YAAoB;QACjE,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACjD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC7E,CAAA;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtC,sEAAsE;YACtE,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACxC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAE7D,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;gBAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAA;YAC9B,CAAC;iBAAM,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,kDAAkD;gBAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC9C,IAAI,CAAC,IAAI,CAAC,oCAAoC,QAAQ,KAAK,CAAC,CAAA;YAC9D,CAAC;iBAAM,CAAC;gBACN,wDAAwD;gBACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,QAAQ,IAAI,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,SAAiB;QACtC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAElE,uBAAuB;QACvB,IAAI,aAAa,KAAK,WAAW;YAAE,OAAO,MAAM,CAAA;QAChD,IAAI,aAAa,KAAK,aAAa;YAAE,OAAO,aAAa,CAAA;QAEzD,OAAO,aAAa,CAAA;IACtB,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAkB;QAC5C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjE,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,GAAW;QAC9B,OAAO,GAAG;aACP,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAE,2DAA2D;aACtG,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAK,8CAA8C;aACzF,WAAW,EAAE,CAAA;IAClB,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main command generation script
4
+ * Scans the Payments SDK API and generates oclif commands
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main command generation script
4
+ * Scans the Payments SDK API and generates oclif commands
5
+ */
6
+ import { resolve, join } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import { dirname } from 'path';
9
+ import { APIScanner } from './api-scanner.js';
10
+ import { CommandGenerator } from './command-generator.js';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ async function main() {
14
+ console.log('šŸ” Nevermined Payments CLI - Command Generator');
15
+ console.log('='.repeat(60));
16
+ // Paths
17
+ const cliRoot = resolve(__dirname, '../..');
18
+ const sdkRoot = resolve(cliRoot, '..');
19
+ const outputDir = resolve(cliRoot, 'src');
20
+ console.log(`\nšŸ“ SDK Path: ${sdkRoot}`);
21
+ console.log(`šŸ“ Output Path: ${outputDir}`);
22
+ // Step 1: Scan the API
23
+ console.log('\nšŸ“Š Step 1: Scanning Payments SDK API...');
24
+ const scanner = new APIScanner(sdkRoot);
25
+ let apis;
26
+ try {
27
+ apis = scanner.scanAPIs();
28
+ console.log(`āœ… Found ${apis.length} API classes`);
29
+ // Show summary
30
+ for (const api of apis) {
31
+ console.log(` - ${api.name}: ${api.methods.length} methods`);
32
+ }
33
+ }
34
+ catch (error) {
35
+ console.error('āŒ Failed to scan API:', error);
36
+ process.exit(1);
37
+ }
38
+ // Step 2: Generate commands
39
+ console.log('\nšŸ”Ø Step 2: Generating commands...');
40
+ const generator = new CommandGenerator(outputDir, join(outputDir, 'generator-metadata.json'));
41
+ try {
42
+ await generator.generateCommands(apis);
43
+ console.log('āœ… Commands generated successfully');
44
+ }
45
+ catch (error) {
46
+ console.error('āŒ Failed to generate commands:', error);
47
+ process.exit(1);
48
+ }
49
+ // Step 3: Summary
50
+ console.log('\nšŸ“ˆ Summary:');
51
+ let totalMethods = 0;
52
+ for (const api of apis) {
53
+ totalMethods += api.methods.length;
54
+ }
55
+ console.log(` Total API classes: ${apis.length}`);
56
+ console.log(` Total methods: ${totalMethods}`);
57
+ console.log(` Total commands: ${totalMethods}`);
58
+ // Step 4: Next steps
59
+ console.log('\n✨ Next steps:');
60
+ console.log(' 1. Review generated commands in src/commands/');
61
+ console.log(' 2. Run: yarn build:manifest');
62
+ console.log(' 3. Test commands: nvm <topic> <command> --help');
63
+ console.log(' 4. Run tests: yarn test');
64
+ console.log('\nšŸŽ‰ Done!\n');
65
+ }
66
+ main().catch((error) => {
67
+ console.error('Fatal error:', error);
68
+ process.exit(1);
69
+ });
70
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI Sync Check - Verifies CLI commands match SDK API
4
+ * Used in CI to ensure CLI is up-to-date with SDK changes
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=sync-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-check.d.ts","sourceRoot":"","sources":["../../src/generator/sync-check.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI Sync Check - Verifies CLI commands match SDK API
4
+ * Used in CI to ensure CLI is up-to-date with SDK changes
5
+ */
6
+ import { resolve, join } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import { dirname } from 'path';
9
+ import { readdir } from 'fs/promises';
10
+ import { existsSync } from 'fs';
11
+ import { APIScanner } from './api-scanner.js';
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ /**
15
+ * Convert camelCase to kebab-case (same logic as command generator)
16
+ */
17
+ function camelToKebab(str) {
18
+ return str
19
+ .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2') // Handle consecutive capitals: ERC20Config -> ERC20-Config
20
+ .replace(/([a-z0-9])([A-Z])/g, '$1-$2') // Handle camelCase: myVariable -> my-Variable
21
+ .toLowerCase();
22
+ }
23
+ async function getCommandFiles(dir, topic) {
24
+ const commands = new Set();
25
+ const topicDir = join(dir, 'src', 'commands', topic);
26
+ if (!existsSync(topicDir)) {
27
+ return commands;
28
+ }
29
+ const files = await readdir(topicDir);
30
+ for (const file of files) {
31
+ if (file.endsWith('.ts') && !file.endsWith('.test.ts')) {
32
+ // Just remove the .ts extension - we'll compare kebab-case to kebab-case
33
+ const kebabName = file.replace('.ts', '');
34
+ commands.add(kebabName);
35
+ }
36
+ }
37
+ return commands;
38
+ }
39
+ async function main() {
40
+ console.log('šŸ” CLI Sync Check - Verifying CLI matches SDK API');
41
+ console.log('='.repeat(60));
42
+ const cliRoot = resolve(__dirname, '../..');
43
+ const sdkRoot = resolve(cliRoot, '..');
44
+ console.log(`\nšŸ“ SDK Path: ${sdkRoot}`);
45
+ console.log(`šŸ“ CLI Path: ${cliRoot}`);
46
+ // Scan SDK API
47
+ console.log('\nšŸ“Š Scanning SDK API...');
48
+ const scanner = new APIScanner(sdkRoot);
49
+ let apis;
50
+ try {
51
+ apis = scanner.scanAPIs();
52
+ console.log(`āœ… Found ${apis.length} API classes`);
53
+ }
54
+ catch (error) {
55
+ console.error('āŒ Failed to scan SDK API:', error);
56
+ process.exit(1);
57
+ }
58
+ // Check each API
59
+ const issues = [];
60
+ for (const api of apis) {
61
+ const topic = api.name.replace('API', '').toLowerCase();
62
+ console.log(`\nšŸ”Ž Checking ${topic}...`);
63
+ // Get existing command files (kebab-case names)
64
+ const existingCommands = await getCommandFiles(cliRoot, topic);
65
+ // Get expected commands from API (convert to kebab-case)
66
+ const expectedCommands = new Map(api.methods.map(m => [camelToKebab(m.name), m.name]));
67
+ // Check for missing commands
68
+ for (const [kebabName, methodName] of expectedCommands) {
69
+ if (!existingCommands.has(kebabName)) {
70
+ const message = `Missing command: ${topic} ${methodName}`;
71
+ console.log(` āŒ ${message}`);
72
+ issues.push({ type: 'missing', message });
73
+ }
74
+ else {
75
+ console.log(` āœ… ${methodName}`);
76
+ }
77
+ }
78
+ // Check for extra commands (removed from SDK)
79
+ for (const commandName of existingCommands) {
80
+ if (!expectedCommands.has(commandName)) {
81
+ const message = `Extra command (not in SDK): ${topic} ${commandName}`;
82
+ console.log(` āš ļø ${message}`);
83
+ issues.push({ type: 'extra', message });
84
+ }
85
+ }
86
+ }
87
+ // Report results
88
+ console.log('\n' + '='.repeat(60));
89
+ if (issues.length === 0) {
90
+ console.log('āœ… CLI is in sync with SDK API');
91
+ console.log(` All ${apis.reduce((sum, api) => sum + api.methods.length, 0)} commands match`);
92
+ process.exit(0);
93
+ }
94
+ else {
95
+ console.log(`āŒ CLI is OUT OF SYNC with SDK API`);
96
+ console.log(` Found ${issues.length} issues:`);
97
+ const missingCount = issues.filter(i => i.type === 'missing').length;
98
+ const extraCount = issues.filter(i => i.type === 'extra').length;
99
+ if (missingCount > 0) {
100
+ console.log(` - ${missingCount} missing commands`);
101
+ }
102
+ if (extraCount > 0) {
103
+ console.log(` - ${extraCount} extra commands`);
104
+ }
105
+ console.log('\nšŸ’” To fix:');
106
+ console.log(' Run: yarn cli:generate');
107
+ console.log(' Then: yarn build:manifest');
108
+ process.exit(1);
109
+ }
110
+ }
111
+ main().catch((error) => {
112
+ console.error('Fatal error:', error);
113
+ process.exit(1);
114
+ });
115
+ //# sourceMappingURL=sync-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-check.js","sourceRoot":"","sources":["../../src/generator/sync-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,27 @@
1
+ export interface ProfileConfig {
2
+ nvmApiKey?: string;
3
+ environment?: string;
4
+ }
5
+ export interface Config {
6
+ profiles: {
7
+ [profileName: string]: ProfileConfig;
8
+ };
9
+ activeProfile: string;
10
+ }
11
+ export declare class ConfigManager {
12
+ private static instance;
13
+ private explorer;
14
+ private configCache?;
15
+ private constructor();
16
+ static getInstance(): ConfigManager;
17
+ load(): Promise<Config | null>;
18
+ save(config: Config, path?: string): Promise<void>;
19
+ get(key?: string, profile?: string): Promise<any>;
20
+ set(key: string, value: string, profile?: string): Promise<void>;
21
+ getActiveProfile(): Promise<string>;
22
+ setActiveProfile(profileName: string): Promise<void>;
23
+ listProfiles(): Promise<string[]>;
24
+ deleteProfile(profileName: string): Promise<void>;
25
+ getDefaultConfigPath(): string;
26
+ }
27
+ //# sourceMappingURL=config-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE;QACR,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAA;KACrC,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAQ;IAE5B,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,aAAa;IAO7B,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAuB9B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhE,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpD,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjC,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvD,oBAAoB,IAAI,MAAM;CAG/B"}