@appaflytech/zeyrek-ai-mcp 0.0.30 → 0.0.32

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 (203) hide show
  1. package/.env.example +0 -15
  2. package/README.md +5 -5
  3. package/dist/config.js +0 -37
  4. package/dist/index.js +0 -2
  5. package/dist/knowledge/backendConstraints.js +1 -18
  6. package/dist/knowledge/boxSections.js +184 -0
  7. package/dist/knowledge/componentCatalog.js +232 -562
  8. package/dist/knowledge/componentEvents.js +21 -141
  9. package/dist/knowledge/layoutSummary.js +2 -140
  10. package/dist/knowledge/normalize.js +67 -236
  11. package/dist/knowledge/outlines.js +0 -36
  12. package/dist/knowledge/policy.js +4 -18
  13. package/dist/knowledge/reservedTables.js +0 -79
  14. package/dist/knowledge/rules.js +21 -319
  15. package/dist/knowledge/schemaGuard.js +0 -11
  16. package/dist/knowledge/styleResolve.js +38 -55
  17. package/dist/knowledge/themeResolve.js +3 -3
  18. package/dist/observability/trace.js +3 -6
  19. package/dist/platform/diagnostics.js +4 -10
  20. package/dist/platform/domSummary.js +1 -1
  21. package/dist/platform/errors.js +10 -162
  22. package/dist/platform/http.js +8 -29
  23. package/dist/platform/responses.js +5 -39
  24. package/dist/platform/{capture/capture.js → screenshot.js} +519 -105
  25. package/dist/platform/secrets.js +1 -17
  26. package/dist/platform/strictArguments.js +12 -68
  27. package/dist/platform/tokenVault.js +4 -187
  28. package/dist/resources/examples/layout-app-shell.json +707 -229
  29. package/dist/resources/examples/page-detail-profile.json +1 -2
  30. package/dist/resources/examples/page-dynamic-form.json +2 -3
  31. package/dist/resources/examples/page-flex-sections.json +1 -1
  32. package/dist/resources/examples/page-html-embed.json +1 -1
  33. package/dist/resources/examples/workflow-basic.json +2 -8
  34. package/dist/resources/guides/component.md +4 -91
  35. package/dist/resources/guides/entity.md +8 -50
  36. package/dist/resources/guides/expressions.md +5 -14
  37. package/dist/resources/guides/functions.md +1 -1
  38. package/dist/resources/guides/getting-started.md +1 -38
  39. package/dist/resources/guides/layout.md +58 -55
  40. package/dist/resources/guides/microservice.md +2 -81
  41. package/dist/resources/guides/middleware.md +2 -44
  42. package/dist/resources/guides/page.md +75 -454
  43. package/dist/resources/guides/theme.md +2 -8
  44. package/dist/resources/guides/translation.md +1 -1
  45. package/dist/resources/guides/workflow.md +1 -58
  46. package/dist/resources/rules.js +5 -11
  47. package/dist/resources/schema-fingerprint.json +5 -7
  48. package/dist/resources/schemas/CreateEntityCommand.json +0 -118
  49. package/dist/resources/schemas/CreateMicroserviceCommand.json +1 -13
  50. package/dist/resources/schemas/CreateQueryCommand.json +0 -4
  51. package/dist/resources/schemas/CreateWorkflowCommand.json +1 -143
  52. package/dist/resources/schemas/DataJobDto.json +1 -6
  53. package/dist/resources/schemas/GlobalFunctionUpdateResultDto.json +1 -21
  54. package/dist/resources/schemas/MicroserviceDto.json +3 -15
  55. package/dist/resources/schemas/PreviewMicroserviceCommand.json +1 -10
  56. package/dist/resources/schemas/PreviewWorkflowCommand.json +1 -22
  57. package/dist/resources/schemas/StepDto.json +1 -22
  58. package/dist/resources/schemas/UpdateEntityCommand.json +0 -118
  59. package/dist/resources/schemas/UpdateMicroserviceCommand.json +1 -13
  60. package/dist/resources/schemas/UpdateQueryCommand.json +0 -4
  61. package/dist/resources/schemas/UpdateViewCommand.json +2 -0
  62. package/dist/resources/schemas/UpdateWorkflowCommand.json +1 -143
  63. package/dist/server.js +1 -27
  64. package/dist/tools/access.js +2 -369
  65. package/dist/tools/applications.js +3 -60
  66. package/dist/tools/common.js +0 -7
  67. package/dist/tools/components.js +14 -118
  68. package/dist/tools/datasources.js +3 -3
  69. package/dist/tools/dependencies.js +1 -1
  70. package/dist/tools/deployments.js +2 -2
  71. package/dist/tools/designSchemaPatch.js +18 -34
  72. package/dist/tools/dtos.js +5 -36
  73. package/dist/tools/entities.js +12 -79
  74. package/dist/tools/externalComponents.js +5 -26
  75. package/dist/tools/flows.js +14 -122
  76. package/dist/tools/folders.js +1 -1
  77. package/dist/tools/imports.js +2 -5
  78. package/dist/tools/layouts.js +17 -50
  79. package/dist/tools/merges.js +1 -1
  80. package/dist/tools/microservices.js +25 -77
  81. package/dist/tools/pages.js +112 -465
  82. package/dist/tools/platformInfo.js +8 -27
  83. package/dist/tools/projects.js +9 -71
  84. package/dist/tools/rows.js +13 -69
  85. package/dist/tools/schemaOps.js +1 -61
  86. package/dist/tools/screenWrite.js +8 -37
  87. package/dist/tools/screens.js +5 -95
  88. package/dist/tools/templates.js +1 -26
  89. package/dist/tools/translations.js +1 -1
  90. package/dist/tools/variables.js +5 -11
  91. package/dist/tools/workflows.js +5 -10
  92. package/package.json +2 -2
  93. package/dist/knowledge/access.js +0 -802
  94. package/dist/knowledge/case.js +0 -41
  95. package/dist/knowledge/connectDataBind.js +0 -819
  96. package/dist/knowledge/connectDataDefinition.js +0 -341
  97. package/dist/knowledge/connectDataExecute.js +0 -93
  98. package/dist/knowledge/connectDataRules.js +0 -128
  99. package/dist/knowledge/decision.js +0 -121
  100. package/dist/knowledge/expressionPrelude.js +0 -59
  101. package/dist/knowledge/microserviceParameters.js +0 -58
  102. package/dist/knowledge/mining.js +0 -94
  103. package/dist/knowledge/mobileComponentCatalog.js +0 -859
  104. package/dist/knowledge/mobileComponentEvents.js +0 -239
  105. package/dist/knowledge/platform/lint.js +0 -385
  106. package/dist/knowledge/platform/mobile.js +0 -142
  107. package/dist/knowledge/platform/mobileLayoutLint.js +0 -324
  108. package/dist/knowledge/platform/mobileRules.js +0 -231
  109. package/dist/knowledge/platform/mobileSpacing.js +0 -82
  110. package/dist/knowledge/platform/mobileTabs.js +0 -108
  111. package/dist/knowledge/platform/nativeBoxModel.js +0 -44
  112. package/dist/knowledge/platform/profile.js +0 -25
  113. package/dist/knowledge/platform/resolve.js +0 -122
  114. package/dist/knowledge/platform/web.js +0 -39
  115. package/dist/knowledge/process.js +0 -510
  116. package/dist/knowledge/rowFilter.js +0 -43
  117. package/dist/knowledge/styleResolveNative.js +0 -527
  118. package/dist/platform/argumentAliases.js +0 -128
  119. package/dist/platform/bodyFile.js +0 -103
  120. package/dist/platform/capture/actions.js +0 -333
  121. package/dist/platform/capture/browser.js +0 -1
  122. package/dist/platform/capture/console-log.js +0 -122
  123. package/dist/platform/capture/index.js +0 -11
  124. package/dist/platform/capture/readiness.js +0 -103
  125. package/dist/platform/capture/summary.js +0 -77
  126. package/dist/platform/capture/target.js +0 -5
  127. package/dist/platform/capture/targets/studio-mobile.js +0 -15
  128. package/dist/platform/capture/targets/studio-web.js +0 -5
  129. package/dist/platform/impersonation.js +0 -45
  130. package/dist/platform/jsonArray.js +0 -24
  131. package/dist/platform/schemaReadMemory.js +0 -60
  132. package/dist/resources/examples/bpm-gorev-kontrol.json +0 -294
  133. package/dist/resources/examples/bpm-iso-dokuman.json +0 -228
  134. package/dist/resources/examples/bpm-satinalma.json +0 -376
  135. package/dist/resources/examples/connect-data-convert-verify.json +0 -107
  136. package/dist/resources/examples/connect-data-dropdown-roles.json +0 -66
  137. package/dist/resources/examples/connect-data-edit-m2m.json +0 -73
  138. package/dist/resources/examples/connect-data-query-params.json +0 -50
  139. package/dist/resources/examples/connect-data-table-entity.json +0 -147
  140. package/dist/resources/examples/connect-data-workflow-microservice.json +0 -65
  141. package/dist/resources/examples/mobile-app-shell-drawer.json +0 -243
  142. package/dist/resources/examples/mobile-app-shell-stack.json +0 -157
  143. package/dist/resources/examples/mobile-app-shell-tab.json +0 -208
  144. package/dist/resources/examples/mobile-form-screen.json +0 -365
  145. package/dist/resources/examples/mobile-list-detail-form.json +0 -672
  146. package/dist/resources/guides/access.md +0 -796
  147. package/dist/resources/guides/bpm.md +0 -686
  148. package/dist/resources/guides/case.md +0 -153
  149. package/dist/resources/guides/decision.md +0 -185
  150. package/dist/resources/guides/mobile-layout.md +0 -193
  151. package/dist/resources/guides/mobile.md +0 -495
  152. package/dist/resources/read.js +0 -41
  153. package/dist/resources/schemas/AccessExplanationDto.json +0 -144
  154. package/dist/resources/schemas/AccessMatrixDto.json +0 -170
  155. package/dist/resources/schemas/AccessPermissionDto.json +0 -57
  156. package/dist/resources/schemas/AccessPolicyDto.json +0 -223
  157. package/dist/resources/schemas/AccessResourceDto.json +0 -86
  158. package/dist/resources/schemas/AppSessionDto.json +0 -53
  159. package/dist/resources/schemas/ConnectDataDescribeDto.json +0 -344
  160. package/dist/resources/schemas/ConnectDataRequestModel.json +0 -202
  161. package/dist/resources/schemas/ConnectDataResultDto.json +0 -421
  162. package/dist/resources/schemas/ConnectorCredentialDto.json +0 -70
  163. package/dist/resources/schemas/ConvertConnectDataToMicroserviceCommand.json +0 -37
  164. package/dist/resources/schemas/CreateAccessPolicyCommand.json +0 -209
  165. package/dist/resources/schemas/CreateDecisionCommand.json +0 -221
  166. package/dist/resources/schemas/CreateProcessDefinitionCommand.json +0 -1337
  167. package/dist/resources/schemas/DecisionDto.json +0 -302
  168. package/dist/resources/schemas/DetachConnectDataMicroserviceCommand.json +0 -28
  169. package/dist/resources/schemas/ExplainAccessQuery.json +0 -33
  170. package/dist/resources/schemas/GenerateProcessDocumentCommand.json +0 -116
  171. package/dist/resources/schemas/OrganizationProjectDto.json +0 -335
  172. package/dist/resources/schemas/OrganizationSchemaDto.json +0 -196
  173. package/dist/resources/schemas/OrganizationSchemaVersionDto.json +0 -207
  174. package/dist/resources/schemas/PatchProcessDefinitionCommand.json +0 -76
  175. package/dist/resources/schemas/ProcessDefinitionDto.json +0 -1480
  176. package/dist/resources/schemas/ProcessSimulationDto.json +0 -96
  177. package/dist/resources/schemas/SaveConnectorCredentialCommand.json +0 -90
  178. package/dist/resources/schemas/SaveProcessEventSourceCommand.json +0 -61
  179. package/dist/resources/schemas/SaveProcessMailSourceCommand.json +0 -89
  180. package/dist/resources/schemas/SignProcessTaskCommand.json +0 -73
  181. package/dist/resources/schemas/SimulateProcessDefinitionQuery.json +0 -92
  182. package/dist/resources/schemas/UpdateAccessPolicyCommand.json +0 -209
  183. package/dist/resources/schemas/UpdateDecisionCommand.json +0 -216
  184. package/dist/resources/schemas/UpdateProcessDefinitionCommand.json +0 -1357
  185. package/dist/resources/schemas/ValidateProcessDefinitionQuery.json +0 -1339
  186. package/dist/tools/accessOperations.js +0 -135
  187. package/dist/tools/accessPolicies.js +0 -170
  188. package/dist/tools/accessRuntime.js +0 -203
  189. package/dist/tools/bpm.js +0 -343
  190. package/dist/tools/bpmGovernance.js +0 -266
  191. package/dist/tools/bpmOperations.js +0 -230
  192. package/dist/tools/bpmReporting.js +0 -154
  193. package/dist/tools/bpmRouting.js +0 -150
  194. package/dist/tools/bpmRuntime.js +0 -396
  195. package/dist/tools/case.js +0 -178
  196. package/dist/tools/caseRuntime.js +0 -89
  197. package/dist/tools/connectData.js +0 -449
  198. package/dist/tools/connectors.js +0 -193
  199. package/dist/tools/decisions.js +0 -206
  200. package/dist/tools/mobile.js +0 -221
  201. package/dist/tools/modules.js +0 -48
  202. package/dist/tools/organizationStructure.js +0 -137
  203. package/dist/tools/profileWrite.js +0 -92
@@ -47,10 +47,7 @@ Değişkenlerin tam listesi ve o projedeki değerleri: `theme_get(view:'resolved
47
47
  sırası bellidir: projenin tamamı için tema token'ı (`theme_update`), tekrar eden bir kalıp için
48
48
  adlı preset (`presets` + `style.$preset`), yalnız o düğüme özgü karar için düğümün kendi
49
49
  `style`'ı. Sabit hex yazmak yerine `var(--ng-accent-primary)` yazmak, düğümü temaya BAĞLI
50
- tutar. **Adı uydurmayın:** geçerli adlar temanın yaydığı değişkenlerdir (`theme_get({ view: 'resolved' })`'in `cssVars`'ı;
51
- yüzeyler `--ng-background-surface`, `--ng-background-surface-alt`, `--ng-background-canvas`). Mobil
52
- çizici yalnız bunları çözer; `var(--ng-surface)` gibi tanımsız bir ad cihazda saydam kalır ve iOS
53
- gölgesi içeriğe düşer (THEME-012 uyarısı).
50
+ tutar.
54
51
 
55
52
  **2. Marka rengi tek çağrıdır.** `theme_update({ palette: { accent: { primary, hover } } })`
56
53
  sayfadaki her butonu, odak halkasını, seçili satırı ve grafik serisini birden çevirir. Komponent
@@ -101,10 +98,7 @@ theme_update({ theme: {
101
98
  ```
102
99
 
103
100
  **Yazı tipi ve ölçek:** `fontFamily` panelin Google Fonts listesinden bir ad olmalı — runtime
104
- fontu ADIYLA Google'dan çeker, tanınmayan ad sessizce sans-serif'e düşer (THEME-008). Mobilde de
105
- aynı kural geçerlidir: cihaz aynı adı Google Fonts'tan TTF olarak indirip `expo-font` ile yükler
106
- (400 ve 700 kalınlık) — Android'de kalın yüz SENTETİKTİR (iOS gerçek kalın dosyayı çizer,
107
- ZM-10, 2026-09-26).
101
+ fontu ADIYLA Google'dan çeker, tanınmayan ad sessizce sans-serif'e düşer (THEME-008).
108
102
 
109
103
  ```jsonc
110
104
  theme_update({ theme: {
@@ -208,7 +208,7 @@ gerekmez — `schema.ts`'e dokunulmaz, katalog yeniden yüklenmez.
208
208
  `translation_update` artık uygulamanın bütün sayfalarının önbellek satırlarını düşürüyor
209
209
  (`RefreshPageCacheWhenTranslationChangedCommand`), okuma yolu cache-aside olduğu için bir
210
210
  sonraki `page_runtime_get` taze değeri kurar. Yazmadan hemen sonra okuyabilirsin.
211
- - Mobil uygulama runtime'ı (`@ng-apps/ui-native`, Expo) web ile aynı sözlüğü ve motoru kullanır (2026-09-25, plans/mobil-coklu-dil): `language-selector` mobil katalogda, cihazda dil sırası uygulama içi seçim → kayıtlı seçim → cihaz dili → varsayılan (`?lang` yalnız `/preview`'da), seçim uygulama çapında ve kalıcı, sekme etiketi `t:<anahtar>`, `X-Data-Language` sonraki isteklerle gider. Ayrıntı `platform_guide('mobile')` §Çok dil.
211
+ - Mobil runtime (`apps/mobile`) bu özelliği henüz beslemiyor — yalnız web.
212
212
 
213
213
  ## Backend doğrulama sınırları (TR-001)
214
214
 
@@ -2,8 +2,6 @@
2
2
 
3
3
  Buradaki kurallar gerçek projelerde (qm, hr) **deneyerek doğrulandı**.
4
4
 
5
- **Süreç ≠ workflow.** Workflow tek istekte biter. İnsan kararı bekleyen, günlerce süren, SLA ve görev kutusu olan iş için süreç tanımı yazın (`platform_guide('bpm')`); süreç gerektiğinde bu workflow'u `service` düğümüyle çağırır.
6
-
7
5
  ## Her adım NE İŞE YARADIĞINI yazar (WF-024, block)
8
6
 
9
7
  Studio kanvası adımın **adını** gösterir, ne yaptığını göstermez. 11 satırlık bir `code` adımının
@@ -380,20 +378,6 @@ gidilir, hiçbiri tutmazsa `else` dalı yürür:
380
378
  | response | ✓ | – | ✓ |
381
379
  | convert | ✓ | – | – |
382
380
  | revert (Fail and Rollback) | – | ✓ | – |
383
- | process (BPM süreci) | ✓ | ✓ | – |
384
-
385
- > **`process` adımı süreci başlatır ya da ona sinyal/vekalet yazar, BEKLEMEZ (2026-09-18).**
386
- > Kural alanları `processSlug`, `processOperation: start | signal | delegate` (boş = `start`) ve
387
- > Jint `expression`'dır; nesne parantezle yazılır: `({ subjectRowId: String(row.id), vars: {} })`.
388
- > Çıktı `start`'ta `{ instanceId, created, state }`, `signal`'de `{ instanceId, state }`,
389
- > `delegate`'te `{ delegationId, source }`. Tanım `singleton: per-subject` ise ve satırın açık örneği
390
- > zaten varsa `start` onu döndürür (`created: false`); değilse her çağrı yeni örnek açar. **Tuzak:**
391
- > tanımın konu entity'si bu tablo ve ilk start düğümü `trigger: row-event` ile aynı olayı dinliyorsa,
392
- > o tabloya bağlı automation'daki `start` adımı onunla AYNI ANDA koşar, `per-subject` bile olsa ikisi
393
- > de açık örnek görmez ve satır için İKİ örnek açılır (ölçüldü: G-3, 135 ms arayla). Satır
394
- > olayı başlatması için tanımın kendi tetikleyicisi yeter; adımı başka mantığın parçası olarak
395
- > başlatırken kullanın — Studio adımı bu durumda uyarır. Önizlemede adım gerçekten başlatır ama
396
- > transaction geri alınır: çıktıdaki `instanceId` sonra 404 döner.
397
381
 
398
382
  > **`revert`'in iki alanı JavaScript ifadesidir, düz metin değil.** `rule.revertType` ve
399
383
  > `rule.revertMessage` çalışma anında `Evaluate` edilir; Studio bu alanları kod editörüyle sunar ve
@@ -588,10 +572,6 @@ Tam örnek, ölçülen çıktı şekli ve `code` çocuğu tuzağının çıkış
588
572
  (Studio aynı form bileşenlerini kullanır): `joins[].path` = `<kökEntityId>.<ilişkiAlanı…>`,
589
573
  join'li `selectFields[].path` = kök id olmadan aynı zincir, kök alanlarda `path` yok.
590
574
  Join'in çıktısı sonraki adımlarda **iç içe** gelir: `step.data[0].course_id.code`.
591
- - **`<adım>.data` bir JS dizisi DEĞİLDİR** (.NET listesi): `Array.isArray` `false`, `length` ve `Count` çalışır
592
- ama dizi metotları (`slice()`, `sort()`…) `JavaScriptException: No public methods with the specified arguments
593
- were found.` ile düşer ve mesaj metodu söylemez. Önce kopyalayın: `Array.from(<adım>.data).slice()` · `.map(…)`
594
- (ölçüldü 2026-09-21, `workflow_preview`, 39/06; ilk görülme 36/S-15).
595
575
  - **`rule.sort` ve `rule.limit` her table step'te verilir** — yoksa Studio'da workflow sayfası
596
576
  `Cannot read properties of null (reading 'sortValue')` ile hiç açılmaz (**WF-013, block**).
597
577
  - Join path disiplini burada da **MS-007 (block)** ile aynıdır.
@@ -671,15 +651,9 @@ Tam örnek, ölçülen çıktı şekli ve `code` çocuğu tuzağının çıkış
671
651
 
672
652
  ```js
673
653
  // dizi (isSingle:false) · nesne (isSingle:true) · düz değer (yalnız pk dönen yazma)
674
- (x.data && typeof x.data !== 'string' && typeof x.data.length === 'number' ? (x.data[0] && x.data[0].id) : (x.data && x.data.id !== undefined ? x.data.id : x.data))
654
+ (Array.isArray(x.data) ? (x.data[0] && x.data[0].id) : (x.data && x.data.id !== undefined ? x.data.id : x.data))
675
655
  ```
676
656
 
677
- Diziyi `Array.isArray` ile değil `.length` ile tanıyın: 2026-09-27'den önceki backend'de tablo
678
- adımının listesi Jint'e sarılı bir CLR nesnesi olarak iniyordu ve `Array.isArray(x.data)` `false`
679
- dönüyordu — koşuda (2026-09-24) giriş akışı bu yüzden her kullanıcıyı 401 ile reddetti
680
- (`zeyrek-backend/docs/incident-log.md` #89). `.length`, `.map`, `.filter` o sürümde de çalışıyordu;
681
- düzeltilmiş backend'de `Array.isArray` de doğrudur.
682
-
683
657
  Şekli bilmiyorsan bu yazımı kullan; `workflow_preview` çıktısında `steps[].output`'a bakarak
684
658
  hangi vakada olduğunu da görebilirsin.
685
659
 
@@ -839,21 +813,6 @@ zorunludur (`CreateWorkflowCommandValidator`: `When(ReturnDtoId.HasValue) → Re
839
813
  }
840
814
  ```
841
815
 
842
- ## Kompleks projede özne ve runAs
843
-
844
- Kompleks projede (`accessModel: 'complex'`):
845
-
846
- - **`user` hazır gelir (uç yolunda):** `id`, `email`, `roles`, `roles_csv`, `positions`, `units` uygulama
847
- oturumundan dolar. Bağlı middleware her modda koşar; set-user adımı ya da middleware yanıtındaki `user`
848
- bu değeri ezer — kimlik için set-user'lı middleware yazma, bağlıysa uçtan/sayfadan çıkar (ACC-006).
849
- - **`subject` nesnesi ve `Can(izin, anahtar)` henüz yok.** Yetkiyi JS ifadesinde yeniden kurma: uç ve
850
- sayfa izni, satır kapsamı ve alan erişimi platformda uygulanır.
851
- - **Table ve query adımının kimliği** `rule.runAs`: `inherit` (varsayılan) · `system` (kapsamı ve alan
852
- erişimini atlar, denetim kaydı yazmaz — ACC-004 warn, gerekçeyi adımın `caution`'ına yaz) ·
853
- `triggering-user` (şimdilik `inherit` gibi davranır). `workflow_step_schema` alanı göstermez.
854
- - Kapsamlı ya da korumalı tabloya dokunan query adımı, sorgu `isUnrestricted` değilse
855
- `403 AccessQueryNotScoped` alır (ACC-005). Ayrıntı: `platform_guide('access')`.
856
-
857
816
  ## Bilinen sınırlar ve kabul edilen kanıt
858
817
 
859
818
  Bunlar **platform sınırıdır**, gövdeyi değiştirerek aşılmaz — ama sınır doğrulamayı iptal etmez,
@@ -992,19 +951,3 @@ Kaydedilen sözleşme üç tüketim yolunda da aynı şekilde bağlanır:
992
951
  - `parameters` bildirilmemiş eski query'lerde belirteçler ham SQL'den okunur; güvenme (string
993
952
  literalindeki `@ad`'ı da parametre sanıyor, `query_get` boş `parameterScheme` gösteriyor). Böyle
994
953
  bir query'yi `parameters` vererek bir kez `query_update` et.
995
-
996
- ## Connect Data kaynağı olarak workflow
997
-
998
- Liste dönen workflow bir tablo/dropdown/grafik prop'una **akışsız** bağlanabilir (`connect_data_bind`,
999
- `platform_guide('page')` §Kural 1c-3). Şartlar (ölçüldü 2026-09-21, koşu 38):
1000
-
1001
- - **Dönüş DTO'su + `returnBehavior: 'array'`.** Alanlar dönüş DTO'sundan okunur; `connect_data_sources` yalnız çıktı
1002
- DTO'lu workflow'ları listeler. Response adımı DTO şeklinde dizi döndürmeli.
1003
- - **Parametreler** `parameterBehavior: 'object'` + girdi DTO'suyla tanımlanır; bağlantı onları `params` ile doldurur:
1004
- sabit (`{ minFiyat: 5000 }`) ya da sayfa değişkeni (`{ minFiyat: '$minFiyat' }`). Adlar `connect_data_describe`
1005
- `source.parameters`'tan (bilinmeyen ad CD-013 block).
1006
- - Workflow **sunucuda sayfalamaz ve süzmez**: `pageMode: client` (ilk 1000 satır, süzme tarayıcıda — CD-007); tanıma
1007
- `filter`, `sort`, `filterable`, `edit` yazılmaz (CD-013). Süzülen/sayfalanan liste gerekiyorsa entity ya da dinamik
1008
- filtreli tablo ucu bağlayın.
1009
- - Önizleme `connect_data_preview { request: { params } }` ile; `$ad`'ı önizleme doldurmaz (CD-014 warn).
1010
- - Örnek: `ngapps://examples/connect-data-workflow-microservice`.
@@ -1,5 +1,6 @@
1
- import { ruleResourceBody, ruleResourceNames } from './read.js';
2
- export { ruleResourceNames };
1
+ import { constraintCatalog } from '../knowledge/backendConstraints.js';
2
+ /** `ngapps://rules/<ad>` kaynakları; docs-lint bu listeyle `ngapps://rules/…` referanslarını denetler. */
3
+ export const ruleResourceNames = ['backend-constraints'];
3
4
  /**
4
5
  * Backend doğrulayıcı kataloğu tek kaynak olarak koddan üretilir (`backendConstraints.ts`);
5
6
  * dosya olarak paketlenmez ki tool açıklaması, lint ve bu kaynak hiçbir zaman ayrışmasın.
@@ -7,7 +8,7 @@ export { ruleResourceNames };
7
8
  export function registerRuleResources(server) {
8
9
  server.registerResource('rules-index', 'ngapps://rules/index', {
9
10
  title: 'Kural kaynakları dizini',
10
- description: "Gateway'in koddan ürettiği kural katalogları: backend doğrulayıcı aynası ve Connect Data (veri bağlama) kuralları.",
11
+ description: "Gateway'in koddan ürettiği kural katalogları; şu an backend doğrulayıcı aynası.",
11
12
  mimeType: 'application/json'
12
13
  }, async (uri) => ({
13
14
  contents: [{
@@ -21,13 +22,6 @@ export function registerRuleResources(server) {
21
22
  description: "Platformun 422/409 ile reddedeceği gövde kuralları (uzunluk, zorunluluk, tek primaryKey, DTO/behavior eşleşmesi, dil kodları…) — kaynak referanslı; gateway aynı kuralı istek gitmeden block olarak uygular.",
22
23
  mimeType: 'application/json'
23
24
  }, async (uri) => ({
24
- contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(ruleResourceBody('backend-constraints'), null, 2) }]
25
- }));
26
- server.registerResource('rules-connect-data', 'ngapps://rules/connect-data', {
27
- title: 'Connect Data kuralları (CD-001…018)',
28
- description: "Prop'u veri kaynağına bağlamanın kuralları: kural, şiddet, gateway'de uygulandığı yer ve platform kaynağı. Rehber: platform_guide('page') §Kural 1c-3.",
29
- mimeType: 'application/json'
30
- }, async (uri) => ({
31
- contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(ruleResourceBody('connect-data'), null, 2) }]
25
+ contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify(constraintCatalog(), null, 2) }]
32
26
  }));
33
27
  }
@@ -1,12 +1,10 @@
1
1
  {
2
- "hash": "824bc047e324388649db7bab9e15a2b6602fd6a8ef8a51c7b7a6e5ff58bac7fa",
3
- "generatedAt": "2026-09-30T16:50:58.347Z",
4
- "types": 324,
5
- "files": 163,
2
+ "hash": "06f7d6b64937424fcbe7a9c8751e90a5224556e0c970199fb199cfa3a147c7d2",
3
+ "generatedAt": "2026-09-28T09:04:34.182Z",
4
+ "types": 186,
5
+ "files": 108,
6
6
  "note": "Şemaları üreten backend kaynaklarının parmak izi. Elle düzenlemeyin: 'npm run generate-schemas' yazar, 'npm run schema:check' denetler.",
7
7
  "missing": [
8
- "NgApps.Infrastructure.Models.IdNamePair`1[[System.Guid, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]",
9
- "System.Text.Json.Nodes.JsonNode",
10
- "System.Text.Json.Nodes.JsonNodeOptions"
8
+ "NgApps.Infrastructure.Models.IdNamePair`1[[System.Guid, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
11
9
  ]
12
10
  }
@@ -208,17 +208,6 @@
208
208
  "nullable": true
209
209
  },
210
210
  "nullable": true
211
- },
212
- "protection": {
213
- "$ref": "#/components/schemas/NgApps.Application.Contexts.Datastore.Entities.FieldProtectionDto"
214
- },
215
- "derivedFromFieldId": {
216
- "type": "string",
217
- "format": "uuid",
218
- "nullable": true
219
- },
220
- "derivationRule": {
221
- "$ref": "#/components/schemas/NgApps.Application.Contexts.Datastore.Entities.FieldDerivationRuleDto"
222
211
  }
223
212
  },
224
213
  "additionalProperties": false
@@ -414,45 +403,6 @@
414
403
  },
415
404
  "additionalProperties": false
416
405
  },
417
- "NgApps.Application.Contexts.Datastore.Entities.FieldProtectionDto": {
418
- "type": "object",
419
- "properties": {
420
- "mode": {
421
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldProtectionMode"
422
- },
423
- "mask": {
424
- "$ref": "#/components/schemas/NgApps.Application.Contexts.Datastore.Entities.FieldMaskRuleDto"
425
- },
426
- "exactSearch": {
427
- "type": "boolean"
428
- },
429
- "normalize": {
430
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldNormalization"
431
- }
432
- },
433
- "additionalProperties": false
434
- },
435
- "NgApps.Application.Contexts.Datastore.Entities.FieldDerivationRuleDto": {
436
- "type": "object",
437
- "properties": {
438
- "type": {
439
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldDerivationType"
440
- },
441
- "start": {
442
- "type": "integer",
443
- "format": "int32"
444
- },
445
- "length": {
446
- "type": "integer",
447
- "format": "int32"
448
- },
449
- "pattern": {
450
- "type": "string",
451
- "nullable": true
452
- }
453
- },
454
- "additionalProperties": false
455
- },
456
406
  "NgApps.Domain.Contexts.Shared.Validations.ValidationType": {
457
407
  "enum": [
458
408
  "regex",
@@ -471,74 +421,6 @@
471
421
  ],
472
422
  "type": "string",
473
423
  "format": ""
474
- },
475
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldProtectionMode": {
476
- "enum": [
477
- "none",
478
- "masked",
479
- "encrypted",
480
- "masked-encrypted"
481
- ],
482
- "type": "string",
483
- "format": ""
484
- },
485
- "NgApps.Application.Contexts.Datastore.Entities.FieldMaskRuleDto": {
486
- "type": "object",
487
- "properties": {
488
- "type": {
489
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldMaskType"
490
- },
491
- "visible": {
492
- "type": "integer",
493
- "format": "int32"
494
- },
495
- "visibleEnd": {
496
- "type": "integer",
497
- "format": "int32"
498
- },
499
- "char": {
500
- "type": "string",
501
- "nullable": true
502
- },
503
- "pattern": {
504
- "type": "string",
505
- "nullable": true
506
- }
507
- },
508
- "additionalProperties": false
509
- },
510
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldNormalization": {
511
- "enum": [
512
- "none",
513
- "digits",
514
- "lower",
515
- "trim"
516
- ],
517
- "type": "string",
518
- "format": ""
519
- },
520
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldDerivationType": {
521
- "enum": [
522
- "slice",
523
- "regex",
524
- "domain"
525
- ],
526
- "type": "string",
527
- "format": ""
528
- },
529
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldMaskType": {
530
- "enum": [
531
- "last-n",
532
- "first-n",
533
- "first-last",
534
- "email",
535
- "phone",
536
- "full",
537
- "pattern",
538
- "first-n-last-n"
539
- ],
540
- "type": "string",
541
- "format": ""
542
424
  }
543
425
  }
544
426
  }
@@ -69,13 +69,6 @@
69
69
  "format": "uuid",
70
70
  "nullable": true
71
71
  },
72
- "systemOperation": {
73
- "type": "string",
74
- "nullable": true
75
- },
76
- "connectDataDefinition": {
77
- "nullable": true
78
- },
79
72
  "returnType": {
80
73
  "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Views.Search.ViewReturnType"
81
74
  },
@@ -114,9 +107,6 @@
114
107
  },
115
108
  "enableExport": {
116
109
  "type": "boolean"
117
- },
118
- "isAnonymous": {
119
- "type": "boolean"
120
110
  }
121
111
  },
122
112
  "additionalProperties": false
@@ -160,9 +150,7 @@
160
150
  "query",
161
151
  "table",
162
152
  "workflow",
163
- "view",
164
- "system",
165
- "connect-data"
153
+ "view"
166
154
  ],
167
155
  "type": "string",
168
156
  "format": ""
@@ -41,10 +41,6 @@
41
41
  },
42
42
  "outputType": {
43
43
  "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Queries.QueryOutputType"
44
- },
45
- "isUnrestricted": {
46
- "type": "boolean",
47
- "nullable": true
48
44
  }
49
45
  },
50
46
  "additionalProperties": false
@@ -73,9 +73,6 @@
73
73
  },
74
74
  "automation": {
75
75
  "$ref": "#/components/schemas/NgApps.Application.Contexts.Flow.Workflows.AutomationDto"
76
- },
77
- "runAs": {
78
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Flow.Workflows.StepRunAs"
79
76
  }
80
77
  },
81
78
  "additionalProperties": false
@@ -204,15 +201,6 @@
204
201
  },
205
202
  "additionalProperties": false
206
203
  },
207
- "NgApps.Domain.Contexts.Flow.Workflows.StepRunAs": {
208
- "enum": [
209
- "inherit",
210
- "system",
211
- "triggering-user"
212
- ],
213
- "type": "string",
214
- "format": ""
215
- },
216
204
  "NgApps.Domain.Contexts.Flow.Workflows.StepType": {
217
205
  "enum": [
218
206
  "start",
@@ -232,8 +220,7 @@
232
220
  "convert",
233
221
  "revert",
234
222
  "set-user",
235
- "microfunction",
236
- "process"
223
+ "microfunction"
237
224
  ],
238
225
  "type": "string",
239
226
  "format": ""
@@ -338,17 +325,6 @@
338
325
  "format": "uuid",
339
326
  "nullable": true
340
327
  },
341
- "runAs": {
342
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Flow.Workflows.StepRunAs"
343
- },
344
- "processSlug": {
345
- "type": "string",
346
- "nullable": true
347
- },
348
- "processOperation": {
349
- "type": "string",
350
- "nullable": true
351
- },
352
328
  "queryId": {
353
329
  "type": "string",
354
330
  "format": "uuid",
@@ -1299,17 +1275,6 @@
1299
1275
  "nullable": true
1300
1276
  },
1301
1277
  "nullable": true
1302
- },
1303
- "protection": {
1304
- "$ref": "#/components/schemas/NgApps.Application.Contexts.Datastore.Entities.FieldProtectionDto"
1305
- },
1306
- "derivedFromFieldId": {
1307
- "type": "string",
1308
- "format": "uuid",
1309
- "nullable": true
1310
- },
1311
- "derivationRule": {
1312
- "$ref": "#/components/schemas/NgApps.Application.Contexts.Datastore.Entities.FieldDerivationRuleDto"
1313
1278
  }
1314
1279
  },
1315
1280
  "additionalProperties": false
@@ -1578,45 +1543,6 @@
1578
1543
  },
1579
1544
  "additionalProperties": false
1580
1545
  },
1581
- "NgApps.Application.Contexts.Datastore.Entities.FieldProtectionDto": {
1582
- "type": "object",
1583
- "properties": {
1584
- "mode": {
1585
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldProtectionMode"
1586
- },
1587
- "mask": {
1588
- "$ref": "#/components/schemas/NgApps.Application.Contexts.Datastore.Entities.FieldMaskRuleDto"
1589
- },
1590
- "exactSearch": {
1591
- "type": "boolean"
1592
- },
1593
- "normalize": {
1594
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldNormalization"
1595
- }
1596
- },
1597
- "additionalProperties": false
1598
- },
1599
- "NgApps.Application.Contexts.Datastore.Entities.FieldDerivationRuleDto": {
1600
- "type": "object",
1601
- "properties": {
1602
- "type": {
1603
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldDerivationType"
1604
- },
1605
- "start": {
1606
- "type": "integer",
1607
- "format": "int32"
1608
- },
1609
- "length": {
1610
- "type": "integer",
1611
- "format": "int32"
1612
- },
1613
- "pattern": {
1614
- "type": "string",
1615
- "nullable": true
1616
- }
1617
- },
1618
- "additionalProperties": false
1619
- },
1620
1546
  "NgApps.Domain.Contexts.Datastore.Entities.AutoPages.AutoPageFormModel": {
1621
1547
  "type": "object",
1622
1548
  "properties": {
@@ -1682,60 +1608,6 @@
1682
1608
  "type": "string",
1683
1609
  "format": ""
1684
1610
  },
1685
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldProtectionMode": {
1686
- "enum": [
1687
- "none",
1688
- "masked",
1689
- "encrypted",
1690
- "masked-encrypted"
1691
- ],
1692
- "type": "string",
1693
- "format": ""
1694
- },
1695
- "NgApps.Application.Contexts.Datastore.Entities.FieldMaskRuleDto": {
1696
- "type": "object",
1697
- "properties": {
1698
- "type": {
1699
- "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldMaskType"
1700
- },
1701
- "visible": {
1702
- "type": "integer",
1703
- "format": "int32"
1704
- },
1705
- "visibleEnd": {
1706
- "type": "integer",
1707
- "format": "int32"
1708
- },
1709
- "char": {
1710
- "type": "string",
1711
- "nullable": true
1712
- },
1713
- "pattern": {
1714
- "type": "string",
1715
- "nullable": true
1716
- }
1717
- },
1718
- "additionalProperties": false
1719
- },
1720
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldNormalization": {
1721
- "enum": [
1722
- "none",
1723
- "digits",
1724
- "lower",
1725
- "trim"
1726
- ],
1727
- "type": "string",
1728
- "format": ""
1729
- },
1730
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldDerivationType": {
1731
- "enum": [
1732
- "slice",
1733
- "regex",
1734
- "domain"
1735
- ],
1736
- "type": "string",
1737
- "format": ""
1738
- },
1739
1611
  "NgApps.Domain.Contexts.Datastore.Entities.AutoPages.AutoPageFormType": {
1740
1612
  "enum": [
1741
1613
  "form",
@@ -1891,20 +1763,6 @@
1891
1763
  },
1892
1764
  "additionalProperties": false
1893
1765
  },
1894
- "NgApps.Domain.Contexts.Datastore.Entities.Protection.FieldMaskType": {
1895
- "enum": [
1896
- "last-n",
1897
- "first-n",
1898
- "first-last",
1899
- "email",
1900
- "phone",
1901
- "full",
1902
- "pattern",
1903
- "first-n-last-n"
1904
- ],
1905
- "type": "string",
1906
- "format": ""
1907
- },
1908
1766
  "NgApps.Domain.Contexts.Datastore.Entities.AutoPages.EntityPageSettingFieldValidation": {
1909
1767
  "type": "object",
1910
1768
  "properties": {
@@ -82,12 +82,7 @@
82
82
  "enum": [
83
83
  "import",
84
84
  "export",
85
- "undo",
86
- "owner-fields",
87
- "protection-apply",
88
- "protection-remove",
89
- "protection-rotate",
90
- "derived-fill"
85
+ "undo"
91
86
  ],
92
87
  "type": "string",
93
88
  "format": ""
@@ -249,27 +249,7 @@
249
249
  "global-function",
250
250
  "view",
251
251
  "enum-values",
252
- "translation",
253
- "organization-schema",
254
- "organization-unit",
255
- "organization-position",
256
- "access-policy",
257
- "process-definition",
258
- "process-instance",
259
- "process-task",
260
- "decision",
261
- "case-definition",
262
- "business-calendar",
263
- "process-webhook-subscription",
264
- "process-batch-operation",
265
- "process-delegation",
266
- "process-handover",
267
- "process-notification",
268
- "assignment-pool",
269
- "authority-limit",
270
- "case-instance",
271
- "partner-relationship",
272
- "connector-credential"
252
+ "translation"
273
253
  ],
274
254
  "type": "string",
275
255
  "format": ""
@@ -107,7 +107,7 @@
107
107
  "roles": {
108
108
  "type": "array",
109
109
  "items": {
110
- "$ref": "#/components/schemas/NgApps.Infrastructure.Models.IdNamePair`1[[System.Guid, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
110
+ "$ref": "#/components/schemas/NgApps.Infrastructure.Models.IdNamePair`1[[System.Guid, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
111
111
  },
112
112
  "nullable": true
113
113
  },
@@ -141,9 +141,6 @@
141
141
  "enableExport": {
142
142
  "type": "boolean"
143
143
  },
144
- "isAnonymous": {
145
- "type": "boolean"
146
- },
147
144
  "viewId": {
148
145
  "type": "string",
149
146
  "format": "uuid",
@@ -153,13 +150,6 @@
153
150
  "type": "string",
154
151
  "nullable": true
155
152
  },
156
- "systemOperation": {
157
- "type": "string",
158
- "nullable": true
159
- },
160
- "connectDataDefinition": {
161
- "nullable": true
162
- },
163
153
  "returnType": {
164
154
  "$ref": "#/components/schemas/NgApps.Domain.Contexts.Datastore.Views.Search.ViewReturnType"
165
155
  },
@@ -247,9 +237,7 @@
247
237
  "query",
248
238
  "table",
249
239
  "workflow",
250
- "view",
251
- "system",
252
- "connect-data"
240
+ "view"
253
241
  ],
254
242
  "type": "string",
255
243
  "format": ""
@@ -410,7 +398,7 @@
410
398
  },
411
399
  "additionalProperties": false
412
400
  },
413
- "NgApps.Infrastructure.Models.IdNamePair`1[[System.Guid, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
401
+ "NgApps.Infrastructure.Models.IdNamePair`1[[System.Guid, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]": {
414
402
  "type": "object",
415
403
  "properties": {
416
404
  "id": {