@uluops/registry-mcp 0.10.1 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.10.2] - 2026-09-29
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- File rendering retains inline metadata, including selected model, and warnings alongside path/byte receipts, with the full-profile default preserved.
|
|
10
|
+
- File output verifies physical containment against the configured root and uses an exclusive create when overwrite is omitted.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Document server-host output paths, `OUTPUT_BASE_DIR`/cwd resolution, symlink refusal and explicit overwrite in the tool schema and examples.
|
|
15
|
+
|
|
5
16
|
## [0.10.1] - 2026-09-28
|
|
6
17
|
|
|
7
18
|
### Changed
|
package/README.md
CHANGED
|
@@ -112,6 +112,27 @@ compare_effectiveness({ type: "agent", name: "code-validator", versions: ["1.0.0
|
|
|
112
112
|
omitted, including UluOps-specific content. Pass `render_profile: "core"` explicitly
|
|
113
113
|
to render without that content; both inline and file-write results report the effective profile.
|
|
114
114
|
|
|
115
|
+
`output_path` writes on the **MCP server host**, within `OUTPUT_BASE_DIR` (default:
|
|
116
|
+
server process cwd). Relative paths resolve from that cwd, even when a different
|
|
117
|
+
root is configured. The root must exist; missing directories below it are created.
|
|
118
|
+
Paths outside the root and traversal escaping it are refused. Existing symlinks in
|
|
119
|
+
the file or directories below the root are checked and refused before rendering. Existing files require `overwrite: true`. Remote clients
|
|
120
|
+
should omit `output_path` and consume `markdown` inline.
|
|
121
|
+
|
|
122
|
+
File responses retain the inline rendering metadata (`target`, `renderProfile`,
|
|
123
|
+
`selectedModel`, `promptHash`, `warnings`, and any SDK metadata when supplied) alongside `success`,
|
|
124
|
+
`output_path`, and UTF-8 `bytes`; `markdown` is written to disk. Warnings and optional
|
|
125
|
+
metadata have the same presence and values as inline output.
|
|
126
|
+
|
|
127
|
+
```jsonc
|
|
128
|
+
// Inline output for remote clients
|
|
129
|
+
render_definition({ type: "agent", name: "code-validator", target: "codex" })
|
|
130
|
+
// Write beneath the server cwd (or use an absolute path inside OUTPUT_BASE_DIR)
|
|
131
|
+
render_definition({ type: "agent", name: "code-validator", target: "codex", output_path: "output/code-validator.toml" })
|
|
132
|
+
// Explicit replacement retains rendering diagnostics
|
|
133
|
+
render_definition({ type: "agent", name: "code-validator", target: "codex", output_path: "output/code-validator.toml", overwrite: true })
|
|
134
|
+
```
|
|
135
|
+
|
|
115
136
|
### Definition management (P1)
|
|
116
137
|
| Tool | Description |
|
|
117
138
|
|------|-------------|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-definition.d.ts","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BtC,CAAC;AAEH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,
|
|
1
|
+
{"version":3,"file":"render-definition.d.ts","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BtC,CAAC;AAEH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,cAAc,GAC7B,IAAI,CA4HN"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Optionally write the markdown directly to a file via output_path.
|
|
6
6
|
*/
|
|
7
7
|
import { getDefaultType } from '../utils/session-state.js';
|
|
8
|
-
import { writeFile, mkdir, lstat, access } from 'node:fs/promises';
|
|
8
|
+
import { writeFile, mkdir, lstat, access, realpath } from 'node:fs/promises';
|
|
9
9
|
import { dirname, resolve, relative } from 'node:path';
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
import { DefinitionTypeWithDefaultSchema, createSuccessResponse, createErrorResponse, } from '../types/index.js';
|
|
@@ -41,7 +41,7 @@ export const RenderDefinitionInputSchema = z.object({
|
|
|
41
41
|
output_path: z
|
|
42
42
|
.string()
|
|
43
43
|
.min(1)
|
|
44
|
-
.describe('Write rendered output to this file path instead of returning it in the response. Written on the MCP server host\'s filesystem, not the caller\'s
|
|
44
|
+
.describe('Write rendered output to this file path instead of returning it in the response. Written on the MCP server host\'s filesystem, not the caller\'s. Must stay within OUTPUT_BASE_DIR (defaults to the server process cwd); relative paths resolve from that cwd. Symlink paths are refused. Remote callers should omit this and take the rendered output from the response.')
|
|
45
45
|
.optional(),
|
|
46
46
|
overwrite: z
|
|
47
47
|
.boolean()
|
|
@@ -61,7 +61,7 @@ export function registerRenderDefinitionTool(server, registryClient) {
|
|
|
61
61
|
renderProfile: result.renderProfile ?? effectiveRenderProfile,
|
|
62
62
|
};
|
|
63
63
|
}, { toolName: 'render_definition' });
|
|
64
|
-
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
|
|
64
|
+
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 on the MCP server host within OUTPUT_BASE_DIR (default: server cwd); omit it for inline output. File results retain rendering metadata and warnings.', RenderDefinitionInputSchema.shape, async (args) => {
|
|
65
65
|
const parsed = RenderDefinitionInputSchema.safeParse(args);
|
|
66
66
|
// RG4: this tool parses its own input, so resolve the session default
|
|
67
67
|
// here (the shared handler guard does it for createToolHandler tools).
|
|
@@ -72,53 +72,62 @@ export function registerRenderDefinitionTool(server, registryClient) {
|
|
|
72
72
|
if (!parsed.success || parsed.data.output_path === undefined) {
|
|
73
73
|
return baseHandler(args);
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
// Reject symlinks in output path to prevent symlink-following writes (CWE-59)
|
|
82
|
-
const pathStat = await lstat(absPath).catch(() => null);
|
|
83
|
-
if (pathStat?.isSymbolicLink() === true) {
|
|
84
|
-
return createErrorResponse('output_path must not be a symbolic link');
|
|
85
|
-
}
|
|
86
|
-
// Refuse to silently overwrite an existing regular file unless the
|
|
87
|
-
// caller has opted in with overwrite: true. Default-deny matches
|
|
88
|
-
// `cp --no-clobber` semantics and prevents agent-driven hallucinated
|
|
89
|
-
// paths from destroying user work without a clear signal.
|
|
90
|
-
if (!parsed.data.overwrite) {
|
|
91
|
-
const exists = await access(absPath).then(() => true).catch(() => false);
|
|
92
|
-
if (exists) {
|
|
93
|
-
return createErrorResponse(`output_path '${absPath}' already exists. Pass overwrite: true to replace it.`);
|
|
75
|
+
try {
|
|
76
|
+
// Validate output_path stays within OUTPUT_BASE_DIR
|
|
77
|
+
const outputBaseDir = getOutputBaseDir();
|
|
78
|
+
const absPath = resolve(parsed.data.output_path);
|
|
79
|
+
if (!absPath.startsWith(outputBaseDir + '/') && absPath !== outputBaseDir) {
|
|
80
|
+
return createErrorResponse(`output_path must resolve within ${outputBaseDir} — got ${absPath}`);
|
|
94
81
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
82
|
+
// The configured root may itself use a host alias (e.g., /tmp on macOS).
|
|
83
|
+
// Compare physical paths against that root after creating the parent.
|
|
84
|
+
const realBaseDir = await realpath(outputBaseDir);
|
|
85
|
+
// Reject symlinks in output path to prevent symlink-following writes (CWE-59)
|
|
86
|
+
const pathStat = await lstat(absPath).catch(() => null);
|
|
87
|
+
if (pathStat?.isSymbolicLink() === true) {
|
|
88
|
+
return createErrorResponse('output_path must not be a symbolic link');
|
|
89
|
+
}
|
|
90
|
+
// Refuse to silently overwrite an existing regular file unless the
|
|
91
|
+
// caller has opted in with overwrite: true. Default-deny matches
|
|
92
|
+
// `cp --no-clobber` semantics and prevents agent-driven hallucinated
|
|
93
|
+
// paths from destroying user work without a clear signal.
|
|
94
|
+
if (!parsed.data.overwrite) {
|
|
95
|
+
const exists = await access(absPath).then(() => true).catch(() => false);
|
|
96
|
+
if (exists) {
|
|
97
|
+
return createErrorResponse(`output_path '${absPath}' already exists. Pass overwrite: true to replace it.`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Verify no symlink in ancestor directories resolves outside the base dir
|
|
101
|
+
const rel = relative(outputBaseDir, absPath);
|
|
102
|
+
const segments = rel.split('/');
|
|
103
|
+
let walkPath = outputBaseDir;
|
|
104
|
+
for (const seg of segments.slice(0, -1)) {
|
|
105
|
+
walkPath = resolve(walkPath, seg);
|
|
106
|
+
const segStat = await lstat(walkPath).catch(() => null);
|
|
107
|
+
if (segStat?.isSymbolicLink() === true) {
|
|
108
|
+
return createErrorResponse('output_path contains a symbolic link in its directory path');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Narrow for the compiler: undefined resolvedType was either rejected
|
|
112
|
+
// above (no session default) or delegated to baseHandler (parse failure).
|
|
113
|
+
if (resolvedType === undefined) {
|
|
114
|
+
return await baseHandler(args);
|
|
105
115
|
}
|
|
106
|
-
}
|
|
107
|
-
// Narrow for the compiler: undefined resolvedType was either rejected
|
|
108
|
-
// above (no session default) or delegated to baseHandler (parse failure).
|
|
109
|
-
if (resolvedType === undefined) {
|
|
110
|
-
return baseHandler(args);
|
|
111
|
-
}
|
|
112
|
-
try {
|
|
113
116
|
const result = await registryClient.render.get(resolvedType, parsed.data.name, parsed.data.version, { target: parsed.data.target, model: parsed.data.model, renderProfile: parsed.data.render_profile ?? 'uluops-full' });
|
|
114
117
|
// SDK RenderResult guarantees markdown: string
|
|
115
|
-
const { markdown } = result;
|
|
118
|
+
const { markdown, ...metadata } = result;
|
|
116
119
|
if (typeof markdown !== 'string') {
|
|
117
120
|
return createErrorResponse('Render result missing markdown field — cannot write to file.');
|
|
118
121
|
}
|
|
119
122
|
await mkdir(dirname(absPath), { recursive: true });
|
|
120
|
-
await
|
|
123
|
+
const realParent = await realpath(dirname(absPath));
|
|
124
|
+
const realOutput = resolve(realParent, relative(dirname(absPath), absPath));
|
|
125
|
+
if (!realOutput.startsWith(realBaseDir + '/') && realOutput !== realBaseDir) {
|
|
126
|
+
return createErrorResponse('output_path resolves outside the allowed root via symlink');
|
|
127
|
+
}
|
|
128
|
+
await writeFile(absPath, markdown, { encoding: 'utf-8', flag: parsed.data.overwrite ? 'w' : 'wx' });
|
|
121
129
|
return createSuccessResponse({
|
|
130
|
+
...metadata,
|
|
122
131
|
success: true,
|
|
123
132
|
output_path: absPath,
|
|
124
133
|
bytes: Buffer.byteLength(markdown, 'utf-8'),
|
|
@@ -126,6 +135,9 @@ export function registerRenderDefinitionTool(server, registryClient) {
|
|
|
126
135
|
});
|
|
127
136
|
}
|
|
128
137
|
catch (error) {
|
|
138
|
+
if (error instanceof Error && 'code' in error && error.code === 'EEXIST') {
|
|
139
|
+
return createErrorResponse('output_path already exists. Pass overwrite: true to replace it.');
|
|
140
|
+
}
|
|
129
141
|
if (error instanceof z.ZodError) {
|
|
130
142
|
return mapZodErrorToMcp(error);
|
|
131
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-definition.js","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"render-definition.js","sourceRoot":"","sources":["../../src/tools/render-definition.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uluops/registry-mcp",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "MCP server for the UluOps Registry API — definition management, versioning, and analytics",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
65
|
-
"@uluops/registry-sdk": "^0.56.
|
|
65
|
+
"@uluops/registry-sdk": "^0.56.1",
|
|
66
66
|
"@uluops/sdk-core": "0.18.0",
|
|
67
67
|
"mcp-secure-server": "0.0.25-security",
|
|
68
68
|
"zod": "3.25.76"
|