robotrock 1.3.3 → 1.4.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.
- package/README.md +32 -0
- package/dist/agent-admin.d.ts +5 -0
- package/dist/agent-admin.js +75 -2
- package/dist/agent-admin.js.map +1 -1
- package/dist/ai/index.d.ts +5 -5
- package/dist/ai/index.js +128 -4
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/trigger.d.ts +3 -3
- package/dist/ai/trigger.js +128 -4
- package/dist/ai/trigger.js.map +1 -1
- package/dist/ai/workflow.d.ts +3 -3
- package/dist/ai/workflow.js +128 -4
- package/dist/ai/workflow.js.map +1 -1
- package/dist/{client-CZ5eWH5v.d.ts → client-BxbxttFH.d.ts} +19 -1
- package/dist/eve/agent/index.d.ts +4 -3
- package/dist/eve/agent/index.js +736 -414
- package/dist/eve/agent/index.js.map +1 -1
- package/dist/eve/index.d.ts +4 -3
- package/dist/eve/index.js +437 -45
- package/dist/eve/index.js.map +1 -1
- package/dist/eve/tools/admin/assign-tasks.d.ts +40 -8
- package/dist/eve/tools/admin/assign-tasks.js +328 -66
- package/dist/eve/tools/admin/assign-tasks.js.map +1 -1
- package/dist/eve/tools/admin/get-workspace-usage.d.ts +71 -0
- package/dist/eve/tools/admin/get-workspace-usage.js +1353 -0
- package/dist/eve/tools/admin/get-workspace-usage.js.map +1 -0
- package/dist/eve/tools/admin/manage-groups.d.ts +122 -8
- package/dist/eve/tools/admin/manage-groups.js +348 -94
- package/dist/eve/tools/admin/manage-groups.js.map +1 -1
- package/dist/eve/tools/admin/manage-team-members.d.ts +86 -8
- package/dist/eve/tools/admin/manage-team-members.js +318 -72
- package/dist/eve/tools/admin/manage-team-members.js.map +1 -1
- package/dist/eve/tools/admin/query-tasks.d.ts +82 -8
- package/dist/eve/tools/admin/query-tasks.js +360 -113
- package/dist/eve/tools/admin/query-tasks.js.map +1 -1
- package/dist/eve/tools/catalog/generate-image.d.ts +64 -0
- package/dist/eve/tools/catalog/generate-image.js +2065 -0
- package/dist/eve/tools/catalog/generate-image.js.map +1 -0
- package/dist/eve/tools/catalog/generate-random-chart.d.ts +71 -0
- package/dist/eve/tools/catalog/generate-random-chart.js +372 -0
- package/dist/eve/tools/catalog/generate-random-chart.js.map +1 -0
- package/dist/eve/tools/catalog/search-products.d.ts +36 -44
- package/dist/eve/tools/catalog/search-products.js +237 -33
- package/dist/eve/tools/catalog/search-products.js.map +1 -1
- package/dist/eve/tools/identity/index.d.ts +2 -2
- package/dist/eve/tools/identity/index.js +35 -44
- package/dist/eve/tools/identity/index.js.map +1 -1
- package/dist/eve/tools/identity/my-access.d.ts +90 -6
- package/dist/eve/tools/identity/my-access.js +35 -44
- package/dist/eve/tools/identity/my-access.js.map +1 -1
- package/dist/eve/tools/identity/whoami.d.ts +1 -1
- package/dist/eve/tools/identity/whoami.js.map +1 -1
- package/dist/eve/tools/inbox/create-task.d.ts +1 -1
- package/dist/eve/tools/inbox/create-task.js +119 -2
- package/dist/eve/tools/inbox/create-task.js.map +1 -1
- package/dist/eve/tools/inbox/index.d.ts +1 -1
- package/dist/eve/tools/inbox/index.js +119 -2
- package/dist/eve/tools/inbox/index.js.map +1 -1
- package/dist/eve/tools/index.d.ts +5 -2
- package/dist/eve/tools/index.js +932 -288
- package/dist/eve/tools/index.js.map +1 -1
- package/dist/index-Drj0Rzf_.d.ts +905 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.js +335 -20
- package/dist/index.js.map +1 -1
- package/dist/schemas/index.js +67 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/{tool-approval-bridge-DnGaRES4.d.ts → tool-approval-bridge-Cz7qQUpw.d.ts} +1 -1
- package/dist/{tool-reply-guidance-C3qrT1In.d.ts → tool-reply-guidance-CJko9liH.d.ts} +5 -2
- package/dist/tool-result-ui-meta-KT0VafEO.d.ts +52 -0
- package/dist/trigger/index.d.ts +1 -1
- package/dist/trigger/index.js +118 -2
- package/dist/trigger/index.js.map +1 -1
- package/dist/{trigger--qTIK0s6.d.ts → trigger-C1ooSegc.d.ts} +2 -2
- package/dist/workflow/index.d.ts +1 -1
- package/dist/workflow/index.js +118 -2
- package/dist/workflow/index.js.map +1 -1
- package/package.json +21 -4
- package/dist/index-DePyAbTI.d.ts +0 -203
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/eve/tools/admin/manage-groups.ts
|
|
2
2
|
import { defineTool } from "eve/tools";
|
|
3
|
-
import { z as
|
|
3
|
+
import { z as z6 } from "zod";
|
|
4
4
|
|
|
5
5
|
// src/http.ts
|
|
6
6
|
var RobotRockError = class extends Error {
|
|
@@ -493,6 +493,40 @@ var agentChatLinkTaskBodySchema = z.object({
|
|
|
493
493
|
publicTaskId: z.string().min(1),
|
|
494
494
|
toolCallId: z.string().min(1)
|
|
495
495
|
});
|
|
496
|
+
var AGENT_FILE_TAGS_MAX = 20;
|
|
497
|
+
var AGENT_FILE_TAG_MAX_LENGTH = 64;
|
|
498
|
+
function normalizeAgentFileTags(tags) {
|
|
499
|
+
if (!tags?.length) return void 0;
|
|
500
|
+
const seen = /* @__PURE__ */ new Set();
|
|
501
|
+
const out = [];
|
|
502
|
+
for (const raw of tags) {
|
|
503
|
+
const tag = raw.trim().toLowerCase().slice(0, AGENT_FILE_TAG_MAX_LENGTH);
|
|
504
|
+
if (!tag || seen.has(tag)) continue;
|
|
505
|
+
seen.add(tag);
|
|
506
|
+
out.push(tag);
|
|
507
|
+
if (out.length >= AGENT_FILE_TAGS_MAX) break;
|
|
508
|
+
}
|
|
509
|
+
return out.length > 0 ? out : void 0;
|
|
510
|
+
}
|
|
511
|
+
var agentChatUploadImageBodySchema = z.object({
|
|
512
|
+
mediaType: z.string().min(1),
|
|
513
|
+
/** Raw base64 (no data: URL prefix). */
|
|
514
|
+
base64: z.string().min(1),
|
|
515
|
+
chatId: z.string().min(1).optional(),
|
|
516
|
+
publicTaskId: z.string().min(1).optional(),
|
|
517
|
+
source: z.string().min(1).optional(),
|
|
518
|
+
/** Display / search name (e.g. `sunset-robot.png`). */
|
|
519
|
+
filename: z.string().min(1).max(255).optional(),
|
|
520
|
+
/** Human-readable description (e.g. generation prompt). */
|
|
521
|
+
description: z.string().min(1).max(2e3).optional(),
|
|
522
|
+
/**
|
|
523
|
+
* Optional labels for later grouping/filtering.
|
|
524
|
+
* Normalized to lowercase trimmed unique strings (max 20, 64 chars each).
|
|
525
|
+
*/
|
|
526
|
+
tags: z.array(z.string().min(1).max(AGENT_FILE_TAG_MAX_LENGTH)).max(AGENT_FILE_TAGS_MAX).optional().transform((tags) => normalizeAgentFileTags(tags))
|
|
527
|
+
}).refine((data) => Boolean(data.chatId || data.publicTaskId), {
|
|
528
|
+
message: "Provide chatId and/or publicTaskId"
|
|
529
|
+
});
|
|
496
530
|
|
|
497
531
|
// ../core/src/schemas/tool-result-display.ts
|
|
498
532
|
import { z as z2 } from "zod";
|
|
@@ -521,7 +555,8 @@ var tenantRoleSchema = z3.enum(["admin", "member"]);
|
|
|
521
555
|
var agentAdminUserSchema = z3.object({
|
|
522
556
|
id: z3.string(),
|
|
523
557
|
email: z3.string().email(),
|
|
524
|
-
name: z3.string()
|
|
558
|
+
name: z3.string(),
|
|
559
|
+
profilePictureUrl: z3.string().nullable().optional()
|
|
525
560
|
});
|
|
526
561
|
var agentAdminMemberSchema = z3.object({
|
|
527
562
|
userId: z3.string(),
|
|
@@ -606,6 +641,37 @@ var assignTasksBodySchema = z3.object({
|
|
|
606
641
|
{ message: "assignTo needs at least one user email or group slug." }
|
|
607
642
|
)
|
|
608
643
|
});
|
|
644
|
+
var agentAdminPlanLimitsSchema = z3.object({
|
|
645
|
+
tasksPerDay: z3.number(),
|
|
646
|
+
members: z3.number(),
|
|
647
|
+
apiKeys: z3.number(),
|
|
648
|
+
groups: z3.number(),
|
|
649
|
+
auditLogRetention: z3.number(),
|
|
650
|
+
rateLimitPerSecond: z3.number(),
|
|
651
|
+
taskRetentionDays: z3.number()
|
|
652
|
+
});
|
|
653
|
+
var agentAdminUsageSchema = z3.object({
|
|
654
|
+
workspace: z3.string(),
|
|
655
|
+
planName: z3.string(),
|
|
656
|
+
planType: z3.string(),
|
|
657
|
+
trialState: z3.enum(["none", "active", "expired"]),
|
|
658
|
+
daysRemaining: z3.number().nullable(),
|
|
659
|
+
isPaidPro: z3.boolean(),
|
|
660
|
+
subscriptionStatus: z3.string().nullable(),
|
|
661
|
+
tasksToday: z3.number(),
|
|
662
|
+
maxTasksPerDay: z3.number().nullable(),
|
|
663
|
+
tasksResetAt: z3.number(),
|
|
664
|
+
openTasks: z3.number(),
|
|
665
|
+
totalTasks: z3.number(),
|
|
666
|
+
seatsCurrent: z3.number(),
|
|
667
|
+
seatsMax: z3.number().nullable(),
|
|
668
|
+
groupsCurrent: z3.number(),
|
|
669
|
+
groupsMax: z3.number().nullable(),
|
|
670
|
+
apiKeysCurrent: z3.number(),
|
|
671
|
+
apiKeysMax: z3.number().nullable(),
|
|
672
|
+
rateLimitPerSecond: z3.number(),
|
|
673
|
+
limits: agentAdminPlanLimitsSchema
|
|
674
|
+
});
|
|
609
675
|
|
|
610
676
|
// ../core/src/handler-retry.ts
|
|
611
677
|
var HANDLER_RETRY_DELAYS_MS = [
|
|
@@ -701,7 +767,11 @@ function resolveRobotRockAuthConfig(overrides) {
|
|
|
701
767
|
"RobotRock auth is required. Set ROBOTROCK_API_KEY, ROBOTROCK_AGENT_SERVICE_TOKEN with tenant context, or pass auth when creating the client."
|
|
702
768
|
);
|
|
703
769
|
}
|
|
704
|
-
return {
|
|
770
|
+
return {
|
|
771
|
+
kind: "apiKey",
|
|
772
|
+
apiKey,
|
|
773
|
+
...overrides?.actingUserId?.trim() ? { actingUserId: overrides.actingUserId.trim() } : {}
|
|
774
|
+
};
|
|
705
775
|
}
|
|
706
776
|
|
|
707
777
|
// src/eve/agent/attributes.ts
|
|
@@ -837,6 +907,9 @@ async function agentAdminFetch(config, path, init) {
|
|
|
837
907
|
}
|
|
838
908
|
function createAgentAdminApi(config) {
|
|
839
909
|
return {
|
|
910
|
+
usage: {
|
|
911
|
+
get: () => agentAdminFetch(config, "/usage")
|
|
912
|
+
},
|
|
840
913
|
members: {
|
|
841
914
|
list: () => agentAdminFetch(config, "/members"),
|
|
842
915
|
get: (memberRef) => agentAdminFetch(config, `/members/${encodeURIComponent(memberRef)}`),
|
|
@@ -979,20 +1052,215 @@ function requireBoundAgentAdminClient(ctx) {
|
|
|
979
1052
|
return createBoundAgentAdminClient(ctx);
|
|
980
1053
|
}
|
|
981
1054
|
|
|
982
|
-
// src/eve/
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
} : void 0;
|
|
1055
|
+
// src/eve/entity-schemas.ts
|
|
1056
|
+
import { z as z5 } from "zod";
|
|
1057
|
+
|
|
1058
|
+
// src/eve/tool-ui-hint.ts
|
|
1059
|
+
var TOOL_UI_HINT_FIELD = "uiHint";
|
|
1060
|
+
function withUiHint(result, hint) {
|
|
989
1061
|
return {
|
|
990
|
-
...
|
|
991
|
-
|
|
992
|
-
...options?.ui ? { ui: options.ui } : {}
|
|
1062
|
+
...result,
|
|
1063
|
+
[TOOL_UI_HINT_FIELD]: hint
|
|
993
1064
|
};
|
|
994
1065
|
}
|
|
995
1066
|
|
|
1067
|
+
// src/eve/tool-result-ui-meta.ts
|
|
1068
|
+
var TOOL_UI_FIELD = "ui";
|
|
1069
|
+
var TOOL_RESULT_UI_ENTITY_ID_RE = /^[a-z][a-z0-9_]{0,63}$/;
|
|
1070
|
+
function withToolUi(result, ui) {
|
|
1071
|
+
const existing = typeof result[TOOL_UI_FIELD] === "object" && result[TOOL_UI_FIELD] !== null && !Array.isArray(result[TOOL_UI_FIELD]) ? result[TOOL_UI_FIELD] : {};
|
|
1072
|
+
return {
|
|
1073
|
+
...result,
|
|
1074
|
+
[TOOL_UI_FIELD]: {
|
|
1075
|
+
...existing,
|
|
1076
|
+
...ui
|
|
1077
|
+
}
|
|
1078
|
+
};
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
// src/eve/entity-schemas.ts
|
|
1082
|
+
function buildTenantGroupUrl(tenantSlug, slug) {
|
|
1083
|
+
return `/${tenantSlug}/team/groups/${slug}`;
|
|
1084
|
+
}
|
|
1085
|
+
var toolResultUiMetaSchema = z5.object({
|
|
1086
|
+
present: z5.boolean().optional(),
|
|
1087
|
+
entity: z5.string().regex(TOOL_RESULT_UI_ENTITY_ID_RE).optional(),
|
|
1088
|
+
rowsPath: z5.string().min(1).optional(),
|
|
1089
|
+
layout: z5.enum(["list", "chart", "table"]).optional()
|
|
1090
|
+
}).strict();
|
|
1091
|
+
var agentOnlyFields = {
|
|
1092
|
+
replyGuidance: z5.string().optional(),
|
|
1093
|
+
ui: toolResultUiMetaSchema.optional(),
|
|
1094
|
+
uiHint: z5.enum(["list", "chart", "table"]).optional()
|
|
1095
|
+
};
|
|
1096
|
+
function withAgentOnlyFields(shape) {
|
|
1097
|
+
return z5.object({
|
|
1098
|
+
...shape,
|
|
1099
|
+
...agentOnlyFields
|
|
1100
|
+
});
|
|
1101
|
+
}
|
|
1102
|
+
var productEntityRowSchema = z5.object({
|
|
1103
|
+
id: z5.string().min(1),
|
|
1104
|
+
name: z5.string().min(1),
|
|
1105
|
+
price: z5.number(),
|
|
1106
|
+
currency: z5.string().min(1),
|
|
1107
|
+
inStock: z5.boolean(),
|
|
1108
|
+
url: z5.string().min(1)
|
|
1109
|
+
});
|
|
1110
|
+
var metricPointEntityRowSchema = z5.object({
|
|
1111
|
+
date: z5.string().optional(),
|
|
1112
|
+
category: z5.string().optional(),
|
|
1113
|
+
label: z5.string().optional()
|
|
1114
|
+
}).catchall(z5.union([z5.string(), z5.number()]));
|
|
1115
|
+
var memberEntityRowSchema = z5.object({
|
|
1116
|
+
name: z5.string(),
|
|
1117
|
+
email: z5.string(),
|
|
1118
|
+
role: z5.string(),
|
|
1119
|
+
membershipKind: z5.string(),
|
|
1120
|
+
profilePictureUrl: z5.string().nullable()
|
|
1121
|
+
});
|
|
1122
|
+
var taskEntityRowSchema = z5.object({
|
|
1123
|
+
id: z5.string().min(1),
|
|
1124
|
+
name: z5.string().min(1),
|
|
1125
|
+
status: z5.string().min(1),
|
|
1126
|
+
type: z5.string().nullable(),
|
|
1127
|
+
description: z5.string().nullable(),
|
|
1128
|
+
validUntil: z5.number(),
|
|
1129
|
+
createdAt: z5.number(),
|
|
1130
|
+
url: z5.string().min(1),
|
|
1131
|
+
threadPriority: z5.string().nullable().optional()
|
|
1132
|
+
});
|
|
1133
|
+
var groupEntityRowSchema = z5.object({
|
|
1134
|
+
name: z5.string().min(1),
|
|
1135
|
+
slug: z5.string().min(1),
|
|
1136
|
+
description: z5.string().nullable(),
|
|
1137
|
+
memberCount: z5.number().nullable(),
|
|
1138
|
+
url: z5.string().min(1)
|
|
1139
|
+
});
|
|
1140
|
+
var groupDetailEntitySchema = z5.object({
|
|
1141
|
+
name: z5.string().min(1),
|
|
1142
|
+
slug: z5.string().min(1),
|
|
1143
|
+
description: z5.string().nullable(),
|
|
1144
|
+
url: z5.string().min(1),
|
|
1145
|
+
members: z5.array(
|
|
1146
|
+
z5.object({
|
|
1147
|
+
name: z5.string(),
|
|
1148
|
+
email: z5.string(),
|
|
1149
|
+
profilePictureUrl: z5.string().nullable()
|
|
1150
|
+
})
|
|
1151
|
+
)
|
|
1152
|
+
});
|
|
1153
|
+
var statusEntityRowSchema = z5.object({
|
|
1154
|
+
id: z5.string().min(1),
|
|
1155
|
+
name: z5.string().min(1),
|
|
1156
|
+
status: z5.string().min(1),
|
|
1157
|
+
url: z5.string().min(1),
|
|
1158
|
+
type: z5.string().nullable().optional(),
|
|
1159
|
+
description: z5.string().nullable().optional()
|
|
1160
|
+
});
|
|
1161
|
+
var agentAdminErrorResultSchema = z5.object({
|
|
1162
|
+
ok: z5.literal(false),
|
|
1163
|
+
status: z5.number().optional(),
|
|
1164
|
+
message: z5.string(),
|
|
1165
|
+
response: z5.unknown().optional()
|
|
1166
|
+
});
|
|
1167
|
+
var agentAdminMutationResultSchema = z5.object({
|
|
1168
|
+
...agentOnlyFields
|
|
1169
|
+
}).passthrough();
|
|
1170
|
+
var searchProductsOutputSchema = withAgentOnlyFields({
|
|
1171
|
+
items: z5.array(productEntityRowSchema)
|
|
1172
|
+
});
|
|
1173
|
+
var generateRandomChartOutputSchema = withAgentOnlyFields({
|
|
1174
|
+
title: z5.string().min(1),
|
|
1175
|
+
axis: z5.enum(["time", "category"]),
|
|
1176
|
+
series: z5.array(metricPointEntityRowSchema)
|
|
1177
|
+
});
|
|
1178
|
+
var generateImageOutputSchema = withAgentOnlyFields({
|
|
1179
|
+
prompt: z5.string().min(1),
|
|
1180
|
+
mediaType: z5.string().min(1),
|
|
1181
|
+
model: z5.string().min(1),
|
|
1182
|
+
storageId: z5.string().min(1),
|
|
1183
|
+
url: z5.string().min(1),
|
|
1184
|
+
/** @deprecated Legacy sessions only — prefer storageId/url. */
|
|
1185
|
+
base64: z5.string().min(1).optional()
|
|
1186
|
+
});
|
|
1187
|
+
var manageTeamMembersListOutputSchema = withAgentOnlyFields({
|
|
1188
|
+
members: z5.array(memberEntityRowSchema)
|
|
1189
|
+
});
|
|
1190
|
+
var manageTeamMembersDetailOutputSchema = withAgentOnlyFields(
|
|
1191
|
+
memberEntityRowSchema.shape
|
|
1192
|
+
);
|
|
1193
|
+
var manageTeamMembersOutputSchema = z5.union([
|
|
1194
|
+
manageTeamMembersListOutputSchema,
|
|
1195
|
+
manageTeamMembersDetailOutputSchema,
|
|
1196
|
+
agentAdminMutationResultSchema,
|
|
1197
|
+
agentAdminErrorResultSchema
|
|
1198
|
+
]);
|
|
1199
|
+
var manageGroupsListOutputSchema = withAgentOnlyFields({
|
|
1200
|
+
groups: z5.array(groupEntityRowSchema)
|
|
1201
|
+
});
|
|
1202
|
+
var manageGroupsDetailOutputSchema = withAgentOnlyFields(
|
|
1203
|
+
groupDetailEntitySchema.shape
|
|
1204
|
+
);
|
|
1205
|
+
var manageGroupsSummaryOutputSchema = withAgentOnlyFields(
|
|
1206
|
+
groupEntityRowSchema.shape
|
|
1207
|
+
);
|
|
1208
|
+
var manageGroupsOutputSchema = z5.union([
|
|
1209
|
+
manageGroupsListOutputSchema,
|
|
1210
|
+
manageGroupsDetailOutputSchema,
|
|
1211
|
+
manageGroupsSummaryOutputSchema,
|
|
1212
|
+
agentAdminMutationResultSchema,
|
|
1213
|
+
agentAdminErrorResultSchema
|
|
1214
|
+
]);
|
|
1215
|
+
var queryTasksListOutputSchema = withAgentOnlyFields({
|
|
1216
|
+
items: z5.array(taskEntityRowSchema),
|
|
1217
|
+
nextCursor: z5.string().nullable().optional()
|
|
1218
|
+
});
|
|
1219
|
+
var queryTasksDetailOutputSchema = withAgentOnlyFields({
|
|
1220
|
+
id: z5.string().nullable(),
|
|
1221
|
+
status: z5.string().nullable(),
|
|
1222
|
+
type: z5.string().nullable(),
|
|
1223
|
+
name: z5.string().nullable(),
|
|
1224
|
+
description: z5.string().nullable(),
|
|
1225
|
+
validUntil: z5.number().nullable(),
|
|
1226
|
+
createdAt: z5.number().nullable(),
|
|
1227
|
+
url: z5.string().min(1).nullable()
|
|
1228
|
+
});
|
|
1229
|
+
var queryTasksOutputSchema = z5.union([
|
|
1230
|
+
queryTasksListOutputSchema,
|
|
1231
|
+
queryTasksDetailOutputSchema,
|
|
1232
|
+
agentAdminErrorResultSchema
|
|
1233
|
+
]);
|
|
1234
|
+
var assignTasksOutputSchema = z5.union([
|
|
1235
|
+
withAgentOnlyFields({
|
|
1236
|
+
results: z5.array(statusEntityRowSchema)
|
|
1237
|
+
}),
|
|
1238
|
+
agentAdminErrorResultSchema
|
|
1239
|
+
]);
|
|
1240
|
+
var workspaceUsageEntitySchema = z5.object({
|
|
1241
|
+
workspace: z5.string(),
|
|
1242
|
+
plan: z5.string(),
|
|
1243
|
+
planType: z5.string(),
|
|
1244
|
+
trialState: z5.string(),
|
|
1245
|
+
daysRemaining: z5.number().nullable(),
|
|
1246
|
+
isPaidPro: z5.boolean(),
|
|
1247
|
+
subscriptionStatus: z5.string(),
|
|
1248
|
+
tasksToday: z5.string(),
|
|
1249
|
+
tasksResetAt: z5.string(),
|
|
1250
|
+
openTasks: z5.number(),
|
|
1251
|
+
totalTasks: z5.number(),
|
|
1252
|
+
seats: z5.string(),
|
|
1253
|
+
groups: z5.string(),
|
|
1254
|
+
apiKeys: z5.string(),
|
|
1255
|
+
rateLimitPerSecond: z5.number()
|
|
1256
|
+
});
|
|
1257
|
+
var getWorkspaceUsageOutputSchema = z5.union([
|
|
1258
|
+
withAgentOnlyFields({
|
|
1259
|
+
usage: workspaceUsageEntitySchema
|
|
1260
|
+
}),
|
|
1261
|
+
agentAdminErrorResultSchema
|
|
1262
|
+
]);
|
|
1263
|
+
|
|
996
1264
|
// src/eve/tool-reply-guidance.ts
|
|
997
1265
|
var TOOL_REPLY_GUIDANCE_FIELD = "replyGuidance";
|
|
998
1266
|
var MANAGE_GROUPS_LIST_REPLY_GUIDANCE = "Groups render as a list card in chat. Do not restate group names, slugs, or descriptions from the list. Use slug (not internal id) for get, update, delete, and membership actions. Only add context not shown.";
|
|
@@ -1007,107 +1275,85 @@ function withReplyGuidance(result, guidance) {
|
|
|
1007
1275
|
|
|
1008
1276
|
// src/eve/tool-display-format.ts
|
|
1009
1277
|
function formatToolObjectResult(data, options) {
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
title: options.title,
|
|
1013
|
-
description: options.description,
|
|
1014
|
-
ui: options.ui
|
|
1015
|
-
}),
|
|
1278
|
+
let result = withReplyGuidance(
|
|
1279
|
+
data,
|
|
1016
1280
|
options.replyGuidance
|
|
1017
1281
|
);
|
|
1282
|
+
if (options.ui) {
|
|
1283
|
+
result = withToolUi(result, options.ui);
|
|
1284
|
+
}
|
|
1285
|
+
if (options.uiHint) {
|
|
1286
|
+
result = withUiHint(result, options.uiHint);
|
|
1287
|
+
}
|
|
1288
|
+
return result;
|
|
1018
1289
|
}
|
|
1019
1290
|
function formatToolListResult(listKey, items, options) {
|
|
1020
|
-
const
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
}
|
|
1026
|
-
} : {
|
|
1027
|
-
"ui:widget": "table",
|
|
1028
|
-
...options.itemUi ? { items: options.itemUi } : {}
|
|
1291
|
+
const ui = {
|
|
1292
|
+
...options.ui,
|
|
1293
|
+
layout: "list",
|
|
1294
|
+
rowsPath: listKey,
|
|
1295
|
+
...options.entity ? { entity: options.entity } : {},
|
|
1296
|
+
...options.present !== void 0 ? { present: options.present } : {}
|
|
1029
1297
|
};
|
|
1030
|
-
return
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
},
|
|
1037
|
-
replyGuidance: options.replyGuidance
|
|
1038
|
-
}
|
|
1298
|
+
return withUiHint(
|
|
1299
|
+
withToolUi(
|
|
1300
|
+
withReplyGuidance({ [listKey]: items }, options.replyGuidance),
|
|
1301
|
+
ui
|
|
1302
|
+
),
|
|
1303
|
+
"list"
|
|
1039
1304
|
);
|
|
1040
1305
|
}
|
|
1041
1306
|
|
|
1042
1307
|
// src/eve/tools/admin/format-groups-list.ts
|
|
1043
|
-
|
|
1044
|
-
name: { "ui:title": "Name" },
|
|
1045
|
-
slug: { "ui:title": "Slug" },
|
|
1046
|
-
description: { "ui:title": "Description" },
|
|
1047
|
-
memberCount: { "ui:title": "Members", "ui:widget": "number" }
|
|
1048
|
-
};
|
|
1049
|
-
function serializeGroupRow(group) {
|
|
1308
|
+
function serializeGroupRow(group, tenantSlug) {
|
|
1050
1309
|
return {
|
|
1051
1310
|
name: group.name,
|
|
1052
1311
|
slug: group.slug,
|
|
1053
1312
|
description: group.description,
|
|
1054
|
-
memberCount: group.memberCount ?? null
|
|
1313
|
+
memberCount: group.memberCount ?? null,
|
|
1314
|
+
url: buildTenantGroupUrl(tenantSlug, group.slug)
|
|
1055
1315
|
};
|
|
1056
1316
|
}
|
|
1057
|
-
function formatGroupsListResult(groups) {
|
|
1058
|
-
const countLabel = groups.length === 1 ? "1 group" : `${groups.length} groups`;
|
|
1317
|
+
function formatGroupsListResult(groups, options) {
|
|
1059
1318
|
return formatToolListResult(
|
|
1060
1319
|
"groups",
|
|
1061
|
-
groups.map(serializeGroupRow),
|
|
1320
|
+
groups.map((group) => serializeGroupRow(group, options.tenantSlug)),
|
|
1062
1321
|
{
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
replyGuidance: MANAGE_GROUPS_LIST_REPLY_GUIDANCE
|
|
1322
|
+
replyGuidance: MANAGE_GROUPS_LIST_REPLY_GUIDANCE,
|
|
1323
|
+
entity: "group"
|
|
1066
1324
|
}
|
|
1067
1325
|
);
|
|
1068
1326
|
}
|
|
1069
|
-
function formatGroupDetailResult(group) {
|
|
1327
|
+
function formatGroupDetailResult(group, options) {
|
|
1070
1328
|
return formatToolObjectResult(
|
|
1071
1329
|
{
|
|
1072
1330
|
name: group.name,
|
|
1073
1331
|
slug: group.slug,
|
|
1074
1332
|
description: group.description,
|
|
1333
|
+
url: buildTenantGroupUrl(options.tenantSlug, group.slug),
|
|
1075
1334
|
members: group.members.map((member) => ({
|
|
1076
1335
|
name: member.user.name,
|
|
1077
|
-
email: member.user.email
|
|
1336
|
+
email: member.user.email,
|
|
1337
|
+
profilePictureUrl: member.user.profilePictureUrl ?? null
|
|
1078
1338
|
}))
|
|
1079
1339
|
},
|
|
1080
1340
|
{
|
|
1081
|
-
|
|
1082
|
-
ui: {
|
|
1083
|
-
name: { "ui:title": "Name" },
|
|
1084
|
-
slug: { "ui:title": "Slug" },
|
|
1085
|
-
description: { "ui:title": "Description" },
|
|
1086
|
-
members: {
|
|
1087
|
-
"ui:widget": "list",
|
|
1088
|
-
"ui:title": "Members",
|
|
1089
|
-
items: {
|
|
1090
|
-
name: { "ui:title": "Name" },
|
|
1091
|
-
email: { "ui:title": "Email" }
|
|
1092
|
-
}
|
|
1093
|
-
}
|
|
1094
|
-
},
|
|
1095
|
-
replyGuidance: MANAGE_GROUPS_DETAIL_REPLY_GUIDANCE
|
|
1341
|
+
replyGuidance: MANAGE_GROUPS_DETAIL_REPLY_GUIDANCE,
|
|
1342
|
+
ui: { entity: "group" }
|
|
1096
1343
|
}
|
|
1097
1344
|
);
|
|
1098
1345
|
}
|
|
1099
|
-
function formatGroupSummaryResult(group) {
|
|
1100
|
-
return formatToolObjectResult(serializeGroupRow(group), {
|
|
1101
|
-
|
|
1102
|
-
ui:
|
|
1103
|
-
replyGuidance: MANAGE_GROUPS_DETAIL_REPLY_GUIDANCE
|
|
1346
|
+
function formatGroupSummaryResult(group, options) {
|
|
1347
|
+
return formatToolObjectResult(serializeGroupRow(group, options.tenantSlug), {
|
|
1348
|
+
replyGuidance: MANAGE_GROUPS_DETAIL_REPLY_GUIDANCE,
|
|
1349
|
+
ui: { entity: "group" }
|
|
1104
1350
|
});
|
|
1105
1351
|
}
|
|
1106
1352
|
|
|
1107
1353
|
// src/eve/tools/admin/manage-groups.ts
|
|
1108
1354
|
var MANAGE_GROUPS_TOOL_NAME = "manage_groups";
|
|
1109
|
-
var manageGroupsInputSchema =
|
|
1110
|
-
action:
|
|
1355
|
+
var manageGroupsInputSchema = z6.object({
|
|
1356
|
+
action: z6.enum([
|
|
1111
1357
|
"list",
|
|
1112
1358
|
"get",
|
|
1113
1359
|
"create",
|
|
@@ -1116,18 +1362,18 @@ var manageGroupsInputSchema = z5.object({
|
|
|
1116
1362
|
"add_member",
|
|
1117
1363
|
"remove_member"
|
|
1118
1364
|
]),
|
|
1119
|
-
groupId:
|
|
1365
|
+
groupId: z6.string().min(1).optional().describe(
|
|
1120
1366
|
"Convex group id for get, update, delete, and membership actions. Prefer slug when the group list only shows slug."
|
|
1121
1367
|
),
|
|
1122
|
-
slug:
|
|
1368
|
+
slug: z6.string().min(1).optional().describe(
|
|
1123
1369
|
"Group slug (e.g. finance) for get, update, delete, and membership actions."
|
|
1124
1370
|
),
|
|
1125
|
-
userId:
|
|
1371
|
+
userId: z6.string().min(1).optional().describe(
|
|
1126
1372
|
"User id for add_member and remove_member. Prefer email when the member list only shows email."
|
|
1127
1373
|
),
|
|
1128
|
-
email:
|
|
1129
|
-
name:
|
|
1130
|
-
description:
|
|
1374
|
+
email: z6.string().email().optional().describe("Member email for add_member and remove_member."),
|
|
1375
|
+
name: z6.string().min(1).optional().describe("Group name for create and update."),
|
|
1376
|
+
description: z6.string().optional().describe("Group description for create and update.")
|
|
1131
1377
|
}).superRefine((input, ctx) => {
|
|
1132
1378
|
const requireField = (field, message) => {
|
|
1133
1379
|
if (!input[field]) {
|
|
@@ -1168,9 +1414,8 @@ var manageGroupsInputSchema = z5.object({
|
|
|
1168
1414
|
break;
|
|
1169
1415
|
}
|
|
1170
1416
|
});
|
|
1171
|
-
function formatGroupMutationResult(payload
|
|
1417
|
+
function formatGroupMutationResult(payload) {
|
|
1172
1418
|
return formatToolObjectResult(payload, {
|
|
1173
|
-
title,
|
|
1174
1419
|
replyGuidance: ADMIN_MUTATION_REPLY_GUIDANCE
|
|
1175
1420
|
});
|
|
1176
1421
|
}
|
|
@@ -1182,39 +1427,50 @@ function resolveMemberRef(input) {
|
|
|
1182
1427
|
}
|
|
1183
1428
|
function defineManageGroupsTool() {
|
|
1184
1429
|
return defineTool({
|
|
1185
|
-
description: "Tenant-admin tool for workspace groups: list, get, create, update, delete, and manage group membership. Requires tenant admin access. Use group slug (e.g. finance) from list results for get and membership actions \u2014 internal ids are optional. Use member email for add_member and remove_member when user ids are unknown. Results render as chat UI cards \u2014 do not restate group or member fields in your reply.",
|
|
1430
|
+
description: "Tenant-admin tool for workspace groups: list, get, create, update, delete, and manage group membership. 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 group slug (e.g. finance) from list results for get and membership actions \u2014 internal ids are optional. Use member email for add_member and remove_member when user ids are unknown. Results render as chat UI cards \u2014 do not restate group or member fields in your reply.",
|
|
1186
1431
|
inputSchema: manageGroupsInputSchema,
|
|
1432
|
+
outputSchema: manageGroupsOutputSchema,
|
|
1187
1433
|
async execute(input, ctx) {
|
|
1434
|
+
const caller = requireAdminCaller(ctx);
|
|
1188
1435
|
const api = requireBoundAgentAdminClient(ctx);
|
|
1436
|
+
const tenantSlug = caller.tenantSlug;
|
|
1189
1437
|
try {
|
|
1190
1438
|
switch (input.action) {
|
|
1191
1439
|
case "list": {
|
|
1192
1440
|
const result = await api.groups.list();
|
|
1193
|
-
return formatGroupsListResult(result.groups
|
|
1441
|
+
return formatGroupsListResult(result.groups, {
|
|
1442
|
+
tenantSlug
|
|
1443
|
+
});
|
|
1194
1444
|
}
|
|
1195
1445
|
case "get": {
|
|
1196
1446
|
const result = await api.groups.get(resolveGroupRef(input));
|
|
1197
|
-
return formatGroupDetailResult(
|
|
1447
|
+
return formatGroupDetailResult(
|
|
1448
|
+
result.group,
|
|
1449
|
+
{ tenantSlug }
|
|
1450
|
+
);
|
|
1198
1451
|
}
|
|
1199
1452
|
case "create": {
|
|
1200
1453
|
const result = await api.groups.create({
|
|
1201
1454
|
name: input.name,
|
|
1202
1455
|
description: input.description
|
|
1203
1456
|
});
|
|
1204
|
-
return formatGroupSummaryResult(result.group
|
|
1457
|
+
return formatGroupSummaryResult(result.group, {
|
|
1458
|
+
tenantSlug
|
|
1459
|
+
});
|
|
1205
1460
|
}
|
|
1206
1461
|
case "update": {
|
|
1207
1462
|
const result = await api.groups.update(resolveGroupRef(input), {
|
|
1208
1463
|
name: input.name,
|
|
1209
1464
|
description: input.description
|
|
1210
1465
|
});
|
|
1211
|
-
return formatGroupSummaryResult(result.group
|
|
1466
|
+
return formatGroupSummaryResult(result.group, {
|
|
1467
|
+
tenantSlug
|
|
1468
|
+
});
|
|
1212
1469
|
}
|
|
1213
1470
|
case "delete": {
|
|
1214
1471
|
const result = await api.groups.delete(resolveGroupRef(input));
|
|
1215
1472
|
return formatGroupMutationResult(
|
|
1216
|
-
result
|
|
1217
|
-
"Group deleted"
|
|
1473
|
+
result
|
|
1218
1474
|
);
|
|
1219
1475
|
}
|
|
1220
1476
|
case "add_member": {
|
|
@@ -1223,8 +1479,7 @@ function defineManageGroupsTool() {
|
|
|
1223
1479
|
resolveMemberRef(input)
|
|
1224
1480
|
);
|
|
1225
1481
|
return formatGroupMutationResult(
|
|
1226
|
-
result
|
|
1227
|
-
"Group member added"
|
|
1482
|
+
result
|
|
1228
1483
|
);
|
|
1229
1484
|
}
|
|
1230
1485
|
case "remove_member": {
|
|
@@ -1233,8 +1488,7 @@ function defineManageGroupsTool() {
|
|
|
1233
1488
|
resolveMemberRef(input)
|
|
1234
1489
|
);
|
|
1235
1490
|
return formatGroupMutationResult(
|
|
1236
|
-
result
|
|
1237
|
-
"Group member removed"
|
|
1491
|
+
result
|
|
1238
1492
|
);
|
|
1239
1493
|
}
|
|
1240
1494
|
}
|