@appaflytech/wappa-mcp 0.0.10 → 0.0.12

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 (149) hide show
  1. package/README.md +40 -0
  2. package/dist/auth.d.ts +25 -0
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +35 -0
  5. package/dist/auth.js.map +1 -1
  6. package/dist/client.d.ts +39 -2
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +159 -6
  9. package/dist/client.js.map +1 -1
  10. package/dist/factory.d.ts +32 -0
  11. package/dist/factory.d.ts.map +1 -0
  12. package/dist/factory.js +286 -0
  13. package/dist/factory.js.map +1 -0
  14. package/dist/http/auth.d.ts +33 -0
  15. package/dist/http/auth.d.ts.map +1 -0
  16. package/dist/http/auth.js +55 -0
  17. package/dist/http/auth.js.map +1 -0
  18. package/dist/http/session.d.ts +30 -0
  19. package/dist/http/session.d.ts.map +1 -0
  20. package/dist/http/session.js +56 -0
  21. package/dist/http/session.js.map +1 -0
  22. package/dist/http/transport.d.ts +21 -0
  23. package/dist/http/transport.d.ts.map +1 -0
  24. package/dist/http/transport.js +101 -0
  25. package/dist/http/transport.js.map +1 -0
  26. package/dist/index.d.ts +5 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +26 -262
  29. package/dist/index.js.map +1 -1
  30. package/dist/server.d.ts +25 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +94 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/tools/ai-chat-sessions.d.ts +143 -0
  35. package/dist/tools/ai-chat-sessions.d.ts.map +1 -0
  36. package/dist/tools/ai-chat-sessions.js +144 -0
  37. package/dist/tools/ai-chat-sessions.js.map +1 -0
  38. package/dist/tools/app-users.d.ts +440 -0
  39. package/dist/tools/app-users.d.ts.map +1 -0
  40. package/dist/tools/app-users.js +347 -0
  41. package/dist/tools/app-users.js.map +1 -0
  42. package/dist/tools/component-categories.d.ts +157 -0
  43. package/dist/tools/component-categories.d.ts.map +1 -0
  44. package/dist/tools/component-categories.js +162 -0
  45. package/dist/tools/component-categories.js.map +1 -0
  46. package/dist/tools/countries.d.ts +148 -0
  47. package/dist/tools/countries.d.ts.map +1 -0
  48. package/dist/tools/countries.js +142 -0
  49. package/dist/tools/countries.js.map +1 -0
  50. package/dist/tools/db-routines.d.ts +229 -0
  51. package/dist/tools/db-routines.d.ts.map +1 -0
  52. package/dist/tools/db-routines.js +233 -0
  53. package/dist/tools/db-routines.js.map +1 -0
  54. package/dist/tools/dynamic-entities.d.ts +166 -0
  55. package/dist/tools/dynamic-entities.d.ts.map +1 -1
  56. package/dist/tools/dynamic-entities.js +156 -0
  57. package/dist/tools/dynamic-entities.js.map +1 -1
  58. package/dist/tools/entities.d.ts +119 -0
  59. package/dist/tools/entities.d.ts.map +1 -1
  60. package/dist/tools/entities.js +413 -4
  61. package/dist/tools/entities.js.map +1 -1
  62. package/dist/tools/error-logs.d.ts +67 -0
  63. package/dist/tools/error-logs.d.ts.map +1 -0
  64. package/dist/tools/error-logs.js +74 -0
  65. package/dist/tools/error-logs.js.map +1 -0
  66. package/dist/tools/general.d.ts.map +1 -1
  67. package/dist/tools/general.js +218 -0
  68. package/dist/tools/general.js.map +1 -1
  69. package/dist/tools/layouts.d.ts +21 -0
  70. package/dist/tools/layouts.d.ts.map +1 -1
  71. package/dist/tools/layouts.js +20 -2
  72. package/dist/tools/layouts.js.map +1 -1
  73. package/dist/tools/operations.d.ts +184 -0
  74. package/dist/tools/operations.d.ts.map +1 -0
  75. package/dist/tools/operations.js +217 -0
  76. package/dist/tools/operations.js.map +1 -0
  77. package/dist/tools/organizations.d.ts +178 -0
  78. package/dist/tools/organizations.d.ts.map +1 -0
  79. package/dist/tools/organizations.js +158 -0
  80. package/dist/tools/organizations.js.map +1 -0
  81. package/dist/tools/page-entities.d.ts +522 -0
  82. package/dist/tools/page-entities.d.ts.map +1 -0
  83. package/dist/tools/page-entities.js +535 -0
  84. package/dist/tools/page-entities.js.map +1 -0
  85. package/dist/tools/pages.d.ts +226 -0
  86. package/dist/tools/pages.d.ts.map +1 -1
  87. package/dist/tools/pages.js +473 -17
  88. package/dist/tools/pages.js.map +1 -1
  89. package/dist/tools/plans.d.ts +293 -0
  90. package/dist/tools/plans.d.ts.map +1 -0
  91. package/dist/tools/plans.js +213 -0
  92. package/dist/tools/plans.js.map +1 -0
  93. package/dist/tools/plugins.d.ts +230 -0
  94. package/dist/tools/plugins.d.ts.map +1 -0
  95. package/dist/tools/plugins.js +218 -0
  96. package/dist/tools/plugins.js.map +1 -0
  97. package/dist/tools/push-notifications.d.ts +261 -0
  98. package/dist/tools/push-notifications.d.ts.map +1 -0
  99. package/dist/tools/push-notifications.js +246 -0
  100. package/dist/tools/push-notifications.js.map +1 -0
  101. package/dist/tools/queries.d.ts +274 -0
  102. package/dist/tools/queries.d.ts.map +1 -1
  103. package/dist/tools/queries.js +319 -17
  104. package/dist/tools/queries.js.map +1 -1
  105. package/dist/tools/query-categories.d.ts +192 -0
  106. package/dist/tools/query-categories.d.ts.map +1 -0
  107. package/dist/tools/query-categories.js +204 -0
  108. package/dist/tools/query-categories.js.map +1 -0
  109. package/dist/tools/regions.d.ts +148 -0
  110. package/dist/tools/regions.d.ts.map +1 -0
  111. package/dist/tools/regions.js +148 -0
  112. package/dist/tools/regions.js.map +1 -0
  113. package/dist/tools/roles.d.ts +284 -0
  114. package/dist/tools/roles.d.ts.map +1 -0
  115. package/dist/tools/roles.js +291 -0
  116. package/dist/tools/roles.js.map +1 -0
  117. package/dist/tools/settings.d.ts +160 -0
  118. package/dist/tools/settings.d.ts.map +1 -0
  119. package/dist/tools/settings.js +187 -0
  120. package/dist/tools/settings.js.map +1 -0
  121. package/dist/tools/showcases.d.ts +184 -0
  122. package/dist/tools/showcases.d.ts.map +1 -0
  123. package/dist/tools/showcases.js +179 -0
  124. package/dist/tools/showcases.js.map +1 -0
  125. package/dist/tools/storage.d.ts +297 -0
  126. package/dist/tools/storage.d.ts.map +1 -0
  127. package/dist/tools/storage.js +302 -0
  128. package/dist/tools/storage.js.map +1 -0
  129. package/dist/tools/subscriptions.d.ts +166 -0
  130. package/dist/tools/subscriptions.d.ts.map +1 -0
  131. package/dist/tools/subscriptions.js +144 -0
  132. package/dist/tools/subscriptions.js.map +1 -0
  133. package/dist/tools/system-tools.d.ts +124 -0
  134. package/dist/tools/system-tools.d.ts.map +1 -0
  135. package/dist/tools/system-tools.js +147 -0
  136. package/dist/tools/system-tools.js.map +1 -0
  137. package/dist/tools/system-variables.d.ts +167 -0
  138. package/dist/tools/system-variables.d.ts.map +1 -0
  139. package/dist/tools/system-variables.js +176 -0
  140. package/dist/tools/system-variables.js.map +1 -0
  141. package/dist/tools/users.d.ts +266 -0
  142. package/dist/tools/users.d.ts.map +1 -0
  143. package/dist/tools/users.js +235 -0
  144. package/dist/tools/users.js.map +1 -0
  145. package/dist/tools/workflows.d.ts +278 -0
  146. package/dist/tools/workflows.d.ts.map +1 -0
  147. package/dist/tools/workflows.js +267 -0
  148. package/dist/tools/workflows.js.map +1 -0
  149. package/package.json +12 -3
@@ -0,0 +1,217 @@
1
+ /**
2
+ * MCP Tools for WAP Operations
3
+ * Operations = sistem-seviyesi bakım/karşılaştırma işlemleri:
4
+ * cache temizleme, bağımlılık analizi, kayıt sayımı, lokalizasyon kontrolü,
5
+ * dosya ilişki modelleri, versiyon karşılaştırma ve site kurulum seçenekleri.
6
+ *
7
+ * NOTE: excel-import / excel-export / excel-import-check / excel-import-validate
8
+ * endpoint'leri multipart FormData (dosya yükleme) veya binary (arraybuffer)
9
+ * yanıt döndürdüğü için ATLANMIŞTIR.
10
+ */
11
+ export function getOperationTools(client) {
12
+ return {
13
+ // ─── Cache Clear ───────────────────────────────────────
14
+ cache_clear: {
15
+ description: "Sunucu tarafındaki tüm önbelleği (cache) temizler. POST /{site}/Operations/cache-clear. Yanıt gövdesi yoktur (204).",
16
+ inputSchema: {
17
+ type: "object",
18
+ properties: {},
19
+ },
20
+ handler: async () => {
21
+ const result = await client.request("POST", "/{site}/Operations/cache-clear");
22
+ return {
23
+ content: [
24
+ { type: "text", text: JSON.stringify(result, null, 2) },
25
+ ],
26
+ };
27
+ },
28
+ },
29
+ // ─── Dependencies ──────────────────────────────────────
30
+ operation_dependencies: {
31
+ description: "Belirli bir kaydın (modül + id) bağımlılıklarını analiz eder; bu kaydı kullanan diğer kayıtları (yetkili/yetkisiz) listeler. Silme öncesi etki analizi için kullanılır. POST /{site}/Operations/dependencies.",
32
+ inputSchema: {
33
+ type: "object",
34
+ properties: {
35
+ module: {
36
+ type: "string",
37
+ description: 'Bağımlılığı analiz edilecek modül adı (örn: "page", "component", "entity", "layout", "query").',
38
+ },
39
+ id: {
40
+ type: "string",
41
+ description: "Bağımlılıkları sorgulanacak kaydın ID (GUID) değeri.",
42
+ },
43
+ },
44
+ required: ["module", "id"],
45
+ },
46
+ handler: async (args) => {
47
+ const result = await client.request("POST", "/{site}/Operations/dependencies", { module: args.module, id: args.id });
48
+ return {
49
+ content: [
50
+ { type: "text", text: JSON.stringify(result, null, 2) },
51
+ ],
52
+ };
53
+ },
54
+ },
55
+ // ─── Record Count ──────────────────────────────────────
56
+ operation_record_count: {
57
+ description: "Site genelindeki temel modüllerin (component, entity, layout, page, query, site, themesetting) kayıt sayılarını döndürür. GET /{site}/Operations/record-count.",
58
+ inputSchema: {
59
+ type: "object",
60
+ properties: {},
61
+ },
62
+ handler: async () => {
63
+ const result = await client.request("GET", "/{site}/Operations/record-count");
64
+ return {
65
+ content: [
66
+ { type: "text", text: JSON.stringify(result, null, 2) },
67
+ ],
68
+ };
69
+ },
70
+ },
71
+ // ─── Check Localization ────────────────────────────────
72
+ check_localization: {
73
+ description: "Belirli bir kaydın aktif dilde lokalizasyonunun (çevirisinin) mevcut olup olmadığını kontrol eder; true/false döndürür. GET /{site}/Operations/check-localization.",
74
+ inputSchema: {
75
+ type: "object",
76
+ properties: {
77
+ id: {
78
+ type: "string",
79
+ description: "Lokalizasyonu kontrol edilecek kaydın ID (GUID).",
80
+ },
81
+ module: {
82
+ type: "string",
83
+ description: 'Kaydın ait olduğu modül adı (örn: "page", "component", "dynamicentity").',
84
+ },
85
+ entityId: {
86
+ type: "string",
87
+ description: "Dinamik entity kayıtları için entity tanımının ID (GUID). Opsiyonel.",
88
+ },
89
+ },
90
+ required: ["id", "module"],
91
+ },
92
+ handler: async (args) => {
93
+ const params = {};
94
+ params.id = args.id;
95
+ params.module = args.module;
96
+ if (args.entityId)
97
+ params.entityId = args.entityId;
98
+ const result = await client.request("GET", "/{site}/Operations/check-localization", undefined, params);
99
+ return {
100
+ content: [
101
+ { type: "text", text: JSON.stringify(result, null, 2) },
102
+ ],
103
+ };
104
+ },
105
+ },
106
+ // ─── File Related Models ───────────────────────────────
107
+ operation_file_related_models: {
108
+ description: "Belirli bir dosyanın hangi kayıtlarda (pageEntities, layouts, pages, dynamicEntities) kullanıldığını/ilişkili olduğunu listeler. GET /{site}/Operations/{id}/file-related-models.",
109
+ inputSchema: {
110
+ type: "object",
111
+ properties: {
112
+ id: {
113
+ type: "string",
114
+ description: "İlişkileri sorgulanacak dosyanın ID (GUID).",
115
+ },
116
+ },
117
+ required: ["id"],
118
+ },
119
+ handler: async (args) => {
120
+ const result = await client.request("GET", `/{site}/Operations/${args.id}/file-related-models`);
121
+ return {
122
+ content: [
123
+ { type: "text", text: JSON.stringify(result, null, 2) },
124
+ ],
125
+ };
126
+ },
127
+ },
128
+ // ─── Compare ───────────────────────────────────────────
129
+ operation_compare: {
130
+ description: `İki kayıt versiyonunu (örn: bir sayfanın iki farklı sürümünü) karşılaştırır ve önceki/sonraki halini döndürür.
131
+ 'module': Karşılaştırılan modül (örn: "page", "pageentity", "dynamicentity").
132
+ 'elements': Karşılaştırılacak iki öğe; her biri { id (GUID), status (durum) } içerir.
133
+ 'including'/'excluding': Karşılaştırmaya dahil edilecek/edilmeyecek alan adları.
134
+ 'entityId': Dinamik entity karşılaştırması için entity tanım ID'si (opsiyonel).
135
+ POST /{site}/Operations/compare.`,
136
+ inputSchema: {
137
+ type: "object",
138
+ properties: {
139
+ module: {
140
+ type: "string",
141
+ description: 'Karşılaştırılacak modül adı (örn: "page", "pageentity", "dynamicentity").',
142
+ },
143
+ elements: {
144
+ type: "array",
145
+ description: "Karşılaştırılacak öğeler dizisi; her öğe { id: GUID, status: durum } içerir. Genellikle önceki ve sonraki versiyon olmak üzere 2 öğe.",
146
+ },
147
+ including: {
148
+ type: "array",
149
+ description: 'Karşılaştırmaya dahil edilecek alan adları (örn: ["id","title","status","layout","metatags"]). Opsiyonel.',
150
+ },
151
+ excluding: {
152
+ type: "array",
153
+ description: "Karşılaştırma dışında tutulacak alan adları dizisi. Opsiyonel.",
154
+ },
155
+ equalCompareFields: {
156
+ type: "array",
157
+ description: "Eşitlik bazında karşılaştırılacak alan adları dizisi. Opsiyonel.",
158
+ },
159
+ entityId: {
160
+ type: "string",
161
+ description: "Dinamik entity karşılaştırması için entity tanımının ID (GUID). Opsiyonel.",
162
+ },
163
+ },
164
+ required: ["module", "elements"],
165
+ },
166
+ handler: async (args) => {
167
+ const body = {
168
+ module: args.module,
169
+ elements: args.elements,
170
+ };
171
+ if (args.including !== undefined)
172
+ body.including = args.including;
173
+ if (args.excluding !== undefined)
174
+ body.excluding = args.excluding;
175
+ if (args.equalCompareFields !== undefined)
176
+ body.equalCompareFields = args.equalCompareFields;
177
+ if (args.entityId !== undefined)
178
+ body.entityId = args.entityId;
179
+ const result = await client.request("POST", "/{site}/Operations/compare", body);
180
+ return {
181
+ content: [
182
+ { type: "text", text: JSON.stringify(result, null, 2) },
183
+ ],
184
+ };
185
+ },
186
+ },
187
+ // ─── Site Installation Options ─────────────────────────
188
+ operation_site_installation_options: {
189
+ description: "Site kurulumu için kullanılabilir seçenekleri (örn: Ui.API adresleri) döndürür. GET /{site}/Operations/site-installation-options.",
190
+ inputSchema: {
191
+ type: "object",
192
+ properties: {
193
+ data: {
194
+ type: "object",
195
+ description: "İsteğe bağlı query parametreleri (anahtar-değer çiftleri). Genellikle boş bırakılabilir.",
196
+ },
197
+ },
198
+ },
199
+ handler: async (args) => {
200
+ const params = {};
201
+ if (args.data) {
202
+ for (const [k, v] of Object.entries(args.data)) {
203
+ if (v !== undefined && v !== null)
204
+ params[k] = String(v);
205
+ }
206
+ }
207
+ const result = await client.request("GET", "/{site}/Operations/site-installation-options", undefined, params);
208
+ return {
209
+ content: [
210
+ { type: "text", text: JSON.stringify(result, null, 2) },
211
+ ],
212
+ };
213
+ },
214
+ },
215
+ };
216
+ }
217
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/tools/operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,OAAO;QACL,0DAA0D;QAC1D,WAAW,EAAE;YACX,WAAW,EACT,qHAAqH;YACvH,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;aACf;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,MAAM,EACN,gCAAgC,CACjC,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBACjE;iBACF,CAAC;YACJ,CAAC;SACF;QAED,0DAA0D;QAC1D,sBAAsB,EAAE;YACtB,WAAW,EACT,+MAA+M;YACjN,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,gGAAgG;qBACnG;oBACD,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sDAAsD;qBACpE;iBACF;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;aAC3B;YACD,OAAO,EAAE,KAAK,EAAE,IAAoC,EAAE,EAAE;gBACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,MAAM,EACN,iCAAiC,EACjC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CACrC,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBACjE;iBACF,CAAC;YACJ,CAAC;SACF;QAED,0DAA0D;QAC1D,sBAAsB,EAAE;YACtB,WAAW,EACT,gKAAgK;YAClK,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;aACf;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,KAAK,EACL,iCAAiC,CAClC,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBACjE;iBACF,CAAC;YACJ,CAAC;SACF;QAED,0DAA0D;QAC1D,kBAAkB,EAAE;YAClB,WAAW,EACT,oKAAoK;YACtK,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kDAAkD;qBAChE;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,0EAA0E;qBAC7E;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,sEAAsE;qBACzE;iBACF;gBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;aAC3B;YACD,OAAO,EAAE,KAAK,EAAE,IAIf,EAAE,EAAE;gBACH,MAAM,MAAM,GAA2B,EAAE,CAAC;gBAC1C,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC5B,IAAI,IAAI,CAAC,QAAQ;oBAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,KAAK,EACL,uCAAuC,EACvC,SAAS,EACT,MAAM,CACP,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBACjE;iBACF,CAAC;YACJ,CAAC;SACF;QAED,0DAA0D;QAC1D,6BAA6B,EAAE;YAC7B,WAAW,EACT,mLAAmL;YACrL,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,6CAA6C;qBAC3D;iBACF;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB;YACD,OAAO,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE;gBACtC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,KAAK,EACL,sBAAsB,IAAI,CAAC,EAAE,sBAAsB,CACpD,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBACjE;iBACF,CAAC;YACJ,CAAC;SACF;QAED,0DAA0D;QAC1D,iBAAiB,EAAE;YACjB,WAAW,EAAE;;;;;iCAKc;YAC3B,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,2EAA2E;qBAC9E;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,OAAO;wBACb,WAAW,EACT,uIAAuI;qBAC1I;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,OAAO;wBACb,WAAW,EACT,2GAA2G;qBAC9G;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,OAAO;wBACb,WAAW,EACT,gEAAgE;qBACnE;oBACD,kBAAkB,EAAE;wBAClB,IAAI,EAAE,OAAO;wBACb,WAAW,EACT,kEAAkE;qBACrE;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,4EAA4E;qBAC/E;iBACF;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;aACjC;YACD,OAAO,EAAE,KAAK,EAAE,IAOf,EAAE,EAAE;gBACH,MAAM,IAAI,GAA4B;oBACpC,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC;gBACF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;oBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAClE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;oBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAClE,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;oBACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACpD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;oBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,MAAM,EACN,4BAA4B,EAC5B,IAAI,CACL,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBACjE;iBACF,CAAC;YACJ,CAAC;SACF;QAED,0DAA0D;QAC1D,mCAAmC,EAAE;YACnC,WAAW,EACT,mIAAmI;YACrI,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,0FAA0F;qBAC7F;iBACF;aACF;YACD,OAAO,EAAE,KAAK,EAAE,IAAwC,EAAE,EAAE;gBAC1D,MAAM,MAAM,GAA2B,EAAE,CAAC;gBAC1C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;4BAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,KAAK,EACL,8CAA8C,EAC9C,SAAS,EACT,MAAM,CACP,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBACjE;iBACF,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * MCP Tools for WAPPA SaaS Organization CRUD operations
3
+ *
4
+ * Organizations are the top-level SaaS tenants. Plans and Subscriptions
5
+ * are scoped under an organization (organizationId).
6
+ */
7
+ import { WapClient } from "../client.js";
8
+ export declare function getOrganizationTools(client: WapClient): {
9
+ list_organizations: {
10
+ description: string;
11
+ inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ key: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ name: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ description: {
23
+ type: string;
24
+ description: string;
25
+ };
26
+ pageIndex: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ pageLength: {
31
+ type: string;
32
+ description: string;
33
+ };
34
+ };
35
+ };
36
+ handler: (args: {
37
+ key?: string;
38
+ name?: string;
39
+ description?: string;
40
+ pageIndex?: number;
41
+ pageLength?: number;
42
+ }) => Promise<{
43
+ content: {
44
+ type: "text";
45
+ text: string;
46
+ }[];
47
+ }>;
48
+ };
49
+ get_organization: {
50
+ description: string;
51
+ inputSchema: {
52
+ type: "object";
53
+ properties: {
54
+ id: {
55
+ type: string;
56
+ description: string;
57
+ };
58
+ };
59
+ required: string[];
60
+ };
61
+ handler: (args: {
62
+ id: string;
63
+ }) => Promise<{
64
+ content: {
65
+ type: "text";
66
+ text: string;
67
+ }[];
68
+ }>;
69
+ };
70
+ create_organization: {
71
+ description: string;
72
+ inputSchema: {
73
+ type: "object";
74
+ properties: {
75
+ id: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ key: {
80
+ type: string;
81
+ description: string;
82
+ };
83
+ name: {
84
+ type: string;
85
+ description: string;
86
+ };
87
+ description: {
88
+ type: string;
89
+ description: string;
90
+ };
91
+ syncEndpoint: {
92
+ type: string;
93
+ description: string;
94
+ };
95
+ origin: {
96
+ type: string;
97
+ description: string;
98
+ };
99
+ enableSync: {
100
+ type: string;
101
+ description: string;
102
+ };
103
+ };
104
+ required: string[];
105
+ };
106
+ handler: (args: Record<string, unknown>) => Promise<{
107
+ content: {
108
+ type: "text";
109
+ text: string;
110
+ }[];
111
+ }>;
112
+ };
113
+ update_organization: {
114
+ description: string;
115
+ inputSchema: {
116
+ type: "object";
117
+ properties: {
118
+ id: {
119
+ type: string;
120
+ description: string;
121
+ };
122
+ key: {
123
+ type: string;
124
+ description: string;
125
+ };
126
+ name: {
127
+ type: string;
128
+ description: string;
129
+ };
130
+ description: {
131
+ type: string;
132
+ description: string;
133
+ };
134
+ syncEndpoint: {
135
+ type: string;
136
+ description: string;
137
+ };
138
+ origin: {
139
+ type: string;
140
+ description: string;
141
+ };
142
+ enableSync: {
143
+ type: string;
144
+ description: string;
145
+ };
146
+ };
147
+ required: string[];
148
+ };
149
+ handler: (args: Record<string, unknown>) => Promise<{
150
+ content: {
151
+ type: "text";
152
+ text: string;
153
+ }[];
154
+ }>;
155
+ };
156
+ delete_organization: {
157
+ description: string;
158
+ inputSchema: {
159
+ type: "object";
160
+ properties: {
161
+ id: {
162
+ type: string;
163
+ description: string;
164
+ };
165
+ };
166
+ required: string[];
167
+ };
168
+ handler: (args: {
169
+ id: string;
170
+ }) => Promise<{
171
+ content: {
172
+ type: "text";
173
+ text: string;
174
+ }[];
175
+ }>;
176
+ };
177
+ };
178
+ //# sourceMappingURL=organizations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAsB1B;YACpB,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB;;;;;;;;;;;;;;;;;;;wBA8BqB;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAuCd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgCvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;wBAyBvB;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE;;;;;;;EAUzC"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * MCP Tools for WAPPA SaaS Organization CRUD operations
3
+ *
4
+ * Organizations are the top-level SaaS tenants. Plans and Subscriptions
5
+ * are scoped under an organization (organizationId).
6
+ */
7
+ export function getOrganizationTools(client) {
8
+ return {
9
+ // ─── List Organizations ───────────────────────────────
10
+ list_organizations: {
11
+ description: "SaaS organizasyonlarını (kiracıları) listeler. Her organizasyonun id (GUID), key, name ve apiKey bilgisi döner. Plan ve abonelik (subscription) işlemleri bu organizationId altında yapılır.",
12
+ inputSchema: {
13
+ type: "object",
14
+ properties: {
15
+ key: { type: "string", description: "Anahtara göre filtrele" },
16
+ name: { type: "string", description: "İsme göre filtrele" },
17
+ description: {
18
+ type: "string",
19
+ description: "Açıklamaya göre filtrele",
20
+ },
21
+ pageIndex: {
22
+ type: "number",
23
+ description: "Sayfa numarası (0-based)",
24
+ },
25
+ pageLength: { type: "number", description: "Sayfa boyutu" },
26
+ },
27
+ },
28
+ handler: async (args) => {
29
+ const params = {};
30
+ if (args.key !== undefined)
31
+ params.key = args.key;
32
+ if (args.name !== undefined)
33
+ params.name = args.name;
34
+ if (args.description !== undefined)
35
+ params.description = args.description;
36
+ if (args.pageIndex !== undefined)
37
+ params.pageIndex = String(args.pageIndex);
38
+ if (args.pageLength !== undefined)
39
+ params.pageLength = String(args.pageLength);
40
+ const result = await client.getOrganizations(params);
41
+ return {
42
+ content: [
43
+ { type: "text", text: JSON.stringify(result, null, 2) },
44
+ ],
45
+ };
46
+ },
47
+ },
48
+ // ─── Get Organization ─────────────────────────────────
49
+ get_organization: {
50
+ description: "Belirli bir organizasyonu id (GUID) ile getirir. apiKey dahil tüm detayları döner.",
51
+ inputSchema: {
52
+ type: "object",
53
+ properties: {
54
+ id: { type: "string", description: "Organizasyon id'si (GUID)" },
55
+ },
56
+ required: ["id"],
57
+ },
58
+ handler: async (args) => {
59
+ const result = await client.getOrganization(args.id);
60
+ return {
61
+ content: [
62
+ { type: "text", text: JSON.stringify(result, null, 2) },
63
+ ],
64
+ };
65
+ },
66
+ },
67
+ // ─── Create Organization ──────────────────────────────
68
+ create_organization: {
69
+ description: `Yeni bir SaaS organizasyonu (kiracı) oluşturur.
70
+ 'key': Benzersiz organizasyon anahtarı/slug.
71
+ 'name': Görünen ad.
72
+ 'syncEndpoint' + 'enableSync': Harici senkronizasyon ayarları.
73
+ 'origin': İzin verilen origin (CORS).`,
74
+ inputSchema: {
75
+ type: "object",
76
+ properties: {
77
+ id: {
78
+ type: "string",
79
+ description: "Opsiyonel: belirli bir GUID atamak için",
80
+ },
81
+ key: { type: "string", description: "Benzersiz organizasyon anahtarı" },
82
+ name: { type: "string", description: "Görünen ad" },
83
+ description: { type: "string", description: "Açıklama" },
84
+ syncEndpoint: {
85
+ type: "string",
86
+ description: "Senkronizasyon endpoint URL'i",
87
+ },
88
+ origin: { type: "string", description: "İzin verilen origin" },
89
+ enableSync: {
90
+ type: "boolean",
91
+ description: "Senkronizasyon aktif mi?",
92
+ },
93
+ },
94
+ required: ["key", "name"],
95
+ },
96
+ handler: async (args) => {
97
+ const result = await client.createOrganization(args);
98
+ return {
99
+ content: [
100
+ { type: "text", text: JSON.stringify(result, null, 2) },
101
+ ],
102
+ };
103
+ },
104
+ },
105
+ // ─── Update Organization ──────────────────────────────
106
+ update_organization: {
107
+ description: "Mevcut bir organizasyonu günceller.",
108
+ inputSchema: {
109
+ type: "object",
110
+ properties: {
111
+ id: { type: "string", description: "Güncellenecek organizasyon id'si (GUID)" },
112
+ key: { type: "string", description: "Organizasyon anahtarı" },
113
+ name: { type: "string", description: "Görünen ad" },
114
+ description: { type: "string", description: "Açıklama" },
115
+ syncEndpoint: {
116
+ type: "string",
117
+ description: "Senkronizasyon endpoint URL'i",
118
+ },
119
+ origin: { type: "string", description: "İzin verilen origin" },
120
+ enableSync: {
121
+ type: "boolean",
122
+ description: "Senkronizasyon aktif mi?",
123
+ },
124
+ },
125
+ required: ["id"],
126
+ },
127
+ handler: async (args) => {
128
+ const { id, ...data } = args;
129
+ const result = await client.updateOrganization(id, data);
130
+ return {
131
+ content: [
132
+ { type: "text", text: JSON.stringify(result, null, 2) },
133
+ ],
134
+ };
135
+ },
136
+ },
137
+ // ─── Delete Organization ──────────────────────────────
138
+ delete_organization: {
139
+ description: "Bir organizasyonu siler. Bağlı planlar ve abonelikler etkilenebilir.",
140
+ inputSchema: {
141
+ type: "object",
142
+ properties: {
143
+ id: { type: "string", description: "Silinecek organizasyon id'si (GUID)" },
144
+ },
145
+ required: ["id"],
146
+ },
147
+ handler: async (args) => {
148
+ const result = await client.deleteOrganization(args.id);
149
+ return {
150
+ content: [
151
+ { type: "text", text: JSON.stringify(result, null, 2) },
152
+ ],
153
+ };
154
+ },
155
+ },
156
+ };
157
+ }
158
+ //# sourceMappingURL=organizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"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"}