purecontext-mcp 1.0.1

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 (542) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +207 -0
  3. package/dist/adapters/actix-web.d.ts +28 -0
  4. package/dist/adapters/actix-web.d.ts.map +1 -0
  5. package/dist/adapters/actix-web.js +362 -0
  6. package/dist/adapters/actix-web.js.map +1 -0
  7. package/dist/adapters/adapter-registry.d.ts +34 -0
  8. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  9. package/dist/adapters/adapter-registry.js +92 -0
  10. package/dist/adapters/adapter-registry.js.map +1 -0
  11. package/dist/adapters/angular.d.ts +13 -0
  12. package/dist/adapters/angular.d.ts.map +1 -0
  13. package/dist/adapters/angular.js +348 -0
  14. package/dist/adapters/angular.js.map +1 -0
  15. package/dist/adapters/axum.d.ts +16 -0
  16. package/dist/adapters/axum.d.ts.map +1 -0
  17. package/dist/adapters/axum.js +299 -0
  18. package/dist/adapters/axum.js.map +1 -0
  19. package/dist/adapters/django-orm.d.ts +28 -0
  20. package/dist/adapters/django-orm.d.ts.map +1 -0
  21. package/dist/adapters/django-orm.js +464 -0
  22. package/dist/adapters/django-orm.js.map +1 -0
  23. package/dist/adapters/django.d.ts +16 -0
  24. package/dist/adapters/django.d.ts.map +1 -0
  25. package/dist/adapters/django.js +257 -0
  26. package/dist/adapters/django.js.map +1 -0
  27. package/dist/adapters/echo.d.ts +15 -0
  28. package/dist/adapters/echo.d.ts.map +1 -0
  29. package/dist/adapters/echo.js +142 -0
  30. package/dist/adapters/echo.js.map +1 -0
  31. package/dist/adapters/express.d.ts +15 -0
  32. package/dist/adapters/express.d.ts.map +1 -0
  33. package/dist/adapters/express.js +126 -0
  34. package/dist/adapters/express.js.map +1 -0
  35. package/dist/adapters/fastapi.d.ts +16 -0
  36. package/dist/adapters/fastapi.d.ts.map +1 -0
  37. package/dist/adapters/fastapi.js +113 -0
  38. package/dist/adapters/fastapi.js.map +1 -0
  39. package/dist/adapters/fastify.d.ts +14 -0
  40. package/dist/adapters/fastify.d.ts.map +1 -0
  41. package/dist/adapters/fastify.js +124 -0
  42. package/dist/adapters/fastify.js.map +1 -0
  43. package/dist/adapters/fiber.d.ts +15 -0
  44. package/dist/adapters/fiber.d.ts.map +1 -0
  45. package/dist/adapters/fiber.js +147 -0
  46. package/dist/adapters/fiber.js.map +1 -0
  47. package/dist/adapters/flask.d.ts +18 -0
  48. package/dist/adapters/flask.d.ts.map +1 -0
  49. package/dist/adapters/flask.js +175 -0
  50. package/dist/adapters/flask.js.map +1 -0
  51. package/dist/adapters/flutter.d.ts +19 -0
  52. package/dist/adapters/flutter.d.ts.map +1 -0
  53. package/dist/adapters/flutter.js +251 -0
  54. package/dist/adapters/flutter.js.map +1 -0
  55. package/dist/adapters/gin.d.ts +16 -0
  56. package/dist/adapters/gin.d.ts.map +1 -0
  57. package/dist/adapters/gin.js +159 -0
  58. package/dist/adapters/gin.js.map +1 -0
  59. package/dist/adapters/hibernate.d.ts +24 -0
  60. package/dist/adapters/hibernate.d.ts.map +1 -0
  61. package/dist/adapters/hibernate.js +448 -0
  62. package/dist/adapters/hibernate.js.map +1 -0
  63. package/dist/adapters/ktor.d.ts +18 -0
  64. package/dist/adapters/ktor.d.ts.map +1 -0
  65. package/dist/adapters/ktor.js +219 -0
  66. package/dist/adapters/ktor.js.map +1 -0
  67. package/dist/adapters/laravel.d.ts +19 -0
  68. package/dist/adapters/laravel.d.ts.map +1 -0
  69. package/dist/adapters/laravel.js +370 -0
  70. package/dist/adapters/laravel.js.map +1 -0
  71. package/dist/adapters/micronaut.d.ts +21 -0
  72. package/dist/adapters/micronaut.d.ts.map +1 -0
  73. package/dist/adapters/micronaut.js +435 -0
  74. package/dist/adapters/micronaut.js.map +1 -0
  75. package/dist/adapters/nestjs.d.ts +12 -0
  76. package/dist/adapters/nestjs.d.ts.map +1 -0
  77. package/dist/adapters/nestjs.js +401 -0
  78. package/dist/adapters/nestjs.js.map +1 -0
  79. package/dist/adapters/nextjs.d.ts +49 -0
  80. package/dist/adapters/nextjs.d.ts.map +1 -0
  81. package/dist/adapters/nextjs.js +412 -0
  82. package/dist/adapters/nextjs.js.map +1 -0
  83. package/dist/adapters/nuxt.d.ts +44 -0
  84. package/dist/adapters/nuxt.d.ts.map +1 -0
  85. package/dist/adapters/nuxt.js +243 -0
  86. package/dist/adapters/nuxt.js.map +1 -0
  87. package/dist/adapters/quarkus.d.ts +21 -0
  88. package/dist/adapters/quarkus.d.ts.map +1 -0
  89. package/dist/adapters/quarkus.js +395 -0
  90. package/dist/adapters/quarkus.js.map +1 -0
  91. package/dist/adapters/rails.d.ts +18 -0
  92. package/dist/adapters/rails.d.ts.map +1 -0
  93. package/dist/adapters/rails.js +363 -0
  94. package/dist/adapters/rails.js.map +1 -0
  95. package/dist/adapters/react.d.ts +18 -0
  96. package/dist/adapters/react.d.ts.map +1 -0
  97. package/dist/adapters/react.js +95 -0
  98. package/dist/adapters/react.js.map +1 -0
  99. package/dist/adapters/rocket.d.ts +19 -0
  100. package/dist/adapters/rocket.d.ts.map +1 -0
  101. package/dist/adapters/rocket.js +271 -0
  102. package/dist/adapters/rocket.js.map +1 -0
  103. package/dist/adapters/sinatra.d.ts +16 -0
  104. package/dist/adapters/sinatra.d.ts.map +1 -0
  105. package/dist/adapters/sinatra.js +114 -0
  106. package/dist/adapters/sinatra.js.map +1 -0
  107. package/dist/adapters/spring-boot.d.ts +24 -0
  108. package/dist/adapters/spring-boot.d.ts.map +1 -0
  109. package/dist/adapters/spring-boot.js +399 -0
  110. package/dist/adapters/spring-boot.js.map +1 -0
  111. package/dist/adapters/spring-kotlin.d.ts +19 -0
  112. package/dist/adapters/spring-kotlin.d.ts.map +1 -0
  113. package/dist/adapters/spring-kotlin.js +297 -0
  114. package/dist/adapters/spring-kotlin.js.map +1 -0
  115. package/dist/adapters/sqlalchemy.d.ts +28 -0
  116. package/dist/adapters/sqlalchemy.d.ts.map +1 -0
  117. package/dist/adapters/sqlalchemy.js +435 -0
  118. package/dist/adapters/sqlalchemy.js.map +1 -0
  119. package/dist/adapters/symfony.d.ts +16 -0
  120. package/dist/adapters/symfony.d.ts.map +1 -0
  121. package/dist/adapters/symfony.js +242 -0
  122. package/dist/adapters/symfony.js.map +1 -0
  123. package/dist/adapters/vapor.d.ts +21 -0
  124. package/dist/adapters/vapor.d.ts.map +1 -0
  125. package/dist/adapters/vapor.js +269 -0
  126. package/dist/adapters/vapor.js.map +1 -0
  127. package/dist/adapters/vue-preprocessor.d.ts +26 -0
  128. package/dist/adapters/vue-preprocessor.d.ts.map +1 -0
  129. package/dist/adapters/vue-preprocessor.js +82 -0
  130. package/dist/adapters/vue-preprocessor.js.map +1 -0
  131. package/dist/adapters/vue.d.ts +13 -0
  132. package/dist/adapters/vue.d.ts.map +1 -0
  133. package/dist/adapters/vue.js +134 -0
  134. package/dist/adapters/vue.js.map +1 -0
  135. package/dist/config/cli.d.ts +26 -0
  136. package/dist/config/cli.d.ts.map +1 -0
  137. package/dist/config/cli.js +291 -0
  138. package/dist/config/cli.js.map +1 -0
  139. package/dist/config/config-loader.d.ts +26 -0
  140. package/dist/config/config-loader.d.ts.map +1 -0
  141. package/dist/config/config-loader.js +168 -0
  142. package/dist/config/config-loader.js.map +1 -0
  143. package/dist/config/config-schema.d.ts +228 -0
  144. package/dist/config/config-schema.d.ts.map +1 -0
  145. package/dist/config/config-schema.js +400 -0
  146. package/dist/config/config-schema.js.map +1 -0
  147. package/dist/config/keys-cli.d.ts +37 -0
  148. package/dist/config/keys-cli.d.ts.map +1 -0
  149. package/dist/config/keys-cli.js +179 -0
  150. package/dist/config/keys-cli.js.map +1 -0
  151. package/dist/config/workspaces-cli.d.ts +2 -0
  152. package/dist/config/workspaces-cli.d.ts.map +1 -0
  153. package/dist/config/workspaces-cli.js +84 -0
  154. package/dist/config/workspaces-cli.js.map +1 -0
  155. package/dist/core/db/api-keys.d.ts +95 -0
  156. package/dist/core/db/api-keys.d.ts.map +1 -0
  157. package/dist/core/db/api-keys.js +293 -0
  158. package/dist/core/db/api-keys.js.map +1 -0
  159. package/dist/core/db/dep-store.d.ts +18 -0
  160. package/dist/core/db/dep-store.d.ts.map +1 -0
  161. package/dist/core/db/dep-store.js +155 -0
  162. package/dist/core/db/dep-store.js.map +1 -0
  163. package/dist/core/db/embedding-store.d.ts +40 -0
  164. package/dist/core/db/embedding-store.d.ts.map +1 -0
  165. package/dist/core/db/embedding-store.js +120 -0
  166. package/dist/core/db/embedding-store.js.map +1 -0
  167. package/dist/core/db/file-store.d.ts +27 -0
  168. package/dist/core/db/file-store.d.ts.map +1 -0
  169. package/dist/core/db/file-store.js +101 -0
  170. package/dist/core/db/file-store.js.map +1 -0
  171. package/dist/core/db/request-log.d.ts +40 -0
  172. package/dist/core/db/request-log.d.ts.map +1 -0
  173. package/dist/core/db/request-log.js +90 -0
  174. package/dist/core/db/request-log.js.map +1 -0
  175. package/dist/core/db/savings-store.d.ts +9 -0
  176. package/dist/core/db/savings-store.d.ts.map +1 -0
  177. package/dist/core/db/savings-store.js +64 -0
  178. package/dist/core/db/savings-store.js.map +1 -0
  179. package/dist/core/db/schema.d.ts +14 -0
  180. package/dist/core/db/schema.d.ts.map +1 -0
  181. package/dist/core/db/schema.js +235 -0
  182. package/dist/core/db/schema.js.map +1 -0
  183. package/dist/core/db/symbol-store.d.ts +64 -0
  184. package/dist/core/db/symbol-store.d.ts.map +1 -0
  185. package/dist/core/db/symbol-store.js +243 -0
  186. package/dist/core/db/symbol-store.js.map +1 -0
  187. package/dist/core/db/tenants.d.ts +91 -0
  188. package/dist/core/db/tenants.d.ts.map +1 -0
  189. package/dist/core/db/tenants.js +219 -0
  190. package/dist/core/db/tenants.js.map +1 -0
  191. package/dist/core/errors.d.ts +72 -0
  192. package/dist/core/errors.d.ts.map +1 -0
  193. package/dist/core/errors.js +140 -0
  194. package/dist/core/errors.js.map +1 -0
  195. package/dist/core/file-discovery.d.ts +17 -0
  196. package/dist/core/file-discovery.d.ts.map +1 -0
  197. package/dist/core/file-discovery.js +136 -0
  198. package/dist/core/file-discovery.js.map +1 -0
  199. package/dist/core/file-processor.d.ts +21 -0
  200. package/dist/core/file-processor.d.ts.map +1 -0
  201. package/dist/core/file-processor.js +110 -0
  202. package/dist/core/file-processor.js.map +1 -0
  203. package/dist/core/hash-cache.d.ts +18 -0
  204. package/dist/core/hash-cache.d.ts.map +1 -0
  205. package/dist/core/hash-cache.js +35 -0
  206. package/dist/core/hash-cache.js.map +1 -0
  207. package/dist/core/index-manager.d.ts +18 -0
  208. package/dist/core/index-manager.d.ts.map +1 -0
  209. package/dist/core/index-manager.js +461 -0
  210. package/dist/core/index-manager.js.map +1 -0
  211. package/dist/core/indexing-worker.d.ts +60 -0
  212. package/dist/core/indexing-worker.d.ts.map +1 -0
  213. package/dist/core/indexing-worker.js +128 -0
  214. package/dist/core/indexing-worker.js.map +1 -0
  215. package/dist/core/logger.d.ts +10 -0
  216. package/dist/core/logger.d.ts.map +1 -0
  217. package/dist/core/logger.js +40 -0
  218. package/dist/core/logger.js.map +1 -0
  219. package/dist/core/parse-dispatcher.d.ts +18 -0
  220. package/dist/core/parse-dispatcher.d.ts.map +1 -0
  221. package/dist/core/parse-dispatcher.js +74 -0
  222. package/dist/core/parse-dispatcher.js.map +1 -0
  223. package/dist/core/search/query-preprocessor.d.ts +22 -0
  224. package/dist/core/search/query-preprocessor.d.ts.map +1 -0
  225. package/dist/core/search/query-preprocessor.js +77 -0
  226. package/dist/core/search/query-preprocessor.js.map +1 -0
  227. package/dist/core/search/relevance-ranker.d.ts +34 -0
  228. package/dist/core/search/relevance-ranker.d.ts.map +1 -0
  229. package/dist/core/search/relevance-ranker.js +132 -0
  230. package/dist/core/search/relevance-ranker.js.map +1 -0
  231. package/dist/core/security.d.ts +40 -0
  232. package/dist/core/security.d.ts.map +1 -0
  233. package/dist/core/security.js +133 -0
  234. package/dist/core/security.js.map +1 -0
  235. package/dist/core/telemetry.d.ts +19 -0
  236. package/dist/core/telemetry.d.ts.map +1 -0
  237. package/dist/core/telemetry.js +101 -0
  238. package/dist/core/telemetry.js.map +1 -0
  239. package/dist/core/tenant-context.d.ts +22 -0
  240. package/dist/core/tenant-context.d.ts.map +1 -0
  241. package/dist/core/tenant-context.js +16 -0
  242. package/dist/core/tenant-context.js.map +1 -0
  243. package/dist/core/token-tracker.d.ts +39 -0
  244. package/dist/core/token-tracker.d.ts.map +1 -0
  245. package/dist/core/token-tracker.js +153 -0
  246. package/dist/core/token-tracker.js.map +1 -0
  247. package/dist/core/types.d.ts +145 -0
  248. package/dist/core/types.d.ts.map +1 -0
  249. package/dist/core/types.js +2 -0
  250. package/dist/core/types.js.map +1 -0
  251. package/dist/core/watcher/file-watcher.d.ts +18 -0
  252. package/dist/core/watcher/file-watcher.d.ts.map +1 -0
  253. package/dist/core/watcher/file-watcher.js +123 -0
  254. package/dist/core/watcher/file-watcher.js.map +1 -0
  255. package/dist/core/worker-pool.d.ts +24 -0
  256. package/dist/core/worker-pool.d.ts.map +1 -0
  257. package/dist/core/worker-pool.js +92 -0
  258. package/dist/core/worker-pool.js.map +1 -0
  259. package/dist/graph/graph-builder.d.ts +16 -0
  260. package/dist/graph/graph-builder.d.ts.map +1 -0
  261. package/dist/graph/graph-builder.js +51 -0
  262. package/dist/graph/graph-builder.js.map +1 -0
  263. package/dist/graph/graph-traversal.d.ts +57 -0
  264. package/dist/graph/graph-traversal.d.ts.map +1 -0
  265. package/dist/graph/graph-traversal.js +144 -0
  266. package/dist/graph/graph-traversal.js.map +1 -0
  267. package/dist/graph/path-resolver.d.ts +13 -0
  268. package/dist/graph/path-resolver.d.ts.map +1 -0
  269. package/dist/graph/path-resolver.js +161 -0
  270. package/dist/graph/path-resolver.js.map +1 -0
  271. package/dist/handlers/c.d.ts +3 -0
  272. package/dist/handlers/c.d.ts.map +1 -0
  273. package/dist/handlers/c.js +473 -0
  274. package/dist/handlers/c.js.map +1 -0
  275. package/dist/handlers/cpp.d.ts +3 -0
  276. package/dist/handlers/cpp.d.ts.map +1 -0
  277. package/dist/handlers/cpp.js +682 -0
  278. package/dist/handlers/cpp.js.map +1 -0
  279. package/dist/handlers/csharp.d.ts +3 -0
  280. package/dist/handlers/csharp.d.ts.map +1 -0
  281. package/dist/handlers/csharp.js +369 -0
  282. package/dist/handlers/csharp.js.map +1 -0
  283. package/dist/handlers/dart.d.ts +3 -0
  284. package/dist/handlers/dart.d.ts.map +1 -0
  285. package/dist/handlers/dart.js +596 -0
  286. package/dist/handlers/dart.js.map +1 -0
  287. package/dist/handlers/elixir.d.ts +8 -0
  288. package/dist/handlers/elixir.d.ts.map +1 -0
  289. package/dist/handlers/elixir.js +412 -0
  290. package/dist/handlers/elixir.js.map +1 -0
  291. package/dist/handlers/go.d.ts +3 -0
  292. package/dist/handlers/go.d.ts.map +1 -0
  293. package/dist/handlers/go.js +262 -0
  294. package/dist/handlers/go.js.map +1 -0
  295. package/dist/handlers/handler-registry.d.ts +20 -0
  296. package/dist/handlers/handler-registry.d.ts.map +1 -0
  297. package/dist/handlers/handler-registry.js +69 -0
  298. package/dist/handlers/handler-registry.js.map +1 -0
  299. package/dist/handlers/haskell.d.ts +17 -0
  300. package/dist/handlers/haskell.d.ts.map +1 -0
  301. package/dist/handlers/haskell.js +356 -0
  302. package/dist/handlers/haskell.js.map +1 -0
  303. package/dist/handlers/java.d.ts +3 -0
  304. package/dist/handlers/java.d.ts.map +1 -0
  305. package/dist/handlers/java.js +350 -0
  306. package/dist/handlers/java.js.map +1 -0
  307. package/dist/handlers/javascript.d.ts +3 -0
  308. package/dist/handlers/javascript.d.ts.map +1 -0
  309. package/dist/handlers/javascript.js +232 -0
  310. package/dist/handlers/javascript.js.map +1 -0
  311. package/dist/handlers/kotlin.d.ts +3 -0
  312. package/dist/handlers/kotlin.d.ts.map +1 -0
  313. package/dist/handlers/kotlin.js +317 -0
  314. package/dist/handlers/kotlin.js.map +1 -0
  315. package/dist/handlers/lua.d.ts +3 -0
  316. package/dist/handlers/lua.d.ts.map +1 -0
  317. package/dist/handlers/lua.js +328 -0
  318. package/dist/handlers/lua.js.map +1 -0
  319. package/dist/handlers/php.d.ts +3 -0
  320. package/dist/handlers/php.d.ts.map +1 -0
  321. package/dist/handlers/php.js +343 -0
  322. package/dist/handlers/php.js.map +1 -0
  323. package/dist/handlers/python.d.ts +3 -0
  324. package/dist/handlers/python.d.ts.map +1 -0
  325. package/dist/handlers/python.js +343 -0
  326. package/dist/handlers/python.js.map +1 -0
  327. package/dist/handlers/r.d.ts +9 -0
  328. package/dist/handlers/r.d.ts.map +1 -0
  329. package/dist/handlers/r.js +452 -0
  330. package/dist/handlers/r.js.map +1 -0
  331. package/dist/handlers/ruby.d.ts +8 -0
  332. package/dist/handlers/ruby.d.ts.map +1 -0
  333. package/dist/handlers/ruby.js +271 -0
  334. package/dist/handlers/ruby.js.map +1 -0
  335. package/dist/handlers/rust.d.ts +3 -0
  336. package/dist/handlers/rust.d.ts.map +1 -0
  337. package/dist/handlers/rust.js +420 -0
  338. package/dist/handlers/rust.js.map +1 -0
  339. package/dist/handlers/scala.d.ts +9 -0
  340. package/dist/handlers/scala.d.ts.map +1 -0
  341. package/dist/handlers/scala.js +480 -0
  342. package/dist/handlers/scala.js.map +1 -0
  343. package/dist/handlers/swift.d.ts +3 -0
  344. package/dist/handlers/swift.d.ts.map +1 -0
  345. package/dist/handlers/swift.js +553 -0
  346. package/dist/handlers/swift.js.map +1 -0
  347. package/dist/handlers/typescript.d.ts +4 -0
  348. package/dist/handlers/typescript.d.ts.map +1 -0
  349. package/dist/handlers/typescript.js +325 -0
  350. package/dist/handlers/typescript.js.map +1 -0
  351. package/dist/index.d.ts +44 -0
  352. package/dist/index.d.ts.map +1 -0
  353. package/dist/index.js +266 -0
  354. package/dist/index.js.map +1 -0
  355. package/dist/semantic/embedding-provider.d.ts +66 -0
  356. package/dist/semantic/embedding-provider.d.ts.map +1 -0
  357. package/dist/semantic/embedding-provider.js +176 -0
  358. package/dist/semantic/embedding-provider.js.map +1 -0
  359. package/dist/semantic/hnsw-index.d.ts +96 -0
  360. package/dist/semantic/hnsw-index.d.ts.map +1 -0
  361. package/dist/semantic/hnsw-index.js +364 -0
  362. package/dist/semantic/hnsw-index.js.map +1 -0
  363. package/dist/semantic/hybrid-search.d.ts +46 -0
  364. package/dist/semantic/hybrid-search.d.ts.map +1 -0
  365. package/dist/semantic/hybrid-search.js +164 -0
  366. package/dist/semantic/hybrid-search.js.map +1 -0
  367. package/dist/semantic/query-expansion.d.ts +25 -0
  368. package/dist/semantic/query-expansion.d.ts.map +1 -0
  369. package/dist/semantic/query-expansion.js +150 -0
  370. package/dist/semantic/query-expansion.js.map +1 -0
  371. package/dist/semantic/semantic-indexer.d.ts +64 -0
  372. package/dist/semantic/semantic-indexer.d.ts.map +1 -0
  373. package/dist/semantic/semantic-indexer.js +162 -0
  374. package/dist/semantic/semantic-indexer.js.map +1 -0
  375. package/dist/semantic/text-preparation.d.ts +23 -0
  376. package/dist/semantic/text-preparation.d.ts.map +1 -0
  377. package/dist/semantic/text-preparation.js +56 -0
  378. package/dist/semantic/text-preparation.js.map +1 -0
  379. package/dist/semantic/vector-store.d.ts +81 -0
  380. package/dist/semantic/vector-store.d.ts.map +1 -0
  381. package/dist/semantic/vector-store.js +157 -0
  382. package/dist/semantic/vector-store.js.map +1 -0
  383. package/dist/server/admin-api.d.ts +88 -0
  384. package/dist/server/admin-api.d.ts.map +1 -0
  385. package/dist/server/admin-api.js +661 -0
  386. package/dist/server/admin-api.js.map +1 -0
  387. package/dist/server/auth/api-key.d.ts +105 -0
  388. package/dist/server/auth/api-key.d.ts.map +1 -0
  389. package/dist/server/auth/api-key.js +276 -0
  390. package/dist/server/auth/api-key.js.map +1 -0
  391. package/dist/server/http-server.d.ts +100 -0
  392. package/dist/server/http-server.d.ts.map +1 -0
  393. package/dist/server/http-server.js +823 -0
  394. package/dist/server/http-server.js.map +1 -0
  395. package/dist/server/mcp-server.d.ts +23 -0
  396. package/dist/server/mcp-server.d.ts.map +1 -0
  397. package/dist/server/mcp-server.js +214 -0
  398. package/dist/server/mcp-server.js.map +1 -0
  399. package/dist/server/rate-limit-store.d.ts +25 -0
  400. package/dist/server/rate-limit-store.d.ts.map +1 -0
  401. package/dist/server/rate-limit-store.js +46 -0
  402. package/dist/server/rate-limit-store.js.map +1 -0
  403. package/dist/server/rate-limiter.d.ts +59 -0
  404. package/dist/server/rate-limiter.d.ts.map +1 -0
  405. package/dist/server/rate-limiter.js +85 -0
  406. package/dist/server/rate-limiter.js.map +1 -0
  407. package/dist/server/tools/_meta.d.ts +24 -0
  408. package/dist/server/tools/_meta.d.ts.map +1 -0
  409. package/dist/server/tools/_meta.js +35 -0
  410. package/dist/server/tools/_meta.js.map +1 -0
  411. package/dist/server/tools/find-dead-code.d.ts +11 -0
  412. package/dist/server/tools/find-dead-code.d.ts.map +1 -0
  413. package/dist/server/tools/find-dead-code.js +45 -0
  414. package/dist/server/tools/find-dead-code.js.map +1 -0
  415. package/dist/server/tools/find-importers.d.ts +13 -0
  416. package/dist/server/tools/find-importers.d.ts.map +1 -0
  417. package/dist/server/tools/find-importers.js +46 -0
  418. package/dist/server/tools/find-importers.js.map +1 -0
  419. package/dist/server/tools/get-blast-radius.d.ts +15 -0
  420. package/dist/server/tools/get-blast-radius.d.ts.map +1 -0
  421. package/dist/server/tools/get-blast-radius.js +51 -0
  422. package/dist/server/tools/get-blast-radius.js.map +1 -0
  423. package/dist/server/tools/get-context-bundle.d.ts +15 -0
  424. package/dist/server/tools/get-context-bundle.d.ts.map +1 -0
  425. package/dist/server/tools/get-context-bundle.js +53 -0
  426. package/dist/server/tools/get-context-bundle.js.map +1 -0
  427. package/dist/server/tools/get-file-outline.d.ts +13 -0
  428. package/dist/server/tools/get-file-outline.d.ts.map +1 -0
  429. package/dist/server/tools/get-file-outline.js +42 -0
  430. package/dist/server/tools/get-file-outline.js.map +1 -0
  431. package/dist/server/tools/get-file-tree.d.ts +11 -0
  432. package/dist/server/tools/get-file-tree.d.ts.map +1 -0
  433. package/dist/server/tools/get-file-tree.js +63 -0
  434. package/dist/server/tools/get-file-tree.js.map +1 -0
  435. package/dist/server/tools/get-graph.d.ts +46 -0
  436. package/dist/server/tools/get-graph.d.ts.map +1 -0
  437. package/dist/server/tools/get-graph.js +168 -0
  438. package/dist/server/tools/get-graph.js.map +1 -0
  439. package/dist/server/tools/get-layer-violations.d.ts +37 -0
  440. package/dist/server/tools/get-layer-violations.d.ts.map +1 -0
  441. package/dist/server/tools/get-layer-violations.js +138 -0
  442. package/dist/server/tools/get-layer-violations.js.map +1 -0
  443. package/dist/server/tools/get-repo-outline.d.ts +13 -0
  444. package/dist/server/tools/get-repo-outline.d.ts.map +1 -0
  445. package/dist/server/tools/get-repo-outline.js +72 -0
  446. package/dist/server/tools/get-repo-outline.js.map +1 -0
  447. package/dist/server/tools/get-savings-stats.d.ts +11 -0
  448. package/dist/server/tools/get-savings-stats.d.ts.map +1 -0
  449. package/dist/server/tools/get-savings-stats.js +56 -0
  450. package/dist/server/tools/get-savings-stats.js.map +1 -0
  451. package/dist/server/tools/get-symbol-source.d.ts +13 -0
  452. package/dist/server/tools/get-symbol-source.d.ts.map +1 -0
  453. package/dist/server/tools/get-symbol-source.js +93 -0
  454. package/dist/server/tools/get-symbol-source.js.map +1 -0
  455. package/dist/server/tools/index-folder.d.ts +15 -0
  456. package/dist/server/tools/index-folder.d.ts.map +1 -0
  457. package/dist/server/tools/index-folder.js +45 -0
  458. package/dist/server/tools/index-folder.js.map +1 -0
  459. package/dist/server/tools/index-repo.d.ts +26 -0
  460. package/dist/server/tools/index-repo.d.ts.map +1 -0
  461. package/dist/server/tools/index-repo.js +164 -0
  462. package/dist/server/tools/index-repo.js.map +1 -0
  463. package/dist/server/tools/list-repos.d.ts +11 -0
  464. package/dist/server/tools/list-repos.d.ts.map +1 -0
  465. package/dist/server/tools/list-repos.js +60 -0
  466. package/dist/server/tools/list-repos.js.map +1 -0
  467. package/dist/server/tools/resolve-repo.d.ts +11 -0
  468. package/dist/server/tools/resolve-repo.d.ts.map +1 -0
  469. package/dist/server/tools/resolve-repo.js +44 -0
  470. package/dist/server/tools/resolve-repo.js.map +1 -0
  471. package/dist/server/tools/search-semantic.d.ts +56 -0
  472. package/dist/server/tools/search-semantic.d.ts.map +1 -0
  473. package/dist/server/tools/search-semantic.js +187 -0
  474. package/dist/server/tools/search-semantic.js.map +1 -0
  475. package/dist/server/tools/search-symbols.d.ts +43 -0
  476. package/dist/server/tools/search-symbols.d.ts.map +1 -0
  477. package/dist/server/tools/search-symbols.js +197 -0
  478. package/dist/server/tools/search-symbols.js.map +1 -0
  479. package/dist/server/tools/search-text.d.ts +21 -0
  480. package/dist/server/tools/search-text.d.ts.map +1 -0
  481. package/dist/server/tools/search-text.js +131 -0
  482. package/dist/server/tools/search-text.js.map +1 -0
  483. package/dist/server/transport.d.ts +59 -0
  484. package/dist/server/transport.d.ts.map +1 -0
  485. package/dist/server/transport.js +92 -0
  486. package/dist/server/transport.js.map +1 -0
  487. package/dist/summarizer/ai-summarizer.d.ts +71 -0
  488. package/dist/summarizer/ai-summarizer.d.ts.map +1 -0
  489. package/dist/summarizer/ai-summarizer.js +228 -0
  490. package/dist/summarizer/ai-summarizer.js.map +1 -0
  491. package/dist/summarizer/docstring-extractor.d.ts +9 -0
  492. package/dist/summarizer/docstring-extractor.d.ts.map +1 -0
  493. package/dist/summarizer/docstring-extractor.js +89 -0
  494. package/dist/summarizer/docstring-extractor.js.map +1 -0
  495. package/dist/summarizer/embeddings.d.ts +29 -0
  496. package/dist/summarizer/embeddings.d.ts.map +1 -0
  497. package/dist/summarizer/embeddings.js +133 -0
  498. package/dist/summarizer/embeddings.js.map +1 -0
  499. package/dist/summarizer/summarizer.d.ts +22 -0
  500. package/dist/summarizer/summarizer.d.ts.map +1 -0
  501. package/dist/summarizer/summarizer.js +86 -0
  502. package/dist/summarizer/summarizer.js.map +1 -0
  503. package/dist/ui/assets/BlastRadius-ccQ3ktbv.js +1 -0
  504. package/dist/ui/assets/DependencyGraph-BZV40eAE.css +1 -0
  505. package/dist/ui/assets/DependencyGraph-Ca84q89b.js +27 -0
  506. package/dist/ui/assets/NotFound-C1wVKP-6.js +1 -0
  507. package/dist/ui/assets/RepoDetail-B_8qid2Y.js +1 -0
  508. package/dist/ui/assets/RepoList-BuPu-ODM.js +1 -0
  509. package/dist/ui/assets/Search-BzZ9Og8E.js +1 -0
  510. package/dist/ui/assets/SymbolView-FdpKlzql.js +14 -0
  511. package/dist/ui/assets/client-BANW_tIp.js +1 -0
  512. package/dist/ui/assets/index-CnwwQi_S.js +61 -0
  513. package/dist/ui/assets/index-SS2IXr8I.css +1 -0
  514. package/dist/ui/assets/repoStore-SbGR6YI6.js +1 -0
  515. package/dist/ui/assets/useSearch-DHyve22h.js +1 -0
  516. package/dist/ui/index.html +13 -0
  517. package/dist/version.d.ts +2 -0
  518. package/dist/version.d.ts.map +1 -0
  519. package/dist/version.js +2 -0
  520. package/dist/version.js.map +1 -0
  521. package/grammars/tree-sitter-c.wasm +0 -0
  522. package/grammars/tree-sitter-cpp.wasm +0 -0
  523. package/grammars/tree-sitter-csharp.wasm +0 -0
  524. package/grammars/tree-sitter-dart.wasm +0 -0
  525. package/grammars/tree-sitter-elixir.wasm +0 -0
  526. package/grammars/tree-sitter-go.wasm +0 -0
  527. package/grammars/tree-sitter-haskell.wasm +0 -0
  528. package/grammars/tree-sitter-java.wasm +0 -0
  529. package/grammars/tree-sitter-javascript.wasm +0 -0
  530. package/grammars/tree-sitter-kotlin.wasm +0 -0
  531. package/grammars/tree-sitter-lua.wasm +0 -0
  532. package/grammars/tree-sitter-php.wasm +0 -0
  533. package/grammars/tree-sitter-python.wasm +0 -0
  534. package/grammars/tree-sitter-r.wasm +0 -0
  535. package/grammars/tree-sitter-ruby.wasm +0 -0
  536. package/grammars/tree-sitter-rust.wasm +0 -0
  537. package/grammars/tree-sitter-scala.wasm +0 -0
  538. package/grammars/tree-sitter-swift.wasm +0 -0
  539. package/grammars/tree-sitter-tsx.wasm +0 -0
  540. package/grammars/tree-sitter-typescript.wasm +0 -0
  541. package/package.json +104 -0
  542. package/scripts/check-sqlite.js +41 -0
@@ -0,0 +1,325 @@
1
+ import { createHash } from 'crypto';
2
+ import { dirname, resolve } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ // dist/handlers/ → ../../grammars/
6
+ const GRAMMARS_DIR = resolve(__dirname, '../../grammars');
7
+ const BODY_NODE_TYPES = new Set([
8
+ 'statement_block', 'class_body', 'interface_body', 'enum_body',
9
+ ]);
10
+ const SKIP_IN_EXPORT = new Set(['export', 'default', ';']);
11
+ // ─── Symbol ID ────────────────────────────────────────────────────────────────
12
+ function makeId(filePath, name, kind) {
13
+ return createHash('sha256')
14
+ .update(`${filePath}:${name}:${kind}`)
15
+ .digest('hex')
16
+ .slice(0, 16);
17
+ }
18
+ // ─── Signature building ───────────────────────────────────────────────────────
19
+ function buildSignature(node, source) {
20
+ let endByte = node.endIndex;
21
+ // If this is an export_statement, unwrap to the inner declaration before
22
+ // searching for a body node so we don't miss class_body / statement_block.
23
+ const declNode = node.type === 'export_statement'
24
+ ? (node.children.find((c) => !SKIP_IN_EXPORT.has(c.type)) ?? node)
25
+ : node;
26
+ const bodyNode = findBodyNode(declNode);
27
+ if (bodyNode)
28
+ endByte = bodyNode.startIndex;
29
+ return source
30
+ .toString('utf8', node.startIndex, endByte)
31
+ .replace(/\s+/g, ' ')
32
+ .trim()
33
+ .slice(0, 120);
34
+ }
35
+ function findBodyNode(node) {
36
+ for (const child of node.children) {
37
+ if (BODY_NODE_TYPES.has(child.type))
38
+ return child;
39
+ if (child.type === 'variable_declarator') {
40
+ const inner = findBodyNode(child);
41
+ if (inner)
42
+ return inner;
43
+ }
44
+ if (child.type === 'arrow_function') {
45
+ for (const c of child.children) {
46
+ if (BODY_NODE_TYPES.has(c.type))
47
+ return c;
48
+ }
49
+ }
50
+ }
51
+ return null;
52
+ }
53
+ // ─── Docstring extraction ─────────────────────────────────────────────────────
54
+ function extractDocstring(node) {
55
+ // The JSDoc comment precedes either the declaration or its wrapping export_statement
56
+ const outer = node.parent?.type === 'export_statement' ? node.parent : node;
57
+ const prev = outer.previousNamedSibling;
58
+ if (!prev || prev.type !== 'comment')
59
+ return null;
60
+ const text = prev.text;
61
+ if (!text.startsWith('/**'))
62
+ return null;
63
+ // Strip /** ... */ delimiters, leading * per line, and collapse whitespace
64
+ const body = text
65
+ .slice(2, -2) // remove /** and */
66
+ .split('\n')
67
+ .map((l) => l.replace(/^\s*\*\s?/, '').trim())
68
+ .filter(Boolean)
69
+ .join(' ');
70
+ // First sentence: up to first period followed by whitespace or end
71
+ const match = body.match(/^([^.!?]+[.!?]?)/);
72
+ return match ? match[1].trim().slice(0, 200) : body.slice(0, 200);
73
+ }
74
+ // ─── Name extraction helpers ──────────────────────────────────────────────────
75
+ // node.startIndex / endIndex are JavaScript character indices (not byte offsets)
76
+ // because web-tree-sitter's callback mode indexes by character.
77
+ function getChildText(node, sourceStr, ...types) {
78
+ for (const child of node.children) {
79
+ if (types.includes(child.type)) {
80
+ return sourceStr.slice(child.startIndex, child.endIndex);
81
+ }
82
+ }
83
+ return '';
84
+ }
85
+ // ─── Symbol extraction ────────────────────────────────────────────────────────
86
+ function processDeclaration(declNode, outerNode, // export_statement if exported, same as declNode otherwise
87
+ source, sourceStr, // source.toString('utf8') — for character-indexed text extraction
88
+ filePath, symbols, tsOnly) {
89
+ switch (declNode.type) {
90
+ case 'function_declaration': {
91
+ const name = getChildText(declNode, sourceStr, 'identifier');
92
+ if (!name)
93
+ break;
94
+ const summary = extractDocstring(declNode) ?? '';
95
+ symbols.push({
96
+ id: makeId(filePath, name, 'function'),
97
+ name,
98
+ kind: 'function',
99
+ filePath,
100
+ startByte: outerNode.startIndex,
101
+ endByte: outerNode.endIndex,
102
+ signature: buildSignature(outerNode, source),
103
+ summary,
104
+ });
105
+ break;
106
+ }
107
+ case 'class_declaration':
108
+ case 'abstract_class_declaration': {
109
+ const name = getChildText(declNode, sourceStr, 'type_identifier');
110
+ if (!name)
111
+ break;
112
+ const summary = extractDocstring(declNode) ?? '';
113
+ symbols.push({
114
+ id: makeId(filePath, name, 'class'),
115
+ name,
116
+ kind: 'class',
117
+ filePath,
118
+ startByte: outerNode.startIndex,
119
+ endByte: outerNode.endIndex,
120
+ signature: buildSignature(outerNode, source),
121
+ summary,
122
+ });
123
+ // Extract methods from class_body
124
+ const body = declNode.children.find((c) => c.type === 'class_body');
125
+ if (body) {
126
+ for (const member of body.children) {
127
+ if (member.type === 'method_definition') {
128
+ const methodName = getChildText(member, sourceStr, 'property_identifier', 'identifier');
129
+ if (!methodName || methodName.startsWith('#'))
130
+ continue; // skip private
131
+ const qualified = `${name}.${methodName}`;
132
+ const methodDoc = member.previousNamedSibling?.type === 'comment'
133
+ ? extractDocstring(member)
134
+ : null;
135
+ symbols.push({
136
+ id: makeId(filePath, qualified, 'method'),
137
+ name: qualified,
138
+ kind: 'method',
139
+ filePath,
140
+ startByte: member.startIndex,
141
+ endByte: member.endIndex,
142
+ signature: buildSignature(member, source),
143
+ summary: methodDoc ?? '',
144
+ });
145
+ }
146
+ }
147
+ }
148
+ break;
149
+ }
150
+ case 'lexical_declaration': {
151
+ // const/let at top level — only extract named declarators
152
+ for (const child of declNode.children) {
153
+ if (child.type !== 'variable_declarator')
154
+ continue;
155
+ const name = getChildText(child, sourceStr, 'identifier');
156
+ if (!name)
157
+ continue;
158
+ const hasArrow = child.children.some((c) => c.type === 'arrow_function');
159
+ const kind = hasArrow ? 'function' : 'const';
160
+ const summary = extractDocstring(declNode) ?? '';
161
+ symbols.push({
162
+ id: makeId(filePath, name, kind),
163
+ name,
164
+ kind,
165
+ filePath,
166
+ startByte: outerNode.startIndex,
167
+ endByte: outerNode.endIndex,
168
+ signature: buildSignature(outerNode, source),
169
+ summary,
170
+ });
171
+ }
172
+ break;
173
+ }
174
+ case 'type_alias_declaration': {
175
+ if (!tsOnly)
176
+ break;
177
+ const name = getChildText(declNode, sourceStr, 'type_identifier');
178
+ if (!name)
179
+ break;
180
+ symbols.push({
181
+ id: makeId(filePath, name, 'type'),
182
+ name,
183
+ kind: 'type',
184
+ filePath,
185
+ startByte: outerNode.startIndex,
186
+ endByte: outerNode.endIndex,
187
+ signature: buildSignature(outerNode, source),
188
+ summary: extractDocstring(declNode) ?? '',
189
+ });
190
+ break;
191
+ }
192
+ case 'interface_declaration': {
193
+ if (!tsOnly)
194
+ break;
195
+ const name = getChildText(declNode, sourceStr, 'type_identifier');
196
+ if (!name)
197
+ break;
198
+ symbols.push({
199
+ id: makeId(filePath, name, 'interface'),
200
+ name,
201
+ kind: 'interface',
202
+ filePath,
203
+ startByte: outerNode.startIndex,
204
+ endByte: outerNode.endIndex,
205
+ signature: buildSignature(outerNode, source),
206
+ summary: extractDocstring(declNode) ?? '',
207
+ });
208
+ break;
209
+ }
210
+ case 'enum_declaration': {
211
+ if (!tsOnly)
212
+ break;
213
+ const name = getChildText(declNode, sourceStr, 'identifier');
214
+ if (!name)
215
+ break;
216
+ symbols.push({
217
+ id: makeId(filePath, name, 'enum'),
218
+ name,
219
+ kind: 'enum',
220
+ filePath,
221
+ startByte: outerNode.startIndex,
222
+ endByte: outerNode.endIndex,
223
+ signature: buildSignature(outerNode, source),
224
+ summary: extractDocstring(declNode) ?? '',
225
+ });
226
+ break;
227
+ }
228
+ }
229
+ }
230
+ function extractSymbols(tree, source, filePath, tsOnly) {
231
+ const sourceStr = source.toString('utf8');
232
+ const symbols = [];
233
+ for (const node of tree.rootNode.children) {
234
+ if (node.type === 'export_statement') {
235
+ // Find the declaration inside, skipping export/default keywords
236
+ for (const child of node.children) {
237
+ if (!SKIP_IN_EXPORT.has(child.type)) {
238
+ processDeclaration(child, node, source, sourceStr, filePath, symbols, tsOnly);
239
+ break;
240
+ }
241
+ }
242
+ }
243
+ else {
244
+ // Also index non-exported top-level declarations (useful for navigation)
245
+ processDeclaration(node, node, source, sourceStr, filePath, symbols, tsOnly);
246
+ }
247
+ }
248
+ return symbols;
249
+ }
250
+ // ─── Import extraction ────────────────────────────────────────────────────────
251
+ function extractImports(tree, source) {
252
+ const sourceStr = source.toString('utf8');
253
+ const imports = [];
254
+ // Detect source file path from the tree (needed for ImportRecord.sourceFile)
255
+ // Caller sets this — we leave it empty here and fill it in the handler wrapper
256
+ const sourceFile = '';
257
+ for (const node of tree.rootNode.children) {
258
+ if (node.type !== 'import_statement')
259
+ continue;
260
+ // Detect `import type`
261
+ const isTypeOnly = node.children.some((c) => c.type === 'type');
262
+ // Extract specifier string (the path after 'from')
263
+ const stringNode = node.children.find((c) => c.type === 'string');
264
+ const specifier = stringNode
265
+ ? getChildText(stringNode, sourceStr, 'string_fragment')
266
+ : '';
267
+ if (!specifier)
268
+ continue;
269
+ const importedNames = [];
270
+ const clause = node.children.find((c) => c.type === 'import_clause');
271
+ if (clause) {
272
+ for (const child of clause.children) {
273
+ if (child.type === 'identifier') {
274
+ // default import: `import Foo from '...'`
275
+ importedNames.push(sourceStr.slice(child.startIndex, child.endIndex));
276
+ }
277
+ else if (child.type === 'namespace_import') {
278
+ // `import * as ns from '...'`
279
+ const alias = child.children.find((c) => c.type === 'identifier');
280
+ if (alias)
281
+ importedNames.push(`* as ${sourceStr.slice(alias.startIndex, alias.endIndex)}`);
282
+ }
283
+ else if (child.type === 'named_imports') {
284
+ // `import { foo, bar as baz } from '...'`
285
+ for (const spec of child.children) {
286
+ if (spec.type !== 'import_specifier')
287
+ continue;
288
+ const idents = spec.children.filter((c) => c.type === 'identifier');
289
+ // idents[0] = original name, idents[1] = alias (if present)
290
+ if (idents[0])
291
+ importedNames.push(sourceStr.slice(idents[0].startIndex, idents[0].endIndex));
292
+ }
293
+ }
294
+ }
295
+ }
296
+ // Side-effect import: `import './foo'` has no clause — importedNames stays []
297
+ imports.push({
298
+ sourceFile,
299
+ specifier,
300
+ resolvedPath: null, // resolved by path-resolver in Task 7
301
+ importedNames,
302
+ isTypeOnly,
303
+ });
304
+ }
305
+ return imports;
306
+ }
307
+ // ─── Handler implementations ─────────────────────────────────────────────────
308
+ export const typescriptHandler = {
309
+ extensions: () => ['.ts', '.mts', '.cts'],
310
+ grammarPath: () => resolve(GRAMMARS_DIR, 'tree-sitter-typescript.wasm'),
311
+ extractSymbols: (tree, source, filePath) => extractSymbols(tree, source, filePath, true),
312
+ extractImports: (tree, source) => {
313
+ const imports = extractImports(tree, source);
314
+ return imports;
315
+ },
316
+ extractDocstring,
317
+ };
318
+ export const tsxHandler = {
319
+ extensions: () => ['.tsx'],
320
+ grammarPath: () => resolve(GRAMMARS_DIR, 'tree-sitter-tsx.wasm'),
321
+ extractSymbols: (tree, source, filePath) => extractSymbols(tree, source, filePath, true),
322
+ extractImports: (tree, source) => extractImports(tree, source),
323
+ extractDocstring,
324
+ };
325
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/handlers/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,mCAAmC;AACnC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAE1D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW;CAC/D,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAE3D,iFAAiF;AAEjF,SAAS,MAAM,CAAC,QAAgB,EAAE,IAAY,EAAE,IAAgB;IAC9D,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;SACrC,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc,CAAC,IAAgB,EAAE,MAAc;IACtD,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE5B,yEAAyE;IACzE,2EAA2E;IAC3E,MAAM,QAAQ,GACZ,IAAI,CAAC,IAAI,KAAK,kBAAkB;QAC9B,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;QAClE,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,QAAQ;QAAE,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;IAE5C,OAAO,MAAM;SACV,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;SAC1C,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB;IACpC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/B,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF,SAAS,gBAAgB,CAAC,IAAgB;IACxC,qFAAqF;IACrF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,oBAAoB,CAAC;IACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,2EAA2E;IAC3E,MAAM,IAAI,GAAG,IAAI;SACd,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAe,oBAAoB;SAC/C,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,mEAAmE;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,iFAAiF;AAEjF,iFAAiF;AACjF,gEAAgE;AAChE,SAAS,YAAY,CAAC,IAAgB,EAAE,SAAiB,EAAE,GAAG,KAAe;IAC3E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AAEjF,SAAS,kBAAkB,CACzB,QAAoB,EACpB,SAAqB,EAAI,2DAA2D;AACpF,MAAc,EACd,SAAiB,EAAQ,kEAAkE;AAC3F,QAAgB,EAChB,OAAuB,EACvB,MAAe;IAEf,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC;gBACtC,IAAI;gBACJ,IAAI,EAAE,UAAU;gBAChB,QAAQ;gBACR,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,OAAO,EAAE,SAAS,CAAC,QAAQ;gBAC3B,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC5C,OAAO;aACR,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC;QACzB,KAAK,4BAA4B,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;gBACnC,IAAI;gBACJ,IAAI,EAAE,OAAO;gBACb,QAAQ;gBACR,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,OAAO,EAAE,SAAS,CAAC,QAAQ;gBAC3B,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC5C,OAAO;aACR,CAAC,CAAC;YACH,kCAAkC;YAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YACpE,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnC,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBACxC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,YAAY,CAAC,CAAC;wBACxF,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;4BAAE,SAAS,CAAC,eAAe;wBACxE,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,CAAC;wBAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,oBAAoB,EAAE,IAAI,KAAK,SAAS;4BAC/D,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;4BAC1B,CAAC,CAAC,IAAI,CAAC;wBACT,OAAO,CAAC,IAAI,CAAC;4BACX,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;4BACzC,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,QAAQ;4BACd,QAAQ;4BACR,SAAS,EAAE,MAAM,CAAC,UAAU;4BAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ;4BACxB,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;4BACzC,OAAO,EAAE,SAAS,IAAI,EAAE;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,0DAA0D;YAC1D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB;oBAAE,SAAS;gBACnD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;gBACzE,MAAM,IAAI,GAAe,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;gBACzD,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;oBAChC,IAAI;oBACJ,IAAI;oBACJ,QAAQ;oBACR,SAAS,EAAE,SAAS,CAAC,UAAU;oBAC/B,OAAO,EAAE,SAAS,CAAC,QAAQ;oBAC3B,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;oBAC5C,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM;gBAAE,MAAM;YACnB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;gBAClC,IAAI;gBACJ,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,OAAO,EAAE,SAAS,CAAC,QAAQ;gBAC3B,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC5C,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,MAAM;YACnB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC;gBACvC,IAAI;gBACJ,IAAI,EAAE,WAAW;gBACjB,QAAQ;gBACR,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,OAAO,EAAE,SAAS,CAAC,QAAQ;gBAC3B,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC5C,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,MAAM;gBAAE,MAAM;YACnB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;gBAClC,IAAI;gBACJ,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,SAAS,EAAE,SAAS,CAAC,UAAU;gBAC/B,OAAO,EAAE,SAAS,CAAC,QAAQ;gBAC3B,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;gBAC5C,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE;aAC1C,CAAC,CAAC;YACH,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAU,EAAE,MAAc,EAAE,QAAgB,EAAE,MAAe;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,gEAAgE;YAChE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC9E,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc,CAAC,IAAU,EAAE,MAAc;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,6EAA6E;IAC7E,+EAA+E;IAC/E,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB;YAAE,SAAS;QAE/C,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAEhE,mDAAmD;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,UAAU;YAC1B,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAC;YACxD,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;QACrE,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,0CAA0C;oBAC1C,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxE,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBAC7C,8BAA8B;oBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;oBAClE,IAAI,KAAK;wBAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC7F,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC1C,0CAA0C;oBAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBAClC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB;4BAAE,SAAS;wBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;wBACpE,4DAA4D;wBAC5D,IAAI,MAAM,CAAC,CAAC,CAAC;4BAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC/F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,8EAA8E;QAE9E,OAAO,CAAC,IAAI,CAAC;YACX,UAAU;YACV,SAAS;YACT,YAAY,EAAE,IAAI,EAAE,sCAAsC;YAC1D,aAAa;YACb,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAChD,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IAEzC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,6BAA6B,CAAC;IAEvE,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CACzC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;IAE9C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gBAAgB;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;IAE1B,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,sBAAsB,CAAC;IAEhE,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CACzC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;IAE9C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC;IAE9D,gBAAgB;CACjB,CAAC"}
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PureContext MCP — entry point.
4
+ *
5
+ * Usage:
6
+ * purecontext-mcp Start the MCP server (stdio transport)
7
+ * purecontext-mcp config Show effective configuration
8
+ * purecontext-mcp config --init Generate ~/.purecontext/config.json
9
+ * purecontext-mcp config --check Validate config + check prerequisites
10
+ * purecontext-mcp --version / -v Print version and exit
11
+ * purecontext-mcp --help / -h Print usage and exit
12
+ */
13
+ import './adapters/vue.js';
14
+ import './adapters/nuxt.js';
15
+ import './adapters/react.js';
16
+ import './adapters/nextjs.js';
17
+ import './adapters/angular.js';
18
+ import './adapters/nestjs.js';
19
+ import './adapters/express.js';
20
+ import './adapters/fastify.js';
21
+ import './adapters/flask.js';
22
+ import './adapters/fastapi.js';
23
+ import './adapters/django.js';
24
+ import './adapters/gin.js';
25
+ import './adapters/echo.js';
26
+ import './adapters/fiber.js';
27
+ import './adapters/laravel.js';
28
+ import './adapters/symfony.js';
29
+ import './adapters/rails.js';
30
+ import './adapters/sinatra.js';
31
+ import './adapters/ktor.js';
32
+ import './adapters/spring-kotlin.js';
33
+ import './adapters/flutter.js';
34
+ import './adapters/vapor.js';
35
+ import './adapters/axum.js';
36
+ import './adapters/actix-web.js';
37
+ import './adapters/rocket.js';
38
+ import './adapters/spring-boot.js';
39
+ import './adapters/micronaut.js';
40
+ import './adapters/quarkus.js';
41
+ import './adapters/hibernate.js';
42
+ import './adapters/sqlalchemy.js';
43
+ import './adapters/django-orm.js';
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AA4BH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,6BAA6B,CAAC;AACrC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,yBAAyB,CAAC;AACjC,OAAO,0BAA0B,CAAC;AAClC,OAAO,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,266 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * PureContext MCP — entry point.
4
+ *
5
+ * Usage:
6
+ * purecontext-mcp Start the MCP server (stdio transport)
7
+ * purecontext-mcp config Show effective configuration
8
+ * purecontext-mcp config --init Generate ~/.purecontext/config.json
9
+ * purecontext-mcp config --check Validate config + check prerequisites
10
+ * purecontext-mcp --version / -v Print version and exit
11
+ * purecontext-mcp --help / -h Print usage and exit
12
+ */
13
+ import { createRequire } from 'module';
14
+ import { fileURLToPath } from 'url';
15
+ import { dirname, resolve } from 'path';
16
+ import { logger } from './core/logger.js';
17
+ import { initParser } from './core/parse-dispatcher.js';
18
+ import { registerHandler } from './handlers/handler-registry.js';
19
+ import { typescriptHandler, tsxHandler } from './handlers/typescript.js';
20
+ import { javascriptHandler } from './handlers/javascript.js';
21
+ import { pythonHandler } from './handlers/python.js';
22
+ import { goHandler } from './handlers/go.js';
23
+ import { rustHandler } from './handlers/rust.js';
24
+ import { javaHandler } from './handlers/java.js';
25
+ import { csharpHandler } from './handlers/csharp.js';
26
+ import { phpHandler } from './handlers/php.js';
27
+ import { rubyHandler } from './handlers/ruby.js';
28
+ import { kotlinHandler } from './handlers/kotlin.js';
29
+ import { cHandler } from './handlers/c.js';
30
+ import { cppHandler } from './handlers/cpp.js';
31
+ import { luaHandler } from './handlers/lua.js';
32
+ import { dartHandler } from './handlers/dart.js';
33
+ import { swiftHandler } from './handlers/swift.js';
34
+ import { elixirHandler } from './handlers/elixir.js';
35
+ import { haskellHandler } from './handlers/haskell.js';
36
+ import { scalaHandler } from './handlers/scala.js';
37
+ import { rHandler } from './handlers/r.js';
38
+ // Framework adapters — imported for side-effect self-registration
39
+ import './adapters/vue.js';
40
+ import './adapters/nuxt.js';
41
+ import './adapters/react.js';
42
+ import './adapters/nextjs.js';
43
+ import './adapters/angular.js';
44
+ import './adapters/nestjs.js';
45
+ import './adapters/express.js';
46
+ import './adapters/fastify.js';
47
+ import './adapters/flask.js';
48
+ import './adapters/fastapi.js';
49
+ import './adapters/django.js';
50
+ import './adapters/gin.js';
51
+ import './adapters/echo.js';
52
+ import './adapters/fiber.js';
53
+ import './adapters/laravel.js';
54
+ import './adapters/symfony.js';
55
+ import './adapters/rails.js';
56
+ import './adapters/sinatra.js';
57
+ import './adapters/ktor.js';
58
+ import './adapters/spring-kotlin.js';
59
+ import './adapters/flutter.js';
60
+ import './adapters/vapor.js';
61
+ import './adapters/axum.js';
62
+ import './adapters/actix-web.js';
63
+ import './adapters/rocket.js';
64
+ import './adapters/spring-boot.js';
65
+ import './adapters/micronaut.js';
66
+ import './adapters/quarkus.js';
67
+ import './adapters/hibernate.js';
68
+ import './adapters/sqlalchemy.js';
69
+ import './adapters/django-orm.js';
70
+ import { startServer } from './server/mcp-server.js';
71
+ import { cmdInit, cmdCheck, cmdShow, cmdHealth } from './config/cli.js';
72
+ import { runKeysCommand } from './config/keys-cli.js';
73
+ import { runWorkspacesCommand } from './config/workspaces-cli.js';
74
+ import { VERSION } from './version.js';
75
+ import { PureContextError, formatErrorBox } from './core/errors.js';
76
+ const __filename = fileURLToPath(import.meta.url);
77
+ const __dirname = dirname(__filename);
78
+ const require = createRequire(import.meta.url);
79
+ const pkg = require(resolve(__dirname, '../package.json'));
80
+ const NAME = pkg.name;
81
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
82
+ function printHelp() {
83
+ process.stdout.write(`
84
+ ${NAME} v${VERSION} — token-efficient source code navigation for AI agents
85
+
86
+ Usage:
87
+ purecontext-mcp Start the MCP server (stdio)
88
+ purecontext-mcp --server Start as a shared HTTP server (team mode)
89
+ purecontext-mcp --server --port 3001 Override HTTP port
90
+ purecontext-mcp --server --host 0.0.0.0 Bind to all interfaces
91
+ purecontext-mcp --server --no-auth Disable auth (local testing only)
92
+ purecontext-mcp --transport http Start HTTP/SSE server on port 3000
93
+ purecontext-mcp --transport both Start stdio AND HTTP simultaneously
94
+ purecontext-mcp config Show effective configuration
95
+ purecontext-mcp config --init Generate default config file
96
+ purecontext-mcp config --check Validate config and prerequisites
97
+ purecontext-mcp keys create Create an API key for HTTP access
98
+ purecontext-mcp keys list List tenants and API keys
99
+ purecontext-mcp keys revoke <prefix> Revoke an API key
100
+ purecontext-mcp workspaces list List workspaces
101
+ purecontext-mcp workspaces create --name Create a workspace
102
+ purecontext-mcp --version Print version
103
+ purecontext-mcp --help Print this help
104
+
105
+ Environment variables:
106
+ PCTX_ADMIN_KEY Admin key for /admin/* endpoints
107
+ PCTX_DATA_DIR Override data directory (default: ~/.purecontext)
108
+ PCTX_PORT Override HTTP port
109
+ PCTX_HOST Override HTTP host
110
+
111
+ Claude Code integration:
112
+ claude mcp add purecontext-mcp -- npx purecontext-mcp
113
+ `.trimStart());
114
+ }
115
+ // ─── Startup ──────────────────────────────────────────────────────────────────
116
+ async function bootstrap() {
117
+ // Register all language handlers before any indexing can happen
118
+ registerHandler(typescriptHandler);
119
+ registerHandler(tsxHandler);
120
+ registerHandler(javascriptHandler);
121
+ registerHandler(pythonHandler);
122
+ registerHandler(goHandler);
123
+ registerHandler(rustHandler);
124
+ registerHandler(javaHandler);
125
+ registerHandler(csharpHandler);
126
+ registerHandler(phpHandler);
127
+ registerHandler(rubyHandler);
128
+ registerHandler(kotlinHandler);
129
+ registerHandler(cHandler);
130
+ registerHandler(cppHandler);
131
+ registerHandler(luaHandler);
132
+ registerHandler(dartHandler);
133
+ registerHandler(swiftHandler);
134
+ registerHandler(elixirHandler);
135
+ registerHandler(haskellHandler);
136
+ registerHandler(scalaHandler);
137
+ registerHandler(rHandler);
138
+ // Initialise tree-sitter (loads WASM runtime + grammars lazily on first use)
139
+ await initParser();
140
+ }
141
+ // ─── Main ─────────────────────────────────────────────────────────────────────
142
+ async function main() {
143
+ const args = process.argv.slice(2);
144
+ // ── Version / help / health flags (before bootstrap) ────────────────────
145
+ if (args.includes('--version') || args.includes('-v')) {
146
+ process.stdout.write(`${NAME} v${VERSION}\n`);
147
+ process.exit(0);
148
+ }
149
+ if (args.includes('--help') || args.includes('-h')) {
150
+ printHelp();
151
+ process.exit(0);
152
+ }
153
+ if (args.includes('--health')) {
154
+ const ok = cmdHealth();
155
+ process.exit(ok ? 0 : 1);
156
+ }
157
+ // ── keys sub-command ─────────────────────────────────────────────────────
158
+ if (args[0] === 'keys') {
159
+ runKeysCommand(args.slice(1));
160
+ // runKeysCommand handles process.exit() internally for synchronous paths;
161
+ // for async paths (keys list) it calls .then(() => process.exit(0))
162
+ return;
163
+ }
164
+ // ── workspaces sub-command ────────────────────────────────────────────────
165
+ if (args[0] === 'workspaces') {
166
+ runWorkspacesCommand(args.slice(1));
167
+ return;
168
+ }
169
+ // ── config sub-command ────────────────────────────────────────────────────
170
+ if (args[0] === 'config') {
171
+ const flag = args[1];
172
+ if (flag === '--init') {
173
+ await cmdInit();
174
+ process.exit(0);
175
+ }
176
+ if (flag === '--check') {
177
+ // --check needs grammars path, which requires bootstrap
178
+ await bootstrap();
179
+ const ok = cmdCheck();
180
+ process.exit(ok ? 0 : 1);
181
+ }
182
+ // Default: show effective config (no bootstrap needed)
183
+ cmdShow();
184
+ process.exit(0);
185
+ }
186
+ // ── Parse server flags ────────────────────────────────────────────────────
187
+ const serverMode = args.includes('--server');
188
+ const noAuth = args.includes('--no-auth');
189
+ const knownServerFlags = new Set(['--transport', '--port', '--host']);
190
+ const knownBoolFlags = new Set(['--server', '--no-auth']);
191
+ const remainingArgs = args.filter((a, i) => {
192
+ // Drop known bool flags
193
+ if (knownBoolFlags.has(a))
194
+ return false;
195
+ // Drop known value flags and their values
196
+ if (knownServerFlags.has(a))
197
+ return false;
198
+ if (i > 0 && knownServerFlags.has(args[i - 1]))
199
+ return false;
200
+ return true;
201
+ });
202
+ // ── Unknown sub-command ───────────────────────────────────────────────────
203
+ if (remainingArgs.length > 0) {
204
+ process.stderr.write(`Unknown command: ${remainingArgs[0]}\n`);
205
+ process.stderr.write(`Run 'purecontext-mcp --help' for usage.\n`);
206
+ process.exit(1);
207
+ }
208
+ // ── Resolve flags ─────────────────────────────────────────────────────────
209
+ const transportIdx = args.indexOf('--transport');
210
+ const transportFlag = transportIdx >= 0 ? args[transportIdx + 1] : undefined;
211
+ const portIdx = args.indexOf('--port');
212
+ const portRaw = portIdx >= 0 ? parseInt(args[portIdx + 1], 10) : undefined;
213
+ const portFlag = portRaw !== undefined && !isNaN(portRaw) ? portRaw : undefined;
214
+ const hostIdx = args.indexOf('--host');
215
+ const hostFlag = hostIdx >= 0 ? args[hostIdx + 1] : undefined;
216
+ // --server implies HTTP transport; defaults host to 0.0.0.0 for team use
217
+ const effectiveTransport = serverMode
218
+ ? 'http'
219
+ : transportFlag;
220
+ const effectiveHost = serverMode
221
+ ? (hostFlag ?? '0.0.0.0')
222
+ : hostFlag;
223
+ // --server enables auth by default; --no-auth disables it (dev only)
224
+ const effectiveRequireAuth = serverMode ? !noAuth : undefined;
225
+ try {
226
+ await bootstrap();
227
+ logger.info(`${NAME} v${VERSION} starting`);
228
+ // Print a startup hint only when running in an interactive terminal.
229
+ // stdin.isTTY is undefined when piped — writing to stdout when piped
230
+ // would corrupt the MCP stdio protocol stream. Always use stderr here.
231
+ if (!serverMode && process.stdin.isTTY) {
232
+ process.stderr.write(`${NAME} v${VERSION} — ready for MCP connections (stdio)\n` +
233
+ `Run with --help for usage, --health to verify installation.\n`);
234
+ }
235
+ await startServer({
236
+ transport: effectiveTransport,
237
+ port: portFlag,
238
+ host: effectiveHost,
239
+ requireAuth: effectiveRequireAuth,
240
+ serverMode,
241
+ });
242
+ }
243
+ catch (err) {
244
+ printFatalError(err);
245
+ process.exit(1);
246
+ }
247
+ }
248
+ function printFatalError(err) {
249
+ if (err instanceof PureContextError && err.userMessage) {
250
+ process.stderr.write(formatErrorBox(err.userMessage, err.suggestion ?? '') + '\n');
251
+ }
252
+ else {
253
+ process.stderr.write('Unexpected error — please report this at https://github.com/gococ/purecontext-mcp/issues\n');
254
+ if (err instanceof Error && err.stack) {
255
+ process.stderr.write(err.stack + '\n');
256
+ }
257
+ else {
258
+ process.stderr.write(String(err) + '\n');
259
+ }
260
+ }
261
+ }
262
+ main().catch((err) => {
263
+ printFatalError(err);
264
+ process.exit(1);
265
+ });
266
+ //# sourceMappingURL=index.js.map