@tomaspavlin/rohlik-mcp 1.0.6 → 2.0.0

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 (58) hide show
  1. package/README.md +55 -9
  2. package/dist/index.js +41 -201
  3. package/dist/index.js.map +1 -1
  4. package/dist/rohlik-api.d.ts +9 -1
  5. package/dist/rohlik-api.d.ts.map +1 -1
  6. package/dist/rohlik-api.js +147 -1
  7. package/dist/rohlik-api.js.map +1 -1
  8. package/dist/tools/account-data.d.ts +23 -0
  9. package/dist/tools/account-data.d.ts.map +1 -0
  10. package/dist/tools/account-data.js +83 -0
  11. package/dist/tools/account-data.js.map +1 -0
  12. package/dist/tools/announcements.d.ts +23 -0
  13. package/dist/tools/announcements.d.ts.map +1 -0
  14. package/dist/tools/announcements.js +61 -0
  15. package/dist/tools/announcements.js.map +1 -0
  16. package/dist/tools/cart-management.d.ts +88 -0
  17. package/dist/tools/cart-management.d.ts.map +1 -0
  18. package/dist/tools/cart-management.js +136 -0
  19. package/dist/tools/cart-management.js.map +1 -0
  20. package/dist/tools/delivery-info.d.ts +23 -0
  21. package/dist/tools/delivery-info.d.ts.map +1 -0
  22. package/dist/tools/delivery-info.js +69 -0
  23. package/dist/tools/delivery-info.js.map +1 -0
  24. package/dist/tools/delivery-slots.d.ts +23 -0
  25. package/dist/tools/delivery-slots.d.ts.map +1 -0
  26. package/dist/tools/delivery-slots.js +55 -0
  27. package/dist/tools/delivery-slots.js.map +1 -0
  28. package/dist/tools/index.d.ts +137 -0
  29. package/dist/tools/index.d.ts.map +1 -0
  30. package/dist/tools/index.js +19 -0
  31. package/dist/tools/index.js.map +1 -0
  32. package/dist/tools/order-history.d.ts +28 -0
  33. package/dist/tools/order-history.d.ts.map +1 -0
  34. package/dist/tools/order-history.js +62 -0
  35. package/dist/tools/order-history.js.map +1 -0
  36. package/dist/tools/premium-info.d.ts +23 -0
  37. package/dist/tools/premium-info.d.ts.map +1 -0
  38. package/dist/tools/premium-info.js +84 -0
  39. package/dist/tools/premium-info.js.map +1 -0
  40. package/dist/tools/reusable-bags.d.ts +23 -0
  41. package/dist/tools/reusable-bags.d.ts.map +1 -0
  42. package/dist/tools/reusable-bags.js +79 -0
  43. package/dist/tools/reusable-bags.js.map +1 -0
  44. package/dist/tools/search-products.d.ts +32 -0
  45. package/dist/tools/search-products.d.ts.map +1 -0
  46. package/dist/tools/search-products.js +44 -0
  47. package/dist/tools/search-products.js.map +1 -0
  48. package/dist/tools/shopping-lists.d.ts +28 -0
  49. package/dist/tools/shopping-lists.d.ts.map +1 -0
  50. package/dist/tools/shopping-lists.js +54 -0
  51. package/dist/tools/shopping-lists.js.map +1 -0
  52. package/dist/tools/upcoming-orders.d.ts +23 -0
  53. package/dist/tools/upcoming-orders.d.ts.map +1 -0
  54. package/dist/tools/upcoming-orders.js +61 -0
  55. package/dist/tools/upcoming-orders.js.map +1 -0
  56. package/dist/types.d.ts +14 -0
  57. package/dist/types.d.ts.map +1 -1
  58. package/package.json +2 -2
@@ -0,0 +1,23 @@
1
+ import { RohlikAPI } from "../rohlik-api.js";
2
+ export declare function createAccountDataTool(createRohlikAPI: () => RohlikAPI): {
3
+ name: string;
4
+ definition: {
5
+ title: string;
6
+ description: string;
7
+ inputSchema: {};
8
+ };
9
+ handler: () => Promise<{
10
+ content: {
11
+ type: "text";
12
+ text: string;
13
+ }[];
14
+ isError?: undefined;
15
+ } | {
16
+ content: {
17
+ type: "text";
18
+ text: string;
19
+ }[];
20
+ isError: boolean;
21
+ }>;
22
+ };
23
+ //# sourceMappingURL=account-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-data.d.ts","sourceRoot":"","sources":["../../src/tools/account-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;EA4FrE"}
@@ -0,0 +1,83 @@
1
+ export function createAccountDataTool(createRohlikAPI) {
2
+ return {
3
+ name: "get_account_data",
4
+ definition: {
5
+ title: "Get Account Data",
6
+ description: "Get comprehensive account information including delivery details, orders, announcements, cart, and more",
7
+ inputSchema: {}
8
+ },
9
+ handler: async () => {
10
+ try {
11
+ const api = createRohlikAPI();
12
+ const accountData = await api.getAccountData();
13
+ const formatSection = (title, data) => {
14
+ if (!data || (Array.isArray(data) && data.length === 0)) {
15
+ return `${title}: No data available`;
16
+ }
17
+ if (typeof data === 'object') {
18
+ return `${title}: ${JSON.stringify(data, null, 2)}`;
19
+ }
20
+ return `${title}: ${String(data)}`;
21
+ };
22
+ const sections = [];
23
+ // Cart summary
24
+ if (accountData.cart) {
25
+ sections.push(`🛒 CART SUMMARY:
26
+ • Total items: ${accountData.cart.total_items}
27
+ • Total price: ${accountData.cart.total_price} CZK
28
+ • Can order: ${accountData.cart.can_make_order ? 'Yes' : 'No'}`);
29
+ }
30
+ // Delivery info
31
+ if (accountData.delivery) {
32
+ sections.push(formatSection("🚚 DELIVERY INFO", accountData.delivery));
33
+ }
34
+ // Next delivery slot
35
+ if (accountData.next_delivery_slot) {
36
+ sections.push(formatSection("⏰ NEXT DELIVERY SLOT", accountData.next_delivery_slot));
37
+ }
38
+ // Orders
39
+ if (accountData.next_order) {
40
+ sections.push(formatSection("📦 UPCOMING ORDER", accountData.next_order));
41
+ }
42
+ if (accountData.last_order) {
43
+ sections.push(formatSection("📋 LAST ORDER", accountData.last_order));
44
+ }
45
+ // Premium profile
46
+ if (accountData.premium_profile) {
47
+ sections.push(formatSection("⭐ PREMIUM PROFILE", accountData.premium_profile));
48
+ }
49
+ // Announcements
50
+ if (accountData.announcements) {
51
+ sections.push(formatSection("📢 ANNOUNCEMENTS", accountData.announcements));
52
+ }
53
+ // Reusable bags
54
+ if (accountData.bags) {
55
+ sections.push(formatSection("♻️ REUSABLE BAGS", accountData.bags));
56
+ }
57
+ const output = sections.length > 0
58
+ ? sections.join('\n\n')
59
+ : 'No account data available';
60
+ return {
61
+ content: [
62
+ {
63
+ type: "text",
64
+ text: output
65
+ }
66
+ ]
67
+ };
68
+ }
69
+ catch (error) {
70
+ return {
71
+ content: [
72
+ {
73
+ type: "text",
74
+ text: error instanceof Error ? error.message : String(error)
75
+ }
76
+ ],
77
+ isError: true
78
+ };
79
+ }
80
+ }
81
+ };
82
+ }
83
+ //# sourceMappingURL=account-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-data.js","sourceRoot":"","sources":["../../src/tools/account-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { RohlikAPI } from "../rohlik-api.js";
2
+ export declare function createAnnouncementsTool(createRohlikAPI: () => RohlikAPI): {
3
+ name: string;
4
+ definition: {
5
+ title: string;
6
+ description: string;
7
+ inputSchema: {};
8
+ };
9
+ handler: () => Promise<{
10
+ content: {
11
+ type: "text";
12
+ text: string;
13
+ }[];
14
+ isError?: undefined;
15
+ } | {
16
+ content: {
17
+ type: "text";
18
+ text: string;
19
+ }[];
20
+ isError: boolean;
21
+ }>;
22
+ };
23
+ //# sourceMappingURL=announcements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcements.d.ts","sourceRoot":"","sources":["../../src/tools/announcements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;EAkEvE"}
@@ -0,0 +1,61 @@
1
+ export function createAnnouncementsTool(createRohlikAPI) {
2
+ return {
3
+ name: "get_announcements",
4
+ definition: {
5
+ title: "Get Announcements",
6
+ description: "Get current announcements and notifications from Rohlik",
7
+ inputSchema: {}
8
+ },
9
+ handler: async () => {
10
+ try {
11
+ const api = createRohlikAPI();
12
+ const announcements = await api.getAnnouncements();
13
+ if (!announcements || (Array.isArray(announcements) && announcements.length === 0)) {
14
+ return {
15
+ content: [
16
+ {
17
+ type: "text",
18
+ text: "No announcements available."
19
+ }
20
+ ]
21
+ };
22
+ }
23
+ const formatAnnouncements = (data) => {
24
+ if (Array.isArray(data)) {
25
+ return `📢 ANNOUNCEMENTS:\n\n${data.map((announcement, index) => `${index + 1}. ${announcement.title || 'Announcement'}
26
+ ${announcement.message || announcement.content || announcement.text || 'No content'}
27
+ ${announcement.date ? `Date: ${announcement.date}` : ''}`).join('\n\n')}`;
28
+ }
29
+ if (data.title || data.message) {
30
+ return `📢 ANNOUNCEMENT:
31
+ ${data.title || 'Announcement'}
32
+ ${data.message || data.content || data.text || 'No content'}
33
+ ${data.date ? `Date: ${data.date}` : ''}`;
34
+ }
35
+ return `📢 ANNOUNCEMENTS:\n${JSON.stringify(data, null, 2)}`;
36
+ };
37
+ const output = formatAnnouncements(announcements);
38
+ return {
39
+ content: [
40
+ {
41
+ type: "text",
42
+ text: output
43
+ }
44
+ ]
45
+ };
46
+ }
47
+ catch (error) {
48
+ return {
49
+ content: [
50
+ {
51
+ type: "text",
52
+ text: error instanceof Error ? error.message : String(error)
53
+ }
54
+ ],
55
+ isError: true
56
+ };
57
+ }
58
+ }
59
+ };
60
+ }
61
+ //# sourceMappingURL=announcements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcements.js","sourceRoot":"","sources":["../../src/tools/announcements.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,eAAgC;IACtE,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE;YACV,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,yDAAyD;YACtE,WAAW,EAAE,EAAE;SAChB;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAEnD,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;oBACnF,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,6BAA6B;6BACpC;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,mBAAmB,GAAG,CAAC,IAAS,EAAU,EAAE;oBAChD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,wBAAwB,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAC9D,GAAG,KAAK,GAAG,CAAC,KAAK,YAAY,CAAC,KAAK,IAAI,cAAc;KAC9D,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY;KACjF,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnB,CAAC;oBAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC/B,OAAO;KACd,IAAI,CAAC,KAAK,IAAI,cAAc;KAC5B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,YAAY;KACzD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACnC,CAAC;oBAED,OAAO,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/D,CAAC,CAAC;gBAEF,MAAM,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;gBAElD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAC7D;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { z } from "zod";
2
+ import { RohlikAPI } from "../rohlik-api.js";
3
+ export declare function createCartManagementTools(createRohlikAPI: () => RohlikAPI): {
4
+ addToCart: {
5
+ name: string;
6
+ definition: {
7
+ title: string;
8
+ description: string;
9
+ inputSchema: {
10
+ products: z.ZodArray<z.ZodObject<{
11
+ product_id: z.ZodNumber;
12
+ quantity: z.ZodNumber;
13
+ }, "strip", z.ZodTypeAny, {
14
+ product_id: number;
15
+ quantity: number;
16
+ }, {
17
+ product_id: number;
18
+ quantity: number;
19
+ }>, "many">;
20
+ };
21
+ };
22
+ handler: ({ products }: {
23
+ products: Array<{
24
+ product_id: number;
25
+ quantity: number;
26
+ }>;
27
+ }) => Promise<{
28
+ content: {
29
+ type: "text";
30
+ text: string;
31
+ }[];
32
+ isError?: undefined;
33
+ } | {
34
+ content: {
35
+ type: "text";
36
+ text: string;
37
+ }[];
38
+ isError: boolean;
39
+ }>;
40
+ };
41
+ getCartContent: {
42
+ name: string;
43
+ definition: {
44
+ title: string;
45
+ description: string;
46
+ inputSchema: {};
47
+ };
48
+ handler: () => Promise<{
49
+ content: {
50
+ type: "text";
51
+ text: string;
52
+ }[];
53
+ isError?: undefined;
54
+ } | {
55
+ content: {
56
+ type: "text";
57
+ text: string;
58
+ }[];
59
+ isError: boolean;
60
+ }>;
61
+ };
62
+ removeFromCart: {
63
+ name: string;
64
+ definition: {
65
+ title: string;
66
+ description: string;
67
+ inputSchema: {
68
+ order_field_id: z.ZodString;
69
+ };
70
+ };
71
+ handler: ({ order_field_id }: {
72
+ order_field_id: string;
73
+ }) => Promise<{
74
+ content: {
75
+ type: "text";
76
+ text: string;
77
+ }[];
78
+ isError?: undefined;
79
+ } | {
80
+ content: {
81
+ type: "text";
82
+ text: string;
83
+ }[];
84
+ isError: boolean;
85
+ }>;
86
+ };
87
+ };
88
+ //# sourceMappingURL=cart-management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cart-management.d.ts","sourceRoot":"","sources":["../../src/tools/cart-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,wBAAgB,yBAAyB,CAAC,eAAe,EAAE,MAAM,SAAS;;;;;;;;;;;;;;;;;;;gCActC;YAC5B,QAAQ,EAAE,KAAK,CAAC;gBAAE,UAAU,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAC3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAgGmC;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;EA+BnE"}
@@ -0,0 +1,136 @@
1
+ import { z } from "zod";
2
+ export function createCartManagementTools(createRohlikAPI) {
3
+ return {
4
+ addToCart: {
5
+ name: "add_to_cart",
6
+ definition: {
7
+ title: "Add to Cart",
8
+ description: "Add products to the shopping cart",
9
+ inputSchema: {
10
+ products: z.array(z.object({
11
+ product_id: z.number().describe("The ID of the product to add"),
12
+ quantity: z.number().min(1).describe("Quantity of the product to add")
13
+ })).min(1, "At least one product is required").describe("Array of products to add to cart")
14
+ }
15
+ },
16
+ handler: async ({ products }) => {
17
+ try {
18
+ const api = createRohlikAPI();
19
+ const addedProducts = await api.addToCart(products);
20
+ const successCount = addedProducts.length;
21
+ const totalRequested = products.length;
22
+ const output = `Successfully added ${successCount}/${totalRequested} products to cart.\n` +
23
+ (addedProducts.length > 0 ? `Added product IDs: ${addedProducts.join(', ')}` : 'No products were added.');
24
+ return {
25
+ content: [
26
+ {
27
+ type: "text",
28
+ text: output
29
+ }
30
+ ]
31
+ };
32
+ }
33
+ catch (error) {
34
+ return {
35
+ content: [
36
+ {
37
+ type: "text",
38
+ text: error instanceof Error ? error.message : String(error)
39
+ }
40
+ ],
41
+ isError: true
42
+ };
43
+ }
44
+ }
45
+ },
46
+ getCartContent: {
47
+ name: "get_cart_content",
48
+ definition: {
49
+ title: "Get Cart Content",
50
+ description: "Get the current contents of the shopping cart",
51
+ inputSchema: {}
52
+ },
53
+ handler: async () => {
54
+ try {
55
+ const api = createRohlikAPI();
56
+ const cartContent = await api.getCartContent();
57
+ if (cartContent.total_items === 0) {
58
+ return {
59
+ content: [
60
+ {
61
+ type: "text",
62
+ text: "Your cart is empty."
63
+ }
64
+ ]
65
+ };
66
+ }
67
+ const output = `Cart Summary:
68
+ • Total items: ${cartContent.total_items}
69
+ • Total price: ${cartContent.total_price} CZK
70
+ • Can order: ${cartContent.can_make_order ? 'Yes' : 'No'}
71
+
72
+ Products in cart:
73
+ ${cartContent.products.map(product => `• ${product.name} (${product.brand})\n Quantity: ${product.quantity}\n Price: ${product.price} CZK\n Category: ${product.category_name}\n Cart ID: ${product.cart_item_id}`).join('\n\n')}`;
74
+ return {
75
+ content: [
76
+ {
77
+ type: "text",
78
+ text: output
79
+ }
80
+ ]
81
+ };
82
+ }
83
+ catch (error) {
84
+ return {
85
+ content: [
86
+ {
87
+ type: "text",
88
+ text: error instanceof Error ? error.message : String(error)
89
+ }
90
+ ],
91
+ isError: true
92
+ };
93
+ }
94
+ }
95
+ },
96
+ removeFromCart: {
97
+ name: "remove_from_cart",
98
+ definition: {
99
+ title: "Remove from Cart",
100
+ description: "Remove an item from the shopping cart",
101
+ inputSchema: {
102
+ order_field_id: z.string().min(1, "Order field ID is required").describe("The order field ID of the item to remove (cart_item_id from cart content)")
103
+ }
104
+ },
105
+ handler: async ({ order_field_id }) => {
106
+ try {
107
+ const api = createRohlikAPI();
108
+ const success = await api.removeFromCart(order_field_id);
109
+ const output = success
110
+ ? `Successfully removed item with ID ${order_field_id} from cart.`
111
+ : `Failed to remove item with ID ${order_field_id} from cart.`;
112
+ return {
113
+ content: [
114
+ {
115
+ type: "text",
116
+ text: output
117
+ }
118
+ ]
119
+ };
120
+ }
121
+ catch (error) {
122
+ return {
123
+ content: [
124
+ {
125
+ type: "text",
126
+ text: error instanceof Error ? error.message : String(error)
127
+ }
128
+ ],
129
+ isError: true
130
+ };
131
+ }
132
+ }
133
+ }
134
+ };
135
+ }
136
+ //# sourceMappingURL=cart-management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cart-management.js","sourceRoot":"","sources":["../../src/tools/cart-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,yBAAyB,CAAC,eAAgC;IACxE,OAAO;QACL,SAAS,EAAE;YACT,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE;gBACV,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,mCAAmC;gBAChD,WAAW,EAAE;oBACX,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;wBACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;wBAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;qBACvE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;iBAC5F;aACF;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAEzB,EAAE,EAAE;gBACH,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;oBAC9B,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACpD,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;oBAC1C,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAEvC,MAAM,MAAM,GAAG,sBAAsB,YAAY,IAAI,cAAc,sBAAsB;wBACvF,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;oBAE5G,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,MAAM;6BACb;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAC7D;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED,cAAc,EAAE;YACd,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE;gBACV,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,+CAA+C;gBAC5D,WAAW,EAAE,EAAE;aAChB;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;oBAC9B,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;oBAE/C,IAAI,WAAW,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;wBAClC,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAe;oCACrB,IAAI,EAAE,qBAAqB;iCAC5B;6BACF;yBACF,CAAC;oBACJ,CAAC;oBAED,MAAM,MAAM,GAAG;iBACR,WAAW,CAAC,WAAW;iBACvB,WAAW,CAAC,WAAW;eACzB,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;EAGtD,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACnC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,kBAAkB,OAAO,CAAC,QAAQ,cAAc,OAAO,CAAC,KAAK,qBAAqB,OAAO,CAAC,aAAa,gBAAgB,OAAO,CAAC,YAAY,EAAE,CACjL,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAEP,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,MAAM;6BACb;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAC7D;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;QAED,cAAc,EAAE;YACd,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE;gBACV,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,uCAAuC;gBACpD,WAAW,EAAE;oBACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,QAAQ,CAAC,2EAA2E,CAAC;iBACtJ;aACF;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,cAAc,EAA8B,EAAE,EAAE;gBAChE,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;oBAC9B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBAEzD,MAAM,MAAM,GAAG,OAAO;wBACpB,CAAC,CAAC,qCAAqC,cAAc,aAAa;wBAClE,CAAC,CAAC,iCAAiC,cAAc,aAAa,CAAC;oBAEjE,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,MAAM;6BACb;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAC7D;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { RohlikAPI } from "../rohlik-api.js";
2
+ export declare function createDeliveryInfoTool(createRohlikAPI: () => RohlikAPI): {
3
+ name: string;
4
+ definition: {
5
+ title: string;
6
+ description: string;
7
+ inputSchema: {};
8
+ };
9
+ handler: () => Promise<{
10
+ content: {
11
+ type: "text";
12
+ text: string;
13
+ }[];
14
+ isError?: undefined;
15
+ } | {
16
+ content: {
17
+ type: "text";
18
+ text: string;
19
+ }[];
20
+ isError: boolean;
21
+ }>;
22
+ };
23
+ //# sourceMappingURL=delivery-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-info.d.ts","sourceRoot":"","sources":["../../src/tools/delivery-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;EA4EtE"}
@@ -0,0 +1,69 @@
1
+ export function createDeliveryInfoTool(createRohlikAPI) {
2
+ return {
3
+ name: "get_delivery_info",
4
+ definition: {
5
+ title: "Get Delivery Info",
6
+ description: "Get current delivery information and available time slots",
7
+ inputSchema: {}
8
+ },
9
+ handler: async () => {
10
+ try {
11
+ const api = createRohlikAPI();
12
+ const deliveryInfo = await api.getDeliveryInfo();
13
+ if (!deliveryInfo) {
14
+ return {
15
+ content: [
16
+ {
17
+ type: "text",
18
+ text: "No delivery information available."
19
+ }
20
+ ]
21
+ };
22
+ }
23
+ const formatDeliveryInfo = (data) => {
24
+ const sections = [];
25
+ if (data.nextAvailableDelivery) {
26
+ sections.push(`🚚 NEXT AVAILABLE DELIVERY:
27
+ Date: ${data.nextAvailableDelivery.date || 'Not available'}
28
+ Time: ${data.nextAvailableDelivery.time || 'Not available'}`);
29
+ }
30
+ if (data.deliveryFee !== undefined) {
31
+ sections.push(`💰 DELIVERY FEE: ${data.deliveryFee} CZK`);
32
+ }
33
+ if (data.minimumOrder !== undefined) {
34
+ sections.push(`📦 MINIMUM ORDER: ${data.minimumOrder} CZK`);
35
+ }
36
+ if (data.deliveryArea) {
37
+ sections.push(`📍 DELIVERY AREA: ${data.deliveryArea}`);
38
+ }
39
+ // If no structured data, show raw JSON
40
+ if (sections.length === 0) {
41
+ sections.push(`🚚 DELIVERY INFO:\n${JSON.stringify(data, null, 2)}`);
42
+ }
43
+ return sections.join('\n\n');
44
+ };
45
+ const output = formatDeliveryInfo(deliveryInfo);
46
+ return {
47
+ content: [
48
+ {
49
+ type: "text",
50
+ text: output
51
+ }
52
+ ]
53
+ };
54
+ }
55
+ catch (error) {
56
+ return {
57
+ content: [
58
+ {
59
+ type: "text",
60
+ text: error instanceof Error ? error.message : String(error)
61
+ }
62
+ ],
63
+ isError: true
64
+ };
65
+ }
66
+ }
67
+ };
68
+ }
69
+ //# sourceMappingURL=delivery-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-info.js","sourceRoot":"","sources":["../../src/tools/delivery-info.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,eAAgC;IACrE,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE;YACV,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,2DAA2D;YACxE,WAAW,EAAE,EAAE;SAChB;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;gBAEjD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,oCAAoC;6BAC3C;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,kBAAkB,GAAG,CAAC,IAAS,EAAU,EAAE;oBAC/C,MAAM,QAAQ,GAAa,EAAE,CAAC;oBAE9B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC/B,QAAQ,CAAC,IAAI,CAAC;WACf,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,eAAe;WAClD,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC,CAAC;oBACvD,CAAC;oBAED,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;wBACnC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,WAAW,MAAM,CAAC,CAAC;oBAC5D,CAAC;oBAED,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;wBACpC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,MAAM,CAAC,CAAC;oBAC9D,CAAC;oBAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC1D,CAAC;oBAED,uCAAuC;oBACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,QAAQ,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;oBACvE,CAAC;oBAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC,CAAC;gBAEF,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAEhD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAC7D;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { RohlikAPI } from "../rohlik-api.js";
2
+ export declare function createDeliverySlotsTool(createRohlikAPI: () => RohlikAPI): {
3
+ name: string;
4
+ definition: {
5
+ title: string;
6
+ description: string;
7
+ inputSchema: {};
8
+ };
9
+ handler: () => Promise<{
10
+ content: {
11
+ type: "text";
12
+ text: string;
13
+ }[];
14
+ isError?: undefined;
15
+ } | {
16
+ content: {
17
+ type: "text";
18
+ text: string;
19
+ }[];
20
+ isError: boolean;
21
+ }>;
22
+ };
23
+ //# sourceMappingURL=delivery-slots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-slots.d.ts","sourceRoot":"","sources":["../../src/tools/delivery-slots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;EA2DvE"}
@@ -0,0 +1,55 @@
1
+ export function createDeliverySlotsTool(createRohlikAPI) {
2
+ return {
3
+ name: "get_delivery_slots",
4
+ definition: {
5
+ title: "Get Delivery Slots",
6
+ description: "Get available delivery time slots for your address",
7
+ inputSchema: {}
8
+ },
9
+ handler: async () => {
10
+ try {
11
+ const api = createRohlikAPI();
12
+ const deliverySlots = await api.getDeliverySlots();
13
+ if (!deliverySlots) {
14
+ return {
15
+ content: [
16
+ {
17
+ type: "text",
18
+ text: "No delivery slots available."
19
+ }
20
+ ]
21
+ };
22
+ }
23
+ const formatSlots = (data) => {
24
+ if (Array.isArray(data)) {
25
+ return `⏰ AVAILABLE DELIVERY SLOTS:\n\n${data.map((slot, index) => `${index + 1}. ${slot.date || 'Unknown date'} ${slot.time || slot.timeRange || 'Unknown time'}
26
+ Price: ${slot.price || slot.deliveryFee || 'Free'} CZK
27
+ Available: ${slot.available ? 'Yes' : 'No'}`).join('\n\n')}`;
28
+ }
29
+ return `⏰ DELIVERY SLOTS:\n${JSON.stringify(data, null, 2)}`;
30
+ };
31
+ const output = formatSlots(deliverySlots);
32
+ return {
33
+ content: [
34
+ {
35
+ type: "text",
36
+ text: output
37
+ }
38
+ ]
39
+ };
40
+ }
41
+ catch (error) {
42
+ return {
43
+ content: [
44
+ {
45
+ type: "text",
46
+ text: error instanceof Error ? error.message : String(error)
47
+ }
48
+ ],
49
+ isError: true
50
+ };
51
+ }
52
+ }
53
+ };
54
+ }
55
+ //# sourceMappingURL=delivery-slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-slots.js","sourceRoot":"","sources":["../../src/tools/delivery-slots.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,eAAgC;IACtE,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,UAAU,EAAE;YACV,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,oDAAoD;YACjE,WAAW,EAAE,EAAE;SAChB;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAEnD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,8BAA8B;6BACrC;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,MAAM,WAAW,GAAG,CAAC,IAAS,EAAU,EAAE;oBACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,kCAAkC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAChE,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,cAAc,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,cAAc;YAC/F,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM;gBACpC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAClC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnB,CAAC;oBAED,OAAO,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC/D,CAAC,CAAC;gBAEF,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;gBAE1C,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,MAAM;yBACb;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAC7D;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}