robotrock 1.3.4 → 1.5.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.
Files changed (80) hide show
  1. package/README.md +11 -1
  2. package/dist/agent-admin.d.ts +5 -0
  3. package/dist/agent-admin.js +75 -2
  4. package/dist/agent-admin.js.map +1 -1
  5. package/dist/ai/index.d.ts +5 -5
  6. package/dist/ai/index.js +120 -4
  7. package/dist/ai/index.js.map +1 -1
  8. package/dist/ai/trigger.d.ts +3 -3
  9. package/dist/ai/trigger.js +120 -4
  10. package/dist/ai/trigger.js.map +1 -1
  11. package/dist/ai/workflow.d.ts +3 -3
  12. package/dist/ai/workflow.js +120 -4
  13. package/dist/ai/workflow.js.map +1 -1
  14. package/dist/{client-CZ5eWH5v.d.ts → client-BxbxttFH.d.ts} +19 -1
  15. package/dist/eve/agent/index.d.ts +4 -4
  16. package/dist/eve/agent/index.js +577 -261
  17. package/dist/eve/agent/index.js.map +1 -1
  18. package/dist/eve/index.d.ts +4 -4
  19. package/dist/eve/index.js +507 -7
  20. package/dist/eve/index.js.map +1 -1
  21. package/dist/eve/tools/admin/assign-tasks.d.ts +40 -19
  22. package/dist/eve/tools/admin/assign-tasks.js +334 -25
  23. package/dist/eve/tools/admin/assign-tasks.js.map +1 -1
  24. package/dist/eve/tools/admin/get-workspace-usage.d.ts +71 -0
  25. package/dist/eve/tools/admin/get-workspace-usage.js +1365 -0
  26. package/dist/eve/tools/admin/get-workspace-usage.js.map +1 -0
  27. package/dist/eve/tools/admin/manage-groups.d.ts +122 -7
  28. package/dist/eve/tools/admin/manage-groups.js +350 -31
  29. package/dist/eve/tools/admin/manage-groups.js.map +1 -1
  30. package/dist/eve/tools/admin/manage-team-members.d.ts +86 -7
  31. package/dist/eve/tools/admin/manage-team-members.js +318 -16
  32. package/dist/eve/tools/admin/manage-team-members.js.map +1 -1
  33. package/dist/eve/tools/admin/query-tasks.d.ts +82 -7
  34. package/dist/eve/tools/admin/query-tasks.js +363 -40
  35. package/dist/eve/tools/admin/query-tasks.js.map +1 -1
  36. package/dist/eve/tools/catalog/generate-image.d.ts +64 -0
  37. package/dist/eve/tools/catalog/generate-image.js +2077 -0
  38. package/dist/eve/tools/catalog/generate-image.js.map +1 -0
  39. package/dist/eve/tools/catalog/generate-random-chart.d.ts +77 -0
  40. package/dist/eve/tools/catalog/generate-random-chart.js +411 -0
  41. package/dist/eve/tools/catalog/generate-random-chart.js.map +1 -0
  42. package/dist/eve/tools/catalog/search-products.d.ts +36 -43
  43. package/dist/eve/tools/catalog/search-products.js +253 -6
  44. package/dist/eve/tools/catalog/search-products.js.map +1 -1
  45. package/dist/eve/tools/identity/index.d.ts +2 -1
  46. package/dist/eve/tools/identity/index.js +26 -6
  47. package/dist/eve/tools/identity/index.js.map +1 -1
  48. package/dist/eve/tools/identity/my-access.d.ts +88 -3
  49. package/dist/eve/tools/identity/my-access.js +26 -6
  50. package/dist/eve/tools/identity/my-access.js.map +1 -1
  51. package/dist/eve/tools/identity/whoami.d.ts +1 -1
  52. package/dist/eve/tools/identity/whoami.js.map +1 -1
  53. package/dist/eve/tools/inbox/create-task.d.ts +1 -1
  54. package/dist/eve/tools/inbox/create-task.js +119 -2
  55. package/dist/eve/tools/inbox/create-task.js.map +1 -1
  56. package/dist/eve/tools/inbox/index.d.ts +1 -1
  57. package/dist/eve/tools/inbox/index.js +119 -2
  58. package/dist/eve/tools/inbox/index.js.map +1 -1
  59. package/dist/eve/tools/index.d.ts +5 -2
  60. package/dist/eve/tools/index.js +964 -115
  61. package/dist/eve/tools/index.js.map +1 -1
  62. package/dist/index-amkHKVGs.d.ts +1054 -0
  63. package/dist/index.d.ts +5 -5
  64. package/dist/index.js +328 -13
  65. package/dist/index.js.map +1 -1
  66. package/dist/schemas/index.js +67 -1
  67. package/dist/schemas/index.js.map +1 -1
  68. package/dist/{tool-approval-bridge-DnGaRES4.d.ts → tool-approval-bridge-Cz7qQUpw.d.ts} +1 -1
  69. package/dist/{tool-reply-guidance-C3qrT1In.d.ts → tool-reply-guidance-CJko9liH.d.ts} +5 -2
  70. package/dist/tool-result-ui-meta-KT0VafEO.d.ts +52 -0
  71. package/dist/trigger/index.d.ts +1 -1
  72. package/dist/trigger/index.js +118 -2
  73. package/dist/trigger/index.js.map +1 -1
  74. package/dist/{trigger--qTIK0s6.d.ts → trigger-C1ooSegc.d.ts} +2 -2
  75. package/dist/workflow/index.d.ts +1 -1
  76. package/dist/workflow/index.js +118 -2
  77. package/dist/workflow/index.js.map +1 -1
  78. package/package.json +21 -4
  79. package/dist/index-Blq0XoAr.d.ts +0 -204
  80. package/dist/tool-ui-hint-CMpug5sC.d.ts +0 -13
@@ -442,6 +442,40 @@ var agentChatLinkTaskBodySchema = z.object({
442
442
  publicTaskId: z.string().min(1),
443
443
  toolCallId: z.string().min(1)
444
444
  });
445
+ var AGENT_FILE_TAGS_MAX = 20;
446
+ var AGENT_FILE_TAG_MAX_LENGTH = 64;
447
+ function normalizeAgentFileTags(tags) {
448
+ if (!tags?.length) return void 0;
449
+ const seen = /* @__PURE__ */ new Set();
450
+ const out = [];
451
+ for (const raw of tags) {
452
+ const tag = raw.trim().toLowerCase().slice(0, AGENT_FILE_TAG_MAX_LENGTH);
453
+ if (!tag || seen.has(tag)) continue;
454
+ seen.add(tag);
455
+ out.push(tag);
456
+ if (out.length >= AGENT_FILE_TAGS_MAX) break;
457
+ }
458
+ return out.length > 0 ? out : void 0;
459
+ }
460
+ var agentChatUploadImageBodySchema = z.object({
461
+ mediaType: z.string().min(1),
462
+ /** Raw base64 (no data: URL prefix). */
463
+ base64: z.string().min(1),
464
+ chatId: z.string().min(1).optional(),
465
+ publicTaskId: z.string().min(1).optional(),
466
+ source: z.string().min(1).optional(),
467
+ /** Display / search name (e.g. `sunset-robot.png`). */
468
+ filename: z.string().min(1).max(255).optional(),
469
+ /** Human-readable description (e.g. generation prompt). */
470
+ description: z.string().min(1).max(2e3).optional(),
471
+ /**
472
+ * Optional labels for later grouping/filtering.
473
+ * Normalized to lowercase trimmed unique strings (max 20, 64 chars each).
474
+ */
475
+ tags: z.array(z.string().min(1).max(AGENT_FILE_TAG_MAX_LENGTH)).max(AGENT_FILE_TAGS_MAX).optional().transform((tags) => normalizeAgentFileTags(tags))
476
+ }).refine((data) => Boolean(data.chatId || data.publicTaskId), {
477
+ message: "Provide chatId and/or publicTaskId"
478
+ });
445
479
 
446
480
  // ../core/src/schemas/tool-result-display.ts
447
481
  import { z as z2 } from "zod";
@@ -470,7 +504,8 @@ var tenantRoleSchema = z3.enum(["admin", "member"]);
470
504
  var agentAdminUserSchema = z3.object({
471
505
  id: z3.string(),
472
506
  email: z3.string().email(),
473
- name: z3.string()
507
+ name: z3.string(),
508
+ profilePictureUrl: z3.string().nullable().optional()
474
509
  });
475
510
  var agentAdminMemberSchema = z3.object({
476
511
  userId: z3.string(),
@@ -555,10 +590,41 @@ var assignTasksBodySchema = z3.object({
555
590
  { message: "assignTo needs at least one user email or group slug." }
556
591
  )
557
592
  });
593
+ var agentAdminPlanLimitsSchema = z3.object({
594
+ tasksPerDay: z3.number(),
595
+ members: z3.number(),
596
+ apiKeys: z3.number(),
597
+ groups: z3.number(),
598
+ auditLogRetention: z3.number(),
599
+ rateLimitPerSecond: z3.number(),
600
+ taskRetentionDays: z3.number()
601
+ });
602
+ var agentAdminUsageSchema = z3.object({
603
+ workspace: z3.string(),
604
+ planName: z3.string(),
605
+ planType: z3.string(),
606
+ trialState: z3.enum(["none", "active", "expired"]),
607
+ daysRemaining: z3.number().nullable(),
608
+ isPaidPro: z3.boolean(),
609
+ subscriptionStatus: z3.string().nullable(),
610
+ tasksToday: z3.number(),
611
+ maxTasksPerDay: z3.number().nullable(),
612
+ tasksResetAt: z3.number(),
613
+ openTasks: z3.number(),
614
+ totalTasks: z3.number(),
615
+ seatsCurrent: z3.number(),
616
+ seatsMax: z3.number().nullable(),
617
+ groupsCurrent: z3.number(),
618
+ groupsMax: z3.number().nullable(),
619
+ apiKeysCurrent: z3.number(),
620
+ apiKeysMax: z3.number().nullable(),
621
+ rateLimitPerSecond: z3.number(),
622
+ limits: agentAdminPlanLimitsSchema
623
+ });
558
624
 
559
625
  // src/eve/tools/admin/assign-tasks.ts
560
626
  import { defineTool } from "eve/tools";
561
- import { z as z5 } from "zod";
627
+ import { z as z6 } from "zod";
562
628
 
563
629
  // ../core/src/handler-retry.ts
564
630
  var HANDLER_RETRY_DELAYS_MS = [
@@ -654,7 +720,11 @@ function resolveRobotRockAuthConfig(overrides) {
654
720
  "RobotRock auth is required. Set ROBOTROCK_API_KEY, ROBOTROCK_AGENT_SERVICE_TOKEN with tenant context, or pass auth when creating the client."
655
721
  );
656
722
  }
657
- return { kind: "apiKey", apiKey };
723
+ return {
724
+ kind: "apiKey",
725
+ apiKey,
726
+ ...overrides?.actingUserId?.trim() ? { actingUserId: overrides.actingUserId.trim() } : {}
727
+ };
658
728
  }
659
729
 
660
730
  // src/http.ts
@@ -830,6 +900,9 @@ async function agentAdminFetch(config, path, init) {
830
900
  }
831
901
  function createAgentAdminApi(config) {
832
902
  return {
903
+ usage: {
904
+ get: () => agentAdminFetch(config, "/usage")
905
+ },
833
906
  members: {
834
907
  list: () => agentAdminFetch(config, "/members"),
835
908
  get: (memberRef) => agentAdminFetch(config, `/members/${encodeURIComponent(memberRef)}`),
@@ -968,6 +1041,9 @@ function createBoundAgentAdminClient(ctx) {
968
1041
  );
969
1042
  }
970
1043
 
1044
+ // src/eve/entity-schemas.ts
1045
+ import { z as z5 } from "zod";
1046
+
971
1047
  // src/eve/tool-ui-hint.ts
972
1048
  var TOOL_UI_HINT_FIELD = "uiHint";
973
1049
  function withUiHint(result, hint) {
@@ -977,6 +1053,223 @@ function withUiHint(result, hint) {
977
1053
  };
978
1054
  }
979
1055
 
1056
+ // src/eve/tool-result-ui-meta.ts
1057
+ var TOOL_UI_FIELD = "ui";
1058
+ var TOOL_RESULT_UI_ENTITY_ID_RE = /^[a-z][a-z0-9_]{0,63}$/;
1059
+ function withToolUi(result, ui) {
1060
+ const existing = typeof result[TOOL_UI_FIELD] === "object" && result[TOOL_UI_FIELD] !== null && !Array.isArray(result[TOOL_UI_FIELD]) ? result[TOOL_UI_FIELD] : {};
1061
+ return {
1062
+ ...result,
1063
+ [TOOL_UI_FIELD]: {
1064
+ ...existing,
1065
+ ...ui
1066
+ }
1067
+ };
1068
+ }
1069
+
1070
+ // src/eve/entity-schemas.ts
1071
+ function buildTenantTaskUrl(tenantSlug, task) {
1072
+ const q = new URLSearchParams();
1073
+ if (task.app && task.app !== "default") {
1074
+ q.set("app", task.app);
1075
+ }
1076
+ if (task.type?.trim()) {
1077
+ q.set("type", task.type.trim());
1078
+ }
1079
+ q.set("selected", task.id);
1080
+ return `/${tenantSlug}/inbox?${q.toString()}`;
1081
+ }
1082
+ var toolResultUiMetaSchema = z5.object({
1083
+ present: z5.boolean().optional(),
1084
+ entity: z5.string().regex(TOOL_RESULT_UI_ENTITY_ID_RE).optional(),
1085
+ rowsPath: z5.string().min(1).optional(),
1086
+ layout: z5.enum(["list", "chart", "table"]).optional()
1087
+ }).strict();
1088
+ var agentOnlyFields = {
1089
+ replyGuidance: z5.string().optional(),
1090
+ ui: toolResultUiMetaSchema.optional(),
1091
+ uiHint: z5.enum(["list", "chart", "table"]).optional()
1092
+ };
1093
+ function withAgentOnlyFields(shape) {
1094
+ return z5.object({
1095
+ ...shape,
1096
+ ...agentOnlyFields
1097
+ });
1098
+ }
1099
+ var productEntityRowSchema = z5.object({
1100
+ id: z5.string().min(1),
1101
+ name: z5.string().min(1),
1102
+ price: z5.number(),
1103
+ currency: z5.string().min(1),
1104
+ inStock: z5.boolean(),
1105
+ url: z5.string().min(1)
1106
+ });
1107
+ var metricPointEntityRowSchema = z5.object({
1108
+ date: z5.string().optional().describe("X-axis value when xKey is date/time"),
1109
+ category: z5.string().optional().describe("X-axis value when xKey is category"),
1110
+ label: z5.string().optional().describe("X-axis value when xKey is label")
1111
+ }).catchall(z5.union([z5.string(), z5.number()])).describe(
1112
+ "Wide chart point: x-axis field + numeric columns named by yKeys (one series per column)"
1113
+ );
1114
+ var toolChartResultSchema = withAgentOnlyFields({
1115
+ title: z5.string().min(1).optional().describe("Chart title shown above the plot"),
1116
+ description: z5.string().min(1).optional().describe("Optional short subtitle"),
1117
+ type: z5.enum(["line", "bar", "area"]).describe("TRL/shadcn chart variant (time series \u2192 line, categories \u2192 bar)"),
1118
+ xKey: z5.string().min(1).describe('Field on each series row for the x-axis, e.g. "date" or "category"'),
1119
+ yKeys: z5.array(z5.string().min(1)).min(1).describe(
1120
+ 'Numeric series column names on each row, e.g. ["NL","BE"] or ["created","handled"]'
1121
+ ),
1122
+ series: z5.array(metricPointEntityRowSchema).describe(
1123
+ "Wide-format points only \u2014 one object per x value with yKeys as numeric fields"
1124
+ )
1125
+ });
1126
+ var memberEntityRowSchema = z5.object({
1127
+ name: z5.string(),
1128
+ email: z5.string(),
1129
+ role: z5.string(),
1130
+ membershipKind: z5.string(),
1131
+ profilePictureUrl: z5.string().nullable()
1132
+ });
1133
+ var taskEntityRowSchema = z5.object({
1134
+ id: z5.string().min(1),
1135
+ name: z5.string().min(1),
1136
+ status: z5.string().min(1),
1137
+ type: z5.string().nullable(),
1138
+ description: z5.string().nullable(),
1139
+ validUntil: z5.number(),
1140
+ createdAt: z5.number(),
1141
+ url: z5.string().min(1),
1142
+ threadPriority: z5.string().nullable().optional()
1143
+ });
1144
+ var groupEntityRowSchema = z5.object({
1145
+ name: z5.string().min(1),
1146
+ slug: z5.string().min(1),
1147
+ description: z5.string().nullable(),
1148
+ memberCount: z5.number().nullable(),
1149
+ url: z5.string().min(1)
1150
+ });
1151
+ var groupDetailEntitySchema = z5.object({
1152
+ name: z5.string().min(1),
1153
+ slug: z5.string().min(1),
1154
+ description: z5.string().nullable(),
1155
+ url: z5.string().min(1),
1156
+ members: z5.array(
1157
+ z5.object({
1158
+ name: z5.string(),
1159
+ email: z5.string(),
1160
+ profilePictureUrl: z5.string().nullable()
1161
+ })
1162
+ )
1163
+ });
1164
+ var statusEntityRowSchema = z5.object({
1165
+ id: z5.string().min(1),
1166
+ name: z5.string().min(1),
1167
+ status: z5.string().min(1),
1168
+ url: z5.string().min(1),
1169
+ type: z5.string().nullable().optional(),
1170
+ description: z5.string().nullable().optional()
1171
+ });
1172
+ var agentAdminErrorResultSchema = z5.object({
1173
+ ok: z5.literal(false),
1174
+ status: z5.number().optional(),
1175
+ message: z5.string(),
1176
+ response: z5.unknown().optional()
1177
+ });
1178
+ var agentAdminMutationResultSchema = z5.object({
1179
+ ...agentOnlyFields
1180
+ }).passthrough();
1181
+ var searchProductsOutputSchema = withAgentOnlyFields({
1182
+ items: z5.array(productEntityRowSchema)
1183
+ });
1184
+ var generateRandomChartOutputSchema = toolChartResultSchema.extend({
1185
+ title: z5.string().min(1)
1186
+ });
1187
+ var generateImageOutputSchema = withAgentOnlyFields({
1188
+ prompt: z5.string().min(1),
1189
+ mediaType: z5.string().min(1),
1190
+ model: z5.string().min(1),
1191
+ storageId: z5.string().min(1),
1192
+ url: z5.string().min(1),
1193
+ /** @deprecated Legacy sessions only — prefer storageId/url. */
1194
+ base64: z5.string().min(1).optional()
1195
+ });
1196
+ var manageTeamMembersListOutputSchema = withAgentOnlyFields({
1197
+ members: z5.array(memberEntityRowSchema)
1198
+ });
1199
+ var manageTeamMembersDetailOutputSchema = withAgentOnlyFields(
1200
+ memberEntityRowSchema.shape
1201
+ );
1202
+ var manageTeamMembersOutputSchema = z5.union([
1203
+ manageTeamMembersListOutputSchema,
1204
+ manageTeamMembersDetailOutputSchema,
1205
+ agentAdminMutationResultSchema,
1206
+ agentAdminErrorResultSchema
1207
+ ]);
1208
+ var manageGroupsListOutputSchema = withAgentOnlyFields({
1209
+ groups: z5.array(groupEntityRowSchema)
1210
+ });
1211
+ var manageGroupsDetailOutputSchema = withAgentOnlyFields(
1212
+ groupDetailEntitySchema.shape
1213
+ );
1214
+ var manageGroupsSummaryOutputSchema = withAgentOnlyFields(
1215
+ groupEntityRowSchema.shape
1216
+ );
1217
+ var manageGroupsOutputSchema = z5.union([
1218
+ manageGroupsListOutputSchema,
1219
+ manageGroupsDetailOutputSchema,
1220
+ manageGroupsSummaryOutputSchema,
1221
+ agentAdminMutationResultSchema,
1222
+ agentAdminErrorResultSchema
1223
+ ]);
1224
+ var queryTasksListOutputSchema = withAgentOnlyFields({
1225
+ items: z5.array(taskEntityRowSchema),
1226
+ nextCursor: z5.string().nullable().optional()
1227
+ });
1228
+ var queryTasksDetailOutputSchema = withAgentOnlyFields({
1229
+ id: z5.string().nullable(),
1230
+ status: z5.string().nullable(),
1231
+ type: z5.string().nullable(),
1232
+ name: z5.string().nullable(),
1233
+ description: z5.string().nullable(),
1234
+ validUntil: z5.number().nullable(),
1235
+ createdAt: z5.number().nullable(),
1236
+ url: z5.string().min(1).nullable()
1237
+ });
1238
+ var queryTasksOutputSchema = z5.union([
1239
+ queryTasksListOutputSchema,
1240
+ queryTasksDetailOutputSchema,
1241
+ agentAdminErrorResultSchema
1242
+ ]);
1243
+ var assignTasksOutputSchema = z5.union([
1244
+ withAgentOnlyFields({
1245
+ results: z5.array(statusEntityRowSchema)
1246
+ }),
1247
+ agentAdminErrorResultSchema
1248
+ ]);
1249
+ var workspaceUsageEntitySchema = z5.object({
1250
+ workspace: z5.string(),
1251
+ plan: z5.string(),
1252
+ planType: z5.string(),
1253
+ trialState: z5.string(),
1254
+ daysRemaining: z5.number().nullable(),
1255
+ isPaidPro: z5.boolean(),
1256
+ subscriptionStatus: z5.string(),
1257
+ tasksToday: z5.string(),
1258
+ tasksResetAt: z5.string(),
1259
+ openTasks: z5.number(),
1260
+ totalTasks: z5.number(),
1261
+ seats: z5.string(),
1262
+ groups: z5.string(),
1263
+ apiKeys: z5.string(),
1264
+ rateLimitPerSecond: z5.number()
1265
+ });
1266
+ var getWorkspaceUsageOutputSchema = z5.union([
1267
+ withAgentOnlyFields({
1268
+ usage: workspaceUsageEntitySchema
1269
+ }),
1270
+ agentAdminErrorResultSchema
1271
+ ]);
1272
+
980
1273
  // src/eve/tool-reply-guidance.ts
981
1274
  var TOOL_REPLY_GUIDANCE_FIELD = "replyGuidance";
982
1275
  var ASSIGN_TASKS_REPLY_GUIDANCE = "Reassignment results render in chat UI. Do not restate task ids or assignee emails from the card. Only mention failures, partial success, or next steps.";
@@ -989,8 +1282,18 @@ function withReplyGuidance(result, guidance) {
989
1282
 
990
1283
  // src/eve/tool-display-format.ts
991
1284
  function formatToolListResult(listKey, items, options) {
1285
+ const ui = {
1286
+ ...options.ui,
1287
+ layout: "list",
1288
+ rowsPath: listKey,
1289
+ ...options.entity ? { entity: options.entity } : {},
1290
+ ...options.present !== void 0 ? { present: options.present } : {}
1291
+ };
992
1292
  return withUiHint(
993
- withReplyGuidance({ [listKey]: items }, options.replyGuidance),
1293
+ withToolUi(
1294
+ withReplyGuidance({ [listKey]: items }, options.replyGuidance),
1295
+ ui
1296
+ ),
994
1297
  "list"
995
1298
  );
996
1299
  }
@@ -999,31 +1302,33 @@ function formatToolListResult(listKey, items, options) {
999
1302
  function resolveTaskCardLabel(task) {
1000
1303
  return task.name?.trim() || task.description?.trim() || task.type?.trim() || task.id?.trim() || "Untitled task";
1001
1304
  }
1002
- function formatAssignTasksResult(results, _assignTo) {
1003
- return formatToolListResult(
1004
- "results",
1005
- results.map((row) => ({
1305
+ function formatAssignTasksResult(results, _assignTo, options) {
1306
+ const rows = results.map((row) => ({
1307
+ id: row.taskId,
1308
+ name: resolveTaskCardLabel({
1309
+ name: row.name,
1310
+ description: row.description,
1311
+ type: row.type,
1312
+ id: row.taskId
1313
+ }),
1314
+ type: row.type ?? null,
1315
+ description: row.description ?? null,
1316
+ status: row.success ? "reassigned" : "failed",
1317
+ url: buildTenantTaskUrl(options.tenantSlug, {
1006
1318
  id: row.taskId,
1007
- name: resolveTaskCardLabel({
1008
- name: row.name,
1009
- description: row.description,
1010
- type: row.type,
1011
- id: row.taskId
1012
- }),
1013
- type: row.type ?? null,
1014
- description: row.description ?? null,
1015
- status: row.success ? "reassigned" : "failed"
1016
- })),
1017
- {
1018
- replyGuidance: ASSIGN_TASKS_REPLY_GUIDANCE
1019
- }
1020
- );
1319
+ type: row.type
1320
+ })
1321
+ }));
1322
+ return formatToolListResult("results", rows, {
1323
+ replyGuidance: ASSIGN_TASKS_REPLY_GUIDANCE,
1324
+ entity: "status"
1325
+ });
1021
1326
  }
1022
1327
 
1023
1328
  // src/eve/tools/admin/assign-tasks.ts
1024
1329
  var ASSIGN_TASKS_TOOL_NAME = "assign_tasks";
1025
- var assignTasksInputSchema = z5.object({
1026
- taskIds: z5.array(z5.string().min(1)).min(1).max(100).describe(
1330
+ var assignTasksInputSchema = z6.object({
1331
+ taskIds: z6.array(z6.string().min(1)).min(1).max(100).describe(
1027
1332
  "Public task ids or Convex tasks table ids to reassign. Use query_tasks search/get to resolve ids first."
1028
1333
  ),
1029
1334
  assignTo: assignToSchema.refine(
@@ -1037,14 +1342,18 @@ function defineAssignTasksTool() {
1037
1342
  return defineTool({
1038
1343
  description: "Reassign existing inbox tasks to users or groups. Requires access to each task (tenant admins can reassign any task; others only tasks they can see). Use query_tasks to find task ids when needed. Results render as chat UI \u2014 do not restate task ids or assignees in your reply.",
1039
1344
  inputSchema: assignTasksInputSchema,
1345
+ outputSchema: assignTasksOutputSchema,
1040
1346
  async execute(input, ctx) {
1347
+ const caller = requireTenantCaller(ctx);
1041
1348
  const api = createBoundAgentAdminClient(ctx);
1042
1349
  try {
1043
1350
  const result = await api.tasks.assign({
1044
1351
  taskIds: input.taskIds,
1045
1352
  assignTo: input.assignTo
1046
1353
  });
1047
- return formatAssignTasksResult(result.results, input.assignTo);
1354
+ return formatAssignTasksResult(result.results, input.assignTo, {
1355
+ tenantSlug: caller.tenantSlug
1356
+ });
1048
1357
  } catch (error) {
1049
1358
  if (error instanceof RobotRockError) {
1050
1359
  return {