@questionbase/deskfree 0.2.0-alpha.7 → 0.3.0-alpha.2

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/dist/tools.js CHANGED
@@ -5,10 +5,9 @@
5
5
  * providing tools for task management, message sending, and bot collaboration.
6
6
  *
7
7
  * Architecture:
8
- * - Tools are created based on the channel configuration in config.yaml
9
- * - Each tool validates parameters, calls the DeskFree API, and returns formatted responses
10
- * - Error handling provides user-friendly messages with suggestions
11
- * - All responses follow a consistent JSON structure for agent consumption
8
+ * - createOrchestratorTools() full 8-tool set for orchestrator agents
9
+ * - createWorkerTools() — 3-tool subset for worker sub-agents
10
+ * - createDeskFreeTools() backward-compat alias for createOrchestratorTools()
12
11
  *
13
12
  * Configuration:
14
13
  * Tools are only available when DeskFree is properly configured in channels.deskfree
@@ -16,26 +15,10 @@
16
15
  */
17
16
  import { DeskFreeClient, DeskFreeError } from './client';
18
17
  import { setActiveTaskId } from './gateway';
19
- import { TOOLS } from './llm-definitions';
20
- /**
21
- * Valid task status values for filtering in the DeskFree state machine.
22
- * These match the task lifecycle defined in the DeskFree backend:
23
- * - ready_for_bot: Available for any bot to claim
24
- * - working_on_it: Currently being worked on by a bot
25
- * - waiting_for_human: Submitted for human review/approval
26
- * - done: Completed and approved by human
27
- */
28
- const VALID_TASK_STATUSES = [
29
- 'ready_for_bot',
30
- 'working_on_it',
31
- 'waiting_for_human',
32
- 'done',
33
- ];
18
+ import { ORCHESTRATOR_TOOLS, WORKER_TOOLS } from './llm-definitions';
34
19
  /**
35
20
  * Resolve the DeskFree account from the plugin config.
36
21
  * Supports both single account mode (direct config) and multi-account mode (accounts object).
37
- * Multi-account mode allows connecting to multiple DeskFree instances with different credentials.
38
- * Shared logic with channel.ts — reads channels.deskfree from config.
39
22
  */
40
23
  function resolveAccountFromConfig(api) {
41
24
  const cfg = api.runtime.config.loadConfig();
@@ -67,9 +50,6 @@ function resolveAccountFromConfig(api) {
67
50
  enabled: ch.enabled !== false,
68
51
  };
69
52
  }
70
- function _textResult(data) {
71
- return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
72
- }
73
53
  function formatTaskResponse(task, summary, nextActions) {
74
54
  return {
75
55
  content: [
@@ -84,20 +64,6 @@ function formatTaskResponse(task, summary, nextActions) {
84
64
  ],
85
65
  };
86
66
  }
87
- function formatListResponse(tasks, summary, nextActions) {
88
- return {
89
- content: [
90
- {
91
- type: 'text',
92
- text: JSON.stringify({
93
- summary,
94
- nextActions,
95
- tasks,
96
- }, null, 2),
97
- },
98
- ],
99
- };
100
- }
101
67
  function formatConfirmation(summary, nextActions, data) {
102
68
  return {
103
69
  content: [
@@ -131,17 +97,15 @@ function suggestionForErrorType(type, statusCode) {
131
97
  if (statusCode === 429)
132
98
  return 'Too many requests. Wait a moment before trying again.';
133
99
  if (statusCode === 409)
134
- return 'Try listing tasks with status="ready_for_bot" to find unclaimed tasks.';
100
+ return 'Try calling deskfree_state to see available tasks.';
135
101
  if (statusCode === 404)
136
- return 'Use deskfree_list_tasks to see all available tasks and verify the taskId.';
102
+ return 'Use deskfree_state to see all available tasks and verify the taskId.';
137
103
  return 'Check your input parameters and try again.';
138
104
  default:
139
105
  return '';
140
106
  }
141
107
  }
142
108
  function errorResult(err) {
143
- // Use DeskFreeError's structured fields when available — they provide
144
- // pre-formatted user-friendly messages and error classification.
145
109
  if (err instanceof DeskFreeError) {
146
110
  const suggestion = suggestionForErrorType(err.type, err.statusCode);
147
111
  return {
@@ -161,7 +125,6 @@ function errorResult(err) {
161
125
  isError: true,
162
126
  };
163
127
  }
164
- // Fallback for non-DeskFreeError exceptions (validation errors, etc.)
165
128
  const rawMessage = err instanceof Error ? err.message : String(err);
166
129
  return {
167
130
  content: [
@@ -177,6 +140,12 @@ function errorResult(err) {
177
140
  };
178
141
  }
179
142
  export function validateStringParam(params, key, required) {
143
+ if (!params) {
144
+ if (required) {
145
+ throw new Error(`Required parameter '${key}' is missing (no params provided)`);
146
+ }
147
+ return undefined;
148
+ }
180
149
  const value = params[key];
181
150
  if (value == null) {
182
151
  if (required) {
@@ -193,6 +162,12 @@ export function validateStringParam(params, key, required) {
193
162
  return value;
194
163
  }
195
164
  export function validateEnumParam(params, key, allowedValues, required) {
165
+ if (!params) {
166
+ if (required) {
167
+ throw new Error(`Required parameter '${key}' is missing (no params provided)`);
168
+ }
169
+ return undefined;
170
+ }
196
171
  const value = params[key];
197
172
  if (value == null) {
198
173
  if (required) {
@@ -212,52 +187,42 @@ export function validateEnumParam(params, key, allowedValues, required) {
212
187
  return value;
213
188
  }
214
189
  /**
215
- * Creates all DeskFree agent tools for integration with the DeskFree task management system.
190
+ * Creates all 8 orchestrator tools for the main orchestrator agent.
216
191
  *
217
- * This function dynamically creates agent tools based on the DeskFree configuration
218
- * in the OpenClaw config file. Tools enable agents to:
219
- * - Claim and release tasks
220
- * - Update task deliverables and request reviews
221
- * - Send messages to humans
222
- * - List and retrieve task information
223
- *
224
- * @param api - OpenClaw plugin API for accessing configuration and runtime
192
+ * @param api - OpenClaw plugin API for accessing configuration
225
193
  * @returns Array of agent tools, or null if DeskFree is not configured
226
- *
227
- * @example
228
- * // In config.yaml:
229
- * channels:
230
- * deskfree:
231
- * botToken: "your-bot-token"
232
- * apiUrl: "https://api.deskfree.ai"
233
- * enabled: true
234
194
  */
235
- export function createDeskFreeTools(api) {
195
+ export function createOrchestratorTools(api) {
236
196
  const account = resolveAccountFromConfig(api);
237
197
  if (!account)
238
198
  return null;
239
- // Initialize the DeskFree HTTP client with bot credentials
240
- // This client handles authentication, error parsing, and request formatting
241
199
  const client = new DeskFreeClient(account.botToken, account.apiUrl);
242
200
  return [
243
201
  {
244
- ...TOOLS.GET_TASK,
202
+ ...ORCHESTRATOR_TOOLS.STATE,
203
+ async execute(_id, _params) {
204
+ try {
205
+ const state = await client.getState();
206
+ return {
207
+ content: [{ type: 'text', text: JSON.stringify(state, null, 2) }],
208
+ };
209
+ }
210
+ catch (err) {
211
+ return errorResult(err);
212
+ }
213
+ },
214
+ },
215
+ {
216
+ ...ORCHESTRATOR_TOOLS.CREATE_GOAL,
245
217
  async execute(_id, params) {
246
218
  try {
247
- const taskId = validateStringParam(params, 'taskId', true);
248
- const result = await client.getTask({ taskId });
249
- const nextActions = [];
250
- if (result.status === 'ready_for_bot') {
251
- nextActions.push('You can claim this task with deskfree_claim_task');
252
- }
253
- else if (result.status === 'working_on_it' && result.botId) {
254
- nextActions.push('Update deliverable with deskfree_update_deliverable');
255
- nextActions.push('Request review when ready with deskfree_request_review');
256
- }
257
- else if (result.status === 'waiting_for_human') {
258
- nextActions.push('Wait for human review or send a message with deskfree_send_message');
259
- }
260
- return formatTaskResponse(result, `Task "${result.title}" is ${result.status}`, nextActions);
219
+ const title = validateStringParam(params, 'title', true);
220
+ const description = validateStringParam(params, 'description', false);
221
+ const result = await client.createGoal({ title, description });
222
+ return formatConfirmation(`Created goal "${result.goal.title}" (${result.goal.goalId})`, [
223
+ 'Now create 3-5 tasks linked to this goal using deskfree_create_task with goalId',
224
+ 'Claim the first task with deskfree_start_task and start working immediately',
225
+ ], result.goal);
261
226
  }
262
227
  catch (err) {
263
228
  return errorResult(err);
@@ -265,17 +230,24 @@ export function createDeskFreeTools(api) {
265
230
  },
266
231
  },
267
232
  {
268
- ...TOOLS.CLAIM_TASK,
233
+ ...ORCHESTRATOR_TOOLS.UPDATE_GOAL,
269
234
  async execute(_id, params) {
270
235
  try {
271
- const taskId = validateStringParam(params, 'taskId', true);
272
- const result = await client.claimTask({ taskId });
273
- setActiveTaskId(taskId);
274
- return formatTaskResponse(result, `Successfully claimed task "${result.title}"`, [
275
- 'Use deskfree_get_task to get full task context',
276
- 'Work on the task and update deliverable with deskfree_update_deliverable',
277
- 'Request review when done with deskfree_request_review',
278
- ]);
236
+ const goalId = validateStringParam(params, 'goalId', true);
237
+ const title = validateStringParam(params, 'title', false);
238
+ const description = validateStringParam(params, 'description', false);
239
+ const status = validateStringParam(params, 'status', false);
240
+ const result = await client.updateGoal({
241
+ goalId,
242
+ title,
243
+ description,
244
+ status,
245
+ });
246
+ return formatConfirmation(`Updated goal "${result.title}"`, [
247
+ result.status === 'active'
248
+ ? 'Continue working on tasks for this goal'
249
+ : `Goal is now ${result.status}`,
250
+ ], result);
279
251
  }
280
252
  catch (err) {
281
253
  return errorResult(err);
@@ -283,15 +255,20 @@ export function createDeskFreeTools(api) {
283
255
  },
284
256
  },
285
257
  {
286
- ...TOOLS.RELEASE_TASK,
258
+ ...ORCHESTRATOR_TOOLS.CREATE_TASK,
287
259
  async execute(_id, params) {
288
260
  try {
289
- const taskId = validateStringParam(params, 'taskId', true);
290
- const result = await client.releaseTask({ taskId });
291
- setActiveTaskId(null);
292
- return formatTaskResponse(result, `Released task "${result.title}"`, [
293
- 'Task is now available for other bots to claim',
294
- 'Use deskfree_list_tasks to find other tasks',
261
+ const title = validateStringParam(params, 'title', true);
262
+ const instructions = validateStringParam(params, 'instructions', false);
263
+ const goalId = validateStringParam(params, 'goalId', false);
264
+ const result = await client.createTask({
265
+ title,
266
+ instructions,
267
+ goalId,
268
+ });
269
+ return formatTaskResponse(result.task, `Created task "${result.task.title}" with ID ${result.task.taskId}`, [
270
+ 'Claim and start this task with deskfree_start_task',
271
+ 'Or check workspace state with deskfree_state',
295
272
  ]);
296
273
  }
297
274
  catch (err) {
@@ -300,18 +277,28 @@ export function createDeskFreeTools(api) {
300
277
  },
301
278
  },
302
279
  {
303
- ...TOOLS.SEND_MESSAGE,
280
+ ...ORCHESTRATOR_TOOLS.START_TASK,
304
281
  async execute(_id, params) {
305
282
  try {
306
- const content = validateStringParam(params, 'content', true);
307
- const taskId = validateStringParam(params, 'taskId', false);
308
- await client.sendMessage({ content, taskId });
309
- return formatConfirmation(`Message sent${taskId ? ` to task ${taskId}` : ''}`, [
310
- 'Message delivered to the human',
311
- taskId
312
- ? 'Continue working on the task or wait for response'
313
- : 'Check for response with task messages',
314
- ]);
283
+ const taskId = validateStringParam(params, 'taskId', true);
284
+ const result = await client.claimTask({ taskId });
285
+ setActiveTaskId(taskId);
286
+ return {
287
+ content: [
288
+ {
289
+ type: 'text',
290
+ text: JSON.stringify({
291
+ summary: `Claimed task "${result.title}" — full context loaded`,
292
+ nextActions: [
293
+ 'Read the instructions and message history carefully',
294
+ 'Update deliverable incrementally with deskfree_update_deliverable',
295
+ 'Complete with deskfree_complete_task when done',
296
+ ],
297
+ task: result,
298
+ }, null, 2),
299
+ },
300
+ ],
301
+ };
315
302
  }
316
303
  catch (err) {
317
304
  return errorResult(err);
@@ -319,7 +306,7 @@ export function createDeskFreeTools(api) {
319
306
  },
320
307
  },
321
308
  {
322
- ...TOOLS.UPDATE_DELIVERABLE,
309
+ ...ORCHESTRATOR_TOOLS.UPDATE_DELIVERABLE,
323
310
  async execute(_id, params) {
324
311
  try {
325
312
  const taskId = validateStringParam(params, 'taskId', true);
@@ -327,7 +314,7 @@ export function createDeskFreeTools(api) {
327
314
  await client.updateDeliverable({ taskId, deliverable });
328
315
  return formatConfirmation(`Updated deliverable for task ${taskId}`, [
329
316
  'Deliverable has been saved',
330
- 'Continue working or request review with deskfree_request_review when ready',
317
+ 'Complete with deskfree_complete_task when ready',
331
318
  ]);
332
319
  }
333
320
  catch (err) {
@@ -336,17 +323,19 @@ export function createDeskFreeTools(api) {
336
323
  },
337
324
  },
338
325
  {
339
- ...TOOLS.REQUEST_REVIEW,
326
+ ...ORCHESTRATOR_TOOLS.COMPLETE_TASK,
340
327
  async execute(_id, params) {
341
328
  try {
342
329
  const taskId = validateStringParam(params, 'taskId', true);
343
- const comment = validateStringParam(params, 'comment', false);
344
- const result = await client.requestReview({ taskId, comment });
330
+ const outcome = validateEnumParam(params, 'outcome', ['done', 'blocked'], true);
331
+ const result = await client.completeTask({ taskId, outcome });
345
332
  setActiveTaskId(null);
346
- return formatTaskResponse(result, `Submitted task "${result.title}" for review`, [
347
- 'Task is now waiting for human review',
348
- 'Remember to terminate any sub-agents working on this task',
349
- 'You can send additional messages with deskfree_send_message',
333
+ const summaryVerb = outcome === 'done' ? 'completed' : 'blocked';
334
+ return formatTaskResponse(result, `Task "${result.title}" marked as ${summaryVerb} — waiting for human`, [
335
+ outcome === 'done'
336
+ ? 'Human will review the deliverable'
337
+ : 'Human will review the blocker and provide guidance',
338
+ 'Use deskfree_state to check for other tasks',
350
339
  ]);
351
340
  }
352
341
  catch (err) {
@@ -355,120 +344,49 @@ export function createDeskFreeTools(api) {
355
344
  },
356
345
  },
357
346
  {
358
- ...TOOLS.LIST_TASKS,
347
+ ...ORCHESTRATOR_TOOLS.SEND_MESSAGE,
359
348
  async execute(_id, params) {
360
349
  try {
361
- const status = validateEnumParam(params, 'status', VALID_TASK_STATUSES, false);
362
- const result = await client.listTasks({ status });
363
- const readyForBot = result.tasks.filter((t) => t.status === 'ready_for_bot');
364
- const nextActions = [];
365
- if (readyForBot.length > 0) {
366
- nextActions.push(`${readyForBot.length} task(s) ready for bot - claim one with deskfree_claim_task`);
367
- }
368
- else {
369
- nextActions.push('No tasks ready for bot. Create a new task with deskfree_create_task if needed');
370
- }
371
- return formatListResponse(result.tasks, `Found ${result.tasks.length} task(s)${status ? ` with status "${status}"` : ''} (${readyForBot.length} ready for bot)`, nextActions);
350
+ const content = validateStringParam(params, 'content', true);
351
+ const taskId = validateStringParam(params, 'taskId', false);
352
+ await client.sendMessage({ content, taskId });
353
+ return formatConfirmation(`Message sent${taskId ? ` to task ${taskId}` : ''}`, [
354
+ 'Message delivered to the human',
355
+ taskId
356
+ ? 'Continue working on the task or wait for response'
357
+ : 'Check for response with task messages',
358
+ ]);
372
359
  }
373
360
  catch (err) {
374
361
  return errorResult(err);
375
362
  }
376
363
  },
377
364
  },
365
+ ];
366
+ }
367
+ /**
368
+ * Creates the 3-tool subset for worker sub-agents.
369
+ *
370
+ * @param api - OpenClaw plugin API for accessing configuration
371
+ * @returns Array of worker tools, or null if DeskFree is not configured
372
+ */
373
+ export function createWorkerTools(api) {
374
+ const account = resolveAccountFromConfig(api);
375
+ if (!account)
376
+ return null;
377
+ const client = new DeskFreeClient(account.botToken, account.apiUrl);
378
+ return [
378
379
  {
379
- ...TOOLS.CREATE_TASK,
380
+ ...WORKER_TOOLS.UPDATE_DELIVERABLE,
380
381
  async execute(_id, params) {
381
382
  try {
382
- const title = validateStringParam(params, 'title', true);
383
- const instructions = validateStringParam(params, 'instructions', false);
384
- // Validate isRecurring
385
- const rawIsRecurring = params.isRecurring;
386
- let isRecurring;
387
- if (rawIsRecurring != null) {
388
- if (typeof rawIsRecurring !== 'boolean') {
389
- throw new Error(`Parameter 'isRecurring' must be a boolean, got ${typeof rawIsRecurring}`);
390
- }
391
- isRecurring = rawIsRecurring;
392
- }
393
- // Validate recurringSchedule
394
- const VALID_FREQUENCIES = [
395
- 'daily',
396
- 'weekly',
397
- 'biweekly',
398
- 'monthly',
399
- ];
400
- let recurringSchedule;
401
- const rawSchedule = params.recurringSchedule;
402
- if (rawSchedule != null) {
403
- if (typeof rawSchedule !== 'object' || Array.isArray(rawSchedule)) {
404
- throw new Error("Parameter 'recurringSchedule' must be an object");
405
- }
406
- const sched = rawSchedule;
407
- // frequency (required)
408
- if (!sched.frequency || typeof sched.frequency !== 'string') {
409
- throw new Error('recurringSchedule.frequency is required and must be a string');
410
- }
411
- if (!VALID_FREQUENCIES.includes(sched.frequency)) {
412
- throw new Error(`recurringSchedule.frequency must be one of: ${VALID_FREQUENCIES.join(', ')}`);
413
- }
414
- // time (required)
415
- if (!sched.time || typeof sched.time !== 'string') {
416
- throw new Error("recurringSchedule.time is required (e.g., '09:00')");
417
- }
418
- if (!/^\d{2}:\d{2}$/.test(sched.time)) {
419
- throw new Error("recurringSchedule.time must be in HH:mm format (e.g., '09:00')");
420
- }
421
- // dayOfWeek (optional, 0-6)
422
- if (sched.dayOfWeek != null) {
423
- if (typeof sched.dayOfWeek !== 'number' ||
424
- !Number.isInteger(sched.dayOfWeek) ||
425
- sched.dayOfWeek < 0 ||
426
- sched.dayOfWeek > 6) {
427
- throw new Error('recurringSchedule.dayOfWeek must be an integer 0-6 (0=Sun, 6=Sat)');
428
- }
429
- }
430
- // dayOfMonth (optional, 1-31)
431
- if (sched.dayOfMonth != null) {
432
- if (typeof sched.dayOfMonth !== 'number' ||
433
- !Number.isInteger(sched.dayOfMonth) ||
434
- sched.dayOfMonth < 1 ||
435
- sched.dayOfMonth > 31) {
436
- throw new Error('recurringSchedule.dayOfMonth must be an integer 1-31');
437
- }
438
- }
439
- // timezone (optional string)
440
- if (sched.timezone != null && typeof sched.timezone !== 'string') {
441
- throw new Error('recurringSchedule.timezone must be a string');
442
- }
443
- recurringSchedule = {
444
- frequency: sched.frequency,
445
- time: sched.time,
446
- ...(sched.dayOfWeek != null
447
- ? { dayOfWeek: sched.dayOfWeek }
448
- : {}),
449
- ...(sched.dayOfMonth != null
450
- ? { dayOfMonth: sched.dayOfMonth }
451
- : {}),
452
- ...(sched.timezone ? { timezone: sched.timezone } : {}),
453
- };
454
- }
455
- if (isRecurring && !recurringSchedule) {
456
- throw new Error('recurringSchedule is required when isRecurring is true');
457
- }
458
- const result = await client.createTask({
459
- title,
460
- instructions,
461
- isRecurring,
462
- recurringSchedule,
463
- });
464
- const nextActions = [
465
- 'Claim this task with deskfree_claim_task to start working on it',
466
- 'Or list all tasks with deskfree_list_tasks',
467
- ];
468
- if (isRecurring) {
469
- nextActions.push('This is a recurring task — it will auto-clone when approved');
470
- }
471
- return formatTaskResponse(result.task, `Created ${isRecurring ? 'recurring ' : ''}task "${result.task.title}" with ID ${result.task.taskId}`, nextActions);
383
+ const taskId = validateStringParam(params, 'taskId', true);
384
+ const deliverable = validateStringParam(params, 'deliverable', true);
385
+ await client.updateDeliverable({ taskId, deliverable });
386
+ return formatConfirmation(`Updated deliverable for task ${taskId}`, [
387
+ 'Deliverable has been saved',
388
+ 'Complete with deskfree_complete_task when ready',
389
+ ]);
472
390
  }
473
391
  catch (err) {
474
392
  return errorResult(err);
@@ -476,23 +394,18 @@ export function createDeskFreeTools(api) {
476
394
  },
477
395
  },
478
396
  {
479
- ...TOOLS.SNOOZE_TASK,
397
+ ...WORKER_TOOLS.COMPLETE_TASK,
480
398
  async execute(_id, params) {
481
399
  try {
482
400
  const taskId = validateStringParam(params, 'taskId', true);
483
- const snoozedUntil = validateStringParam(params, 'snoozedUntil', true);
484
- // Validate it's a future date
485
- const snoozeDate = new Date(snoozedUntil);
486
- if (isNaN(snoozeDate.getTime())) {
487
- throw new Error('snoozedUntil must be a valid ISO 8601 timestamp');
488
- }
489
- if (snoozeDate <= new Date()) {
490
- throw new Error('snoozedUntil must be in the future');
491
- }
492
- const result = await client.snoozeTask({ taskId, snoozedUntil });
493
- return formatTaskResponse(result, `Task "${result.title}" snoozed until ${snoozeDate.toLocaleString()}`, [
494
- 'Task is hidden from active views until the snooze expires',
495
- 'Use deskfree_unsnooze_task to make it visible immediately',
401
+ const outcome = validateEnumParam(params, 'outcome', ['done', 'blocked'], true);
402
+ const result = await client.completeTask({ taskId, outcome });
403
+ setActiveTaskId(null);
404
+ const summaryVerb = outcome === 'done' ? 'completed' : 'blocked';
405
+ return formatTaskResponse(result, `Task "${result.title}" marked as ${summaryVerb} waiting for human`, [
406
+ outcome === 'done'
407
+ ? 'Human will review the deliverable'
408
+ : 'Human will review the blocker and provide guidance',
496
409
  ]);
497
410
  }
498
411
  catch (err) {
@@ -501,16 +414,17 @@ export function createDeskFreeTools(api) {
501
414
  },
502
415
  },
503
416
  {
504
- ...TOOLS.UNSNOOZE_TASK,
417
+ ...WORKER_TOOLS.SEND_MESSAGE,
505
418
  async execute(_id, params) {
506
419
  try {
507
- const taskId = validateStringParam(params, 'taskId', true);
508
- const result = await client.unsnoozeTask({ taskId });
509
- return formatTaskResponse(result, `Task "${result.title}" unsnoozed and visible again`, [
510
- 'Task is now visible in active views',
511
- result.status === 'ready_for_bot'
512
- ? 'Claim it with deskfree_claim_task'
513
- : `Task status is ${result.status}`,
420
+ const content = validateStringParam(params, 'content', true);
421
+ const taskId = validateStringParam(params, 'taskId', false);
422
+ await client.sendMessage({ content, taskId });
423
+ return formatConfirmation(`Message sent${taskId ? ` to task ${taskId}` : ''}`, [
424
+ 'Message delivered to the human',
425
+ taskId
426
+ ? 'Continue working on the task or wait for response'
427
+ : 'Check for response with task messages',
514
428
  ]);
515
429
  }
516
430
  catch (err) {
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}