TencentCloud/TencentDB-Agent-Memory · error · ParamRegistryError
Module '${mod.module}', param '${param.param_name}': param_v
Error message
Module '${mod.module}', param '${param.param_name}': param_value is required What it means
Every param must have an actual value: buildRegistry throws this when param.param_value is undefined or null. The registry exists to hold concrete parameter values, so a param without one is invalid and blocks loading.
Source
Thrown at MemoryCore/src/metadata/config/param-registry.ts:123
if (!param.param_name || typeof param.param_name !== "string") {
throw new ParamRegistryError(
`Module '${mod.module}': each param must have a 'param_name' string`,
);
}
if (!PARAM_NAME_RE.test(param.param_name)) {
throw new ParamRegistryError(
`Module '${mod.module}': invalid param_name '${param.param_name}': must match ${PARAM_NAME_RE}`,
);
}
if (seenParams.has(param.param_name)) {
throw new ParamRegistryError(
`Module '${mod.module}': duplicate param_name '${param.param_name}'`,
);
}
seenParams.add(param.param_name);
if (param.param_value === undefined || param.param_value === null) {
throw new ParamRegistryError(
`Module '${mod.module}', param '${param.param_name}': param_value is required`,
);
}
if (!param.description) {
throw new ParamRegistryError(
`Module '${mod.module}', param '${param.param_name}': description is required`,
);
}
if (
!Array.isArray(param.allowed_scopes) ||
param.allowed_scopes.length === 0
) {
throw new ParamRegistryError(
`Module '${mod.module}', param '${param.param_name}': allowed_scopes must be non-empty array`,
);
}
for (const scope of param.allowed_scopes) {
if (scope !== "global" && scope !== "user") {View on GitHub (pinned to 3efcd317b8)
Solutions
- Set a concrete param_value appropriate for the parameter's type
- Remove the param entry if it has no value yet
- Fix the generator/converter so it emits real values instead of null
- Pre-load validate that every param has param_value !== undefined && !== null
Example fix
// before
{ "param_name": "max_entries", "param_value": null, ... }
// after
{ "param_name": "max_entries", "param_value": 1000, ... } Defensive patterns
Strategy: validation
Validate before calling
for (const m of data.modules) {
for (const p of m.params ?? []) {
if (p.param_value === undefined || p.param_value === null) {
throw new Error(`${m.module}.${p.param_name} has no param_value`);
}
}
} Try / catch
try {
const registry = await loadParamRegistry();
} catch (e) {
if (e instanceof ParamRegistryError && e.message.includes('param_value is required')) {
console.error('Set a concrete value for the named param:', e.message);
} else throw e;
} Prevention
- Never ship templates with param_value: null; fill values before commit
- Make generators emit defaults for param_value
- Validate value presence in CI before loading the registry
When it happens
Trigger: A param entry in data.modules[i].params has no param_value field, or it is explicitly null/undefined, when loadParamRegistry builds the registry.
Common situations: Templates left with "param_value": null pending a real value; scripts that emit the key but skip values; YAML/JSON converted where empty values become null.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Module '${mod.module}' must have a description
- Module '${mod.module}': each param must have a 'param_name'
- Module '${mod.module}', param '${param.param_name}': descrip
- llm.provider=proxy 且 useMemorySystemUserKey=false 时必须显式 llm.
- teamId is required for an agent prompt setting
AI-assisted analysis of TencentCloud/TencentDB-Agent-Memory@3efcd317b8 (2026-09-01).
Data as JSON: /api/errors/686299d622bcd1c2.
Report an issue: GitHub.