@voyant-travel/auth 0.130.0 → 0.131.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/dist/mcp-runtime.d.ts +9 -0
- package/dist/mcp-runtime.js +38 -0
- package/dist/mcp-runtime.js.map +1 -0
- package/dist/tools.d.ts +58 -0
- package/dist/tools.js +226 -0
- package/dist/tools.js.map +1 -0
- package/dist/voyant.js +227 -5
- package/dist/voyant.js.map +1 -1
- package/package.json +10 -4
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./tools.js";
|
|
2
|
+
/**
|
|
3
|
+
* The guarded team runtime uses a concrete acting user for authorization,
|
|
4
|
+
* self-mutation prevention, and last-owner invariants. Organization identity is
|
|
5
|
+
* not a user identity and must never be promoted into one. Until an MCP grant
|
|
6
|
+
* carries an explicit delegated user or service principal understood by this
|
|
7
|
+
* port, organization-only API keys fail closed here.
|
|
8
|
+
*/
|
|
9
|
+
export declare const voyantToolContextContribution: import("@voyant-travel/tools").ToolContextContribution;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { defineToolContextContribution, requireService, ToolError } from "@voyant-travel/tools";
|
|
2
|
+
import { teamManagementRuntimePort } from "./team-management-runtime-port.js";
|
|
3
|
+
export * from "./tools.js";
|
|
4
|
+
/**
|
|
5
|
+
* The guarded team runtime uses a concrete acting user for authorization,
|
|
6
|
+
* self-mutation prevention, and last-owner invariants. Organization identity is
|
|
7
|
+
* not a user identity and must never be promoted into one. Until an MCP grant
|
|
8
|
+
* carries an explicit delegated user or service principal understood by this
|
|
9
|
+
* port, organization-only API keys fail closed here.
|
|
10
|
+
*/
|
|
11
|
+
export const voyantToolContextContribution = defineToolContextContribution({
|
|
12
|
+
context: ["teamManagement"],
|
|
13
|
+
async contribute({ request, context, resources }) {
|
|
14
|
+
if (context.actor !== "staff" || context.audience !== "staff") {
|
|
15
|
+
throw new ToolError("Team-management tools are restricted to staff grants.", "AUTHORIZATION_DENIED", { actor: context.actor, audience: context.audience });
|
|
16
|
+
}
|
|
17
|
+
const c = request;
|
|
18
|
+
const userId = c.get("userId");
|
|
19
|
+
if (!userId) {
|
|
20
|
+
throw new ToolError("Team management requires an authenticated acting user.", "AUTHORIZATION_DENIED");
|
|
21
|
+
}
|
|
22
|
+
const runtime = requireService(resources[teamManagementRuntimePort.id], teamManagementRuntimePort.id);
|
|
23
|
+
const runtimeContext = { bindings: c.env, db: c.get("db"), userId };
|
|
24
|
+
const teamManagement = {
|
|
25
|
+
getCapabilities: () => runtime.getCapabilities(runtimeContext),
|
|
26
|
+
listMembers: () => runtime.listMembers(runtimeContext),
|
|
27
|
+
listRoles: () => runtime.listRoles(runtimeContext),
|
|
28
|
+
listInvitations: () => runtime.listInvitations(runtimeContext),
|
|
29
|
+
inviteMember: (input) => runtime.inviteMember(runtimeContext, input),
|
|
30
|
+
revokeInvitation: (invitationId) => runtime.revokeInvitation(runtimeContext, invitationId),
|
|
31
|
+
updateMemberRole: (memberId, roleId) => runtime.updateMemberRole(runtimeContext, memberId, roleId),
|
|
32
|
+
activateMember: (memberId) => runtime.activateMember(runtimeContext, memberId),
|
|
33
|
+
deactivateMember: (memberId) => runtime.deactivateMember(runtimeContext, memberId),
|
|
34
|
+
};
|
|
35
|
+
return { teamManagement };
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=mcp-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-runtime.js","sourceRoot":"","sources":["../src/mcp-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAG/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAG7E,cAAc,YAAY,CAAA;AAO1B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,6BAA6B,CAAC;IACzE,OAAO,EAAE,CAAC,gBAAgB,CAAC;IAC3B,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QAC9C,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC9D,MAAM,IAAI,SAAS,CACjB,uDAAuD,EACvD,sBAAsB,EACtB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CACrD,CAAA;QACH,CAAC;QAED,MAAM,CAAC,GAAG,OAAyB,CAAA;QACnC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,SAAS,CACjB,wDAAwD,EACxD,sBAAsB,CACvB,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,cAAc,CAC5B,SAAS,CAAC,yBAAyB,CAAC,EAAE,CAEzB,EACb,yBAAyB,CAAC,EAAE,CAC7B,CAAA;QACD,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACnE,MAAM,cAAc,GAA+B;YACjD,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;YAC9D,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC;YACtD,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;YAClD,eAAe,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;YAC9D,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC;YACpE,gBAAgB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY,CAAC;YAC1F,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CACrC,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC;YAC5D,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC;YAC9E,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,CAAC;SACnF,CAAA;QACD,OAAO,EAAE,cAAc,EAAE,CAAA;IAC3B,CAAC;CACF,CAAC,CAAA","sourcesContent":["import { defineToolContextContribution, requireService, ToolError } from \"@voyant-travel/tools\"\nimport type { Context } from \"hono\"\n\nimport { teamManagementRuntimePort } from \"./team-management-runtime-port.js\"\nimport type { TeamManagementToolServices } from \"./tools.js\"\n\nexport * from \"./tools.js\"\n\ntype TeamMcpContext = Context<{\n Bindings: Record<string, unknown>\n Variables: { db: import(\"@voyant-travel/hono\").VoyantDb; userId?: string }\n}>\n\n/**\n * The guarded team runtime uses a concrete acting user for authorization,\n * self-mutation prevention, and last-owner invariants. Organization identity is\n * not a user identity and must never be promoted into one. Until an MCP grant\n * carries an explicit delegated user or service principal understood by this\n * port, organization-only API keys fail closed here.\n */\nexport const voyantToolContextContribution = defineToolContextContribution({\n context: [\"teamManagement\"],\n async contribute({ request, context, resources }) {\n if (context.actor !== \"staff\" || context.audience !== \"staff\") {\n throw new ToolError(\n \"Team-management tools are restricted to staff grants.\",\n \"AUTHORIZATION_DENIED\",\n { actor: context.actor, audience: context.audience },\n )\n }\n\n const c = request as TeamMcpContext\n const userId = c.get(\"userId\")\n if (!userId) {\n throw new ToolError(\n \"Team management requires an authenticated acting user.\",\n \"AUTHORIZATION_DENIED\",\n )\n }\n\n const runtime = requireService(\n resources[teamManagementRuntimePort.id] as\n | import(\"./team-management-runtime-port.js\").TeamManagementRuntimeProvider\n | undefined,\n teamManagementRuntimePort.id,\n )\n const runtimeContext = { bindings: c.env, db: c.get(\"db\"), userId }\n const teamManagement: TeamManagementToolServices = {\n getCapabilities: () => runtime.getCapabilities(runtimeContext),\n listMembers: () => runtime.listMembers(runtimeContext),\n listRoles: () => runtime.listRoles(runtimeContext),\n listInvitations: () => runtime.listInvitations(runtimeContext),\n inviteMember: (input) => runtime.inviteMember(runtimeContext, input),\n revokeInvitation: (invitationId) => runtime.revokeInvitation(runtimeContext, invitationId),\n updateMemberRole: (memberId, roleId) =>\n runtime.updateMemberRole(runtimeContext, memberId, roleId),\n activateMember: (memberId) => runtime.activateMember(runtimeContext, memberId),\n deactivateMember: (memberId) => runtime.deactivateMember(runtimeContext, memberId),\n }\n return { teamManagement }\n },\n})\n"]}
|
package/dist/tools.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type ToolContext } from "@voyant-travel/tools";
|
|
2
|
+
import type { CreatedTeamInvitationDto, InviteTeamMemberInput, TeamInvitationDto, TeamManagementCapabilitiesDto, TeamMemberDto, TeamRoleDto } from "./team-management-runtime-port.js";
|
|
3
|
+
export interface TeamManagementToolServices {
|
|
4
|
+
getCapabilities(): Promise<TeamManagementCapabilitiesDto>;
|
|
5
|
+
listMembers(): Promise<TeamMemberDto[]>;
|
|
6
|
+
listRoles(): Promise<TeamRoleDto[]>;
|
|
7
|
+
listInvitations(): Promise<TeamInvitationDto[]>;
|
|
8
|
+
inviteMember(input: InviteTeamMemberInput): Promise<CreatedTeamInvitationDto>;
|
|
9
|
+
revokeInvitation(invitationId: string): Promise<void>;
|
|
10
|
+
updateMemberRole(memberId: string, roleId: string): Promise<TeamMemberDto>;
|
|
11
|
+
activateMember(memberId: string): Promise<TeamMemberDto>;
|
|
12
|
+
deactivateMember(memberId: string): Promise<TeamMemberDto>;
|
|
13
|
+
}
|
|
14
|
+
export type TeamManagementToolContext = ToolContext & {
|
|
15
|
+
teamManagement?: TeamManagementToolServices;
|
|
16
|
+
};
|
|
17
|
+
export declare const getTeamManagementCapabilitiesTool: import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamManagementCapabilitiesDto, TeamManagementToolContext>;
|
|
18
|
+
export declare const listTeamMembersTool: import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamMemberDto[], TeamManagementToolContext>;
|
|
19
|
+
export declare const listTeamRolesTool: import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamRoleDto[], TeamManagementToolContext>;
|
|
20
|
+
export declare const listTeamInvitationsTool: import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamInvitationDto[], TeamManagementToolContext>;
|
|
21
|
+
export declare const inviteTeamMemberTool: import("@voyant-travel/tools").ToolDefinition<{
|
|
22
|
+
email: string;
|
|
23
|
+
roleId: string;
|
|
24
|
+
expiresInDays?: number | undefined;
|
|
25
|
+
}, TeamInvitationDto, TeamManagementToolContext>;
|
|
26
|
+
export declare const revokeTeamInvitationTool: import("@voyant-travel/tools").ToolDefinition<{
|
|
27
|
+
invitationId: string;
|
|
28
|
+
}, {
|
|
29
|
+
invitationId: string;
|
|
30
|
+
revoked: true;
|
|
31
|
+
}, TeamManagementToolContext>;
|
|
32
|
+
export declare const updateTeamMemberRoleTool: import("@voyant-travel/tools").ToolDefinition<{
|
|
33
|
+
memberId: string;
|
|
34
|
+
roleId: string;
|
|
35
|
+
}, TeamMemberDto, TeamManagementToolContext>;
|
|
36
|
+
export declare const activateTeamMemberTool: import("@voyant-travel/tools").ToolDefinition<{
|
|
37
|
+
memberId: string;
|
|
38
|
+
}, TeamMemberDto, TeamManagementToolContext>;
|
|
39
|
+
export declare const deactivateTeamMemberTool: import("@voyant-travel/tools").ToolDefinition<{
|
|
40
|
+
memberId: string;
|
|
41
|
+
}, TeamMemberDto, TeamManagementToolContext>;
|
|
42
|
+
export declare const teamManagementTools: readonly [import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamManagementCapabilitiesDto, TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamMemberDto[], TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamRoleDto[], TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<Record<string, never>, TeamInvitationDto[], TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<{
|
|
43
|
+
email: string;
|
|
44
|
+
roleId: string;
|
|
45
|
+
expiresInDays?: number | undefined;
|
|
46
|
+
}, TeamInvitationDto, TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<{
|
|
47
|
+
invitationId: string;
|
|
48
|
+
}, {
|
|
49
|
+
invitationId: string;
|
|
50
|
+
revoked: true;
|
|
51
|
+
}, TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<{
|
|
52
|
+
memberId: string;
|
|
53
|
+
roleId: string;
|
|
54
|
+
}, TeamMemberDto, TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<{
|
|
55
|
+
memberId: string;
|
|
56
|
+
}, TeamMemberDto, TeamManagementToolContext>, import("@voyant-travel/tools").ToolDefinition<{
|
|
57
|
+
memberId: string;
|
|
58
|
+
}, TeamMemberDto, TeamManagementToolContext>];
|
package/dist/tools.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { defineTool, READ_ONLY_RISK, requireService, ToolError, } from "@voyant-travel/tools";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const teamMemberSchema = z.object({
|
|
4
|
+
id: z.string(),
|
|
5
|
+
email: z.string().email().nullable(),
|
|
6
|
+
name: z.string().nullable(),
|
|
7
|
+
roleId: z.string(),
|
|
8
|
+
roleName: z.string(),
|
|
9
|
+
status: z.enum(["active", "deactivated"]),
|
|
10
|
+
joinedAt: z.string().nullable(),
|
|
11
|
+
lastActivityAt: z.string().nullable(),
|
|
12
|
+
});
|
|
13
|
+
const teamRoleSchema = z.object({
|
|
14
|
+
id: z.string(),
|
|
15
|
+
name: z.string(),
|
|
16
|
+
description: z.string().nullable(),
|
|
17
|
+
});
|
|
18
|
+
const teamInvitationSchema = z.object({
|
|
19
|
+
id: z.string(),
|
|
20
|
+
email: z.string().email(),
|
|
21
|
+
roleId: z.string(),
|
|
22
|
+
roleName: z.string(),
|
|
23
|
+
status: z.enum(["pending", "accepted", "expired", "revoked"]),
|
|
24
|
+
createdAt: z.string(),
|
|
25
|
+
expiresAt: z.string(),
|
|
26
|
+
});
|
|
27
|
+
const teamManagementCapabilitiesSchema = z.object({
|
|
28
|
+
viewRoster: z.boolean(),
|
|
29
|
+
inviteMembers: z.boolean(),
|
|
30
|
+
manageRoles: z.boolean(),
|
|
31
|
+
activateMembers: z.boolean(),
|
|
32
|
+
deactivateMembers: z.boolean(),
|
|
33
|
+
revokeInvitations: z.boolean(),
|
|
34
|
+
});
|
|
35
|
+
const emptyInputSchema = z.object({});
|
|
36
|
+
const inviteTeamMemberInputSchema = z.object({
|
|
37
|
+
email: z.string().email().describe("Email address for the new team member."),
|
|
38
|
+
roleId: z.string().trim().min(1).max(120).describe("Provider-neutral team role id."),
|
|
39
|
+
expiresInDays: z
|
|
40
|
+
.number()
|
|
41
|
+
.int()
|
|
42
|
+
.min(1)
|
|
43
|
+
.max(30)
|
|
44
|
+
.optional()
|
|
45
|
+
.describe("Invitation validity in days. Uses the deployment default when omitted."),
|
|
46
|
+
});
|
|
47
|
+
const invitationIdInputSchema = z.object({
|
|
48
|
+
invitationId: z.string().min(1).describe("Team invitation id."),
|
|
49
|
+
});
|
|
50
|
+
const memberIdInputSchema = z.object({
|
|
51
|
+
memberId: z.string().min(1).describe("Team member id."),
|
|
52
|
+
});
|
|
53
|
+
const updateMemberRoleInputSchema = memberIdInputSchema.extend({
|
|
54
|
+
roleId: z.string().trim().min(1).max(120).describe("Provider-neutral team role id."),
|
|
55
|
+
});
|
|
56
|
+
const actingUserRequirement = " Requires an authenticated acting staff user; organization-only grants are rejected.";
|
|
57
|
+
function teamManagement(ctx) {
|
|
58
|
+
if (ctx.actor !== "staff" || ctx.audience !== "staff") {
|
|
59
|
+
throw new ToolError("Team-management tools are restricted to staff grants.", "AUTHORIZATION_DENIED", {
|
|
60
|
+
actor: ctx.actor,
|
|
61
|
+
audience: ctx.audience,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return requireService(ctx.teamManagement, "teamManagement");
|
|
65
|
+
}
|
|
66
|
+
export const getTeamManagementCapabilitiesTool = defineTool({
|
|
67
|
+
name: "get_team_management_capabilities",
|
|
68
|
+
description: "Read the current staff user's provider-neutral team-management capabilities." +
|
|
69
|
+
actingUserRequirement,
|
|
70
|
+
inputSchema: emptyInputSchema,
|
|
71
|
+
outputSchema: teamManagementCapabilitiesSchema,
|
|
72
|
+
requiredScopes: ["team:read"],
|
|
73
|
+
tier: "read",
|
|
74
|
+
riskPolicy: READ_ONLY_RISK,
|
|
75
|
+
async handler(_input, ctx) {
|
|
76
|
+
return teamManagement(ctx).getCapabilities();
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
export const listTeamMembersTool = defineTool({
|
|
80
|
+
name: "list_team_members",
|
|
81
|
+
description: "List the staff team roster and access status. Contains personal information." +
|
|
82
|
+
actingUserRequirement,
|
|
83
|
+
inputSchema: emptyInputSchema,
|
|
84
|
+
outputSchema: z.array(teamMemberSchema),
|
|
85
|
+
requiredScopes: ["team:read"],
|
|
86
|
+
tier: "sensitive",
|
|
87
|
+
riskPolicy: READ_ONLY_RISK,
|
|
88
|
+
async handler(_input, ctx) {
|
|
89
|
+
return teamManagement(ctx).listMembers();
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
export const listTeamRolesTool = defineTool({
|
|
93
|
+
name: "list_team_roles",
|
|
94
|
+
description: "List the provider-neutral roles assignable to team members. Read-only." +
|
|
95
|
+
actingUserRequirement,
|
|
96
|
+
inputSchema: emptyInputSchema,
|
|
97
|
+
outputSchema: z.array(teamRoleSchema),
|
|
98
|
+
requiredScopes: ["team:read"],
|
|
99
|
+
tier: "read",
|
|
100
|
+
riskPolicy: READ_ONLY_RISK,
|
|
101
|
+
async handler(_input, ctx) {
|
|
102
|
+
return teamManagement(ctx).listRoles();
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
export const listTeamInvitationsTool = defineTool({
|
|
106
|
+
name: "list_team_invitations",
|
|
107
|
+
description: "List team invitations and their lifecycle status. Contains personal information." +
|
|
108
|
+
actingUserRequirement,
|
|
109
|
+
inputSchema: emptyInputSchema,
|
|
110
|
+
outputSchema: z.array(teamInvitationSchema),
|
|
111
|
+
requiredScopes: ["team:read"],
|
|
112
|
+
tier: "sensitive",
|
|
113
|
+
riskPolicy: READ_ONLY_RISK,
|
|
114
|
+
async handler(_input, ctx) {
|
|
115
|
+
return teamManagement(ctx).listInvitations();
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
export const inviteTeamMemberTool = defineTool({
|
|
119
|
+
name: "invite_team_member",
|
|
120
|
+
description: "Invite a staff team member with an assigned role. Sends an external invitation and requires explicit confirmation." +
|
|
121
|
+
actingUserRequirement,
|
|
122
|
+
inputSchema: inviteTeamMemberInputSchema,
|
|
123
|
+
outputSchema: teamInvitationSchema,
|
|
124
|
+
requiredScopes: ["team:write"],
|
|
125
|
+
tier: "destructive",
|
|
126
|
+
riskPolicy: {
|
|
127
|
+
destructive: true,
|
|
128
|
+
reversible: false,
|
|
129
|
+
dryRunSupported: false,
|
|
130
|
+
confirmationRequired: true,
|
|
131
|
+
sideEffects: ["email", "data-write"],
|
|
132
|
+
},
|
|
133
|
+
async handler(input, ctx) {
|
|
134
|
+
const { acceptUrl: _acceptUrl, ...invitation } = await teamManagement(ctx).inviteMember(input);
|
|
135
|
+
return invitation;
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
export const revokeTeamInvitationTool = defineTool({
|
|
139
|
+
name: "revoke_team_invitation",
|
|
140
|
+
description: "Revoke a pending team invitation. Invalidates its acceptance path and requires confirmation." +
|
|
141
|
+
actingUserRequirement,
|
|
142
|
+
inputSchema: invitationIdInputSchema,
|
|
143
|
+
outputSchema: z.object({ invitationId: z.string(), revoked: z.literal(true) }),
|
|
144
|
+
requiredScopes: ["team:delete"],
|
|
145
|
+
tier: "destructive",
|
|
146
|
+
riskPolicy: {
|
|
147
|
+
destructive: true,
|
|
148
|
+
reversible: false,
|
|
149
|
+
dryRunSupported: false,
|
|
150
|
+
confirmationRequired: true,
|
|
151
|
+
sideEffects: ["data-delete"],
|
|
152
|
+
},
|
|
153
|
+
async handler({ invitationId }, ctx) {
|
|
154
|
+
await teamManagement(ctx).revokeInvitation(invitationId);
|
|
155
|
+
return { invitationId, revoked: true };
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
export const updateTeamMemberRoleTool = defineTool({
|
|
159
|
+
name: "update_team_member_role",
|
|
160
|
+
description: "Change a team member's role and effective access. Requires explicit confirmation." +
|
|
161
|
+
actingUserRequirement,
|
|
162
|
+
inputSchema: updateMemberRoleInputSchema,
|
|
163
|
+
outputSchema: teamMemberSchema,
|
|
164
|
+
requiredScopes: ["team:write"],
|
|
165
|
+
tier: "sensitive",
|
|
166
|
+
riskPolicy: {
|
|
167
|
+
destructive: false,
|
|
168
|
+
reversible: true,
|
|
169
|
+
dryRunSupported: false,
|
|
170
|
+
confirmationRequired: true,
|
|
171
|
+
sideEffects: ["data-write"],
|
|
172
|
+
},
|
|
173
|
+
async handler({ memberId, roleId }, ctx) {
|
|
174
|
+
return teamManagement(ctx).updateMemberRole(memberId, roleId);
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
export const activateTeamMemberTool = defineTool({
|
|
178
|
+
name: "activate_team_member",
|
|
179
|
+
description: "Restore a team member's deployment access. Requires explicit confirmation." +
|
|
180
|
+
actingUserRequirement,
|
|
181
|
+
inputSchema: memberIdInputSchema,
|
|
182
|
+
outputSchema: teamMemberSchema,
|
|
183
|
+
requiredScopes: ["team:write"],
|
|
184
|
+
tier: "sensitive",
|
|
185
|
+
riskPolicy: {
|
|
186
|
+
destructive: false,
|
|
187
|
+
reversible: true,
|
|
188
|
+
dryRunSupported: false,
|
|
189
|
+
confirmationRequired: true,
|
|
190
|
+
sideEffects: ["data-write"],
|
|
191
|
+
},
|
|
192
|
+
async handler({ memberId }, ctx) {
|
|
193
|
+
return teamManagement(ctx).activateMember(memberId);
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
export const deactivateTeamMemberTool = defineTool({
|
|
197
|
+
name: "deactivate_team_member",
|
|
198
|
+
description: "Remove a team member's deployment access and potentially revoke active credentials. Requires explicit confirmation." +
|
|
199
|
+
actingUserRequirement,
|
|
200
|
+
inputSchema: memberIdInputSchema,
|
|
201
|
+
outputSchema: teamMemberSchema,
|
|
202
|
+
requiredScopes: ["team:delete"],
|
|
203
|
+
tier: "destructive",
|
|
204
|
+
riskPolicy: {
|
|
205
|
+
destructive: true,
|
|
206
|
+
reversible: false,
|
|
207
|
+
dryRunSupported: false,
|
|
208
|
+
confirmationRequired: true,
|
|
209
|
+
sideEffects: ["data-write", "data-delete"],
|
|
210
|
+
},
|
|
211
|
+
async handler({ memberId }, ctx) {
|
|
212
|
+
return teamManagement(ctx).deactivateMember(memberId);
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
export const teamManagementTools = [
|
|
216
|
+
getTeamManagementCapabilitiesTool,
|
|
217
|
+
listTeamMembersTool,
|
|
218
|
+
listTeamRolesTool,
|
|
219
|
+
listTeamInvitationsTool,
|
|
220
|
+
inviteTeamMemberTool,
|
|
221
|
+
revokeTeamInvitationTool,
|
|
222
|
+
updateTeamMemberRoleTool,
|
|
223
|
+
activateTeamMemberTool,
|
|
224
|
+
deactivateTeamMemberTool,
|
|
225
|
+
];
|
|
226
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n defineTool,\n READ_ONLY_RISK,\n requireService,\n type ToolContext,\n ToolError,\n} from \"@voyant-travel/tools\"\nimport { z } from \"zod\"\n\nimport type {\n CreatedTeamInvitationDto,\n InviteTeamMemberInput,\n TeamInvitationDto,\n TeamManagementCapabilitiesDto,\n TeamMemberDto,\n TeamRoleDto,\n} from \"./team-management-runtime-port.js\"\n\nconst teamMemberSchema = z.object({\n id: z.string(),\n email: z.string().email().nullable(),\n name: z.string().nullable(),\n roleId: z.string(),\n roleName: z.string(),\n status: z.enum([\"active\", \"deactivated\"]),\n joinedAt: z.string().nullable(),\n lastActivityAt: z.string().nullable(),\n})\n\nconst teamRoleSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullable(),\n})\n\nconst teamInvitationSchema = z.object({\n id: z.string(),\n email: z.string().email(),\n roleId: z.string(),\n roleName: z.string(),\n status: z.enum([\"pending\", \"accepted\", \"expired\", \"revoked\"]),\n createdAt: z.string(),\n expiresAt: z.string(),\n})\n\nconst teamManagementCapabilitiesSchema = z.object({\n viewRoster: z.boolean(),\n inviteMembers: z.boolean(),\n manageRoles: z.boolean(),\n activateMembers: z.boolean(),\n deactivateMembers: z.boolean(),\n revokeInvitations: z.boolean(),\n})\n\nconst emptyInputSchema = z.object({})\nconst inviteTeamMemberInputSchema = z.object({\n email: z.string().email().describe(\"Email address for the new team member.\"),\n roleId: z.string().trim().min(1).max(120).describe(\"Provider-neutral team role id.\"),\n expiresInDays: z\n .number()\n .int()\n .min(1)\n .max(30)\n .optional()\n .describe(\"Invitation validity in days. Uses the deployment default when omitted.\"),\n})\nconst invitationIdInputSchema = z.object({\n invitationId: z.string().min(1).describe(\"Team invitation id.\"),\n})\nconst memberIdInputSchema = z.object({\n memberId: z.string().min(1).describe(\"Team member id.\"),\n})\nconst updateMemberRoleInputSchema = memberIdInputSchema.extend({\n roleId: z.string().trim().min(1).max(120).describe(\"Provider-neutral team role id.\"),\n})\n\nconst actingUserRequirement =\n \" Requires an authenticated acting staff user; organization-only grants are rejected.\"\n\nexport interface TeamManagementToolServices {\n getCapabilities(): Promise<TeamManagementCapabilitiesDto>\n listMembers(): Promise<TeamMemberDto[]>\n listRoles(): Promise<TeamRoleDto[]>\n listInvitations(): Promise<TeamInvitationDto[]>\n inviteMember(input: InviteTeamMemberInput): Promise<CreatedTeamInvitationDto>\n revokeInvitation(invitationId: string): Promise<void>\n updateMemberRole(memberId: string, roleId: string): Promise<TeamMemberDto>\n activateMember(memberId: string): Promise<TeamMemberDto>\n deactivateMember(memberId: string): Promise<TeamMemberDto>\n}\n\nexport type TeamManagementToolContext = ToolContext & {\n teamManagement?: TeamManagementToolServices\n}\n\nfunction teamManagement(ctx: TeamManagementToolContext): TeamManagementToolServices {\n if (ctx.actor !== \"staff\" || ctx.audience !== \"staff\") {\n throw new ToolError(\n \"Team-management tools are restricted to staff grants.\",\n \"AUTHORIZATION_DENIED\",\n {\n actor: ctx.actor,\n audience: ctx.audience,\n },\n )\n }\n return requireService(ctx.teamManagement, \"teamManagement\")\n}\n\nexport const getTeamManagementCapabilitiesTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamManagementCapabilitiesDto,\n TeamManagementToolContext\n>({\n name: \"get_team_management_capabilities\",\n description:\n \"Read the current staff user's provider-neutral team-management capabilities.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: teamManagementCapabilitiesSchema,\n requiredScopes: [\"team:read\"],\n tier: \"read\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).getCapabilities()\n },\n})\n\nexport const listTeamMembersTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamMemberDto[],\n TeamManagementToolContext\n>({\n name: \"list_team_members\",\n description:\n \"List the staff team roster and access status. Contains personal information.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: z.array(teamMemberSchema),\n requiredScopes: [\"team:read\"],\n tier: \"sensitive\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).listMembers()\n },\n})\n\nexport const listTeamRolesTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamRoleDto[],\n TeamManagementToolContext\n>({\n name: \"list_team_roles\",\n description:\n \"List the provider-neutral roles assignable to team members. Read-only.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: z.array(teamRoleSchema),\n requiredScopes: [\"team:read\"],\n tier: \"read\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).listRoles()\n },\n})\n\nexport const listTeamInvitationsTool = defineTool<\n z.infer<typeof emptyInputSchema>,\n TeamInvitationDto[],\n TeamManagementToolContext\n>({\n name: \"list_team_invitations\",\n description:\n \"List team invitations and their lifecycle status. Contains personal information.\" +\n actingUserRequirement,\n inputSchema: emptyInputSchema,\n outputSchema: z.array(teamInvitationSchema),\n requiredScopes: [\"team:read\"],\n tier: \"sensitive\",\n riskPolicy: READ_ONLY_RISK,\n async handler(_input, ctx) {\n return teamManagement(ctx).listInvitations()\n },\n})\n\nexport const inviteTeamMemberTool = defineTool<\n z.infer<typeof inviteTeamMemberInputSchema>,\n TeamInvitationDto,\n TeamManagementToolContext\n>({\n name: \"invite_team_member\",\n description:\n \"Invite a staff team member with an assigned role. Sends an external invitation and requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: inviteTeamMemberInputSchema,\n outputSchema: teamInvitationSchema,\n requiredScopes: [\"team:write\"],\n tier: \"destructive\",\n riskPolicy: {\n destructive: true,\n reversible: false,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"email\", \"data-write\"],\n },\n async handler(input, ctx) {\n const { acceptUrl: _acceptUrl, ...invitation } = await teamManagement(ctx).inviteMember(input)\n return invitation\n },\n})\n\nexport const revokeTeamInvitationTool = defineTool<\n z.infer<typeof invitationIdInputSchema>,\n { invitationId: string; revoked: true },\n TeamManagementToolContext\n>({\n name: \"revoke_team_invitation\",\n description:\n \"Revoke a pending team invitation. Invalidates its acceptance path and requires confirmation.\" +\n actingUserRequirement,\n inputSchema: invitationIdInputSchema,\n outputSchema: z.object({ invitationId: z.string(), revoked: z.literal(true) }),\n requiredScopes: [\"team:delete\"],\n tier: \"destructive\",\n riskPolicy: {\n destructive: true,\n reversible: false,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-delete\"],\n },\n async handler({ invitationId }, ctx) {\n await teamManagement(ctx).revokeInvitation(invitationId)\n return { invitationId, revoked: true }\n },\n})\n\nexport const updateTeamMemberRoleTool = defineTool<\n z.infer<typeof updateMemberRoleInputSchema>,\n TeamMemberDto,\n TeamManagementToolContext\n>({\n name: \"update_team_member_role\",\n description:\n \"Change a team member's role and effective access. Requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: updateMemberRoleInputSchema,\n outputSchema: teamMemberSchema,\n requiredScopes: [\"team:write\"],\n tier: \"sensitive\",\n riskPolicy: {\n destructive: false,\n reversible: true,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-write\"],\n },\n async handler({ memberId, roleId }, ctx) {\n return teamManagement(ctx).updateMemberRole(memberId, roleId)\n },\n})\n\nexport const activateTeamMemberTool = defineTool<\n z.infer<typeof memberIdInputSchema>,\n TeamMemberDto,\n TeamManagementToolContext\n>({\n name: \"activate_team_member\",\n description:\n \"Restore a team member's deployment access. Requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: memberIdInputSchema,\n outputSchema: teamMemberSchema,\n requiredScopes: [\"team:write\"],\n tier: \"sensitive\",\n riskPolicy: {\n destructive: false,\n reversible: true,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-write\"],\n },\n async handler({ memberId }, ctx) {\n return teamManagement(ctx).activateMember(memberId)\n },\n})\n\nexport const deactivateTeamMemberTool = defineTool<\n z.infer<typeof memberIdInputSchema>,\n TeamMemberDto,\n TeamManagementToolContext\n>({\n name: \"deactivate_team_member\",\n description:\n \"Remove a team member's deployment access and potentially revoke active credentials. Requires explicit confirmation.\" +\n actingUserRequirement,\n inputSchema: memberIdInputSchema,\n outputSchema: teamMemberSchema,\n requiredScopes: [\"team:delete\"],\n tier: \"destructive\",\n riskPolicy: {\n destructive: true,\n reversible: false,\n dryRunSupported: false,\n confirmationRequired: true,\n sideEffects: [\"data-write\", \"data-delete\"],\n },\n async handler({ memberId }, ctx) {\n return teamManagement(ctx).deactivateMember(memberId)\n },\n})\n\nexport const teamManagementTools = [\n getTeamManagementCapabilitiesTool,\n listTeamMembersTool,\n listTeamRolesTool,\n listTeamInvitationsTool,\n inviteTeamMemberTool,\n revokeTeamInvitationTool,\n updateTeamMemberRoleTool,\n activateTeamMemberTool,\n deactivateTeamMemberTool,\n] as const\n"]}
|
package/dist/voyant.js
CHANGED
|
@@ -42,7 +42,13 @@ export const authInvitationsVoyantModule = defineModule({
|
|
|
42
42
|
},
|
|
43
43
|
},
|
|
44
44
|
],
|
|
45
|
-
meta: {
|
|
45
|
+
meta: {
|
|
46
|
+
ownership: "package",
|
|
47
|
+
agentTools: {
|
|
48
|
+
posture: "not-applicable",
|
|
49
|
+
rationale: "This unit owns public invitation acceptance; staff invitation management is exposed by the guarded auth team runtime.",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
46
52
|
});
|
|
47
53
|
export const authTeamVoyantModule = defineModule({
|
|
48
54
|
id: "@voyant-travel/auth#team",
|
|
@@ -71,6 +77,7 @@ export const authTeamVoyantModule = defineModule({
|
|
|
71
77
|
resource: "team",
|
|
72
78
|
label: "Team",
|
|
73
79
|
description: "Manage staff team members and their access.",
|
|
80
|
+
wildcard: "explicit-resource",
|
|
74
81
|
actions: [
|
|
75
82
|
{
|
|
76
83
|
action: "read",
|
|
@@ -80,18 +87,231 @@ export const authTeamVoyantModule = defineModule({
|
|
|
80
87
|
{
|
|
81
88
|
action: "write",
|
|
82
89
|
label: "Manage team",
|
|
83
|
-
description: "
|
|
90
|
+
description: "Invite staff and update roles or access.",
|
|
91
|
+
sensitive: true,
|
|
92
|
+
wildcard: "explicit",
|
|
84
93
|
},
|
|
85
94
|
{
|
|
86
95
|
action: "delete",
|
|
87
|
-
label: "
|
|
88
|
-
description: "
|
|
96
|
+
label: "Remove team access",
|
|
97
|
+
description: "Revoke invitations or deactivate staff team members.",
|
|
89
98
|
sensitive: true,
|
|
99
|
+
wildcard: "explicit",
|
|
90
100
|
},
|
|
91
101
|
],
|
|
92
102
|
},
|
|
93
103
|
],
|
|
94
104
|
},
|
|
105
|
+
tools: [
|
|
106
|
+
{
|
|
107
|
+
id: "@voyant-travel/auth#team.tool.get-capabilities",
|
|
108
|
+
name: "get_team_management_capabilities",
|
|
109
|
+
runtime: {
|
|
110
|
+
entry: "@voyant-travel/auth/tools",
|
|
111
|
+
export: "getTeamManagementCapabilitiesTool",
|
|
112
|
+
},
|
|
113
|
+
requiredScopes: ["team:read"],
|
|
114
|
+
context: ["teamManagement"],
|
|
115
|
+
risk: "low",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: "@voyant-travel/auth#team.tool.list-members",
|
|
119
|
+
name: "list_team_members",
|
|
120
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "listTeamMembersTool" },
|
|
121
|
+
requiredScopes: ["team:read"],
|
|
122
|
+
context: ["teamManagement"],
|
|
123
|
+
risk: "high",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: "@voyant-travel/auth#team.tool.list-roles",
|
|
127
|
+
name: "list_team_roles",
|
|
128
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "listTeamRolesTool" },
|
|
129
|
+
requiredScopes: ["team:read"],
|
|
130
|
+
context: ["teamManagement"],
|
|
131
|
+
risk: "low",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "@voyant-travel/auth#team.tool.list-invitations",
|
|
135
|
+
name: "list_team_invitations",
|
|
136
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "listTeamInvitationsTool" },
|
|
137
|
+
requiredScopes: ["team:read"],
|
|
138
|
+
context: ["teamManagement"],
|
|
139
|
+
risk: "high",
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
id: "@voyant-travel/auth#team.tool.invite-member",
|
|
143
|
+
name: "invite_team_member",
|
|
144
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "inviteTeamMemberTool" },
|
|
145
|
+
requiredScopes: ["team:write"],
|
|
146
|
+
context: ["teamManagement"],
|
|
147
|
+
risk: "high",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: "@voyant-travel/auth#team.tool.revoke-invitation",
|
|
151
|
+
name: "revoke_team_invitation",
|
|
152
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "revokeTeamInvitationTool" },
|
|
153
|
+
requiredScopes: ["team:delete"],
|
|
154
|
+
context: ["teamManagement"],
|
|
155
|
+
risk: "high",
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: "@voyant-travel/auth#team.tool.update-member-role",
|
|
159
|
+
name: "update_team_member_role",
|
|
160
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "updateTeamMemberRoleTool" },
|
|
161
|
+
requiredScopes: ["team:write"],
|
|
162
|
+
context: ["teamManagement"],
|
|
163
|
+
risk: "high",
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: "@voyant-travel/auth#team.tool.activate-member",
|
|
167
|
+
name: "activate_team_member",
|
|
168
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "activateTeamMemberTool" },
|
|
169
|
+
requiredScopes: ["team:write"],
|
|
170
|
+
context: ["teamManagement"],
|
|
171
|
+
risk: "high",
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: "@voyant-travel/auth#team.tool.deactivate-member",
|
|
175
|
+
name: "deactivate_team_member",
|
|
176
|
+
runtime: { entry: "@voyant-travel/auth/tools", export: "deactivateTeamMemberTool" },
|
|
177
|
+
requiredScopes: ["team:delete"],
|
|
178
|
+
context: ["teamManagement"],
|
|
179
|
+
risk: "high",
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
actions: [
|
|
183
|
+
{
|
|
184
|
+
id: "@voyant-travel/auth#team.action.get-capabilities",
|
|
185
|
+
version: "v1",
|
|
186
|
+
kind: "read",
|
|
187
|
+
targetType: "team-capabilities",
|
|
188
|
+
resource: "team",
|
|
189
|
+
action: "read",
|
|
190
|
+
requiredScopes: ["team:read"],
|
|
191
|
+
risk: "low",
|
|
192
|
+
ledger: "optional",
|
|
193
|
+
approval: "never",
|
|
194
|
+
allowedActorTypes: ["staff"],
|
|
195
|
+
from: { tools: ["@voyant-travel/auth#team.tool.get-capabilities"] },
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
id: "@voyant-travel/auth#team.action.list-members",
|
|
199
|
+
version: "v1",
|
|
200
|
+
kind: "sensitive-read",
|
|
201
|
+
targetType: "team-member",
|
|
202
|
+
resource: "team",
|
|
203
|
+
action: "read",
|
|
204
|
+
requiredScopes: ["team:read"],
|
|
205
|
+
risk: "high",
|
|
206
|
+
ledger: "required",
|
|
207
|
+
approval: "never",
|
|
208
|
+
allowedActorTypes: ["staff"],
|
|
209
|
+
from: { tools: ["@voyant-travel/auth#team.tool.list-members"] },
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
id: "@voyant-travel/auth#team.action.list-roles",
|
|
213
|
+
version: "v1",
|
|
214
|
+
kind: "read",
|
|
215
|
+
targetType: "team-role",
|
|
216
|
+
resource: "team",
|
|
217
|
+
action: "read",
|
|
218
|
+
requiredScopes: ["team:read"],
|
|
219
|
+
risk: "low",
|
|
220
|
+
ledger: "optional",
|
|
221
|
+
approval: "never",
|
|
222
|
+
allowedActorTypes: ["staff"],
|
|
223
|
+
from: { tools: ["@voyant-travel/auth#team.tool.list-roles"] },
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
id: "@voyant-travel/auth#team.action.list-invitations",
|
|
227
|
+
version: "v1",
|
|
228
|
+
kind: "sensitive-read",
|
|
229
|
+
targetType: "team-invitation",
|
|
230
|
+
resource: "team",
|
|
231
|
+
action: "read",
|
|
232
|
+
requiredScopes: ["team:read"],
|
|
233
|
+
risk: "high",
|
|
234
|
+
ledger: "required",
|
|
235
|
+
approval: "never",
|
|
236
|
+
allowedActorTypes: ["staff"],
|
|
237
|
+
from: { tools: ["@voyant-travel/auth#team.tool.list-invitations"] },
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
id: "@voyant-travel/auth#team.action.invite-member",
|
|
241
|
+
version: "v1",
|
|
242
|
+
kind: "execute",
|
|
243
|
+
targetType: "team-invitation",
|
|
244
|
+
resource: "team",
|
|
245
|
+
action: "write",
|
|
246
|
+
requiredScopes: ["team:write"],
|
|
247
|
+
risk: "high",
|
|
248
|
+
ledger: "required",
|
|
249
|
+
approval: "required",
|
|
250
|
+
reversible: false,
|
|
251
|
+
allowedActorTypes: ["staff"],
|
|
252
|
+
from: { tools: ["@voyant-travel/auth#team.tool.invite-member"] },
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
id: "@voyant-travel/auth#team.action.revoke-invitation",
|
|
256
|
+
version: "v1",
|
|
257
|
+
kind: "execute",
|
|
258
|
+
targetType: "team-invitation",
|
|
259
|
+
resource: "team",
|
|
260
|
+
action: "delete",
|
|
261
|
+
requiredScopes: ["team:delete"],
|
|
262
|
+
risk: "high",
|
|
263
|
+
ledger: "required",
|
|
264
|
+
approval: "required",
|
|
265
|
+
reversible: false,
|
|
266
|
+
allowedActorTypes: ["staff"],
|
|
267
|
+
from: { tools: ["@voyant-travel/auth#team.tool.revoke-invitation"] },
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
id: "@voyant-travel/auth#team.action.update-member-role",
|
|
271
|
+
version: "v1",
|
|
272
|
+
kind: "execute",
|
|
273
|
+
targetType: "team-member",
|
|
274
|
+
resource: "team",
|
|
275
|
+
action: "write",
|
|
276
|
+
requiredScopes: ["team:write"],
|
|
277
|
+
risk: "high",
|
|
278
|
+
ledger: "required",
|
|
279
|
+
approval: "required",
|
|
280
|
+
reversible: true,
|
|
281
|
+
allowedActorTypes: ["staff"],
|
|
282
|
+
from: { tools: ["@voyant-travel/auth#team.tool.update-member-role"] },
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
id: "@voyant-travel/auth#team.action.activate-member",
|
|
286
|
+
version: "v1",
|
|
287
|
+
kind: "execute",
|
|
288
|
+
targetType: "team-member",
|
|
289
|
+
resource: "team",
|
|
290
|
+
action: "write",
|
|
291
|
+
requiredScopes: ["team:write"],
|
|
292
|
+
risk: "high",
|
|
293
|
+
ledger: "required",
|
|
294
|
+
approval: "required",
|
|
295
|
+
reversible: true,
|
|
296
|
+
allowedActorTypes: ["staff"],
|
|
297
|
+
from: { tools: ["@voyant-travel/auth#team.tool.activate-member"] },
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
id: "@voyant-travel/auth#team.action.deactivate-member",
|
|
301
|
+
version: "v1",
|
|
302
|
+
kind: "execute",
|
|
303
|
+
targetType: "team-member",
|
|
304
|
+
resource: "team",
|
|
305
|
+
action: "delete",
|
|
306
|
+
requiredScopes: ["team:delete"],
|
|
307
|
+
risk: "high",
|
|
308
|
+
ledger: "required",
|
|
309
|
+
approval: "required",
|
|
310
|
+
reversible: false,
|
|
311
|
+
allowedActorTypes: ["staff"],
|
|
312
|
+
from: { tools: ["@voyant-travel/auth#team.tool.deactivate-member"] },
|
|
313
|
+
},
|
|
314
|
+
],
|
|
95
315
|
admin: {
|
|
96
316
|
compositionOrder: 5,
|
|
97
317
|
setupSteps: [{ id: "@voyant-travel/auth#setup.team", skippable: true }],
|
|
@@ -122,6 +342,8 @@ export const authTeamVoyantModule = defineModule({
|
|
|
122
342
|
},
|
|
123
343
|
],
|
|
124
344
|
},
|
|
125
|
-
meta: {
|
|
345
|
+
meta: {
|
|
346
|
+
ownership: "package",
|
|
347
|
+
},
|
|
126
348
|
});
|
|
127
349
|
//# sourceMappingURL=voyant.js.map
|
package/dist/voyant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voyant.js","sourceRoot":"","sources":["../src/voyant.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineModule, providePort, requirePort } from \"@voyant-travel/core/project\"\n\nimport { identityAccessRuntimePort } from \"./identity-access-runtime-port.js\"\nimport { teamManagementRuntimePort } from \"./team-management-runtime-port.js\"\n\nexport const authInvitationsVoyantModule = defineModule({\n id: \"@voyant-travel/auth#invitations\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.invitations\",\n provides: { ports: [providePort(identityAccessRuntimePort)] },\n runtimePorts: [requirePort(identityAccessRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#invitations.api.admin\",\n surface: \"admin\",\n mount: \"invitations\",\n resource: \"team\",\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n {\n id: \"@voyant-travel/auth#invitations.api.public\",\n surface: \"public\",\n mount: \"invitations\",\n anonymous: true,\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n ],\n presentations: [\n {\n id: \"@voyant-travel/auth#presentation.local-auth\",\n runtime: {\n entry: \"@voyant-travel/auth-react/local-auth-routes\",\n export: \"createLocalAuthRouteContribution\",\n },\n },\n ],\n meta: { ownership: \"package\" },\n})\n\nexport const authTeamVoyantModule = defineModule({\n id: \"@voyant-travel/auth#team\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.team\",\n provides: { ports: [providePort(teamManagementRuntimePort)] },\n runtimePorts: [requirePort(teamManagementRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#team.api.admin\",\n surface: \"admin\",\n mount: \"team\",\n resource: \"team\",\n openapi: { document: \"team\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createTeamVoyantRuntime\",\n },\n },\n ],\n access: {\n resources: [\n {\n id: \"@voyant-travel/auth#access.team\",\n resource: \"team\",\n label: \"Team\",\n description: \"Manage staff team members and their access.\",\n actions: [\n {\n action: \"read\",\n label: \"View team\",\n description: \"View staff team members.\",\n },\n {\n action: \"write\",\n label: \"Manage team\",\n description: \"Create and update staff team members.\",\n },\n {\n action: \"delete\",\n label: \"Delete team members\",\n description: \"Delete staff team members.\",\n sensitive: true,\n },\n ],\n },\n ],\n },\n admin: {\n compositionOrder: 5,\n setupSteps: [{ id: \"@voyant-travel/auth#setup.team\", skippable: true }],\n runtime: {\n entry: \"@voyant-travel/auth-react/admin\",\n export: \"createSelectedAuthTeamAdminExtension\",\n },\n copy: [\n {\n id: \"@voyant-travel/auth#team.admin.copy\",\n namespace: \"auth.admin.team\",\n fallbackLocale: \"en\",\n runtime: {\n entry: \"@voyant-travel/auth-react/i18n\",\n export: \"authUiMessageDefinitions\",\n },\n },\n ],\n routes: [\n {\n id: \"@voyant-travel/auth#team.admin.route\",\n path: \"/settings/team\",\n requiredScopes: [\"team:read\"],\n runtime: {\n entry: \"@voyant-travel/auth-react/admin\",\n export: \"createSelectedAuthTeamAdminExtension\",\n },\n },\n ],\n },\n meta: { ownership: \"package\" },\n})\n"]}
|
|
1
|
+
{"version":3,"file":"voyant.js","sourceRoot":"","sources":["../src/voyant.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineModule, providePort, requirePort } from \"@voyant-travel/core/project\"\n\nimport { identityAccessRuntimePort } from \"./identity-access-runtime-port.js\"\nimport { teamManagementRuntimePort } from \"./team-management-runtime-port.js\"\n\nexport const authInvitationsVoyantModule = defineModule({\n id: \"@voyant-travel/auth#invitations\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.invitations\",\n provides: { ports: [providePort(identityAccessRuntimePort)] },\n runtimePorts: [requirePort(identityAccessRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#invitations.api.admin\",\n surface: \"admin\",\n mount: \"invitations\",\n resource: \"team\",\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n {\n id: \"@voyant-travel/auth#invitations.api.public\",\n surface: \"public\",\n mount: \"invitations\",\n anonymous: true,\n openapi: { document: \"invitations\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createInvitationsVoyantRuntime\",\n },\n },\n ],\n presentations: [\n {\n id: \"@voyant-travel/auth#presentation.local-auth\",\n runtime: {\n entry: \"@voyant-travel/auth-react/local-auth-routes\",\n export: \"createLocalAuthRouteContribution\",\n },\n },\n ],\n meta: {\n ownership: \"package\",\n agentTools: {\n posture: \"not-applicable\",\n rationale:\n \"This unit owns public invitation acceptance; staff invitation management is exposed by the guarded auth team runtime.\",\n },\n },\n})\n\nexport const authTeamVoyantModule = defineModule({\n id: \"@voyant-travel/auth#team\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.team\",\n provides: { ports: [providePort(teamManagementRuntimePort)] },\n runtimePorts: [requirePort(teamManagementRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#team.api.admin\",\n surface: \"admin\",\n mount: \"team\",\n resource: \"team\",\n openapi: { document: \"team\" },\n transactional: true,\n runtime: {\n entry: \"@voyant-travel/auth/identity-access-graph-runtime\",\n export: \"createTeamVoyantRuntime\",\n },\n },\n ],\n access: {\n resources: [\n {\n id: \"@voyant-travel/auth#access.team\",\n resource: \"team\",\n label: \"Team\",\n description: \"Manage staff team members and their access.\",\n wildcard: \"explicit-resource\",\n actions: [\n {\n action: \"read\",\n label: \"View team\",\n description: \"View staff team members.\",\n },\n {\n action: \"write\",\n label: \"Manage team\",\n description: \"Invite staff and update roles or access.\",\n sensitive: true,\n wildcard: \"explicit\",\n },\n {\n action: \"delete\",\n label: \"Remove team access\",\n description: \"Revoke invitations or deactivate staff team members.\",\n sensitive: true,\n wildcard: \"explicit\",\n },\n ],\n },\n ],\n },\n tools: [\n {\n id: \"@voyant-travel/auth#team.tool.get-capabilities\",\n name: \"get_team_management_capabilities\",\n runtime: {\n entry: \"@voyant-travel/auth/tools\",\n export: \"getTeamManagementCapabilitiesTool\",\n },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"low\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.list-members\",\n name: \"list_team_members\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"listTeamMembersTool\" },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.list-roles\",\n name: \"list_team_roles\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"listTeamRolesTool\" },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"low\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.list-invitations\",\n name: \"list_team_invitations\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"listTeamInvitationsTool\" },\n requiredScopes: [\"team:read\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.invite-member\",\n name: \"invite_team_member\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"inviteTeamMemberTool\" },\n requiredScopes: [\"team:write\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.revoke-invitation\",\n name: \"revoke_team_invitation\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"revokeTeamInvitationTool\" },\n requiredScopes: [\"team:delete\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.update-member-role\",\n name: \"update_team_member_role\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"updateTeamMemberRoleTool\" },\n requiredScopes: [\"team:write\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.activate-member\",\n name: \"activate_team_member\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"activateTeamMemberTool\" },\n requiredScopes: [\"team:write\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n {\n id: \"@voyant-travel/auth#team.tool.deactivate-member\",\n name: \"deactivate_team_member\",\n runtime: { entry: \"@voyant-travel/auth/tools\", export: \"deactivateTeamMemberTool\" },\n requiredScopes: [\"team:delete\"],\n context: [\"teamManagement\"],\n risk: \"high\",\n },\n ],\n actions: [\n {\n id: \"@voyant-travel/auth#team.action.get-capabilities\",\n version: \"v1\",\n kind: \"read\",\n targetType: \"team-capabilities\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"low\",\n ledger: \"optional\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.get-capabilities\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.list-members\",\n version: \"v1\",\n kind: \"sensitive-read\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.list-members\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.list-roles\",\n version: \"v1\",\n kind: \"read\",\n targetType: \"team-role\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"low\",\n ledger: \"optional\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.list-roles\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.list-invitations\",\n version: \"v1\",\n kind: \"sensitive-read\",\n targetType: \"team-invitation\",\n resource: \"team\",\n action: \"read\",\n requiredScopes: [\"team:read\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"never\",\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.list-invitations\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.invite-member\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-invitation\",\n resource: \"team\",\n action: \"write\",\n requiredScopes: [\"team:write\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: false,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.invite-member\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.revoke-invitation\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-invitation\",\n resource: \"team\",\n action: \"delete\",\n requiredScopes: [\"team:delete\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: false,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.revoke-invitation\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.update-member-role\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"write\",\n requiredScopes: [\"team:write\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: true,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.update-member-role\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.activate-member\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"write\",\n requiredScopes: [\"team:write\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: true,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.activate-member\"] },\n },\n {\n id: \"@voyant-travel/auth#team.action.deactivate-member\",\n version: \"v1\",\n kind: \"execute\",\n targetType: \"team-member\",\n resource: \"team\",\n action: \"delete\",\n requiredScopes: [\"team:delete\"],\n risk: \"high\",\n ledger: \"required\",\n approval: \"required\",\n reversible: false,\n allowedActorTypes: [\"staff\"],\n from: { tools: [\"@voyant-travel/auth#team.tool.deactivate-member\"] },\n },\n ],\n admin: {\n compositionOrder: 5,\n setupSteps: [{ id: \"@voyant-travel/auth#setup.team\", skippable: true }],\n runtime: {\n entry: \"@voyant-travel/auth-react/admin\",\n export: \"createSelectedAuthTeamAdminExtension\",\n },\n copy: [\n {\n id: \"@voyant-travel/auth#team.admin.copy\",\n namespace: \"auth.admin.team\",\n fallbackLocale: \"en\",\n runtime: {\n entry: \"@voyant-travel/auth-react/i18n\",\n export: \"authUiMessageDefinitions\",\n },\n },\n ],\n routes: [\n {\n id: \"@voyant-travel/auth#team.admin.route\",\n path: \"/settings/team\",\n requiredScopes: [\"team:read\"],\n runtime: {\n entry: \"@voyant-travel/auth-react/admin\",\n export: \"createSelectedAuthTeamAdminExtension\",\n },\n },\n ],\n },\n meta: {\n ownership: \"package\",\n },\n})\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyant-travel/auth",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.131.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -72,6 +72,11 @@
|
|
|
72
72
|
"import": "./dist/team-management-runtime-port.js",
|
|
73
73
|
"default": "./dist/team-management-runtime-port.js"
|
|
74
74
|
},
|
|
75
|
+
"./tools": {
|
|
76
|
+
"types": "./dist/mcp-runtime.d.ts",
|
|
77
|
+
"import": "./dist/mcp-runtime.js",
|
|
78
|
+
"default": "./dist/mcp-runtime.js"
|
|
79
|
+
},
|
|
75
80
|
"./runtime-contributor": {
|
|
76
81
|
"types": "./dist/runtime-contributor.d.ts",
|
|
77
82
|
"import": "./dist/runtime-contributor.js",
|
|
@@ -100,9 +105,10 @@
|
|
|
100
105
|
"drizzle-orm": "^0.45.2",
|
|
101
106
|
"hono": "^4.12.27",
|
|
102
107
|
"zod": "^4.4.3",
|
|
103
|
-
"@voyant-travel/core": "^0.
|
|
104
|
-
"@voyant-travel/db": "^0.114.
|
|
105
|
-
"@voyant-travel/hono": "^0.127.
|
|
108
|
+
"@voyant-travel/core": "^0.124.0",
|
|
109
|
+
"@voyant-travel/db": "^0.114.7",
|
|
110
|
+
"@voyant-travel/hono": "^0.127.1",
|
|
111
|
+
"@voyant-travel/tools": "^0.3.0",
|
|
106
112
|
"@voyant-travel/types": "^0.109.2",
|
|
107
113
|
"@voyant-travel/utils": "^0.107.1"
|
|
108
114
|
},
|