@enfyra/mcp-server 0.1.69 → 0.1.71
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 +1 -1
- package/dist/lib/config-local-adapters.d.ts +18 -0
- package/dist/lib/config-local-adapters.js +271 -0
- package/dist/lib/config-local-adapters.js.map +1 -0
- package/dist/lib/config-local-contracts.d.ts +28 -0
- package/dist/lib/config-local-contracts.js +200 -0
- package/dist/lib/config-local-contracts.js.map +1 -0
- package/dist/lib/config-local-prompts.d.ts +10 -0
- package/dist/lib/config-local-prompts.js +185 -0
- package/dist/lib/config-local-prompts.js.map +1 -0
- package/dist/lib/config-local-types.d.ts +23 -0
- package/dist/lib/config-local-types.js +2 -0
- package/dist/lib/config-local-types.js.map +1 -0
- package/dist/lib/config-local.js +3 -649
- package/dist/lib/config-local.js.map +1 -1
- package/dist/lib/discovery-tools.d.ts +4 -0
- package/dist/lib/discovery-tools.js +546 -0
- package/dist/lib/discovery-tools.js.map +1 -0
- package/dist/lib/dynamic-repository-builder.d.ts +1 -1
- package/dist/lib/dynamic-script-context-contract.d.ts +100 -0
- package/dist/lib/dynamic-script-context-contract.js +163 -0
- package/dist/lib/dynamic-script-context-contract.js.map +1 -0
- package/dist/lib/enfyra-mcp-server.d.ts +3 -0
- package/dist/lib/enfyra-mcp-server.js +79 -0
- package/dist/lib/enfyra-mcp-server.js.map +1 -0
- package/dist/lib/enfyra-tool-logic.d.ts +7 -0
- package/dist/lib/enfyra-tool-logic.js +8 -0
- package/dist/lib/enfyra-tool-logic.js.map +1 -0
- package/dist/lib/enfyra-tool-types.d.ts +27 -0
- package/dist/lib/enfyra-tool-types.js +2 -0
- package/dist/lib/enfyra-tool-types.js.map +1 -0
- package/dist/lib/extension-api-builders.d.ts +17 -0
- package/dist/lib/extension-api-builders.js +235 -0
- package/dist/lib/extension-api-builders.js.map +1 -0
- package/dist/lib/extension-component-builders.d.ts +87 -0
- package/dist/lib/extension-component-builders.js +623 -0
- package/dist/lib/extension-component-builders.js.map +1 -0
- package/dist/lib/extension-contract-review.d.ts +26 -0
- package/dist/lib/extension-contract-review.js +187 -0
- package/dist/lib/extension-contract-review.js.map +1 -0
- package/dist/lib/extension-theme-contract.d.ts +63 -0
- package/dist/lib/extension-theme-contract.js +417 -0
- package/dist/lib/extension-theme-contract.js.map +1 -0
- package/dist/lib/identity-tools.d.ts +4 -0
- package/dist/lib/identity-tools.js +46 -0
- package/dist/lib/identity-tools.js.map +1 -0
- package/dist/lib/log-tools.d.ts +4 -0
- package/dist/lib/log-tools.js +65 -0
- package/dist/lib/log-tools.js.map +1 -0
- package/dist/lib/mcp-example-connect.d.ts +9 -0
- package/dist/lib/mcp-example-connect.js +442 -0
- package/dist/lib/mcp-example-connect.js.map +1 -0
- package/dist/lib/mcp-example-extensions.d.ts +9 -0
- package/dist/lib/mcp-example-extensions.js +729 -0
- package/dist/lib/mcp-example-extensions.js.map +1 -0
- package/dist/lib/mcp-example-files.d.ts +9 -0
- package/dist/lib/mcp-example-files.js +51 -0
- package/dist/lib/mcp-example-files.js.map +1 -0
- package/dist/lib/mcp-example-flows.d.ts +9 -0
- package/dist/lib/mcp-example-flows.js +76 -0
- package/dist/lib/mcp-example-flows.js.map +1 -0
- package/dist/lib/mcp-example-graphql.d.ts +9 -0
- package/dist/lib/mcp-example-graphql.js +57 -0
- package/dist/lib/mcp-example-graphql.js.map +1 -0
- package/dist/lib/mcp-example-handlers-hooks.d.ts +9 -0
- package/dist/lib/mcp-example-handlers-hooks.js +328 -0
- package/dist/lib/mcp-example-handlers-hooks.js.map +1 -0
- package/dist/lib/mcp-example-oauth-setup.d.ts +9 -0
- package/dist/lib/mcp-example-oauth-setup.js +41 -0
- package/dist/lib/mcp-example-oauth-setup.js.map +1 -0
- package/dist/lib/mcp-example-permissions-rls.d.ts +9 -0
- package/dist/lib/mcp-example-permissions-rls.js +210 -0
- package/dist/lib/mcp-example-permissions-rls.js.map +1 -0
- package/dist/lib/mcp-example-queries-deep.d.ts +9 -0
- package/dist/lib/mcp-example-queries-deep.js +220 -0
- package/dist/lib/mcp-example-queries-deep.js.map +1 -0
- package/dist/lib/mcp-example-schema-relations.d.ts +9 -0
- package/dist/lib/mcp-example-schema-relations.js +148 -0
- package/dist/lib/mcp-example-schema-relations.js.map +1 -0
- package/dist/lib/mcp-example-websocket.d.ts +9 -0
- package/dist/lib/mcp-example-websocket.js +103 -0
- package/dist/lib/mcp-example-websocket.js.map +1 -0
- package/dist/lib/mcp-examples.d.ts +5 -5
- package/dist/lib/mcp-examples.js +22 -2394
- package/dist/lib/mcp-examples.js.map +1 -1
- package/dist/lib/method-tools.d.ts +4 -0
- package/dist/lib/method-tools.js +217 -0
- package/dist/lib/method-tools.js.map +1 -0
- package/dist/lib/package-tools.d.ts +4 -0
- package/dist/lib/package-tools.js +98 -0
- package/dist/lib/package-tools.js.map +1 -0
- package/dist/lib/platform-data-operations.d.ts +24 -0
- package/dist/lib/platform-data-operations.js +71 -0
- package/dist/lib/platform-data-operations.js.map +1 -0
- package/dist/lib/platform-endpoint-workflow.d.ts +42 -0
- package/dist/lib/platform-endpoint-workflow.js +382 -0
- package/dist/lib/platform-endpoint-workflow.js.map +1 -0
- package/dist/lib/platform-extension-source.d.ts +487 -0
- package/dist/lib/platform-extension-source.js +524 -0
- package/dist/lib/platform-extension-source.js.map +1 -0
- package/dist/lib/platform-extension-tools.d.ts +1 -0
- package/dist/lib/platform-extension-tools.js +416 -0
- package/dist/lib/platform-extension-tools.js.map +1 -0
- package/dist/lib/platform-extension-ui.d.ts +4 -0
- package/dist/lib/platform-extension-ui.js +5 -0
- package/dist/lib/platform-extension-ui.js.map +1 -0
- package/dist/lib/platform-extension-workflow.d.ts +54 -0
- package/dist/lib/platform-extension-workflow.js +194 -0
- package/dist/lib/platform-extension-workflow.js.map +1 -0
- package/dist/lib/platform-flow-operations.d.ts +554 -0
- package/dist/lib/platform-flow-operations.js +317 -0
- package/dist/lib/platform-flow-operations.js.map +1 -0
- package/dist/lib/platform-flow-tools.d.ts +1 -0
- package/dist/lib/platform-flow-tools.js +248 -0
- package/dist/lib/platform-flow-tools.js.map +1 -0
- package/dist/lib/platform-operation-logic.d.ts +10 -0
- package/dist/lib/platform-operation-logic.js +11 -0
- package/dist/lib/platform-operation-logic.js.map +1 -0
- package/dist/lib/platform-operation-tools.d.ts +1 -324
- package/dist/lib/platform-operation-tools.js +13 -4620
- package/dist/lib/platform-operation-tools.js.map +1 -1
- package/dist/lib/platform-operation-types.d.ts +46 -0
- package/dist/lib/platform-operation-types.js +2 -0
- package/dist/lib/platform-operation-types.js.map +1 -0
- package/dist/lib/platform-policy-tools.d.ts +1 -0
- package/dist/lib/platform-policy-tools.js +248 -0
- package/dist/lib/platform-policy-tools.js.map +1 -0
- package/dist/lib/platform-resource-operations.d.ts +124 -0
- package/dist/lib/platform-resource-operations.js +109 -0
- package/dist/lib/platform-resource-operations.js.map +1 -0
- package/dist/lib/platform-resource-tools.d.ts +1 -0
- package/dist/lib/platform-resource-tools.js +70 -0
- package/dist/lib/platform-resource-tools.js.map +1 -0
- package/dist/lib/platform-route-operations.d.ts +222 -0
- package/dist/lib/platform-route-operations.js +290 -0
- package/dist/lib/platform-route-operations.js.map +1 -0
- package/dist/lib/platform-route-tools.d.ts +1 -0
- package/dist/lib/platform-route-tools.js +307 -0
- package/dist/lib/platform-route-tools.js.map +1 -0
- package/dist/lib/platform-shared-operations.d.ts +7 -0
- package/dist/lib/platform-shared-operations.js +4 -0
- package/dist/lib/platform-shared-operations.js.map +1 -0
- package/dist/lib/platform-websocket-tools.d.ts +1 -0
- package/dist/lib/platform-websocket-tools.js +70 -0
- package/dist/lib/platform-websocket-tools.js.map +1 -0
- package/dist/lib/record-tools.d.ts +4 -0
- package/dist/lib/record-tools.js +418 -0
- package/dist/lib/record-tools.js.map +1 -0
- package/dist/lib/required-knowledge.d.ts +1 -1
- package/dist/lib/required-knowledge.js +3 -2
- package/dist/lib/required-knowledge.js.map +1 -1
- package/dist/lib/route-access-tools.d.ts +4 -0
- package/dist/lib/route-access-tools.js +172 -0
- package/dist/lib/route-access-tools.js.map +1 -0
- package/dist/lib/route-definition-tools.d.ts +4 -0
- package/dist/lib/route-definition-tools.js +285 -0
- package/dist/lib/route-definition-tools.js.map +1 -0
- package/dist/lib/route-inspection-tools.d.ts +4 -0
- package/dist/lib/route-inspection-tools.js +319 -0
- package/dist/lib/route-inspection-tools.js.map +1 -0
- package/dist/lib/route-tools.d.ts +1 -0
- package/dist/lib/route-tools.js +9 -0
- package/dist/lib/route-tools.js.map +1 -0
- package/dist/lib/runtime-zone-registry.d.ts +27 -0
- package/dist/lib/runtime-zone-registry.js +81 -0
- package/dist/lib/runtime-zone-registry.js.map +1 -0
- package/dist/lib/runtime-zone-search.d.ts +303 -0
- package/dist/lib/runtime-zone-search.js +596 -0
- package/dist/lib/runtime-zone-search.js.map +1 -0
- package/dist/lib/runtime-zone-tools.d.ts +2 -307
- package/dist/lib/runtime-zone-tools.js +2 -674
- package/dist/lib/runtime-zone-tools.js.map +1 -1
- package/dist/lib/schema-column-tools.d.ts +3 -0
- package/dist/lib/schema-column-tools.js +80 -0
- package/dist/lib/schema-column-tools.js.map +1 -0
- package/dist/lib/schema-mutation-coordinator.d.ts +28 -0
- package/dist/lib/schema-mutation-coordinator.js +154 -0
- package/dist/lib/schema-mutation-coordinator.js.map +1 -0
- package/dist/lib/schema-relation-contracts.d.ts +39 -0
- package/dist/lib/schema-relation-contracts.js +160 -0
- package/dist/lib/schema-relation-contracts.js.map +1 -0
- package/dist/lib/schema-relation-tools.d.ts +3 -0
- package/dist/lib/schema-relation-tools.js +61 -0
- package/dist/lib/schema-relation-tools.js.map +1 -0
- package/dist/lib/schema-table-contracts.d.ts +28 -0
- package/dist/lib/schema-table-contracts.js +263 -0
- package/dist/lib/schema-table-contracts.js.map +1 -0
- package/dist/lib/schema-table-tools.d.ts +3 -0
- package/dist/lib/schema-table-tools.js +297 -0
- package/dist/lib/schema-table-tools.js.map +1 -0
- package/dist/lib/schema-tool-operations.d.ts +150 -0
- package/dist/lib/schema-tool-operations.js +468 -0
- package/dist/lib/schema-tool-operations.js.map +1 -0
- package/dist/lib/schema-tool-types.d.ts +38 -0
- package/dist/lib/schema-tool-types.js +2 -0
- package/dist/lib/schema-tool-types.js.map +1 -0
- package/dist/lib/schema-verification.d.ts +14 -0
- package/dist/lib/schema-verification.js +105 -0
- package/dist/lib/schema-verification.js.map +1 -0
- package/dist/lib/script-tools.d.ts +4 -0
- package/dist/lib/script-tools.js +127 -0
- package/dist/lib/script-tools.js.map +1 -0
- package/dist/lib/system-tools.d.ts +4 -0
- package/dist/lib/system-tools.js +41 -0
- package/dist/lib/system-tools.js.map +1 -0
- package/dist/lib/table-tool-logic.d.ts +5 -0
- package/dist/lib/table-tool-logic.js +6 -0
- package/dist/lib/table-tool-logic.js.map +1 -0
- package/dist/lib/table-tools.d.ts +1 -84
- package/dist/lib/table-tools.js +7 -1522
- package/dist/lib/table-tools.js.map +1 -1
- package/dist/lib/tool-catalog.d.ts +2 -1
- package/dist/lib/tool-catalog.js +23 -2
- package/dist/lib/tool-catalog.js.map +1 -1
- package/dist/lib/tool-metadata-operations.d.ts +27 -0
- package/dist/lib/tool-metadata-operations.js +93 -0
- package/dist/lib/tool-metadata-operations.js.map +1 -0
- package/dist/lib/tool-permission-profile.d.ts +37 -0
- package/dist/lib/tool-permission-profile.js +106 -0
- package/dist/lib/tool-permission-profile.js.map +1 -0
- package/dist/lib/tool-record-operations.d.ts +102 -0
- package/dist/lib/tool-record-operations.js +260 -0
- package/dist/lib/tool-record-operations.js.map +1 -0
- package/dist/lib/tool-route-inspection.d.ts +47 -0
- package/dist/lib/tool-route-inspection.js +168 -0
- package/dist/lib/tool-route-inspection.js.map +1 -0
- package/dist/lib/tool-routing.d.ts +3 -417
- package/dist/lib/tool-routing.js +3 -1038
- package/dist/lib/tool-routing.js.map +1 -1
- package/dist/lib/tool-runtime-config.d.ts +33 -0
- package/dist/lib/tool-runtime-config.js +237 -0
- package/dist/lib/tool-runtime-config.js.map +1 -0
- package/dist/lib/tool-script-operations.d.ts +34 -0
- package/dist/lib/tool-script-operations.js +153 -0
- package/dist/lib/tool-script-operations.js.map +1 -0
- package/dist/lib/workflow-definitions.d.ts +366 -0
- package/dist/lib/workflow-definitions.js +703 -0
- package/dist/lib/workflow-definitions.js.map +1 -0
- package/dist/lib/workflow-planner.d.ts +45 -0
- package/dist/lib/workflow-planner.js +338 -0
- package/dist/lib/workflow-planner.js.map +1 -0
- package/dist/lib/workflow-types.d.ts +39 -0
- package/dist/lib/workflow-types.js +2 -0
- package/dist/lib/workflow-types.js.map +1 -0
- package/dist/mcp-server-entry.d.ts +0 -3
- package/dist/mcp-server-entry.js +2 -3249
- package/dist/mcp-server-entry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enfyra MCP — stdio server (loaded by index.ts / dist/index.js).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { fetchAPI, validateFilter, validateTableName } from './fetch.js';
|
|
6
|
+
import { assertGenericRecordMutationAllowed, parseRecordBatchData } from './mutation-guards.js';
|
|
7
|
+
import { assertGlobalRulesAck, dynamicCodeKnowledgeAckParam, extensionKnowledgeAckParam, globalRulesAckParam, } from './required-knowledge.js';
|
|
8
|
+
import { assertRecordFieldsReadable, buildDeletePostcondition, buildQuerySchemaReceipt } from './record-contracts.js';
|
|
9
|
+
import { executeSequentialBatch } from './sequential-batch.js';
|
|
10
|
+
import { compactSourceFields } from './source-artifacts.js';
|
|
11
|
+
import { appendQuery, applyDeepFieldSelections, assertExtensionReadFields, assertKnowledgeForGenericBatchMutation, assertKnowledgeForGenericMutation, assertMaxBulkItems, assertNoDuplicateBulkIds, bulkObjectArrayParam, getPrimaryFieldName, getTableSummary, isNotFoundDeleteError, jsonObjectParam, normalizeSortParam, parseBulkItemsArg, parseJsonArg, parseQueryParamsArg, prepareGenericBatchMutation, prepareGenericMutation, stringifyJsonArg, summarizeMutationResult, validateExtensionCodeForGenericMutation, } from './enfyra-tool-logic.js';
|
|
12
|
+
export function registerRecordTools(server, ENFYRA_API_URL) {
|
|
13
|
+
server.tool('query_table', 'Query any route-backed table with a live metadata preflight. Explicit fields are validated before the REST read and the result includes schemaReceipt, so a separate metadata call is optional unless the schema itself must be inspected. Response is minimal unless fields is explicit. Every call must pass either limit or all=true. OAuth clientId/clientSecret are write-only and cannot be read; ask the user and use setup_oauth_provider. Use count_records or meta=filterCount/totalCount for counts; call discover_query_capabilities before using aggregate objects instead of guessing _sum/_count operators. For enfyra_extension, editable extension source is `code`, not `sourceCode`; prefer search_admin_extensions and patch_extension_code/update_extension_code for admin UI.', {
|
|
14
|
+
tableName: z.string().describe('Table name to query'),
|
|
15
|
+
filter: jsonObjectParam(z, 'Filter object').optional().describe('Filter object. Example: {"status": {"_eq": "active"}}.'),
|
|
16
|
+
sort: z.string().optional().describe('Sort field. Prefix with - for descending (e.g., "createdAt", "-id")'),
|
|
17
|
+
page: z.number().optional().describe('Page number (default: 1)'),
|
|
18
|
+
limit: z.number().int().min(0).optional().describe('Items per page. Required unless all=true. Do not invent arbitrary limits for "all"; use all=true instead. Use count_records for counts.'),
|
|
19
|
+
all: z.boolean().optional().default(false).describe('Return all matching rows by sending REST limit=0. Use this when the user asks for all rows or a complete list.'),
|
|
20
|
+
fields: z.array(z.string()).optional().describe('Fields to select. If omitted, MCP selects only the table primary key to avoid oversized responses.'),
|
|
21
|
+
meta: z.string().optional().describe('Optional REST meta request, e.g. "totalCount", "filterCount", or aggregate modes supported by the route. Use count_records for simple counts.'),
|
|
22
|
+
deep: jsonObjectParam(z, 'Deep relation fetch object').optional().describe('Optional deep relation fetch object. Keys must be relation propertyName values.'),
|
|
23
|
+
aggregate: jsonObjectParam(z, 'Aggregate object').optional().describe('Optional aggregate object keyed by real fields/relations, only after discover_query_capabilities confirms the supported operator shape for this table/route. Results are returned in response.meta.aggregate when supported. Do not guess _sum/_count; use count_records or meta=filterCount/totalCount for counts. Do not request aggregates over hidden fields/private relations in user-facing APIs.'),
|
|
24
|
+
}, async ({ tableName, filter, sort, page, limit, all, fields, meta, deep, aggregate }) => {
|
|
25
|
+
if (!all && limit === undefined) {
|
|
26
|
+
throw new Error('query_table requires either limit or all=true. Do not rely on implicit default page sizes.');
|
|
27
|
+
}
|
|
28
|
+
if (all && limit !== undefined) {
|
|
29
|
+
throw new Error('query_table accepts either all=true or limit, not both.');
|
|
30
|
+
}
|
|
31
|
+
validateTableName(tableName);
|
|
32
|
+
assertExtensionReadFields(tableName, fields);
|
|
33
|
+
assertRecordFieldsReadable(tableName, fields);
|
|
34
|
+
const filterParam = stringifyJsonArg(filter);
|
|
35
|
+
const deepParam = stringifyJsonArg(deep);
|
|
36
|
+
const aggregateParam = stringifyJsonArg(aggregate);
|
|
37
|
+
validateFilter(filter);
|
|
38
|
+
parseJsonArg(deep, undefined);
|
|
39
|
+
parseJsonArg(aggregate, undefined);
|
|
40
|
+
const queryParams = new URLSearchParams();
|
|
41
|
+
const table = await getTableSummary(tableName);
|
|
42
|
+
const primaryKey = await getPrimaryFieldName(tableName, table);
|
|
43
|
+
const requestedFields = fields && fields.length > 0 ? fields : [primaryKey];
|
|
44
|
+
const deepFieldSelection = applyDeepFieldSelections(requestedFields, deep);
|
|
45
|
+
const selectedFields = deepFieldSelection.fields;
|
|
46
|
+
const schemaReceipt = buildQuerySchemaReceipt({ ...table, primaryKey }, selectedFields);
|
|
47
|
+
if (filterParam)
|
|
48
|
+
queryParams.set('filter', filterParam);
|
|
49
|
+
const normalizedSort = normalizeSortParam(sort);
|
|
50
|
+
if (normalizedSort)
|
|
51
|
+
queryParams.set('sort', normalizedSort);
|
|
52
|
+
if (page)
|
|
53
|
+
queryParams.set('page', String(page));
|
|
54
|
+
if (meta)
|
|
55
|
+
queryParams.set('meta', meta);
|
|
56
|
+
if (deepParam)
|
|
57
|
+
queryParams.set('deep', deepParam);
|
|
58
|
+
if (aggregateParam)
|
|
59
|
+
queryParams.set('aggregate', aggregateParam);
|
|
60
|
+
const effectiveLimit = all ? 0 : limit;
|
|
61
|
+
queryParams.set('limit', String(effectiveLimit));
|
|
62
|
+
queryParams.set('fields', selectedFields.join(','));
|
|
63
|
+
const query = queryParams.toString();
|
|
64
|
+
const result = await fetchAPI(ENFYRA_API_URL, `/${tableName}${query ? `?${query}` : ''}`);
|
|
65
|
+
const payload = {
|
|
66
|
+
statusCode: result?.statusCode,
|
|
67
|
+
success: result?.success,
|
|
68
|
+
tableName,
|
|
69
|
+
requestedFields,
|
|
70
|
+
fields: selectedFields,
|
|
71
|
+
autoAddedDeepFields: deepFieldSelection.autoAdded,
|
|
72
|
+
limit: effectiveLimit,
|
|
73
|
+
all: !!all,
|
|
74
|
+
queryOptions: {
|
|
75
|
+
meta: meta || null,
|
|
76
|
+
deep: deep ? parseJsonArg(deep, null) : null,
|
|
77
|
+
aggregate: aggregate ? parseJsonArg(aggregate, null) : null,
|
|
78
|
+
},
|
|
79
|
+
minimalDefaultApplied: !(fields && fields.length > 0),
|
|
80
|
+
schemaReceipt,
|
|
81
|
+
meta: result?.meta,
|
|
82
|
+
data: compactSourceFields(result?.data || [], { tableName }),
|
|
83
|
+
detailHint: fields && fields.length > 0
|
|
84
|
+
? undefined
|
|
85
|
+
: 'Only the primary key was returned because fields was omitted. Re-run query_table with explicit fields for details, or use inspect_table to find valid field names.',
|
|
86
|
+
};
|
|
87
|
+
return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
|
|
88
|
+
});
|
|
89
|
+
server.tool('count_records', [
|
|
90
|
+
'Count records in a route-backed Enfyra table using the lightweight REST meta pattern.',
|
|
91
|
+
'Without filter it requests fields=id&limit=1&meta=totalCount and returns meta.totalCount.',
|
|
92
|
+
'With filter it requests fields=id&limit=1&meta=filterCount and returns meta.filterCount.',
|
|
93
|
+
'Use this instead of fetching rows when the user only needs a count.',
|
|
94
|
+
].join(' '), {
|
|
95
|
+
tableName: z.string().describe('Table name to count. Must have a REST route.'),
|
|
96
|
+
filter: jsonObjectParam(z, 'Filter object').optional().describe('Optional Query DSL filter object. Example: {"status":{"_eq":"active"}}.'),
|
|
97
|
+
}, async ({ tableName, filter }) => {
|
|
98
|
+
validateTableName(tableName);
|
|
99
|
+
validateFilter(filter);
|
|
100
|
+
const filterParam = stringifyJsonArg(filter);
|
|
101
|
+
const metaField = filterParam ? 'filterCount' : 'totalCount';
|
|
102
|
+
const queryParams = new URLSearchParams();
|
|
103
|
+
queryParams.set('fields', 'id');
|
|
104
|
+
queryParams.set('limit', '1');
|
|
105
|
+
queryParams.set('meta', metaField);
|
|
106
|
+
if (filterParam)
|
|
107
|
+
queryParams.set('filter', filterParam);
|
|
108
|
+
const result = await fetchAPI(ENFYRA_API_URL, `/${tableName}?${queryParams.toString()}`);
|
|
109
|
+
const meta = result?.meta || {};
|
|
110
|
+
const hasCount = Object.prototype.hasOwnProperty.call(meta, metaField);
|
|
111
|
+
const count = hasCount ? Number(meta[metaField]) : null;
|
|
112
|
+
const payload = {
|
|
113
|
+
tableName,
|
|
114
|
+
count,
|
|
115
|
+
countField: metaField,
|
|
116
|
+
filterApplied: !!filterParam,
|
|
117
|
+
meta,
|
|
118
|
+
request: {
|
|
119
|
+
path: `/${tableName}`,
|
|
120
|
+
query: Object.fromEntries(queryParams.entries()),
|
|
121
|
+
},
|
|
122
|
+
warning: hasCount ? undefined : `Response meta did not include ${metaField}.`,
|
|
123
|
+
};
|
|
124
|
+
return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
|
|
125
|
+
});
|
|
126
|
+
server.tool('find_one_record', 'Find a single record by ID or filter. By ID uses GET with filter (Enfyra has no GET /table/:id route). OAuth clientId/clientSecret are write-only and cannot be read; ask the user and use setup_oauth_provider. For enfyra_extension, editable extension source is `code`, not `sourceCode`; prefer search_admin_extensions and patch_extension_code/update_extension_code for admin UI.', {
|
|
127
|
+
tableName: z.string().describe('Table name'),
|
|
128
|
+
id: z.string().optional().describe('Record ID'),
|
|
129
|
+
filter: jsonObjectParam(z, 'Filter object').optional().describe('Filter object to find by.'),
|
|
130
|
+
fields: z.array(z.string()).optional().describe('Fields to select. If omitted, returns only the primary key.'),
|
|
131
|
+
}, async ({ tableName, id, filter, fields }) => {
|
|
132
|
+
validateTableName(tableName);
|
|
133
|
+
assertExtensionReadFields(tableName, fields);
|
|
134
|
+
assertRecordFieldsReadable(tableName, fields);
|
|
135
|
+
const primaryKey = await getPrimaryFieldName(tableName);
|
|
136
|
+
const selectedFields = fields && fields.length > 0 ? fields : [primaryKey];
|
|
137
|
+
if (id) {
|
|
138
|
+
// Enfyra route engine does not register GET /<table>/:id (only PATCH/DELETE use /:id). Use list + filter.
|
|
139
|
+
const filterObj = JSON.stringify({ [primaryKey]: { _eq: id } });
|
|
140
|
+
const queryParams = new URLSearchParams({
|
|
141
|
+
filter: filterObj,
|
|
142
|
+
limit: '1',
|
|
143
|
+
fields: selectedFields.join(','),
|
|
144
|
+
});
|
|
145
|
+
const result = await fetchAPI(ENFYRA_API_URL, `/${tableName}?${queryParams.toString()}`);
|
|
146
|
+
const one = result.data?.[0] ?? null;
|
|
147
|
+
return { content: [{ type: 'text', text: JSON.stringify({
|
|
148
|
+
tableName,
|
|
149
|
+
primaryKey,
|
|
150
|
+
fields: selectedFields,
|
|
151
|
+
data: compactSourceFields(one, { tableName }),
|
|
152
|
+
detailHint: fields && fields.length > 0 ? undefined : 'Only the primary key was returned. Pass fields for details.',
|
|
153
|
+
}, null, 2) }] };
|
|
154
|
+
}
|
|
155
|
+
if (!filter)
|
|
156
|
+
throw new Error('Provide id or filter');
|
|
157
|
+
validateFilter(filter);
|
|
158
|
+
const filterParam = stringifyJsonArg(filter);
|
|
159
|
+
const queryParams = new URLSearchParams({
|
|
160
|
+
filter: filterParam || '',
|
|
161
|
+
limit: '1',
|
|
162
|
+
fields: selectedFields.join(','),
|
|
163
|
+
});
|
|
164
|
+
const result = await fetchAPI(ENFYRA_API_URL, `/${tableName}?${queryParams.toString()}`);
|
|
165
|
+
return { content: [{ type: 'text', text: JSON.stringify({
|
|
166
|
+
tableName,
|
|
167
|
+
fields: selectedFields,
|
|
168
|
+
data: compactSourceFields(result.data?.[0] || null, { tableName }),
|
|
169
|
+
detailHint: fields && fields.length > 0 ? undefined : 'Only the primary key was returned. Pass fields for details.',
|
|
170
|
+
}, null, 2) }] };
|
|
171
|
+
});
|
|
172
|
+
// ============================================================================
|
|
173
|
+
// CRUD TOOLS
|
|
174
|
+
// ============================================================================
|
|
175
|
+
server.tool('create_records', 'Create one or more route-backed records. Always pass records as a native JSON array; for one record, pass a one-item array. MCP preflights every item before the first POST, then writes sequentially; this is not a backend bulk endpoint or transaction. On a failed item, it returns the completed checkpoint and remaining indexes—retry only the remaining records after resolving the error.', {
|
|
176
|
+
tableName: z.string().describe('Table name to insert into'),
|
|
177
|
+
records: bulkObjectArrayParam(z, 'Records').describe('Records as a native JSON array. Each item must be a JSON object using metadata-backed column names and relation propertyName values.'),
|
|
178
|
+
queryParams: z.string().optional().describe('Optional query params as JSON object string applied to every POST, for route contracts that intentionally keep workflow fields out of the validated body.'),
|
|
179
|
+
maxRecords: z.number().int().min(1).max(100).optional().default(20).describe('Safety cap for one MCP batch. Default is 20; explicitly raise it up to 100 only when partial-write recovery is acceptable.'),
|
|
180
|
+
globalRulesAckKey: globalRulesAckParam(z),
|
|
181
|
+
knowledgeAckKey: dynamicCodeKnowledgeAckParam(z).optional().describe('Required only when any item contains sourceCode. Use dynamicCodeAckKey from get_enfyra_required_knowledge.'),
|
|
182
|
+
extensionKnowledgeAckKey: extensionKnowledgeAckParam(z).optional().describe('Required only when tableName is enfyra_extension and any item contains code. Use extensionAckKey from get_enfyra_required_knowledge.'),
|
|
183
|
+
}, async ({ tableName, records, queryParams, maxRecords, globalRulesAckKey, knowledgeAckKey, extensionKnowledgeAckKey }) => {
|
|
184
|
+
assertGlobalRulesAck(globalRulesAckKey);
|
|
185
|
+
validateTableName(tableName);
|
|
186
|
+
assertGenericRecordMutationAllowed('create', tableName);
|
|
187
|
+
const parsedRecords = parseRecordBatchData(records);
|
|
188
|
+
if (parsedRecords.length > maxRecords) {
|
|
189
|
+
throw new Error(`create_records received ${parsedRecords.length} records, above maxRecords=${maxRecords}. Split the batch deliberately.`);
|
|
190
|
+
}
|
|
191
|
+
assertKnowledgeForGenericBatchMutation(tableName, parsedRecords, { knowledgeAckKey, extensionKnowledgeAckKey });
|
|
192
|
+
const prepared = await prepareGenericBatchMutation(tableName, parsedRecords);
|
|
193
|
+
const extensionValidations = [];
|
|
194
|
+
for (const item of prepared.records) {
|
|
195
|
+
extensionValidations.push(await validateExtensionCodeForGenericMutation(tableName, item.payload, item.payload?.name || item.index));
|
|
196
|
+
}
|
|
197
|
+
const query = parseQueryParamsArg(queryParams);
|
|
198
|
+
const batch = await executeSequentialBatch(prepared.records, async (item) => {
|
|
199
|
+
const result = await fetchAPI(ENFYRA_API_URL, appendQuery(`/${tableName}`, query), { method: 'POST', body: JSON.stringify(item.payload) });
|
|
200
|
+
return {
|
|
201
|
+
index: item.index,
|
|
202
|
+
...summarizeMutationResult(result, 'created', tableName),
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
if (batch.status === 'partial_failure') {
|
|
206
|
+
return {
|
|
207
|
+
isError: true,
|
|
208
|
+
content: [{ type: 'text', text: JSON.stringify({
|
|
209
|
+
action: 'create_records_partial_failure',
|
|
210
|
+
tableName,
|
|
211
|
+
requested: parsedRecords.length,
|
|
212
|
+
createdCount: batch.completed.length,
|
|
213
|
+
sequential: true,
|
|
214
|
+
transactional: false,
|
|
215
|
+
completed: batch.completed,
|
|
216
|
+
failed: batch.failure,
|
|
217
|
+
remainingIndexes: batch.remainingIndexes,
|
|
218
|
+
retryHint: 'Resolve the failed item, then retry only the failed item and remaining indexes. Do not retry completed records unless the table has an idempotent unique key.',
|
|
219
|
+
}, null, 2) }],
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
return { content: [{ type: 'text', text: JSON.stringify({
|
|
223
|
+
action: 'created_records',
|
|
224
|
+
tableName,
|
|
225
|
+
requested: parsedRecords.length,
|
|
226
|
+
createdCount: batch.completed.length,
|
|
227
|
+
sequential: true,
|
|
228
|
+
transactional: false,
|
|
229
|
+
preflight: {
|
|
230
|
+
liveMetadataFieldsValidated: true,
|
|
231
|
+
scriptValidatedBeforeAnyPost: prepared.records.some((item) => item.scriptValidation?.validated === true),
|
|
232
|
+
extensionValidatedBeforeAnyPost: extensionValidations.some(Boolean),
|
|
233
|
+
},
|
|
234
|
+
created: batch.completed,
|
|
235
|
+
detailHint: `Use query_table({ tableName: "${tableName}", fields: [...], limit: ${Math.min(batch.completed.length, 20)} }) to inspect created records when needed.`,
|
|
236
|
+
}, null, 2) }] };
|
|
237
|
+
});
|
|
238
|
+
server.tool('update_records', 'Update one or more records in one MCP call. Pass items as a native JSON array; for one update, pass one item. MCP preflights every item, rejects duplicate ids, then PATCHes sequentially. On a failed item, it returns the completed checkpoint and remaining indexes so callers do not replay prior updates.', {
|
|
239
|
+
tableName: z.string().describe('Table name'),
|
|
240
|
+
items: bulkObjectArrayParam(z, 'Update items').describe('Native JSON array of update items: [{ "id": "...", "data": { ... }, "queryParams": { ... }? }]. data must use metadata-backed column names and relation propertyName values.'),
|
|
241
|
+
maxItems: z.number().int().min(1).max(100).optional().default(20).describe('Safety cap for one MCP batch. Default is 20; explicitly raise it up to 100 only when partial-write recovery is acceptable.'),
|
|
242
|
+
globalRulesAckKey: globalRulesAckParam(z),
|
|
243
|
+
knowledgeAckKey: dynamicCodeKnowledgeAckParam(z).optional().describe('Required only when any item.data contains sourceCode. Use dynamicCodeAckKey from get_enfyra_required_knowledge.'),
|
|
244
|
+
extensionKnowledgeAckKey: extensionKnowledgeAckParam(z).optional().describe('Required only when tableName is enfyra_extension and any item.data contains code. Use extensionAckKey from get_enfyra_required_knowledge.'),
|
|
245
|
+
}, async ({ tableName, items, maxItems, globalRulesAckKey, knowledgeAckKey, extensionKnowledgeAckKey }) => {
|
|
246
|
+
assertGlobalRulesAck(globalRulesAckKey);
|
|
247
|
+
validateTableName(tableName);
|
|
248
|
+
assertGenericRecordMutationAllowed('update', tableName);
|
|
249
|
+
const parsedItems = parseBulkItemsArg('items', items);
|
|
250
|
+
assertMaxBulkItems('update_records', parsedItems, maxItems);
|
|
251
|
+
assertNoDuplicateBulkIds('update_records', parsedItems);
|
|
252
|
+
const preparedItems = [];
|
|
253
|
+
const extensionValidations = [];
|
|
254
|
+
for (const [index, item] of parsedItems.entries()) {
|
|
255
|
+
if (!item.id)
|
|
256
|
+
throw new Error(`items[${index}].id is required.`);
|
|
257
|
+
if (!item.data || typeof item.data !== 'object' || Array.isArray(item.data)) {
|
|
258
|
+
throw new Error(`items[${index}].data must be a JSON object.`);
|
|
259
|
+
}
|
|
260
|
+
assertKnowledgeForGenericMutation(tableName, JSON.stringify(item.data), { knowledgeAckKey, extensionKnowledgeAckKey });
|
|
261
|
+
const prepared = await prepareGenericMutation(tableName, JSON.stringify(item.data));
|
|
262
|
+
preparedItems.push({ index, id: item.id, queryParams: item.queryParams, prepared });
|
|
263
|
+
extensionValidations.push(await validateExtensionCodeForGenericMutation(tableName, prepared.payload, item.id));
|
|
264
|
+
}
|
|
265
|
+
const batch = await executeSequentialBatch(preparedItems, async (item) => {
|
|
266
|
+
const query = parseQueryParamsArg(JSON.stringify(item.queryParams || {}));
|
|
267
|
+
const result = await fetchAPI(ENFYRA_API_URL, appendQuery(`/${tableName}/${encodeURIComponent(String(item.id))}`, query), { method: 'PATCH', body: JSON.stringify(item.prepared.payload) });
|
|
268
|
+
return {
|
|
269
|
+
index: item.index,
|
|
270
|
+
id: item.id,
|
|
271
|
+
...summarizeMutationResult(result, 'updated', tableName),
|
|
272
|
+
};
|
|
273
|
+
});
|
|
274
|
+
if (batch.status === 'partial_failure') {
|
|
275
|
+
return {
|
|
276
|
+
isError: true,
|
|
277
|
+
content: [{ type: 'text', text: JSON.stringify({
|
|
278
|
+
action: 'update_records_partial_failure',
|
|
279
|
+
tableName,
|
|
280
|
+
requested: parsedItems.length,
|
|
281
|
+
updatedCount: batch.completed.length,
|
|
282
|
+
sequential: true,
|
|
283
|
+
completed: batch.completed,
|
|
284
|
+
failed: batch.failure,
|
|
285
|
+
remainingIndexes: batch.remainingIndexes,
|
|
286
|
+
retryHint: 'Resolve the failed item, then retry only the failed item and remaining indexes. Do not replay completed updates unless the new value is deliberately idempotent.',
|
|
287
|
+
}, null, 2) }],
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
return { content: [{ type: 'text', text: JSON.stringify({
|
|
291
|
+
action: 'updated_records',
|
|
292
|
+
tableName,
|
|
293
|
+
requested: parsedItems.length,
|
|
294
|
+
updatedCount: batch.completed.length,
|
|
295
|
+
sequential: true,
|
|
296
|
+
duplicateIdsRejected: true,
|
|
297
|
+
preflight: {
|
|
298
|
+
liveMetadataFieldsValidated: true,
|
|
299
|
+
scriptValidatedBeforeAnyPatch: preparedItems.some((item) => item.prepared.scriptValidation?.validated === true),
|
|
300
|
+
extensionValidatedBeforeAnyPatch: extensionValidations.some(Boolean),
|
|
301
|
+
},
|
|
302
|
+
updated: batch.completed,
|
|
303
|
+
}, null, 2) }] };
|
|
304
|
+
});
|
|
305
|
+
server.tool('delete_records', 'Delete one or more route-backed records in one MCP call. Pass items as a native JSON array; for one delete, pass one item. The tool previews every target when confirm=false, rejects duplicate ids, and deletes sequentially when confirm=true. Confirmed deletes automatically re-read the requested primary keys and return postcondition.confirmedAbsent plus remainingIds, so a separate absence query is optional. By default, confirm=true skips records that were already removed by cascade or a previous cleanup step.', {
|
|
306
|
+
tableName: z.string().describe('Table name'),
|
|
307
|
+
items: bulkObjectArrayParam(z, 'Delete items').describe('Native JSON array of delete items: [{ "id": "...", "queryParams": { ... }? }].'),
|
|
308
|
+
maxItems: z.number().int().min(1).max(100).optional().default(100).describe('Safety cap for one MCP batch. Default/max is 100.'),
|
|
309
|
+
confirm: z.boolean().optional().default(false).describe('Required true to apply destructive deletes. Omit/false returns previews only.'),
|
|
310
|
+
skipNotFound: z.boolean().optional().default(true).describe('When confirm=true, continue if a target is already gone, for example because a previous delete cascaded child records. Default true.'),
|
|
311
|
+
globalRulesAckKey: globalRulesAckParam(z).optional().describe('Required when confirm=true. Use globalRulesAckKey from get_enfyra_required_knowledge.'),
|
|
312
|
+
}, async ({ tableName, items, maxItems, confirm, skipNotFound, globalRulesAckKey }) => {
|
|
313
|
+
validateTableName(tableName);
|
|
314
|
+
assertGenericRecordMutationAllowed('delete', tableName);
|
|
315
|
+
const parsedItems = parseBulkItemsArg('items', items);
|
|
316
|
+
assertMaxBulkItems('delete_records', parsedItems, maxItems);
|
|
317
|
+
assertNoDuplicateBulkIds('delete_records', parsedItems);
|
|
318
|
+
for (const [index, item] of parsedItems.entries()) {
|
|
319
|
+
if (!item.id)
|
|
320
|
+
throw new Error(`items[${index}].id is required.`);
|
|
321
|
+
}
|
|
322
|
+
const primaryKey = await getPrimaryFieldName(tableName);
|
|
323
|
+
if (!confirm) {
|
|
324
|
+
const previews = [];
|
|
325
|
+
for (const [index, item] of parsedItems.entries()) {
|
|
326
|
+
const query = new URLSearchParams({
|
|
327
|
+
filter: JSON.stringify({ [primaryKey]: { _eq: item.id } }),
|
|
328
|
+
limit: '1',
|
|
329
|
+
fields: primaryKey,
|
|
330
|
+
});
|
|
331
|
+
const preview = await fetchAPI(ENFYRA_API_URL, `/${tableName}?${query.toString()}`).catch((error) => ({ error: String(error?.message || error) }));
|
|
332
|
+
previews.push({
|
|
333
|
+
index,
|
|
334
|
+
id: item.id,
|
|
335
|
+
preview: preview?.data?.[0] || null,
|
|
336
|
+
previewError: preview?.error,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
return { content: [{ type: 'text', text: JSON.stringify({
|
|
340
|
+
action: 'delete_records_preview',
|
|
341
|
+
tableName,
|
|
342
|
+
primaryKey,
|
|
343
|
+
requested: parsedItems.length,
|
|
344
|
+
duplicateIdsRejected: true,
|
|
345
|
+
destructive: true,
|
|
346
|
+
previews,
|
|
347
|
+
postcondition: {
|
|
348
|
+
verificationMethod: 'not_run_preview',
|
|
349
|
+
requestedIds: parsedItems.map((item) => item.id),
|
|
350
|
+
remainingIds: previews.filter((item) => item.preview).map((item) => item.id),
|
|
351
|
+
confirmedAbsent: false,
|
|
352
|
+
},
|
|
353
|
+
next: 'Call delete_records again with the same items and confirm=true to delete these route-backed records sequentially.',
|
|
354
|
+
}, null, 2) }] };
|
|
355
|
+
}
|
|
356
|
+
assertGlobalRulesAck(globalRulesAckKey);
|
|
357
|
+
const deleted = [];
|
|
358
|
+
const skippedNotFound = [];
|
|
359
|
+
for (const [index, item] of parsedItems.entries()) {
|
|
360
|
+
const query = parseQueryParamsArg(JSON.stringify(item.queryParams || {}));
|
|
361
|
+
try {
|
|
362
|
+
const result = await fetchAPI(ENFYRA_API_URL, appendQuery(`/${tableName}/${encodeURIComponent(String(item.id))}`, query), { method: 'DELETE' });
|
|
363
|
+
deleted.push({
|
|
364
|
+
index,
|
|
365
|
+
id: item.id,
|
|
366
|
+
statusCode: result?.statusCode,
|
|
367
|
+
success: result?.success,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
if (skipNotFound && isNotFoundDeleteError(error)) {
|
|
372
|
+
skippedNotFound.push({
|
|
373
|
+
index,
|
|
374
|
+
id: item.id,
|
|
375
|
+
skipped: true,
|
|
376
|
+
reason: 'not_found',
|
|
377
|
+
});
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
throw error;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
const requestedIds = parsedItems.map((item) => item.id);
|
|
384
|
+
let postcondition;
|
|
385
|
+
try {
|
|
386
|
+
const verificationQuery = new URLSearchParams({
|
|
387
|
+
filter: JSON.stringify({ [primaryKey]: { _in: requestedIds } }),
|
|
388
|
+
limit: String(parsedItems.length),
|
|
389
|
+
fields: primaryKey,
|
|
390
|
+
});
|
|
391
|
+
const verification = await fetchAPI(ENFYRA_API_URL, `/${tableName}?${verificationQuery.toString()}`);
|
|
392
|
+
postcondition = buildDeletePostcondition(requestedIds, verification?.data ?? [], primaryKey);
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
postcondition = {
|
|
396
|
+
verificationMethod: 'route_read_by_primary_keys',
|
|
397
|
+
requestedIds,
|
|
398
|
+
remainingIds: [],
|
|
399
|
+
confirmedAbsent: false,
|
|
400
|
+
verificationError: String(error?.message || error),
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
return { content: [{ type: 'text', text: JSON.stringify({
|
|
404
|
+
action: 'deleted_records',
|
|
405
|
+
tableName,
|
|
406
|
+
requested: parsedItems.length,
|
|
407
|
+
deletedCount: deleted.length,
|
|
408
|
+
skippedNotFoundCount: skippedNotFound.length,
|
|
409
|
+
sequential: true,
|
|
410
|
+
duplicateIdsRejected: true,
|
|
411
|
+
skipNotFound,
|
|
412
|
+
deleted,
|
|
413
|
+
skippedNotFound,
|
|
414
|
+
postcondition,
|
|
415
|
+
}, null, 2) }] };
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
//# sourceMappingURL=record-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-tools.js","sourceRoot":"","sources":["../../src/lib/record-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const GLOBAL_RULES_ACK_KEY = "EFYRA::GLOBAL-RULES::RUNTIME-ZONE-INVENTORY::SCHEMA-DESIGN-CONTEXT::20260717M";
|
|
2
|
-
export declare const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = "EFYRA::DYNAMIC-REPOSITORY-CONTRACT::
|
|
2
|
+
export declare const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = "EFYRA::DYNAMIC-REPOSITORY-CONTRACT::SCRIPT-RUNTIME-TYPES::ASYNC-HELPER-BRIDGE::20260720A";
|
|
3
3
|
export declare const EXTENSION_KNOWLEDGE_ACK_KEY = "EFYRA::EXTENSION-APP-COMPOSABLE-CONTRACT::20260716B";
|
|
4
4
|
export declare function resetRequiredKnowledgeSession(): void;
|
|
5
5
|
export declare function getRequiredKnowledgeSessionState(): {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const GLOBAL_RULES_ACK_KEY = 'EFYRA::GLOBAL-RULES::RUNTIME-ZONE-INVENTORY::SCHEMA-DESIGN-CONTEXT::20260717M';
|
|
2
|
-
export const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = 'EFYRA::DYNAMIC-REPOSITORY-CONTRACT::
|
|
2
|
+
export const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = 'EFYRA::DYNAMIC-REPOSITORY-CONTRACT::SCRIPT-RUNTIME-TYPES::ASYNC-HELPER-BRIDGE::20260720A';
|
|
3
3
|
export const EXTENSION_KNOWLEDGE_ACK_KEY = 'EFYRA::EXTENSION-APP-COMPOSABLE-CONTRACT::20260716B';
|
|
4
|
-
const REQUIRED_KNOWLEDGE_VERSION = '2026-07-
|
|
4
|
+
const REQUIRED_KNOWLEDGE_VERSION = '2026-07-20.dynamic-script-runtime-types';
|
|
5
5
|
const acknowledgedDomains = new Set();
|
|
6
6
|
function hasExplicitAckKey(key) {
|
|
7
7
|
return key !== undefined && key !== null;
|
|
@@ -219,6 +219,7 @@ const DYNAMIC_CODE_SECTIONS = [
|
|
|
219
219
|
'Use sourceCode and scriptLanguage; never send compiledCode.',
|
|
220
220
|
'Locate script-backed records with search_runtime_zone and inspect the returned nextInspect.input before source reads. Inspection already returns exact source artifacts with process-scoped enfyra-source resource URIs; never guess or probe ids with get_script_source.',
|
|
221
221
|
'Prefer macros such as @BODY, @QUERY, @PARAMS, @USER, @REQ, @RES, @REPOS, @HELPERS, @STORAGE, @SOCKET, and @THROW* when available.',
|
|
222
|
+
'Call discover_script_contexts and treat its runtimeTypes section as the authoritative script-visible ESV contract. Do not add typeof, Array.isArray, existence, or callable guards around documented containers, services, methods, or repository result envelopes; validate user-controlled business fields and documented nullable values instead.',
|
|
222
223
|
'Call build_dynamic_repository_usage for list, find-one, create, update, or delete code instead of composing secure/trusted repository syntax and result shapes from memory.',
|
|
223
224
|
'An enfyra_oauth_config sourceCode script runs before a new OAuth user insert, has no authenticated @USER, and must return a plain object of additional user fields. Provider identity fields are merged afterward and take precedence.',
|
|
224
225
|
'Repository reads use filter, not where.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"required-knowledge.js","sourceRoot":"","sources":["../../src/lib/required-knowledge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,+EAA+E,CAAC;AACpH,MAAM,CAAC,MAAM,8BAA8B,GAAG,
|
|
1
|
+
{"version":3,"file":"required-knowledge.js","sourceRoot":"","sources":["../../src/lib/required-knowledge.ts"],"names":[],"mappings":"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"}
|