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
@@ -1,5 +1,4 @@
1
1
  import * as eve_tools from 'eve/tools';
2
- import { T as ToolResultWithReplyGuidance } from '../../../tool-reply-guidance-C3qrT1In.js';
3
2
  import { z } from 'zod';
4
3
 
5
4
  declare const MANAGE_TEAM_MEMBERS_TOOL_NAME = "manage_team_members";
@@ -23,22 +22,102 @@ declare function defineManageTeamMembersTool(): eve_tools.ToolDefinition<{
23
22
  userId?: string | undefined;
24
23
  email?: string | undefined;
25
24
  role?: "admin" | "member" | undefined;
26
- }, ToolResultWithReplyGuidance<Record<string, unknown>> | {
25
+ }, {
26
+ members: {
27
+ name: string;
28
+ email: string;
29
+ role: string;
30
+ membershipKind: string;
31
+ profilePictureUrl: string | null;
32
+ }[];
33
+ replyGuidance?: string | undefined;
34
+ ui?: {
35
+ present?: boolean | undefined;
36
+ entity?: string | undefined;
37
+ rowsPath?: string | undefined;
38
+ layout?: "list" | "chart" | "table" | undefined;
39
+ } | undefined;
40
+ uiHint?: "list" | "chart" | "table" | undefined;
41
+ } | {
42
+ name: string;
43
+ email: string;
44
+ role: string;
45
+ membershipKind: string;
46
+ profilePictureUrl: string | null;
47
+ replyGuidance?: string | undefined;
48
+ ui?: {
49
+ present?: boolean | undefined;
50
+ entity?: string | undefined;
51
+ rowsPath?: string | undefined;
52
+ layout?: "list" | "chart" | "table" | undefined;
53
+ } | undefined;
54
+ uiHint?: "list" | "chart" | "table" | undefined;
55
+ } | {
27
56
  ok: false;
28
- status: number;
29
57
  message: string;
30
- response: unknown;
58
+ status?: number | undefined;
59
+ response?: unknown;
60
+ } | {
61
+ [x: string]: unknown;
62
+ replyGuidance?: string | undefined;
63
+ ui?: {
64
+ present?: boolean | undefined;
65
+ entity?: string | undefined;
66
+ rowsPath?: string | undefined;
67
+ layout?: "list" | "chart" | "table" | undefined;
68
+ } | undefined;
69
+ uiHint?: "list" | "chart" | "table" | undefined;
31
70
  }>;
32
71
  declare const manageTeamMembersTool: eve_tools.ToolDefinition<{
33
72
  action: "list" | "get" | "invite" | "update_role" | "remove";
34
73
  userId?: string | undefined;
35
74
  email?: string | undefined;
36
75
  role?: "admin" | "member" | undefined;
37
- }, ToolResultWithReplyGuidance<Record<string, unknown>> | {
76
+ }, {
77
+ members: {
78
+ name: string;
79
+ email: string;
80
+ role: string;
81
+ membershipKind: string;
82
+ profilePictureUrl: string | null;
83
+ }[];
84
+ replyGuidance?: string | undefined;
85
+ ui?: {
86
+ present?: boolean | undefined;
87
+ entity?: string | undefined;
88
+ rowsPath?: string | undefined;
89
+ layout?: "list" | "chart" | "table" | undefined;
90
+ } | undefined;
91
+ uiHint?: "list" | "chart" | "table" | undefined;
92
+ } | {
93
+ name: string;
94
+ email: string;
95
+ role: string;
96
+ membershipKind: string;
97
+ profilePictureUrl: string | null;
98
+ replyGuidance?: string | undefined;
99
+ ui?: {
100
+ present?: boolean | undefined;
101
+ entity?: string | undefined;
102
+ rowsPath?: string | undefined;
103
+ layout?: "list" | "chart" | "table" | undefined;
104
+ } | undefined;
105
+ uiHint?: "list" | "chart" | "table" | undefined;
106
+ } | {
38
107
  ok: false;
39
- status: number;
40
108
  message: string;
41
- response: unknown;
109
+ status?: number | undefined;
110
+ response?: unknown;
111
+ } | {
112
+ [x: string]: unknown;
113
+ replyGuidance?: string | undefined;
114
+ ui?: {
115
+ present?: boolean | undefined;
116
+ entity?: string | undefined;
117
+ rowsPath?: string | undefined;
118
+ layout?: "list" | "chart" | "table" | undefined;
119
+ } | undefined;
120
+ uiHint?: "list" | "chart" | "table" | undefined;
42
121
  }>;
43
122
 
44
123
  export { MANAGE_TEAM_MEMBERS_TOOL_NAME, defineManageTeamMembersTool, manageTeamMembersInputSchema, manageTeamMembersTool };
@@ -489,6 +489,40 @@ var agentChatLinkTaskBodySchema = z.object({
489
489
  publicTaskId: z.string().min(1),
490
490
  toolCallId: z.string().min(1)
491
491
  });
492
+ var AGENT_FILE_TAGS_MAX = 20;
493
+ var AGENT_FILE_TAG_MAX_LENGTH = 64;
494
+ function normalizeAgentFileTags(tags) {
495
+ if (!tags?.length) return void 0;
496
+ const seen = /* @__PURE__ */ new Set();
497
+ const out = [];
498
+ for (const raw of tags) {
499
+ const tag = raw.trim().toLowerCase().slice(0, AGENT_FILE_TAG_MAX_LENGTH);
500
+ if (!tag || seen.has(tag)) continue;
501
+ seen.add(tag);
502
+ out.push(tag);
503
+ if (out.length >= AGENT_FILE_TAGS_MAX) break;
504
+ }
505
+ return out.length > 0 ? out : void 0;
506
+ }
507
+ var agentChatUploadImageBodySchema = z.object({
508
+ mediaType: z.string().min(1),
509
+ /** Raw base64 (no data: URL prefix). */
510
+ base64: z.string().min(1),
511
+ chatId: z.string().min(1).optional(),
512
+ publicTaskId: z.string().min(1).optional(),
513
+ source: z.string().min(1).optional(),
514
+ /** Display / search name (e.g. `sunset-robot.png`). */
515
+ filename: z.string().min(1).max(255).optional(),
516
+ /** Human-readable description (e.g. generation prompt). */
517
+ description: z.string().min(1).max(2e3).optional(),
518
+ /**
519
+ * Optional labels for later grouping/filtering.
520
+ * Normalized to lowercase trimmed unique strings (max 20, 64 chars each).
521
+ */
522
+ tags: z.array(z.string().min(1).max(AGENT_FILE_TAG_MAX_LENGTH)).max(AGENT_FILE_TAGS_MAX).optional().transform((tags) => normalizeAgentFileTags(tags))
523
+ }).refine((data) => Boolean(data.chatId || data.publicTaskId), {
524
+ message: "Provide chatId and/or publicTaskId"
525
+ });
492
526
 
493
527
  // ../core/src/schemas/tool-result-display.ts
494
528
  import { z as z2 } from "zod";
@@ -517,7 +551,8 @@ var tenantRoleSchema = z3.enum(["admin", "member"]);
517
551
  var agentAdminUserSchema = z3.object({
518
552
  id: z3.string(),
519
553
  email: z3.string().email(),
520
- name: z3.string()
554
+ name: z3.string(),
555
+ profilePictureUrl: z3.string().nullable().optional()
521
556
  });
522
557
  var agentAdminMemberSchema = z3.object({
523
558
  userId: z3.string(),
@@ -602,6 +637,37 @@ var assignTasksBodySchema = z3.object({
602
637
  { message: "assignTo needs at least one user email or group slug." }
603
638
  )
604
639
  });
640
+ var agentAdminPlanLimitsSchema = z3.object({
641
+ tasksPerDay: z3.number(),
642
+ members: z3.number(),
643
+ apiKeys: z3.number(),
644
+ groups: z3.number(),
645
+ auditLogRetention: z3.number(),
646
+ rateLimitPerSecond: z3.number(),
647
+ taskRetentionDays: z3.number()
648
+ });
649
+ var agentAdminUsageSchema = z3.object({
650
+ workspace: z3.string(),
651
+ planName: z3.string(),
652
+ planType: z3.string(),
653
+ trialState: z3.enum(["none", "active", "expired"]),
654
+ daysRemaining: z3.number().nullable(),
655
+ isPaidPro: z3.boolean(),
656
+ subscriptionStatus: z3.string().nullable(),
657
+ tasksToday: z3.number(),
658
+ maxTasksPerDay: z3.number().nullable(),
659
+ tasksResetAt: z3.number(),
660
+ openTasks: z3.number(),
661
+ totalTasks: z3.number(),
662
+ seatsCurrent: z3.number(),
663
+ seatsMax: z3.number().nullable(),
664
+ groupsCurrent: z3.number(),
665
+ groupsMax: z3.number().nullable(),
666
+ apiKeysCurrent: z3.number(),
667
+ apiKeysMax: z3.number().nullable(),
668
+ rateLimitPerSecond: z3.number(),
669
+ limits: agentAdminPlanLimitsSchema
670
+ });
605
671
 
606
672
  // ../core/src/handler-retry.ts
607
673
  var HANDLER_RETRY_DELAYS_MS = [
@@ -697,7 +763,11 @@ function resolveRobotRockAuthConfig(overrides) {
697
763
  "RobotRock auth is required. Set ROBOTROCK_API_KEY, ROBOTROCK_AGENT_SERVICE_TOKEN with tenant context, or pass auth when creating the client."
698
764
  );
699
765
  }
700
- return { kind: "apiKey", apiKey };
766
+ return {
767
+ kind: "apiKey",
768
+ apiKey,
769
+ ...overrides?.actingUserId?.trim() ? { actingUserId: overrides.actingUserId.trim() } : {}
770
+ };
701
771
  }
702
772
 
703
773
  // src/eve/agent/attributes.ts
@@ -833,6 +903,9 @@ async function agentAdminFetch(config, path, init) {
833
903
  }
834
904
  function createAgentAdminApi(config) {
835
905
  return {
906
+ usage: {
907
+ get: () => agentAdminFetch(config, "/usage")
908
+ },
836
909
  members: {
837
910
  list: () => agentAdminFetch(config, "/members"),
838
911
  get: (memberRef) => agentAdminFetch(config, `/members/${encodeURIComponent(memberRef)}`),
@@ -975,6 +1048,9 @@ function requireBoundAgentAdminClient(ctx) {
975
1048
  return createBoundAgentAdminClient(ctx);
976
1049
  }
977
1050
 
1051
+ // src/eve/entity-schemas.ts
1052
+ import { z as z5 } from "zod";
1053
+
978
1054
  // src/eve/tool-ui-hint.ts
979
1055
  var TOOL_UI_HINT_FIELD = "uiHint";
980
1056
  function withUiHint(result, hint) {
@@ -984,6 +1060,212 @@ function withUiHint(result, hint) {
984
1060
  };
985
1061
  }
986
1062
 
1063
+ // src/eve/tool-result-ui-meta.ts
1064
+ var TOOL_UI_FIELD = "ui";
1065
+ var TOOL_RESULT_UI_ENTITY_ID_RE = /^[a-z][a-z0-9_]{0,63}$/;
1066
+ function withToolUi(result, ui) {
1067
+ const existing = typeof result[TOOL_UI_FIELD] === "object" && result[TOOL_UI_FIELD] !== null && !Array.isArray(result[TOOL_UI_FIELD]) ? result[TOOL_UI_FIELD] : {};
1068
+ return {
1069
+ ...result,
1070
+ [TOOL_UI_FIELD]: {
1071
+ ...existing,
1072
+ ...ui
1073
+ }
1074
+ };
1075
+ }
1076
+
1077
+ // src/eve/entity-schemas.ts
1078
+ var toolResultUiMetaSchema = z5.object({
1079
+ present: z5.boolean().optional(),
1080
+ entity: z5.string().regex(TOOL_RESULT_UI_ENTITY_ID_RE).optional(),
1081
+ rowsPath: z5.string().min(1).optional(),
1082
+ layout: z5.enum(["list", "chart", "table"]).optional()
1083
+ }).strict();
1084
+ var agentOnlyFields = {
1085
+ replyGuidance: z5.string().optional(),
1086
+ ui: toolResultUiMetaSchema.optional(),
1087
+ uiHint: z5.enum(["list", "chart", "table"]).optional()
1088
+ };
1089
+ function withAgentOnlyFields(shape) {
1090
+ return z5.object({
1091
+ ...shape,
1092
+ ...agentOnlyFields
1093
+ });
1094
+ }
1095
+ var productEntityRowSchema = z5.object({
1096
+ id: z5.string().min(1),
1097
+ name: z5.string().min(1),
1098
+ price: z5.number(),
1099
+ currency: z5.string().min(1),
1100
+ inStock: z5.boolean(),
1101
+ url: z5.string().min(1)
1102
+ });
1103
+ var metricPointEntityRowSchema = z5.object({
1104
+ date: z5.string().optional().describe("X-axis value when xKey is date/time"),
1105
+ category: z5.string().optional().describe("X-axis value when xKey is category"),
1106
+ label: z5.string().optional().describe("X-axis value when xKey is label")
1107
+ }).catchall(z5.union([z5.string(), z5.number()])).describe(
1108
+ "Wide chart point: x-axis field + numeric columns named by yKeys (one series per column)"
1109
+ );
1110
+ var toolChartResultSchema = withAgentOnlyFields({
1111
+ title: z5.string().min(1).optional().describe("Chart title shown above the plot"),
1112
+ description: z5.string().min(1).optional().describe("Optional short subtitle"),
1113
+ type: z5.enum(["line", "bar", "area"]).describe("TRL/shadcn chart variant (time series \u2192 line, categories \u2192 bar)"),
1114
+ xKey: z5.string().min(1).describe('Field on each series row for the x-axis, e.g. "date" or "category"'),
1115
+ yKeys: z5.array(z5.string().min(1)).min(1).describe(
1116
+ 'Numeric series column names on each row, e.g. ["NL","BE"] or ["created","handled"]'
1117
+ ),
1118
+ series: z5.array(metricPointEntityRowSchema).describe(
1119
+ "Wide-format points only \u2014 one object per x value with yKeys as numeric fields"
1120
+ )
1121
+ });
1122
+ var memberEntityRowSchema = z5.object({
1123
+ name: z5.string(),
1124
+ email: z5.string(),
1125
+ role: z5.string(),
1126
+ membershipKind: z5.string(),
1127
+ profilePictureUrl: z5.string().nullable()
1128
+ });
1129
+ var taskEntityRowSchema = z5.object({
1130
+ id: z5.string().min(1),
1131
+ name: z5.string().min(1),
1132
+ status: z5.string().min(1),
1133
+ type: z5.string().nullable(),
1134
+ description: z5.string().nullable(),
1135
+ validUntil: z5.number(),
1136
+ createdAt: z5.number(),
1137
+ url: z5.string().min(1),
1138
+ threadPriority: z5.string().nullable().optional()
1139
+ });
1140
+ var groupEntityRowSchema = z5.object({
1141
+ name: z5.string().min(1),
1142
+ slug: z5.string().min(1),
1143
+ description: z5.string().nullable(),
1144
+ memberCount: z5.number().nullable(),
1145
+ url: z5.string().min(1)
1146
+ });
1147
+ var groupDetailEntitySchema = z5.object({
1148
+ name: z5.string().min(1),
1149
+ slug: z5.string().min(1),
1150
+ description: z5.string().nullable(),
1151
+ url: z5.string().min(1),
1152
+ members: z5.array(
1153
+ z5.object({
1154
+ name: z5.string(),
1155
+ email: z5.string(),
1156
+ profilePictureUrl: z5.string().nullable()
1157
+ })
1158
+ )
1159
+ });
1160
+ var statusEntityRowSchema = z5.object({
1161
+ id: z5.string().min(1),
1162
+ name: z5.string().min(1),
1163
+ status: z5.string().min(1),
1164
+ url: z5.string().min(1),
1165
+ type: z5.string().nullable().optional(),
1166
+ description: z5.string().nullable().optional()
1167
+ });
1168
+ var agentAdminErrorResultSchema = z5.object({
1169
+ ok: z5.literal(false),
1170
+ status: z5.number().optional(),
1171
+ message: z5.string(),
1172
+ response: z5.unknown().optional()
1173
+ });
1174
+ var agentAdminMutationResultSchema = z5.object({
1175
+ ...agentOnlyFields
1176
+ }).passthrough();
1177
+ var searchProductsOutputSchema = withAgentOnlyFields({
1178
+ items: z5.array(productEntityRowSchema)
1179
+ });
1180
+ var generateRandomChartOutputSchema = toolChartResultSchema.extend({
1181
+ title: z5.string().min(1)
1182
+ });
1183
+ var generateImageOutputSchema = withAgentOnlyFields({
1184
+ prompt: z5.string().min(1),
1185
+ mediaType: z5.string().min(1),
1186
+ model: z5.string().min(1),
1187
+ storageId: z5.string().min(1),
1188
+ url: z5.string().min(1),
1189
+ /** @deprecated Legacy sessions only — prefer storageId/url. */
1190
+ base64: z5.string().min(1).optional()
1191
+ });
1192
+ var manageTeamMembersListOutputSchema = withAgentOnlyFields({
1193
+ members: z5.array(memberEntityRowSchema)
1194
+ });
1195
+ var manageTeamMembersDetailOutputSchema = withAgentOnlyFields(
1196
+ memberEntityRowSchema.shape
1197
+ );
1198
+ var manageTeamMembersOutputSchema = z5.union([
1199
+ manageTeamMembersListOutputSchema,
1200
+ manageTeamMembersDetailOutputSchema,
1201
+ agentAdminMutationResultSchema,
1202
+ agentAdminErrorResultSchema
1203
+ ]);
1204
+ var manageGroupsListOutputSchema = withAgentOnlyFields({
1205
+ groups: z5.array(groupEntityRowSchema)
1206
+ });
1207
+ var manageGroupsDetailOutputSchema = withAgentOnlyFields(
1208
+ groupDetailEntitySchema.shape
1209
+ );
1210
+ var manageGroupsSummaryOutputSchema = withAgentOnlyFields(
1211
+ groupEntityRowSchema.shape
1212
+ );
1213
+ var manageGroupsOutputSchema = z5.union([
1214
+ manageGroupsListOutputSchema,
1215
+ manageGroupsDetailOutputSchema,
1216
+ manageGroupsSummaryOutputSchema,
1217
+ agentAdminMutationResultSchema,
1218
+ agentAdminErrorResultSchema
1219
+ ]);
1220
+ var queryTasksListOutputSchema = withAgentOnlyFields({
1221
+ items: z5.array(taskEntityRowSchema),
1222
+ nextCursor: z5.string().nullable().optional()
1223
+ });
1224
+ var queryTasksDetailOutputSchema = withAgentOnlyFields({
1225
+ id: z5.string().nullable(),
1226
+ status: z5.string().nullable(),
1227
+ type: z5.string().nullable(),
1228
+ name: z5.string().nullable(),
1229
+ description: z5.string().nullable(),
1230
+ validUntil: z5.number().nullable(),
1231
+ createdAt: z5.number().nullable(),
1232
+ url: z5.string().min(1).nullable()
1233
+ });
1234
+ var queryTasksOutputSchema = z5.union([
1235
+ queryTasksListOutputSchema,
1236
+ queryTasksDetailOutputSchema,
1237
+ agentAdminErrorResultSchema
1238
+ ]);
1239
+ var assignTasksOutputSchema = z5.union([
1240
+ withAgentOnlyFields({
1241
+ results: z5.array(statusEntityRowSchema)
1242
+ }),
1243
+ agentAdminErrorResultSchema
1244
+ ]);
1245
+ var workspaceUsageEntitySchema = z5.object({
1246
+ workspace: z5.string(),
1247
+ plan: z5.string(),
1248
+ planType: z5.string(),
1249
+ trialState: z5.string(),
1250
+ daysRemaining: z5.number().nullable(),
1251
+ isPaidPro: z5.boolean(),
1252
+ subscriptionStatus: z5.string(),
1253
+ tasksToday: z5.string(),
1254
+ tasksResetAt: z5.string(),
1255
+ openTasks: z5.number(),
1256
+ totalTasks: z5.number(),
1257
+ seats: z5.string(),
1258
+ groups: z5.string(),
1259
+ apiKeys: z5.string(),
1260
+ rateLimitPerSecond: z5.number()
1261
+ });
1262
+ var getWorkspaceUsageOutputSchema = z5.union([
1263
+ withAgentOnlyFields({
1264
+ usage: workspaceUsageEntitySchema
1265
+ }),
1266
+ agentAdminErrorResultSchema
1267
+ ]);
1268
+
987
1269
  // src/eve/tool-reply-guidance.ts
988
1270
  var TOOL_REPLY_GUIDANCE_FIELD = "replyGuidance";
989
1271
  var MANAGE_TEAM_MEMBERS_LIST_REPLY_GUIDANCE = "Team members render as a list card in chat. Do not restate names, emails, or roles from the list. Only add context not shown (e.g. duplicates, next admin actions).";
@@ -998,15 +1280,31 @@ function withReplyGuidance(result, guidance) {
998
1280
 
999
1281
  // src/eve/tool-display-format.ts
1000
1282
  function formatToolObjectResult(data, options) {
1001
- const withGuidance = withReplyGuidance(data, options.replyGuidance);
1283
+ let result = withReplyGuidance(
1284
+ data,
1285
+ options.replyGuidance
1286
+ );
1287
+ if (options.ui) {
1288
+ result = withToolUi(result, options.ui);
1289
+ }
1002
1290
  if (options.uiHint) {
1003
- return withUiHint(withGuidance, options.uiHint);
1291
+ result = withUiHint(result, options.uiHint);
1004
1292
  }
1005
- return withGuidance;
1293
+ return result;
1006
1294
  }
1007
1295
  function formatToolListResult(listKey, items, options) {
1296
+ const ui = {
1297
+ ...options.ui,
1298
+ layout: "list",
1299
+ rowsPath: listKey,
1300
+ ...options.entity ? { entity: options.entity } : {},
1301
+ ...options.present !== void 0 ? { present: options.present } : {}
1302
+ };
1008
1303
  return withUiHint(
1009
- withReplyGuidance({ [listKey]: items }, options.replyGuidance),
1304
+ withToolUi(
1305
+ withReplyGuidance({ [listKey]: items }, options.replyGuidance),
1306
+ ui
1307
+ ),
1010
1308
  "list"
1011
1309
  );
1012
1310
  }
@@ -1017,7 +1315,8 @@ function serializeMemberRow(member) {
1017
1315
  name: member.user.name,
1018
1316
  email: member.user.email,
1019
1317
  role: member.role,
1020
- membershipKind: member.membershipKind
1318
+ membershipKind: member.membershipKind,
1319
+ profilePictureUrl: member.user.profilePictureUrl ?? null
1021
1320
  };
1022
1321
  }
1023
1322
  function formatTeamMembersListResult(members) {
@@ -1025,29 +1324,31 @@ function formatTeamMembersListResult(members) {
1025
1324
  "members",
1026
1325
  members.map(serializeMemberRow),
1027
1326
  {
1028
- replyGuidance: MANAGE_TEAM_MEMBERS_LIST_REPLY_GUIDANCE
1327
+ replyGuidance: MANAGE_TEAM_MEMBERS_LIST_REPLY_GUIDANCE,
1328
+ entity: "member"
1029
1329
  }
1030
1330
  );
1031
1331
  }
1032
1332
  function formatTeamMemberDetailResult(member) {
1033
1333
  return formatToolObjectResult(serializeMemberRow(member), {
1034
- replyGuidance: MANAGE_TEAM_MEMBERS_DETAIL_REPLY_GUIDANCE
1334
+ replyGuidance: MANAGE_TEAM_MEMBERS_DETAIL_REPLY_GUIDANCE,
1335
+ ui: { entity: "member" }
1035
1336
  });
1036
1337
  }
1037
1338
 
1038
1339
  // src/eve/tools/admin/manage-team-members.ts
1039
1340
  import { defineTool } from "eve/tools";
1040
- import { z as z5 } from "zod";
1341
+ import { z as z6 } from "zod";
1041
1342
  var MANAGE_TEAM_MEMBERS_TOOL_NAME = "manage_team_members";
1042
- var manageTeamMembersInputSchema = z5.object({
1043
- action: z5.enum(["list", "get", "invite", "update_role", "remove"]),
1044
- userId: z5.string().min(1).optional().describe(
1343
+ var manageTeamMembersInputSchema = z6.object({
1344
+ action: z6.enum(["list", "get", "invite", "update_role", "remove"]),
1345
+ userId: z6.string().min(1).optional().describe(
1045
1346
  "Convex users table id for get, update_role, and remove. Prefer email when the member list only shows email."
1046
1347
  ),
1047
- email: z5.string().email().optional().describe(
1348
+ email: z6.string().email().optional().describe(
1048
1349
  "Member email for get, update_role, and remove; invitee email for invite."
1049
1350
  ),
1050
- role: z5.enum(["admin", "member"]).optional().describe("Role for invite and update_role.")
1351
+ role: z6.enum(["admin", "member"]).optional().describe("Role for invite and update_role.")
1051
1352
  }).superRefine((input, ctx) => {
1052
1353
  const requireField = (field, message) => {
1053
1354
  if (!input[field]) {
@@ -1089,8 +1390,9 @@ function formatMemberMutationResult(payload) {
1089
1390
  }
1090
1391
  function defineManageTeamMembersTool() {
1091
1392
  return defineTool({
1092
- description: "Tenant-admin tool for workspace team members: list, get, invite, change role, or remove. Requires tenant admin access. Call get_my_access in the same turn before this tool to verify admin access (the check renders as its own chat tool card). Use member email from list results for get, update_role, and remove \u2014 internal ids are optional. Results render as chat UI cards \u2014 do not restate member names, emails, or roles in your reply.",
1393
+ description: "Tenant-admin tool for workspace team members: list, get, invite, change role, or remove. Requires tenant admin access. Call get_my_access in the same turn before this tool to verify admin access (the check stays a compact success marker unless it is the only presentable result). Use member email from list results for get, update_role, and remove \u2014 internal ids are optional. Results render as chat UI cards \u2014 do not restate member names, emails, or roles in your reply.",
1093
1394
  inputSchema: manageTeamMembersInputSchema,
1395
+ outputSchema: manageTeamMembersOutputSchema,
1094
1396
  async execute(input, ctx) {
1095
1397
  const api = requireBoundAgentAdminClient(ctx);
1096
1398
  try {