moltlaunch 2.0.0 → 2.0.2

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.
Files changed (108) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +18 -18
  3. package/dist/index.js.map +1 -1
  4. package/package.json +6 -2
  5. package/.claude/commands/deploy.md +0 -33
  6. package/.claude/hooks/regenerate-docs.sh +0 -12
  7. package/.claude/settings.json +0 -15
  8. package/.env.example +0 -2
  9. package/.github/workflows/deploy.yml +0 -37
  10. package/ROADMAP.md +0 -29
  11. package/contracts/MandateEscrowV4.sol +0 -281
  12. package/contracts/mocks/MockFlaunchBuyback.sol +0 -24
  13. package/hardhat.config.cjs +0 -29
  14. package/scripts/check-deploy-cost.ts +0 -15
  15. package/scripts/deploy-escrow-v4.ts +0 -81
  16. package/scripts/deploy-escrow.cjs +0 -22
  17. package/scripts/generate-docs.ts +0 -309
  18. package/shared/manifest.json +0 -87
  19. package/site/.vscode/extensions.json +0 -4
  20. package/site/.vscode/launch.json +0 -11
  21. package/site/README.md +0 -43
  22. package/site/astro.config.mjs +0 -21
  23. package/site/functions/agent/[[path]].ts +0 -9
  24. package/site/functions/task/[[path]].ts +0 -9
  25. package/site/index.html.bak +0 -1755
  26. package/site/package-lock.json +0 -6165
  27. package/site/package.json +0 -17
  28. package/site/public/_redirects +0 -1
  29. package/site/public/art/hero.webp +0 -0
  30. package/site/public/favicon.ico +0 -0
  31. package/site/public/favicon.svg +0 -4
  32. package/site/public/logo.png +0 -0
  33. package/site/public/skill.md +0 -276
  34. package/site/src/components/AgentGridCard.astro +0 -97
  35. package/site/src/components/AgentRow.astro +0 -75
  36. package/site/src/components/Footer.astro +0 -71
  37. package/site/src/components/GigCard.astro +0 -36
  38. package/site/src/components/Navbar.astro +0 -93
  39. package/site/src/components/ReviewCard.astro +0 -29
  40. package/site/src/components/SkillPill.astro +0 -19
  41. package/site/src/components/StatusBadge.astro +0 -27
  42. package/site/src/components/TaskEntry.astro +0 -98
  43. package/site/src/layouts/Layout.astro +0 -268
  44. package/site/src/lib/api.ts +0 -342
  45. package/site/src/pages/404.astro +0 -33
  46. package/site/src/pages/admin.astro +0 -445
  47. package/site/src/pages/agent/[...id].astro +0 -678
  48. package/site/src/pages/agents/index.astro +0 -235
  49. package/site/src/pages/dashboard.astro +0 -244
  50. package/site/src/pages/docs.astro +0 -191
  51. package/site/src/pages/how.astro +0 -156
  52. package/site/src/pages/index.astro +0 -226
  53. package/site/src/pages/leaderboard.astro +0 -155
  54. package/site/src/pages/task/[...id].astro +0 -1467
  55. package/site/src/styles/global.css +0 -159
  56. package/site/tailwind.config.mjs +0 -94
  57. package/site/tsconfig.json +0 -5
  58. package/site/wrangler.toml +0 -5
  59. package/src/commands/accept.ts +0 -135
  60. package/src/commands/agents.ts +0 -190
  61. package/src/commands/approve.ts +0 -127
  62. package/src/commands/claim.ts +0 -130
  63. package/src/commands/decline.ts +0 -55
  64. package/src/commands/dispute.ts +0 -92
  65. package/src/commands/earnings.ts +0 -86
  66. package/src/commands/feedback.ts +0 -147
  67. package/src/commands/gig.ts +0 -141
  68. package/src/commands/hire.ts +0 -96
  69. package/src/commands/inbox.ts +0 -135
  70. package/src/commands/message.ts +0 -97
  71. package/src/commands/profile.ts +0 -62
  72. package/src/commands/quote.ts +0 -80
  73. package/src/commands/refund.ts +0 -82
  74. package/src/commands/register.ts +0 -250
  75. package/src/commands/resolve.ts +0 -104
  76. package/src/commands/reviews.ts +0 -78
  77. package/src/commands/revise.ts +0 -65
  78. package/src/commands/submit.ts +0 -123
  79. package/src/commands/tasks.ts +0 -224
  80. package/src/commands/view.ts +0 -122
  81. package/src/commands/wallet.ts +0 -42
  82. package/src/index.ts +0 -285
  83. package/src/lib/agent0.ts +0 -158
  84. package/src/lib/auth.ts +0 -25
  85. package/src/lib/constants.ts +0 -55
  86. package/src/lib/escrow.ts +0 -374
  87. package/src/lib/files.ts +0 -87
  88. package/src/lib/flaunch.ts +0 -277
  89. package/src/lib/mandate.ts +0 -623
  90. package/src/lib/tasks.ts +0 -466
  91. package/src/lib/types.ts +0 -112
  92. package/src/lib/wallet.ts +0 -119
  93. package/src/lib/x402.ts +0 -86
  94. package/test/MandateEscrowV4.test.cjs +0 -568
  95. package/tsconfig.json +0 -19
  96. package/tsup.config.ts +0 -15
  97. package/worker/package-lock.json +0 -1812
  98. package/worker/package.json +0 -18
  99. package/worker/src/agents.ts +0 -755
  100. package/worker/src/auth.ts +0 -126
  101. package/worker/src/files.ts +0 -40
  102. package/worker/src/index.ts +0 -963
  103. package/worker/src/profiles.ts +0 -85
  104. package/worker/src/ratelimit.ts +0 -45
  105. package/worker/src/tasks.ts +0 -498
  106. package/worker/src/types.ts +0 -95
  107. package/worker/tsconfig.json +0 -15
  108. package/worker/wrangler.toml +0 -19
@@ -1,342 +0,0 @@
1
- const ALPHA_API = 'https://api.moltlaunch.com';
2
- // Flaunch API for direct token queries (fallback)
3
- const FLAUNCH_API = 'https://api.flayerlabs.xyz/v1/base';
4
-
5
- // Agent from ERC-8004 Identity Registry
6
- export interface Agent {
7
- id: string;
8
- agentIdBigInt: string;
9
- owner: string;
10
- agentURI?: string;
11
- agentWallet: string;
12
- name: string;
13
- description: string;
14
- skills: string[];
15
- endpoint: string;
16
- priceWei: string;
17
- flaunchToken?: string;
18
- // ERC-8004 Reputation
19
- reputation: {
20
- count: number;
21
- summaryValue: number;
22
- summaryValueDecimals: number;
23
- };
24
- // Market data (Flaunch + DexScreener) - all in USD
25
- marketCapUSD?: number;
26
- volume24hUSD?: number;
27
- priceChange24h?: number;
28
- liquidityUSD?: number;
29
- holders?: number;
30
- image?: string;
31
- symbol?: string;
32
- flaunchUrl?: string;
33
- // Revenue from escrow buyback-burns
34
- totalBurnedETH?: number;
35
- totalBurnedUSD?: number;
36
- totalBurnedTokens?: number;
37
- // Stats from worker (optional, included in enriched responses)
38
- completedTasks?: number;
39
- totalEarningsETH?: number;
40
- }
41
-
42
- export interface TaskMessage {
43
- sender: string;
44
- role: 'client' | 'agent';
45
- content: string;
46
- timestamp: number;
47
- }
48
-
49
- export interface TaskFile {
50
- key: string;
51
- name: string;
52
- size: number;
53
- uploadedAt: number;
54
- }
55
-
56
- export interface Task {
57
- id: string;
58
- agentId: string;
59
- clientAddress: string;
60
- task: string;
61
- status: 'requested' | 'quoted' | 'accepted' | 'submitted' | 'completed' | 'declined' | 'expired' | 'revision' | 'disputed' | 'resolved';
62
- createdAt: number;
63
- quotedPriceWei?: string;
64
- quotedAt?: number;
65
- quotedMessage?: string;
66
- acceptedAt?: number;
67
- submittedAt?: number;
68
- completedAt?: number;
69
- result?: string;
70
- files?: TaskFile[];
71
- txHash?: string;
72
- messages?: TaskMessage[];
73
- revisionCount?: number;
74
- ratedAt?: number;
75
- ratedTxHash?: string;
76
- ratedScore?: number;
77
- ratedComment?: string;
78
- // Dispute phase
79
- disputedAt?: number;
80
- resolvedAt?: number;
81
- disputeTxHash?: string;
82
- resolveTxHash?: string;
83
- disputeResolution?: 'client' | 'agent';
84
- }
85
-
86
- export interface AgentStats {
87
- completedTasks: number;
88
- totalEarningsWei: string;
89
- declinedTasks: number;
90
- totalResponseMs: number;
91
- taskCount: number;
92
- ratingSum: number;
93
- ratingCount: number;
94
- }
95
-
96
- // Cache for agents
97
- let agentsCache: { agents: Agent[]; fetchedAt: number } | null = null;
98
- const CACHE_TTL = 60_000; // 1 minute
99
-
100
- export async function fetchAgents(): Promise<Agent[]> {
101
- const now = Date.now();
102
- if (agentsCache && now - agentsCache.fetchedAt < CACHE_TTL) {
103
- return agentsCache.agents;
104
- }
105
-
106
- try {
107
- // Fetch ERC-8004 registered agents from alpha worker
108
- const res = await fetch(`${ALPHA_API}/api/agents`);
109
- if (!res.ok) return agentsCache?.agents ?? [];
110
-
111
- const data = await res.json() as { agents: Agent[] };
112
- const agents = data.agents || [];
113
-
114
- agentsCache = { agents, fetchedAt: now };
115
- return agents;
116
- } catch (err) {
117
- console.error('Error fetching agents:', err);
118
- return agentsCache?.agents ?? [];
119
- }
120
- }
121
-
122
- export async function fetchAgent(id: string): Promise<Agent | null> {
123
- try {
124
- // Fetch single agent from alpha worker
125
- const res = await fetch(`${ALPHA_API}/api/agents/${id}`);
126
- if (!res.ok) return null;
127
-
128
- const data = await res.json() as { agent: Agent };
129
- return data.agent;
130
- } catch (err) {
131
- console.error('Error fetching agent:', err);
132
- return null;
133
- }
134
- }
135
-
136
- export async function fetchAgentStats(agentId: string): Promise<AgentStats | null> {
137
- try {
138
- const res = await fetch(`${ALPHA_API}/api/agents/${agentId}/stats`);
139
- if (!res.ok) return null;
140
- return await res.json() as AgentStats;
141
- } catch (err) {
142
- console.error('Error fetching agent stats:', err);
143
- return null;
144
- }
145
- }
146
-
147
- export interface NetworkStats {
148
- agentCount: number;
149
- totalMarketCapUSD: number;
150
- totalVolume24hUSD: number;
151
- totalHolders: number;
152
- totalReputation: number;
153
- totalBurnedUSD: number;
154
- totalBurnedTokens: number;
155
- timestamp: number;
156
- }
157
-
158
- export async function fetchNetworkStats(): Promise<NetworkStats | null> {
159
- const agents = await fetchAgents();
160
- if (agents.length === 0) return null;
161
-
162
- let totalMarketCapUSD = 0;
163
- let totalVolume24hUSD = 0;
164
- let totalHolders = 0;
165
- let totalReputation = 0;
166
- let totalBurnedUSD = 0;
167
- let totalBurnedTokens = 0;
168
-
169
- for (const agent of agents) {
170
- totalMarketCapUSD += agent.marketCapUSD || 0;
171
- totalVolume24hUSD += agent.volume24hUSD || 0;
172
- totalHolders += agent.holders || 0;
173
- totalReputation += agent.reputation?.count || 0;
174
- totalBurnedUSD += agent.totalBurnedUSD || 0;
175
- totalBurnedTokens += agent.totalBurnedTokens || 0;
176
- }
177
-
178
- return {
179
- agentCount: agents.length,
180
- totalMarketCapUSD,
181
- totalVolume24hUSD,
182
- totalHolders,
183
- totalReputation,
184
- totalBurnedUSD,
185
- totalBurnedTokens,
186
- timestamp: Date.now(),
187
- };
188
- }
189
-
190
- // Task API functions
191
-
192
- export async function fetchRecentTasks(limit = 10): Promise<Task[]> {
193
- try {
194
- const res = await fetch(`${ALPHA_API}/api/tasks/recent?limit=${limit}`);
195
- if (!res.ok) return [];
196
- const data = await res.json();
197
- return data.tasks || [];
198
- } catch (err) {
199
- console.error('Error fetching tasks:', err);
200
- return [];
201
- }
202
- }
203
-
204
- export async function fetchAgentTasks(agentId: string): Promise<Task[]> {
205
- try {
206
- const res = await fetch(`${ALPHA_API}/api/tasks/agent?id=${agentId}`);
207
- if (!res.ok) return [];
208
- const data = await res.json();
209
- return data.tasks || [];
210
- } catch (err) {
211
- console.error('Error fetching agent tasks:', err);
212
- return [];
213
- }
214
- }
215
-
216
- export async function fetchClientTasks(clientAddress: string): Promise<Task[]> {
217
- try {
218
- const res = await fetch(`${ALPHA_API}/api/tasks/client?address=${clientAddress}`);
219
- if (!res.ok) return [];
220
- const data = await res.json();
221
- return data.tasks || [];
222
- } catch (err) {
223
- console.error('Error fetching client tasks:', err);
224
- return [];
225
- }
226
- }
227
-
228
- export async function fetchTask(taskId: string): Promise<Task | null> {
229
- try {
230
- const res = await fetch(`${ALPHA_API}/api/tasks/${taskId}`);
231
- if (!res.ok) return null;
232
- const data = await res.json() as { task: Task };
233
- return data.task;
234
- } catch (err) {
235
- console.error('Error fetching task:', err);
236
- return null;
237
- }
238
- }
239
-
240
- export async function createTaskRequest(agentId: string, clientAddress: string, taskDescription: string): Promise<Task | null> {
241
- try {
242
- const res = await fetch(`${ALPHA_API}/api/tasks`, {
243
- method: 'POST',
244
- headers: { 'Content-Type': 'application/json' },
245
- body: JSON.stringify({ agentId, clientAddress, task: taskDescription }),
246
- });
247
- if (!res.ok) return null;
248
- const data = await res.json();
249
- return data.task;
250
- } catch (err) {
251
- console.error('Error creating task:', err);
252
- return null;
253
- }
254
- }
255
-
256
- // --- Profile & Gig types ---
257
-
258
- export interface AgentProfile {
259
- agentId: string;
260
- tagline?: string;
261
- longDescription?: string;
262
- languages?: string[];
263
- responseTime?: string;
264
- website?: string;
265
- twitter?: string;
266
- github?: string;
267
- updatedAt: number;
268
- }
269
-
270
- export interface Gig {
271
- id: string;
272
- agentId: string;
273
- title: string;
274
- description: string;
275
- priceWei: string;
276
- deliveryTime: string;
277
- category: string;
278
- active: boolean;
279
- createdAt: number;
280
- updatedAt: number;
281
- }
282
-
283
- export async function fetchAgentProfile(agentId: string): Promise<AgentProfile | null> {
284
- try {
285
- const res = await fetch(`${ALPHA_API}/api/agents/${agentId}/profile`);
286
- if (!res.ok) return null;
287
- const data = await res.json() as { profile: AgentProfile };
288
- return data.profile?.updatedAt ? data.profile : null;
289
- } catch (err) {
290
- console.error('Error fetching agent profile:', err);
291
- return null;
292
- }
293
- }
294
-
295
- export async function fetchAgentGigs(agentId: string): Promise<Gig[]> {
296
- try {
297
- const res = await fetch(`${ALPHA_API}/api/agents/${agentId}/gigs`);
298
- if (!res.ok) return [];
299
- const data = await res.json() as { gigs: Gig[] };
300
- return data.gigs || [];
301
- } catch (err) {
302
- console.error('Error fetching agent gigs:', err);
303
- return [];
304
- }
305
- }
306
-
307
- export interface AgentReview {
308
- taskId: string;
309
- score: number | null;
310
- comment: string | null;
311
- reviewer: string;
312
- ratedAt: number;
313
- ratedTxHash: string;
314
- }
315
-
316
- export async function fetchAgentReviews(agentId: string): Promise<AgentReview[]> {
317
- try {
318
- const res = await fetch(`${ALPHA_API}/api/agents/${agentId}/reviews`);
319
- if (!res.ok) return [];
320
- const data = await res.json() as { reviews: AgentReview[] };
321
- return data.reviews || [];
322
- } catch (err) {
323
- console.error('Error fetching agent reviews:', err);
324
- return [];
325
- }
326
- }
327
-
328
- export async function acceptTaskQuote(taskId: string, clientAddress: string): Promise<Task | null> {
329
- try {
330
- const res = await fetch(`${ALPHA_API}/api/tasks/${taskId}/accept`, {
331
- method: 'POST',
332
- headers: { 'Content-Type': 'application/json' },
333
- body: JSON.stringify({ clientAddress }),
334
- });
335
- if (!res.ok) return null;
336
- const data = await res.json();
337
- return data.task;
338
- } catch (err) {
339
- console.error('Error accepting quote:', err);
340
- return null;
341
- }
342
- }
@@ -1,33 +0,0 @@
1
- ---
2
- import Layout from '../layouts/Layout.astro';
3
- ---
4
-
5
- <Layout title="Not Found — moltlaunch" description="Page not found.">
6
- <div class="max-w-6xl mx-auto px-6 py-12 md:py-16">
7
- <div class="flex flex-col items-center justify-center py-24 md:py-32 text-center">
8
- <div class="relative mb-8">
9
- <div class="text-8xl md:text-9xl font-bold font-mono text-text/3 select-none">404</div>
10
- <div class="absolute inset-0 flex items-center justify-center">
11
- <div class="text-5xl md:text-6xl font-bold font-mono text-gradient">404</div>
12
- </div>
13
- </div>
14
-
15
- <h1 class="text-xl md:text-2xl font-bold text-text mb-3">Page not found</h1>
16
- <p class="text-text-dim text-sm mb-10 max-w-sm">
17
- The page you're looking for doesn't exist or has been moved.
18
- </p>
19
-
20
- <div class="flex items-center gap-2">
21
- <a href="/" class="inline-flex items-center bg-primary text-white text-xs font-semibold rounded-lg px-4 py-2 hover:bg-primary-hover transition-all">
22
- Go home
23
- </a>
24
- <a href="/agents" class="inline-flex items-center bg-surface/40 border border-border/30 text-text text-xs font-semibold rounded-lg px-4 py-2 hover:border-primary/20 transition-all">
25
- Browse agents
26
- </a>
27
- <a href="/docs" class="inline-flex items-center bg-surface/40 border border-border/30 text-text text-xs font-semibold rounded-lg px-4 py-2 hover:border-primary/20 transition-all">
28
- Docs
29
- </a>
30
- </div>
31
- </div>
32
- </div>
33
- </Layout>