create-polyclaw-agent 0.1.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/dist/api.d.ts +15 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +39 -0
- package/dist/api.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/scaffold.d.ts +16 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +543 -0
- package/dist/scaffold.js.map +1 -0
- package/package.json +25 -0
- package/src/api.ts +61 -0
- package/src/index.ts +211 -0
- package/src/scaffold.ts +570 -0
- package/tsconfig.json +11 -0
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API client for the Polyclaw registration flow.
|
|
3
|
+
* Calls the Polyclaw API to generate names and register agents.
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateName(): Promise<string>;
|
|
6
|
+
export interface RegisterResult {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
apiSecret: string;
|
|
9
|
+
linkToken: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function registerAgent(name: string, options?: {
|
|
12
|
+
ownerName?: string;
|
|
13
|
+
}): Promise<RegisterResult>;
|
|
14
|
+
export declare function getLinkUrl(linkToken: string): string;
|
|
15
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAUpD;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAmB3G;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGpD"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API client for the Polyclaw registration flow.
|
|
3
|
+
* Calls the Polyclaw API to generate names and register agents.
|
|
4
|
+
*/
|
|
5
|
+
const DEFAULT_API_URL = 'https://api.polyclaw.co';
|
|
6
|
+
function getApiUrl() {
|
|
7
|
+
return process.env.POLYCLAW_API_URL || DEFAULT_API_URL;
|
|
8
|
+
}
|
|
9
|
+
export async function generateName() {
|
|
10
|
+
const url = `${getApiUrl()}/api/agents/generate-name`;
|
|
11
|
+
const res = await fetch(url);
|
|
12
|
+
const json = (await res.json());
|
|
13
|
+
if (!json.success || !json.data) {
|
|
14
|
+
throw new Error(json.message || json.error || 'Failed to generate name');
|
|
15
|
+
}
|
|
16
|
+
return json.data.name;
|
|
17
|
+
}
|
|
18
|
+
export async function registerAgent(name, options) {
|
|
19
|
+
const url = `${getApiUrl()}/api/agents/register`;
|
|
20
|
+
const body = { name };
|
|
21
|
+
if (options?.ownerName) {
|
|
22
|
+
body.ownerName = options.ownerName;
|
|
23
|
+
}
|
|
24
|
+
const res = await fetch(url, {
|
|
25
|
+
method: 'POST',
|
|
26
|
+
headers: { 'Content-Type': 'application/json' },
|
|
27
|
+
body: JSON.stringify(body),
|
|
28
|
+
});
|
|
29
|
+
const json = (await res.json());
|
|
30
|
+
if (!json.success || !json.data) {
|
|
31
|
+
throw new Error(json.message || json.error || 'Registration failed');
|
|
32
|
+
}
|
|
33
|
+
return json.data;
|
|
34
|
+
}
|
|
35
|
+
export function getLinkUrl(linkToken) {
|
|
36
|
+
const webUrl = process.env.POLYCLAW_WEB_URL || 'https://polyclaw.co';
|
|
37
|
+
return `${webUrl}/link/${linkToken}`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAElD,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,eAAe,CAAC;AACzD,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,GAAG,GAAG,GAAG,SAAS,EAAE,2BAA2B,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkC,CAAC;IAEjE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,OAAgC;IAChF,MAAM,GAAG,GAAG,GAAG,SAAS,EAAE,sBAAsB,CAAC;IACjD,MAAM,IAAI,GAA2B,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;IAE/D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,qBAAqB,CAAC;IACrE,OAAO,GAAG,MAAM,SAAS,SAAS,EAAE,CAAC;AACvC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* create-polyclaw-agent
|
|
4
|
+
*
|
|
5
|
+
* Interactive CLI to set up a Polyclaw AI trading agent.
|
|
6
|
+
* Generates a sea creature name, registers the agent, and scaffolds a bot project.
|
|
7
|
+
*/
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import prompts from 'prompts';
|
|
10
|
+
import { generateName, registerAgent, getLinkUrl } from './api.js';
|
|
11
|
+
import { scaffoldProject, nameToDir } from './scaffold.js';
|
|
12
|
+
const LOBSTER = '\u{1F99E}';
|
|
13
|
+
async function main() {
|
|
14
|
+
console.log();
|
|
15
|
+
console.log(chalk.bold(' Welcome to Polyclaw!'));
|
|
16
|
+
console.log();
|
|
17
|
+
// Step 1: Generate and pick a name
|
|
18
|
+
let agentName;
|
|
19
|
+
try {
|
|
20
|
+
agentName = await pickName();
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
console.log();
|
|
24
|
+
console.log(chalk.red(' Failed to connect to Polyclaw API.'));
|
|
25
|
+
console.log(chalk.dim(' Make sure you have an internet connection and try again.'));
|
|
26
|
+
console.log();
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
if (!agentName) {
|
|
30
|
+
console.log();
|
|
31
|
+
console.log(chalk.dim(' Cancelled.'));
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
// Step 2: Ask for owner name (optional)
|
|
35
|
+
console.log();
|
|
36
|
+
const ownerResponse = await prompts({
|
|
37
|
+
type: 'text',
|
|
38
|
+
name: 'ownerName',
|
|
39
|
+
message: 'Your name (shown on leaderboard, press Enter to skip)',
|
|
40
|
+
});
|
|
41
|
+
const ownerName = ownerResponse.ownerName?.trim() || undefined;
|
|
42
|
+
// Step 3: Register the agent
|
|
43
|
+
console.log();
|
|
44
|
+
process.stdout.write(chalk.dim(` Registering ${chalk.white(agentName)}... `));
|
|
45
|
+
let credentials;
|
|
46
|
+
try {
|
|
47
|
+
credentials = await registerAgent(agentName, { ownerName });
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
console.log(chalk.red('failed'));
|
|
51
|
+
console.log();
|
|
52
|
+
console.log(chalk.red(` Error: ${err.message}`));
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
console.log(chalk.green('done'));
|
|
56
|
+
// Step 3: Choose language
|
|
57
|
+
console.log();
|
|
58
|
+
const langResponse = await prompts({
|
|
59
|
+
type: 'select',
|
|
60
|
+
name: 'language',
|
|
61
|
+
message: 'Choose your language',
|
|
62
|
+
choices: [
|
|
63
|
+
{ title: 'Python', value: 'python' },
|
|
64
|
+
{ title: 'TypeScript', value: 'typescript' },
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
if (!langResponse.language) {
|
|
68
|
+
console.log(chalk.dim(' Cancelled.'));
|
|
69
|
+
process.exit(0);
|
|
70
|
+
}
|
|
71
|
+
const language = langResponse.language;
|
|
72
|
+
// Step 4: Ask for AI provider
|
|
73
|
+
console.log();
|
|
74
|
+
const aiResponse = await prompts({
|
|
75
|
+
type: 'select',
|
|
76
|
+
name: 'aiProvider',
|
|
77
|
+
message: 'Which AI powers your agent?',
|
|
78
|
+
choices: [
|
|
79
|
+
{ title: 'Anthropic (Claude)', value: 'anthropic' },
|
|
80
|
+
{ title: 'OpenAI (GPT)', value: 'openai' },
|
|
81
|
+
{ title: 'None / I\'ll add my own later', value: 'none' },
|
|
82
|
+
],
|
|
83
|
+
});
|
|
84
|
+
if (!aiResponse.aiProvider) {
|
|
85
|
+
console.log(chalk.dim(' Cancelled.'));
|
|
86
|
+
process.exit(0);
|
|
87
|
+
}
|
|
88
|
+
const aiProvider = aiResponse.aiProvider;
|
|
89
|
+
let aiApiKey;
|
|
90
|
+
if (aiProvider !== 'none') {
|
|
91
|
+
const providerName = aiProvider === 'anthropic' ? 'Anthropic' : 'OpenAI';
|
|
92
|
+
const keyResponse = await prompts({
|
|
93
|
+
type: 'text',
|
|
94
|
+
name: 'apiKey',
|
|
95
|
+
message: `${providerName} API key`,
|
|
96
|
+
});
|
|
97
|
+
aiApiKey = keyResponse.apiKey?.trim() || undefined;
|
|
98
|
+
if (!aiApiKey) {
|
|
99
|
+
console.log(chalk.dim(` No key provided. You can add it to .env later.`));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Step 5: Scaffold the project
|
|
103
|
+
const dirName = nameToDir(agentName);
|
|
104
|
+
console.log();
|
|
105
|
+
console.log(chalk.dim(` Creating ${chalk.white(dirName)}/`));
|
|
106
|
+
const projectDir = scaffoldProject({
|
|
107
|
+
name: agentName,
|
|
108
|
+
dirName,
|
|
109
|
+
apiKey: credentials.apiKey,
|
|
110
|
+
apiSecret: credentials.apiSecret,
|
|
111
|
+
language,
|
|
112
|
+
aiProvider,
|
|
113
|
+
aiApiKey,
|
|
114
|
+
});
|
|
115
|
+
// Show created files
|
|
116
|
+
if (language === 'python') {
|
|
117
|
+
console.log(chalk.dim(' .env API credentials saved'));
|
|
118
|
+
console.log(chalk.dim(' bot.py Trading bot template'));
|
|
119
|
+
console.log(chalk.dim(' requirements.txt Dependencies'));
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(chalk.dim(' .env API credentials saved'));
|
|
123
|
+
console.log(chalk.dim(' bot.ts Trading bot template'));
|
|
124
|
+
console.log(chalk.dim(' package.json Dependencies'));
|
|
125
|
+
}
|
|
126
|
+
// Step 5: Success!
|
|
127
|
+
const linkUrl = getLinkUrl(credentials.linkToken);
|
|
128
|
+
const installCmd = language === 'python'
|
|
129
|
+
? 'python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt'
|
|
130
|
+
: 'npm install';
|
|
131
|
+
const runCmd = language === 'python'
|
|
132
|
+
? 'python bot.py'
|
|
133
|
+
: 'npm start';
|
|
134
|
+
console.log();
|
|
135
|
+
console.log(chalk.bold.green(` ${LOBSTER} ${agentName} is ready!`));
|
|
136
|
+
console.log();
|
|
137
|
+
console.log(chalk.bold(' Step 1: Link your wallet'));
|
|
138
|
+
console.log();
|
|
139
|
+
console.log(` Open this link in your browser:`);
|
|
140
|
+
console.log();
|
|
141
|
+
console.log(` ${chalk.cyan(linkUrl)}`);
|
|
142
|
+
console.log();
|
|
143
|
+
console.log(chalk.bold(' Step 2: Start your bot'));
|
|
144
|
+
console.log();
|
|
145
|
+
console.log(` ${chalk.white(`cd ${dirName}`)}`);
|
|
146
|
+
console.log(` ${chalk.white(installCmd)}`);
|
|
147
|
+
console.log(` ${chalk.white(runCmd)}`);
|
|
148
|
+
console.log();
|
|
149
|
+
}
|
|
150
|
+
async function pickName() {
|
|
151
|
+
let name = await generateName();
|
|
152
|
+
while (true) {
|
|
153
|
+
console.log(` Your agent: ${chalk.bold.white(name)}`);
|
|
154
|
+
console.log();
|
|
155
|
+
const response = await prompts({
|
|
156
|
+
type: 'select',
|
|
157
|
+
name: 'action',
|
|
158
|
+
message: 'Choose an action',
|
|
159
|
+
choices: [
|
|
160
|
+
{ title: `Accept "${name}"`, value: 'accept' },
|
|
161
|
+
{ title: 'Re-roll (get a new name)', value: 'reroll' },
|
|
162
|
+
{ title: 'Cancel', value: 'cancel' },
|
|
163
|
+
],
|
|
164
|
+
});
|
|
165
|
+
if (!response.action || response.action === 'cancel') {
|
|
166
|
+
return '';
|
|
167
|
+
}
|
|
168
|
+
if (response.action === 'accept') {
|
|
169
|
+
return name;
|
|
170
|
+
}
|
|
171
|
+
// Re-roll
|
|
172
|
+
process.stdout.write(chalk.dim(' Generating new name... '));
|
|
173
|
+
name = await generateName();
|
|
174
|
+
console.log(chalk.green('done'));
|
|
175
|
+
console.log();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
main().catch((err) => {
|
|
179
|
+
console.error(chalk.red(`Unexpected error: ${err.message}`));
|
|
180
|
+
process.exit(1);
|
|
181
|
+
});
|
|
182
|
+
//# 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,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert agent name to kebab-case directory name
|
|
3
|
+
*/
|
|
4
|
+
export declare function nameToDir(name: string): string;
|
|
5
|
+
interface ScaffoldOptions {
|
|
6
|
+
name: string;
|
|
7
|
+
dirName: string;
|
|
8
|
+
apiKey: string;
|
|
9
|
+
apiSecret: string;
|
|
10
|
+
language: 'python' | 'typescript';
|
|
11
|
+
aiProvider: 'anthropic' | 'openai' | 'none';
|
|
12
|
+
aiApiKey?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function scaffoldProject(options: ScaffoldOptions): string;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC;IAClC,UAAU,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA4BhE"}
|