@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.
- package/README.md +194 -0
- package/bin/dev.js +5 -0
- package/bin/run.js +5 -0
- package/dist/base-command.d.ts +36 -0
- package/dist/base-command.d.ts.map +1 -0
- package/dist/base-command.js +161 -0
- package/dist/base-command.js.map +1 -0
- package/dist/commands/agents/add-plan-to-agent.d.ts +19 -0
- package/dist/commands/agents/add-plan-to-agent.d.ts.map +1 -0
- package/dist/commands/agents/add-plan-to-agent.js +33 -0
- package/dist/commands/agents/add-plan-to-agent.js.map +1 -0
- package/dist/commands/agents/get-agent-plans.d.ts +19 -0
- package/dist/commands/agents/get-agent-plans.d.ts.map +1 -0
- package/dist/commands/agents/get-agent-plans.js +36 -0
- package/dist/commands/agents/get-agent-plans.js.map +1 -0
- package/dist/commands/agents/get-agent.d.ts +18 -0
- package/dist/commands/agents/get-agent.d.ts.map +1 -0
- package/dist/commands/agents/get-agent.js +32 -0
- package/dist/commands/agents/get-agent.js.map +1 -0
- package/dist/commands/agents/register-agent-and-plan.d.ts +21 -0
- package/dist/commands/agents/register-agent-and-plan.d.ts.map +1 -0
- package/dist/commands/agents/register-agent-and-plan.js +44 -0
- package/dist/commands/agents/register-agent-and-plan.js.map +1 -0
- package/dist/commands/agents/register-agent.d.ts +18 -0
- package/dist/commands/agents/register-agent.d.ts.map +1 -0
- package/dist/commands/agents/register-agent.js +32 -0
- package/dist/commands/agents/register-agent.js.map +1 -0
- package/dist/commands/agents/remove-plan-from-agent.d.ts +19 -0
- package/dist/commands/agents/remove-plan-from-agent.d.ts.map +1 -0
- package/dist/commands/agents/remove-plan-from-agent.js +33 -0
- package/dist/commands/agents/remove-plan-from-agent.js.map +1 -0
- package/dist/commands/agents/update-agent-metadata.d.ts +20 -0
- package/dist/commands/agents/update-agent-metadata.d.ts.map +1 -0
- package/dist/commands/agents/update-agent-metadata.js +37 -0
- package/dist/commands/agents/update-agent-metadata.js.map +1 -0
- package/dist/commands/config/init.d.ts +15 -0
- package/dist/commands/config/init.d.ts.map +1 -0
- package/dist/commands/config/init.js +78 -0
- package/dist/commands/config/init.js.map +1 -0
- package/dist/commands/config/set.d.ts +16 -0
- package/dist/commands/config/set.d.ts.map +1 -0
- package/dist/commands/config/set.js +44 -0
- package/dist/commands/config/set.js.map +1 -0
- package/dist/commands/config/show.d.ts +13 -0
- package/dist/commands/config/show.d.ts.map +1 -0
- package/dist/commands/config/show.js +53 -0
- package/dist/commands/config/show.js.map +1 -0
- package/dist/commands/facilitator/settle-permissions.d.ts +16 -0
- package/dist/commands/facilitator/settle-permissions.d.ts.map +1 -0
- package/dist/commands/facilitator/settle-permissions.js +30 -0
- package/dist/commands/facilitator/settle-permissions.js.map +1 -0
- package/dist/commands/facilitator/verify-permissions.d.ts +16 -0
- package/dist/commands/facilitator/verify-permissions.d.ts.map +1 -0
- package/dist/commands/facilitator/verify-permissions.js +30 -0
- package/dist/commands/facilitator/verify-permissions.js.map +1 -0
- package/dist/commands/organizations/connect-stripe-account.d.ts +18 -0
- package/dist/commands/organizations/connect-stripe-account.d.ts.map +1 -0
- package/dist/commands/organizations/connect-stripe-account.js +29 -0
- package/dist/commands/organizations/connect-stripe-account.js.map +1 -0
- package/dist/commands/organizations/create-member.d.ts +20 -0
- package/dist/commands/organizations/create-member.d.ts.map +1 -0
- package/dist/commands/organizations/create-member.js +34 -0
- package/dist/commands/organizations/create-member.js.map +1 -0
- package/dist/commands/organizations/get-members.d.ts +19 -0
- package/dist/commands/organizations/get-members.d.ts.map +1 -0
- package/dist/commands/organizations/get-members.js +30 -0
- package/dist/commands/organizations/get-members.js.map +1 -0
- package/dist/commands/plans/get-agents-associated-to-a-plan.d.ts +19 -0
- package/dist/commands/plans/get-agents-associated-to-a-plan.d.ts.map +1 -0
- package/dist/commands/plans/get-agents-associated-to-a-plan.js +36 -0
- package/dist/commands/plans/get-agents-associated-to-a-plan.js.map +1 -0
- package/dist/commands/plans/get-crypto-price-config.d.ts +18 -0
- package/dist/commands/plans/get-crypto-price-config.d.ts.map +1 -0
- package/dist/commands/plans/get-crypto-price-config.js +35 -0
- package/dist/commands/plans/get-crypto-price-config.js.map +1 -0
- package/dist/commands/plans/get-dynamic-credits-config.d.ts +18 -0
- package/dist/commands/plans/get-dynamic-credits-config.d.ts.map +1 -0
- package/dist/commands/plans/get-dynamic-credits-config.js +29 -0
- package/dist/commands/plans/get-dynamic-credits-config.js.map +1 -0
- package/dist/commands/plans/get-erc20-price-config.d.ts +18 -0
- package/dist/commands/plans/get-erc20-price-config.d.ts.map +1 -0
- package/dist/commands/plans/get-erc20-price-config.js +35 -0
- package/dist/commands/plans/get-erc20-price-config.js.map +1 -0
- package/dist/commands/plans/get-expirable-duration-config.d.ts +16 -0
- package/dist/commands/plans/get-expirable-duration-config.d.ts.map +1 -0
- package/dist/commands/plans/get-expirable-duration-config.js +27 -0
- package/dist/commands/plans/get-expirable-duration-config.js.map +1 -0
- package/dist/commands/plans/get-fiat-price-config.d.ts +17 -0
- package/dist/commands/plans/get-fiat-price-config.d.ts.map +1 -0
- package/dist/commands/plans/get-fiat-price-config.js +31 -0
- package/dist/commands/plans/get-fiat-price-config.js.map +1 -0
- package/dist/commands/plans/get-fixed-credits-config.d.ts +17 -0
- package/dist/commands/plans/get-fixed-credits-config.d.ts.map +1 -0
- package/dist/commands/plans/get-fixed-credits-config.js +28 -0
- package/dist/commands/plans/get-fixed-credits-config.js.map +1 -0
- package/dist/commands/plans/get-free-price-config.d.ts +15 -0
- package/dist/commands/plans/get-free-price-config.d.ts.map +1 -0
- package/dist/commands/plans/get-free-price-config.js +25 -0
- package/dist/commands/plans/get-free-price-config.js.map +1 -0
- package/dist/commands/plans/get-native-token-price-config.d.ts +17 -0
- package/dist/commands/plans/get-native-token-price-config.d.ts.map +1 -0
- package/dist/commands/plans/get-native-token-price-config.js +31 -0
- package/dist/commands/plans/get-native-token-price-config.js.map +1 -0
- package/dist/commands/plans/get-non-expirable-duration-config.d.ts +15 -0
- package/dist/commands/plans/get-non-expirable-duration-config.d.ts.map +1 -0
- package/dist/commands/plans/get-non-expirable-duration-config.js +25 -0
- package/dist/commands/plans/get-non-expirable-duration-config.js.map +1 -0
- package/dist/commands/plans/get-pay-as-you-go-credits-config.d.ts +15 -0
- package/dist/commands/plans/get-pay-as-you-go-credits-config.d.ts.map +1 -0
- package/dist/commands/plans/get-pay-as-you-go-credits-config.js +25 -0
- package/dist/commands/plans/get-pay-as-you-go-credits-config.js.map +1 -0
- package/dist/commands/plans/get-pay-as-you-go-price-config.d.ts +18 -0
- package/dist/commands/plans/get-pay-as-you-go-price-config.d.ts.map +1 -0
- package/dist/commands/plans/get-pay-as-you-go-price-config.js +35 -0
- package/dist/commands/plans/get-pay-as-you-go-price-config.js.map +1 -0
- package/dist/commands/plans/get-plan-balance.d.ts +19 -0
- package/dist/commands/plans/get-plan-balance.d.ts.map +1 -0
- package/dist/commands/plans/get-plan-balance.js +36 -0
- package/dist/commands/plans/get-plan-balance.js.map +1 -0
- package/dist/commands/plans/get-plan.d.ts +18 -0
- package/dist/commands/plans/get-plan.d.ts.map +1 -0
- package/dist/commands/plans/get-plan.js +32 -0
- package/dist/commands/plans/get-plan.js.map +1 -0
- package/dist/commands/plans/get-plans.d.ts +19 -0
- package/dist/commands/plans/get-plans.d.ts.map +1 -0
- package/dist/commands/plans/get-plans.js +30 -0
- package/dist/commands/plans/get-plans.js.map +1 -0
- package/dist/commands/plans/mint-plan-credits.d.ts +20 -0
- package/dist/commands/plans/mint-plan-credits.d.ts.map +1 -0
- package/dist/commands/plans/mint-plan-credits.js +37 -0
- package/dist/commands/plans/mint-plan-credits.js.map +1 -0
- package/dist/commands/plans/mint-plan-expirable.d.ts +21 -0
- package/dist/commands/plans/mint-plan-expirable.d.ts.map +1 -0
- package/dist/commands/plans/mint-plan-expirable.js +38 -0
- package/dist/commands/plans/mint-plan-expirable.js.map +1 -0
- package/dist/commands/plans/order-fiat-plan.d.ts +18 -0
- package/dist/commands/plans/order-fiat-plan.d.ts.map +1 -0
- package/dist/commands/plans/order-fiat-plan.js +32 -0
- package/dist/commands/plans/order-fiat-plan.js.map +1 -0
- package/dist/commands/plans/order-plan.d.ts +18 -0
- package/dist/commands/plans/order-plan.d.ts.map +1 -0
- package/dist/commands/plans/order-plan.js +32 -0
- package/dist/commands/plans/order-plan.js.map +1 -0
- package/dist/commands/plans/redeem-credits.d.ts +21 -0
- package/dist/commands/plans/redeem-credits.d.ts.map +1 -0
- package/dist/commands/plans/redeem-credits.js +38 -0
- package/dist/commands/plans/redeem-credits.js.map +1 -0
- package/dist/commands/plans/register-credits-plan.d.ts +18 -0
- package/dist/commands/plans/register-credits-plan.d.ts.map +1 -0
- package/dist/commands/plans/register-credits-plan.js +38 -0
- package/dist/commands/plans/register-credits-plan.js.map +1 -0
- package/dist/commands/plans/register-credits-trial-plan.d.ts +18 -0
- package/dist/commands/plans/register-credits-trial-plan.d.ts.map +1 -0
- package/dist/commands/plans/register-credits-trial-plan.js +38 -0
- package/dist/commands/plans/register-credits-trial-plan.js.map +1 -0
- package/dist/commands/plans/register-plan.d.ts +20 -0
- package/dist/commands/plans/register-plan.d.ts.map +1 -0
- package/dist/commands/plans/register-plan.js +40 -0
- package/dist/commands/plans/register-plan.js.map +1 -0
- package/dist/commands/plans/register-time-plan.d.ts +18 -0
- package/dist/commands/plans/register-time-plan.d.ts.map +1 -0
- package/dist/commands/plans/register-time-plan.js +38 -0
- package/dist/commands/plans/register-time-plan.js.map +1 -0
- package/dist/commands/plans/register-time-trial-plan.d.ts +18 -0
- package/dist/commands/plans/register-time-trial-plan.d.ts.map +1 -0
- package/dist/commands/plans/register-time-trial-plan.js +38 -0
- package/dist/commands/plans/register-time-trial-plan.js.map +1 -0
- package/dist/commands/plans/set-proof-required.d.ts +17 -0
- package/dist/commands/plans/set-proof-required.d.ts.map +1 -0
- package/dist/commands/plans/set-proof-required.js +31 -0
- package/dist/commands/plans/set-proof-required.js.map +1 -0
- package/dist/commands/plans/set-redemption-type.d.ts +17 -0
- package/dist/commands/plans/set-redemption-type.d.ts.map +1 -0
- package/dist/commands/plans/set-redemption-type.js +31 -0
- package/dist/commands/plans/set-redemption-type.js.map +1 -0
- package/dist/commands/x402token/get-x402-access-token.d.ts +22 -0
- package/dist/commands/x402token/get-x402-access-token.d.ts.map +1 -0
- package/dist/commands/x402token/get-x402-access-token.js +36 -0
- package/dist/commands/x402token/get-x402-access-token.js.map +1 -0
- package/dist/generator/api-scanner.d.ts +63 -0
- package/dist/generator/api-scanner.d.ts.map +1 -0
- package/dist/generator/api-scanner.js +228 -0
- package/dist/generator/api-scanner.js.map +1 -0
- package/dist/generator/command-generator.d.ts +91 -0
- package/dist/generator/command-generator.d.ts.map +1 -0
- package/dist/generator/command-generator.js +334 -0
- package/dist/generator/command-generator.js.map +1 -0
- package/dist/generator/generate.d.ts +7 -0
- package/dist/generator/generate.d.ts.map +1 -0
- package/dist/generator/generate.js +70 -0
- package/dist/generator/generate.js.map +1 -0
- package/dist/generator/sync-check.d.ts +7 -0
- package/dist/generator/sync-check.d.ts.map +1 -0
- package/dist/generator/sync-check.js +115 -0
- package/dist/generator/sync-check.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/config-manager.d.ts +27 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +120 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/output-formatter.d.ts +46 -0
- package/dist/utils/output-formatter.d.ts.map +1 -0
- package/dist/utils/output-formatter.js +113 -0
- package/dist/utils/output-formatter.js.map +1 -0
- package/oclif.manifest.json +3136 -0
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|