bluera-knowledge 0.9.21

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 (652) hide show
  1. package/.claude/commands/commit.md +37 -0
  2. package/.claude/hooks/post-edit-check.sh +41 -0
  3. package/.claude/settings.local.json.example +40 -0
  4. package/.claude/skills/atomic-commits/SKILL.md +53 -0
  5. package/.claude-plugin/plugin.json +13 -0
  6. package/.editorconfig +15 -0
  7. package/.github/workflows/auto-release.yml +59 -0
  8. package/.github/workflows/ci.yml +142 -0
  9. package/.github/workflows/release.yml +66 -0
  10. package/.github/workflows/update-marketplace.yml +96 -0
  11. package/.husky/pre-commit +47 -0
  12. package/.husky/pre-push +29 -0
  13. package/.versionrc.json +28 -0
  14. package/CHANGELOG.md +410 -0
  15. package/CLAUDE.md +109 -0
  16. package/LICENSE +21 -0
  17. package/NOTICE +47 -0
  18. package/README.md +1546 -0
  19. package/SECURITY.md +65 -0
  20. package/bun.lock +1758 -0
  21. package/commands/add-folder.md +48 -0
  22. package/commands/add-repo.md +50 -0
  23. package/commands/cancel.md +63 -0
  24. package/commands/check-status.md +78 -0
  25. package/commands/crawl.md +51 -0
  26. package/commands/index.md +48 -0
  27. package/commands/remove-store.md +52 -0
  28. package/commands/search.md +79 -0
  29. package/commands/search.sh +63 -0
  30. package/commands/stores.md +54 -0
  31. package/commands/suggest.md +82 -0
  32. package/dist/chunk-5QMHZUC4.js +3617 -0
  33. package/dist/chunk-5QMHZUC4.js.map +1 -0
  34. package/dist/chunk-BICFAWMN.js +656 -0
  35. package/dist/chunk-BICFAWMN.js.map +1 -0
  36. package/dist/chunk-J7J6LXOJ.js +958 -0
  37. package/dist/chunk-J7J6LXOJ.js.map +1 -0
  38. package/dist/chunk-L2YVNC63.js +59 -0
  39. package/dist/chunk-L2YVNC63.js.map +1 -0
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.js +1429 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/mcp/server.d.ts +15 -0
  44. package/dist/mcp/server.js +11 -0
  45. package/dist/mcp/server.js.map +1 -0
  46. package/dist/watch.service-YAIKKDCF.js +7 -0
  47. package/dist/watch.service-YAIKKDCF.js.map +1 -0
  48. package/dist/workers/background-worker-cli.d.ts +1 -0
  49. package/dist/workers/background-worker-cli.js +310 -0
  50. package/dist/workers/background-worker-cli.js.map +1 -0
  51. package/docs/plans/2024-12-17-ai-search-quality-implementation.md +752 -0
  52. package/docs/plans/2024-12-17-ai-search-quality-testing-design.md +201 -0
  53. package/docs/plans/2025-12-16-bluera-knowledge-cli.md +2951 -0
  54. package/docs/plans/2025-12-16-phase2-features.md +1518 -0
  55. package/docs/plans/2025-12-17-hil-implementation.md +926 -0
  56. package/docs/plans/2025-12-17-hil-quality-testing.md +224 -0
  57. package/docs/plans/2025-12-17-search-quality-phase1-implementation.md +1416 -0
  58. package/docs/plans/2025-12-17-search-quality-testing-v2-design.md +212 -0
  59. package/docs/plans/2025-12-28-ai-agent-optimization.md +1630 -0
  60. package/eslint-rules/require-skip-comment.js +81 -0
  61. package/eslint.config.js +61 -0
  62. package/hooks/check-dependencies.sh +110 -0
  63. package/hooks/format-search-results.py +132 -0
  64. package/hooks/hooks.json +27 -0
  65. package/hooks/job-status-hook.sh +51 -0
  66. package/knip.json +43 -0
  67. package/mcp.plugin.json +12 -0
  68. package/package.json +103 -0
  69. package/python/crawl_worker.py +275 -0
  70. package/python/requirements.txt +2 -0
  71. package/scripts/readme-version-updater.cjs +18 -0
  72. package/skills/advanced-workflows/SKILL.md +273 -0
  73. package/skills/atomic-commits/SKILL.md +77 -0
  74. package/skills/knowledge-search/SKILL.md +54 -0
  75. package/skills/search-optimization/SKILL.md +396 -0
  76. package/skills/store-lifecycle/SKILL.md +470 -0
  77. package/skills/when-to-query/SKILL.md +66 -0
  78. package/src/analysis/ast-parser.test.ts +423 -0
  79. package/src/analysis/ast-parser.ts +192 -0
  80. package/src/analysis/code-graph.test.ts +698 -0
  81. package/src/analysis/code-graph.ts +245 -0
  82. package/src/analysis/dependency-usage-analyzer.test.ts +799 -0
  83. package/src/analysis/dependency-usage-analyzer.ts +405 -0
  84. package/src/analysis/go-ast-parser.test.ts +531 -0
  85. package/src/analysis/go-ast-parser.ts +478 -0
  86. package/src/analysis/parser-factory.test.ts +132 -0
  87. package/src/analysis/parser-factory.ts +44 -0
  88. package/src/analysis/python-ast-parser.test.ts +210 -0
  89. package/src/analysis/python-ast-parser.ts +34 -0
  90. package/src/analysis/repo-url-resolver.test.ts +533 -0
  91. package/src/analysis/repo-url-resolver.ts +233 -0
  92. package/src/analysis/rust-ast-parser.test.ts +568 -0
  93. package/src/analysis/rust-ast-parser.ts +477 -0
  94. package/src/analysis/tree-sitter-parser.test.ts +297 -0
  95. package/src/analysis/tree-sitter-parser.ts +223 -0
  96. package/src/cli/commands/crawl.test.ts +942 -0
  97. package/src/cli/commands/crawl.ts +141 -0
  98. package/src/cli/commands/index-cmd.test.ts +722 -0
  99. package/src/cli/commands/index-cmd.ts +105 -0
  100. package/src/cli/commands/mcp.test.ts +218 -0
  101. package/src/cli/commands/mcp.ts +18 -0
  102. package/src/cli/commands/plugin-api.test.ts +313 -0
  103. package/src/cli/commands/plugin-api.ts +45 -0
  104. package/src/cli/commands/search.test.ts +911 -0
  105. package/src/cli/commands/search.ts +113 -0
  106. package/src/cli/commands/serve.test.ts +329 -0
  107. package/src/cli/commands/serve.ts +28 -0
  108. package/src/cli/commands/setup.test.ts +820 -0
  109. package/src/cli/commands/setup.ts +153 -0
  110. package/src/cli/commands/store.test.ts +1003 -0
  111. package/src/cli/commands/store.ts +167 -0
  112. package/src/cli/index.ts +7 -0
  113. package/src/cli/program.ts +59 -0
  114. package/src/crawl/article-converter.test.ts +604 -0
  115. package/src/crawl/article-converter.ts +98 -0
  116. package/src/crawl/bridge.test.ts +674 -0
  117. package/src/crawl/bridge.ts +236 -0
  118. package/src/crawl/claude-client.test.ts +663 -0
  119. package/src/crawl/claude-client.ts +234 -0
  120. package/src/crawl/intelligent-crawler.test.ts +931 -0
  121. package/src/crawl/intelligent-crawler.ts +428 -0
  122. package/src/crawl/markdown-utils.test.ts +703 -0
  123. package/src/crawl/markdown-utils.ts +228 -0
  124. package/src/crawl/schemas.ts +114 -0
  125. package/src/db/embeddings.test.ts +63 -0
  126. package/src/db/embeddings.ts +69 -0
  127. package/src/db/index.ts +2 -0
  128. package/src/db/lance.test.ts +390 -0
  129. package/src/db/lance.ts +164 -0
  130. package/src/defaults/repos.ts +67 -0
  131. package/src/index.ts +107 -0
  132. package/src/mcp/cache.test.ts +202 -0
  133. package/src/mcp/cache.ts +103 -0
  134. package/src/mcp/commands/index.ts +20 -0
  135. package/src/mcp/commands/job.commands.ts +54 -0
  136. package/src/mcp/commands/meta.commands.ts +54 -0
  137. package/src/mcp/commands/registry.ts +183 -0
  138. package/src/mcp/commands/store.commands.ts +75 -0
  139. package/src/mcp/handlers/execute.handler.test.ts +179 -0
  140. package/src/mcp/handlers/execute.handler.ts +24 -0
  141. package/src/mcp/handlers/index.ts +43 -0
  142. package/src/mcp/handlers/job.handler.test.ts +189 -0
  143. package/src/mcp/handlers/job.handler.ts +116 -0
  144. package/src/mcp/handlers/search.handler.test.ts +334 -0
  145. package/src/mcp/handlers/search.handler.ts +209 -0
  146. package/src/mcp/handlers/store.handler.test.ts +415 -0
  147. package/src/mcp/handlers/store.handler.ts +295 -0
  148. package/src/mcp/schemas/index.test.ts +315 -0
  149. package/src/mcp/schemas/index.ts +138 -0
  150. package/src/mcp/server.test.ts +36 -0
  151. package/src/mcp/server.ts +162 -0
  152. package/src/mcp/types.ts +41 -0
  153. package/src/plugin/commands.test.ts +789 -0
  154. package/src/plugin/commands.ts +257 -0
  155. package/src/plugin/dependency-analyzer.test.ts +380 -0
  156. package/src/plugin/dependency-analyzer.ts +147 -0
  157. package/src/plugin/git-clone.test.ts +332 -0
  158. package/src/plugin/git-clone.ts +57 -0
  159. package/src/server/app.test.ts +752 -0
  160. package/src/server/app.ts +119 -0
  161. package/src/server/index.test.ts +477 -0
  162. package/src/server/index.ts +1 -0
  163. package/src/services/chunking.service.test.ts +363 -0
  164. package/src/services/chunking.service.ts +350 -0
  165. package/src/services/code-graph.service.test.ts +304 -0
  166. package/src/services/code-graph.service.ts +302 -0
  167. package/src/services/code-unit.service.test.ts +596 -0
  168. package/src/services/code-unit.service.ts +115 -0
  169. package/src/services/config.service.test.ts +127 -0
  170. package/src/services/config.service.ts +69 -0
  171. package/src/services/index.service.test.ts +1002 -0
  172. package/src/services/index.service.ts +266 -0
  173. package/src/services/index.ts +75 -0
  174. package/src/services/job.service.test.ts +418 -0
  175. package/src/services/job.service.ts +246 -0
  176. package/src/services/project-root.service.test.ts +506 -0
  177. package/src/services/project-root.service.ts +112 -0
  178. package/src/services/search.service.test.ts +1105 -0
  179. package/src/services/search.service.ts +892 -0
  180. package/src/services/services.test.ts +38 -0
  181. package/src/services/snippet.service.test.ts +205 -0
  182. package/src/services/snippet.service.ts +166 -0
  183. package/src/services/store.service.test.ts +474 -0
  184. package/src/services/store.service.ts +225 -0
  185. package/src/services/watch.service.test.ts +553 -0
  186. package/src/services/watch.service.ts +71 -0
  187. package/src/types/brands.test.ts +45 -0
  188. package/src/types/brands.ts +32 -0
  189. package/src/types/config.ts +79 -0
  190. package/src/types/document.ts +30 -0
  191. package/src/types/index.ts +66 -0
  192. package/src/types/job.ts +46 -0
  193. package/src/types/progress.ts +9 -0
  194. package/src/types/result.test.ts +44 -0
  195. package/src/types/result.ts +41 -0
  196. package/src/types/search.ts +95 -0
  197. package/src/types/store.test.ts +69 -0
  198. package/src/types/store.ts +47 -0
  199. package/src/utils/type-guards.test.ts +346 -0
  200. package/src/utils/type-guards.ts +61 -0
  201. package/src/workers/background-worker-cli.ts +105 -0
  202. package/src/workers/background-worker.test.ts +178 -0
  203. package/src/workers/background-worker.ts +294 -0
  204. package/src/workers/spawn-worker.test.ts +128 -0
  205. package/src/workers/spawn-worker.ts +49 -0
  206. package/tests/analysis/ast-parser.test.ts +98 -0
  207. package/tests/analysis/code-graph.test.ts +60 -0
  208. package/tests/fixtures/README.md +114 -0
  209. package/tests/fixtures/code-snippets/api/error-handling.ts +267 -0
  210. package/tests/fixtures/code-snippets/api/rest-controller.ts +303 -0
  211. package/tests/fixtures/code-snippets/auth/jwt-auth.ts +213 -0
  212. package/tests/fixtures/code-snippets/auth/oauth-flow.ts +245 -0
  213. package/tests/fixtures/code-snippets/database/repository-pattern.ts +272 -0
  214. package/tests/fixtures/corpus/VERSION.md +25 -0
  215. package/tests/fixtures/corpus/articles/jwt-authentication.md +97 -0
  216. package/tests/fixtures/corpus/articles/react-hooks-patterns.md +127 -0
  217. package/tests/fixtures/corpus/articles/typescript-generics.md +111 -0
  218. package/tests/fixtures/corpus/documentation/express-middleware.md +71 -0
  219. package/tests/fixtures/corpus/documentation/express-routing.md +83 -0
  220. package/tests/fixtures/corpus/documentation/node-streams.md +78 -0
  221. package/tests/fixtures/corpus/oss-repos/express/History.md +3871 -0
  222. package/tests/fixtures/corpus/oss-repos/express/LICENSE +24 -0
  223. package/tests/fixtures/corpus/oss-repos/express/Readme.md +276 -0
  224. package/tests/fixtures/corpus/oss-repos/express/SECURITY.md +56 -0
  225. package/tests/fixtures/corpus/oss-repos/express/benchmarks/Makefile +17 -0
  226. package/tests/fixtures/corpus/oss-repos/express/benchmarks/README.md +34 -0
  227. package/tests/fixtures/corpus/oss-repos/express/benchmarks/middleware.js +20 -0
  228. package/tests/fixtures/corpus/oss-repos/express/benchmarks/run +18 -0
  229. package/tests/fixtures/corpus/oss-repos/express/examples/README.md +29 -0
  230. package/tests/fixtures/corpus/oss-repos/express/examples/auth/index.js +134 -0
  231. package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/foot.ejs +2 -0
  232. package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/head.ejs +20 -0
  233. package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/login.ejs +21 -0
  234. package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/db.js +9 -0
  235. package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/index.js +46 -0
  236. package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/users.js +19 -0
  237. package/tests/fixtures/corpus/oss-repos/express/examples/cookie-sessions/index.js +25 -0
  238. package/tests/fixtures/corpus/oss-repos/express/examples/cookies/index.js +53 -0
  239. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/CCTV/345/244/247/350/265/233/344/270/212/346/265/267/345/210/206/350/265/233/345/214/272.txt +2 -0
  240. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/amazing.txt +1 -0
  241. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/notes/groceries.txt +3 -0
  242. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/index.js +40 -0
  243. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/index.js +57 -0
  244. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/public/stylesheets/style.css +4 -0
  245. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/footer.html +2 -0
  246. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/header.html +9 -0
  247. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/users.html +10 -0
  248. package/tests/fixtures/corpus/oss-repos/express/examples/error/index.js +53 -0
  249. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/index.js +103 -0
  250. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/404.ejs +3 -0
  251. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/500.ejs +8 -0
  252. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/error_header.ejs +10 -0
  253. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/footer.ejs +2 -0
  254. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/index.ejs +20 -0
  255. package/tests/fixtures/corpus/oss-repos/express/examples/hello-world/index.js +15 -0
  256. package/tests/fixtures/corpus/oss-repos/express/examples/markdown/index.js +44 -0
  257. package/tests/fixtures/corpus/oss-repos/express/examples/markdown/views/index.md +4 -0
  258. package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v1.js +15 -0
  259. package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v2.js +15 -0
  260. package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/index.js +18 -0
  261. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/main/index.js +5 -0
  262. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/index.js +31 -0
  263. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/edit.ejs +17 -0
  264. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/show.ejs +15 -0
  265. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/index.js +41 -0
  266. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/edit.hbs +27 -0
  267. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/list.hbs +18 -0
  268. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/show.hbs +31 -0
  269. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user-pet/index.js +22 -0
  270. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/db.js +16 -0
  271. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/index.js +95 -0
  272. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/lib/boot.js +83 -0
  273. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/public/style.css +14 -0
  274. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/404.ejs +13 -0
  275. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/5xx.ejs +13 -0
  276. package/tests/fixtures/corpus/oss-repos/express/examples/online/index.js +61 -0
  277. package/tests/fixtures/corpus/oss-repos/express/examples/params/index.js +74 -0
  278. package/tests/fixtures/corpus/oss-repos/express/examples/resource/index.js +95 -0
  279. package/tests/fixtures/corpus/oss-repos/express/examples/route-map/index.js +75 -0
  280. package/tests/fixtures/corpus/oss-repos/express/examples/route-middleware/index.js +90 -0
  281. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/index.js +55 -0
  282. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/post.js +13 -0
  283. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/public/style.css +24 -0
  284. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/site.js +5 -0
  285. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/user.js +47 -0
  286. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/footer.ejs +2 -0
  287. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/header.ejs +9 -0
  288. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/index.ejs +10 -0
  289. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/posts/index.ejs +12 -0
  290. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/edit.ejs +23 -0
  291. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/index.ejs +14 -0
  292. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/view.ejs +9 -0
  293. package/tests/fixtures/corpus/oss-repos/express/examples/search/index.js +61 -0
  294. package/tests/fixtures/corpus/oss-repos/express/examples/search/public/client.js +15 -0
  295. package/tests/fixtures/corpus/oss-repos/express/examples/search/public/index.html +21 -0
  296. package/tests/fixtures/corpus/oss-repos/express/examples/session/index.js +37 -0
  297. package/tests/fixtures/corpus/oss-repos/express/examples/session/redis.js +39 -0
  298. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/index.js +43 -0
  299. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/css/style.css +3 -0
  300. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/hello.txt +1 -0
  301. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/js/app.js +1 -0
  302. package/tests/fixtures/corpus/oss-repos/express/examples/vhost/index.js +53 -0
  303. package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/github-view.js +53 -0
  304. package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/index.js +48 -0
  305. package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/index.js +155 -0
  306. package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/user.js +36 -0
  307. package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/views/index.ejs +20 -0
  308. package/tests/fixtures/corpus/oss-repos/express/examples/web-service/index.js +117 -0
  309. package/tests/fixtures/corpus/oss-repos/express/index.js +11 -0
  310. package/tests/fixtures/corpus/oss-repos/express/lib/application.js +631 -0
  311. package/tests/fixtures/corpus/oss-repos/express/lib/express.js +81 -0
  312. package/tests/fixtures/corpus/oss-repos/express/lib/request.js +514 -0
  313. package/tests/fixtures/corpus/oss-repos/express/lib/response.js +1053 -0
  314. package/tests/fixtures/corpus/oss-repos/express/lib/utils.js +271 -0
  315. package/tests/fixtures/corpus/oss-repos/express/lib/view.js +205 -0
  316. package/tests/fixtures/corpus/oss-repos/express/package.json +99 -0
  317. package/tests/fixtures/corpus/oss-repos/express/test/Route.js +274 -0
  318. package/tests/fixtures/corpus/oss-repos/express/test/Router.js +636 -0
  319. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/auth.js +117 -0
  320. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/content-negotiation.js +49 -0
  321. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookie-sessions.js +38 -0
  322. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookies.js +71 -0
  323. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/downloads.js +47 -0
  324. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/ejs.js +17 -0
  325. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error-pages.js +99 -0
  326. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error.js +29 -0
  327. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/hello-world.js +21 -0
  328. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/markdown.js +21 -0
  329. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/multi-router.js +44 -0
  330. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/mvc.js +132 -0
  331. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/params.js +44 -0
  332. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/resource.js +68 -0
  333. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-map.js +45 -0
  334. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-separation.js +97 -0
  335. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/vhost.js +46 -0
  336. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/web-service.js +105 -0
  337. package/tests/fixtures/corpus/oss-repos/express/test/app.all.js +38 -0
  338. package/tests/fixtures/corpus/oss-repos/express/test/app.engine.js +83 -0
  339. package/tests/fixtures/corpus/oss-repos/express/test/app.head.js +66 -0
  340. package/tests/fixtures/corpus/oss-repos/express/test/app.js +120 -0
  341. package/tests/fixtures/corpus/oss-repos/express/test/app.listen.js +55 -0
  342. package/tests/fixtures/corpus/oss-repos/express/test/app.locals.js +26 -0
  343. package/tests/fixtures/corpus/oss-repos/express/test/app.options.js +116 -0
  344. package/tests/fixtures/corpus/oss-repos/express/test/app.param.js +323 -0
  345. package/tests/fixtures/corpus/oss-repos/express/test/app.render.js +374 -0
  346. package/tests/fixtures/corpus/oss-repos/express/test/app.request.js +143 -0
  347. package/tests/fixtures/corpus/oss-repos/express/test/app.response.js +143 -0
  348. package/tests/fixtures/corpus/oss-repos/express/test/app.route.js +197 -0
  349. package/tests/fixtures/corpus/oss-repos/express/test/app.router.js +1217 -0
  350. package/tests/fixtures/corpus/oss-repos/express/test/app.routes.error.js +62 -0
  351. package/tests/fixtures/corpus/oss-repos/express/test/app.use.js +542 -0
  352. package/tests/fixtures/corpus/oss-repos/express/test/config.js +207 -0
  353. package/tests/fixtures/corpus/oss-repos/express/test/exports.js +82 -0
  354. package/tests/fixtures/corpus/oss-repos/express/test/express.json.js +755 -0
  355. package/tests/fixtures/corpus/oss-repos/express/test/express.raw.js +513 -0
  356. package/tests/fixtures/corpus/oss-repos/express/test/express.static.js +815 -0
  357. package/tests/fixtures/corpus/oss-repos/express/test/express.text.js +566 -0
  358. package/tests/fixtures/corpus/oss-repos/express/test/express.urlencoded.js +828 -0
  359. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/% of dogs.txt +1 -0
  360. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/.name +1 -0
  361. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/index.html +1 -0
  362. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/post/index.tmpl +1 -0
  363. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/broken.send +0 -0
  364. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/name.tmpl +1 -0
  365. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/user.tmpl +1 -0
  366. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/email.tmpl +1 -0
  367. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/empty.txt +0 -0
  368. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/local_layout/user.tmpl +1 -0
  369. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.tmpl +1 -0
  370. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.txt +1 -0
  371. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/nums.txt +1 -0
  372. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/pets/names.txt +1 -0
  373. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/snow /342/230/203/.gitkeep +0 -0
  374. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.html +1 -0
  375. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.txt +1 -0
  376. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.html +1 -0
  377. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.tmpl +1 -0
  378. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/index.html +1 -0
  379. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/tobi.txt +1 -0
  380. package/tests/fixtures/corpus/oss-repos/express/test/middleware.basic.js +42 -0
  381. package/tests/fixtures/corpus/oss-repos/express/test/regression.js +20 -0
  382. package/tests/fixtures/corpus/oss-repos/express/test/req.accepts.js +125 -0
  383. package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsCharsets.js +50 -0
  384. package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsEncodings.js +39 -0
  385. package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsLanguages.js +57 -0
  386. package/tests/fixtures/corpus/oss-repos/express/test/req.baseUrl.js +88 -0
  387. package/tests/fixtures/corpus/oss-repos/express/test/req.fresh.js +70 -0
  388. package/tests/fixtures/corpus/oss-repos/express/test/req.get.js +60 -0
  389. package/tests/fixtures/corpus/oss-repos/express/test/req.host.js +156 -0
  390. package/tests/fixtures/corpus/oss-repos/express/test/req.hostname.js +188 -0
  391. package/tests/fixtures/corpus/oss-repos/express/test/req.ip.js +113 -0
  392. package/tests/fixtures/corpus/oss-repos/express/test/req.ips.js +71 -0
  393. package/tests/fixtures/corpus/oss-repos/express/test/req.is.js +169 -0
  394. package/tests/fixtures/corpus/oss-repos/express/test/req.path.js +20 -0
  395. package/tests/fixtures/corpus/oss-repos/express/test/req.protocol.js +113 -0
  396. package/tests/fixtures/corpus/oss-repos/express/test/req.query.js +106 -0
  397. package/tests/fixtures/corpus/oss-repos/express/test/req.range.js +104 -0
  398. package/tests/fixtures/corpus/oss-repos/express/test/req.route.js +28 -0
  399. package/tests/fixtures/corpus/oss-repos/express/test/req.secure.js +101 -0
  400. package/tests/fixtures/corpus/oss-repos/express/test/req.signedCookies.js +37 -0
  401. package/tests/fixtures/corpus/oss-repos/express/test/req.stale.js +50 -0
  402. package/tests/fixtures/corpus/oss-repos/express/test/req.subdomains.js +173 -0
  403. package/tests/fixtures/corpus/oss-repos/express/test/req.xhr.js +42 -0
  404. package/tests/fixtures/corpus/oss-repos/express/test/res.append.js +116 -0
  405. package/tests/fixtures/corpus/oss-repos/express/test/res.attachment.js +79 -0
  406. package/tests/fixtures/corpus/oss-repos/express/test/res.clearCookie.js +62 -0
  407. package/tests/fixtures/corpus/oss-repos/express/test/res.cookie.js +295 -0
  408. package/tests/fixtures/corpus/oss-repos/express/test/res.download.js +487 -0
  409. package/tests/fixtures/corpus/oss-repos/express/test/res.format.js +248 -0
  410. package/tests/fixtures/corpus/oss-repos/express/test/res.get.js +21 -0
  411. package/tests/fixtures/corpus/oss-repos/express/test/res.json.js +186 -0
  412. package/tests/fixtures/corpus/oss-repos/express/test/res.jsonp.js +344 -0
  413. package/tests/fixtures/corpus/oss-repos/express/test/res.links.js +65 -0
  414. package/tests/fixtures/corpus/oss-repos/express/test/res.locals.js +40 -0
  415. package/tests/fixtures/corpus/oss-repos/express/test/res.location.js +316 -0
  416. package/tests/fixtures/corpus/oss-repos/express/test/res.redirect.js +214 -0
  417. package/tests/fixtures/corpus/oss-repos/express/test/res.render.js +367 -0
  418. package/tests/fixtures/corpus/oss-repos/express/test/res.send.js +569 -0
  419. package/tests/fixtures/corpus/oss-repos/express/test/res.sendFile.js +913 -0
  420. package/tests/fixtures/corpus/oss-repos/express/test/res.sendStatus.js +44 -0
  421. package/tests/fixtures/corpus/oss-repos/express/test/res.set.js +124 -0
  422. package/tests/fixtures/corpus/oss-repos/express/test/res.status.js +206 -0
  423. package/tests/fixtures/corpus/oss-repos/express/test/res.type.js +46 -0
  424. package/tests/fixtures/corpus/oss-repos/express/test/res.vary.js +90 -0
  425. package/tests/fixtures/corpus/oss-repos/express/test/support/env.js +3 -0
  426. package/tests/fixtures/corpus/oss-repos/express/test/support/tmpl.js +36 -0
  427. package/tests/fixtures/corpus/oss-repos/express/test/support/utils.js +86 -0
  428. package/tests/fixtures/corpus/oss-repos/express/test/utils.js +83 -0
  429. package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/Dockerfile +11 -0
  430. package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/devcontainer.json +21 -0
  431. package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/docker-compose.yml +18 -0
  432. package/tests/fixtures/corpus/oss-repos/hono/.eslintignore +1 -0
  433. package/tests/fixtures/corpus/oss-repos/hono/.eslintrc.cjs +9 -0
  434. package/tests/fixtures/corpus/oss-repos/hono/.gitpod.yml +9 -0
  435. package/tests/fixtures/corpus/oss-repos/hono/.prettierrc +9 -0
  436. package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-default.ts +15 -0
  437. package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-dom.ts +15 -0
  438. package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/setup-vitest.ts +47 -0
  439. package/tests/fixtures/corpus/oss-repos/hono/LICENSE +21 -0
  440. package/tests/fixtures/corpus/oss-repos/hono/README.md +91 -0
  441. package/tests/fixtures/corpus/oss-repos/hono/build.ts +80 -0
  442. package/tests/fixtures/corpus/oss-repos/hono/bun.lockb +0 -0
  443. package/tests/fixtures/corpus/oss-repos/hono/bunfig.toml +7 -0
  444. package/tests/fixtures/corpus/oss-repos/hono/codecov.yml +13 -0
  445. package/tests/fixtures/corpus/oss-repos/hono/docs/CODE_OF_CONDUCT.md +128 -0
  446. package/tests/fixtures/corpus/oss-repos/hono/docs/CONTRIBUTING.md +62 -0
  447. package/tests/fixtures/corpus/oss-repos/hono/docs/MIGRATION.md +295 -0
  448. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.png +0 -0
  449. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.pxm +0 -0
  450. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.svg +6 -0
  451. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.png +0 -0
  452. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.pxm +0 -0
  453. package/tests/fixtures/corpus/oss-repos/hono/jsr.json +119 -0
  454. package/tests/fixtures/corpus/oss-repos/hono/package.cjs.json +3 -0
  455. package/tests/fixtures/corpus/oss-repos/hono/package.json +650 -0
  456. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/handler.ts +492 -0
  457. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/index.ts +13 -0
  458. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/types.ts +144 -0
  459. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/conninfo.ts +28 -0
  460. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/index.ts +9 -0
  461. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/serve-static.ts +35 -0
  462. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/server.ts +30 -0
  463. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/ssg.ts +27 -0
  464. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/websocket.ts +110 -0
  465. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/handler.ts +120 -0
  466. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/index.ts +7 -0
  467. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/conninfo.ts +7 -0
  468. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/index.ts +8 -0
  469. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static-module.ts +12 -0
  470. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static.ts +39 -0
  471. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/utils.ts +50 -0
  472. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/websocket.ts +50 -0
  473. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/conninfo.ts +17 -0
  474. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/deno.d.ts +28 -0
  475. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/index.ts +9 -0
  476. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/serve-static.ts +40 -0
  477. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/ssg.ts +27 -0
  478. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/websocket.ts +51 -0
  479. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/conninfo.ts +15 -0
  480. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/handler.ts +189 -0
  481. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/index.ts +14 -0
  482. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/handler.ts +10 -0
  483. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/index.ts +6 -0
  484. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/mod.ts +1 -0
  485. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/handler.ts +34 -0
  486. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/index.ts +5 -0
  487. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/types.ts +14 -0
  488. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/conninfo.ts +8 -0
  489. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/handler.ts +9 -0
  490. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/index.ts +7 -0
  491. package/tests/fixtures/corpus/oss-repos/hono/src/client/client.ts +214 -0
  492. package/tests/fixtures/corpus/oss-repos/hono/src/client/index.ts +14 -0
  493. package/tests/fixtures/corpus/oss-repos/hono/src/client/types.ts +180 -0
  494. package/tests/fixtures/corpus/oss-repos/hono/src/client/utils.ts +54 -0
  495. package/tests/fixtures/corpus/oss-repos/hono/src/compose.ts +94 -0
  496. package/tests/fixtures/corpus/oss-repos/hono/src/context.ts +914 -0
  497. package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/accepts.ts +81 -0
  498. package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/index.ts +6 -0
  499. package/tests/fixtures/corpus/oss-repos/hono/src/helper/adapter/index.ts +85 -0
  500. package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/index.ts +6 -0
  501. package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/types.ts +45 -0
  502. package/tests/fixtures/corpus/oss-repos/hono/src/helper/cookie/index.ts +130 -0
  503. package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/common.ts +243 -0
  504. package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/index.ts +220 -0
  505. package/tests/fixtures/corpus/oss-repos/hono/src/helper/dev/index.ts +79 -0
  506. package/tests/fixtures/corpus/oss-repos/hono/src/helper/factory/index.ts +246 -0
  507. package/tests/fixtures/corpus/oss-repos/hono/src/helper/html/index.ts +56 -0
  508. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/index.ts +13 -0
  509. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/middleware.ts +79 -0
  510. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/ssg.ts +388 -0
  511. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/utils.ts +71 -0
  512. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/index.ts +9 -0
  513. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/sse.ts +89 -0
  514. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/stream.ts +36 -0
  515. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/text.ts +15 -0
  516. package/tests/fixtures/corpus/oss-repos/hono/src/helper/testing/index.ts +26 -0
  517. package/tests/fixtures/corpus/oss-repos/hono/src/helper/websocket/index.ts +57 -0
  518. package/tests/fixtures/corpus/oss-repos/hono/src/hono-base.ts +523 -0
  519. package/tests/fixtures/corpus/oss-repos/hono/src/hono.ts +34 -0
  520. package/tests/fixtures/corpus/oss-repos/hono/src/http-exception.ts +78 -0
  521. package/tests/fixtures/corpus/oss-repos/hono/src/index.ts +51 -0
  522. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/base.ts +419 -0
  523. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/children.ts +20 -0
  524. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/components.ts +195 -0
  525. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/constants.ts +5 -0
  526. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/context.ts +50 -0
  527. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/client.ts +89 -0
  528. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/components.ts +39 -0
  529. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/context.ts +52 -0
  530. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/css.ts +246 -0
  531. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/hooks/index.ts +91 -0
  532. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/index.ts +159 -0
  533. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/intrinsic-element/components.ts +398 -0
  534. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-dev-runtime.ts +22 -0
  535. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-runtime.ts +7 -0
  536. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/render.ts +772 -0
  537. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/server.ts +70 -0
  538. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/utils.ts +7 -0
  539. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/hooks/index.ts +426 -0
  540. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/index.ts +114 -0
  541. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/common.ts +11 -0
  542. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/components.ts +196 -0
  543. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-elements.ts +924 -0
  544. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-dev-runtime.ts +26 -0
  545. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-runtime.ts +18 -0
  546. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/streaming.ts +184 -0
  547. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/types.ts +41 -0
  548. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/utils.ts +36 -0
  549. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/basic-auth/index.ts +128 -0
  550. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/bearer-auth/index.ts +159 -0
  551. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/body-limit/index.ts +115 -0
  552. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cache/index.ts +127 -0
  553. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/combine/index.ts +153 -0
  554. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/compress/index.ts +79 -0
  555. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/context-storage/index.ts +55 -0
  556. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cors/index.ts +141 -0
  557. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/csrf/index.ts +90 -0
  558. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/etag/index.ts +88 -0
  559. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/ip-restriction/index.ts +178 -0
  560. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jsx-renderer/index.ts +158 -0
  561. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/index.ts +8 -0
  562. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/jwt.ts +159 -0
  563. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/logger/index.ts +93 -0
  564. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/method-override/index.ts +146 -0
  565. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/powered-by/index.ts +13 -0
  566. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/pretty-json/index.ts +50 -0
  567. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/index.ts +8 -0
  568. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/request-id.ts +59 -0
  569. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/index.ts +8 -0
  570. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/permissions-policy.ts +86 -0
  571. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/secure-headers.ts +319 -0
  572. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/serve-static/index.ts +140 -0
  573. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timeout/index.ts +58 -0
  574. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/index.ts +7 -0
  575. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/timing.ts +225 -0
  576. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/trailing-slash/index.ts +71 -0
  577. package/tests/fixtures/corpus/oss-repos/hono/src/preset/quick.ts +24 -0
  578. package/tests/fixtures/corpus/oss-repos/hono/src/preset/tiny.ts +20 -0
  579. package/tests/fixtures/corpus/oss-repos/hono/src/request.ts +403 -0
  580. package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/index.ts +6 -0
  581. package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/router.ts +132 -0
  582. package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/index.ts +6 -0
  583. package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/router.ts +54 -0
  584. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/index.ts +6 -0
  585. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/node.ts +159 -0
  586. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/router.ts +274 -0
  587. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/trie.ts +74 -0
  588. package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/index.ts +6 -0
  589. package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/router.ts +69 -0
  590. package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/index.ts +6 -0
  591. package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/node.ts +205 -0
  592. package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/router.ts +28 -0
  593. package/tests/fixtures/corpus/oss-repos/hono/src/router.ts +103 -0
  594. package/tests/fixtures/corpus/oss-repos/hono/src/types.ts +2009 -0
  595. package/tests/fixtures/corpus/oss-repos/hono/src/utils/basic-auth.ts +26 -0
  596. package/tests/fixtures/corpus/oss-repos/hono/src/utils/body.ts +225 -0
  597. package/tests/fixtures/corpus/oss-repos/hono/src/utils/buffer.ts +65 -0
  598. package/tests/fixtures/corpus/oss-repos/hono/src/utils/color.ts +26 -0
  599. package/tests/fixtures/corpus/oss-repos/hono/src/utils/concurrent.ts +55 -0
  600. package/tests/fixtures/corpus/oss-repos/hono/src/utils/cookie.ts +230 -0
  601. package/tests/fixtures/corpus/oss-repos/hono/src/utils/crypto.ts +65 -0
  602. package/tests/fixtures/corpus/oss-repos/hono/src/utils/encode.ts +34 -0
  603. package/tests/fixtures/corpus/oss-repos/hono/src/utils/filepath.ts +56 -0
  604. package/tests/fixtures/corpus/oss-repos/hono/src/utils/handler.ts +15 -0
  605. package/tests/fixtures/corpus/oss-repos/hono/src/utils/html.ts +182 -0
  606. package/tests/fixtures/corpus/oss-repos/hono/src/utils/http-status.ts +69 -0
  607. package/tests/fixtures/corpus/oss-repos/hono/src/utils/ipaddr.ts +113 -0
  608. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/index.ts +7 -0
  609. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwa.ts +23 -0
  610. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jws.ts +226 -0
  611. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwt.ts +114 -0
  612. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/types.ts +83 -0
  613. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/utf8.ts +7 -0
  614. package/tests/fixtures/corpus/oss-repos/hono/src/utils/mime.ts +142 -0
  615. package/tests/fixtures/corpus/oss-repos/hono/src/utils/stream.ts +96 -0
  616. package/tests/fixtures/corpus/oss-repos/hono/src/utils/types.ts +105 -0
  617. package/tests/fixtures/corpus/oss-repos/hono/src/utils/url.ts +310 -0
  618. package/tests/fixtures/corpus/oss-repos/hono/src/validator/index.ts +7 -0
  619. package/tests/fixtures/corpus/oss-repos/hono/src/validator/validator.ts +151 -0
  620. package/tests/fixtures/corpus/oss-repos/hono/tsconfig.build.json +23 -0
  621. package/tests/fixtures/corpus/oss-repos/hono/tsconfig.json +28 -0
  622. package/tests/fixtures/corpus/oss-repos/hono/vitest.config.ts +34 -0
  623. package/tests/fixtures/corpus/oss-repos/hono/yarn.lock +6232 -0
  624. package/tests/fixtures/documentation/api-reference.md +412 -0
  625. package/tests/fixtures/documentation/architecture.md +214 -0
  626. package/tests/fixtures/documentation/deployment-guide.md +420 -0
  627. package/tests/fixtures/github-readmes/express.md +133 -0
  628. package/tests/fixtures/github-readmes/nextjs.md +106 -0
  629. package/tests/fixtures/github-readmes/react.md +74 -0
  630. package/tests/fixtures/github-readmes/typescript.md +93 -0
  631. package/tests/fixtures/github-readmes/vite.md +79 -0
  632. package/tests/fixtures/queries/core.json +125 -0
  633. package/tests/fixtures/queries/extended.json +427 -0
  634. package/tests/fixtures/queries/generated/.gitkeep +0 -0
  635. package/tests/fixtures/test-server.ts +267 -0
  636. package/tests/helpers/performance-metrics.ts +387 -0
  637. package/tests/helpers/search-relevance.ts +381 -0
  638. package/tests/integration/cli-consistency.test.ts +299 -0
  639. package/tests/integration/cli.test.ts +69 -0
  640. package/tests/integration/e2e-workflow.test.ts +612 -0
  641. package/tests/integration/python-bridge.test.ts +183 -0
  642. package/tests/integration/search-quality.test.ts +718 -0
  643. package/tests/integration/stress.test.ts +326 -0
  644. package/tests/mcp/server.test.ts +15 -0
  645. package/tests/scripts/schemas/evaluation.json +44 -0
  646. package/tests/scripts/schemas/query-generation.json +21 -0
  647. package/tests/services/code-unit.service.test.ts +47 -0
  648. package/tests/services/search.progressive-context.test.ts +35 -0
  649. package/tsconfig.json +34 -0
  650. package/tsup.config.ts +15 -0
  651. package/turndown-plugin-gfm.d.ts +29 -0
  652. package/vitest.config.ts +79 -0
@@ -0,0 +1,275 @@
1
+ #!/usr/bin/env python3
2
+ import sys
3
+ import json
4
+ import asyncio
5
+ import os
6
+ import ast
7
+ from typing import List, Dict, Any
8
+
9
+ # Suppress crawl4ai logging before import
10
+ os.environ['CRAWL4AI_VERBOSE'] = '0'
11
+
12
+ # Redirect stderr to suppress logging (crawl4ai uses console for progress)
13
+ import io
14
+ sys.stderr = io.StringIO()
15
+
16
+ from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig
17
+
18
+ async def fetch_headless(url: str):
19
+ """Fetch URL with headless browser (Playwright via crawl4ai)"""
20
+ browser_config = BrowserConfig(headless=True, verbose=False)
21
+ run_config = CrawlerRunConfig(
22
+ wait_for="js:() => document.readyState === 'complete'",
23
+ page_timeout=30000
24
+ )
25
+
26
+ async with AsyncWebCrawler(config=browser_config, verbose=False) as crawler:
27
+ result = await crawler.arun(url, config=run_config)
28
+
29
+ if not result.success:
30
+ raise Exception(f"Crawl failed: {result.error_message}")
31
+
32
+ return {
33
+ "html": result.html or '',
34
+ "markdown": result.markdown or result.cleaned_html or '',
35
+ "links": result.links.get("internal", []) if isinstance(result.links, dict) else []
36
+ }
37
+
38
+ def is_exported(node: ast.AST) -> bool:
39
+ """Check if a function or class is exported (Python doesn't have explicit exports, check if starts with '_')"""
40
+ if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)):
41
+ return not node.name.startswith('_')
42
+ return False
43
+
44
+ def get_signature(node: ast.FunctionDef | ast.AsyncFunctionDef) -> str:
45
+ """Extract function signature from AST node"""
46
+ args_list = []
47
+
48
+ for arg in node.args.args:
49
+ arg_str = arg.arg
50
+ if arg.annotation:
51
+ arg_str += f': {ast.unparse(arg.annotation)}'
52
+ args_list.append(arg_str)
53
+
54
+ return_annotation = ''
55
+ if node.returns:
56
+ return_annotation = f' -> {ast.unparse(node.returns)}'
57
+
58
+ return f"{node.name}({', '.join(args_list)}){return_annotation}"
59
+
60
+ def extract_imports(tree: ast.AST) -> List[Dict[str, Any]]:
61
+ """Extract import statements from AST"""
62
+ imports = []
63
+
64
+ for node in ast.walk(tree):
65
+ if isinstance(node, ast.Import):
66
+ for alias in node.names:
67
+ imports.append({
68
+ 'source': alias.name,
69
+ 'imported': alias.asname if alias.asname else alias.name
70
+ })
71
+ elif isinstance(node, ast.ImportFrom):
72
+ module = node.module if node.module else ''
73
+ for alias in node.names:
74
+ imports.append({
75
+ 'source': module,
76
+ 'imported': alias.name,
77
+ 'alias': alias.asname if alias.asname else None
78
+ })
79
+
80
+ return imports
81
+
82
+ def extract_calls(node: ast.AST) -> List[str]:
83
+ """Extract function calls from a function/method body"""
84
+ calls = []
85
+
86
+ for child in ast.walk(node):
87
+ if isinstance(child, ast.Call):
88
+ if isinstance(child.func, ast.Name):
89
+ calls.append(child.func.id)
90
+ elif isinstance(child.func, ast.Attribute):
91
+ calls.append(child.func.attr)
92
+
93
+ return calls
94
+
95
+ async def parse_python_ast(code: str, file_path: str) -> Dict[str, Any]:
96
+ """Parse Python code and return CodeNode array"""
97
+ try:
98
+ tree = ast.parse(code)
99
+ nodes = []
100
+
101
+ for node in tree.body:
102
+ if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
103
+ nodes.append({
104
+ 'type': 'function',
105
+ 'name': node.name,
106
+ 'exported': is_exported(node),
107
+ 'startLine': node.lineno,
108
+ 'endLine': node.end_lineno if node.end_lineno else node.lineno,
109
+ 'async': isinstance(node, ast.AsyncFunctionDef),
110
+ 'signature': get_signature(node),
111
+ 'calls': extract_calls(node)
112
+ })
113
+
114
+ elif isinstance(node, ast.ClassDef):
115
+ methods = []
116
+ for item in node.body:
117
+ if isinstance(item, (ast.FunctionDef, ast.AsyncFunctionDef)):
118
+ methods.append({
119
+ 'name': item.name,
120
+ 'async': isinstance(item, ast.AsyncFunctionDef),
121
+ 'signature': get_signature(item),
122
+ 'startLine': item.lineno,
123
+ 'endLine': item.end_lineno if item.end_lineno else item.lineno,
124
+ 'calls': extract_calls(item)
125
+ })
126
+
127
+ nodes.append({
128
+ 'type': 'class',
129
+ 'name': node.name,
130
+ 'exported': is_exported(node),
131
+ 'startLine': node.lineno,
132
+ 'endLine': node.end_lineno if node.end_lineno else node.lineno,
133
+ 'methods': methods
134
+ })
135
+
136
+ imports = extract_imports(tree)
137
+
138
+ return {
139
+ 'nodes': nodes,
140
+ 'imports': imports
141
+ }
142
+
143
+ except SyntaxError as e:
144
+ raise Exception(f"Python syntax error at line {e.lineno}: {e.msg}")
145
+ except Exception as e:
146
+ raise Exception(f"Failed to parse Python AST: {str(e)}")
147
+
148
+ async def process_request(crawler, request):
149
+ """Process a single crawl request"""
150
+ try:
151
+ params = request.get('params', {})
152
+ url = params.get('url')
153
+
154
+ if not url:
155
+ raise ValueError('URL parameter is required')
156
+
157
+ # Perform async crawl
158
+ result = await crawler.arun(url=url)
159
+
160
+ if not result.success:
161
+ raise Exception(f"Crawl failed: {result.error_message}")
162
+
163
+ # Extract title from metadata (crawl4ai 0.7.8 stores title in metadata dict)
164
+ title = ''
165
+ if result.metadata and isinstance(result.metadata, dict):
166
+ title = result.metadata.get('title', '')
167
+
168
+ # Get markdown content (crawl4ai 0.7.8)
169
+ markdown = result.markdown or result.cleaned_html or ''
170
+
171
+ # Extract links - crawl4ai 0.7.8 returns dict with 'internal' and 'external' keys
172
+ # Each link is an object with href, text, title, etc. - extract just href strings
173
+ all_links = []
174
+ if isinstance(result.links, dict):
175
+ internal = result.links.get('internal', [])
176
+ external = result.links.get('external', [])
177
+ # Extract href from link objects (crawl4ai 0.7.8 returns objects, not strings)
178
+ for link in internal + external:
179
+ if isinstance(link, dict):
180
+ all_links.append(link.get('href', ''))
181
+ elif isinstance(link, str):
182
+ all_links.append(link)
183
+
184
+ response = {
185
+ 'jsonrpc': '2.0',
186
+ 'id': request.get('id'),
187
+ 'result': {
188
+ 'pages': [{
189
+ 'url': url,
190
+ 'title': title,
191
+ 'content': markdown,
192
+ 'html': result.html or '',
193
+ 'links': all_links,
194
+ 'crawledAt': '', # crawl4ai 0.7.8 doesn't provide timestamp
195
+ }]
196
+ }
197
+ }
198
+ print(json.dumps(response), flush=True)
199
+ except Exception as e:
200
+ error_response = {
201
+ 'jsonrpc': '2.0',
202
+ 'id': request.get('id') if isinstance(request, dict) else None,
203
+ 'error': {'code': -1, 'message': str(e)}
204
+ }
205
+ print(json.dumps(error_response), flush=True)
206
+
207
+ async def main():
208
+ """Main async loop processing stdin requests"""
209
+ # Disable verbose logging in crawl4ai
210
+ async with AsyncWebCrawler(verbose=False) as crawler:
211
+ for line in sys.stdin:
212
+ try:
213
+ request = json.loads(line.strip())
214
+ method = request.get('method')
215
+
216
+ if method == 'crawl':
217
+ await process_request(crawler, request)
218
+ elif method == 'fetch_headless':
219
+ # Handle headless fetch request
220
+ try:
221
+ params = request.get('params', {})
222
+ url = params.get('url')
223
+ if not url:
224
+ raise ValueError('URL parameter is required')
225
+
226
+ result = await fetch_headless(url)
227
+ response = {
228
+ 'jsonrpc': '2.0',
229
+ 'id': request.get('id'),
230
+ 'result': result
231
+ }
232
+ print(json.dumps(response), flush=True)
233
+ except Exception as e:
234
+ error_response = {
235
+ 'jsonrpc': '2.0',
236
+ 'id': request.get('id'),
237
+ 'error': {'code': -1, 'message': str(e)}
238
+ }
239
+ print(json.dumps(error_response), flush=True)
240
+
241
+ elif method == 'parse_python':
242
+ # Handle Python AST parsing request
243
+ try:
244
+ params = request.get('params', {})
245
+ code = params.get('code')
246
+ file_path = params.get('filePath', '<unknown>')
247
+
248
+ if not code:
249
+ raise ValueError('code parameter is required')
250
+
251
+ result = await parse_python_ast(code, file_path)
252
+ response = {
253
+ 'jsonrpc': '2.0',
254
+ 'id': request.get('id'),
255
+ 'result': result
256
+ }
257
+ print(json.dumps(response), flush=True)
258
+ except Exception as e:
259
+ error_response = {
260
+ 'jsonrpc': '2.0',
261
+ 'id': request.get('id'),
262
+ 'error': {'code': -1, 'message': str(e)}
263
+ }
264
+ print(json.dumps(error_response), flush=True)
265
+
266
+ except Exception as e:
267
+ error_response = {
268
+ 'jsonrpc': '2.0',
269
+ 'id': request.get('id') if isinstance(request, dict) else None,
270
+ 'error': {'code': -1, 'message': str(e)}
271
+ }
272
+ print(json.dumps(error_response), flush=True)
273
+
274
+ if __name__ == '__main__':
275
+ asyncio.run(main())
@@ -0,0 +1,2 @@
1
+ crawl4ai==0.7.8
2
+ playwright>=1.40.0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Custom updater for commit-and-tag-version to update README.md version badge
3
+ */
4
+
5
+ const { version } = require('../package.json');
6
+
7
+ const versionRegex = /!\[Version\]\(https:\/\/img\.shields\.io\/badge\/version-[\d.]+(-[\w.]+)?-blue\)/;
8
+
9
+ module.exports.readVersion = function () {
10
+ return version;
11
+ };
12
+
13
+ module.exports.writeVersion = function (contents, version) {
14
+ return contents.replace(
15
+ versionRegex,
16
+ `![Version](https://img.shields.io/badge/version-${version}-blue)`
17
+ );
18
+ };
@@ -0,0 +1,273 @@
1
+ ---
2
+ name: advanced-workflows
3
+ description: Multi-tool orchestration patterns for complex Bluera Knowledge operations. Teaches progressive library exploration, adding libraries with job monitoring, handling large result sets, multi-store searches, and error recovery workflows.
4
+ ---
5
+
6
+ # Advanced Bluera Knowledge Workflows
7
+
8
+ Master complex multi-tool operations that combine multiple MCP tools for efficient knowledge retrieval and management.
9
+
10
+ ## Progressive Library Exploration
11
+
12
+ When exploring a new library or codebase, use this pattern for efficient discovery:
13
+
14
+ ### Workflow: Find Relevant Code in Unknown Library
15
+
16
+ ```
17
+ 1. list_stores()
18
+ → See what's indexed, identify target store
19
+
20
+ 2. get_store_info(store)
21
+ → Get metadata: file paths, size, indexed files
22
+ → Understand scope before searching
23
+
24
+ 3. search(query, detail='minimal', stores=[target])
25
+ → Get high-level summaries of relevant code
26
+ → Review relevance scores (>0.7 = good match)
27
+
28
+ 4. get_full_context(result_ids[top_3])
29
+ → Deep dive on most relevant results only
30
+ → Get complete code with full context
31
+ ```
32
+
33
+ **Example:**
34
+
35
+ User: "How does Vue's computed properties work?"
36
+
37
+ ```
38
+ list_stores()
39
+ → Found: vue, react, pydantic
40
+
41
+ get_store_info('vue')
42
+ → Path: .bluera/bluera-knowledge/repos/vue/
43
+ → Files: 2,847 indexed
44
+
45
+ search("computed properties", intent='find-implementation', detail='minimal', stores=['vue'])
46
+ → Result 1: packages/reactivity/src/computed.ts (score: 0.92)
47
+ → Result 2: packages/reactivity/__tests__/computed.spec.ts (score: 0.85)
48
+ → Result 3: packages/runtime-core/src/apiComputed.ts (score: 0.78)
49
+
50
+ get_full_context(['result_1_id', 'result_2_id'])
51
+ → Full code for ComputedRefImpl class
52
+ → Complete API implementation
53
+
54
+ Now explain with authoritative source code.
55
+ ```
56
+
57
+ ## Adding New Library with Job Monitoring
58
+
59
+ When adding large libraries, monitor indexing progress to know when search is ready:
60
+
61
+ ### Workflow: Add Library and Wait for Index
62
+
63
+ ```
64
+ 1. create_store(url_or_path, name)
65
+ → Returns: job_id
66
+ → Background indexing starts
67
+
68
+ 2. check_job_status(job_id)
69
+ → Poll every 10-30 seconds
70
+ → Status: 'pending' | 'running' | 'completed' | 'failed'
71
+ → Progress: percentage, current file
72
+
73
+ 3. When status='completed':
74
+ list_stores()
75
+ → Verify store appears in list
76
+
77
+ 4. search(query, stores=[new_store], limit=5)
78
+ → Test search works
79
+ → Verify indexing quality
80
+ ```
81
+
82
+ **Example:**
83
+
84
+ ```
85
+ create_store('https://github.com/fastapi/fastapi', 'fastapi')
86
+ → job_id: 'job_abc123'
87
+ → Status: Indexing started in background
88
+
89
+ # Poll for completion (typically 30-120 seconds for medium repos)
90
+ check_job_status('job_abc123')
91
+ → Status: running
92
+ → Progress: 45% (processing src/fastapi/routing.py)
93
+
94
+ # ... wait 30 seconds ...
95
+
96
+ check_job_status('job_abc123')
97
+ → Status: completed
98
+ → Indexed: 487 files, 125k lines
99
+
100
+ # Verify and test
101
+ list_stores()
102
+ → fastapi: 487 files, vector + FTS indexed
103
+
104
+ search("dependency injection", stores=['fastapi'], limit=3)
105
+ → Returns relevant FastAPI DI patterns
106
+ → Store is ready for use!
107
+ ```
108
+
109
+ ## Handling Large Result Sets
110
+
111
+ When initial search returns many results, use progressive detail to avoid context overload:
112
+
113
+ ### Workflow: Progressive Detail Strategy
114
+
115
+ ```
116
+ 1. search(query, detail='minimal', limit=20)
117
+ → Get summaries only (~100 tokens/result)
118
+ → Review all 20 summaries quickly
119
+
120
+ 2. Filter by relevance score:
121
+ - Score > 0.8: Excellent match
122
+ - Score 0.6-0.8: Good match
123
+ - Score < 0.6: Possibly irrelevant
124
+
125
+ 3. For top 3-5 results (score > 0.7):
126
+ get_full_context(selected_ids)
127
+ → Fetch complete code only for relevant items
128
+ → Saves ~80% context vs fetching all upfront
129
+
130
+ 4. If nothing relevant:
131
+ search(refined_query, detail='contextual', limit=10)
132
+ → Try different query with more context
133
+ → Or broaden/narrow the search
134
+ ```
135
+
136
+ **Example:**
137
+
138
+ ```
139
+ # Initial broad search
140
+ search("authentication middleware", detail='minimal', limit=20)
141
+ → 20 results, scores ranging 0.45-0.92
142
+ → Total context: ~2k tokens (minimal)
143
+
144
+ # Filter by score
145
+ Top results (>0.7):
146
+ - Result 3: auth/jwt.ts (score: 0.92)
147
+ - Result 7: middleware/authenticate.ts (score: 0.85)
148
+ - Result 12: auth/session.ts (score: 0.74)
149
+
150
+ # Get full code for top 3 only
151
+ get_full_context(['result_3', 'result_7', 'result_12'])
152
+ → Complete implementations for relevant files only
153
+ → Context: ~3k tokens (vs ~15k if we fetched all 20)
154
+
155
+ # Found what we needed! If not, would refine query and retry.
156
+ ```
157
+
158
+ ## Multi-Store Search with Ranking
159
+
160
+ When searching across multiple stores, use ranking to prioritize results:
161
+
162
+ ### Workflow: Cross-Library Search
163
+
164
+ ```
165
+ 1. search(query, limit=10)
166
+ → Searches ALL stores
167
+ → Returns mixed results ranked by relevance
168
+
169
+ 2. Review store distribution:
170
+ - If dominated by one store: might narrow to specific stores
171
+ - If balanced: good cross-library perspective
172
+
173
+ 3. For specific library focus:
174
+ search(query, stores=['lib1', 'lib2'], limit=15)
175
+ → Search only relevant libraries
176
+ → Get more results from target libraries
177
+ ```
178
+
179
+ **Example:**
180
+
181
+ User: "How do different frameworks handle routing?"
182
+
183
+ ```
184
+ # Search all indexed frameworks
185
+ search("routing implementation", intent='find-implementation', limit=15)
186
+ → Result mix:
187
+ - express (score: 0.91)
188
+ - fastapi (score: 0.89)
189
+ - hono (score: 0.87)
190
+ - vue-router (score: 0.82)
191
+ - ...
192
+
193
+ # All stores represented, good comparative view!
194
+
195
+ # If user wants deeper FastAPI focus:
196
+ search("routing implementation", stores=['fastapi', 'starlette'], limit=20)
197
+ → More FastAPI/Starlette-specific results
198
+ → Deeper exploration of Python framework routing
199
+ ```
200
+
201
+ ## Error Recovery
202
+
203
+ When operations fail, use these recovery patterns:
204
+
205
+ ### Workflow: Handle Indexing Failures
206
+
207
+ ```
208
+ 1. create_store() fails or job_status shows 'failed'
209
+ → Check error message
210
+ → Common issues:
211
+ - Git auth required (private repo)
212
+ - Invalid URL/path
213
+ - Disk space
214
+ - Network timeout
215
+
216
+ 2. Recovery actions:
217
+ - Auth issue: Provide credentials or use HTTPS
218
+ - Invalid path: Verify URL/path exists
219
+ - Disk space: delete_store() unused stores
220
+ - Network: Retry with smaller repo or use --shallow
221
+
222
+ 3. Verify recovery:
223
+ list_stores() → Check store appeared
224
+ search(test_query, stores=[new_store]) → Verify searchable
225
+ ```
226
+
227
+ **Example:**
228
+
229
+ ```
230
+ create_store('https://github.com/private/repo', 'my-repo')
231
+ → job_id: 'job_xyz'
232
+
233
+ check_job_status('job_xyz')
234
+ → Status: failed
235
+ → Error: "Authentication required for private repository"
236
+
237
+ # Recovery: Use authenticated URL or SSH
238
+ create_store('git@github.com:private/repo.git', 'my-repo')
239
+ → job_id: 'job_xyz2'
240
+
241
+ check_job_status('job_xyz2')
242
+ → Status: completed
243
+ → Success!
244
+ ```
245
+
246
+ ## Combining Workflows
247
+
248
+ Real-world usage often combines these patterns:
249
+
250
+ ```
251
+ User: "I need to understand how Express and Hono handle middleware differently"
252
+
253
+ 1. list_stores() → check if both indexed
254
+ 2. If not: create_store() for missing framework(s)
255
+ 3. check_job_status() → wait for indexing
256
+ 4. search("middleware implementation", stores=['express', 'hono'], detail='minimal')
257
+ 5. Review summaries, identify key files
258
+ 6. get_full_context() for 2-3 most relevant from each framework
259
+ 7. Compare implementations with full context
260
+ ```
261
+
262
+ This multi-step workflow is efficient, targeted, and conserves context.
263
+
264
+ ## Best Practices
265
+
266
+ 1. **Always start with detail='minimal'** - Get summaries first, full context selectively
267
+ 2. **Monitor background jobs** - Don't search newly added stores until indexing completes
268
+ 3. **Use intent parameter** - Helps ranking ('find-implementation' vs 'find-pattern' vs 'find-usage')
269
+ 4. **Filter by stores when known** - Faster, more focused results
270
+ 5. **Check relevance scores** - >0.7 is usually a strong match, <0.5 might be noise
271
+ 6. **Progressive refinement** - Broad search → filter → narrow → full context
272
+
273
+ These workflows reduce token usage, minimize tool calls, and get you to the right answer faster.
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: atomic-commits
3
+ description: Methodology for creating atomic git commits grouped by logical features. Use when committing changes, organizing commits, or deciding how to group changes into commits.
4
+ ---
5
+
6
+ # Atomic Commit Methodology
7
+
8
+ ## Grouping Rules
9
+
10
+ **Group together:**
11
+ - Feature code + its documentation
12
+ - Feature code + its tests
13
+ - Feature code + its configuration
14
+ - API changes + API documentation
15
+
16
+ **Keep separate:**
17
+ - Unrelated features
18
+ - Independent bug fixes
19
+ - Standalone doc improvements
20
+ - Pure refactoring
21
+
22
+ ## Commit Message Format
23
+
24
+ ```
25
+ <type>(<scope>): <description>
26
+
27
+ [optional body explaining why]
28
+ ```
29
+
30
+ **Types:** `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, `perf`
31
+
32
+ ## Workflow
33
+
34
+ ### 1. Analyze
35
+ ```bash
36
+ git diff HEAD # All changes
37
+ git diff --cached # Staged only
38
+ git ls-files --others --exclude-standard # Untracked
39
+ ```
40
+
41
+ ### 2. Evaluate README Impact
42
+ **STOP and evaluate each row - does this change warrant README updates?**
43
+
44
+ | Category | Question | If YES, update |
45
+ |----------|----------|----------------|
46
+ | Features | New CLI command, Skill, MCP tool, or capability? | Features/Commands section |
47
+ | Setup | Changed install steps, settings, or data paths? | Setup/Installation section |
48
+ | Scripts | New/changed npm scripts? | package.json scripts table |
49
+ | Behavior | Changed how existing features work? | Relevant feature section |
50
+ | Deps | New package or common error scenario? | Technologies/Troubleshooting |
51
+
52
+ **If any YES**: Update the README appropriately and include it in this commit (feature + docs = atomic unit)
53
+
54
+ ### 3. Group by Feature
55
+ Each commit = one complete, testable change.
56
+
57
+ ### 4. Commit Each Group
58
+ ```bash
59
+ git add <files> # Stage related files
60
+ bun run precommit # Validate (already quiet)
61
+ # If fails: fix issues, re-stage, re-validate
62
+ git commit -m "..." # Commit when valid
63
+ ```
64
+
65
+ ### 5. Handle Untracked Files
66
+ - **Should commit**: Add to appropriate commit
67
+ - **Should ignore**: Suggest `.gitignore` (ask first)
68
+ - **Intentional**: Document why untracked
69
+
70
+ Goal: Clean `git status` after commits
71
+
72
+ ## Safety
73
+
74
+ - Never force push
75
+ - Never amend commits from other sessions
76
+ - Ask if unsure about grouping
77
+ - Always report final `git status`
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: knowledge-search
3
+ description: Teaches how to use Bluera Knowledge for accessing library sources and reference material. Explains two approaches - vector search via MCP/slash commands for discovery, or direct Grep/Read access to cloned repos for precision. Shows when to use each method and example workflows for querying library internals.
4
+ ---
5
+
6
+ # Using Bluera Knowledge (BK)
7
+
8
+ BK provides access to **definitive library sources** for your project dependencies.
9
+
10
+ ## Purpose: Authoritative References, Not Project Search
11
+
12
+ **CKB is for**: Reference material and external sources
13
+ - **Library sources**: Clone Vue.js/Pydantic/Hono for authoritative API reference
14
+ - **Specifications**: Add project requirements, API specs, RFCs
15
+ - **Documentation**: Add design docs, architecture guides, research papers
16
+ - **Reference material**: Best practices, coding standards, examples
17
+
18
+ **CKB is NOT for**: Searching your current project code
19
+ - Use Grep/Read directly on project files
20
+ - BK stores are for external reference material
21
+
22
+ ## Two Ways to Access Library Sources
23
+
24
+ ### 1. Vector Search (MCP or slash command)
25
+ Find concepts and patterns across library docs:
26
+ ```
27
+ search("vue reactivity system")
28
+ /bluera-knowledge:search "pydantic custom validators"
29
+ ```
30
+
31
+ ### 2. Direct File Access (Grep/Read)
32
+ Precise lookups in cloned library source:
33
+ ```
34
+ Grep: pattern="defineReactive" path=".bluera/bluera-knowledge/repos/vue/"
35
+ Read: .bluera/bluera-knowledge/repos/pydantic/pydantic/validators.py
36
+ ```
37
+
38
+ ## Both Are Valid!
39
+
40
+ You can use **either or both** approaches on the same cloned repo:
41
+ - Vector search to discover relevant files
42
+ - Grep/Read to find specific functions/classes
43
+ - Or just Grep/Read if you know what you're looking for
44
+
45
+ ## Example Workflow
46
+
47
+ User: "How does Vue's computed properties work internally?"
48
+
49
+ Claude:
50
+ 1. Check stores: `list_stores` MCP tool → vue store exists
51
+ 2. Vector search: `search("vue computed properties")` → finds computed.ts
52
+ 3. Read file: `.bluera/bluera-knowledge/repos/vue/packages/reactivity/src/computed.ts`
53
+ 4. Grep for implementation: pattern="class ComputedRefImpl"
54
+ 5. Explain with authoritative source code examples