@enfyra/mcp-server 0.1.62 → 0.1.63
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/dist/lib/dynamic-endpoint-contract.d.ts +12 -0
- package/dist/lib/dynamic-endpoint-contract.js +145 -0
- package/dist/lib/dynamic-endpoint-contract.js.map +1 -0
- package/dist/lib/dynamic-repository-builder.d.ts +7 -0
- package/dist/lib/dynamic-repository-builder.js +8 -0
- package/dist/lib/dynamic-repository-builder.js.map +1 -1
- package/dist/lib/mcp-examples.js +115 -6
- package/dist/lib/mcp-examples.js.map +1 -1
- package/dist/lib/mcp-usage-telemetry.js +38 -0
- package/dist/lib/mcp-usage-telemetry.js.map +1 -1
- package/dist/lib/mutation-guards.js +14 -0
- package/dist/lib/mutation-guards.js.map +1 -1
- package/dist/lib/platform-operation-tools.d.ts +1 -0
- package/dist/lib/platform-operation-tools.js +95 -19
- package/dist/lib/platform-operation-tools.js.map +1 -1
- package/dist/lib/required-knowledge.d.ts +1 -1
- package/dist/lib/required-knowledge.js +12 -3
- package/dist/lib/required-knowledge.js.map +1 -1
- package/dist/lib/table-tools.d.ts +4 -1
- package/dist/lib/table-tools.js +23 -4
- package/dist/lib/table-tools.js.map +1 -1
- package/dist/lib/tool-routing.js +19 -8
- package/dist/lib/tool-routing.js.map +1 -1
- package/dist/lib/types.d.ts +42 -0
- package/dist/mcp-server-entry.js +31 -5
- package/dist/mcp-server-entry.js.map +1 -1
- package/package.json +1 -1
|
@@ -94,9 +94,23 @@ export function rejectUnsafeScriptPayload(tableName, payload) {
|
|
|
94
94
|
export function validatePortableScriptSource(sourceCode) {
|
|
95
95
|
if (typeof sourceCode !== 'string')
|
|
96
96
|
return;
|
|
97
|
+
validateLogsContract(sourceCode);
|
|
98
|
+
validateSocketContract(sourceCode);
|
|
97
99
|
validateAwaitedRepositoryCalls(sourceCode);
|
|
98
100
|
validateNumericThrowDetails(sourceCode);
|
|
99
101
|
}
|
|
102
|
+
function validateSocketContract(sourceCode) {
|
|
103
|
+
const unsupportedEmit = /(?:@SOCKET|\$ctx\.\$socket)\s*\.\s*emit\s*\(/u.exec(sourceCode);
|
|
104
|
+
if (!unsupportedEmit)
|
|
105
|
+
return;
|
|
106
|
+
throw new Error('@SOCKET has no generic emit() method. In websocket event/connection scripts use reply, emitToCurrentRoom, or broadcastToRoom; from global HTTP/flow contexts use emitToGateway, emitToRoom, emitToUser, or broadcast.');
|
|
107
|
+
}
|
|
108
|
+
function validateLogsContract(sourceCode) {
|
|
109
|
+
const methodCall = /@LOGS\s*\.\s*(?:info|warn|error|debug|log)\s*\(/u.exec(sourceCode);
|
|
110
|
+
if (!methodCall)
|
|
111
|
+
return;
|
|
112
|
+
throw new Error('@LOGS is callable, not a console/logger object. Use @LOGS(message, details?) such as @LOGS("Approval requested", { requestId }); do not use @LOGS.info/@LOGS.warn/@LOGS.error/@LOGS.debug.');
|
|
113
|
+
}
|
|
100
114
|
function validateAwaitedRepositoryCalls(sourceCode) {
|
|
101
115
|
const repoCallPattern = /(?:#secure\.[A-Za-z_][A-Za-z0-9_]*|#[A-Za-z_][A-Za-z0-9_]*|@REPOS\.secure\.[A-Za-z_][A-Za-z0-9_]*|@REPOS\.(?!secure\b)[A-Za-z_][A-Za-z0-9_]*)\s*\.\s*(find|create|update|delete|exists)\s*\(/g;
|
|
102
116
|
let match;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation-guards.js","sourceRoot":"","sources":["../../src/lib/mutation-guards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mutation-guards.js","sourceRoot":"","sources":["../../src/lib/mutation-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,5 +163,6 @@ export declare function applyExtensionCodePatches(code: any, patches: any): {
|
|
|
163
163
|
}[];
|
|
164
164
|
results: any[];
|
|
165
165
|
};
|
|
166
|
+
export declare function assertFixedFlowStepConfigIsStatic(type: any, config: any, index?: number): void;
|
|
166
167
|
export declare function registerPlatformOperationTools(server: any, ENFYRA_API_URL: any): void;
|
|
167
168
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
3
|
import { fetchAPI } from './fetch.js';
|
|
4
|
-
import { fetchTableCatalog, fetchTableMetadataByRef, resolveTableCatalogEntry } from './metadata-client.js';
|
|
4
|
+
import { fetchTableCatalog, fetchTableMetadata, fetchTableMetadataByRef, resolveTableCatalogEntry } from './metadata-client.js';
|
|
5
|
+
import { assertCustomEndpointRoute, assertDynamicEndpointContract, extractExplicitRepositoryTableNames, reviewDynamicEndpointContract, } from './dynamic-endpoint-contract.js';
|
|
5
6
|
import { validatePortableScriptSource, validateScriptSourceIfPresent } from './mutation-guards.js';
|
|
6
7
|
import { assertDynamicCodeKnowledgeAck, assertDynamicCodeKnowledgeAckIf, assertExtensionKnowledgeAck, assertGlobalRulesAck, dynamicCodeKnowledgeAckParam, extensionKnowledgeAckParam, globalRulesAckParam, } from './required-knowledge.js';
|
|
7
8
|
const AUTO_INJECTED_EXTENSION_COMPONENT_TAGS = [
|
|
@@ -2236,20 +2237,20 @@ const FLOW_STEP_TOOL_GUIDANCE = [
|
|
|
2236
2237
|
{
|
|
2237
2238
|
tool: 'ensure_create_flow_step',
|
|
2238
2239
|
type: 'create',
|
|
2239
|
-
when: 'Create one record
|
|
2240
|
+
when: 'Create one record from static config only. Fixed step config is not template-transformed; use a script step when data comes from @FLOW_PAYLOAD, @FLOW_LAST, or @FLOW.',
|
|
2240
2241
|
config: { table: 'table_name', data: { field: 'value' } },
|
|
2241
2242
|
},
|
|
2242
2243
|
{
|
|
2243
2244
|
tool: 'ensure_update_flow_step',
|
|
2244
2245
|
type: 'update',
|
|
2245
|
-
when: 'Update one known record
|
|
2246
|
-
config: { table: 'table_name', id: '
|
|
2246
|
+
when: 'Update one statically known record. Use a script step when id or data comes from runtime flow values.',
|
|
2247
|
+
config: { table: 'table_name', id: '<static-id>', data: { field: 'value' } },
|
|
2247
2248
|
},
|
|
2248
2249
|
{
|
|
2249
2250
|
tool: 'ensure_delete_flow_step',
|
|
2250
2251
|
type: 'delete',
|
|
2251
|
-
when: 'Delete one known record
|
|
2252
|
-
config: { table: 'table_name', id: '
|
|
2252
|
+
when: 'Delete one statically known record. Use a script step when id comes from runtime flow values.',
|
|
2253
|
+
config: { table: 'table_name', id: '<static-id>' },
|
|
2253
2254
|
},
|
|
2254
2255
|
{
|
|
2255
2256
|
tool: 'ensure_http_flow_step',
|
|
@@ -2311,6 +2312,36 @@ function chooseFlowStepTool(intent) {
|
|
|
2311
2312
|
return FLOW_STEP_TOOL_GUIDANCE.find((item) => item.type === 'query');
|
|
2312
2313
|
return FLOW_STEP_TOOL_GUIDANCE.find((item) => item.type === 'script');
|
|
2313
2314
|
}
|
|
2315
|
+
const FIXED_FLOW_STEP_TYPES = new Set(['query', 'create', 'update', 'delete', 'http', 'sleep', 'trigger_flow', 'log']);
|
|
2316
|
+
const FLOW_RUNTIME_MACRO_PATTERN = /@FLOW(?:_PAYLOAD|_LAST|_META)?\b/u;
|
|
2317
|
+
function findFlowRuntimeMacro(value) {
|
|
2318
|
+
if (typeof value === 'string')
|
|
2319
|
+
return FLOW_RUNTIME_MACRO_PATTERN.exec(value)?.[0] || null;
|
|
2320
|
+
if (Array.isArray(value)) {
|
|
2321
|
+
for (const item of value) {
|
|
2322
|
+
const match = findFlowRuntimeMacro(item);
|
|
2323
|
+
if (match)
|
|
2324
|
+
return match;
|
|
2325
|
+
}
|
|
2326
|
+
return null;
|
|
2327
|
+
}
|
|
2328
|
+
if (!value || typeof value !== 'object')
|
|
2329
|
+
return null;
|
|
2330
|
+
for (const item of Object.values(value)) {
|
|
2331
|
+
const match = findFlowRuntimeMacro(item);
|
|
2332
|
+
if (match)
|
|
2333
|
+
return match;
|
|
2334
|
+
}
|
|
2335
|
+
return null;
|
|
2336
|
+
}
|
|
2337
|
+
export function assertFixedFlowStepConfigIsStatic(type, config, index = 0) {
|
|
2338
|
+
if (!FIXED_FLOW_STEP_TYPES.has(String(type)))
|
|
2339
|
+
return;
|
|
2340
|
+
const macro = findFlowRuntimeMacro(config);
|
|
2341
|
+
if (!macro)
|
|
2342
|
+
return;
|
|
2343
|
+
throw new Error(`steps[${index}] uses ${macro} inside a ${type} config, but ESV fixed flow step configs are static and are not template-transformed. Use a script step for runtime payload/previous-step values, keep one business operation in that script, and call @LOGS(message, details?) for captured logs.`);
|
|
2344
|
+
}
|
|
2314
2345
|
function planFlowSteps(steps) {
|
|
2315
2346
|
const items = Array.isArray(steps) ? steps : [];
|
|
2316
2347
|
return items.map((step, index) => {
|
|
@@ -2350,7 +2381,7 @@ function normalizeFlowWorkflowStep(step, index) {
|
|
|
2350
2381
|
.replace(/[^a-z0-9]+/g, '_')
|
|
2351
2382
|
.replace(/^_+|_+$/g, '')
|
|
2352
2383
|
.slice(0, 64) || `step_${index + 1}`;
|
|
2353
|
-
|
|
2384
|
+
const normalized = {
|
|
2354
2385
|
index,
|
|
2355
2386
|
key,
|
|
2356
2387
|
name: input.name || intent,
|
|
@@ -2365,6 +2396,8 @@ function normalizeFlowWorkflowStep(step, index) {
|
|
|
2365
2396
|
chosenByIntent: !input.type,
|
|
2366
2397
|
recommendedTool: guidance.tool,
|
|
2367
2398
|
};
|
|
2399
|
+
assertFixedFlowStepConfigIsStatic(type, normalized.config, index);
|
|
2400
|
+
return normalized;
|
|
2368
2401
|
}
|
|
2369
2402
|
async function runFlowWorkflow(apiUrl, opts) {
|
|
2370
2403
|
const steps = parseJsonArrayArg('steps', opts.steps, []);
|
|
@@ -2392,7 +2425,7 @@ async function runFlowWorkflow(apiUrl, opts) {
|
|
|
2392
2425
|
plan,
|
|
2393
2426
|
requiredAckParams: ['globalRulesAckKey', ...(hasDynamicCode ? ['knowledgeAckKey'] : [])],
|
|
2394
2427
|
nextSteps: [
|
|
2395
|
-
'Review the plan. Prefer fixed step types
|
|
2428
|
+
'Review the plan. Prefer fixed step types only for static config; ESV does not interpolate @FLOW_PAYLOAD/@FLOW_LAST/@FLOW inside fixed-step config. Use one focused script step when runtime values are required.',
|
|
2396
2429
|
'Call flow_workflow again with apply=true and the required ack params to create/update the flow and steps sequentially.',
|
|
2397
2430
|
'Use test_flow_step for script, condition, or high-risk steps before triggering the flow.',
|
|
2398
2431
|
],
|
|
@@ -2447,6 +2480,29 @@ function normalizeEndpointAccess(anonymousAccess, makePublic) {
|
|
|
2447
2480
|
return makePublic ? 'public' : 'private';
|
|
2448
2481
|
return anonymousAccess || 'private';
|
|
2449
2482
|
}
|
|
2483
|
+
async function reviewCustomEndpointSource(apiUrl, method, sourceCode) {
|
|
2484
|
+
const repositoryTables = extractExplicitRepositoryTableNames(sourceCode);
|
|
2485
|
+
const selectedTables = repositoryTables.slice(0, 5);
|
|
2486
|
+
const results = await Promise.allSettled(selectedTables.map(async (tableName) => [tableName, await fetchTableMetadata(apiUrl, tableName)]));
|
|
2487
|
+
const tableMetadata = {};
|
|
2488
|
+
const metadataUnavailable = [];
|
|
2489
|
+
for (const [index, result] of results.entries()) {
|
|
2490
|
+
if (result.status === 'fulfilled') {
|
|
2491
|
+
tableMetadata[result.value[0]] = result.value[1];
|
|
2492
|
+
}
|
|
2493
|
+
else {
|
|
2494
|
+
metadataUnavailable.push(selectedTables[index]);
|
|
2495
|
+
}
|
|
2496
|
+
}
|
|
2497
|
+
return reviewDynamicEndpointContract({
|
|
2498
|
+
routeKind: 'custom',
|
|
2499
|
+
method,
|
|
2500
|
+
sourceCode,
|
|
2501
|
+
tableMetadata,
|
|
2502
|
+
metadataUnavailable,
|
|
2503
|
+
metadataTruncated: repositoryTables.length > selectedTables.length,
|
|
2504
|
+
});
|
|
2505
|
+
}
|
|
2450
2506
|
function sourceMatches(existingHandler, sourceCode, scriptLanguage, timeout) {
|
|
2451
2507
|
if (!existingHandler)
|
|
2452
2508
|
return false;
|
|
@@ -2484,18 +2540,25 @@ async function resolveApiEndpointWorkflowState(apiUrl, opts) {
|
|
|
2484
2540
|
const normalizedPath = normalizeRestPath(opts.path);
|
|
2485
2541
|
const methodName = normalizeMethodName(opts.method);
|
|
2486
2542
|
const access = normalizeEndpointAccess(opts.anonymousAccess, opts.public);
|
|
2543
|
+
assertDynamicEndpointContract(reviewDynamicEndpointContract({
|
|
2544
|
+
routeKind: 'custom',
|
|
2545
|
+
method: methodName,
|
|
2546
|
+
sourceCode: opts.sourceCode,
|
|
2547
|
+
}));
|
|
2487
2548
|
const { methodMap, methodIdNameMap } = await getMethodContext(apiUrl);
|
|
2488
2549
|
const methodId = methodMap[methodName];
|
|
2489
2550
|
if (!methodId)
|
|
2490
2551
|
throw new Error(`Unknown method "${methodName}". Valid methods: ${Object.keys(methodMap).sort().join(', ')}`);
|
|
2491
|
-
const [routes, scriptValidation] = await Promise.all([
|
|
2552
|
+
const [routes, scriptValidation, contractReview] = await Promise.all([
|
|
2492
2553
|
fetchAll(apiUrl, '/enfyra_route?limit=1000&fields=id,_id,path,isEnabled,description,availableMethods.*,publicMethods.*,mainTable.name'),
|
|
2493
2554
|
validateScriptSourceIfPresent(fetchAPI, apiUrl, 'enfyra_route_handler', {
|
|
2494
2555
|
sourceCode: opts.sourceCode,
|
|
2495
2556
|
scriptLanguage: opts.scriptLanguage || 'javascript',
|
|
2496
2557
|
}),
|
|
2558
|
+
reviewCustomEndpointSource(apiUrl, methodName, opts.sourceCode),
|
|
2497
2559
|
]);
|
|
2498
2560
|
const route = routes.find((item) => item.path === normalizedPath) || null;
|
|
2561
|
+
assertCustomEndpointRoute(route);
|
|
2499
2562
|
const routeId = getId(route);
|
|
2500
2563
|
const availableMethods = methodNamesFromRecords(route?.availableMethods || [], methodIdNameMap);
|
|
2501
2564
|
const publicMethods = methodNamesFromRecords(route?.publicMethods || [], methodIdNameMap);
|
|
@@ -2615,6 +2678,7 @@ async function resolveApiEndpointWorkflowState(apiUrl, opts) {
|
|
|
2615
2678
|
handler,
|
|
2616
2679
|
role,
|
|
2617
2680
|
scriptValidation,
|
|
2681
|
+
contractReview,
|
|
2618
2682
|
steps,
|
|
2619
2683
|
firstRunnable,
|
|
2620
2684
|
blocked,
|
|
@@ -2771,6 +2835,7 @@ async function runApiEndpointWorkflow(apiUrl, opts) {
|
|
|
2771
2835
|
action: operations.length ? 'api_endpoint_workflow_advanced' : 'api_endpoint_workflow_planned',
|
|
2772
2836
|
endpoint: latestState.endpoint,
|
|
2773
2837
|
scriptValidation: latestState.scriptValidation,
|
|
2838
|
+
contractReview: latestState.contractReview,
|
|
2774
2839
|
steps: latestSteps,
|
|
2775
2840
|
operations,
|
|
2776
2841
|
complete: latestSteps.every((item) => ['completed', 'skipped'].includes(item.status)),
|
|
@@ -3486,12 +3551,12 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
3486
3551
|
server.tool('api_endpoint_workflow', [
|
|
3487
3552
|
'Step-by-step workflow for creating or updating a custom REST endpoint.',
|
|
3488
3553
|
'Use this when an LLM is building or changing endpoint behavior and should follow live nextSteps instead of guessing raw metadata mutations.',
|
|
3489
|
-
'With apply=false it validates sourceCode, reads live route/handler/access state, and returns pending steps.',
|
|
3554
|
+
'With apply=false it validates sourceCode, blocks canonical-route collisions, reviews explicit repository metadata/security boundaries, reads live route/handler/access state, and returns pending steps.',
|
|
3490
3555
|
'With apply=true it applies only the next pending step, then returns a fresh plan. With applyAll=true it advances all currently safe pending steps.',
|
|
3491
3556
|
].join(' '), {
|
|
3492
3557
|
path: z.string().describe('Custom route path, e.g. /sum. Must not be a full URL.'),
|
|
3493
3558
|
method: z.string().describe('HTTP method for the handler, e.g. GET or POST.'),
|
|
3494
|
-
sourceCode: z.string().describe('Handler sourceCode
|
|
3559
|
+
sourceCode: z.string().describe('Handler sourceCode for a custom route, which has no main table. Use #secure.table_name or @REPOS.secure.table_name for user-facing explicit-table access. Repository calls are async and reads return result.data. Passing @BODY as create/update data is valid TypeORM-style usage; enforce endpoint-specific owner/tenant/business rules in code. Reserve trusted repos for intentional field-permission bypass. Do not send compiledCode.'),
|
|
3495
3560
|
scriptLanguage: z.enum(['javascript', 'typescript']).optional().default('javascript').describe('Script language.'),
|
|
3496
3561
|
anonymousAccess: z.enum(['public', 'private']).optional().default('private').describe('public adds the method to publicMethods; private removes this method from publicMethods.'),
|
|
3497
3562
|
public: z.boolean().optional().describe('Compatibility alias for anonymousAccess. true means public, false means private.'),
|
|
@@ -3520,7 +3585,7 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
3520
3585
|
].join(' '), {
|
|
3521
3586
|
path: z.string().describe('Custom route path, e.g. /sum. Must not be a full URL.'),
|
|
3522
3587
|
method: z.string().describe('HTTP method for the handler, e.g. GET or POST.'),
|
|
3523
|
-
sourceCode: z.string().describe('Handler sourceCode
|
|
3588
|
+
sourceCode: z.string().describe('Handler sourceCode for a custom route, which has no main table. Use #secure.table_name or @REPOS.secure.table_name for user-facing explicit-table access. Repository calls are async and reads return result.data. Passing @BODY as create/update data is valid TypeORM-style usage; enforce endpoint-specific owner/tenant/business rules in code. Reserve trusted repos for intentional field-permission bypass. Do not send compiledCode.'),
|
|
3524
3589
|
scriptLanguage: z.enum(['javascript', 'typescript']).optional().default('javascript').describe('Script language.'),
|
|
3525
3590
|
public: z.boolean().optional().default(false).describe('When true, the method is added to publicMethods for anonymous access.'),
|
|
3526
3591
|
description: z.string().optional().describe('Route description.'),
|
|
@@ -3535,12 +3600,25 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
3535
3600
|
assertDynamicCodeKnowledgeAck(knowledgeAckKey);
|
|
3536
3601
|
const normalizedPath = normalizeRestPath(path);
|
|
3537
3602
|
const methodName = normalizeMethodName(method);
|
|
3538
|
-
|
|
3603
|
+
assertDynamicEndpointContract(reviewDynamicEndpointContract({
|
|
3604
|
+
routeKind: 'custom',
|
|
3605
|
+
method: methodName,
|
|
3606
|
+
sourceCode,
|
|
3607
|
+
}));
|
|
3608
|
+
const [{ methodMap, methodIdNameMap }, routes, scriptValidation, contractReview] = await Promise.all([
|
|
3609
|
+
getMethodContext(ENFYRA_API_URL),
|
|
3610
|
+
fetchAll(ENFYRA_API_URL, '/enfyra_route?limit=1000&fields=id,_id,path,isEnabled,availableMethods.*,publicMethods.*,mainTable.name'),
|
|
3611
|
+
validateScriptSourceIfPresent(fetchAPI, ENFYRA_API_URL, 'enfyra_route_handler', {
|
|
3612
|
+
sourceCode,
|
|
3613
|
+
scriptLanguage,
|
|
3614
|
+
}),
|
|
3615
|
+
reviewCustomEndpointSource(ENFYRA_API_URL, methodName, sourceCode),
|
|
3616
|
+
]);
|
|
3539
3617
|
const methodId = methodMap[methodName];
|
|
3540
3618
|
if (!methodId)
|
|
3541
3619
|
throw new Error(`Unknown method "${methodName}". Valid methods: ${Object.keys(methodMap).sort().join(', ')}`);
|
|
3542
|
-
const routes = await fetchAll(ENFYRA_API_URL, '/enfyra_route?limit=1000&fields=id,_id,path,isEnabled,availableMethods.*,publicMethods.*,mainTable.name');
|
|
3543
3620
|
let route = routes.find((item) => item.path === normalizedPath);
|
|
3621
|
+
assertCustomEndpointRoute(route);
|
|
3544
3622
|
let routeAction = 'existing';
|
|
3545
3623
|
if (!route) {
|
|
3546
3624
|
const createRouteResult = await fetchAPI(ENFYRA_API_URL, '/enfyra_route', {
|
|
@@ -3573,10 +3651,6 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
3573
3651
|
routeAction = 'updated';
|
|
3574
3652
|
}
|
|
3575
3653
|
const routeId = getId(route);
|
|
3576
|
-
const scriptValidation = await validateScriptSourceIfPresent(fetchAPI, ENFYRA_API_URL, 'enfyra_route_handler', {
|
|
3577
|
-
sourceCode,
|
|
3578
|
-
scriptLanguage,
|
|
3579
|
-
});
|
|
3580
3654
|
const existingHandler = await findHandler(ENFYRA_API_URL, routeId, methodId);
|
|
3581
3655
|
let handlerResult;
|
|
3582
3656
|
let handlerAction;
|
|
@@ -3642,6 +3716,7 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
3642
3716
|
routeAction,
|
|
3643
3717
|
handlerAction,
|
|
3644
3718
|
scriptValidation,
|
|
3719
|
+
contractReview,
|
|
3645
3720
|
routeReload,
|
|
3646
3721
|
smokeTest,
|
|
3647
3722
|
usage: {
|
|
@@ -3960,6 +4035,7 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
3960
4035
|
'Workflow front door for creating or updating an Enfyra flow and its steps in one guided path.',
|
|
3961
4036
|
'For a fully specified, non-destructive flow, use apply=true to create/update the flow and all steps sequentially in one call. Use apply=false only when step types or risk need review.',
|
|
3962
4037
|
'Prefer this over choosing individual ensure_*_flow_step tools in guided mode.',
|
|
4038
|
+
'Fixed query/create/update/delete/http/sleep/trigger/log config is static in current ESV and does not interpolate @FLOW_PAYLOAD/@FLOW_LAST/@FLOW; use a focused script step for runtime values.',
|
|
3963
4039
|
].join(' '), {
|
|
3964
4040
|
name: z.string().describe('Flow name. Existing flow with this name is updated.'),
|
|
3965
4041
|
triggerType: z.enum(['manual', 'schedule']).optional().default('manual').describe('manual for API/admin/hook/child flow usage, schedule for cron/time-based flows.'),
|
|
@@ -3971,7 +4047,7 @@ export function registerPlatformOperationTools(server, ENFYRA_API_URL) {
|
|
|
3971
4047
|
name: z.string().optional().describe('Human label. Defaults from intent.'),
|
|
3972
4048
|
intent: z.string().optional().describe('Plain-language step intent. Used to choose a fixed step type when type is omitted.'),
|
|
3973
4049
|
type: z.enum(['query', 'create', 'update', 'delete', 'http', 'condition', 'sleep', 'trigger_flow', 'log', 'script']).optional().describe('Explicit step type. Omit to let the workflow choose from intent.'),
|
|
3974
|
-
config: z.union([z.record(z.any()), z.string()]).optional().describe('Step config object or JSON string.
|
|
4050
|
+
config: z.union([z.record(z.any()), z.string()]).optional().describe('Step config object or JSON string. Fixed-step config is static and cannot contain @FLOW_PAYLOAD/@FLOW_LAST/@FLOW. Use a focused script step for runtime values.'),
|
|
3975
4051
|
sourceCode: z.string().optional().describe('Only for script or condition steps. Use fixed step types when possible.'),
|
|
3976
4052
|
scriptLanguage: z.enum(['javascript', 'typescript']).optional().default('javascript'),
|
|
3977
4053
|
order: z.number().optional().describe('Step order. Defaults to index * 10.'),
|