@taskhunt/cli 0.1.8 → 0.1.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEpC,wBAAgB,mBAAmB,IAAI,OAAO,CAiK7C"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuEpC,wBAAgB,mBAAmB,IAAI,OAAO,CAsM7C"}
@@ -146,6 +146,8 @@ export function createAgentsCommand() {
146
146
  .command('start')
147
147
  .description('Connect agent and start listening for tasks')
148
148
  .option('--key <apiKey>', 'API key (overrides saved config)')
149
+ .option('--interval <seconds>', 'Poll interval in seconds', parseInt)
150
+ .option('--auto-claim', 'Automatically claim INSTANT tasks when found')
149
151
  .action(async (opts) => {
150
152
  const config = loadConfig();
151
153
  const apiKey = opts.key ?? config?.apiKey;
@@ -153,32 +155,69 @@ export function createAgentsCommand() {
153
155
  console.error(chalk.red('No API key found. Run `taskhunt agent register` first, or pass --key <apiKey>.'));
154
156
  process.exit(1);
155
157
  }
156
- // Save key if provided via flag
158
+ // Save key if provided via flag, then resolve agentId via /auth/me
157
159
  if (opts.key) {
158
160
  const existing = loadConfig();
159
161
  const base = existing ?? { apiUrl: 'https://taskhunt-api.bitbull-cn.workers.dev' };
160
162
  saveConfig({ ...base, apiKey: opts.key });
161
163
  }
162
- printSuccess('Connected. Listening for tasks...');
164
+ // Resolve agent identity
165
+ let agentName = 'Agent';
166
+ try {
167
+ const me = await api.get('/auth/me');
168
+ agentName = me.participant.displayName;
169
+ const agentId = me.participant.id;
170
+ // Update saved config with correct agentId
171
+ const cfg = loadConfig();
172
+ if (cfg)
173
+ saveConfig({ ...cfg, agentId, participantId: agentId });
174
+ }
175
+ catch {
176
+ console.error(chalk.red('Failed to verify API key. Check that it is valid.'));
177
+ process.exit(1);
178
+ }
179
+ printSuccess(`Connected as ${chalk.bold(agentName)}. Listening for tasks...`);
180
+ if (opts.autoClaim)
181
+ console.log(chalk.dim('Auto-claim enabled: INSTANT tasks will be claimed automatically.'));
163
182
  console.log(chalk.dim('Press Ctrl+C to stop.\n'));
164
- // Poll for assigned tasks every 5s
165
- const agentId = config?.agentId;
166
- let seen = new Set();
183
+ const intervalMs = (opts.interval ?? 5) * 1000;
184
+ const seen = new Set();
167
185
  // eslint-disable-next-line no-constant-condition
168
186
  while (true) {
169
187
  try {
170
- const tasks = await api.get(`/tasks?status=assigned&assignee=${agentId}`);
188
+ const tasks = await api.get('/tasks?status=OPEN');
171
189
  for (const t of tasks) {
172
190
  if (!seen.has(t.id)) {
173
191
  seen.add(t.id);
174
- console.log(chalk.green(`→ Matched: "${t.title}" ($${t.budgetValue} ${t.budgetCurrency})`));
192
+ const budget = `$${parseFloat(t.budgetValue).toFixed(2)}`;
193
+ const isInstant = t.bidMode === 'INSTANT';
194
+ console.log(chalk.green('→ New task:') +
195
+ ` ${chalk.bold(t.title)} ` +
196
+ chalk.yellow(`(${budget})`) +
197
+ chalk.dim(` [${t.category}${isInstant ? ' · INSTANT' : ''}] id:${t.id.slice(0, 8)}`));
198
+ if (opts.autoClaim && isInstant) {
199
+ try {
200
+ await api.post(`/tasks/${t.id}/claim`);
201
+ console.log(chalk.cyan(` ✓ Claimed. Run when ready: taskhunt tasks submit ${t.id.slice(0, 8)} --content "<result>"`));
202
+ }
203
+ catch (e) {
204
+ const msg = e instanceof Error ? e.message : String(e);
205
+ console.log(chalk.red(` ✗ Claim failed: ${msg}`));
206
+ }
207
+ }
208
+ else if (!isInstant) {
209
+ console.log(chalk.dim(` → Propose: taskhunt tasks propose ${t.id.slice(0, 8)} --approach "<approach>" --price <n> --time <minutes>`));
210
+ }
211
+ else {
212
+ console.log(chalk.dim(` → Claim: taskhunt tasks claim ${t.id.slice(0, 8)}`));
213
+ }
175
214
  }
176
215
  }
177
216
  }
178
217
  catch {
179
218
  // silently continue on transient errors
180
219
  }
181
- await new Promise(r => setTimeout(r, 5000));
220
+ await new Promise(r => setTimeout(r, intervalMs));
182
221
  }
183
222
  });
184
223
  return agents;
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taskhunt/cli",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "taskhunt": "./dist/index.js"
@@ -190,7 +190,9 @@ export function createAgentsCommand(): Command {
190
190
  .command('start')
191
191
  .description('Connect agent and start listening for tasks')
192
192
  .option('--key <apiKey>', 'API key (overrides saved config)')
193
- .action(async (opts: { key?: string }) => {
193
+ .option('--interval <seconds>', 'Poll interval in seconds', parseInt)
194
+ .option('--auto-claim', 'Automatically claim INSTANT tasks when found')
195
+ .action(async (opts: { key?: string; interval?: number; autoClaim?: boolean }) => {
194
196
  const config = loadConfig();
195
197
  const apiKey = opts.key ?? config?.apiKey;
196
198
  if (!apiKey) {
@@ -198,34 +200,69 @@ export function createAgentsCommand(): Command {
198
200
  process.exit(1);
199
201
  }
200
202
 
201
- // Save key if provided via flag
203
+ // Save key if provided via flag, then resolve agentId via /auth/me
202
204
  if (opts.key) {
203
205
  const existing = loadConfig();
204
206
  const base = existing ?? { apiUrl: 'https://taskhunt-api.bitbull-cn.workers.dev' };
205
207
  saveConfig({ ...base, apiKey: opts.key });
206
208
  }
207
209
 
208
- printSuccess('Connected. Listening for tasks...');
210
+ // Resolve agent identity
211
+ let agentName = 'Agent';
212
+ try {
213
+ const me = await api.get<{ participant: { id: string; displayName: string }; agent?: { participantId: string } }>('/auth/me');
214
+ agentName = me.participant.displayName;
215
+ const agentId = me.participant.id;
216
+ // Update saved config with correct agentId
217
+ const cfg = loadConfig();
218
+ if (cfg) saveConfig({ ...cfg, agentId, participantId: agentId });
219
+ } catch {
220
+ console.error(chalk.red('Failed to verify API key. Check that it is valid.'));
221
+ process.exit(1);
222
+ }
223
+
224
+ printSuccess(`Connected as ${chalk.bold(agentName)}. Listening for tasks...`);
225
+ if (opts.autoClaim) console.log(chalk.dim('Auto-claim enabled: INSTANT tasks will be claimed automatically.'));
209
226
  console.log(chalk.dim('Press Ctrl+C to stop.\n'));
210
227
 
211
- // Poll for assigned tasks every 5s
212
- const agentId = config?.agentId;
213
- let seen = new Set<string>();
228
+ const intervalMs = (opts.interval ?? 5) * 1000;
229
+ const seen = new Set<string>();
214
230
 
215
231
  // eslint-disable-next-line no-constant-condition
216
232
  while (true) {
217
233
  try {
218
- const tasks = await api.get<Array<{ id: string; title: string; budgetValue: string; budgetCurrency: string }>>(`/tasks?status=assigned&assignee=${agentId}`);
234
+ const tasks = await api.get<Array<{ id: string; title: string; budgetValue: string; budgetCurrency: string; category: string; bidMode: string }>>('/tasks?status=OPEN');
219
235
  for (const t of tasks) {
220
236
  if (!seen.has(t.id)) {
221
237
  seen.add(t.id);
222
- console.log(chalk.green(`→ Matched: "${t.title}" ($${t.budgetValue} ${t.budgetCurrency})`));
238
+ const budget = `$${parseFloat(t.budgetValue).toFixed(2)}`;
239
+ const isInstant = t.bidMode === 'INSTANT';
240
+ console.log(
241
+ chalk.green('→ New task:') +
242
+ ` ${chalk.bold(t.title)} ` +
243
+ chalk.yellow(`(${budget})`) +
244
+ chalk.dim(` [${t.category}${isInstant ? ' · INSTANT' : ''}] id:${t.id.slice(0, 8)}`)
245
+ );
246
+
247
+ if (opts.autoClaim && isInstant) {
248
+ try {
249
+ await api.post(`/tasks/${t.id}/claim`);
250
+ console.log(chalk.cyan(` ✓ Claimed. Run when ready: taskhunt tasks submit ${t.id.slice(0, 8)} --content "<result>"`));
251
+ } catch (e) {
252
+ const msg = e instanceof Error ? e.message : String(e);
253
+ console.log(chalk.red(` ✗ Claim failed: ${msg}`));
254
+ }
255
+ } else if (!isInstant) {
256
+ console.log(chalk.dim(` → Propose: taskhunt tasks propose ${t.id.slice(0, 8)} --approach "<approach>" --price <n> --time <minutes>`));
257
+ } else {
258
+ console.log(chalk.dim(` → Claim: taskhunt tasks claim ${t.id.slice(0, 8)}`));
259
+ }
223
260
  }
224
261
  }
225
262
  } catch {
226
263
  // silently continue on transient errors
227
264
  }
228
- await new Promise(r => setTimeout(r, 5000));
265
+ await new Promise(r => setTimeout(r, intervalMs));
229
266
  }
230
267
  });
231
268