@appaflytech/zeyrek-ai-mcp 0.0.6 → 0.0.7

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.
Files changed (91) hide show
  1. package/.env.example +2 -2
  2. package/.env.production.example +8 -0
  3. package/README.md +9 -8
  4. package/dist/config.js +18 -3
  5. package/dist/knowledge/backendConstraints.js +85 -0
  6. package/dist/knowledge/componentCatalog.js +357 -54
  7. package/dist/knowledge/componentEvents.js +120 -25
  8. package/dist/knowledge/functionGuards.js +134 -0
  9. package/dist/knowledge/normalize.js +53 -2
  10. package/dist/knowledge/outlines.js +31 -0
  11. package/dist/knowledge/policy.js +14 -5
  12. package/dist/knowledge/rules.js +343 -1
  13. package/dist/platform/csv.js +123 -0
  14. package/dist/platform/errors.js +62 -3
  15. package/dist/platform/http.js +1 -0
  16. package/dist/platform/responses.js +16 -4
  17. package/dist/platform/screenshot.js +18 -1
  18. package/dist/resources/examples/flow-call-function.json +66 -0
  19. package/dist/resources/examples/function-total.json +70 -0
  20. package/dist/resources/examples/microfunction-node-sum.json +56 -0
  21. package/dist/resources/examples/page-dynamic-form.json +1 -1
  22. package/dist/resources/examples/page-sign-in.json +1 -1
  23. package/dist/resources/guides/component.md +13 -1
  24. package/dist/resources/guides/entity.md +321 -17
  25. package/dist/resources/guides/expressions.md +3 -0
  26. package/dist/resources/guides/functions.md +262 -0
  27. package/dist/resources/guides/getting-started.md +5 -0
  28. package/dist/resources/guides/merge.md +231 -0
  29. package/dist/resources/guides/microfunction.md +166 -0
  30. package/dist/resources/guides/microservice.md +61 -2
  31. package/dist/resources/guides/modify-existing.md +23 -0
  32. package/dist/resources/guides/page.md +20 -4
  33. package/dist/resources/guides/translation.md +24 -0
  34. package/dist/resources/guides/workflow.md +1 -1
  35. package/dist/resources/schema-fingerprint.json +4 -4
  36. package/dist/resources/schemas/AnalyzeImportQuery.json +51 -0
  37. package/dist/resources/schemas/ApplyMergePlanCommand.json +19 -0
  38. package/dist/resources/schemas/CreateBulkRowCommand.json +3 -0
  39. package/dist/resources/schemas/CreateEnvironmentCommand.json +31 -0
  40. package/dist/resources/schemas/CreateGlobalFunctionCommand.json +95 -0
  41. package/dist/resources/schemas/CreateImportPlanCommand.json +278 -0
  42. package/dist/resources/schemas/CreateMergePlanCommand.json +34 -0
  43. package/dist/resources/schemas/CreateMicrofunctionCommand.json +117 -0
  44. package/dist/resources/schemas/CreateMicrofunctionRuntimeCommand.json +51 -0
  45. package/dist/resources/schemas/CreateMicroserviceCommand.json +119 -1
  46. package/dist/resources/schemas/CreateWorkflowCommand.json +13 -2
  47. package/dist/resources/schemas/DataJobDto.json +267 -0
  48. package/dist/resources/schemas/ExportRowsCommand.json +172 -0
  49. package/dist/resources/schemas/Filter.json +3 -1
  50. package/dist/resources/schemas/GetRowsQuery.json +3 -1
  51. package/dist/resources/schemas/GlobalFunctionDto.json +89 -0
  52. package/dist/resources/schemas/GlobalFunctionUpdateResultDto.json +249 -0
  53. package/dist/resources/schemas/ImportAnalysisDto.json +401 -0
  54. package/dist/resources/schemas/ImportPlanDto.json +260 -0
  55. package/dist/resources/schemas/ImportSampleDto.json +90 -0
  56. package/dist/resources/schemas/InvokeMicrofunctionCommand.json +25 -0
  57. package/dist/resources/schemas/PreviewMicroserviceCommand.json +119 -1
  58. package/dist/resources/schemas/PreviewWorkflowCommand.json +13 -2
  59. package/dist/resources/schemas/ResolveMergeConflictsCommand.json +58 -0
  60. package/dist/resources/schemas/RevertMergePlanCommand.json +19 -0
  61. package/dist/resources/schemas/RunImportCommand.json +62 -0
  62. package/dist/resources/schemas/StepDto.json +13 -2
  63. package/dist/resources/schemas/UpdateBulkRowCommand.json +3 -0
  64. package/dist/resources/schemas/UpdateEntityCommand.json +3 -1
  65. package/dist/resources/schemas/UpdateGlobalFunctionCommand.json +66 -0
  66. package/dist/resources/schemas/UpdateMicrofunctionCommand.json +121 -0
  67. package/dist/resources/schemas/UpdateMicrofunctionRuntimeCommand.json +54 -0
  68. package/dist/resources/schemas/UpdateMicroserviceCommand.json +119 -1
  69. package/dist/resources/schemas/UpdateWorkflowCommand.json +13 -2
  70. package/dist/server.js +15 -3
  71. package/dist/tools/activities.js +40 -0
  72. package/dist/tools/automations.js +14 -5
  73. package/dist/tools/common.js +16 -0
  74. package/dist/tools/dependencies.js +1 -1
  75. package/dist/tools/environments.js +52 -0
  76. package/dist/tools/files.js +51 -50
  77. package/dist/tools/flows.js +95 -2
  78. package/dist/tools/functions.js +331 -0
  79. package/dist/tools/importSchemas.js +79 -0
  80. package/dist/tools/imports.js +241 -0
  81. package/dist/tools/merges.js +113 -0
  82. package/dist/tools/microfunctions.js +155 -0
  83. package/dist/tools/microservices.js +42 -3
  84. package/dist/tools/pages.js +62 -10
  85. package/dist/tools/platformInfo.js +4 -1
  86. package/dist/tools/revisions.js +94 -0
  87. package/dist/tools/rows.js +342 -22
  88. package/dist/tools/screenWrite.js +11 -2
  89. package/dist/tools/templates.js +32 -5
  90. package/dist/tools/workflows.js +24 -6
  91. package/package.json +3 -1
package/.env.example CHANGED
@@ -56,8 +56,8 @@ SCREENSHOT_BROWSER_PATH=
56
56
  ORG_SWAGGER_URL=
57
57
  TENANT_SWAGGER_URL=
58
58
 
59
- # Bos = tum moduller (167 tool / 27 modul). Hazir kumeler: core (veri+mantik, 97), studio
60
- # (sayfa tasarimi, 59), admin (template/organizasyon/deployment, 16). platform modulu (3 tool)
59
+ # Bos = tum moduller (172 tool / 28 modul). Hazir kumeler: core (veri+mantik, 97), studio
60
+ # (sayfa tasarimi + kullanici fonksiyonlari, 66), admin (template/organizasyon/deployment, 15). platform modulu (3 tool)
61
61
  # her kumede vardir. Kume ve tekil modul adi karisik yazilabilir.
62
62
  # Ornek: core,studio | entity,row,microservice
63
63
  MODULES=
@@ -12,6 +12,14 @@ TENANT_API_BASE_URL=https://new-zeyrek.glomil.com/api
12
12
  ORGANIZATION=new-zeyrek
13
13
  HOST_SUFFIX=glomil.com
14
14
 
15
+ # Ikinci uzak kurulum (wappa kumesi, ayri veritabani; docs/ortam.md). Ona baglanmak icin
16
+ # yukaridaki dort satiri ve asagidaki STUDIO_BASE_URL'i bunlarla degistirin:
17
+ # ORG_API_BASE_URL=https://zeyrek.appaflytech.com/api/org
18
+ # TENANT_API_BASE_URL=https://zeyrek.appaflytech.com/api
19
+ # ORGANIZATION=zeyrek
20
+ # HOST_SUFFIX=appaflytech.com
21
+ # STUDIO_BASE_URL=https://zeyrek.appaflytech.com
22
+
15
23
  # ZORUNLU. Gomulu varsayilan yok.
16
24
  DEFAULT_ENVIRONMENT=development
17
25
  DEFAULT_PROJECT=
package/README.md CHANGED
@@ -4,10 +4,11 @@ Zeyrek (NgApps) platformunu **MCP tool'ları** olarak sunan bağımsız gateway.
4
4
  oturumu Studio arayüzüne hiç girmeden proje kurabilir, veri modeli çıkarabilir, mikroservis ve
5
5
  workflow yazıp çalıştırabilir, sayfa tasarlayabilir.
6
6
 
7
- - **167 tool · 27 modül** — veri/mantık tarafı (project, application, datasource, entity, row,
8
- microservice, query, workflow, automation, global function, dto, view, dependency), Studio tasarım tarafı
9
- (page, component, external component, flow, layout, variable, folder, file, access,
10
- translation) ve yönetim (template, organization, deployment).
7
+ - **191 tool · 32 modül** — veri/mantık tarafı (project, application, datasource, entity, row,
8
+ import, microservice, query, workflow, automation, function, dto, view, dependency), Studio
9
+ tasarım tarafı (page, component, external component, flow, layout, variable, function, folder,
10
+ file, access, translation), yönetim (template, organization, deployment) ve proje dallanması
11
+ (environment, merge).
11
12
  - Platform koduna referans vermez: Organization.API ile Tenant.API'yi **HTTP üzerinden** sarar —
12
13
  istekler MVC binding'den geçtiği için FluentValidation aynen çalışır.
13
14
  - Üstünde bir **bilgi katmanı** vardır (rehber + altın örnek + politika lint'i): platformun
@@ -137,10 +138,10 @@ ya da ikisi karışık (`core,page`). `platform` modülü (3 tool) her kümede v
137
138
 
138
139
  | Küme | Tool | Modüller |
139
140
  |---|---|---|
140
- | `core` | 93 | platform, project, application, datasource, entity, row, microservice, query, workflow, automation, dto, view, dependency |
141
- | `studio` | 59 | platform, page, component, externalComponent, flow, layout, variable, folder, file, access, translation |
142
- | `admin` | 16 | platform, template, organization, deployment |
143
- | (boş) | **167** | 27 modülün tamamı |
141
+ | `core` | 111 | platform, project, application, datasource, entity, row, microservice, query, workflow, automation, function, dto, view, dependency, environment, merge, activity, revision |
142
+ | `studio` | 69 | platform, page, component, externalComponent, flow, layout, variable, function, folder, file, access, translation, revision |
143
+ | `admin` | 26 | platform, template, organization, deployment, environment, merge, activity |
144
+ | (boş) | **185** | 32 modülün tamamı |
144
145
 
145
146
  Bilinmeyen bir modül/küme adı verilirse sunucu açılmaz, geçerli adları listeleyen bir hata yazar.
146
147
 
package/dist/config.js CHANGED
@@ -7,11 +7,12 @@ export const moduleNames = [
7
7
  "datasource",
8
8
  "entity",
9
9
  "row",
10
+ "import",
10
11
  "microservice",
12
+ "microfunction",
11
13
  "query",
12
14
  "workflow",
13
15
  "automation",
14
- "globalFunction",
15
16
  "dto",
16
17
  "view",
17
18
  "page",
@@ -20,6 +21,7 @@ export const moduleNames = [
20
21
  "flow",
21
22
  "layout",
22
23
  "variable",
24
+ "function",
23
25
  "folder",
24
26
  "file",
25
27
  "access",
@@ -28,6 +30,10 @@ export const moduleNames = [
28
30
  "organization",
29
31
  "dependency",
30
32
  "deployment",
33
+ "environment",
34
+ "merge",
35
+ "activity",
36
+ "revision",
31
37
  ];
32
38
  export const modulePresets = {
33
39
  core: [
@@ -37,14 +43,20 @@ export const modulePresets = {
37
43
  "datasource",
38
44
  "entity",
39
45
  "row",
46
+ "import",
40
47
  "microservice",
48
+ "microfunction",
41
49
  "query",
42
50
  "workflow",
43
51
  "automation",
44
- "globalFunction",
52
+ "function",
45
53
  "dto",
46
54
  "view",
47
55
  "dependency",
56
+ "environment",
57
+ "merge",
58
+ "activity",
59
+ "revision",
48
60
  ],
49
61
  studio: [
50
62
  "platform",
@@ -54,12 +66,15 @@ export const modulePresets = {
54
66
  "flow",
55
67
  "layout",
56
68
  "variable",
69
+ "function",
57
70
  "folder",
58
71
  "file",
72
+ "import",
59
73
  "access",
60
74
  "translation",
75
+ "revision",
61
76
  ],
62
- admin: ["platform", "template", "organization", "deployment"],
77
+ admin: ["platform", "template", "organization", "deployment", "environment", "merge", "activity"],
63
78
  };
64
79
  function expandModuleNames(entries) {
65
80
  const modules = [];
@@ -565,6 +565,71 @@ function datasourceFindings(body) {
565
565
  }
566
566
  return findings;
567
567
  }
568
+ const MICROFUNCTION_ENTRYPOINT_PATTERN = /^[A-Za-z_][\w./-]*\.[A-Za-z_]\w*$/;
569
+ const MICROFUNCTION_ENVIRONMENT_KEY_PATTERN = /^[A-Z_][A-Z0-9_]*$/;
570
+ const MICROFUNCTION_ROLE_ARN_PATTERN = /^arn:aws:iam::\d{12}:role\/.+$/;
571
+ /**
572
+ * `MicrofunctionOptions.Limits` ile de sınırlanır (kök `.env`); buradaki değerler
573
+ * `MicrofunctionConstants`'ın sabit tavanıdır — ayar daha dar bir tavan koyduysa platform onu
574
+ * uygular ve gateway'in geçirdiği gövde 422 döner. Ters yön olmaz: buradan geçmeyen gövde
575
+ * platformda da geçmez.
576
+ */
577
+ function microfunctionFindings(body) {
578
+ const provider = isPresent(body.provider) ? String(body.provider) : 'built-in';
579
+ const sourceKind = isPresent(body.sourceKind) ? String(body.sourceKind) : 'inline';
580
+ const findings = [];
581
+ if (provider === 'azure-functions') {
582
+ findings.push("provider: 'azure-functions' v1'de seçilemez (MicrofunctionProviderNotSupported). Enum değeri tanımlı ama connector'ı yok — 'built-in' (platformun kendi Fission kümesi) ya da 'aws-lambda' kullanın.");
583
+ }
584
+ if (provider === 'aws-lambda' && !isPresent(body.runtimeId)) {
585
+ findings.push("runtimeId: provider 'aws-lambda' iken zorunlu (MicrofunctionRuntimeRequired) — fonksiyonun hangi AWS hesabında koşacağı kayıttan gelir. microfunction_runtime_list ile hesabı seçin.");
586
+ }
587
+ if (provider === 'built-in' && isPresent(body.runtimeId)) {
588
+ findings.push("runtimeId: provider 'built-in' iken VERİLMEZ (MicrofunctionRuntimeNotAllowedForBuiltIn) — Built-In fonksiyon platformun kendi kümesinde koşar, bulut hesabı kaydı yoktur.");
589
+ }
590
+ if (sourceKind === 'inline' && !hasText(body.code)) {
591
+ findings.push("code: sourceKind 'inline' iken zorunlu (MicrofunctionCodeRequired).");
592
+ }
593
+ if (sourceKind === 'archive' && !(hasText(body.entrypoint) && MICROFUNCTION_ENTRYPOINT_PATTERN.test(body.entrypoint))) {
594
+ findings.push(`entrypoint: sourceKind 'archive' iken 'modül.fonksiyon' biçiminde zorunlu (MicrofunctionEntrypointInvalid, desen ${MICROFUNCTION_ENTRYPOINT_PATTERN.source}), ör. 'handlers/sum.handler'.`);
595
+ }
596
+ // Komut alanları non-nullable int: gönderilmezse gövdeye 0 gider ve platform 422 döner. Gateway
597
+ // değer UYDURMAZ (0 ile 30 arasındaki fark faturalandırmayı da davranışı da değiştirir), yalnız
598
+ // eksikliği çağrıdan önce söyler.
599
+ const timeoutCeiling = provider === 'aws-lambda' ? 900 : 300;
600
+ if (!isPresent(body.timeoutSeconds)) {
601
+ findings.push(`timeoutSeconds: alan non-nullable int — gönderilmezse 0 gider ve platform 422 döner (MicrofunctionTimeoutOutOfRange). 1–${timeoutCeiling} arası bir değer verin (ürün varsayılanı 30).`);
602
+ }
603
+ else if (Number(body.timeoutSeconds) < 1 || Number(body.timeoutSeconds) > timeoutCeiling) {
604
+ findings.push(`timeoutSeconds: ${String(body.timeoutSeconds)} — provider '${provider}' için geçerli aralık 1–${timeoutCeiling} (MicrofunctionTimeoutOutOfRange).`);
605
+ }
606
+ if (!isPresent(body.memoryMb)) {
607
+ findings.push('memoryMb: alan non-nullable int — gönderilmezse 0 gider ve platform 422 döner (MicrofunctionMemoryOutOfRange). 128–3008 arası bir değer verin (ürün varsayılanı 256).');
608
+ }
609
+ const environmentVariables = asObject(body.environmentVariables);
610
+ if (environmentVariables !== undefined) {
611
+ const invalidKeys = Object.keys(environmentVariables).filter(key => !MICROFUNCTION_ENVIRONMENT_KEY_PATTERN.test(key));
612
+ const bytes = Object.entries(environmentVariables)
613
+ .reduce((total, [key, value]) => total + Buffer.byteLength(key, 'utf8') + Buffer.byteLength(value === null || value === undefined ? '' : String(value), 'utf8'), 0);
614
+ if (invalidKeys.length > 0) {
615
+ findings.push(`environmentVariables: anahtarlar ${MICROFUNCTION_ENVIRONMENT_KEY_PATTERN.source} desenine uymalı (MicrofunctionEnvironmentVariableKeyInvalid) — uymayanlar: ${invalidKeys.join(', ')}.`);
616
+ }
617
+ if (bytes > 4096) {
618
+ findings.push(`environmentVariables: anahtar+değer toplamı ${bytes} bayt, üst sınır 4096 (Lambda sınırı; MicrofunctionEnvironmentVariablesTooLarge).`);
619
+ }
620
+ }
621
+ return findings;
622
+ }
623
+ function microfunctionRuntimeFindings(body) {
624
+ const findings = [];
625
+ if (isPresent(body.provider) && String(body.provider) !== 'aws-lambda') {
626
+ findings.push(`provider: runtime hesabı v1'de yalnız 'aws-lambda' olabilir (MicrofunctionProviderNotSupported); '${String(body.provider)}' reddedilir. Built-In fonksiyonların runtime kaydı YOKTUR.`);
627
+ }
628
+ if (!(hasText(body.roleArn) && MICROFUNCTION_ROLE_ARN_PATTERN.test(body.roleArn))) {
629
+ findings.push(`roleArn: zorunlu ve ${MICROFUNCTION_ROLE_ARN_PATTERN.source} desenine uymalı (MicrofunctionRuntimeRoleArnInvalid) — fonksiyonun koşacağı Lambda execution rolü, ör. 'arn:aws:iam::123456789012:role/zeyrek-microfunction'.`);
630
+ }
631
+ return findings;
632
+ }
568
633
  function projectCreateFindings(body) {
569
634
  if (!isPresent(body.templateOptions) && !isPresent(body.application)) {
570
635
  return ["application: 'Application' must not be empty. — templateOptions verilmeyen projede ilk application projeyle birlikte açılır: application { slug, name } zorunlu."];
@@ -790,6 +855,26 @@ export const backendRules = [
790
855
  sourceRef: 'UploadFileCommandValidator: File.NotNull(), File.Must(IsContainsSpecialChar(FileName))',
791
856
  check: body => nameCharacterFindings('filename', body.filename)
792
857
  },
858
+ {
859
+ id: 'MF-001',
860
+ module: 'microfunction',
861
+ commands: { create: 'CreateMicrofunctionCommand', update: 'UpdateMicrofunctionCommand' },
862
+ status: 422,
863
+ summary: "provider 'built-in' ⇒ runtimeId boş, 'aws-lambda' ⇒ runtimeId zorunlu, 'azure-functions' reddedilir · sourceKind 'inline' ⇒ code, 'archive' ⇒ 'modül.fonksiyon' biçiminde entrypoint · timeoutSeconds ve memoryMb GÖNDERİLMEK ZORUNDA (non-nullable int, eksikse 0 gider) · env anahtarları ^[A-Z_][A-Z0-9_]*$ ve toplam ≤ 4 KB",
864
+ sourceRef: 'CreateMicrofunctionCommandValidator / UpdateMicrofunctionCommandValidator (ikisi birebir aynı kural kümesi) + MicrofunctionConstants (EntrypointPattern, EnvironmentVariableKeyPattern, BuiltInMaxTimeoutSeconds 300, CloudMaxTimeoutSeconds 900, MinMemoryMb 128, MaxMemoryMb 3008, MaxEnvironmentVariablesBytes 4096)',
865
+ guide: 'ngapps://guides/microfunction',
866
+ check: body => microfunctionFindings(body)
867
+ },
868
+ {
869
+ id: 'MFR-001',
870
+ module: 'microfunctionRuntime',
871
+ commands: { create: 'CreateMicrofunctionRuntimeCommand', update: 'UpdateMicrofunctionRuntimeCommand' },
872
+ status: 422,
873
+ summary: "provider yalnız 'aws-lambda' · roleArn zorunlu ve arn:aws:iam::<12 hane>:role/<ad> desenli",
874
+ sourceRef: 'CreateMicrofunctionRuntimeCommandValidator / UpdateMicrofunctionRuntimeCommandValidator + MicrofunctionConstants.RoleArnPattern',
875
+ guide: 'ngapps://guides/microfunction',
876
+ check: body => microfunctionRuntimeFindings(body)
877
+ },
793
878
  {
794
879
  id: 'EXT-001',
795
880
  module: 'externalComponent',