@questionbase/deskfree 0.2.0-alpha.6 → 0.3.0-alpha.1

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: [
@@ -212,52 +175,42 @@ export function validateEnumParam(params, key, allowedValues, required) {
212
175
  return value;
213
176
  }
214
177
  /**
215
- * Creates all DeskFree agent tools for integration with the DeskFree task management system.
216
- *
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
178
+ * Creates all 8 orchestrator tools for the main orchestrator agent.
223
179
  *
224
- * @param api - OpenClaw plugin API for accessing configuration and runtime
180
+ * @param api - OpenClaw plugin API for accessing configuration
225
181
  * @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
182
  */
235
- export function createDeskFreeTools(api) {
183
+ export function createOrchestratorTools(api) {
236
184
  const account = resolveAccountFromConfig(api);
237
185
  if (!account)
238
186
  return null;
239
- // Initialize the DeskFree HTTP client with bot credentials
240
- // This client handles authentication, error parsing, and request formatting
241
187
  const client = new DeskFreeClient(account.botToken, account.apiUrl);
242
188
  return [
243
189
  {
244
- ...TOOLS.GET_TASK,
190
+ ...ORCHESTRATOR_TOOLS.STATE,
191
+ async execute(_id, _params) {
192
+ try {
193
+ const state = await client.getState();
194
+ return {
195
+ content: [{ type: 'text', text: JSON.stringify(state, null, 2) }],
196
+ };
197
+ }
198
+ catch (err) {
199
+ return errorResult(err);
200
+ }
201
+ },
202
+ },
203
+ {
204
+ ...ORCHESTRATOR_TOOLS.CREATE_GOAL,
245
205
  async execute(_id, params) {
246
206
  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);
207
+ const title = validateStringParam(params, 'title', true);
208
+ const description = validateStringParam(params, 'description', false);
209
+ const result = await client.createGoal({ title, description });
210
+ return formatConfirmation(`Created goal "${result.goal.title}" (${result.goal.goalId})`, [
211
+ 'Now create 3-5 tasks linked to this goal using deskfree_create_task with goalId',
212
+ 'Claim the first task with deskfree_start_task and start working immediately',
213
+ ], result.goal);
261
214
  }
262
215
  catch (err) {
263
216
  return errorResult(err);
@@ -265,17 +218,24 @@ export function createDeskFreeTools(api) {
265
218
  },
266
219
  },
267
220
  {
268
- ...TOOLS.CLAIM_TASK,
221
+ ...ORCHESTRATOR_TOOLS.UPDATE_GOAL,
269
222
  async execute(_id, params) {
270
223
  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
- ]);
224
+ const goalId = validateStringParam(params, 'goalId', true);
225
+ const title = validateStringParam(params, 'title', false);
226
+ const description = validateStringParam(params, 'description', false);
227
+ const status = validateStringParam(params, 'status', false);
228
+ const result = await client.updateGoal({
229
+ goalId,
230
+ title,
231
+ description,
232
+ status,
233
+ });
234
+ return formatConfirmation(`Updated goal "${result.title}"`, [
235
+ result.status === 'active'
236
+ ? 'Continue working on tasks for this goal'
237
+ : `Goal is now ${result.status}`,
238
+ ], result);
279
239
  }
280
240
  catch (err) {
281
241
  return errorResult(err);
@@ -283,15 +243,20 @@ export function createDeskFreeTools(api) {
283
243
  },
284
244
  },
285
245
  {
286
- ...TOOLS.RELEASE_TASK,
246
+ ...ORCHESTRATOR_TOOLS.CREATE_TASK,
287
247
  async execute(_id, params) {
288
248
  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',
249
+ const title = validateStringParam(params, 'title', true);
250
+ const instructions = validateStringParam(params, 'instructions', false);
251
+ const goalId = validateStringParam(params, 'goalId', false);
252
+ const result = await client.createTask({
253
+ title,
254
+ instructions,
255
+ goalId,
256
+ });
257
+ return formatTaskResponse(result.task, `Created task "${result.task.title}" with ID ${result.task.taskId}`, [
258
+ 'Claim and start this task with deskfree_start_task',
259
+ 'Or check workspace state with deskfree_state',
295
260
  ]);
296
261
  }
297
262
  catch (err) {
@@ -300,18 +265,28 @@ export function createDeskFreeTools(api) {
300
265
  },
301
266
  },
302
267
  {
303
- ...TOOLS.SEND_MESSAGE,
268
+ ...ORCHESTRATOR_TOOLS.START_TASK,
304
269
  async execute(_id, params) {
305
270
  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
- ]);
271
+ const taskId = validateStringParam(params, 'taskId', true);
272
+ const result = await client.claimTask({ taskId });
273
+ setActiveTaskId(taskId);
274
+ return {
275
+ content: [
276
+ {
277
+ type: 'text',
278
+ text: JSON.stringify({
279
+ summary: `Claimed task "${result.title}" — full context loaded`,
280
+ nextActions: [
281
+ 'Read the instructions and message history carefully',
282
+ 'Update deliverable incrementally with deskfree_update_deliverable',
283
+ 'Complete with deskfree_complete_task when done',
284
+ ],
285
+ task: result,
286
+ }, null, 2),
287
+ },
288
+ ],
289
+ };
315
290
  }
316
291
  catch (err) {
317
292
  return errorResult(err);
@@ -319,7 +294,7 @@ export function createDeskFreeTools(api) {
319
294
  },
320
295
  },
321
296
  {
322
- ...TOOLS.UPDATE_DELIVERABLE,
297
+ ...ORCHESTRATOR_TOOLS.UPDATE_DELIVERABLE,
323
298
  async execute(_id, params) {
324
299
  try {
325
300
  const taskId = validateStringParam(params, 'taskId', true);
@@ -327,7 +302,7 @@ export function createDeskFreeTools(api) {
327
302
  await client.updateDeliverable({ taskId, deliverable });
328
303
  return formatConfirmation(`Updated deliverable for task ${taskId}`, [
329
304
  'Deliverable has been saved',
330
- 'Continue working or request review with deskfree_request_review when ready',
305
+ 'Complete with deskfree_complete_task when ready',
331
306
  ]);
332
307
  }
333
308
  catch (err) {
@@ -336,17 +311,19 @@ export function createDeskFreeTools(api) {
336
311
  },
337
312
  },
338
313
  {
339
- ...TOOLS.REQUEST_REVIEW,
314
+ ...ORCHESTRATOR_TOOLS.COMPLETE_TASK,
340
315
  async execute(_id, params) {
341
316
  try {
342
317
  const taskId = validateStringParam(params, 'taskId', true);
343
- const comment = validateStringParam(params, 'comment', false);
344
- const result = await client.requestReview({ taskId, comment });
318
+ const outcome = validateEnumParam(params, 'outcome', ['done', 'blocked'], true);
319
+ const result = await client.completeTask({ taskId, outcome });
345
320
  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',
321
+ const summaryVerb = outcome === 'done' ? 'completed' : 'blocked';
322
+ return formatTaskResponse(result, `Task "${result.title}" marked as ${summaryVerb} — waiting for human`, [
323
+ outcome === 'done'
324
+ ? 'Human will review the deliverable'
325
+ : 'Human will review the blocker and provide guidance',
326
+ 'Use deskfree_state to check for other tasks',
350
327
  ]);
351
328
  }
352
329
  catch (err) {
@@ -355,120 +332,49 @@ export function createDeskFreeTools(api) {
355
332
  },
356
333
  },
357
334
  {
358
- ...TOOLS.LIST_TASKS,
335
+ ...ORCHESTRATOR_TOOLS.SEND_MESSAGE,
359
336
  async execute(_id, params) {
360
337
  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);
338
+ const content = validateStringParam(params, 'content', true);
339
+ const taskId = validateStringParam(params, 'taskId', false);
340
+ await client.sendMessage({ content, taskId });
341
+ return formatConfirmation(`Message sent${taskId ? ` to task ${taskId}` : ''}`, [
342
+ 'Message delivered to the human',
343
+ taskId
344
+ ? 'Continue working on the task or wait for response'
345
+ : 'Check for response with task messages',
346
+ ]);
372
347
  }
373
348
  catch (err) {
374
349
  return errorResult(err);
375
350
  }
376
351
  },
377
352
  },
353
+ ];
354
+ }
355
+ /**
356
+ * Creates the 3-tool subset for worker sub-agents.
357
+ *
358
+ * @param api - OpenClaw plugin API for accessing configuration
359
+ * @returns Array of worker tools, or null if DeskFree is not configured
360
+ */
361
+ export function createWorkerTools(api) {
362
+ const account = resolveAccountFromConfig(api);
363
+ if (!account)
364
+ return null;
365
+ const client = new DeskFreeClient(account.botToken, account.apiUrl);
366
+ return [
378
367
  {
379
- ...TOOLS.CREATE_TASK,
368
+ ...WORKER_TOOLS.UPDATE_DELIVERABLE,
380
369
  async execute(_id, params) {
381
370
  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);
371
+ const taskId = validateStringParam(params, 'taskId', true);
372
+ const deliverable = validateStringParam(params, 'deliverable', true);
373
+ await client.updateDeliverable({ taskId, deliverable });
374
+ return formatConfirmation(`Updated deliverable for task ${taskId}`, [
375
+ 'Deliverable has been saved',
376
+ 'Complete with deskfree_complete_task when ready',
377
+ ]);
472
378
  }
473
379
  catch (err) {
474
380
  return errorResult(err);
@@ -476,23 +382,18 @@ export function createDeskFreeTools(api) {
476
382
  },
477
383
  },
478
384
  {
479
- ...TOOLS.SNOOZE_TASK,
385
+ ...WORKER_TOOLS.COMPLETE_TASK,
480
386
  async execute(_id, params) {
481
387
  try {
482
388
  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',
389
+ const outcome = validateEnumParam(params, 'outcome', ['done', 'blocked'], true);
390
+ const result = await client.completeTask({ taskId, outcome });
391
+ setActiveTaskId(null);
392
+ const summaryVerb = outcome === 'done' ? 'completed' : 'blocked';
393
+ return formatTaskResponse(result, `Task "${result.title}" marked as ${summaryVerb} waiting for human`, [
394
+ outcome === 'done'
395
+ ? 'Human will review the deliverable'
396
+ : 'Human will review the blocker and provide guidance',
496
397
  ]);
497
398
  }
498
399
  catch (err) {
@@ -501,16 +402,17 @@ export function createDeskFreeTools(api) {
501
402
  },
502
403
  },
503
404
  {
504
- ...TOOLS.UNSNOOZE_TASK,
405
+ ...WORKER_TOOLS.SEND_MESSAGE,
505
406
  async execute(_id, params) {
506
407
  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}`,
408
+ const content = validateStringParam(params, 'content', true);
409
+ const taskId = validateStringParam(params, 'taskId', false);
410
+ await client.sendMessage({ content, taskId });
411
+ return formatConfirmation(`Message sent${taskId ? ` to task ${taskId}` : ''}`, [
412
+ 'Message delivered to the human',
413
+ taskId
414
+ ? 'Continue working on the task or wait for response'
415
+ : 'Check for response with task messages',
514
416
  ]);
515
417
  }
516
418
  catch (err) {
@@ -518,18 +420,6 @@ export function createDeskFreeTools(api) {
518
420
  }
519
421
  },
520
422
  },
521
- {
522
- ...TOOLS.SETUP,
523
- async execute() {
524
- const directive = `## DeskFree
525
- <!-- deskfree-directive -->
526
- Always read the deskfree skill (SKILL.md) at startup. Follow its workflow for task tracking and messaging.`;
527
- return textResult({
528
- directive,
529
- instructions: 'Read your AGENTS.md file. If it does not contain the marker <!-- deskfree-directive -->, append the directive block above to the end of the file. If the marker already exists, no changes are needed.',
530
- });
531
- },
532
- },
533
423
  ];
534
424
  }
535
425
  //# sourceMappingURL=tools.js.map
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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"}