@voyant-travel/auth 0.128.3 → 0.130.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 (42) hide show
  1. package/README.md +14 -0
  2. package/dist/cloud-broker/members.d.ts +9 -0
  3. package/dist/cloud-broker/members.js +10 -0
  4. package/dist/cloud-broker/members.js.map +1 -1
  5. package/dist/cloud-broker.d.ts +1 -1
  6. package/dist/cloud-broker.js +1 -1
  7. package/dist/cloud-broker.js.map +1 -1
  8. package/dist/identity-access-graph-runtime.js +2 -1
  9. package/dist/identity-access-graph-runtime.js.map +1 -1
  10. package/dist/invitations-routes.js +4 -0
  11. package/dist/invitations-routes.js.map +1 -1
  12. package/dist/local-member-access.d.ts +15 -0
  13. package/dist/local-member-access.js +119 -0
  14. package/dist/local-member-access.js.map +1 -0
  15. package/dist/node-runtime.d.ts +1 -0
  16. package/dist/node-runtime.js +2 -7
  17. package/dist/node-runtime.js.map +1 -1
  18. package/dist/runtime-contributor.js +23 -2
  19. package/dist/runtime-contributor.js.map +1 -1
  20. package/dist/server.d.ts +10 -6
  21. package/dist/server.js +6 -3
  22. package/dist/server.js.map +1 -1
  23. package/dist/team-management-cloud-adapter.d.ts +7 -0
  24. package/dist/team-management-cloud-adapter.js +146 -0
  25. package/dist/team-management-cloud-adapter.js.map +1 -0
  26. package/dist/team-management-local-adapter.d.ts +8 -0
  27. package/dist/team-management-local-adapter.js +285 -0
  28. package/dist/team-management-local-adapter.js.map +1 -0
  29. package/dist/team-management-policy.d.ts +27 -0
  30. package/dist/team-management-policy.js +109 -0
  31. package/dist/team-management-policy.js.map +1 -0
  32. package/dist/team-management-runtime-port.d.ts +60 -0
  33. package/dist/team-management-runtime-port.js +25 -0
  34. package/dist/team-management-runtime-port.js.map +1 -0
  35. package/dist/team-routes.d.ts +3 -3
  36. package/dist/team-routes.js +89 -138
  37. package/dist/team-routes.js.map +1 -1
  38. package/dist/voyant.js +67 -3
  39. package/dist/voyant.js.map +1 -1
  40. package/openapi/admin/team.json +42 -74
  41. package/package.json +10 -5
  42. package/dist/tsconfig.typecheck.tsbuildinfo +0 -1
package/dist/voyant.js CHANGED
@@ -1,15 +1,18 @@
1
- import { defineModule, requirePort } from "@voyant-travel/core/project";
1
+ import { defineModule, providePort, requirePort } from "@voyant-travel/core/project";
2
2
  import { identityAccessRuntimePort } from "./identity-access-runtime-port.js";
3
+ import { teamManagementRuntimePort } from "./team-management-runtime-port.js";
3
4
  export const authInvitationsVoyantModule = defineModule({
4
5
  id: "@voyant-travel/auth#invitations",
5
6
  packageName: "@voyant-travel/auth",
6
7
  localId: "auth.invitations",
8
+ provides: { ports: [providePort(identityAccessRuntimePort)] },
7
9
  runtimePorts: [requirePort(identityAccessRuntimePort)],
8
10
  api: [
9
11
  {
10
12
  id: "@voyant-travel/auth#invitations.api.admin",
11
13
  surface: "admin",
12
14
  mount: "invitations",
15
+ resource: "team",
13
16
  openapi: { document: "invitations" },
14
17
  transactional: true,
15
18
  runtime: {
@@ -30,19 +33,31 @@ export const authInvitationsVoyantModule = defineModule({
30
33
  },
31
34
  },
32
35
  ],
36
+ presentations: [
37
+ {
38
+ id: "@voyant-travel/auth#presentation.local-auth",
39
+ runtime: {
40
+ entry: "@voyant-travel/auth-react/local-auth-routes",
41
+ export: "createLocalAuthRouteContribution",
42
+ },
43
+ },
44
+ ],
33
45
  meta: { ownership: "package" },
34
46
  });
35
47
  export const authTeamVoyantModule = defineModule({
36
48
  id: "@voyant-travel/auth#team",
37
49
  packageName: "@voyant-travel/auth",
38
50
  localId: "auth.team",
39
- runtimePorts: [requirePort(identityAccessRuntimePort)],
51
+ provides: { ports: [providePort(teamManagementRuntimePort)] },
52
+ runtimePorts: [requirePort(teamManagementRuntimePort)],
40
53
  api: [
41
54
  {
42
55
  id: "@voyant-travel/auth#team.api.admin",
43
56
  surface: "admin",
44
57
  mount: "team",
58
+ resource: "team",
45
59
  openapi: { document: "team" },
60
+ transactional: true,
46
61
  runtime: {
47
62
  entry: "@voyant-travel/auth/identity-access-graph-runtime",
48
63
  export: "createTeamVoyantRuntime",
@@ -54,7 +69,56 @@ export const authTeamVoyantModule = defineModule({
54
69
  {
55
70
  id: "@voyant-travel/auth#access.team",
56
71
  resource: "team",
57
- actions: ["read", "write", "delete"],
72
+ label: "Team",
73
+ description: "Manage staff team members and their access.",
74
+ actions: [
75
+ {
76
+ action: "read",
77
+ label: "View team",
78
+ description: "View staff team members.",
79
+ },
80
+ {
81
+ action: "write",
82
+ label: "Manage team",
83
+ description: "Create and update staff team members.",
84
+ },
85
+ {
86
+ action: "delete",
87
+ label: "Delete team members",
88
+ description: "Delete staff team members.",
89
+ sensitive: true,
90
+ },
91
+ ],
92
+ },
93
+ ],
94
+ },
95
+ admin: {
96
+ compositionOrder: 5,
97
+ setupSteps: [{ id: "@voyant-travel/auth#setup.team", skippable: true }],
98
+ runtime: {
99
+ entry: "@voyant-travel/auth-react/admin",
100
+ export: "createSelectedAuthTeamAdminExtension",
101
+ },
102
+ copy: [
103
+ {
104
+ id: "@voyant-travel/auth#team.admin.copy",
105
+ namespace: "auth.admin.team",
106
+ fallbackLocale: "en",
107
+ runtime: {
108
+ entry: "@voyant-travel/auth-react/i18n",
109
+ export: "authUiMessageDefinitions",
110
+ },
111
+ },
112
+ ],
113
+ routes: [
114
+ {
115
+ id: "@voyant-travel/auth#team.admin.route",
116
+ path: "/settings/team",
117
+ requiredScopes: ["team:read"],
118
+ runtime: {
119
+ entry: "@voyant-travel/auth-react/admin",
120
+ export: "createSelectedAuthTeamAdminExtension",
121
+ },
58
122
  },
59
123
  ],
60
124
  },
@@ -1 +1 @@
1
- {"version":3,"file":"voyant.js","sourceRoot":"","sources":["../src/voyant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAE7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,YAAY,CAAC;IACtD,EAAE,EAAE,iCAAiC;IACrC,WAAW,EAAE,qBAAqB;IAClC,OAAO,EAAE,kBAAkB;IAC3B,YAAY,EAAE,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACtD,GAAG,EAAE;QACH;YACE,EAAE,EAAE,2CAA2C;YAC/C,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;YACpC,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACP,KAAK,EAAE,mDAAmD;gBAC1D,MAAM,EAAE,gCAAgC;aACzC;SACF;QACD;YACE,EAAE,EAAE,4CAA4C;YAChD,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;YACpC,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACP,KAAK,EAAE,mDAAmD;gBAC1D,MAAM,EAAE,gCAAgC;aACzC;SACF;KACF;IACD,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;CAC/B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;IAC/C,EAAE,EAAE,0BAA0B;IAC9B,WAAW,EAAE,qBAAqB;IAClC,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACtD,GAAG,EAAE;QACH;YACE,EAAE,EAAE,oCAAoC;YACxC,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC7B,OAAO,EAAE;gBACP,KAAK,EAAE,mDAAmD;gBAC1D,MAAM,EAAE,yBAAyB;aAClC;SACF;KACF;IACD,MAAM,EAAE;QACN,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,iCAAiC;gBACrC,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;aACrC;SACF;KACF;IACD,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;CAC/B,CAAC,CAAA","sourcesContent":["import { defineModule, requirePort } from \"@voyant-travel/core/project\"\n\nimport { identityAccessRuntimePort } from \"./identity-access-runtime-port.js\"\n\nexport const authInvitationsVoyantModule = defineModule({\n id: \"@voyant-travel/auth#invitations\",\n packageName: \"@voyant-travel/auth\",\n localId: \"auth.invitations\",\n runtimePorts: [requirePort(identityAccessRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#invitations.api.admin\",\n surface: \"admin\",\n mount: \"invitations\",\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 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 runtimePorts: [requirePort(identityAccessRuntimePort)],\n api: [\n {\n id: \"@voyant-travel/auth#team.api.admin\",\n surface: \"admin\",\n mount: \"team\",\n openapi: { document: \"team\" },\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 actions: [\"read\", \"write\", \"delete\"],\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: { 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"]}
@@ -5,46 +5,39 @@
5
5
  "version": "1.0.0"
6
6
  },
7
7
  "paths": {
8
+ "/v1/admin/team/capabilities": {
9
+ "get": {
10
+ "operationId": "getTeamManagementCapabilities",
11
+ "tags": ["Team"],
12
+ "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
13
+ "responses": { "200": { "description": "Team-management capabilities." } }
14
+ }
15
+ },
8
16
  "/v1/admin/team/members": {
9
17
  "get": {
10
18
  "operationId": "listTeamMembers",
11
- "summary": "List team members",
12
19
  "tags": ["Team"],
13
20
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
14
- "responses": {
15
- "200": { "description": "The deployment team members." },
16
- "401": { "description": "The caller is not authenticated." },
17
- "404": { "description": "Cloud team management is unavailable." }
18
- }
21
+ "responses": { "200": { "description": "Team roster." } }
19
22
  }
20
23
  },
21
24
  "/v1/admin/team/roles": {
22
25
  "get": {
23
26
  "operationId": "listTeamRoles",
24
- "summary": "List team roles",
25
27
  "tags": ["Team"],
26
28
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
27
- "responses": {
28
- "200": { "description": "The available team roles." },
29
- "401": { "description": "The caller is not authenticated." },
30
- "404": { "description": "Cloud team management is unavailable." }
31
- }
29
+ "responses": { "200": { "description": "Available team roles." } }
32
30
  }
33
31
  },
34
32
  "/v1/admin/team/invitations": {
35
33
  "get": {
36
34
  "operationId": "listTeamInvitations",
37
- "summary": "List team invitations",
38
35
  "tags": ["Team"],
39
36
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
40
- "responses": {
41
- "200": { "description": "The outstanding team invitations." },
42
- "401": { "description": "The caller is not authenticated." }
43
- }
37
+ "responses": { "200": { "description": "Team invitations." } }
44
38
  },
45
39
  "post": {
46
40
  "operationId": "createTeamInvitation",
47
- "summary": "Invite a team member",
48
41
  "tags": ["Team"],
49
42
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
50
43
  "requestBody": {
@@ -53,34 +46,22 @@
53
46
  "application/json": {
54
47
  "schema": {
55
48
  "type": "object",
56
- "required": ["email"],
49
+ "required": ["email", "roleId"],
57
50
  "properties": {
58
51
  "email": { "type": "string", "format": "email" },
59
- "roleSlug": {
60
- "type": ["string", "null"],
61
- "minLength": 1,
62
- "maxLength": 120
63
- },
64
- "expiresInDays": {
65
- "type": "integer",
66
- "minimum": 1,
67
- "maximum": 30
68
- }
52
+ "roleId": { "type": "string", "minLength": 1, "maxLength": 120 },
53
+ "expiresInDays": { "type": "integer", "minimum": 1, "maximum": 30 }
69
54
  }
70
55
  }
71
56
  }
72
57
  }
73
58
  },
74
- "responses": {
75
- "201": { "description": "The created team invitation." },
76
- "401": { "description": "The caller is not authenticated." }
77
- }
59
+ "responses": { "201": { "description": "Created team invitation." } }
78
60
  }
79
61
  },
80
62
  "/v1/admin/team/invitations/{invitationId}": {
81
63
  "delete": {
82
64
  "operationId": "revokeTeamInvitation",
83
- "summary": "Revoke a team invitation",
84
65
  "tags": ["Team"],
85
66
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
86
67
  "parameters": [
@@ -91,21 +72,17 @@
91
72
  "schema": { "type": "string" }
92
73
  }
93
74
  ],
94
- "responses": {
95
- "204": { "description": "The invitation was revoked." },
96
- "401": { "description": "The caller is not authenticated." }
97
- }
75
+ "responses": { "204": { "description": "Invitation revoked." } }
98
76
  }
99
77
  },
100
- "/v1/admin/team/members/{membershipId}/access": {
78
+ "/v1/admin/team/members/{memberId}/role": {
101
79
  "put": {
102
- "operationId": "setTeamMemberAccess",
103
- "summary": "Set team member access",
80
+ "operationId": "updateTeamMemberRole",
104
81
  "tags": ["Team"],
105
82
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
106
83
  "parameters": [
107
84
  {
108
- "name": "membershipId",
85
+ "name": "memberId",
109
86
  "in": "path",
110
87
  "required": true,
111
88
  "schema": { "type": "string" }
@@ -117,54 +94,45 @@
117
94
  "application/json": {
118
95
  "schema": {
119
96
  "type": "object",
120
- "required": ["hasAccess"],
121
- "properties": { "hasAccess": { "type": "boolean" } }
97
+ "required": ["roleId"],
98
+ "properties": { "roleId": { "type": "string", "minLength": 1 } }
122
99
  }
123
100
  }
124
101
  }
125
102
  },
126
- "responses": {
127
- "200": { "description": "The updated team member." },
128
- "401": { "description": "The caller is not authenticated." }
129
- }
103
+ "responses": { "200": { "description": "Updated team member." } }
130
104
  }
131
105
  },
132
- "/v1/admin/team/members/{membershipId}/permissions": {
133
- "put": {
134
- "operationId": "setTeamMemberPermissions",
135
- "summary": "Set team member permissions",
106
+ "/v1/admin/team/members/{memberId}": {
107
+ "delete": {
108
+ "operationId": "deactivateTeamMember",
136
109
  "tags": ["Team"],
137
110
  "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
138
111
  "parameters": [
139
112
  {
140
- "name": "membershipId",
113
+ "name": "memberId",
141
114
  "in": "path",
142
115
  "required": true,
143
116
  "schema": { "type": "string" }
144
117
  }
145
118
  ],
146
- "requestBody": {
147
- "required": true,
148
- "content": {
149
- "application/json": {
150
- "schema": {
151
- "type": "object",
152
- "required": ["permissions"],
153
- "properties": {
154
- "permissions": {
155
- "type": "array",
156
- "maxItems": 200,
157
- "items": { "type": "string", "minLength": 1, "maxLength": 120 }
158
- }
159
- }
160
- }
161
- }
119
+ "responses": { "200": { "description": "Deactivated team member." } }
120
+ }
121
+ },
122
+ "/v1/admin/team/members/{memberId}/activation": {
123
+ "put": {
124
+ "operationId": "activateTeamMember",
125
+ "tags": ["Team"],
126
+ "x-voyant-api-id": "@voyant-travel/auth#team.api.admin",
127
+ "parameters": [
128
+ {
129
+ "name": "memberId",
130
+ "in": "path",
131
+ "required": true,
132
+ "schema": { "type": "string" }
162
133
  }
163
- },
164
- "responses": {
165
- "200": { "description": "The updated team member." },
166
- "401": { "description": "The caller is not authenticated." }
167
- }
134
+ ],
135
+ "responses": { "200": { "description": "Activated team member." } }
168
136
  }
169
137
  }
170
138
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyant-travel/auth",
3
- "version": "0.128.3",
3
+ "version": "0.130.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -67,6 +67,11 @@
67
67
  "import": "./dist/identity-access-graph-runtime.js",
68
68
  "default": "./dist/identity-access-graph-runtime.js"
69
69
  },
70
+ "./team-management-runtime-port": {
71
+ "types": "./dist/team-management-runtime-port.d.ts",
72
+ "import": "./dist/team-management-runtime-port.js",
73
+ "default": "./dist/team-management-runtime-port.js"
74
+ },
70
75
  "./runtime-contributor": {
71
76
  "types": "./dist/runtime-contributor.d.ts",
72
77
  "import": "./dist/runtime-contributor.js",
@@ -95,10 +100,10 @@
95
100
  "drizzle-orm": "^0.45.2",
96
101
  "hono": "^4.12.27",
97
102
  "zod": "^4.4.3",
98
- "@voyant-travel/core": "^0.122.1",
99
- "@voyant-travel/db": "^0.114.4",
100
- "@voyant-travel/hono": "^0.126.3",
101
- "@voyant-travel/types": "^0.109.1",
103
+ "@voyant-travel/core": "^0.123.0",
104
+ "@voyant-travel/db": "^0.114.6",
105
+ "@voyant-travel/hono": "^0.127.0",
106
+ "@voyant-travel/types": "^0.109.2",
102
107
  "@voyant-travel/utils": "^0.107.1"
103
108
  },
104
109
  "devDependencies": {