@weave-kit/engine 0.3.1 → 0.4.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.
- package/README.md +6 -1
- package/dist/adapters/mcp/generate.d.ts +16 -9
- package/dist/adapters/mcp/generate.d.ts.map +1 -1
- package/dist/adapters/mcp/generate.js +107 -195
- package/dist/adapters/mcp/generate.js.map +1 -1
- package/dist/adapters/mcp/tools.d.ts +5 -6
- package/dist/adapters/mcp/tools.d.ts.map +1 -1
- package/dist/adapters/mcp/tools.js +36 -21
- package/dist/adapters/mcp/tools.js.map +1 -1
- package/dist/adapters/mcp/types.d.ts +3 -3
- package/dist/adapters/mcp/types.d.ts.map +1 -1
- package/dist/adapters/mcp/types.js +2 -2
- package/dist/adapters/mcp/types.js.map +1 -1
- package/dist/core/tools/values.d.ts +13 -9
- package/dist/core/tools/values.d.ts.map +1 -1
- package/dist/core/tools/values.js +14 -11
- package/dist/core/tools/values.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,9 @@ write.
|
|
|
47
47
|
stays a derived cache.
|
|
48
48
|
- **Schema as the source of truth** — `objects/<name>/schema.json` drives the tables, REST API and MCP
|
|
49
49
|
surface; state-diff migrations to PostgreSQL.
|
|
50
|
+
- **Custom field types** — register business-semantic types (`money`, `address`, …) as thin, namespaced
|
|
51
|
+
layers over a built-in primitive; they inherit storage, REST/MCP/OpenAPI schemas and generated
|
|
52
|
+
types. Declared in a project-local, Git-committed `field-types/` directory.
|
|
50
53
|
- **Governed REST API** — object CRUD with row-level (`all`/`own`/`team`) and field-level RBAC and a
|
|
51
54
|
uniform error contract.
|
|
52
55
|
- **MCP tool surface** — a streamable HTTP endpoint at `/mcp` with a per-identity tool surface and
|
|
@@ -95,7 +98,7 @@ Full documentation: **[docs.weavekit.io/engine](https://docs.weavekit.io/engine)
|
|
|
95
98
|
- [Git-versioned metadata](https://docs.weavekit.io/engine/guides/git-versioned-metadata) — your data model as reviewable Git commits
|
|
96
99
|
- [Schema guide](https://docs.weavekit.io/engine/guides/schema) · [RBAC](https://docs.weavekit.io/engine/guides/rbac) · [Formulas](https://docs.weavekit.io/engine/guides/formulas) · [Audit](https://docs.weavekit.io/engine/guides/audit)
|
|
97
100
|
- [CLI reference](https://docs.weavekit.io/engine/guides/cli) · [MCP](https://docs.weavekit.io/engine/guides/mcp) · [Script hooks](https://docs.weavekit.io/engine/guides/script-hooks)
|
|
98
|
-
- [Custom tools & guardrails](https://docs.weavekit.io/engine/guides/custom-tools-and-guardrails) · [Quotas](https://docs.weavekit.io/engine/guides/quotas) · [Inbound events](https://docs.weavekit.io/engine/guides/ingress)
|
|
101
|
+
- [Custom tools & guardrails](https://docs.weavekit.io/engine/guides/custom-tools-and-guardrails) · [Custom field types](https://docs.weavekit.io/engine/reference/custom-field-types) · [Quotas](https://docs.weavekit.io/engine/guides/quotas) · [Inbound events](https://docs.weavekit.io/engine/guides/ingress)
|
|
99
102
|
- [Public API & dependency budget](https://docs.weavekit.io/engine/reference/public-api)
|
|
100
103
|
- [Practices & operations](https://docs.weavekit.io/engine/practices/existing-crm-to-mcp) — real integration and deployment walkthroughs
|
|
101
104
|
|
|
@@ -140,6 +143,8 @@ await engine.app.listen({ port: 3000 });
|
|
|
140
143
|
| `weave connect` | Connect a self-hosted engine out to a governance tunnel endpoint |
|
|
141
144
|
| `weave object:create <name>` | Scaffold `objects/<name>/schema.json` + `server.js` hooks |
|
|
142
145
|
| `weave field:add <object>` | Add a validated field to a schema |
|
|
146
|
+
| `weave field-type:list` | List built-in + registered field types |
|
|
147
|
+
| `weave field-type:check` | Validate registrations + schemas against the registry |
|
|
143
148
|
| `weave module:add` / `module:remove <name>` | Enable/disable an optional subsystem (audit/script) |
|
|
144
149
|
|
|
145
150
|
## Object-level types
|
|
@@ -1,22 +1,29 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type FieldTypeRegistry } from '../../core/index.js';
|
|
3
|
-
import { READ_SCOPES } from '../../core/index.js';
|
|
1
|
+
import type { RbacSubject, ToolDefinition } from '../../core/index.js';
|
|
4
2
|
import type { ToolExecutor } from '../../runtime/tools/index.js';
|
|
5
|
-
import type {
|
|
6
|
-
/**
|
|
7
|
-
|
|
3
|
+
import type { McpEngine, McpToolSpec } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Compile the MCP tool surface for one subject.
|
|
6
|
+
*
|
|
7
|
+
* The surface is a **fixed registry**: introspection (`list_objects` /
|
|
8
|
+
* `describe_object`) plus one generic CRUD tool per capability, each taking the
|
|
9
|
+
* target object name as an argument — so the surface does **not** grow with the
|
|
10
|
+
* number of objects. RBAC decides which capabilities appear (an op is exposed
|
|
11
|
+
* only when the subject may perform it on at least one object); `tools/call`
|
|
12
|
+
* dispatches into the same handlers, whose data-access calls re-enforce RBAC per
|
|
13
|
+
* object (the double layer).
|
|
14
|
+
*/
|
|
15
|
+
/** a compiled MCP tool (per-session; the surface is filtered by RBAC) */
|
|
8
16
|
export interface CompiledTool {
|
|
9
17
|
spec: McpToolSpec;
|
|
10
18
|
objectName: string | undefined;
|
|
11
19
|
}
|
|
12
20
|
/**
|
|
13
|
-
* Compile the full tool surface for a subject: CRUD tools
|
|
14
|
-
* subject
|
|
21
|
+
* Compile the full tool surface for a subject: the generic CRUD tools the
|
|
22
|
+
* subject's RBAC permits, the always-on introspection tools, and the
|
|
15
23
|
* subject-visible custom tools (M10b, roles-filtered by the executor).
|
|
16
24
|
*/
|
|
17
25
|
export declare function compileToolsFor(engine: McpEngine, subject: RbacSubject, custom?: {
|
|
18
26
|
defs: ToolDefinition[];
|
|
19
27
|
executor: ToolExecutor;
|
|
20
28
|
}): CompiledTool[];
|
|
21
|
-
export { READ_SCOPES };
|
|
22
29
|
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AASjE,OAAO,KAAK,EAAc,SAAS,EAAiB,WAAW,EAAmB,MAAM,YAAY,CAAC;AAErG;;;;;;;;;;GAUG;AAEH,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAiLD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC1D,YAAY,EAAE,CAiChB"}
|
|
@@ -1,266 +1,179 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DEFAULT_FIELD_TYPE_REGISTRY, fieldBase, } from '../../core/index.js';
|
|
1
|
+
import { INTROSPECTION_TOOLS, REGISTRY_TOOLS, resolvePermission } from '../../core/index.js';
|
|
3
2
|
import { ACTION_PREFIXES } from '../../core/audit/index.js';
|
|
4
|
-
import {
|
|
5
|
-
import { READ_SCOPES } from '../../core/index.js';
|
|
6
|
-
import { createHandler, deleteHandler, getHandler, searchHandler, updateHandler } from './tools.js';
|
|
3
|
+
import { createRecordHandler, deleteRecordHandler, getRecordHandler, searchRecordsHandler, updateRecordHandler, } from './tools.js';
|
|
7
4
|
import { describeObjectHandler, listObjectsHandler } from './introspection.js';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return fieldValueSchema(pk, defs, registry);
|
|
25
|
-
}
|
|
26
|
-
/** JSON Schema for a single field *value* (enum → literal set, relation → pk) */
|
|
27
|
-
export function fieldValueSchema(field, defs, registry = DEFAULT_FIELD_TYPE_REGISTRY) {
|
|
28
|
-
const base = fieldBase(registry, field.type);
|
|
29
|
-
const f = field;
|
|
30
|
-
switch (base) {
|
|
31
|
-
case FIELD_TYPES.STRING:
|
|
32
|
-
case FIELD_TYPES.TEXT:
|
|
33
|
-
case FIELD_TYPES.DATETIME:
|
|
34
|
-
case FIELD_TYPES.DATE:
|
|
35
|
-
case FIELD_TYPES.SEQ_NO:
|
|
36
|
-
return { type: 'string' };
|
|
37
|
-
case FIELD_TYPES.INTEGER:
|
|
38
|
-
return { type: 'integer' };
|
|
39
|
-
case FIELD_TYPES.NUMBER:
|
|
40
|
-
case FIELD_TYPES.CURRENCY:
|
|
41
|
-
return { type: 'number' };
|
|
42
|
-
case FIELD_TYPES.BOOLEAN:
|
|
43
|
-
return { type: 'boolean' };
|
|
44
|
-
case FIELD_TYPES.JSON:
|
|
45
|
-
return { type: 'object' };
|
|
46
|
-
case FIELD_TYPES.ENUM: {
|
|
47
|
-
const options = f.options ?? [];
|
|
48
|
-
if (f.multiple === true) {
|
|
49
|
-
return { type: 'array', items: { type: 'string', enum: options } };
|
|
50
|
-
}
|
|
51
|
-
return { type: 'string', enum: options };
|
|
52
|
-
}
|
|
53
|
-
case FIELD_TYPES.RELATION:
|
|
54
|
-
return pkSchema(String(f.target), defs, registry);
|
|
55
|
-
case FIELD_TYPES.MULTI_RELATION:
|
|
56
|
-
return { type: 'array', items: pkSchema(String(f.target), defs, registry) };
|
|
57
|
-
case FIELD_TYPES.DETAILS:
|
|
58
|
-
return { type: 'array', items: { type: 'object' } };
|
|
59
|
-
default:
|
|
60
|
-
return { type: 'string' };
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/** read output fields for a subject: every field minus the RBAC `exclude` list */
|
|
64
|
-
function readableFields(def, perm) {
|
|
65
|
-
const excluded = new Set(perm.exclude);
|
|
66
|
-
return def.fields.filter((f) => !excluded.has(f.name));
|
|
67
|
-
}
|
|
68
|
-
/** fields a subject can write on create: non-readonly, non-excluded, minus details (managed via child CRUD) */
|
|
69
|
-
function writableCreateFields(def, perm) {
|
|
70
|
-
const excluded = new Set(perm.exclude);
|
|
71
|
-
const base = def.fields.filter((f) => !isReadonlyField(f) && !excluded.has(f.name) && f.type !== FIELD_TYPES.DETAILS);
|
|
72
|
-
// `perm.createFields === null` = unrestricted (no fields.create declared)
|
|
73
|
-
if (perm.createFields === null)
|
|
74
|
-
return base;
|
|
75
|
-
const whitelist = new Set(perm.createFields);
|
|
76
|
-
return base.filter((f) => whitelist.has(f.name));
|
|
77
|
-
}
|
|
78
|
-
/** fields a subject can write on update: RBAC `update` whitelist (null = all writable) */
|
|
79
|
-
function updatableFields(def, perm) {
|
|
80
|
-
const excluded = new Set(perm.exclude);
|
|
81
|
-
if (perm.update === null) {
|
|
82
|
-
return def.fields.filter((f) => !isReadonlyField(f) && !excluded.has(f.name) && f.type !== FIELD_TYPES.DETAILS);
|
|
83
|
-
}
|
|
84
|
-
const whitelist = new Set(perm.update);
|
|
85
|
-
return def.fields.filter((f) => whitelist.has(f.name) && !isReadonlyField(f) && f.type !== FIELD_TYPES.DETAILS);
|
|
86
|
-
}
|
|
87
|
-
function objectSchema(fields, defs, registry, requiredOnly = false) {
|
|
88
|
-
const properties = {};
|
|
89
|
-
const required = [];
|
|
90
|
-
for (const field of fields) {
|
|
91
|
-
properties[field.name] = { ...fieldValueSchema(field, defs, registry), description: field.description };
|
|
92
|
-
if (('required' in field && field.required === true) || field.primary === true)
|
|
93
|
-
required.push(field.name);
|
|
94
|
-
}
|
|
95
|
-
const schema = { type: 'object', properties, additionalProperties: false };
|
|
96
|
-
if (requiredOnly) {
|
|
97
|
-
if (required.length > 0)
|
|
98
|
-
schema.required = required;
|
|
99
|
-
}
|
|
100
|
-
else if (required.length > 0) {
|
|
101
|
-
schema.required = required;
|
|
5
|
+
/** capabilities the subject holds on at least one object (drives which generic ops appear) */
|
|
6
|
+
function capabilities(registry, subject) {
|
|
7
|
+
const caps = { read: false, create: false, update: false, delete: false };
|
|
8
|
+
for (const def of registry.list()) {
|
|
9
|
+
const p = resolvePermission(def, subject.roles);
|
|
10
|
+
if (p === undefined)
|
|
11
|
+
continue;
|
|
12
|
+
if (p.read !== undefined)
|
|
13
|
+
caps.read = true;
|
|
14
|
+
if (p.create === true)
|
|
15
|
+
caps.create = true;
|
|
16
|
+
// `update === null` = all fields updatable; `[]` = none; `undefined` = no update permission
|
|
17
|
+
if (p.update === null || (Array.isArray(p.update) && p.update.length > 0))
|
|
18
|
+
caps.update = true;
|
|
19
|
+
if (p.delete === true)
|
|
20
|
+
caps.delete = true;
|
|
102
21
|
}
|
|
103
|
-
return
|
|
22
|
+
return caps;
|
|
104
23
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
name: def.name,
|
|
113
|
-
description: def.description,
|
|
114
|
-
inputSchema: def.inputSchema,
|
|
115
|
-
handler: async (args, ctx) => {
|
|
116
|
-
// rate limit at the adapter layer (agentKey, widened by roles:tool — M10 D6)
|
|
117
|
-
const scope = `${[...ctx.session.user.roles].sort().join(',')}:${def.name}`;
|
|
118
|
-
if (!ctx.guardrails.checkRateLimit(ctx.session.agentKey, scope)) {
|
|
119
|
-
const { SchemaError } = await import('../../core/index.js');
|
|
120
|
-
throw new SchemaError('mcp.rateLimited', {}, ctx.engine.locale);
|
|
121
|
-
}
|
|
122
|
-
const result = await custom.executor.execute(def, args, {
|
|
123
|
-
subject: ctx.session.user,
|
|
124
|
-
actor: {
|
|
125
|
-
key: ctx.session.agentKey,
|
|
126
|
-
label: ctx.session.agentSubject.id,
|
|
127
|
-
onBehalfOf: ctx.session.onBehalfOf,
|
|
128
|
-
},
|
|
129
|
-
action: `${ACTION_PREFIXES.MCP_TOOL}.${def.name}`,
|
|
130
|
-
args,
|
|
131
|
-
locale: ctx.engine.locale,
|
|
132
|
-
});
|
|
133
|
-
return result;
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
};
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/** build the per-object CRUD tools (search/get/create/update/delete) */
|
|
140
|
-
function objectTools(def, defs, perm, registry) {
|
|
24
|
+
const OBJECT_ARG = {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'the object name (see list_objects); call describe_object for its fields and permissions',
|
|
27
|
+
};
|
|
28
|
+
/** the generic CRUD tools for the capabilities the subject holds on any object */
|
|
29
|
+
function registryTools(engine, subject) {
|
|
30
|
+
const caps = capabilities(engine.registry, subject);
|
|
141
31
|
const tools = [];
|
|
142
|
-
|
|
143
|
-
const pkName = primaryKeyOf(def);
|
|
144
|
-
const idSchema = pkField !== undefined ? fieldValueSchema(pkField, defs, registry) : { type: 'string' };
|
|
145
|
-
const readable = readableFields(def, perm);
|
|
146
|
-
if (perm.read !== undefined) {
|
|
147
|
-
const readFields = readable.map((f) => f.name);
|
|
32
|
+
if (caps.read) {
|
|
148
33
|
tools.push({
|
|
149
|
-
objectName:
|
|
34
|
+
objectName: undefined,
|
|
150
35
|
spec: {
|
|
151
|
-
name:
|
|
152
|
-
description:
|
|
36
|
+
name: REGISTRY_TOOLS.SEARCH,
|
|
37
|
+
description: 'Search records of an object (rows are filtered to your read scope)',
|
|
153
38
|
inputSchema: {
|
|
154
39
|
type: 'object',
|
|
155
40
|
properties: {
|
|
41
|
+
object: OBJECT_ARG,
|
|
156
42
|
filter: {
|
|
157
43
|
type: 'object',
|
|
158
|
-
description:
|
|
44
|
+
description: 'filter by exact values or operators on readable fields',
|
|
159
45
|
additionalProperties: true,
|
|
160
46
|
},
|
|
161
47
|
sort: {
|
|
162
48
|
type: 'array',
|
|
163
|
-
description:
|
|
49
|
+
description: 'sort by readable fields',
|
|
164
50
|
items: {
|
|
165
51
|
type: 'object',
|
|
166
|
-
properties: { field: { type: 'string'
|
|
52
|
+
properties: { field: { type: 'string' }, direction: { type: 'string', enum: ['asc', 'desc'] } },
|
|
167
53
|
required: ['field'],
|
|
168
54
|
},
|
|
169
55
|
},
|
|
170
56
|
limit: { type: 'integer', minimum: 1, maximum: 1000 },
|
|
171
57
|
offset: { type: 'integer', minimum: 0 },
|
|
172
|
-
fields: { type: 'array', items: { type: 'string'
|
|
58
|
+
fields: { type: 'array', items: { type: 'string' } },
|
|
173
59
|
},
|
|
60
|
+
required: ['object'],
|
|
174
61
|
},
|
|
175
|
-
handler: (args, ctx) =>
|
|
62
|
+
handler: (args, ctx) => searchRecordsHandler(args, ctx),
|
|
176
63
|
},
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
objectName: def.name,
|
|
64
|
+
}, {
|
|
65
|
+
objectName: undefined,
|
|
180
66
|
spec: {
|
|
181
|
-
name:
|
|
182
|
-
description:
|
|
67
|
+
name: REGISTRY_TOOLS.GET,
|
|
68
|
+
description: 'Fetch one record of an object by its primary key (not found → error)',
|
|
183
69
|
inputSchema: {
|
|
184
70
|
type: 'object',
|
|
185
|
-
properties: {
|
|
186
|
-
required: [
|
|
71
|
+
properties: { object: OBJECT_ARG, id: { type: 'string', description: 'primary key' } },
|
|
72
|
+
required: ['object', 'id'],
|
|
187
73
|
},
|
|
188
|
-
handler: (args, ctx) =>
|
|
74
|
+
handler: (args, ctx) => getRecordHandler(args, ctx),
|
|
189
75
|
},
|
|
190
76
|
});
|
|
191
77
|
}
|
|
192
|
-
if (
|
|
78
|
+
if (caps.create) {
|
|
193
79
|
tools.push({
|
|
194
|
-
objectName:
|
|
80
|
+
objectName: undefined,
|
|
195
81
|
spec: {
|
|
196
|
-
name:
|
|
197
|
-
description:
|
|
82
|
+
name: REGISTRY_TOOLS.CREATE,
|
|
83
|
+
description: 'Create a record of an object (only fields you may write are accepted)',
|
|
198
84
|
inputSchema: {
|
|
199
85
|
type: 'object',
|
|
200
86
|
properties: {
|
|
201
|
-
|
|
87
|
+
object: OBJECT_ARG,
|
|
88
|
+
data: { type: 'object', description: 'fields to set', additionalProperties: true },
|
|
202
89
|
},
|
|
203
|
-
required: ['data'],
|
|
90
|
+
required: ['object', 'data'],
|
|
204
91
|
},
|
|
205
|
-
handler: (args, ctx) =>
|
|
92
|
+
handler: (args, ctx) => createRecordHandler(args, ctx),
|
|
206
93
|
},
|
|
207
94
|
});
|
|
208
95
|
}
|
|
209
|
-
if (
|
|
96
|
+
if (caps.update) {
|
|
210
97
|
tools.push({
|
|
211
|
-
objectName:
|
|
98
|
+
objectName: undefined,
|
|
212
99
|
spec: {
|
|
213
|
-
name:
|
|
214
|
-
description:
|
|
100
|
+
name: REGISTRY_TOOLS.UPDATE,
|
|
101
|
+
description: 'Update a record of an object (only fields you may update are accepted)',
|
|
215
102
|
inputSchema: {
|
|
216
103
|
type: 'object',
|
|
217
104
|
properties: {
|
|
218
|
-
|
|
219
|
-
|
|
105
|
+
object: OBJECT_ARG,
|
|
106
|
+
id: { type: 'string', description: 'primary key' },
|
|
107
|
+
changes: { type: 'object', description: 'fields to change', additionalProperties: true },
|
|
220
108
|
},
|
|
221
|
-
required: [
|
|
109
|
+
required: ['object', 'id', 'changes'],
|
|
222
110
|
},
|
|
223
|
-
handler: (args, ctx) =>
|
|
111
|
+
handler: (args, ctx) => updateRecordHandler(args, ctx),
|
|
224
112
|
},
|
|
225
113
|
});
|
|
226
114
|
}
|
|
227
|
-
if (
|
|
115
|
+
if (caps.delete) {
|
|
228
116
|
tools.push({
|
|
229
|
-
objectName:
|
|
117
|
+
objectName: undefined,
|
|
230
118
|
spec: {
|
|
231
|
-
name:
|
|
232
|
-
description:
|
|
119
|
+
name: REGISTRY_TOOLS.DELETE,
|
|
120
|
+
description: 'Delete a record of an object by its primary key',
|
|
233
121
|
inputSchema: {
|
|
234
122
|
type: 'object',
|
|
235
|
-
properties: {
|
|
236
|
-
required: [
|
|
123
|
+
properties: { object: OBJECT_ARG, id: { type: 'string', description: 'primary key' } },
|
|
124
|
+
required: ['object', 'id'],
|
|
237
125
|
},
|
|
238
|
-
handler: (args, ctx) =>
|
|
126
|
+
handler: (args, ctx) => deleteRecordHandler(args, ctx),
|
|
239
127
|
},
|
|
240
128
|
});
|
|
241
129
|
}
|
|
242
130
|
return tools;
|
|
243
131
|
}
|
|
132
|
+
/** custom-tool surface merged into the session tool surface (roles filtered by the executor, D8-cached) */
|
|
133
|
+
function customToolTools(engine, subject, custom) {
|
|
134
|
+
return custom.executor.surface(subject, custom.defs).map((entry) => {
|
|
135
|
+
const def = custom.defs.find((d) => d.name === entry.name);
|
|
136
|
+
return {
|
|
137
|
+
objectName: undefined,
|
|
138
|
+
spec: {
|
|
139
|
+
name: def.name,
|
|
140
|
+
description: def.description,
|
|
141
|
+
inputSchema: def.inputSchema,
|
|
142
|
+
handler: async (args, ctx) => {
|
|
143
|
+
// rate limit at the adapter layer (agentKey, widened by roles:tool — M10 D6)
|
|
144
|
+
const scope = `${[...ctx.session.user.roles].sort().join(',')}:${def.name}`;
|
|
145
|
+
if (!ctx.guardrails.checkRateLimit(ctx.session.agentKey, scope)) {
|
|
146
|
+
const { SchemaError } = await import('../../core/index.js');
|
|
147
|
+
throw new SchemaError('mcp.rateLimited', {}, ctx.engine.locale);
|
|
148
|
+
}
|
|
149
|
+
const result = await custom.executor.execute(def, args, {
|
|
150
|
+
subject: ctx.session.user,
|
|
151
|
+
actor: {
|
|
152
|
+
key: ctx.session.agentKey,
|
|
153
|
+
label: ctx.session.agentSubject.id,
|
|
154
|
+
onBehalfOf: ctx.session.onBehalfOf,
|
|
155
|
+
},
|
|
156
|
+
action: `${ACTION_PREFIXES.MCP_TOOL}.${def.name}`,
|
|
157
|
+
args,
|
|
158
|
+
locale: ctx.engine.locale,
|
|
159
|
+
});
|
|
160
|
+
return result;
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
}
|
|
244
166
|
/**
|
|
245
|
-
* Compile the full tool surface for a subject: CRUD tools
|
|
246
|
-
* subject
|
|
167
|
+
* Compile the full tool surface for a subject: the generic CRUD tools the
|
|
168
|
+
* subject's RBAC permits, the always-on introspection tools, and the
|
|
247
169
|
* subject-visible custom tools (M10b, roles-filtered by the executor).
|
|
248
170
|
*/
|
|
249
171
|
export function compileToolsFor(engine, subject, custom) {
|
|
250
|
-
const
|
|
251
|
-
const fieldTypes = registry.fieldTypes;
|
|
252
|
-
const defs = new Map(registry.list().map((def) => [def.name, def]));
|
|
253
|
-
const tools = [];
|
|
254
|
-
for (const def of registry.list()) {
|
|
255
|
-
const perm = resolvePermission(def, subject.roles);
|
|
256
|
-
if (perm === undefined)
|
|
257
|
-
continue; // role not listed → object invisible
|
|
258
|
-
tools.push(...objectTools(def, defs, perm, fieldTypes));
|
|
259
|
-
}
|
|
172
|
+
const tools = [...registryTools(engine, subject)];
|
|
260
173
|
tools.push({
|
|
261
174
|
objectName: undefined,
|
|
262
175
|
spec: {
|
|
263
|
-
name:
|
|
176
|
+
name: INTROSPECTION_TOOLS.LIST_OBJECTS,
|
|
264
177
|
description: 'List objects the current identity can read',
|
|
265
178
|
inputSchema: { type: 'object' },
|
|
266
179
|
handler: (args, ctx) => listObjectsHandler(args, ctx),
|
|
@@ -268,7 +181,7 @@ export function compileToolsFor(engine, subject, custom) {
|
|
|
268
181
|
}, {
|
|
269
182
|
objectName: undefined,
|
|
270
183
|
spec: {
|
|
271
|
-
name:
|
|
184
|
+
name: INTROSPECTION_TOOLS.DESCRIBE_OBJECT,
|
|
272
185
|
description: 'Describe an object schema (fields, relations, permissions) for the current identity',
|
|
273
186
|
inputSchema: {
|
|
274
187
|
type: 'object',
|
|
@@ -283,5 +196,4 @@ export function compileToolsFor(engine, subject, custom) {
|
|
|
283
196
|
}
|
|
284
197
|
return tools;
|
|
285
198
|
}
|
|
286
|
-
export { READ_SCOPES };
|
|
287
199
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/adapters/mcp/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACL,2BAA2B,EAC3B,SAAS,GAEV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;GAKG;AAEH,0FAA0F;AAC1F,SAAS,eAAe,CAAC,KAAsB;IAC7C,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,IAAK,KAA8B,CAAC,OAAO,KAAK,SAAS,CAAC;AAC7H,CAAC;AAED,2EAA2E;AAC3E,SAAS,QAAQ,CAAC,MAAc,EAAE,IAAmC,EAAE,QAA2B;IAChG,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAChD,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAC9B,KAAsB,EACtB,IAAmC,EACnC,WAA8B,2BAA2B;IAEzD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,KAA2C,CAAC;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,MAAM,CAAC;QACxB,KAAK,WAAW,CAAC,IAAI,CAAC;QACtB,KAAK,WAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,WAAW,CAAC,IAAI,CAAC;QACtB,KAAK,WAAW,CAAC,MAAM;YACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,KAAK,WAAW,CAAC,OAAO;YACtB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,KAAK,WAAW,CAAC,MAAM,CAAC;QACxB,KAAK,WAAW,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,KAAK,WAAW,CAAC,OAAO;YACtB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,KAAK,WAAW,CAAC,IAAI;YACnB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAI,CAAC,CAAC,OAAgC,IAAI,EAAE,CAAC;YAC1D,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;YACrE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3C,CAAC;QACD,KAAK,WAAW,CAAC,QAAQ;YACvB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,KAAK,WAAW,CAAC,cAAc;YAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9E,KAAK,WAAW,CAAC,OAAO;YACtB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QACtD;YACE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,cAAc,CAAC,GAAqB,EAAE,IAAwB;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,+GAA+G;AAC/G,SAAS,oBAAoB,CAAC,GAAqB,EAAE,IAAwB;IAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC;IACtH,0EAA0E;IAC1E,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,0FAA0F;AAC1F,SAAS,eAAe,CAAC,GAAqB,EAAE,IAAwB;IACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC;AAClH,CAAC;AAED,SAAS,YAAY,CACnB,MAAyB,EACzB,IAAmC,EACnC,QAA2B,EAC3B,YAAY,GAAG,KAAK;IAEpB,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QACxG,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5G,CAAC;IACD,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;IACvF,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtD,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,2GAA2G;AAC3G,SAAS,eAAe,CACtB,MAAiB,EACjB,OAAoB,EACpB,MAA0D;IAE1D,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACjE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAmB,CAAC;QAC7E,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,OAAO,EAAE,KAAK,EAAE,IAA6B,EAAE,GAAoB,EAA0B,EAAE;oBAC7F,6EAA6E;oBAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC5E,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;wBAChE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;wBAC5D,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAClE,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;wBACtD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;wBACzB,KAAK,EAAE;4BACL,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ;4BACzB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;4BAClC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU;yBACnC;wBACD,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE;wBACjD,IAAI;wBACJ,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;qBAC1B,CAAC,CAAC;oBACH,OAAO,MAAuB,CAAC;gBACjC,CAAC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wEAAwE;AACxE,SAAS,WAAW,CAClB,GAAqB,EACrB,IAAmC,EACnC,IAAwB,EACxB,QAA2B;IAE3B,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAe,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACpH,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE;gBAC1C,WAAW,EAAE,UAAU,GAAG,CAAC,IAAI,iDAAiD;gBAChF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,2DAA2D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;4BAC3G,oBAAoB,EAAE,IAAI;yBAC3B;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;4BACb,WAAW,EAAE,4BAA4B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;4BAC5E,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;gCACjH,QAAQ,EAAE,CAAC,OAAO,CAAC;6BACpB;yBACF;wBACD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;wBACrD,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;wBACvC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;qBACvE;iBACF;gBACD,OAAO,EAAE,CAAC,IAA6B,EAAE,GAAoB,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;aAChG;SACF,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;gBACvC,WAAW,EAAE,aAAa,GAAG,CAAC,IAAI,cAAc,MAAM,IAAI,aAAa,0BAA0B;gBACjG,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;oBAC7E,QAAQ,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;iBAC3B;gBACD,OAAO,EAAE,CAAC,IAA6B,EAAE,GAAoB,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;aAC7F;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE;gBAC1C,WAAW,EAAE,YAAY,GAAG,CAAC,IAAI,SAAS;gBAC1C,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE,EAAE,GAAG,YAAY,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE;qBAC/G;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;gBACD,OAAO,EAAE,CAAC,IAA6B,EAAE,GAAoB,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;aAChG;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE;gBAC1C,WAAW,EAAE,YAAY,GAAG,CAAC,IAAI,gDAAgD;gBACjF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;wBAC7D,OAAO,EAAE,EAAE,GAAG,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE;qBAC1G;oBACD,QAAQ,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,SAAS,CAAC;iBACtC;gBACD,OAAO,EAAE,CAAC,IAA6B,EAAE,GAAoB,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;aAChG;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,GAAG,CAAC,IAAI;YACpB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE;gBAC1C,WAAW,EAAE,YAAY,GAAG,CAAC,IAAI,SAAS;gBAC1C,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;oBAC7E,QAAQ,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;iBAC3B;gBACD,OAAO,EAAE,CAAC,IAA6B,EAAE,GAAoB,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;aAChG;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAiB,EACjB,OAAoB,EACpB,MAA2D;IAE3D,MAAM,QAAQ,GAAmB,MAAM,CAAC,QAAQ,CAAC;IACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS,CAAC,qCAAqC;QACvE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI,CACR;QACE,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE;YACJ,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,4CAA4C;YACzD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,OAAO,EAAE,CAAC,IAA6B,EAAE,GAAoB,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC;SAChG;KACF,EACD;QACE,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE;YACJ,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,qFAAqF;YAClG,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;gBACpE,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;YACD,OAAO,EAAE,CAAC,IAA6B,EAAE,GAAoB,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC;SACnG;KACF,CACF,CAAC;IAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/adapters/mcp/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { ObjectDefinition } from '../../core/index.js';
|
|
2
1
|
import type { McpToolResult, ToolExecContext } from './types.js';
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
2
|
+
export declare function searchRecordsHandler(args: Record<string, unknown>, ctx: ToolExecContext): Promise<McpToolResult>;
|
|
3
|
+
export declare function getRecordHandler(args: Record<string, unknown>, ctx: ToolExecContext): Promise<McpToolResult>;
|
|
4
|
+
export declare function createRecordHandler(args: Record<string, unknown>, ctx: ToolExecContext): Promise<McpToolResult>;
|
|
5
|
+
export declare function updateRecordHandler(args: Record<string, unknown>, ctx: ToolExecContext): Promise<McpToolResult>;
|
|
6
|
+
export declare function deleteRecordHandler(args: Record<string, unknown>, ctx: ToolExecContext): Promise<McpToolResult>;
|
|
8
7
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/tools.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAsIjE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,aAAa,CAAC,CASxB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,aAAa,CAAC,CAQxB"}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { REGISTRY_TOOLS, SchemaError } from '../../core/index.js';
|
|
2
2
|
import { SORT_DIRS, resolvePagination } from '../../runtime/data-access/index.js';
|
|
3
3
|
import { ACTION_PREFIXES, AUDIT_ACTOR_TYPES } from '../../core/audit/index.js';
|
|
4
|
-
/** the tool argument name carrying the primary key (mirrors the generated schema) */
|
|
5
|
-
function pkArg(def) {
|
|
6
|
-
return primaryKeyOf(def) ?? 'id';
|
|
7
|
-
}
|
|
8
4
|
/**
|
|
9
|
-
* Tool execution handlers. Every call:
|
|
5
|
+
* Tool execution handlers for the generic registry surface. Every call:
|
|
6
|
+
* - resolves the target object from the `object` argument (unknown → `isError`)
|
|
10
7
|
* - resolves the effective subject (session.user, or the on-behalf-of override)
|
|
11
|
-
* - runs through the RBAC-decorated data-access layer (double layer — the
|
|
12
|
-
*
|
|
8
|
+
* - runs through the RBAC-decorated data-access layer (double layer — the
|
|
9
|
+
* capability was already gated at compile time, and RBAC re-checks it here)
|
|
13
10
|
* - audits the attempt (success or failure) through the injected sink
|
|
14
11
|
* - maps SchemaError → `isError` result with a localized message
|
|
15
12
|
*/
|
|
@@ -28,6 +25,19 @@ async function effectiveSubject(args, ctx) {
|
|
|
28
25
|
}
|
|
29
26
|
return resolved;
|
|
30
27
|
}
|
|
28
|
+
/** the `object` argument as requested (for audit; may be unknown) */
|
|
29
|
+
function requestedObject(args) {
|
|
30
|
+
return args.object === undefined ? undefined : String(args.object);
|
|
31
|
+
}
|
|
32
|
+
/** resolve the target object by name (unknown → data.objectUnknown, mapped to isError) */
|
|
33
|
+
function resolveObject(ctx, args) {
|
|
34
|
+
const name = String(args.object ?? '');
|
|
35
|
+
const def = ctx.engine.registry.get(name);
|
|
36
|
+
if (def === undefined) {
|
|
37
|
+
throw new SchemaError('data.objectUnknown', { object: name }, ctx.engine.locale);
|
|
38
|
+
}
|
|
39
|
+
return def;
|
|
40
|
+
}
|
|
31
41
|
/** audit one tool attempt (fire-and-forget, failure-tolerant) */
|
|
32
42
|
function auditToolCall(ctx, tool, objectName, subject, args, isError, errorCode, errorDetail) {
|
|
33
43
|
const { agentKey, agentSubject, onBehalfOf } = ctx.session;
|
|
@@ -102,18 +112,20 @@ function toFindOptions(args) {
|
|
|
102
112
|
}
|
|
103
113
|
return options;
|
|
104
114
|
}
|
|
105
|
-
export async function
|
|
115
|
+
export async function searchRecordsHandler(args, ctx) {
|
|
106
116
|
const subject = await effectiveSubject(args, ctx);
|
|
107
|
-
return callProtected(ctx,
|
|
117
|
+
return callProtected(ctx, REGISTRY_TOOLS.SEARCH, requestedObject(args), args, subject, async () => {
|
|
118
|
+
const def = resolveObject(ctx, args);
|
|
108
119
|
const { rows, total } = await ctx.engine.dataAccess.find(def.name, toFindOptions(args), ctxWithSubject(ctx, subject));
|
|
109
120
|
const { limit, offset } = resolvePagination(toFindOptions(args));
|
|
110
121
|
return textResult(JSON.stringify({ rows, total, limit, offset }));
|
|
111
122
|
});
|
|
112
123
|
}
|
|
113
|
-
export async function
|
|
124
|
+
export async function getRecordHandler(args, ctx) {
|
|
114
125
|
const subject = await effectiveSubject(args, ctx);
|
|
115
|
-
return callProtected(ctx,
|
|
116
|
-
const
|
|
126
|
+
return callProtected(ctx, REGISTRY_TOOLS.GET, requestedObject(args), args, subject, async () => {
|
|
127
|
+
const def = resolveObject(ctx, args);
|
|
128
|
+
const id = String(args.id ?? '');
|
|
117
129
|
const record = await ctx.engine.dataAccess.findOne(def.name, id, ctxWithSubject(ctx, subject));
|
|
118
130
|
if (record === null) {
|
|
119
131
|
throw new SchemaError('data.recordNotFound', { object: def.name, id }, ctx.engine.locale);
|
|
@@ -121,27 +133,30 @@ export async function getHandler(def, args, ctx) {
|
|
|
121
133
|
return textResult(JSON.stringify(record));
|
|
122
134
|
});
|
|
123
135
|
}
|
|
124
|
-
export async function
|
|
136
|
+
export async function createRecordHandler(args, ctx) {
|
|
125
137
|
const subject = await effectiveSubject(args, ctx);
|
|
126
|
-
return callProtected(ctx,
|
|
138
|
+
return callProtected(ctx, REGISTRY_TOOLS.CREATE, requestedObject(args), args, subject, async () => {
|
|
139
|
+
const def = resolveObject(ctx, args);
|
|
127
140
|
const data = (args.data ?? {});
|
|
128
141
|
const record = await ctx.engine.dataAccess.create(def.name, data, ctxWithSubject(ctx, subject));
|
|
129
142
|
return textResult(JSON.stringify(record));
|
|
130
143
|
});
|
|
131
144
|
}
|
|
132
|
-
export async function
|
|
145
|
+
export async function updateRecordHandler(args, ctx) {
|
|
133
146
|
const subject = await effectiveSubject(args, ctx);
|
|
134
|
-
return callProtected(ctx,
|
|
135
|
-
const
|
|
147
|
+
return callProtected(ctx, REGISTRY_TOOLS.UPDATE, requestedObject(args), args, subject, async () => {
|
|
148
|
+
const def = resolveObject(ctx, args);
|
|
149
|
+
const id = String(args.id ?? '');
|
|
136
150
|
const changes = (args.changes ?? {});
|
|
137
151
|
const record = await ctx.engine.dataAccess.update(def.name, id, changes, ctxWithSubject(ctx, subject));
|
|
138
152
|
return textResult(JSON.stringify(record));
|
|
139
153
|
});
|
|
140
154
|
}
|
|
141
|
-
export async function
|
|
155
|
+
export async function deleteRecordHandler(args, ctx) {
|
|
142
156
|
const subject = await effectiveSubject(args, ctx);
|
|
143
|
-
return callProtected(ctx,
|
|
144
|
-
const
|
|
157
|
+
return callProtected(ctx, REGISTRY_TOOLS.DELETE, requestedObject(args), args, subject, async () => {
|
|
158
|
+
const def = resolveObject(ctx, args);
|
|
159
|
+
const id = String(args.id ?? '');
|
|
145
160
|
await ctx.engine.dataAccess.delete(def.name, id, ctxWithSubject(ctx, subject));
|
|
146
161
|
return textResult(JSON.stringify({ ok: true, id }));
|
|
147
162
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/adapters/mcp/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/adapters/mcp/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG/E;;;;;;;;GAQG;AAEH,MAAM,YAAY,GAAG,YAAY,CAAC;AAElC,SAAS,cAAc,CAAC,GAAoB,EAAE,OAAoB;IAChE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACtG,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,gBAAgB,CAAC,IAA6B,EAAE,GAAoB;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC,sBAAsB,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,qEAAqE;AACrE,SAAS,eAAe,CAAC,IAA6B;IACpD,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,0FAA0F;AAC1F,SAAS,aAAa,CAAC,GAAoB,EAAE,IAA6B;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iEAAiE;AACjE,SAAS,aAAa,CACpB,GAAoB,EACpB,IAAY,EACZ,UAA8B,EAC9B,OAAoB,EACpB,IAA6B,EAC7B,OAAgB,EAChB,SAA6B,EAC7B,WAAoB;IAEpB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IAC3D,MAAM,OAAO,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IACrD,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAe;QACxB,SAAS,EAAE,iBAAiB,CAAC,KAAK;QAClC,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,IAAI,IAAI,EAAE;QAC7C,UAAU;QACV,OAAO;QACP,OAAO;QACP,SAAS;QACT,IAAI,EAAE;YACJ,UAAU;YACV,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,YAAY,CAAC,EAAE;YAC3B,IAAI;YACJ,gFAAgF;YAChF,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD;QACD,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;IACF,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK;IAC/C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,GAAoB;IACvD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,2EAA2E;IAC3E,4EAA4E;IAC5E,4BAA4B;IAC5B,OAAO,UAAU,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,GAAoB,EACpB,IAAY,EACZ,UAA8B,EAC9B,IAA6B,EAC7B,OAAoB,EACpB,GAAiC;IAEjC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtE,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;QAC3B,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,MAAM,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnH,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B;IAClD,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAA+B,CAAC;IACxH,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC/D,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAkB,CAAC;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,GAAI,IAAI,CAAC,IAAqD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG;SAC7D,CAAC,CAAC,CAAC;IACN,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAA6B,EAC7B,GAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACtH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA6B,EAC7B,GAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/F,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA6B,EAC7B,GAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QAChG,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA6B,EAC7B,GAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACvG,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAA6B,EAC7B,GAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACjC,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/E,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -40,7 +40,7 @@ export interface McpToolResult {
|
|
|
40
40
|
}>;
|
|
41
41
|
isError?: boolean;
|
|
42
42
|
}
|
|
43
|
-
/** tool
|
|
44
|
-
export { INTROSPECTION_TOOLS,
|
|
45
|
-
export type {
|
|
43
|
+
/** registry tool names / introspection names — single source in core/tools (M10a) */
|
|
44
|
+
export { INTROSPECTION_TOOLS, REGISTRY_TOOLS } from '../../core/index.js';
|
|
45
|
+
export type { RegistryTool } from '../../core/index.js';
|
|
46
46
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;GAIG;AAEH,iGAAiG;AACjG,YAAY,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAExE,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,gBAAgB,CAAC;CACnC;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtF;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;GAIG;AAEH,iGAAiG;AACjG,YAAY,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAExE,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+DAA+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,gBAAgB,CAAC;CACnC;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtF;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qFAAqF;AACrF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/** tool
|
|
2
|
-
export { INTROSPECTION_TOOLS,
|
|
1
|
+
/** registry tool names / introspection names — single source in core/tools (M10a) */
|
|
2
|
+
export { INTROSPECTION_TOOLS, REGISTRY_TOOLS } from '../../core/index.js';
|
|
3
3
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/mcp/types.ts"],"names":[],"mappings":"AA8CA,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/mcp/types.ts"],"names":[],"mappings":"AA8CA,qFAAqF;AACrF,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -4,15 +4,19 @@
|
|
|
4
4
|
* loader/executor (runtime) share one reserved-name source. No second
|
|
5
5
|
* hardcoded union anywhere.
|
|
6
6
|
*/
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
readonly
|
|
7
|
+
/**
|
|
8
|
+
* the fixed registry-mode tools: one generic CRUD op per capability, taking the
|
|
9
|
+
* target object name as an argument (the surface does not grow with the number
|
|
10
|
+
* of objects). `list_objects`/`describe_object` reveal the available objects.
|
|
11
|
+
*/
|
|
12
|
+
export declare const REGISTRY_TOOLS: {
|
|
13
|
+
readonly SEARCH: "search_records";
|
|
14
|
+
readonly GET: "get_record";
|
|
15
|
+
readonly CREATE: "create_record";
|
|
16
|
+
readonly UPDATE: "update_record";
|
|
17
|
+
readonly DELETE: "delete_record";
|
|
14
18
|
};
|
|
15
|
-
export type
|
|
19
|
+
export type RegistryTool = typeof REGISTRY_TOOLS[keyof typeof REGISTRY_TOOLS];
|
|
16
20
|
/** always-on introspection tool names */
|
|
17
21
|
export declare const INTROSPECTION_TOOLS: {
|
|
18
22
|
readonly LIST_OBJECTS: "list_objects";
|
|
@@ -29,6 +33,6 @@ export declare const APPROVAL_STATUSES: {
|
|
|
29
33
|
readonly REJECTED: "rejected";
|
|
30
34
|
};
|
|
31
35
|
export type ApprovalStatus = typeof APPROVAL_STATUSES[keyof typeof APPROVAL_STATUSES];
|
|
32
|
-
/** true when a custom tool name collides with a
|
|
36
|
+
/** true when a custom tool name collides with a built-in tool or the audit namespace */
|
|
33
37
|
export declare function isReservedToolName(name: string): boolean;
|
|
34
38
|
//# sourceMappingURL=values.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../src/core/tools/values.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../src/core/tools/values.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAE9E,yCAAyC;AACzC,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAEX,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,oFAAoF;AACpF,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAItF,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
|
@@ -4,13 +4,17 @@
|
|
|
4
4
|
* loader/executor (runtime) share one reserved-name source. No second
|
|
5
5
|
* hardcoded union anywhere.
|
|
6
6
|
*/
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
/**
|
|
8
|
+
* the fixed registry-mode tools: one generic CRUD op per capability, taking the
|
|
9
|
+
* target object name as an argument (the surface does not grow with the number
|
|
10
|
+
* of objects). `list_objects`/`describe_object` reveal the available objects.
|
|
11
|
+
*/
|
|
12
|
+
export const REGISTRY_TOOLS = {
|
|
13
|
+
SEARCH: 'search_records',
|
|
14
|
+
GET: 'get_record',
|
|
15
|
+
CREATE: 'create_record',
|
|
16
|
+
UPDATE: 'update_record',
|
|
17
|
+
DELETE: 'delete_record',
|
|
14
18
|
};
|
|
15
19
|
/** always-on introspection tool names */
|
|
16
20
|
export const INTROSPECTION_TOOLS = {
|
|
@@ -27,10 +31,9 @@ export const APPROVAL_STATUSES = {
|
|
|
27
31
|
APPROVED: 'approved',
|
|
28
32
|
REJECTED: 'rejected',
|
|
29
33
|
};
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
/** true when a custom tool name collides with a generated tool or the audit namespace */
|
|
34
|
+
const reservedNames = [...Object.values(REGISTRY_TOOLS), ...Object.values(INTROSPECTION_TOOLS)];
|
|
35
|
+
/** true when a custom tool name collides with a built-in tool or the audit namespace */
|
|
33
36
|
export function isReservedToolName(name) {
|
|
34
|
-
return reservedNames.includes(name) ||
|
|
37
|
+
return reservedNames.includes(name) || name.startsWith(RESERVED_TOOL_NAMESPACE);
|
|
35
38
|
}
|
|
36
39
|
//# sourceMappingURL=values.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/core/tools/values.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/core/tools/values.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE,gBAAgB;IACxB,GAAG,EAAE,YAAY;IACjB,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,eAAe;CACf,CAAC;AAGX,yCAAyC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE,cAAc;IAC5B,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAEX,8DAA8D;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAErD,sFAAsF;AACtF,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACZ,CAAC;AAGX,MAAM,aAAa,GAAsB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAEnH,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED