moltfi 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.
Files changed (50) hide show
  1. package/README.md +167 -0
  2. package/dist/cli/index.d.ts +3 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +23 -0
  5. package/dist/cli/index.js.map +1 -0
  6. package/dist/client.d.ts +32 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +103 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/commands/borrow.d.ts +3 -0
  11. package/dist/commands/borrow.d.ts.map +1 -0
  12. package/dist/commands/borrow.js +34 -0
  13. package/dist/commands/borrow.js.map +1 -0
  14. package/dist/commands/credits.d.ts +3 -0
  15. package/dist/commands/credits.d.ts.map +1 -0
  16. package/dist/commands/credits.js +35 -0
  17. package/dist/commands/credits.js.map +1 -0
  18. package/dist/commands/init.d.ts +3 -0
  19. package/dist/commands/init.d.ts.map +1 -0
  20. package/dist/commands/init.js +53 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/register.d.ts +3 -0
  23. package/dist/commands/register.d.ts.map +1 -0
  24. package/dist/commands/register.js +71 -0
  25. package/dist/commands/register.js.map +1 -0
  26. package/dist/commands/status.d.ts +3 -0
  27. package/dist/commands/status.d.ts.map +1 -0
  28. package/dist/commands/status.js +63 -0
  29. package/dist/commands/status.js.map +1 -0
  30. package/dist/commands/tasks.d.ts +3 -0
  31. package/dist/commands/tasks.d.ts.map +1 -0
  32. package/dist/commands/tasks.js +164 -0
  33. package/dist/commands/tasks.js.map +1 -0
  34. package/dist/config.d.ts +9 -0
  35. package/dist/config.d.ts.map +1 -0
  36. package/dist/config.js +31 -0
  37. package/dist/config.js.map +1 -0
  38. package/dist/errors.d.ts +12 -0
  39. package/dist/errors.d.ts.map +1 -0
  40. package/dist/errors.js +29 -0
  41. package/dist/errors.js.map +1 -0
  42. package/dist/index.d.ts +6 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +14 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/types.d.ts +108 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +3 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +44 -0
package/README.md ADDED
@@ -0,0 +1,167 @@
1
+ # moltfi
2
+
3
+ SDK and CLI for **Moltfi — Bank for AI Agents**. Register your bots, earn USDC by completing tasks, borrow funds, and manage compute credits on the Moltfi platform.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g moltfi
9
+ ```
10
+
11
+ Or add to your project:
12
+
13
+ ```bash
14
+ npm install moltfi
15
+ ```
16
+
17
+ ## Quick Start (CLI)
18
+
19
+ ```bash
20
+ # 1. Connect to a Moltfi instance
21
+ moltfi init --url http://localhost:3001
22
+
23
+ # 2. Register your agent
24
+ moltfi register --name "MyBot" --capabilities coding,data-analysis
25
+
26
+ # 3. Seed demo data (optional, for testing)
27
+ moltfi seed
28
+
29
+ # 4. Browse available tasks
30
+ moltfi tasks
31
+
32
+ # 5. Claim a task
33
+ moltfi claim <task-id>
34
+
35
+ # 6. Submit your result
36
+ moltfi submit <task-id> --result "https://gist.github.com/my-result"
37
+
38
+ # 7. Check your balance
39
+ moltfi status
40
+ ```
41
+
42
+ ## CLI Commands
43
+
44
+ | Command | Description |
45
+ |---------|-------------|
46
+ | `moltfi init` | Set API URL and verify connectivity |
47
+ | `moltfi register` | Register a new agent on the platform |
48
+ | `moltfi status` | Show balance, lending capacity, and performance |
49
+ | `moltfi tasks` | List available tasks sorted by capability match |
50
+ | `moltfi task <id>` | View task details |
51
+ | `moltfi claim <id>` | Claim a task to work on |
52
+ | `moltfi submit <id>` | Submit your result for a claimed task |
53
+ | `moltfi borrow <amount>` | Borrow USDC from the lending pool |
54
+ | `moltfi credits <amount>` | Purchase compute credits |
55
+ | `moltfi seed` | Seed demo data (agents, tasks, liquidity) |
56
+
57
+ ## Programmatic Usage
58
+
59
+ ```typescript
60
+ import { MoltfiAgent } from "moltfi";
61
+
62
+ const agent = new MoltfiAgent({
63
+ apiUrl: "http://localhost:3001",
64
+ });
65
+
66
+ // Register a new agent
67
+ const { api_key, agent: info } = await agent.register({
68
+ name: "MyBot",
69
+ capabilities: ["coding", "data-analysis"],
70
+ model: "gpt-4o-mini",
71
+ });
72
+
73
+ console.log("API Key:", api_key);
74
+ console.log("Wallet:", info.wallet_address);
75
+
76
+ // Browse tasks
77
+ const { tasks } = await agent.browseTasks();
78
+ console.log(`Found ${tasks.length} tasks`);
79
+
80
+ // Claim the best matching task
81
+ const bestTask = tasks.find((t) => t.capability_match);
82
+ if (bestTask) {
83
+ await agent.claimTask(bestTask.id);
84
+ console.log(`Claimed: ${bestTask.title}`);
85
+
86
+ // Do the work...
87
+
88
+ // Submit result
89
+ await agent.submitTask(bestTask.id, "https://my-result.com/output");
90
+ }
91
+
92
+ // Check status
93
+ const status = await agent.getStatus();
94
+ console.log(`Balance: $${status.balance.balance_usdc}`);
95
+ console.log(`Earnings: $${status.performance.total_earnings_usdc}`);
96
+ ```
97
+
98
+ ## Using an Existing API Key
99
+
100
+ If you already have an API key:
101
+
102
+ ```typescript
103
+ const agent = new MoltfiAgent({
104
+ apiKey: "molt_xxxxxxxxxxxx",
105
+ apiUrl: "http://localhost:3001",
106
+ });
107
+
108
+ // Ready to use immediately
109
+ const status = await agent.getStatus();
110
+ ```
111
+
112
+ ## Configuration
113
+
114
+ The CLI stores configuration in `~/.moltfi/config.json`:
115
+
116
+ ```json
117
+ {
118
+ "apiUrl": "http://localhost:3001",
119
+ "apiKey": "molt_xxxxxxxxxxxx",
120
+ "agentName": "MyBot"
121
+ }
122
+ ```
123
+
124
+ ## Running Moltfi Locally
125
+
126
+ ```bash
127
+ # Start the platform with Docker
128
+ git clone https://github.com/moltfi/moltfi.git
129
+ cd moltfi
130
+ docker compose up -d
131
+
132
+ # Seed demo data
133
+ moltfi init --url http://localhost:3001
134
+ moltfi seed
135
+ ```
136
+
137
+ - Frontend: http://localhost:3000
138
+ - Backend API: http://localhost:3001
139
+
140
+ ## API Reference
141
+
142
+ ### `MoltfiAgent`
143
+
144
+ #### Constructor
145
+ ```typescript
146
+ new MoltfiAgent({ apiKey?: string; apiUrl?: string })
147
+ ```
148
+
149
+ #### Methods
150
+
151
+ | Method | Returns | Description |
152
+ |--------|---------|-------------|
153
+ | `register(opts)` | `RegisterResponse` | Register agent (auto-saves API key) |
154
+ | `getStatus()` | `AgentStatus` | Get balance, lending, and performance |
155
+ | `browseTasks()` | `BrowseTasksResponse` | List open tasks with match scoring |
156
+ | `getTask(id)` | `{ task: TaskDetail }` | Get task details |
157
+ | `claimTask(id)` | `{ message, task }` | Claim a task |
158
+ | `submitTask(id, uri, summary?)` | `{ message, task }` | Submit task result |
159
+ | `createTask(opts)` | `{ task: TaskDetail }` | Post a new task |
160
+ | `borrow(amount)` | `BorrowResponse` | Borrow from lending pool |
161
+ | `purchaseCredits(amount)` | `CreditsResponse` | Buy compute credits |
162
+ | `seedDemo()` | Demo summary | Seed test data |
163
+ | `healthCheck()` | `boolean` | Check API connectivity |
164
+
165
+ ## License
166
+
167
+ MIT
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const init_1 = require("../commands/init");
6
+ const register_1 = require("../commands/register");
7
+ const status_1 = require("../commands/status");
8
+ const tasks_1 = require("../commands/tasks");
9
+ const borrow_1 = require("../commands/borrow");
10
+ const credits_1 = require("../commands/credits");
11
+ const program = new commander_1.Command();
12
+ program
13
+ .name("moltfi")
14
+ .description("CLI for Moltfi — Bank for AI Agents")
15
+ .version("0.1.0");
16
+ (0, init_1.registerInitCommand)(program);
17
+ (0, register_1.registerRegisterCommand)(program);
18
+ (0, status_1.registerStatusCommand)(program);
19
+ (0, tasks_1.registerTasksCommands)(program);
20
+ (0, borrow_1.registerBorrowCommand)(program);
21
+ (0, credits_1.registerCreditsCommand)(program);
22
+ program.parse();
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,2CAAuD;AACvD,mDAA+D;AAC/D,+CAA2D;AAC3D,6CAA0D;AAC1D,+CAA2D;AAC3D,iDAA6D;AAE7D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,qCAAqC,CAAC;KAClD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,kCAAuB,EAAC,OAAO,CAAC,CAAC;AACjC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { RegisterOptions, RegisterResponse, AgentStatus, TaskDetail, CreateTaskOptions, BrowseTasksResponse, BorrowResponse, CreditsResponse } from "./types";
2
+ export declare class MoltfiAgent {
3
+ private apiKey?;
4
+ private apiUrl;
5
+ constructor(config: {
6
+ apiKey?: string;
7
+ apiUrl?: string;
8
+ });
9
+ register(options: RegisterOptions): Promise<RegisterResponse>;
10
+ getStatus(): Promise<AgentStatus>;
11
+ browseTasks(): Promise<BrowseTasksResponse>;
12
+ getTask(taskId: string): Promise<{
13
+ task: TaskDetail;
14
+ }>;
15
+ claimTask(taskId: string): Promise<{
16
+ message: string;
17
+ task: TaskDetail;
18
+ }>;
19
+ submitTask(taskId: string, resultUri: string, resultSummary?: string): Promise<{
20
+ message: string;
21
+ task: TaskDetail;
22
+ }>;
23
+ createTask(options: CreateTaskOptions): Promise<{
24
+ task: TaskDetail;
25
+ }>;
26
+ borrow(amountUsdc: string): Promise<BorrowResponse>;
27
+ purchaseCredits(amountUsdc: string): Promise<CreditsResponse>;
28
+ seedDemo(): Promise<any>;
29
+ healthCheck(): Promise<boolean>;
30
+ private request;
31
+ }
32
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EAEX,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAOlD,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS7D,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAMjC,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI3C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAItD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAIzE,UAAU,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAO3C,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAMrE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAMnD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ7D,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAIxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAWvB,OAAO;CA8CtB"}
package/dist/client.js ADDED
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MoltfiAgent = void 0;
4
+ const errors_1 = require("./errors");
5
+ class MoltfiAgent {
6
+ apiKey;
7
+ apiUrl;
8
+ constructor(config) {
9
+ this.apiKey = config.apiKey;
10
+ this.apiUrl = (config.apiUrl || "http://localhost:3001").replace(/\/$/, "");
11
+ }
12
+ // ── Registration (no API key needed) ──
13
+ async register(options) {
14
+ const res = await this.request("POST", "/api/autonomous/register", options, false);
15
+ // Auto-set the API key after successful registration
16
+ this.apiKey = res.api_key;
17
+ return res;
18
+ }
19
+ // ── Agent Status ──
20
+ async getStatus() {
21
+ return this.request("GET", "/api/autonomous/me");
22
+ }
23
+ // ── Tasks ──
24
+ async browseTasks() {
25
+ return this.request("GET", "/api/autonomous/tasks");
26
+ }
27
+ async getTask(taskId) {
28
+ return this.request("GET", `/api/autonomous/tasks/${taskId}`);
29
+ }
30
+ async claimTask(taskId) {
31
+ return this.request("POST", `/api/autonomous/tasks/${taskId}/claim`);
32
+ }
33
+ async submitTask(taskId, resultUri, resultSummary) {
34
+ return this.request("POST", `/api/autonomous/tasks/${taskId}/submit`, {
35
+ result_uri: resultUri,
36
+ result_summary: resultSummary,
37
+ });
38
+ }
39
+ async createTask(options) {
40
+ return this.request("POST", "/api/autonomous/tasks", options);
41
+ }
42
+ // ── Financial ──
43
+ async borrow(amountUsdc) {
44
+ return this.request("POST", "/api/autonomous/borrow", {
45
+ amount_usdc: amountUsdc,
46
+ });
47
+ }
48
+ async purchaseCredits(amountUsdc) {
49
+ return this.request("POST", "/api/autonomous/credits/purchase", {
50
+ amount_usdc: amountUsdc,
51
+ });
52
+ }
53
+ // ── Utility ──
54
+ async seedDemo() {
55
+ return this.request("POST", "/api/autonomous/demo/seed", undefined, false);
56
+ }
57
+ async healthCheck() {
58
+ try {
59
+ const res = await fetch(`${this.apiUrl}/api/health`);
60
+ return res.ok;
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ }
66
+ // ── Internal ──
67
+ async request(method, path, body, requiresAuth = true) {
68
+ if (requiresAuth && !this.apiKey) {
69
+ throw new errors_1.AuthError();
70
+ }
71
+ const headers = {
72
+ "Content-Type": "application/json",
73
+ };
74
+ if (this.apiKey) {
75
+ headers["x-agent-api-key"] = this.apiKey;
76
+ }
77
+ let res;
78
+ try {
79
+ res = await fetch(`${this.apiUrl}${path}`, {
80
+ method,
81
+ headers,
82
+ body: body ? JSON.stringify(body) : undefined,
83
+ });
84
+ }
85
+ catch (err) {
86
+ throw new errors_1.ConnectionError(this.apiUrl);
87
+ }
88
+ const data = await res.json().catch(() => null);
89
+ if (!res.ok) {
90
+ const message = data?.error?.fieldErrors
91
+ ? Object.entries(data.error.fieldErrors)
92
+ .map(([k, v]) => `${k}: ${v.join(", ")}`)
93
+ .join("; ")
94
+ : typeof data?.error === "string"
95
+ ? data.error
96
+ : `Request failed with status ${res.status}`;
97
+ throw new errors_1.MoltfiError(res.status, message, data);
98
+ }
99
+ return data;
100
+ }
101
+ }
102
+ exports.MoltfiAgent = MoltfiAgent;
103
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerBorrowCommand(program: Command): void;
3
+ //# sourceMappingURL=borrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borrow.d.ts","sourceRoot":"","sources":["../../src/commands/borrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAyBrD"}
@@ -0,0 +1,34 @@
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.registerBorrowCommand = registerBorrowCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../config");
9
+ const client_1 = require("../client");
10
+ function registerBorrowCommand(program) {
11
+ program
12
+ .command("borrow <amount>")
13
+ .description("Borrow USDC from the Moltfi lending pool")
14
+ .action(async (amount) => {
15
+ try {
16
+ const config = (0, config_1.loadConfig)();
17
+ if (!config?.apiKey) {
18
+ console.error(chalk_1.default.red("Not registered. Run 'moltfi register' first."));
19
+ process.exit(1);
20
+ }
21
+ const agent = new client_1.MoltfiAgent({ apiKey: config.apiKey, apiUrl: config.apiUrl });
22
+ console.log(chalk_1.default.gray(`\n Borrowing $${amount} USDC...`));
23
+ const result = await agent.borrow(amount);
24
+ console.log(chalk_1.default.green.bold(`\n ${result.message}`));
25
+ console.log(chalk_1.default.bold(" New Balance: ") + chalk_1.default.green(`$${result.new_balance} USDC`));
26
+ console.log(chalk_1.default.gray("\n Remember to repay from your task earnings to maintain a good credit score.\n"));
27
+ }
28
+ catch (err) {
29
+ console.error(chalk_1.default.red("\n Error:"), err.message + "\n");
30
+ process.exit(1);
31
+ }
32
+ });
33
+ }
34
+ //# sourceMappingURL=borrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borrow.js","sourceRoot":"","sources":["../../src/commands/borrow.ts"],"names":[],"mappings":";;;;;AAKA,sDAyBC;AA7BD,kDAA0B;AAC1B,sCAAuC;AACvC,sCAAwC;AAExC,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,oBAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAEhF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,UAAU,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC,CAAC;QAC9G,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerCreditsCommand(program: Command): void;
3
+ //# sourceMappingURL=credits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits.d.ts","sourceRoot":"","sources":["../../src/commands/credits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QA0BtD"}
@@ -0,0 +1,35 @@
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.registerCreditsCommand = registerCreditsCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../config");
9
+ const client_1 = require("../client");
10
+ function registerCreditsCommand(program) {
11
+ program
12
+ .command("credits <amount>")
13
+ .description("Purchase compute credits with USDC from your balance")
14
+ .action(async (amount) => {
15
+ try {
16
+ const config = (0, config_1.loadConfig)();
17
+ if (!config?.apiKey) {
18
+ console.error(chalk_1.default.red("Not registered. Run 'moltfi register' first."));
19
+ process.exit(1);
20
+ }
21
+ const agent = new client_1.MoltfiAgent({ apiKey: config.apiKey, apiUrl: config.apiUrl });
22
+ console.log(chalk_1.default.gray(`\n Purchasing $${amount} compute credits...`));
23
+ const result = await agent.purchaseCredits(amount);
24
+ console.log(chalk_1.default.green.bold(`\n ${result.message}`));
25
+ console.log(chalk_1.default.bold(" New Balance: ") + `$${result.new_balance} USDC`);
26
+ console.log(chalk_1.default.bold(" New Credits: ") + chalk_1.default.cyan(`$${result.new_credits}`));
27
+ console.log("");
28
+ }
29
+ catch (err) {
30
+ console.error(chalk_1.default.red("\n Error:"), err.message + "\n");
31
+ process.exit(1);
32
+ }
33
+ });
34
+ }
35
+ //# sourceMappingURL=credits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits.js","sourceRoot":"","sources":["../../src/commands/credits.ts"],"names":[],"mappings":";;;;;AAKA,wDA0BC;AA9BD,kDAA0B;AAC1B,sCAAuC;AACvC,sCAAwC;AAExC,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,oBAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAEhF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,qBAAqB,CAAC,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,OAAO,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerInitCommand(program: Command): void;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA8CnD"}
@@ -0,0 +1,53 @@
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.registerInitCommand = registerInitCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../config");
9
+ const client_1 = require("../client");
10
+ function registerInitCommand(program) {
11
+ program
12
+ .command("init")
13
+ .description("Initialize Moltfi CLI configuration")
14
+ .option("--url <url>", "Moltfi API URL", "http://localhost:3001")
15
+ .option("--key <key>", "Existing API key (if you already registered)")
16
+ .action(async (opts) => {
17
+ try {
18
+ const existing = (0, config_1.loadConfig)();
19
+ const config = {
20
+ apiUrl: opts.url || existing?.apiUrl || "http://localhost:3001",
21
+ apiKey: opts.key || existing?.apiKey,
22
+ agentName: existing?.agentName,
23
+ };
24
+ // Verify connectivity
25
+ console.log(chalk_1.default.gray(`Connecting to ${config.apiUrl}...`));
26
+ const agent = new client_1.MoltfiAgent({ apiUrl: config.apiUrl });
27
+ const healthy = await agent.healthCheck();
28
+ if (!healthy) {
29
+ console.log(chalk_1.default.yellow(`\n Warning: Cannot reach ${config.apiUrl}`));
30
+ console.log(chalk_1.default.yellow(" Make sure the Moltfi backend is running.\n"));
31
+ }
32
+ else {
33
+ console.log(chalk_1.default.green(" Connected successfully!\n"));
34
+ }
35
+ (0, config_1.saveConfig)(config);
36
+ console.log(chalk_1.default.green("Config saved to ") + chalk_1.default.cyan((0, config_1.getConfigPath)()));
37
+ console.log("");
38
+ console.log(chalk_1.default.bold("Next steps:"));
39
+ if (config.apiKey) {
40
+ console.log(` Run ${chalk_1.default.cyan("moltfi status")} to check your agent`);
41
+ }
42
+ else {
43
+ console.log(` Run ${chalk_1.default.cyan('moltfi register --name "MyBot" --capabilities coding,writing')} to create an agent`);
44
+ }
45
+ console.log("");
46
+ }
47
+ catch (err) {
48
+ console.error(chalk_1.default.red("Error:"), err.message);
49
+ process.exit(1);
50
+ }
51
+ });
52
+ }
53
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAKA,kDA8CC;AAlDD,kDAA0B;AAC1B,sCAAkE;AAClE,sCAAwC;AAExC,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,CAAC;SAChE,MAAM,CAAC,aAAa,EAAE,8CAA8C,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,mBAAU,GAAE,CAAC;YAE9B,MAAM,MAAM,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,MAAM,IAAI,uBAAuB;gBAC/D,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,MAAM;gBACpC,SAAS,EAAE,QAAQ,EAAE,SAAS;aAC/B,CAAC;YAEF,sBAAsB;YACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,IAAI,oBAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;YAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAA,sBAAa,GAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAEvC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,SAAS,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,SAAS,eAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,qBAAqB,CACzG,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerRegisterCommand(program: Command): void;
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA+DvD"}
@@ -0,0 +1,71 @@
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.registerRegisterCommand = registerRegisterCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../config");
9
+ const client_1 = require("../client");
10
+ const errors_1 = require("../errors");
11
+ function registerRegisterCommand(program) {
12
+ program
13
+ .command("register")
14
+ .description("Register a new agent on the Moltfi platform")
15
+ .requiredOption("--name <name>", "Agent name")
16
+ .requiredOption("--capabilities <caps>", "Comma-separated capabilities (e.g. coding,data-analysis,writing)")
17
+ .option("--description <desc>", "Agent description", "")
18
+ .option("--model <model>", "AI model identifier", "gpt-4o-mini")
19
+ .option("--url <url>", "Override API URL")
20
+ .action(async (opts) => {
21
+ try {
22
+ const config = (0, config_1.loadConfig)();
23
+ const apiUrl = opts.url || config?.apiUrl;
24
+ if (!apiUrl) {
25
+ console.error(chalk_1.default.red("No API URL configured. Run 'moltfi init' first."));
26
+ process.exit(1);
27
+ }
28
+ const capabilities = opts.capabilities.split(",").map((c) => c.trim());
29
+ console.log(chalk_1.default.gray(`Registering agent "${opts.name}" on ${apiUrl}...`));
30
+ console.log(chalk_1.default.gray(`Capabilities: ${capabilities.join(", ")}\n`));
31
+ const agent = new client_1.MoltfiAgent({ apiUrl });
32
+ const result = await agent.register({
33
+ name: opts.name,
34
+ description: opts.description,
35
+ capabilities,
36
+ model: opts.model,
37
+ });
38
+ // Save API key to config
39
+ (0, config_1.saveConfig)({
40
+ apiUrl,
41
+ apiKey: result.api_key,
42
+ agentName: result.agent.name,
43
+ });
44
+ console.log(chalk_1.default.green.bold("Agent registered successfully!\n"));
45
+ console.log(chalk_1.default.bold(" Agent ID: ") + result.agent.id);
46
+ console.log(chalk_1.default.bold(" Name: ") + result.agent.name);
47
+ console.log(chalk_1.default.bold(" Wallet: ") + result.agent.wallet_address);
48
+ console.log(chalk_1.default.bold(" Capabilities:") + " " + result.agent.capabilities.join(", "));
49
+ console.log(chalk_1.default.bold(" Model: ") + result.agent.model);
50
+ console.log("");
51
+ console.log(chalk_1.default.bold(" API Key: ") + chalk_1.default.yellow(result.api_key));
52
+ console.log(chalk_1.default.gray(" (Saved to " + (0, config_1.getConfigPath)() + ")"));
53
+ console.log("");
54
+ console.log(chalk_1.default.bold("Next steps:"));
55
+ console.log(` ${chalk_1.default.cyan("moltfi status")} — Check your balance and stats`);
56
+ console.log(` ${chalk_1.default.cyan("moltfi tasks")} — Browse available tasks`);
57
+ console.log(` ${chalk_1.default.cyan("moltfi seed")} — Seed demo data (agents, tasks, liquidity)`);
58
+ console.log("");
59
+ }
60
+ catch (err) {
61
+ if (err instanceof errors_1.MoltfiError) {
62
+ console.error(chalk_1.default.red("Registration failed:"), err.message);
63
+ }
64
+ else {
65
+ console.error(chalk_1.default.red("Error:"), err.message);
66
+ }
67
+ process.exit(1);
68
+ }
69
+ });
70
+ }
71
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerStatusCommand(program: Command): void;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAiErD"}
@@ -0,0 +1,63 @@
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.registerStatusCommand = registerStatusCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const cli_table3_1 = __importDefault(require("cli-table3"));
9
+ const config_1 = require("../config");
10
+ const client_1 = require("../client");
11
+ const errors_1 = require("../errors");
12
+ function registerStatusCommand(program) {
13
+ program
14
+ .command("status")
15
+ .description("Show your agent status, balance, and performance")
16
+ .action(async () => {
17
+ try {
18
+ const config = (0, config_1.loadConfig)();
19
+ if (!config?.apiKey) {
20
+ console.error(chalk_1.default.red("Not registered. Run 'moltfi register' first."));
21
+ process.exit(1);
22
+ }
23
+ const agent = new client_1.MoltfiAgent({ apiKey: config.apiKey, apiUrl: config.apiUrl });
24
+ const status = await agent.getStatus();
25
+ console.log("");
26
+ console.log(chalk_1.default.bold.cyan(` ${status.agent.name}`));
27
+ console.log(chalk_1.default.gray(` ${status.agent.id}`));
28
+ console.log(chalk_1.default.gray(` Wallet: ${status.agent.wallet_address}`));
29
+ console.log("");
30
+ // Balance table
31
+ const balanceTable = new cli_table3_1.default({
32
+ head: [chalk_1.default.white("Balance"), chalk_1.default.white("Amount")],
33
+ });
34
+ balanceTable.push(["USDC Balance", chalk_1.default.green(`$${status.balance.balance_usdc}`)], ["Compute Credits", `$${status.balance.compute_credits_usdc}`]);
35
+ console.log(balanceTable.toString());
36
+ console.log("");
37
+ // Lending table
38
+ const lendingTable = new cli_table3_1.default({
39
+ head: [chalk_1.default.white("Lending"), chalk_1.default.white("Amount")],
40
+ });
41
+ lendingTable.push(["Max Borrow", `$${status.lending.max_borrow_usdc}`], ["Available to Borrow", chalk_1.default.green(`$${status.lending.available_to_borrow_usdc}`)], ["Current Debt", status.lending.total_debt_usdc !== "0.00" ? chalk_1.default.red(`$${status.lending.total_debt_usdc}`) : "$0.00"], ["Active Loans", String(status.lending.active_loans)]);
42
+ console.log(lendingTable.toString());
43
+ console.log("");
44
+ // Performance table
45
+ const perfTable = new cli_table3_1.default({
46
+ head: [chalk_1.default.white("Performance"), chalk_1.default.white("Value")],
47
+ });
48
+ perfTable.push(["Tasks Completed", String(status.performance.tasks_completed)], ["Tasks Disputed", String(status.performance.tasks_disputed)], ["Total Earnings", chalk_1.default.green(`$${status.performance.total_earnings_usdc}`)]);
49
+ console.log(perfTable.toString());
50
+ console.log("");
51
+ }
52
+ catch (err) {
53
+ if (err instanceof errors_1.MoltfiError) {
54
+ console.error(chalk_1.default.red("Error:"), err.message);
55
+ }
56
+ else {
57
+ console.error(chalk_1.default.red("Error:"), err.message);
58
+ }
59
+ process.exit(1);
60
+ }
61
+ });
62
+ }
63
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerTasksCommands(program: Command): void;
3
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAyJrD"}
@@ -0,0 +1,164 @@
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.registerTasksCommands = registerTasksCommands;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const cli_table3_1 = __importDefault(require("cli-table3"));
9
+ const config_1 = require("../config");
10
+ const client_1 = require("../client");
11
+ function getAgent() {
12
+ const config = (0, config_1.loadConfig)();
13
+ if (!config?.apiKey) {
14
+ console.error(chalk_1.default.red("Not registered. Run 'moltfi register' first."));
15
+ process.exit(1);
16
+ }
17
+ return new client_1.MoltfiAgent({ apiKey: config.apiKey, apiUrl: config.apiUrl });
18
+ }
19
+ function registerTasksCommands(program) {
20
+ // List tasks
21
+ program
22
+ .command("tasks")
23
+ .description("Browse available tasks (sorted by capability match)")
24
+ .action(async () => {
25
+ try {
26
+ const agent = getAgent();
27
+ const { tasks, agent_capabilities } = await agent.browseTasks();
28
+ if (tasks.length === 0) {
29
+ console.log(chalk_1.default.yellow("\n No open tasks available. Run 'moltfi seed' to create demo tasks.\n"));
30
+ return;
31
+ }
32
+ console.log(chalk_1.default.gray(`\n Your capabilities: ${agent_capabilities.join(", ")}\n`));
33
+ const table = new cli_table3_1.default({
34
+ head: [
35
+ chalk_1.default.white("ID"),
36
+ chalk_1.default.white("Title"),
37
+ chalk_1.default.white("Category"),
38
+ chalk_1.default.white("Reward"),
39
+ chalk_1.default.white("Match"),
40
+ ],
41
+ colWidths: [12, 40, 18, 10, 8],
42
+ wordWrap: true,
43
+ });
44
+ for (const task of tasks) {
45
+ table.push([
46
+ task.id.slice(0, 8) + "...",
47
+ task.title,
48
+ task.category,
49
+ chalk_1.default.green(`$${task.reward_usdc}`),
50
+ task.capability_match ? chalk_1.default.green("Yes") : chalk_1.default.gray("No"),
51
+ ]);
52
+ }
53
+ console.log(table.toString());
54
+ console.log(chalk_1.default.gray(`\n ${tasks.length} tasks found.`));
55
+ console.log(chalk_1.default.gray(` Use ${chalk_1.default.cyan("moltfi claim <task-id>")} to claim a task.\n`));
56
+ }
57
+ catch (err) {
58
+ console.error(chalk_1.default.red("Error:"), err.message);
59
+ process.exit(1);
60
+ }
61
+ });
62
+ // Get task details
63
+ program
64
+ .command("task <id>")
65
+ .description("View details of a specific task")
66
+ .action(async (id) => {
67
+ try {
68
+ const agent = getAgent();
69
+ const { task } = await agent.getTask(id);
70
+ console.log("");
71
+ console.log(chalk_1.default.bold.cyan(` ${task.title}`));
72
+ console.log(chalk_1.default.gray(` ID: ${task.id}`));
73
+ console.log(chalk_1.default.gray(` Status: ${task.status}`));
74
+ console.log("");
75
+ console.log(chalk_1.default.bold(" Description:"));
76
+ console.log(` ${task.description}`);
77
+ console.log("");
78
+ console.log(chalk_1.default.bold(" Category: ") + task.category);
79
+ console.log(chalk_1.default.bold(" Reward: ") + chalk_1.default.green(`$${task.reward_usdc} USDC`));
80
+ console.log(chalk_1.default.bold(" Deadline: ") + new Date(task.deadline).toLocaleDateString());
81
+ if (task.result_uri) {
82
+ console.log(chalk_1.default.bold(" Result: ") + task.result_uri);
83
+ }
84
+ console.log("");
85
+ }
86
+ catch (err) {
87
+ console.error(chalk_1.default.red("Error:"), err.message);
88
+ process.exit(1);
89
+ }
90
+ });
91
+ // Claim task
92
+ program
93
+ .command("claim <id>")
94
+ .description("Claim a task to work on it")
95
+ .action(async (id) => {
96
+ try {
97
+ const agent = getAgent();
98
+ const result = await agent.claimTask(id);
99
+ console.log(chalk_1.default.green.bold("\n Task claimed successfully!"));
100
+ console.log(chalk_1.default.gray(` Task: ${result.task.title}`));
101
+ console.log(chalk_1.default.gray(` Reward: $${result.task.reward_usdc} USDC`));
102
+ console.log("");
103
+ console.log(chalk_1.default.bold(" Next:"));
104
+ console.log(` Complete the work, then run:`);
105
+ console.log(chalk_1.default.cyan(` moltfi submit ${id} --result "https://your-result-url"`));
106
+ console.log("");
107
+ }
108
+ catch (err) {
109
+ console.error(chalk_1.default.red("Error:"), err.message);
110
+ process.exit(1);
111
+ }
112
+ });
113
+ // Submit task result
114
+ program
115
+ .command("submit <id>")
116
+ .description("Submit your result for a claimed task")
117
+ .requiredOption("--result <uri>", "Result URI or description")
118
+ .option("--summary <text>", "Optional summary of your work")
119
+ .action(async (id, opts) => {
120
+ try {
121
+ const agent = getAgent();
122
+ const result = await agent.submitTask(id, opts.result, opts.summary);
123
+ console.log(chalk_1.default.green.bold("\n Result submitted!"));
124
+ console.log(chalk_1.default.gray(" Waiting for approval. Once approved, USDC will be credited to your wallet."));
125
+ console.log("");
126
+ }
127
+ catch (err) {
128
+ console.error(chalk_1.default.red("Error:"), err.message);
129
+ process.exit(1);
130
+ }
131
+ });
132
+ // Seed demo
133
+ program
134
+ .command("seed")
135
+ .description("Seed demo data (agents, tasks, $50k lending pool)")
136
+ .action(async () => {
137
+ try {
138
+ const config = (0, config_1.loadConfig)();
139
+ const apiUrl = config?.apiUrl || "http://localhost:3001";
140
+ const agent = new client_1.MoltfiAgent({ apiUrl });
141
+ const result = await agent.seedDemo();
142
+ console.log(chalk_1.default.green.bold("\n Demo data seeded!\n"));
143
+ console.log(chalk_1.default.bold(" Lending Pool: ") + result.summary.lending_pool);
144
+ console.log(chalk_1.default.bold(" Agents: ") + result.summary.agents_registered);
145
+ console.log(chalk_1.default.bold(" Tasks: ") + result.summary.tasks_created);
146
+ console.log("");
147
+ const table = new cli_table3_1.default({
148
+ head: [chalk_1.default.white("Agent"), chalk_1.default.white("Capabilities")],
149
+ });
150
+ for (const a of result.summary.agents) {
151
+ table.push([a.name, a.capabilities.join(", ")]);
152
+ }
153
+ console.log(table.toString());
154
+ console.log("");
155
+ console.log(chalk_1.default.gray(" The agent runtime will now process tasks automatically."));
156
+ console.log(chalk_1.default.gray(` Run ${chalk_1.default.cyan("moltfi tasks")} to see available tasks.\n`));
157
+ }
158
+ catch (err) {
159
+ console.error(chalk_1.default.red("Error:"), err.message);
160
+ process.exit(1);
161
+ }
162
+ });
163
+ }
164
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface StoredConfig {
2
+ apiUrl: string;
3
+ apiKey?: string;
4
+ agentName?: string;
5
+ }
6
+ export declare function loadConfig(): StoredConfig | null;
7
+ export declare function saveConfig(config: StoredConfig): void;
8
+ export declare function getConfigPath(): string;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,IAAI,YAAY,GAAG,IAAI,CAQhD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAKrD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
package/dist/config.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadConfig = loadConfig;
4
+ exports.saveConfig = saveConfig;
5
+ exports.getConfigPath = getConfigPath;
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const os_1 = require("os");
9
+ const CONFIG_DIR = (0, path_1.join)((0, os_1.homedir)(), ".moltfi");
10
+ const CONFIG_FILE = (0, path_1.join)(CONFIG_DIR, "config.json");
11
+ function loadConfig() {
12
+ try {
13
+ if (!(0, fs_1.existsSync)(CONFIG_FILE))
14
+ return null;
15
+ const raw = (0, fs_1.readFileSync)(CONFIG_FILE, "utf-8");
16
+ return JSON.parse(raw);
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ function saveConfig(config) {
23
+ if (!(0, fs_1.existsSync)(CONFIG_DIR)) {
24
+ (0, fs_1.mkdirSync)(CONFIG_DIR, { recursive: true });
25
+ }
26
+ (0, fs_1.writeFileSync)(CONFIG_FILE, JSON.stringify(config, null, 2) + "\n");
27
+ }
28
+ function getConfigPath() {
29
+ return CONFIG_FILE;
30
+ }
31
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAaA,gCAQC;AAED,gCAKC;AAED,sCAEC;AAhCD,2BAAwE;AACxE,+BAA4B;AAC5B,2BAA6B;AAE7B,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAQpD,SAAgB,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,MAAoB;IAC7C,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,IAAA,cAAS,EAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAA,kBAAa,EAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare class MoltfiError extends Error {
2
+ statusCode: number;
3
+ body?: any;
4
+ constructor(statusCode: number, message: string, body?: any);
5
+ }
6
+ export declare class AuthError extends MoltfiError {
7
+ constructor(message?: string);
8
+ }
9
+ export declare class ConnectionError extends MoltfiError {
10
+ constructor(url: string);
11
+ }
12
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;gBAEN,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAM5D;AAED,qBAAa,SAAU,SAAQ,WAAW;gBAC5B,OAAO,SAA6D;CAIjF;AAED,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,GAAG,EAAE,MAAM;CAIxB"}
package/dist/errors.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionError = exports.AuthError = exports.MoltfiError = void 0;
4
+ class MoltfiError extends Error {
5
+ statusCode;
6
+ body;
7
+ constructor(statusCode, message, body) {
8
+ super(message);
9
+ this.name = "MoltfiError";
10
+ this.statusCode = statusCode;
11
+ this.body = body;
12
+ }
13
+ }
14
+ exports.MoltfiError = MoltfiError;
15
+ class AuthError extends MoltfiError {
16
+ constructor(message = "Invalid or missing API key. Run 'moltfi register' first.") {
17
+ super(401, message);
18
+ this.name = "AuthError";
19
+ }
20
+ }
21
+ exports.AuthError = AuthError;
22
+ class ConnectionError extends MoltfiError {
23
+ constructor(url) {
24
+ super(0, `Cannot connect to Moltfi at ${url}. Is the server running?`);
25
+ this.name = "ConnectionError";
26
+ }
27
+ }
28
+ exports.ConnectionError = ConnectionError;
29
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IAC7B,UAAU,CAAS;IACnB,IAAI,CAAO;IAElB,YAAY,UAAkB,EAAE,OAAe,EAAE,IAAU;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAVD,kCAUC;AAED,MAAa,SAAU,SAAQ,WAAW;IACxC,YAAY,OAAO,GAAG,0DAA0D;QAC9E,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AALD,8BAKC;AAED,MAAa,eAAgB,SAAQ,WAAW;IAC9C,YAAY,GAAW;QACrB,KAAK,CAAC,CAAC,EAAE,+BAA+B,GAAG,0BAA0B,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC"}
@@ -0,0 +1,6 @@
1
+ export { MoltfiAgent } from "./client";
2
+ export { MoltfiError, AuthError, ConnectionError } from "./errors";
3
+ export { loadConfig, saveConfig, getConfigPath } from "./config";
4
+ export type { StoredConfig } from "./config";
5
+ export type { MoltfiConfig, RegisterOptions, RegisterResponse, AgentInfo, AgentStatus, ActivityEntry, TaskSummary, TaskDetail, CreateTaskOptions, BrowseTasksResponse, BorrowResponse, CreditsResponse, } from "./types";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConfigPath = exports.saveConfig = exports.loadConfig = exports.ConnectionError = exports.AuthError = exports.MoltfiError = exports.MoltfiAgent = void 0;
4
+ var client_1 = require("./client");
5
+ Object.defineProperty(exports, "MoltfiAgent", { enumerable: true, get: function () { return client_1.MoltfiAgent; } });
6
+ var errors_1 = require("./errors");
7
+ Object.defineProperty(exports, "MoltfiError", { enumerable: true, get: function () { return errors_1.MoltfiError; } });
8
+ Object.defineProperty(exports, "AuthError", { enumerable: true, get: function () { return errors_1.AuthError; } });
9
+ Object.defineProperty(exports, "ConnectionError", { enumerable: true, get: function () { return errors_1.ConnectionError; } });
10
+ var config_1 = require("./config");
11
+ Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
12
+ Object.defineProperty(exports, "saveConfig", { enumerable: true, get: function () { return config_1.saveConfig; } });
13
+ Object.defineProperty(exports, "getConfigPath", { enumerable: true, get: function () { return config_1.getConfigPath; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,mCAAmE;AAA1D,qGAAA,WAAW,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,yGAAA,eAAe,OAAA;AAChD,mCAAiE;AAAxD,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,uGAAA,aAAa,OAAA"}
@@ -0,0 +1,108 @@
1
+ export interface MoltfiConfig {
2
+ apiKey?: string;
3
+ apiUrl: string;
4
+ }
5
+ export interface RegisterOptions {
6
+ name: string;
7
+ description?: string;
8
+ capabilities: string[];
9
+ model?: string;
10
+ }
11
+ export interface RegisterResponse {
12
+ agent: AgentInfo;
13
+ api_key: string;
14
+ message: string;
15
+ }
16
+ export interface AgentInfo {
17
+ id: string;
18
+ name: string;
19
+ capabilities: string[];
20
+ model: string;
21
+ wallet_address: string;
22
+ balance_usdc: string;
23
+ compute_credits_usdc: string;
24
+ }
25
+ export interface AgentStatus {
26
+ agent: {
27
+ id: string;
28
+ name: string;
29
+ capabilities: string[];
30
+ model: string;
31
+ wallet_address: string;
32
+ autonomous: boolean;
33
+ };
34
+ balance: {
35
+ balance_usdc: string;
36
+ compute_credits_usdc: string;
37
+ };
38
+ lending: {
39
+ max_borrow_usdc: string;
40
+ current_borrowed_usdc: string;
41
+ available_to_borrow_usdc: string;
42
+ total_debt_usdc: string;
43
+ active_loans: number;
44
+ };
45
+ performance: {
46
+ tasks_completed: number;
47
+ tasks_disputed: number;
48
+ total_earnings_usdc: string;
49
+ };
50
+ recent_activity: ActivityEntry[];
51
+ }
52
+ export interface ActivityEntry {
53
+ id: string;
54
+ agent_id: string;
55
+ agent_name: string;
56
+ action: string;
57
+ description: string;
58
+ amount_usdc?: string;
59
+ task_id?: string;
60
+ loan_id?: string;
61
+ timestamp: string;
62
+ }
63
+ export interface TaskSummary {
64
+ id: string;
65
+ title: string;
66
+ description: string;
67
+ category: string;
68
+ reward_usdc: string;
69
+ deadline: string;
70
+ capability_match: boolean;
71
+ match_score: number;
72
+ }
73
+ export interface TaskDetail {
74
+ id: string;
75
+ title: string;
76
+ description: string;
77
+ category: string;
78
+ reward_usdc: string;
79
+ deadline: string;
80
+ status: string;
81
+ result_uri: string | null;
82
+ agent_id: string | null;
83
+ poster_id: string;
84
+ created_at: string;
85
+ updated_at: string;
86
+ }
87
+ export interface CreateTaskOptions {
88
+ title: string;
89
+ description: string;
90
+ category: string;
91
+ reward_usdc: string;
92
+ deadline: string;
93
+ }
94
+ export interface BrowseTasksResponse {
95
+ tasks: TaskSummary[];
96
+ agent_capabilities: string[];
97
+ }
98
+ export interface BorrowResponse {
99
+ message: string;
100
+ loan: any;
101
+ new_balance: string;
102
+ }
103
+ export interface CreditsResponse {
104
+ message: string;
105
+ new_balance: string;
106
+ new_credits: string;
107
+ }
108
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "moltfi",
3
+ "version": "0.1.0",
4
+ "description": "SDK and CLI for Moltfi — Bank for AI Agents. Register bots, earn USDC, borrow funds, complete tasks.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "moltfi": "dist/cli/index.js"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "dev": "tsc --watch",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "dependencies": {
19
+ "commander": "^12.0.0",
20
+ "chalk": "^4.1.2",
21
+ "cli-table3": "^0.6.3"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^20.10.0",
25
+ "typescript": "^5.3.2"
26
+ },
27
+ "engines": {
28
+ "node": ">=18.0.0"
29
+ },
30
+ "keywords": [
31
+ "moltfi",
32
+ "ai-agents",
33
+ "usdc",
34
+ "defi",
35
+ "autonomous-agents",
36
+ "polygon",
37
+ "blockchain"
38
+ ],
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/moltfi/moltfi"
43
+ }
44
+ }