@markstiles/sitecore-search-mcp 1.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 (88) hide show
  1. package/AUTHENTICATION.md +337 -0
  2. package/LICENSE +21 -0
  3. package/README.md +606 -0
  4. package/dist/client/base-client.d.ts +34 -0
  5. package/dist/client/base-client.d.ts.map +1 -0
  6. package/dist/client/base-client.js +117 -0
  7. package/dist/client/base-client.js.map +1 -0
  8. package/dist/client/events-client.d.ts +77 -0
  9. package/dist/client/events-client.d.ts.map +1 -0
  10. package/dist/client/events-client.js +32 -0
  11. package/dist/client/events-client.js.map +1 -0
  12. package/dist/client/ingestion-client.d.ts +76 -0
  13. package/dist/client/ingestion-client.d.ts.map +1 -0
  14. package/dist/client/ingestion-client.js +73 -0
  15. package/dist/client/ingestion-client.js.map +1 -0
  16. package/dist/client/search-client.d.ts +97 -0
  17. package/dist/client/search-client.d.ts.map +1 -0
  18. package/dist/client/search-client.js +18 -0
  19. package/dist/client/search-client.js.map +1 -0
  20. package/dist/config.d.ts +99 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +75 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +312 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/tools/events/track-event.d.ts +394 -0
  29. package/dist/tools/events/track-event.d.ts.map +1 -0
  30. package/dist/tools/events/track-event.js +80 -0
  31. package/dist/tools/events/track-event.js.map +1 -0
  32. package/dist/tools/events/validate-event.d.ts +94 -0
  33. package/dist/tools/events/validate-event.d.ts.map +1 -0
  34. package/dist/tools/events/validate-event.js +51 -0
  35. package/dist/tools/events/validate-event.js.map +1 -0
  36. package/dist/tools/ingestion/check-status.d.ts +50 -0
  37. package/dist/tools/ingestion/check-status.d.ts.map +1 -0
  38. package/dist/tools/ingestion/check-status.js +27 -0
  39. package/dist/tools/ingestion/check-status.js.map +1 -0
  40. package/dist/tools/ingestion/create-document.d.ts +50 -0
  41. package/dist/tools/ingestion/create-document.d.ts.map +1 -0
  42. package/dist/tools/ingestion/create-document.js +27 -0
  43. package/dist/tools/ingestion/create-document.js.map +1 -0
  44. package/dist/tools/ingestion/delete-document.d.ts +50 -0
  45. package/dist/tools/ingestion/delete-document.d.ts.map +1 -0
  46. package/dist/tools/ingestion/delete-document.js +27 -0
  47. package/dist/tools/ingestion/delete-document.js.map +1 -0
  48. package/dist/tools/ingestion/ingest-from-source.d.ts +234 -0
  49. package/dist/tools/ingestion/ingest-from-source.d.ts.map +1 -0
  50. package/dist/tools/ingestion/ingest-from-source.js +48 -0
  51. package/dist/tools/ingestion/ingest-from-source.js.map +1 -0
  52. package/dist/tools/ingestion/update-document.d.ts +62 -0
  53. package/dist/tools/ingestion/update-document.d.ts.map +1 -0
  54. package/dist/tools/ingestion/update-document.js +34 -0
  55. package/dist/tools/ingestion/update-document.js.map +1 -0
  56. package/dist/tools/search/ai-search.d.ts +132 -0
  57. package/dist/tools/search/ai-search.d.ts.map +1 -0
  58. package/dist/tools/search/ai-search.js +65 -0
  59. package/dist/tools/search/ai-search.js.map +1 -0
  60. package/dist/tools/search/basic-search.d.ts +98 -0
  61. package/dist/tools/search/basic-search.d.ts.map +1 -0
  62. package/dist/tools/search/basic-search.js +51 -0
  63. package/dist/tools/search/basic-search.js.map +1 -0
  64. package/dist/tools/search/faceted-search.d.ts +114 -0
  65. package/dist/tools/search/faceted-search.d.ts.map +1 -0
  66. package/dist/tools/search/faceted-search.js +52 -0
  67. package/dist/tools/search/faceted-search.js.map +1 -0
  68. package/dist/tools/search/recommendations.d.ts +62 -0
  69. package/dist/tools/search/recommendations.d.ts.map +1 -0
  70. package/dist/tools/search/recommendations.js +50 -0
  71. package/dist/tools/search/recommendations.js.map +1 -0
  72. package/dist/utils/auth-manager.d.ts +60 -0
  73. package/dist/utils/auth-manager.d.ts.map +1 -0
  74. package/dist/utils/auth-manager.js +184 -0
  75. package/dist/utils/auth-manager.js.map +1 -0
  76. package/dist/utils/errors.d.ts +18 -0
  77. package/dist/utils/errors.d.ts.map +1 -0
  78. package/dist/utils/errors.js +58 -0
  79. package/dist/utils/errors.js.map +1 -0
  80. package/dist/utils/logger.d.ts +12 -0
  81. package/dist/utils/logger.d.ts.map +1 -0
  82. package/dist/utils/logger.js +50 -0
  83. package/dist/utils/logger.js.map +1 -0
  84. package/dist/utils/schema.d.ts +6 -0
  85. package/dist/utils/schema.d.ts.map +1 -0
  86. package/dist/utils/schema.js +14 -0
  87. package/dist/utils/schema.js.map +1 -0
  88. package/package.json +58 -0
@@ -0,0 +1,132 @@
1
+ import { z } from 'zod';
2
+ import { SearchClient } from '../../client/search-client.js';
3
+ /**
4
+ * Schema for AI-powered questions and answers
5
+ */
6
+ export declare const AiSearchSchema: z.ZodObject<{
7
+ domainId: z.ZodString;
8
+ rfkId: z.ZodString;
9
+ keyphrase: z.ZodString;
10
+ entity: z.ZodOptional<z.ZodString>;
11
+ exact_answer: z.ZodOptional<z.ZodObject<{
12
+ include_sources: z.ZodOptional<z.ZodBoolean>;
13
+ query_types: z.ZodOptional<z.ZodArray<z.ZodEnum<["question", "statement", "keyword"]>, "many">>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ include_sources?: boolean | undefined;
16
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
17
+ }, {
18
+ include_sources?: boolean | undefined;
19
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
20
+ }>>;
21
+ related_questions: z.ZodOptional<z.ZodObject<{
22
+ include_sources: z.ZodOptional<z.ZodBoolean>;
23
+ limit: z.ZodOptional<z.ZodNumber>;
24
+ offset: z.ZodOptional<z.ZodNumber>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ limit?: number | undefined;
27
+ include_sources?: boolean | undefined;
28
+ offset?: number | undefined;
29
+ }, {
30
+ limit?: number | undefined;
31
+ include_sources?: boolean | undefined;
32
+ offset?: number | undefined;
33
+ }>>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ domainId: string;
36
+ rfkId: string;
37
+ keyphrase: string;
38
+ entity?: string | undefined;
39
+ exact_answer?: {
40
+ include_sources?: boolean | undefined;
41
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
42
+ } | undefined;
43
+ related_questions?: {
44
+ limit?: number | undefined;
45
+ include_sources?: boolean | undefined;
46
+ offset?: number | undefined;
47
+ } | undefined;
48
+ }, {
49
+ domainId: string;
50
+ rfkId: string;
51
+ keyphrase: string;
52
+ entity?: string | undefined;
53
+ exact_answer?: {
54
+ include_sources?: boolean | undefined;
55
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
56
+ } | undefined;
57
+ related_questions?: {
58
+ limit?: number | undefined;
59
+ include_sources?: boolean | undefined;
60
+ offset?: number | undefined;
61
+ } | undefined;
62
+ }>;
63
+ export type AiSearchInput = z.infer<typeof AiSearchSchema>;
64
+ /**
65
+ * Get AI-powered answers or related questions
66
+ */
67
+ export declare function getAiSearchResults(client: SearchClient, input: unknown): Promise<import("../../client/search-client.js").SearchResponse>;
68
+ /**
69
+ * MCP Tool Definition for AI search features
70
+ */
71
+ export declare const aiSearchTool: {
72
+ name: string;
73
+ description: string;
74
+ inputSchema: z.ZodObject<{
75
+ domainId: z.ZodString;
76
+ rfkId: z.ZodString;
77
+ keyphrase: z.ZodString;
78
+ entity: z.ZodOptional<z.ZodString>;
79
+ exact_answer: z.ZodOptional<z.ZodObject<{
80
+ include_sources: z.ZodOptional<z.ZodBoolean>;
81
+ query_types: z.ZodOptional<z.ZodArray<z.ZodEnum<["question", "statement", "keyword"]>, "many">>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ include_sources?: boolean | undefined;
84
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
85
+ }, {
86
+ include_sources?: boolean | undefined;
87
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
88
+ }>>;
89
+ related_questions: z.ZodOptional<z.ZodObject<{
90
+ include_sources: z.ZodOptional<z.ZodBoolean>;
91
+ limit: z.ZodOptional<z.ZodNumber>;
92
+ offset: z.ZodOptional<z.ZodNumber>;
93
+ }, "strip", z.ZodTypeAny, {
94
+ limit?: number | undefined;
95
+ include_sources?: boolean | undefined;
96
+ offset?: number | undefined;
97
+ }, {
98
+ limit?: number | undefined;
99
+ include_sources?: boolean | undefined;
100
+ offset?: number | undefined;
101
+ }>>;
102
+ }, "strip", z.ZodTypeAny, {
103
+ domainId: string;
104
+ rfkId: string;
105
+ keyphrase: string;
106
+ entity?: string | undefined;
107
+ exact_answer?: {
108
+ include_sources?: boolean | undefined;
109
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
110
+ } | undefined;
111
+ related_questions?: {
112
+ limit?: number | undefined;
113
+ include_sources?: boolean | undefined;
114
+ offset?: number | undefined;
115
+ } | undefined;
116
+ }, {
117
+ domainId: string;
118
+ rfkId: string;
119
+ keyphrase: string;
120
+ entity?: string | undefined;
121
+ exact_answer?: {
122
+ include_sources?: boolean | undefined;
123
+ query_types?: ("question" | "statement" | "keyword")[] | undefined;
124
+ } | undefined;
125
+ related_questions?: {
126
+ limit?: number | undefined;
127
+ include_sources?: boolean | undefined;
128
+ offset?: number | undefined;
129
+ } | undefined;
130
+ }>;
131
+ };
132
+ //# sourceMappingURL=ai-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-search.d.ts","sourceRoot":"","sources":["../../../src/tools/search/ai-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAiB,MAAM,+BAA+B,CAAC;AAoB5E;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,mEA8Bf;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIxB,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ import { validateInput } from '../../utils/errors.js';
3
+ /**
4
+ * Schema for exact answer configuration
5
+ */
6
+ const ExactAnswerSchema = z.object({
7
+ include_sources: z.boolean().optional().describe('Whether to return specific attributes from documents used to generate the answer'),
8
+ query_types: z.array(z.enum(['question', 'statement', 'keyword'])).optional().describe('Type of visitor query to answer (question, statement, or keyword)'),
9
+ });
10
+ /**
11
+ * Schema for related questions configuration
12
+ */
13
+ const RelatedQuestionsSchema = z.object({
14
+ include_sources: z.boolean().optional().describe('Include attributes from documents used to generate the answer'),
15
+ limit: z.number().int().min(1).max(100).optional().describe('Maximum number of question-answer pairs to return'),
16
+ offset: z.number().int().min(0).optional().describe('Number of items to skip'),
17
+ });
18
+ /**
19
+ * Schema for AI-powered questions and answers
20
+ */
21
+ export const AiSearchSchema = z.object({
22
+ domainId: z.string().describe('Sitecore domain ID'),
23
+ rfkId: z.string().describe('RFK widget ID for questions (must be a questions widget type)'),
24
+ keyphrase: z.string().min(1).max(100).describe('Search query for AI processing'),
25
+ entity: z.string().optional().describe('Entity type'),
26
+ exact_answer: ExactAnswerSchema.optional().describe('Settings to get a single answer to the visitor query'),
27
+ related_questions: RelatedQuestionsSchema.optional().describe('Settings to get AI-generated question-and-answer pairs'),
28
+ });
29
+ /**
30
+ * Get AI-powered answers or related questions
31
+ */
32
+ export async function getAiSearchResults(client, input) {
33
+ const params = validateInput(AiSearchSchema, input);
34
+ // Build the questions object for the API
35
+ const questions = {
36
+ keyphrase: params.keyphrase,
37
+ };
38
+ if (params.exact_answer) {
39
+ questions.exact_answer = params.exact_answer;
40
+ }
41
+ if (params.related_questions) {
42
+ questions.related_questions = params.related_questions;
43
+ }
44
+ const request = {
45
+ widget: {
46
+ items: [
47
+ {
48
+ rfk_id: params.rfkId,
49
+ entity: params.entity,
50
+ },
51
+ ],
52
+ },
53
+ questions,
54
+ };
55
+ return client.search(params.domainId, request);
56
+ }
57
+ /**
58
+ * MCP Tool Definition for AI search features
59
+ */
60
+ export const aiSearchTool = {
61
+ name: 'sitecore_ai_search',
62
+ description: 'Get AI-powered exact answers or related questions for a search query. You must pass at least one of exact_answer or related_questions. Use a questions widget type in rfkId.',
63
+ inputSchema: AiSearchSchema,
64
+ };
65
+ //# sourceMappingURL=ai-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-search.js","sourceRoot":"","sources":["../../../src/tools/search/ai-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { z } from 'zod';
2
+ import { SearchClient } from '../../client/search-client.js';
3
+ /**
4
+ * Schema for basic search query
5
+ */
6
+ export declare const BasicSearchSchema: z.ZodObject<{
7
+ domainId: z.ZodString;
8
+ rfkId: z.ZodString;
9
+ keyphrase: z.ZodOptional<z.ZodString>;
10
+ entity: z.ZodOptional<z.ZodString>;
11
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
12
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
13
+ locale: z.ZodOptional<z.ZodObject<{
14
+ language: z.ZodOptional<z.ZodString>;
15
+ country: z.ZodOptional<z.ZodString>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ language?: string | undefined;
18
+ country?: string | undefined;
19
+ }, {
20
+ language?: string | undefined;
21
+ country?: string | undefined;
22
+ }>>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ domainId: string;
25
+ rfkId: string;
26
+ page: number;
27
+ limit: number;
28
+ entity?: string | undefined;
29
+ keyphrase?: string | undefined;
30
+ locale?: {
31
+ language?: string | undefined;
32
+ country?: string | undefined;
33
+ } | undefined;
34
+ }, {
35
+ domainId: string;
36
+ rfkId: string;
37
+ entity?: string | undefined;
38
+ keyphrase?: string | undefined;
39
+ page?: number | undefined;
40
+ limit?: number | undefined;
41
+ locale?: {
42
+ language?: string | undefined;
43
+ country?: string | undefined;
44
+ } | undefined;
45
+ }>;
46
+ export type BasicSearchInput = z.infer<typeof BasicSearchSchema>;
47
+ /**
48
+ * Execute a basic search query
49
+ */
50
+ export declare function executeBasicSearch(client: SearchClient, input: unknown): Promise<import("../../client/search-client.js").SearchResponse>;
51
+ /**
52
+ * MCP Tool Definition for basic search
53
+ */
54
+ export declare const basicSearchTool: {
55
+ name: string;
56
+ description: string;
57
+ inputSchema: z.ZodObject<{
58
+ domainId: z.ZodString;
59
+ rfkId: z.ZodString;
60
+ keyphrase: z.ZodOptional<z.ZodString>;
61
+ entity: z.ZodOptional<z.ZodString>;
62
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
63
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
64
+ locale: z.ZodOptional<z.ZodObject<{
65
+ language: z.ZodOptional<z.ZodString>;
66
+ country: z.ZodOptional<z.ZodString>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ language?: string | undefined;
69
+ country?: string | undefined;
70
+ }, {
71
+ language?: string | undefined;
72
+ country?: string | undefined;
73
+ }>>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ domainId: string;
76
+ rfkId: string;
77
+ page: number;
78
+ limit: number;
79
+ entity?: string | undefined;
80
+ keyphrase?: string | undefined;
81
+ locale?: {
82
+ language?: string | undefined;
83
+ country?: string | undefined;
84
+ } | undefined;
85
+ }, {
86
+ domainId: string;
87
+ rfkId: string;
88
+ entity?: string | undefined;
89
+ keyphrase?: string | undefined;
90
+ page?: number | undefined;
91
+ limit?: number | undefined;
92
+ locale?: {
93
+ language?: string | undefined;
94
+ country?: string | undefined;
95
+ } | undefined;
96
+ }>;
97
+ };
98
+ //# sourceMappingURL=basic-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-search.d.ts","sourceRoot":"","sources":["../../../src/tools/search/basic-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAiB,MAAM,+BAA+B,CAAC;AAG5E;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,mEAwBf;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI3B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { z } from 'zod';
2
+ import { validateInput } from '../../utils/errors.js';
3
+ /**
4
+ * Schema for basic search query
5
+ */
6
+ export const BasicSearchSchema = z.object({
7
+ domainId: z.string().describe('Sitecore domain ID'),
8
+ rfkId: z.string().describe('RFK widget ID'),
9
+ keyphrase: z.string().optional().describe('Search query text'),
10
+ entity: z.string().optional().describe('Entity type to search (e.g., content, product)'),
11
+ page: z.number().optional().default(1).describe('Page number for pagination'),
12
+ limit: z.number().optional().default(24).describe('Number of results per page'),
13
+ locale: z.object({
14
+ language: z.string().optional(),
15
+ country: z.string().optional(),
16
+ }).optional().describe('Locale settings for the search'),
17
+ });
18
+ /**
19
+ * Execute a basic search query
20
+ */
21
+ export async function executeBasicSearch(client, input) {
22
+ const params = validateInput(BasicSearchSchema, input);
23
+ const request = {
24
+ widget: {
25
+ items: [
26
+ {
27
+ rfk_id: params.rfkId,
28
+ entity: params.entity,
29
+ search: {
30
+ query: params.keyphrase ? { keyphrase: params.keyphrase } : undefined,
31
+ offset: ((params.page || 1) - 1) * (params.limit || 24),
32
+ limit: params.limit || 24,
33
+ },
34
+ },
35
+ ],
36
+ },
37
+ context: params.locale ? {
38
+ locale: params.locale,
39
+ } : undefined,
40
+ };
41
+ return client.search(params.domainId, request);
42
+ }
43
+ /**
44
+ * MCP Tool Definition for basic search
45
+ */
46
+ export const basicSearchTool = {
47
+ name: 'sitecore_search_query',
48
+ description: 'Execute a search query against Sitecore Search API. Returns search results with content items matching the query.',
49
+ inputSchema: BasicSearchSchema,
50
+ };
51
+ //# sourceMappingURL=basic-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-search.js","sourceRoot":"","sources":["../../../src/tools/search/basic-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IACxF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC7E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC/E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CACzD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAoB,EACpB,KAAc;IAEd,MAAM,MAAM,GAAG,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAkB;QAC7B,MAAM,EAAE;YACN,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,MAAM,CAAC,KAAK;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,MAAM,EAAE;wBACN,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;wBACrE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;wBACvD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;qBAC1B;iBACF;aACF;SACF;QACD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,mHAAmH;IAChI,WAAW,EAAE,iBAAiB;CAC/B,CAAC"}
@@ -0,0 +1,114 @@
1
+ import { z } from 'zod';
2
+ import { SearchClient } from '../../client/search-client.js';
3
+ /**
4
+ * Schema for faceted search with filtering
5
+ */
6
+ export declare const FacetedSearchSchema: z.ZodObject<{
7
+ domainId: z.ZodString;
8
+ rfkId: z.ZodString;
9
+ keyphrase: z.ZodOptional<z.ZodString>;
10
+ entity: z.ZodOptional<z.ZodString>;
11
+ facets: z.ZodOptional<z.ZodArray<z.ZodObject<{
12
+ name: z.ZodString;
13
+ type: z.ZodOptional<z.ZodEnum<["value", "range", "hierarchy"]>>;
14
+ values: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ name: string;
17
+ values?: string[] | undefined;
18
+ type?: "value" | "range" | "hierarchy" | undefined;
19
+ }, {
20
+ name: string;
21
+ values?: string[] | undefined;
22
+ type?: "value" | "range" | "hierarchy" | undefined;
23
+ }>, "many">>;
24
+ sort: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["asc", "desc"]>>>;
25
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
26
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ domainId: string;
29
+ rfkId: string;
30
+ page: number;
31
+ limit: number;
32
+ sort?: Record<string, "asc" | "desc"> | undefined;
33
+ entity?: string | undefined;
34
+ keyphrase?: string | undefined;
35
+ facets?: {
36
+ name: string;
37
+ values?: string[] | undefined;
38
+ type?: "value" | "range" | "hierarchy" | undefined;
39
+ }[] | undefined;
40
+ }, {
41
+ domainId: string;
42
+ rfkId: string;
43
+ sort?: Record<string, "asc" | "desc"> | undefined;
44
+ entity?: string | undefined;
45
+ keyphrase?: string | undefined;
46
+ page?: number | undefined;
47
+ limit?: number | undefined;
48
+ facets?: {
49
+ name: string;
50
+ values?: string[] | undefined;
51
+ type?: "value" | "range" | "hierarchy" | undefined;
52
+ }[] | undefined;
53
+ }>;
54
+ export type FacetedSearchInput = z.infer<typeof FacetedSearchSchema>;
55
+ /**
56
+ * Execute a faceted search query with filters
57
+ */
58
+ export declare function executeFacetedSearch(client: SearchClient, input: unknown): Promise<import("../../client/search-client.js").SearchResponse>;
59
+ /**
60
+ * MCP Tool Definition for faceted search
61
+ */
62
+ export declare const facetedSearchTool: {
63
+ name: string;
64
+ description: string;
65
+ inputSchema: z.ZodObject<{
66
+ domainId: z.ZodString;
67
+ rfkId: z.ZodString;
68
+ keyphrase: z.ZodOptional<z.ZodString>;
69
+ entity: z.ZodOptional<z.ZodString>;
70
+ facets: z.ZodOptional<z.ZodArray<z.ZodObject<{
71
+ name: z.ZodString;
72
+ type: z.ZodOptional<z.ZodEnum<["value", "range", "hierarchy"]>>;
73
+ values: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ name: string;
76
+ values?: string[] | undefined;
77
+ type?: "value" | "range" | "hierarchy" | undefined;
78
+ }, {
79
+ name: string;
80
+ values?: string[] | undefined;
81
+ type?: "value" | "range" | "hierarchy" | undefined;
82
+ }>, "many">>;
83
+ sort: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["asc", "desc"]>>>;
84
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
85
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ domainId: string;
88
+ rfkId: string;
89
+ page: number;
90
+ limit: number;
91
+ sort?: Record<string, "asc" | "desc"> | undefined;
92
+ entity?: string | undefined;
93
+ keyphrase?: string | undefined;
94
+ facets?: {
95
+ name: string;
96
+ values?: string[] | undefined;
97
+ type?: "value" | "range" | "hierarchy" | undefined;
98
+ }[] | undefined;
99
+ }, {
100
+ domainId: string;
101
+ rfkId: string;
102
+ sort?: Record<string, "asc" | "desc"> | undefined;
103
+ entity?: string | undefined;
104
+ keyphrase?: string | undefined;
105
+ page?: number | undefined;
106
+ limit?: number | undefined;
107
+ facets?: {
108
+ name: string;
109
+ values?: string[] | undefined;
110
+ type?: "value" | "range" | "hierarchy" | undefined;
111
+ }[] | undefined;
112
+ }>;
113
+ };
114
+ //# sourceMappingURL=faceted-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faceted-search.d.ts","sourceRoot":"","sources":["../../../src/tools/search/faceted-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAiB,MAAM,+BAA+B,CAAC;AAG5E;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,mEAuBf;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI7B,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ import { validateInput } from '../../utils/errors.js';
3
+ /**
4
+ * Schema for faceted search with filtering
5
+ */
6
+ export const FacetedSearchSchema = z.object({
7
+ domainId: z.string().describe('Sitecore domain ID'),
8
+ rfkId: z.string().describe('RFK widget ID'),
9
+ keyphrase: z.string().optional().describe('Search query text'),
10
+ entity: z.string().optional().describe('Entity type to search'),
11
+ facets: z.array(z.object({
12
+ name: z.string().describe('Facet field name'),
13
+ type: z.enum(['value', 'range', 'hierarchy']).optional().describe('Facet type'),
14
+ values: z.array(z.string()).optional().describe('Selected facet values for filtering'),
15
+ })).optional().describe('Facet configuration and filters'),
16
+ sort: z.record(z.enum(['asc', 'desc'])).optional().describe('Sort criteria'),
17
+ page: z.number().optional().default(1),
18
+ limit: z.number().optional().default(24),
19
+ });
20
+ /**
21
+ * Execute a faceted search query with filters
22
+ */
23
+ export async function executeFacetedSearch(client, input) {
24
+ const params = validateInput(FacetedSearchSchema, input);
25
+ const request = {
26
+ widget: {
27
+ items: [
28
+ {
29
+ rfk_id: params.rfkId,
30
+ entity: params.entity,
31
+ search: {
32
+ query: params.keyphrase ? { keyphrase: params.keyphrase } : undefined,
33
+ facet: params.facets,
34
+ sort: params.sort,
35
+ offset: ((params.page || 1) - 1) * (params.limit || 24),
36
+ limit: params.limit || 24,
37
+ },
38
+ },
39
+ ],
40
+ },
41
+ };
42
+ return client.search(params.domainId, request);
43
+ }
44
+ /**
45
+ * MCP Tool Definition for faceted search
46
+ */
47
+ export const facetedSearchTool = {
48
+ name: 'sitecore_search_with_facets',
49
+ description: 'Execute a faceted search query with filtering and sorting. Returns search results with facet aggregations for filtering UI.',
50
+ inputSchema: FacetedSearchSchema,
51
+ };
52
+ //# sourceMappingURL=faceted-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faceted-search.js","sourceRoot":"","sources":["../../../src/tools/search/faceted-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC9D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC/D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC/E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACvF,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAoB,EACpB,KAAc;IAEd,MAAM,MAAM,GAAG,aAAa,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAkB;QAC7B,MAAM,EAAE;YACN,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,MAAM,CAAC,KAAK;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,MAAM,EAAE;wBACN,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;wBACrE,KAAK,EAAE,MAAM,CAAC,MAAM;wBACpB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;wBACvD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;qBAC1B;iBACF;aACF;SACF;KACF,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,6HAA6H;IAC1I,WAAW,EAAE,mBAAmB;CACjC,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ import { SearchClient } from '../../client/search-client.js';
3
+ /**
4
+ * Schema for recommendations
5
+ */
6
+ export declare const RecommendationsSchema: z.ZodObject<{
7
+ domainId: z.ZodString;
8
+ rfkId: z.ZodString;
9
+ recommendationId: z.ZodOptional<z.ZodString>;
10
+ entity: z.ZodOptional<z.ZodString>;
11
+ userId: z.ZodOptional<z.ZodString>;
12
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ domainId: string;
15
+ rfkId: string;
16
+ limit: number;
17
+ entity?: string | undefined;
18
+ recommendationId?: string | undefined;
19
+ userId?: string | undefined;
20
+ }, {
21
+ domainId: string;
22
+ rfkId: string;
23
+ entity?: string | undefined;
24
+ limit?: number | undefined;
25
+ recommendationId?: string | undefined;
26
+ userId?: string | undefined;
27
+ }>;
28
+ export type RecommendationsInput = z.infer<typeof RecommendationsSchema>;
29
+ /**
30
+ * Get personalized recommendations
31
+ */
32
+ export declare function getRecommendations(client: SearchClient, input: unknown): Promise<import("../../client/search-client.js").SearchResponse>;
33
+ /**
34
+ * MCP Tool Definition for recommendations
35
+ */
36
+ export declare const recommendationsTool: {
37
+ name: string;
38
+ description: string;
39
+ inputSchema: z.ZodObject<{
40
+ domainId: z.ZodString;
41
+ rfkId: z.ZodString;
42
+ recommendationId: z.ZodOptional<z.ZodString>;
43
+ entity: z.ZodOptional<z.ZodString>;
44
+ userId: z.ZodOptional<z.ZodString>;
45
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ domainId: string;
48
+ rfkId: string;
49
+ limit: number;
50
+ entity?: string | undefined;
51
+ recommendationId?: string | undefined;
52
+ userId?: string | undefined;
53
+ }, {
54
+ domainId: string;
55
+ rfkId: string;
56
+ entity?: string | undefined;
57
+ limit?: number | undefined;
58
+ recommendationId?: string | undefined;
59
+ userId?: string | undefined;
60
+ }>;
61
+ };
62
+ //# sourceMappingURL=recommendations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendations.d.ts","sourceRoot":"","sources":["../../../src/tools/search/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAiB,MAAM,+BAA+B,CAAC;AAG5E;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAOhC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEzE;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,mEA2Bf;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;CAI/B,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import { validateInput } from '../../utils/errors.js';
3
+ /**
4
+ * Schema for recommendations
5
+ */
6
+ export const RecommendationsSchema = z.object({
7
+ domainId: z.string().describe('Sitecore domain ID'),
8
+ rfkId: z.string().describe('RFK widget ID'),
9
+ recommendationId: z.string().optional().describe('Recipe-based recommendation ID'),
10
+ entity: z.string().optional().describe('Entity type'),
11
+ userId: z.string().optional().describe('User UUID for personalized recommendations'),
12
+ limit: z.number().optional().default(10).describe('Number of recommendations'),
13
+ });
14
+ /**
15
+ * Get personalized recommendations
16
+ */
17
+ export async function getRecommendations(client, input) {
18
+ const params = validateInput(RecommendationsSchema, input);
19
+ const request = {
20
+ widget: {
21
+ items: [
22
+ {
23
+ rfk_id: params.rfkId,
24
+ entity: params.entity,
25
+ recommendation: {
26
+ id: params.recommendationId,
27
+ },
28
+ search: {
29
+ limit: params.limit,
30
+ },
31
+ },
32
+ ],
33
+ },
34
+ context: params.userId ? {
35
+ user: {
36
+ uuid: params.userId,
37
+ },
38
+ } : undefined,
39
+ };
40
+ return client.search(params.domainId, request);
41
+ }
42
+ /**
43
+ * MCP Tool Definition for recommendations
44
+ */
45
+ export const recommendationsTool = {
46
+ name: 'sitecore_get_recommendations',
47
+ description: 'Get personalized content or product recommendations based on user behavior and configured recipes.',
48
+ inputSchema: RecommendationsSchema,
49
+ };
50
+ //# sourceMappingURL=recommendations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendations.js","sourceRoot":"","sources":["../../../src/tools/search/recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC3C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAClF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACpF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC/E,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAoB,EACpB,KAAc;IAEd,MAAM,MAAM,GAAG,aAAa,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAkB;QAC7B,MAAM,EAAE;YACN,KAAK,EAAE;gBACL;oBACE,MAAM,EAAE,MAAM,CAAC,KAAK;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,cAAc,EAAE;wBACd,EAAE,EAAE,MAAM,CAAC,gBAAgB;qBAC5B;oBACD,MAAM,EAAE;wBACN,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB;iBACF;aACF;SACF;QACD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACvB,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,MAAM;aACpB;SACF,CAAC,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,8BAA8B;IACpC,WAAW,EAAE,oGAAoG;IACjH,WAAW,EAAE,qBAAqB;CACnC,CAAC"}