@appaflytech/wappa-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 (68) hide show
  1. package/.env.example +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +200 -0
  4. package/dist/auth.d.ts +20 -0
  5. package/dist/auth.d.ts.map +1 -0
  6. package/dist/auth.js +58 -0
  7. package/dist/auth.js.map +1 -0
  8. package/dist/base-components.d.ts +52 -0
  9. package/dist/base-components.d.ts.map +1 -0
  10. package/dist/base-components.js +552 -0
  11. package/dist/base-components.js.map +1 -0
  12. package/dist/client.d.ts +141 -0
  13. package/dist/client.d.ts.map +1 -0
  14. package/dist/client.js +341 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/index.d.ts +10 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +287 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/tools/components.d.ts +217 -0
  21. package/dist/tools/components.d.ts.map +1 -0
  22. package/dist/tools/components.js +258 -0
  23. package/dist/tools/components.js.map +1 -0
  24. package/dist/tools/dynamic-entities.d.ts +308 -0
  25. package/dist/tools/dynamic-entities.d.ts.map +1 -0
  26. package/dist/tools/dynamic-entities.js +278 -0
  27. package/dist/tools/dynamic-entities.js.map +1 -0
  28. package/dist/tools/entities.d.ts +212 -0
  29. package/dist/tools/entities.d.ts.map +1 -0
  30. package/dist/tools/entities.js +223 -0
  31. package/dist/tools/entities.js.map +1 -0
  32. package/dist/tools/general.d.ts +93 -0
  33. package/dist/tools/general.d.ts.map +1 -0
  34. package/dist/tools/general.js +218 -0
  35. package/dist/tools/general.js.map +1 -0
  36. package/dist/tools/languages.d.ts +157 -0
  37. package/dist/tools/languages.d.ts.map +1 -0
  38. package/dist/tools/languages.js +142 -0
  39. package/dist/tools/languages.js.map +1 -0
  40. package/dist/tools/layouts.d.ts +244 -0
  41. package/dist/tools/layouts.d.ts.map +1 -0
  42. package/dist/tools/layouts.js +218 -0
  43. package/dist/tools/layouts.js.map +1 -0
  44. package/dist/tools/menus.d.ts +154 -0
  45. package/dist/tools/menus.d.ts.map +1 -0
  46. package/dist/tools/menus.js +173 -0
  47. package/dist/tools/menus.js.map +1 -0
  48. package/dist/tools/pages.d.ts +472 -0
  49. package/dist/tools/pages.d.ts.map +1 -0
  50. package/dist/tools/pages.js +465 -0
  51. package/dist/tools/pages.js.map +1 -0
  52. package/dist/tools/queries.d.ts +221 -0
  53. package/dist/tools/queries.d.ts.map +1 -0
  54. package/dist/tools/queries.js +210 -0
  55. package/dist/tools/queries.js.map +1 -0
  56. package/dist/tools/sites.d.ts +187 -0
  57. package/dist/tools/sites.d.ts.map +1 -0
  58. package/dist/tools/sites.js +167 -0
  59. package/dist/tools/sites.js.map +1 -0
  60. package/dist/tools/themes.d.ts +182 -0
  61. package/dist/tools/themes.d.ts.map +1 -0
  62. package/dist/tools/themes.js +175 -0
  63. package/dist/tools/themes.js.map +1 -0
  64. package/dist/tools/widgets.d.ts +216 -0
  65. package/dist/tools/widgets.d.ts.map +1 -0
  66. package/dist/tools/widgets.js +182 -0
  67. package/dist/tools/widgets.js.map +1 -0
  68. package/package.json +50 -0
@@ -0,0 +1,465 @@
1
+ /**
2
+ * MCP Tools for WAP Page CRUD operations
3
+ *
4
+ * ─── PROP REFERANS SİSTEMİ ────────────────────────────────────────────────
5
+ * WAP'ta component prop değerleri direkt string/nesne değil, referans sistemi
6
+ * kullanır. Prop tiplerine göre format:
7
+ *
8
+ * text / long-text prop:
9
+ * props: { "title": { "type": "string", "label": "Glomil", "ref": "<hex-id>" } }
10
+ * refs: [{ "key": "strings", "values": [{ "id": "<hex-id>", "title": "Glomil" }] }]
11
+ * Not: hex-id = 23 karakterlik rastgele hex string (Math.random tabanlı)
12
+ *
13
+ * image / picture / video / audio / file prop:
14
+ * props: { "image": { "src": { "type": "image", "ref": "<file-guid>", "label": "Root/site/file.jpg" }, "srcset": [] } }
15
+ * refs: [{ "key": "files", "values": ["<file-guid>"] }] ← sadece ID string listesi
16
+ * Not: file GUID'i list_files aracı ile bulunur
17
+ *
18
+ * link prop:
19
+ * props: { "link": { "type": "link", "ref": "<link-id>", "label": "Başlık" } }
20
+ * refs: [{ "key": "links", "values": ["<link-id>"] }]
21
+ *
22
+ * navigation prop:
23
+ * props: { "nav": { "type": "navigation", "ref": "<menu-id>" } }
24
+ * refs: [{ "key": "navigations", "values": ["<menu-id>"] }]
25
+ *
26
+ * query prop:
27
+ * props: { "items": { "type": "query", "ref": "<query-id>" } }
28
+ * refs: [{ "key": "queries", "values": ["<query-id>"] }]
29
+ *
30
+ * raw prop (query gibi ama parametresiz statik):
31
+ * props: { "data": { "type": "raw", "ref": "<raw-id>" } }
32
+ * refs: [{ "key": "raw", "values": ["<raw-id>"] }]
33
+ *
34
+ * dropdown / switch / number / color / dropdown prop:
35
+ * props: { "theme": "light" } ← düz değer, ref gerekmez
36
+ *
37
+ * ─── VIEWS YAPISI ────────────────────────────────────────────────────────
38
+ * views: { "<layout-view-node-id>": [ PageComponent, ... ] }
39
+ * PageComponent: { id, name, title, icon, props, refs:{}, children:[], droppable, appearance }
40
+ *
41
+ * ─── REFS DİZİSİ (payload) ───────────────────────────────────────────────
42
+ * refs: [
43
+ * { "key": "components", "values": [{ "id": "<componentName>", "queryIds": [], "showcaseIds": [] }] },
44
+ * { "key": "strings", "values": [{ "id": "<hex-id>", "title": "değer" }] },
45
+ * { "key": "files", "values": ["<file-guid>"] },
46
+ * { "key": "links", "values": ["<link-id>"] },
47
+ * { "key": "queries", "values": ["<query-id>"] },
48
+ * { "key": "raw", "values": ["<raw-id>"] },
49
+ * { "key": "navigations","values": ["<menu-id>"] },
50
+ * ]
51
+ * ─────────────────────────────────────────────────────────────────────────
52
+ */
53
+ export function getPageTools(client) {
54
+ return {
55
+ // ─── List Pages ───────────────────────────────────────
56
+ list_pages: {
57
+ description: "WAP sayfalarını listeler. Her sayfa bir URL path'e karşılık gelir.",
58
+ inputSchema: {
59
+ type: "object",
60
+ properties: {
61
+ title: { type: "string", description: "Başlık ile filtrele" },
62
+ path: { type: "string", description: "URL path ile filtrele" },
63
+ layoutId: { type: "string", description: "Layout ID ile filtrele" },
64
+ status: {
65
+ type: "string",
66
+ description: "Durum: Published | Draft | Deleted",
67
+ enum: ["Published", "Draft", "Deleted"],
68
+ },
69
+ includeEntities: {
70
+ type: "boolean",
71
+ description: "Entity bilgilerini dahil et",
72
+ },
73
+ pageIndex: {
74
+ type: "number",
75
+ description: "Sayfa numarası (0-based)",
76
+ },
77
+ pageLength: { type: "number", description: "Sayfa boyutu" },
78
+ },
79
+ },
80
+ handler: async (args) => {
81
+ const params = {};
82
+ if (args.title)
83
+ params.title = args.title;
84
+ if (args.path)
85
+ params.path = args.path;
86
+ if (args.layoutId)
87
+ params.layoutId = args.layoutId;
88
+ if (args.status)
89
+ params.status = args.status;
90
+ if (args.includeEntities !== undefined)
91
+ params.includeEntities = String(args.includeEntities);
92
+ if (args.pageIndex !== undefined)
93
+ params.pageIndex = String(args.pageIndex);
94
+ if (args.pageLength !== undefined)
95
+ params.pageLength = String(args.pageLength);
96
+ const result = await client.getPages(params);
97
+ return {
98
+ content: [
99
+ { type: "text", text: JSON.stringify(result, null, 2) },
100
+ ],
101
+ };
102
+ },
103
+ },
104
+ // ─── Get Page ─────────────────────────────────────────
105
+ get_page: {
106
+ description: "Belirli bir sayfanın tüm detaylarını getirir (views, layout, meta bilgileri dahil).",
107
+ inputSchema: {
108
+ type: "object",
109
+ properties: {
110
+ id: { type: "string", description: "Sayfa ID (GUID)" },
111
+ },
112
+ required: ["id"],
113
+ },
114
+ handler: async (args) => {
115
+ const result = await client.getPage(args.id);
116
+ return {
117
+ content: [
118
+ { type: "text", text: JSON.stringify(result, null, 2) },
119
+ ],
120
+ };
121
+ },
122
+ },
123
+ // ─── Create Page ──────────────────────────────────────
124
+ create_page: {
125
+ description: `Yeni bir sayfa oluşturur.
126
+
127
+ 'path': Dil prefix dahil URL (örn: "en-us/hakkimizda"). Başta slash olmadan.
128
+ 'layoutId': Layout GUID (list_layouts ile bulun).
129
+ 'status': 1=Published, 2=Draft (varsayılan: 2)
130
+
131
+ ── VIEWS FORMATI ──
132
+ views: { "<layout-view-node-id>": [ ...PageComponent ] }
133
+ PageComponent: { id, name, title, icon, props, refs:{}, children:[], droppable, appearance }
134
+
135
+ ── PROP REFERANS SİSTEMİ ──
136
+ Komponent prop'ları direkt değer değil, referans sistemi kullanır:
137
+ • text/long-text → props: { "title": { "type": "string", "label": "Metin", "ref": "<23-hex>" } }
138
+ refs: [{ "key": "strings", "values": [{ "id": "<23-hex>", "title": "Metin" }] }]
139
+ • image/picture → props: { "image": { "src": { "type": "image", "ref": "<file-guid>", "label": "Root/.../file.jpg" }, "srcset": [] } }
140
+ refs: [{ "key": "files", "values": ["<file-guid>"] }]
141
+ • link → props: { "link": { "type": "link", "ref": "<link-id>", "label": "Başlık" } }
142
+ refs: [{ "key": "links", "values": ["<link-id>"] }]
143
+ • navigation → props: { "nav": { "type": "navigation", "ref": "<menu-id>" } }
144
+ refs: [{ "key": "navigations", "values": ["<menu-id>"] }]
145
+ • query → props: { "items": { "type": "query", "ref": "<query-id>" } }
146
+ refs: [{ "key": "queries", "values": ["<query-id>"] }]
147
+ • raw → props: { "data": { "type": "raw", "ref": "<raw-id>" } }
148
+ refs: [{ "key": "raw", "values": ["<raw-id>"] }]
149
+ • dropdown/switch/number/color → props: { "theme": "light" } (düz değer)
150
+
151
+ ── REFS DİZİSİ ──
152
+ refs: [
153
+ { "key": "components", "values": [{ "id": "<componentName>", "queryIds": [], "showcaseIds": [] }] },
154
+ { "key": "strings", "values": [{ "id": "<hex-id>", "title": "değer" }] },
155
+ { "key": "files", "values": ["<file-guid>"] },
156
+ { "key": "links", "values": ["<link-id>"] },
157
+ { "key": "queries", "values": ["<query-id>"] },
158
+ { "key": "raw", "values": ["<raw-id>"] },
159
+ ]
160
+
161
+ Not: string ref ID = 23 karakterlik hex (örn: "910f4a91c5551fad3be9b35")`,
162
+ inputSchema: {
163
+ type: "object",
164
+ properties: {
165
+ title: { type: "string", description: "Sayfa başlığı" },
166
+ path: {
167
+ type: "string",
168
+ description: 'URL path, dil prefix dahil, başta slash olmadan (örn: "en-us/hakkimizda")',
169
+ },
170
+ layoutId: { type: "string", description: "Layout ID (GUID)" },
171
+ status: {
172
+ type: "number",
173
+ description: "Durum: 1=Published, 2=Draft (varsayılan: 2)",
174
+ },
175
+ views: {
176
+ type: "object",
177
+ description: '{ "<viewNodeId>": [ PageComponent ] } — prop değerleri referans sistemi kullanır (açıklamaya bakın)',
178
+ },
179
+ refs: {
180
+ type: "array",
181
+ description: "Referans dizisi: [{ key: 'components'|'strings'|'files'|'links'|'queries'|'raw'|'navigations', values: [...] }]",
182
+ },
183
+ mobileViews: {
184
+ type: "object",
185
+ description: "Mobil component ağacı — views ile aynı format",
186
+ },
187
+ mobileRefs: {
188
+ type: "array",
189
+ description: "Mobil referans dizisi — refs ile aynı format",
190
+ },
191
+ metaTags: {
192
+ type: "object",
193
+ description: "SEO: { title, description, opengraph:{}, twitter:{} }",
194
+ },
195
+ image: {
196
+ type: "object",
197
+ description: "Sayfa kapak görseli: {} veya ref nesnesi",
198
+ },
199
+ cacheTime: {
200
+ type: "number",
201
+ description: "Önbellek süresi (saniye, 0=kapalı)",
202
+ },
203
+ visibilityFlag: {
204
+ type: "number",
205
+ description: "Görünürlük: 0=Herkes, 1=Giriş yapanlar, 2=Adminler",
206
+ },
207
+ },
208
+ required: ["title", "path"],
209
+ },
210
+ handler: async (args) => {
211
+ const data = {
212
+ status: 2,
213
+ image: {},
214
+ metaTags: { opengraph: {}, twitter: {} },
215
+ refs: [],
216
+ mobileRefs: [],
217
+ mobileViews: {},
218
+ ...args,
219
+ };
220
+ const result = await client.createPage(data);
221
+ return {
222
+ content: [
223
+ { type: "text", text: JSON.stringify(result, null, 2) },
224
+ ],
225
+ };
226
+ },
227
+ },
228
+ // ─── Update Page ──────────────────────────────────────
229
+ update_page: {
230
+ description: `Mevcut bir sayfayı günceller.
231
+
232
+ ÖNEMLİ: views ve refs'i her zaman TAM olarak gönder (partial update yok).
233
+ Mevcut sayfayı önce get_page ile çek, değiştirmek istediğin kısmı güncelle, tümünü gönder.
234
+
235
+ ── PROP REFERANS SİSTEMİ (create_page ile aynı) ──
236
+ • text/long-text → { "type": "string", "label": "Metin", "ref": "<23-hex>" }
237
+ refs: [{ "key": "strings", "values": [{ "id": "<23-hex>", "title": "Metin" }] }]
238
+ • image/picture → { "src": { "type": "image", "ref": "<file-guid>", "label": "path" }, "srcset": [] }
239
+ refs: [{ "key": "files", "values": ["<file-guid>"] }]
240
+ • link → { "type": "link", "ref": "<link-id>", "label": "Başlık" }
241
+ refs: [{ "key": "links", "values": ["<link-id>"] }]
242
+ • query → { "type": "query", "ref": "<query-id>" }
243
+ refs: [{ "key": "queries", "values": ["<query-id>"] }]
244
+ • raw → { "type": "raw", "ref": "<raw-id>" }
245
+ refs: [{ "key": "raw", "values": ["<raw-id>"] }]
246
+ • dropdown/switch/number/color → düz değer ("light", true, 42)
247
+
248
+ refs dizisi her zaman components kaydını içermeli:
249
+ { "key": "components", "values": [{ "id": "<componentName>", "queryIds": [], "showcaseIds": [] }] }`,
250
+ inputSchema: {
251
+ type: "object",
252
+ properties: {
253
+ id: {
254
+ type: "string",
255
+ description: "Sayfa ID (list_pages'ten alınan id)",
256
+ },
257
+ title: { type: "string", description: "Sayfa başlığı" },
258
+ path: { type: "string", description: "URL path (dil prefix dahil)" },
259
+ layoutId: { type: "string", description: "Layout ID" },
260
+ status: { type: "number", description: "1=Published, 2=Draft" },
261
+ views: {
262
+ type: "object",
263
+ description: '{ "<viewNodeId>": [ PageComponent ] } — prop\'lar referans sistemi kullanır',
264
+ },
265
+ refs: {
266
+ type: "array",
267
+ description: "Referans dizisi: [{ key, values }] — strings/files/links/queries/raw/components/navigations",
268
+ },
269
+ mobileViews: { type: "object", description: "Mobil ağaç" },
270
+ mobileRefs: { type: "array", description: "Mobil referanslar" },
271
+ metaTags: {
272
+ type: "object",
273
+ description: "SEO: { title, description, opengraph:{}, twitter:{} }",
274
+ },
275
+ image: { type: "object", description: "Kapak görseli" },
276
+ cacheTime: { type: "number", description: "Önbellek süresi (sn)" },
277
+ visibilityFlag: {
278
+ type: "number",
279
+ description: "0=Herkes, 1=Üye, 2=Admin",
280
+ },
281
+ },
282
+ required: ["id"],
283
+ },
284
+ handler: async (args) => {
285
+ const { id, ...data } = args;
286
+ const result = await client.updatePage(id, { id, ...data });
287
+ return {
288
+ content: [
289
+ { type: "text", text: JSON.stringify(result, null, 2) },
290
+ ],
291
+ };
292
+ },
293
+ },
294
+ // ─── Publish Page ─────────────────────────────────────
295
+ publish_page: {
296
+ description: "Bir sayfayı yayınlar (Draft → Published).",
297
+ inputSchema: {
298
+ type: "object",
299
+ properties: {
300
+ id: {
301
+ type: "string",
302
+ description: "Sayfa ID (list_pages'ten alınan id)",
303
+ },
304
+ image: { type: "object", description: "Kapak görseli ({})" },
305
+ layoutId: { type: "string", description: "Layout ID" },
306
+ metaTags: { type: "object", description: "SEO meta tags" },
307
+ path: { type: "string", description: "URL path" },
308
+ title: { type: "string", description: "Sayfa başlığı" },
309
+ refs: { type: "array", description: "Referans dizisi" },
310
+ mobileRefs: { type: "array", description: "Mobil referans dizisi" },
311
+ views: { type: "object", description: "Sayfa view ağacı" },
312
+ mobileViews: { type: "object", description: "Mobil view ağacı" },
313
+ },
314
+ required: ["id"],
315
+ },
316
+ handler: async (args) => {
317
+ const { id, ...body } = args;
318
+ const result = await client.updatePageStatus(id, {
319
+ id,
320
+ ...body,
321
+ status: 1,
322
+ });
323
+ return {
324
+ content: [
325
+ { type: "text", text: JSON.stringify(result, null, 2) },
326
+ ],
327
+ };
328
+ },
329
+ },
330
+ // ─── Unpublish Page ───────────────────────────────────
331
+ unpublish_page: {
332
+ description: "Bir sayfayı yayından kaldırır (Published → Draft).",
333
+ inputSchema: {
334
+ type: "object",
335
+ properties: {
336
+ id: {
337
+ type: "string",
338
+ description: "Sayfa ID (list_pages'ten alınan id)",
339
+ },
340
+ image: { type: "object", description: "Kapak görseli ({})" },
341
+ layoutId: { type: "string", description: "Layout ID" },
342
+ metaTags: { type: "object", description: "SEO meta tags" },
343
+ path: { type: "string", description: "URL path" },
344
+ title: { type: "string", description: "Sayfa başlığı" },
345
+ refs: { type: "array", description: "Referans dizisi" },
346
+ mobileRefs: { type: "array", description: "Mobil referans dizisi" },
347
+ views: { type: "object", description: "Sayfa view ağacı" },
348
+ mobileViews: { type: "object", description: "Mobil view ağacı" },
349
+ },
350
+ required: ["id"],
351
+ },
352
+ handler: async (args) => {
353
+ const { id, ...body } = args;
354
+ const result = await client.updatePageStatus(id, {
355
+ id,
356
+ ...body,
357
+ status: 2,
358
+ });
359
+ return {
360
+ content: [
361
+ { type: "text", text: JSON.stringify(result, null, 2) },
362
+ ],
363
+ };
364
+ },
365
+ },
366
+ // ─── Delete Page ──────────────────────────────────────
367
+ delete_page: {
368
+ description: "Bir sayfayı siler.",
369
+ inputSchema: {
370
+ type: "object",
371
+ properties: {
372
+ id: { type: "string", description: "Silinecek sayfa ID" },
373
+ },
374
+ required: ["id"],
375
+ },
376
+ handler: async (args) => {
377
+ const result = await client.deletePage(args.id);
378
+ return {
379
+ content: [
380
+ { type: "text", text: JSON.stringify(result, null, 2) },
381
+ ],
382
+ };
383
+ },
384
+ },
385
+ // ─── Get Page Versions ────────────────────────────────
386
+ get_page_versions: {
387
+ description: "Bir sayfanın tüm versiyonlarını listeler.",
388
+ inputSchema: {
389
+ type: "object",
390
+ properties: {
391
+ id: { type: "string", description: "Sayfa ID" },
392
+ pageIndex: { type: "number", description: "Sayfa numarası" },
393
+ pageLength: { type: "number", description: "Sayfa boyutu" },
394
+ },
395
+ required: ["id"],
396
+ },
397
+ handler: async (args) => {
398
+ const params = {};
399
+ if (args.pageIndex !== undefined)
400
+ params.pageIndex = String(args.pageIndex);
401
+ if (args.pageLength !== undefined)
402
+ params.pageLength = String(args.pageLength);
403
+ const result = await client.getPageVersions(args.id, params);
404
+ return {
405
+ content: [
406
+ { type: "text", text: JSON.stringify(result, null, 2) },
407
+ ],
408
+ };
409
+ },
410
+ },
411
+ // ─── Generate Page Path ───────────────────────────────
412
+ generate_page_path: {
413
+ description: "Verilen path için benzersiz bir URL path önerir (çakışma olursa suffix ekler).",
414
+ inputSchema: {
415
+ type: "object",
416
+ properties: {
417
+ path: {
418
+ type: "string",
419
+ description: 'İstenen URL path (örn: "/tr-tr/hakkimizda")',
420
+ },
421
+ },
422
+ required: ["path"],
423
+ },
424
+ handler: async (args) => {
425
+ const result = await client.generatePagePath(args.path);
426
+ return {
427
+ content: [
428
+ { type: "text", text: JSON.stringify(result, null, 2) },
429
+ ],
430
+ };
431
+ },
432
+ },
433
+ // ─── Create Page Localization ─────────────────────────
434
+ create_page_localization: {
435
+ description: "Bir sayfanın başka bir dile çevirisini oluşturur. Opsiyonel otomatik çeviri.",
436
+ inputSchema: {
437
+ type: "object",
438
+ properties: {
439
+ id: { type: "string", description: "Sayfa ID" },
440
+ sourceLanguageId: {
441
+ type: "string",
442
+ description: 'Kaynak dil kodu (örn: "tr-tr")',
443
+ },
444
+ useTranslateApi: {
445
+ type: "boolean",
446
+ description: "Otomatik çeviri API kullanılsın mı?",
447
+ },
448
+ },
449
+ required: ["id", "sourceLanguageId"],
450
+ },
451
+ handler: async (args) => {
452
+ const result = await client.createPageLocalization(args.id, {
453
+ sourceLanguageId: args.sourceLanguageId,
454
+ useTranslateApi: args.useTranslateApi,
455
+ });
456
+ return {
457
+ content: [
458
+ { type: "text", text: JSON.stringify(result, null, 2) },
459
+ ],
460
+ };
461
+ },
462
+ },
463
+ };
464
+ }
465
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"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"}