@continuumdao/continuum-node-sdk 1.3.39 → 1.3.41

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 (258) hide show
  1. package/dist/agent-host-catalog.json +1318 -52
  2. package/dist/core/agent/user-folder.d.ts +22 -0
  3. package/dist/core/agent/user-folder.d.ts.map +1 -0
  4. package/dist/core/agent/user-folder.js +82 -0
  5. package/dist/core/agent/user-folder.js.map +1 -0
  6. package/dist/core/chart/analysis/analyze-tools.d.ts +79 -5
  7. package/dist/core/chart/analysis/analyze-tools.d.ts.map +1 -1
  8. package/dist/core/chart/analysis/analyze-tools.js +6 -1
  9. package/dist/core/chart/analysis/analyze-tools.js.map +1 -1
  10. package/dist/core/chart/analysis/bollinger-analyze-tools.d.ts +9 -0
  11. package/dist/core/chart/analysis/bollinger-analyze-tools.d.ts.map +1 -1
  12. package/dist/core/chart/analysis/bollinger-analyze-tools.js +39 -19
  13. package/dist/core/chart/analysis/bollinger-analyze-tools.js.map +1 -1
  14. package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts +28 -0
  15. package/dist/core/chart/analysis/chart-patterns-drawings-tools.d.ts.map +1 -1
  16. package/dist/core/chart/analysis/chart-patterns-tools.d.ts +28 -0
  17. package/dist/core/chart/analysis/chart-patterns-tools.d.ts.map +1 -1
  18. package/dist/core/chart/analysis/divergence-analyze-tools.d.ts +15 -0
  19. package/dist/core/chart/analysis/divergence-analyze-tools.d.ts.map +1 -1
  20. package/dist/core/chart/analysis/divergence-analyze-tools.js +2 -0
  21. package/dist/core/chart/analysis/divergence-analyze-tools.js.map +1 -1
  22. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts +15 -0
  23. package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts.map +1 -1
  24. package/dist/core/chart/analysis/elliott-waves-analyze-tools.js +2 -0
  25. package/dist/core/chart/analysis/elliott-waves-analyze-tools.js.map +1 -1
  26. package/dist/core/chart/analysis/moving-averages-analyze-tools.d.ts +4 -2
  27. package/dist/core/chart/analysis/moving-averages-analyze-tools.d.ts.map +1 -1
  28. package/dist/core/chart/analysis/moving-averages-analyze-tools.js +23 -23
  29. package/dist/core/chart/analysis/moving-averages-analyze-tools.js.map +1 -1
  30. package/dist/core/chart/analysis/trade-setups/bollinger-trade-setup.d.ts +14 -0
  31. package/dist/core/chart/analysis/trade-setups/bollinger-trade-setup.d.ts.map +1 -1
  32. package/dist/core/chart/analysis/trade-setups/bollinger-trade-setup.js +48 -4
  33. package/dist/core/chart/analysis/trade-setups/bollinger-trade-setup.js.map +1 -1
  34. package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
  35. package/dist/core/chart/analysis/trade-setups/build-trade.js +4 -1
  36. package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
  37. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts +14 -0
  38. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.d.ts.map +1 -1
  39. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js +16 -0
  40. package/dist/core/chart/analysis/trade-setups/trade-desk-universal-input.js.map +1 -1
  41. package/dist/core/chart/ohlcv-session-store.d.ts +2 -0
  42. package/dist/core/chart/ohlcv-session-store.d.ts.map +1 -1
  43. package/dist/core/chart/ohlcv-session-store.js +66 -9
  44. package/dist/core/chart/ohlcv-session-store.js.map +1 -1
  45. package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
  46. package/dist/core/chart/overlay-schemas.js +2 -0
  47. package/dist/core/chart/overlay-schemas.js.map +1 -1
  48. package/dist/core/mpc/forge-dry-run-build.d.ts +35 -0
  49. package/dist/core/mpc/forge-dry-run-build.d.ts.map +1 -0
  50. package/dist/core/mpc/forge-dry-run-build.js +200 -0
  51. package/dist/core/mpc/forge-dry-run-build.js.map +1 -0
  52. package/dist/core/mpc/forge-dry-run-request.d.ts +30 -0
  53. package/dist/core/mpc/forge-dry-run-request.d.ts.map +1 -0
  54. package/dist/core/mpc/forge-dry-run-request.js +144 -0
  55. package/dist/core/mpc/forge-dry-run-request.js.map +1 -0
  56. package/dist/core/mpc/join-multisign-request.d.ts.map +1 -1
  57. package/dist/core/mpc/join-multisign-request.js +41 -1
  58. package/dist/core/mpc/join-multisign-request.js.map +1 -1
  59. package/dist/core/mpc/mpc-input-coerce.d.ts +2 -0
  60. package/dist/core/mpc/mpc-input-coerce.d.ts.map +1 -1
  61. package/dist/core/mpc/mpc-input-coerce.js +53 -0
  62. package/dist/core/mpc/mpc-input-coerce.js.map +1 -1
  63. package/dist/core/mpc/schemas.d.ts +61 -2
  64. package/dist/core/mpc/schemas.d.ts.map +1 -1
  65. package/dist/core/mpc/schemas.js +137 -3
  66. package/dist/core/mpc/schemas.js.map +1 -1
  67. package/dist/evm/forge-dry-run-paths.d.ts +13 -0
  68. package/dist/evm/forge-dry-run-paths.d.ts.map +1 -0
  69. package/dist/evm/forge-dry-run-paths.js +39 -0
  70. package/dist/evm/forge-dry-run-paths.js.map +1 -0
  71. package/dist/index.d.ts +5 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +5 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/mcp/agent-chart-data-access-gate.d.ts +1 -1
  76. package/dist/mcp/agent-chart-data-access-gate.d.ts.map +1 -1
  77. package/dist/mcp/agent-chart-data-access-gate.js.map +1 -1
  78. package/dist/mcp/agent-cron-jobs.d.ts +1 -1
  79. package/dist/mcp/agent-cron-jobs.d.ts.map +1 -1
  80. package/dist/mcp/agent-cron-jobs.js +9 -0
  81. package/dist/mcp/agent-cron-jobs.js.map +1 -1
  82. package/dist/mcp/agent-environment-variables.d.ts +1 -1
  83. package/dist/mcp/agent-environment-variables.d.ts.map +1 -1
  84. package/dist/mcp/agent-environment-variables.js +3 -0
  85. package/dist/mcp/agent-environment-variables.js.map +1 -1
  86. package/dist/mcp/agent-host-catalog.d.ts +15 -2
  87. package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
  88. package/dist/mcp/agent-host-catalog.js +52 -12
  89. package/dist/mcp/agent-host-catalog.js.map +1 -1
  90. package/dist/mcp/agent-input-coerce-register.d.ts +8 -0
  91. package/dist/mcp/agent-input-coerce-register.d.ts.map +1 -0
  92. package/dist/mcp/agent-input-coerce-register.js +22 -0
  93. package/dist/mcp/agent-input-coerce-register.js.map +1 -0
  94. package/dist/mcp/agent-input-coerce.d.ts +13 -0
  95. package/dist/mcp/agent-input-coerce.d.ts.map +1 -0
  96. package/dist/mcp/agent-input-coerce.js +292 -0
  97. package/dist/mcp/agent-input-coerce.js.map +1 -0
  98. package/dist/mcp/agent-mcp-servers.d.ts +1 -1
  99. package/dist/mcp/agent-mcp-servers.d.ts.map +1 -1
  100. package/dist/mcp/agent-mcp-servers.js +7 -0
  101. package/dist/mcp/agent-mcp-servers.js.map +1 -1
  102. package/dist/mcp/agent-skills.d.ts +1 -1
  103. package/dist/mcp/agent-skills.d.ts.map +1 -1
  104. package/dist/mcp/agent-skills.js +5 -0
  105. package/dist/mcp/agent-skills.js.map +1 -1
  106. package/dist/mcp/agent-webhooks.d.ts +1 -1
  107. package/dist/mcp/agent-webhooks.d.ts.map +1 -1
  108. package/dist/mcp/agent-webhooks.js +9 -0
  109. package/dist/mcp/agent-webhooks.js.map +1 -1
  110. package/dist/mcp/chart.d.ts +1 -1
  111. package/dist/mcp/chart.d.ts.map +1 -1
  112. package/dist/mcp/chart.js +38 -0
  113. package/dist/mcp/chart.js.map +1 -1
  114. package/dist/mcp/coinbase-public/register.d.ts +1 -1
  115. package/dist/mcp/coinbase-public/register.d.ts.map +1 -1
  116. package/dist/mcp/coinbase-public/register.js +6 -1
  117. package/dist/mcp/coinbase-public/register.js.map +1 -1
  118. package/dist/mcp/coinmarketcap-public/register.d.ts +1 -1
  119. package/dist/mcp/coinmarketcap-public/register.d.ts.map +1 -1
  120. package/dist/mcp/coinmarketcap-public/register.js +14 -1
  121. package/dist/mcp/coinmarketcap-public/register.js.map +1 -1
  122. package/dist/mcp/continuum-docs/config.d.ts +12 -0
  123. package/dist/mcp/continuum-docs/config.d.ts.map +1 -0
  124. package/dist/mcp/continuum-docs/config.js +35 -0
  125. package/dist/mcp/continuum-docs/config.js.map +1 -0
  126. package/dist/mcp/continuum-docs/fetch-page.d.ts +21 -0
  127. package/dist/mcp/continuum-docs/fetch-page.d.ts.map +1 -0
  128. package/dist/mcp/continuum-docs/fetch-page.js +76 -0
  129. package/dist/mcp/continuum-docs/fetch-page.js.map +1 -0
  130. package/dist/mcp/continuum-docs/index-store.d.ts +17 -0
  131. package/dist/mcp/continuum-docs/index-store.d.ts.map +1 -0
  132. package/dist/mcp/continuum-docs/index-store.js +79 -0
  133. package/dist/mcp/continuum-docs/index-store.js.map +1 -0
  134. package/dist/mcp/continuum-docs/markdown-sections.d.ts +16 -0
  135. package/dist/mcp/continuum-docs/markdown-sections.d.ts.map +1 -0
  136. package/dist/mcp/continuum-docs/markdown-sections.js +98 -0
  137. package/dist/mcp/continuum-docs/markdown-sections.js.map +1 -0
  138. package/dist/mcp/continuum-docs/register.d.ts +3 -0
  139. package/dist/mcp/continuum-docs/register.d.ts.map +1 -0
  140. package/dist/mcp/continuum-docs/register.js +69 -0
  141. package/dist/mcp/continuum-docs/register.js.map +1 -0
  142. package/dist/mcp/continuum-docs/search.d.ts +13 -0
  143. package/dist/mcp/continuum-docs/search.d.ts.map +1 -0
  144. package/dist/mcp/continuum-docs/search.js +92 -0
  145. package/dist/mcp/continuum-docs/search.js.map +1 -0
  146. package/dist/mcp/continuum-docs/types.d.ts +81 -0
  147. package/dist/mcp/continuum-docs/types.d.ts.map +1 -0
  148. package/dist/mcp/continuum-docs/types.js +60 -0
  149. package/dist/mcp/continuum-docs/types.js.map +1 -0
  150. package/dist/mcp/deferred/discovery-tools.d.ts +1 -1
  151. package/dist/mcp/deferred/discovery-tools.d.ts.map +1 -1
  152. package/dist/mcp/deferred/discovery-tools.js +57 -15
  153. package/dist/mcp/deferred/discovery-tools.js.map +1 -1
  154. package/dist/mcp/deferred/session.d.ts +15 -2
  155. package/dist/mcp/deferred/session.d.ts.map +1 -1
  156. package/dist/mcp/deferred/session.js +128 -80
  157. package/dist/mcp/deferred/session.js.map +1 -1
  158. package/dist/mcp/deferred/tool-group-map.d.ts +15 -2
  159. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
  160. package/dist/mcp/deferred/tool-group-map.js +624 -72
  161. package/dist/mcp/deferred/tool-group-map.js.map +1 -1
  162. package/dist/mcp/defi/bitquery-api-key.d.ts +1 -1
  163. package/dist/mcp/defi/bitquery-api-key.d.ts.map +1 -1
  164. package/dist/mcp/defi/discovery.d.ts +1 -1
  165. package/dist/mcp/defi/discovery.d.ts.map +1 -1
  166. package/dist/mcp/defi/discovery.js +15 -3
  167. package/dist/mcp/defi/discovery.js.map +1 -1
  168. package/dist/mcp/defi/handler.d.ts +13 -6
  169. package/dist/mcp/defi/handler.d.ts.map +1 -1
  170. package/dist/mcp/defi/mcp-json-schema.d.ts +23 -0
  171. package/dist/mcp/defi/mcp-json-schema.d.ts.map +1 -0
  172. package/dist/mcp/defi/mcp-json-schema.js +173 -0
  173. package/dist/mcp/defi/mcp-json-schema.js.map +1 -0
  174. package/dist/mcp/defi/register-protocol-tools.d.ts +1 -1
  175. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  176. package/dist/mcp/defi/register-protocol-tools.js +41 -4
  177. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  178. package/dist/mcp/defi/the-graph-api-key.d.ts +1 -1
  179. package/dist/mcp/defi/the-graph-api-key.d.ts.map +1 -1
  180. package/dist/mcp/defi/tool-schemas.d.ts +4 -3
  181. package/dist/mcp/defi/tool-schemas.d.ts.map +1 -1
  182. package/dist/mcp/defi/tool-schemas.js +6 -4
  183. package/dist/mcp/defi/tool-schemas.js.map +1 -1
  184. package/dist/mcp/defi/uniswap-api-key.d.ts +1 -1
  185. package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
  186. package/dist/mcp/defi/venice-api-key.d.ts +1 -1
  187. package/dist/mcp/defi/venice-api-key.d.ts.map +1 -1
  188. package/dist/mcp/docs/search-index.json +2594 -0
  189. package/dist/mcp/group.d.ts +1 -1
  190. package/dist/mcp/group.d.ts.map +1 -1
  191. package/dist/mcp/group.js +3 -3
  192. package/dist/mcp/group.js.map +1 -1
  193. package/dist/mcp/keygen-messaging.d.ts +1 -1
  194. package/dist/mcp/keygen-messaging.d.ts.map +1 -1
  195. package/dist/mcp/keygen-messaging.js +10 -0
  196. package/dist/mcp/keygen-messaging.js.map +1 -1
  197. package/dist/mcp/keygen.d.ts +1 -1
  198. package/dist/mcp/keygen.d.ts.map +1 -1
  199. package/dist/mcp/keygen.js +6 -3
  200. package/dist/mcp/keygen.js.map +1 -1
  201. package/dist/mcp/management-signer.d.ts +1 -1
  202. package/dist/mcp/management-signer.d.ts.map +1 -1
  203. package/dist/mcp/management-signer.js +1 -1
  204. package/dist/mcp/management-signer.js.map +1 -1
  205. package/dist/mcp/mcp-resources.d.ts +1 -1
  206. package/dist/mcp/mcp-resources.d.ts.map +1 -1
  207. package/dist/mcp/mpc.d.ts +1 -1
  208. package/dist/mcp/mpc.d.ts.map +1 -1
  209. package/dist/mcp/mpc.js +57 -7
  210. package/dist/mcp/mpc.js.map +1 -1
  211. package/dist/mcp/node.d.ts +1 -1
  212. package/dist/mcp/node.d.ts.map +1 -1
  213. package/dist/mcp/node.js +7 -1
  214. package/dist/mcp/node.js.map +1 -1
  215. package/dist/mcp/ohlcv-session-wrapper.d.ts +1 -2
  216. package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -1
  217. package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
  218. package/dist/mcp/register.d.ts +1 -1
  219. package/dist/mcp/register.d.ts.map +1 -1
  220. package/dist/mcp/register.js +6 -6
  221. package/dist/mcp/register.js.map +1 -1
  222. package/dist/mcp/registry/address-book.d.ts +1 -1
  223. package/dist/mcp/registry/address-book.d.ts.map +1 -1
  224. package/dist/mcp/registry/address-book.js +1 -0
  225. package/dist/mcp/registry/address-book.js.map +1 -1
  226. package/dist/mcp/registry/networks.d.ts +1 -1
  227. package/dist/mcp/registry/networks.d.ts.map +1 -1
  228. package/dist/mcp/registry/networks.js +3 -1
  229. package/dist/mcp/registry/networks.js.map +1 -1
  230. package/dist/mcp/registry/tokens.d.ts +1 -1
  231. package/dist/mcp/registry/tokens.d.ts.map +1 -1
  232. package/dist/mcp/registry/tokens.js +2 -0
  233. package/dist/mcp/registry/tokens.js.map +1 -1
  234. package/dist/mcp/resources/chart-analysis.md +1 -1
  235. package/dist/mcp/resources/mpc.md +11 -1
  236. package/dist/mcp/server/http-transport.d.ts +1 -1
  237. package/dist/mcp/server/http-transport.d.ts.map +1 -1
  238. package/dist/mcp/server/http-transport.js +30 -118
  239. package/dist/mcp/server/http-transport.js.map +1 -1
  240. package/dist/mcp/server/index.js +8 -1
  241. package/dist/mcp/server/index.js.map +1 -1
  242. package/dist/mcp/ta/register.d.ts +1 -1
  243. package/dist/mcp/ta/register.d.ts.map +1 -1
  244. package/dist/mcp/ta/register.js +3 -1
  245. package/dist/mcp/ta/register.js.map +1 -1
  246. package/dist/mcp/ta-server/index.js +3 -4
  247. package/dist/mcp/ta-server/index.js.map +1 -1
  248. package/dist/mcp/tool-utils.d.ts +1 -1
  249. package/dist/mcp/tool-utils.d.ts.map +1 -1
  250. package/dist/mcp/trade-tools.d.ts +1 -1
  251. package/dist/mcp/trade-tools.d.ts.map +1 -1
  252. package/dist/mcp/trade-tools.js +5 -0
  253. package/dist/mcp/trade-tools.js.map +1 -1
  254. package/dist/mcp/vpn.d.ts +1 -1
  255. package/dist/mcp/vpn.d.ts.map +1 -1
  256. package/dist/mcp/vpn.js +9 -1
  257. package/dist/mcp/vpn.js.map +1 -1
  258. package/package.json +8 -5
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mcp/coinmarketcap-public/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mcp/coinmarketcap-public/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare const DEFAULT_CONTINUUM_DOCS_INDEX_URL = "https://docs.continuumdao.org/search-index.json";
2
+ export declare const DEFAULT_CONTINUUM_DOCS_BASE_URL = "https://docs.continuumdao.org";
3
+ export declare const CONTINUUM_DOCS_INDEX_TTL_MS: number;
4
+ export declare const CONTINUUM_DOCS_FETCH_TIMEOUT_MS = 15000;
5
+ export declare const CONTINUUM_DOCS_MAX_PAGE_BYTES = 512000;
6
+ export declare function continuumDocsIndexUrlFromEnv(): string;
7
+ export declare function continuumDocsBaseUrlFromEnv(): string;
8
+ /** Normalize doc path: no leading slash, no .md suffix, reject traversal. */
9
+ export declare function normalizeContinuumDocPath(raw: string): string;
10
+ export declare function continuumDocPublicUrl(baseUrl: string, path: string): string;
11
+ export declare function continuumDocMarkdownUrl(baseUrl: string, path: string): string;
12
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,oDACK,CAAC;AACnD,eAAO,MAAM,+BAA+B,kCAAkC,CAAC;AAE/E,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAC1D,eAAO,MAAM,+BAA+B,QAAS,CAAC;AACtD,eAAO,MAAM,6BAA6B,SAAU,CAAC;AAErD,wBAAgB,4BAA4B,IAAI,MAAM,CAGrD;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAGpD;AAED,6EAA6E;AAC7E,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAY7D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,35 @@
1
+ export const DEFAULT_CONTINUUM_DOCS_INDEX_URL = 'https://docs.continuumdao.org/search-index.json';
2
+ export const DEFAULT_CONTINUUM_DOCS_BASE_URL = 'https://docs.continuumdao.org';
3
+ export const CONTINUUM_DOCS_INDEX_TTL_MS = 60 * 60 * 1000;
4
+ export const CONTINUUM_DOCS_FETCH_TIMEOUT_MS = 15_000;
5
+ export const CONTINUUM_DOCS_MAX_PAGE_BYTES = 512_000;
6
+ export function continuumDocsIndexUrlFromEnv() {
7
+ const raw = process.env['CONTINUUM_DOCS_INDEX_URL']?.trim();
8
+ return raw || DEFAULT_CONTINUUM_DOCS_INDEX_URL;
9
+ }
10
+ export function continuumDocsBaseUrlFromEnv() {
11
+ const raw = process.env['CONTINUUM_DOCS_BASE_URL']?.trim();
12
+ return raw || DEFAULT_CONTINUUM_DOCS_BASE_URL;
13
+ }
14
+ /** Normalize doc path: no leading slash, no .md suffix, reject traversal. */
15
+ export function normalizeContinuumDocPath(raw) {
16
+ let path = raw.trim().replace(/\\/g, '/');
17
+ if (path.startsWith('/')) {
18
+ path = path.slice(1);
19
+ }
20
+ if (path.toLowerCase().endsWith('.md')) {
21
+ path = path.slice(0, -3);
22
+ }
23
+ if (!path || path.includes('..') || !/^[A-Za-z0-9_./-]+$/.test(path)) {
24
+ throw new Error(`invalid doc path: ${raw}`);
25
+ }
26
+ return path;
27
+ }
28
+ export function continuumDocPublicUrl(baseUrl, path) {
29
+ const base = baseUrl.replace(/\/+$/, '');
30
+ return `${base}/${path}`;
31
+ }
32
+ export function continuumDocMarkdownUrl(baseUrl, path) {
33
+ return `${continuumDocPublicUrl(baseUrl, path)}.md`;
34
+ }
35
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gCAAgC,GAC5C,iDAAiD,CAAC;AACnD,MAAM,CAAC,MAAM,+BAA+B,GAAG,+BAA+B,CAAC;AAE/E,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1D,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AACtD,MAAM,CAAC,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAErD,MAAM,UAAU,4BAA4B;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,IAAI,EAAE,CAAC;IAC5D,OAAO,GAAG,IAAI,gCAAgC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,2BAA2B;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,OAAO,GAAG,IAAI,+BAA+B,CAAC;AAC/C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACpD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,IAAY;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,IAAY;IACpE,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;AACrD,CAAC"}
@@ -0,0 +1,21 @@
1
+ export type FetchContinuumDocPageOptions = {
2
+ path: string;
3
+ sectionId?: string;
4
+ offset?: number;
5
+ limit?: number;
6
+ baseUrl?: string;
7
+ fetchImpl?: typeof fetch;
8
+ };
9
+ export type FetchContinuumDocPageResult = {
10
+ path: string;
11
+ url: string;
12
+ content: string;
13
+ truncated: boolean;
14
+ offset: number;
15
+ totalChars: number;
16
+ sectionId?: string;
17
+ sectionTitle?: string;
18
+ };
19
+ export declare function fetchContinuumDocPage(options: FetchContinuumDocPageOptions): Promise<FetchContinuumDocPageResult>;
20
+ export declare function extractContinuumDocTitle(markdown: string): string | undefined;
21
+ //# sourceMappingURL=fetch-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-page.d.ts","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/fetch-page.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,2BAA2B,CAAC,CAoEtC;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ7E"}
@@ -0,0 +1,76 @@
1
+ import { CONTINUUM_DOCS_FETCH_TIMEOUT_MS, CONTINUUM_DOCS_MAX_PAGE_BYTES, continuumDocMarkdownUrl, continuumDocsBaseUrlFromEnv, normalizeContinuumDocPath, } from './config.js';
2
+ import { docUrlWithSection, extractMarkdownSection } from './markdown-sections.js';
3
+ export async function fetchContinuumDocPage(options) {
4
+ const docPath = normalizeContinuumDocPath(options.path);
5
+ const baseUrl = options.baseUrl ?? continuumDocsBaseUrlFromEnv();
6
+ const url = continuumDocMarkdownUrl(baseUrl, docPath);
7
+ const fetchImpl = options.fetchImpl ?? fetch;
8
+ const controller = new AbortController();
9
+ const timer = setTimeout(() => controller.abort(), CONTINUUM_DOCS_FETCH_TIMEOUT_MS);
10
+ let body;
11
+ try {
12
+ const res = await fetchImpl(url, {
13
+ signal: controller.signal,
14
+ headers: { Accept: 'text/markdown, text/plain, */*' },
15
+ });
16
+ if (!res.ok) {
17
+ throw new Error(`HTTP ${res.status} fetching ${url}`);
18
+ }
19
+ const buf = await res.arrayBuffer();
20
+ if (buf.byteLength > CONTINUUM_DOCS_MAX_PAGE_BYTES) {
21
+ throw new Error(`doc exceeds ${CONTINUUM_DOCS_MAX_PAGE_BYTES} bytes`);
22
+ }
23
+ body = new TextDecoder('utf8').decode(buf);
24
+ }
25
+ finally {
26
+ clearTimeout(timer);
27
+ }
28
+ const publicUrl = `${baseUrl.replace(/\/+$/, '')}/${docPath}`;
29
+ let sectionId;
30
+ let sectionTitle;
31
+ let working = body;
32
+ if (options.sectionId?.trim()) {
33
+ const extracted = extractMarkdownSection(body, options.sectionId);
34
+ if (!extracted) {
35
+ throw new Error(`section ${JSON.stringify(options.sectionId)} not found in ${docPath}; use search_continuum_docs for sectionId`);
36
+ }
37
+ sectionId = options.sectionId.trim().toLowerCase();
38
+ sectionTitle = extracted.title;
39
+ working = extracted.content;
40
+ }
41
+ const totalChars = working.length;
42
+ const offset = Math.max(0, options.offset ?? 0);
43
+ const limit = options.limit;
44
+ let content = working;
45
+ let truncated = false;
46
+ if (offset > 0) {
47
+ content = content.slice(offset);
48
+ }
49
+ if (limit !== undefined && limit >= 0 && content.length > limit) {
50
+ content = content.slice(0, limit);
51
+ truncated = true;
52
+ }
53
+ if (offset + content.length < totalChars) {
54
+ truncated = true;
55
+ }
56
+ return {
57
+ path: docPath,
58
+ url: docUrlWithSection(publicUrl, sectionId),
59
+ content,
60
+ truncated,
61
+ offset,
62
+ totalChars,
63
+ sectionId,
64
+ sectionTitle,
65
+ };
66
+ }
67
+ export function extractContinuumDocTitle(markdown) {
68
+ for (const line of markdown.split('\n')) {
69
+ const m = line.match(/^#\s+(.+)/);
70
+ if (m) {
71
+ return m[1].trim();
72
+ }
73
+ }
74
+ return undefined;
75
+ }
76
+ //# sourceMappingURL=fetch-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-page.js","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/fetch-page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ContinuumDocsIndex } from './types.js';
2
+ export declare function resolveBundledDocsIndexPath(): string;
3
+ export declare function clearContinuumDocsIndexCacheForTests(): void;
4
+ export declare function loadContinuumDocsIndex(options?: {
5
+ ttlMs?: number;
6
+ nowMs?: number;
7
+ fetchLive?: () => Promise<ContinuumDocsIndex>;
8
+ readBundled?: () => Promise<ContinuumDocsIndex>;
9
+ }): Promise<{
10
+ index: ContinuumDocsIndex;
11
+ source: 'live' | 'bundled';
12
+ }>;
13
+ export declare function findDocPageByPath(index: ContinuumDocsIndex, docPath: string): {
14
+ title: string;
15
+ url: string;
16
+ } | undefined;
17
+ //# sourceMappingURL=index-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-store.d.ts","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/index-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAQ7E,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AA2BD,wBAAgB,oCAAoC,IAAI,IAAI,CAI3D;AAED,wBAAsB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChD,GAAG,OAAO,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAC,CAAC,CA8BnE;AAED,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,MAAM,GACb;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAM1C"}
@@ -0,0 +1,79 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { CONTINUUM_DOCS_FETCH_TIMEOUT_MS, continuumDocsIndexUrlFromEnv, } from './config.js';
5
+ import { ContinuumDocsIndexSchema } from './types.js';
6
+ const moduleDir = path.dirname(fileURLToPath(import.meta.url));
7
+ let cachedIndex = null;
8
+ let cachedAtMs = 0;
9
+ let cachedSource = 'live';
10
+ export function resolveBundledDocsIndexPath() {
11
+ return path.join(moduleDir, '..', 'docs', 'search-index.json');
12
+ }
13
+ async function readBundledDocsIndex() {
14
+ const filePath = resolveBundledDocsIndexPath();
15
+ const text = await fs.readFile(filePath, 'utf8');
16
+ return ContinuumDocsIndexSchema.parse(JSON.parse(text));
17
+ }
18
+ async function fetchLiveDocsIndex() {
19
+ const url = continuumDocsIndexUrlFromEnv();
20
+ const controller = new AbortController();
21
+ const timer = setTimeout(() => controller.abort(), CONTINUUM_DOCS_FETCH_TIMEOUT_MS);
22
+ try {
23
+ const res = await fetch(url, {
24
+ signal: controller.signal,
25
+ headers: { Accept: 'application/json' },
26
+ });
27
+ if (!res.ok) {
28
+ throw new Error(`HTTP ${res.status} fetching ${url}`);
29
+ }
30
+ const json = await res.json();
31
+ return ContinuumDocsIndexSchema.parse(json);
32
+ }
33
+ finally {
34
+ clearTimeout(timer);
35
+ }
36
+ }
37
+ export function clearContinuumDocsIndexCacheForTests() {
38
+ cachedIndex = null;
39
+ cachedAtMs = 0;
40
+ cachedSource = 'live';
41
+ }
42
+ export async function loadContinuumDocsIndex(options) {
43
+ const ttlMs = options?.ttlMs ?? 60 * 60 * 1000;
44
+ const nowMs = options?.nowMs ?? Date.now();
45
+ if (cachedIndex && nowMs - cachedAtMs < ttlMs) {
46
+ return { index: cachedIndex, source: cachedSource };
47
+ }
48
+ const fetchLive = options?.fetchLive ?? fetchLiveDocsIndex;
49
+ const readBundled = options?.readBundled ?? readBundledDocsIndex;
50
+ try {
51
+ const index = await fetchLive();
52
+ cachedIndex = index;
53
+ cachedAtMs = nowMs;
54
+ cachedSource = 'live';
55
+ return { index, source: 'live' };
56
+ }
57
+ catch (liveErr) {
58
+ try {
59
+ const index = await readBundled();
60
+ cachedIndex = index;
61
+ cachedAtMs = nowMs;
62
+ cachedSource = 'bundled';
63
+ return { index, source: 'bundled' };
64
+ }
65
+ catch (bundledErr) {
66
+ const liveMsg = liveErr instanceof Error ? liveErr.message : String(liveErr);
67
+ const bundledMsg = bundledErr instanceof Error ? bundledErr.message : String(bundledErr);
68
+ throw new Error(`Continuum docs index unavailable (live: ${liveMsg}; bundled: ${bundledMsg})`);
69
+ }
70
+ }
71
+ }
72
+ export function findDocPageByPath(index, docPath) {
73
+ const page = index.pages.find(p => p.path === docPath);
74
+ if (!page) {
75
+ return undefined;
76
+ }
77
+ return { title: page.title, url: page.url };
78
+ }
79
+ //# sourceMappingURL=index-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-store.js","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/index-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** Docsify-style heading anchor (matches ?id= links on docs.continuumdao.org). */
2
+ export declare function headingTitleToAnchor(title: string): string;
3
+ export type ParsedMarkdownSection = {
4
+ id: string;
5
+ title: string;
6
+ level: number;
7
+ excerpt: string;
8
+ };
9
+ /** Walk markdown headings and return searchable section metadata. */
10
+ export declare function parseMarkdownSections(markdown: string): ParsedMarkdownSection[];
11
+ export declare function extractMarkdownSection(markdown: string, sectionId: string): {
12
+ title: string;
13
+ content: string;
14
+ } | undefined;
15
+ export declare function docUrlWithSection(pageUrl: string, sectionId?: string): string;
16
+ //# sourceMappingURL=markdown-sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-sections.d.ts","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/markdown-sections.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAaF,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,EAAE,CA+B/E;AAED,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GACf;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAmC9C;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7E"}
@@ -0,0 +1,98 @@
1
+ /** Docsify-style heading anchor (matches ?id= links on docs.continuumdao.org). */
2
+ export function headingTitleToAnchor(title) {
3
+ return title
4
+ .replace(/\*\*/g, '')
5
+ .replace(/`/g, '')
6
+ .trim()
7
+ .toLowerCase()
8
+ .replace(/&/g, 'amp')
9
+ .replace(/[^a-z0-9]+/g, '-')
10
+ .replace(/^-+|-+$/g, '');
11
+ }
12
+ function sectionExcerpt(lines) {
13
+ const text = lines
14
+ .join('\n')
15
+ .replace(/^#+\s.+$/gm, '')
16
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
17
+ .replace(/[*_`>#|-]/g, ' ')
18
+ .replace(/\s+/g, ' ')
19
+ .trim();
20
+ return text.slice(0, 300);
21
+ }
22
+ /** Walk markdown headings and return searchable section metadata. */
23
+ export function parseMarkdownSections(markdown) {
24
+ const lines = markdown.split('\n');
25
+ const sections = [];
26
+ for (let i = 0; i < lines.length; i++) {
27
+ const m = lines[i].match(/^(#{1,6})\s+(.+)/);
28
+ if (!m) {
29
+ continue;
30
+ }
31
+ const level = m[1].length;
32
+ const rawTitle = m[2].trim();
33
+ const title = rawTitle.replace(/\*\*/g, '').trim();
34
+ const id = headingTitleToAnchor(rawTitle);
35
+ if (!id) {
36
+ continue;
37
+ }
38
+ const body = [];
39
+ for (let j = i + 1; j < lines.length; j++) {
40
+ const next = lines[j].match(/^(#{1,6})\s+/);
41
+ if (next && next[1].length <= level) {
42
+ break;
43
+ }
44
+ body.push(lines[j]);
45
+ }
46
+ sections.push({
47
+ id,
48
+ title,
49
+ level,
50
+ excerpt: sectionExcerpt(body),
51
+ });
52
+ }
53
+ return sections;
54
+ }
55
+ export function extractMarkdownSection(markdown, sectionId) {
56
+ const needle = sectionId.trim().toLowerCase();
57
+ if (!needle) {
58
+ return undefined;
59
+ }
60
+ const lines = markdown.split('\n');
61
+ let start = -1;
62
+ let startLevel = 0;
63
+ let title = '';
64
+ for (let i = 0; i < lines.length; i++) {
65
+ const m = lines[i].match(/^(#{1,6})\s+(.+)/);
66
+ if (!m) {
67
+ continue;
68
+ }
69
+ const rawTitle = m[2].trim();
70
+ if (headingTitleToAnchor(rawTitle) !== needle) {
71
+ continue;
72
+ }
73
+ start = i;
74
+ startLevel = m[1].length;
75
+ title = rawTitle.replace(/\*\*/g, '').trim();
76
+ break;
77
+ }
78
+ if (start < 0) {
79
+ return undefined;
80
+ }
81
+ const out = [lines[start]];
82
+ for (let i = start + 1; i < lines.length; i++) {
83
+ const next = lines[i].match(/^(#{1,6})\s+/);
84
+ if (next && next[1].length <= startLevel) {
85
+ break;
86
+ }
87
+ out.push(lines[i]);
88
+ }
89
+ return { title, content: out.join('\n') };
90
+ }
91
+ export function docUrlWithSection(pageUrl, sectionId) {
92
+ const base = pageUrl.replace(/\?.*$/, '');
93
+ if (!sectionId) {
94
+ return base;
95
+ }
96
+ return `${base}?id=${encodeURIComponent(sectionId)}`;
97
+ }
98
+ //# sourceMappingURL=markdown-sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-sections.js","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/markdown-sections.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IACjD,OAAO,KAAK;SACV,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AASD,SAAS,cAAc,CAAC,KAAe;IACtC,MAAM,IAAI,GAAG,KAAK;SAChB,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;SACvC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;SAC1B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;IACT,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,SAAS;QACV,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;YACT,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;gBACrC,MAAM;YACP,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACb,EAAE;YACF,KAAK;YACL,KAAK;YACL,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,QAAgB,EAChB,SAAiB;IAEjB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,EAAE,CAAC;YACR,SAAS;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC;YAC/C,SAAS;QACV,CAAC;QACD,KAAK,GAAG,CAAC,CAAC;QACV,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM;IACP,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YAC1C,MAAM;QACP,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,SAAkB;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,GAAG,IAAI,OAAO,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/server';
2
+ export declare function registerContinuumDocsTools(server: McpServer): void;
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAU5D,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkFlE"}
@@ -0,0 +1,69 @@
1
+ import { z } from 'zod';
2
+ import { findDocPageByPath, loadContinuumDocsIndex } from './index-store.js';
3
+ import { fetchContinuumDocPage, extractContinuumDocTitle } from './fetch-page.js';
4
+ import { searchContinuumDocPages } from './search.js';
5
+ import { GetContinuumDocOutputSchema, SearchContinuumDocsOutputSchema, } from './types.js';
6
+ export function registerContinuumDocsTools(server) {
7
+ server.registerTool('search_continuum_docs', {
8
+ description: 'Search official ContinuumDAO product documentation (docs.continuumdao.org). Returns ranked hits with path, optional sectionId/sectionTitle (in-page anchors like Tokenomics on the White Paper), excerpt, and public URL. Follow with get_continuum_doc using path and sectionId when present.',
9
+ inputSchema: z
10
+ .object({
11
+ q: z.string().min(1),
12
+ section: z.string().optional(),
13
+ limit: z.number().int().positive().max(50).optional(),
14
+ })
15
+ .strict(),
16
+ outputSchema: SearchContinuumDocsOutputSchema,
17
+ }, async ({ q, section, limit }) => {
18
+ const { index, source } = await loadContinuumDocsIndex();
19
+ const hits = searchContinuumDocPages(index, q, section, limit ?? 20);
20
+ const payload = {
21
+ hits,
22
+ indexSource: source,
23
+ indexGeneratedAt: index.generatedAt,
24
+ };
25
+ return {
26
+ content: [{ type: 'text', text: JSON.stringify(payload) }],
27
+ structuredContent: payload,
28
+ };
29
+ });
30
+ server.registerTool('get_continuum_doc', {
31
+ description: 'Fetch official ContinuumDAO documentation markdown. Use path from search_continuum_docs (e.g. ContinuumDAO/WhitePaper). For in-page sections (e.g. tokenomics on the White Paper), pass sectionId from search hits (?id= anchors on docs.continuumdao.org). Optional offset/limit slice long content.',
32
+ inputSchema: z
33
+ .object({
34
+ path: z.string().min(1),
35
+ sectionId: z.string().optional(),
36
+ offset: z.number().int().nonnegative().optional(),
37
+ limit: z.number().int().positive().max(200_000).optional(),
38
+ })
39
+ .strict(),
40
+ outputSchema: GetContinuumDocOutputSchema,
41
+ }, async ({ path: docPath, sectionId, offset, limit, }) => {
42
+ const page = await fetchContinuumDocPage({ path: docPath, sectionId, offset, limit });
43
+ let title = page.sectionTitle;
44
+ try {
45
+ const { index } = await loadContinuumDocsIndex();
46
+ title ??= findDocPageByPath(index, page.path)?.title;
47
+ }
48
+ catch {
49
+ // index optional for title when page fetch succeeded
50
+ }
51
+ title ??= extractContinuumDocTitle(page.content);
52
+ const payload = {
53
+ path: page.path,
54
+ url: page.url,
55
+ title,
56
+ sectionId: page.sectionId,
57
+ sectionTitle: page.sectionTitle,
58
+ content: page.content,
59
+ truncated: page.truncated,
60
+ offset: page.offset,
61
+ totalChars: page.totalChars,
62
+ };
63
+ return {
64
+ content: [{ type: 'text', text: JSON.stringify(payload) }],
65
+ structuredContent: payload,
66
+ };
67
+ });
68
+ }
69
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ContinuumDocsIndex } from './types.js';
2
+ export type DocSearchHit = {
3
+ path: string;
4
+ title: string;
5
+ section: string;
6
+ excerpt: string;
7
+ url: string;
8
+ score: number;
9
+ sectionId?: string;
10
+ sectionTitle?: string;
11
+ };
12
+ export declare function searchContinuumDocPages(index: ContinuumDocsIndex, q: string, sectionFilter: string | undefined, limit: number): DocSearchHit[];
13
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAmB,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,kBAAkB,EACzB,CAAC,EAAE,MAAM,EACT,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,GACX,YAAY,EAAE,CAiBhB"}
@@ -0,0 +1,92 @@
1
+ import { CATALOG_SEARCH_STOPWORDS } from '../deferred/session.js';
2
+ import { docUrlWithSection, headingTitleToAnchor } from './markdown-sections.js';
3
+ export function searchContinuumDocPages(index, q, sectionFilter, limit) {
4
+ const tokens = tokenizeQuery(q);
5
+ const sectionNeedle = sectionFilter?.trim().toLowerCase();
6
+ const hits = [];
7
+ for (const page of index.pages) {
8
+ if (sectionNeedle) {
9
+ const pageSection = page.section.toLowerCase();
10
+ if (pageSection !== sectionNeedle && !pageSection.includes(sectionNeedle)) {
11
+ continue;
12
+ }
13
+ }
14
+ scorePage(page, tokens, hits);
15
+ scorePageSections(page, tokens, hits);
16
+ }
17
+ return hits.sort((a, b) => b.score - a.score).slice(0, limit);
18
+ }
19
+ function tokenizeQuery(q) {
20
+ return q
21
+ .toLowerCase()
22
+ .split(/\s+/)
23
+ .map(t => t.replace(/^[\s.,!?;:'"()[\]]+|[\s.,!?;:'"()[\]]+$/g, ''))
24
+ .filter(t => t.length > 0 && !CATALOG_SEARCH_STOPWORDS.has(t));
25
+ }
26
+ function scorePage(page, tokens, hits) {
27
+ const hay = [
28
+ page.path,
29
+ page.title,
30
+ page.section,
31
+ page.excerpt,
32
+ ...page.headings,
33
+ ...(page.sections?.flatMap(s => [s.id, s.title, s.excerpt]) ?? []),
34
+ ]
35
+ .join(' ')
36
+ .toLowerCase();
37
+ const score = scoreHaystack(hay, page.title.toLowerCase(), page.path.split('/').pop()?.toLowerCase() ?? '', tokens);
38
+ if (score > 0) {
39
+ hits.push({
40
+ path: page.path,
41
+ title: page.title,
42
+ section: page.section,
43
+ excerpt: page.excerpt,
44
+ url: page.url,
45
+ score,
46
+ });
47
+ }
48
+ }
49
+ function scorePageSections(page, tokens, hits) {
50
+ if (!page.sections?.length) {
51
+ return;
52
+ }
53
+ for (const sec of page.sections) {
54
+ const hay = [sec.id, sec.title, sec.excerpt].join(' ').toLowerCase();
55
+ let score = scoreHaystack(hay, sec.title.toLowerCase(), sec.id, tokens);
56
+ if (tokens.length === 1 && tokens[0] === sec.id) {
57
+ score += 15;
58
+ }
59
+ if (score <= 0) {
60
+ continue;
61
+ }
62
+ hits.push({
63
+ path: page.path,
64
+ title: page.title,
65
+ section: page.section,
66
+ excerpt: sec.excerpt || page.excerpt,
67
+ url: docUrlWithSection(page.url, sec.id),
68
+ score,
69
+ sectionId: sec.id,
70
+ sectionTitle: sec.title,
71
+ });
72
+ }
73
+ }
74
+ function scoreHaystack(hay, title, pathTail, tokens) {
75
+ let score = 0;
76
+ for (const t of tokens) {
77
+ if (title === t || pathTail === t) {
78
+ score += 12;
79
+ }
80
+ else if (headingTitleToAnchor(t) !== '' && hay.includes(headingTitleToAnchor(t))) {
81
+ score += 10;
82
+ }
83
+ else if (title.includes(t)) {
84
+ score += 5;
85
+ }
86
+ else if (hay.includes(t)) {
87
+ score += 1;
88
+ }
89
+ }
90
+ return score;
91
+ }
92
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/mcp/continuum-docs/search.ts"],"names":[],"mappings":"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"}