connectiq-mcp-server 1.1.7 → 1.2.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 (217) hide show
  1. package/build/handlers/handlerUtils.d.ts +15 -1
  2. package/build/handlers/handlerUtils.d.ts.map +1 -1
  3. package/build/handlers/handlerUtils.js +24 -1
  4. package/build/handlers/handlerUtils.js.map +1 -1
  5. package/build/handlers/resourceHandlers.d.ts.map +1 -1
  6. package/build/handlers/resourceHandlers.js +69 -22
  7. package/build/handlers/resourceHandlers.js.map +1 -1
  8. package/build/handlers/toolHandlers.d.ts.map +1 -1
  9. package/build/handlers/toolHandlers.js +253 -7
  10. package/build/handlers/toolHandlers.js.map +1 -1
  11. package/build/index.js +10 -4
  12. package/build/index.js.map +1 -1
  13. package/build/parsers/HtmlParser.d.ts +31 -3
  14. package/build/parsers/HtmlParser.d.ts.map +1 -1
  15. package/build/parsers/HtmlParser.js +238 -13
  16. package/build/parsers/HtmlParser.js.map +1 -1
  17. package/build/parsers/HtmlParserSchemas.d.ts +140 -54
  18. package/build/parsers/HtmlParserSchemas.d.ts.map +1 -1
  19. package/build/parsers/HtmlParserSchemas.js +6 -0
  20. package/build/parsers/HtmlParserSchemas.js.map +1 -1
  21. package/build/schemas/SchemaFactory.d.ts +2 -2
  22. package/build/schemas/SchemaFactory.d.ts.map +1 -1
  23. package/build/schemas/SchemaFactory.js +1 -0
  24. package/build/schemas/SchemaFactory.js.map +1 -1
  25. package/build/services/ApiDocService.d.ts +4 -0
  26. package/build/services/ApiDocService.d.ts.map +1 -1
  27. package/build/services/ApiDocService.js +69 -19
  28. package/build/services/ApiDocService.js.map +1 -1
  29. package/build/services/DevGuideService.d.ts +75 -0
  30. package/build/services/DevGuideService.d.ts.map +1 -0
  31. package/build/services/DevGuideService.js +274 -0
  32. package/build/services/DevGuideService.js.map +1 -0
  33. package/build/services/SampleCodeSearchService.d.ts +2 -0
  34. package/build/services/SampleCodeSearchService.d.ts.map +1 -1
  35. package/build/services/SampleCodeSearchService.js +63 -25
  36. package/build/services/SampleCodeSearchService.js.map +1 -1
  37. package/build/types/index.d.ts +48 -1
  38. package/build/types/index.d.ts.map +1 -1
  39. package/build/utils/IndexCache.d.ts +3 -1
  40. package/build/utils/IndexCache.d.ts.map +1 -1
  41. package/build/utils/IndexCache.js +3 -2
  42. package/build/utils/IndexCache.js.map +1 -1
  43. package/build/utils/logging.d.ts +3 -2
  44. package/build/utils/logging.d.ts.map +1 -1
  45. package/build/utils/logging.js +4 -1
  46. package/build/utils/logging.js.map +1 -1
  47. package/data/guides/app-review-guidelines/app-review-guidelines.md +235 -0
  48. package/data/guides/connect-iq-basics/app-types.md +606 -0
  49. package/data/guides/connect-iq-basics/getting-started.md +85 -0
  50. package/data/guides/connect-iq-basics/your-first-app.md +104 -0
  51. package/data/guides/connect-iq-faq/how-do-i-create-a-connect-iq-background-service.md +101 -0
  52. package/data/guides/connect-iq-faq/how-do-i-create-an-audio-content-provider.md +85 -0
  53. package/data/guides/connect-iq-faq/how-do-i-get-my-watch-face-to-update-every-second.md +33 -0
  54. package/data/guides/connect-iq-faq/how-do-i-make-a-watch-face-for-amoled-products.md +74 -0
  55. package/data/guides/connect-iq-faq/how-do-i-optimize-bitmaps.md +313 -0
  56. package/data/guides/connect-iq-faq/how-do-i-override-the-goal-animations.md +13 -0
  57. package/data/guides/connect-iq-faq/how-do-i-use-a-mapview.md +130 -0
  58. package/data/guides/connect-iq-faq/how-do-i-use-custom-fonts.md +203 -0
  59. package/data/guides/connect-iq-faq/how-do-i-use-rest-services.md +127 -0
  60. package/data/guides/connect-iq-faq/how-do-i-use-the-connect-iq-mobile-sdk.md +29 -0
  61. package/data/guides/core-topics/activity-control.md +25 -0
  62. package/data/guides/core-topics/activity-prompts.md +39 -0
  63. package/data/guides/core-topics/activity-recording.md +245 -0
  64. package/data/guides/core-topics/ant-and-ant-plus.md +177 -0
  65. package/data/guides/core-topics/application-and-system-modules.md +239 -0
  66. package/data/guides/core-topics/authenticated-web-services.md +69 -0
  67. package/data/guides/core-topics/backgrounding.md +138 -0
  68. package/data/guides/core-topics/beta-apps.md +7 -0
  69. package/data/guides/core-topics/bluetooth-low-energy.md +142 -0
  70. package/data/guides/core-topics/build-configuration.md +149 -0
  71. package/data/guides/core-topics/communicating-with-mobile-apps.md +45 -0
  72. package/data/guides/core-topics/complications.md +387 -0
  73. package/data/guides/core-topics/debugging.md +193 -0
  74. package/data/guides/core-topics/downloading-content.md +116 -0
  75. package/data/guides/core-topics/editing-watch-faces-on-device.md +178 -0
  76. package/data/guides/core-topics/exception-reporting-tool.md +88 -0
  77. package/data/guides/core-topics/getting-the-users-attention.md +248 -0
  78. package/data/guides/core-topics/glances.md +70 -0
  79. package/data/guides/core-topics/graphics.md +343 -0
  80. package/data/guides/core-topics/https.md +134 -0
  81. package/data/guides/core-topics/input-handling.md +321 -0
  82. package/data/guides/core-topics/intents.md +41 -0
  83. package/data/guides/core-topics/layouts.md +686 -0
  84. package/data/guides/core-topics/manifest-and-permissions.md +406 -0
  85. package/data/guides/core-topics/mobile-sdk-for-android.md +321 -0
  86. package/data/guides/core-topics/mobile-sdk-for-ios.md +237 -0
  87. package/data/guides/core-topics/monkey-style.md +98 -0
  88. package/data/guides/core-topics/native-controls.md +786 -0
  89. package/data/guides/core-topics/notifications.md +73 -0
  90. package/data/guides/core-topics/pairing-wireless-devices.md +91 -0
  91. package/data/guides/core-topics/persisting-data.md +155 -0
  92. package/data/guides/core-topics/positioning.md +105 -0
  93. package/data/guides/core-topics/profiling.md +65 -0
  94. package/data/guides/core-topics/properties-and-app-settings.md +385 -0
  95. package/data/guides/core-topics/publishing-to-the-store.md +70 -0
  96. package/data/guides/core-topics/quantifying-the-user.md +355 -0
  97. package/data/guides/core-topics/requesting-reviews.md +54 -0
  98. package/data/guides/core-topics/resources.md +1028 -0
  99. package/data/guides/core-topics/security.md +41 -0
  100. package/data/guides/core-topics/sensors.md +467 -0
  101. package/data/guides/core-topics/shareable-libraries.md +220 -0
  102. package/data/guides/core-topics/trial-apps.md +136 -0
  103. package/data/guides/core-topics/unit-testing.md +118 -0
  104. package/data/guides/core-topics/user-interface.md +80 -0
  105. package/data/guides/index.json +723 -0
  106. package/data/guides/monetization/account-management.md +13 -0
  107. package/data/guides/monetization/app-sales.md +86 -0
  108. package/data/guides/monetization/merchant-onboarding.md +65 -0
  109. package/data/guides/monetization/monetization.md +11 -0
  110. package/data/guides/monetization/price-points.md +6386 -0
  111. package/data/guides/monkey-c/annotations.md +48 -0
  112. package/data/guides/monkey-c/coding-conventions.md +68 -0
  113. package/data/guides/monkey-c/compiler-options.md +219 -0
  114. package/data/guides/monkey-c/containers.md +86 -0
  115. package/data/guides/monkey-c/exceptions-and-errors.md +126 -0
  116. package/data/guides/monkey-c/functions.md +572 -0
  117. package/data/guides/monkey-c/monkey-c.md +115 -0
  118. package/data/guides/monkey-c/monkey-types.md +1070 -0
  119. package/data/guides/monkey-c/objects-and-memory.md +422 -0
  120. package/data/guides/personality-library/action-views.md +139 -0
  121. package/data/guides/personality-library/colors.md +228 -0
  122. package/data/guides/personality-library/confirmations.md +143 -0
  123. package/data/guides/personality-library/iconography.md +92 -0
  124. package/data/guides/personality-library/input-hints.md +66 -0
  125. package/data/guides/personality-library/page-loops.md +23 -0
  126. package/data/guides/personality-library/personality-library.md +83 -0
  127. package/data/guides/personality-library/progress-bars.md +47 -0
  128. package/data/guides/personality-library/prompts.md +94 -0
  129. package/data/guides/personality-library/toasts.md +25 -0
  130. package/data/guides/personality-library/typography.md +47 -0
  131. package/data/guides/reference-guides/jungle-reference.md +390 -0
  132. package/data/guides/reference-guides/monkey-c-command-line-setup.md +151 -0
  133. package/data/guides/reference-guides/monkey-c-reference.md +1697 -0
  134. package/data/guides/reference-guides/monkey-graph-reference.md +53 -0
  135. package/data/guides/reference-guides/monkey-motion-reference.md +414 -0
  136. package/data/guides/reference-guides/visual-studio-code-extension.md +260 -0
  137. package/data/guides/ux-guide/confirmations.md +13 -0
  138. package/data/guides/ux-guide/data-fields.md +59 -0
  139. package/data/guides/ux-guide/design-principles.md +11 -0
  140. package/data/guides/ux-guide/designing-workflows-and-interactions.md +200 -0
  141. package/data/guides/ux-guide/developing-the-concepts.md +62 -0
  142. package/data/guides/ux-guide/entry-points.md +46 -0
  143. package/data/guides/ux-guide/incorporating-the-visual-design-and-product-personalities.md +211 -0
  144. package/data/guides/ux-guide/localization.md +90 -0
  145. package/data/guides/ux-guide/map-views.md +11 -0
  146. package/data/guides/ux-guide/menus.md +35 -0
  147. package/data/guides/ux-guide/progress-bars.md +19 -0
  148. package/data/guides/ux-guide/understanding-what-you-are-building.md +39 -0
  149. package/data/guides/ux-guide/views.md +42 -0
  150. package/data/guides/ux-guide/watch-faces.md +59 -0
  151. package/package.json +10 -3
  152. package/.claude/settings.json +0 -11
  153. package/.claude/skills/commit/SKILL.md +0 -19
  154. package/.claude/skills/create-pr/SKILL.md +0 -44
  155. package/.github/workflows/publish.yml +0 -52
  156. package/.mcp.json +0 -36
  157. package/.prettierignore +0 -3
  158. package/.prettierrc +0 -8
  159. package/.serena/memories/code_style.md +0 -64
  160. package/.serena/memories/project_overview.md +0 -71
  161. package/.serena/memories/suggested_commands.md +0 -59
  162. package/.serena/memories/task_completion.md +0 -56
  163. package/.serena/project.yml +0 -89
  164. package/CHANGELOG.md +0 -99
  165. package/CLAUDE.md +0 -100
  166. package/eslint.config.js +0 -44
  167. package/mcp/github/.env.example +0 -1
  168. package/mcp/github/command.sh +0 -20
  169. package/server.json +0 -34
  170. package/src/config/ConfigManager.ts +0 -425
  171. package/src/handlers/handlerUtils.ts +0 -217
  172. package/src/handlers/promptHandlers.ts +0 -453
  173. package/src/handlers/resourceHandlers.ts +0 -390
  174. package/src/handlers/toolHandlers.ts +0 -1460
  175. package/src/index.ts +0 -158
  176. package/src/parsers/HtmlParser.ts +0 -1223
  177. package/src/parsers/HtmlParserSchemas.ts +0 -138
  178. package/src/parsers/XmlParser.ts +0 -445
  179. package/src/schemas/DataSampler.ts +0 -276
  180. package/src/schemas/SchemaFactory.ts +0 -423
  181. package/src/schemas/SchemaInferenceEngine.ts +0 -365
  182. package/src/schemas/index.ts +0 -36
  183. package/src/services/ApiDocService.ts +0 -739
  184. package/src/services/DeviceInfoService.ts +0 -564
  185. package/src/services/ProjectInfoService.ts +0 -62
  186. package/src/services/SampleCodeSearchService.ts +0 -534
  187. package/src/services/SampleService.ts +0 -659
  188. package/src/types/index.ts +0 -672
  189. package/src/utils/AsyncFileCache.ts +0 -118
  190. package/src/utils/DeviceFilter.ts +0 -345
  191. package/src/utils/IndexCache.ts +0 -305
  192. package/src/utils/MarkdownConverter.ts +0 -318
  193. package/src/utils/ParsingQualityMetrics.ts +0 -475
  194. package/src/utils/index.ts +0 -21
  195. package/src/utils/logging.ts +0 -92
  196. package/src/utils/versionUtils.ts +0 -34
  197. package/test/fixtures/mockConfig.ts +0 -780
  198. package/test/unit/config/ConfigManager.test.ts +0 -709
  199. package/test/unit/handlers/resourceHandlers.test.ts +0 -333
  200. package/test/unit/handlers/toolHandlers.test.ts +0 -706
  201. package/test/unit/parsers/HtmlParser.test.ts +0 -1196
  202. package/test/unit/parsers/XmlParser.test.ts +0 -368
  203. package/test/unit/schemas/SchemaFactory.test.ts +0 -331
  204. package/test/unit/schemas/SchemaInferenceEngine.test.ts +0 -315
  205. package/test/unit/services/ApiDocService.test.ts +0 -410
  206. package/test/unit/services/DeviceInfoService.test.ts +0 -839
  207. package/test/unit/services/ProjectInfoService.test.ts +0 -68
  208. package/test/unit/services/SampleCodeSearchService.test.ts +0 -505
  209. package/test/unit/services/SampleService.test.ts +0 -369
  210. package/test/unit/utils/DeviceFilter.test.ts +0 -599
  211. package/test/unit/utils/IndexCache.test.ts +0 -425
  212. package/test/unit/utils/MarkdownConverter.test.ts +0 -327
  213. package/test/unit/utils/ParsingQualityMetrics.test.ts +0 -858
  214. package/test/unit/utils/versionUtils.test.ts +0 -57
  215. package/tsconfig.json +0 -20
  216. package/tsconfig.test.json +0 -8
  217. package/vitest.config.ts +0 -20
@@ -7,7 +7,7 @@
7
7
  * - Generic prefix-based filtering for completions
8
8
  *
9
9
  * Key design decisions:
10
- * - All completables use pre-loaded SchemaFactory enums (no runtime service calls)
10
+ * - Device/appType/screenShape completables use pre-loaded SchemaFactory enums; module/project/file completables use async service calls
11
11
  * - Error handling follows MCP 2025-11-25 spec (isError flag enables LLM self-correction)
12
12
  * - Zod validation errors formatted with field paths for easier debugging
13
13
  */
@@ -45,6 +45,20 @@ export declare function validateToolOutput<T>(data: T, schema: ZodTypeAny, toolN
45
45
  * @returns Filtered options (max 100)
46
46
  */
47
47
  export declare function filterByPrefix(options: readonly string[], value: string | undefined): string[];
48
+ /**
49
+ * Validate a path component to prevent path traversal attacks.
50
+ * Rejects '.', '..', absolute paths, Windows drive letters, and null bytes.
51
+ */
52
+ export declare function isValidPathComponent(component: string): boolean;
53
+ /**
54
+ * Format guide content with a standard header including title, category, and source URL
55
+ */
56
+ export declare function formatGuideContent(guide: {
57
+ title: string;
58
+ category: string;
59
+ url: string;
60
+ content: string;
61
+ }): string;
48
62
  /**
49
63
  * Creates a completable schema for device ID arguments with dynamic autocompletion.
50
64
  * Uses pre-loaded SchemaFactory enum for validation + prefix filtering for completion.
@@ -1 +1 @@
1
- {"version":3,"file":"handlerUtils.d.ts","sourceRoot":"","sources":["../../src/handlers/handlerUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,CAAC,CAaH;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,EAAE,CAKV;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,GAClB,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GACb,UAAU,CACX,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AAaF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,GAClB,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GACb,UAAU,CACX,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AAaF;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,GAClB,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GACb,UAAU,CACX,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC"}
1
+ {"version":3,"file":"handlerUtils.d.ts","sourceRoot":"","sources":["../../src/handlers/handlerUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,CAAC,CAaH;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,EAAE,CAKV;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAO/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAET;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,GAClB,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GACb,UAAU,CACX,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AAaF;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,GAClB,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GACb,UAAU,CACX,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AAaF;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,GAClB,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GACb,UAAU,CACX,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * - Generic prefix-based filtering for completions
8
8
  *
9
9
  * Key design decisions:
10
- * - All completables use pre-loaded SchemaFactory enums (no runtime service calls)
10
+ * - Device/appType/screenShape completables use pre-loaded SchemaFactory enums; module/project/file completables use async service calls
11
11
  * - Error handling follows MCP 2025-11-25 spec (isError flag enables LLM self-correction)
12
12
  * - Zod validation errors formatted with field paths for easier debugging
13
13
  */
@@ -71,6 +71,29 @@ export function filterByPrefix(options, value) {
71
71
  .filter((opt) => opt.toLowerCase().startsWith(lowerValue))
72
72
  .slice(0, 100);
73
73
  }
74
+ /**
75
+ * Validate a path component to prevent path traversal attacks.
76
+ * Rejects '.', '..', absolute paths, Windows drive letters, and null bytes.
77
+ */
78
+ export function isValidPathComponent(component) {
79
+ if (!component)
80
+ return false;
81
+ if (component === "." || component === "..")
82
+ return false;
83
+ if (component.startsWith("/") || component.startsWith("\\"))
84
+ return false;
85
+ if (/^[a-zA-Z]:/.test(component))
86
+ return false;
87
+ if (component.includes("\0"))
88
+ return false;
89
+ return true;
90
+ }
91
+ /**
92
+ * Format guide content with a standard header including title, category, and source URL
93
+ */
94
+ export function formatGuideContent(guide) {
95
+ return `# ${guide.title}\n\n**Category:** ${guide.category}\n**Source:** ${guide.url}\n\n---\n\n${guide.content}`;
96
+ }
74
97
  // ============================================================================
75
98
  // Completable Factory Functions
76
99
  //
@@ -1 +1 @@
1
- {"version":3,"file":"handlerUtils.js","sourceRoot":"","sources":["../../src/handlers/handlerUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlerUtils.js","sourceRoot":"","sources":["../../src/handlers/handlerUtils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resourceHandlers.d.ts","sourceRoot":"","sources":["../../src/handlers/resourceHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6BlD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,GACb,IAAI,CAkVN"}
1
+ {"version":3,"file":"resourceHandlers.d.ts","sourceRoot":"","sources":["../../src/handlers/resourceHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQlD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,GACb,IAAI,CAsaN"}
@@ -10,32 +10,12 @@
10
10
  * - ResourceTemplate for dynamic URI patterns with completion support
11
11
  */
12
12
  import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
13
- import { formatErrorMessage } from "./handlerUtils.js";
14
- /**
15
- * Validate a path component to prevent path traversal attacks
16
- */
17
- function isValidPathComponent(component) {
18
- if (!component)
19
- return false;
20
- // Reject path traversal patterns
21
- if (component === "." || component === "..")
22
- return false;
23
- // Reject absolute paths on Unix/Windows
24
- if (component.startsWith("/") || component.startsWith("\\"))
25
- return false;
26
- // Reject Windows drive letters
27
- if (/^[a-zA-Z]:/.test(component))
28
- return false;
29
- // Reject null bytes
30
- if (component.includes("\0"))
31
- return false;
32
- return true;
33
- }
13
+ import { formatErrorMessage, isValidPathComponent, filterByPrefix, formatGuideContent, } from "./handlerUtils.js";
34
14
  /**
35
15
  * Register all resource handlers with the MCP server
36
16
  */
37
17
  export function registerResources(server, services, logger) {
38
- const { apiDocService, deviceInfoService, sampleService } = services;
18
+ const { apiDocService, deviceInfoService, sampleService, devGuideService } = services;
39
19
  // Register API module documentation resources using a template
40
20
  // API docs are primarily for the assistant to understand the SDK
41
21
  const apiAnnotations = {
@@ -324,5 +304,72 @@ export function registerResources(server, services, logger) {
324
304
  throw new Error(errorMessage);
325
305
  }
326
306
  });
307
+ // Register developer guide resources using a template
308
+ // Guides provide learning content for both users and assistants
309
+ const guideAnnotations = {
310
+ audience: ["user", "assistant"],
311
+ priority: 0.7, // Important reference for development guidance
312
+ };
313
+ server.registerResource("dev-guide", new ResourceTemplate("connectiq://guides/{slug}", {
314
+ list: async () => {
315
+ const guides = await devGuideService.listGuides();
316
+ return {
317
+ resources: guides.map((guide) => ({
318
+ uri: `connectiq://guides/${guide.slug}`,
319
+ name: `Guide: ${guide.title}`,
320
+ description: `${guide.category} - ${guide.title}`,
321
+ mimeType: "text/markdown",
322
+ annotations: guideAnnotations,
323
+ })),
324
+ };
325
+ },
326
+ complete: {
327
+ slug: async (value) => {
328
+ const guides = await devGuideService.listGuides();
329
+ return filterByPrefix(guides.map((g) => g.slug), value);
330
+ },
331
+ },
332
+ }), {
333
+ title: "ConnectIQ Developer Guide",
334
+ description: "Developer guide content from developer.garmin.com/connect-iq/",
335
+ mimeType: "text/markdown",
336
+ annotations: guideAnnotations,
337
+ }, async (uri, params) => {
338
+ const slug = Array.isArray(params.slug)
339
+ ? params.slug.join("/")
340
+ : params.slug;
341
+ logger.debug(`Resource read: ${uri.href}`, { resource: uri.href });
342
+ try {
343
+ // Validate slug to prevent path traversal
344
+ const slugParts = slug.split("/");
345
+ for (const part of slugParts) {
346
+ if (!isValidPathComponent(part)) {
347
+ throw new Error(`Invalid guide slug: ${slug}`);
348
+ }
349
+ }
350
+ const guide = await devGuideService.getGuide(slug);
351
+ if (!guide) {
352
+ throw new Error(`Developer guide not found: ${slug}`);
353
+ }
354
+ const content = formatGuideContent(guide);
355
+ return {
356
+ contents: [
357
+ {
358
+ uri: uri.href,
359
+ mimeType: "text/markdown",
360
+ text: content,
361
+ },
362
+ ],
363
+ };
364
+ }
365
+ catch (error) {
366
+ const errorMessage = formatErrorMessage(error);
367
+ logger.error(`Resource read error: ${errorMessage}`, {
368
+ resource: uri.href,
369
+ slug,
370
+ });
371
+ throw new Error(errorMessage);
372
+ }
373
+ });
327
374
  }
328
375
  //# sourceMappingURL=resourceHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resourceHandlers.js","sourceRoot":"","sources":["../../src/handlers/resourceHandlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resourceHandlers.js","sourceRoot":"","sources":["../../src/handlers/resourceHandlers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toolHandlers.d.ts","sourceRoot":"","sources":["../../src/handlers/toolHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAiW5E;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,GACb,IAAI,CA+iCN"}
1
+ {"version":3,"file":"toolHandlers.d.ts","sourceRoot":"","sources":["../../src/handlers/toolHandlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAsa5E;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,GACb,IAAI,CA+xCN"}
@@ -13,7 +13,7 @@ import { completable } from "@modelcontextprotocol/sdk/server/completable.js";
13
13
  import { z } from "zod";
14
14
  import { DeviceFilter, parseNumericFilter } from "../utils/index.js";
15
15
  import { API_ELEMENT_TYPES } from "../schemas/index.js";
16
- import { formatErrorMessage, validateToolOutput, createDeviceIdCompletable, createScreenShapeCompletable, createAppTypeCompletable, } from "./handlerUtils.js";
16
+ import { formatErrorMessage, validateToolOutput, isValidPathComponent, filterByPrefix, formatGuideContent, createDeviceIdCompletable, createScreenShapeCompletable, createAppTypeCompletable, } from "./handlerUtils.js";
17
17
  // ============================================================================
18
18
  // Output Schemas for structured tool responses (as Zod schemas)
19
19
  //
@@ -53,6 +53,10 @@ const SearchApiDocsOutputSchema = z.object({
53
53
  returnType: z.string().optional().describe("Return type"),
54
54
  since: z.string().optional().describe("API level introduced"),
55
55
  deprecated: z.boolean().optional().describe("Whether deprecated"),
56
+ deprecationMessage: z
57
+ .string()
58
+ .optional()
59
+ .describe("Deprecation reason/message"),
56
60
  supportedDevices: z
57
61
  .array(z.string())
58
62
  .optional()
@@ -61,6 +65,10 @@ const SearchApiDocsOutputSchema = z.object({
61
65
  .array(z.string())
62
66
  .optional()
63
67
  .describe("App types that support this API element"),
68
+ requiredPermissions: z
69
+ .array(z.string())
70
+ .optional()
71
+ .describe("Required permissions for this API"),
64
72
  // Extended API documentation fields
65
73
  notes: z
66
74
  .array(z.string())
@@ -162,6 +170,9 @@ function projectApiElement(element, detailLevel) {
162
170
  signature: element.signature,
163
171
  since: element.since,
164
172
  deprecated: element.deprecated,
173
+ deprecationMessage: element.deprecationMessage,
174
+ returnType: element.returnType,
175
+ propertyType: element.propertyType,
165
176
  };
166
177
  // For enums, include member count instead of full array
167
178
  if (element.type === "enum" && element.enumMembers) {
@@ -188,6 +199,17 @@ const ListDevicesOutputSchema = z.object({
188
199
  .optional()
189
200
  .describe("Display type (e.g., amoled, mip)"),
190
201
  deviceFamily: z.string().optional().describe("Device family identifier"),
202
+ hasTouch: z.boolean().optional().describe("Touch screen support"),
203
+ appTypes: z
204
+ .array(z.object({
205
+ type: z.string().describe("App type identifier"),
206
+ memoryLimit: z
207
+ .number()
208
+ .optional()
209
+ .describe("Memory limit in bytes"),
210
+ }))
211
+ .optional()
212
+ .describe("Supported app types with memory limits"),
191
213
  })),
192
214
  totalDevices: z.number().describe("Total number of devices"),
193
215
  query: z.string().optional().describe("Search query applied"),
@@ -299,7 +321,40 @@ const SearchSampleCodeOutputSchema = z.object({
299
321
  const TOOL_ANNOTATIONS = {
300
322
  readOnlyHint: true,
301
323
  idempotentHint: true,
324
+ destructiveHint: false,
325
+ openWorldHint: false,
302
326
  };
327
+ /**
328
+ * Output schema for searchDevGuides tool
329
+ */
330
+ const SearchDevGuidesOutputSchema = z.object({
331
+ results: z.array(z.object({
332
+ slug: z.string().describe("Guide slug identifier"),
333
+ title: z.string().describe("Guide page title"),
334
+ category: z.string().describe("Guide category"),
335
+ url: z.string().describe("Source URL on developer.garmin.com"),
336
+ snippet: z.string().describe("Relevant text snippet"),
337
+ score: z.number().describe("Relevance score"),
338
+ })),
339
+ totalResults: z.number().describe("Total number of results found"),
340
+ query: z.string().describe("Original search query"),
341
+ filters: z
342
+ .object({
343
+ category: z.string().optional().describe("Category filter applied"),
344
+ })
345
+ .optional()
346
+ .describe("Filters applied to the search"),
347
+ });
348
+ /**
349
+ * Output schema for getDevGuide tool
350
+ */
351
+ const GetDevGuideOutputSchema = z.object({
352
+ slug: z.string().describe("Guide slug identifier"),
353
+ title: z.string().describe("Guide page title"),
354
+ category: z.string().describe("Guide category"),
355
+ url: z.string().describe("Source URL on developer.garmin.com"),
356
+ content: z.string().describe("Full markdown content of the guide"),
357
+ });
303
358
  /**
304
359
  * Register all tool handlers with the MCP server
305
360
  * @param server - MCP server instance
@@ -308,7 +363,7 @@ const TOOL_ANNOTATIONS = {
308
363
  * @param logger - Logger for structured logging
309
364
  */
310
365
  export function registerTools(server, services, schemaFactory, logger) {
311
- const { apiDocService, deviceInfoService, sampleService, projectInfoService, sampleCodeSearchService, } = services;
366
+ const { apiDocService, deviceInfoService, sampleService, projectInfoService, sampleCodeSearchService, devGuideService, } = services;
312
367
  // Register searchApiDocs tool
313
368
  server.registerTool("searchApiDocs", {
314
369
  title: "Search ConnectIQ API Documentation",
@@ -330,7 +385,7 @@ export function registerTools(server, services, schemaFactory, logger) {
330
385
  .filter((name) => name.toLowerCase().startsWith(lowerValue))
331
386
  .slice(0, 100);
332
387
  }),
333
- limit: z
388
+ limit: z.coerce
334
389
  .number()
335
390
  .optional()
336
391
  .default(20)
@@ -660,8 +715,24 @@ export function registerTools(server, services, schemaFactory, logger) {
660
715
  devices = filter.filterDevices(devices);
661
716
  }
662
717
  const formatted = devices
663
- .map((d) => `- ${d.id}: ${d.name}${d.screenWidth ? ` (${d.screenWidth}x${d.screenHeight})` : ""}`)
718
+ .map((d) => {
719
+ let line = `- ${d.id}: ${d.name}`;
720
+ if (d.screenWidth)
721
+ line += ` (${d.screenWidth}x${d.screenHeight})`;
722
+ const hasTouch = d.hasTouch ?? d.display?.isTouch;
723
+ if (hasTouch)
724
+ line += " [touch]";
725
+ return line;
726
+ })
664
727
  .join("\n");
728
+ // Normalize appTypes to consistent {type, memoryLimit?}[] format
729
+ const normalizeAppTypes = (appTypes) => {
730
+ if (!appTypes || appTypes.length === 0)
731
+ return undefined;
732
+ return appTypes.map((at) => typeof at === "string"
733
+ ? { type: at }
734
+ : { type: at.type, memoryLimit: at.memoryLimit });
735
+ };
665
736
  const structuredOutput = {
666
737
  devices: devices.map((d) => ({
667
738
  id: d.id,
@@ -671,6 +742,8 @@ export function registerTools(server, services, schemaFactory, logger) {
671
742
  screenShape: d.screenShape,
672
743
  displayType: d.displayType,
673
744
  deviceFamily: d.deviceFamily,
745
+ hasTouch: d.hasTouch ?? d.display?.isTouch,
746
+ appTypes: normalizeAppTypes(d.appTypes),
674
747
  })),
675
748
  totalDevices: devices.length,
676
749
  query,
@@ -736,7 +809,7 @@ export function registerTools(server, services, schemaFactory, logger) {
736
809
  .string()
737
810
  .optional()
738
811
  .describe("Filter by minimum SDK version (e.g., '3.0.0')"),
739
- limit: z
812
+ limit: z.coerce
740
813
  .number()
741
814
  .optional()
742
815
  .default(50)
@@ -1010,12 +1083,12 @@ export function registerTools(server, services, schemaFactory, logger) {
1010
1083
  .enum([".mc", ".xml", ".jungle", ".json"])
1011
1084
  .optional()
1012
1085
  .describe("Filter by file type"),
1013
- limit: z
1086
+ limit: z.coerce
1014
1087
  .number()
1015
1088
  .optional()
1016
1089
  .default(20)
1017
1090
  .describe("Maximum number of results to return"),
1018
- contextLines: z
1091
+ contextLines: z.coerce
1019
1092
  .number()
1020
1093
  .optional()
1021
1094
  .default(2)
@@ -1105,6 +1178,179 @@ export function registerTools(server, services, schemaFactory, logger) {
1105
1178
  };
1106
1179
  }
1107
1180
  });
1181
+ // Register searchDevGuides tool for searching developer guide content
1182
+ server.registerTool("searchDevGuides", {
1183
+ title: "Search Developer Guides",
1184
+ description: "Search ConnectIQ developer guides from developer.garmin.com. Covers Monkey C language, " +
1185
+ "core topics (UI, sensors, BLE, backgrounding, debugging), UX guidelines, FAQ, and more. " +
1186
+ "Use this to find development guides, tutorials, and best practices.",
1187
+ annotations: TOOL_ANNOTATIONS,
1188
+ inputSchema: {
1189
+ query: z
1190
+ .string()
1191
+ .min(1, "Search query cannot be empty")
1192
+ .describe("Search term to find in developer guides"),
1193
+ category: completable(z
1194
+ .string()
1195
+ .optional()
1196
+ .describe("Filter by guide category (e.g., 'Core Topics', 'Monkey C', 'UX Guide')"), async (value) => {
1197
+ const categories = await devGuideService.listCategories();
1198
+ return filterByPrefix(categories, value);
1199
+ }),
1200
+ limit: z.coerce
1201
+ .number()
1202
+ .optional()
1203
+ .default(10)
1204
+ .describe("Maximum number of results to return"),
1205
+ },
1206
+ outputSchema: SearchDevGuidesOutputSchema,
1207
+ }, async ({ query, category, limit }) => {
1208
+ logger.debug(`Tool called: searchDevGuides`, {
1209
+ tool: "searchDevGuides",
1210
+ query,
1211
+ });
1212
+ try {
1213
+ const results = await devGuideService.search(query, {
1214
+ category,
1215
+ limit,
1216
+ });
1217
+ const structuredOutput = {
1218
+ results: results.map((r) => ({
1219
+ slug: r.slug,
1220
+ title: r.title,
1221
+ category: r.category,
1222
+ url: r.url,
1223
+ snippet: r.snippet,
1224
+ score: r.score,
1225
+ })),
1226
+ totalResults: results.length,
1227
+ query,
1228
+ filters: category ? { category } : undefined,
1229
+ };
1230
+ validateToolOutput(structuredOutput, SearchDevGuidesOutputSchema, "searchDevGuides", logger);
1231
+ if (results.length === 0) {
1232
+ let message = `No developer guides found matching "${query}"`;
1233
+ if (category)
1234
+ message += ` in category "${category}"`;
1235
+ message += ".";
1236
+ return {
1237
+ content: [{ type: "text", text: message }],
1238
+ structuredContent: structuredOutput,
1239
+ };
1240
+ }
1241
+ const formatted = results
1242
+ .map((r, i) => `${i + 1}. **${r.title}** (${r.category})\n ${r.url}\n ${r.snippet}`)
1243
+ .join("\n\n");
1244
+ let header = `Found ${results.length} guide(s) matching "${query}"`;
1245
+ if (category)
1246
+ header += ` in ${category}`;
1247
+ header += ":\n\n";
1248
+ return {
1249
+ content: [{ type: "text", text: `${header}${formatted}` }],
1250
+ structuredContent: structuredOutput,
1251
+ };
1252
+ }
1253
+ catch (error) {
1254
+ const errorMessage = formatErrorMessage(error);
1255
+ logger.error(`searchDevGuides error: ${errorMessage}`, {
1256
+ tool: "searchDevGuides",
1257
+ query,
1258
+ });
1259
+ return {
1260
+ content: [
1261
+ {
1262
+ type: "text",
1263
+ text: `Error searching developer guides: ${errorMessage}`,
1264
+ },
1265
+ ],
1266
+ isError: true,
1267
+ };
1268
+ }
1269
+ });
1270
+ // Register getDevGuide tool for reading full guide content
1271
+ server.registerTool("getDevGuide", {
1272
+ title: "Get Developer Guide",
1273
+ description: "Get the full content of a ConnectIQ developer guide page. Use searchDevGuides first to find " +
1274
+ "relevant guides, then use this tool with the slug to read the full content.",
1275
+ annotations: TOOL_ANNOTATIONS,
1276
+ inputSchema: {
1277
+ slug: completable(z
1278
+ .string()
1279
+ .min(1, "Guide slug cannot be empty")
1280
+ .describe("Guide slug (e.g., 'core-topics/backgrounding', 'monkey-c/functions')"), async (value) => {
1281
+ const guides = await devGuideService.listGuides();
1282
+ return filterByPrefix(guides.map((g) => g.slug), value);
1283
+ }),
1284
+ },
1285
+ outputSchema: GetDevGuideOutputSchema,
1286
+ }, async ({ slug }) => {
1287
+ logger.debug(`Tool called: getDevGuide`, {
1288
+ tool: "getDevGuide",
1289
+ slug,
1290
+ });
1291
+ try {
1292
+ // Validate slug to prevent path traversal
1293
+ const slugParts = slug.split("/");
1294
+ for (const part of slugParts) {
1295
+ if (!isValidPathComponent(part)) {
1296
+ return {
1297
+ content: [
1298
+ {
1299
+ type: "text",
1300
+ text: `Invalid guide slug: "${slug}". Use searchDevGuides to find available guides.`,
1301
+ },
1302
+ ],
1303
+ isError: true,
1304
+ };
1305
+ }
1306
+ }
1307
+ const guide = await devGuideService.getGuide(slug);
1308
+ if (!guide) {
1309
+ return {
1310
+ content: [
1311
+ {
1312
+ type: "text",
1313
+ text: `Developer guide not found: "${slug}". Use searchDevGuides to find available guides.`,
1314
+ },
1315
+ ],
1316
+ isError: true,
1317
+ };
1318
+ }
1319
+ const structuredOutput = {
1320
+ slug,
1321
+ title: guide.title,
1322
+ category: guide.category,
1323
+ url: guide.url,
1324
+ content: guide.content,
1325
+ };
1326
+ validateToolOutput(structuredOutput, GetDevGuideOutputSchema, "getDevGuide", logger);
1327
+ return {
1328
+ content: [
1329
+ {
1330
+ type: "text",
1331
+ text: formatGuideContent(guide),
1332
+ },
1333
+ ],
1334
+ structuredContent: structuredOutput,
1335
+ };
1336
+ }
1337
+ catch (error) {
1338
+ const errorMessage = formatErrorMessage(error);
1339
+ logger.error(`getDevGuide error: ${errorMessage}`, {
1340
+ tool: "getDevGuide",
1341
+ slug,
1342
+ });
1343
+ return {
1344
+ content: [
1345
+ {
1346
+ type: "text",
1347
+ text: `Error reading developer guide: ${errorMessage}`,
1348
+ },
1349
+ ],
1350
+ isError: true,
1351
+ };
1352
+ }
1353
+ });
1108
1354
  // Register getProjectConfig tool with output schema for structured responses
1109
1355
  server.registerTool("getProjectConfig", {
1110
1356
  title: "Get Project Configuration",