@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.
Files changed (267) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +560 -0
  3. package/dist/constants/browser-headers.d.ts +48 -0
  4. package/dist/constants/browser-headers.d.ts.map +1 -0
  5. package/dist/constants/browser-headers.js +166 -0
  6. package/dist/constants/browser-headers.js.map +1 -0
  7. package/dist/index.d.ts +83 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +215 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/schemas/analyze-api.schema.d.ts +42 -0
  12. package/dist/schemas/analyze-api.schema.d.ts.map +1 -0
  13. package/dist/schemas/analyze-api.schema.js +23 -0
  14. package/dist/schemas/analyze-api.schema.js.map +1 -0
  15. package/dist/schemas/apple-docs.schema.d.ts +18 -0
  16. package/dist/schemas/apple-docs.schema.d.ts.map +1 -0
  17. package/dist/schemas/apple-docs.schema.js +10 -0
  18. package/dist/schemas/apple-docs.schema.js.map +1 -0
  19. package/dist/schemas/doc-content.schema.d.ts +24 -0
  20. package/dist/schemas/doc-content.schema.d.ts.map +1 -0
  21. package/dist/schemas/doc-content.schema.js +10 -0
  22. package/dist/schemas/doc-content.schema.js.map +1 -0
  23. package/dist/schemas/documentation-updates.schema.d.ts +27 -0
  24. package/dist/schemas/documentation-updates.schema.d.ts.map +1 -0
  25. package/dist/schemas/documentation-updates.schema.js +12 -0
  26. package/dist/schemas/documentation-updates.schema.js.map +1 -0
  27. package/dist/schemas/framework-symbols.schema.d.ts +24 -0
  28. package/dist/schemas/framework-symbols.schema.d.ts.map +1 -0
  29. package/dist/schemas/framework-symbols.schema.js +11 -0
  30. package/dist/schemas/framework-symbols.schema.js.map +1 -0
  31. package/dist/schemas/index.d.ts +15 -0
  32. package/dist/schemas/index.d.ts.map +1 -0
  33. package/dist/schemas/index.js +15 -0
  34. package/dist/schemas/index.js.map +1 -0
  35. package/dist/schemas/platform-compatibility.schema.d.ts +18 -0
  36. package/dist/schemas/platform-compatibility.schema.d.ts.map +1 -0
  37. package/dist/schemas/platform-compatibility.schema.js +8 -0
  38. package/dist/schemas/platform-compatibility.schema.js.map +1 -0
  39. package/dist/schemas/references.schema.d.ts +18 -0
  40. package/dist/schemas/references.schema.d.ts.map +1 -0
  41. package/dist/schemas/references.schema.js +9 -0
  42. package/dist/schemas/references.schema.js.map +1 -0
  43. package/dist/schemas/related-apis.schema.d.ts +21 -0
  44. package/dist/schemas/related-apis.schema.d.ts.map +1 -0
  45. package/dist/schemas/related-apis.schema.js +9 -0
  46. package/dist/schemas/related-apis.schema.js.map +1 -0
  47. package/dist/schemas/sample-code.schema.d.ts +21 -0
  48. package/dist/schemas/sample-code.schema.d.ts.map +1 -0
  49. package/dist/schemas/sample-code.schema.js +10 -0
  50. package/dist/schemas/sample-code.schema.js.map +1 -0
  51. package/dist/schemas/search.schema.d.ts +15 -0
  52. package/dist/schemas/search.schema.d.ts.map +1 -0
  53. package/dist/schemas/search.schema.js +8 -0
  54. package/dist/schemas/search.schema.js.map +1 -0
  55. package/dist/schemas/similar-apis.schema.d.ts +21 -0
  56. package/dist/schemas/similar-apis.schema.d.ts.map +1 -0
  57. package/dist/schemas/similar-apis.schema.js +9 -0
  58. package/dist/schemas/similar-apis.schema.js.map +1 -0
  59. package/dist/schemas/technologies.schema.d.ts +21 -0
  60. package/dist/schemas/technologies.schema.d.ts.map +1 -0
  61. package/dist/schemas/technologies.schema.js +10 -0
  62. package/dist/schemas/technologies.schema.js.map +1 -0
  63. package/dist/schemas/technology-overviews.schema.d.ts +24 -0
  64. package/dist/schemas/technology-overviews.schema.d.ts.map +1 -0
  65. package/dist/schemas/technology-overviews.schema.js +11 -0
  66. package/dist/schemas/technology-overviews.schema.js.map +1 -0
  67. package/dist/schemas/wwdc.schemas.d.ts +208 -0
  68. package/dist/schemas/wwdc.schemas.d.ts.map +1 -0
  69. package/dist/schemas/wwdc.schemas.js +97 -0
  70. package/dist/schemas/wwdc.schemas.js.map +1 -0
  71. package/dist/tools/definitions.d.ts +10 -0
  72. package/dist/tools/definitions.d.ts.map +1 -0
  73. package/dist/tools/definitions.js +690 -0
  74. package/dist/tools/definitions.js.map +1 -0
  75. package/dist/tools/doc-fetcher.d.ts +19 -0
  76. package/dist/tools/doc-fetcher.d.ts.map +1 -0
  77. package/dist/tools/doc-fetcher.js +487 -0
  78. package/dist/tools/doc-fetcher.js.map +1 -0
  79. package/dist/tools/doc-formatter.d.ts +69 -0
  80. package/dist/tools/doc-formatter.d.ts.map +1 -0
  81. package/dist/tools/doc-formatter.js +208 -0
  82. package/dist/tools/doc-formatter.js.map +1 -0
  83. package/dist/tools/find-similar-apis.d.ts +5 -0
  84. package/dist/tools/find-similar-apis.d.ts.map +1 -0
  85. package/dist/tools/find-similar-apis.js +275 -0
  86. package/dist/tools/find-similar-apis.js.map +1 -0
  87. package/dist/tools/get-documentation-updates.d.ts +5 -0
  88. package/dist/tools/get-documentation-updates.d.ts.map +1 -0
  89. package/dist/tools/get-documentation-updates.js +244 -0
  90. package/dist/tools/get-documentation-updates.js.map +1 -0
  91. package/dist/tools/get-platform-compatibility.d.ts +5 -0
  92. package/dist/tools/get-platform-compatibility.d.ts.map +1 -0
  93. package/dist/tools/get-platform-compatibility.js +205 -0
  94. package/dist/tools/get-platform-compatibility.js.map +1 -0
  95. package/dist/tools/get-related-apis.d.ts +5 -0
  96. package/dist/tools/get-related-apis.d.ts.map +1 -0
  97. package/dist/tools/get-related-apis.js +155 -0
  98. package/dist/tools/get-related-apis.js.map +1 -0
  99. package/dist/tools/get-sample-code.d.ts +5 -0
  100. package/dist/tools/get-sample-code.d.ts.map +1 -0
  101. package/dist/tools/get-sample-code.js +375 -0
  102. package/dist/tools/get-sample-code.js.map +1 -0
  103. package/dist/tools/get-technology-overviews.d.ts +5 -0
  104. package/dist/tools/get-technology-overviews.d.ts.map +1 -0
  105. package/dist/tools/get-technology-overviews.js +306 -0
  106. package/dist/tools/get-technology-overviews.js.map +1 -0
  107. package/dist/tools/handlers.d.ts +29 -0
  108. package/dist/tools/handlers.d.ts.map +1 -0
  109. package/dist/tools/handlers.js +350 -0
  110. package/dist/tools/handlers.js.map +1 -0
  111. package/dist/tools/list-technologies.d.ts +5 -0
  112. package/dist/tools/list-technologies.d.ts.map +1 -0
  113. package/dist/tools/list-technologies.js +165 -0
  114. package/dist/tools/list-technologies.js.map +1 -0
  115. package/dist/tools/resolve-references-batch.d.ts +5 -0
  116. package/dist/tools/resolve-references-batch.d.ts.map +1 -0
  117. package/dist/tools/resolve-references-batch.js +199 -0
  118. package/dist/tools/resolve-references-batch.js.map +1 -0
  119. package/dist/tools/search-framework-symbols.d.ts +7 -0
  120. package/dist/tools/search-framework-symbols.d.ts.map +1 -0
  121. package/dist/tools/search-framework-symbols.js +235 -0
  122. package/dist/tools/search-framework-symbols.js.map +1 -0
  123. package/dist/tools/search-parser.d.ts +15 -0
  124. package/dist/tools/search-parser.d.ts.map +1 -0
  125. package/dist/tools/search-parser.js +188 -0
  126. package/dist/tools/search-parser.js.map +1 -0
  127. package/dist/tools/search-result-parser.d.ts +52 -0
  128. package/dist/tools/search-result-parser.d.ts.map +1 -0
  129. package/dist/tools/search-result-parser.js +137 -0
  130. package/dist/tools/search-result-parser.js.map +1 -0
  131. package/dist/tools/tools-guide.d.ts +124 -0
  132. package/dist/tools/tools-guide.d.ts.map +1 -0
  133. package/dist/tools/tools-guide.js +389 -0
  134. package/dist/tools/tools-guide.js.map +1 -0
  135. package/dist/tools/wwdc/content-extractor.d.ts +9 -0
  136. package/dist/tools/wwdc/content-extractor.d.ts.map +1 -0
  137. package/dist/tools/wwdc/content-extractor.js +520 -0
  138. package/dist/tools/wwdc/content-extractor.js.map +1 -0
  139. package/dist/tools/wwdc/topics-extractor.d.ts +32 -0
  140. package/dist/tools/wwdc/topics-extractor.d.ts.map +1 -0
  141. package/dist/tools/wwdc/topics-extractor.js +146 -0
  142. package/dist/tools/wwdc/topics-extractor.js.map +1 -0
  143. package/dist/tools/wwdc/video-list-extractor.d.ts +13 -0
  144. package/dist/tools/wwdc/video-list-extractor.d.ts.map +1 -0
  145. package/dist/tools/wwdc/video-list-extractor.js +238 -0
  146. package/dist/tools/wwdc/video-list-extractor.js.map +1 -0
  147. package/dist/tools/wwdc/wwdc-handlers.d.ts +32 -0
  148. package/dist/tools/wwdc/wwdc-handlers.d.ts.map +1 -0
  149. package/dist/tools/wwdc/wwdc-handlers.js +791 -0
  150. package/dist/tools/wwdc/wwdc-handlers.js.map +1 -0
  151. package/dist/types/apple-docs.d.ts +112 -0
  152. package/dist/types/apple-docs.d.ts.map +1 -0
  153. package/dist/types/apple-docs.js +5 -0
  154. package/dist/types/apple-docs.js.map +1 -0
  155. package/dist/types/cache.d.ts +28 -0
  156. package/dist/types/cache.d.ts.map +1 -0
  157. package/dist/types/cache.js +5 -0
  158. package/dist/types/cache.js.map +1 -0
  159. package/dist/types/content-sections.d.ts +37 -0
  160. package/dist/types/content-sections.d.ts.map +1 -0
  161. package/dist/types/content-sections.js +5 -0
  162. package/dist/types/content-sections.js.map +1 -0
  163. package/dist/types/error.d.ts +39 -0
  164. package/dist/types/error.d.ts.map +1 -0
  165. package/dist/types/error.js +21 -0
  166. package/dist/types/error.js.map +1 -0
  167. package/dist/types/headers.d.ts +95 -0
  168. package/dist/types/headers.d.ts.map +1 -0
  169. package/dist/types/headers.js +5 -0
  170. package/dist/types/headers.js.map +1 -0
  171. package/dist/types/http.d.ts +31 -0
  172. package/dist/types/http.d.ts.map +1 -0
  173. package/dist/types/http.js +5 -0
  174. package/dist/types/http.js.map +1 -0
  175. package/dist/types/index.d.ts +11 -0
  176. package/dist/types/index.d.ts.map +1 -0
  177. package/dist/types/index.js +12 -0
  178. package/dist/types/index.js.map +1 -0
  179. package/dist/types/search.d.ts +62 -0
  180. package/dist/types/search.d.ts.map +1 -0
  181. package/dist/types/search.js +5 -0
  182. package/dist/types/search.js.map +1 -0
  183. package/dist/types/sections.d.ts +64 -0
  184. package/dist/types/sections.d.ts.map +1 -0
  185. package/dist/types/sections.js +5 -0
  186. package/dist/types/sections.js.map +1 -0
  187. package/dist/types/tools/platform.d.ts +33 -0
  188. package/dist/types/tools/platform.d.ts.map +1 -0
  189. package/dist/types/tools/platform.js +5 -0
  190. package/dist/types/tools/platform.js.map +1 -0
  191. package/dist/types/tools/sample-code.d.ts +23 -0
  192. package/dist/types/tools/sample-code.d.ts.map +1 -0
  193. package/dist/types/tools/sample-code.js +5 -0
  194. package/dist/types/tools/sample-code.js.map +1 -0
  195. package/dist/types/tools/technology.d.ts +18 -0
  196. package/dist/types/tools/technology.d.ts.map +1 -0
  197. package/dist/types/tools/technology.js +5 -0
  198. package/dist/types/tools/technology.js.map +1 -0
  199. package/dist/types/tools/updates.d.ts +23 -0
  200. package/dist/types/tools/updates.d.ts.map +1 -0
  201. package/dist/types/tools/updates.js +5 -0
  202. package/dist/types/tools/updates.js.map +1 -0
  203. package/dist/types/wwdc.d.ts +200 -0
  204. package/dist/types/wwdc.d.ts.map +1 -0
  205. package/dist/types/wwdc.js +5 -0
  206. package/dist/types/wwdc.js.map +1 -0
  207. package/dist/utils/cache-warmer.d.ts +22 -0
  208. package/dist/utils/cache-warmer.d.ts.map +1 -0
  209. package/dist/utils/cache-warmer.js +115 -0
  210. package/dist/utils/cache-warmer.js.map +1 -0
  211. package/dist/utils/cache.d.ts +109 -0
  212. package/dist/utils/cache.d.ts.map +1 -0
  213. package/dist/utils/cache.js +302 -0
  214. package/dist/utils/cache.js.map +1 -0
  215. package/dist/utils/constants.d.ts +178 -0
  216. package/dist/utils/constants.d.ts.map +1 -0
  217. package/dist/utils/constants.js +266 -0
  218. package/dist/utils/constants.js.map +1 -0
  219. package/dist/utils/error-handler.d.ts +80 -0
  220. package/dist/utils/error-handler.d.ts.map +1 -0
  221. package/dist/utils/error-handler.js +437 -0
  222. package/dist/utils/error-handler.js.map +1 -0
  223. package/dist/utils/framework-mapper.d.ts +84 -0
  224. package/dist/utils/framework-mapper.d.ts.map +1 -0
  225. package/dist/utils/framework-mapper.js +534 -0
  226. package/dist/utils/framework-mapper.js.map +1 -0
  227. package/dist/utils/http-client.d.ts +130 -0
  228. package/dist/utils/http-client.d.ts.map +1 -0
  229. package/dist/utils/http-client.js +464 -0
  230. package/dist/utils/http-client.js.map +1 -0
  231. package/dist/utils/http-headers-generator.d.ts +151 -0
  232. package/dist/utils/http-headers-generator.d.ts.map +1 -0
  233. package/dist/utils/http-headers-generator.js +407 -0
  234. package/dist/utils/http-headers-generator.js.map +1 -0
  235. package/dist/utils/logger.d.ts +44 -0
  236. package/dist/utils/logger.d.ts.map +1 -0
  237. package/dist/utils/logger.js +73 -0
  238. package/dist/utils/logger.js.map +1 -0
  239. package/dist/utils/preloader.d.ts +20 -0
  240. package/dist/utils/preloader.d.ts.map +1 -0
  241. package/dist/utils/preloader.js +82 -0
  242. package/dist/utils/preloader.js.map +1 -0
  243. package/dist/utils/rate-limiter.d.ts +28 -0
  244. package/dist/utils/rate-limiter.d.ts.map +1 -0
  245. package/dist/utils/rate-limiter.js +48 -0
  246. package/dist/utils/rate-limiter.js.map +1 -0
  247. package/dist/utils/topic-mapper.d.ts +18 -0
  248. package/dist/utils/topic-mapper.d.ts.map +1 -0
  249. package/dist/utils/topic-mapper.js +182 -0
  250. package/dist/utils/topic-mapper.js.map +1 -0
  251. package/dist/utils/url-converter.d.ts +22 -0
  252. package/dist/utils/url-converter.d.ts.map +1 -0
  253. package/dist/utils/url-converter.js +70 -0
  254. package/dist/utils/url-converter.js.map +1 -0
  255. package/dist/utils/user-agent-pool.d.ts +241 -0
  256. package/dist/utils/user-agent-pool.d.ts.map +1 -0
  257. package/dist/utils/user-agent-pool.js +557 -0
  258. package/dist/utils/user-agent-pool.js.map +1 -0
  259. package/dist/utils/wwdc-data-source-path.d.ts +9 -0
  260. package/dist/utils/wwdc-data-source-path.d.ts.map +1 -0
  261. package/dist/utils/wwdc-data-source-path.js +22 -0
  262. package/dist/utils/wwdc-data-source-path.js.map +1 -0
  263. package/dist/utils/wwdc-data-source.d.ts +36 -0
  264. package/dist/utils/wwdc-data-source.d.ts.map +1 -0
  265. package/dist/utils/wwdc-data-source.js +133 -0
  266. package/dist/utils/wwdc-data-source.js.map +1 -0
  267. 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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"}
@@ -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"}