upclaw-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -0
- package/dist/commands/info.d.ts +2 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +44 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/install.d.ts +4 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +100 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +4 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +43 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +5 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +111 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/publish.d.ts +10 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +163 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/search.d.ts +9 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +47 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +22 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +13 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/api.d.ts +5 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +31 -0
- package/dist/utils/api.js.map +1 -0
- package/package.json +49 -0
- package/src/commands/info.ts +42 -0
- package/src/commands/install.ts +73 -0
- package/src/commands/list.ts +47 -0
- package/src/commands/login.ts +80 -0
- package/src/commands/publish.ts +152 -0
- package/src/commands/search.ts +56 -0
- package/src/commands/whoami.ts +18 -0
- package/src/config.ts +14 -0
- package/src/index.ts +67 -0
- package/src/utils/api.ts +26 -0
- package/tsconfig.json +21 -0
package/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# @upclaw/cli
|
|
2
|
+
|
|
3
|
+
Command-line interface for UpClaw marketplace - buy and sell OpenClaw agent skills.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @upclaw/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Login with your wallet
|
|
15
|
+
upclaw login
|
|
16
|
+
|
|
17
|
+
# Search for skills
|
|
18
|
+
upclaw search "web scraping"
|
|
19
|
+
|
|
20
|
+
# Install a skill
|
|
21
|
+
upclaw install skill-name
|
|
22
|
+
|
|
23
|
+
# Publish your own skill
|
|
24
|
+
cd my-skill-directory
|
|
25
|
+
upclaw publish
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Commands
|
|
29
|
+
|
|
30
|
+
### `upclaw login`
|
|
31
|
+
|
|
32
|
+
Authenticate with your wallet private key.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Interactive prompt
|
|
36
|
+
upclaw login
|
|
37
|
+
|
|
38
|
+
# With private key
|
|
39
|
+
upclaw login --private-key 0x...
|
|
40
|
+
|
|
41
|
+
# With keystore file
|
|
42
|
+
upclaw login --keystore ./wallet.json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### `upclaw whoami`
|
|
46
|
+
|
|
47
|
+
Show current authentication status.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
upclaw whoami
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### `upclaw search <query>`
|
|
54
|
+
|
|
55
|
+
Search the marketplace for skills.
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Basic search
|
|
59
|
+
upclaw search "data analysis"
|
|
60
|
+
|
|
61
|
+
# With filters
|
|
62
|
+
upclaw search "automation" --category automation --max-price 50
|
|
63
|
+
|
|
64
|
+
# Limit results
|
|
65
|
+
upclaw search "web" --limit 10
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### `upclaw info <skill-name>`
|
|
69
|
+
|
|
70
|
+
View detailed information about a skill.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
upclaw info web-scraper-pro
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### `upclaw install <skill-id>`
|
|
77
|
+
|
|
78
|
+
Purchase and install a skill.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Install to default directory (~/.upclaw/skills)
|
|
82
|
+
upclaw install abc123
|
|
83
|
+
|
|
84
|
+
# Install to custom directory
|
|
85
|
+
upclaw install abc123 --output ./my-skills
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### `upclaw list`
|
|
89
|
+
|
|
90
|
+
List your owned skills.
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Table format
|
|
94
|
+
upclaw list
|
|
95
|
+
|
|
96
|
+
# JSON format
|
|
97
|
+
upclaw list --format json
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### `upclaw publish`
|
|
101
|
+
|
|
102
|
+
Publish current directory as a skill.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Interactive mode
|
|
106
|
+
upclaw publish
|
|
107
|
+
|
|
108
|
+
# With options
|
|
109
|
+
upclaw publish \
|
|
110
|
+
--name "My Awesome Skill" \
|
|
111
|
+
--description "Does amazing things" \
|
|
112
|
+
--category automation \
|
|
113
|
+
--price 25.00 \
|
|
114
|
+
--version 1.0.0
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Skill Structure
|
|
118
|
+
|
|
119
|
+
Your skill directory must include:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
my-skill/
|
|
123
|
+
├── SKILL.md # Documentation (required)
|
|
124
|
+
├── package.json # Dependencies (required)
|
|
125
|
+
├── src/
|
|
126
|
+
│ └── index.js # Main code
|
|
127
|
+
├── tests/
|
|
128
|
+
│ └── test.spec.js
|
|
129
|
+
└── README.md # Overview
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Configuration
|
|
133
|
+
|
|
134
|
+
The CLI stores configuration in `~/.config/upclaw-cli/config.json`
|
|
135
|
+
|
|
136
|
+
To use a custom API endpoint:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
export UPCLAW_API_URL=http://localhost:3000/api
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Agent Integration
|
|
143
|
+
|
|
144
|
+
Use the CLI in your agent scripts:
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
import { spawn } from 'child_process';
|
|
148
|
+
|
|
149
|
+
async function installSkill(skillName) {
|
|
150
|
+
return new Promise((resolve, reject) => {
|
|
151
|
+
const proc = spawn('upclaw', ['install', skillName]);
|
|
152
|
+
proc.on('close', (code) => {
|
|
153
|
+
if (code === 0) resolve();
|
|
154
|
+
else reject();
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Install required skill
|
|
160
|
+
await installSkill('data-processor-v2');
|
|
161
|
+
|
|
162
|
+
// Load the skill
|
|
163
|
+
import(process.env.HOME + '/.upclaw/skills/data-processor-v2');
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Troubleshooting
|
|
167
|
+
|
|
168
|
+
### "Not authenticated"
|
|
169
|
+
|
|
170
|
+
Run `upclaw login` to authenticate first.
|
|
171
|
+
|
|
172
|
+
### "Skill not found"
|
|
173
|
+
|
|
174
|
+
Use `upclaw search` to find the correct skill ID.
|
|
175
|
+
|
|
176
|
+
### "Access denied"
|
|
177
|
+
|
|
178
|
+
You must purchase the skill before installing it.
|
|
179
|
+
|
|
180
|
+
## Support
|
|
181
|
+
|
|
182
|
+
- Documentation: https://upclaw.ai/docs
|
|
183
|
+
- Issues: https://github.com/upclaw/upclaw/issues
|
|
184
|
+
- Twitter: https://x.com/up_claw
|
|
185
|
+
|
|
186
|
+
## License
|
|
187
|
+
|
|
188
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,iBAqClD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.infoCommand = infoCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const api_1 = require("../utils/api");
|
|
10
|
+
async function infoCommand(skillName) {
|
|
11
|
+
const spinner = (0, ora_1.default)("Fetching skill details...").start();
|
|
12
|
+
try {
|
|
13
|
+
const api = (0, api_1.createAPIClient)();
|
|
14
|
+
// First search for the skill by name
|
|
15
|
+
const searchResponse = await api.get(`/cli/skills/search?q=${encodeURIComponent(skillName)}&limit=1`);
|
|
16
|
+
const skills = searchResponse.data.skills;
|
|
17
|
+
if (skills.length === 0) {
|
|
18
|
+
spinner.fail(chalk_1.default.red(`Skill "${skillName}" not found`));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const skill = skills[0];
|
|
22
|
+
spinner.stop();
|
|
23
|
+
console.log(chalk_1.default.bold.cyan(`\n📦 ${skill.name}\n`));
|
|
24
|
+
console.log(skill.description);
|
|
25
|
+
console.log();
|
|
26
|
+
console.log(`${chalk_1.default.gray("Category:")} ${skill.category}`);
|
|
27
|
+
console.log(`${chalk_1.default.gray("Version:")} ${skill.version}`);
|
|
28
|
+
console.log(`${chalk_1.default.gray("Price:")} ${chalk_1.default.green("$" + skill.price_usdc + " USDC")}`);
|
|
29
|
+
console.log(`${chalk_1.default.gray("Downloads:")} ${skill.downloads}`);
|
|
30
|
+
console.log(`${chalk_1.default.gray("Stars:")} ${"⭐".repeat(Math.min(skill.stars || 0, 5))}`);
|
|
31
|
+
console.log(`${chalk_1.default.gray("Seller:")} ${skill.seller_address}`);
|
|
32
|
+
console.log(`${chalk_1.default.gray("IPFS CID:")} ${skill.ipfs_cid}`);
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(chalk_1.default.bold("Installation:"));
|
|
35
|
+
console.log(` ${chalk_1.default.cyan(`upclaw install ${skill.id}`)}`);
|
|
36
|
+
console.log();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
spinner.fail(chalk_1.default.red("Failed to fetch skill details"));
|
|
40
|
+
console.error(chalk_1.default.red(`Error: ${error.message}\n`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAQA,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,iBAgEhF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.installCommand = installCommand;
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const ora_1 = __importDefault(require("ora"));
|
|
42
|
+
const fs = __importStar(require("fs-extra"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
const axios_1 = __importDefault(require("axios"));
|
|
45
|
+
const extract_zip_1 = __importDefault(require("extract-zip"));
|
|
46
|
+
const api_1 = require("../utils/api");
|
|
47
|
+
async function installCommand(skillId, options) {
|
|
48
|
+
(0, api_1.requireAuth)();
|
|
49
|
+
const spinner = (0, ora_1.default)("Installing skill...").start();
|
|
50
|
+
try {
|
|
51
|
+
const api = (0, api_1.createAPIClient)();
|
|
52
|
+
// Request download
|
|
53
|
+
spinner.text = "Verifying access...";
|
|
54
|
+
const response = await api.post("/cli/skills/install", { skillId });
|
|
55
|
+
const { skill } = response.data;
|
|
56
|
+
spinner.text = "Downloading from IPFS...";
|
|
57
|
+
// Download the skill bundle
|
|
58
|
+
const downloadResponse = await axios_1.default.get(skill.download_url, {
|
|
59
|
+
responseType: "arraybuffer",
|
|
60
|
+
});
|
|
61
|
+
// Create installation directory
|
|
62
|
+
const installDir = path.join(options.output, skill.name);
|
|
63
|
+
await fs.ensureDir(installDir);
|
|
64
|
+
// Save downloaded file
|
|
65
|
+
const tempFile = path.join(installDir, "download.zip");
|
|
66
|
+
await fs.writeFile(tempFile, downloadResponse.data);
|
|
67
|
+
spinner.text = "Extracting files...";
|
|
68
|
+
// Extract if it's a zip
|
|
69
|
+
try {
|
|
70
|
+
await (0, extract_zip_1.default)(tempFile, { dir: installDir });
|
|
71
|
+
await fs.remove(tempFile); // Clean up zip file
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// If not a zip, just rename the file
|
|
75
|
+
const targetFile = path.join(installDir, "skill.tar.gz");
|
|
76
|
+
await fs.move(tempFile, targetFile);
|
|
77
|
+
}
|
|
78
|
+
spinner.succeed(chalk_1.default.green(`✓ Successfully installed ${chalk_1.default.bold(skill.name)} v${skill.version} to ${installDir}`));
|
|
79
|
+
// Show next steps
|
|
80
|
+
console.log(chalk_1.default.bold("\n📚 Next Steps:\n"));
|
|
81
|
+
console.log(` 1. Navigate to: ${chalk_1.default.cyan(installDir)}`);
|
|
82
|
+
console.log(` 2. Read SKILL.md for usage instructions`);
|
|
83
|
+
console.log(` 3. Install dependencies: ${chalk_1.default.cyan("npm install")}`);
|
|
84
|
+
console.log(` 4. Integrate into your agent\n`);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
spinner.fail(chalk_1.default.red("Installation failed"));
|
|
88
|
+
if (error.response?.status === 403) {
|
|
89
|
+
console.error(chalk_1.default.yellow("\n⚠️ You don't own this skill. Purchase it first at https://upclaw.ai\n"));
|
|
90
|
+
}
|
|
91
|
+
else if (error.response?.data?.error) {
|
|
92
|
+
console.error(chalk_1.default.red(`\nError: ${error.response.data.error}\n`));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.error(chalk_1.default.red(`\nError: ${error.message}\n`));
|
|
96
|
+
}
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,iBA0C5D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.listCommand = listCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const api_1 = require("../utils/api");
|
|
10
|
+
async function listCommand(options) {
|
|
11
|
+
(0, api_1.requireAuth)();
|
|
12
|
+
const spinner = (0, ora_1.default)("Fetching your skills...").start();
|
|
13
|
+
try {
|
|
14
|
+
const api = (0, api_1.createAPIClient)();
|
|
15
|
+
const response = await api.get("/cli/skills/owned");
|
|
16
|
+
const { skills, count } = response.data;
|
|
17
|
+
spinner.stop();
|
|
18
|
+
if (skills.length === 0) {
|
|
19
|
+
console.log(chalk_1.default.yellow("\n⚠️ You don't own any skills yet.\n"));
|
|
20
|
+
console.log(chalk_1.default.gray("Browse the marketplace: upclaw search <query>\n"));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (options.format === "json") {
|
|
24
|
+
console.log(JSON.stringify(skills, null, 2));
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Table format
|
|
28
|
+
console.log(chalk_1.default.bold(`\n📚 Your Skills (${count} total)\n`));
|
|
29
|
+
skills.forEach((skill) => {
|
|
30
|
+
console.log(chalk_1.default.bold.cyan(`• ${skill.name} v${skill.version}`));
|
|
31
|
+
console.log(` ${skill.description}`);
|
|
32
|
+
console.log(` ${chalk_1.default.gray("Category:")} ${skill.category} ${chalk_1.default.gray("Price:")} ${chalk_1.default.green("$" + skill.price_usdc)}`);
|
|
33
|
+
console.log(` ${chalk_1.default.gray("Purchased:")} ${new Date(skill.purchased_at).toLocaleDateString()}`);
|
|
34
|
+
console.log(` ${chalk_1.default.gray("Install:")} upclaw install ${skill.id}\n`);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
spinner.fail(chalk_1.default.red("Failed to fetch skills"));
|
|
39
|
+
console.error(chalk_1.default.red(`Error: ${error.message}\n`));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;;;;AAIA,kCA0CC;AA9CD,kDAA0B;AAC1B,8CAAsB;AACtB,sCAA4D;AAErD,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,IAAA,iBAAW,GAAE,CAAC;IAEd,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,qBAAe,GAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACpD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;QAExC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,eAAe;QACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,WAAW,CAAC,CAAC,CAAC;QAE/D,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CACT,KAAK,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,eAAK,CAAC,KAAK,CACpF,GAAG,GAAG,KAAK,CAAC,UAAU,CACvB,EAAE,CACJ,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAClG,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAUA,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,iBAqErF"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.loginCommand = loginCommand;
|
|
40
|
+
const accounts_1 = require("viem/accounts");
|
|
41
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const ora_1 = __importDefault(require("ora"));
|
|
44
|
+
const config_1 = require("../config");
|
|
45
|
+
const api_1 = require("../utils/api");
|
|
46
|
+
const fs = __importStar(require("fs-extra"));
|
|
47
|
+
async function loginCommand(options) {
|
|
48
|
+
let privateKey;
|
|
49
|
+
// Get private key from various sources
|
|
50
|
+
if (options.privateKey) {
|
|
51
|
+
privateKey = options.privateKey;
|
|
52
|
+
}
|
|
53
|
+
else if (options.keystore) {
|
|
54
|
+
// Load from keystore file
|
|
55
|
+
const keystoreData = await fs.readJSON(options.keystore);
|
|
56
|
+
privateKey = keystoreData.privateKey;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Prompt for private key
|
|
60
|
+
const answers = await inquirer_1.default.prompt([
|
|
61
|
+
{
|
|
62
|
+
type: "password",
|
|
63
|
+
name: "privateKey",
|
|
64
|
+
message: "Enter your wallet private key (0x...):",
|
|
65
|
+
validate: (input) => {
|
|
66
|
+
if (!input.startsWith("0x") || input.length !== 66) {
|
|
67
|
+
return "Invalid private key format. Must be 0x followed by 64 hex characters.";
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
]);
|
|
73
|
+
privateKey = answers.privateKey;
|
|
74
|
+
}
|
|
75
|
+
const spinner = (0, ora_1.default)("Authenticating...").start();
|
|
76
|
+
try {
|
|
77
|
+
// Create account from private key
|
|
78
|
+
const account = (0, accounts_1.privateKeyToAccount)(privateKey);
|
|
79
|
+
const address = account.address;
|
|
80
|
+
// Sign a message to prove ownership
|
|
81
|
+
const message = `Sign in to UpClaw CLI\nTimestamp: ${Date.now()}`;
|
|
82
|
+
const signature = await account.signMessage({ message });
|
|
83
|
+
// Authenticate with API
|
|
84
|
+
const api = (0, api_1.createAPIClient)();
|
|
85
|
+
const response = await api.post("/cli/auth", {
|
|
86
|
+
address,
|
|
87
|
+
signature,
|
|
88
|
+
message,
|
|
89
|
+
});
|
|
90
|
+
const { token, user } = response.data;
|
|
91
|
+
// Store credentials
|
|
92
|
+
config_1.config.set("token", token);
|
|
93
|
+
config_1.config.set("address", user.address);
|
|
94
|
+
config_1.config.set("username", user.username);
|
|
95
|
+
spinner.succeed(chalk_1.default.green(`✓ Successfully logged in as ${chalk_1.default.bold(user.username)} (${user.address})`));
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
spinner.fail(chalk_1.default.red("Authentication failed"));
|
|
99
|
+
if (error.response?.status === 404) {
|
|
100
|
+
console.error(chalk_1.default.yellow("\n⚠️ User not found. Please register at https://upclaw.ai first."));
|
|
101
|
+
}
|
|
102
|
+
else if (error.response?.data?.error) {
|
|
103
|
+
console.error(chalk_1.default.red(`\nError: ${error.response.data.error}`));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
console.error(chalk_1.default.red(`\nError: ${error.message}`));
|
|
107
|
+
}
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface PublishOptions {
|
|
2
|
+
name?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
category?: string;
|
|
5
|
+
price?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function publishCommand(options: PublishOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,iBAsI3D"}
|