@appaflytech/zeyrek-ai-mcp 0.0.1

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 (88) hide show
  1. package/.env.example +46 -0
  2. package/README.md +260 -0
  3. package/dist/config.js +128 -0
  4. package/dist/index.js +88 -0
  5. package/dist/knowledge/componentCatalog.js +438 -0
  6. package/dist/knowledge/componentEvents.js +164 -0
  7. package/dist/knowledge/coverage.js +60 -0
  8. package/dist/knowledge/normalize.js +1309 -0
  9. package/dist/knowledge/outlines.js +167 -0
  10. package/dist/knowledge/policy.js +44 -0
  11. package/dist/knowledge/reservedTables.js +75 -0
  12. package/dist/knowledge/rules.js +1725 -0
  13. package/dist/observability/trace.js +337 -0
  14. package/dist/platform/errors.js +132 -0
  15. package/dist/platform/http.js +169 -0
  16. package/dist/platform/responses.js +94 -0
  17. package/dist/platform/token.js +79 -0
  18. package/dist/resources/examples/entity-pair-m2m.json +105 -0
  19. package/dist/resources/examples/flow-list-to-form.json +65 -0
  20. package/dist/resources/examples/flow-load-table.json +178 -0
  21. package/dist/resources/examples/microservice-table-list.json +49 -0
  22. package/dist/resources/examples/middleware-authenticate.json +194 -0
  23. package/dist/resources/examples/page-detail-profile.json +95 -0
  24. package/dist/resources/examples/page-dynamic-form.json +221 -0
  25. package/dist/resources/examples/page-form-upsert.json +279 -0
  26. package/dist/resources/examples/page-html-embed.json +106 -0
  27. package/dist/resources/examples/page-sign-in.json +194 -0
  28. package/dist/resources/examples/workflow-basic.json +94 -0
  29. package/dist/resources/guides/component.md +108 -0
  30. package/dist/resources/guides/entity.md +348 -0
  31. package/dist/resources/guides/expressions.md +139 -0
  32. package/dist/resources/guides/getting-started.md +109 -0
  33. package/dist/resources/guides/html.md +106 -0
  34. package/dist/resources/guides/microservice.md +313 -0
  35. package/dist/resources/guides/middleware.md +271 -0
  36. package/dist/resources/guides/modify-existing.md +35 -0
  37. package/dist/resources/guides/page.md +1574 -0
  38. package/dist/resources/guides/view.md +89 -0
  39. package/dist/resources/guides/workflow.md +359 -0
  40. package/dist/resources/knowledge.js +44 -0
  41. package/dist/resources/schemas/CreateDatasourceCommand.json +54 -0
  42. package/dist/resources/schemas/CreateDiscoveredEntitiesCommand.json +133 -0
  43. package/dist/resources/schemas/CreateEntityCommand.json +387 -0
  44. package/dist/resources/schemas/CreateMicroserviceCommand.json +528 -0
  45. package/dist/resources/schemas/CreateQueryCommand.json +43 -0
  46. package/dist/resources/schemas/CreateViewCommand.json +158 -0
  47. package/dist/resources/schemas/CreateWorkflowCommand.json +1719 -0
  48. package/dist/resources/schemas/Filter.json +124 -0
  49. package/dist/resources/schemas/GetRowsQuery.json +122 -0
  50. package/dist/resources/schemas/PreviewMicroserviceCommand.json +565 -0
  51. package/dist/resources/schemas/PreviewQueryCommand.json +74 -0
  52. package/dist/resources/schemas/PreviewWorkflowCommand.json +981 -0
  53. package/dist/resources/schemas/StepDto.json +900 -0
  54. package/dist/resources/schemas/UpdateDatasourceCommand.json +58 -0
  55. package/dist/resources/schemas/UpdateEntityCommand.json +679 -0
  56. package/dist/resources/schemas/UpdateMicroserviceCommand.json +512 -0
  57. package/dist/resources/schemas/UpdateQueryCommand.json +86 -0
  58. package/dist/resources/schemas/UpdateViewCommand.json +153 -0
  59. package/dist/resources/schemas/UpdateWorkflowCommand.json +1719 -0
  60. package/dist/resources/schemas.js +40 -0
  61. package/dist/server.js +63 -0
  62. package/dist/tools/access.js +27 -0
  63. package/dist/tools/applications.js +59 -0
  64. package/dist/tools/automations.js +103 -0
  65. package/dist/tools/common.js +18 -0
  66. package/dist/tools/components.js +280 -0
  67. package/dist/tools/datasources.js +82 -0
  68. package/dist/tools/dependencies.js +17 -0
  69. package/dist/tools/deployments.js +17 -0
  70. package/dist/tools/dtos.js +54 -0
  71. package/dist/tools/entities.js +166 -0
  72. package/dist/tools/files.js +138 -0
  73. package/dist/tools/flows.js +226 -0
  74. package/dist/tools/folders.js +51 -0
  75. package/dist/tools/layouts.js +105 -0
  76. package/dist/tools/microservices.js +198 -0
  77. package/dist/tools/organizations.js +65 -0
  78. package/dist/tools/pages.js +597 -0
  79. package/dist/tools/platformInfo.js +44 -0
  80. package/dist/tools/projects.js +152 -0
  81. package/dist/tools/queries.js +48 -0
  82. package/dist/tools/rows.js +115 -0
  83. package/dist/tools/screens.js +97 -0
  84. package/dist/tools/templates.js +65 -0
  85. package/dist/tools/variables.js +94 -0
  86. package/dist/tools/views.js +58 -0
  87. package/dist/tools/workflows.js +196 -0
  88. package/package.json +49 -0
@@ -0,0 +1,60 @@
1
+ function asObjects(value) {
2
+ return (Array.isArray(value) ? value : []).filter((entry) => Boolean(entry) && typeof entry === 'object');
3
+ }
4
+ const FORM_TYPES = new Set(['form']);
5
+ const WRITE_METHODS = new Set(['post', 'put', 'patch']);
6
+ const SIGN_IN_PATTERN = /giri[sş]|login|sign-?in|oturum/i;
7
+ /**
8
+ * FORM-001 — `form` komponenti eklendi ama `submit` olayı bağlanmadı: kullanıcı formu doldurur,
9
+ * "Kaydet" hiçbir şey yapmaz. Kontrol plan-yereldir (aynı patch çağrısı); bağlamayı sonraki
10
+ * çağrıya bıraktıysanız uyarı yok sayılır — bu yüzden block değil warn.
11
+ */
12
+ export function formBindingWarnings(ops) {
13
+ const operations = asObjects(ops);
14
+ const boundForms = new Set(operations
15
+ .filter(op => op.op === 'set_event' && String(op.event ?? '') === 'submit')
16
+ .map(op => String(op.target ?? '')));
17
+ return operations
18
+ .filter(op => op.op === 'add_component' && FORM_TYPES.has(String(op.component?.type ?? '')))
19
+ .map(op => String(op.component?.elementId ?? '?'))
20
+ .filter(elementId => !boundForms.has(elementId))
21
+ .map(elementId => `FORM-001: '${elementId}' formuna 'submit' olayı bağlanmadı — form kendi başına kayıt YAPMAZ, gönderimi bir flow yürütür. flow_create ile submit akışını kurup set_event { target: '${elementId}', event: 'submit', eventValue: <flow id> } ile bağlayın (örnek: ngapps://examples/page-form-upsert). Bağlamayı sonraki patch'e bıraktıysanız bu uyarıyı yok sayın.`);
22
+ }
23
+ /**
24
+ * FORM-002 — akıştaki yazma ucu (post/put/patch) hiç `source:'body'` parametresi taşımıyor:
25
+ * istek gider, gövde boş olduğu için kayıt ya boş yazılır ya doğrulamadan döner. Form alanları uca
26
+ * `{type:'property', ref:{source:'component', element, property:'value'}}` ile geçirilir.
27
+ */
28
+ export function flowBodyWarnings(steps) {
29
+ return asObjects(steps)
30
+ .filter(step => String(step.type ?? '') === 'microservice')
31
+ .filter(step => {
32
+ const args = (step.args ?? {});
33
+ if (!WRITE_METHODS.has(String(args.httpMethod ?? '').toLowerCase()))
34
+ return false;
35
+ return !asObjects(args.parameters).some(parameter => String(parameter.source ?? '') === 'body');
36
+ })
37
+ .map(step => `FORM-002: '${String(step.name ?? step.stepId ?? '?')}' adımı yazma ucu çağırıyor (${String((step.args ?? {}).httpMethod ?? '?').toUpperCase()}) ama hiç source:'body' parametresi yok — gövde boş gider. Form alanlarını { name, source:'body', value:{ type:'property', ref:{ source:'component', element:'<elementId>', property:'value' } } } ile geçirin (örnek: ngapps://examples/page-form-upsert).`);
38
+ }
39
+ /**
40
+ * MW-002 / PAGE-007 — proje düzeyi tutarlılık. Kimlik middleware'i olan bir projede giriş sayfası
41
+ * yoksa sistem kullanılamaz (kullanıcı token üretemez); yazma ucu olan bir projede sayfa sayısı
42
+ * sıfırsa CRUD uçları yönetim ekranı olmadan kalmıştır. İkisi de 17'deki etkinlik turunda gerçekleşti.
43
+ *
44
+ * Giriş sayfası tespiti ADA/SLUG'a bakan bir sezgidir — farklı adlandırmada yanlış negatif verir,
45
+ * bu yüzden mesajda söylenir. Uç bazlı koruma denetimi (MW-001) buraya girmez: her ucun
46
+ * `middlewareIds`'i yalnız detay gövdesinde döner, N ek istek gerektirir.
47
+ */
48
+ export function projectCoverageGaps(input) {
49
+ const gaps = [];
50
+ const middlewares = input.workflows.filter(workflow => String(workflow.type ?? '').toLowerCase() === 'middleware');
51
+ const writeEndpoints = input.microservices.filter(microservice => WRITE_METHODS.has(String(microservice.httpMethod ?? '').toLowerCase()));
52
+ const hasSignInPage = input.pages.some(page => SIGN_IN_PATTERN.test(`${String(page.name ?? '')} ${String(page.slug ?? '')}`));
53
+ if (middlewares.length > 0 && !hasSignInPage) {
54
+ gaps.push(`MW-002: ${middlewares.length} middleware var (${middlewares.map(entry => String(entry.name ?? entry.slug ?? '?')).join(', ')}) ama sayfa listesinde giriş sayfası görünmüyor — kimlik kuran bir projede kullanıcı token üretemezse sistem kullanılamaz. Giriş sayfası tarifi: ngapps://examples/page-sign-in. (Tespit sayfa adına bakar; giriş sayfanız başka adla varsa yok sayın.)`);
55
+ }
56
+ if (writeEndpoints.length > 0 && input.pages.length === 0) {
57
+ gaps.push(`PAGE-007: ${writeEndpoints.length} yazma ucu var ama hiç sayfa yok — CRUD uçları yönetim ekranı olmadan kalmış. Her kaydın liste + form sayfası çifti olur: platform_guide('page') Kural 7, ngapps://examples/page-form-upsert.`);
58
+ }
59
+ return gaps;
60
+ }