@mweinbach/apple-docs-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/LICENSE +21 -0
- package/README.md +560 -0
- package/dist/constants/browser-headers.d.ts +48 -0
- package/dist/constants/browser-headers.d.ts.map +1 -0
- package/dist/constants/browser-headers.js +166 -0
- package/dist/constants/browser-headers.js.map +1 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +215 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/analyze-api.schema.d.ts +42 -0
- package/dist/schemas/analyze-api.schema.d.ts.map +1 -0
- package/dist/schemas/analyze-api.schema.js +23 -0
- package/dist/schemas/analyze-api.schema.js.map +1 -0
- package/dist/schemas/apple-docs.schema.d.ts +18 -0
- package/dist/schemas/apple-docs.schema.d.ts.map +1 -0
- package/dist/schemas/apple-docs.schema.js +10 -0
- package/dist/schemas/apple-docs.schema.js.map +1 -0
- package/dist/schemas/doc-content.schema.d.ts +24 -0
- package/dist/schemas/doc-content.schema.d.ts.map +1 -0
- package/dist/schemas/doc-content.schema.js +10 -0
- package/dist/schemas/doc-content.schema.js.map +1 -0
- package/dist/schemas/documentation-updates.schema.d.ts +27 -0
- package/dist/schemas/documentation-updates.schema.d.ts.map +1 -0
- package/dist/schemas/documentation-updates.schema.js +12 -0
- package/dist/schemas/documentation-updates.schema.js.map +1 -0
- package/dist/schemas/framework-symbols.schema.d.ts +24 -0
- package/dist/schemas/framework-symbols.schema.d.ts.map +1 -0
- package/dist/schemas/framework-symbols.schema.js +11 -0
- package/dist/schemas/framework-symbols.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +15 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +15 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/platform-compatibility.schema.d.ts +18 -0
- package/dist/schemas/platform-compatibility.schema.d.ts.map +1 -0
- package/dist/schemas/platform-compatibility.schema.js +8 -0
- package/dist/schemas/platform-compatibility.schema.js.map +1 -0
- package/dist/schemas/references.schema.d.ts +18 -0
- package/dist/schemas/references.schema.d.ts.map +1 -0
- package/dist/schemas/references.schema.js +9 -0
- package/dist/schemas/references.schema.js.map +1 -0
- package/dist/schemas/related-apis.schema.d.ts +21 -0
- package/dist/schemas/related-apis.schema.d.ts.map +1 -0
- package/dist/schemas/related-apis.schema.js +9 -0
- package/dist/schemas/related-apis.schema.js.map +1 -0
- package/dist/schemas/sample-code.schema.d.ts +21 -0
- package/dist/schemas/sample-code.schema.d.ts.map +1 -0
- package/dist/schemas/sample-code.schema.js +10 -0
- package/dist/schemas/sample-code.schema.js.map +1 -0
- package/dist/schemas/search.schema.d.ts +15 -0
- package/dist/schemas/search.schema.d.ts.map +1 -0
- package/dist/schemas/search.schema.js +8 -0
- package/dist/schemas/search.schema.js.map +1 -0
- package/dist/schemas/similar-apis.schema.d.ts +21 -0
- package/dist/schemas/similar-apis.schema.d.ts.map +1 -0
- package/dist/schemas/similar-apis.schema.js +9 -0
- package/dist/schemas/similar-apis.schema.js.map +1 -0
- package/dist/schemas/technologies.schema.d.ts +21 -0
- package/dist/schemas/technologies.schema.d.ts.map +1 -0
- package/dist/schemas/technologies.schema.js +10 -0
- package/dist/schemas/technologies.schema.js.map +1 -0
- package/dist/schemas/technology-overviews.schema.d.ts +24 -0
- package/dist/schemas/technology-overviews.schema.d.ts.map +1 -0
- package/dist/schemas/technology-overviews.schema.js +11 -0
- package/dist/schemas/technology-overviews.schema.js.map +1 -0
- package/dist/schemas/wwdc.schemas.d.ts +208 -0
- package/dist/schemas/wwdc.schemas.d.ts.map +1 -0
- package/dist/schemas/wwdc.schemas.js +97 -0
- package/dist/schemas/wwdc.schemas.js.map +1 -0
- package/dist/tools/definitions.d.ts +10 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +690 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/doc-fetcher.d.ts +19 -0
- package/dist/tools/doc-fetcher.d.ts.map +1 -0
- package/dist/tools/doc-fetcher.js +487 -0
- package/dist/tools/doc-fetcher.js.map +1 -0
- package/dist/tools/doc-formatter.d.ts +69 -0
- package/dist/tools/doc-formatter.d.ts.map +1 -0
- package/dist/tools/doc-formatter.js +208 -0
- package/dist/tools/doc-formatter.js.map +1 -0
- package/dist/tools/find-similar-apis.d.ts +5 -0
- package/dist/tools/find-similar-apis.d.ts.map +1 -0
- package/dist/tools/find-similar-apis.js +275 -0
- package/dist/tools/find-similar-apis.js.map +1 -0
- package/dist/tools/get-documentation-updates.d.ts +5 -0
- package/dist/tools/get-documentation-updates.d.ts.map +1 -0
- package/dist/tools/get-documentation-updates.js +244 -0
- package/dist/tools/get-documentation-updates.js.map +1 -0
- package/dist/tools/get-platform-compatibility.d.ts +5 -0
- package/dist/tools/get-platform-compatibility.d.ts.map +1 -0
- package/dist/tools/get-platform-compatibility.js +205 -0
- package/dist/tools/get-platform-compatibility.js.map +1 -0
- package/dist/tools/get-related-apis.d.ts +5 -0
- package/dist/tools/get-related-apis.d.ts.map +1 -0
- package/dist/tools/get-related-apis.js +155 -0
- package/dist/tools/get-related-apis.js.map +1 -0
- package/dist/tools/get-sample-code.d.ts +5 -0
- package/dist/tools/get-sample-code.d.ts.map +1 -0
- package/dist/tools/get-sample-code.js +375 -0
- package/dist/tools/get-sample-code.js.map +1 -0
- package/dist/tools/get-technology-overviews.d.ts +5 -0
- package/dist/tools/get-technology-overviews.d.ts.map +1 -0
- package/dist/tools/get-technology-overviews.js +306 -0
- package/dist/tools/get-technology-overviews.js.map +1 -0
- package/dist/tools/handlers.d.ts +29 -0
- package/dist/tools/handlers.d.ts.map +1 -0
- package/dist/tools/handlers.js +350 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/list-technologies.d.ts +5 -0
- package/dist/tools/list-technologies.d.ts.map +1 -0
- package/dist/tools/list-technologies.js +165 -0
- package/dist/tools/list-technologies.js.map +1 -0
- package/dist/tools/resolve-references-batch.d.ts +5 -0
- package/dist/tools/resolve-references-batch.d.ts.map +1 -0
- package/dist/tools/resolve-references-batch.js +199 -0
- package/dist/tools/resolve-references-batch.js.map +1 -0
- package/dist/tools/search-framework-symbols.d.ts +7 -0
- package/dist/tools/search-framework-symbols.d.ts.map +1 -0
- package/dist/tools/search-framework-symbols.js +235 -0
- package/dist/tools/search-framework-symbols.js.map +1 -0
- package/dist/tools/search-parser.d.ts +15 -0
- package/dist/tools/search-parser.d.ts.map +1 -0
- package/dist/tools/search-parser.js +188 -0
- package/dist/tools/search-parser.js.map +1 -0
- package/dist/tools/search-result-parser.d.ts +52 -0
- package/dist/tools/search-result-parser.d.ts.map +1 -0
- package/dist/tools/search-result-parser.js +137 -0
- package/dist/tools/search-result-parser.js.map +1 -0
- package/dist/tools/tools-guide.d.ts +124 -0
- package/dist/tools/tools-guide.d.ts.map +1 -0
- package/dist/tools/tools-guide.js +389 -0
- package/dist/tools/tools-guide.js.map +1 -0
- package/dist/tools/wwdc/content-extractor.d.ts +9 -0
- package/dist/tools/wwdc/content-extractor.d.ts.map +1 -0
- package/dist/tools/wwdc/content-extractor.js +520 -0
- package/dist/tools/wwdc/content-extractor.js.map +1 -0
- package/dist/tools/wwdc/topics-extractor.d.ts +32 -0
- package/dist/tools/wwdc/topics-extractor.d.ts.map +1 -0
- package/dist/tools/wwdc/topics-extractor.js +146 -0
- package/dist/tools/wwdc/topics-extractor.js.map +1 -0
- package/dist/tools/wwdc/video-list-extractor.d.ts +13 -0
- package/dist/tools/wwdc/video-list-extractor.d.ts.map +1 -0
- package/dist/tools/wwdc/video-list-extractor.js +238 -0
- package/dist/tools/wwdc/video-list-extractor.js.map +1 -0
- package/dist/tools/wwdc/wwdc-handlers.d.ts +32 -0
- package/dist/tools/wwdc/wwdc-handlers.d.ts.map +1 -0
- package/dist/tools/wwdc/wwdc-handlers.js +791 -0
- package/dist/tools/wwdc/wwdc-handlers.js.map +1 -0
- package/dist/types/apple-docs.d.ts +112 -0
- package/dist/types/apple-docs.d.ts.map +1 -0
- package/dist/types/apple-docs.js +5 -0
- package/dist/types/apple-docs.js.map +1 -0
- package/dist/types/cache.d.ts +28 -0
- package/dist/types/cache.d.ts.map +1 -0
- package/dist/types/cache.js +5 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/content-sections.d.ts +37 -0
- package/dist/types/content-sections.d.ts.map +1 -0
- package/dist/types/content-sections.js +5 -0
- package/dist/types/content-sections.js.map +1 -0
- package/dist/types/error.d.ts +39 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +21 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/headers.d.ts +95 -0
- package/dist/types/headers.d.ts.map +1 -0
- package/dist/types/headers.js +5 -0
- package/dist/types/headers.js.map +1 -0
- package/dist/types/http.d.ts +31 -0
- package/dist/types/http.d.ts.map +1 -0
- package/dist/types/http.js +5 -0
- package/dist/types/http.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/search.d.ts +62 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +5 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/sections.d.ts +64 -0
- package/dist/types/sections.d.ts.map +1 -0
- package/dist/types/sections.js +5 -0
- package/dist/types/sections.js.map +1 -0
- package/dist/types/tools/platform.d.ts +33 -0
- package/dist/types/tools/platform.d.ts.map +1 -0
- package/dist/types/tools/platform.js +5 -0
- package/dist/types/tools/platform.js.map +1 -0
- package/dist/types/tools/sample-code.d.ts +23 -0
- package/dist/types/tools/sample-code.d.ts.map +1 -0
- package/dist/types/tools/sample-code.js +5 -0
- package/dist/types/tools/sample-code.js.map +1 -0
- package/dist/types/tools/technology.d.ts +18 -0
- package/dist/types/tools/technology.d.ts.map +1 -0
- package/dist/types/tools/technology.js +5 -0
- package/dist/types/tools/technology.js.map +1 -0
- package/dist/types/tools/updates.d.ts +23 -0
- package/dist/types/tools/updates.d.ts.map +1 -0
- package/dist/types/tools/updates.js +5 -0
- package/dist/types/tools/updates.js.map +1 -0
- package/dist/types/wwdc.d.ts +200 -0
- package/dist/types/wwdc.d.ts.map +1 -0
- package/dist/types/wwdc.js +5 -0
- package/dist/types/wwdc.js.map +1 -0
- package/dist/utils/cache-warmer.d.ts +22 -0
- package/dist/utils/cache-warmer.d.ts.map +1 -0
- package/dist/utils/cache-warmer.js +115 -0
- package/dist/utils/cache-warmer.js.map +1 -0
- package/dist/utils/cache.d.ts +109 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +302 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/constants.d.ts +178 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +266 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/error-handler.d.ts +80 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +437 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/framework-mapper.d.ts +84 -0
- package/dist/utils/framework-mapper.d.ts.map +1 -0
- package/dist/utils/framework-mapper.js +534 -0
- package/dist/utils/framework-mapper.js.map +1 -0
- package/dist/utils/http-client.d.ts +130 -0
- package/dist/utils/http-client.d.ts.map +1 -0
- package/dist/utils/http-client.js +464 -0
- package/dist/utils/http-client.js.map +1 -0
- package/dist/utils/http-headers-generator.d.ts +151 -0
- package/dist/utils/http-headers-generator.d.ts.map +1 -0
- package/dist/utils/http-headers-generator.js +407 -0
- package/dist/utils/http-headers-generator.js.map +1 -0
- package/dist/utils/logger.d.ts +44 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +73 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/preloader.d.ts +20 -0
- package/dist/utils/preloader.d.ts.map +1 -0
- package/dist/utils/preloader.js +82 -0
- package/dist/utils/preloader.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +28 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +48 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/topic-mapper.d.ts +18 -0
- package/dist/utils/topic-mapper.d.ts.map +1 -0
- package/dist/utils/topic-mapper.js +182 -0
- package/dist/utils/topic-mapper.js.map +1 -0
- package/dist/utils/url-converter.d.ts +22 -0
- package/dist/utils/url-converter.d.ts.map +1 -0
- package/dist/utils/url-converter.js +70 -0
- package/dist/utils/url-converter.js.map +1 -0
- package/dist/utils/user-agent-pool.d.ts +241 -0
- package/dist/utils/user-agent-pool.d.ts.map +1 -0
- package/dist/utils/user-agent-pool.js +557 -0
- package/dist/utils/user-agent-pool.js.map +1 -0
- package/dist/utils/wwdc-data-source-path.d.ts +9 -0
- package/dist/utils/wwdc-data-source-path.d.ts.map +1 -0
- package/dist/utils/wwdc-data-source-path.js +22 -0
- package/dist/utils/wwdc-data-source-path.js.map +1 -0
- package/dist/utils/wwdc-data-source.d.ts +36 -0
- package/dist/utils/wwdc-data-source.d.ts.map +1 -0
- package/dist/utils/wwdc-data-source.js +133 -0
- package/dist/utils/wwdc-data-source.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-specific HTTP header templates for authentic browser simulation
|
|
3
|
+
*
|
|
4
|
+
* Based on real browser behavior analysis for different browser types.
|
|
5
|
+
* These templates ensure requests look authentic and reduce detection risk.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Browser-specific header templates
|
|
9
|
+
*
|
|
10
|
+
* Each template is crafted to match real browser behavior:
|
|
11
|
+
* - Accept headers reflect browser's format support
|
|
12
|
+
* - Sec-Fetch-* headers match browser security policies
|
|
13
|
+
* - Language preferences follow browser defaults
|
|
14
|
+
*/
|
|
15
|
+
export const BROWSER_HEADERS = {
|
|
16
|
+
chrome: {
|
|
17
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8',
|
|
18
|
+
'Accept-Encoding': 'gzip, deflate, br',
|
|
19
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
20
|
+
'DNT': '1',
|
|
21
|
+
'Sec-CH-UA': '"Not A(Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"',
|
|
22
|
+
'Sec-CH-UA-Mobile': '?0',
|
|
23
|
+
'Sec-CH-UA-Platform': '"macOS"',
|
|
24
|
+
'Sec-Fetch-Dest': 'document',
|
|
25
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
26
|
+
'Sec-Fetch-Site': 'none',
|
|
27
|
+
'Sec-Fetch-User': '?1',
|
|
28
|
+
'Upgrade-Insecure-Requests': '1',
|
|
29
|
+
'Cache-Control': 'max-age=0',
|
|
30
|
+
},
|
|
31
|
+
firefox: {
|
|
32
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
|
|
33
|
+
'Accept-Encoding': 'gzip, deflate, br',
|
|
34
|
+
'Accept-Language': 'en-US,en;q=0.5',
|
|
35
|
+
'DNT': '1',
|
|
36
|
+
'Upgrade-Insecure-Requests': '1',
|
|
37
|
+
'Cache-Control': 'max-age=0',
|
|
38
|
+
},
|
|
39
|
+
safari: {
|
|
40
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
41
|
+
'Accept-Encoding': 'gzip, deflate, br',
|
|
42
|
+
'Accept-Language': 'en-us',
|
|
43
|
+
'DNT': '1',
|
|
44
|
+
'Cache-Control': 'max-age=0',
|
|
45
|
+
},
|
|
46
|
+
edge: {
|
|
47
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
|
|
48
|
+
'Accept-Encoding': 'gzip, deflate, br',
|
|
49
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
50
|
+
'DNT': '1',
|
|
51
|
+
'Sec-CH-UA': '"Not A(Brand";v="99", "Microsoft Edge";v="121", "Chromium";v="121"',
|
|
52
|
+
'Sec-CH-UA-Mobile': '?0',
|
|
53
|
+
'Sec-CH-UA-Platform': '"macOS"',
|
|
54
|
+
'Sec-Fetch-Dest': 'document',
|
|
55
|
+
'Sec-Fetch-Mode': 'navigate',
|
|
56
|
+
'Sec-Fetch-Site': 'none',
|
|
57
|
+
'Sec-Fetch-User': '?1',
|
|
58
|
+
'Upgrade-Insecure-Requests': '1',
|
|
59
|
+
'Cache-Control': 'max-age=0',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Simplified header templates for basic compatibility mode
|
|
64
|
+
*/
|
|
65
|
+
export const SIMPLE_BROWSER_HEADERS = {
|
|
66
|
+
chrome: {
|
|
67
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
68
|
+
'Accept-Encoding': 'gzip, deflate',
|
|
69
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
70
|
+
},
|
|
71
|
+
firefox: {
|
|
72
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
73
|
+
'Accept-Encoding': 'gzip, deflate',
|
|
74
|
+
'Accept-Language': 'en-US,en;q=0.5',
|
|
75
|
+
},
|
|
76
|
+
safari: {
|
|
77
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
78
|
+
'Accept-Encoding': 'gzip, deflate',
|
|
79
|
+
'Accept-Language': 'en-us',
|
|
80
|
+
},
|
|
81
|
+
edge: {
|
|
82
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
|
|
83
|
+
'Accept-Encoding': 'gzip, deflate',
|
|
84
|
+
'Accept-Language': 'en-US,en;q=0.9',
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Language preference pools for rotation
|
|
89
|
+
*/
|
|
90
|
+
export const LANGUAGE_PREFERENCES = [
|
|
91
|
+
// English variations
|
|
92
|
+
[
|
|
93
|
+
{ language: 'en-US', quality: 1.0 },
|
|
94
|
+
{ language: 'en', quality: 0.9 },
|
|
95
|
+
],
|
|
96
|
+
[
|
|
97
|
+
{ language: 'en-GB', quality: 1.0 },
|
|
98
|
+
{ language: 'en', quality: 0.9 },
|
|
99
|
+
],
|
|
100
|
+
[
|
|
101
|
+
{ language: 'en-CA', quality: 1.0 },
|
|
102
|
+
{ language: 'en', quality: 0.9 },
|
|
103
|
+
],
|
|
104
|
+
[
|
|
105
|
+
{ language: 'en-AU', quality: 1.0 },
|
|
106
|
+
{ language: 'en', quality: 0.9 },
|
|
107
|
+
],
|
|
108
|
+
// English + other languages
|
|
109
|
+
[
|
|
110
|
+
{ language: 'en-US', quality: 1.0 },
|
|
111
|
+
{ language: 'en', quality: 0.9 },
|
|
112
|
+
{ language: 'es', quality: 0.5 },
|
|
113
|
+
],
|
|
114
|
+
[
|
|
115
|
+
{ language: 'en-US', quality: 1.0 },
|
|
116
|
+
{ language: 'en', quality: 0.9 },
|
|
117
|
+
{ language: 'fr', quality: 0.4 },
|
|
118
|
+
],
|
|
119
|
+
[
|
|
120
|
+
{ language: 'en-US', quality: 1.0 },
|
|
121
|
+
{ language: 'en', quality: 0.9 },
|
|
122
|
+
{ language: 'de', quality: 0.3 },
|
|
123
|
+
],
|
|
124
|
+
[
|
|
125
|
+
{ language: 'en-US', quality: 1.0 },
|
|
126
|
+
{ language: 'en', quality: 0.9 },
|
|
127
|
+
{ language: 'zh-CN', quality: 0.8 },
|
|
128
|
+
{ language: 'zh', quality: 0.7 },
|
|
129
|
+
],
|
|
130
|
+
];
|
|
131
|
+
/**
|
|
132
|
+
* Platform-specific Sec-CH-UA-Platform values
|
|
133
|
+
*/
|
|
134
|
+
export const PLATFORM_VALUES = {
|
|
135
|
+
macOS: ['"macOS"'],
|
|
136
|
+
windows: ['"Windows"'],
|
|
137
|
+
linux: ['"Linux"'],
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Browser version strings for Sec-CH-UA headers
|
|
141
|
+
*/
|
|
142
|
+
export const BROWSER_VERSIONS = {
|
|
143
|
+
chrome: [
|
|
144
|
+
'"Not A(Brand";v="99", "Google Chrome";v="121", "Chromium";v="121"',
|
|
145
|
+
'"Not A(Brand";v="99", "Google Chrome";v="120", "Chromium";v="120"',
|
|
146
|
+
'"Not A(Brand";v="99", "Google Chrome";v="119", "Chromium";v="119"',
|
|
147
|
+
],
|
|
148
|
+
edge: [
|
|
149
|
+
'"Not A(Brand";v="99", "Microsoft Edge";v="121", "Chromium";v="121"',
|
|
150
|
+
'"Not A(Brand";v="99", "Microsoft Edge";v="120", "Chromium";v="120"',
|
|
151
|
+
'"Not A(Brand";v="99", "Microsoft Edge";v="119", "Chromium";v="119"',
|
|
152
|
+
],
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* DNT (Do Not Track) values for privacy preference simulation
|
|
156
|
+
*/
|
|
157
|
+
export const DNT_VALUES = ['1', '0'];
|
|
158
|
+
/**
|
|
159
|
+
* Cache-Control values for different request types
|
|
160
|
+
*/
|
|
161
|
+
export const CACHE_CONTROL_VALUES = [
|
|
162
|
+
'max-age=0',
|
|
163
|
+
'no-cache',
|
|
164
|
+
'max-age=0, no-cache',
|
|
165
|
+
];
|
|
166
|
+
//# sourceMappingURL=browser-headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-headers.js","sourceRoot":"","sources":["../../src/constants/browser-headers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export default class AppleDeveloperDocsMCPServer {
|
|
3
|
+
private server;
|
|
4
|
+
/**
|
|
5
|
+
* Helper method to handle async operations with consistent error handling
|
|
6
|
+
*/
|
|
7
|
+
private handleAsyncOperation;
|
|
8
|
+
constructor();
|
|
9
|
+
private setupTools;
|
|
10
|
+
searchAppleDocs(query: string, type?: string): Promise<{
|
|
11
|
+
content: Array<{
|
|
12
|
+
type: string;
|
|
13
|
+
text: string;
|
|
14
|
+
}>;
|
|
15
|
+
}>;
|
|
16
|
+
getAppleDocContent(url: string, includeRelatedApis?: boolean, includeReferences?: boolean, includeSimilarApis?: boolean, includePlatformAnalysis?: boolean): Promise<any>;
|
|
17
|
+
listTechnologies(category?: string, language?: string, includeBeta?: boolean, limit?: number): Promise<{
|
|
18
|
+
content: Array<{
|
|
19
|
+
type: "text";
|
|
20
|
+
text: string;
|
|
21
|
+
}>;
|
|
22
|
+
isError?: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
searchFrameworkSymbols(framework: string, symbolType?: string, namePattern?: string, language?: string, limit?: number): Promise<{
|
|
25
|
+
content: Array<{
|
|
26
|
+
type: "text";
|
|
27
|
+
text: string;
|
|
28
|
+
}>;
|
|
29
|
+
isError?: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
getRelatedApis(apiUrl: string, includeInherited?: boolean, includeConformance?: boolean, includeSeeAlso?: boolean): Promise<{
|
|
32
|
+
content: Array<{
|
|
33
|
+
type: "text";
|
|
34
|
+
text: string;
|
|
35
|
+
}>;
|
|
36
|
+
isError?: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
resolveReferencesBatch(sourceUrl: string, maxReferences?: number, filterByType?: string): Promise<{
|
|
39
|
+
content: Array<{
|
|
40
|
+
type: "text";
|
|
41
|
+
text: string;
|
|
42
|
+
}>;
|
|
43
|
+
isError?: boolean;
|
|
44
|
+
}>;
|
|
45
|
+
getPlatformCompatibility(apiUrl: string, compareMode?: string, includeRelated?: boolean): Promise<{
|
|
46
|
+
content: Array<{
|
|
47
|
+
type: "text";
|
|
48
|
+
text: string;
|
|
49
|
+
}>;
|
|
50
|
+
isError?: boolean;
|
|
51
|
+
}>;
|
|
52
|
+
findSimilarApis(apiUrl: string, searchDepth?: string, filterByCategory?: string, includeAlternatives?: boolean): Promise<{
|
|
53
|
+
content: Array<{
|
|
54
|
+
type: "text";
|
|
55
|
+
text: string;
|
|
56
|
+
}>;
|
|
57
|
+
isError?: boolean;
|
|
58
|
+
}>;
|
|
59
|
+
getDocumentationUpdates(category?: string, technology?: string, year?: string, searchQuery?: string, includeBeta?: boolean, limit?: number): Promise<{
|
|
60
|
+
content: Array<{
|
|
61
|
+
type: "text";
|
|
62
|
+
text: string;
|
|
63
|
+
}>;
|
|
64
|
+
isError?: boolean;
|
|
65
|
+
}>;
|
|
66
|
+
getTechnologyOverviews(category?: string, platform?: string, searchQuery?: string, includeSubcategories?: boolean, limit?: number): Promise<{
|
|
67
|
+
content: Array<{
|
|
68
|
+
type: "text";
|
|
69
|
+
text: string;
|
|
70
|
+
}>;
|
|
71
|
+
isError?: boolean;
|
|
72
|
+
}>;
|
|
73
|
+
getSampleCode(framework?: string, beta?: 'include' | 'exclude' | 'only', searchQuery?: string, limit?: number): Promise<{
|
|
74
|
+
content: Array<{
|
|
75
|
+
type: "text";
|
|
76
|
+
text: string;
|
|
77
|
+
}>;
|
|
78
|
+
isError?: boolean;
|
|
79
|
+
}>;
|
|
80
|
+
private setupErrorHandling;
|
|
81
|
+
run(): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { parseSearchResults } from './tools/search-parser.js';
|
|
6
|
+
import { fetchAppleDocJson } from './tools/doc-fetcher.js';
|
|
7
|
+
import { handleListTechnologies } from './tools/list-technologies.js';
|
|
8
|
+
import { searchFrameworkSymbols } from './tools/search-framework-symbols.js';
|
|
9
|
+
import { toolDefinitions } from './tools/definitions.js';
|
|
10
|
+
import { handleToolCall } from './tools/handlers.js';
|
|
11
|
+
import { handleGetRelatedApis } from './tools/get-related-apis.js';
|
|
12
|
+
import { handleResolveReferencesBatch } from './tools/resolve-references-batch.js';
|
|
13
|
+
import { handleGetPlatformCompatibility } from './tools/get-platform-compatibility.js';
|
|
14
|
+
import { handleFindSimilarApis } from './tools/find-similar-apis.js';
|
|
15
|
+
import { handleGetDocumentationUpdates } from './tools/get-documentation-updates.js';
|
|
16
|
+
import { handleGetTechnologyOverviews } from './tools/get-technology-overviews.js';
|
|
17
|
+
import { handleGetSampleCode } from './tools/get-sample-code.js';
|
|
18
|
+
import { APPLE_URLS } from './utils/constants.js';
|
|
19
|
+
import { isValidAppleDeveloperUrl } from './utils/url-converter.js';
|
|
20
|
+
import { validateInput, ErrorType, createStandardErrorResponse, createToolErrorResponse } from './utils/error-handler.js';
|
|
21
|
+
import { httpClient } from './utils/http-client.js';
|
|
22
|
+
import { preloadPopularFrameworks } from './utils/preloader.js';
|
|
23
|
+
import { warmUpCaches, schedulePeriodicCacheRefresh } from './utils/cache-warmer.js';
|
|
24
|
+
import { logger } from './utils/logger.js';
|
|
25
|
+
import { API_LIMITS } from './utils/constants.js';
|
|
26
|
+
export default class AppleDeveloperDocsMCPServer {
|
|
27
|
+
server;
|
|
28
|
+
/**
|
|
29
|
+
* Helper method to handle async operations with consistent error handling
|
|
30
|
+
*/
|
|
31
|
+
async handleAsyncOperation(operation, operationName) {
|
|
32
|
+
try {
|
|
33
|
+
const result = await operation();
|
|
34
|
+
return {
|
|
35
|
+
content: [
|
|
36
|
+
{
|
|
37
|
+
type: 'text',
|
|
38
|
+
text: result,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// If error is already an AppError, use tool-specific suggestions
|
|
45
|
+
if (error && typeof error === 'object' && 'type' in error) {
|
|
46
|
+
return createToolErrorResponse(error, operationName);
|
|
47
|
+
}
|
|
48
|
+
return createStandardErrorResponse(error, operationName);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
constructor() {
|
|
52
|
+
this.server = new Server({
|
|
53
|
+
name: 'apple-docs-mcp',
|
|
54
|
+
version: '1.0.0',
|
|
55
|
+
}, {
|
|
56
|
+
capabilities: {
|
|
57
|
+
tools: {},
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
this.setupTools();
|
|
61
|
+
this.setupErrorHandling();
|
|
62
|
+
}
|
|
63
|
+
setupTools() {
|
|
64
|
+
// const cacheStatsSchema = z.object({});
|
|
65
|
+
// 处理工具列表请求
|
|
66
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
67
|
+
return {
|
|
68
|
+
tools: toolDefinitions,
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
// 处理工具调用请求
|
|
72
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
73
|
+
const { name, arguments: args } = request.params;
|
|
74
|
+
try {
|
|
75
|
+
return await handleToolCall(name, args, this);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
const appError = error instanceof Error
|
|
79
|
+
? { type: 'UNKNOWN', message: error.message, originalError: error }
|
|
80
|
+
: { type: 'UNKNOWN', message: 'An unknown error occurred' };
|
|
81
|
+
logger.error(`Tool ${name} failed:`, appError);
|
|
82
|
+
return {
|
|
83
|
+
content: [
|
|
84
|
+
{
|
|
85
|
+
type: 'text',
|
|
86
|
+
text: `Error: ${appError.message}`,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
isError: true,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async searchAppleDocs(query, type = 'all') {
|
|
95
|
+
try {
|
|
96
|
+
// 输入验证
|
|
97
|
+
const queryValidation = validateInput(query, 'Search query');
|
|
98
|
+
if (queryValidation) {
|
|
99
|
+
return createToolErrorResponse(queryValidation, 'search_apple_docs');
|
|
100
|
+
}
|
|
101
|
+
// 创建 Apple Developer Documentation 搜索 URL
|
|
102
|
+
const searchUrl = `${APPLE_URLS.SEARCH}?q=${encodeURIComponent(query)}`;
|
|
103
|
+
logger.info(`Searching Apple docs for: ${query}`);
|
|
104
|
+
// 获取搜索结果页面
|
|
105
|
+
const html = await httpClient.getText(searchUrl);
|
|
106
|
+
// 解析并返回搜索结果,传递type参数进行过滤
|
|
107
|
+
return parseSearchResults(html, query, searchUrl, type);
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (error && typeof error === 'object' && 'type' in error) {
|
|
111
|
+
return createToolErrorResponse(error, 'search_apple_docs');
|
|
112
|
+
}
|
|
113
|
+
return createStandardErrorResponse(error, 'search_apple_docs');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async getAppleDocContent(url, includeRelatedApis = false, includeReferences = false, includeSimilarApis = false, includePlatformAnalysis = false) {
|
|
117
|
+
try {
|
|
118
|
+
// 输入验证
|
|
119
|
+
const urlValidation = validateInput(url, 'URL');
|
|
120
|
+
if (urlValidation) {
|
|
121
|
+
return createToolErrorResponse(urlValidation, 'get_apple_doc_content');
|
|
122
|
+
}
|
|
123
|
+
// 验证是否为有效的Apple Developer URL
|
|
124
|
+
if (!isValidAppleDeveloperUrl(url)) {
|
|
125
|
+
return createToolErrorResponse({
|
|
126
|
+
type: ErrorType.INVALID_INPUT,
|
|
127
|
+
message: 'URL must be from developer.apple.com',
|
|
128
|
+
}, 'get_apple_doc_content');
|
|
129
|
+
}
|
|
130
|
+
// fetchAppleDocJson 已经返回正确的MCP响应格式,直接返回
|
|
131
|
+
return await fetchAppleDocJson(url, {
|
|
132
|
+
includeRelatedApis,
|
|
133
|
+
includeReferences,
|
|
134
|
+
includeSimilarApis,
|
|
135
|
+
includePlatformAnalysis,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (error && typeof error === 'object' && 'type' in error) {
|
|
140
|
+
return createToolErrorResponse(error, 'get_apple_doc_content');
|
|
141
|
+
}
|
|
142
|
+
return createStandardErrorResponse(error, 'get_apple_doc_content');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async listTechnologies(category, language, includeBeta = true, limit = API_LIMITS.DEFAULT_TECHNOLOGIES_LIMIT) {
|
|
146
|
+
return this.handleAsyncOperation(() => handleListTechnologies(category, language, includeBeta, limit), 'listTechnologies');
|
|
147
|
+
}
|
|
148
|
+
async searchFrameworkSymbols(framework, symbolType = 'all', namePattern, language = 'swift', limit = API_LIMITS.DEFAULT_FRAMEWORK_SYMBOLS_LIMIT) {
|
|
149
|
+
return this.handleAsyncOperation(() => searchFrameworkSymbols(framework, symbolType, namePattern, language, limit), 'searchFrameworkSymbols');
|
|
150
|
+
}
|
|
151
|
+
async getRelatedApis(apiUrl, includeInherited = true, includeConformance = true, includeSeeAlso = true) {
|
|
152
|
+
return this.handleAsyncOperation(() => handleGetRelatedApis(apiUrl, includeInherited, includeConformance, includeSeeAlso), 'getRelatedApis');
|
|
153
|
+
}
|
|
154
|
+
async resolveReferencesBatch(sourceUrl, maxReferences = API_LIMITS.DEFAULT_REFERENCES_LIMIT, filterByType = 'all') {
|
|
155
|
+
return this.handleAsyncOperation(() => handleResolveReferencesBatch(sourceUrl, maxReferences, filterByType), 'resolveReferencesBatch');
|
|
156
|
+
}
|
|
157
|
+
async getPlatformCompatibility(apiUrl, compareMode = 'single', includeRelated = false) {
|
|
158
|
+
return this.handleAsyncOperation(() => handleGetPlatformCompatibility(apiUrl, compareMode, includeRelated), 'getPlatformCompatibility');
|
|
159
|
+
}
|
|
160
|
+
async findSimilarApis(apiUrl, searchDepth = 'medium', filterByCategory, includeAlternatives = true) {
|
|
161
|
+
return this.handleAsyncOperation(() => handleFindSimilarApis(apiUrl, searchDepth, filterByCategory, includeAlternatives), 'findSimilarApis');
|
|
162
|
+
}
|
|
163
|
+
async getDocumentationUpdates(category = 'all', technology, year, searchQuery, includeBeta = true, limit = API_LIMITS.DEFAULT_DOCUMENTATION_UPDATES_LIMIT) {
|
|
164
|
+
return this.handleAsyncOperation(() => handleGetDocumentationUpdates(category, technology, year, searchQuery, includeBeta, limit), 'getDocumentationUpdates');
|
|
165
|
+
}
|
|
166
|
+
async getTechnologyOverviews(category, platform = 'all', searchQuery, includeSubcategories = true, limit = API_LIMITS.DEFAULT_TECHNOLOGY_OVERVIEWS_LIMIT) {
|
|
167
|
+
return this.handleAsyncOperation(() => handleGetTechnologyOverviews(category, platform, searchQuery, includeSubcategories, limit), 'getTechnologyOverviews');
|
|
168
|
+
}
|
|
169
|
+
async getSampleCode(framework, beta = 'include', searchQuery, limit = API_LIMITS.DEFAULT_SAMPLE_CODE_LIMIT) {
|
|
170
|
+
return this.handleAsyncOperation(() => handleGetSampleCode(framework, beta, searchQuery, limit), 'getSampleCode');
|
|
171
|
+
}
|
|
172
|
+
setupErrorHandling() {
|
|
173
|
+
// 处理 SIGINT 以优雅关闭服务器
|
|
174
|
+
process.on('SIGINT', () => {
|
|
175
|
+
process.exit(0);
|
|
176
|
+
});
|
|
177
|
+
process.on('SIGTERM', () => {
|
|
178
|
+
process.exit(0);
|
|
179
|
+
});
|
|
180
|
+
process.on('unhandledRejection', (reason) => {
|
|
181
|
+
logger.error('Unhandled Rejection, reason:', reason);
|
|
182
|
+
process.exit(1);
|
|
183
|
+
});
|
|
184
|
+
process.on('uncaughtException', (error) => {
|
|
185
|
+
logger.error('Uncaught Exception:', error);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
async run() {
|
|
190
|
+
const transport = new StdioServerTransport();
|
|
191
|
+
await this.server.connect(transport);
|
|
192
|
+
logger.info('Apple Developer Docs MCP server running on stdio');
|
|
193
|
+
logger.info('WWDC Data: Using bundled data from npm package');
|
|
194
|
+
logger.info('Cache system initialized with TTL: API(30m), Index(1h), Technologies(2h)');
|
|
195
|
+
logger.info('Note: Search results are not cached to ensure real-time accuracy');
|
|
196
|
+
// Start framework preloading and cache warming in background
|
|
197
|
+
Promise.all([
|
|
198
|
+
preloadPopularFrameworks(),
|
|
199
|
+
warmUpCaches(),
|
|
200
|
+
]).catch(error => {
|
|
201
|
+
logger.error('Background initialization failed:', error);
|
|
202
|
+
});
|
|
203
|
+
// Schedule periodic cache refresh (every 30 minutes)
|
|
204
|
+
schedulePeriodicCacheRefresh();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Run server (only in non-test environment)
|
|
208
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
209
|
+
const server = new AppleDeveloperDocsMCPServer();
|
|
210
|
+
void server.run().catch((error) => {
|
|
211
|
+
logger.error('Fatal error in main():', error);
|
|
212
|
+
process.exit(1);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified API analysis schema - consolidates get_related_apis, find_similar_apis, resolve_references_batch
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export declare const analyzeApiSchema: z.ZodObject<{
|
|
6
|
+
apiUrl: z.ZodString;
|
|
7
|
+
analysis: z.ZodEnum<["related", "similar", "references", "all"]>;
|
|
8
|
+
includeInherited: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
includeConformance: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
+
includeSeeAlso: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
+
searchDepth: z.ZodOptional<z.ZodEnum<["shallow", "medium", "deep"]>>;
|
|
12
|
+
filterByCategory: z.ZodOptional<z.ZodString>;
|
|
13
|
+
includeAlternatives: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
maxReferences: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
filterByType: z.ZodOptional<z.ZodEnum<["all", "symbol", "collection", "article", "protocol", "class", "struct", "enum"]>>;
|
|
16
|
+
compact: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
compact: boolean;
|
|
19
|
+
analysis: "all" | "related" | "references" | "similar";
|
|
20
|
+
apiUrl: string;
|
|
21
|
+
includeInherited?: boolean | undefined;
|
|
22
|
+
includeConformance?: boolean | undefined;
|
|
23
|
+
includeSeeAlso?: boolean | undefined;
|
|
24
|
+
searchDepth?: "shallow" | "medium" | "deep" | undefined;
|
|
25
|
+
filterByCategory?: string | undefined;
|
|
26
|
+
maxReferences?: number | undefined;
|
|
27
|
+
filterByType?: "symbol" | "all" | "class" | "enum" | "struct" | "protocol" | "article" | "collection" | undefined;
|
|
28
|
+
includeAlternatives?: boolean | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
analysis: "all" | "related" | "references" | "similar";
|
|
31
|
+
apiUrl: string;
|
|
32
|
+
compact?: boolean | undefined;
|
|
33
|
+
includeInherited?: boolean | undefined;
|
|
34
|
+
includeConformance?: boolean | undefined;
|
|
35
|
+
includeSeeAlso?: boolean | undefined;
|
|
36
|
+
searchDepth?: "shallow" | "medium" | "deep" | undefined;
|
|
37
|
+
filterByCategory?: string | undefined;
|
|
38
|
+
maxReferences?: number | undefined;
|
|
39
|
+
filterByType?: "symbol" | "all" | "class" | "enum" | "struct" | "protocol" | "article" | "collection" | undefined;
|
|
40
|
+
includeAlternatives?: boolean | undefined;
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=analyze-api.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-api.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/analyze-api.schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB3B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified API analysis schema - consolidates get_related_apis, find_similar_apis, resolve_references_batch
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { API_LIMITS } from '../utils/constants.js';
|
|
6
|
+
export const analyzeApiSchema = z.object({
|
|
7
|
+
apiUrl: z.string().describe('Apple documentation URL to analyze'),
|
|
8
|
+
analysis: z.enum(['related', 'similar', 'references', 'all']).describe('Type of analysis: related (inheritance/protocols), similar (alternatives), references (type resolution), all (comprehensive)'),
|
|
9
|
+
// Options from get_related_apis
|
|
10
|
+
includeInherited: z.boolean().optional().describe('Include inherited APIs (for related analysis)'),
|
|
11
|
+
includeConformance: z.boolean().optional().describe('Include protocol conformances (for related analysis)'),
|
|
12
|
+
includeSeeAlso: z.boolean().optional().describe('Include "See Also" section (for related analysis)'),
|
|
13
|
+
// Options from find_similar_apis
|
|
14
|
+
searchDepth: z.enum(['shallow', 'medium', 'deep']).optional().describe('Search depth (for similar analysis)'),
|
|
15
|
+
filterByCategory: z.string().optional().describe('Filter by category (for similar analysis)'),
|
|
16
|
+
includeAlternatives: z.boolean().optional().describe('Include alternatives (for similar analysis)'),
|
|
17
|
+
// Options from resolve_references_batch
|
|
18
|
+
maxReferences: z.number().min(1).max(API_LIMITS.MAX_REFERENCES_LIMIT).optional().describe('Max references to resolve (for references analysis)'),
|
|
19
|
+
filterByType: z.enum(['all', 'symbol', 'collection', 'article', 'protocol', 'class', 'struct', 'enum']).optional().describe('Filter references by type'),
|
|
20
|
+
// Common options
|
|
21
|
+
compact: z.boolean().default(false).describe('Return minimal output (titles + URLs only). Recommended for discovery.'),
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=analyze-api.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-api.schema.js","sourceRoot":"","sources":["../../src/schemas/analyze-api.schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,8HAA8H,CAAC;IACtM,gCAAgC;IAChC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IAClG,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC3G,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACpG,iCAAiC;IACjC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC7G,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC7F,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACnG,wCAAwC;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IAChJ,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACxJ,iBAAiB;IACjB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wEAAwE,CAAC;CACvH,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Apple Docs router schema
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export declare const appleDocsSchema: z.ZodObject<{
|
|
6
|
+
query: z.ZodString;
|
|
7
|
+
intent: z.ZodDefault<z.ZodEnum<["auto", "search", "docs", "wwdc", "samples", "technologies"]>>;
|
|
8
|
+
compact: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
compact: boolean;
|
|
11
|
+
query: string;
|
|
12
|
+
intent: "wwdc" | "search" | "technologies" | "samples" | "auto" | "docs";
|
|
13
|
+
}, {
|
|
14
|
+
query: string;
|
|
15
|
+
compact?: boolean | undefined;
|
|
16
|
+
intent?: "wwdc" | "search" | "technologies" | "samples" | "auto" | "docs" | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=apple-docs.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apple-docs.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/apple-docs.schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Apple Docs router schema
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export const appleDocsSchema = z.object({
|
|
6
|
+
query: z.string().describe('Natural language query (e.g., "SwiftUI List docs", "WWDC async/await videos", "https://developer.apple.com/...")'),
|
|
7
|
+
intent: z.enum(['auto', 'search', 'docs', 'wwdc', 'samples', 'technologies']).default('auto').describe('Optional routing hint. Default: auto-detect from query'),
|
|
8
|
+
compact: z.boolean().default(false).describe('Return minimal output. Recommended for discovery.'),
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=apple-docs.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apple-docs.schema.js","sourceRoot":"","sources":["../../src/schemas/apple-docs.schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kHAAkH,CAAC;IAC9I,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IAChK,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CAClG,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const getAppleDocContentSchema: z.ZodObject<{
|
|
3
|
+
url: z.ZodString;
|
|
4
|
+
includeRelatedApis: z.ZodDefault<z.ZodBoolean>;
|
|
5
|
+
includeReferences: z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
includeSimilarApis: z.ZodDefault<z.ZodBoolean>;
|
|
7
|
+
includePlatformAnalysis: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
compact: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
url: string;
|
|
11
|
+
includeRelatedApis: boolean;
|
|
12
|
+
includeReferences: boolean;
|
|
13
|
+
includeSimilarApis: boolean;
|
|
14
|
+
includePlatformAnalysis: boolean;
|
|
15
|
+
compact: boolean;
|
|
16
|
+
}, {
|
|
17
|
+
url: string;
|
|
18
|
+
includeRelatedApis?: boolean | undefined;
|
|
19
|
+
includeReferences?: boolean | undefined;
|
|
20
|
+
includeSimilarApis?: boolean | undefined;
|
|
21
|
+
includePlatformAnalysis?: boolean | undefined;
|
|
22
|
+
compact?: boolean | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=doc-content.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-content.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/doc-content.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAOnC,CAAC"}
|