@appaflytech/zeyrek-ai-mcp 0.0.8 → 0.0.10
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 +27 -21
- package/dist/config.js +2 -0
- package/dist/knowledge/componentCatalog.js +122 -27
- package/dist/knowledge/componentEvents.js +35 -4
- package/dist/knowledge/errorPath.js +1 -1
- package/dist/knowledge/normalize.js +15 -0
- package/dist/knowledge/outlines.js +24 -7
- package/dist/knowledge/rules.js +3 -1
- package/dist/knowledge/styleResolve.js +46 -4
- package/dist/knowledge/themeResolve.js +936 -0
- package/dist/knowledge/themeRules.js +221 -0
- package/dist/knowledge/themeSchema.js +335 -0
- package/dist/platform/domSummary.js +144 -0
- package/dist/platform/screenshot.js +414 -23
- package/dist/platform/screenshotMemory.js +55 -0
- package/dist/resources/examples/layout-app-shell.json +1 -1
- package/dist/resources/examples/theme-brand.json +162 -0
- package/dist/resources/guides/component.md +7 -1
- package/dist/resources/guides/getting-started.md +4 -0
- package/dist/resources/guides/layout.md +30 -26
- package/dist/resources/guides/microservice.md +55 -1
- package/dist/resources/guides/page.md +87 -44
- package/dist/resources/guides/theme.md +210 -0
- package/dist/resources/guides/translation.md +6 -4
- package/dist/resources/guides/workflow.md +91 -6
- package/dist/resources/schema-fingerprint.json +2 -2
- package/dist/server.js +52 -43
- package/dist/tools/components.js +8 -0
- package/dist/tools/designSchemaPatch.js +152 -0
- package/dist/tools/flows.js +15 -18
- package/dist/tools/layouts.js +4 -4
- package/dist/tools/microservices.js +5 -5
- package/dist/tools/pages.js +196 -323
- package/dist/tools/projects.js +66 -9
- package/dist/tools/schemaOps.js +280 -0
- package/dist/tools/screenWrite.js +2 -1
- package/dist/tools/screens.js +0 -7
- package/dist/tools/themes.js +163 -0
- package/dist/tools/workflows.js +1 -1
- package/package.json +2 -2
- package/dist/tools/globalFunctions.js +0 -63
package/dist/tools/workflows.js
CHANGED
|
@@ -188,7 +188,7 @@ export function registerWorkflowTools(server, platform) {
|
|
|
188
188
|
}, handle(config, ({ project, environment, id }) => platform.tenant('POST', project, `/workflows/clone/${id}`, { environment })));
|
|
189
189
|
server.registerTool('workflow_preview', {
|
|
190
190
|
title: 'Workflow önizle',
|
|
191
|
-
description: "Kaydedilmemiş workflow tanımını çalıştırır; kaydetmeden önce her akışı preview ile doğrulayın. definition = PreviewWorkflowCommand gövdesi. Test girdisi 'previewPayload' anahtarıyla verilir ('parameters'/'input' ÇALIŞMAZ), değişkenler 'previewVariables'. previewPayload STRING olmalıdır (JSON.stringify(...) ya da \"({ id: 1 })\") — nesne gönderilirse platform 'Unexpected end of input' ile 500 döner. Akışın parameterDtoId'si YOKSA previewPayload verilmez (platform 400 döner; gateway alanı düşürüp gatewayNormalized ile bildirir). Preview tek transaction'da koşar ve sonunda ROLLBACK edilir: table create/update step'leri kalıcı satır YAZMAZ (ölçüldü, İK koşusu W-1). Tek istisna code step içindeki dış HTTP çağrılarıdır — onlar geri alınamaz.
|
|
191
|
+
description: "Kaydedilmemiş workflow tanımını çalıştırır; kaydetmeden önce her akışı preview ile doğrulayın. definition = PreviewWorkflowCommand gövdesi. Test girdisi 'previewPayload' anahtarıyla verilir ('parameters'/'input' ÇALIŞMAZ), değişkenler 'previewVariables'. previewPayload STRING olmalıdır (JSON.stringify(...) ya da \"({ id: 1 })\") — nesne gönderilirse platform 'Unexpected end of input' ile 500 döner. Akışın parameterDtoId'si YOKSA previewPayload verilmez (platform 400 döner; gateway alanı düşürüp gatewayNormalized ile bildirir). Preview tek transaction'da koşar ve sonunda ROLLBACK edilir: table create/update step'leri kalıcı satır YAZMAZ (ölçüldü, İK koşusu W-1). Tek istisna code step içindeki dış HTTP çağrılarıdır — onlar geri alınamaz. Yanıt WorkflowPreviewDto: steps[] (her adım: step{id,name,type}, input[] ifade→değer, output, hasError, errorType, errorMessage, errorDetail, elapsedMilliseconds, nextStep, children[] loop/alt akış, automations[]), input, output, executionSuccess. executionSuccess YALNIZ son adıma bakar; gateway tüm ağacı tarayıp hata bulursa yanıta 'runtimeErrors' ekler — HTTP 200 akışın geçtiği anlamına gelmez, ÖNCE bu alana bakın; 'input' boşsa girdi hiç bağlanmamıştır. Kayıtlı bir akışı çalıştırmadan sınamak için workflow_get gövdesini (steps + kayıtlı previewPayload/previewVariables) olduğu gibi verin — Studio'nun Önizleme düğmesi de bunu yapar. Zamanlanmış işin akışında previewPayload vermeyin (iş girdisiz koşar); job geçmişi hatayı mesaj olarak yazar, adım izini burada görün (platform_guide('microservice') §Zamanlanmış işin gerçek sonucunu görmek). Okuma rehberi: platform_guide('workflow') §Önizleme çıktısını okumak. " + constraintSummary('PreviewWorkflowCommand'),
|
|
192
192
|
inputSchema: { project: projectParam, environment: environmentParam, applicationId: guid, definition: definitionParam, policyOverride: policyOverrideParam, language: languageParam },
|
|
193
193
|
annotations: writes
|
|
194
194
|
}, handle(config, async ({ project, environment, applicationId, definition, policyOverride, language }) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appaflytech/zeyrek-ai-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Zeyrek (NgApps) platform APIs as MCP tools — data, logic and Studio design surface in one gateway",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -54,4 +54,4 @@
|
|
|
54
54
|
"typescript": "^5.7.2",
|
|
55
55
|
"vitest": "^3.0.0"
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { guid, projectParam, environmentParam, readOnly, writes, updates, destructive } from './common.js';
|
|
2
|
-
import { handle } from '../platform/responses.js';
|
|
3
|
-
import { z } from 'zod';
|
|
4
|
-
const identifier = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
5
|
-
const nameParam = z.string().min(1).regex(identifier, 'Geçerli bir JavaScript tanımlayıcısı olmalı')
|
|
6
|
-
.describe("Motorun bağlayacağı ad; ifadelerde bu adla çağrılır (sum(1, 2)). Sistem fonksiyonlarının adları (Now, UtcNow, GenerateGuid, crypto…) rezervedir ve reddedilir");
|
|
7
|
-
const functionParam = z.string().min(1)
|
|
8
|
-
.describe("Klasik ya da arrow JavaScript FONKSİYON İFADESİ: '(left, right) => left + right' ya da 'function (a) { return a * 2 }'. Deyim değil ifade olmalı — 'return a + b' gibi bir gövde tek başına reddedilir. Platform kaydetmeden önce gerçek bir Jint motorunda çalıştırıp sonucun çağrılabilir olduğunu doğrular; SÖZDİZİMİ ve çağrılabilirlik denetlenir, gövdenin içindeki serbest değişkenler DENETLENMEZ");
|
|
9
|
-
const descriptionParam = z.string().min(1)
|
|
10
|
-
.describe('Fonksiyonun ne işe yaradığı; Studio kod editöründe autocomplete infobox başlığı olarak görünür. Zorunludur');
|
|
11
|
-
const schemaParam = z.array(z.object({
|
|
12
|
-
name: z.string().min(1).regex(identifier, 'Geçerli bir JavaScript tanımlayıcısı olmalı')
|
|
13
|
-
.describe('Parametre adı; fonksiyon içinde benzersiz olmalı'),
|
|
14
|
-
description: z.string().min(1).describe('Parametrenin ne olduğu; infobox\'ta parametre satırı olarak görünür. Zorunludur')
|
|
15
|
-
})).describe('Parametre şeması, SIRALI. Yalnız dokümantasyon ve autocomplete imzası için kullanılır — motor çağrıyı bu şemaya göre DOĞRULAMAZ, eksik argüman undefined gelir. Parametresiz fonksiyonda boş dizi verin');
|
|
16
|
-
export function registerGlobalFunctionTools(server, platform) {
|
|
17
|
-
const config = platform.config;
|
|
18
|
-
server.registerTool('global_function_list', {
|
|
19
|
-
title: 'Global fonksiyonları listele',
|
|
20
|
-
description: "Tenant kapsamındaki global JavaScript fonksiyonlarını listeler. Bunlar her workflow/automation/middleware koşumunda ve Studio preview'ında motora bağlanır; ifadelerde çıplak adla çağrılırlar.",
|
|
21
|
-
inputSchema: { project: projectParam, environment: environmentParam },
|
|
22
|
-
annotations: readOnly
|
|
23
|
-
}, handle(config, ({ project, environment }) => platform.tenant('GET', project, '/global-functions', { environment })));
|
|
24
|
-
server.registerTool('global_function_get', {
|
|
25
|
-
title: 'Global fonksiyonu getir',
|
|
26
|
-
description: 'Tek bir global fonksiyonun adını, gövdesini, açıklamasını ve parametre şemasını getirir.',
|
|
27
|
-
inputSchema: { project: projectParam, environment: environmentParam, id: guid },
|
|
28
|
-
annotations: readOnly
|
|
29
|
-
}, handle(config, ({ project, environment, id }) => platform.tenant('GET', project, `/global-functions/${id}`, { environment })));
|
|
30
|
-
server.registerTool('global_function_create', {
|
|
31
|
-
title: 'Global fonksiyon tanımla',
|
|
32
|
-
description: "Yeni global fonksiyon kaydeder. Ad tenant içinde BENZERSİZDİR. Fonksiyon açıklaması ve HER parametre açıklaması zorunludur — Studio bunları autocomplete infobox'ında gösterir. Gövde bağlamdan bağımsız olmalı: içinde 'input' ya da bir adım adı gibi SERBEST DEĞİŞKEN kullanırsanız kayıt geçer ama fonksiyon o değişkenin tanımlı olmadığı her akışta 'X is not defined' ile patlar; dinamik veriyi parametre olarak geçirin.",
|
|
33
|
-
inputSchema: {
|
|
34
|
-
project: projectParam,
|
|
35
|
-
environment: environmentParam,
|
|
36
|
-
name: nameParam,
|
|
37
|
-
function: functionParam,
|
|
38
|
-
description: descriptionParam,
|
|
39
|
-
schema: schemaParam
|
|
40
|
-
},
|
|
41
|
-
annotations: writes
|
|
42
|
-
}, handle(config, ({ project, environment, name, function: body, description, schema }) => platform.tenant('POST', project, '/global-functions', { environment, body: { name, function: body, description, schema } })));
|
|
43
|
-
server.registerTool('global_function_update', {
|
|
44
|
-
title: 'Global fonksiyonu güncelle',
|
|
45
|
-
description: "Global fonksiyonun tamamını değiştirir (PUT — dört alanı da gönderin). ADI DEĞİŞTİRMEK, fonksiyonu çağıran bir workflow varsa 400 ile reddedilir (CantRenameUsedGlobalFunctionException); gövde/açıklama/şema değişikliği serbesttir. Adı gerçekten değiştirmeniz gerekiyorsa önce çağıran akışlardaki ifadeleri güncelleyin.",
|
|
46
|
-
inputSchema: {
|
|
47
|
-
project: projectParam,
|
|
48
|
-
environment: environmentParam,
|
|
49
|
-
id: guid,
|
|
50
|
-
name: nameParam,
|
|
51
|
-
function: functionParam,
|
|
52
|
-
description: descriptionParam,
|
|
53
|
-
schema: schemaParam
|
|
54
|
-
},
|
|
55
|
-
annotations: updates
|
|
56
|
-
}, handle(config, ({ project, environment, id, name, function: body, description, schema }) => platform.tenant('PUT', project, `/global-functions/${id}`, { environment, body: { name, function: body, description, schema } })));
|
|
57
|
-
server.registerTool('global_function_delete', {
|
|
58
|
-
title: 'Global fonksiyonu sil',
|
|
59
|
-
description: "Global fonksiyonu siler. Fonksiyonu çağıran bir workflow varsa 400 ile reddedilir (CantDeleteUsedGlobalFunctionException) ve mesaj çağıran akışların adlarını sayar. Eşleşme tam tanımlayıcı sınırıyla aranır: 'checksum' ya da 'mySum' içeren bir ifade 'sum' çağrısı sayılmaz.",
|
|
60
|
-
inputSchema: { project: projectParam, environment: environmentParam, id: guid },
|
|
61
|
-
annotations: destructive
|
|
62
|
-
}, handle(config, ({ project, environment, id }) => platform.tenant('DELETE', project, `/global-functions/${id}`, { environment })));
|
|
63
|
-
}
|