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,464 @@
1
+ /**
2
+ * Django ORM adapter (Python ORM).
3
+ *
4
+ * Extracts model class and field-level schema metadata from Django ORM models
5
+ * using regex and indentation-based scanning on Python source text. Complements
6
+ * the general `django` adapter — that one extracts views/URLs/signals, this one
7
+ * extracts database schema metadata (columns, relationships, managers, Meta).
8
+ *
9
+ * Patterns recognised:
10
+ * class Post(models.Model): → class (django_model)
11
+ * title = models.CharField(max_length=200) → const (field_type, max_length)
12
+ * author = models.ForeignKey(User, ...) → const (relationship, target_model, on_delete)
13
+ * posts = models.ManyToManyField(Post, ...) → const (relationship)
14
+ * profile = models.OneToOneField(User, ...) → const (relationship)
15
+ * objects = PostManager() → const (django_manager)
16
+ * class Meta: db_table / verbose_name / ordering → enriches parent model symbol
17
+ *
18
+ * Detection:
19
+ * - manage.py at project root
20
+ * - requirements.txt / pyproject.toml containing "django"
21
+ *
22
+ * File filter:
23
+ * - files named `models.py` (any directory depth)
24
+ * - files under a `models/` directory (e.g. `myapp/models/user.py`)
25
+ */
26
+ import { createHash } from 'crypto';
27
+ import { readFileSync, existsSync } from 'fs';
28
+ import { join, basename, dirname } from 'path';
29
+ import { registerAdapter } from './adapter-registry.js';
30
+ import { logger } from '../core/logger.js';
31
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
32
+ function makeId(filePath, name, kind) {
33
+ return createHash('sha256')
34
+ .update(`${filePath}:${name}:${kind}`)
35
+ .digest('hex')
36
+ .slice(0, 16);
37
+ }
38
+ // ─── Django field → SQL type ──────────────────────────────────────────────────
39
+ const DJANGO_FIELD_TO_SQL = {
40
+ AutoField: 'INTEGER',
41
+ BigAutoField: 'BIGINT',
42
+ SmallAutoField: 'INTEGER',
43
+ IntegerField: 'INTEGER',
44
+ SmallIntegerField: 'SMALLINT',
45
+ PositiveIntegerField: 'INTEGER',
46
+ PositiveSmallIntegerField: 'SMALLINT',
47
+ BigIntegerField: 'BIGINT',
48
+ FloatField: 'FLOAT',
49
+ DecimalField: 'DECIMAL',
50
+ CharField: 'VARCHAR',
51
+ EmailField: 'VARCHAR',
52
+ URLField: 'VARCHAR',
53
+ SlugField: 'VARCHAR',
54
+ FileField: 'VARCHAR',
55
+ ImageField: 'VARCHAR',
56
+ FilePathField: 'VARCHAR',
57
+ IPAddressField: 'VARCHAR',
58
+ GenericIPAddressField: 'VARCHAR',
59
+ TextField: 'TEXT',
60
+ BooleanField: 'BOOLEAN',
61
+ NullBooleanField: 'BOOLEAN',
62
+ DateField: 'DATE',
63
+ DateTimeField: 'TIMESTAMP',
64
+ TimeField: 'TIME',
65
+ DurationField: 'INTERVAL',
66
+ BinaryField: 'BLOB',
67
+ JSONField: 'JSON',
68
+ UUIDField: 'UUID',
69
+ };
70
+ // ─── Relationship fields ───────────────────────────────────────────────────────
71
+ const RELATIONSHIP_KIND = {
72
+ ForeignKey: 'many_to_one',
73
+ ManyToManyField: 'many_to_many',
74
+ OneToOneField: 'one_to_one',
75
+ };
76
+ // ─── Model base classes that indicate a Django ORM model ──────────────────────
77
+ const MODEL_BASE_RE = new RegExp([
78
+ 'models\\.Model',
79
+ 'Model',
80
+ 'MPTTModel',
81
+ 'TimeStampedModel',
82
+ 'AbstractUser',
83
+ 'AbstractBaseUser',
84
+ 'PolymorphicModel',
85
+ ].join('|'));
86
+ function isDjangoModel(basesStr) {
87
+ return basesStr.split(',').some((b) => MODEL_BASE_RE.test(b.trim()));
88
+ }
89
+ // ─── App label from file path ─────────────────────────────────────────────────
90
+ /**
91
+ * Infer the Django app label from the models file path.
92
+ *
93
+ * Examples:
94
+ * myapp/models.py → myapp
95
+ * myapp/models/user.py → myapp
96
+ * src/apps/myapp/models.py → myapp
97
+ */
98
+ function appLabelFromPath(filePath) {
99
+ // Normalise to forward slashes
100
+ const fp = filePath.replace(/\\/g, '/');
101
+ const parts = fp.split('/');
102
+ // Find 'models.py' or 'models/' in the path
103
+ const modelsIdx = parts.findLastIndex((p) => p === 'models.py' || p === 'models');
104
+ if (modelsIdx > 0) {
105
+ return parts[modelsIdx - 1];
106
+ }
107
+ // Fallback: parent directory
108
+ const dir = dirname(fp);
109
+ return basename(dir) || '';
110
+ }
111
+ // ─── Continuation line joining ────────────────────────────────────────────────
112
+ /**
113
+ * Collect continuation lines when a statement has unbalanced open parentheses.
114
+ * Returns [joinedLine, lastConsumedIndex].
115
+ */
116
+ function joinContinuationLines(lines, startIdx, classIndent) {
117
+ let joined = lines[startIdx];
118
+ let lastConsumed = startIdx;
119
+ let depth = (joined.match(/\(/g)?.length ?? 0) - (joined.match(/\)/g)?.length ?? 0);
120
+ let idx = startIdx + 1;
121
+ while (depth > 0 && idx < lines.length) {
122
+ const nextLine = lines[idx];
123
+ const stripped = nextLine.trimStart();
124
+ if (stripped === '' || stripped.startsWith('#')) {
125
+ idx++;
126
+ continue;
127
+ }
128
+ const currentIndent = nextLine.length - stripped.length;
129
+ if (currentIndent <= classIndent)
130
+ break;
131
+ joined += ' ' + stripped;
132
+ lastConsumed = idx;
133
+ depth +=
134
+ (stripped.match(/\(/g)?.length ?? 0) -
135
+ (stripped.match(/\)/g)?.length ?? 0);
136
+ idx++;
137
+ }
138
+ return [joined, lastConsumed];
139
+ }
140
+ /**
141
+ * Parse a `fieldname = models.SomeField(...)` assignment.
142
+ * Returns null if the line doesn't match a known Django field type.
143
+ */
144
+ function parseField(line) {
145
+ // Match: fieldname = models.FIELDTYPE(args) or fieldname = FIELDTYPE(args)
146
+ const m = /^\s*(\w+)\s*=\s*(?:models\.)?([A-Z][a-zA-Z]+)\s*\(([^)]*(?:\([^)]*\)[^)]*)*)\)/.exec(line);
147
+ if (!m)
148
+ return null;
149
+ const fieldName = m[1];
150
+ const djangoType = m[2];
151
+ const args = m[3];
152
+ const sqlType = DJANGO_FIELD_TO_SQL[djangoType];
153
+ if (!sqlType)
154
+ return null; // Not a known field type
155
+ // max_length
156
+ let maxLength = null;
157
+ const mlM = /\bmax_length\s*=\s*(\d+)/.exec(args);
158
+ if (mlM)
159
+ maxLength = parseInt(mlM[1], 10);
160
+ // null
161
+ let null_ = null;
162
+ const nullM = /\bnull\s*=\s*(True|False)\b/.exec(args);
163
+ if (nullM)
164
+ null_ = nullM[1] === 'True';
165
+ // blank
166
+ let blank = null;
167
+ const blankM = /\bblank\s*=\s*(True|False)\b/.exec(args);
168
+ if (blankM)
169
+ blank = blankM[1] === 'True';
170
+ // primary_key
171
+ const primaryKey = /\bprimary_key\s*=\s*True\b/.test(args);
172
+ return { fieldName, djangoType, sqlType, maxLength, null_, blank, primaryKey };
173
+ }
174
+ /**
175
+ * Parse a `fieldname = models.ForeignKey(Target, ...)` assignment.
176
+ */
177
+ function parseRelationship(line) {
178
+ const m = /^\s*(\w+)\s*=\s*(?:models\.)?(ForeignKey|ManyToManyField|OneToOneField)\s*\(([^)]*(?:\([^)]*\)[^)]*)*)\)/.exec(line);
179
+ if (!m)
180
+ return null;
181
+ const fieldName = m[1];
182
+ const djangoType = m[2];
183
+ const relKind = RELATIONSHIP_KIND[djangoType];
184
+ const args = m[3];
185
+ // First positional arg is the target model (class name or 'self' or quoted string)
186
+ const targetM = /^\s*(?:'([^']+)'|"([^"]+)"|(\w+))/.exec(args.trim());
187
+ const targetModel = targetM?.[1] ?? targetM?.[2] ?? targetM?.[3] ?? 'Unknown';
188
+ // on_delete
189
+ let onDelete = null;
190
+ const odM = /\bon_delete\s*=\s*(?:models\.)?(\w+)/.exec(args);
191
+ if (odM)
192
+ onDelete = odM[1];
193
+ return { fieldName, relKind, djangoType, targetModel, onDelete };
194
+ }
195
+ // ─── Manager parsing ──────────────────────────────────────────────────────────
196
+ /**
197
+ * Detect a custom manager assignment: `objects = SomeManager(...)`.
198
+ * We match any `name = Something(...)` where the Something ends with `Manager`
199
+ * or `QuerySet`, excluding `models.*Field` patterns already handled above.
200
+ */
201
+ function parseManager(line) {
202
+ const m = /^\s*(\w+)\s*=\s*(?:[A-Za-z_]\w*\.)*([A-Za-z_]\w*(?:Manager|QuerySet))\s*\(/.exec(line);
203
+ if (!m)
204
+ return null;
205
+ return m[1];
206
+ }
207
+ /**
208
+ * Scan lines inside a `class Meta:` inner class.
209
+ * Returns once indentation drops back to bodyIndent (model body indent).
210
+ * Returns [MetaInfo, lastConsumedIndex].
211
+ */
212
+ function parseMeta(lines, startIdx, // index of the `class Meta:` line
213
+ bodyIndent) {
214
+ const info = { dbTable: null, verboseName: null, ordering: null };
215
+ // Determine Meta body indent from the first non-blank line after class Meta:
216
+ let metaBodyIndent = bodyIndent + 4;
217
+ for (let j = startIdx + 1; j < lines.length; j++) {
218
+ const stripped = lines[j].trimStart();
219
+ if (stripped === '' || stripped.startsWith('#'))
220
+ continue;
221
+ metaBodyIndent = lines[j].length - stripped.length;
222
+ break;
223
+ }
224
+ let i = startIdx + 1;
225
+ while (i < lines.length) {
226
+ const line = lines[i];
227
+ const stripped = line.trimStart();
228
+ if (stripped === '' || stripped.startsWith('#')) {
229
+ i++;
230
+ continue;
231
+ }
232
+ const indent = line.length - stripped.length;
233
+ if (indent <= bodyIndent)
234
+ break; // Left Meta body
235
+ // db_table
236
+ const dtM = /^\s*db_table\s*=\s*['"]([^'"]+)['"]/.exec(line);
237
+ if (dtM) {
238
+ info.dbTable = dtM[1];
239
+ i++;
240
+ continue;
241
+ }
242
+ // verbose_name
243
+ const vnM = /^\s*verbose_name\s*=\s*['"]([^'"]+)['"]/.exec(line);
244
+ if (vnM) {
245
+ info.verboseName = vnM[1];
246
+ i++;
247
+ continue;
248
+ }
249
+ // ordering
250
+ const ordM = /^\s*ordering\s*=\s*(\[[^\]]*\])/.exec(line);
251
+ if (ordM) {
252
+ info.ordering = ordM[1];
253
+ i++;
254
+ continue;
255
+ }
256
+ i++;
257
+ }
258
+ return [info, i - 1];
259
+ }
260
+ // ─── Guard ────────────────────────────────────────────────────────────────────
261
+ function hasDjangoImport(sourceStr) {
262
+ return /from\s+django\b/.test(sourceStr) || /import\s+django\b/.test(sourceStr);
263
+ }
264
+ // ─── Main extraction ──────────────────────────────────────────────────────────
265
+ function extractDjangoOrmSymbols(source, filePath) {
266
+ if (!hasDjangoImport(source))
267
+ return [];
268
+ const appLabel = appLabelFromPath(filePath);
269
+ const symbols = [];
270
+ const lines = source.split('\n');
271
+ const n = lines.length;
272
+ let i = 0;
273
+ while (i < n) {
274
+ const line = lines[i];
275
+ const classM = /^(\s*)class\s+(\w+)\s*\(([^)]+)\)\s*:/.exec(line);
276
+ if (!classM || !isDjangoModel(classM[3])) {
277
+ i++;
278
+ continue;
279
+ }
280
+ const classIndent = classM[1].length;
281
+ const className = classM[2];
282
+ const basesStr = classM[3];
283
+ // Default table name: app_modelname (Django convention)
284
+ let tableName = appLabel ? `${appLabel}_${className.toLowerCase()}` : className.toLowerCase();
285
+ const classSymbol = {
286
+ id: makeId(filePath, className, 'class'),
287
+ name: className,
288
+ kind: 'class',
289
+ filePath,
290
+ startByte: 0,
291
+ endByte: 0,
292
+ signature: `class ${className}(${basesStr.trim()})`,
293
+ summary: `Django model: ${className} (table: ${tableName})`,
294
+ frameworkMeta: {
295
+ django_model: true,
296
+ table_name: tableName,
297
+ app_label: appLabel,
298
+ },
299
+ };
300
+ symbols.push(classSymbol);
301
+ i++;
302
+ while (i < n) {
303
+ const bodyLine = lines[i];
304
+ const stripped = bodyLine.trimStart();
305
+ if (stripped === '' || stripped.startsWith('#')) {
306
+ i++;
307
+ continue;
308
+ }
309
+ const currentIndent = bodyLine.length - stripped.length;
310
+ if (currentIndent <= classIndent)
311
+ break; // Left class body
312
+ // ── Inner Meta class ───────────────────────────────────────────────────
313
+ if (/^\s*class\s+Meta\s*:/.test(bodyLine)) {
314
+ const [metaInfo, lastConsumed] = parseMeta(lines, i, classIndent + 1);
315
+ if (metaInfo.dbTable) {
316
+ tableName = metaInfo.dbTable;
317
+ classSymbol.frameworkMeta['table_name'] = tableName;
318
+ classSymbol.summary = `Django model: ${className} (table: ${tableName})`;
319
+ }
320
+ if (metaInfo.verboseName) {
321
+ classSymbol.frameworkMeta['verbose_name'] = metaInfo.verboseName;
322
+ }
323
+ if (metaInfo.ordering) {
324
+ classSymbol.frameworkMeta['ordering'] = metaInfo.ordering;
325
+ }
326
+ i = lastConsumed + 1;
327
+ continue;
328
+ }
329
+ // Merge continuation lines (multi-line field definitions)
330
+ const [joined, lastConsumed] = joinContinuationLines(lines, i, classIndent);
331
+ const stmt = joined.trimStart();
332
+ // ── Relationship fields ────────────────────────────────────────────────
333
+ const rel = parseRelationship(joined);
334
+ if (rel) {
335
+ const meta = {
336
+ relationship: rel.relKind,
337
+ target_model: rel.targetModel,
338
+ };
339
+ if (rel.onDelete)
340
+ meta['on_delete'] = rel.onDelete;
341
+ symbols.push({
342
+ id: makeId(filePath, `${className}.${rel.fieldName}`, 'const'),
343
+ name: `${className}.${rel.fieldName}`,
344
+ kind: 'const',
345
+ filePath,
346
+ startByte: 0,
347
+ endByte: 0,
348
+ signature: stmt.slice(0, 120),
349
+ summary: `${rel.djangoType}: ${className}.${rel.fieldName} → ${rel.targetModel}`,
350
+ frameworkMeta: meta,
351
+ });
352
+ i = lastConsumed + 1;
353
+ continue;
354
+ }
355
+ // ── Regular field ──────────────────────────────────────────────────────
356
+ const field = parseField(joined);
357
+ if (field) {
358
+ const meta = {
359
+ field_type: field.djangoType,
360
+ column_type: field.sqlType,
361
+ };
362
+ if (field.maxLength !== null)
363
+ meta['max_length'] = field.maxLength;
364
+ if (field.null_ !== null)
365
+ meta['null'] = field.null_;
366
+ if (field.blank !== null)
367
+ meta['blank'] = field.blank;
368
+ if (field.primaryKey)
369
+ meta['primary_key'] = true;
370
+ symbols.push({
371
+ id: makeId(filePath, `${className}.${field.fieldName}`, 'const'),
372
+ name: `${className}.${field.fieldName}`,
373
+ kind: 'const',
374
+ filePath,
375
+ startByte: 0,
376
+ endByte: 0,
377
+ signature: stmt.slice(0, 120),
378
+ summary: `Field ${field.fieldName} (${field.djangoType})`,
379
+ frameworkMeta: meta,
380
+ });
381
+ i = lastConsumed + 1;
382
+ continue;
383
+ }
384
+ // ── Custom manager ─────────────────────────────────────────────────────
385
+ const managerName = parseManager(joined);
386
+ if (managerName) {
387
+ symbols.push({
388
+ id: makeId(filePath, `${className}.${managerName}`, 'const'),
389
+ name: `${className}.${managerName}`,
390
+ kind: 'const',
391
+ filePath,
392
+ startByte: 0,
393
+ endByte: 0,
394
+ signature: stmt.slice(0, 120),
395
+ summary: `Manager: ${className}.${managerName}`,
396
+ frameworkMeta: { django_manager: true },
397
+ });
398
+ i = lastConsumed + 1;
399
+ continue;
400
+ }
401
+ i = lastConsumed + 1;
402
+ }
403
+ // i already points past the class body
404
+ }
405
+ return symbols;
406
+ }
407
+ // ─── Detection helpers ────────────────────────────────────────────────────────
408
+ function detectManagePy(projectRoot) {
409
+ return existsSync(join(projectRoot, 'manage.py'));
410
+ }
411
+ function detectRequirementsTxt(projectRoot) {
412
+ try {
413
+ const content = readFileSync(join(projectRoot, 'requirements.txt'), 'utf8');
414
+ return /^\s*[Dd]jango\b/m.test(content);
415
+ }
416
+ catch {
417
+ return false;
418
+ }
419
+ }
420
+ function detectPyprojectToml(projectRoot) {
421
+ try {
422
+ const content = readFileSync(join(projectRoot, 'pyproject.toml'), 'utf8');
423
+ return /["']django\b/i.test(content);
424
+ }
425
+ catch {
426
+ return false;
427
+ }
428
+ }
429
+ // ─── Django ORM adapter ───────────────────────────────────────────────────────
430
+ export const djangoOrmAdapter = {
431
+ name: 'django-orm',
432
+ /** No new file extensions — `.py` files are handled by the Python handler. */
433
+ extensions: () => [],
434
+ // ── Detection ─────────────────────────────────────────────────────────────
435
+ async detect(projectRoot) {
436
+ return (detectManagePy(projectRoot) ||
437
+ detectRequirementsTxt(projectRoot) ||
438
+ detectPyprojectToml(projectRoot));
439
+ },
440
+ // ── File routing ───────────────────────────────────────────────────────────
441
+ /**
442
+ * Only scan model files:
443
+ * - any file named `models.py`
444
+ * - any `.py` file inside a `models/` directory
445
+ */
446
+ fileFilter: (filePath) => {
447
+ if (!filePath.endsWith('.py'))
448
+ return false;
449
+ const fp = filePath.replace(/\\/g, '/');
450
+ return basename(fp) === 'models.py' || /\/models\/[^/]+\.py$/.test(fp);
451
+ },
452
+ // ── Framework symbol extraction ────────────────────────────────────────────
453
+ extractFrameworkSymbols(_tree, source, filePath) {
454
+ return extractDjangoOrmSymbols(source.toString('utf8'), filePath);
455
+ },
456
+ // ── Metadata enrichment ────────────────────────────────────────────────────
457
+ enrichMetadata(symbol) {
458
+ return symbol;
459
+ },
460
+ };
461
+ // ─── Self-registration ────────────────────────────────────────────────────────
462
+ registerAdapter(djangoOrmAdapter);
463
+ logger.debug("Adapter 'django-orm' registered");
464
+ //# sourceMappingURL=django-orm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"django-orm.js","sourceRoot":"","sources":["../../src/adapters/django-orm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Django framework adapter.
3
+ *
4
+ * Extracts model, view, route, and signal symbols from Django applications
5
+ * using regex pattern scanning on Python source text.
6
+ *
7
+ * Patterns recognised:
8
+ * class User(models.Model): → model
9
+ * class UserListView(APIView): → view (CBV)
10
+ * @login_required / @api_view([...]) → view (FBV)
11
+ * path('/users/', ...) in urls.py → route
12
+ * @receiver(post_save, sender=User) → signal
13
+ */
14
+ import type { FrameworkAdapter } from '../core/types.js';
15
+ export declare const djangoAdapter: FrameworkAdapter;
16
+ //# sourceMappingURL=django.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"django.d.ts","sourceRoot":"","sources":["../../src/adapters/django.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,kBAAkB,CAAC;AAoO7E,eAAO,MAAM,aAAa,EAAE,gBAuD3B,CAAC"}