@uluops/registry-mcp 0.1.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 (272) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/README.md +228 -0
  3. package/dist/client/sdk-error-mapper.d.ts +30 -0
  4. package/dist/client/sdk-error-mapper.d.ts.map +1 -0
  5. package/dist/client/sdk-error-mapper.js +129 -0
  6. package/dist/client/sdk-error-mapper.js.map +1 -0
  7. package/dist/config/index.d.ts +17 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +92 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/tool-registry.d.ts +9 -0
  12. package/dist/config/tool-registry.d.ts.map +1 -0
  13. package/dist/config/tool-registry.js +386 -0
  14. package/dist/config/tool-registry.js.map +1 -0
  15. package/dist/index.d.ts +10 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +160 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/resources/definition-types.d.ts +6 -0
  20. package/dist/resources/definition-types.d.ts.map +1 -0
  21. package/dist/resources/definition-types.js +31 -0
  22. package/dist/resources/definition-types.js.map +1 -0
  23. package/dist/resources/definitions.d.ts +7 -0
  24. package/dist/resources/definitions.d.ts.map +1 -0
  25. package/dist/resources/definitions.js +11 -0
  26. package/dist/resources/definitions.js.map +1 -0
  27. package/dist/resources/index.d.ts +12 -0
  28. package/dist/resources/index.d.ts.map +1 -0
  29. package/dist/resources/index.js +19 -0
  30. package/dist/resources/index.js.map +1 -0
  31. package/dist/resources/models.d.ts +7 -0
  32. package/dist/resources/models.d.ts.map +1 -0
  33. package/dist/resources/models.js +11 -0
  34. package/dist/resources/models.js.map +1 -0
  35. package/dist/resources/providers.d.ts +7 -0
  36. package/dist/resources/providers.d.ts.map +1 -0
  37. package/dist/resources/providers.js +11 -0
  38. package/dist/resources/providers.js.map +1 -0
  39. package/dist/resources/response-helpers.d.ts +8 -0
  40. package/dist/resources/response-helpers.d.ts.map +1 -0
  41. package/dist/resources/response-helpers.js +51 -0
  42. package/dist/resources/response-helpers.js.map +1 -0
  43. package/dist/tools/archive-definition.d.ts +24 -0
  44. package/dist/tools/archive-definition.d.ts.map +1 -0
  45. package/dist/tools/archive-definition.js +19 -0
  46. package/dist/tools/archive-definition.js.map +1 -0
  47. package/dist/tools/batch-publish.d.ts +38 -0
  48. package/dist/tools/batch-publish.d.ts.map +1 -0
  49. package/dist/tools/batch-publish.js +64 -0
  50. package/dist/tools/batch-publish.js.map +1 -0
  51. package/dist/tools/batch-users.d.ts +17 -0
  52. package/dist/tools/batch-users.d.ts.map +1 -0
  53. package/dist/tools/batch-users.js +14 -0
  54. package/dist/tools/batch-users.js.map +1 -0
  55. package/dist/tools/check-forkable.d.ts +23 -0
  56. package/dist/tools/check-forkable.d.ts.map +1 -0
  57. package/dist/tools/check-forkable.js +17 -0
  58. package/dist/tools/check-forkable.js.map +1 -0
  59. package/dist/tools/compare-effectiveness.d.ts +23 -0
  60. package/dist/tools/compare-effectiveness.d.ts.map +1 -0
  61. package/dist/tools/compare-effectiveness.js +17 -0
  62. package/dist/tools/compare-effectiveness.js.map +1 -0
  63. package/dist/tools/create-definition.d.ts +107 -0
  64. package/dist/tools/create-definition.d.ts.map +1 -0
  65. package/dist/tools/create-definition.js +30 -0
  66. package/dist/tools/create-definition.js.map +1 -0
  67. package/dist/tools/delete-definition.d.ts +23 -0
  68. package/dist/tools/delete-definition.d.ts.map +1 -0
  69. package/dist/tools/delete-definition.js +17 -0
  70. package/dist/tools/delete-definition.js.map +1 -0
  71. package/dist/tools/deprecate-definition.d.ts +29 -0
  72. package/dist/tools/deprecate-definition.d.ts.map +1 -0
  73. package/dist/tools/deprecate-definition.js +23 -0
  74. package/dist/tools/deprecate-definition.js.map +1 -0
  75. package/dist/tools/diff-versions.d.ts +32 -0
  76. package/dist/tools/diff-versions.d.ts.map +1 -0
  77. package/dist/tools/diff-versions.js +20 -0
  78. package/dist/tools/diff-versions.js.map +1 -0
  79. package/dist/tools/fork-definition.d.ts +29 -0
  80. package/dist/tools/fork-definition.d.ts.map +1 -0
  81. package/dist/tools/fork-definition.js +22 -0
  82. package/dist/tools/fork-definition.js.map +1 -0
  83. package/dist/tools/get-definition.d.ts +35 -0
  84. package/dist/tools/get-definition.d.ts.map +1 -0
  85. package/dist/tools/get-definition.js +32 -0
  86. package/dist/tools/get-definition.js.map +1 -0
  87. package/dist/tools/get-dependencies.d.ts +26 -0
  88. package/dist/tools/get-dependencies.d.ts.map +1 -0
  89. package/dist/tools/get-dependencies.js +23 -0
  90. package/dist/tools/get-dependencies.js.map +1 -0
  91. package/dist/tools/get-dependents.d.ts +23 -0
  92. package/dist/tools/get-dependents.d.ts.map +1 -0
  93. package/dist/tools/get-dependents.js +17 -0
  94. package/dist/tools/get-dependents.js.map +1 -0
  95. package/dist/tools/get-diff-impact.d.ts +26 -0
  96. package/dist/tools/get-diff-impact.d.ts.map +1 -0
  97. package/dist/tools/get-diff-impact.js +18 -0
  98. package/dist/tools/get-diff-impact.js.map +1 -0
  99. package/dist/tools/get-ecosystem-overview.d.ts +11 -0
  100. package/dist/tools/get-ecosystem-overview.d.ts.map +1 -0
  101. package/dist/tools/get-ecosystem-overview.js +12 -0
  102. package/dist/tools/get-ecosystem-overview.js.map +1 -0
  103. package/dist/tools/get-effectiveness.d.ts +23 -0
  104. package/dist/tools/get-effectiveness.d.ts.map +1 -0
  105. package/dist/tools/get-effectiveness.js +17 -0
  106. package/dist/tools/get-effectiveness.js.map +1 -0
  107. package/dist/tools/get-evolution.d.ts +20 -0
  108. package/dist/tools/get-evolution.d.ts.map +1 -0
  109. package/dist/tools/get-evolution.js +16 -0
  110. package/dist/tools/get-evolution.js.map +1 -0
  111. package/dist/tools/get-execution-stats.d.ts +26 -0
  112. package/dist/tools/get-execution-stats.d.ts.map +1 -0
  113. package/dist/tools/get-execution-stats.js +18 -0
  114. package/dist/tools/get-execution-stats.js.map +1 -0
  115. package/dist/tools/get-fork-lineage.d.ts +23 -0
  116. package/dist/tools/get-fork-lineage.d.ts.map +1 -0
  117. package/dist/tools/get-fork-lineage.js +17 -0
  118. package/dist/tools/get-fork-lineage.js.map +1 -0
  119. package/dist/tools/get-health.d.ts +23 -0
  120. package/dist/tools/get-health.d.ts.map +1 -0
  121. package/dist/tools/get-health.js +17 -0
  122. package/dist/tools/get-health.js.map +1 -0
  123. package/dist/tools/get-language.d.ts +17 -0
  124. package/dist/tools/get-language.d.ts.map +1 -0
  125. package/dist/tools/get-language.js +14 -0
  126. package/dist/tools/get-language.js.map +1 -0
  127. package/dist/tools/get-lineage.d.ts +20 -0
  128. package/dist/tools/get-lineage.d.ts.map +1 -0
  129. package/dist/tools/get-lineage.js +16 -0
  130. package/dist/tools/get-lineage.js.map +1 -0
  131. package/dist/tools/get-model.d.ts +20 -0
  132. package/dist/tools/get-model.d.ts.map +1 -0
  133. package/dist/tools/get-model.js +15 -0
  134. package/dist/tools/get-model.js.map +1 -0
  135. package/dist/tools/get-translation-analytics.d.ts +20 -0
  136. package/dist/tools/get-translation-analytics.d.ts.map +1 -0
  137. package/dist/tools/get-translation-analytics.js +16 -0
  138. package/dist/tools/get-translation-analytics.js.map +1 -0
  139. package/dist/tools/get-translator-version.d.ts +11 -0
  140. package/dist/tools/get-translator-version.d.ts.map +1 -0
  141. package/dist/tools/get-translator-version.js +12 -0
  142. package/dist/tools/get-translator-version.js.map +1 -0
  143. package/dist/tools/get-user.d.ts +17 -0
  144. package/dist/tools/get-user.d.ts.map +1 -0
  145. package/dist/tools/get-user.js +14 -0
  146. package/dist/tools/get-user.js.map +1 -0
  147. package/dist/tools/index.d.ts +12 -0
  148. package/dist/tools/index.d.ts.map +1 -0
  149. package/dist/tools/index.js +136 -0
  150. package/dist/tools/index.js.map +1 -0
  151. package/dist/tools/list-aliases.d.ts +11 -0
  152. package/dist/tools/list-aliases.d.ts.map +1 -0
  153. package/dist/tools/list-aliases.js +12 -0
  154. package/dist/tools/list-aliases.js.map +1 -0
  155. package/dist/tools/list-definitions.d.ts +53 -0
  156. package/dist/tools/list-definitions.d.ts.map +1 -0
  157. package/dist/tools/list-definitions.js +56 -0
  158. package/dist/tools/list-definitions.js.map +1 -0
  159. package/dist/tools/list-forks.d.ts +23 -0
  160. package/dist/tools/list-forks.d.ts.map +1 -0
  161. package/dist/tools/list-forks.js +17 -0
  162. package/dist/tools/list-forks.js.map +1 -0
  163. package/dist/tools/list-languages.d.ts +11 -0
  164. package/dist/tools/list-languages.d.ts.map +1 -0
  165. package/dist/tools/list-languages.js +12 -0
  166. package/dist/tools/list-languages.js.map +1 -0
  167. package/dist/tools/list-models.d.ts +23 -0
  168. package/dist/tools/list-models.d.ts.map +1 -0
  169. package/dist/tools/list-models.js +17 -0
  170. package/dist/tools/list-models.js.map +1 -0
  171. package/dist/tools/list-providers.d.ts +11 -0
  172. package/dist/tools/list-providers.d.ts.map +1 -0
  173. package/dist/tools/list-providers.js +12 -0
  174. package/dist/tools/list-providers.js.map +1 -0
  175. package/dist/tools/list-versions.d.ts +26 -0
  176. package/dist/tools/list-versions.d.ts.map +1 -0
  177. package/dist/tools/list-versions.js +21 -0
  178. package/dist/tools/list-versions.js.map +1 -0
  179. package/dist/tools/publish-definition.d.ts +23 -0
  180. package/dist/tools/publish-definition.d.ts.map +1 -0
  181. package/dist/tools/publish-definition.js +26 -0
  182. package/dist/tools/publish-definition.js.map +1 -0
  183. package/dist/tools/record-execution.d.ts +29 -0
  184. package/dist/tools/record-execution.d.ts.map +1 -0
  185. package/dist/tools/record-execution.js +22 -0
  186. package/dist/tools/record-execution.js.map +1 -0
  187. package/dist/tools/render-definition.d.ts +33 -0
  188. package/dist/tools/render-definition.d.ts.map +1 -0
  189. package/dist/tools/render-definition.js +97 -0
  190. package/dist/tools/render-definition.js.map +1 -0
  191. package/dist/tools/resolve-alias.d.ts +17 -0
  192. package/dist/tools/resolve-alias.d.ts.map +1 -0
  193. package/dist/tools/resolve-alias.js +14 -0
  194. package/dist/tools/resolve-alias.js.map +1 -0
  195. package/dist/tools/retranslate-definition.d.ts +26 -0
  196. package/dist/tools/retranslate-definition.d.ts.map +1 -0
  197. package/dist/tools/retranslate-definition.js +23 -0
  198. package/dist/tools/retranslate-definition.js.map +1 -0
  199. package/dist/tools/search-definitions.d.ts +44 -0
  200. package/dist/tools/search-definitions.d.ts.map +1 -0
  201. package/dist/tools/search-definitions.js +35 -0
  202. package/dist/tools/search-definitions.js.map +1 -0
  203. package/dist/tools/set-default-type.d.ts +10 -0
  204. package/dist/tools/set-default-type.d.ts.map +1 -0
  205. package/dist/tools/set-default-type.js +31 -0
  206. package/dist/tools/set-default-type.js.map +1 -0
  207. package/dist/tools/sync-models.d.ts +12 -0
  208. package/dist/tools/sync-models.d.ts.map +1 -0
  209. package/dist/tools/sync-models.js +32 -0
  210. package/dist/tools/sync-models.js.map +1 -0
  211. package/dist/tools/update-and-publish.d.ts +44 -0
  212. package/dist/tools/update-and-publish.d.ts.map +1 -0
  213. package/dist/tools/update-and-publish.js +111 -0
  214. package/dist/tools/update-and-publish.js.map +1 -0
  215. package/dist/tools/update-definition.d.ts +129 -0
  216. package/dist/tools/update-definition.d.ts.map +1 -0
  217. package/dist/tools/update-definition.js +85 -0
  218. package/dist/tools/update-definition.js.map +1 -0
  219. package/dist/tools/upgrade-definition.d.ts +27 -0
  220. package/dist/tools/upgrade-definition.d.ts.map +1 -0
  221. package/dist/tools/upgrade-definition.js +22 -0
  222. package/dist/tools/upgrade-definition.js.map +1 -0
  223. package/dist/tools/validate-definition.d.ts +24 -0
  224. package/dist/tools/validate-definition.d.ts.map +1 -0
  225. package/dist/tools/validate-definition.js +21 -0
  226. package/dist/tools/validate-definition.js.map +1 -0
  227. package/dist/types/config.d.ts +40 -0
  228. package/dist/types/config.d.ts.map +1 -0
  229. package/dist/types/config.js +5 -0
  230. package/dist/types/config.js.map +1 -0
  231. package/dist/types/index.d.ts +9 -0
  232. package/dist/types/index.d.ts.map +1 -0
  233. package/dist/types/index.js +7 -0
  234. package/dist/types/index.js.map +1 -0
  235. package/dist/types/mcp.d.ts +21 -0
  236. package/dist/types/mcp.d.ts.map +1 -0
  237. package/dist/types/mcp.js +34 -0
  238. package/dist/types/mcp.js.map +1 -0
  239. package/dist/types/schemas.d.ts +113 -0
  240. package/dist/types/schemas.d.ts.map +1 -0
  241. package/dist/types/schemas.js +65 -0
  242. package/dist/types/schemas.js.map +1 -0
  243. package/dist/types/server.d.ts +29 -0
  244. package/dist/types/server.d.ts.map +1 -0
  245. package/dist/types/server.js +5 -0
  246. package/dist/types/server.js.map +1 -0
  247. package/dist/utils/logger.d.ts +19 -0
  248. package/dist/utils/logger.d.ts.map +1 -0
  249. package/dist/utils/logger.js +94 -0
  250. package/dist/utils/logger.js.map +1 -0
  251. package/dist/utils/normalize-keys.d.ts +11 -0
  252. package/dist/utils/normalize-keys.d.ts.map +1 -0
  253. package/dist/utils/normalize-keys.js +41 -0
  254. package/dist/utils/normalize-keys.js.map +1 -0
  255. package/dist/utils/read-yaml-file.d.ts +27 -0
  256. package/dist/utils/read-yaml-file.d.ts.map +1 -0
  257. package/dist/utils/read-yaml-file.js +89 -0
  258. package/dist/utils/read-yaml-file.js.map +1 -0
  259. package/dist/utils/session-state.d.ts +20 -0
  260. package/dist/utils/session-state.d.ts.map +1 -0
  261. package/dist/utils/session-state.js +21 -0
  262. package/dist/utils/session-state.js.map +1 -0
  263. package/dist/utils/tool-handler.d.ts +61 -0
  264. package/dist/utils/tool-handler.d.ts.map +1 -0
  265. package/dist/utils/tool-handler.js +184 -0
  266. package/dist/utils/tool-handler.js.map +1 -0
  267. package/dist/utils/trim-definition.d.ts +13 -0
  268. package/dist/utils/trim-definition.d.ts.map +1 -0
  269. package/dist/utils/trim-definition.js +28 -0
  270. package/dist/utils/trim-definition.js.map +1 -0
  271. package/package.json +83 -0
  272. package/tool-policies.json +66 -0
@@ -0,0 +1,97 @@
1
+ /**
2
+ * render_definition tool
3
+ *
4
+ * Get rendered markdown for a definition.
5
+ * Optionally write the markdown directly to a file via output_path.
6
+ */
7
+ import { writeFile, mkdir, lstat } from 'node:fs/promises';
8
+ import { dirname, resolve, relative } from 'node:path';
9
+ import { z } from 'zod';
10
+ import { DefinitionTypeSchema, createSuccessResponse, createErrorResponse, } from '../types/index.js';
11
+ import { createToolHandler } from '../utils/tool-handler.js';
12
+ import { mapSdkErrorToMcp, mapZodErrorToMcp } from '../client/sdk-error-mapper.js';
13
+ /**
14
+ * Get the base directory for output_path containment.
15
+ * Resolved paths must start with this directory to prevent path traversal (CWE-22).
16
+ * Defaults to cwd if OUTPUT_BASE_DIR is not set.
17
+ * Evaluated per-call so env var changes (e.g., in tests) take effect.
18
+ */
19
+ function getOutputBaseDir() {
20
+ return resolve(process.env['OUTPUT_BASE_DIR'] ?? process.cwd());
21
+ }
22
+ export const RenderDefinitionInputSchema = z.object({
23
+ type: DefinitionTypeSchema,
24
+ name: z.string().min(1),
25
+ version: z.string().min(1).default('latest'),
26
+ target: z
27
+ .string()
28
+ .min(1)
29
+ .describe('Target harness format (e.g., opencode, codex, gemini). Omit for canonical Claude Code output.')
30
+ .optional(),
31
+ model: z
32
+ .string()
33
+ .min(1)
34
+ .describe('Model override for target envelope (e.g., gpt-5.3, gemini-3-preview).')
35
+ .optional(),
36
+ output_path: z
37
+ .string()
38
+ .min(1)
39
+ .describe('Write rendered output to this file path instead of returning it in the response.')
40
+ .optional(),
41
+ });
42
+ export function registerRenderDefinitionTool(server, registryClient) {
43
+ const baseHandler = createToolHandler(RenderDefinitionInputSchema, (n) => registryClient.render.get(n.type, n.name, n.version, {
44
+ target: n.target,
45
+ model: n.model,
46
+ }));
47
+ server.tool('render_definition', 'Get the rendered runtime output for a definition version. Use target to render for a specific harness (opencode, codex, gemini). Use output_path to write directly to a file.', RenderDefinitionInputSchema.shape, async (args) => {
48
+ const parsed = RenderDefinitionInputSchema.safeParse(args);
49
+ if (!parsed.success || parsed.data.output_path === undefined) {
50
+ return baseHandler(args);
51
+ }
52
+ // Validate output_path stays within OUTPUT_BASE_DIR
53
+ const outputBaseDir = getOutputBaseDir();
54
+ const absPath = resolve(parsed.data.output_path);
55
+ if (!absPath.startsWith(outputBaseDir + '/') && absPath !== outputBaseDir) {
56
+ return createErrorResponse(`output_path must resolve within ${outputBaseDir} — got ${absPath}`);
57
+ }
58
+ // Reject symlinks in output path to prevent symlink-following writes (CWE-59)
59
+ const pathStat = await lstat(absPath).catch(() => null);
60
+ if (pathStat?.isSymbolicLink() === true) {
61
+ return createErrorResponse('output_path must not be a symbolic link');
62
+ }
63
+ // Verify no symlink in ancestor directories resolves outside the base dir
64
+ const rel = relative(outputBaseDir, absPath);
65
+ const segments = rel.split('/');
66
+ let walkPath = outputBaseDir;
67
+ for (const seg of segments.slice(0, -1)) {
68
+ walkPath = resolve(walkPath, seg);
69
+ const segStat = await lstat(walkPath).catch(() => null);
70
+ if (segStat?.isSymbolicLink() === true) {
71
+ return createErrorResponse('output_path contains a symbolic link in its directory path');
72
+ }
73
+ }
74
+ try {
75
+ const result = await registryClient.render.get(parsed.data.type, parsed.data.name, parsed.data.version, { target: parsed.data.target, model: parsed.data.model });
76
+ // SDK RenderResult guarantees markdown: string
77
+ const { markdown } = result;
78
+ if (typeof markdown !== 'string') {
79
+ return createErrorResponse('Render result missing markdown field — cannot write to file.');
80
+ }
81
+ await mkdir(dirname(absPath), { recursive: true });
82
+ await writeFile(absPath, markdown, 'utf-8');
83
+ return createSuccessResponse({
84
+ success: true,
85
+ output_path: absPath,
86
+ bytes: Buffer.byteLength(markdown, 'utf-8'),
87
+ });
88
+ }
89
+ catch (error) {
90
+ if (error instanceof z.ZodError) {
91
+ return mapZodErrorToMcp(error);
92
+ }
93
+ return mapSdkErrorToMcp(error);
94
+ }
95
+ });
96
+ }
97
+ //# sourceMappingURL=render-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-definition.js","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,oBAAoB,EAEpB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;;;GAKG;AACH,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC5C,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+FAA+F,CAAC;SACzG,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,uEAAuE,CAAC;SACjF,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kFAAkF,CAAC;SAC5F,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,UAAU,4BAA4B,CAC1C,MAAiC,EACjC,cAA8B;IAE9B,MAAM,WAAW,GAAG,iBAAiB,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,EAAE,CACvE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;QACnD,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,+KAA+K,EAC/K,2BAA2B,CAAC,KAAK,EACjC,KAAK,EAAE,IAAa,EAAE,EAAE;QACtB,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,oDAAoD;QACpD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,GAAG,GAAG,CAAC,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC1E,OAAO,mBAAmB,CACxB,mCAAmC,aAAa,UAAU,OAAO,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,QAAQ,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,mBAAmB,CAAC,yCAAyC,CAAC,CAAC;QACxE,CAAC;QAED,0EAA0E;QAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,GAAG,aAAa,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvC,OAAO,mBAAmB,CAAC,4DAA4D,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,GAAG,CAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,EAChB,MAAM,CAAC,IAAI,CAAC,IAAI,EAChB,MAAM,CAAC,IAAI,CAAC,OAAO,EACnB,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CACzD,CAAC;YAEF,+CAA+C;YAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YAC5B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,mBAAmB,CACxB,8DAA8D,CAC/D,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE5C,OAAO,qBAAqB,CAAC;gBAC3B,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,OAAO;gBACpB,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;aAC5C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * resolve_alias tool
3
+ *
4
+ * Resolve a model alias (e.g. "sonnet") to provider+modelId.
5
+ */
6
+ import { z } from 'zod';
7
+ import type { RegistryClient } from '@uluops/registry-sdk';
8
+ import { type McpServerToolRegistration } from '../types/index.js';
9
+ export declare const ResolveAliasInputSchema: z.ZodObject<{
10
+ alias: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ alias: string;
13
+ }, {
14
+ alias: string;
15
+ }>;
16
+ export declare function registerResolveAliasTool(server: McpServerToolRegistration, registryClient: RegistryClient): void;
17
+ //# sourceMappingURL=resolve-alias.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-alias.d.ts","sourceRoot":"","sources":["../../src/tools/resolve-alias.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AAEH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAON"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * resolve_alias tool
3
+ *
4
+ * Resolve a model alias (e.g. "sonnet") to provider+modelId.
5
+ */
6
+ import { z } from 'zod';
7
+ import { createToolHandler } from '../utils/tool-handler.js';
8
+ export const ResolveAliasInputSchema = z.object({
9
+ alias: z.string().min(1),
10
+ });
11
+ export function registerResolveAliasTool(server, registryClient) {
12
+ server.tool('resolve_alias', 'Resolve a model alias (e.g. "sonnet", "haiku") to its provider and model ID.', ResolveAliasInputSchema.shape, createToolHandler(ResolveAliasInputSchema, (n) => registryClient.models.resolveAlias(n.alias)));
13
+ }
14
+ //# sourceMappingURL=resolve-alias.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-alias.js","sourceRoot":"","sources":["../../src/tools/resolve-alias.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,UAAU,wBAAwB,CACtC,MAAiC,EACjC,cAA8B;IAE9B,MAAM,CAAC,IAAI,CACT,eAAe,EACf,8EAA8E,EAC9E,uBAAuB,CAAC,KAAK,EAC7B,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * retranslate_definition tool
3
+ *
4
+ * Retranslate a definition with the latest translator version.
5
+ */
6
+ import { z } from 'zod';
7
+ import type { RegistryClient } from '@uluops/registry-sdk';
8
+ import { type McpServerToolRegistration } from '../types/index.js';
9
+ export declare const RetranslateDefinitionInputSchema: z.ZodObject<{
10
+ type: z.ZodEnum<["agent", "command", "workflow", "pipeline"]>;
11
+ name: z.ZodString;
12
+ version: z.ZodString;
13
+ force: z.ZodOptional<z.ZodBoolean>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ name: string;
16
+ type: "agent" | "command" | "workflow" | "pipeline";
17
+ version: string;
18
+ force?: boolean | undefined;
19
+ }, {
20
+ name: string;
21
+ type: "agent" | "command" | "workflow" | "pipeline";
22
+ version: string;
23
+ force?: boolean | undefined;
24
+ }>;
25
+ export declare function registerRetranslateDefinitionTool(server: McpServerToolRegistration, registryClient: RegistryClient): void;
26
+ //# sourceMappingURL=retranslate-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retranslate-definition.d.ts","sourceRoot":"","sources":["../../src/tools/retranslate-definition.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGzF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;EAK3C,CAAC;AAEH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAWN"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * retranslate_definition tool
3
+ *
4
+ * Retranslate a definition with the latest translator version.
5
+ */
6
+ import { z } from 'zod';
7
+ import { DefinitionTypeSchema } from '../types/index.js';
8
+ import { createToolHandler } from '../utils/tool-handler.js';
9
+ export const RetranslateDefinitionInputSchema = z.object({
10
+ type: DefinitionTypeSchema,
11
+ name: z.string().min(1),
12
+ version: z.string().min(1),
13
+ force: z.boolean().optional(),
14
+ });
15
+ export function registerRetranslateDefinitionTool(server, registryClient) {
16
+ server.tool('retranslate_definition', 'Retranslate a definition version using the latest translator. Use force=true to retranslate even if already current.', RetranslateDefinitionInputSchema.shape, createToolHandler(RetranslateDefinitionInputSchema, (n) => {
17
+ const options = {};
18
+ if (n.force !== undefined)
19
+ options.createNewVersion = n.force;
20
+ return registryClient.translation.retranslate(n.type, n.name, n.version, options);
21
+ }));
22
+ }
23
+ //# sourceMappingURL=retranslate-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retranslate-definition.js","sourceRoot":"","sources":["../../src/tools/retranslate-definition.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAkC,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,UAAU,iCAAiC,CAC/C,MAAiC,EACjC,cAA8B;IAE9B,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,sHAAsH,EACtH,gCAAgC,CAAC,KAAK,EACtC,iBAAiB,CAAC,gCAAgC,EAAE,CAAC,CAAC,EAAE,EAAE;QACxD,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC;QAC9D,OAAO,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * search_definitions tool
3
+ *
4
+ * Convenience alias — search definitions by keyword.
5
+ */
6
+ import { z } from 'zod';
7
+ import type { RegistryClient } from '@uluops/registry-sdk';
8
+ import { type McpServerToolRegistration } from '../types/index.js';
9
+ export declare const SearchDefinitionsInputSchema: z.ZodObject<{
10
+ query: z.ZodString;
11
+ type: z.ZodOptional<z.ZodEnum<["agent", "command", "workflow", "pipeline"]>>;
12
+ status: z.ZodOptional<z.ZodEnum<["draft", "published", "deprecated", "archived"]>>;
13
+ domain: z.ZodOptional<z.ZodEnum<["software", "security", "compliance", "legal", "medical", "financial", "scientific", "content", "general", "cognitive-lens"]>>;
14
+ agent_type: z.ZodOptional<z.ZodEnum<["validator", "executor", "analyst", "generator", "explorer", "forecaster"]>>;
15
+ visibility: z.ZodOptional<z.ZodEnum<["private", "unlisted", "public"]>>;
16
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
+ is_fork: z.ZodOptional<z.ZodBoolean>;
18
+ authorship_type: z.ZodOptional<z.ZodEnum<["human", "agent", "collaborative", "automated"]>>;
19
+ limit: z.ZodDefault<z.ZodNumber>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ limit: number;
22
+ query: string;
23
+ type?: "agent" | "command" | "workflow" | "pipeline" | undefined;
24
+ status?: "draft" | "published" | "deprecated" | "archived" | undefined;
25
+ authorship_type?: "agent" | "human" | "collaborative" | "automated" | undefined;
26
+ domain?: "software" | "security" | "compliance" | "legal" | "medical" | "financial" | "scientific" | "content" | "general" | "cognitive-lens" | undefined;
27
+ agent_type?: "validator" | "executor" | "analyst" | "generator" | "explorer" | "forecaster" | undefined;
28
+ visibility?: "private" | "unlisted" | "public" | undefined;
29
+ tags?: string[] | undefined;
30
+ is_fork?: boolean | undefined;
31
+ }, {
32
+ query: string;
33
+ type?: "agent" | "command" | "workflow" | "pipeline" | undefined;
34
+ status?: "draft" | "published" | "deprecated" | "archived" | undefined;
35
+ authorship_type?: "agent" | "human" | "collaborative" | "automated" | undefined;
36
+ limit?: number | undefined;
37
+ domain?: "software" | "security" | "compliance" | "legal" | "medical" | "financial" | "scientific" | "content" | "general" | "cognitive-lens" | undefined;
38
+ agent_type?: "validator" | "executor" | "analyst" | "generator" | "explorer" | "forecaster" | undefined;
39
+ visibility?: "private" | "unlisted" | "public" | undefined;
40
+ tags?: string[] | undefined;
41
+ is_fork?: boolean | undefined;
42
+ }>;
43
+ export declare function registerSearchDefinitionsTool(server: McpServerToolRegistration, registryClient: RegistryClient): void;
44
+ //# sourceMappingURL=search-definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-definitions.d.ts","sourceRoot":"","sources":["../../src/tools/search-definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAOL,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWvC,CAAC;AAEH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAoBN"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * search_definitions tool
3
+ *
4
+ * Convenience alias — search definitions by keyword.
5
+ */
6
+ import { z } from 'zod';
7
+ import { DefinitionTypeSchema, DefinitionStatusSchema, DomainSchema, AgentTypeSchema, VisibilitySchema, AuthorshipTypeSchema, } from '../types/index.js';
8
+ import { createToolHandler } from '../utils/tool-handler.js';
9
+ export const SearchDefinitionsInputSchema = z.object({
10
+ query: z.string().min(1),
11
+ type: DefinitionTypeSchema.optional(),
12
+ status: DefinitionStatusSchema.optional(),
13
+ domain: DomainSchema.optional(),
14
+ agent_type: AgentTypeSchema.optional(),
15
+ visibility: VisibilitySchema.optional(),
16
+ tags: z.array(z.string()).optional(),
17
+ is_fork: z.boolean().optional().describe('Filter by fork status: true = only forks, false = only originals'),
18
+ authorship_type: AuthorshipTypeSchema.optional().describe('Filter by authorship type: human, agent, collaborative, or automated'),
19
+ limit: z.number().int().positive().max(100).default(20),
20
+ });
21
+ export function registerSearchDefinitionsTool(server, registryClient) {
22
+ server.tool('search_definitions', 'Search definitions by keyword with optional type, status, domain, agent_type, visibility, and tags filters.', SearchDefinitionsInputSchema.shape, createToolHandler(SearchDefinitionsInputSchema, (n) => registryClient.definitions.list({
23
+ search: n.query,
24
+ type: n.type,
25
+ status: n.status,
26
+ domain: n.domain,
27
+ agentType: n.agentType,
28
+ visibility: n.visibility,
29
+ tag: n.tags,
30
+ isFork: n.isFork,
31
+ authorshipType: n.authorshipType,
32
+ limit: n.limit,
33
+ })));
34
+ }
35
+ //# sourceMappingURL=search-definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-definitions.js","sourceRoot":"","sources":["../../src/tools/search-definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GAErB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,EAAE;IACzC,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,eAAe,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;IAC5G,eAAe,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;IACjI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACxD,CAAC,CAAC;AAEH,MAAM,UAAU,6BAA6B,CAC3C,MAAiC,EACjC,cAA8B;IAE9B,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,6GAA6G,EAC7G,4BAA4B,CAAC,KAAK,EAClC,iBAAiB,CAAC,4BAA4B,EAAE,CAAC,CAAC,EAAE,EAAE,CACpD,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,KAAK;QACf,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,GAAG,EAAE,CAAC,CAAC,IAAI;QACX,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAC,CACH,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * set_default_type tool
3
+ *
4
+ * Set or clear a session-level default for the `type` parameter.
5
+ * When set, definition tools use this type unless explicitly overridden.
6
+ * Omit `type` to clear the default.
7
+ */
8
+ import { type McpServerToolRegistration } from '../types/index.js';
9
+ export declare function registerSetDefaultTypeTool(server: McpServerToolRegistration): void;
10
+ //# sourceMappingURL=set-default-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-default-type.d.ts","sourceRoot":"","sources":["../../src/tools/set-default-type.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AASzF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI,CAkBlF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * set_default_type tool
3
+ *
4
+ * Set or clear a session-level default for the `type` parameter.
5
+ * When set, definition tools use this type unless explicitly overridden.
6
+ * Omit `type` to clear the default.
7
+ */
8
+ import { z } from 'zod';
9
+ import { DefinitionTypeSchema } from '../types/index.js';
10
+ import { setDefaultType, getSessionState } from '../utils/session-state.js';
11
+ import { createSuccessResponse } from '../types/index.js';
12
+ import { mapZodErrorToMcp } from '../client/sdk-error-mapper.js';
13
+ const SetDefaultTypeSchema = z.object({
14
+ type: DefinitionTypeSchema.optional(),
15
+ });
16
+ export function registerSetDefaultTypeTool(server) {
17
+ server.tool('set_default_type', 'Set or clear a session-level default for the `type` parameter. When set, definition tools use this type unless explicitly overridden. Omit `type` to clear the default.', SetDefaultTypeSchema.shape, (args) => {
18
+ try {
19
+ const input = SetDefaultTypeSchema.parse(args);
20
+ setDefaultType(input.type);
21
+ return Promise.resolve(createSuccessResponse(getSessionState()));
22
+ }
23
+ catch (error) {
24
+ if (error instanceof z.ZodError) {
25
+ return Promise.resolve(mapZodErrorToMcp(error));
26
+ }
27
+ throw error;
28
+ }
29
+ });
30
+ }
31
+ //# sourceMappingURL=set-default-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-default-type.js","sourceRoot":"","sources":["../../src/tools/set-default-type.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAkC,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAwB,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,UAAU,0BAA0B,CAAC,MAAiC;IAC1E,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,yKAAyK,EACzK,oBAAoB,CAAC,KAAK,EAC1B,CAAC,IAAa,EAA4B,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * sync_models tool
3
+ *
4
+ * Sync model catalog (admin). Calls the registry API directly
5
+ * via native fetch — this is an admin-only endpoint not exposed
6
+ * through the public SDK.
7
+ */
8
+ import { z } from 'zod';
9
+ import { type McpServerToolRegistration } from '../types/index.js';
10
+ export declare const SyncModelsInputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
11
+ export declare function registerSyncModelsTool(server: McpServerToolRegistration): void;
12
+ //# sourceMappingURL=sync-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-models.d.ts","sourceRoot":"","sources":["../../src/tools/sync-models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,eAAO,MAAM,qBAAqB,gDAAe,CAAC;AAElD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,yBAAyB,GAChC,IAAI,CA4BN"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * sync_models tool
3
+ *
4
+ * Sync model catalog (admin). Calls the registry API directly
5
+ * via native fetch — this is an admin-only endpoint not exposed
6
+ * through the public SDK.
7
+ */
8
+ import { z } from 'zod';
9
+ import { createToolHandler } from '../utils/tool-handler.js';
10
+ export const SyncModelsInputSchema = z.object({});
11
+ export function registerSyncModelsTool(server) {
12
+ server.tool('sync_models', 'Sync the model catalog with upstream providers. Requires admin privileges.', SyncModelsInputSchema.shape, createToolHandler(SyncModelsInputSchema, async () => {
13
+ const baseUrl = process.env['ULUOPS_REGISTRY_URL'] ?? 'https://api.uluops.ai/api/v1/registry';
14
+ const apiKey = process.env['ULUOPS_API_KEY'];
15
+ if (!apiKey) {
16
+ throw new Error('ULUOPS_API_KEY is required for sync_models');
17
+ }
18
+ const res = await fetch(`${baseUrl}/models/sync`, {
19
+ method: 'POST',
20
+ headers: {
21
+ 'Authorization': `Bearer ${apiKey}`,
22
+ 'Content-Type': 'application/json',
23
+ },
24
+ });
25
+ if (!res.ok) {
26
+ const body = await res.text();
27
+ throw new Error(`Sync failed (${String(res.status)}): ${body}`);
28
+ }
29
+ return res.json();
30
+ }));
31
+ }
32
+ //# sourceMappingURL=sync-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-models.js","sourceRoot":"","sources":["../../src/tools/sync-models.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElD,MAAM,UAAU,sBAAsB,CACpC,MAAiC;IAEjC,MAAM,CAAC,IAAI,CACT,aAAa,EACb,4EAA4E,EAC5E,qBAAqB,CAAC,KAAK,EAC3B,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,uCAAuC,CAAC;QAC9F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,cAAc,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * update_and_publish tool
3
+ *
4
+ * Composite workflow: update a definition and publish it in one step.
5
+ * Inherits the smart version-up behavior from update_definition:
6
+ * if the target version is published or doesn't exist and YAML is provided,
7
+ * automatically creates a new draft version before publishing.
8
+ */
9
+ import { z } from 'zod';
10
+ import type { RegistryClient } from '@uluops/registry-sdk';
11
+ import { type McpServerToolRegistration } from '../types/index.js';
12
+ export declare const UpdateAndPublishInputSchema: z.ZodObject<{
13
+ type: z.ZodEnum<["agent", "command", "workflow", "pipeline"]>;
14
+ name: z.ZodString;
15
+ version: z.ZodString;
16
+ yaml: z.ZodOptional<z.ZodString>;
17
+ file_path: z.ZodOptional<z.ZodString>;
18
+ visibility: z.ZodOptional<z.ZodEnum<["private", "unlisted", "public"]>>;
19
+ description: z.ZodOptional<z.ZodString>;
20
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
21
+ change_type: z.ZodOptional<z.ZodEnum<["major", "minor", "patch"]>>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ name: string;
24
+ type: "agent" | "command" | "workflow" | "pipeline";
25
+ version: string;
26
+ visibility?: "private" | "unlisted" | "public" | undefined;
27
+ tags?: string[] | undefined;
28
+ yaml?: string | undefined;
29
+ file_path?: string | undefined;
30
+ description?: string | undefined;
31
+ change_type?: "major" | "minor" | "patch" | undefined;
32
+ }, {
33
+ name: string;
34
+ type: "agent" | "command" | "workflow" | "pipeline";
35
+ version: string;
36
+ visibility?: "private" | "unlisted" | "public" | undefined;
37
+ tags?: string[] | undefined;
38
+ yaml?: string | undefined;
39
+ file_path?: string | undefined;
40
+ description?: string | undefined;
41
+ change_type?: "major" | "minor" | "patch" | undefined;
42
+ }>;
43
+ export declare function registerUpdateAndPublishTool(server: McpServerToolRegistration, registryClient: RegistryClient): void;
44
+ //# sourceMappingURL=update-and-publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-and-publish.d.ts","sourceRoot":"","sources":["../../src/tools/update-and-publish.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAIL,KAAK,yBAAyB,EAE/B,MAAM,mBAAmB,CAAC;AAY3B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUtC,CAAC;AAwBH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAiEN"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * update_and_publish tool
3
+ *
4
+ * Composite workflow: update a definition and publish it in one step.
5
+ * Inherits the smart version-up behavior from update_definition:
6
+ * if the target version is published or doesn't exist and YAML is provided,
7
+ * automatically creates a new draft version before publishing.
8
+ */
9
+ import { z } from 'zod';
10
+ import { isNotFoundError, isValidationError } from '@uluops/registry-sdk/errors';
11
+ import { DefinitionTypeSchema, VisibilitySchema, ChangeTypeSchema, createSuccessResponse, } from '../types/index.js';
12
+ import { mapSdkErrorToMcp, mapZodErrorToMcp } from '../client/sdk-error-mapper.js';
13
+ import { resolveYamlInput } from '../utils/read-yaml-file.js';
14
+ import { trimDefinitionResponse } from '../utils/trim-definition.js';
15
+ import { injectSessionType } from '../utils/tool-handler.js';
16
+ /** Type guard: checks if resolveYamlInput returned an error response. */
17
+ function isMcpResponse(value) {
18
+ return typeof value === 'object' && value !== null && 'content' in value && Array.isArray(value.content);
19
+ }
20
+ export const UpdateAndPublishInputSchema = z.object({
21
+ type: DefinitionTypeSchema,
22
+ name: z.string().min(1),
23
+ version: z.string().min(1),
24
+ yaml: z.string().max(500_000).optional(),
25
+ file_path: z.string().min(1).max(1000).optional(),
26
+ visibility: VisibilitySchema.optional(),
27
+ description: z.string().optional(),
28
+ tags: z.array(z.string()).optional(),
29
+ change_type: ChangeTypeSchema.optional(),
30
+ });
31
+ /** Check if an error is a "published status" validation error from the API. */
32
+ function isPublishedStatusError(error) {
33
+ return isValidationError(error) &&
34
+ error instanceof Error &&
35
+ error.message.includes("'published' status");
36
+ }
37
+ /**
38
+ * Patch the version field in definition YAML to match the requested version.
39
+ * When update_and_publish falls back to create (because the target version is
40
+ * published or doesn't exist), the YAML on disk may still contain the old
41
+ * version. The API extracts version from YAML metadata, so we must ensure
42
+ * the YAML version matches the requested version before calling create.
43
+ */
44
+ function patchYamlVersion(yaml, newVersion) {
45
+ // Replace the first indented `version:` field value (the interface version)
46
+ return yaml.replace(/^(\s+version:\s+)["']?\d+\.\d+\.\d+["']?/m, `$1"${newVersion}"`);
47
+ }
48
+ export function registerUpdateAndPublishTool(server, registryClient) {
49
+ server.tool('update_and_publish', 'Update a definition and publish it in one step. Accepts yaml or file_path. Auto-creates a new draft if the version is published or missing.', UpdateAndPublishInputSchema.shape, async (args) => {
50
+ try {
51
+ // Inject session-level default type
52
+ const injected = injectSessionType(args);
53
+ // Resolve file_path → yaml BEFORE Zod validation
54
+ const resolved = resolveYamlInput(injected, { required: false });
55
+ if (isMcpResponse(resolved))
56
+ return resolved;
57
+ const input = UpdateAndPublishInputSchema.parse(resolved);
58
+ const { type, name, version, yaml, visibility, description, tags, change_type } = input;
59
+ // Build update body (SDK expects camelCase changeType)
60
+ const body = {};
61
+ if (yaml !== undefined)
62
+ body.yaml = yaml;
63
+ if (visibility !== undefined)
64
+ body.visibility = visibility;
65
+ if (description !== undefined)
66
+ body.description = description;
67
+ if (tags !== undefined)
68
+ body.tags = tags;
69
+ if (change_type !== undefined)
70
+ body.changeType = change_type;
71
+ // Step 1: Update (with smart create fallback)
72
+ let publishVersion = version;
73
+ let note = 'Updated and published in one step';
74
+ try {
75
+ await registryClient.definitions.update(type, name, version, body);
76
+ }
77
+ catch (error) {
78
+ if (yaml !== undefined && yaml !== '' && (isNotFoundError(error) || isPublishedStatusError(error))) {
79
+ // Patch YAML version to match requested version — the file on disk
80
+ // may still contain the old (published) version string.
81
+ const patchedYaml = patchYamlVersion(yaml, version);
82
+ const created = await registryClient.definitions.create(type, name, {
83
+ yaml: patchedYaml,
84
+ ...(visibility !== undefined && { visibility }),
85
+ });
86
+ publishVersion = created.version;
87
+ note = isNotFoundError(error)
88
+ ? `Version '${version}' not found. Created new draft '${created.version}' and published.`
89
+ : `Version '${version}' is published. Created new draft '${created.version}' and published.`;
90
+ }
91
+ else {
92
+ throw error;
93
+ }
94
+ }
95
+ // Step 2: Publish
96
+ const { definition: published, warnings } = await registryClient.definitions.publish(type, name, publishVersion);
97
+ const trimmed = trimDefinitionResponse(published);
98
+ // Surface non-fatal publish warnings (TRANSLATION_FAILED etc.) alongside the
99
+ // trimmed definition. Empty array is fine — distinguishes "no warnings" from
100
+ // "this tool predates the warnings contract".
101
+ return createSuccessResponse({ ...trimmed, _note: note, warnings });
102
+ }
103
+ catch (error) {
104
+ if (error instanceof z.ZodError) {
105
+ return mapZodErrorToMcp(error);
106
+ }
107
+ return mapSdkErrorToMcp(error);
108
+ }
109
+ });
110
+ }
111
+ //# sourceMappingURL=update-and-publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-and-publish.js","sourceRoot":"","sources":["../../src/tools/update-and-publish.ts"],"names":[],"mappings":"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"}