@waiaas/cli 2.0.0-rc.1
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/bin/waiaas +2 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +50 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp-setup.d.ts +24 -0
- package/dist/commands/mcp-setup.d.ts.map +1 -0
- package/dist/commands/mcp-setup.js +237 -0
- package/dist/commands/mcp-setup.js.map +1 -0
- package/dist/commands/owner.d.ts +27 -0
- package/dist/commands/owner.d.ts.map +1 -0
- package/dist/commands/owner.js +145 -0
- package/dist/commands/owner.js.map +1 -0
- package/dist/commands/quickstart.d.ts +20 -0
- package/dist/commands/quickstart.d.ts.map +1 -0
- package/dist/commands/quickstart.js +192 -0
- package/dist/commands/quickstart.js.map +1 -0
- package/dist/commands/start.d.ts +10 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +54 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +80 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +10 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +68 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/upgrade.d.ts +28 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +202 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/wallet.d.ts +21 -0
- package/dist/commands/wallet.d.ts.map +1 -0
- package/dist/commands/wallet.js +99 -0
- package/dist/commands/wallet.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/data-dir.d.ts +12 -0
- package/dist/utils/data-dir.d.ts.map +1 -0
- package/dist/utils/data-dir.js +18 -0
- package/dist/utils/data-dir.js.map +1 -0
- package/dist/utils/password.d.ts +10 -0
- package/dist/utils/password.d.ts.map +1 -0
- package/dist/utils/password.js +58 -0
- package/dist/utils/password.js.map +1 -0
- package/dist/utils/slug.d.ts +27 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +53 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/utils/update-notify.d.ts +23 -0
- package/dist/utils/update-notify.d.ts.map +1 -0
- package/dist/utils/update-notify.js +114 -0
- package/dist/utils/update-notify.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `waiaas upgrade` -- Upgrade WAIaaS to the latest version.
|
|
3
|
+
*
|
|
4
|
+
* Supports four modes:
|
|
5
|
+
* --check Check for available updates without upgrading
|
|
6
|
+
* --rollback Restore from the latest pre-upgrade backup
|
|
7
|
+
* --to <ver> Upgrade to a specific version
|
|
8
|
+
* (default) 7-step upgrade sequence:
|
|
9
|
+
* 1. Version check
|
|
10
|
+
* 2. Stop daemon
|
|
11
|
+
* 3. Create backup
|
|
12
|
+
* 4. Update package
|
|
13
|
+
* 5. Database migrations (deferred to daemon start)
|
|
14
|
+
* 6. Verify installation
|
|
15
|
+
* 7. Restart daemon
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
18
|
+
import { execSync } from 'node:child_process';
|
|
19
|
+
import { createRequire } from 'node:module';
|
|
20
|
+
import { join } from 'node:path';
|
|
21
|
+
import semver from 'semver';
|
|
22
|
+
import { BackupService } from '@waiaas/daemon';
|
|
23
|
+
const require = createRequire(import.meta.url);
|
|
24
|
+
const { version: CURRENT_VERSION } = require('../../package.json');
|
|
25
|
+
const NPM_REGISTRY_URL = 'https://registry.npmjs.org/@waiaas/cli';
|
|
26
|
+
const FETCH_TIMEOUT_MS = 5000;
|
|
27
|
+
/**
|
|
28
|
+
* Execute the upgrade command based on the provided options.
|
|
29
|
+
*/
|
|
30
|
+
export async function upgradeCommand(opts) {
|
|
31
|
+
if (opts.check) {
|
|
32
|
+
return checkMode();
|
|
33
|
+
}
|
|
34
|
+
if (opts.rollback) {
|
|
35
|
+
return rollbackMode(opts.dataDir);
|
|
36
|
+
}
|
|
37
|
+
return upgradeMode(opts);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* --check mode: Query npm registry and report update availability.
|
|
41
|
+
*/
|
|
42
|
+
async function checkMode() {
|
|
43
|
+
const latest = await fetchLatestVersion();
|
|
44
|
+
if (!latest) {
|
|
45
|
+
console.error('Failed to check for updates. Please try again later.');
|
|
46
|
+
process.exit(1);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (semver.gt(latest, CURRENT_VERSION)) {
|
|
50
|
+
console.log(`Update available: ${CURRENT_VERSION} \u2192 ${latest}`);
|
|
51
|
+
console.log('Run: waiaas upgrade');
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(`Already up to date (${CURRENT_VERSION})`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* --rollback mode: Restore from the latest backup.
|
|
59
|
+
*/
|
|
60
|
+
function rollbackMode(dataDir) {
|
|
61
|
+
try {
|
|
62
|
+
const backupService = new BackupService(dataDir);
|
|
63
|
+
const backupDir = backupService.restoreLatest();
|
|
64
|
+
console.log(`Restored from backup: ${backupDir}`);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
console.error(`Rollback failed: ${err.message}`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Default mode: Execute the 7-step upgrade sequence.
|
|
73
|
+
*/
|
|
74
|
+
async function upgradeMode(opts) {
|
|
75
|
+
// Step 1: Version check
|
|
76
|
+
let targetVersion;
|
|
77
|
+
if (opts.to) {
|
|
78
|
+
if (!semver.valid(opts.to)) {
|
|
79
|
+
console.error(`Invalid version: ${opts.to}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
targetVersion = opts.to;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const latest = await fetchLatestVersion();
|
|
87
|
+
if (!latest) {
|
|
88
|
+
console.error('Failed to check for updates. Please try again later.');
|
|
89
|
+
process.exit(1);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
targetVersion = latest;
|
|
93
|
+
}
|
|
94
|
+
if (targetVersion === CURRENT_VERSION) {
|
|
95
|
+
console.log(`Already up to date (${CURRENT_VERSION})`);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
console.log(`[1/7] Version check: ${CURRENT_VERSION} \u2192 ${targetVersion}`);
|
|
99
|
+
// Step 2: Stop daemon
|
|
100
|
+
console.log('[2/7] Stopping daemon...');
|
|
101
|
+
stopDaemonIfRunning(opts.dataDir);
|
|
102
|
+
// Step 3: Backup
|
|
103
|
+
console.log('[3/7] Creating backup...');
|
|
104
|
+
const backupService = new BackupService(opts.dataDir);
|
|
105
|
+
try {
|
|
106
|
+
const backupDir = backupService.createBackup(CURRENT_VERSION);
|
|
107
|
+
console.log(` Backup created: ${backupDir}`);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
console.error(`Backup failed: ${err.message}`);
|
|
111
|
+
console.error('Upgrade aborted. No changes were made.');
|
|
112
|
+
process.exit(1);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Step 4: Update package
|
|
116
|
+
console.log(`[4/7] Updating to ${targetVersion}...`);
|
|
117
|
+
try {
|
|
118
|
+
execSync(`npm install -g @waiaas/cli@${targetVersion}`, { stdio: 'inherit' });
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
console.error('Package update failed.');
|
|
122
|
+
console.error('Run: waiaas upgrade --rollback');
|
|
123
|
+
process.exit(1);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Step 5: Database migrations
|
|
127
|
+
console.log('[5/7] Running database migrations...');
|
|
128
|
+
console.log(' Migrations will run on next daemon start');
|
|
129
|
+
// Step 6: Verify installation
|
|
130
|
+
console.log('[6/7] Verifying installation...');
|
|
131
|
+
try {
|
|
132
|
+
const output = execSync('waiaas --version', { stdio: 'pipe' }).toString().trim();
|
|
133
|
+
// Commander outputs the version string directly (e.g. "1.8.0")
|
|
134
|
+
const installedVersion = output.replace(/^v/, '');
|
|
135
|
+
if (installedVersion !== targetVersion) {
|
|
136
|
+
console.warn(` Warning: Expected ${targetVersion}, found ${installedVersion}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
console.warn(' Warning: Could not verify installed version');
|
|
141
|
+
}
|
|
142
|
+
// Step 7: Restart daemon
|
|
143
|
+
if (opts.noStart) {
|
|
144
|
+
console.log('[7/7] Skipping daemon restart (--no-start)');
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
console.log('[7/7] Restarting daemon...');
|
|
148
|
+
try {
|
|
149
|
+
execSync('waiaas start', { stdio: 'inherit' });
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
console.error('Failed to restart daemon. Start it manually: waiaas start');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
console.log(`\nUpgrade complete: ${CURRENT_VERSION} \u2192 ${targetVersion}`);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Fetch the latest version from the npm registry.
|
|
159
|
+
*/
|
|
160
|
+
async function fetchLatestVersion() {
|
|
161
|
+
try {
|
|
162
|
+
const res = await fetch(NPM_REGISTRY_URL, {
|
|
163
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
164
|
+
headers: {
|
|
165
|
+
'User-Agent': `waiaas/${CURRENT_VERSION}`,
|
|
166
|
+
Accept: 'application/json',
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
if (!res.ok)
|
|
170
|
+
return null;
|
|
171
|
+
const data = (await res.json());
|
|
172
|
+
const latest = data?.['dist-tags']?.latest;
|
|
173
|
+
if (!latest || !semver.valid(latest))
|
|
174
|
+
return null;
|
|
175
|
+
return latest;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Stop daemon if running by reading PID file and sending SIGTERM.
|
|
183
|
+
*/
|
|
184
|
+
function stopDaemonIfRunning(dataDir) {
|
|
185
|
+
const pidPath = join(dataDir, 'daemon.pid');
|
|
186
|
+
if (!existsSync(pidPath)) {
|
|
187
|
+
console.log(' Daemon not running, skipping');
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
const pid = parseInt(readFileSync(pidPath, 'utf-8').trim(), 10);
|
|
192
|
+
// Check if process is alive
|
|
193
|
+
process.kill(pid, 0);
|
|
194
|
+
// Send SIGTERM
|
|
195
|
+
process.kill(pid, 'SIGTERM');
|
|
196
|
+
console.log(` Sent SIGTERM to PID ${pid}`);
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
console.log(' Daemon not running, skipping');
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=upgrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAE1F,MAAM,gBAAgB,GAAG,wCAAwC,CAAC;AAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAU9B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAoB;IACvD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,eAAe,WAAW,MAAM,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,GAAG,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oBAAqB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,IAAoB;IAC7C,wBAAwB;IACxB,IAAI,aAAqB,CAAC;IAE1B,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,aAAa,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,IAAI,aAAa,KAAK,eAAe,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,GAAG,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,eAAe,WAAW,aAAa,EAAE,CAAC,CAAC;IAE/E,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElC,iBAAiB;IACjB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,kBAAmB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,qBAAqB,aAAa,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,QAAQ,CAAC,8BAA8B,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,8BAA8B;IAC9B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACjF,+DAA+D;QAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,gBAAgB,KAAK,aAAa,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,uBAAuB,aAAa,WAAW,gBAAgB,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAChE,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,QAAQ,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,WAAW,aAAa,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YACxC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC7C,OAAO,EAAE;gBACP,YAAY,EAAE,UAAU,eAAe,EAAE;gBACzC,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0C,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAE3C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAChE,4BAA4B;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,eAAe;QACf,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `waiaas wallet` subcommand group:
|
|
3
|
+
* wallet info -- Show wallet details
|
|
4
|
+
* wallet set-default-network <network> -- Change default network
|
|
5
|
+
*
|
|
6
|
+
* Both commands use masterAuth (X-Master-Password header) for daemon communication.
|
|
7
|
+
*/
|
|
8
|
+
export interface WalletCommandOptions {
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
password?: string;
|
|
11
|
+
walletId?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* `waiaas wallet info` -- Show wallet details including address and networks.
|
|
15
|
+
*/
|
|
16
|
+
export declare function walletInfoCommand(opts: WalletCommandOptions): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* `waiaas wallet set-default-network <network>` -- Change default network.
|
|
19
|
+
*/
|
|
20
|
+
export declare function walletSetDefaultNetworkCommand(opts: WalletCommandOptions, network: string): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4GD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBjF;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `waiaas wallet` subcommand group:
|
|
3
|
+
* wallet info -- Show wallet details
|
|
4
|
+
* wallet set-default-network <network> -- Change default network
|
|
5
|
+
*
|
|
6
|
+
* Both commands use masterAuth (X-Master-Password header) for daemon communication.
|
|
7
|
+
*/
|
|
8
|
+
import { resolvePassword } from '../utils/password.js';
|
|
9
|
+
/**
|
|
10
|
+
* Resolve master password from --password flag or env/prompt.
|
|
11
|
+
*/
|
|
12
|
+
async function getMasterPassword(opts) {
|
|
13
|
+
if (opts.password)
|
|
14
|
+
return opts.password;
|
|
15
|
+
return resolvePassword();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Make an authenticated request to the daemon.
|
|
19
|
+
*/
|
|
20
|
+
async function daemonRequest(baseUrl, method, path, password, body) {
|
|
21
|
+
const headers = {
|
|
22
|
+
'Content-Type': 'application/json',
|
|
23
|
+
'X-Master-Password': password,
|
|
24
|
+
};
|
|
25
|
+
const res = await fetch(`${baseUrl}${path}`, {
|
|
26
|
+
method,
|
|
27
|
+
headers,
|
|
28
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
29
|
+
});
|
|
30
|
+
if (!res.ok) {
|
|
31
|
+
const errBody = await res.json().catch(() => null);
|
|
32
|
+
const msg = errBody?.['message'] ?? res.statusText;
|
|
33
|
+
console.error(`Error (${res.status}): ${msg}`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
return (await res.json());
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Select wallet: use --wallet if provided, otherwise auto-detect if only one exists.
|
|
40
|
+
*/
|
|
41
|
+
async function selectWallet(baseUrl, password, walletId) {
|
|
42
|
+
const data = await daemonRequest(baseUrl, 'GET', '/v1/wallets', password);
|
|
43
|
+
if (data.items.length === 0) {
|
|
44
|
+
console.error('Error: No wallets found. Create one first with `waiaas quickstart`.');
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
if (walletId) {
|
|
48
|
+
const found = data.items.find((w) => w.id === walletId || w.name === walletId);
|
|
49
|
+
if (!found) {
|
|
50
|
+
console.error(`Error: Wallet '${walletId}' not found.`);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
return found;
|
|
54
|
+
}
|
|
55
|
+
if (data.items.length > 1) {
|
|
56
|
+
console.error('Error: Multiple wallets found. Use --wallet <id> to specify one.');
|
|
57
|
+
console.error(' Available wallets:');
|
|
58
|
+
for (const w of data.items) {
|
|
59
|
+
console.error(` ${w.id} ${w.name} (${w.chain}/${w.environment})`);
|
|
60
|
+
}
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
return data.items[0];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* `waiaas wallet info` -- Show wallet details including address and networks.
|
|
67
|
+
*/
|
|
68
|
+
export async function walletInfoCommand(opts) {
|
|
69
|
+
const password = await getMasterPassword(opts);
|
|
70
|
+
const wallet = await selectWallet(opts.baseUrl, password, opts.walletId);
|
|
71
|
+
// Fetch available networks
|
|
72
|
+
const networks = await daemonRequest(opts.baseUrl, 'GET', `/v1/wallets/${wallet.id}/networks`, password);
|
|
73
|
+
const defaultNet = networks.availableNetworks.find((n) => n.isDefault)?.network ?? wallet.network;
|
|
74
|
+
const available = networks.availableNetworks.map((n) => n.network).join(', ') || 'none';
|
|
75
|
+
console.log('');
|
|
76
|
+
console.log(`Wallet: ${wallet.name}`);
|
|
77
|
+
console.log(` ID: ${wallet.id}`);
|
|
78
|
+
console.log(` Chain: ${wallet.chain}`);
|
|
79
|
+
console.log(` Environment: ${wallet.environment}`);
|
|
80
|
+
console.log(` Address: ${wallet.publicKey}`);
|
|
81
|
+
console.log(` Default Network: ${defaultNet}`);
|
|
82
|
+
console.log(` Available: ${available}`);
|
|
83
|
+
console.log(` Status: ${wallet.status}`);
|
|
84
|
+
console.log('');
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* `waiaas wallet set-default-network <network>` -- Change default network.
|
|
88
|
+
*/
|
|
89
|
+
export async function walletSetDefaultNetworkCommand(opts, network) {
|
|
90
|
+
const password = await getMasterPassword(opts);
|
|
91
|
+
const wallet = await selectWallet(opts.baseUrl, password, opts.walletId);
|
|
92
|
+
const result = await daemonRequest(opts.baseUrl, 'PUT', `/v1/wallets/${wallet.id}/default-network`, password, { network });
|
|
93
|
+
console.log('');
|
|
94
|
+
console.log(`Default network changed for wallet '${wallet.name}':`);
|
|
95
|
+
console.log(` Previous: ${result.previousNetwork ?? '(none)'}`);
|
|
96
|
+
console.log(` Current: ${result.defaultNetwork}`);
|
|
97
|
+
console.log('');
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAIaaS CLI entry point.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* init -- Initialize WAIaaS data directory
|
|
6
|
+
* start -- Start the WAIaaS daemon
|
|
7
|
+
* stop -- Stop the WAIaaS daemon
|
|
8
|
+
* status -- Check WAIaaS daemon status
|
|
9
|
+
* quickstart -- Create Solana + EVM wallets for quick setup
|
|
10
|
+
* wallet info -- Show wallet details
|
|
11
|
+
* wallet set-default-network <net> -- Change default network
|
|
12
|
+
* owner connect -- Connect external wallet via WalletConnect QR
|
|
13
|
+
* owner disconnect -- Disconnect WalletConnect session
|
|
14
|
+
* owner status -- Show WalletConnect session status
|
|
15
|
+
* mcp setup -- Set up MCP integration for Claude Desktop
|
|
16
|
+
* upgrade -- Upgrade WAIaaS to the latest version
|
|
17
|
+
* upgrade --check -- Check for available updates
|
|
18
|
+
* upgrade --to <version> -- Upgrade to a specific version
|
|
19
|
+
* upgrade --rollback -- Restore from the latest backup
|
|
20
|
+
*
|
|
21
|
+
* All commands accept --data-dir <path> (default: ~/.waiaas/)
|
|
22
|
+
*/
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WAIaaS CLI entry point.
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* init -- Initialize WAIaaS data directory
|
|
6
|
+
* start -- Start the WAIaaS daemon
|
|
7
|
+
* stop -- Stop the WAIaaS daemon
|
|
8
|
+
* status -- Check WAIaaS daemon status
|
|
9
|
+
* quickstart -- Create Solana + EVM wallets for quick setup
|
|
10
|
+
* wallet info -- Show wallet details
|
|
11
|
+
* wallet set-default-network <net> -- Change default network
|
|
12
|
+
* owner connect -- Connect external wallet via WalletConnect QR
|
|
13
|
+
* owner disconnect -- Disconnect WalletConnect session
|
|
14
|
+
* owner status -- Show WalletConnect session status
|
|
15
|
+
* mcp setup -- Set up MCP integration for Claude Desktop
|
|
16
|
+
* upgrade -- Upgrade WAIaaS to the latest version
|
|
17
|
+
* upgrade --check -- Check for available updates
|
|
18
|
+
* upgrade --to <version> -- Upgrade to a specific version
|
|
19
|
+
* upgrade --rollback -- Restore from the latest backup
|
|
20
|
+
*
|
|
21
|
+
* All commands accept --data-dir <path> (default: ~/.waiaas/)
|
|
22
|
+
*/
|
|
23
|
+
import { Command } from 'commander';
|
|
24
|
+
import { initCommand } from './commands/init.js';
|
|
25
|
+
import { startCommand } from './commands/start.js';
|
|
26
|
+
import { stopCommand } from './commands/stop.js';
|
|
27
|
+
import { statusCommand } from './commands/status.js';
|
|
28
|
+
import { mcpSetupCommand } from './commands/mcp-setup.js';
|
|
29
|
+
import { quickstartCommand } from './commands/quickstart.js';
|
|
30
|
+
import { walletInfoCommand, walletSetDefaultNetworkCommand } from './commands/wallet.js';
|
|
31
|
+
import { ownerConnectCommand, ownerDisconnectCommand, ownerStatusCommand } from './commands/owner.js';
|
|
32
|
+
import { upgradeCommand } from './commands/upgrade.js';
|
|
33
|
+
import { resolveDataDir } from './utils/data-dir.js';
|
|
34
|
+
import { checkAndNotifyUpdate } from './utils/update-notify.js';
|
|
35
|
+
const program = new Command();
|
|
36
|
+
program
|
|
37
|
+
.name('waiaas')
|
|
38
|
+
.description('WAIaaS - AI Agent Wallet-as-a-Service')
|
|
39
|
+
.version('0.0.0');
|
|
40
|
+
program
|
|
41
|
+
.command('init')
|
|
42
|
+
.description('Initialize WAIaaS data directory')
|
|
43
|
+
.option('--data-dir <path>', 'Data directory path')
|
|
44
|
+
.action(async (opts) => {
|
|
45
|
+
const dataDir = resolveDataDir(opts);
|
|
46
|
+
await initCommand(dataDir);
|
|
47
|
+
});
|
|
48
|
+
program
|
|
49
|
+
.command('start')
|
|
50
|
+
.description('Start the WAIaaS daemon')
|
|
51
|
+
.option('--data-dir <path>', 'Data directory path')
|
|
52
|
+
.action(async (opts) => {
|
|
53
|
+
const dataDir = resolveDataDir(opts);
|
|
54
|
+
await startCommand(dataDir);
|
|
55
|
+
});
|
|
56
|
+
program
|
|
57
|
+
.command('stop')
|
|
58
|
+
.description('Stop the WAIaaS daemon')
|
|
59
|
+
.option('--data-dir <path>', 'Data directory path')
|
|
60
|
+
.action(async (opts) => {
|
|
61
|
+
const dataDir = resolveDataDir(opts);
|
|
62
|
+
await stopCommand(dataDir);
|
|
63
|
+
});
|
|
64
|
+
program
|
|
65
|
+
.command('status')
|
|
66
|
+
.description('Check WAIaaS daemon status')
|
|
67
|
+
.option('--data-dir <path>', 'Data directory path')
|
|
68
|
+
.action(async (opts) => {
|
|
69
|
+
const dataDir = resolveDataDir(opts);
|
|
70
|
+
await statusCommand(dataDir);
|
|
71
|
+
});
|
|
72
|
+
program
|
|
73
|
+
.command('quickstart')
|
|
74
|
+
.description('Create Solana + EVM wallets for quick setup')
|
|
75
|
+
.option('--data-dir <path>', 'Data directory path')
|
|
76
|
+
.option('--base-url <url>', 'Daemon base URL', 'http://127.0.0.1:3100')
|
|
77
|
+
.option('--mode <mode>', 'Environment mode: testnet or mainnet', 'testnet')
|
|
78
|
+
.option('--expires-in <seconds>', 'Session expiration in seconds', '86400')
|
|
79
|
+
.option('--password <password>', 'Master password')
|
|
80
|
+
.action(async (opts) => {
|
|
81
|
+
const dataDir = resolveDataDir(opts);
|
|
82
|
+
const mode = opts.mode ?? 'testnet';
|
|
83
|
+
if (mode !== 'testnet' && mode !== 'mainnet') {
|
|
84
|
+
console.error("Error: --mode must be 'testnet' or 'mainnet'");
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
await quickstartCommand({
|
|
88
|
+
dataDir,
|
|
89
|
+
baseUrl: opts.baseUrl,
|
|
90
|
+
mode: mode,
|
|
91
|
+
expiresIn: parseInt(opts.expiresIn ?? '86400', 10),
|
|
92
|
+
masterPassword: opts.password,
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
// Wallet subcommand group
|
|
96
|
+
const wallet = program.command('wallet').description('Wallet management commands');
|
|
97
|
+
wallet
|
|
98
|
+
.command('info')
|
|
99
|
+
.description('Show wallet details')
|
|
100
|
+
.option('--base-url <url>', 'Daemon base URL', 'http://127.0.0.1:3100')
|
|
101
|
+
.option('--wallet <id>', 'Wallet ID or name (auto-detected if only one)')
|
|
102
|
+
.option('--password <password>', 'Master password')
|
|
103
|
+
.action(async (opts) => {
|
|
104
|
+
await walletInfoCommand({
|
|
105
|
+
baseUrl: opts.baseUrl ?? 'http://127.0.0.1:3100',
|
|
106
|
+
password: opts.password,
|
|
107
|
+
walletId: opts.wallet,
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
wallet
|
|
111
|
+
.command('set-default-network')
|
|
112
|
+
.description('Change wallet default network')
|
|
113
|
+
.argument('<network>', 'Network to set as default (e.g., polygon-amoy)')
|
|
114
|
+
.option('--base-url <url>', 'Daemon base URL', 'http://127.0.0.1:3100')
|
|
115
|
+
.option('--wallet <id>', 'Wallet ID or name (auto-detected if only one)')
|
|
116
|
+
.option('--password <password>', 'Master password')
|
|
117
|
+
.action(async (network, opts) => {
|
|
118
|
+
await walletSetDefaultNetworkCommand({
|
|
119
|
+
baseUrl: opts.baseUrl ?? 'http://127.0.0.1:3100',
|
|
120
|
+
password: opts.password,
|
|
121
|
+
walletId: opts.wallet,
|
|
122
|
+
}, network);
|
|
123
|
+
});
|
|
124
|
+
// Owner subcommand group
|
|
125
|
+
const owner = program.command('owner').description('Owner wallet connection commands');
|
|
126
|
+
owner
|
|
127
|
+
.command('connect')
|
|
128
|
+
.description('Connect external wallet via WalletConnect QR code')
|
|
129
|
+
.option('--base-url <url>', 'Daemon base URL', 'http://127.0.0.1:3100')
|
|
130
|
+
.option('--wallet <id>', 'Wallet ID or name (auto-detected if only one)')
|
|
131
|
+
.option('--password <password>', 'Master password')
|
|
132
|
+
.option('--poll', 'Wait for wallet to connect')
|
|
133
|
+
.action(async (opts) => {
|
|
134
|
+
await ownerConnectCommand({
|
|
135
|
+
baseUrl: opts.baseUrl ?? 'http://127.0.0.1:3100',
|
|
136
|
+
password: opts.password,
|
|
137
|
+
walletId: opts.wallet,
|
|
138
|
+
poll: opts.poll ?? false,
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
owner
|
|
142
|
+
.command('disconnect')
|
|
143
|
+
.description('Disconnect WalletConnect session')
|
|
144
|
+
.option('--base-url <url>', 'Daemon base URL', 'http://127.0.0.1:3100')
|
|
145
|
+
.option('--wallet <id>', 'Wallet ID or name (auto-detected if only one)')
|
|
146
|
+
.option('--password <password>', 'Master password')
|
|
147
|
+
.action(async (opts) => {
|
|
148
|
+
await ownerDisconnectCommand({
|
|
149
|
+
baseUrl: opts.baseUrl ?? 'http://127.0.0.1:3100',
|
|
150
|
+
password: opts.password,
|
|
151
|
+
walletId: opts.wallet,
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
owner
|
|
155
|
+
.command('status')
|
|
156
|
+
.description('Show WalletConnect session status')
|
|
157
|
+
.option('--base-url <url>', 'Daemon base URL', 'http://127.0.0.1:3100')
|
|
158
|
+
.option('--wallet <id>', 'Wallet ID or name (auto-detected if only one)')
|
|
159
|
+
.option('--password <password>', 'Master password')
|
|
160
|
+
.action(async (opts) => {
|
|
161
|
+
await ownerStatusCommand({
|
|
162
|
+
baseUrl: opts.baseUrl ?? 'http://127.0.0.1:3100',
|
|
163
|
+
password: opts.password,
|
|
164
|
+
walletId: opts.wallet,
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
// MCP subcommand group
|
|
168
|
+
const mcp = program.command('mcp').description('MCP integration commands');
|
|
169
|
+
mcp
|
|
170
|
+
.command('setup')
|
|
171
|
+
.description('Set up MCP integration for Claude Desktop')
|
|
172
|
+
.option('--data-dir <path>', 'Data directory path')
|
|
173
|
+
.option('--base-url <url>', 'Daemon base URL', 'http://127.0.0.1:3100')
|
|
174
|
+
.option('--wallet <id>', 'Wallet ID (auto-detected if only one)')
|
|
175
|
+
.option('--all', 'Set up all wallets at once')
|
|
176
|
+
.option('--expires-in <seconds>', 'Session expiration in seconds', '86400')
|
|
177
|
+
.option('--password <password>', 'Master password')
|
|
178
|
+
.action(async (opts) => {
|
|
179
|
+
const dataDir = resolveDataDir(opts);
|
|
180
|
+
await mcpSetupCommand({
|
|
181
|
+
dataDir,
|
|
182
|
+
baseUrl: opts.baseUrl,
|
|
183
|
+
wallet: opts.wallet,
|
|
184
|
+
all: opts.all ?? false,
|
|
185
|
+
expiresIn: parseInt(opts.expiresIn ?? '86400', 10),
|
|
186
|
+
masterPassword: opts.password,
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
program
|
|
190
|
+
.command('upgrade')
|
|
191
|
+
.description('Upgrade WAIaaS to the latest version')
|
|
192
|
+
.option('--data-dir <path>', 'Data directory path')
|
|
193
|
+
.option('--check', 'Check for updates without upgrading')
|
|
194
|
+
.option('--to <version>', 'Upgrade to a specific version')
|
|
195
|
+
.option('--rollback', 'Restore from the latest backup')
|
|
196
|
+
.option('--no-start', 'Skip daemon restart after upgrade')
|
|
197
|
+
.action(async (opts) => {
|
|
198
|
+
const dataDir = resolveDataDir(opts);
|
|
199
|
+
await upgradeCommand({
|
|
200
|
+
dataDir,
|
|
201
|
+
check: opts.check,
|
|
202
|
+
to: opts.to,
|
|
203
|
+
rollback: opts.rollback,
|
|
204
|
+
noStart: opts.start === false, // commander: --no-start → start=false
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
// Pre-parse --quiet and --data-dir from argv (program.opts() is empty before parseAsync)
|
|
208
|
+
const hasQuiet = process.argv.includes('--quiet');
|
|
209
|
+
const dataDirIdx = process.argv.indexOf('--data-dir');
|
|
210
|
+
const dataDirArg = dataDirIdx >= 0 ? process.argv[dataDirIdx + 1] : undefined;
|
|
211
|
+
const effectiveDataDir = resolveDataDir({ dataDir: dataDirArg });
|
|
212
|
+
// Fire-and-forget: do not await, do not block CLI startup
|
|
213
|
+
checkAndNotifyUpdate({ dataDir: effectiveDataDir, quiet: hasQuiet }).catch(() => { });
|
|
214
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
215
|
+
console.error(err.message);
|
|
216
|
+
process.exit(1);
|
|
217
|
+
});
|
|
218
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the WAIaaS data directory.
|
|
3
|
+
*
|
|
4
|
+
* Priority:
|
|
5
|
+
* 1. --data-dir CLI option
|
|
6
|
+
* 2. WAIAAS_DATA_DIR environment variable
|
|
7
|
+
* 3. Default: ~/.waiaas/
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveDataDir(opts?: {
|
|
10
|
+
dataDir?: string;
|
|
11
|
+
}): string;
|
|
12
|
+
//# sourceMappingURL=data-dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-dir.d.ts","sourceRoot":"","sources":["../../src/utils/data-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAIlE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the WAIaaS data directory.
|
|
3
|
+
*
|
|
4
|
+
* Priority:
|
|
5
|
+
* 1. --data-dir CLI option
|
|
6
|
+
* 2. WAIAAS_DATA_DIR environment variable
|
|
7
|
+
* 3. Default: ~/.waiaas/
|
|
8
|
+
*/
|
|
9
|
+
import { homedir } from 'node:os';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
export function resolveDataDir(opts) {
|
|
12
|
+
if (opts?.dataDir)
|
|
13
|
+
return opts.dataDir;
|
|
14
|
+
if (process.env['WAIAAS_DATA_DIR'])
|
|
15
|
+
return process.env['WAIAAS_DATA_DIR'];
|
|
16
|
+
return join(homedir(), '.waiaas');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-dir.js","sourceRoot":"","sources":["../../src/utils/data-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,cAAc,CAAC,IAA2B;IACxD,IAAI,IAAI,EAAE,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the master password for the WAIaaS daemon.
|
|
3
|
+
*
|
|
4
|
+
* Priority:
|
|
5
|
+
* 1. WAIAAS_MASTER_PASSWORD environment variable
|
|
6
|
+
* 2. WAIAAS_MASTER_PASSWORD_FILE (read file content, trim)
|
|
7
|
+
* 3. Interactive prompt (stdin)
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolvePassword(): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=password.d.ts.map
|