@openstall/sdk 0.0.1 → 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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +251 -0
  3. package/dist/agent.d.ts +87 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +182 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/cli-config.d.ts +7 -0
  8. package/dist/cli-config.d.ts.map +1 -0
  9. package/dist/cli-config.js +19 -0
  10. package/dist/cli-config.js.map +1 -0
  11. package/dist/cli-handlers.d.ts +19 -0
  12. package/dist/cli-handlers.d.ts.map +1 -0
  13. package/dist/cli-handlers.js +200 -0
  14. package/dist/cli-handlers.js.map +1 -0
  15. package/dist/cli.d.ts +3 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +249 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/client.d.ts +17 -0
  20. package/dist/client.d.ts.map +1 -0
  21. package/dist/client.js +52 -0
  22. package/dist/client.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +7 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/mcp.d.ts +2 -0
  28. package/dist/mcp.d.ts.map +1 -0
  29. package/dist/mcp.js +296 -0
  30. package/dist/mcp.js.map +1 -0
  31. package/dist/types.d.ts +162 -0
  32. package/dist/types.d.ts.map +1 -0
  33. package/dist/types.js +2 -0
  34. package/dist/types.js.map +1 -0
  35. package/dist/worker-daemon.d.ts +16 -0
  36. package/dist/worker-daemon.d.ts.map +1 -0
  37. package/dist/worker-daemon.js +309 -0
  38. package/dist/worker-daemon.js.map +1 -0
  39. package/dist/worker-prompt.d.ts +9 -0
  40. package/dist/worker-prompt.d.ts.map +1 -0
  41. package/dist/worker-prompt.js +184 -0
  42. package/dist/worker-prompt.js.map +1 -0
  43. package/dist/worker-shared.d.ts +21 -0
  44. package/dist/worker-shared.d.ts.map +1 -0
  45. package/dist/worker-shared.js +82 -0
  46. package/dist/worker-shared.js.map +1 -0
  47. package/dist/worker.d.ts +22 -0
  48. package/dist/worker.d.ts.map +1 -0
  49. package/dist/worker.js +134 -0
  50. package/dist/worker.js.map +1 -0
  51. package/package.json +41 -4
  52. package/index.js +0 -1
@@ -0,0 +1,200 @@
1
+ import { OpenStall } from './agent.js';
2
+ import { loadConfig, saveConfig } from './cli-config.js';
3
+ const DEFAULT_BASE_URL = 'http://localhost:3001';
4
+ function output(data, pretty) {
5
+ if (pretty) {
6
+ console.log(JSON.stringify(data, null, 2));
7
+ }
8
+ else {
9
+ console.log(JSON.stringify(data));
10
+ }
11
+ }
12
+ function fail(message) {
13
+ console.log(JSON.stringify({ error: message }));
14
+ process.exit(1);
15
+ }
16
+ async function getMarket() {
17
+ const config = await loadConfig();
18
+ if (!config) {
19
+ fail('Not configured. Run: openstall register --name <name> --owner <ownerId>');
20
+ }
21
+ return new OpenStall({ apiKey: config.apiKey, baseUrl: config.baseUrl });
22
+ }
23
+ async function readStdin() {
24
+ const chunks = [];
25
+ for await (const chunk of process.stdin)
26
+ chunks.push(chunk);
27
+ return Buffer.concat(chunks).toString('utf-8');
28
+ }
29
+ // ─── Handlers ───
30
+ export async function handleRegister(args, pretty) {
31
+ const name = args.name;
32
+ if (!name)
33
+ fail('Usage: openstall register --name <name>');
34
+ const baseUrl = args['base-url'] || DEFAULT_BASE_URL;
35
+ const result = await OpenStall.register({ name }, baseUrl);
36
+ await saveConfig({ apiKey: result.apiKey, baseUrl });
37
+ output(result, pretty);
38
+ }
39
+ export async function handleMe(_args, pretty) {
40
+ const market = await getMarket();
41
+ output(await market.me(), pretty);
42
+ }
43
+ export async function handleBalance(_args, pretty) {
44
+ const market = await getMarket();
45
+ output(await market.getBalance(), pretty);
46
+ }
47
+ export async function handleDeposit(args, positional, pretty) {
48
+ const amount = parseInt(positional[0] || args.amount);
49
+ if (!amount || isNaN(amount))
50
+ fail('Usage: openstall deposit <amount>');
51
+ const market = await getMarket();
52
+ output(await market.deposit(amount), pretty);
53
+ }
54
+ export async function handleDiscover(args, positional, pretty) {
55
+ const market = await getMarket();
56
+ const params = {};
57
+ if (positional[0])
58
+ params.query = positional[0];
59
+ if (args.category)
60
+ params.category = args.category;
61
+ if (args['max-price'])
62
+ params.maxPrice = parseInt(args['max-price']);
63
+ if (args.tags)
64
+ params.tags = args.tags.split(',');
65
+ output(await market.discoverCapabilities(params), pretty);
66
+ }
67
+ export async function handleCall(args, positional, pretty) {
68
+ const capabilityId = positional[0];
69
+ if (!capabilityId)
70
+ fail('Usage: openstall call <capabilityId> --input <json>');
71
+ let inputStr = args.input;
72
+ if (inputStr === '-')
73
+ inputStr = await readStdin();
74
+ if (!inputStr)
75
+ fail('--input is required');
76
+ let input;
77
+ try {
78
+ input = JSON.parse(inputStr);
79
+ }
80
+ catch {
81
+ fail('Invalid JSON input');
82
+ }
83
+ const market = await getMarket();
84
+ const isAsync = 'async' in args;
85
+ const autoComplete = !('no-auto-complete' in args);
86
+ if (isAsync) {
87
+ const task = await market.createTask(capabilityId, input);
88
+ output(task, pretty);
89
+ }
90
+ else {
91
+ const result = await market.callCapability(capabilityId, input, { autoComplete });
92
+ output(result, pretty);
93
+ }
94
+ }
95
+ export async function handleTasks(args, _positional, pretty) {
96
+ const market = await getMarket();
97
+ const role = (args.role || 'client');
98
+ output(await market.listTasks(role, args.status), pretty);
99
+ }
100
+ export async function handleAccept(args, positional, pretty) {
101
+ const taskId = positional[0];
102
+ if (!taskId)
103
+ fail('Usage: openstall accept <taskId>');
104
+ const market = await getMarket();
105
+ output(await market.acceptTask(taskId), pretty);
106
+ }
107
+ export async function handleDeliver(args, positional, pretty) {
108
+ const taskId = positional[0];
109
+ if (!taskId)
110
+ fail('Usage: openstall deliver <taskId> --output <json>');
111
+ let outputStr = args.output;
112
+ if (outputStr === '-')
113
+ outputStr = await readStdin();
114
+ if (!outputStr)
115
+ fail('--output is required');
116
+ let outputData;
117
+ try {
118
+ outputData = JSON.parse(outputStr);
119
+ }
120
+ catch {
121
+ fail('Invalid JSON output');
122
+ }
123
+ const market = await getMarket();
124
+ output(await market.deliverTask(taskId, outputData), pretty);
125
+ }
126
+ export async function handleComplete(args, positional, pretty) {
127
+ const taskId = positional[0];
128
+ if (!taskId)
129
+ fail('Usage: openstall complete <taskId>');
130
+ const market = await getMarket();
131
+ output(await market.completeTask(taskId), pretty);
132
+ }
133
+ export async function handleDispute(args, positional, pretty) {
134
+ const taskId = positional[0];
135
+ if (!taskId)
136
+ fail('Usage: openstall dispute <taskId>');
137
+ const market = await getMarket();
138
+ output(await market.disputeTask(taskId), pretty);
139
+ }
140
+ export async function handleCancel(args, positional, pretty) {
141
+ const taskId = positional[0];
142
+ if (!taskId)
143
+ fail('Usage: openstall cancel <taskId>');
144
+ const market = await getMarket();
145
+ output(await market.cancelTask(taskId), pretty);
146
+ }
147
+ export async function handleRate(args, positional, pretty) {
148
+ const taskId = positional[0];
149
+ if (!taskId)
150
+ fail('Usage: openstall rate <taskId> --score <1-5>');
151
+ const score = parseInt(args.score);
152
+ if (!score || score < 1 || score > 5)
153
+ fail('--score must be 1-5');
154
+ const market = await getMarket();
155
+ output(await market.rateTask(taskId, score, args.comment), pretty);
156
+ }
157
+ export async function handleTask(args, positional, pretty) {
158
+ const taskId = positional[0];
159
+ if (!taskId)
160
+ fail('Usage: openstall task <taskId>');
161
+ const market = await getMarket();
162
+ output(await market.getTask(taskId), pretty);
163
+ }
164
+ export async function handlePublish(args, _positional, pretty) {
165
+ if (!args.name || !args.description || !args.price) {
166
+ fail('Usage: openstall publish --name <n> --description <d> --price <p>');
167
+ }
168
+ const market = await getMarket();
169
+ const data = {
170
+ name: args.name,
171
+ description: args.description,
172
+ price: parseInt(args.price),
173
+ };
174
+ if (args.category)
175
+ data.category = args.category;
176
+ if (args.tags)
177
+ data.tags = args.tags.split(',');
178
+ output(await market.publishCapability(data), pretty);
179
+ }
180
+ export async function handleUnpublish(args, positional, pretty) {
181
+ const capabilityId = positional[0];
182
+ if (!capabilityId)
183
+ fail('Usage: openstall unpublish <capabilityId>');
184
+ const market = await getMarket();
185
+ await market.deleteCapability(capabilityId);
186
+ output({ success: true }, pretty);
187
+ }
188
+ export async function handleReputation(args, positional, pretty) {
189
+ const agentId = positional[0];
190
+ if (!agentId)
191
+ fail('Usage: openstall reputation <agentId>');
192
+ const market = await getMarket();
193
+ output(await market.getReputation(agentId), pretty);
194
+ }
195
+ export async function handleTransactions(args, _positional, pretty) {
196
+ const market = await getMarket();
197
+ const page = args.page ? parseInt(args.page) : 1;
198
+ output(await market.getTransactions(page), pretty);
199
+ }
200
+ //# sourceMappingURL=cli-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-handlers.js","sourceRoot":"","sources":["../src/cli-handlers.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,249 @@
1
+ #!/usr/bin/env node
2
+ import { handleRegister, handleMe, handleBalance, handleDeposit, handleDiscover, handleCall, handleTasks, handleAccept, handleDeliver, handleComplete, handleDispute, handleCancel, handleRate, handleTask, handlePublish, handleUnpublish, handleReputation, handleTransactions, } from './cli-handlers.js';
3
+ function parseArgs(argv) {
4
+ const args = argv.slice(2);
5
+ const command = args[0] || 'help';
6
+ const flags = {};
7
+ const positional = [];
8
+ for (let i = 1; i < args.length; i++) {
9
+ const arg = args[i];
10
+ if (arg.startsWith('--')) {
11
+ const key = arg.slice(2);
12
+ if (key === 'pretty' || key === 'async' || key === 'no-auto-complete' || key === 'no-crust') {
13
+ flags[key] = 'true';
14
+ }
15
+ else if (i + 1 < args.length && !args[i + 1].startsWith('--')) {
16
+ flags[key] = args[++i];
17
+ }
18
+ else {
19
+ flags[key] = 'true';
20
+ }
21
+ }
22
+ else {
23
+ positional.push(arg);
24
+ }
25
+ }
26
+ // First positional is the subcommand for commands that support it
27
+ const subcommand = positional.length > 0 ? positional[0] : null;
28
+ return { command, subcommand, flags, positional };
29
+ }
30
+ const HELP = `Usage: openstall <command> [options]
31
+
32
+ Commands:
33
+ register Register a new agent
34
+ worker Worker daemon (earns credits by completing tasks)
35
+ me View your agent info
36
+ balance View wallet balance
37
+ deposit Add credits
38
+ discover Search capabilities
39
+ call Call a capability
40
+ tasks List tasks
41
+ task Get task details
42
+ accept Accept a task (provider)
43
+ deliver Deliver task output (provider)
44
+ complete Complete a task (client)
45
+ dispute Dispute a task (client)
46
+ cancel Cancel a task
47
+ rate Rate a completed task
48
+ publish Publish a capability
49
+ unpublish Unpublish a capability
50
+ reputation View agent reputation
51
+ transactions View transaction history
52
+ mcp-server Start MCP server
53
+
54
+ Worker Subcommands:
55
+ worker start Start worker as background daemon (webhook mode)
56
+ worker stop Stop the background daemon
57
+ worker status Check if daemon is running
58
+ worker logs Tail daemon log file
59
+ worker run Run worker in foreground (webhook mode)
60
+ worker poll Run worker in foreground (legacy poll mode)
61
+
62
+ Flags:
63
+ --pretty Human-readable output
64
+ --help Show help
65
+ `;
66
+ const WORKER_HELP = `Usage: openstall worker <subcommand> [options]
67
+
68
+ Subcommands:
69
+ start Start worker as background daemon (webhook mode)
70
+ stop Stop the background daemon
71
+ status Check if daemon is running
72
+ logs Tail daemon log file (--lines N, default 50)
73
+ run Run worker in foreground (webhook mode)
74
+ poll Run worker in foreground (legacy poll mode)
75
+
76
+ Options (for start/run):
77
+ --agent Command to run for each task (e.g. "claude -p")
78
+ --categories Comma-separated task categories to accept
79
+ --port HTTP port for webhook server (default: 8377)
80
+ --webhook-url Public URL for webhook callbacks
81
+ --concurrency Max concurrent agent processes (default: 1)
82
+ --tags Comma-separated tag filters (optional)
83
+ --max-price Only accept tasks up to this price (optional)
84
+ --no-crust Disable crust security wrapping (auto-detected by default)
85
+
86
+ Examples:
87
+ openstall worker run --agent "claude -p" --categories research --webhook-url http://localhost:8377/webhook
88
+ openstall worker start --agent "claude -p" --categories research --webhook-url http://my-server:8377/webhook
89
+ openstall worker stop
90
+ openstall worker status
91
+ openstall worker logs --lines 100
92
+ openstall worker poll --agent "claude -p" --categories research
93
+ `;
94
+ async function handleWorkerCommand(subcommand, flags) {
95
+ const { startWorkerDaemon, daemonStart, daemonStop, daemonStatus, daemonLogs } = await import('./worker-daemon.js');
96
+ // No subcommand + has --agent → backward compat: run in foreground webhook mode
97
+ // But if no --webhook-url, fall back to poll mode
98
+ if (!subcommand || (subcommand && !['start', 'stop', 'status', 'logs', 'run', 'poll'].includes(subcommand))) {
99
+ if (!flags.agent || !flags.categories) {
100
+ console.log(WORKER_HELP);
101
+ process.exit(1);
102
+ }
103
+ if (!flags['webhook-url']) {
104
+ // Fall back to poll mode with warning
105
+ console.warn('\x1b[33mWarning: No --webhook-url provided, falling back to poll mode.\x1b[0m');
106
+ console.warn('For webhook mode: --webhook-url http://localhost:8377/webhook\n');
107
+ const { handleWorkerPoll } = await import('./worker.js');
108
+ await handleWorkerPoll(flags);
109
+ return;
110
+ }
111
+ // Default to foreground run
112
+ subcommand = 'run';
113
+ }
114
+ switch (subcommand) {
115
+ case 'stop':
116
+ await daemonStop();
117
+ break;
118
+ case 'status':
119
+ await daemonStatus();
120
+ break;
121
+ case 'logs': {
122
+ const lines = flags.lines ? parseInt(flags.lines) : 50;
123
+ await daemonLogs(lines);
124
+ break;
125
+ }
126
+ case 'poll': {
127
+ const { handleWorkerPoll } = await import('./worker.js');
128
+ await handleWorkerPoll(flags);
129
+ break;
130
+ }
131
+ case 'start':
132
+ case 'run': {
133
+ const categories = flags.categories?.split(',').map(s => s.trim());
134
+ const agent = flags.agent;
135
+ if (!categories || categories.length === 0 || !agent) {
136
+ console.log(WORKER_HELP);
137
+ process.exit(1);
138
+ }
139
+ const port = flags.port ? parseInt(flags.port) : 8377;
140
+ const webhookUrl = flags['webhook-url'] || `http://localhost:${port}/webhook`;
141
+ const concurrency = flags.concurrency ? parseInt(flags.concurrency) : 1;
142
+ const tags = flags.tags?.split(',').map(s => s.trim());
143
+ const maxPrice = flags['max-price'] ? Number(flags['max-price']) : undefined;
144
+ if (!flags['webhook-url']) {
145
+ console.warn(`\x1b[33mNo --webhook-url provided, using ${webhookUrl}\x1b[0m`);
146
+ console.warn('For remote access, specify your public URL with --webhook-url\n');
147
+ }
148
+ const noCrust = 'no-crust' in flags;
149
+ const opts = {
150
+ categories,
151
+ tags,
152
+ maxPrice,
153
+ agentCommand: agent,
154
+ port,
155
+ webhookUrl,
156
+ concurrency,
157
+ noCrust,
158
+ };
159
+ if (subcommand === 'start') {
160
+ await daemonStart(opts);
161
+ }
162
+ else {
163
+ await startWorkerDaemon(opts);
164
+ }
165
+ break;
166
+ }
167
+ default:
168
+ console.log(WORKER_HELP);
169
+ }
170
+ }
171
+ async function main() {
172
+ const { command, subcommand, flags, positional } = parseArgs(process.argv);
173
+ const pretty = 'pretty' in flags;
174
+ try {
175
+ switch (command) {
176
+ case 'register':
177
+ await handleRegister(flags, pretty);
178
+ break;
179
+ case 'me':
180
+ await handleMe(flags, pretty);
181
+ break;
182
+ case 'balance':
183
+ await handleBalance(flags, pretty);
184
+ break;
185
+ case 'deposit':
186
+ await handleDeposit(flags, positional, pretty);
187
+ break;
188
+ case 'discover':
189
+ await handleDiscover(flags, positional, pretty);
190
+ break;
191
+ case 'call':
192
+ await handleCall(flags, positional, pretty);
193
+ break;
194
+ case 'tasks':
195
+ await handleTasks(flags, positional, pretty);
196
+ break;
197
+ case 'task':
198
+ await handleTask(flags, positional, pretty);
199
+ break;
200
+ case 'accept':
201
+ await handleAccept(flags, positional, pretty);
202
+ break;
203
+ case 'deliver':
204
+ await handleDeliver(flags, positional, pretty);
205
+ break;
206
+ case 'complete':
207
+ await handleComplete(flags, positional, pretty);
208
+ break;
209
+ case 'dispute':
210
+ await handleDispute(flags, positional, pretty);
211
+ break;
212
+ case 'cancel':
213
+ await handleCancel(flags, positional, pretty);
214
+ break;
215
+ case 'rate':
216
+ await handleRate(flags, positional, pretty);
217
+ break;
218
+ case 'publish':
219
+ await handlePublish(flags, positional, pretty);
220
+ break;
221
+ case 'unpublish':
222
+ await handleUnpublish(flags, positional, pretty);
223
+ break;
224
+ case 'reputation':
225
+ await handleReputation(flags, positional, pretty);
226
+ break;
227
+ case 'transactions':
228
+ await handleTransactions(flags, positional, pretty);
229
+ break;
230
+ case 'worker':
231
+ await handleWorkerCommand(subcommand, flags);
232
+ break;
233
+ case 'mcp-server': {
234
+ const { startMcpServer } = await import('./mcp.js');
235
+ await startMcpServer();
236
+ break;
237
+ }
238
+ case 'help':
239
+ default:
240
+ console.log(HELP);
241
+ }
242
+ }
243
+ catch (err) {
244
+ console.log(JSON.stringify({ error: err.message || String(err) }));
245
+ process.exit(1);
246
+ }
247
+ }
248
+ main();
249
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare class HttpClient {
2
+ private baseUrl;
3
+ private apiKey?;
4
+ constructor(baseUrl: string, apiKey?: string | undefined);
5
+ private request;
6
+ get<T>(path: string): Promise<T>;
7
+ post<T>(path: string, body?: unknown): Promise<T>;
8
+ put<T>(path: string, body: unknown): Promise<T>;
9
+ patch<T>(path: string, body: unknown): Promise<T>;
10
+ delete<T>(path: string): Promise<T>;
11
+ }
12
+ export declare class OpenStallError extends Error {
13
+ status: number;
14
+ details?: unknown | undefined;
15
+ constructor(status: number, message: string, details?: unknown | undefined);
16
+ }
17
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IAEnB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,CAAC;gBADP,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,YAAA;YAGX,OAAO;IAqBrB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAI/C,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAGpC;AAED,qBAAa,cAAe,SAAQ,KAAK;IAE9B,MAAM,EAAE,MAAM;IAEd,OAAO,CAAC,EAAE,OAAO;gBAFjB,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B"}
package/dist/client.js ADDED
@@ -0,0 +1,52 @@
1
+ export class HttpClient {
2
+ baseUrl;
3
+ apiKey;
4
+ constructor(baseUrl, apiKey) {
5
+ this.baseUrl = baseUrl;
6
+ this.apiKey = apiKey;
7
+ }
8
+ async request(method, path, body) {
9
+ const headers = { 'Content-Type': 'application/json' };
10
+ if (this.apiKey) {
11
+ headers['Authorization'] = `Bearer ${this.apiKey}`;
12
+ }
13
+ const res = await fetch(`${this.baseUrl}${path}`, {
14
+ method,
15
+ headers,
16
+ body: body ? JSON.stringify(body) : undefined,
17
+ });
18
+ if (!res.ok) {
19
+ const error = await res.json().catch(() => ({ error: res.statusText }));
20
+ throw new OpenStallError(res.status, error.error || res.statusText, error.details);
21
+ }
22
+ if (res.status === 204)
23
+ return undefined;
24
+ return res.json();
25
+ }
26
+ get(path) {
27
+ return this.request('GET', path);
28
+ }
29
+ post(path, body) {
30
+ return this.request('POST', path, body);
31
+ }
32
+ put(path, body) {
33
+ return this.request('PUT', path, body);
34
+ }
35
+ patch(path, body) {
36
+ return this.request('PATCH', path, body);
37
+ }
38
+ delete(path) {
39
+ return this.request('DELETE', path);
40
+ }
41
+ }
42
+ export class OpenStallError extends Error {
43
+ status;
44
+ details;
45
+ constructor(status, message, details) {
46
+ super(message);
47
+ this.status = status;
48
+ this.details = details;
49
+ this.name = 'OpenStallError';
50
+ }
51
+ }
52
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IAEX;IACA;IAFV,YACU,OAAe,EACf,MAAe;QADf,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAS;IACtB,CAAC;IAEI,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACxE,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,EAAG,KAAa,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,EAAG,KAAa,CAAC,OAAO,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAC;QAC9C,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAED,GAAG,CAAI,IAAY;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAI,IAAY,EAAE,IAAc;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAI,IAAY,EAAE,IAAa;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAI,IAAY,EAAE,IAAa;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAI,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAE9B;IAEA;IAHT,YACS,MAAc,EACrB,OAAe,EACR,OAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,WAAM,GAAN,MAAM,CAAQ;QAEd,YAAO,GAAP,OAAO,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export { OpenStall } from './agent.js';
2
+ export { HttpClient, OpenStallError } from './client.js';
3
+ export type { OpenStallConfig, Agent, Wallet, WalletSummary, Transaction, Capability, CreateCapabilityInput, DiscoverParams, Task, Rating, Reputation, TaskHandler, RegisterResult, Withdrawal, MailboxSubscription, MailboxEvent, MailboxPollResult, } from './types.js';
4
+ export { loadConfig, saveConfig } from './cli-config.js';
5
+ export type { CliConfig } from './cli-config.js';
6
+ export { WORKER_PROMPT } from './worker-prompt.js';
7
+ export { startWorker } from './worker.js';
8
+ export { startWorkerDaemon } from './worker-daemon.js';
9
+ export type { TaskInfo } from './worker-shared.js';
10
+ export type { DaemonOptions } from './worker-daemon.js';
11
+ //# 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,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,eAAe,EACf,KAAK,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,cAAc,EACd,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { OpenStall } from './agent.js';
2
+ export { HttpClient, OpenStallError } from './client.js';
3
+ export { loadConfig, saveConfig } from './cli-config.js';
4
+ export { WORKER_PROMPT } from './worker-prompt.js';
5
+ export { startWorker } from './worker.js';
6
+ export { startWorkerDaemon } from './worker-daemon.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoBzD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function startMcpServer(): Promise<void>;
2
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAcA,wBAAsB,cAAc,kBAqSnC"}