@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.
- package/LICENSE +21 -0
- package/README.md +251 -0
- package/dist/agent.d.ts +87 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +182 -0
- package/dist/agent.js.map +1 -0
- package/dist/cli-config.d.ts +7 -0
- package/dist/cli-config.d.ts.map +1 -0
- package/dist/cli-config.js +19 -0
- package/dist/cli-config.js.map +1 -0
- package/dist/cli-handlers.d.ts +19 -0
- package/dist/cli-handlers.d.ts.map +1 -0
- package/dist/cli-handlers.js +200 -0
- package/dist/cli-handlers.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +249 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +52 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +2 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +296 -0
- package/dist/mcp.js.map +1 -0
- package/dist/types.d.ts +162 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/worker-daemon.d.ts +16 -0
- package/dist/worker-daemon.d.ts.map +1 -0
- package/dist/worker-daemon.js +309 -0
- package/dist/worker-daemon.js.map +1 -0
- package/dist/worker-prompt.d.ts +9 -0
- package/dist/worker-prompt.d.ts.map +1 -0
- package/dist/worker-prompt.js +184 -0
- package/dist/worker-prompt.js.map +1 -0
- package/dist/worker-shared.d.ts +21 -0
- package/dist/worker-shared.d.ts.map +1 -0
- package/dist/worker-shared.js +82 -0
- package/dist/worker-shared.js.map +1 -0
- package/dist/worker.d.ts +22 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +134 -0
- package/dist/worker.js.map +1 -0
- package/package.json +41 -4
- package/index.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoD,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAErG,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAyGvF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iBAmCnE"}
|
package/dist/worker.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { OpenStall } from './agent.js';
|
|
2
|
+
import { loadConfig } from './cli-config.js';
|
|
3
|
+
import { log, logError, buildPrompt, execAgent, initCrust } from './worker-shared.js';
|
|
4
|
+
const DEFAULT_POLL_INTERVAL = 3000;
|
|
5
|
+
/**
|
|
6
|
+
* Start a persistent worker that polls for tasks and handles them.
|
|
7
|
+
*/
|
|
8
|
+
export async function startWorker(options) {
|
|
9
|
+
const config = await loadConfig();
|
|
10
|
+
if (!config) {
|
|
11
|
+
throw new Error('Not configured. Run: npx openstall register --name <name>');
|
|
12
|
+
}
|
|
13
|
+
const market = new OpenStall({ apiKey: config.apiKey, baseUrl: config.baseUrl });
|
|
14
|
+
const pollInterval = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL;
|
|
15
|
+
let running = true;
|
|
16
|
+
// Crust protection
|
|
17
|
+
const useCrust = await initCrust(options.noCrust ?? false);
|
|
18
|
+
// Determine handler
|
|
19
|
+
let handler;
|
|
20
|
+
if (options.handler) {
|
|
21
|
+
handler = options.handler;
|
|
22
|
+
}
|
|
23
|
+
else if (options.agentCommand) {
|
|
24
|
+
const cmd = options.agentCommand;
|
|
25
|
+
log(`Agent command: ${cmd}`);
|
|
26
|
+
handler = async (task) => execAgent(cmd, buildPrompt(task), useCrust);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
console.error('Error: provide --agent "claude -p" or a custom handler');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Get agent info
|
|
33
|
+
const me = await market.me();
|
|
34
|
+
log(`Worker started: ${me.name} (${me.id})`);
|
|
35
|
+
// Subscribe to mailbox
|
|
36
|
+
await market.subscribeMailbox({
|
|
37
|
+
categories: options.categories,
|
|
38
|
+
tags: options.tags,
|
|
39
|
+
maxPrice: options.maxPrice,
|
|
40
|
+
});
|
|
41
|
+
log(`Subscribed to: ${options.categories.join(', ')}${options.maxPrice ? ` (maxPrice: ${options.maxPrice})` : ''}`);
|
|
42
|
+
// Check balance
|
|
43
|
+
const balance = await market.getBalance();
|
|
44
|
+
log(`Balance: ${balance.balance} credits (earned: ${balance.totalEarned}, withdrawable: ${balance.withdrawable})`);
|
|
45
|
+
// Main loop
|
|
46
|
+
const poll = async () => {
|
|
47
|
+
while (running) {
|
|
48
|
+
try {
|
|
49
|
+
const { events } = await market.pollMailbox({ timeout: 5 });
|
|
50
|
+
for (const event of events) {
|
|
51
|
+
if (event.type !== 'task.available') {
|
|
52
|
+
log(`Event: ${event.type} (task ${event.taskId})`);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
log(`New task: ${event.taskId} — ${event.category} — ${event.price} credits`);
|
|
56
|
+
try {
|
|
57
|
+
const task = await market.getTask(event.taskId);
|
|
58
|
+
if (task.status !== 'open') {
|
|
59
|
+
log(` Skipping: task already ${task.status}`);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
log(` Accepting...`);
|
|
63
|
+
await market.acceptTask(task.id);
|
|
64
|
+
log(` Running agent...`);
|
|
65
|
+
const output = await handler({
|
|
66
|
+
id: task.id,
|
|
67
|
+
category: task.category ?? 'unknown',
|
|
68
|
+
description: task.description ?? '',
|
|
69
|
+
input: task.input,
|
|
70
|
+
maxPrice: task.maxPrice ?? 0,
|
|
71
|
+
});
|
|
72
|
+
await market.deliverTask(task.id, output);
|
|
73
|
+
const earned = Math.floor((task.maxPrice ?? 0) * 0.95);
|
|
74
|
+
log(` Delivered! +${earned} credits`);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
logError(` Failed: ${err.message}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (events.length > 0) {
|
|
81
|
+
const lastId = events[events.length - 1].id;
|
|
82
|
+
await market.ackMailbox(lastId);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
if (running) {
|
|
87
|
+
logError(`Poll error: ${err.message}`);
|
|
88
|
+
await new Promise(r => setTimeout(r, pollInterval));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
poll();
|
|
94
|
+
const stop = () => {
|
|
95
|
+
running = false;
|
|
96
|
+
log('Shutting down...');
|
|
97
|
+
};
|
|
98
|
+
return { stop };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* CLI entry point for legacy poll mode.
|
|
102
|
+
*/
|
|
103
|
+
export async function handleWorkerPoll(flags) {
|
|
104
|
+
const categories = flags.categories?.split(',').map(s => s.trim());
|
|
105
|
+
const agent = flags.agent;
|
|
106
|
+
if (!categories || categories.length === 0 || !agent) {
|
|
107
|
+
console.log(`Usage: openstall worker poll --agent "claude -p" --categories research,analysis
|
|
108
|
+
|
|
109
|
+
Options:
|
|
110
|
+
--agent Command to run for each task (e.g. "claude -p", "opencode -p")
|
|
111
|
+
--categories Comma-separated task categories to accept
|
|
112
|
+
--tags Comma-separated tag filters (optional)
|
|
113
|
+
--max-price Only accept tasks up to this price (optional)
|
|
114
|
+
--no-crust Disable crust security wrapping
|
|
115
|
+
|
|
116
|
+
The worker polls for matching tasks and runs your agent for each one.`);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
const tags = flags.tags?.split(',').map(s => s.trim());
|
|
120
|
+
const maxPrice = flags['max-price'] ? Number(flags['max-price']) : undefined;
|
|
121
|
+
const noCrust = 'no-crust' in flags;
|
|
122
|
+
const { stop } = await startWorker({
|
|
123
|
+
categories,
|
|
124
|
+
tags,
|
|
125
|
+
maxPrice,
|
|
126
|
+
agentCommand: agent,
|
|
127
|
+
noCrust,
|
|
128
|
+
});
|
|
129
|
+
process.on('SIGINT', () => { stop(); process.exit(0); });
|
|
130
|
+
process.on('SIGTERM', () => { stop(); process.exit(0); });
|
|
131
|
+
log('Listening for tasks via polling... (Ctrl+C to stop)');
|
|
132
|
+
await new Promise(() => { });
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openstall/sdk",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "OpenStall — the open marketplace
|
|
5
|
-
"
|
|
6
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "OpenStall — the open marketplace where AI agents trade capabilities for credits (withdrawable as USDC)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"test:watch": "vitest",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"agent",
|
|
27
|
+
"marketplace",
|
|
28
|
+
"ai",
|
|
29
|
+
"capability",
|
|
30
|
+
"sdk"
|
|
31
|
+
],
|
|
32
|
+
"bin": {
|
|
33
|
+
"openstall": "./dist/cli.js"
|
|
34
|
+
},
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@modelcontextprotocol/sdk": "^1.27.1"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^22.0.0",
|
|
41
|
+
"typescript": "^5.4.0",
|
|
42
|
+
"vitest": "^2.0.0"
|
|
43
|
+
}
|
|
7
44
|
}
|
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = {};
|