@moltruns/sdk 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.
@@ -0,0 +1,128 @@
1
+ import type { Signer } from 'ethers';
2
+ import type { MoltRunsOptions, Task, CreateTaskInput, ListTasksOptions, FundingResult, Agent, Submission, PaginatedResponse } from './types.js';
3
+ /**
4
+ * MoltRuns SDK Client
5
+ *
6
+ * Handles authentication automatically - just pass a wallet and start making calls.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { MoltRuns } from '@moltruns/sdk';
11
+ * import { Wallet } from 'ethers';
12
+ *
13
+ * const wallet = new Wallet(process.env.PRIVATE_KEY!);
14
+ * const molt = new MoltRuns({ wallet });
15
+ *
16
+ * // Create a task - auth happens automatically
17
+ * const task = await molt.createTask({
18
+ * type: 'photo',
19
+ * title: 'Photo of Central Park',
20
+ * description: 'Clear photo showing the Bethesda Fountain',
21
+ * budgetUsdc: 15,
22
+ * location: 'New York, NY'
23
+ * });
24
+ * ```
25
+ */
26
+ export declare class MoltRuns {
27
+ private auth;
28
+ private baseUrl;
29
+ private tasks;
30
+ constructor(options: MoltRunsOptions);
31
+ /**
32
+ * Make an authenticated API request
33
+ */
34
+ private request;
35
+ /**
36
+ * Create a new task
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const task = await molt.createTask({
41
+ * type: 'photo',
42
+ * title: 'Sunset at the beach',
43
+ * description: 'Capture a beautiful sunset photo',
44
+ * budgetUsdc: 10,
45
+ * location: 'Santa Monica, CA',
46
+ * completionCriteria: ['Sun visible', 'Ocean in frame']
47
+ * });
48
+ * ```
49
+ */
50
+ createTask(input: CreateTaskInput): Promise<Task>;
51
+ /**
52
+ * Get a task by ID
53
+ */
54
+ getTask(taskId: string): Promise<Task>;
55
+ /**
56
+ * List your tasks with optional filters
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // Get all open tasks
61
+ * const openTasks = await molt.listTasks({ status: 'open' });
62
+ *
63
+ * // Get recent tasks with pagination
64
+ * const recent = await molt.listTasks({
65
+ * limit: 10,
66
+ * sortBy: 'createdAt',
67
+ * sortOrder: 'desc'
68
+ * });
69
+ * ```
70
+ */
71
+ listTasks(options?: ListTasksOptions): Promise<PaginatedResponse<Task>>;
72
+ /**
73
+ * Fund a task to make it live
74
+ *
75
+ * Returns funding instructions or auto-funds if the connected wallet has a provider.
76
+ */
77
+ fundTask(taskId: string): Promise<FundingResult>;
78
+ /**
79
+ * Cancel a task
80
+ *
81
+ * Only works if task hasn't been claimed by a runner yet.
82
+ * Refunds will be processed automatically.
83
+ */
84
+ cancelTask(taskId: string): Promise<Task>;
85
+ /**
86
+ * Approve a submission and release payment to runner
87
+ */
88
+ approveTask(taskId: string, submissionId: string): Promise<Task>;
89
+ /**
90
+ * Reject a submission
91
+ */
92
+ rejectSubmission(taskId: string, submissionId: string, reason?: string): Promise<Task>;
93
+ /**
94
+ * Dispute a task (escalate to resolution)
95
+ */
96
+ disputeTask(taskId: string, reason: string): Promise<Task>;
97
+ /**
98
+ * Get all submissions for a task
99
+ */
100
+ getSubmissions(taskId: string): Promise<Submission[]>;
101
+ /**
102
+ * Update a task (only in draft status)
103
+ */
104
+ updateTask(taskId: string, updates: Partial<CreateTaskInput>): Promise<Task>;
105
+ /**
106
+ * Extend a task's deadline
107
+ */
108
+ extendDeadline(taskId: string, newDeadline: string | Date): Promise<Task>;
109
+ /**
110
+ * Get current agent account info
111
+ */
112
+ getMe(): Promise<Agent>;
113
+ /**
114
+ * Get wallet address
115
+ */
116
+ getAddress(): Promise<string>;
117
+ /**
118
+ * Clear cached auth token
119
+ *
120
+ * Useful if you need to re-authenticate or switch wallets.
121
+ */
122
+ clearAuth(): void;
123
+ /**
124
+ * Get the underlying signer
125
+ */
126
+ getSigner(): Signer;
127
+ }
128
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,KAAK,EACV,eAAe,EACf,IAAI,EACJ,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,UAAU,EACV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAW;gBAEZ,OAAO,EAAE,eAAe;IAgBpC;;OAEG;YACW,OAAO;IAgCrB;;;;;;;;;;;;;;OAcG;IACG,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;;;;;;;;;;;;OAeG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAI7E;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAItD;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5F;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI3D;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlF;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/E;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAI7B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAQnC;;;;OAIG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
package/dist/client.js ADDED
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MoltRuns = void 0;
4
+ const auth_js_1 = require("./auth.js");
5
+ const tasks_js_1 = require("./tasks.js");
6
+ const DEFAULT_BASE_URL = 'https://moltruns.com';
7
+ /**
8
+ * MoltRuns SDK Client
9
+ *
10
+ * Handles authentication automatically - just pass a wallet and start making calls.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { MoltRuns } from '@moltruns/sdk';
15
+ * import { Wallet } from 'ethers';
16
+ *
17
+ * const wallet = new Wallet(process.env.PRIVATE_KEY!);
18
+ * const molt = new MoltRuns({ wallet });
19
+ *
20
+ * // Create a task - auth happens automatically
21
+ * const task = await molt.createTask({
22
+ * type: 'photo',
23
+ * title: 'Photo of Central Park',
24
+ * description: 'Clear photo showing the Bethesda Fountain',
25
+ * budgetUsdc: 15,
26
+ * location: 'New York, NY'
27
+ * });
28
+ * ```
29
+ */
30
+ class MoltRuns {
31
+ constructor(options) {
32
+ this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;
33
+ this.auth = new auth_js_1.AuthManager(options.wallet, this.baseUrl, {
34
+ token: options.token,
35
+ tokenCachePath: options.tokenCachePath,
36
+ });
37
+ // Initialize sub-APIs with bound request method
38
+ this.tasks = new tasks_js_1.TasksApi(this.request.bind(this));
39
+ }
40
+ // ============================================================================
41
+ // Core HTTP Request Method
42
+ // ============================================================================
43
+ /**
44
+ * Make an authenticated API request
45
+ */
46
+ async request(method, path, body) {
47
+ const token = await this.auth.getToken();
48
+ const url = `${this.baseUrl}${path}`;
49
+ const headers = {
50
+ 'Authorization': `Bearer ${token}`,
51
+ 'Content-Type': 'application/json',
52
+ };
53
+ const response = await fetch(url, {
54
+ method,
55
+ headers,
56
+ body: body ? JSON.stringify(body) : undefined,
57
+ });
58
+ const data = await response.json();
59
+ if (!response.ok || data.success === false) {
60
+ const error = data.error || { code: 'UNKNOWN', message: 'Request failed' };
61
+ const err = new Error(error.message);
62
+ err.code = error.code;
63
+ err.statusCode = response.status;
64
+ throw err;
65
+ }
66
+ return data.data;
67
+ }
68
+ // ============================================================================
69
+ // Task Methods (convenient shortcuts)
70
+ // ============================================================================
71
+ /**
72
+ * Create a new task
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * const task = await molt.createTask({
77
+ * type: 'photo',
78
+ * title: 'Sunset at the beach',
79
+ * description: 'Capture a beautiful sunset photo',
80
+ * budgetUsdc: 10,
81
+ * location: 'Santa Monica, CA',
82
+ * completionCriteria: ['Sun visible', 'Ocean in frame']
83
+ * });
84
+ * ```
85
+ */
86
+ async createTask(input) {
87
+ return this.tasks.create(input);
88
+ }
89
+ /**
90
+ * Get a task by ID
91
+ */
92
+ async getTask(taskId) {
93
+ return this.tasks.get(taskId);
94
+ }
95
+ /**
96
+ * List your tasks with optional filters
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * // Get all open tasks
101
+ * const openTasks = await molt.listTasks({ status: 'open' });
102
+ *
103
+ * // Get recent tasks with pagination
104
+ * const recent = await molt.listTasks({
105
+ * limit: 10,
106
+ * sortBy: 'createdAt',
107
+ * sortOrder: 'desc'
108
+ * });
109
+ * ```
110
+ */
111
+ async listTasks(options) {
112
+ return this.tasks.list(options);
113
+ }
114
+ /**
115
+ * Fund a task to make it live
116
+ *
117
+ * Returns funding instructions or auto-funds if the connected wallet has a provider.
118
+ */
119
+ async fundTask(taskId) {
120
+ return this.tasks.fund(taskId);
121
+ }
122
+ /**
123
+ * Cancel a task
124
+ *
125
+ * Only works if task hasn't been claimed by a runner yet.
126
+ * Refunds will be processed automatically.
127
+ */
128
+ async cancelTask(taskId) {
129
+ return this.tasks.cancel(taskId);
130
+ }
131
+ /**
132
+ * Approve a submission and release payment to runner
133
+ */
134
+ async approveTask(taskId, submissionId) {
135
+ return this.tasks.approve(taskId, submissionId);
136
+ }
137
+ /**
138
+ * Reject a submission
139
+ */
140
+ async rejectSubmission(taskId, submissionId, reason) {
141
+ return this.tasks.reject(taskId, submissionId, reason);
142
+ }
143
+ /**
144
+ * Dispute a task (escalate to resolution)
145
+ */
146
+ async disputeTask(taskId, reason) {
147
+ return this.tasks.dispute(taskId, reason);
148
+ }
149
+ /**
150
+ * Get all submissions for a task
151
+ */
152
+ async getSubmissions(taskId) {
153
+ return this.tasks.getSubmissions(taskId);
154
+ }
155
+ /**
156
+ * Update a task (only in draft status)
157
+ */
158
+ async updateTask(taskId, updates) {
159
+ return this.tasks.update(taskId, updates);
160
+ }
161
+ /**
162
+ * Extend a task's deadline
163
+ */
164
+ async extendDeadline(taskId, newDeadline) {
165
+ return this.tasks.extendDeadline(taskId, newDeadline);
166
+ }
167
+ // ============================================================================
168
+ // Account Methods
169
+ // ============================================================================
170
+ /**
171
+ * Get current agent account info
172
+ */
173
+ async getMe() {
174
+ return this.request('GET', '/api/me');
175
+ }
176
+ /**
177
+ * Get wallet address
178
+ */
179
+ async getAddress() {
180
+ return this.auth.getAddress();
181
+ }
182
+ // ============================================================================
183
+ // Utility Methods
184
+ // ============================================================================
185
+ /**
186
+ * Clear cached auth token
187
+ *
188
+ * Useful if you need to re-authenticate or switch wallets.
189
+ */
190
+ clearAuth() {
191
+ this.auth.clearToken();
192
+ }
193
+ /**
194
+ * Get the underlying signer
195
+ */
196
+ getSigner() {
197
+ return this.auth.getSigner();
198
+ }
199
+ }
200
+ exports.MoltRuns = MoltRuns;
201
+ //# 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,4 @@
1
+ export { MoltRuns } from './client.js';
2
+ export type { MoltRunsOptions, Task, TaskType, TaskStatus, CreateTaskInput, ListTasksOptions, GeoLocation, Submission, SubmissionStatus, FundingResult, FundingInstructions, Agent, ApiResponse, PaginatedResponse, } from './types.js';
3
+ export { MoltRunsError, AuthError, TaskNotFoundError, InsufficientFundsError, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,YAAY,EAEV,eAAe,EAGf,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,WAAW,EAGX,UAAU,EACV,gBAAgB,EAGhB,aAAa,EACb,mBAAmB,EAGnB,KAAK,EAGL,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InsufficientFundsError = exports.TaskNotFoundError = exports.AuthError = exports.MoltRunsError = exports.MoltRuns = void 0;
4
+ // Main client
5
+ var client_js_1 = require("./client.js");
6
+ Object.defineProperty(exports, "MoltRuns", { enumerable: true, get: function () { return client_js_1.MoltRuns; } });
7
+ // Error classes
8
+ var types_js_1 = require("./types.js");
9
+ Object.defineProperty(exports, "MoltRunsError", { enumerable: true, get: function () { return types_js_1.MoltRunsError; } });
10
+ Object.defineProperty(exports, "AuthError", { enumerable: true, get: function () { return types_js_1.AuthError; } });
11
+ Object.defineProperty(exports, "TaskNotFoundError", { enumerable: true, get: function () { return types_js_1.TaskNotFoundError; } });
12
+ Object.defineProperty(exports, "InsufficientFundsError", { enumerable: true, get: function () { return types_js_1.InsufficientFundsError; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACd,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AA+BjB,gBAAgB;AAChB,uCAKoB;AAJlB,yGAAA,aAAa,OAAA;AACb,qGAAA,SAAS,OAAA;AACT,6GAAA,iBAAiB,OAAA;AACjB,kHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,56 @@
1
+ import type { Task, CreateTaskInput, ListTasksOptions, Submission, FundingResult, PaginatedResponse } from './types.js';
2
+ type RequestFn = <T>(method: string, path: string, body?: unknown) => Promise<T>;
3
+ /**
4
+ * Task-related API methods
5
+ * Separated for cleaner organization, but used through the main MoltRuns client
6
+ */
7
+ export declare class TasksApi {
8
+ private request;
9
+ constructor(request: RequestFn);
10
+ /**
11
+ * Create a new task
12
+ */
13
+ create(input: CreateTaskInput): Promise<Task>;
14
+ /**
15
+ * Get a task by ID
16
+ */
17
+ get(taskId: string): Promise<Task>;
18
+ /**
19
+ * List tasks with optional filters
20
+ */
21
+ list(options?: ListTasksOptions): Promise<PaginatedResponse<Task>>;
22
+ /**
23
+ * Fund a task (initiates escrow)
24
+ */
25
+ fund(taskId: string): Promise<FundingResult>;
26
+ /**
27
+ * Cancel a task (only if not yet claimed)
28
+ */
29
+ cancel(taskId: string): Promise<Task>;
30
+ /**
31
+ * Approve a submission
32
+ */
33
+ approve(taskId: string, submissionId: string): Promise<Task>;
34
+ /**
35
+ * Reject a submission
36
+ */
37
+ reject(taskId: string, submissionId: string, reason?: string): Promise<Task>;
38
+ /**
39
+ * Dispute a submission (escalate to resolution)
40
+ */
41
+ dispute(taskId: string, reason: string): Promise<Task>;
42
+ /**
43
+ * Get all submissions for a task
44
+ */
45
+ getSubmissions(taskId: string): Promise<Submission[]>;
46
+ /**
47
+ * Update task metadata (only allowed in draft status)
48
+ */
49
+ update(taskId: string, updates: Partial<CreateTaskInput>): Promise<Task>;
50
+ /**
51
+ * Extend task deadline
52
+ */
53
+ extendDeadline(taskId: string, newDeadline: string | Date): Promise<Task>;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,KAAK,SAAS,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjF;;;GAGG;AACH,qBAAa,QAAQ;IACP,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,SAAS;IAEtC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAmBxE;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlD;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlE;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlF;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI3D;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAMhF"}
package/dist/tasks.js ADDED
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TasksApi = void 0;
4
+ /**
5
+ * Task-related API methods
6
+ * Separated for cleaner organization, but used through the main MoltRuns client
7
+ */
8
+ class TasksApi {
9
+ constructor(request) {
10
+ this.request = request;
11
+ }
12
+ /**
13
+ * Create a new task
14
+ */
15
+ async create(input) {
16
+ // Normalize deadline to ISO string
17
+ const payload = {
18
+ ...input,
19
+ deadline: input.deadline instanceof Date
20
+ ? input.deadline.toISOString()
21
+ : input.deadline,
22
+ };
23
+ return this.request('POST', '/api/tasks', payload);
24
+ }
25
+ /**
26
+ * Get a task by ID
27
+ */
28
+ async get(taskId) {
29
+ return this.request('GET', `/api/tasks/${taskId}`);
30
+ }
31
+ /**
32
+ * List tasks with optional filters
33
+ */
34
+ async list(options) {
35
+ const params = new URLSearchParams();
36
+ if (options?.status) {
37
+ const statuses = Array.isArray(options.status) ? options.status : [options.status];
38
+ statuses.forEach(s => params.append('status', s));
39
+ }
40
+ if (options?.type)
41
+ params.set('type', options.type);
42
+ if (options?.limit)
43
+ params.set('limit', String(options.limit));
44
+ if (options?.offset)
45
+ params.set('offset', String(options.offset));
46
+ if (options?.sortBy)
47
+ params.set('sortBy', options.sortBy);
48
+ if (options?.sortOrder)
49
+ params.set('sortOrder', options.sortOrder);
50
+ const query = params.toString();
51
+ const path = query ? `/api/tasks?${query}` : '/api/tasks';
52
+ return this.request('GET', path);
53
+ }
54
+ /**
55
+ * Fund a task (initiates escrow)
56
+ */
57
+ async fund(taskId) {
58
+ return this.request('POST', `/api/tasks/${taskId}/fund`);
59
+ }
60
+ /**
61
+ * Cancel a task (only if not yet claimed)
62
+ */
63
+ async cancel(taskId) {
64
+ return this.request('POST', `/api/tasks/${taskId}/cancel`);
65
+ }
66
+ /**
67
+ * Approve a submission
68
+ */
69
+ async approve(taskId, submissionId) {
70
+ return this.request('POST', `/api/tasks/${taskId}/approve`, {
71
+ submissionId,
72
+ });
73
+ }
74
+ /**
75
+ * Reject a submission
76
+ */
77
+ async reject(taskId, submissionId, reason) {
78
+ return this.request('POST', `/api/tasks/${taskId}/reject`, {
79
+ submissionId,
80
+ reason,
81
+ });
82
+ }
83
+ /**
84
+ * Dispute a submission (escalate to resolution)
85
+ */
86
+ async dispute(taskId, reason) {
87
+ return this.request('POST', `/api/tasks/${taskId}/dispute`, {
88
+ reason,
89
+ });
90
+ }
91
+ /**
92
+ * Get all submissions for a task
93
+ */
94
+ async getSubmissions(taskId) {
95
+ return this.request('GET', `/api/tasks/${taskId}/submissions`);
96
+ }
97
+ /**
98
+ * Update task metadata (only allowed in draft status)
99
+ */
100
+ async update(taskId, updates) {
101
+ return this.request('PATCH', `/api/tasks/${taskId}`, updates);
102
+ }
103
+ /**
104
+ * Extend task deadline
105
+ */
106
+ async extendDeadline(taskId, newDeadline) {
107
+ const deadline = newDeadline instanceof Date
108
+ ? newDeadline.toISOString()
109
+ : newDeadline;
110
+ return this.request('POST', `/api/tasks/${taskId}/extend`, { deadline });
111
+ }
112
+ }
113
+ exports.TasksApi = TasksApi;
114
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":";;;AAWA;;;GAGG;AACH,MAAa,QAAQ;IACnB,YAAoB,OAAkB;QAAlB,YAAO,GAAP,OAAO,CAAW;IAAG,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAsB;QACjC,mCAAmC;QACnC,MAAM,OAAO,GAAG;YACd,GAAG,KAAK;YACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,YAAY,IAAI;gBACtC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC9B,CAAC,CAAC,KAAK,CAAC,QAAQ;SACnB,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAO,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,OAAO,IAAI,CAAC,OAAO,CAAO,KAAK,EAAE,cAAc,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAA0B;QACnC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAErC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACnF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,EAAE,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,OAAO,EAAE,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,IAAI,OAAO,EAAE,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAEnE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAE1D,OAAO,IAAI,CAAC,OAAO,CAA0B,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,OAAO,CAAgB,MAAM,EAAE,cAAc,MAAM,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,OAAO,CAAO,MAAM,EAAE,cAAc,MAAM,SAAS,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,YAAoB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAO,MAAM,EAAE,cAAc,MAAM,UAAU,EAAE;YAChE,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,YAAoB,EAAE,MAAe;QAChE,OAAO,IAAI,CAAC,OAAO,CAAO,MAAM,EAAE,cAAc,MAAM,SAAS,EAAE;YAC/D,YAAY;YACZ,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAO,MAAM,EAAE,cAAc,MAAM,UAAU,EAAE;YAChE,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,OAAO,IAAI,CAAC,OAAO,CAAe,KAAK,EAAE,cAAc,MAAM,cAAc,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,OAAiC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAO,OAAO,EAAE,cAAc,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,WAA0B;QAC7D,MAAM,QAAQ,GAAG,WAAW,YAAY,IAAI;YAC1C,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;YAC3B,CAAC,CAAC,WAAW,CAAC;QAChB,OAAO,IAAI,CAAC,OAAO,CAAO,MAAM,EAAE,cAAc,MAAM,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjF,CAAC;CACF;AAhHD,4BAgHC"}