@azeth/cli 0.2.3 → 0.2.5
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 +1 -1
- package/dist/commands/quickstart.d.ts.map +1 -1
- package/dist/commands/quickstart.js +31 -42
- package/dist/commands/quickstart.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +11 -4
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/key-persistence.d.ts +21 -0
- package/dist/utils/key-persistence.d.ts.map +1 -0
- package/dist/utils/key-persistence.js +73 -0
- package/dist/utils/key-persistence.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -38,7 +38,7 @@ azeth call https://api.example.com/eth-price --max-amount 0.10
|
|
|
38
38
|
| `AZETH_PRIVATE_KEY` | Yes | Account owner's private key |
|
|
39
39
|
| `PIMLICO_API_KEY` | Yes* | Pimlico bundler key (*required for state-changing ops) |
|
|
40
40
|
| `AZETH_CHAIN` | No | Default chain (`baseSepolia`) |
|
|
41
|
-
| `
|
|
41
|
+
| `AZETH_RPC_URL_BASE_SEPOLIA` | No | RPC endpoint (per-chain: `AZETH_RPC_URL_BASE`, etc.) |
|
|
42
42
|
| `AZETH_SERVER_URL` | No | Azeth server URL |
|
|
43
43
|
|
|
44
44
|
## Commands
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart.d.ts","sourceRoot":"","sources":["../../src/commands/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"quickstart.d.ts","sourceRoot":"","sources":["../../src/commands/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC,eAAO,MAAM,iBAAiB,SA6K1B,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
|
5
5
|
import { AzethKit } from '@azeth/sdk';
|
|
6
6
|
import { isValidChainName, TOKENS } from '@azeth/common';
|
|
7
7
|
import { printHeader, printField, printSuccess, printError } from '../utils/display.js';
|
|
8
|
+
import { saveKey } from '../utils/key-persistence.js';
|
|
8
9
|
const DEFAULT_SERVER_URL = 'https://api.azeth.ai';
|
|
9
10
|
/** Print a prominent warning box about the throwaway demo key */
|
|
10
11
|
function printKeyWarning(privateKey, eoaAddress) {
|
|
@@ -55,6 +56,7 @@ export const quickstartCommand = new Command('quickstart')
|
|
|
55
56
|
else {
|
|
56
57
|
privateKey = generatePrivateKey();
|
|
57
58
|
generated = true;
|
|
59
|
+
saveKey(privateKey);
|
|
58
60
|
}
|
|
59
61
|
const account = privateKeyToAccount(privateKey);
|
|
60
62
|
const eoaAddress = account.address;
|
|
@@ -71,12 +73,15 @@ export const quickstartCommand = new Command('quickstart')
|
|
|
71
73
|
process.exit(1);
|
|
72
74
|
}
|
|
73
75
|
// Step 4: Build AzethKitConfig directly (no env vars required)
|
|
76
|
+
const serverUrl = process.env['AZETH_SERVER_URL'] ?? DEFAULT_SERVER_URL;
|
|
74
77
|
const config = {
|
|
75
78
|
privateKey,
|
|
76
79
|
chain,
|
|
77
|
-
serverUrl
|
|
80
|
+
serverUrl,
|
|
78
81
|
};
|
|
79
|
-
|
|
82
|
+
// SDK auto-tries gasless relay (createAccountWithSignature) before falling back
|
|
83
|
+
// to direct on-chain tx. No need to sponsor gas separately.
|
|
84
|
+
const spinner = ora(`Deploying smart account on ${chain}...`).start();
|
|
80
85
|
kit = await AzethKit.create(config);
|
|
81
86
|
// Step 5: Deploy smart account + register on ERC-8004
|
|
82
87
|
const isTestnet = chain === 'baseSepolia' || chain === 'ethereumSepolia';
|
|
@@ -108,7 +113,6 @@ export const quickstartCommand = new Command('quickstart')
|
|
|
108
113
|
});
|
|
109
114
|
spinner.stop();
|
|
110
115
|
// Step 6: Print results
|
|
111
|
-
const serverUrl = config.serverUrl ?? DEFAULT_SERVER_URL;
|
|
112
116
|
const tokenIdStr = result.tokenId.toString();
|
|
113
117
|
const badgeUrl = `${serverUrl}/badge/${tokenIdStr}`;
|
|
114
118
|
const profileUrl = `https://azeth.ai/agent/${result.account}`;
|
|
@@ -122,38 +126,9 @@ export const quickstartCommand = new Command('quickstart')
|
|
|
122
126
|
printField('Profile', profileUrl);
|
|
123
127
|
printField('Badge', badgeUrl);
|
|
124
128
|
console.log();
|
|
125
|
-
printSuccess('
|
|
129
|
+
printSuccess('Account deployed — zero gas required from you.');
|
|
126
130
|
console.log();
|
|
127
|
-
// Step 6b:
|
|
128
|
-
if (isTestnet) {
|
|
129
|
-
try {
|
|
130
|
-
const faucetSpinner = ora('Funding account with testnet USDC...').start();
|
|
131
|
-
const faucetRes = await fetch(`${serverUrl}/api/v1/faucet`, {
|
|
132
|
-
method: 'POST',
|
|
133
|
-
headers: { 'Content-Type': 'application/json' },
|
|
134
|
-
body: JSON.stringify({ address: result.account }),
|
|
135
|
-
signal: AbortSignal.timeout(60_000),
|
|
136
|
-
});
|
|
137
|
-
if (faucetRes.ok) {
|
|
138
|
-
const faucetBody = await faucetRes.json();
|
|
139
|
-
faucetSpinner.stop();
|
|
140
|
-
printSuccess(`Funded with ${faucetBody.data?.amount ?? '1.00 USDC'} for demo calls.`);
|
|
141
|
-
console.log();
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
faucetSpinner.stop();
|
|
145
|
-
// Non-fatal: show manual funding instructions
|
|
146
|
-
console.log(chalk.gray(' Faucet unavailable — send testnet USDC to your smart account to try paid services.'));
|
|
147
|
-
console.log();
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
// Non-fatal — faucet unreachable
|
|
152
|
-
console.log(chalk.gray(' Could not reach faucet — send testnet USDC to your smart account to try paid services.'));
|
|
153
|
-
console.log();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Step 6c: Demo the live ecosystem — call the free catalog
|
|
131
|
+
// Step 6b: Demo the live ecosystem — call the free catalog
|
|
157
132
|
const catalogUrl = `${serverUrl}/api/v1/pricing`;
|
|
158
133
|
try {
|
|
159
134
|
const catalogSpinner = ora('Discovering live services...').start();
|
|
@@ -168,9 +143,6 @@ export const quickstartCommand = new Command('quickstart')
|
|
|
168
143
|
console.log(` ${chalk.cyan(item.name ?? '?')} ${chalk.gray(item.pricing ?? '')} ${chalk.white(item.description ?? '')}`);
|
|
169
144
|
}
|
|
170
145
|
console.log();
|
|
171
|
-
console.log(chalk.gray(' Try a paid call now' + (isTestnet ? ' (your account is funded)' : '') + ':'));
|
|
172
|
-
console.log(chalk.cyan(` azeth call ${serverUrl}/api/v1/pricing/ethereum`));
|
|
173
|
-
console.log();
|
|
174
146
|
}
|
|
175
147
|
}
|
|
176
148
|
else {
|
|
@@ -180,6 +152,26 @@ export const quickstartCommand = new Command('quickstart')
|
|
|
180
152
|
catch {
|
|
181
153
|
// Non-fatal — catalog fetch failed, just skip the demo
|
|
182
154
|
}
|
|
155
|
+
// Step 6d: Make a live paid API call to demonstrate x402 (testnet only)
|
|
156
|
+
if (isTestnet) {
|
|
157
|
+
try {
|
|
158
|
+
const demoSpinner = ora('Making your first paid API call...').start();
|
|
159
|
+
const demoRes = await kit.fetch402(`${serverUrl}/api/v1/pricing/ethereum`);
|
|
160
|
+
demoSpinner.stop();
|
|
161
|
+
if (demoRes.response.ok) {
|
|
162
|
+
const body = await demoRes.response.json();
|
|
163
|
+
const price = body?.data?.price;
|
|
164
|
+
const costStr = demoRes.amount !== undefined
|
|
165
|
+
? `$${(Number(demoRes.amount) / 1_000_000).toFixed(2)}`
|
|
166
|
+
: '$0.01';
|
|
167
|
+
printSuccess(`First paid call complete! ETH = ${price ?? 'N/A'} (cost: ${costStr})`);
|
|
168
|
+
console.log();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Non-fatal — the demo call is a nice-to-have
|
|
173
|
+
}
|
|
174
|
+
}
|
|
183
175
|
console.log(chalk.gray(' Next steps:'));
|
|
184
176
|
console.log(chalk.gray(' azeth status — Check your account'));
|
|
185
177
|
console.log(chalk.gray(' azeth find "price feed" — Discover services'));
|
|
@@ -187,11 +179,8 @@ export const quickstartCommand = new Command('quickstart')
|
|
|
187
179
|
console.log();
|
|
188
180
|
// Step 7: Print key persistence instructions (only for generated keys)
|
|
189
181
|
if (generated) {
|
|
190
|
-
console.log(chalk.
|
|
191
|
-
console.log(chalk.
|
|
192
|
-
console.log();
|
|
193
|
-
console.log(chalk.gray(' Or add to .env:'));
|
|
194
|
-
console.log(chalk.gray(` echo 'AZETH_PRIVATE_KEY=${privateKey}' >> .env`));
|
|
182
|
+
console.log(chalk.gray(' Key saved to ~/.azeth/key'));
|
|
183
|
+
console.log(chalk.gray(' To use in other terminals: export AZETH_PRIVATE_KEY=$(cat ~/.azeth/key)'));
|
|
195
184
|
console.log();
|
|
196
185
|
}
|
|
197
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../src/commands/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAA4C,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../src/commands/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAA4C,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAElD,iEAAiE;AACjE,SAAS,eAAe,CAAC,UAAkB,EAAE,UAAkB;IAC7D,MAAM,KAAK,GAAG;QACZ,wCAAwC;QACxC,EAAE;QACF,2DAA2D;QAC3D,gBAAgB,UAAU,EAAE;QAC5B,gBAAgB,UAAU,EAAE;QAC5B,EAAE;QACF,2CAA2C;QAC3C,qDAAqD;KACtD,CAAC;IAEF,4DAA4D;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,4BAA4B;IAE3D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;IAErE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;KACvD,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;IACpC,IAAI,GAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,EAAsB,CAAC,KAAK,IAAI,aAAa,CAAC;QAClF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,UAAU,CAAC,kBAAkB,QAAQ,iEAAiE,CAAC,CAAC;YACxG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAuB,QAAQ,CAAC;QAE3C,iFAAiF;QACjF,IAAI,UAAyB,CAAC;QAC9B,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAI,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,UAAU,GAAG,MAAM,CAAC,IAAI,EAAmB,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,kBAAkB,EAAE,CAAC;YAClC,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;QAEnC,oDAAoD;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAqB,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,QAAQ,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACtB,UAAU,CAAC,sCAAsC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,+DAA+D;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC;QACxE,MAAM,MAAM,GAAmB;YAC7B,UAAU;YACV,KAAK;YACL,SAAS;SACV,CAAC;QAEF,gFAAgF;QAChF,4DAA4D;QAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,8BAA8B,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACtE,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEpC,sDAAsD;QACtD,MAAM,SAAS,GAAG,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,iBAAiB,CAAC;QACzE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAExC,MAAM,UAAU,GAAe;YAC7B,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG;YAC7C,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG;YACjD,sBAAsB,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;YACzD,0BAA0B,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;YAC7D,QAAQ,EAAE,UAAU;YACpB,mBAAmB,EAAE,UAAU;SAChC,CAAC;QAEF,MAAM,aAAa,GAAoB;YACrC,4CAA4C;YAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI;YAClB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI;SACnB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC;YACrC,KAAK,EAAE,UAAU;YACjB,UAAU;YACV,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE;gBACR,IAAI;gBACJ,WAAW,EAAE,wBAAwB;gBACrC,UAAU,EAAE,OAAO;gBACnB,YAAY,EAAE,CAAC,SAAS,CAAC;aAC1B;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,wBAAwB;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,SAAS,UAAU,UAAU,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,0BAA0B,MAAM,CAAC,OAAO,EAAE,CAAC;QAE9D,WAAW,CAAC,2BAA2B,CAAC,CAAC;QACzC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzB,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACnC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,YAAY,CAAC,gDAAgD,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,2DAA2D;QAC3D,MAAM,UAAU,GAAG,GAAG,SAAS,iBAAiB,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;YACnE,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClF,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;gBAClB,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,IAAI,EAExC,CAAC;gBACF,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC1C,cAAc,CAAC,IAAI,EAAE,CAAC;gBACtB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,WAAW,CAAC,yBAAyB,CAAC,CAAC;oBACvC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC9H,CAAC;oBACD,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,IAAI,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QAED,wEAAwE;QACxE,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,GAAG,CAAC,oCAAoC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACtE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS,0BAA0B,CAAC,CAAC;gBAC3E,WAAW,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAoD,CAAC;oBAC7F,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS;wBAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACvD,CAAC,CAAC,OAAO,CAAC;oBACZ,YAAY,CAAC,mCAAmC,KAAK,IAAI,KAAK,WAAW,OAAO,GAAG,CAAC,CAAC;oBACrF,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8CAA8C;YAChD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,uEAAuE;QACvE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC,CAAC;YACrG,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@ const program = new Command()
|
|
|
15
15
|
.description('Azeth.ai CLI — Trust Infrastructure for the Machine Economy')
|
|
16
16
|
.version('0.1.0')
|
|
17
17
|
.option('--chain <chain>', 'Chain to use (base|baseSepolia|ethereumSepolia|ethereum)', 'baseSepolia')
|
|
18
|
-
.option('--rpc-url <url>', 'RPC URL (or set
|
|
18
|
+
.option('--rpc-url <url>', 'RPC URL (or set AZETH_RPC_URL_BASE_SEPOLIA, etc.)')
|
|
19
19
|
.option('--server-url <url>', 'Azeth server URL (or set AZETH_SERVER_URL)');
|
|
20
20
|
// Daily porcelain commands
|
|
21
21
|
program.addCommand(quickstartCommand);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,EAAE,aAAa,CAAC;KACpG,MAAM,CAAC,iBAAiB,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,EAAE,aAAa,CAAC;KACpG,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,CAAC;KAC9E,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC,CAAC;AAE9E,2BAA2B;AAC3B,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAEtC,+BAA+B;AAC/B,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CA6BvD;AAED;;0GAE0G;AAC1G,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqCtE"}
|
package/dist/utils/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AzethKit } from '@azeth/sdk';
|
|
2
|
-
import { isValidChainName, isValidPrivateKey } from '@azeth/common';
|
|
2
|
+
import { isValidChainName, isValidPrivateKey, RPC_ENV_KEYS } from '@azeth/common';
|
|
3
3
|
import dotenv from 'dotenv';
|
|
4
|
+
import { loadKey } from './key-persistence.js';
|
|
4
5
|
dotenv.config();
|
|
5
6
|
/** Resolve CLI options from commander flags + environment variables */
|
|
6
7
|
export function resolveOptions(cmd) {
|
|
@@ -9,7 +10,7 @@ export function resolveOptions(cmd) {
|
|
|
9
10
|
if (!isValidChainName(chainRaw)) {
|
|
10
11
|
throw new Error(`Invalid chain "${chainRaw}". Must be one of: base, baseSepolia, ethereumSepolia, ethereum`);
|
|
11
12
|
}
|
|
12
|
-
const rpcUrl = opts.rpcUrl ?? process.env[
|
|
13
|
+
const rpcUrl = opts.rpcUrl ?? process.env[RPC_ENV_KEYS[chainRaw]];
|
|
13
14
|
const serverUrl = opts.serverUrl ?? process.env['AZETH_SERVER_URL'];
|
|
14
15
|
// Validate server URL if provided
|
|
15
16
|
if (serverUrl) {
|
|
@@ -31,9 +32,15 @@ export function resolveOptions(cmd) {
|
|
|
31
32
|
* Private key is read exclusively from the AZETH_PRIVATE_KEY environment variable.
|
|
32
33
|
* NEVER pass private keys via command-line arguments (visible in shell history and process listings). */
|
|
33
34
|
export async function createKit(options) {
|
|
34
|
-
|
|
35
|
+
let privateKey = process.env['AZETH_PRIVATE_KEY'];
|
|
35
36
|
if (!privateKey) {
|
|
36
|
-
|
|
37
|
+
const fileKey = loadKey();
|
|
38
|
+
if (fileKey) {
|
|
39
|
+
privateKey = fileKey;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (!privateKey) {
|
|
43
|
+
throw new Error("Private key required. Set AZETH_PRIVATE_KEY or run 'azeth quickstart' to auto-generate one.\n" +
|
|
37
44
|
'Example: export AZETH_PRIVATE_KEY=0x...\n' +
|
|
38
45
|
'WARNING: Never pass private keys via command-line flags — they are visible in shell history.');
|
|
39
46
|
}
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Private key persistence for the Azeth CLI.
|
|
3
|
+
*
|
|
4
|
+
* Saves and loads private keys from ~/.azeth/key so that quickstart-generated
|
|
5
|
+
* keys persist across CLI invocations without manual `export AZETH_PRIVATE_KEY=...`.
|
|
6
|
+
*
|
|
7
|
+
* File permissions: ~/.azeth/ = 0o700, ~/.azeth/key = 0o600
|
|
8
|
+
* The private key is NEVER logged — only the derived EOA address.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Save a private key to ~/.azeth/key with secure file permissions.
|
|
12
|
+
* Creates ~/.azeth/ directory (0o700) if it doesn't exist.
|
|
13
|
+
* Returns true if saved successfully, false otherwise.
|
|
14
|
+
*/
|
|
15
|
+
export declare function saveKey(privateKey: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Load a private key from ~/.azeth/key.
|
|
18
|
+
* Returns the key string if found and valid, null otherwise.
|
|
19
|
+
*/
|
|
20
|
+
export declare function loadKey(): string | null;
|
|
21
|
+
//# sourceMappingURL=key-persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-persistence.d.ts","sourceRoot":"","sources":["../../src/utils/key-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA6BnD;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,MAAM,GAAG,IAAI,CAevC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Private key persistence for the Azeth CLI.
|
|
3
|
+
*
|
|
4
|
+
* Saves and loads private keys from ~/.azeth/key so that quickstart-generated
|
|
5
|
+
* keys persist across CLI invocations without manual `export AZETH_PRIVATE_KEY=...`.
|
|
6
|
+
*
|
|
7
|
+
* File permissions: ~/.azeth/ = 0o700, ~/.azeth/key = 0o600
|
|
8
|
+
* The private key is NEVER logged — only the derived EOA address.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync, statSync } from 'node:fs';
|
|
11
|
+
import { homedir } from 'node:os';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
const KEY_FILE_RE = /^0x[0-9a-fA-F]{64}$/;
|
|
14
|
+
/**
|
|
15
|
+
* Save a private key to ~/.azeth/key with secure file permissions.
|
|
16
|
+
* Creates ~/.azeth/ directory (0o700) if it doesn't exist.
|
|
17
|
+
* Returns true if saved successfully, false otherwise.
|
|
18
|
+
*/
|
|
19
|
+
export function saveKey(privateKey) {
|
|
20
|
+
const home = homedir();
|
|
21
|
+
if (!home)
|
|
22
|
+
return false;
|
|
23
|
+
const azethDir = join(home, '.azeth');
|
|
24
|
+
const keyFile = join(azethDir, 'key');
|
|
25
|
+
// Ensure ~/.azeth/ directory exists
|
|
26
|
+
if (existsSync(azethDir)) {
|
|
27
|
+
try {
|
|
28
|
+
if (!statSync(azethDir).isDirectory())
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
try {
|
|
37
|
+
mkdirSync(azethDir, { recursive: true, mode: 0o700 });
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
writeFileSync(keyFile, privateKey, { mode: 0o600 });
|
|
45
|
+
chmodSync(keyFile, 0o600);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Load a private key from ~/.azeth/key.
|
|
54
|
+
* Returns the key string if found and valid, null otherwise.
|
|
55
|
+
*/
|
|
56
|
+
export function loadKey() {
|
|
57
|
+
const home = homedir();
|
|
58
|
+
if (!home)
|
|
59
|
+
return null;
|
|
60
|
+
const keyFile = join(home, '.azeth', 'key');
|
|
61
|
+
if (!existsSync(keyFile))
|
|
62
|
+
return null;
|
|
63
|
+
try {
|
|
64
|
+
const key = readFileSync(keyFile, 'utf-8').trim();
|
|
65
|
+
if (KEY_FILE_RE.test(key))
|
|
66
|
+
return key;
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=key-persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-persistence.js","sourceRoot":"","sources":["../../src/utils/key-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,UAAkB;IACxC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEtC,oCAAoC;IACpC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;gBAAE,OAAO,KAAK,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azeth/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI for the Azeth trust infrastructure — register, discover, pay, and manage machine participants",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"clean": "rm -rf dist"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@azeth/common": "^0.2.
|
|
39
|
-
"@azeth/sdk": "^0.2.
|
|
38
|
+
"@azeth/common": "^0.2.5",
|
|
39
|
+
"@azeth/sdk": "^0.2.5",
|
|
40
40
|
"commander": "^12.1.0",
|
|
41
41
|
"chalk": "^5.3.0",
|
|
42
42
|
"ora": "^8.1.0",
|