centient 3.2.0 → 3.2.3
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 +40 -0
- package/dist/tools/memory-bank/pushToMemoryBank.js +1 -0
- package/dist/tools/memory-bank/pushToMemoryBank.js.map +1 -1
- package/dist/utils/rlvr/PythonSandbox.d.ts.map +1 -1
- package/dist/utils/rlvr/PythonSandbox.js +9 -8
- package/dist/utils/rlvr/PythonSandbox.js.map +1 -1
- package/dist/utils/rlvr/TypeScriptSandbox.d.ts.map +1 -1
- package/dist/utils/rlvr/TypeScriptSandbox.js +65 -65
- package/dist/utils/rlvr/TypeScriptSandbox.js.map +1 -1
- package/dist/utils/rlvr/python_executor.py +143 -144
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,46 @@ All notable changes to the MCP Server for Context Engineering.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.2.3] - 2026-01-13
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Memory Bank** - Remove debug markers from `push_to_memory_bank` that were polluting output
|
|
13
|
+
|
|
14
|
+
### Security
|
|
15
|
+
|
|
16
|
+
- **VM Sandbox** - Fix `this.constructor` escape vector (CVE-2026-22812 audit)
|
|
17
|
+
- **Python Sandbox** - Extended safe builtins for better security hardening
|
|
18
|
+
|
|
19
|
+
## [3.2.2] - 2026-01-13
|
|
20
|
+
|
|
21
|
+
### Security
|
|
22
|
+
|
|
23
|
+
- **Python Sandbox Hardening** - Critical security fixes for RLVR execution
|
|
24
|
+
- Block `getattr` in Python sandbox to prevent escape via attribute access
|
|
25
|
+
- Require RestrictedPython as mandatory dependency, remove unsafe fallback mode
|
|
26
|
+
- Prevents potential sandbox escape vectors in skill execution
|
|
27
|
+
|
|
28
|
+
### Documentation
|
|
29
|
+
|
|
30
|
+
- Added Discovery Module documentation (2 tools) to MCP_TOOLS_REFERENCE.md
|
|
31
|
+
- Added Channels Module documentation (5 tools) to MCP_TOOLS_REFERENCE.md
|
|
32
|
+
- Updated tool counts: 98 tools across 18 modules
|
|
33
|
+
- Synced DOCUMENTATION_INDEX.md and CLAUDE.md with current state
|
|
34
|
+
|
|
35
|
+
## [3.2.1] - 2026-01-13
|
|
36
|
+
|
|
37
|
+
### Documentation
|
|
38
|
+
|
|
39
|
+
- Added Discovery Module section to MCP_TOOLS_REFERENCE.md
|
|
40
|
+
- `discover_tools` - Search tools by keyword or category
|
|
41
|
+
- `get_tool_help` - Get detailed documentation for specific tools
|
|
42
|
+
- Added Channels Module section to MCP_TOOLS_REFERENCE.md
|
|
43
|
+
- Full API reference for all 5 channel tools
|
|
44
|
+
- Multi-agent coordination workflow diagram
|
|
45
|
+
- Updated DOCUMENTATION_INDEX.md with corrected counts and ADR-019
|
|
46
|
+
- Updated CLAUDE.md Code Organization section
|
|
47
|
+
|
|
8
48
|
## [3.2.0] - 2026-01-13
|
|
9
49
|
|
|
10
50
|
### Added
|
|
@@ -161,6 +161,7 @@ async function pushToMemoryBank(input) {
|
|
|
161
161
|
let result;
|
|
162
162
|
try {
|
|
163
163
|
result = await runPythonScriptJSON(scriptPath, scriptArgs, { timeout: 120000 });
|
|
164
|
+
console.error("[push_to_memory_bank] Python result:", JSON.stringify(result, null, 2));
|
|
164
165
|
}
|
|
165
166
|
finally {
|
|
166
167
|
prepared.cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushToMemoryBank.js","sourceRoot":"","sources":["../../../src/tools/memory-bank/pushToMemoryBank.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pushToMemoryBank.js","sourceRoot":"","sources":["../../../src/tools/memory-bank/pushToMemoryBank.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonSandbox.d.ts","sourceRoot":"","sources":["../../../src/utils/rlvr/PythonSandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PythonSandbox.d.ts","sourceRoot":"","sources":["../../../src/utils/rlvr/PythonSandbox.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EAEf,MAAM,YAAY,CAAC;AAMpB,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;;IAUvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAI1C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAsJ/D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B,OAAO,CAAC,QAAQ;YA4CF,oBAAoB;CAyBnC"}
|
|
@@ -8,10 +8,11 @@ export class PythonSandbox {
|
|
|
8
8
|
language = "python";
|
|
9
9
|
limits = { ...DEFAULT_LIMITS };
|
|
10
10
|
initialized = false;
|
|
11
|
-
pythonPath
|
|
11
|
+
pythonPath;
|
|
12
12
|
executorPath;
|
|
13
13
|
constructor() {
|
|
14
14
|
this.executorPath = path.join(__dirname, "python_executor.py");
|
|
15
|
+
this.pythonPath = process.env.RLVR_PYTHON_PATH || "python3";
|
|
15
16
|
}
|
|
16
17
|
async initialize() {
|
|
17
18
|
try {
|
|
@@ -154,26 +155,26 @@ export class PythonSandbox {
|
|
|
154
155
|
const match = trimmed.match(/^def\s+(\w+)/);
|
|
155
156
|
if (match) {
|
|
156
157
|
const funcName = match[1];
|
|
157
|
-
return `${trimmed}\
|
|
158
|
+
return `${trimmed}\nRLVR_RESULT = ${funcName}(RLVR_INPUT)`;
|
|
158
159
|
}
|
|
159
160
|
}
|
|
160
161
|
return `
|
|
161
|
-
|
|
162
|
-
if callable(
|
|
163
|
-
|
|
162
|
+
rlvr_fn = ${trimmed}
|
|
163
|
+
if callable(rlvr_fn):
|
|
164
|
+
RLVR_RESULT = rlvr_fn(RLVR_INPUT)
|
|
164
165
|
else:
|
|
165
|
-
|
|
166
|
+
RLVR_RESULT = rlvr_fn
|
|
166
167
|
`.trim();
|
|
167
168
|
}
|
|
168
169
|
if (trimmed.startsWith("def ")) {
|
|
169
170
|
const match = trimmed.match(/^def\s+(\w+)/);
|
|
170
171
|
if (match) {
|
|
171
172
|
const funcName = match[1];
|
|
172
|
-
return `${trimmed}\
|
|
173
|
+
return `${trimmed}\nRLVR_RESULT = ${funcName}(RLVR_INPUT)`;
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
return `
|
|
176
|
-
input =
|
|
177
|
+
input = RLVR_INPUT
|
|
177
178
|
${code}
|
|
178
179
|
`.trim();
|
|
179
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PythonSandbox.js","sourceRoot":"","sources":["../../../src/utils/rlvr/PythonSandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PythonSandbox.js","sourceRoot":"","sources":["../../../src/utils/rlvr/PythonSandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeScriptSandbox.d.ts","sourceRoot":"","sources":["../../../src/utils/rlvr/TypeScriptSandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TypeScriptSandbox.d.ts","sourceRoot":"","sources":["../../../src/utils/rlvr/TypeScriptSandbox.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EAGf,MAAM,YAAY,CAAC;AAEpB,qBAAa,iBAAkB,YAAW,gBAAgB;IACxD,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,WAAW,CAAS;IAEtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAI1C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAiI/D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,OAAO,CAAC,oBAAoB;IA8F5B,OAAO,CAAC,QAAQ;IA6BhB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,mBAAmB;CAQ5B"}
|
|
@@ -117,73 +117,73 @@ export class TypeScriptSandbox {
|
|
|
117
117
|
}
|
|
118
118
|
createSandboxContext(logs, stdoutHandler) {
|
|
119
119
|
const now = Date.now();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
},
|
|
120
|
+
const sandbox = Object.create(null);
|
|
121
|
+
sandbox.JSON = JSON;
|
|
122
|
+
sandbox.Math = Math;
|
|
123
|
+
sandbox.Date = Date;
|
|
124
|
+
sandbox.Array = Array;
|
|
125
|
+
sandbox.Object = Object;
|
|
126
|
+
sandbox.String = String;
|
|
127
|
+
sandbox.Number = Number;
|
|
128
|
+
sandbox.Boolean = Boolean;
|
|
129
|
+
sandbox.RegExp = RegExp;
|
|
130
|
+
sandbox.Map = Map;
|
|
131
|
+
sandbox.Set = Set;
|
|
132
|
+
sandbox.WeakMap = WeakMap;
|
|
133
|
+
sandbox.WeakSet = WeakSet;
|
|
134
|
+
sandbox.Promise = Promise;
|
|
135
|
+
sandbox.Symbol = Symbol;
|
|
136
|
+
sandbox.Error = Error;
|
|
137
|
+
sandbox.TypeError = TypeError;
|
|
138
|
+
sandbox.RangeError = RangeError;
|
|
139
|
+
sandbox.SyntaxError = SyntaxError;
|
|
140
|
+
sandbox.ReferenceError = ReferenceError;
|
|
141
|
+
sandbox.encodeURIComponent = encodeURIComponent;
|
|
142
|
+
sandbox.decodeURIComponent = decodeURIComponent;
|
|
143
|
+
sandbox.encodeURI = encodeURI;
|
|
144
|
+
sandbox.decodeURI = decodeURI;
|
|
145
|
+
sandbox.setTimeout = undefined;
|
|
146
|
+
sandbox.setInterval = undefined;
|
|
147
|
+
sandbox.setImmediate = undefined;
|
|
148
|
+
sandbox.clearTimeout = undefined;
|
|
149
|
+
sandbox.clearInterval = undefined;
|
|
150
|
+
sandbox.clearImmediate = undefined;
|
|
151
|
+
sandbox.console = {
|
|
152
|
+
log: (...args) => {
|
|
153
|
+
const message = args.map((a) => this.stringify(a)).join(" ");
|
|
154
|
+
logs.push({ level: "log", message, timestamp: Date.now() - now });
|
|
155
|
+
stdoutHandler(message);
|
|
156
|
+
},
|
|
157
|
+
warn: (...args) => {
|
|
158
|
+
const message = args.map((a) => this.stringify(a)).join(" ");
|
|
159
|
+
logs.push({ level: "warn", message, timestamp: Date.now() - now });
|
|
160
|
+
},
|
|
161
|
+
error: (...args) => {
|
|
162
|
+
const message = args.map((a) => this.stringify(a)).join(" ");
|
|
163
|
+
logs.push({ level: "error", message, timestamp: Date.now() - now });
|
|
164
|
+
},
|
|
165
|
+
debug: (...args) => {
|
|
166
|
+
const message = args.map((a) => this.stringify(a)).join(" ");
|
|
167
|
+
logs.push({ level: "debug", message, timestamp: Date.now() - now });
|
|
169
168
|
},
|
|
170
|
-
require: undefined,
|
|
171
|
-
import: undefined,
|
|
172
|
-
module: undefined,
|
|
173
|
-
exports: undefined,
|
|
174
|
-
__dirname: undefined,
|
|
175
|
-
__filename: undefined,
|
|
176
|
-
process: undefined,
|
|
177
|
-
global: undefined,
|
|
178
|
-
globalThis: undefined,
|
|
179
|
-
Buffer: undefined,
|
|
180
|
-
Uint8Array: undefined,
|
|
181
|
-
fetch: undefined,
|
|
182
|
-
XMLHttpRequest: undefined,
|
|
183
|
-
WebSocket: undefined,
|
|
184
|
-
__INPUT__: undefined,
|
|
185
|
-
__RESULT__: undefined,
|
|
186
169
|
};
|
|
170
|
+
sandbox.require = undefined;
|
|
171
|
+
sandbox.import = undefined;
|
|
172
|
+
sandbox.module = undefined;
|
|
173
|
+
sandbox.exports = undefined;
|
|
174
|
+
sandbox.__dirname = undefined;
|
|
175
|
+
sandbox.__filename = undefined;
|
|
176
|
+
sandbox.process = undefined;
|
|
177
|
+
sandbox.global = undefined;
|
|
178
|
+
sandbox.globalThis = undefined;
|
|
179
|
+
sandbox.Buffer = undefined;
|
|
180
|
+
sandbox.Uint8Array = undefined;
|
|
181
|
+
sandbox.fetch = undefined;
|
|
182
|
+
sandbox.XMLHttpRequest = undefined;
|
|
183
|
+
sandbox.WebSocket = undefined;
|
|
184
|
+
sandbox.__INPUT__ = undefined;
|
|
185
|
+
sandbox.__RESULT__ = undefined;
|
|
186
|
+
return sandbox;
|
|
187
187
|
}
|
|
188
188
|
wrapCode(code) {
|
|
189
189
|
const trimmed = code.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeScriptSandbox.js","sourceRoot":"","sources":["../../../src/utils/rlvr/TypeScriptSandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TypeScriptSandbox.js","sourceRoot":"","sources":["../../../src/utils/rlvr/TypeScriptSandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,152 +2,161 @@
|
|
|
2
2
|
"""
|
|
3
3
|
RLVR Python Sandbox Executor
|
|
4
4
|
|
|
5
|
-
Executes Python code in a restricted environment.
|
|
6
|
-
|
|
5
|
+
Executes Python code in a restricted environment using RestrictedPython.
|
|
6
|
+
RestrictedPython is REQUIRED - no fallback mode for security reasons.
|
|
7
7
|
|
|
8
8
|
Communication protocol:
|
|
9
9
|
- Reads JSON from stdin: {"code": "...", "input": ...}
|
|
10
10
|
- Writes JSON to stdout: {"status": "success|error|timeout", "returnValue": ..., "stdout": "...", "stderr": "..."}
|
|
11
11
|
|
|
12
12
|
Security measures:
|
|
13
|
+
- RestrictedPython compiler (required, no fallback)
|
|
13
14
|
- No file system access
|
|
14
15
|
- No network access
|
|
15
16
|
- No subprocess spawning
|
|
16
|
-
- No module imports
|
|
17
|
-
-
|
|
17
|
+
- No dangerous module imports
|
|
18
|
+
- Guarded attribute access (blocks __class__.__bases__ escape)
|
|
19
|
+
|
|
20
|
+
Install: pip install RestrictedPython
|
|
18
21
|
"""
|
|
19
22
|
|
|
20
23
|
import sys
|
|
21
24
|
import json
|
|
22
25
|
import io
|
|
26
|
+
import re
|
|
23
27
|
import traceback
|
|
24
28
|
from contextlib import redirect_stdout, redirect_stderr
|
|
25
29
|
from typing import Any, Dict
|
|
26
30
|
|
|
27
|
-
#
|
|
31
|
+
# RestrictedPython is REQUIRED - no fallback mode
|
|
28
32
|
try:
|
|
29
33
|
from RestrictedPython import compile_restricted, safe_globals
|
|
30
34
|
from RestrictedPython.Guards import safe_builtins, guarded_iter_unpack_sequence
|
|
31
35
|
from RestrictedPython.Eval import default_guarded_getiter, default_guarded_getitem
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
'tuple': tuple,
|
|
47
|
-
'set': set,
|
|
48
|
-
'frozenset': frozenset,
|
|
49
|
-
'bytes': bytes,
|
|
50
|
-
'bytearray': bytearray,
|
|
51
|
-
|
|
52
|
-
# Type checking
|
|
53
|
-
'type': type,
|
|
54
|
-
'isinstance': isinstance,
|
|
55
|
-
'issubclass': issubclass,
|
|
56
|
-
|
|
57
|
-
# Math and numeric
|
|
58
|
-
'abs': abs,
|
|
59
|
-
'round': round,
|
|
60
|
-
'min': min,
|
|
61
|
-
'max': max,
|
|
62
|
-
'sum': sum,
|
|
63
|
-
'pow': pow,
|
|
64
|
-
'divmod': divmod,
|
|
65
|
-
|
|
66
|
-
# Iterables
|
|
67
|
-
'len': len,
|
|
68
|
-
'range': range,
|
|
69
|
-
'enumerate': enumerate,
|
|
70
|
-
'zip': zip,
|
|
71
|
-
'map': map,
|
|
72
|
-
'filter': filter,
|
|
73
|
-
'reversed': reversed,
|
|
74
|
-
'sorted': sorted,
|
|
75
|
-
'all': all,
|
|
76
|
-
'any': any,
|
|
77
|
-
|
|
78
|
-
# String/repr
|
|
79
|
-
'repr': repr,
|
|
80
|
-
'ascii': ascii,
|
|
81
|
-
'chr': chr,
|
|
82
|
-
'ord': ord,
|
|
83
|
-
'bin': bin,
|
|
84
|
-
'hex': hex,
|
|
85
|
-
'oct': oct,
|
|
86
|
-
'format': format,
|
|
87
|
-
|
|
88
|
-
# Object inspection (safe subset)
|
|
89
|
-
'hasattr': hasattr,
|
|
90
|
-
'getattr': getattr,
|
|
91
|
-
'callable': callable,
|
|
92
|
-
'id': id,
|
|
93
|
-
'hash': hash,
|
|
94
|
-
|
|
95
|
-
# Exceptions
|
|
96
|
-
'Exception': Exception,
|
|
97
|
-
'ValueError': ValueError,
|
|
98
|
-
'TypeError': TypeError,
|
|
99
|
-
'KeyError': KeyError,
|
|
100
|
-
'IndexError': IndexError,
|
|
101
|
-
'AttributeError': AttributeError,
|
|
102
|
-
'RuntimeError': RuntimeError,
|
|
103
|
-
'StopIteration': StopIteration,
|
|
104
|
-
'ZeroDivisionError': ZeroDivisionError,
|
|
105
|
-
|
|
106
|
-
# Constants
|
|
107
|
-
'True': True,
|
|
108
|
-
'False': False,
|
|
109
|
-
'None': None,
|
|
110
|
-
|
|
111
|
-
# Print (captured)
|
|
112
|
-
'print': print,
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
# Explicitly blocked - should NOT be available
|
|
116
|
-
BLOCKED = {
|
|
117
|
-
'open', 'file', 'input', 'raw_input',
|
|
118
|
-
'exec', 'eval', 'compile',
|
|
119
|
-
'__import__', 'import',
|
|
120
|
-
'globals', 'locals', 'vars', 'dir',
|
|
121
|
-
'setattr', 'delattr',
|
|
122
|
-
'exit', 'quit',
|
|
123
|
-
'help', 'license', 'credits', 'copyright',
|
|
124
|
-
}
|
|
36
|
+
except ImportError as e:
|
|
37
|
+
# Fatal error - RestrictedPython is required for security
|
|
38
|
+
print(json.dumps({
|
|
39
|
+
'status': 'error',
|
|
40
|
+
'returnValue': None,
|
|
41
|
+
'stdout': '',
|
|
42
|
+
'stderr': '',
|
|
43
|
+
'error': {
|
|
44
|
+
'type': 'SecurityError',
|
|
45
|
+
'message': 'RestrictedPython is required but not installed. '
|
|
46
|
+
'Install with: pip install RestrictedPython',
|
|
47
|
+
},
|
|
48
|
+
}))
|
|
49
|
+
sys.exit(1)
|
|
125
50
|
|
|
126
51
|
|
|
127
52
|
def create_safe_globals(input_value: Any) -> Dict[str, Any]:
|
|
128
|
-
"""Create a restricted global namespace for code execution.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
53
|
+
"""Create a restricted global namespace for code execution using RestrictedPython.
|
|
54
|
+
|
|
55
|
+
Includes additional safe builtins beyond RestrictedPython defaults:
|
|
56
|
+
- Collection functions: list, dict, set, tuple, frozenset
|
|
57
|
+
- Iteration: range, enumerate, zip, map, filter, reversed, sorted
|
|
58
|
+
- Aggregation: sum, min, max, all, any, len
|
|
59
|
+
- Math: abs, round, pow, divmod
|
|
60
|
+
- Type conversion: int, float, str, bool, bytes
|
|
61
|
+
- Other safe functions: repr, hash, slice, iter, next
|
|
62
|
+
"""
|
|
63
|
+
restricted_globals = dict(safe_globals)
|
|
64
|
+
|
|
65
|
+
# Start with safe_builtins as base
|
|
66
|
+
extended_builtins = dict(safe_builtins)
|
|
67
|
+
|
|
68
|
+
# Add safe collection constructors
|
|
69
|
+
extended_builtins['list'] = list
|
|
70
|
+
extended_builtins['dict'] = dict
|
|
71
|
+
extended_builtins['set'] = set
|
|
72
|
+
extended_builtins['tuple'] = tuple
|
|
73
|
+
extended_builtins['frozenset'] = frozenset
|
|
74
|
+
|
|
75
|
+
# Add safe iteration functions
|
|
76
|
+
extended_builtins['range'] = range
|
|
77
|
+
extended_builtins['enumerate'] = enumerate
|
|
78
|
+
extended_builtins['zip'] = zip
|
|
79
|
+
extended_builtins['map'] = map
|
|
80
|
+
extended_builtins['filter'] = filter
|
|
81
|
+
extended_builtins['reversed'] = reversed
|
|
82
|
+
extended_builtins['sorted'] = sorted
|
|
83
|
+
|
|
84
|
+
# Add safe aggregation functions
|
|
85
|
+
extended_builtins['sum'] = sum
|
|
86
|
+
extended_builtins['min'] = min
|
|
87
|
+
extended_builtins['max'] = max
|
|
88
|
+
extended_builtins['all'] = all
|
|
89
|
+
extended_builtins['any'] = any
|
|
90
|
+
extended_builtins['len'] = len
|
|
91
|
+
|
|
92
|
+
# Add safe math functions
|
|
93
|
+
extended_builtins['abs'] = abs
|
|
94
|
+
extended_builtins['round'] = round
|
|
95
|
+
extended_builtins['pow'] = pow
|
|
96
|
+
extended_builtins['divmod'] = divmod
|
|
97
|
+
|
|
98
|
+
# Add safe type conversion
|
|
99
|
+
extended_builtins['int'] = int
|
|
100
|
+
extended_builtins['float'] = float
|
|
101
|
+
extended_builtins['str'] = str
|
|
102
|
+
extended_builtins['bool'] = bool
|
|
103
|
+
extended_builtins['bytes'] = bytes
|
|
104
|
+
|
|
105
|
+
# Add other safe functions
|
|
106
|
+
extended_builtins['repr'] = repr
|
|
107
|
+
extended_builtins['hash'] = hash
|
|
108
|
+
extended_builtins['slice'] = slice
|
|
109
|
+
extended_builtins['iter'] = iter
|
|
110
|
+
extended_builtins['next'] = next
|
|
111
|
+
|
|
112
|
+
restricted_globals['__builtins__'] = extended_builtins
|
|
113
|
+
restricted_globals['_getiter_'] = default_guarded_getiter
|
|
114
|
+
restricted_globals['_getitem_'] = default_guarded_getitem
|
|
115
|
+
restricted_globals['_iter_unpack_sequence_'] = guarded_iter_unpack_sequence
|
|
116
|
+
restricted_globals['RLVR_INPUT'] = input_value
|
|
117
|
+
restricted_globals['print'] = print # Allow print for output capture
|
|
118
|
+
return restricted_globals
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def wrap_code(code: str) -> str:
|
|
122
|
+
"""Wrap code to capture return value, similar to TypeScript sandbox.
|
|
123
|
+
|
|
124
|
+
Handles:
|
|
125
|
+
- Lambda expressions: wrap to call with RLVR_INPUT
|
|
126
|
+
- Function definitions: wrap to call with RLVR_INPUT
|
|
127
|
+
- Multi-line code: wrap in function to capture result
|
|
128
|
+
- Simple expressions: assign to result
|
|
129
|
+
"""
|
|
130
|
+
trimmed = code.strip()
|
|
131
|
+
|
|
132
|
+
# Lambda expression - call it with input
|
|
133
|
+
if trimmed.startswith('lambda '):
|
|
134
|
+
return f"RLVR_RESULT = ({trimmed})(RLVR_INPUT)"
|
|
135
|
+
|
|
136
|
+
# Function definition - define and call with input
|
|
137
|
+
if trimmed.startswith('def '):
|
|
138
|
+
# Extract function name
|
|
139
|
+
match = re.match(r'def\s+(\w+)\s*\(', trimmed)
|
|
140
|
+
if match:
|
|
141
|
+
func_name = match.group(1)
|
|
142
|
+
return f"{trimmed}\nRLVR_RESULT = {func_name}(RLVR_INPUT)"
|
|
143
|
+
|
|
144
|
+
# Multi-line code or statements - look for result variable
|
|
145
|
+
if '\n' in trimmed or trimmed.endswith(':'):
|
|
146
|
+
return code
|
|
147
|
+
|
|
148
|
+
# Simple expression - if it doesn't have result assignment, wrap it
|
|
149
|
+
if not any(trimmed.startswith(prefix) for prefix in ['result =', 'RLVR_RESULT =', '_result_ =']):
|
|
150
|
+
# Check if it's an expression (no assignment, no statement keywords)
|
|
151
|
+
statement_keywords = ['if ', 'for ', 'while ', 'with ', 'try:', 'class ', 'import ', 'from ', 'raise ', 'assert ']
|
|
152
|
+
if not any(trimmed.startswith(kw) for kw in statement_keywords) and '=' not in trimmed.split('(')[0]:
|
|
153
|
+
return f"RLVR_RESULT = {trimmed}"
|
|
154
|
+
|
|
155
|
+
return code
|
|
147
156
|
|
|
148
157
|
|
|
149
158
|
def execute_code(code: str, input_value: Any) -> Dict[str, Any]:
|
|
150
|
-
"""Execute code in restricted environment
|
|
159
|
+
"""Execute code in restricted environment using RestrictedPython."""
|
|
151
160
|
stdout_capture = io.StringIO()
|
|
152
161
|
stderr_capture = io.StringIO()
|
|
153
162
|
|
|
@@ -157,34 +166,24 @@ def execute_code(code: str, input_value: Any) -> Dict[str, Any]:
|
|
|
157
166
|
'stdout': '',
|
|
158
167
|
'stderr': '',
|
|
159
168
|
'error': None,
|
|
160
|
-
'restrictedMode': 'RestrictedPython'
|
|
169
|
+
'restrictedMode': 'RestrictedPython',
|
|
161
170
|
}
|
|
162
171
|
|
|
163
172
|
try:
|
|
164
173
|
# Create safe globals
|
|
165
174
|
safe_globals_dict = create_safe_globals(input_value)
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
result['error'] = {
|
|
179
|
-
'type': 'CompilationError',
|
|
180
|
-
'message': '\n'.join(byte_code.errors),
|
|
181
|
-
}
|
|
182
|
-
return result
|
|
183
|
-
compiled_code = byte_code.code
|
|
184
|
-
else:
|
|
185
|
-
# Standard compile with AST validation would go here
|
|
186
|
-
# For now, just compile normally (relies on restricted builtins)
|
|
187
|
-
compiled_code = compile(code, '<pattern>', 'exec')
|
|
175
|
+
|
|
176
|
+
# Wrap code to capture return value
|
|
177
|
+
wrapped_code = wrap_code(code)
|
|
178
|
+
|
|
179
|
+
# Compile code with RestrictedPython
|
|
180
|
+
# Note: compile_restricted returns code object directly in RestrictedPython 8.x
|
|
181
|
+
# Compilation errors are raised as exceptions (SyntaxError, etc.)
|
|
182
|
+
compiled_code = compile_restricted(
|
|
183
|
+
wrapped_code,
|
|
184
|
+
filename='<pattern>',
|
|
185
|
+
mode='exec'
|
|
186
|
+
)
|
|
188
187
|
|
|
189
188
|
# Execute with output capture
|
|
190
189
|
# Use same dict for globals and locals to enable recursive functions
|
|
@@ -192,9 +191,9 @@ def execute_code(code: str, input_value: Any) -> Dict[str, Any]:
|
|
|
192
191
|
with redirect_stdout(stdout_capture), redirect_stderr(stderr_capture):
|
|
193
192
|
exec(compiled_code, execution_namespace, execution_namespace)
|
|
194
193
|
|
|
195
|
-
# Get return value (check for
|
|
196
|
-
if '
|
|
197
|
-
result['returnValue'] = execution_namespace['
|
|
194
|
+
# Get return value (check for RLVR_RESULT or last expression)
|
|
195
|
+
if 'RLVR_RESULT' in execution_namespace:
|
|
196
|
+
result['returnValue'] = execution_namespace['RLVR_RESULT']
|
|
198
197
|
elif '_result_' in execution_namespace:
|
|
199
198
|
result['returnValue'] = execution_namespace['_result_']
|
|
200
199
|
elif 'result' in execution_namespace:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "centient",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.3",
|
|
4
4
|
"description": "MCP server for context engineering operations with handoff protocol, health monitoring, session branching with visualization, and query-based artifact loading",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|