kodit 0.3.1__tar.gz → 0.3.2__tar.gz
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.
Potentially problematic release.
This version of kodit might be problematic. Click here for more details.
- kodit-0.3.2/.claude/commands/new-requirement.md +534 -0
- {kodit-0.3.1 → kodit-0.3.2}/PKG-INFO +1 -1
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/_version.py +2 -2
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/application/services/code_indexing_application_service.py +15 -12
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/cli.py +35 -11
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/entities.py +9 -1
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/repositories.py +5 -5
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/indexing_service.py +3 -3
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/snippet_service.py +22 -18
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/value_objects.py +82 -39
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/indexing/index_repository.py +33 -20
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/sqlalchemy/snippet_repository.py +86 -78
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/log.py +4 -1
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/mcp.py +1 -6
- kodit-0.3.2/src/kodit/migrations/versions/4552eb3f23ce_add_summary.py +34 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/conftest.py +22 -7
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/application/test_code_indexing_application_service.py +0 -3
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/cli_test.py +283 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/domain/snippet_domain_service_test.py +51 -19
- kodit-0.3.2/tests/kodit/domain/test_multi_search_result.py +224 -0
- kodit-0.3.2/tests/kodit/infrastructure/bm25/__init__.py +1 -0
- kodit-0.3.2/tests/kodit/infrastructure/bm25/local_bm25_repository_test.py +202 -0
- kodit-0.3.1/tests/kodit/infrastructure/test_vectorchord_bm25_repository.py → kodit-0.3.2/tests/kodit/infrastructure/bm25/vectorchord_bm25_repository_test.py +5 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/test_embedding_integration.py +35 -10
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/test_local_vector_search_repository.py +12 -3
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/test_vectorchord_vector_search_repository.py +5 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/sqlalchemy/test_snippet_repository.py +52 -33
- kodit-0.3.2/tests/kodit/log_test.py +57 -0
- kodit-0.3.2/tests/kodit/mcp_test.py +103 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/performance/similarity.py +1 -0
- kodit-0.3.1/tests/kodit/log_test.py +0 -20
- kodit-0.3.1/tests/kodit/mcp_test.py +0 -48
- {kodit-0.3.1 → kodit-0.3.2}/.claude/commands/debug.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.claude/commands/refactor.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.claude/settings.json +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.cursor/rules/kodit.mdc +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.cursor/rules/style.mdc +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.dockerignore +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/CODE_OF_CONDUCT.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/CONTRIBUTING.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/dependabot.yml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/workflows/docker.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/workflows/docs.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/workflows/pull_request.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/workflows/pypi-test.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/workflows/pypi.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.github/workflows/test.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.gitignore +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.python-version +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.vscode/launch.json +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/.vscode/settings.json +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/CLAUDE.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/Dockerfile +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/LICENSE +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/README.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/alembic.ini +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/_index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/demos/_index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/demos/go-simple-microservice/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/demos/knock-knock-auth/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/developer/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/getting-started/_index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/getting-started/installation/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/getting-started/integration/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/getting-started/quick-start/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/_index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/configuration/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/deployment/docker-compose.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/deployment/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/deployment/kubernetes.yaml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/indexing/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/mcp/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/docs/reference/telemetry/index.md +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/pyproject.toml +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/.gitignore +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/app.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/application/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/application/factories/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/application/factories/code_indexing_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/application/services/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/config.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/database.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/enums.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/errors.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/interfaces.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/bm25_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/embedding_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/enrichment_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/ignore_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/snippet_extraction_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/domain/services/source_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/bm25/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/bm25/bm25_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/bm25/local_bm25_repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/bm25/vectorchord_bm25_repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/folder/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/folder/factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/folder/working_copy.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/git/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/git/factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/git/working_copy.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/cloning/metadata.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/embedding_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/embedding_providers/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/embedding_providers/batching.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/embedding_providers/hash_embedding_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/embedding_providers/local_embedding_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/embedding_providers/openai_embedding_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/local_vector_search_repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/embedding/vectorchord_vector_search_repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/enrichment/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/enrichment/enrichment_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/enrichment/local_enrichment_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/enrichment/null_enrichment_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/enrichment/openai_enrichment_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/git/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/git/git_utils.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/ignore/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/ignore/ignore_pattern_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/indexing/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/indexing/auto_indexing_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/indexing/fusion_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/indexing/indexing_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/indexing/snippet_domain_service_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/language_detection_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/languages/csharp.scm +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/languages/go.scm +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/languages/java.scm +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/languages/javascript.scm +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/languages/python.scm +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/languages/typescript.scm +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/snippet_extraction_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/snippet_query_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/snippet_extraction/tree_sitter_snippet_extractor.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/sqlalchemy/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/sqlalchemy/embedding_repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/sqlalchemy/file_repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/sqlalchemy/repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/ui/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/ui/progress.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/infrastructure/ui/spinner.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/middleware.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/README +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/env.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/script.py.mako +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/versions/7c3bbc2ab32b_add_embeddings_table.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/versions/85155663351e_initial.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/versions/9e53ea8bb3b0_add_authors.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/versions/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/migrations/versions/c3f5137d30f5_index_all_the_things.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/src/kodit/reporting.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/docker-smoke.sh +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/experiments/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/experiments/cline_prompt_tests/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/experiments/cline_prompt_tests/cline_prompt.txt +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/experiments/cline_prompt_tests/cline_prompt_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/application/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/config_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/domain/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/domain/bm25_domain_service_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/domain/enrichment_domain_service_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/domain/snippet_extraction_domain_service_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/domain/test_embedding_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/domain/test_language_mapping.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/e2e.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/cloning/git_cloning/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/cloning/git_cloning/factory_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/cloning/git_cloning/working_copy_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/embedding_factory_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/embedding_provider/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/embedding_provider/test_hash_embedding_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/embedding_provider/test_local_embedding_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/embedding_provider/test_openai_embedding_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/embedding/test_batching.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/enrichment/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/enrichment/enrichment_provider/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/enrichment/enrichment_provider/test_local_enrichment_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/enrichment/enrichment_provider/test_null_enrichment_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/enrichment/enrichment_provider/test_openai_enrichment_provider.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/enrichment/test_enrichment_factory.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/git/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/git/test_git_utils.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/indexing/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/indexing/indexing_repository_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/indexing/test_auto_indexing_service.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/snippets/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/snippets/csharp.cs +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/snippets/golang.go +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/snippets/javascript.js +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/snippets/knock_knock_server.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/snippets/python.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/snippets/typescript.tsx +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/source/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/source/source_service_test.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/sqlalchemy/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/kodit/infrastructure/sqlalchemy/test_embedding_repository.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/performance/__init__.py +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/smoke.sh +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/tests/vectorchord-smoke.sh +0 -0
- {kodit-0.3.1 → kodit-0.3.2}/uv.lock +0 -0
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
# Build Product Requirements Prompt
|
|
2
|
+
|
|
3
|
+
## Instructions
|
|
4
|
+
|
|
5
|
+
Create a comprehensive Product Requirement Prompt (PRP) with user-centered requirements gathering for: **$ARGUMENTS**
|
|
6
|
+
|
|
7
|
+
## Intelligent Workflow Selection
|
|
8
|
+
|
|
9
|
+
**Analyze `$ARGUMENTS` complexity and choose approach:**
|
|
10
|
+
|
|
11
|
+
- **Simple/Clear Request** (e.g., "add a login button"): Skip to Phase 3 (Research & PRP Generation)
|
|
12
|
+
- **Moderate Request** (e.g., "user authentication system"): Start with Phase 2 (Targeted Questions)
|
|
13
|
+
- **Complex/Vague Request** (e.g., "improve user experience"): Start with Phase 1 (Discovery)
|
|
14
|
+
|
|
15
|
+
## Full Workflow
|
|
16
|
+
|
|
17
|
+
### Phase 1: Discovery Questions (Complex/Vague Requests Only)
|
|
18
|
+
|
|
19
|
+
Ask 5 strategic discovery questions to understand the problem space:
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
I need to understand the broader context first. Let me ask 5 key questions:
|
|
23
|
+
|
|
24
|
+
## Discovery Questions
|
|
25
|
+
|
|
26
|
+
**Q1: Will users interact with this feature through a visual interface?**
|
|
27
|
+
Default: Yes (most features have UI components)
|
|
28
|
+
|
|
29
|
+
**Q2: Does this involve user data or require authentication?**
|
|
30
|
+
Default: Yes (better to plan for security)
|
|
31
|
+
|
|
32
|
+
**Q3: Do users currently have a workaround for this problem?**
|
|
33
|
+
Default: No (assuming this solves a new need)
|
|
34
|
+
|
|
35
|
+
**Q4: Will this need to integrate with external services or APIs?**
|
|
36
|
+
Default: No (simpler implementation)
|
|
37
|
+
|
|
38
|
+
**Q5: Is this a completely new feature or an enhancement to existing functionality?**
|
|
39
|
+
Default: Enhancement (most requests build on existing features)
|
|
40
|
+
|
|
41
|
+
*You can answer any/all questions or just say "continue" to use the defaults.*
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Phase 2: Technical Context Questions (Moderate+ Requests)
|
|
45
|
+
|
|
46
|
+
Ask 5 targeted technical questions informed by codebase analysis:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
Now let me ask about technical implementation details:
|
|
50
|
+
|
|
51
|
+
## Technical Questions
|
|
52
|
+
|
|
53
|
+
**Q6: [Specific question about existing similar features/components]**
|
|
54
|
+
Default: [Codebase-informed default]
|
|
55
|
+
|
|
56
|
+
**Q7: [Question about data layer/database requirements]**
|
|
57
|
+
Default: [Pattern-based default]
|
|
58
|
+
|
|
59
|
+
**Q8: [Question about API/service layer approach]**
|
|
60
|
+
Default: [Architecture-consistent default]
|
|
61
|
+
|
|
62
|
+
**Q9: [Question about testing/validation approach]**
|
|
63
|
+
Default: [Project-standard default]
|
|
64
|
+
|
|
65
|
+
**Q10: [Question about deployment/configuration needs]**
|
|
66
|
+
Default: [Environment-appropriate default]
|
|
67
|
+
|
|
68
|
+
*Answer what you know, or say "continue" for smart defaults based on your codebase.*
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Phase 3: Research & Context Gathering
|
|
72
|
+
|
|
73
|
+
**Automatically perform comprehensive research:**
|
|
74
|
+
|
|
75
|
+
1. **Web Research** (when beneficial):
|
|
76
|
+
- Research best practices and current standards
|
|
77
|
+
- Look up relevant library/framework documentation using mcp__kodit__search (if available)
|
|
78
|
+
- Find example implementations and patterns using mcp__kodit__search (if available)
|
|
79
|
+
- Gather security and performance considerations
|
|
80
|
+
|
|
81
|
+
2. **Codebase Analysis** (when tools available):
|
|
82
|
+
- Analyze overall architecture and patterns
|
|
83
|
+
- Identify similar existing features using mcp__kodit__search (if available)
|
|
84
|
+
- Understand technology stack and conventions
|
|
85
|
+
- Find integration points and dependencies
|
|
86
|
+
|
|
87
|
+
3. **Technical Context**:
|
|
88
|
+
- Identify affected files and components
|
|
89
|
+
- Understand data flow and business logic
|
|
90
|
+
- Map out user interactions and workflows
|
|
91
|
+
- Document technical constraints and opportunities
|
|
92
|
+
|
|
93
|
+
### Phase 4: Generate Comprehensive PRP
|
|
94
|
+
|
|
95
|
+
Create a complete Product Requirement Prompt that combines user requirements with
|
|
96
|
+
implementation guidance. Use the following template to create a new markdown file in
|
|
97
|
+
docs/requirements/YYYY-MM-DD-HHMM-[slug].md, where `[slug]` is a slug extracted from the
|
|
98
|
+
requirement and `YYYY-MM-DD-HHMM` is parsed from the system's `date` command.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## PRP Output Template
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
# Product Requirement Prompt: [Feature Name]
|
|
106
|
+
|
|
107
|
+
**Generated:** [timestamp]
|
|
108
|
+
**Original Request:** $ARGUMENTS
|
|
109
|
+
**Complexity Level:** [Simple/Moderate/Complex]
|
|
110
|
+
**Questions Asked:** [X/10]
|
|
111
|
+
|
|
112
|
+
## Executive Summary
|
|
113
|
+
|
|
114
|
+
### Goal
|
|
115
|
+
[Concise statement of what this PRP aims to achieve based on discovery]
|
|
116
|
+
|
|
117
|
+
### Why
|
|
118
|
+
- **Business Value:** [Based on user needs discovered]
|
|
119
|
+
- **User Benefits:** [Who benefits and how]
|
|
120
|
+
- **Technical Benefits:** [System improvements]
|
|
121
|
+
- **Strategic Alignment:** [How it fits with existing functionality]
|
|
122
|
+
|
|
123
|
+
### What
|
|
124
|
+
**Core Functionality:**
|
|
125
|
+
[Detailed explanation based on all gathered context including:]
|
|
126
|
+
- Primary features and capabilities
|
|
127
|
+
- User interaction patterns
|
|
128
|
+
- System behaviors and rules
|
|
129
|
+
- Integration requirements
|
|
130
|
+
- Scope and boundaries
|
|
131
|
+
|
|
132
|
+
## Requirements Analysis
|
|
133
|
+
|
|
134
|
+
### User Requirements Summary
|
|
135
|
+
[Synthesis of discovery answers and user needs]
|
|
136
|
+
|
|
137
|
+
### Technical Requirements Summary
|
|
138
|
+
[Synthesis of technical context and codebase analysis]
|
|
139
|
+
|
|
140
|
+
### Key Decisions Made
|
|
141
|
+
- [Decision 1]: [Reasoning based on questions/research]
|
|
142
|
+
- [Decision 2]: [Reasoning based on questions/research]
|
|
143
|
+
- [Decision 3]: [Reasoning based on questions/research]
|
|
144
|
+
|
|
145
|
+
## Architecture & Implementation
|
|
146
|
+
|
|
147
|
+
### Technical Overview
|
|
148
|
+
- **Architecture Pattern:** [Based on codebase analysis]
|
|
149
|
+
- **Technology Stack:** [Current stack + any additions needed]
|
|
150
|
+
- **Integration Points:** [Internal and external connections]
|
|
151
|
+
- **Data Flow:** [How information moves through the system]
|
|
152
|
+
|
|
153
|
+
### Directory Structure
|
|
154
|
+
|
|
155
|
+
**Current Relevant Structure:**
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
[Tree representation of current relevant files/directories]
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Proposed Changes:**
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
[Tree showing new/modified files with descriptions]
|
|
166
|
+
├── [existing_dir]/
|
|
167
|
+
│ ├── [existing_file.ext]
|
|
168
|
+
│ ├── [new_file.ext] - [purpose and contents description]
|
|
169
|
+
│ └── [modified_file.ext] - [changes needed]
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Files to Reference
|
|
174
|
+
- **[file_path]** (existing) - [How to use as reference/pattern]
|
|
175
|
+
- **[documentation_url]** (external) - [Relevant sections for implementation]
|
|
176
|
+
- **[similar_feature_path]** (existing) - [Pattern to follow/extend]
|
|
177
|
+
- **[library_docs_url]** (external) - [Specific methods/approaches to use]
|
|
178
|
+
|
|
179
|
+
### Implementation Specifications
|
|
180
|
+
|
|
181
|
+
#### [Component Category 1: e.g., Data Layer]
|
|
182
|
+
**File: `[file_path]`**
|
|
183
|
+
Purpose: [Specific role in the implementation]
|
|
184
|
+
|
|
185
|
+
```[language]
|
|
186
|
+
[Sample code structure or key implementation patterns]
|
|
187
|
+
// Key considerations:
|
|
188
|
+
// - [Specific requirement from discovery]
|
|
189
|
+
// - [Pattern to follow from codebase]
|
|
190
|
+
// - [Best practice from research]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
#### [Component Category 2: e.g., Business Logic]
|
|
194
|
+
|
|
195
|
+
**File: `[file_path]`**
|
|
196
|
+
Purpose: [Specific role in the implementation]
|
|
197
|
+
|
|
198
|
+
```[language]
|
|
199
|
+
[Sample code structure or key implementation patterns]
|
|
200
|
+
// Key considerations:
|
|
201
|
+
// - [User requirement addressed]
|
|
202
|
+
// - [Integration with existing systems]
|
|
203
|
+
// - [Error handling patterns]
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### [Component Category 3: e.g., User Interface]
|
|
207
|
+
|
|
208
|
+
**File: `[file_path]`**
|
|
209
|
+
Purpose: [Specific role in the implementation]
|
|
210
|
+
|
|
211
|
+
```[language]
|
|
212
|
+
[Sample code structure or key implementation patterns]
|
|
213
|
+
// Key considerations:
|
|
214
|
+
// - [User experience requirements]
|
|
215
|
+
// - [Accessibility standards]
|
|
216
|
+
// - [Responsive design needs]
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## API/Endpoints Design
|
|
220
|
+
|
|
221
|
+
### [Endpoint 1]
|
|
222
|
+
|
|
223
|
+
- **Method:** [GET/POST/PUT/DELETE]
|
|
224
|
+
- **Path:** [/api/path]
|
|
225
|
+
- **Purpose:** [What this endpoint accomplishes]
|
|
226
|
+
- **Parameters:**
|
|
227
|
+
- `param1` (type) - [description]
|
|
228
|
+
- `param2` (type) - [description]
|
|
229
|
+
- **Success Response:**
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
[Example response structure]
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
- **Error Handling:** [Specific error cases and responses]
|
|
236
|
+
|
|
237
|
+
### [Endpoint 2]
|
|
238
|
+
|
|
239
|
+
[Similar structure for additional endpoints]
|
|
240
|
+
|
|
241
|
+
## Implementation Guidelines
|
|
242
|
+
|
|
243
|
+
### [Technical Domain 1: e.g., Authentication & Security]
|
|
244
|
+
|
|
245
|
+
**Requirements from Discovery:**
|
|
246
|
+
|
|
247
|
+
- [Specific security requirement from questions]
|
|
248
|
+
- [User data protection needs]
|
|
249
|
+
|
|
250
|
+
**Implementation Approach:**
|
|
251
|
+
|
|
252
|
+
- [Specific security patterns to follow]
|
|
253
|
+
- [Authentication/authorization strategy]
|
|
254
|
+
- [Data validation and sanitization]
|
|
255
|
+
- [Error handling for security scenarios]
|
|
256
|
+
|
|
257
|
+
**Code References:**
|
|
258
|
+
|
|
259
|
+
- Follow patterns in `[existing_auth_file]`
|
|
260
|
+
- Use security helpers from `[security_utils_file]`
|
|
261
|
+
|
|
262
|
+
### [Technical Domain 2: e.g., Data Management]
|
|
263
|
+
|
|
264
|
+
**Requirements from Discovery:**
|
|
265
|
+
|
|
266
|
+
- [Data persistence needs]
|
|
267
|
+
- [Performance requirements]
|
|
268
|
+
|
|
269
|
+
**Implementation Approach:**
|
|
270
|
+
|
|
271
|
+
- [Database/storage strategy]
|
|
272
|
+
- [Data validation rules]
|
|
273
|
+
- [Performance optimization techniques]
|
|
274
|
+
- [Backup and recovery considerations]
|
|
275
|
+
|
|
276
|
+
**Code References:**
|
|
277
|
+
|
|
278
|
+
- Extend patterns from `[existing_data_layer]`
|
|
279
|
+
- Use ORM/database helpers from `[db_utils_file]`
|
|
280
|
+
|
|
281
|
+
### [Technical Domain 3: e.g., User Experience]
|
|
282
|
+
|
|
283
|
+
**Requirements from Discovery:**
|
|
284
|
+
|
|
285
|
+
- [UI/UX requirements from questions]
|
|
286
|
+
- [Accessibility needs]
|
|
287
|
+
|
|
288
|
+
**Implementation Approach:**
|
|
289
|
+
|
|
290
|
+
- [User interface design principles]
|
|
291
|
+
- [Interaction patterns to follow]
|
|
292
|
+
- [Responsive design requirements]
|
|
293
|
+
- [Error messaging and feedback]
|
|
294
|
+
|
|
295
|
+
**Code References:**
|
|
296
|
+
|
|
297
|
+
- Follow component patterns in `[ui_components_dir]`
|
|
298
|
+
- Use styling conventions from `[styles_dir]`
|
|
299
|
+
|
|
300
|
+
## Validation & Testing Strategy
|
|
301
|
+
|
|
302
|
+
### Functional Validation
|
|
303
|
+
|
|
304
|
+
**Based on User Requirements:**
|
|
305
|
+
|
|
306
|
+
- [ ] [Specific user workflow works as expected]
|
|
307
|
+
- [ ] [User interaction produces correct results]
|
|
308
|
+
- [ ] [Error scenarios are handled gracefully]
|
|
309
|
+
|
|
310
|
+
**Test Commands:**
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
[Specific test commands for functional validation]
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Technical Validation
|
|
317
|
+
|
|
318
|
+
**Based on Technical Requirements:**
|
|
319
|
+
|
|
320
|
+
- [ ] [Performance benchmark met: response < Xms]
|
|
321
|
+
- [ ] [Security standard implemented: authentication required]
|
|
322
|
+
- [ ] [Integration working: external API connection established]
|
|
323
|
+
|
|
324
|
+
**Test Commands:**
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
[Specific test commands for technical validation]
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### User Acceptance Criteria
|
|
331
|
+
|
|
332
|
+
**Derived from Discovery Questions:**
|
|
333
|
+
|
|
334
|
+
- [ ] [Acceptance criterion based on Q1 answer]
|
|
335
|
+
- [ ] [Acceptance criterion based on Q2 answer]
|
|
336
|
+
- [ ] [Acceptance criterion based on Q3 answer]
|
|
337
|
+
- [ ] [Overall user satisfaction metric]
|
|
338
|
+
|
|
339
|
+
## Implementation Roadmap
|
|
340
|
+
|
|
341
|
+
### Checkpoint 1: Foundation Setup
|
|
342
|
+
|
|
343
|
+
**Tasks:**
|
|
344
|
+
|
|
345
|
+
- [ ] Set up basic project structure
|
|
346
|
+
- [ ] Implement core data models
|
|
347
|
+
- [ ] Create basic authentication framework
|
|
348
|
+
|
|
349
|
+
**Validation:**
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
[Test command to verify foundation]
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**Expected:** [Specific expected outcome]
|
|
356
|
+
|
|
357
|
+
### Checkpoint 2: Core Feature Implementation
|
|
358
|
+
|
|
359
|
+
**Tasks:**
|
|
360
|
+
|
|
361
|
+
- [ ] Implement primary business logic
|
|
362
|
+
- [ ] Create user interface components
|
|
363
|
+
- [ ] Set up API endpoints
|
|
364
|
+
|
|
365
|
+
**Validation:**
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
[Test command to verify core features]
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Expected:** [Specific expected outcome]
|
|
372
|
+
|
|
373
|
+
### Checkpoint 3: Integration & Polish
|
|
374
|
+
|
|
375
|
+
**Tasks:**
|
|
376
|
+
|
|
377
|
+
- [ ] Integrate with existing systems
|
|
378
|
+
- [ ] Implement error handling and edge cases
|
|
379
|
+
- [ ] Performance optimization and testing
|
|
380
|
+
|
|
381
|
+
**Validation:**
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
[Test command to verify complete implementation]
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Expected:** [Specific expected outcome]
|
|
388
|
+
|
|
389
|
+
## Research References
|
|
390
|
+
|
|
391
|
+
### Best Practices Sources
|
|
392
|
+
|
|
393
|
+
- [URL/Resource 1]: [Key insights relevant to implementation]
|
|
394
|
+
- [URL/Resource 2]: [Specific techniques or patterns found]
|
|
395
|
+
- [URL/Resource 3]: [Standards or conventions to follow]
|
|
396
|
+
|
|
397
|
+
### Technical Documentation
|
|
398
|
+
|
|
399
|
+
- [Library/Framework Docs]: [Specific sections relevant to implementation]
|
|
400
|
+
- [API Documentation]: [Integration details and examples]
|
|
401
|
+
- [Security Guidelines]: [Relevant security considerations]
|
|
402
|
+
|
|
403
|
+
### Example Implementations
|
|
404
|
+
|
|
405
|
+
- [GitHub/StackOverflow URL]: [Pattern or approach to reference]
|
|
406
|
+
- [Code Example URL]: [Specific implementation technique]
|
|
407
|
+
- [Tutorial/Guide URL]: [Step-by-step process to follow]
|
|
408
|
+
|
|
409
|
+
## Risk Assessment & Mitigation
|
|
410
|
+
|
|
411
|
+
### Technical Risks
|
|
412
|
+
|
|
413
|
+
- **Risk:** [Potential technical challenge]
|
|
414
|
+
**Likelihood:** [High/Medium/Low]
|
|
415
|
+
**Impact:** [High/Medium/Low]
|
|
416
|
+
**Mitigation:** [Specific strategy to address]
|
|
417
|
+
|
|
418
|
+
### Business Risks
|
|
419
|
+
|
|
420
|
+
- **Risk:** [Potential business/user impact]
|
|
421
|
+
**Likelihood:** [High/Medium/Low]
|
|
422
|
+
**Impact:** [High/Medium/Low]
|
|
423
|
+
**Mitigation:** [Specific strategy to address]
|
|
424
|
+
|
|
425
|
+
### Dependencies & Assumptions
|
|
426
|
+
|
|
427
|
+
**External Dependencies:**
|
|
428
|
+
|
|
429
|
+
- [Dependency 1]: [Version and reliability considerations]
|
|
430
|
+
- [Dependency 2]: [Integration complexity and fallback options]
|
|
431
|
+
|
|
432
|
+
**Key Assumptions:**
|
|
433
|
+
|
|
434
|
+
- [ASSUMED]: [Assumption based on unanswered questions]
|
|
435
|
+
- [ASSUMED]: [Technical assumption based on codebase patterns]
|
|
436
|
+
- [ASSUMED]: [Business assumption based on discovery defaults]
|
|
437
|
+
|
|
438
|
+
## Success Metrics & Monitoring
|
|
439
|
+
|
|
440
|
+
### Key Performance Indicators
|
|
441
|
+
|
|
442
|
+
- **[Metric 1]:** [Target value] - [How to measure]
|
|
443
|
+
- **[Metric 2]:** [Target value] - [How to measure]
|
|
444
|
+
- **[Metric 3]:** [Target value] - [How to measure]
|
|
445
|
+
|
|
446
|
+
### Monitoring Strategy
|
|
447
|
+
|
|
448
|
+
- [What to track automatically]
|
|
449
|
+
- [User feedback collection methods]
|
|
450
|
+
- [Performance monitoring approach]
|
|
451
|
+
- [Error tracking and alerting]
|
|
452
|
+
|
|
453
|
+
### Success Definition
|
|
454
|
+
|
|
455
|
+
**MVP Success:**
|
|
456
|
+
|
|
457
|
+
- [ ] [Minimum viable implementation criteria]
|
|
458
|
+
- [ ] [Basic user satisfaction threshold]
|
|
459
|
+
- [ ] [Technical performance baseline]
|
|
460
|
+
|
|
461
|
+
**Full Success:**
|
|
462
|
+
|
|
463
|
+
- [ ] [Complete feature functionality]
|
|
464
|
+
- [ ] [Optimal user experience metrics]
|
|
465
|
+
- [ ] [Technical excellence standards]
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## Quick Implementation Guide
|
|
470
|
+
|
|
471
|
+
### Getting Started (Copy/Paste Ready)
|
|
472
|
+
|
|
473
|
+
```bash
|
|
474
|
+
# 1. Set up development environment
|
|
475
|
+
[Specific setup commands based on tech stack]
|
|
476
|
+
|
|
477
|
+
# 2. Create basic structure
|
|
478
|
+
[Commands to create necessary directories/files]
|
|
479
|
+
|
|
480
|
+
# 3. Implement core logic
|
|
481
|
+
[Key implementation steps in order]
|
|
482
|
+
|
|
483
|
+
# 4. Test implementation
|
|
484
|
+
[Test commands to verify each step]
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### Code Patterns to Follow
|
|
488
|
+
|
|
489
|
+
**Pattern 1: [Name]**
|
|
490
|
+
|
|
491
|
+
```[language]
|
|
492
|
+
// Location: [existing_file_reference]
|
|
493
|
+
[Code example showing pattern to follow]
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
**Pattern 2: [Name]**
|
|
497
|
+
|
|
498
|
+
```[language]
|
|
499
|
+
// Location: [existing_file_reference]
|
|
500
|
+
[Code example showing pattern to follow]
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### Common Pitfalls & Solutions
|
|
504
|
+
|
|
505
|
+
- **Pitfall:** [Common mistake in this type of implementation]
|
|
506
|
+
**Solution:** [Specific approach to avoid the mistake]
|
|
507
|
+
**Example:** [Code or configuration example]
|
|
508
|
+
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
## Execution Strategy
|
|
512
|
+
|
|
513
|
+
### Request Analysis
|
|
514
|
+
1. **Parse `$ARGUMENTS`** for complexity indicators:
|
|
515
|
+
- **Simple:** Contains specific technical terms, clear scope
|
|
516
|
+
- **Moderate:** General feature description with some context
|
|
517
|
+
- **Complex:** Vague goals, broad scope, unclear requirements
|
|
518
|
+
|
|
519
|
+
2. **Determine Question Strategy:**
|
|
520
|
+
- **Simple:** Skip to research and generation
|
|
521
|
+
- **Moderate:** Ask 5 technical questions only
|
|
522
|
+
- **Complex:** Ask all 10 questions (5 discovery + 5 technical)
|
|
523
|
+
|
|
524
|
+
### Research Integration
|
|
525
|
+
- **Always perform web research** for best practices and standards
|
|
526
|
+
- **Use codebase tools when available** for context and patterns
|
|
527
|
+
- **Synthesize findings** into actionable implementation guidance
|
|
528
|
+
- **Provide concrete examples** and reference materials
|
|
529
|
+
|
|
530
|
+
### Output Quality Assurance
|
|
531
|
+
- **Ensure actionability:** Every section should be implementable
|
|
532
|
+
- **Maintain specificity:** Use actual file paths, concrete examples
|
|
533
|
+
- **Balance comprehensiveness with clarity:** Cover all aspects without overwhelming
|
|
534
|
+
- **Validate completeness:** Check that PRP provides sufficient context for implementation
|
{kodit-0.3.1 → kodit-0.3.2}/src/kodit/application/services/code_indexing_application_service.py
RENAMED
|
@@ -157,7 +157,7 @@ class CodeIndexingApplicationService:
|
|
|
157
157
|
snippet_results = await self.snippet_domain_service.search_snippets(
|
|
158
158
|
prefilter_request
|
|
159
159
|
)
|
|
160
|
-
filtered_snippet_ids = [snippet.id for snippet in snippet_results]
|
|
160
|
+
filtered_snippet_ids = [snippet.snippet.id for snippet in snippet_results]
|
|
161
161
|
|
|
162
162
|
# Gather results from different search modes
|
|
163
163
|
fusion_list: list[list[FusionRequest]] = []
|
|
@@ -225,9 +225,20 @@ class CodeIndexingApplicationService:
|
|
|
225
225
|
return [
|
|
226
226
|
MultiSearchResult(
|
|
227
227
|
id=result.snippet.id,
|
|
228
|
-
uri=result.file.uri,
|
|
229
228
|
content=result.snippet.content,
|
|
230
229
|
original_scores=fr.original_scores,
|
|
230
|
+
# Enhanced fields
|
|
231
|
+
source_uri=result.source.uri,
|
|
232
|
+
relative_path=MultiSearchResult.calculate_relative_path(
|
|
233
|
+
result.file.cloned_path, result.source.cloned_path
|
|
234
|
+
),
|
|
235
|
+
language=MultiSearchResult.detect_language_from_extension(
|
|
236
|
+
result.file.extension
|
|
237
|
+
),
|
|
238
|
+
authors=[author.name for author in result.authors],
|
|
239
|
+
created_at=result.snippet.created_at,
|
|
240
|
+
# Summary from snippet entity
|
|
241
|
+
summary=result.snippet.summary,
|
|
231
242
|
)
|
|
232
243
|
for result, fr in zip(search_results, final_results, strict=True)
|
|
233
244
|
]
|
|
@@ -300,16 +311,8 @@ class CodeIndexingApplicationService:
|
|
|
300
311
|
async for result in self.enrichment_service.enrich_documents(
|
|
301
312
|
enrichment_request
|
|
302
313
|
):
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
result.text
|
|
306
|
-
+ "\n\n```\n"
|
|
307
|
-
+ next(s.content for s in snippets if s.id == result.snippet_id)
|
|
308
|
-
+ "\n```"
|
|
309
|
-
)
|
|
310
|
-
|
|
311
|
-
await self.snippet_domain_service.update_snippet_content(
|
|
312
|
-
result.snippet_id, enriched_content
|
|
314
|
+
await self.snippet_domain_service.update_snippet_summary(
|
|
315
|
+
result.snippet_id, result.text
|
|
313
316
|
)
|
|
314
317
|
|
|
315
318
|
processed += 1
|