@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.
- package/AUTHENTICATION.md +337 -0
- package/LICENSE +21 -0
- package/README.md +606 -0
- package/dist/client/base-client.d.ts +34 -0
- package/dist/client/base-client.d.ts.map +1 -0
- package/dist/client/base-client.js +117 -0
- package/dist/client/base-client.js.map +1 -0
- package/dist/client/events-client.d.ts +77 -0
- package/dist/client/events-client.d.ts.map +1 -0
- package/dist/client/events-client.js +32 -0
- package/dist/client/events-client.js.map +1 -0
- package/dist/client/ingestion-client.d.ts +76 -0
- package/dist/client/ingestion-client.d.ts.map +1 -0
- package/dist/client/ingestion-client.js +73 -0
- package/dist/client/ingestion-client.js.map +1 -0
- package/dist/client/search-client.d.ts +97 -0
- package/dist/client/search-client.d.ts.map +1 -0
- package/dist/client/search-client.js +18 -0
- package/dist/client/search-client.js.map +1 -0
- package/dist/config.d.ts +99 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +75 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +312 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/events/track-event.d.ts +394 -0
- package/dist/tools/events/track-event.d.ts.map +1 -0
- package/dist/tools/events/track-event.js +80 -0
- package/dist/tools/events/track-event.js.map +1 -0
- package/dist/tools/events/validate-event.d.ts +94 -0
- package/dist/tools/events/validate-event.d.ts.map +1 -0
- package/dist/tools/events/validate-event.js +51 -0
- package/dist/tools/events/validate-event.js.map +1 -0
- package/dist/tools/ingestion/check-status.d.ts +50 -0
- package/dist/tools/ingestion/check-status.d.ts.map +1 -0
- package/dist/tools/ingestion/check-status.js +27 -0
- package/dist/tools/ingestion/check-status.js.map +1 -0
- package/dist/tools/ingestion/create-document.d.ts +50 -0
- package/dist/tools/ingestion/create-document.d.ts.map +1 -0
- package/dist/tools/ingestion/create-document.js +27 -0
- package/dist/tools/ingestion/create-document.js.map +1 -0
- package/dist/tools/ingestion/delete-document.d.ts +50 -0
- package/dist/tools/ingestion/delete-document.d.ts.map +1 -0
- package/dist/tools/ingestion/delete-document.js +27 -0
- package/dist/tools/ingestion/delete-document.js.map +1 -0
- package/dist/tools/ingestion/ingest-from-source.d.ts +234 -0
- package/dist/tools/ingestion/ingest-from-source.d.ts.map +1 -0
- package/dist/tools/ingestion/ingest-from-source.js +48 -0
- package/dist/tools/ingestion/ingest-from-source.js.map +1 -0
- package/dist/tools/ingestion/update-document.d.ts +62 -0
- package/dist/tools/ingestion/update-document.d.ts.map +1 -0
- package/dist/tools/ingestion/update-document.js +34 -0
- package/dist/tools/ingestion/update-document.js.map +1 -0
- package/dist/tools/search/ai-search.d.ts +132 -0
- package/dist/tools/search/ai-search.d.ts.map +1 -0
- package/dist/tools/search/ai-search.js +65 -0
- package/dist/tools/search/ai-search.js.map +1 -0
- package/dist/tools/search/basic-search.d.ts +98 -0
- package/dist/tools/search/basic-search.d.ts.map +1 -0
- package/dist/tools/search/basic-search.js +51 -0
- package/dist/tools/search/basic-search.js.map +1 -0
- package/dist/tools/search/faceted-search.d.ts +114 -0
- package/dist/tools/search/faceted-search.d.ts.map +1 -0
- package/dist/tools/search/faceted-search.js +52 -0
- package/dist/tools/search/faceted-search.js.map +1 -0
- package/dist/tools/search/recommendations.d.ts +62 -0
- package/dist/tools/search/recommendations.d.ts.map +1 -0
- package/dist/tools/search/recommendations.js +50 -0
- package/dist/tools/search/recommendations.js.map +1 -0
- package/dist/utils/auth-manager.d.ts +60 -0
- package/dist/utils/auth-manager.d.ts.map +1 -0
- package/dist/utils/auth-manager.js +184 -0
- package/dist/utils/auth-manager.js.map +1 -0
- package/dist/utils/errors.d.ts +18 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +58 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/schema.d.ts +6 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +14 -0
- package/dist/utils/schema.js.map +1 -0
- 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"}
|