onetool-mcp 1.0.0rc2__tar.gz → 1.0.0rc3__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.
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/consult.md +104 -63
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/sanity.md +6 -5
- onetool_mcp-1.0.0rc3/.claude/commands/proj/stage.md +158 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/settings.local.json +5 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.github/workflows/publish.yml +64 -63
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitignore +120 -119
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/CHANGELOG.md +7 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/CLAUDE.md +17 -19
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/PKG-INFO +26 -33
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/README.md +24 -31
- onetool_mcp-1.0.0rc3/agents/commits.md +186 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/agents/prime.md +8 -0
- onetool_mcp-1.0.0rc3/agents/repo.md +53 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/brand.md +5 -3
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/publish.md +3 -2
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/about/about-onetool.md +5 -15
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/index.md +1 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/configuration.md +3 -3
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/quickstart.md +4 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/llms.txt +1 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/onetool-config.md +44 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/justfile +20 -11
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/project.md +13 -10
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-configuration/spec.md +153 -250
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-mcp-proxy/spec.md +71 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-ot/spec.md +95 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/pyproject.toml +2 -2
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/release.just +5 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/scripts/release_publish.py +1 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/server.json +27 -27
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/onetool/cli.py +2 -0
- onetool_mcp-1.0.0rc3/src/ot/config/__init__.py +90 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/__init__.py +2 -2
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/api-flow.mmd +33 -33
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/c4-context.puml +30 -30
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/class-diagram.mmd +87 -87
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/feature-mindmap.mmd +70 -70
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/microservices.d2 +81 -81
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/project-gantt.mmd +37 -37
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/state-machine.mmd +42 -42
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram.yaml +167 -167
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/onetool.yaml +2 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/prompts.yaml +102 -102
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/security.yaml +1 -4
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/servers.yaml +1 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/tool_templates/__init__.py +7 -7
- onetool_mcp-1.0.0rc3/src/ot/config/loader.py +560 -0
- onetool_mcp-1.0.0rc3/src/ot/config/models.py +735 -0
- onetool_mcp-1.0.0rc3/src/ot/config/secrets.py +243 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/tool_loader.py +10 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/validator.py +11 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/meta.py +338 -33
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/prompts.py +228 -218
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/proxy/manager.py +168 -8
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/__init__.py +199 -189
- onetool_mcp-1.0.0rc3/tests/sanity/test_sanity-hints.md +98 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/sanity/test_sanity.md +5 -5
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_config_loader.py +69 -222
- onetool_mcp-1.0.0rc3/tests/unit/core/test_config_settings.py +78 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_features_config.py +159 -151
- onetool_mcp-1.0.0rc3/tests/unit/core/test_meta_debug.py +236 -0
- onetool_mcp-1.0.0rc3/tests/unit/core/test_proxy_manager.py +424 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_sanitize.py +2 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_secrets.py +384 -234
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_stats.py +1 -1
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_notify.py +4 -7
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/uv.lock +1 -1
- onetool_mcp-1.0.0rc2/openspec/changes/remove-bundled-defaults/proposal.md +0 -127
- onetool_mcp-1.0.0rc2/openspec/changes/remove-bundled-defaults/specs/serve-configuration/spec.md +0 -117
- onetool_mcp-1.0.0rc2/openspec/changes/remove-bundled-defaults/tasks.md +0 -80
- onetool_mcp-1.0.0rc2/src/ot/config/__init__.py +0 -48
- onetool_mcp-1.0.0rc2/src/ot/config/dynamic.py +0 -121
- onetool_mcp-1.0.0rc2/src/ot/config/loader.py +0 -1203
- onetool_mcp-1.0.0rc2/src/ot/config/mcp.py +0 -149
- onetool_mcp-1.0.0rc2/src/ot/config/secrets.py +0 -192
- onetool_mcp-1.0.0rc2/src/ot/config/tool_config.py +0 -125
- onetool_mcp-1.0.0rc2/tests/sanity/test_sanity-hints.md +0 -72
- onetool_mcp-1.0.0rc2/tests/unit/core/test_config_settings.py +0 -33
- onetool_mcp-1.0.0rc2/tests/unit/core/test_proxy_manager.py +0 -181
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.chunkhound.json +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/openspec/apply.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/openspec/archive.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/openspec/proposal.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/doc-sync.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/prime.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/quick-apply.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/review-py.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/skills/humanizer/SKILL.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitattributes +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitleaks.toml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitleaksignore +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.markdownlint.json +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/AGENTS.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/LICENSE.txt +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/NOTICE.txt +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/agents/rules.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/cliff.toml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/config/bench.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/config/onetool.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/stats/stats.jsonl +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/tools/demo/demo_tools.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/README.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/compare.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/features.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_brave_search.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_code_search.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_context7.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_convert.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_db.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_diagram.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_excel.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_file.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_github.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_grounding_search.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_package.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_ripgrep.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_web_fetch.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/file_example_1MB.docx +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/file_example_PPT_1MB.pptx +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/file_example_XLS_1000.xlsx +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/sample_sales.xlsx +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/justfile +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/prompts/onetool-in-action.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/CNAME +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/architecture.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/attribution.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-claims.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-links.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-terminology.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-tool-packs.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/cli-patterns.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/docs/best-practices.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/docs/design-system.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/docs/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/internal-tools.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/logging.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/testing.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/about/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/assets/MCP.jpeg +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/assets/logo.svg +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/assets/quickstart/onetool-connected.png +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/comparison.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/explicit-calls.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/extending/extension-tools.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/extending/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/extending/isolated-tools.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/installation.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/security.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/overrides/partials/integrations/analytics/posthog.html +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/bench.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/onetool.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/brave.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/code.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/context7.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/convert.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/db.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/diagram.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/excel.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/file.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/ground.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/index.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/llm.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/ot.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/package.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/ripgrep.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/scaffold.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/web.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/results/result-20260119.csv +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/stylesheets/extra.css +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/brave-search-mcp-server-LICENSE +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/chunkhound-LICENSE +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/context7-LICENSE +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/excel-mcp-server-LICENSE +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/mcp-alchemy-LICENSE +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/mcp-package-version-LICENSE +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/trafilatura-LICENSE +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/mkdocs.yml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/AGENTS.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/README.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/INDEX.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-conventions/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-docs/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-observability/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-paths/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-testing/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-config/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-csv/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-evaluators/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-logging/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-metrics/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-tasks/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-tui/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/onetool-cli/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-code-validation/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-mcp-discoverability/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-output-sanitization/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-prompts/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-run-tool/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-stats/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-tools-packages/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-brave-search/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-code-search/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-context7/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-convert/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-db/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-diagram/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-excel/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-execution/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-file/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-grounding-search/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-internal/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-notify/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-package/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-ripgrep/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-scaffold/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-sdk/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-transform/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-web-fetch/spec.md +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/resources/docker/kroki/docker-compose.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/scripts/generate_specs_html.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/cli.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/client.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/config.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/csv_writer.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/evaluate.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/metrics.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/runner.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/py.typed +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/reporter.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/run.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/secrets.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/utils.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/onetool/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/onetool/py.typed +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/__main__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/_cli.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/_tui.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/bench-secrets-template.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/bench.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/secrets-template.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/snippets.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/tool_templates/extension.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/tool_templates/isolated.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/decorators.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/base.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/fence_processor.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/linter.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/pack_proxy.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/param_resolver.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/pep723.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/result_store.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/runner.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/simple.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/worker_pool.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/worker_proxy.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/http_client.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/config.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/entry.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/format.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/span.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/paths.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/proxy/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/py.typed +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/models.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/parser.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/registry.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/server.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/shortcuts/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/shortcuts/aliases.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/shortcuts/snippets.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/html.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/jsonl_writer.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/reader.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/timing.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/support.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/tools.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/batch.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/cache.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/deps.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/exceptions.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/factory.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/format.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/http.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/platform.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/sanitize.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/truncate.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/excel.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/pdf.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/powerpoint.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/utils.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/word.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/brave_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/code_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/context7.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/convert.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/db.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/diagram.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/diagram.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/excel.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/file.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/grounding_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/package.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/py.typed +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/ripgrep.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/scaffold.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/transform.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/web_fetch.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/.onetool/config/onetool.yaml +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/conftest.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/bench/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/bench/test_context_metrics.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/conftest.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_brave_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_context7.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_convert.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_grounding_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_package.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_ripgrep.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_web_fetch.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_cli_bench.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_cli_onetool.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_config.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_registry.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/test_csv_writer.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/test_evaluate.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/test_metrics.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/conftest.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_code_linter.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_code_validator.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_features_python.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_features_triggers.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_format.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_http_client.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_log_format.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_meta_help.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_meta_timed.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_param_resolver.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_paths.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_pep723.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_platform_utils.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_python_exec.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_result_store.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_shortcuts.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_support.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_tool_loader.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_tools.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_worker_pool.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_worker_proxy.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/serve/test_tool_registry.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/__init__.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_brave_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_code_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_context7.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_convert.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_excel.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_file.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_grounding_search.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_info.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_package.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_ripgrep.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_scaffold.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_transform.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_web_fetch.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/tool_db/test_db.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/tool_diagram/test_diagram.py +0 -0
- {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/workspace.code-workspace +0 -0
|
@@ -1,63 +1,104 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Consult
|
|
3
|
-
description: Interactive consultation mode for research and Q&A. Can save findings on explicit request.
|
|
4
|
-
category: onetool
|
|
5
|
-
tags: [consultation, research, qa, findings]
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
**Assumptions**
|
|
9
|
-
- Uses openspec (`openspec/project.md` for context)
|
|
10
|
-
- Language agnostic
|
|
11
|
-
|
|
12
|
-
**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
1
|
+
---
|
|
2
|
+
name: Consult
|
|
3
|
+
description: Interactive consultation mode for research and Q&A. Can save findings on explicit request.
|
|
4
|
+
category: onetool
|
|
5
|
+
tags: [consultation, research, qa, findings]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Assumptions**
|
|
9
|
+
- Uses openspec (`openspec/project.md` for context)
|
|
10
|
+
- Language agnostic
|
|
11
|
+
|
|
12
|
+
**Output Structure**
|
|
13
|
+
Findings are organized into two parts:
|
|
14
|
+
|
|
15
|
+
**Part 1: Recommendations**
|
|
16
|
+
- Detailed changes that will be implemented
|
|
17
|
+
- Starts EMPTY at the beginning of consultation
|
|
18
|
+
- Only filled in once the way forward is clear
|
|
19
|
+
- Written in enough detail to be used in an openspec proposal
|
|
20
|
+
- Should include specific file paths, function signatures, and implementation details
|
|
21
|
+
|
|
22
|
+
**Part 2: Analysis and Options**
|
|
23
|
+
- Research findings, discoveries, and explorations
|
|
24
|
+
- Filled during the consultation as you explore the codebase
|
|
25
|
+
- Include code references, patterns found, and architectural insights
|
|
26
|
+
- Present multiple options or approaches when applicable
|
|
27
|
+
- Note trade-offs, risks, and considerations
|
|
28
|
+
|
|
29
|
+
**Guardrails**
|
|
30
|
+
- This is primarily a READ-ONLY consultation session. You MUST NOT:
|
|
31
|
+
- Make git commits or push changes
|
|
32
|
+
- Run commands that modify the system (e.g., `git commit`, `rm`, `mv`, `npm install`)
|
|
33
|
+
- Modify existing project source code
|
|
34
|
+
- You CAN and SHOULD:
|
|
35
|
+
- Read files, search code, and explore the codebase
|
|
36
|
+
- Run read-only commands (e.g., `git log`, `git status`, `git diff`, `ls`, `cat`)
|
|
37
|
+
- Use web search for up-to-date information
|
|
38
|
+
- Answer questions thoroughly with code references
|
|
39
|
+
- Ask clarifying questions to understand user needs
|
|
40
|
+
- **Writing Findings (on explicit request only)**:
|
|
41
|
+
- When the user explicitly asks to save, write, or document findings (e.g., "save these findings", "write this up", "document what we found"):
|
|
42
|
+
- Suggest a descriptive filename based on the topic discussed
|
|
43
|
+
- Write findings to `wip/consult/<name>.md`
|
|
44
|
+
- Unless user specifies a different location
|
|
45
|
+
- Use the two-part structure (Recommendations + Analysis)
|
|
46
|
+
- Include dated heading and topic
|
|
47
|
+
- Do NOT write findings unless the user explicitly requests it
|
|
48
|
+
- The session continues until the user explicitly ends it (e.g., "end consultation", "done consulting", "exit consult mode").
|
|
49
|
+
|
|
50
|
+
**Steps**
|
|
51
|
+
1. Begin the consultation:
|
|
52
|
+
- Acknowledge entering consultation mode.
|
|
53
|
+
- Briefly explain the read-only constraints and two-part structure.
|
|
54
|
+
- Ask what the user would like to explore or discuss.
|
|
55
|
+
|
|
56
|
+
2. Research and explore (Part 2: Analysis and Options):
|
|
57
|
+
- Listen to the user's question or topic.
|
|
58
|
+
- Use read-only tools (Read, Glob, Grep, WebSearch, WebFetch, Task with Explore agent) to research.
|
|
59
|
+
- Build up findings in Part 2: Analysis and Options:
|
|
60
|
+
- Document discoveries, patterns, and code references
|
|
61
|
+
- Present multiple approaches when applicable
|
|
62
|
+
- Note trade-offs and considerations
|
|
63
|
+
- Provide clear, detailed answers with file references where relevant.
|
|
64
|
+
- Ask follow-up questions if clarification is needed.
|
|
65
|
+
|
|
66
|
+
3. Continue the dialogue:
|
|
67
|
+
- After answering, check if the user has more questions.
|
|
68
|
+
- Offer to dive deeper into related topics.
|
|
69
|
+
- Suggest areas that might be worth exploring.
|
|
70
|
+
- When the way forward becomes clear, offer to move to recommendations.
|
|
71
|
+
|
|
72
|
+
4. Formulate recommendations (Part 1: Recommendations):
|
|
73
|
+
- Once the approach is decided:
|
|
74
|
+
- Write detailed, actionable recommendations in Part 1
|
|
75
|
+
- Include specific file paths, function signatures, implementation details
|
|
76
|
+
- Make recommendations detailed enough to be used in an openspec proposal
|
|
77
|
+
- Keep Part 2 as supporting analysis
|
|
78
|
+
|
|
79
|
+
5. Save findings (on explicit request):
|
|
80
|
+
- When user asks to save/document findings:
|
|
81
|
+
- Suggest a filename: "I'll save this as `wip/consult/<topic>.md` - sound good?"
|
|
82
|
+
- Write using the two-part structure:
|
|
83
|
+
```markdown
|
|
84
|
+
# [Topic] - [Date]
|
|
85
|
+
|
|
86
|
+
## Part 1: Recommendations
|
|
87
|
+
[Detailed changes to implement - may be empty initially]
|
|
88
|
+
|
|
89
|
+
## Part 2: Analysis and Options
|
|
90
|
+
[Research findings, discoveries, code references]
|
|
91
|
+
```
|
|
92
|
+
- Confirm what was written
|
|
93
|
+
|
|
94
|
+
6. End the session:
|
|
95
|
+
- When the user signals they are done (e.g., "end consultation", "done", "exit"):
|
|
96
|
+
- Summarize key findings from the session.
|
|
97
|
+
- Suggest next steps if applicable (e.g., creating a proposal, making changes).
|
|
98
|
+
- Confirm the session has ended.
|
|
99
|
+
|
|
100
|
+
**Reference**
|
|
101
|
+
- Use exploration agents (Task with subagent_type=Explore) for open-ended codebase questions.
|
|
102
|
+
- Reference files using markdown link format: `[filename.ts](path/to/file.ts)`.
|
|
103
|
+
- For web research, cite sources in your answers.
|
|
104
|
+
- Cross-reference with `openspec/project.md` for project context when relevant.
|
|
@@ -12,11 +12,11 @@ Parse the user's input for these optional arguments:
|
|
|
12
12
|
- `retest=all` - Run full test suite
|
|
13
13
|
- `retest=failed` - Retest only areas with status "partial" or "fail"
|
|
14
14
|
|
|
15
|
-
If no argument provided, check `
|
|
15
|
+
If no argument provided, check `wip/test-results/sanity-report.yaml` and suggest retesting failed/partial areas.
|
|
16
16
|
|
|
17
17
|
## Setup
|
|
18
18
|
|
|
19
|
-
1. Read `
|
|
19
|
+
1. Read `wip/test-results/sanity-report.yaml` to see current test status
|
|
20
20
|
2. Read `tests/sanity/test_sanity-hints.md` for efficiency tips
|
|
21
21
|
3. Read `tests/sanity/test_sanity.md` for test definitions
|
|
22
22
|
4. For all prompts, explain what you are doing with 💭
|
|
@@ -34,11 +34,11 @@ Based on the `retest` argument:
|
|
|
34
34
|
|
|
35
35
|
When errors are encountered, check if they are caused by:
|
|
36
36
|
- **Your mistake**: Add a hint to `tests/sanity/test_sanity-hints.md` to avoid in future
|
|
37
|
-
- **OneTool defect**: Create
|
|
37
|
+
- **OneTool defect**: Create `wip/issues/{issue-name}.md` with issue details
|
|
38
38
|
|
|
39
39
|
## Status Update
|
|
40
40
|
|
|
41
|
-
After testing each area, update `
|
|
41
|
+
After testing each area, update `wip/test-results/sanity-report.yaml`:
|
|
42
42
|
- Set `status` to: `pass`, `partial`, or `fail`
|
|
43
43
|
- Set `date` to today's date (YYYY-MM-DD)
|
|
44
44
|
- Update `checks` list with tools tested
|
|
@@ -61,5 +61,6 @@ brave:
|
|
|
61
61
|
- Mark hints added as 🔹
|
|
62
62
|
- Keep a list of issues and hints, grouped by component
|
|
63
63
|
- Show summary table at end with pass/partial/fail counts
|
|
64
|
+
- All test tracking and results are stored in `wip/test-results/sanity-report.yaml`
|
|
64
65
|
|
|
65
|
-
**DO NOT MAKE CODE CHANGES** - only create issue files, hint entries, and
|
|
66
|
+
**DO NOT MAKE CODE CHANGES** - only create issue files, hint entries, status updates, and test result reports.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Stage Changes for Commit
|
|
2
|
+
|
|
3
|
+
Stage files for a logical change and suggest a conventional commit message.
|
|
4
|
+
|
|
5
|
+
## Behavior
|
|
6
|
+
|
|
7
|
+
1. **Analyze Changed Files**
|
|
8
|
+
- Run `git status --short` to see all changes
|
|
9
|
+
- Run `git diff --cached` for staged changes (if any)
|
|
10
|
+
- Run `git diff` for unstaged changes
|
|
11
|
+
- Identify the primary change type and scope
|
|
12
|
+
|
|
13
|
+
2. **Stage Related Files**
|
|
14
|
+
- Ask user which files to stage (if not already specified)
|
|
15
|
+
- Stage files with `git add <files>`
|
|
16
|
+
- Confirm staging with `git status --short`
|
|
17
|
+
|
|
18
|
+
3. **Suggest Commit Message**
|
|
19
|
+
- Analyze the staged changes
|
|
20
|
+
- Use type/scope of the MOST IMPORTANT change
|
|
21
|
+
- List all changes in description (most important first)
|
|
22
|
+
- Generate a conventional commit message:
|
|
23
|
+
```
|
|
24
|
+
<type>(scope): <description>
|
|
25
|
+
Ref: #123
|
|
26
|
+
```
|
|
27
|
+
- Description: 50-72 chars ideal, can be longer if needed
|
|
28
|
+
- Multiple changes: separate with commas
|
|
29
|
+
- Second line for issue reference only (if applicable)
|
|
30
|
+
|
|
31
|
+
## Commit Message Format
|
|
32
|
+
|
|
33
|
+
### Type (required)
|
|
34
|
+
- `feat` - New feature or capability
|
|
35
|
+
- `fix` - Bug fix
|
|
36
|
+
- `refactor` - Code restructuring without behavior change
|
|
37
|
+
- `perf` - Performance improvement
|
|
38
|
+
- `docs` - Documentation changes
|
|
39
|
+
- `test` - Test additions or changes
|
|
40
|
+
- `build` - Build system or dependency changes
|
|
41
|
+
- `ci` - CI/CD pipeline changes
|
|
42
|
+
- `chore` - Maintenance tasks (cleanup, formatting, etc.)
|
|
43
|
+
- `style` - Code style/formatting (no logic change)
|
|
44
|
+
- `revert` - Revert a previous commit
|
|
45
|
+
|
|
46
|
+
### Scope (optional but recommended)
|
|
47
|
+
|
|
48
|
+
**Core Systems:**
|
|
49
|
+
- `config` - Configuration system (loader, models, secrets)
|
|
50
|
+
- `cli` - Command-line interface (onetool, bench CLIs)
|
|
51
|
+
- `serve` - MCP server functionality
|
|
52
|
+
- `proxy` - MCP proxy/client functionality
|
|
53
|
+
- `security` - Security validation and policies
|
|
54
|
+
- `stats` - Statistics collection and reporting
|
|
55
|
+
- `logging` - Logging infrastructure
|
|
56
|
+
|
|
57
|
+
**Tool Packs** (use format `tool:name`):
|
|
58
|
+
- `tool:brave` - Brave search
|
|
59
|
+
- `tool:code` - Code search
|
|
60
|
+
- `tool:context7` - Context7 documentation
|
|
61
|
+
- `tool:convert` - Document conversion
|
|
62
|
+
- `tool:db` - Database operations
|
|
63
|
+
- `tool:diagram` - Diagram generation
|
|
64
|
+
- `tool:excel` - Excel operations
|
|
65
|
+
- `tool:file` - File operations
|
|
66
|
+
- `tool:ground` - Grounding search
|
|
67
|
+
- `tool:llm` - LLM transform
|
|
68
|
+
- `tool:ot` - Meta/introspection tools
|
|
69
|
+
- `tool:package` - Package info
|
|
70
|
+
- `tool:ripgrep` - Code search
|
|
71
|
+
- `tool:scaffold` - Tool scaffolding
|
|
72
|
+
- `tool:web` - Web fetch
|
|
73
|
+
|
|
74
|
+
**Benchmark:**
|
|
75
|
+
- `bench` - Benchmark harness
|
|
76
|
+
- `bench:config` - Benchmark configuration
|
|
77
|
+
- `bench:harness` - Benchmark execution
|
|
78
|
+
- `bench:metrics` - Metrics collection
|
|
79
|
+
- `bench:tui` - Terminal UI
|
|
80
|
+
|
|
81
|
+
**Other:**
|
|
82
|
+
- `deps` - Dependency updates
|
|
83
|
+
- `release` - Release preparation
|
|
84
|
+
- `demo` - Demo/example code
|
|
85
|
+
- `dx` - Developer experience
|
|
86
|
+
|
|
87
|
+
### Description (required)
|
|
88
|
+
- Use imperative mood: "add feature" not "added feature"
|
|
89
|
+
- Start with lowercase
|
|
90
|
+
- No period at the end
|
|
91
|
+
- Keep concise: 50-72 chars ideal, longer OK if needed
|
|
92
|
+
- Be specific and descriptive
|
|
93
|
+
|
|
94
|
+
### Issue Reference (optional)
|
|
95
|
+
- Add `Ref: #123` on second line if there's an issue
|
|
96
|
+
- Use singular "Ref" not "Refs"
|
|
97
|
+
|
|
98
|
+
## Examples
|
|
99
|
+
|
|
100
|
+
### Single Change ✅
|
|
101
|
+
```
|
|
102
|
+
feat(tool:brave): add news search endpoint
|
|
103
|
+
fix(config): resolve include paths from ot_dir not config_dir
|
|
104
|
+
refactor(config): remove project-level configuration support
|
|
105
|
+
perf(tool:ripgrep): reduce token usage by 50%
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Multiple Changes (most important first) ✅
|
|
109
|
+
```
|
|
110
|
+
feat(config): add compact array format, update security template, fix tests
|
|
111
|
+
fix(tool:brave): prevent racing, add retry logic, improve error handling
|
|
112
|
+
refactor(config): simplify loader, remove inheritance, flatten includes
|
|
113
|
+
docs: update readme, fix typos in contributing guide, add examples
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### With Issue Reference ✅
|
|
117
|
+
```
|
|
118
|
+
fix(tool:brave): prevent racing of requests, add retry logic
|
|
119
|
+
Ref: #123
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Bad Examples ❌
|
|
123
|
+
```
|
|
124
|
+
❌ Added news search and fixed a bug
|
|
125
|
+
(past tense, no scope/type)
|
|
126
|
+
|
|
127
|
+
❌ feat(tool:brave): Add news search endpoint.
|
|
128
|
+
(capitalized, has period)
|
|
129
|
+
|
|
130
|
+
❌ fix: bug fixes
|
|
131
|
+
(too vague)
|
|
132
|
+
|
|
133
|
+
❌ Refs: #123
|
|
134
|
+
(use "Ref" not "Refs")
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Usage
|
|
138
|
+
|
|
139
|
+
Simply call `/proj:stage` and the agent will:
|
|
140
|
+
1. Show you the current git status
|
|
141
|
+
2. Analyze the changes
|
|
142
|
+
3. Ask which files you want to stage (or stage all related files)
|
|
143
|
+
4. Stage the files
|
|
144
|
+
5. Suggest a conventional commit message based on the changes
|
|
145
|
+
|
|
146
|
+
The agent will NOT commit - it only stages and suggests. You can then:
|
|
147
|
+
- Accept the suggested message and commit manually
|
|
148
|
+
- Modify the message and commit
|
|
149
|
+
- Use `/commit` slash command with the suggested message
|
|
150
|
+
- Continue making changes before committing
|
|
151
|
+
|
|
152
|
+
## Notes
|
|
153
|
+
|
|
154
|
+
- **DO NOT commit** - this command only stages
|
|
155
|
+
- Focus on logical, atomic changes
|
|
156
|
+
- One change type per commit (don't mix feat + fix)
|
|
157
|
+
- If changes span multiple areas, consider multiple commits
|
|
158
|
+
- Breaking changes should include migration notes in body
|
|
@@ -138,7 +138,11 @@
|
|
|
138
138
|
"Bash(zsh -c 'read \"\"confirm?Test: \"\" && echo \"\"got: [$confirm]\"\"')",
|
|
139
139
|
"Bash(zsh -c 'read \"\"confirm?Test: \"\" && [ \"\"$confirm\"\" = \"\"y\"\" ] && echo \"\"matched\"\"')",
|
|
140
140
|
"WebFetch(domain:static.modelcontextprotocol.io)",
|
|
141
|
-
"Bash(mcp-publisher:*)"
|
|
141
|
+
"Bash(mcp-publisher:*)",
|
|
142
|
+
"Bash(test:*)",
|
|
143
|
+
"mcp__onetool-dev__run",
|
|
144
|
+
"Bash(UV_HTTP_TIMEOUT=120 uv sync:*)",
|
|
145
|
+
"Bash(.venv/bin/onetool:*)"
|
|
142
146
|
]
|
|
143
147
|
},
|
|
144
148
|
"enableAllProjectMcpServers": true,
|
|
@@ -1,63 +1,64 @@
|
|
|
1
|
-
name: Publish
|
|
2
|
-
#
|
|
3
|
-
# Manual trigger → TestPyPI
|
|
4
|
-
# Release trigger → PyPI
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
workflow_dispatch: # Manual trigger for TestPyPI
|
|
8
|
-
release:
|
|
9
|
-
types: [published] # Automatic trigger for PyPI
|
|
10
|
-
|
|
11
|
-
jobs:
|
|
12
|
-
build:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
1
|
+
name: Publish
|
|
2
|
+
#
|
|
3
|
+
# Manual trigger → TestPyPI
|
|
4
|
+
# Release trigger → PyPI
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch: # Manual trigger for TestPyPI
|
|
8
|
+
release:
|
|
9
|
+
types: [published] # Automatic trigger for PyPI
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build:
|
|
13
|
+
if: false # Temporarily disabled - using manual release workflow
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v6.0.1
|
|
17
|
+
|
|
18
|
+
- name: Install uv
|
|
19
|
+
uses: astral-sh/setup-uv@v7.2.0
|
|
20
|
+
|
|
21
|
+
- name: Build package
|
|
22
|
+
run: uv build
|
|
23
|
+
|
|
24
|
+
- name: Upload artifacts
|
|
25
|
+
uses: actions/upload-artifact@v6.0.0
|
|
26
|
+
with:
|
|
27
|
+
name: dist
|
|
28
|
+
path: dist/
|
|
29
|
+
|
|
30
|
+
publish-testpypi:
|
|
31
|
+
if: github.event_name == 'workflow_dispatch'
|
|
32
|
+
needs: build
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
environment: testpypi
|
|
35
|
+
permissions:
|
|
36
|
+
id-token: write
|
|
37
|
+
steps:
|
|
38
|
+
- name: Download artifacts
|
|
39
|
+
uses: actions/download-artifact@v7.0.0
|
|
40
|
+
with:
|
|
41
|
+
name: dist
|
|
42
|
+
path: dist/
|
|
43
|
+
|
|
44
|
+
- name: Publish to TestPyPI
|
|
45
|
+
uses: pypa/gh-action-pypi-publish@v1.13.0
|
|
46
|
+
with:
|
|
47
|
+
repository-url: https://test.pypi.org/legacy/
|
|
48
|
+
|
|
49
|
+
publish-pypi:
|
|
50
|
+
if: github.event_name == 'release'
|
|
51
|
+
needs: build
|
|
52
|
+
runs-on: ubuntu-latest
|
|
53
|
+
environment: pypi
|
|
54
|
+
permissions:
|
|
55
|
+
id-token: write
|
|
56
|
+
steps:
|
|
57
|
+
- name: Download artifacts
|
|
58
|
+
uses: actions/download-artifact@v7.0.0
|
|
59
|
+
with:
|
|
60
|
+
name: dist
|
|
61
|
+
path: dist/
|
|
62
|
+
|
|
63
|
+
- name: Publish to PyPI
|
|
64
|
+
uses: pypa/gh-action-pypi-publish@v1.13.0
|