@appaflytech/zeyrek-ai-mcp 0.0.3 → 0.0.4
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/.env.example +21 -7
- package/.env.production.example +42 -0
- package/README.md +14 -7
- package/dist/config.js +113 -47
- package/dist/knowledge/componentCatalog.js +474 -31
- package/dist/knowledge/componentEvents.js +150 -12
- package/dist/knowledge/errorPath.js +64 -0
- package/dist/knowledge/normalize.js +12 -1
- package/dist/knowledge/outlines.js +6 -0
- package/dist/knowledge/rules.js +184 -3
- package/dist/knowledge/styleResolve.js +485 -0
- package/dist/observability/trace.js +4 -0
- package/dist/platform/http.js +3 -0
- package/dist/platform/responses.js +80 -4
- package/dist/platform/screenshot.js +106 -0
- package/dist/resources/examples/layout-app-shell.json +368 -0
- package/dist/resources/examples/microservice-table-list.json +1 -0
- package/dist/resources/examples/middleware-authenticate.json +243 -47
- package/dist/resources/examples/workflow-basic.json +24 -2
- package/dist/resources/guides/component.md +6 -3
- package/dist/resources/guides/external-component.md +129 -0
- package/dist/resources/guides/layout.md +147 -0
- package/dist/resources/guides/microservice.md +35 -0
- package/dist/resources/guides/middleware.md +10 -0
- package/dist/resources/guides/page.md +132 -14
- package/dist/resources/guides/workflow.md +127 -2
- package/dist/server.js +2 -0
- package/dist/tools/externalComponents.js +285 -0
- package/dist/tools/layouts.js +48 -6
- package/dist/tools/microservices.js +2 -2
- package/dist/tools/pages.js +98 -30
- package/dist/tools/platformInfo.js +2 -2
- package/dist/tools/screens.js +36 -0
- package/dist/tools/workflows.js +3 -3
- package/package.json +4 -1
package/dist/tools/screens.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PlatformApiError } from '../platform/errors.js';
|
|
2
|
+
import { resolveNodeStyleReport } from '../knowledge/styleResolve.js';
|
|
2
3
|
import { z } from 'zod';
|
|
3
4
|
export const hostParam = z.enum(['page', 'layout', 'component'])
|
|
4
5
|
.describe("Akışın barındırıcısı: page | layout | component (widget de component'tir)");
|
|
@@ -6,6 +7,41 @@ export const schemaParam = z.array(z.record(z.unknown()))
|
|
|
6
7
|
.describe('Komponent ağacı (DesignComponentManagementSchema listesi); verilmezse mevcut şema korunur');
|
|
7
8
|
export const eventsParam = z.array(z.record(z.unknown()))
|
|
8
9
|
.describe("Sayfa/layout düzeyi olaylar: [{ name, value }] — value bir flow id'sidir");
|
|
10
|
+
export const modeParam = z.enum(['summary', 'subtree', 'full']).optional().describe("summary (varsayılan): yalnız id/elementId/name/type ağacı — hedef bulmak için bunu kullanın. subtree: componentId ile tek alt ağaç. full: tüm şema.");
|
|
11
|
+
/**
|
|
12
|
+
* Ağacı yalnız kimlik alanlarına indirger; hedef aramak için okunur boyutta tutar.
|
|
13
|
+
* `styleSource` verilirse (undefined DEĞİLSE) her düğüme efektif stil raporu da
|
|
14
|
+
* yazılır: tema componentStyles → preset → düğümün kendi stili kaskadı.
|
|
15
|
+
*/
|
|
16
|
+
export function summarize(node, styleSource) {
|
|
17
|
+
const summary = {
|
|
18
|
+
id: node.id,
|
|
19
|
+
elementId: node.elementId,
|
|
20
|
+
name: node.name,
|
|
21
|
+
type: node.type
|
|
22
|
+
};
|
|
23
|
+
if (styleSource !== undefined) {
|
|
24
|
+
const report = resolveNodeStyleReport(node, styleSource ?? undefined);
|
|
25
|
+
if (report.resolvedStyle !== undefined)
|
|
26
|
+
summary.resolvedStyle = report.resolvedStyle;
|
|
27
|
+
summary.styleLayers = report.styleLayers;
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(node.children) && node.children.length > 0) {
|
|
30
|
+
summary.children = node.children.map(child => summarize(child, styleSource));
|
|
31
|
+
}
|
|
32
|
+
return summary;
|
|
33
|
+
}
|
|
34
|
+
/** elementId ya da id ile ağaçta düğüm bulur. */
|
|
35
|
+
export function findNode(nodes, target) {
|
|
36
|
+
for (const node of nodes ?? []) {
|
|
37
|
+
if (node.elementId === target || String(node.id) === target)
|
|
38
|
+
return node;
|
|
39
|
+
const found = findNode(node.children, target);
|
|
40
|
+
if (found)
|
|
41
|
+
return found;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
9
45
|
function asArray(value) {
|
|
10
46
|
return Array.isArray(value) ? value : [];
|
|
11
47
|
}
|
package/dist/tools/workflows.js
CHANGED
|
@@ -106,7 +106,7 @@ export function registerWorkflowTools(server, platform) {
|
|
|
106
106
|
}));
|
|
107
107
|
server.registerTool('workflow_create', {
|
|
108
108
|
title: 'Workflow oluştur',
|
|
109
|
-
description: "Yeni workflow tanımlar (definition = CreateWorkflowCommand). type: 'workflow' | 'automation' | 'middleware'. İlk kullanımdan önce platform_guide('workflow') okuyun: DTO-önce akışı, branch bağlama (branches[].nextStepId), tip×step matrisi. Middleware (istek öncesi koşan guard/setter, user değişkeni, alfabetik sıra) için platform_guide('middleware') + ngapps://examples/middleware-authenticate. Gövde politika kontrolünden geçer.",
|
|
109
|
+
description: "Yeni workflow tanımlar (definition = CreateWorkflowCommand). type: 'workflow' | 'automation' | 'middleware'. İlk kullanımdan önce platform_guide('workflow') okuyun: DTO-önce akışı, branch bağlama (branches[].nextStepId), tip×step matrisi. Her adım ve akışın kendisi 'description' taşımak ZORUNDADIR (WF-024, block): adımın NE İŞE YARADIĞINI 1-2 cümleyle yazın — Studio kanvasında ⓘ ikonu olarak görünür; mekanizmayı değil niyeti yazın. Middleware (istek öncesi koşan guard/setter, user değişkeni, alfabetik sıra) için platform_guide('middleware') + ngapps://examples/middleware-authenticate. Adımın gerçek bir tuzağı varsa (idempotent değil, kapsam adımda değil, dış bağımlılık, sessiz düşen dal) 'caution' alanına yazın — OPSİYONELDİR, tuzak yoksa boş bırakın; doldurma metin yazmayın. Gövde politika kontrolünden geçer.",
|
|
110
110
|
inputSchema: { project: projectParam, environment: environmentParam, applicationId: guid, definition: definitionParam, policyOverride: policyOverrideParam },
|
|
111
111
|
annotations: writes
|
|
112
112
|
}, handle(config, async ({ project, environment, applicationId, definition, policyOverride }) => {
|
|
@@ -117,7 +117,7 @@ export function registerWorkflowTools(server, platform) {
|
|
|
117
117
|
}));
|
|
118
118
|
server.registerTool('workflow_update', {
|
|
119
119
|
title: 'Workflow güncelle',
|
|
120
|
-
description: 'Workflow tanımını günceller (definition = UpdateWorkflowCommand, tam gövde). Hedefli değişiklik için workflow_patch tercih edin. Gövde politika kontrolünden geçer.',
|
|
120
|
+
description: 'Workflow tanımını günceller (definition = UpdateWorkflowCommand, tam gövde). Hedefli değişiklik için workflow_patch tercih edin. Her adım ve akışın kendisi \'description\' taşımak ZORUNDADIR (WF-024, block). Adımın gerçek bir tuzağı varsa (idempotent değil, kapsam adımda değil, dış bağımlılık, sessiz düşen dal) \'caution\' alanına yazın — OPSİYONELDİR, tuzak yoksa boş bırakın; doldurma metin yazmayın. Gövde politika kontrolünden geçer.',
|
|
121
121
|
inputSchema: { project: projectParam, environment: environmentParam, applicationId: guid, id: guid, definition: definitionParam, policyOverride: policyOverrideParam },
|
|
122
122
|
annotations: updates
|
|
123
123
|
}, handle(config, async ({ project, environment, applicationId, id, definition, policyOverride }) => {
|
|
@@ -128,7 +128,7 @@ export function registerWorkflowTools(server, platform) {
|
|
|
128
128
|
}));
|
|
129
129
|
server.registerTool('workflow_patch', {
|
|
130
130
|
title: 'Workflow\'a patch uygula',
|
|
131
|
-
description: 'Tam gövdeyi bağlama almadan hedefli değişiklik: gateway mevcut workflow\'u çeker, JSON Patch işlemlerini uygular, politika kontrolünden geçirir, tam gövdeyi geri yazar. Yanıt outline özetidir.',
|
|
131
|
+
description: 'Tam gövdeyi bağlama almadan hedefli değişiklik: gateway mevcut workflow\'u çeker, JSON Patch işlemlerini uygular, politika kontrolünden geçirir, tam gövdeyi geri yazar. Değişiklik hedefli ama yazma değil: hata yolu olmayan bir workflow/middleware kaydına patch atmak o kaydın grafiğini de düzeltir — start adımına global-error dalı + 500 dönen response adımı eklenir ve yanıtta gatewayNormalized ile bildirilir. Yanıt outline özetidir.',
|
|
132
132
|
inputSchema: { project: projectParam, environment: environmentParam, applicationId: guid, id: guid, operations: patchOperationsParam, policyOverride: policyOverrideParam },
|
|
133
133
|
annotations: updates
|
|
134
134
|
}, handle(config, async ({ project, environment, applicationId, id, operations, policyOverride }) => {
|
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.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "MCP gateway exposing the NgApps platform APIs as tools",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"files": [
|
|
14
14
|
"dist",
|
|
15
15
|
".env.example",
|
|
16
|
+
".env.production.example",
|
|
16
17
|
"README.md"
|
|
17
18
|
],
|
|
18
19
|
"publishConfig": {
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"prepack": "npm run build",
|
|
27
28
|
"typecheck": "tsc --noEmit",
|
|
28
29
|
"test": "vitest run",
|
|
30
|
+
"docs:lint": "tsx scripts/docs-lint.ts",
|
|
29
31
|
"generate-schemas": "tsx scripts/generate-schemas.ts",
|
|
30
32
|
"generate-reserved-tables": "tsx scripts/generate-reserved-tables.ts",
|
|
31
33
|
"harvest-examples": "tsx scripts/harvest-examples.ts"
|
|
@@ -36,6 +38,7 @@
|
|
|
36
38
|
"express": "^4.21.0",
|
|
37
39
|
"fast-json-patch": "^3.1.1",
|
|
38
40
|
"pino": "^9.5.0",
|
|
41
|
+
"playwright-core": "^1.49.0",
|
|
39
42
|
"undici": "^7.3.0",
|
|
40
43
|
"zod": "^3.24.1"
|
|
41
44
|
},
|