@skillsmith/mcp-server 0.4.7 → 0.4.8

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 (196) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +20 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/src/__tests__/tool-dispatch.test.d.ts +8 -0
  5. package/dist/src/__tests__/tool-dispatch.test.d.ts.map +1 -0
  6. package/dist/src/__tests__/tool-dispatch.test.js +144 -0
  7. package/dist/src/__tests__/tool-dispatch.test.js.map +1 -0
  8. package/dist/src/index.js +31 -2
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/middleware/license.d.ts +23 -0
  11. package/dist/src/middleware/license.d.ts.map +1 -1
  12. package/dist/src/middleware/license.js +28 -0
  13. package/dist/src/middleware/license.js.map +1 -1
  14. package/dist/src/middleware/toolFeatureMapping.d.ts.map +1 -1
  15. package/dist/src/middleware/toolFeatureMapping.js +4 -1
  16. package/dist/src/middleware/toolFeatureMapping.js.map +1 -1
  17. package/dist/src/supabase-client.d.ts +24 -0
  18. package/dist/src/supabase-client.d.ts.map +1 -0
  19. package/dist/src/supabase-client.js +63 -0
  20. package/dist/src/supabase-client.js.map +1 -0
  21. package/dist/src/tool-dispatch.d.ts.map +1 -1
  22. package/dist/src/tool-dispatch.js +71 -62
  23. package/dist/src/tool-dispatch.js.map +1 -1
  24. package/dist/src/tools/analytics.d.ts +155 -0
  25. package/dist/src/tools/analytics.d.ts.map +1 -0
  26. package/dist/src/tools/analytics.js +321 -0
  27. package/dist/src/tools/analytics.js.map +1 -0
  28. package/dist/src/tools/analytics.service.d.ts +46 -0
  29. package/dist/src/tools/analytics.service.d.ts.map +1 -0
  30. package/dist/src/tools/analytics.service.js +69 -0
  31. package/dist/src/tools/analytics.service.js.map +1 -0
  32. package/dist/src/tools/analytics.service.test.d.ts +6 -0
  33. package/dist/src/tools/analytics.service.test.d.ts.map +1 -0
  34. package/dist/src/tools/analytics.service.test.js +151 -0
  35. package/dist/src/tools/analytics.service.test.js.map +1 -0
  36. package/dist/src/tools/analytics.stub.d.ts +27 -0
  37. package/dist/src/tools/analytics.stub.d.ts.map +1 -0
  38. package/dist/src/tools/analytics.stub.js +200 -0
  39. package/dist/src/tools/analytics.stub.js.map +1 -0
  40. package/dist/src/tools/analytics.test.d.ts +6 -0
  41. package/dist/src/tools/analytics.test.d.ts.map +1 -0
  42. package/dist/src/tools/analytics.test.js +146 -0
  43. package/dist/src/tools/analytics.test.js.map +1 -0
  44. package/dist/src/tools/analyze.d.ts.map +1 -1
  45. package/dist/src/tools/analyze.js +7 -1
  46. package/dist/src/tools/analyze.js.map +1 -1
  47. package/dist/src/tools/audit-tools.d.ts +172 -0
  48. package/dist/src/tools/audit-tools.d.ts.map +1 -0
  49. package/dist/src/tools/audit-tools.js +187 -0
  50. package/dist/src/tools/audit-tools.js.map +1 -0
  51. package/dist/src/tools/audit-tools.test.d.ts +10 -0
  52. package/dist/src/tools/audit-tools.test.d.ts.map +1 -0
  53. package/dist/src/tools/audit-tools.test.js +147 -0
  54. package/dist/src/tools/audit-tools.test.js.map +1 -0
  55. package/dist/src/tools/compliance-tools.d.ts +103 -0
  56. package/dist/src/tools/compliance-tools.d.ts.map +1 -0
  57. package/dist/src/tools/compliance-tools.js +257 -0
  58. package/dist/src/tools/compliance-tools.js.map +1 -0
  59. package/dist/src/tools/compliance-tools.service.d.ts +19 -0
  60. package/dist/src/tools/compliance-tools.service.d.ts.map +1 -0
  61. package/dist/src/tools/compliance-tools.service.js +107 -0
  62. package/dist/src/tools/compliance-tools.service.js.map +1 -0
  63. package/dist/src/tools/compliance-tools.service.test.d.ts +6 -0
  64. package/dist/src/tools/compliance-tools.service.test.d.ts.map +1 -0
  65. package/dist/src/tools/compliance-tools.service.test.js +140 -0
  66. package/dist/src/tools/compliance-tools.service.test.js.map +1 -0
  67. package/dist/src/tools/compliance-tools.test.d.ts +6 -0
  68. package/dist/src/tools/compliance-tools.test.d.ts.map +1 -0
  69. package/dist/src/tools/compliance-tools.test.js +136 -0
  70. package/dist/src/tools/compliance-tools.test.js.map +1 -0
  71. package/dist/src/tools/get-skill.d.ts.map +1 -1
  72. package/dist/src/tools/get-skill.js +24 -1
  73. package/dist/src/tools/get-skill.js.map +1 -1
  74. package/dist/src/tools/index-local.d.ts.map +1 -1
  75. package/dist/src/tools/index-local.js +4 -0
  76. package/dist/src/tools/index-local.js.map +1 -1
  77. package/dist/src/tools/install.d.ts.map +1 -1
  78. package/dist/src/tools/install.js +2 -0
  79. package/dist/src/tools/install.js.map +1 -1
  80. package/dist/src/tools/install.tool.d.ts +4 -0
  81. package/dist/src/tools/install.tool.d.ts.map +1 -1
  82. package/dist/src/tools/install.tool.js +4 -0
  83. package/dist/src/tools/install.tool.js.map +1 -1
  84. package/dist/src/tools/install.types.d.ts +4 -0
  85. package/dist/src/tools/install.types.d.ts.map +1 -1
  86. package/dist/src/tools/install.types.js +5 -0
  87. package/dist/src/tools/install.types.js.map +1 -1
  88. package/dist/src/tools/integration-tools.d.ts +210 -0
  89. package/dist/src/tools/integration-tools.d.ts.map +1 -0
  90. package/dist/src/tools/integration-tools.js +264 -0
  91. package/dist/src/tools/integration-tools.js.map +1 -0
  92. package/dist/src/tools/integration-tools.service.d.ts +54 -0
  93. package/dist/src/tools/integration-tools.service.d.ts.map +1 -0
  94. package/dist/src/tools/integration-tools.service.js +299 -0
  95. package/dist/src/tools/integration-tools.service.js.map +1 -0
  96. package/dist/src/tools/integration-tools.service.test.d.ts +8 -0
  97. package/dist/src/tools/integration-tools.service.test.d.ts.map +1 -0
  98. package/dist/src/tools/integration-tools.service.test.js +401 -0
  99. package/dist/src/tools/integration-tools.service.test.js.map +1 -0
  100. package/dist/src/tools/integration-tools.stub.d.ts +13 -0
  101. package/dist/src/tools/integration-tools.stub.d.ts.map +1 -0
  102. package/dist/src/tools/integration-tools.stub.js +133 -0
  103. package/dist/src/tools/integration-tools.stub.js.map +1 -0
  104. package/dist/src/tools/integration-tools.test.d.ts +6 -0
  105. package/dist/src/tools/integration-tools.test.d.ts.map +1 -0
  106. package/dist/src/tools/integration-tools.test.js +259 -0
  107. package/dist/src/tools/integration-tools.test.js.map +1 -0
  108. package/dist/src/tools/publish-private.d.ts +60 -0
  109. package/dist/src/tools/publish-private.d.ts.map +1 -0
  110. package/dist/src/tools/publish-private.js +85 -0
  111. package/dist/src/tools/publish-private.js.map +1 -0
  112. package/dist/src/tools/publish-private.test.d.ts +6 -0
  113. package/dist/src/tools/publish-private.test.d.ts.map +1 -0
  114. package/dist/src/tools/publish-private.test.js +118 -0
  115. package/dist/src/tools/publish-private.test.js.map +1 -0
  116. package/dist/src/tools/publish.types.d.ts +2 -2
  117. package/dist/src/tools/rbac-tools.d.ts +180 -0
  118. package/dist/src/tools/rbac-tools.d.ts.map +1 -0
  119. package/dist/src/tools/rbac-tools.js +300 -0
  120. package/dist/src/tools/rbac-tools.js.map +1 -0
  121. package/dist/src/tools/rbac-tools.test.d.ts +6 -0
  122. package/dist/src/tools/rbac-tools.test.d.ts.map +1 -0
  123. package/dist/src/tools/rbac-tools.test.js +299 -0
  124. package/dist/src/tools/rbac-tools.test.js.map +1 -0
  125. package/dist/src/tools/rbac-tools.types.d.ts +70 -0
  126. package/dist/src/tools/rbac-tools.types.d.ts.map +1 -0
  127. package/dist/src/tools/rbac-tools.types.js +119 -0
  128. package/dist/src/tools/rbac-tools.types.js.map +1 -0
  129. package/dist/src/tools/recommend.helpers.d.ts.map +1 -1
  130. package/dist/src/tools/recommend.helpers.js +2 -1
  131. package/dist/src/tools/recommend.helpers.js.map +1 -1
  132. package/dist/src/tools/recommend.js +3 -3
  133. package/dist/src/tools/recommend.js.map +1 -1
  134. package/dist/src/tools/registry-tools.d.ts +133 -0
  135. package/dist/src/tools/registry-tools.d.ts.map +1 -0
  136. package/dist/src/tools/registry-tools.js +246 -0
  137. package/dist/src/tools/registry-tools.js.map +1 -0
  138. package/dist/src/tools/registry-tools.test.d.ts +6 -0
  139. package/dist/src/tools/registry-tools.test.d.ts.map +1 -0
  140. package/dist/src/tools/registry-tools.test.js +167 -0
  141. package/dist/src/tools/registry-tools.test.js.map +1 -0
  142. package/dist/src/tools/search.formatter.d.ts.map +1 -1
  143. package/dist/src/tools/search.formatter.js +11 -1
  144. package/dist/src/tools/search.formatter.js.map +1 -1
  145. package/dist/src/tools/skill-audit.d.ts +3 -3
  146. package/dist/src/tools/skill-audit.d.ts.map +1 -1
  147. package/dist/src/tools/skill-audit.js +5 -5
  148. package/dist/src/tools/skill-audit.js.map +1 -1
  149. package/dist/src/tools/skill-audit.test.js +5 -5
  150. package/dist/src/tools/skill-audit.test.js.map +1 -1
  151. package/dist/src/tools/skill-rescan.d.ts.map +1 -1
  152. package/dist/src/tools/skill-rescan.js +2 -3
  153. package/dist/src/tools/skill-rescan.js.map +1 -1
  154. package/dist/src/tools/skill-rescan.test.js +2 -2
  155. package/dist/src/tools/skill-rescan.test.js.map +1 -1
  156. package/dist/src/tools/sso-tools.d.ts +136 -0
  157. package/dist/src/tools/sso-tools.d.ts.map +1 -0
  158. package/dist/src/tools/sso-tools.js +214 -0
  159. package/dist/src/tools/sso-tools.js.map +1 -0
  160. package/dist/src/tools/sso-tools.test.d.ts +6 -0
  161. package/dist/src/tools/sso-tools.test.d.ts.map +1 -0
  162. package/dist/src/tools/sso-tools.test.js +167 -0
  163. package/dist/src/tools/sso-tools.test.js.map +1 -0
  164. package/dist/src/tools/suggest.d.ts.map +1 -1
  165. package/dist/src/tools/suggest.js +7 -1
  166. package/dist/src/tools/suggest.js.map +1 -1
  167. package/dist/src/tools/team-workspace.d.ts +179 -0
  168. package/dist/src/tools/team-workspace.d.ts.map +1 -0
  169. package/dist/src/tools/team-workspace.js +243 -0
  170. package/dist/src/tools/team-workspace.js.map +1 -0
  171. package/dist/src/tools/team-workspace.stub.d.ts +13 -0
  172. package/dist/src/tools/team-workspace.stub.d.ts.map +1 -0
  173. package/dist/src/tools/team-workspace.stub.js +76 -0
  174. package/dist/src/tools/team-workspace.stub.js.map +1 -0
  175. package/dist/src/tools/team-workspace.test.d.ts +7 -0
  176. package/dist/src/tools/team-workspace.test.d.ts.map +1 -0
  177. package/dist/src/tools/team-workspace.test.js +273 -0
  178. package/dist/src/tools/team-workspace.test.js.map +1 -0
  179. package/dist/src/utils/team-resolver.d.ts +20 -0
  180. package/dist/src/utils/team-resolver.d.ts.map +1 -0
  181. package/dist/src/utils/team-resolver.js +52 -0
  182. package/dist/src/utils/team-resolver.js.map +1 -0
  183. package/dist/src/utils/url-validator.d.ts +24 -0
  184. package/dist/src/utils/url-validator.d.ts.map +1 -0
  185. package/dist/src/utils/url-validator.js +59 -0
  186. package/dist/src/utils/url-validator.js.map +1 -0
  187. package/dist/tests/integration/recommend.integration.test.js +1 -1
  188. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  189. package/dist/tests/recommend.test.js +1 -1
  190. package/dist/tests/recommend.test.js.map +1 -1
  191. package/package.json +3 -3
  192. package/server.json +2 -2
  193. package/dist/vitest.config.d.ts +0 -6
  194. package/dist/vitest.config.d.ts.map +0 -1
  195. package/dist/vitest.config.js +0 -23
  196. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,180 @@
1
+ /**
2
+ * @fileoverview Enterprise RBAC MCP tools for role management
3
+ * @module @skillsmith/mcp-server/tools/rbac-tools
4
+ * @see SMI-3901: RBAC MCP Tools
5
+ *
6
+ * RBAC enforcement is at the Supabase API layer (server-side), NOT local MCP.
7
+ * These MCP tools are a management interface only — they configure roles,
8
+ * assignments, and policies that the server enforces.
9
+ *
10
+ * Default role hierarchy: admin > manager > member > viewer.
11
+ *
12
+ * Tier gate: Enterprise (rbac feature flag).
13
+ */
14
+ import { z } from 'zod';
15
+ import type { ToolContext } from '../context.js';
16
+ import type { RBACService, RbacManageResult, RbacAssignRoleResult, RbacCreatePolicyResult } from './rbac-tools.types.js';
17
+ export type { RBACRole, RBACAssignment, RBACPolicy, RBACService, RbacManageResult, RbacAssignRoleResult, RbacCreatePolicyResult, } from './rbac-tools.types.js';
18
+ export { createStubRBACService } from './rbac-tools.types.js';
19
+ export declare const rbacManageInputSchema: z.ZodObject<{
20
+ action: z.ZodEnum<["create_role", "list_roles", "delete_role", "get_role"]>;
21
+ name: z.ZodOptional<z.ZodString>;
22
+ roleId: z.ZodOptional<z.ZodString>;
23
+ permissions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
24
+ description: z.ZodOptional<z.ZodString>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ action: "create_role" | "list_roles" | "delete_role" | "get_role";
27
+ name?: string | undefined;
28
+ description?: string | undefined;
29
+ roleId?: string | undefined;
30
+ permissions?: string[] | undefined;
31
+ }, {
32
+ action: "create_role" | "list_roles" | "delete_role" | "get_role";
33
+ name?: string | undefined;
34
+ description?: string | undefined;
35
+ roleId?: string | undefined;
36
+ permissions?: string[] | undefined;
37
+ }>;
38
+ export type RbacManageInput = z.infer<typeof rbacManageInputSchema>;
39
+ export declare const rbacAssignRoleInputSchema: z.ZodObject<{
40
+ action: z.ZodEnum<["assign", "revoke", "list_assignments"]>;
41
+ userId: z.ZodOptional<z.ZodString>;
42
+ roleId: z.ZodOptional<z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ action: "assign" | "revoke" | "list_assignments";
45
+ roleId?: string | undefined;
46
+ userId?: string | undefined;
47
+ }, {
48
+ action: "assign" | "revoke" | "list_assignments";
49
+ roleId?: string | undefined;
50
+ userId?: string | undefined;
51
+ }>;
52
+ export type RbacAssignRoleInput = z.infer<typeof rbacAssignRoleInputSchema>;
53
+ export declare const rbacCreatePolicyInputSchema: z.ZodObject<{
54
+ action: z.ZodEnum<["create", "list", "delete", "get"]>;
55
+ name: z.ZodOptional<z.ZodString>;
56
+ policyId: z.ZodOptional<z.ZodString>;
57
+ effect: z.ZodOptional<z.ZodEnum<["allow", "deny"]>>;
58
+ resources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
59
+ actions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ action: "get" | "create" | "list" | "delete";
62
+ name?: string | undefined;
63
+ resources?: string[] | undefined;
64
+ policyId?: string | undefined;
65
+ effect?: "allow" | "deny" | undefined;
66
+ actions?: string[] | undefined;
67
+ }, {
68
+ action: "get" | "create" | "list" | "delete";
69
+ name?: string | undefined;
70
+ resources?: string[] | undefined;
71
+ policyId?: string | undefined;
72
+ effect?: "allow" | "deny" | undefined;
73
+ actions?: string[] | undefined;
74
+ }>;
75
+ export type RbacCreatePolicyInput = z.infer<typeof rbacCreatePolicyInputSchema>;
76
+ export declare const rbacManageToolSchema: {
77
+ name: "rbac_manage";
78
+ description: string;
79
+ inputSchema: {
80
+ type: "object";
81
+ properties: {
82
+ action: {
83
+ type: string;
84
+ enum: string[];
85
+ description: string;
86
+ };
87
+ name: {
88
+ type: string;
89
+ description: string;
90
+ };
91
+ roleId: {
92
+ type: string;
93
+ description: string;
94
+ };
95
+ permissions: {
96
+ type: string;
97
+ items: {
98
+ type: string;
99
+ };
100
+ description: string;
101
+ };
102
+ description: {
103
+ type: string;
104
+ description: string;
105
+ };
106
+ };
107
+ required: string[];
108
+ };
109
+ };
110
+ export declare const rbacAssignRoleToolSchema: {
111
+ name: "rbac_assign_role";
112
+ description: string;
113
+ inputSchema: {
114
+ type: "object";
115
+ properties: {
116
+ action: {
117
+ type: string;
118
+ enum: string[];
119
+ description: string;
120
+ };
121
+ userId: {
122
+ type: string;
123
+ description: string;
124
+ };
125
+ roleId: {
126
+ type: string;
127
+ description: string;
128
+ };
129
+ };
130
+ required: string[];
131
+ };
132
+ };
133
+ export declare const rbacCreatePolicyToolSchema: {
134
+ name: "rbac_create_policy";
135
+ description: string;
136
+ inputSchema: {
137
+ type: "object";
138
+ properties: {
139
+ action: {
140
+ type: string;
141
+ enum: string[];
142
+ description: string;
143
+ };
144
+ name: {
145
+ type: string;
146
+ description: string;
147
+ };
148
+ policyId: {
149
+ type: string;
150
+ description: string;
151
+ };
152
+ effect: {
153
+ type: string;
154
+ enum: string[];
155
+ description: string;
156
+ };
157
+ resources: {
158
+ type: string;
159
+ items: {
160
+ type: string;
161
+ };
162
+ description: string;
163
+ };
164
+ actions: {
165
+ type: string;
166
+ items: {
167
+ type: string;
168
+ };
169
+ description: string;
170
+ };
171
+ };
172
+ required: string[];
173
+ };
174
+ };
175
+ /** Replace the RBAC service implementation (for testing or production swap) */
176
+ export declare function setRBACService(svc: RBACService): void;
177
+ export declare function executeRbacManage(input: RbacManageInput, _context: ToolContext): Promise<RbacManageResult>;
178
+ export declare function executeRbacAssignRole(input: RbacAssignRoleInput, _context: ToolContext): Promise<RbacAssignRoleResult>;
179
+ export declare function executeRbacCreatePolicy(input: RbacCreatePolicyInput, _context: ToolContext): Promise<RbacCreatePolicyResult>;
180
+ //# sourceMappingURL=rbac-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/rbac-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAI9B,YAAY,EACV,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAM7D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAShC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;EAOtC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAM/E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BhC,CAAA;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;CAkBpC,CAAA;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCtC,CAAA;AAKD,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAErD;AAMD,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAwD3B;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAyD/B;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,sBAAsB,CAAC,CAgEjC"}
@@ -0,0 +1,300 @@
1
+ /**
2
+ * @fileoverview Enterprise RBAC MCP tools for role management
3
+ * @module @skillsmith/mcp-server/tools/rbac-tools
4
+ * @see SMI-3901: RBAC MCP Tools
5
+ *
6
+ * RBAC enforcement is at the Supabase API layer (server-side), NOT local MCP.
7
+ * These MCP tools are a management interface only — they configure roles,
8
+ * assignments, and policies that the server enforces.
9
+ *
10
+ * Default role hierarchy: admin > manager > member > viewer.
11
+ *
12
+ * Tier gate: Enterprise (rbac feature flag).
13
+ */
14
+ import { z } from 'zod';
15
+ import { isSupabaseConfigured } from '../supabase-client.js';
16
+ import { createStubRBACService } from './rbac-tools.types.js';
17
+ export { createStubRBACService } from './rbac-tools.types.js';
18
+ // ============================================================================
19
+ // Input schemas
20
+ // ============================================================================
21
+ export const rbacManageInputSchema = z.object({
22
+ action: z.enum(['create_role', 'list_roles', 'delete_role', 'get_role']),
23
+ name: z.string().min(1).max(64).optional().describe('Role name (required for create_role)'),
24
+ roleId: z.string().optional().describe('Role identifier (required for get_role/delete_role)'),
25
+ permissions: z
26
+ .array(z.string())
27
+ .optional()
28
+ .describe('Permission strings (optional for create_role)'),
29
+ description: z.string().max(256).optional().describe('Role description'),
30
+ });
31
+ export const rbacAssignRoleInputSchema = z.object({
32
+ action: z.enum(['assign', 'revoke', 'list_assignments']),
33
+ userId: z.string().optional().describe('User identifier (required for assign/revoke)'),
34
+ roleId: z.string().optional().describe('Role identifier (required for assign/revoke)'),
35
+ });
36
+ export const rbacCreatePolicyInputSchema = z.object({
37
+ action: z.enum(['create', 'list', 'delete', 'get']),
38
+ name: z.string().min(1).max(128).optional().describe('Policy name (required for create)'),
39
+ policyId: z.string().optional().describe('Policy identifier (required for get/delete)'),
40
+ effect: z.enum(['allow', 'deny']).optional().describe('Policy effect (required for create)'),
41
+ resources: z.array(z.string()).optional().describe('Resource patterns (required for create)'),
42
+ actions: z.array(z.string()).optional().describe('Action patterns (required for create)'),
43
+ });
44
+ // ============================================================================
45
+ // Tool schemas for MCP registration
46
+ // ============================================================================
47
+ export const rbacManageToolSchema = {
48
+ name: 'rbac_manage',
49
+ description: 'Manage RBAC roles: create_role, list_roles, get_role, delete_role. ' +
50
+ 'Default hierarchy: admin > manager > member > viewer. ' +
51
+ 'Requires Enterprise tier (rbac feature).',
52
+ inputSchema: {
53
+ type: 'object',
54
+ properties: {
55
+ action: {
56
+ type: 'string',
57
+ enum: ['create_role', 'list_roles', 'delete_role', 'get_role'],
58
+ description: 'RBAC role operation',
59
+ },
60
+ name: { type: 'string', description: 'Role name (required for create_role)' },
61
+ roleId: {
62
+ type: 'string',
63
+ description: 'Role ID (required for get_role/delete_role)',
64
+ },
65
+ permissions: {
66
+ type: 'array',
67
+ items: { type: 'string' },
68
+ description: 'Permission strings (optional for create_role)',
69
+ },
70
+ description: { type: 'string', description: 'Role description' },
71
+ },
72
+ required: ['action'],
73
+ },
74
+ };
75
+ export const rbacAssignRoleToolSchema = {
76
+ name: 'rbac_assign_role',
77
+ description: 'Assign or revoke roles for users, or list current assignments. ' +
78
+ 'Requires Enterprise tier (rbac feature).',
79
+ inputSchema: {
80
+ type: 'object',
81
+ properties: {
82
+ action: {
83
+ type: 'string',
84
+ enum: ['assign', 'revoke', 'list_assignments'],
85
+ description: 'Assignment operation',
86
+ },
87
+ userId: { type: 'string', description: 'User ID (required for assign/revoke)' },
88
+ roleId: { type: 'string', description: 'Role ID (required for assign/revoke)' },
89
+ },
90
+ required: ['action'],
91
+ },
92
+ };
93
+ export const rbacCreatePolicyToolSchema = {
94
+ name: 'rbac_create_policy',
95
+ description: 'Create, list, get, or delete RBAC policies that define access rules. ' +
96
+ 'Requires Enterprise tier (rbac feature).',
97
+ inputSchema: {
98
+ type: 'object',
99
+ properties: {
100
+ action: {
101
+ type: 'string',
102
+ enum: ['create', 'list', 'delete', 'get'],
103
+ description: 'Policy operation',
104
+ },
105
+ name: { type: 'string', description: 'Policy name (required for create)' },
106
+ policyId: { type: 'string', description: 'Policy ID (required for get/delete)' },
107
+ effect: {
108
+ type: 'string',
109
+ enum: ['allow', 'deny'],
110
+ description: 'Policy effect (required for create)',
111
+ },
112
+ resources: {
113
+ type: 'array',
114
+ items: { type: 'string' },
115
+ description: 'Resource patterns (required for create)',
116
+ },
117
+ actions: {
118
+ type: 'array',
119
+ items: { type: 'string' },
120
+ description: 'Action patterns (required for create)',
121
+ },
122
+ },
123
+ required: ['action'],
124
+ },
125
+ };
126
+ // Module-level singleton
127
+ let service = createStubRBACService();
128
+ /** Replace the RBAC service implementation (for testing or production swap) */
129
+ export function setRBACService(svc) {
130
+ service = svc;
131
+ }
132
+ // ============================================================================
133
+ // Handlers
134
+ // ============================================================================
135
+ export async function executeRbacManage(input, _context) {
136
+ const dataSource = isSupabaseConfigured() ? 'live' : 'stub';
137
+ switch (input.action) {
138
+ case 'create_role': {
139
+ if (!input.name)
140
+ return { success: false, dataSource, error: 'name is required for action "create_role".' };
141
+ const role = await service.createRole(input.name, input.permissions, input.description);
142
+ return {
143
+ success: true,
144
+ dataSource,
145
+ role,
146
+ message: `## Role Created\n\n` +
147
+ `- **Name:** ${role.name}\n` +
148
+ `- **ID:** ${role.id}\n` +
149
+ `- **Permissions:** ${role.permissions.length ? role.permissions.join(', ') : 'none'}\n` +
150
+ (role.description ? `- **Description:** ${role.description}\n` : ''),
151
+ };
152
+ }
153
+ case 'list_roles': {
154
+ const roles = await service.listRoles();
155
+ const lines = roles.map((r) => `| ${r.name} | ${r.id} | ${r.hierarchy} | ${r.permissions.join(', ')} |`);
156
+ return {
157
+ success: true,
158
+ dataSource,
159
+ roles,
160
+ message: `## RBAC Roles (${roles.length})\n\n` +
161
+ `| Name | ID | Hierarchy | Permissions |\n` +
162
+ `|------|-----|-----------|-------------|\n` +
163
+ lines.join('\n'),
164
+ };
165
+ }
166
+ case 'get_role': {
167
+ if (!input.roleId)
168
+ return { success: false, dataSource, error: 'roleId is required for action "get_role".' };
169
+ const role = await service.getRole(input.roleId);
170
+ if (!role)
171
+ return { success: false, dataSource, error: `Role "${input.roleId}" not found.` };
172
+ return { success: true, dataSource, role };
173
+ }
174
+ case 'delete_role': {
175
+ if (!input.roleId)
176
+ return { success: false, dataSource, error: 'roleId is required for action "delete_role".' };
177
+ const deleted = await service.deleteRole(input.roleId);
178
+ if (!deleted)
179
+ return {
180
+ success: false,
181
+ dataSource,
182
+ error: `Role "${input.roleId}" not found or is a built-in role.`,
183
+ };
184
+ return { success: true, dataSource, message: `Role "${input.roleId}" deleted.` };
185
+ }
186
+ }
187
+ }
188
+ export async function executeRbacAssignRole(input, _context) {
189
+ const dataSource = isSupabaseConfigured() ? 'live' : 'stub';
190
+ switch (input.action) {
191
+ case 'assign': {
192
+ if (!input.userId || !input.roleId)
193
+ return {
194
+ success: false,
195
+ dataSource,
196
+ error: 'userId and roleId are required for action "assign".',
197
+ };
198
+ const assignment = await service.assignRole(input.userId, input.roleId);
199
+ return {
200
+ success: true,
201
+ dataSource,
202
+ assignment,
203
+ message: `## Role Assigned\n\n` +
204
+ `- **User:** ${assignment.userId}\n` +
205
+ `- **Role:** ${assignment.roleName} (${assignment.roleId})\n` +
206
+ `- **Assigned by:** ${assignment.assignedBy}`,
207
+ };
208
+ }
209
+ case 'revoke': {
210
+ if (!input.userId || !input.roleId)
211
+ return {
212
+ success: false,
213
+ dataSource,
214
+ error: 'userId and roleId are required for action "revoke".',
215
+ };
216
+ const revoked = await service.revokeRole(input.userId, input.roleId);
217
+ if (!revoked)
218
+ return {
219
+ success: false,
220
+ dataSource,
221
+ error: `No assignment found for user "${input.userId}" with role "${input.roleId}".`,
222
+ };
223
+ return {
224
+ success: true,
225
+ dataSource,
226
+ message: `Role "${input.roleId}" revoked from user "${input.userId}".`,
227
+ };
228
+ }
229
+ case 'list_assignments': {
230
+ const assignments = await service.listAssignments();
231
+ return {
232
+ success: true,
233
+ dataSource,
234
+ assignments,
235
+ message: `## Role Assignments (${assignments.length})\n\n` +
236
+ (assignments.length === 0
237
+ ? 'No role assignments found.'
238
+ : assignments.map((a) => `- ${a.userId}: ${a.roleName} (${a.roleId})`).join('\n')),
239
+ };
240
+ }
241
+ }
242
+ }
243
+ export async function executeRbacCreatePolicy(input, _context) {
244
+ const dataSource = isSupabaseConfigured() ? 'live' : 'stub';
245
+ switch (input.action) {
246
+ case 'create': {
247
+ if (!input.name)
248
+ return { success: false, dataSource, error: 'name is required for action "create".' };
249
+ if (!input.effect)
250
+ return { success: false, dataSource, error: 'effect is required for action "create".' };
251
+ if (!input.resources?.length)
252
+ return { success: false, dataSource, error: 'resources is required for action "create".' };
253
+ if (!input.actions?.length)
254
+ return { success: false, dataSource, error: 'actions is required for action "create".' };
255
+ const policy = await service.createPolicy(input.name, input.effect, input.resources, input.actions);
256
+ return {
257
+ success: true,
258
+ dataSource,
259
+ policy,
260
+ message: `## Policy Created\n\n` +
261
+ `- **Name:** ${policy.name}\n` +
262
+ `- **ID:** ${policy.id}\n` +
263
+ `- **Effect:** ${policy.effect}\n` +
264
+ `- **Resources:** ${policy.resources.join(', ')}\n` +
265
+ `- **Actions:** ${policy.actions.join(', ')}`,
266
+ };
267
+ }
268
+ case 'list': {
269
+ const policies = await service.listPolicies();
270
+ return {
271
+ success: true,
272
+ dataSource,
273
+ policies,
274
+ message: `## RBAC Policies (${policies.length})\n\n` +
275
+ (policies.length === 0
276
+ ? 'No policies defined.'
277
+ : policies
278
+ .map((p) => `- **${p.name}** (${p.id}): ${p.effect} ${p.resources.join(', ')}`)
279
+ .join('\n')),
280
+ };
281
+ }
282
+ case 'get': {
283
+ if (!input.policyId)
284
+ return { success: false, dataSource, error: 'policyId is required for action "get".' };
285
+ const policy = await service.getPolicy(input.policyId);
286
+ if (!policy)
287
+ return { success: false, dataSource, error: `Policy "${input.policyId}" not found.` };
288
+ return { success: true, dataSource, policy };
289
+ }
290
+ case 'delete': {
291
+ if (!input.policyId)
292
+ return { success: false, dataSource, error: 'policyId is required for action "delete".' };
293
+ const deleted = await service.deletePolicy(input.policyId);
294
+ if (!deleted)
295
+ return { success: false, dataSource, error: `Policy "${input.policyId}" not found.` };
296
+ return { success: true, dataSource, message: `Policy "${input.policyId}" deleted.` };
297
+ }
298
+ }
299
+ }
300
+ //# sourceMappingURL=rbac-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac-tools.js","sourceRoot":"","sources":["../../../src/tools/rbac-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Tests for RBAC MCP tools
3
+ * @see SMI-3901: RBAC MCP Tools
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=rbac-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rbac-tools.test.d.ts","sourceRoot":"","sources":["../../../src/tools/rbac-tools.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}