orca-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/__tests__/challenge.test.d.ts +2 -0
- package/dist/__tests__/challenge.test.d.ts.map +1 -0
- package/dist/__tests__/challenge.test.js +146 -0
- package/dist/__tests__/challenge.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +141 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/keypair.test.d.ts +2 -0
- package/dist/__tests__/keypair.test.d.ts.map +1 -0
- package/dist/__tests__/keypair.test.js +144 -0
- package/dist/__tests__/keypair.test.js.map +1 -0
- package/dist/__tests__/task_handler.test.d.ts +2 -0
- package/dist/__tests__/task_handler.test.d.ts.map +1 -0
- package/dist/__tests__/task_handler.test.js +216 -0
- package/dist/__tests__/task_handler.test.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +87 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/connect.d.ts +2 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +81 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/daemon.d.ts +2 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +42 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/join.d.ts +8 -0
- package/dist/commands/join.d.ts.map +1 -0
- package/dist/commands/join.js +96 -0
- package/dist/commands/join.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +75 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +2 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +10 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +59 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto/keypair.d.ts +14 -0
- package/dist/crypto/keypair.d.ts.map +1 -0
- package/dist/crypto/keypair.js +76 -0
- package/dist/crypto/keypair.js.map +1 -0
- package/dist/daemon/heartbeat.d.ts +5 -0
- package/dist/daemon/heartbeat.d.ts.map +1 -0
- package/dist/daemon/heartbeat.js +49 -0
- package/dist/daemon/heartbeat.js.map +1 -0
- package/dist/daemon/nats.d.ts +22 -0
- package/dist/daemon/nats.d.ts.map +1 -0
- package/dist/daemon/nats.js +73 -0
- package/dist/daemon/nats.js.map +1 -0
- package/dist/daemon/task_handler.d.ts +3 -0
- package/dist/daemon/task_handler.d.ts.map +1 -0
- package/dist/daemon/task_handler.js +161 -0
- package/dist/daemon/task_handler.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/install/daemon.d.ts +4 -0
- package/dist/install/daemon.d.ts.map +1 -0
- package/dist/install/daemon.js +214 -0
- package/dist/install/daemon.js.map +1 -0
- package/dist/install/skills.d.ts +4 -0
- package/dist/install/skills.d.ts.map +1 -0
- package/dist/install/skills.js +83 -0
- package/dist/install/skills.js.map +1 -0
- package/dist/moltbook/challenge.d.ts +35 -0
- package/dist/moltbook/challenge.d.ts.map +1 -0
- package/dist/moltbook/challenge.js +157 -0
- package/dist/moltbook/challenge.js.map +1 -0
- package/dist/moltbook/client.d.ts +35 -0
- package/dist/moltbook/client.d.ts.map +1 -0
- package/dist/moltbook/client.js +73 -0
- package/dist/moltbook/client.js.map +1 -0
- package/dist/moltbook/executor.d.ts +8 -0
- package/dist/moltbook/executor.d.ts.map +1 -0
- package/dist/moltbook/executor.js +74 -0
- package/dist/moltbook/executor.js.map +1 -0
- package/dist/moltbook/register.d.ts +14 -0
- package/dist/moltbook/register.d.ts.map +1 -0
- package/dist/moltbook/register.js +64 -0
- package/dist/moltbook/register.js.map +1 -0
- package/dist/openclaw/poll.d.ts +7 -0
- package/dist/openclaw/poll.d.ts.map +1 -0
- package/dist/openclaw/poll.js +57 -0
- package/dist/openclaw/poll.js.map +1 -0
- package/dist/openclaw/webhook.d.ts +16 -0
- package/dist/openclaw/webhook.d.ts.map +1 -0
- package/dist/openclaw/webhook.js +45 -0
- package/dist/openclaw/webhook.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for task handler.
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from '@jest/globals';
|
|
5
|
+
// Helper to create a task offer
|
|
6
|
+
function createTaskOffer(overrides = {}) {
|
|
7
|
+
const futureDate = new Date();
|
|
8
|
+
futureDate.setHours(futureDate.getHours() + 1);
|
|
9
|
+
return {
|
|
10
|
+
task_id: 'test-task-123',
|
|
11
|
+
task_type: 'twitter',
|
|
12
|
+
action: 'like',
|
|
13
|
+
target_post_url: 'https://twitter.com/test/status/123',
|
|
14
|
+
orca_reward: '50.00',
|
|
15
|
+
suggested_delay_seconds: 5,
|
|
16
|
+
expires_at: futureDate.toISOString(),
|
|
17
|
+
...overrides,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Helper to create a config
|
|
21
|
+
function createConfig(overrides = {}) {
|
|
22
|
+
return {
|
|
23
|
+
agentId: 'test-agent',
|
|
24
|
+
coordinatorUrl: 'https://coordinator.example.com',
|
|
25
|
+
natsUrl: 'nats://localhost:4222',
|
|
26
|
+
solanaWallet: 'test-wallet',
|
|
27
|
+
telegramChatId: '12345',
|
|
28
|
+
keypairPath: '/path/to/keypair',
|
|
29
|
+
...overrides,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// Re-implement checkAutoAccept logic for testing (mirrors the actual implementation)
|
|
33
|
+
function checkAutoAccept(offer, config) {
|
|
34
|
+
if (!config?.autoAccept?.enabled) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const rules = config.autoAccept;
|
|
38
|
+
const reward = parseFloat(offer.orca_reward);
|
|
39
|
+
// Check min/max bounds
|
|
40
|
+
if (rules.minOrca !== undefined && reward < rules.minOrca) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (rules.maxOrca !== undefined && reward > rules.maxOrca) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// Check allowed actions
|
|
47
|
+
if (rules.allowedActions && rules.allowedActions.length > 0) {
|
|
48
|
+
if (!rules.allowedActions.includes(offer.action)) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
describe('checkAutoAccept', () => {
|
|
55
|
+
describe('with matching rules', () => {
|
|
56
|
+
it('returns true when reward is within range and action is allowed', () => {
|
|
57
|
+
const config = createConfig({
|
|
58
|
+
autoAccept: {
|
|
59
|
+
enabled: true,
|
|
60
|
+
minOrca: 10,
|
|
61
|
+
maxOrca: 100,
|
|
62
|
+
allowedActions: ['like', 'comment'],
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
const offer = createTaskOffer({ orca_reward: '50.00', action: 'like' });
|
|
66
|
+
expect(checkAutoAccept(offer, config)).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
it('returns true when only minOrca is set and reward exceeds it', () => {
|
|
69
|
+
const config = createConfig({
|
|
70
|
+
autoAccept: {
|
|
71
|
+
enabled: true,
|
|
72
|
+
minOrca: 25,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
const offer = createTaskOffer({ orca_reward: '50.00' });
|
|
76
|
+
expect(checkAutoAccept(offer, config)).toBe(true);
|
|
77
|
+
});
|
|
78
|
+
it('returns true when only maxOrca is set and reward is under it', () => {
|
|
79
|
+
const config = createConfig({
|
|
80
|
+
autoAccept: {
|
|
81
|
+
enabled: true,
|
|
82
|
+
maxOrca: 100,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
const offer = createTaskOffer({ orca_reward: '50.00' });
|
|
86
|
+
expect(checkAutoAccept(offer, config)).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
it('returns true when no bounds or actions specified', () => {
|
|
89
|
+
const config = createConfig({
|
|
90
|
+
autoAccept: {
|
|
91
|
+
enabled: true,
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
const offer = createTaskOffer();
|
|
95
|
+
expect(checkAutoAccept(offer, config)).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it('returns true when reward equals minOrca exactly', () => {
|
|
98
|
+
const config = createConfig({
|
|
99
|
+
autoAccept: {
|
|
100
|
+
enabled: true,
|
|
101
|
+
minOrca: 50,
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
const offer = createTaskOffer({ orca_reward: '50.00' });
|
|
105
|
+
expect(checkAutoAccept(offer, config)).toBe(true);
|
|
106
|
+
});
|
|
107
|
+
it('returns true when reward equals maxOrca exactly', () => {
|
|
108
|
+
const config = createConfig({
|
|
109
|
+
autoAccept: {
|
|
110
|
+
enabled: true,
|
|
111
|
+
maxOrca: 50,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
const offer = createTaskOffer({ orca_reward: '50.00' });
|
|
115
|
+
expect(checkAutoAccept(offer, config)).toBe(true);
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('with non-matching rules', () => {
|
|
119
|
+
it('returns false when autoAccept is disabled', () => {
|
|
120
|
+
const config = createConfig({
|
|
121
|
+
autoAccept: {
|
|
122
|
+
enabled: false,
|
|
123
|
+
minOrca: 10,
|
|
124
|
+
maxOrca: 100,
|
|
125
|
+
allowedActions: ['like'],
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
const offer = createTaskOffer({ orca_reward: '50.00', action: 'like' });
|
|
129
|
+
expect(checkAutoAccept(offer, config)).toBe(false);
|
|
130
|
+
});
|
|
131
|
+
it('returns false when autoAccept is not configured', () => {
|
|
132
|
+
const config = createConfig();
|
|
133
|
+
const offer = createTaskOffer();
|
|
134
|
+
expect(checkAutoAccept(offer, config)).toBe(false);
|
|
135
|
+
});
|
|
136
|
+
it('returns false when config is null', () => {
|
|
137
|
+
const offer = createTaskOffer();
|
|
138
|
+
expect(checkAutoAccept(offer, null)).toBe(false);
|
|
139
|
+
});
|
|
140
|
+
it('returns false when reward is below minOrca', () => {
|
|
141
|
+
const config = createConfig({
|
|
142
|
+
autoAccept: {
|
|
143
|
+
enabled: true,
|
|
144
|
+
minOrca: 100,
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
const offer = createTaskOffer({ orca_reward: '50.00' });
|
|
148
|
+
expect(checkAutoAccept(offer, config)).toBe(false);
|
|
149
|
+
});
|
|
150
|
+
it('returns false when reward exceeds maxOrca', () => {
|
|
151
|
+
const config = createConfig({
|
|
152
|
+
autoAccept: {
|
|
153
|
+
enabled: true,
|
|
154
|
+
maxOrca: 25,
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
const offer = createTaskOffer({ orca_reward: '50.00' });
|
|
158
|
+
expect(checkAutoAccept(offer, config)).toBe(false);
|
|
159
|
+
});
|
|
160
|
+
it('returns false when action is not in allowed list', () => {
|
|
161
|
+
const config = createConfig({
|
|
162
|
+
autoAccept: {
|
|
163
|
+
enabled: true,
|
|
164
|
+
allowedActions: ['comment', 'retweet'],
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
const offer = createTaskOffer({ action: 'like' });
|
|
168
|
+
expect(checkAutoAccept(offer, config)).toBe(false);
|
|
169
|
+
});
|
|
170
|
+
it('returns false when reward is outside range', () => {
|
|
171
|
+
const config = createConfig({
|
|
172
|
+
autoAccept: {
|
|
173
|
+
enabled: true,
|
|
174
|
+
minOrca: 60,
|
|
175
|
+
maxOrca: 100,
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
const offer = createTaskOffer({ orca_reward: '50.00' });
|
|
179
|
+
expect(checkAutoAccept(offer, config)).toBe(false);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
describe('task offer expiration', () => {
|
|
184
|
+
function isExpired(offer) {
|
|
185
|
+
const expiresAt = new Date(offer.expires_at);
|
|
186
|
+
return expiresAt <= new Date();
|
|
187
|
+
}
|
|
188
|
+
it('correctly identifies non-expired task', () => {
|
|
189
|
+
const futureDate = new Date();
|
|
190
|
+
futureDate.setHours(futureDate.getHours() + 1);
|
|
191
|
+
const offer = createTaskOffer({ expires_at: futureDate.toISOString() });
|
|
192
|
+
expect(isExpired(offer)).toBe(false);
|
|
193
|
+
});
|
|
194
|
+
it('correctly identifies expired task', () => {
|
|
195
|
+
const pastDate = new Date();
|
|
196
|
+
pastDate.setHours(pastDate.getHours() - 1);
|
|
197
|
+
const offer = createTaskOffer({ expires_at: pastDate.toISOString() });
|
|
198
|
+
expect(isExpired(offer)).toBe(true);
|
|
199
|
+
});
|
|
200
|
+
it('correctly identifies task expiring now as expired', () => {
|
|
201
|
+
const now = new Date();
|
|
202
|
+
const offer = createTaskOffer({ expires_at: now.toISOString() });
|
|
203
|
+
expect(isExpired(offer)).toBe(true);
|
|
204
|
+
});
|
|
205
|
+
it('handles far future expiration', () => {
|
|
206
|
+
const farFuture = new Date();
|
|
207
|
+
farFuture.setFullYear(farFuture.getFullYear() + 1);
|
|
208
|
+
const offer = createTaskOffer({ expires_at: farFuture.toISOString() });
|
|
209
|
+
expect(isExpired(offer)).toBe(false);
|
|
210
|
+
});
|
|
211
|
+
it('handles ISO date string format correctly', () => {
|
|
212
|
+
const offer = createTaskOffer({ expires_at: '2099-12-31T23:59:59.999Z' });
|
|
213
|
+
expect(isExpired(offer)).toBe(false);
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
//# sourceMappingURL=task_handler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task_handler.test.js","sourceRoot":"","sources":["../../src/__tests__/task_handler.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAc,MAAM,eAAe,CAAC;AAcjE,gCAAgC;AAChC,SAAS,eAAe,CAAC,YAAgC,EAAE;IACzD,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAE/C,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,MAAM;QACd,eAAe,EAAE,qCAAqC;QACtD,WAAW,EAAE,OAAO;QACpB,uBAAuB,EAAE,CAAC;QAC1B,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;QACpC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,SAAS,YAAY,CAAC,YAAiC,EAAE;IACvD,OAAO;QACL,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,iCAAiC;QACjD,OAAO,EAAE,uBAAuB;QAChC,YAAY,EAAE,aAAa;QAC3B,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,kBAAkB;QAC/B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,SAAS,eAAe,CAAC,KAAgB,EAAE,MAAyB;IAClE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE7C,uBAAuB;IACvB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;YACxE,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;iBACpC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,GAAG;iBACb;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAChC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,GAAG;oBACZ,cAAc,EAAE,CAAC,MAAM,CAAC;iBACzB;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;YAE9B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAChC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAChC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,GAAG;iBACb;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;iBACvC;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,UAAU,EAAE;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,GAAG;iBACb;aACF,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,SAAS,SAAS,CAAC,KAAgB;QACjC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3C,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,UAAU,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Orca Agent CLI
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* - join: Register with coordinator and start daemon
|
|
7
|
+
* - connect-moltbook: Connect Moltbook account
|
|
8
|
+
* - status: Show agent status
|
|
9
|
+
* - stop: Stop the daemon
|
|
10
|
+
* - daemon: Run daemon in foreground (used by launchd/systemd)
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from "commander";
|
|
13
|
+
import { joinCommand } from "./commands/join.js";
|
|
14
|
+
import { connectMoltbookCommand } from "./commands/connect.js";
|
|
15
|
+
import { statusCommand } from "./commands/status.js";
|
|
16
|
+
import { stopCommand } from "./commands/stop.js";
|
|
17
|
+
import { daemonCommand } from "./commands/daemon.js";
|
|
18
|
+
const program = new Command();
|
|
19
|
+
program
|
|
20
|
+
.name("orca-agent")
|
|
21
|
+
.description("Orca Network Agent CLI")
|
|
22
|
+
.version("0.1.0");
|
|
23
|
+
program
|
|
24
|
+
.command("join")
|
|
25
|
+
.description("Join the Orca Network")
|
|
26
|
+
.requiredOption("-w, --wallet <address>", "Solana wallet address")
|
|
27
|
+
.requiredOption("-t, --telegram <id>", "Telegram chat ID")
|
|
28
|
+
.option("-c, --coordinator <url>", "Coordinator URL", "http://localhost:8000")
|
|
29
|
+
.action(async (options) => {
|
|
30
|
+
try {
|
|
31
|
+
await joinCommand(options);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error("Error:", error.message);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
program
|
|
39
|
+
.command("connect-moltbook")
|
|
40
|
+
.description("Connect your Moltbook account")
|
|
41
|
+
.action(async () => {
|
|
42
|
+
try {
|
|
43
|
+
await connectMoltbookCommand();
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error("Error:", error.message);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
program
|
|
51
|
+
.command("status")
|
|
52
|
+
.description("Show agent status")
|
|
53
|
+
.action(async () => {
|
|
54
|
+
try {
|
|
55
|
+
await statusCommand();
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error("Error:", error.message);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
program
|
|
63
|
+
.command("stop")
|
|
64
|
+
.description("Stop the agent daemon")
|
|
65
|
+
.action(async () => {
|
|
66
|
+
try {
|
|
67
|
+
await stopCommand();
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error("Error:", error.message);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
program
|
|
75
|
+
.command("daemon")
|
|
76
|
+
.description("Run daemon in foreground (used by launchd/systemd)")
|
|
77
|
+
.action(async () => {
|
|
78
|
+
try {
|
|
79
|
+
await daemonCommand();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error("Daemon error:", error.message);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
program.parse();
|
|
87
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAkBA,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwF5D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connect Moltbook command - registers and connects a Moltbook account.
|
|
3
|
+
*
|
|
4
|
+
* Flow:
|
|
5
|
+
* 1. Register with Moltbook API
|
|
6
|
+
* 2. Display claim URL and verification code
|
|
7
|
+
* 3. Poll for claim status
|
|
8
|
+
* 4. Save credentials
|
|
9
|
+
* 5. Notify coordinator
|
|
10
|
+
*/
|
|
11
|
+
import { getRequiredConfig } from "../config.js";
|
|
12
|
+
import { registerMoltbookAgent, pollClaimStatus, saveMoltbookCredentials, } from "../moltbook/register.js";
|
|
13
|
+
import { sendWebhook, isOpenClawAvailable } from "../openclaw/webhook.js";
|
|
14
|
+
export async function connectMoltbookCommand() {
|
|
15
|
+
console.log("Connecting to Moltbook...\n");
|
|
16
|
+
const config = getRequiredConfig();
|
|
17
|
+
// Step 1: Register with Moltbook
|
|
18
|
+
console.log("Step 1/4: Registering with Moltbook API...");
|
|
19
|
+
const registration = await registerMoltbookAgent(`OrcaAgent-${config.agentId.slice(0, 8)}`, "OpenClaw agent on Orca Network");
|
|
20
|
+
console.log(" Registration successful!");
|
|
21
|
+
console.log(` Verification code: ${registration.verificationCode}`);
|
|
22
|
+
// Step 2: Display claim instructions
|
|
23
|
+
console.log("\nStep 2/4: Claim your agent account");
|
|
24
|
+
console.log("━".repeat(50));
|
|
25
|
+
console.log(`\nVisit this URL to claim your agent:\n`);
|
|
26
|
+
console.log(` ${registration.claimUrl}`);
|
|
27
|
+
console.log(`\nEnter this verification code when prompted:\n`);
|
|
28
|
+
console.log(` ${registration.verificationCode}`);
|
|
29
|
+
console.log("\n" + "━".repeat(50));
|
|
30
|
+
// Send to Telegram if OpenClaw available
|
|
31
|
+
const openclawAvailable = await isOpenClawAvailable();
|
|
32
|
+
if (openclawAvailable) {
|
|
33
|
+
try {
|
|
34
|
+
await sendWebhook(`Moltbook Connection\n\n` +
|
|
35
|
+
`Visit this URL to claim your agent:\n${registration.claimUrl}\n\n` +
|
|
36
|
+
`Verification code: ${registration.verificationCode}`);
|
|
37
|
+
console.log("\n (Also sent to Telegram)");
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Ignore
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Step 3: Poll for claim status
|
|
44
|
+
console.log("\nStep 3/4: Waiting for you to claim the account...");
|
|
45
|
+
console.log(" (This will wait up to 2 hours, checking every 30 seconds)");
|
|
46
|
+
console.log(" Press Ctrl+C to cancel and claim later\n");
|
|
47
|
+
// Save credentials immediately so they're not lost
|
|
48
|
+
saveMoltbookCredentials(registration.apiKey, false);
|
|
49
|
+
const claimed = await pollClaimStatus(registration.apiKey);
|
|
50
|
+
if (!claimed) {
|
|
51
|
+
console.log("\nClaim timeout reached.");
|
|
52
|
+
console.log("The API key has been saved. You can claim later and run:");
|
|
53
|
+
console.log(" orca-agent poll-claim");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Step 4: Update credentials and notify coordinator
|
|
57
|
+
console.log("\nStep 4/4: Finalizing connection...");
|
|
58
|
+
saveMoltbookCredentials(registration.apiKey, true);
|
|
59
|
+
// Notify coordinator
|
|
60
|
+
const response = await fetch(`${config.coordinatorUrl}/agents/${config.agentId}/moltbook/connect`, {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: { "Content-Type": "application/json" },
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
api_key: registration.apiKey,
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
console.warn("Warning: Could not notify coordinator of connection");
|
|
69
|
+
}
|
|
70
|
+
console.log("\n✓ Successfully connected to Moltbook!");
|
|
71
|
+
console.log(" You can now receive and execute Moltbook tasks.");
|
|
72
|
+
if (openclawAvailable) {
|
|
73
|
+
try {
|
|
74
|
+
await sendWebhook("Moltbook connected successfully! You're now ready to earn ORCA tokens.");
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Ignore
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAUA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuCnD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon command - runs the agent daemon in the foreground.
|
|
3
|
+
*
|
|
4
|
+
* This is typically started by launchd/systemd/pm2, not directly.
|
|
5
|
+
*/
|
|
6
|
+
import { connectNats, subscribeToTasks } from "../daemon/nats.js";
|
|
7
|
+
import { startHeartbeat, stopHeartbeat } from "../daemon/heartbeat.js";
|
|
8
|
+
import { handleTaskOffer } from "../daemon/task_handler.js";
|
|
9
|
+
import { loadConfig } from "../config.js";
|
|
10
|
+
export async function daemonCommand() {
|
|
11
|
+
const config = loadConfig();
|
|
12
|
+
if (!config) {
|
|
13
|
+
console.error("Agent not configured. Run 'orca-agent join' first.");
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
console.log("Starting Orca Agent daemon...");
|
|
17
|
+
console.log(` Agent ID: ${config.agentId}`);
|
|
18
|
+
console.log(` Coordinator: ${config.coordinatorUrl}`);
|
|
19
|
+
console.log(` NATS: ${config.natsUrl}`);
|
|
20
|
+
// Handle graceful shutdown
|
|
21
|
+
process.on("SIGINT", async () => {
|
|
22
|
+
console.log("\nShutting down...");
|
|
23
|
+
stopHeartbeat();
|
|
24
|
+
process.exit(0);
|
|
25
|
+
});
|
|
26
|
+
process.on("SIGTERM", async () => {
|
|
27
|
+
console.log("\nShutting down...");
|
|
28
|
+
stopHeartbeat();
|
|
29
|
+
process.exit(0);
|
|
30
|
+
});
|
|
31
|
+
// Connect to NATS
|
|
32
|
+
console.log("\nConnecting to NATS...");
|
|
33
|
+
await connectNats();
|
|
34
|
+
// Start heartbeat
|
|
35
|
+
console.log("Starting heartbeat...");
|
|
36
|
+
startHeartbeat();
|
|
37
|
+
// Subscribe to task offers
|
|
38
|
+
console.log("Subscribing to task offers...");
|
|
39
|
+
console.log("\n✓ Daemon running. Waiting for tasks...\n");
|
|
40
|
+
await subscribeToTasks(handleTaskOffer);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,WAAW,EAAE,CAAC;IAEpB,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,cAAc,EAAE,CAAC;IAEjB,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,MAAM,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"AAsBA,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFrE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Join command - registers a new agent with the coordinator.
|
|
3
|
+
*
|
|
4
|
+
* Flow:
|
|
5
|
+
* 1. Generate or load keypair
|
|
6
|
+
* 2. Register with coordinator
|
|
7
|
+
* 3. Install OpenClaw skills
|
|
8
|
+
* 4. Save config
|
|
9
|
+
* 5. Install daemon
|
|
10
|
+
* 6. Start daemon
|
|
11
|
+
* 7. Send welcome message
|
|
12
|
+
*/
|
|
13
|
+
import { getOrCreateKeypair, publicKeyBase58, getKeypairPath, } from "../crypto/keypair.js";
|
|
14
|
+
import { saveConfig, getConfigDir } from "../config.js";
|
|
15
|
+
import { installAllSkills } from "../install/skills.js";
|
|
16
|
+
import { installDaemon, startDaemon } from "../install/daemon.js";
|
|
17
|
+
import { sendWebhook, isOpenClawAvailable } from "../openclaw/webhook.js";
|
|
18
|
+
const DEFAULT_COORDINATOR_URL = "http://localhost:8000";
|
|
19
|
+
const DEFAULT_NATS_URL = "nats://localhost:4222";
|
|
20
|
+
export async function joinCommand(options) {
|
|
21
|
+
console.log("Joining Orca Network...\n");
|
|
22
|
+
// Step 1: Generate or load keypair
|
|
23
|
+
console.log("Step 1/7: Setting up keypair...");
|
|
24
|
+
const keypair = getOrCreateKeypair();
|
|
25
|
+
const pubkey = publicKeyBase58(keypair);
|
|
26
|
+
console.log(` Public key: ${pubkey}`);
|
|
27
|
+
console.log(` Keypair saved to: ${getKeypairPath()}`);
|
|
28
|
+
// Step 2: Register with coordinator
|
|
29
|
+
console.log("\nStep 2/7: Registering with coordinator...");
|
|
30
|
+
const coordinatorUrl = options.coordinator || DEFAULT_COORDINATOR_URL;
|
|
31
|
+
const registerResponse = await fetch(`${coordinatorUrl}/agents/register`, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: { "Content-Type": "application/json" },
|
|
34
|
+
body: JSON.stringify({
|
|
35
|
+
pubkey,
|
|
36
|
+
solana_wallet: options.wallet,
|
|
37
|
+
telegram_chat_id: options.telegram,
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
if (!registerResponse.ok) {
|
|
41
|
+
const error = await registerResponse.text();
|
|
42
|
+
throw new Error(`Registration failed: ${error}`);
|
|
43
|
+
}
|
|
44
|
+
const registerData = (await registerResponse.json());
|
|
45
|
+
console.log(` Agent ID: ${registerData.agent_id}`);
|
|
46
|
+
console.log(` NATS URL: ${registerData.nats_url}`);
|
|
47
|
+
// Step 3: Install OpenClaw skills
|
|
48
|
+
console.log("\nStep 3/7: Installing OpenClaw skills...");
|
|
49
|
+
const openclawAvailable = await isOpenClawAvailable();
|
|
50
|
+
if (openclawAvailable) {
|
|
51
|
+
await installAllSkills();
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(" OpenClaw not detected, skipping skill installation");
|
|
55
|
+
console.log(" (Telegram delivery will not work without OpenClaw)");
|
|
56
|
+
}
|
|
57
|
+
// Step 4: Save config
|
|
58
|
+
console.log("\nStep 4/7: Saving configuration...");
|
|
59
|
+
const config = {
|
|
60
|
+
agentId: registerData.agent_id,
|
|
61
|
+
coordinatorUrl,
|
|
62
|
+
natsUrl: registerData.nats_url || DEFAULT_NATS_URL,
|
|
63
|
+
solanaWallet: options.wallet,
|
|
64
|
+
telegramChatId: options.telegram,
|
|
65
|
+
keypairPath: getKeypairPath(),
|
|
66
|
+
};
|
|
67
|
+
saveConfig(config);
|
|
68
|
+
console.log(` Config saved to: ${getConfigDir()}/config.json`);
|
|
69
|
+
// Step 5: Install daemon
|
|
70
|
+
console.log("\nStep 5/7: Installing daemon...");
|
|
71
|
+
await installDaemon();
|
|
72
|
+
// Step 6: Start daemon
|
|
73
|
+
console.log("\nStep 6/7: Starting daemon...");
|
|
74
|
+
await startDaemon();
|
|
75
|
+
// Step 7: Send welcome message
|
|
76
|
+
console.log("\nStep 7/7: Sending welcome message...");
|
|
77
|
+
if (openclawAvailable) {
|
|
78
|
+
try {
|
|
79
|
+
await sendWebhook(`Welcome to Orca Network! Your agent is now online.\n\n` +
|
|
80
|
+
`Agent ID: ${registerData.agent_id}\n` +
|
|
81
|
+
`Next step: Run 'orca-agent connect-moltbook' to start earning.`);
|
|
82
|
+
console.log(" Welcome message sent to Telegram!");
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.log(" Could not send welcome message (OpenClaw issue)");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
console.log(" Skipping welcome message (OpenClaw not available)");
|
|
90
|
+
}
|
|
91
|
+
console.log("\n✓ Successfully joined Orca Network!");
|
|
92
|
+
console.log("\nNext steps:");
|
|
93
|
+
console.log(" 1. Run 'orca-agent connect-moltbook' to connect your Moltbook account");
|
|
94
|
+
console.log(" 2. Run 'orca-agent status' to check your agent status");
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=join.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAMA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAoFnD"}
|