@appaflytech/zeyrek-ai-mcp 0.0.4 → 0.0.6

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 (101) hide show
  1. package/.env.example +8 -3
  2. package/.env.production.example +2 -0
  3. package/README.md +229 -193
  4. package/dist/config.js +20 -2
  5. package/dist/knowledge/backendConstraints.js +897 -0
  6. package/dist/knowledge/componentCatalog.js +196 -42
  7. package/dist/knowledge/coverage.js +43 -0
  8. package/dist/knowledge/flowGuards.js +30 -0
  9. package/dist/knowledge/guideSections.js +49 -0
  10. package/dist/knowledge/hydrate.js +97 -0
  11. package/dist/knowledge/languageCodes.js +36 -0
  12. package/dist/knowledge/languages.js +105 -0
  13. package/dist/knowledge/layoutSummary.js +10 -0
  14. package/dist/knowledge/localization.js +51 -0
  15. package/dist/knowledge/normalize.js +449 -16
  16. package/dist/knowledge/outlines.js +136 -12
  17. package/dist/knowledge/propTypes.js +80 -0
  18. package/dist/knowledge/rules.js +618 -43
  19. package/dist/knowledge/schemaGuard.js +199 -0
  20. package/dist/knowledge/styleResolve.js +63 -4
  21. package/dist/observability/trace.js +27 -3
  22. package/dist/platform/errors.js +46 -4
  23. package/dist/platform/http.js +33 -4
  24. package/dist/platform/patch.js +27 -0
  25. package/dist/platform/refs.js +104 -0
  26. package/dist/platform/responses.js +9 -2
  27. package/dist/platform/screenshot.js +527 -16
  28. package/dist/platform/secrets.js +40 -0
  29. package/dist/platform/tokenVault.js +89 -0
  30. package/dist/platform/writeDiff.js +281 -0
  31. package/dist/resources/examples/layout-app-shell.json +1 -1
  32. package/dist/resources/examples/microservice-table-list.json +2 -4
  33. package/dist/resources/examples/page-dynamic-form.json +2 -2
  34. package/dist/resources/examples/page-flex-sections.json +99 -0
  35. package/dist/resources/examples/page-sign-in.json +3 -2
  36. package/dist/resources/guides/component.md +69 -8
  37. package/dist/resources/guides/entity.md +404 -16
  38. package/dist/resources/guides/expressions.md +44 -2
  39. package/dist/resources/guides/external-component.md +9 -0
  40. package/dist/resources/guides/getting-started.md +77 -7
  41. package/dist/resources/guides/layout.md +53 -10
  42. package/dist/resources/guides/microservice.md +226 -13
  43. package/dist/resources/guides/middleware.md +89 -1
  44. package/dist/resources/guides/page.md +383 -46
  45. package/dist/resources/guides/translation.md +126 -8
  46. package/dist/resources/guides/view.md +16 -1
  47. package/dist/resources/guides/workflow.md +198 -27
  48. package/dist/resources/knowledge.js +5 -0
  49. package/dist/resources/rules.js +27 -0
  50. package/dist/resources/schema-fingerprint.json +8 -0
  51. package/dist/resources/schemas/CreateBulkRowCommand.json +33 -0
  52. package/dist/resources/schemas/CreateDatasourceCommand.json +15 -6
  53. package/dist/resources/schemas/CreateDiscoveredEntitiesCommand.json +19 -8
  54. package/dist/resources/schemas/CreateEntityCommand.json +52 -12
  55. package/dist/resources/schemas/CreateMicroserviceCommand.json +26 -2
  56. package/dist/resources/schemas/CreateQueryCommand.json +56 -3
  57. package/dist/resources/schemas/CreateRowCommand.json +38 -0
  58. package/dist/resources/schemas/CreateViewCommand.json +13 -10
  59. package/dist/resources/schemas/CreateWorkflowCommand.json +95 -14
  60. package/dist/resources/schemas/GetRowsQuery.json +3 -0
  61. package/dist/resources/schemas/PreviewMicroserviceCommand.json +16 -0
  62. package/dist/resources/schemas/PreviewQueryCommand.json +5 -2
  63. package/dist/resources/schemas/PreviewWorkflowCommand.json +34 -9
  64. package/dist/resources/schemas/StepDto.json +23 -3
  65. package/dist/resources/schemas/UpdateBulkRowCommand.json +33 -0
  66. package/dist/resources/schemas/UpdateDatasourceCommand.json +15 -6
  67. package/dist/resources/schemas/UpdateEntityCommand.json +49 -10
  68. package/dist/resources/schemas/UpdateMicroserviceCommand.json +28 -3
  69. package/dist/resources/schemas/UpdateQueryCommand.json +13 -3
  70. package/dist/resources/schemas/UpdateRowCommand.json +40 -0
  71. package/dist/resources/schemas/UpdateViewCommand.json +15 -10
  72. package/dist/resources/schemas/UpdateWorkflowCommand.json +95 -14
  73. package/dist/server.js +4 -0
  74. package/dist/tools/access.js +3 -3
  75. package/dist/tools/applications.js +1 -1
  76. package/dist/tools/automations.js +63 -30
  77. package/dist/tools/common.js +39 -0
  78. package/dist/tools/components.js +16 -7
  79. package/dist/tools/datasources.js +83 -21
  80. package/dist/tools/deployments.js +34 -2
  81. package/dist/tools/dtos.js +25 -12
  82. package/dist/tools/entities.js +113 -28
  83. package/dist/tools/externalComponents.js +9 -3
  84. package/dist/tools/files.js +20 -6
  85. package/dist/tools/flows.js +110 -11
  86. package/dist/tools/folders.js +7 -2
  87. package/dist/tools/globalFunctions.js +63 -0
  88. package/dist/tools/layouts.js +103 -29
  89. package/dist/tools/microservices.js +229 -38
  90. package/dist/tools/organizations.js +5 -6
  91. package/dist/tools/pages.js +365 -100
  92. package/dist/tools/platformInfo.js +152 -11
  93. package/dist/tools/projects.js +183 -33
  94. package/dist/tools/queries.js +32 -10
  95. package/dist/tools/rows.js +159 -45
  96. package/dist/tools/screenWrite.js +59 -0
  97. package/dist/tools/screens.js +28 -0
  98. package/dist/tools/translations.js +24 -8
  99. package/dist/tools/views.js +20 -10
  100. package/dist/tools/workflows.js +33 -16
  101. package/package.json +6 -3
@@ -1,5 +1,10 @@
1
1
  {
2
2
  "schema": {
3
+ "required": [
4
+ "name",
5
+ "slug",
6
+ "url"
7
+ ],
3
8
  "type": "object",
4
9
  "properties": {
5
10
  "id": {
@@ -7,16 +12,24 @@
7
12
  "format": "uuid"
8
13
  },
9
14
  "name": {
15
+ "minLength": 1,
16
+ "type": "string"
17
+ },
18
+ "description": {
10
19
  "type": "string",
11
20
  "nullable": true
12
21
  },
13
- "slug": {
22
+ "caution": {
14
23
  "type": "string",
15
24
  "nullable": true
16
25
  },
26
+ "slug": {
27
+ "minLength": 1,
28
+ "type": "string"
29
+ },
17
30
  "url": {
18
- "type": "string",
19
- "nullable": true
31
+ "minLength": 1,
32
+ "type": "string"
20
33
  },
21
34
  "httpMethod": {
22
35
  "$ref": "#/components/schemas/NgApps.Domain.Contexts.Studio.Microservices.HttpMethod"
@@ -364,6 +377,9 @@
364
377
  "order": {
365
378
  "type": "integer",
366
379
  "format": "int32"
380
+ },
381
+ "writeOn": {
382
+ "$ref": "#/components/schemas/NgApps.Domain.Contexts.Studio.Microservices.MicroserviceFieldWriteOn"
367
383
  }
368
384
  },
369
385
  "additionalProperties": false
@@ -506,6 +522,15 @@
506
522
  ],
507
523
  "type": "string",
508
524
  "format": ""
525
+ },
526
+ "NgApps.Domain.Contexts.Studio.Microservices.MicroserviceFieldWriteOn": {
527
+ "enum": [
528
+ "always",
529
+ "create",
530
+ "update"
531
+ ],
532
+ "type": "string",
533
+ "format": ""
509
534
  }
510
535
  }
511
536
  }
@@ -1,5 +1,10 @@
1
1
  {
2
2
  "schema": {
3
+ "required": [
4
+ "datasourceId",
5
+ "rawQuery",
6
+ "slug"
7
+ ],
3
8
  "type": "object",
4
9
  "properties": {
5
10
  "id": {
@@ -7,18 +12,23 @@
7
12
  "format": "uuid"
8
13
  },
9
14
  "rawQuery": {
10
- "type": "string",
11
- "nullable": true
15
+ "minLength": 1,
16
+ "type": "string"
12
17
  },
13
18
  "slug": {
19
+ "minLength": 1,
20
+ "type": "string"
21
+ },
22
+ "name": {
14
23
  "type": "string",
15
24
  "nullable": true
16
25
  },
17
- "name": {
26
+ "description": {
18
27
  "type": "string",
19
28
  "nullable": true
20
29
  },
21
30
  "datasourceId": {
31
+ "minLength": 1,
22
32
  "type": "string",
23
33
  "format": "uuid"
24
34
  },
@@ -0,0 +1,40 @@
1
+ {
2
+ "schema": {
3
+ "required": [
4
+ "row"
5
+ ],
6
+ "type": "object",
7
+ "properties": {
8
+ "entityId": {
9
+ "type": "string",
10
+ "format": "uuid"
11
+ },
12
+ "row": {
13
+ "type": "object",
14
+ "additionalProperties": {
15
+ "nullable": true
16
+ }
17
+ },
18
+ "rowContext": {
19
+ "type": "object",
20
+ "additionalProperties": {
21
+ "nullable": true
22
+ },
23
+ "nullable": true
24
+ },
25
+ "localizations": {
26
+ "type": "object",
27
+ "additionalProperties": {
28
+ "type": "object",
29
+ "additionalProperties": {},
30
+ "nullable": true
31
+ },
32
+ "nullable": true
33
+ }
34
+ },
35
+ "additionalProperties": false
36
+ },
37
+ "components": {
38
+ "schemas": {}
39
+ }
40
+ }
@@ -1,14 +1,19 @@
1
1
  {
2
2
  "schema": {
3
+ "required": [
4
+ "id",
5
+ "name"
6
+ ],
3
7
  "type": "object",
4
8
  "properties": {
5
9
  "id": {
10
+ "minLength": 1,
6
11
  "type": "string",
7
12
  "format": "uuid"
8
13
  },
9
14
  "name": {
10
- "type": "string",
11
- "nullable": true
15
+ "minLength": 1,
16
+ "type": "string"
12
17
  },
13
18
  "slug": {
14
19
  "type": "string",
@@ -43,6 +48,13 @@
43
48
  },
44
49
  "components": {
45
50
  "schemas": {
51
+ "NgApps.Domain.Contexts.Datastore.Views.ViewProviderType": {
52
+ "enum": [
53
+ "postgres"
54
+ ],
55
+ "type": "string",
56
+ "format": ""
57
+ },
46
58
  "NgApps.Application.Contexts.Datastore.Views.ViewAnalyzerInput": {
47
59
  "type": "object",
48
60
  "properties": {
@@ -105,13 +117,6 @@
105
117
  },
106
118
  "additionalProperties": false
107
119
  },
108
- "NgApps.Domain.Contexts.Datastore.Views.ViewProviderType": {
109
- "enum": [
110
- "postgres"
111
- ],
112
- "type": "string",
113
- "format": ""
114
- },
115
120
  "NgApps.Domain.Contexts.Datastore.Views.ViewLanguage": {
116
121
  "enum": [
117
122
  "simple",
@@ -150,4 +155,4 @@
150
155
  }
151
156
  }
152
157
  }
153
- }
158
+ }
@@ -1,5 +1,10 @@
1
1
  {
2
2
  "schema": {
3
+ "required": [
4
+ "name",
5
+ "slug",
6
+ "steps"
7
+ ],
3
8
  "type": "object",
4
9
  "properties": {
5
10
  "id": {
@@ -7,10 +12,18 @@
7
12
  "format": "uuid"
8
13
  },
9
14
  "slug": {
15
+ "minLength": 1,
16
+ "type": "string"
17
+ },
18
+ "name": {
19
+ "minLength": 1,
20
+ "type": "string"
21
+ },
22
+ "description": {
10
23
  "type": "string",
11
24
  "nullable": true
12
25
  },
13
- "name": {
26
+ "caution": {
14
27
  "type": "string",
15
28
  "nullable": true
16
29
  },
@@ -31,11 +44,11 @@
31
44
  "$ref": "#/components/schemas/NgApps.Domain.Contexts.Shared.DataTransferObjects.DataTransferObjectBehavior"
32
45
  },
33
46
  "steps": {
47
+ "minItems": 1,
34
48
  "type": "array",
35
49
  "items": {
36
50
  "$ref": "#/components/schemas/NgApps.Application.Contexts.Flow.Workflows.StepDto"
37
- },
38
- "nullable": true
51
+ }
39
52
  },
40
53
  "schema": {
41
54
  "nullable": true
@@ -86,6 +99,14 @@
86
99
  "type": "string",
87
100
  "nullable": true
88
101
  },
102
+ "description": {
103
+ "type": "string",
104
+ "nullable": true
105
+ },
106
+ "caution": {
107
+ "type": "string",
108
+ "nullable": true
109
+ },
89
110
  "type": {
90
111
  "$ref": "#/components/schemas/NgApps.Domain.Contexts.Flow.Workflows.StepType"
91
112
  },
@@ -195,8 +216,7 @@
195
216
  "table",
196
217
  "convert",
197
218
  "revert",
198
- "set-user",
199
- "end"
219
+ "set-user"
200
220
  ],
201
221
  "type": "string",
202
222
  "format": ""
@@ -668,6 +688,20 @@
668
688
  "automationCount": {
669
689
  "type": "integer",
670
690
  "format": "int32"
691
+ },
692
+ "version": {
693
+ "type": "integer",
694
+ "format": "int64"
695
+ },
696
+ "localizationEntityId": {
697
+ "type": "string",
698
+ "format": "uuid",
699
+ "nullable": true
700
+ },
701
+ "localizationParentId": {
702
+ "type": "string",
703
+ "format": "uuid",
704
+ "nullable": true
671
705
  }
672
706
  },
673
707
  "additionalProperties": false
@@ -868,6 +902,9 @@
868
902
  "order": {
869
903
  "type": "integer",
870
904
  "format": "int32"
905
+ },
906
+ "writeOn": {
907
+ "$ref": "#/components/schemas/NgApps.Domain.Contexts.Studio.Microservices.MicroserviceFieldWriteOn"
871
908
  }
872
909
  },
873
910
  "additionalProperties": false
@@ -1012,7 +1049,8 @@
1012
1049
  "enum": [
1013
1050
  "normal",
1014
1051
  "junction",
1015
- "enum-values"
1052
+ "enum-values",
1053
+ "localization"
1016
1054
  ],
1017
1055
  "type": "string",
1018
1056
  "format": ""
@@ -1095,6 +1133,10 @@
1095
1133
  "additionalProperties": false
1096
1134
  },
1097
1135
  "NgApps.Application.Contexts.Datastore.Entities.FieldDto": {
1136
+ "required": [
1137
+ "dbType",
1138
+ "slug"
1139
+ ],
1098
1140
  "type": "object",
1099
1141
  "properties": {
1100
1142
  "id": {
@@ -1102,20 +1144,23 @@
1102
1144
  "format": "uuid"
1103
1145
  },
1104
1146
  "description": {
1147
+ "maxLength": 512,
1105
1148
  "type": "string",
1106
1149
  "nullable": true
1107
1150
  },
1108
1151
  "name": {
1152
+ "maxLength": 50,
1109
1153
  "type": "string",
1110
1154
  "nullable": true
1111
1155
  },
1112
1156
  "slug": {
1113
- "type": "string",
1114
- "nullable": true
1157
+ "minLength": 1,
1158
+ "type": "string"
1115
1159
  },
1116
1160
  "dbType": {
1117
- "type": "string",
1118
- "nullable": true
1161
+ "maxLength": 50,
1162
+ "minLength": 1,
1163
+ "type": "string"
1119
1164
  },
1120
1165
  "primaryKey": {
1121
1166
  "type": "boolean"
@@ -1204,6 +1249,17 @@
1204
1249
  },
1205
1250
  "isSystemField": {
1206
1251
  "type": "boolean"
1252
+ },
1253
+ "isLocalized": {
1254
+ "type": "boolean"
1255
+ },
1256
+ "nameTranslations": {
1257
+ "type": "object",
1258
+ "additionalProperties": {
1259
+ "type": "string",
1260
+ "nullable": true
1261
+ },
1262
+ "nullable": true
1207
1263
  }
1208
1264
  },
1209
1265
  "additionalProperties": false
@@ -1255,6 +1311,10 @@
1255
1311
  "additionalProperties": false
1256
1312
  },
1257
1313
  "NgApps.Application.Contexts.Datastore.Entities.EntityIndexDto": {
1314
+ "required": [
1315
+ "fieldIds",
1316
+ "name"
1317
+ ],
1258
1318
  "type": "object",
1259
1319
  "properties": {
1260
1320
  "id": {
@@ -1262,19 +1322,19 @@
1262
1322
  "format": "uuid"
1263
1323
  },
1264
1324
  "name": {
1265
- "type": "string",
1266
- "nullable": true
1325
+ "minLength": 1,
1326
+ "type": "string"
1267
1327
  },
1268
1328
  "unique": {
1269
1329
  "type": "boolean"
1270
1330
  },
1271
1331
  "fieldIds": {
1332
+ "minItems": 1,
1272
1333
  "type": "array",
1273
1334
  "items": {
1274
1335
  "type": "string",
1275
1336
  "format": "uuid"
1276
- },
1277
- "nullable": true
1337
+ }
1278
1338
  }
1279
1339
  },
1280
1340
  "additionalProperties": false
@@ -1287,6 +1347,15 @@
1287
1347
  "type": "string",
1288
1348
  "format": ""
1289
1349
  },
1350
+ "NgApps.Domain.Contexts.Studio.Microservices.MicroserviceFieldWriteOn": {
1351
+ "enum": [
1352
+ "always",
1353
+ "create",
1354
+ "update"
1355
+ ],
1356
+ "type": "string",
1357
+ "format": ""
1358
+ },
1290
1359
  "NgApps.Domain.Contexts.Datastore.Entities.OperatorType": {
1291
1360
  "enum": [
1292
1361
  "eq",
@@ -1378,6 +1447,18 @@
1378
1447
  "icon": {
1379
1448
  "type": "string",
1380
1449
  "nullable": true
1450
+ },
1451
+ "order": {
1452
+ "type": "integer",
1453
+ "format": "int32"
1454
+ },
1455
+ "labels": {
1456
+ "type": "object",
1457
+ "additionalProperties": {
1458
+ "type": "string",
1459
+ "nullable": true
1460
+ },
1461
+ "nullable": true
1381
1462
  }
1382
1463
  },
1383
1464
  "additionalProperties": false
package/dist/server.js CHANGED
@@ -16,10 +16,12 @@ import { registerTranslationTools } from './tools/translations.js';
16
16
  import { registerFlowTools } from './tools/flows.js';
17
17
  import { registerKnowledgeResources } from './resources/knowledge.js';
18
18
  import { registerSchemaResources } from './resources/schemas.js';
19
+ import { registerRuleResources } from './resources/rules.js';
19
20
  import { instrumentServer } from './observability/trace.js';
20
21
  import { registerProjectTools } from './tools/projects.js';
21
22
  import { registerEntityTools } from './tools/entities.js';
22
23
  import { registerDependencyTools } from './tools/dependencies.js';
24
+ import { registerGlobalFunctionTools } from './tools/globalFunctions.js';
23
25
  import { registerVariableTools } from './tools/variables.js';
24
26
  import { registerFolderTools } from './tools/folders.js';
25
27
  import { registerQueryTools } from './tools/queries.js';
@@ -47,6 +49,7 @@ const moduleRegistrations = {
47
49
  flow: registerFlowTools,
48
50
  layout: registerLayoutTools,
49
51
  variable: registerVariableTools,
52
+ globalFunction: registerGlobalFunctionTools,
50
53
  folder: registerFolderTools,
51
54
  file: registerFileTools,
52
55
  access: registerAccessTools,
@@ -63,5 +66,6 @@ export function createGatewayServer(platform) {
63
66
  }
64
67
  registerSchemaResources(server);
65
68
  registerKnowledgeResources(server);
69
+ registerRuleResources(server);
66
70
  return server;
67
71
  }
@@ -5,12 +5,12 @@ export function registerAccessTools(server, platform) {
5
5
  const config = platform.config;
6
6
  server.registerTool('role_list', {
7
7
  title: 'Rolleri listele',
8
- description: "Projenin rollerini listeler. page_create/page_update'in roleIds parametresi bu id'lerdir — rol id'sini tahmin etmeyin, buradan okuyun.",
8
+ description: "Projenin rollerini listeler. Uç YALNIZ id + name döner (backend RoleDto bu ikisini taşır) — SLUG BURADA YOKTUR ve iki anahtar farklıdır: page_create/page_update ve microservice_create'in roleIds alanı ID ister, buna karşılık Authorized(user.roles) ile middleware'in kurduğu user.roles SLUG karşılaştırır (platformun get-user sorgusu roles+user_roles join'inden slug dizisi üretir). Slug'ı built-in 'roles' entity'sinden okuyun (sabit id 01917ede-88a2-72ea-8397-2619e5d5dca0; row_list/microservice). ROL OLUŞTURAN BİR TOOL YOKTUR ve olmamalıdır: roller built-in datasource'taki sıradan bir entity'dir (kolonlar id · name UNIQUE · slug). Uygulamanın rol yönetmesi gerekiyorsa yol entity_get('roles') + kendi microservice ucun (uç + sayfa) ve rolü kullanıcıya bağlayan user_roles satırı — MCP'den doğrudan yazma değil; reçete platform_guide('entity') §'Hazır entity'ler'. Projeyle birlikte gelen roller çoğu senaryoya yeter; önce bu listeye bakın.",
9
9
  inputSchema: { project: projectParam, environment: environmentParam },
10
10
  annotations: readOnly
11
11
  }, handle(config, async ({ project, environment }) => {
12
12
  const payload = await platform.tenant('GET', project, '/roles', { environment });
13
- return { roles: (payload?.data ?? []).map(role => ({ id: role.id, name: role.name, isSuperAdmin: role.isSuperAdmin })) };
13
+ return { roles: (payload?.data ?? []).map(role => ({ id: role.id, name: role.name })) };
14
14
  }));
15
15
  server.registerTool('user_list', {
16
16
  title: 'Kullanıcıları listele',
@@ -20,7 +20,7 @@ export function registerAccessTools(server, platform) {
20
20
  }, handle(config, ({ project, environment, ...query }) => platform.tenant('GET', project, '/users', { environment, query })));
21
21
  server.registerTool('org_role_list', {
22
22
  title: 'Organizasyon rollerini listele',
23
- description: 'Organization.API tarafındaki rolleri listeler (platform yönetimi); proje içi yetkilendirme için role_list kullanın.',
23
+ description: 'Organization.API tarafındaki rolleri listeler (platform yönetimi); proje içi yetkilendirme için role_list kullanın. Burada da oluşturma yoktur — organizasyon rolleri platform yönetimine aittir ve uygulamanın rol tablosuyla (built-in roles entity) ilgisi yoktur.',
24
24
  inputSchema: {},
25
25
  annotations: readOnly
26
26
  }, handle(config, () => platform.org('GET', '/roles')));
@@ -29,7 +29,7 @@ export function registerApplicationTools(server, platform) {
29
29
  name: z.string().min(1),
30
30
  color: z.string().optional(),
31
31
  dns: z.string().optional(),
32
- type: z.string().optional().describe('ApplicationType; varsayılan Web'),
32
+ type: z.enum(['web', 'mobile']).optional().describe("ApplicationType; geçerli değerler: 'web', 'mobile'; varsayılan 'web'"),
33
33
  properties: z.record(z.unknown()).optional(),
34
34
  notFoundPageId: guid.optional()
35
35
  },