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.
- package/.claude/commands/commit.md +37 -0
- package/.claude/hooks/post-edit-check.sh +41 -0
- package/.claude/settings.local.json.example +40 -0
- package/.claude/skills/atomic-commits/SKILL.md +53 -0
- package/.claude-plugin/plugin.json +13 -0
- package/.editorconfig +15 -0
- package/.github/workflows/auto-release.yml +59 -0
- package/.github/workflows/ci.yml +142 -0
- package/.github/workflows/release.yml +66 -0
- package/.github/workflows/update-marketplace.yml +96 -0
- package/.husky/pre-commit +47 -0
- package/.husky/pre-push +29 -0
- package/.versionrc.json +28 -0
- package/CHANGELOG.md +410 -0
- package/CLAUDE.md +109 -0
- package/LICENSE +21 -0
- package/NOTICE +47 -0
- package/README.md +1546 -0
- package/SECURITY.md +65 -0
- package/bun.lock +1758 -0
- package/commands/add-folder.md +48 -0
- package/commands/add-repo.md +50 -0
- package/commands/cancel.md +63 -0
- package/commands/check-status.md +78 -0
- package/commands/crawl.md +51 -0
- package/commands/index.md +48 -0
- package/commands/remove-store.md +52 -0
- package/commands/search.md +79 -0
- package/commands/search.sh +63 -0
- package/commands/stores.md +54 -0
- package/commands/suggest.md +82 -0
- package/dist/chunk-5QMHZUC4.js +3617 -0
- package/dist/chunk-5QMHZUC4.js.map +1 -0
- package/dist/chunk-BICFAWMN.js +656 -0
- package/dist/chunk-BICFAWMN.js.map +1 -0
- package/dist/chunk-J7J6LXOJ.js +958 -0
- package/dist/chunk-J7J6LXOJ.js.map +1 -0
- package/dist/chunk-L2YVNC63.js +59 -0
- package/dist/chunk-L2YVNC63.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1429 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +15 -0
- package/dist/mcp/server.js +11 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/watch.service-YAIKKDCF.js +7 -0
- package/dist/watch.service-YAIKKDCF.js.map +1 -0
- package/dist/workers/background-worker-cli.d.ts +1 -0
- package/dist/workers/background-worker-cli.js +310 -0
- package/dist/workers/background-worker-cli.js.map +1 -0
- package/docs/plans/2024-12-17-ai-search-quality-implementation.md +752 -0
- package/docs/plans/2024-12-17-ai-search-quality-testing-design.md +201 -0
- package/docs/plans/2025-12-16-bluera-knowledge-cli.md +2951 -0
- package/docs/plans/2025-12-16-phase2-features.md +1518 -0
- package/docs/plans/2025-12-17-hil-implementation.md +926 -0
- package/docs/plans/2025-12-17-hil-quality-testing.md +224 -0
- package/docs/plans/2025-12-17-search-quality-phase1-implementation.md +1416 -0
- package/docs/plans/2025-12-17-search-quality-testing-v2-design.md +212 -0
- package/docs/plans/2025-12-28-ai-agent-optimization.md +1630 -0
- package/eslint-rules/require-skip-comment.js +81 -0
- package/eslint.config.js +61 -0
- package/hooks/check-dependencies.sh +110 -0
- package/hooks/format-search-results.py +132 -0
- package/hooks/hooks.json +27 -0
- package/hooks/job-status-hook.sh +51 -0
- package/knip.json +43 -0
- package/mcp.plugin.json +12 -0
- package/package.json +103 -0
- package/python/crawl_worker.py +275 -0
- package/python/requirements.txt +2 -0
- package/scripts/readme-version-updater.cjs +18 -0
- package/skills/advanced-workflows/SKILL.md +273 -0
- package/skills/atomic-commits/SKILL.md +77 -0
- package/skills/knowledge-search/SKILL.md +54 -0
- package/skills/search-optimization/SKILL.md +396 -0
- package/skills/store-lifecycle/SKILL.md +470 -0
- package/skills/when-to-query/SKILL.md +66 -0
- package/src/analysis/ast-parser.test.ts +423 -0
- package/src/analysis/ast-parser.ts +192 -0
- package/src/analysis/code-graph.test.ts +698 -0
- package/src/analysis/code-graph.ts +245 -0
- package/src/analysis/dependency-usage-analyzer.test.ts +799 -0
- package/src/analysis/dependency-usage-analyzer.ts +405 -0
- package/src/analysis/go-ast-parser.test.ts +531 -0
- package/src/analysis/go-ast-parser.ts +478 -0
- package/src/analysis/parser-factory.test.ts +132 -0
- package/src/analysis/parser-factory.ts +44 -0
- package/src/analysis/python-ast-parser.test.ts +210 -0
- package/src/analysis/python-ast-parser.ts +34 -0
- package/src/analysis/repo-url-resolver.test.ts +533 -0
- package/src/analysis/repo-url-resolver.ts +233 -0
- package/src/analysis/rust-ast-parser.test.ts +568 -0
- package/src/analysis/rust-ast-parser.ts +477 -0
- package/src/analysis/tree-sitter-parser.test.ts +297 -0
- package/src/analysis/tree-sitter-parser.ts +223 -0
- package/src/cli/commands/crawl.test.ts +942 -0
- package/src/cli/commands/crawl.ts +141 -0
- package/src/cli/commands/index-cmd.test.ts +722 -0
- package/src/cli/commands/index-cmd.ts +105 -0
- package/src/cli/commands/mcp.test.ts +218 -0
- package/src/cli/commands/mcp.ts +18 -0
- package/src/cli/commands/plugin-api.test.ts +313 -0
- package/src/cli/commands/plugin-api.ts +45 -0
- package/src/cli/commands/search.test.ts +911 -0
- package/src/cli/commands/search.ts +113 -0
- package/src/cli/commands/serve.test.ts +329 -0
- package/src/cli/commands/serve.ts +28 -0
- package/src/cli/commands/setup.test.ts +820 -0
- package/src/cli/commands/setup.ts +153 -0
- package/src/cli/commands/store.test.ts +1003 -0
- package/src/cli/commands/store.ts +167 -0
- package/src/cli/index.ts +7 -0
- package/src/cli/program.ts +59 -0
- package/src/crawl/article-converter.test.ts +604 -0
- package/src/crawl/article-converter.ts +98 -0
- package/src/crawl/bridge.test.ts +674 -0
- package/src/crawl/bridge.ts +236 -0
- package/src/crawl/claude-client.test.ts +663 -0
- package/src/crawl/claude-client.ts +234 -0
- package/src/crawl/intelligent-crawler.test.ts +931 -0
- package/src/crawl/intelligent-crawler.ts +428 -0
- package/src/crawl/markdown-utils.test.ts +703 -0
- package/src/crawl/markdown-utils.ts +228 -0
- package/src/crawl/schemas.ts +114 -0
- package/src/db/embeddings.test.ts +63 -0
- package/src/db/embeddings.ts +69 -0
- package/src/db/index.ts +2 -0
- package/src/db/lance.test.ts +390 -0
- package/src/db/lance.ts +164 -0
- package/src/defaults/repos.ts +67 -0
- package/src/index.ts +107 -0
- package/src/mcp/cache.test.ts +202 -0
- package/src/mcp/cache.ts +103 -0
- package/src/mcp/commands/index.ts +20 -0
- package/src/mcp/commands/job.commands.ts +54 -0
- package/src/mcp/commands/meta.commands.ts +54 -0
- package/src/mcp/commands/registry.ts +183 -0
- package/src/mcp/commands/store.commands.ts +75 -0
- package/src/mcp/handlers/execute.handler.test.ts +179 -0
- package/src/mcp/handlers/execute.handler.ts +24 -0
- package/src/mcp/handlers/index.ts +43 -0
- package/src/mcp/handlers/job.handler.test.ts +189 -0
- package/src/mcp/handlers/job.handler.ts +116 -0
- package/src/mcp/handlers/search.handler.test.ts +334 -0
- package/src/mcp/handlers/search.handler.ts +209 -0
- package/src/mcp/handlers/store.handler.test.ts +415 -0
- package/src/mcp/handlers/store.handler.ts +295 -0
- package/src/mcp/schemas/index.test.ts +315 -0
- package/src/mcp/schemas/index.ts +138 -0
- package/src/mcp/server.test.ts +36 -0
- package/src/mcp/server.ts +162 -0
- package/src/mcp/types.ts +41 -0
- package/src/plugin/commands.test.ts +789 -0
- package/src/plugin/commands.ts +257 -0
- package/src/plugin/dependency-analyzer.test.ts +380 -0
- package/src/plugin/dependency-analyzer.ts +147 -0
- package/src/plugin/git-clone.test.ts +332 -0
- package/src/plugin/git-clone.ts +57 -0
- package/src/server/app.test.ts +752 -0
- package/src/server/app.ts +119 -0
- package/src/server/index.test.ts +477 -0
- package/src/server/index.ts +1 -0
- package/src/services/chunking.service.test.ts +363 -0
- package/src/services/chunking.service.ts +350 -0
- package/src/services/code-graph.service.test.ts +304 -0
- package/src/services/code-graph.service.ts +302 -0
- package/src/services/code-unit.service.test.ts +596 -0
- package/src/services/code-unit.service.ts +115 -0
- package/src/services/config.service.test.ts +127 -0
- package/src/services/config.service.ts +69 -0
- package/src/services/index.service.test.ts +1002 -0
- package/src/services/index.service.ts +266 -0
- package/src/services/index.ts +75 -0
- package/src/services/job.service.test.ts +418 -0
- package/src/services/job.service.ts +246 -0
- package/src/services/project-root.service.test.ts +506 -0
- package/src/services/project-root.service.ts +112 -0
- package/src/services/search.service.test.ts +1105 -0
- package/src/services/search.service.ts +892 -0
- package/src/services/services.test.ts +38 -0
- package/src/services/snippet.service.test.ts +205 -0
- package/src/services/snippet.service.ts +166 -0
- package/src/services/store.service.test.ts +474 -0
- package/src/services/store.service.ts +225 -0
- package/src/services/watch.service.test.ts +553 -0
- package/src/services/watch.service.ts +71 -0
- package/src/types/brands.test.ts +45 -0
- package/src/types/brands.ts +32 -0
- package/src/types/config.ts +79 -0
- package/src/types/document.ts +30 -0
- package/src/types/index.ts +66 -0
- package/src/types/job.ts +46 -0
- package/src/types/progress.ts +9 -0
- package/src/types/result.test.ts +44 -0
- package/src/types/result.ts +41 -0
- package/src/types/search.ts +95 -0
- package/src/types/store.test.ts +69 -0
- package/src/types/store.ts +47 -0
- package/src/utils/type-guards.test.ts +346 -0
- package/src/utils/type-guards.ts +61 -0
- package/src/workers/background-worker-cli.ts +105 -0
- package/src/workers/background-worker.test.ts +178 -0
- package/src/workers/background-worker.ts +294 -0
- package/src/workers/spawn-worker.test.ts +128 -0
- package/src/workers/spawn-worker.ts +49 -0
- package/tests/analysis/ast-parser.test.ts +98 -0
- package/tests/analysis/code-graph.test.ts +60 -0
- package/tests/fixtures/README.md +114 -0
- package/tests/fixtures/code-snippets/api/error-handling.ts +267 -0
- package/tests/fixtures/code-snippets/api/rest-controller.ts +303 -0
- package/tests/fixtures/code-snippets/auth/jwt-auth.ts +213 -0
- package/tests/fixtures/code-snippets/auth/oauth-flow.ts +245 -0
- package/tests/fixtures/code-snippets/database/repository-pattern.ts +272 -0
- package/tests/fixtures/corpus/VERSION.md +25 -0
- package/tests/fixtures/corpus/articles/jwt-authentication.md +97 -0
- package/tests/fixtures/corpus/articles/react-hooks-patterns.md +127 -0
- package/tests/fixtures/corpus/articles/typescript-generics.md +111 -0
- package/tests/fixtures/corpus/documentation/express-middleware.md +71 -0
- package/tests/fixtures/corpus/documentation/express-routing.md +83 -0
- package/tests/fixtures/corpus/documentation/node-streams.md +78 -0
- package/tests/fixtures/corpus/oss-repos/express/History.md +3871 -0
- package/tests/fixtures/corpus/oss-repos/express/LICENSE +24 -0
- package/tests/fixtures/corpus/oss-repos/express/Readme.md +276 -0
- package/tests/fixtures/corpus/oss-repos/express/SECURITY.md +56 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/Makefile +17 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/README.md +34 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/middleware.js +20 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/run +18 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/README.md +29 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/index.js +134 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/foot.ejs +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/head.ejs +20 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/login.ejs +21 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/db.js +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/index.js +46 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/users.js +19 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/cookie-sessions/index.js +25 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/cookies/index.js +53 -0
- 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
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/amazing.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/notes/groceries.txt +3 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/index.js +40 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/index.js +57 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/public/stylesheets/style.css +4 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/footer.html +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/header.html +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/users.html +10 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error/index.js +53 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/index.js +103 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/404.ejs +3 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/500.ejs +8 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/error_header.ejs +10 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/footer.ejs +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/index.ejs +20 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/hello-world/index.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/markdown/index.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/markdown/views/index.md +4 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v1.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v2.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/index.js +18 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/main/index.js +5 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/index.js +31 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/edit.ejs +17 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/show.ejs +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/index.js +41 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/edit.hbs +27 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/list.hbs +18 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/show.hbs +31 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user-pet/index.js +22 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/db.js +16 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/index.js +95 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/lib/boot.js +83 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/public/style.css +14 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/404.ejs +13 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/5xx.ejs +13 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/online/index.js +61 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/params/index.js +74 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/resource/index.js +95 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-map/index.js +75 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-middleware/index.js +90 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/index.js +55 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/post.js +13 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/public/style.css +24 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/site.js +5 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/user.js +47 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/footer.ejs +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/header.ejs +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/index.ejs +10 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/posts/index.ejs +12 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/edit.ejs +23 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/index.ejs +14 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/view.ejs +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/search/index.js +61 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/search/public/client.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/search/public/index.html +21 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/session/index.js +37 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/session/redis.js +39 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/index.js +43 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/css/style.css +3 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/hello.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/js/app.js +1 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/vhost/index.js +53 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/github-view.js +53 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/index.js +48 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/index.js +155 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/user.js +36 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/views/index.ejs +20 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/web-service/index.js +117 -0
- package/tests/fixtures/corpus/oss-repos/express/index.js +11 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/application.js +631 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/express.js +81 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/request.js +514 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/response.js +1053 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/utils.js +271 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/view.js +205 -0
- package/tests/fixtures/corpus/oss-repos/express/package.json +99 -0
- package/tests/fixtures/corpus/oss-repos/express/test/Route.js +274 -0
- package/tests/fixtures/corpus/oss-repos/express/test/Router.js +636 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/auth.js +117 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/content-negotiation.js +49 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookie-sessions.js +38 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookies.js +71 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/downloads.js +47 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/ejs.js +17 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error-pages.js +99 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error.js +29 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/hello-world.js +21 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/markdown.js +21 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/multi-router.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/mvc.js +132 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/params.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/resource.js +68 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-map.js +45 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-separation.js +97 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/vhost.js +46 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/web-service.js +105 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.all.js +38 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.engine.js +83 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.head.js +66 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.js +120 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.listen.js +55 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.locals.js +26 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.options.js +116 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.param.js +323 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.render.js +374 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.request.js +143 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.response.js +143 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.route.js +197 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.router.js +1217 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.routes.error.js +62 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.use.js +542 -0
- package/tests/fixtures/corpus/oss-repos/express/test/config.js +207 -0
- package/tests/fixtures/corpus/oss-repos/express/test/exports.js +82 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.json.js +755 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.raw.js +513 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.static.js +815 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.text.js +566 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.urlencoded.js +828 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/% of dogs.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/.name +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/index.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/post/index.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/broken.send +0 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/name.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/user.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/email.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/empty.txt +0 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/local_layout/user.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/nums.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/pets/names.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/snow /342/230/203/.gitkeep +0 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/index.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/tobi.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/middleware.basic.js +42 -0
- package/tests/fixtures/corpus/oss-repos/express/test/regression.js +20 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.accepts.js +125 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsCharsets.js +50 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsEncodings.js +39 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsLanguages.js +57 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.baseUrl.js +88 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.fresh.js +70 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.get.js +60 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.host.js +156 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.hostname.js +188 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.ip.js +113 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.ips.js +71 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.is.js +169 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.path.js +20 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.protocol.js +113 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.query.js +106 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.range.js +104 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.route.js +28 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.secure.js +101 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.signedCookies.js +37 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.stale.js +50 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.subdomains.js +173 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.xhr.js +42 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.append.js +116 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.attachment.js +79 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.clearCookie.js +62 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.cookie.js +295 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.download.js +487 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.format.js +248 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.get.js +21 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.json.js +186 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.jsonp.js +344 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.links.js +65 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.locals.js +40 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.location.js +316 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.redirect.js +214 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.render.js +367 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.send.js +569 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.sendFile.js +913 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.sendStatus.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.set.js +124 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.status.js +206 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.type.js +46 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.vary.js +90 -0
- package/tests/fixtures/corpus/oss-repos/express/test/support/env.js +3 -0
- package/tests/fixtures/corpus/oss-repos/express/test/support/tmpl.js +36 -0
- package/tests/fixtures/corpus/oss-repos/express/test/support/utils.js +86 -0
- package/tests/fixtures/corpus/oss-repos/express/test/utils.js +83 -0
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/Dockerfile +11 -0
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/devcontainer.json +21 -0
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/docker-compose.yml +18 -0
- package/tests/fixtures/corpus/oss-repos/hono/.eslintignore +1 -0
- package/tests/fixtures/corpus/oss-repos/hono/.eslintrc.cjs +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/.gitpod.yml +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/.prettierrc +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-default.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-dom.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/setup-vitest.ts +47 -0
- package/tests/fixtures/corpus/oss-repos/hono/LICENSE +21 -0
- package/tests/fixtures/corpus/oss-repos/hono/README.md +91 -0
- package/tests/fixtures/corpus/oss-repos/hono/build.ts +80 -0
- package/tests/fixtures/corpus/oss-repos/hono/bun.lockb +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/bunfig.toml +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/codecov.yml +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/CODE_OF_CONDUCT.md +128 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/CONTRIBUTING.md +62 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/MIGRATION.md +295 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.png +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.pxm +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.svg +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.png +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.pxm +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/jsr.json +119 -0
- package/tests/fixtures/corpus/oss-repos/hono/package.cjs.json +3 -0
- package/tests/fixtures/corpus/oss-repos/hono/package.json +650 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/handler.ts +492 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/index.ts +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/types.ts +144 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/conninfo.ts +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/index.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/serve-static.ts +35 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/server.ts +30 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/ssg.ts +27 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/websocket.ts +110 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/handler.ts +120 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/conninfo.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static-module.ts +12 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static.ts +39 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/utils.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/websocket.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/conninfo.ts +17 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/deno.d.ts +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/index.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/serve-static.ts +40 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/ssg.ts +27 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/websocket.ts +51 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/conninfo.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/handler.ts +189 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/index.ts +14 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/handler.ts +10 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/mod.ts +1 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/handler.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/index.ts +5 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/types.ts +14 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/conninfo.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/handler.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/client.ts +214 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/index.ts +14 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/types.ts +180 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/utils.ts +54 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/compose.ts +94 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/context.ts +914 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/accepts.ts +81 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/adapter/index.ts +85 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/types.ts +45 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/cookie/index.ts +130 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/common.ts +243 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/index.ts +220 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/dev/index.ts +79 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/factory/index.ts +246 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/html/index.ts +56 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/index.ts +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/middleware.ts +79 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/ssg.ts +388 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/utils.ts +71 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/index.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/sse.ts +89 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/stream.ts +36 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/text.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/testing/index.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/websocket/index.ts +57 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/hono-base.ts +523 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/hono.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/http-exception.ts +78 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/index.ts +51 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/base.ts +419 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/children.ts +20 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/components.ts +195 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/constants.ts +5 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/context.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/client.ts +89 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/components.ts +39 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/context.ts +52 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/css.ts +246 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/hooks/index.ts +91 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/index.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/intrinsic-element/components.ts +398 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-dev-runtime.ts +22 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-runtime.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/render.ts +772 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/server.ts +70 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/utils.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/hooks/index.ts +426 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/index.ts +114 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/common.ts +11 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/components.ts +196 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-elements.ts +924 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-dev-runtime.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-runtime.ts +18 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/streaming.ts +184 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/types.ts +41 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/utils.ts +36 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/basic-auth/index.ts +128 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/bearer-auth/index.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/body-limit/index.ts +115 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cache/index.ts +127 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/combine/index.ts +153 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/compress/index.ts +79 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/context-storage/index.ts +55 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cors/index.ts +141 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/csrf/index.ts +90 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/etag/index.ts +88 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/ip-restriction/index.ts +178 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jsx-renderer/index.ts +158 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/jwt.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/logger/index.ts +93 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/method-override/index.ts +146 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/powered-by/index.ts +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/pretty-json/index.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/request-id.ts +59 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/permissions-policy.ts +86 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/secure-headers.ts +319 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/serve-static/index.ts +140 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timeout/index.ts +58 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/timing.ts +225 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/trailing-slash/index.ts +71 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/preset/quick.ts +24 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/preset/tiny.ts +20 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/request.ts +403 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/router.ts +132 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/router.ts +54 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/node.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/router.ts +274 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/trie.ts +74 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/router.ts +69 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/node.ts +205 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/router.ts +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router.ts +103 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/types.ts +2009 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/basic-auth.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/body.ts +225 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/buffer.ts +65 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/color.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/concurrent.ts +55 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/cookie.ts +230 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/crypto.ts +65 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/encode.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/filepath.ts +56 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/handler.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/html.ts +182 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/http-status.ts +69 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/ipaddr.ts +113 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwa.ts +23 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jws.ts +226 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwt.ts +114 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/types.ts +83 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/utf8.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/mime.ts +142 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/stream.ts +96 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/types.ts +105 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/url.ts +310 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/validator/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/validator/validator.ts +151 -0
- package/tests/fixtures/corpus/oss-repos/hono/tsconfig.build.json +23 -0
- package/tests/fixtures/corpus/oss-repos/hono/tsconfig.json +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/vitest.config.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/yarn.lock +6232 -0
- package/tests/fixtures/documentation/api-reference.md +412 -0
- package/tests/fixtures/documentation/architecture.md +214 -0
- package/tests/fixtures/documentation/deployment-guide.md +420 -0
- package/tests/fixtures/github-readmes/express.md +133 -0
- package/tests/fixtures/github-readmes/nextjs.md +106 -0
- package/tests/fixtures/github-readmes/react.md +74 -0
- package/tests/fixtures/github-readmes/typescript.md +93 -0
- package/tests/fixtures/github-readmes/vite.md +79 -0
- package/tests/fixtures/queries/core.json +125 -0
- package/tests/fixtures/queries/extended.json +427 -0
- package/tests/fixtures/queries/generated/.gitkeep +0 -0
- package/tests/fixtures/test-server.ts +267 -0
- package/tests/helpers/performance-metrics.ts +387 -0
- package/tests/helpers/search-relevance.ts +381 -0
- package/tests/integration/cli-consistency.test.ts +299 -0
- package/tests/integration/cli.test.ts +69 -0
- package/tests/integration/e2e-workflow.test.ts +612 -0
- package/tests/integration/python-bridge.test.ts +183 -0
- package/tests/integration/search-quality.test.ts +718 -0
- package/tests/integration/stress.test.ts +326 -0
- package/tests/mcp/server.test.ts +15 -0
- package/tests/scripts/schemas/evaluation.json +44 -0
- package/tests/scripts/schemas/query-generation.json +21 -0
- package/tests/services/code-unit.service.test.ts +47 -0
- package/tests/services/search.progressive-context.test.ts +35 -0
- package/tsconfig.json +34 -0
- package/tsup.config.ts +15 -0
- package/turndown-plugin-gfm.d.ts +29 -0
- 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,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
|
+
``
|
|
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
|