reprompt-cli 2.2.1__tar.gz → 2.2.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.
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/CHANGELOG.md +5 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/PKG-INFO +1 -1
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/pyproject.toml +1 -1
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/mcp.py +27 -93
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_mcp.py +43 -31
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/uv.lock +1 -1
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.editorconfig +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/dependabot.yml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/workflows/ci.yml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.github/workflows/publish.yml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.gitignore +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.pre-commit-config.yaml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.pre-commit-hooks.yaml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.testmondata-shm +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/.testmondata-wal +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/CODE_OF_CONDUCT.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/CONTRIBUTING.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/LICENSE +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/README.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/SECURITY.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/Screenshot 2026-03-24 at 09.45.03.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/action.yml +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/demo.gif +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon-128.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon-16.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon-256.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon-32.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon-48.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon-512.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon-96.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/brand-icon.svg +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon-128.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon-16.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon-256.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon-32.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon-48.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon-512.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon-96.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-favicon.svg +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon-128.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon-16.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon-256.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon-32.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon-48.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon-512.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon-96.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/cli-icon.svg +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon-128.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon-16.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon-256.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon-32.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon-48.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon-512.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon-96.png +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/favicon.svg +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/icons/generate.sh +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/superpowers/specs/2026-03-24-v14-command-consolidation-design.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/superpowers/specs/2026-03-25-v1.5-dashboard-design.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/scripts/generate_demo_data.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/aider.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/base.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/chatgpt.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/claude_chat.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/claude_code.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/cline.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/codex.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/cursor.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/filters.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/gemini.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/adapters/openclaw.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/bridge/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/bridge/handler.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/bridge/host.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/bridge/manifest.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/bridge/protocol.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/commands/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/commands/telemetry.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/commands/wrapped.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/config.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/agent.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/analyzer.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/build.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/check.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/compress.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/conversation.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/cost.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/dashboard.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/dedup.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/digest.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/distill.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/effectiveness.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/explain.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/extractors.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/extractors_zh.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/insights.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/lang_detect.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/library.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/lint.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/merge_view.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/models.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/persona.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/pipeline.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/privacy.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/privacy_scan.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/prompt_dna.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/recommend.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/repetition.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/rewrite.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/scorer.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/segmenter.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/session_meta.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/session_quality.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/session_type.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/style.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/suggestions.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/templates.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/timeutil.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/trends.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/core/wrapped.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/demo.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/embeddings/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/embeddings/base.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/embeddings/local_embed.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/embeddings/ollama.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/embeddings/openai_embed.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/embeddings/tfidf.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/mcp_main.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/agent_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/build_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/chartjs.min.js +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/check_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/compress_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/dashboard_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/distill_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/explain_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/export.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/html_report.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/json_out.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/markdown.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/projects_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/repetition_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/rewrite_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/sessions_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/wrapped_html.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/output/wrapped_terminal.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/py.typed +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/sharing/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/sharing/client.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/sharing/clipboard.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/storage/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/storage/db.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/telemetry/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/telemetry/collector.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/telemetry/consent.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/telemetry/events.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/telemetry/prompt.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/telemetry/queue.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/src/reprompt/telemetry/sender.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/__init__.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/conftest.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/aider_chat_history.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/chatgpt_conversations.json +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/claude_chat_export.json +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/claude_session.jsonl +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/cline_task/api_conversation_history.json +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/export/default_export.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/export/full_export.md +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/gemini_session.json +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/fixtures/openclaw_session.jsonl +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_adapter_aider.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_adapter_chatgpt.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_adapter_claude.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_adapter_claude_chat.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_adapter_cline.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_adapter_gemini.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_adapter_openclaw.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_agent.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_agent_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_analyzer.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_bridge_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_bridge_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_bridge_handler.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_bridge_integration.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_bridge_manifest.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_bridge_protocol.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_build.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_build_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_build_output.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_check.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_check_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_cli_deprecations.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_cli_library_effectiveness.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_clipboard.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_codex_adapter.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_compare_best_worst.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_compress.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_compress_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_compress_dna.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_compress_html.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_compress_insights.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_config.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_conversation.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_copy_flag.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_cost.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_coverage_boost.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_cursor_adapter.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_dashboard.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_db.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_db_digest.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_db_effectiveness.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_db_session_quality.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_db_trends.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_dedup.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_demo.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_deprecated_commands.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_digest.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_digest_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_distill.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_distill_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_distill_weights.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_effectiveness.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_embeddings_local.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_embeddings_ollama.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_embeddings_openai.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_empty_state.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_explain.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_explain_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_export.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_export_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_export_snapshot.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_extractors.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_extractors_routing.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_extractors_zh.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_extractors_zh_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_file_input.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_html_report.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_import_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_import_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_init_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_insights.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_insights_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_insights_expanded.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_install_hook.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_lang_detect.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_library.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_lint.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_lint_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_markdown.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_merge_view.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_models.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_output.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_parse_conversation_base.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_parse_conversation_chatgpt.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_parse_conversation_claude.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_persona.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_pipeline.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_privacy.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_privacy_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_privacy_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_privacy_output.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_privacy_scan.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_projects.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_prompt_dna.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_public_api.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_recommend.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_repetition.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_repetition_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_repetition_output.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_rewrite.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_schema_version.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_score_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_scorer.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_segmenter.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_session_quality.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_session_type.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_sessions_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_sessions_output.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_share_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_sharing_client.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_source_filter.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_style.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_style_trends.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_suggestions.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_collector.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_consent.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_events.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_prompt.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_queue.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_telemetry_sender.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_template_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_templates.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_timeutil.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_trends.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_trends_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_use_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_wrapped.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_wrapped_cli.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_wrapped_e2e.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_wrapped_html.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_wrapped_output.py +0 -0
- {reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/tests/test_wrapped_share.py +0 -0
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [2.2.2] - 2026-04-01
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **MCP server consolidated** — 9→7 tools. Merged `check_prompt_quality` and `explain_prompt_quality` into an enhanced `score_prompt` that now returns tier, strengths, lint issues, and auto-rewrite. Each tool has a distinct, non-overlapping purpose. Follows MCP best practice of 2-7 focused tools.
|
|
9
|
+
|
|
5
10
|
## [2.2.1] - 2026-04-01
|
|
6
11
|
|
|
7
12
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reprompt-cli
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.2
|
|
4
4
|
Summary: Discover, analyze, and optimize your prompts from AI coding sessions
|
|
5
5
|
Project-URL: Homepage, https://github.com/reprompt-dev/reprompt
|
|
6
6
|
Project-URL: Repository, https://github.com/reprompt-dev/reprompt
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""MCP server for reprompt — exposes prompt analytics as
|
|
1
|
+
"""MCP server for reprompt — exposes prompt analytics as 7 focused tools.
|
|
2
2
|
|
|
3
3
|
Usage:
|
|
4
4
|
python -m reprompt.mcp # stdio transport (default)
|
|
@@ -187,37 +187,42 @@ def compress_prompt(text: str) -> str:
|
|
|
187
187
|
|
|
188
188
|
|
|
189
189
|
@mcp.tool
|
|
190
|
-
def score_prompt(text: str) -> str:
|
|
191
|
-
"""Score a prompt
|
|
190
|
+
def score_prompt(text: str, model: str | None = None) -> str:
|
|
191
|
+
"""Score a prompt and get a full quality report (0-100).
|
|
192
192
|
|
|
193
|
-
Returns
|
|
194
|
-
|
|
193
|
+
Returns tier label, dimensional breakdown, strengths, improvement
|
|
194
|
+
suggestions with point values, lint issues, and an auto-rewritten
|
|
195
|
+
version. This is the single tool for all prompt quality analysis.
|
|
195
196
|
|
|
196
197
|
Args:
|
|
197
|
-
text: The prompt text to
|
|
198
|
+
text: The prompt text to analyze
|
|
199
|
+
model: Target model for model-specific lint (claude/gpt/gemini). Optional.
|
|
198
200
|
"""
|
|
199
201
|
try:
|
|
200
|
-
from reprompt.core.
|
|
201
|
-
from reprompt.core.extractors import extract_features
|
|
202
|
-
from reprompt.core.scorer import score_prompt as _score
|
|
202
|
+
from reprompt.core.check import check_prompt as _check
|
|
203
203
|
|
|
204
|
-
|
|
205
|
-
breakdown = _score(dna)
|
|
206
|
-
cost_usd = estimate_cost(dna.token_count, source="mcp")
|
|
204
|
+
result = _check(text, model=model or "")
|
|
207
205
|
return json.dumps(
|
|
208
206
|
{
|
|
209
|
-
"total":
|
|
210
|
-
"
|
|
211
|
-
"
|
|
212
|
-
"
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"
|
|
207
|
+
"total": result.total,
|
|
208
|
+
"tier": result.tier,
|
|
209
|
+
"clarity": result.clarity,
|
|
210
|
+
"context": result.context,
|
|
211
|
+
"position": result.position,
|
|
212
|
+
"structure": result.structure,
|
|
213
|
+
"repetition": result.repetition,
|
|
214
|
+
"word_count": result.word_count,
|
|
215
|
+
"token_count": result.token_count,
|
|
216
|
+
"strengths": [c["message"] for c in result.confirmations[:3]],
|
|
218
217
|
"suggestions": [
|
|
219
|
-
{"message": s
|
|
218
|
+
{"message": s["message"], "points": s.get("points", 0)}
|
|
219
|
+
for s in result.suggestions[:3]
|
|
220
220
|
],
|
|
221
|
+
"lint_issues": [
|
|
222
|
+
{"rule": i["rule"], "message": i["message"]} for i in result.lint_issues
|
|
223
|
+
],
|
|
224
|
+
"rewritten": result.rewritten if result.rewrite_changes else None,
|
|
225
|
+
"rewrite_changes": result.rewrite_changes or None,
|
|
221
226
|
},
|
|
222
227
|
indent=2,
|
|
223
228
|
)
|
|
@@ -297,47 +302,6 @@ def scan_sessions(source: str | None = None) -> str:
|
|
|
297
302
|
return json.dumps({"error": str(exc)})
|
|
298
303
|
|
|
299
304
|
|
|
300
|
-
@mcp.tool
|
|
301
|
-
def check_prompt_quality(text: str, model: str | None = None) -> str:
|
|
302
|
-
"""Full prompt diagnostic — score + lint + rewrite in one call.
|
|
303
|
-
|
|
304
|
-
Returns score breakdown, strengths, suggestions with point values,
|
|
305
|
-
lint issues, and an auto-rewritten version. The most comprehensive
|
|
306
|
-
single-call analysis available.
|
|
307
|
-
|
|
308
|
-
Args:
|
|
309
|
-
text: The prompt text to analyze
|
|
310
|
-
model: Target model for model-specific lint (claude/gpt/gemini). Optional.
|
|
311
|
-
"""
|
|
312
|
-
try:
|
|
313
|
-
from reprompt.core.check import check_prompt as _check
|
|
314
|
-
|
|
315
|
-
result = _check(text, model=model or "")
|
|
316
|
-
return json.dumps(
|
|
317
|
-
{
|
|
318
|
-
"total": result.total,
|
|
319
|
-
"tier": result.tier,
|
|
320
|
-
"clarity": result.clarity,
|
|
321
|
-
"context": result.context,
|
|
322
|
-
"position": result.position,
|
|
323
|
-
"structure": result.structure,
|
|
324
|
-
"repetition": result.repetition,
|
|
325
|
-
"word_count": result.word_count,
|
|
326
|
-
"token_count": result.token_count,
|
|
327
|
-
"confirmations": result.confirmations[:3],
|
|
328
|
-
"suggestions": result.suggestions[:3],
|
|
329
|
-
"lint_issues": result.lint_issues,
|
|
330
|
-
"rewritten": result.rewritten,
|
|
331
|
-
"rewrite_delta": result.rewrite_delta,
|
|
332
|
-
"rewrite_changes": result.rewrite_changes,
|
|
333
|
-
},
|
|
334
|
-
indent=2,
|
|
335
|
-
)
|
|
336
|
-
except Exception as exc:
|
|
337
|
-
logger.debug("check_prompt_quality error: %s", exc)
|
|
338
|
-
return json.dumps({"error": str(exc)})
|
|
339
|
-
|
|
340
|
-
|
|
341
305
|
@mcp.tool
|
|
342
306
|
def build_prompt_from_parts(
|
|
343
307
|
task: str,
|
|
@@ -394,36 +358,6 @@ def build_prompt_from_parts(
|
|
|
394
358
|
return json.dumps({"error": str(exc)})
|
|
395
359
|
|
|
396
360
|
|
|
397
|
-
@mcp.tool
|
|
398
|
-
def explain_prompt_quality(text: str) -> str:
|
|
399
|
-
"""Explain what makes a prompt good or bad in plain English.
|
|
400
|
-
|
|
401
|
-
Returns educational feedback: what's working, what's missing,
|
|
402
|
-
and specific tips to improve. No LLM needed.
|
|
403
|
-
|
|
404
|
-
Args:
|
|
405
|
-
text: The prompt text to explain
|
|
406
|
-
"""
|
|
407
|
-
try:
|
|
408
|
-
from reprompt.core.explain import explain_prompt as _explain
|
|
409
|
-
|
|
410
|
-
result = _explain(text)
|
|
411
|
-
return json.dumps(
|
|
412
|
-
{
|
|
413
|
-
"score": result.score,
|
|
414
|
-
"tier": result.tier,
|
|
415
|
-
"summary": result.summary,
|
|
416
|
-
"strengths": result.strengths,
|
|
417
|
-
"weaknesses": result.weaknesses,
|
|
418
|
-
"tips": result.tips,
|
|
419
|
-
},
|
|
420
|
-
indent=2,
|
|
421
|
-
)
|
|
422
|
-
except Exception as exc:
|
|
423
|
-
logger.debug("explain_prompt_quality error: %s", exc)
|
|
424
|
-
return json.dumps({"error": str(exc)})
|
|
425
|
-
|
|
426
|
-
|
|
427
361
|
# ─── Resources ──────────────────────────────────────────────────────────────
|
|
428
362
|
|
|
429
363
|
|
|
@@ -170,35 +170,67 @@ def test_mcp_serve_cli(tmp_path, monkeypatch):
|
|
|
170
170
|
|
|
171
171
|
|
|
172
172
|
def test_tool_count():
|
|
173
|
-
"""Verify the MCP server exposes exactly
|
|
173
|
+
"""Verify the MCP server exposes exactly 7 tools."""
|
|
174
174
|
import asyncio
|
|
175
175
|
|
|
176
176
|
from reprompt.mcp import mcp as _mcp
|
|
177
177
|
|
|
178
178
|
tools = asyncio.run(_mcp.list_tools())
|
|
179
179
|
names = [t.name for t in tools]
|
|
180
|
-
assert len(tools) ==
|
|
180
|
+
assert len(tools) == 7, f"Expected 7 tools, got {len(tools)}: {names}"
|
|
181
181
|
|
|
182
182
|
|
|
183
|
-
# ───
|
|
183
|
+
# ─── Enhanced score_prompt (unified) ──────────────────────────────────────
|
|
184
184
|
|
|
185
185
|
|
|
186
|
-
def
|
|
187
|
-
from reprompt.mcp import
|
|
186
|
+
def test_score_prompt_has_tier():
|
|
187
|
+
from reprompt.mcp import score_prompt
|
|
188
188
|
|
|
189
|
-
result = json.loads(
|
|
190
|
-
assert "total" in result
|
|
189
|
+
result = json.loads(score_prompt("fix the auth bug in login.ts"))
|
|
191
190
|
assert "tier" in result
|
|
191
|
+
assert result["tier"] in ("DRAFT", "BASIC", "GOOD", "STRONG", "EXPERT")
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
def test_score_prompt_has_strengths():
|
|
195
|
+
from reprompt.mcp import score_prompt
|
|
196
|
+
|
|
197
|
+
result = json.loads(score_prompt("fix the auth bug in login.ts"))
|
|
198
|
+
assert "strengths" in result
|
|
199
|
+
assert isinstance(result["strengths"], list)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def test_score_prompt_has_lint():
|
|
203
|
+
from reprompt.mcp import score_prompt
|
|
204
|
+
|
|
205
|
+
result = json.loads(score_prompt("fix it"))
|
|
192
206
|
assert "lint_issues" in result
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def test_score_prompt_has_rewrite():
|
|
210
|
+
from reprompt.mcp import score_prompt
|
|
211
|
+
|
|
212
|
+
result = json.loads(score_prompt("I was wondering if you could maybe fix the auth bug"))
|
|
193
213
|
assert "rewritten" in result
|
|
194
|
-
assert "
|
|
214
|
+
assert "rewrite_changes" in result
|
|
195
215
|
|
|
196
216
|
|
|
197
|
-
def
|
|
198
|
-
from reprompt.mcp import
|
|
217
|
+
def test_score_prompt_with_model():
|
|
218
|
+
from reprompt.mcp import score_prompt
|
|
199
219
|
|
|
200
|
-
result = json.loads(
|
|
220
|
+
result = json.loads(score_prompt("fix the auth bug", model="claude"))
|
|
201
221
|
assert "total" in result
|
|
222
|
+
assert "lint_issues" in result
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def test_score_prompt_suggestions_have_points():
|
|
226
|
+
from reprompt.mcp import score_prompt
|
|
227
|
+
|
|
228
|
+
result = json.loads(score_prompt("fix the auth bug"))
|
|
229
|
+
if result["suggestions"]:
|
|
230
|
+
assert "points" in result["suggestions"][0]
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
# ─── build_prompt_from_parts ──────────────────────────────────────────────
|
|
202
234
|
|
|
203
235
|
|
|
204
236
|
def test_build_prompt_from_parts():
|
|
@@ -225,23 +257,3 @@ def test_build_prompt_from_parts_minimal():
|
|
|
225
257
|
result = json.loads(build_prompt_from_parts(task="fix the bug"))
|
|
226
258
|
assert "prompt" in result
|
|
227
259
|
assert result["score"] > 0
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
def test_explain_prompt_quality():
|
|
231
|
-
from reprompt.mcp import explain_prompt_quality
|
|
232
|
-
|
|
233
|
-
result = json.loads(explain_prompt_quality("fix the auth bug in login.ts"))
|
|
234
|
-
assert "score" in result
|
|
235
|
-
assert "tier" in result
|
|
236
|
-
assert "summary" in result
|
|
237
|
-
assert "strengths" in result
|
|
238
|
-
assert "weaknesses" in result
|
|
239
|
-
assert "tips" in result
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
def test_explain_prompt_quality_short():
|
|
243
|
-
from reprompt.mcp import explain_prompt_quality
|
|
244
|
-
|
|
245
|
-
result = json.loads(explain_prompt_quality("fix it"))
|
|
246
|
-
assert result["score"] > 0
|
|
247
|
-
assert len(result["summary"]) > 0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reprompt_cli-2.2.1 → reprompt_cli-2.2.2}/docs/superpowers/specs/2026-03-25-v1.5-dashboard-design.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|