@skillsmith/mcp-server 0.4.6 → 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 +26 -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/recommend.types.d.ts +3 -3
  135. package/dist/src/tools/registry-tools.d.ts +133 -0
  136. package/dist/src/tools/registry-tools.d.ts.map +1 -0
  137. package/dist/src/tools/registry-tools.js +246 -0
  138. package/dist/src/tools/registry-tools.js.map +1 -0
  139. package/dist/src/tools/registry-tools.test.d.ts +6 -0
  140. package/dist/src/tools/registry-tools.test.d.ts.map +1 -0
  141. package/dist/src/tools/registry-tools.test.js +167 -0
  142. package/dist/src/tools/registry-tools.test.js.map +1 -0
  143. package/dist/src/tools/search.formatter.d.ts.map +1 -1
  144. package/dist/src/tools/search.formatter.js +11 -1
  145. package/dist/src/tools/search.formatter.js.map +1 -1
  146. package/dist/src/tools/skill-audit.d.ts +3 -3
  147. package/dist/src/tools/skill-audit.d.ts.map +1 -1
  148. package/dist/src/tools/skill-audit.js +5 -5
  149. package/dist/src/tools/skill-audit.js.map +1 -1
  150. package/dist/src/tools/skill-audit.test.js +5 -5
  151. package/dist/src/tools/skill-audit.test.js.map +1 -1
  152. package/dist/src/tools/skill-diff.d.ts +2 -2
  153. package/dist/src/tools/skill-rescan.d.ts.map +1 -1
  154. package/dist/src/tools/skill-rescan.js +2 -3
  155. package/dist/src/tools/skill-rescan.js.map +1 -1
  156. package/dist/src/tools/skill-rescan.test.js +2 -2
  157. package/dist/src/tools/skill-rescan.test.js.map +1 -1
  158. package/dist/src/tools/sso-tools.d.ts +136 -0
  159. package/dist/src/tools/sso-tools.d.ts.map +1 -0
  160. package/dist/src/tools/sso-tools.js +214 -0
  161. package/dist/src/tools/sso-tools.js.map +1 -0
  162. package/dist/src/tools/sso-tools.test.d.ts +6 -0
  163. package/dist/src/tools/sso-tools.test.d.ts.map +1 -0
  164. package/dist/src/tools/sso-tools.test.js +167 -0
  165. package/dist/src/tools/sso-tools.test.js.map +1 -0
  166. package/dist/src/tools/suggest.d.ts +4 -4
  167. package/dist/src/tools/suggest.d.ts.map +1 -1
  168. package/dist/src/tools/suggest.js +7 -1
  169. package/dist/src/tools/suggest.js.map +1 -1
  170. package/dist/src/tools/team-workspace.d.ts +179 -0
  171. package/dist/src/tools/team-workspace.d.ts.map +1 -0
  172. package/dist/src/tools/team-workspace.js +243 -0
  173. package/dist/src/tools/team-workspace.js.map +1 -0
  174. package/dist/src/tools/team-workspace.stub.d.ts +13 -0
  175. package/dist/src/tools/team-workspace.stub.d.ts.map +1 -0
  176. package/dist/src/tools/team-workspace.stub.js +76 -0
  177. package/dist/src/tools/team-workspace.stub.js.map +1 -0
  178. package/dist/src/tools/team-workspace.test.d.ts +7 -0
  179. package/dist/src/tools/team-workspace.test.d.ts.map +1 -0
  180. package/dist/src/tools/team-workspace.test.js +273 -0
  181. package/dist/src/tools/team-workspace.test.js.map +1 -0
  182. package/dist/src/tools/uninstall.d.ts +1 -1
  183. package/dist/src/utils/team-resolver.d.ts +20 -0
  184. package/dist/src/utils/team-resolver.d.ts.map +1 -0
  185. package/dist/src/utils/team-resolver.js +52 -0
  186. package/dist/src/utils/team-resolver.js.map +1 -0
  187. package/dist/src/utils/url-validator.d.ts +24 -0
  188. package/dist/src/utils/url-validator.d.ts.map +1 -0
  189. package/dist/src/utils/url-validator.js +59 -0
  190. package/dist/src/utils/url-validator.js.map +1 -0
  191. package/dist/tests/integration/recommend.integration.test.js +1 -1
  192. package/dist/tests/integration/recommend.integration.test.js.map +1 -1
  193. package/dist/tests/recommend.test.js +1 -1
  194. package/dist/tests/recommend.test.js.map +1 -1
  195. package/package.json +3 -3
  196. package/server.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../../src/tools/recommend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../../src/tools/recommend.ts"],"names":[],"mappings":"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"}
@@ -30,14 +30,14 @@ export declare const recommendInputSchema: z.ZodObject<{
30
30
  detect_overlap: boolean;
31
31
  min_similarity: number;
32
32
  project_context?: string | undefined;
33
- role?: "testing" | "documentation" | "security" | "workflow" | "code-quality" | "development-partner" | undefined;
33
+ role?: "testing" | "documentation" | "security" | "code-quality" | "workflow" | "development-partner" | undefined;
34
34
  }, {
35
35
  installed_skills?: string[] | undefined;
36
- project_context?: string | undefined;
37
36
  limit?: number | undefined;
37
+ project_context?: string | undefined;
38
38
  detect_overlap?: boolean | undefined;
39
39
  min_similarity?: number | undefined;
40
- role?: "testing" | "documentation" | "security" | "workflow" | "code-quality" | "development-partner" | undefined;
40
+ role?: "testing" | "documentation" | "security" | "code-quality" | "workflow" | "development-partner" | undefined;
41
41
  }>;
42
42
  /**
43
43
  * Input type (before parsing, allows optional fields)
@@ -0,0 +1,133 @@
1
+ /**
2
+ * @fileoverview Private registry MCP tools for enterprise skill management
3
+ * @module @skillsmith/mcp-server/tools/registry-tools
4
+ * @see SMI-3902: Private Registry MCP Tools
5
+ * @see ADR-115: Private Registry Architecture
6
+ *
7
+ * Enables enterprise teams to publish and manage skills in a private registry
8
+ * scoped to their organization. Metadata lives in Supabase with team-scoped
9
+ * RLS; tarballs are stored in S3-compatible object storage.
10
+ *
11
+ * Tier gate: Enterprise (private_registry feature flag).
12
+ */
13
+ import { z } from 'zod';
14
+ import type { ToolContext } from '../context.js';
15
+ export declare const privateRegistryPublishInputSchema: z.ZodObject<{
16
+ skillId: z.ZodString;
17
+ version: z.ZodString;
18
+ description: z.ZodOptional<z.ZodString>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ skillId: string;
21
+ version: string;
22
+ description?: string | undefined;
23
+ }, {
24
+ skillId: string;
25
+ version: string;
26
+ description?: string | undefined;
27
+ }>;
28
+ export type PrivateRegistryPublishInput = z.infer<typeof privateRegistryPublishInputSchema>;
29
+ export declare const privateRegistryManageInputSchema: z.ZodObject<{
30
+ action: z.ZodEnum<["list", "get", "deprecate", "undeprecate"]>;
31
+ skillId: z.ZodOptional<z.ZodString>;
32
+ version: z.ZodOptional<z.ZodString>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ action: "get" | "list" | "deprecate" | "undeprecate";
35
+ skillId?: string | undefined;
36
+ version?: string | undefined;
37
+ }, {
38
+ action: "get" | "list" | "deprecate" | "undeprecate";
39
+ skillId?: string | undefined;
40
+ version?: string | undefined;
41
+ }>;
42
+ export type PrivateRegistryManageInput = z.infer<typeof privateRegistryManageInputSchema>;
43
+ export declare const privateRegistryPublishToolSchema: {
44
+ name: "private_registry_publish";
45
+ description: string;
46
+ inputSchema: {
47
+ type: "object";
48
+ properties: {
49
+ skillId: {
50
+ type: string;
51
+ description: string;
52
+ };
53
+ version: {
54
+ type: string;
55
+ description: string;
56
+ };
57
+ description: {
58
+ type: string;
59
+ description: string;
60
+ };
61
+ };
62
+ required: string[];
63
+ };
64
+ };
65
+ export declare const privateRegistryManageToolSchema: {
66
+ name: "private_registry_manage";
67
+ description: string;
68
+ inputSchema: {
69
+ type: "object";
70
+ properties: {
71
+ action: {
72
+ type: string;
73
+ enum: string[];
74
+ description: string;
75
+ };
76
+ skillId: {
77
+ type: string;
78
+ description: string;
79
+ };
80
+ version: {
81
+ type: string;
82
+ description: string;
83
+ };
84
+ };
85
+ required: string[];
86
+ };
87
+ };
88
+ export interface RegistrySkill {
89
+ skillId: string;
90
+ version: string;
91
+ description: string | null;
92
+ deprecated: boolean;
93
+ publishedAt: string;
94
+ publishedBy: string;
95
+ registryUrl: string;
96
+ }
97
+ export interface PrivateRegistryPublishResult {
98
+ success: boolean;
99
+ dataSource: 'stub' | 'live';
100
+ skill?: RegistrySkill;
101
+ message?: string;
102
+ error?: string;
103
+ }
104
+ export interface PrivateRegistryManageResult {
105
+ success: boolean;
106
+ dataSource: 'stub' | 'live';
107
+ skills?: RegistrySkill[];
108
+ skill?: RegistrySkill;
109
+ message?: string;
110
+ error?: string;
111
+ }
112
+ export interface PrivateRegistryService {
113
+ publish(teamId: string, skillId: string, version: string, description?: string): Promise<RegistrySkill>;
114
+ list(teamId: string, version?: string): Promise<RegistrySkill[]>;
115
+ get(teamId: string, skillId: string, version?: string): Promise<RegistrySkill | null>;
116
+ deprecate(teamId: string, skillId: string): Promise<boolean>;
117
+ undeprecate(teamId: string, skillId: string): Promise<boolean>;
118
+ }
119
+ /** @internal Exported for testing */
120
+ export declare function createStubRegistryService(): PrivateRegistryService;
121
+ /** Replace the registry service implementation (for testing or production swap) */
122
+ export declare function setPrivateRegistryService(svc: PrivateRegistryService): void;
123
+ /** Get the current registry service instance */
124
+ export declare function getPrivateRegistryService(): PrivateRegistryService;
125
+ /**
126
+ * Execute a private_registry_publish operation.
127
+ */
128
+ export declare function executePrivateRegistryPublish(input: PrivateRegistryPublishInput, _context: ToolContext): Promise<PrivateRegistryPublishResult>;
129
+ /**
130
+ * Execute a private_registry_manage operation.
131
+ */
132
+ export declare function executePrivateRegistryManage(input: PrivateRegistryManageInput, _context: ToolContext): Promise<PrivateRegistryManageResult>;
133
+ //# sourceMappingURL=registry-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/registry-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAOhD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;EAU5C,CAAA;AAEF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAA;AAE3F,eAAO,MAAM,gCAAgC;;;;;;;;;;;;EAQ3C,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAMzF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;CAwB5C,CAAA;AAED,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;CAwB3C,CAAA;AAMD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAMD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CACL,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAAA;IACzB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAChE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IACrF,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC/D;AAMD,qCAAqC;AACrC,wBAAgB,yBAAyB,IAAI,sBAAsB,CA6ClE;AAKD,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,sBAAsB,GAAG,IAAI,CAE3E;AAED,gDAAgD;AAChD,wBAAgB,yBAAyB,IAAI,sBAAsB,CAElE;AAcD;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,2BAA2B,EAClC,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,4BAA4B,CAAC,CAavC;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,2BAA2B,CAAC,CAwEtC"}
@@ -0,0 +1,246 @@
1
+ /**
2
+ * @fileoverview Private registry MCP tools for enterprise skill management
3
+ * @module @skillsmith/mcp-server/tools/registry-tools
4
+ * @see SMI-3902: Private Registry MCP Tools
5
+ * @see ADR-115: Private Registry Architecture
6
+ *
7
+ * Enables enterprise teams to publish and manage skills in a private registry
8
+ * scoped to their organization. Metadata lives in Supabase with team-scoped
9
+ * RLS; tarballs are stored in S3-compatible object storage.
10
+ *
11
+ * Tier gate: Enterprise (private_registry feature flag).
12
+ */
13
+ import { z } from 'zod';
14
+ import { isSupabaseConfigured } from '../supabase-client.js';
15
+ // ============================================================================
16
+ // Input schemas
17
+ // ============================================================================
18
+ export const privateRegistryPublishInputSchema = z.object({
19
+ skillId: z
20
+ .string()
21
+ .regex(/^[^/]+\/[^/]+$/, 'Must be author/name format')
22
+ .describe('Skill identifier in author/name format'),
23
+ version: z
24
+ .string()
25
+ .regex(/^\d+\.\d+\.\d+/, 'Must be a valid semver version')
26
+ .describe('Semver version to publish'),
27
+ description: z.string().max(500).optional().describe('Optional skill description'),
28
+ });
29
+ export const privateRegistryManageInputSchema = z.object({
30
+ action: z.enum(['list', 'get', 'deprecate', 'undeprecate']),
31
+ skillId: z
32
+ .string()
33
+ .regex(/^[^/]+\/[^/]+$/, 'Must be author/name format')
34
+ .optional()
35
+ .describe('Skill identifier (required for get/deprecate/undeprecate)'),
36
+ version: z.string().optional().describe('Optional version filter'),
37
+ });
38
+ // ============================================================================
39
+ // Tool schemas for MCP registration
40
+ // ============================================================================
41
+ export const privateRegistryPublishToolSchema = {
42
+ name: 'private_registry_publish',
43
+ description: "Publish a skill to your organization's private registry. " +
44
+ 'Requires Enterprise tier (private_registry feature). ' +
45
+ 'Skills are scoped to your team namespace.',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ skillId: {
50
+ type: 'string',
51
+ description: 'Skill ID in author/name format',
52
+ },
53
+ version: {
54
+ type: 'string',
55
+ description: 'Semver version to publish',
56
+ },
57
+ description: {
58
+ type: 'string',
59
+ description: 'Optional skill description',
60
+ },
61
+ },
62
+ required: ['skillId', 'version'],
63
+ },
64
+ };
65
+ export const privateRegistryManageToolSchema = {
66
+ name: 'private_registry_manage',
67
+ description: 'Manage skills in your private registry (list, get, deprecate, undeprecate). ' +
68
+ 'Requires Enterprise tier (private_registry feature).',
69
+ inputSchema: {
70
+ type: 'object',
71
+ properties: {
72
+ action: {
73
+ type: 'string',
74
+ enum: ['list', 'get', 'deprecate', 'undeprecate'],
75
+ description: 'Registry operation to perform',
76
+ },
77
+ skillId: {
78
+ type: 'string',
79
+ description: 'Skill ID in author/name format (required for get/deprecate/undeprecate)',
80
+ },
81
+ version: {
82
+ type: 'string',
83
+ description: 'Optional version filter',
84
+ },
85
+ },
86
+ required: ['action'],
87
+ },
88
+ };
89
+ // ============================================================================
90
+ // Stub service (returns realistic mock data)
91
+ // ============================================================================
92
+ /** @internal Exported for testing */
93
+ export function createStubRegistryService() {
94
+ const registry = new Map();
95
+ return {
96
+ async publish(teamId, skillId, version, description) {
97
+ const skill = {
98
+ skillId,
99
+ version,
100
+ description: description ?? null,
101
+ deprecated: false,
102
+ publishedAt: new Date().toISOString(),
103
+ publishedBy: 'current-user',
104
+ registryUrl: `https://registry.skillsmith.app/private/${teamId}/${skillId}@${version}`,
105
+ };
106
+ registry.set(skillId, skill);
107
+ return skill;
108
+ },
109
+ async list(_teamId, version) {
110
+ const all = [...registry.values()];
111
+ if (version)
112
+ return all.filter((s) => s.version === version);
113
+ return all;
114
+ },
115
+ async get(_teamId, skillId, version) {
116
+ const skill = registry.get(skillId);
117
+ if (!skill)
118
+ return null;
119
+ if (version && skill.version !== version)
120
+ return null;
121
+ return skill;
122
+ },
123
+ async deprecate(_teamId, skillId) {
124
+ const skill = registry.get(skillId);
125
+ if (!skill)
126
+ return false;
127
+ skill.deprecated = true;
128
+ return true;
129
+ },
130
+ async undeprecate(_teamId, skillId) {
131
+ const skill = registry.get(skillId);
132
+ if (!skill)
133
+ return false;
134
+ skill.deprecated = false;
135
+ return true;
136
+ },
137
+ };
138
+ }
139
+ // Module-level singleton
140
+ let service = createStubRegistryService();
141
+ /** Replace the registry service implementation (for testing or production swap) */
142
+ export function setPrivateRegistryService(svc) {
143
+ service = svc;
144
+ }
145
+ /** Get the current registry service instance */
146
+ export function getPrivateRegistryService() {
147
+ return service;
148
+ }
149
+ // ============================================================================
150
+ // Handlers
151
+ // ============================================================================
152
+ /**
153
+ * Resolve team ID from license key.
154
+ * TODO: Replace with Supabase RPC when Supabase integration is ready.
155
+ */
156
+ async function resolveTeamId() {
157
+ return 'team_stub_00000000-0000-0000-0000-000000000000';
158
+ }
159
+ /**
160
+ * Execute a private_registry_publish operation.
161
+ */
162
+ export async function executePrivateRegistryPublish(input, _context) {
163
+ const dataSource = isSupabaseConfigured() ? 'live' : 'stub';
164
+ const teamId = await resolveTeamId();
165
+ const skill = await service.publish(teamId, input.skillId, input.version, input.description);
166
+ return {
167
+ success: true,
168
+ dataSource,
169
+ skill,
170
+ message: `Published ${input.skillId}@${input.version} to private registry.\n` +
171
+ `Registry URL: ${skill.registryUrl}`,
172
+ };
173
+ }
174
+ /**
175
+ * Execute a private_registry_manage operation.
176
+ */
177
+ export async function executePrivateRegistryManage(input, _context) {
178
+ const dataSource = isSupabaseConfigured() ? 'live' : 'stub';
179
+ const teamId = await resolveTeamId();
180
+ switch (input.action) {
181
+ case 'list': {
182
+ const skills = await service.list(teamId, input.version);
183
+ return {
184
+ success: true,
185
+ dataSource,
186
+ skills,
187
+ message: `Found ${skills.length} skill(s) in private registry.`,
188
+ };
189
+ }
190
+ case 'get': {
191
+ if (!input.skillId) {
192
+ return { success: false, dataSource, error: 'skillId is required for action "get".' };
193
+ }
194
+ const skill = await service.get(teamId, input.skillId, input.version);
195
+ if (!skill) {
196
+ return {
197
+ success: false,
198
+ dataSource,
199
+ error: `Skill "${input.skillId}" not found in private registry.`,
200
+ };
201
+ }
202
+ return { success: true, dataSource, skill };
203
+ }
204
+ case 'deprecate': {
205
+ if (!input.skillId) {
206
+ return { success: false, dataSource, error: 'skillId is required for action "deprecate".' };
207
+ }
208
+ const deprecated = await service.deprecate(teamId, input.skillId);
209
+ if (!deprecated) {
210
+ return {
211
+ success: false,
212
+ dataSource,
213
+ error: `Skill "${input.skillId}" not found in private registry.`,
214
+ };
215
+ }
216
+ return {
217
+ success: true,
218
+ dataSource,
219
+ message: `Skill "${input.skillId}" has been deprecated. It will no longer appear in search results.`,
220
+ };
221
+ }
222
+ case 'undeprecate': {
223
+ if (!input.skillId) {
224
+ return {
225
+ success: false,
226
+ dataSource,
227
+ error: 'skillId is required for action "undeprecate".',
228
+ };
229
+ }
230
+ const undeprecated = await service.undeprecate(teamId, input.skillId);
231
+ if (!undeprecated) {
232
+ return {
233
+ success: false,
234
+ dataSource,
235
+ error: `Skill "${input.skillId}" not found in private registry.`,
236
+ };
237
+ }
238
+ return {
239
+ success: true,
240
+ dataSource,
241
+ message: `Skill "${input.skillId}" has been undeprecated and is now visible in search results.`,
242
+ };
243
+ }
244
+ }
245
+ }
246
+ //# sourceMappingURL=registry-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-tools.js","sourceRoot":"","sources":["../../../src/tools/registry-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Tests for private registry MCP tools
3
+ * @see SMI-3902: Private Registry MCP Tools
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=registry-tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-tools.test.d.ts","sourceRoot":"","sources":["../../../src/tools/registry-tools.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * @fileoverview Tests for private registry MCP tools
3
+ * @see SMI-3902: Private Registry MCP Tools
4
+ */
5
+ import { describe, it, expect, beforeEach } from 'vitest';
6
+ import { privateRegistryPublishInputSchema, privateRegistryManageInputSchema, executePrivateRegistryPublish, executePrivateRegistryManage, createStubRegistryService, setPrivateRegistryService, } from './registry-tools.js';
7
+ const mockContext = {};
8
+ describe('registry-tools', () => {
9
+ beforeEach(() => {
10
+ // Reset to fresh stub service before each test
11
+ setPrivateRegistryService(createStubRegistryService());
12
+ });
13
+ // ==========================================================================
14
+ // Schema validation
15
+ // ==========================================================================
16
+ describe('privateRegistryPublishInputSchema', () => {
17
+ it('should accept valid publish input', () => {
18
+ const input = { skillId: 'myteam/my-skill', version: '1.0.0' };
19
+ const parsed = privateRegistryPublishInputSchema.parse(input);
20
+ expect(parsed.skillId).toBe('myteam/my-skill');
21
+ expect(parsed.version).toBe('1.0.0');
22
+ });
23
+ it('should accept publish input with description', () => {
24
+ const input = {
25
+ skillId: 'myteam/my-skill',
26
+ version: '1.0.0',
27
+ description: 'A useful skill',
28
+ };
29
+ const parsed = privateRegistryPublishInputSchema.parse(input);
30
+ expect(parsed.description).toBe('A useful skill');
31
+ });
32
+ it('should reject invalid skill ID format', () => {
33
+ expect(() => privateRegistryPublishInputSchema.parse({ skillId: 'no-slash', version: '1.0.0' })).toThrow();
34
+ });
35
+ it('should reject invalid semver', () => {
36
+ expect(() => privateRegistryPublishInputSchema.parse({
37
+ skillId: 'myteam/my-skill',
38
+ version: 'not-semver',
39
+ })).toThrow();
40
+ });
41
+ });
42
+ describe('privateRegistryManageInputSchema', () => {
43
+ it('should accept list action', () => {
44
+ const parsed = privateRegistryManageInputSchema.parse({ action: 'list' });
45
+ expect(parsed.action).toBe('list');
46
+ });
47
+ it('should accept get action with skillId', () => {
48
+ const parsed = privateRegistryManageInputSchema.parse({
49
+ action: 'get',
50
+ skillId: 'myteam/my-skill',
51
+ });
52
+ expect(parsed.action).toBe('get');
53
+ expect(parsed.skillId).toBe('myteam/my-skill');
54
+ });
55
+ it('should reject invalid action', () => {
56
+ expect(() => privateRegistryManageInputSchema.parse({ action: 'invalid' })).toThrow();
57
+ });
58
+ it('should accept optional version filter', () => {
59
+ const parsed = privateRegistryManageInputSchema.parse({
60
+ action: 'list',
61
+ version: '1.0.0',
62
+ });
63
+ expect(parsed.version).toBe('1.0.0');
64
+ });
65
+ });
66
+ // ==========================================================================
67
+ // private_registry_publish handler
68
+ // ==========================================================================
69
+ describe('executePrivateRegistryPublish', () => {
70
+ it('should publish a skill', async () => {
71
+ const input = {
72
+ skillId: 'myteam/my-skill',
73
+ version: '1.0.0',
74
+ };
75
+ const result = await executePrivateRegistryPublish(input, mockContext);
76
+ expect(result.success).toBe(true);
77
+ expect(result.skill).toBeDefined();
78
+ expect(result.skill.skillId).toBe('myteam/my-skill');
79
+ expect(result.skill.version).toBe('1.0.0');
80
+ expect(result.skill.deprecated).toBe(false);
81
+ expect(result.skill.registryUrl).toContain('myteam/my-skill@1.0.0');
82
+ expect(result.message).toContain('Published');
83
+ });
84
+ it('should publish a skill with description', async () => {
85
+ const input = {
86
+ skillId: 'myteam/my-skill',
87
+ version: '1.0.0',
88
+ description: 'A skill for testing',
89
+ };
90
+ const result = await executePrivateRegistryPublish(input, mockContext);
91
+ expect(result.success).toBe(true);
92
+ expect(result.skill.description).toBe('A skill for testing');
93
+ });
94
+ });
95
+ // ==========================================================================
96
+ // private_registry_manage handler
97
+ // ==========================================================================
98
+ describe('executePrivateRegistryManage', () => {
99
+ it('should list empty registry', async () => {
100
+ const input = { action: 'list' };
101
+ const result = await executePrivateRegistryManage(input, mockContext);
102
+ expect(result.success).toBe(true);
103
+ expect(result.skills).toHaveLength(0);
104
+ expect(result.message).toContain('0 skill(s)');
105
+ });
106
+ it('should list published skills', async () => {
107
+ // Publish a skill first
108
+ await executePrivateRegistryPublish({ skillId: 'myteam/skill-a', version: '1.0.0' }, mockContext);
109
+ const result = await executePrivateRegistryManage({ action: 'list' }, mockContext);
110
+ expect(result.success).toBe(true);
111
+ expect(result.skills).toHaveLength(1);
112
+ expect(result.skills[0].skillId).toBe('myteam/skill-a');
113
+ });
114
+ it('should get a specific skill', async () => {
115
+ await executePrivateRegistryPublish({ skillId: 'myteam/skill-a', version: '1.0.0' }, mockContext);
116
+ const result = await executePrivateRegistryManage({ action: 'get', skillId: 'myteam/skill-a' }, mockContext);
117
+ expect(result.success).toBe(true);
118
+ expect(result.skill).toBeDefined();
119
+ expect(result.skill.skillId).toBe('myteam/skill-a');
120
+ });
121
+ it('should fail get without skillId', async () => {
122
+ const result = await executePrivateRegistryManage({ action: 'get' }, mockContext);
123
+ expect(result.success).toBe(false);
124
+ expect(result.error).toContain('skillId is required');
125
+ });
126
+ it('should fail get for nonexistent skill', async () => {
127
+ const result = await executePrivateRegistryManage({ action: 'get', skillId: 'myteam/nonexistent' }, mockContext);
128
+ expect(result.success).toBe(false);
129
+ expect(result.error).toContain('not found');
130
+ });
131
+ it('should deprecate a skill', async () => {
132
+ await executePrivateRegistryPublish({ skillId: 'myteam/old-skill', version: '1.0.0' }, mockContext);
133
+ const result = await executePrivateRegistryManage({ action: 'deprecate', skillId: 'myteam/old-skill' }, mockContext);
134
+ expect(result.success).toBe(true);
135
+ expect(result.message).toContain('deprecated');
136
+ // Verify it's marked deprecated
137
+ const getResult = await executePrivateRegistryManage({ action: 'get', skillId: 'myteam/old-skill' }, mockContext);
138
+ expect(getResult.skill.deprecated).toBe(true);
139
+ });
140
+ it('should fail deprecate without skillId', async () => {
141
+ const result = await executePrivateRegistryManage({ action: 'deprecate' }, mockContext);
142
+ expect(result.success).toBe(false);
143
+ expect(result.error).toContain('skillId is required');
144
+ });
145
+ it('should fail deprecate for nonexistent skill', async () => {
146
+ const result = await executePrivateRegistryManage({ action: 'deprecate', skillId: 'myteam/nonexistent' }, mockContext);
147
+ expect(result.success).toBe(false);
148
+ expect(result.error).toContain('not found');
149
+ });
150
+ it('should undeprecate a skill', async () => {
151
+ await executePrivateRegistryPublish({ skillId: 'myteam/revived', version: '2.0.0' }, mockContext);
152
+ await executePrivateRegistryManage({ action: 'deprecate', skillId: 'myteam/revived' }, mockContext);
153
+ const result = await executePrivateRegistryManage({ action: 'undeprecate', skillId: 'myteam/revived' }, mockContext);
154
+ expect(result.success).toBe(true);
155
+ expect(result.message).toContain('undeprecated');
156
+ // Verify it's no longer deprecated
157
+ const getResult = await executePrivateRegistryManage({ action: 'get', skillId: 'myteam/revived' }, mockContext);
158
+ expect(getResult.skill.deprecated).toBe(false);
159
+ });
160
+ it('should fail undeprecate without skillId', async () => {
161
+ const result = await executePrivateRegistryManage({ action: 'undeprecate' }, mockContext);
162
+ expect(result.success).toBe(false);
163
+ expect(result.error).toContain('skillId is required');
164
+ });
165
+ });
166
+ });
167
+ //# sourceMappingURL=registry-tools.test.js.map