@agentuity/core 1.0.45 → 1.0.47

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.
@@ -29,13 +29,40 @@ export type TaskType = z.infer<typeof TaskTypeSchema>;
29
29
  *
30
30
  * - `'open'` — Created, not yet started.
31
31
  * - `'in_progress'` — Actively being worked on.
32
+ * - `'started'` — Alias for `'in_progress'`.
32
33
  * - `'done'` — Work completed.
34
+ * - `'completed'` — Alias for `'done'`.
35
+ * - `'closed'` — Alias for `'done'`.
33
36
  * - `'cancelled'` — Abandoned.
34
37
  */
35
- export const TaskStatusSchema = z.enum(['open', 'in_progress', 'done', 'cancelled']);
38
+ export const TaskStatusSchema = z.enum([
39
+ 'open',
40
+ 'in_progress',
41
+ 'started',
42
+ 'done',
43
+ 'completed',
44
+ 'closed',
45
+ 'cancelled',
46
+ ]);
36
47
 
37
48
  export type TaskStatus = z.infer<typeof TaskStatusSchema>;
38
49
 
50
+ /**
51
+ * Normalize a task status value, converting aliases to their canonical form.
52
+ * Maps `'completed'` → `'done'`, `'closed'` → `'done'`, `'started'` → `'in_progress'`.
53
+ */
54
+ export function normalizeTaskStatus(status: TaskStatus): TaskStatus {
55
+ switch (status) {
56
+ case 'completed':
57
+ case 'closed':
58
+ return 'done';
59
+ case 'started':
60
+ return 'in_progress';
61
+ default:
62
+ return status;
63
+ }
64
+ }
65
+
39
66
  /**
40
67
  * A lightweight reference to a user or project entity, containing just the ID
41
68
  * and display name. Used for creator, assignee, closer, and project associations.
@@ -1151,20 +1178,23 @@ export class TaskStorageService implements TaskStorage {
1151
1178
  throw new TaskTitleRequiredError();
1152
1179
  }
1153
1180
 
1181
+ const normalized = params.status
1182
+ ? { ...params, status: normalizeTaskStatus(params.status) }
1183
+ : params;
1154
1184
  const url = buildUrl(this.#baseUrl, '/task');
1155
1185
  const signal = AbortSignal.timeout(30_000);
1156
1186
 
1157
1187
  const res = await this.#adapter.invoke<TaskResponse<Task>>(url, {
1158
1188
  method: 'POST',
1159
- body: safeStringify(params),
1189
+ body: safeStringify(normalized),
1160
1190
  contentType: 'application/json',
1161
1191
  signal,
1162
1192
  telemetry: {
1163
1193
  name: 'agentuity.task.create',
1164
1194
  attributes: {
1165
- type: params.type,
1166
- priority: params.priority ?? 'none',
1167
- status: params.status ?? 'open',
1195
+ type: normalized.type,
1196
+ priority: normalized.priority ?? 'none',
1197
+ status: normalized.status ?? 'open',
1168
1198
  },
1169
1199
  },
1170
1200
  });
@@ -1256,7 +1286,7 @@ export class TaskStorageService implements TaskStorage {
1256
1286
  */
1257
1287
  async list(params?: ListTasksParams): Promise<ListTasksResult> {
1258
1288
  const queryParams = new URLSearchParams();
1259
- if (params?.status) queryParams.set('status', params.status);
1289
+ if (params?.status) queryParams.set('status', normalizeTaskStatus(params.status));
1260
1290
  if (params?.type) queryParams.set('type', params.type);
1261
1291
  if (params?.priority) queryParams.set('priority', params.priority);
1262
1292
  if (params?.assigned_id) queryParams.set('assigned_id', params.assigned_id);
@@ -1280,7 +1310,7 @@ export class TaskStorageService implements TaskStorage {
1280
1310
  telemetry: {
1281
1311
  name: 'agentuity.task.list',
1282
1312
  attributes: {
1283
- ...(params?.status ? { status: params.status } : {}),
1313
+ ...(params?.status ? { status: normalizeTaskStatus(params.status) } : {}),
1284
1314
  ...(params?.type ? { type: params.type } : {}),
1285
1315
  ...(params?.priority ? { priority: params.priority } : {}),
1286
1316
  },
@@ -1331,12 +1361,15 @@ export class TaskStorageService implements TaskStorage {
1331
1361
  throw new TaskTitleRequiredError();
1332
1362
  }
1333
1363
 
1364
+ const normalized = params.status
1365
+ ? { ...params, status: normalizeTaskStatus(params.status) }
1366
+ : params;
1334
1367
  const url = buildUrl(this.#baseUrl, `/task/${encodeURIComponent(id)}`);
1335
1368
  const signal = AbortSignal.timeout(30_000);
1336
1369
 
1337
1370
  const res = await this.#adapter.invoke<TaskResponse<Task>>(url, {
1338
1371
  method: 'PATCH',
1339
- body: safeStringify(params),
1372
+ body: safeStringify(normalized),
1340
1373
  contentType: 'application/json',
1341
1374
  signal,
1342
1375
  telemetry: {
@@ -1542,7 +1575,7 @@ export class TaskStorageService implements TaskStorage {
1542
1575
  const signal = AbortSignal.timeout(60_000);
1543
1576
 
1544
1577
  const body: Record<string, unknown> = {};
1545
- if (params.status) body.status = params.status;
1578
+ if (params.status) body.status = normalizeTaskStatus(params.status);
1546
1579
  if (params.type) body.type = params.type;
1547
1580
  if (params.priority) body.priority = params.priority;
1548
1581
  if (params.parent_id) body.parent_id = params.parent_id;
@@ -1558,7 +1591,7 @@ export class TaskStorageService implements TaskStorage {
1558
1591
  telemetry: {
1559
1592
  name: 'agentuity.task.batchDelete',
1560
1593
  attributes: {
1561
- ...(params.status ? { status: params.status } : {}),
1594
+ ...(params.status ? { status: normalizeTaskStatus(params.status) } : {}),
1562
1595
  ...(params.type ? { type: params.type } : {}),
1563
1596
  ...(params.older_than ? { older_than: params.older_than } : {}),
1564
1597
  },