@oscharko-dev/keiko 0.2.0-beta.8 → 0.2.0-beta.9
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/dist/ui/csp-hashes.json +14 -14
- package/dist/ui/static/404.html +1 -1
- package/dist/ui/static/__next.__PAGE__.txt +2 -2
- package/dist/ui/static/__next._full.txt +3 -3
- package/dist/ui/static/__next._head.txt +1 -1
- package/dist/ui/static/__next._index.txt +2 -2
- package/dist/ui/static/__next._tree.txt +2 -2
- package/dist/ui/static/_next/static/chunks/06-q1ntr51v8r.js +1 -0
- package/dist/ui/static/_next/static/chunks/0y9qlvrxsyign.js +109 -0
- package/dist/ui/static/_next/static/chunks/1h0v66-p9cx19.css +1 -0
- package/dist/ui/static/_next/static/chunks/3ewv4mguqzooj.js +1 -0
- package/dist/ui/static/_not-found/__next._full.txt +2 -2
- package/dist/ui/static/_not-found/__next._head.txt +1 -1
- package/dist/ui/static/_not-found/__next._index.txt +2 -2
- package/dist/ui/static/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/ui/static/_not-found/__next._not-found.txt +1 -1
- package/dist/ui/static/_not-found/__next._tree.txt +2 -2
- package/dist/ui/static/_not-found.html +1 -1
- package/dist/ui/static/_not-found.txt +2 -2
- package/dist/ui/static/index.html +1 -1
- package/dist/ui/static/index.txt +3 -3
- package/dist/ui/static/launch/__next._full.txt +3 -3
- package/dist/ui/static/launch/__next._head.txt +1 -1
- package/dist/ui/static/launch/__next._index.txt +2 -2
- package/dist/ui/static/launch/__next._tree.txt +2 -2
- package/dist/ui/static/launch/__next.launch.__PAGE__.txt +2 -2
- package/dist/ui/static/launch/__next.launch.txt +1 -1
- package/dist/ui/static/launch.html +1 -1
- package/dist/ui/static/launch.txt +3 -3
- package/dist/ui/static/local-knowledge/__next._full.txt +3 -3
- package/dist/ui/static/local-knowledge/__next._head.txt +1 -1
- package/dist/ui/static/local-knowledge/__next._index.txt +2 -2
- package/dist/ui/static/local-knowledge/__next._tree.txt +2 -2
- package/dist/ui/static/local-knowledge/__next.local-knowledge.__PAGE__.txt +2 -2
- package/dist/ui/static/local-knowledge/__next.local-knowledge.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next._full.txt +3 -3
- package/dist/ui/static/local-knowledge/capsule/__next._head.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next._index.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next._tree.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.__PAGE__.txt +2 -2
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.capsule.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule/__next.local-knowledge.txt +1 -1
- package/dist/ui/static/local-knowledge/capsule.html +1 -1
- package/dist/ui/static/local-knowledge/capsule.txt +3 -3
- package/dist/ui/static/local-knowledge.html +1 -1
- package/dist/ui/static/local-knowledge.txt +3 -3
- package/dist/ui/static/memoriaviva/__next._full.txt +2 -2
- package/dist/ui/static/memoriaviva/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/__next.memoriaviva.__PAGE__.txt +1 -1
- package/dist/ui/static/memoriaviva/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next._full.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.__PAGE__.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.consolidation.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/consolidation.html +1 -1
- package/dist/ui/static/memoriaviva/consolidation.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next._full.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/detail/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.__PAGE__.txt +1 -1
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.detail.txt +1 -1
- package/dist/ui/static/memoriaviva/detail/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/detail.html +1 -1
- package/dist/ui/static/memoriaviva/detail.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next._full.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next._head.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue/__next._index.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next._tree.txt +2 -2
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.__PAGE__.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.review-queue.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue/__next.memoriaviva.txt +1 -1
- package/dist/ui/static/memoriaviva/review-queue.html +1 -1
- package/dist/ui/static/memoriaviva/review-queue.txt +2 -2
- package/dist/ui/static/memoriaviva.html +1 -1
- package/dist/ui/static/memoriaviva.txt +2 -2
- package/node_modules/@oscharko-dev/keiko-cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-cli/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts +36 -4
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/bffWire.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-contracts/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-evaluations/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts +15 -0
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/schema.js +13 -3
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts +8 -0
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/figmaSnapshot/store.js +30 -2
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts +2 -2
- package/node_modules/@oscharko-dev/keiko-evidence/dist/qualityIntelligence/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-evidence/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-harness/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-harness/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-local-knowledge/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-capture/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-consolidation/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-governance/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-retrieval/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-memory-vault/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-model-gateway/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts +8 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/figma/screenIrTestBaseline.js +9 -5
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts +6 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testDesignModel.js +116 -21
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testQualityRubric.d.ts +6 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testQualityRubric.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/testQualityRubric.js +12 -0
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/domain/validation.js +8 -7
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/parseGeneratedCandidates.js +29 -7
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/generation/prompt.js +61 -24
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/dist/index.js +1 -1
- package/node_modules/@oscharko-dev/keiko-quality-intelligence/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-sdk/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-sdk/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-security/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-security/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/conversation-prompt.js +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/gateway-setup.js +30 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-orchestrator.js +410 -18
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-prompt.js +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-hybrid.js +7 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa-multi-source.js +4 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/grounded-qa.js +4 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/local-knowledge-grounded-qa.js +8 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaConnector.js +9 -4
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts +6 -5
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaScopedPagination.js +10 -9
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts +2 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotBuilder.js +62 -26
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotHash.js +6 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts +14 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figma/figmaSnapshotTypes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts +18 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotRoutes.js +159 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotScreenIds.d.ts +19 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotScreenIds.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/figmaSnapshotScreenIds.js +75 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/judgePort.js +13 -12
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts +6 -6
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/modelSelection.js +12 -7
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/reCheckRoutes.js +34 -3
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts +4 -2
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runIngestion.js +222 -35
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts +7 -0
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/qualityIntelligence/runRoutes.js +68 -16
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-server/dist/routes.js +6 -1
- package/node_modules/@oscharko-dev/keiko-server/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-tools/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-verification/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-verification/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/anchors.js +45 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/index.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/index.js +1 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/intent.d.ts +8 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/intent.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/intent.js +140 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts +2 -0
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/planner/plan.js +21 -5
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/qualityIntelligence/modelRoutedTestDesign.js +86 -40
- package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workflows/dist/ranking/rank.js +9 -0
- package/node_modules/@oscharko-dev/keiko-workflows/package.json +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/.tsbuildinfo +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/index.d.ts +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/index.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts +3 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearch.js +23 -6
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchMatchers.js +24 -3
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchPolicy.d.ts +34 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchPolicy.d.ts.map +1 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchPolicy.js +342 -0
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts +6 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.d.ts.map +1 -1
- package/node_modules/@oscharko-dev/keiko-workspace/dist/repoSearchScan.js +57 -9
- package/node_modules/@oscharko-dev/keiko-workspace/package.json +1 -1
- package/package.json +1 -1
- package/dist/ui/static/_next/static/chunks/0i3jzgrj42so8.css +0 -1
- package/dist/ui/static/_next/static/chunks/1ru_021szp0u7.js +0 -1
- package/dist/ui/static/_next/static/chunks/1t7vb5d9ed2e7.js +0 -1
- package/dist/ui/static/_next/static/chunks/23o2c6pyjq92z.js +0 -109
- /package/dist/ui/static/_next/static/{Ppze_8n_i3yc1FS_Qdj0I → a5sUbXeTgQ9A2LRTMu_Q_}/_buildManifest.js +0 -0
- /package/dist/ui/static/_next/static/{Ppze_8n_i3yc1FS_Qdj0I → a5sUbXeTgQ9A2LRTMu_Q_}/_clientMiddlewareManifest.js +0 -0
- /package/dist/ui/static/_next/static/{Ppze_8n_i3yc1FS_Qdj0I → a5sUbXeTgQ9A2LRTMu_Q_}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
const METADATA_FILENAMES = new Set([
|
|
2
|
+
"package.json",
|
|
3
|
+
"tsconfig.json",
|
|
4
|
+
"tsconfig.base.json",
|
|
5
|
+
"tsconfig.build.json",
|
|
6
|
+
"vite.config.ts",
|
|
7
|
+
"vite.config.js",
|
|
8
|
+
"vitest.config.ts",
|
|
9
|
+
"vitest.config.js",
|
|
10
|
+
"jest.config.ts",
|
|
11
|
+
"jest.config.js",
|
|
12
|
+
"playwright.config.ts",
|
|
13
|
+
"playwright.config.js",
|
|
14
|
+
"next.config.ts",
|
|
15
|
+
"next.config.js",
|
|
16
|
+
"eslint.config.ts",
|
|
17
|
+
"eslint.config.js",
|
|
18
|
+
]);
|
|
19
|
+
const OVERVIEW_FILENAMES = new Set([
|
|
20
|
+
"readme.md",
|
|
21
|
+
"agents.md",
|
|
22
|
+
"contributing.md",
|
|
23
|
+
"architecture.md",
|
|
24
|
+
"docs/architecture.md",
|
|
25
|
+
"docs/overview.md",
|
|
26
|
+
"docs/readme.md",
|
|
27
|
+
]);
|
|
28
|
+
const LOCKFILE_FILENAMES = new Set([
|
|
29
|
+
"bun.lock",
|
|
30
|
+
"bun.lockb",
|
|
31
|
+
"cargo.lock",
|
|
32
|
+
"composer.lock",
|
|
33
|
+
"gemfile.lock",
|
|
34
|
+
"package-lock.json",
|
|
35
|
+
"pnpm-lock.yaml",
|
|
36
|
+
"yarn.lock",
|
|
37
|
+
]);
|
|
38
|
+
const LOW_VALUE_SEGMENTS = new Set([
|
|
39
|
+
".parcel-cache",
|
|
40
|
+
".svelte-kit",
|
|
41
|
+
".vercel",
|
|
42
|
+
"coverage",
|
|
43
|
+
"dist",
|
|
44
|
+
"generated",
|
|
45
|
+
"storybook-static",
|
|
46
|
+
"tmp",
|
|
47
|
+
]);
|
|
48
|
+
const LOW_VALUE_IGNORE_LINES = Object.freeze([
|
|
49
|
+
".parcel-cache/",
|
|
50
|
+
".svelte-kit/",
|
|
51
|
+
".vercel/",
|
|
52
|
+
"coverage/",
|
|
53
|
+
"dist/",
|
|
54
|
+
"generated/",
|
|
55
|
+
"storybook-static/",
|
|
56
|
+
"tmp/",
|
|
57
|
+
"bun.lock",
|
|
58
|
+
"bun.lockb",
|
|
59
|
+
"cargo.lock",
|
|
60
|
+
"composer.lock",
|
|
61
|
+
"Gemfile.lock",
|
|
62
|
+
"package-lock.json",
|
|
63
|
+
"pnpm-lock.yaml",
|
|
64
|
+
"yarn.lock",
|
|
65
|
+
]);
|
|
66
|
+
const SOURCE_EXTENSIONS = new Set([
|
|
67
|
+
"cjs",
|
|
68
|
+
"cts",
|
|
69
|
+
"go",
|
|
70
|
+
"java",
|
|
71
|
+
"js",
|
|
72
|
+
"jsx",
|
|
73
|
+
"mjs",
|
|
74
|
+
"mts",
|
|
75
|
+
"py",
|
|
76
|
+
"rs",
|
|
77
|
+
"ts",
|
|
78
|
+
"tsx",
|
|
79
|
+
"vue",
|
|
80
|
+
]);
|
|
81
|
+
const DOC_EXTENSIONS = new Set(["adoc", "md", "mdx", "rst", "txt"]);
|
|
82
|
+
const TEST_FILE_RE = /(?:^|[./_-])(?:test|spec|fixture|mock)s?(?:[./_-]|$)/iu;
|
|
83
|
+
// Identifier tokens with a SINGLE greedy quantifier — no two overlapping `[A-Za-z0-9_$]*` runs
|
|
84
|
+
// around `[A-Z]`, which is a polynomial-ReDoS shape on uncontrolled query text (CodeQL). The
|
|
85
|
+
// camelCase test (an uppercase at position >= 1) is applied separately as a constant-width probe.
|
|
86
|
+
const IDENTIFIER_TOKEN_RE = /\b[A-Za-z_$][A-Za-z0-9_$]*\b/gu;
|
|
87
|
+
const HAS_INNER_UPPERCASE_RE = /[A-Za-z0-9_$][A-Z]/u;
|
|
88
|
+
const TOKEN_RE = /[A-Za-z0-9_.-]{3,}/gu;
|
|
89
|
+
function emptyBucketCounts() {
|
|
90
|
+
return {
|
|
91
|
+
"canonical-metadata": 0,
|
|
92
|
+
"overview-doc": 0,
|
|
93
|
+
"exact-path": 0,
|
|
94
|
+
"symbol-source": 0,
|
|
95
|
+
source: 0,
|
|
96
|
+
test: 0,
|
|
97
|
+
docs: 0,
|
|
98
|
+
lockfile: 0,
|
|
99
|
+
"low-value": 0,
|
|
100
|
+
other: 0,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function basename(scopePath) {
|
|
104
|
+
const index = scopePath.lastIndexOf("/");
|
|
105
|
+
return index >= 0 ? scopePath.slice(index + 1) : scopePath;
|
|
106
|
+
}
|
|
107
|
+
function extension(scopePath) {
|
|
108
|
+
const name = basename(scopePath).toLowerCase();
|
|
109
|
+
const dot = name.lastIndexOf(".");
|
|
110
|
+
return dot < 0 ? "" : name.slice(dot + 1);
|
|
111
|
+
}
|
|
112
|
+
function normalizedPath(scopePath) {
|
|
113
|
+
return scopePath.split("\\").join("/").toLowerCase();
|
|
114
|
+
}
|
|
115
|
+
function pathSegments(scopePath) {
|
|
116
|
+
return normalizedPath(scopePath)
|
|
117
|
+
.split("/")
|
|
118
|
+
.filter((segment) => segment.length > 0);
|
|
119
|
+
}
|
|
120
|
+
function isLockfile(scopePath) {
|
|
121
|
+
return LOCKFILE_FILENAMES.has(basename(scopePath).toLowerCase());
|
|
122
|
+
}
|
|
123
|
+
function hasLowValueSegment(scopePath) {
|
|
124
|
+
return pathSegments(scopePath).some((segment) => LOW_VALUE_SEGMENTS.has(segment));
|
|
125
|
+
}
|
|
126
|
+
function normalizedQueryTerms(query) {
|
|
127
|
+
const terms = new Set();
|
|
128
|
+
for (const match of query.text.matchAll(TOKEN_RE)) {
|
|
129
|
+
terms.add(match[0].toLowerCase());
|
|
130
|
+
}
|
|
131
|
+
for (const match of query.text.matchAll(IDENTIFIER_TOKEN_RE)) {
|
|
132
|
+
if (HAS_INNER_UPPERCASE_RE.test(match[0])) {
|
|
133
|
+
terms.add(match[0].toLowerCase());
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return [...terms];
|
|
137
|
+
}
|
|
138
|
+
function bucketByPath(scopePath) {
|
|
139
|
+
const path = normalizedPath(scopePath);
|
|
140
|
+
const name = basename(path);
|
|
141
|
+
const ext = extension(path);
|
|
142
|
+
if (METADATA_FILENAMES.has(name)) {
|
|
143
|
+
return "canonical-metadata";
|
|
144
|
+
}
|
|
145
|
+
if (OVERVIEW_FILENAMES.has(path) || OVERVIEW_FILENAMES.has(name)) {
|
|
146
|
+
return "overview-doc";
|
|
147
|
+
}
|
|
148
|
+
if (isLockfile(path)) {
|
|
149
|
+
return "lockfile";
|
|
150
|
+
}
|
|
151
|
+
if (hasLowValueSegment(path)) {
|
|
152
|
+
return "low-value";
|
|
153
|
+
}
|
|
154
|
+
if (TEST_FILE_RE.test(path)) {
|
|
155
|
+
return "test";
|
|
156
|
+
}
|
|
157
|
+
if (SOURCE_EXTENSIONS.has(ext)) {
|
|
158
|
+
return "source";
|
|
159
|
+
}
|
|
160
|
+
if (DOC_EXTENSIONS.has(ext)) {
|
|
161
|
+
return "docs";
|
|
162
|
+
}
|
|
163
|
+
return "other";
|
|
164
|
+
}
|
|
165
|
+
function bucketScore(bucket, intent) {
|
|
166
|
+
if (intent === "project-metadata") {
|
|
167
|
+
return metadataBucketScore(bucket);
|
|
168
|
+
}
|
|
169
|
+
if (intent === "repository-overview") {
|
|
170
|
+
return overviewBucketScore(bucket);
|
|
171
|
+
}
|
|
172
|
+
if (intent === "targeted-code-search" || intent === "diagnostic-search") {
|
|
173
|
+
return targetedBucketScore(bucket);
|
|
174
|
+
}
|
|
175
|
+
return genericBucketScore(bucket);
|
|
176
|
+
}
|
|
177
|
+
function metadataBucketScore(bucket) {
|
|
178
|
+
const scores = {
|
|
179
|
+
"canonical-metadata": 100,
|
|
180
|
+
"overview-doc": 70,
|
|
181
|
+
"exact-path": 95,
|
|
182
|
+
"symbol-source": 80,
|
|
183
|
+
source: 45,
|
|
184
|
+
test: 40,
|
|
185
|
+
docs: 55,
|
|
186
|
+
lockfile: 15,
|
|
187
|
+
"low-value": 5,
|
|
188
|
+
other: 20,
|
|
189
|
+
};
|
|
190
|
+
return scores[bucket];
|
|
191
|
+
}
|
|
192
|
+
function overviewBucketScore(bucket) {
|
|
193
|
+
const scores = {
|
|
194
|
+
"canonical-metadata": 75,
|
|
195
|
+
"overview-doc": 100,
|
|
196
|
+
"exact-path": 95,
|
|
197
|
+
"symbol-source": 80,
|
|
198
|
+
source: 50,
|
|
199
|
+
test: 35,
|
|
200
|
+
docs: 70,
|
|
201
|
+
lockfile: 5,
|
|
202
|
+
"low-value": 5,
|
|
203
|
+
other: 20,
|
|
204
|
+
};
|
|
205
|
+
return scores[bucket];
|
|
206
|
+
}
|
|
207
|
+
function targetedBucketScore(bucket) {
|
|
208
|
+
const scores = {
|
|
209
|
+
"canonical-metadata": 65,
|
|
210
|
+
"overview-doc": 35,
|
|
211
|
+
"exact-path": 100,
|
|
212
|
+
"symbol-source": 95,
|
|
213
|
+
source: 80,
|
|
214
|
+
test: 55,
|
|
215
|
+
docs: 25,
|
|
216
|
+
lockfile: 5,
|
|
217
|
+
"low-value": 5,
|
|
218
|
+
other: 20,
|
|
219
|
+
};
|
|
220
|
+
return scores[bucket];
|
|
221
|
+
}
|
|
222
|
+
function genericBucketScore(bucket) {
|
|
223
|
+
const scores = {
|
|
224
|
+
"canonical-metadata": 80,
|
|
225
|
+
"overview-doc": 65,
|
|
226
|
+
"exact-path": 90,
|
|
227
|
+
"symbol-source": 85,
|
|
228
|
+
source: 60,
|
|
229
|
+
test: 45,
|
|
230
|
+
docs: 50,
|
|
231
|
+
lockfile: 5,
|
|
232
|
+
"low-value": 5,
|
|
233
|
+
other: 20,
|
|
234
|
+
};
|
|
235
|
+
return scores[bucket];
|
|
236
|
+
}
|
|
237
|
+
function pathTermBonus(scopePath, terms) {
|
|
238
|
+
const path = normalizedPath(scopePath);
|
|
239
|
+
const name = basename(path);
|
|
240
|
+
let score = 0;
|
|
241
|
+
for (const term of terms) {
|
|
242
|
+
if (name === term || name.startsWith(`${term}.`)) {
|
|
243
|
+
score = Math.max(score, 25);
|
|
244
|
+
}
|
|
245
|
+
else if (path.includes(term)) {
|
|
246
|
+
score = Math.max(score, 12);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return score;
|
|
250
|
+
}
|
|
251
|
+
function depthPenalty(scopePath) {
|
|
252
|
+
return Math.min(pathSegments(scopePath).length, 12);
|
|
253
|
+
}
|
|
254
|
+
function priorityForFile(file, terms, policy) {
|
|
255
|
+
return (bucketScore(bucketByPath(file.relativePath), policy.intent) +
|
|
256
|
+
pathTermBonus(file.relativePath, terms) -
|
|
257
|
+
depthPenalty(file.relativePath));
|
|
258
|
+
}
|
|
259
|
+
function bucketCounts(files) {
|
|
260
|
+
const counts = emptyBucketCounts();
|
|
261
|
+
for (const file of files) {
|
|
262
|
+
counts[bucketByPath(file.relativePath)] += 1;
|
|
263
|
+
}
|
|
264
|
+
return counts;
|
|
265
|
+
}
|
|
266
|
+
function sortFiles(files, query, policy) {
|
|
267
|
+
// Score each file ONCE (query tokenization + path bucketing are O(path) and were previously
|
|
268
|
+
// recomputed twice per comparison — O(n log n) blocking work on the 2000-file candidate cap).
|
|
269
|
+
// Tie-break on raw code-point order, not localeCompare, so evidence ordering is reproducible
|
|
270
|
+
// across locales/ICU builds (regulated-delivery determinism).
|
|
271
|
+
const terms = normalizedQueryTerms(query);
|
|
272
|
+
const scored = files.map((file) => ({ file, score: priorityForFile(file, terms, policy) }));
|
|
273
|
+
scored.sort((a, b) => {
|
|
274
|
+
if (a.score !== b.score)
|
|
275
|
+
return b.score - a.score;
|
|
276
|
+
if (a.file.relativePath < b.file.relativePath)
|
|
277
|
+
return -1;
|
|
278
|
+
return a.file.relativePath > b.file.relativePath ? 1 : 0;
|
|
279
|
+
});
|
|
280
|
+
return scored.map((entry) => entry.file);
|
|
281
|
+
}
|
|
282
|
+
export function resolveSearchPolicy(hasExplicitRelativePaths, hints) {
|
|
283
|
+
const mode = hasExplicitRelativePaths ? "explicit-scope" : "workspace-root-default";
|
|
284
|
+
const intent = hints?.retrievalIntent ?? "generic";
|
|
285
|
+
return {
|
|
286
|
+
mode,
|
|
287
|
+
intent,
|
|
288
|
+
applyGitignore: mode === "workspace-root-default",
|
|
289
|
+
omitLowValueWorkspaceFiles: mode === "workspace-root-default",
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
// The legacy `gatherCandidates(scope, limits, fs)` overload predates the search-policy work and is
|
|
293
|
+
// still used by importGraph / testSourcePairing, which expect FULL-tree discovery (no .gitignore
|
|
294
|
+
// subset, no low-value omission) — that was the hardcoded `applyGitignore: false` behavior before
|
|
295
|
+
// this change. Resolving the default workspace-root policy for them would silently start dropping
|
|
296
|
+
// gitignored / low-value files from those callers, so they get this neutral policy instead.
|
|
297
|
+
export function legacyDiscoveryPolicy(hasExplicitRelativePaths) {
|
|
298
|
+
return {
|
|
299
|
+
mode: hasExplicitRelativePaths ? "explicit-scope" : "workspace-root-default",
|
|
300
|
+
intent: "generic",
|
|
301
|
+
applyGitignore: false,
|
|
302
|
+
omitLowValueWorkspaceFiles: false,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
export function policyOmissionReason(scopePath, policy) {
|
|
306
|
+
if (!policy.omitLowValueWorkspaceFiles) {
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
309
|
+
if (isLockfile(scopePath) && policy.intent !== "project-metadata") {
|
|
310
|
+
return "generated";
|
|
311
|
+
}
|
|
312
|
+
return hasLowValueSegment(scopePath) ? "generated" : undefined;
|
|
313
|
+
}
|
|
314
|
+
export function extraIgnoreLinesForSearch(policy) {
|
|
315
|
+
return policy.omitLowValueWorkspaceFiles ? LOW_VALUE_IGNORE_LINES : [];
|
|
316
|
+
}
|
|
317
|
+
export function orderCandidatesForSearch(files, query, policy, ignoredByDiscovery, deniedByDiscovery) {
|
|
318
|
+
const ordered = sortFiles(files, query, policy);
|
|
319
|
+
return {
|
|
320
|
+
files: ordered,
|
|
321
|
+
diagnostics: {
|
|
322
|
+
policyMode: policy.mode,
|
|
323
|
+
intent: policy.intent,
|
|
324
|
+
filesDiscovered: files.length,
|
|
325
|
+
filesAfterPolicy: ordered.length,
|
|
326
|
+
ignoredByDiscovery,
|
|
327
|
+
deniedByDiscovery,
|
|
328
|
+
candidateBuckets: bucketCounts(ordered),
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
export function shouldScoreContent(query, text, policy) {
|
|
333
|
+
if (query.kind !== "natural-language" && query.kind !== "exact-symbol") {
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
if (policy.intent === "repository-overview" || policy.intent === "project-metadata") {
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
const haystack = query.caseSensitive ? text : text.toLowerCase();
|
|
340
|
+
const terms = normalizedQueryTerms(query).filter((term) => term.length >= 4);
|
|
341
|
+
return terms.length === 0 || terms.some((term) => haystack.includes(term));
|
|
342
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { CandidateFile, CandidateOmissionReason, EvidenceAtom, EvidenceAtomProvenanceKind } from "@oscharko-dev/keiko-contracts/connected-context";
|
|
1
|
+
import type { CandidateFile, CandidateOmissionReason, EvidenceAtom, EvidenceAtomProvenanceKind, RetrievalQuery } from "@oscharko-dev/keiko-contracts/connected-context";
|
|
2
2
|
import type { WorkspaceFs } from "./fs.js";
|
|
3
3
|
import type { LineMatcher } from "./repoSearchMatchers.js";
|
|
4
|
+
import { type SearchDiagnostics, type SearchPolicy } from "./repoSearchPolicy.js";
|
|
4
5
|
import type { DiscoveredFile, WorkspaceInfo } from "./types.js";
|
|
5
6
|
export declare function isImageScopePath(scopePath: string): boolean;
|
|
6
7
|
export interface ScopeShape {
|
|
@@ -32,8 +33,10 @@ export declare function buildCandidate(scopePath: string, omitted: CandidateOmis
|
|
|
32
33
|
export interface CandidateSet {
|
|
33
34
|
readonly files: readonly DiscoveredFile[];
|
|
34
35
|
readonly truncated: boolean;
|
|
36
|
+
readonly diagnostics: SearchDiagnostics;
|
|
35
37
|
}
|
|
36
38
|
export declare function gatherCandidates(scope: ScopeShape, limits: LimitsShape, fs: WorkspaceFs): CandidateSet;
|
|
39
|
+
export declare function gatherCandidates(scope: ScopeShape, query: RetrievalQuery, limits: LimitsShape, fs: WorkspaceFs, policy: SearchPolicy): CandidateSet;
|
|
37
40
|
export declare function probeBinary(fs: WorkspaceFs, abs: string, size: number): Promise<boolean>;
|
|
38
41
|
export interface SearchTextRunner {
|
|
39
42
|
readonly scope: ScopeShape;
|
|
@@ -43,6 +46,8 @@ export interface SearchTextRunner {
|
|
|
43
46
|
readonly startMs: number;
|
|
44
47
|
readonly matcher: LineMatcher;
|
|
45
48
|
readonly fingerprint: string;
|
|
49
|
+
readonly policy: SearchPolicy;
|
|
50
|
+
readonly query: RetrievalQuery;
|
|
46
51
|
}
|
|
47
52
|
export interface RunState {
|
|
48
53
|
filesScanned: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repoSearchScan.d.ts","sourceRoot":"","sources":["../src/repoSearchScan.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,0BAA0B,
|
|
1
|
+
{"version":3,"file":"repoSearchScan.d.ts","sourceRoot":"","sources":["../src/repoSearchScan.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Every file system touch goes through the injected WorkspaceFs port; nothing here calls
|
|
4
4
|
// node:fs directly.
|
|
5
5
|
import { CONNECTED_CONTEXT_SCHEMA_VERSION, isValidScopePath, } from "@oscharko-dev/keiko-contracts/connected-context";
|
|
6
|
-
import {
|
|
6
|
+
import { discoverWithStats, readWorkspaceFile } from "./discovery.js";
|
|
7
7
|
import { FileTooLargeError, RepoSearchInvalidQueryError } from "./errors.js";
|
|
8
8
|
import { isDenied } from "./ignore.js";
|
|
9
9
|
import { resolveWithinWorkspace } from "./paths.js";
|
|
@@ -12,6 +12,7 @@ import { looksBinary } from "./binaryDetect.js";
|
|
|
12
12
|
import { collectFromEntries } from "./repoSearchEntries.js";
|
|
13
13
|
import { collectBestLines } from "./repoSearchLineSelection.js";
|
|
14
14
|
import { evidenceAtomStableId } from "./stableId.js";
|
|
15
|
+
import { extraIgnoreLinesForSearch, legacyDiscoveryPolicy, orderCandidatesForSearch, policyOmissionReason, resolveSearchPolicy, shouldScoreContent, } from "./repoSearchPolicy.js";
|
|
15
16
|
const BINARY_PROBE_BYTES = 512;
|
|
16
17
|
const IMAGE_EXTENSIONS = new Set([
|
|
17
18
|
".avif",
|
|
@@ -64,14 +65,52 @@ export function buildAtom(shape) {
|
|
|
64
65
|
export function buildCandidate(scopePath, omitted) {
|
|
65
66
|
return { scopePath, score: 0, signals: [], omitted };
|
|
66
67
|
}
|
|
67
|
-
function collectFromDirectory(scope, limits, fs) {
|
|
68
|
-
const
|
|
68
|
+
function collectFromDirectory(scope, limits, fs, policy) {
|
|
69
|
+
const extraIgnoreLines = extraIgnoreLinesForSearch(policy);
|
|
70
|
+
const workspace = extraIgnoreLines.length === 0
|
|
71
|
+
? scope.workspace
|
|
72
|
+
: { ...scope.workspace, ignoreLines: [...scope.workspace.ignoreLines, ...extraIgnoreLines] };
|
|
73
|
+
const result = discoverWithStats(workspace, {
|
|
74
|
+
maxDepth: 12,
|
|
75
|
+
maxFiles: limits.maxFilesScanned + 1,
|
|
76
|
+
applyGitignore: policy.applyGitignore,
|
|
77
|
+
}, fs);
|
|
78
|
+
const files = result.files;
|
|
69
79
|
return {
|
|
70
80
|
files: files.slice(0, limits.maxFilesScanned),
|
|
71
81
|
truncated: files.length > limits.maxFilesScanned,
|
|
82
|
+
ignored: result.stats.ignored,
|
|
83
|
+
denied: result.stats.denied,
|
|
72
84
|
};
|
|
73
85
|
}
|
|
74
|
-
|
|
86
|
+
const DEFAULT_GATHER_QUERY = {
|
|
87
|
+
kind: "natural-language",
|
|
88
|
+
text: "generic repository search",
|
|
89
|
+
caseSensitive: false,
|
|
90
|
+
maxResults: 100,
|
|
91
|
+
emittedAtMs: 0,
|
|
92
|
+
};
|
|
93
|
+
function isRetrievalQuery(value) {
|
|
94
|
+
return typeof value === "object" && value !== null && "kind" in value && "text" in value;
|
|
95
|
+
}
|
|
96
|
+
function resolveGatherInputs(scope, queryOrLimits, limitsOrFs, fsOrPolicy, policy) {
|
|
97
|
+
if (isRetrievalQuery(queryOrLimits)) {
|
|
98
|
+
return {
|
|
99
|
+
query: queryOrLimits,
|
|
100
|
+
limits: limitsOrFs,
|
|
101
|
+
fs: fsOrPolicy,
|
|
102
|
+
policy: policy ?? resolveSearchPolicy(scope.relativePaths.length > 0, undefined),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
query: DEFAULT_GATHER_QUERY,
|
|
107
|
+
limits: queryOrLimits,
|
|
108
|
+
fs: limitsOrFs,
|
|
109
|
+
policy: legacyDiscoveryPolicy(scope.relativePaths.length > 0),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
export function gatherCandidates(scope, queryOrLimits, limitsOrFs, fsOrPolicy, policy) {
|
|
113
|
+
const inputs = resolveGatherInputs(scope, queryOrLimits, limitsOrFs, fsOrPolicy, policy);
|
|
75
114
|
// Defense in depth alongside the realpath gate: validate scope.relativePaths against the
|
|
76
115
|
// contracts-layer shape rules (no absolute paths, no `..`, no drive letters, no backslashes).
|
|
77
116
|
// resolveWithinWorkspace + assertContainedRealPath already provide a complete barrier; this
|
|
@@ -83,16 +122,20 @@ export function gatherCandidates(scope, limits, fs) {
|
|
|
83
122
|
}
|
|
84
123
|
}
|
|
85
124
|
if (scope.relativePaths.length === 0) {
|
|
86
|
-
const result = collectFromDirectory(scope, limits, fs);
|
|
125
|
+
const result = collectFromDirectory(scope, inputs.limits, inputs.fs, inputs.policy);
|
|
126
|
+
const ordered = orderCandidatesForSearch(result.files, inputs.query, inputs.policy, result.ignored, result.denied);
|
|
87
127
|
return {
|
|
88
|
-
files:
|
|
128
|
+
files: ordered.files,
|
|
89
129
|
truncated: result.truncated,
|
|
130
|
+
diagnostics: ordered.diagnostics,
|
|
90
131
|
};
|
|
91
132
|
}
|
|
92
|
-
const result = collectFromEntries(scope, limits, fs);
|
|
133
|
+
const result = collectFromEntries(scope, inputs.limits, inputs.fs);
|
|
134
|
+
const ordered = orderCandidatesForSearch(result.files, inputs.query, inputs.policy, 0, 0);
|
|
93
135
|
return {
|
|
94
|
-
files:
|
|
136
|
+
files: ordered.files,
|
|
95
137
|
truncated: result.truncated,
|
|
138
|
+
diagnostics: ordered.diagnostics,
|
|
96
139
|
};
|
|
97
140
|
}
|
|
98
141
|
export async function probeBinary(fs, abs, size) {
|
|
@@ -199,6 +242,11 @@ export async function scanFile(runner, file, state, atoms, candidates) {
|
|
|
199
242
|
candidates.push(buildCandidate(file.relativePath, "ignored"));
|
|
200
243
|
return;
|
|
201
244
|
}
|
|
245
|
+
const omitted = policyOmissionReason(file.relativePath, runner.policy);
|
|
246
|
+
if (omitted !== undefined) {
|
|
247
|
+
candidates.push(buildCandidate(file.relativePath, omitted));
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
202
250
|
let isBinary;
|
|
203
251
|
try {
|
|
204
252
|
isBinary = await probeBinary(runner.fs, contained.path, file.sizeBytes);
|
|
@@ -217,7 +265,7 @@ export async function scanFile(runner, file, state, atoms, candidates) {
|
|
|
217
265
|
}
|
|
218
266
|
state.filesScanned += 1;
|
|
219
267
|
const text = readForScan(runner, file.relativePath, candidates);
|
|
220
|
-
if (text === undefined) {
|
|
268
|
+
if (text === undefined || !shouldScoreContent(runner.query, text, runner.policy)) {
|
|
221
269
|
return;
|
|
222
270
|
}
|
|
223
271
|
scanLines(runner, file.relativePath, text, state, atoms);
|
package/package.json
CHANGED