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.
Files changed (386) hide show
  1. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/consult.md +104 -63
  2. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/sanity.md +6 -5
  3. onetool_mcp-1.0.0rc3/.claude/commands/proj/stage.md +158 -0
  4. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/settings.local.json +5 -1
  5. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.github/workflows/publish.yml +64 -63
  6. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitignore +120 -119
  7. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/CHANGELOG.md +7 -0
  8. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/CLAUDE.md +17 -19
  9. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/PKG-INFO +26 -33
  10. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/README.md +24 -31
  11. onetool_mcp-1.0.0rc3/agents/commits.md +186 -0
  12. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/agents/prime.md +8 -0
  13. onetool_mcp-1.0.0rc3/agents/repo.md +53 -0
  14. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/brand.md +5 -3
  15. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/publish.md +3 -2
  16. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/about/about-onetool.md +5 -15
  17. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/index.md +1 -1
  18. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/configuration.md +3 -3
  19. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/quickstart.md +4 -1
  20. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/llms.txt +1 -1
  21. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/onetool-config.md +44 -1
  22. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/justfile +20 -11
  23. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/project.md +13 -10
  24. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-configuration/spec.md +153 -250
  25. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-mcp-proxy/spec.md +71 -0
  26. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-ot/spec.md +95 -0
  27. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/pyproject.toml +2 -2
  28. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/release.just +5 -0
  29. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/scripts/release_publish.py +1 -0
  30. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/server.json +27 -27
  31. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/onetool/cli.py +2 -0
  32. onetool_mcp-1.0.0rc3/src/ot/config/__init__.py +90 -0
  33. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/__init__.py +2 -2
  34. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/api-flow.mmd +33 -33
  35. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/c4-context.puml +30 -30
  36. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/class-diagram.mmd +87 -87
  37. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/feature-mindmap.mmd +70 -70
  38. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/microservices.d2 +81 -81
  39. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/project-gantt.mmd +37 -37
  40. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram-templates/state-machine.mmd +42 -42
  41. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/diagram.yaml +167 -167
  42. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/onetool.yaml +2 -0
  43. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/prompts.yaml +102 -102
  44. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/security.yaml +1 -4
  45. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/servers.yaml +1 -1
  46. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/tool_templates/__init__.py +7 -7
  47. onetool_mcp-1.0.0rc3/src/ot/config/loader.py +560 -0
  48. onetool_mcp-1.0.0rc3/src/ot/config/models.py +735 -0
  49. onetool_mcp-1.0.0rc3/src/ot/config/secrets.py +243 -0
  50. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/tool_loader.py +10 -1
  51. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/validator.py +11 -1
  52. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/meta.py +338 -33
  53. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/prompts.py +228 -218
  54. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/proxy/manager.py +168 -8
  55. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/__init__.py +199 -189
  56. onetool_mcp-1.0.0rc3/tests/sanity/test_sanity-hints.md +98 -0
  57. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/sanity/test_sanity.md +5 -5
  58. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_config_loader.py +69 -222
  59. onetool_mcp-1.0.0rc3/tests/unit/core/test_config_settings.py +78 -0
  60. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_features_config.py +159 -151
  61. onetool_mcp-1.0.0rc3/tests/unit/core/test_meta_debug.py +236 -0
  62. onetool_mcp-1.0.0rc3/tests/unit/core/test_proxy_manager.py +424 -0
  63. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_sanitize.py +2 -1
  64. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_secrets.py +384 -234
  65. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_stats.py +1 -1
  66. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_notify.py +4 -7
  67. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/uv.lock +1 -1
  68. onetool_mcp-1.0.0rc2/openspec/changes/remove-bundled-defaults/proposal.md +0 -127
  69. onetool_mcp-1.0.0rc2/openspec/changes/remove-bundled-defaults/specs/serve-configuration/spec.md +0 -117
  70. onetool_mcp-1.0.0rc2/openspec/changes/remove-bundled-defaults/tasks.md +0 -80
  71. onetool_mcp-1.0.0rc2/src/ot/config/__init__.py +0 -48
  72. onetool_mcp-1.0.0rc2/src/ot/config/dynamic.py +0 -121
  73. onetool_mcp-1.0.0rc2/src/ot/config/loader.py +0 -1203
  74. onetool_mcp-1.0.0rc2/src/ot/config/mcp.py +0 -149
  75. onetool_mcp-1.0.0rc2/src/ot/config/secrets.py +0 -192
  76. onetool_mcp-1.0.0rc2/src/ot/config/tool_config.py +0 -125
  77. onetool_mcp-1.0.0rc2/tests/sanity/test_sanity-hints.md +0 -72
  78. onetool_mcp-1.0.0rc2/tests/unit/core/test_config_settings.py +0 -33
  79. onetool_mcp-1.0.0rc2/tests/unit/core/test_proxy_manager.py +0 -181
  80. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.chunkhound.json +0 -0
  81. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/openspec/apply.md +0 -0
  82. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/openspec/archive.md +0 -0
  83. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/openspec/proposal.md +0 -0
  84. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/doc-sync.md +0 -0
  85. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/prime.md +0 -0
  86. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/quick-apply.md +0 -0
  87. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/commands/proj/review-py.md +0 -0
  88. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.claude/skills/humanizer/SKILL.md +0 -0
  89. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitattributes +0 -0
  90. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitleaks.toml +0 -0
  91. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.gitleaksignore +0 -0
  92. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/.markdownlint.json +0 -0
  93. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/AGENTS.md +0 -0
  94. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/LICENSE.txt +0 -0
  95. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/NOTICE.txt +0 -0
  96. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/agents/rules.md +0 -0
  97. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/cliff.toml +0 -0
  98. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/config/bench.yaml +0 -0
  99. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/config/onetool.yaml +0 -0
  100. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/stats/stats.jsonl +0 -0
  101. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/.onetool/tools/demo/demo_tools.py +0 -0
  102. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/README.md +0 -0
  103. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/compare.yaml +0 -0
  104. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/features.yaml +0 -0
  105. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_brave_search.yaml +0 -0
  106. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_code_search.yaml +0 -0
  107. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_context7.yaml +0 -0
  108. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_convert.yaml +0 -0
  109. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_db.yaml +0 -0
  110. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_diagram.yaml +0 -0
  111. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_excel.yaml +0 -0
  112. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_file.yaml +0 -0
  113. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_github.yaml +0 -0
  114. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_grounding_search.yaml +0 -0
  115. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_package.yaml +0 -0
  116. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_ripgrep.yaml +0 -0
  117. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/bench/tool_web_fetch.yaml +0 -0
  118. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/file_example_1MB.docx +0 -0
  119. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/file_example_PPT_1MB.pptx +0 -0
  120. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/file_example_XLS_1000.xlsx +0 -0
  121. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/data/sample_sales.xlsx +0 -0
  122. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/justfile +0 -0
  123. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/demo/prompts/onetool-in-action.md +0 -0
  124. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/CNAME +0 -0
  125. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/architecture.md +0 -0
  126. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/attribution.md +0 -0
  127. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-claims.md +0 -0
  128. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-links.md +0 -0
  129. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-terminology.md +0 -0
  130. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/brand/ref-tool-packs.md +0 -0
  131. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/cli-patterns.md +0 -0
  132. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/docs/best-practices.md +0 -0
  133. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/docs/design-system.md +0 -0
  134. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/docs/index.md +0 -0
  135. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/index.md +0 -0
  136. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/internal-tools.md +0 -0
  137. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/logging.md +0 -0
  138. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/_internal/testing.md +0 -0
  139. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/about/index.md +0 -0
  140. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/assets/MCP.jpeg +0 -0
  141. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/assets/logo.svg +0 -0
  142. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/assets/quickstart/onetool-connected.png +0 -0
  143. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/comparison.md +0 -0
  144. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/explicit-calls.md +0 -0
  145. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/extending/extension-tools.md +0 -0
  146. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/extending/index.md +0 -0
  147. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/extending/isolated-tools.md +0 -0
  148. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/index.md +0 -0
  149. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/installation.md +0 -0
  150. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/learn/security.md +0 -0
  151. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/overrides/partials/integrations/analytics/posthog.html +0 -0
  152. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/bench.md +0 -0
  153. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/index.md +0 -0
  154. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/cli/onetool.md +0 -0
  155. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/index.md +0 -0
  156. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/brave.md +0 -0
  157. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/code.md +0 -0
  158. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/context7.md +0 -0
  159. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/convert.md +0 -0
  160. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/db.md +0 -0
  161. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/diagram.md +0 -0
  162. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/excel.md +0 -0
  163. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/file.md +0 -0
  164. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/ground.md +0 -0
  165. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/index.md +0 -0
  166. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/llm.md +0 -0
  167. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/ot.md +0 -0
  168. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/package.md +0 -0
  169. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/ripgrep.md +0 -0
  170. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/scaffold.md +0 -0
  171. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/reference/tools/web.md +0 -0
  172. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/results/result-20260119.csv +0 -0
  173. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/docs/stylesheets/extra.css +0 -0
  174. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/brave-search-mcp-server-LICENSE +0 -0
  175. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/chunkhound-LICENSE +0 -0
  176. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/context7-LICENSE +0 -0
  177. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/excel-mcp-server-LICENSE +0 -0
  178. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/mcp-alchemy-LICENSE +0 -0
  179. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/mcp-package-version-LICENSE +0 -0
  180. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/licenses/trafilatura-LICENSE +0 -0
  181. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/mkdocs.yml +0 -0
  182. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/AGENTS.md +0 -0
  183. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/README.md +0 -0
  184. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/INDEX.md +0 -0
  185. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-conventions/spec.md +0 -0
  186. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-docs/spec.md +0 -0
  187. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-observability/spec.md +0 -0
  188. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-paths/spec.md +0 -0
  189. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/_nf-testing/spec.md +0 -0
  190. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench/spec.md +0 -0
  191. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-config/spec.md +0 -0
  192. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-csv/spec.md +0 -0
  193. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-evaluators/spec.md +0 -0
  194. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-logging/spec.md +0 -0
  195. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-metrics/spec.md +0 -0
  196. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-tasks/spec.md +0 -0
  197. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/bench-tui/spec.md +0 -0
  198. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/onetool-cli/spec.md +0 -0
  199. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-code-validation/spec.md +0 -0
  200. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-mcp-discoverability/spec.md +0 -0
  201. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-output-sanitization/spec.md +0 -0
  202. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-prompts/spec.md +0 -0
  203. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-run-tool/spec.md +0 -0
  204. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-stats/spec.md +0 -0
  205. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/serve-tools-packages/spec.md +0 -0
  206. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-brave-search/spec.md +0 -0
  207. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-code-search/spec.md +0 -0
  208. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-context7/spec.md +0 -0
  209. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-convert/spec.md +0 -0
  210. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-db/spec.md +0 -0
  211. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-diagram/spec.md +0 -0
  212. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-excel/spec.md +0 -0
  213. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-execution/spec.md +0 -0
  214. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-file/spec.md +0 -0
  215. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-grounding-search/spec.md +0 -0
  216. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-internal/spec.md +0 -0
  217. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-notify/spec.md +0 -0
  218. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-package/spec.md +0 -0
  219. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-ripgrep/spec.md +0 -0
  220. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-scaffold/spec.md +0 -0
  221. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-sdk/spec.md +0 -0
  222. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-transform/spec.md +0 -0
  223. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/openspec/specs/tool-web-fetch/spec.md +0 -0
  224. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/resources/docker/kroki/docker-compose.yaml +0 -0
  225. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/scripts/generate_specs_html.py +0 -0
  226. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/__init__.py +0 -0
  227. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/cli.py +0 -0
  228. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/__init__.py +0 -0
  229. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/client.py +0 -0
  230. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/config.py +0 -0
  231. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/csv_writer.py +0 -0
  232. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/evaluate.py +0 -0
  233. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/metrics.py +0 -0
  234. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/harness/runner.py +0 -0
  235. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/py.typed +0 -0
  236. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/reporter.py +0 -0
  237. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/run.py +0 -0
  238. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/secrets.py +0 -0
  239. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/bench/utils.py +0 -0
  240. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/onetool/__init__.py +0 -0
  241. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/onetool/py.typed +0 -0
  242. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/__init__.py +0 -0
  243. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/__main__.py +0 -0
  244. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/_cli.py +0 -0
  245. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/_tui.py +0 -0
  246. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/bench-secrets-template.yaml +0 -0
  247. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/bench.yaml +0 -0
  248. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/secrets-template.yaml +0 -0
  249. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/snippets.yaml +0 -0
  250. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/tool_templates/extension.py +0 -0
  251. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/config/global_templates/tool_templates/isolated.py +0 -0
  252. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/decorators.py +0 -0
  253. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/__init__.py +0 -0
  254. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/base.py +0 -0
  255. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/fence_processor.py +0 -0
  256. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/linter.py +0 -0
  257. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/pack_proxy.py +0 -0
  258. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/param_resolver.py +0 -0
  259. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/pep723.py +0 -0
  260. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/result_store.py +0 -0
  261. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/runner.py +0 -0
  262. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/simple.py +0 -0
  263. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/worker_pool.py +0 -0
  264. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/executor/worker_proxy.py +0 -0
  265. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/http_client.py +0 -0
  266. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/__init__.py +0 -0
  267. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/config.py +0 -0
  268. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/entry.py +0 -0
  269. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/format.py +0 -0
  270. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/logging/span.py +0 -0
  271. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/paths.py +0 -0
  272. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/proxy/__init__.py +0 -0
  273. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/py.typed +0 -0
  274. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/models.py +0 -0
  275. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/parser.py +0 -0
  276. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/registry/registry.py +0 -0
  277. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/server.py +0 -0
  278. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/shortcuts/__init__.py +0 -0
  279. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/shortcuts/aliases.py +0 -0
  280. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/shortcuts/snippets.py +0 -0
  281. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/__init__.py +0 -0
  282. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/html.py +0 -0
  283. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/jsonl_writer.py +0 -0
  284. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/reader.py +0 -0
  285. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/stats/timing.py +0 -0
  286. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/support.py +0 -0
  287. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/tools.py +0 -0
  288. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/__init__.py +0 -0
  289. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/batch.py +0 -0
  290. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/cache.py +0 -0
  291. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/deps.py +0 -0
  292. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/exceptions.py +0 -0
  293. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/factory.py +0 -0
  294. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/format.py +0 -0
  295. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/http.py +0 -0
  296. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/platform.py +0 -0
  297. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/sanitize.py +0 -0
  298. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot/utils/truncate.py +0 -0
  299. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/__init__.py +0 -0
  300. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/__init__.py +0 -0
  301. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/excel.py +0 -0
  302. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/pdf.py +0 -0
  303. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/powerpoint.py +0 -0
  304. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/utils.py +0 -0
  305. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/_convert/word.py +0 -0
  306. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/brave_search.py +0 -0
  307. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/code_search.py +0 -0
  308. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/context7.py +0 -0
  309. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/convert.py +0 -0
  310. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/db.py +0 -0
  311. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/diagram.py +0 -0
  312. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/diagram.yaml +0 -0
  313. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/excel.py +0 -0
  314. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/file.py +0 -0
  315. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/grounding_search.py +0 -0
  316. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/package.py +0 -0
  317. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/py.typed +0 -0
  318. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/ripgrep.py +0 -0
  319. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/scaffold.py +0 -0
  320. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/transform.py +0 -0
  321. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/src/ot_tools/web_fetch.py +0 -0
  322. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/.onetool/config/onetool.yaml +0 -0
  323. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/__init__.py +0 -0
  324. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/conftest.py +0 -0
  325. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/__init__.py +0 -0
  326. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/bench/__init__.py +0 -0
  327. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/bench/test_context_metrics.py +0 -0
  328. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/__init__.py +0 -0
  329. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/conftest.py +0 -0
  330. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_brave_search.py +0 -0
  331. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_context7.py +0 -0
  332. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_convert.py +0 -0
  333. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_grounding_search.py +0 -0
  334. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_package.py +0 -0
  335. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_ripgrep.py +0 -0
  336. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/integration/tools/test_web_fetch.py +0 -0
  337. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_cli_bench.py +0 -0
  338. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_cli_onetool.py +0 -0
  339. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_config.py +0 -0
  340. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/smoke/test_registry.py +0 -0
  341. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/__init__.py +0 -0
  342. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/__init__.py +0 -0
  343. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/test_csv_writer.py +0 -0
  344. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/test_evaluate.py +0 -0
  345. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/bench/test_metrics.py +0 -0
  346. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/__init__.py +0 -0
  347. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/conftest.py +0 -0
  348. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_code_linter.py +0 -0
  349. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_code_validator.py +0 -0
  350. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_features_python.py +0 -0
  351. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_features_triggers.py +0 -0
  352. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_format.py +0 -0
  353. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_http_client.py +0 -0
  354. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_log_format.py +0 -0
  355. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_meta_help.py +0 -0
  356. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_meta_timed.py +0 -0
  357. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_param_resolver.py +0 -0
  358. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_paths.py +0 -0
  359. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_pep723.py +0 -0
  360. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_platform_utils.py +0 -0
  361. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_python_exec.py +0 -0
  362. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_result_store.py +0 -0
  363. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_shortcuts.py +0 -0
  364. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_support.py +0 -0
  365. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_tool_loader.py +0 -0
  366. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_tools.py +0 -0
  367. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_worker_pool.py +0 -0
  368. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/core/test_worker_proxy.py +0 -0
  369. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/serve/test_tool_registry.py +0 -0
  370. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/__init__.py +0 -0
  371. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_brave_search.py +0 -0
  372. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_code_search.py +0 -0
  373. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_context7.py +0 -0
  374. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_convert.py +0 -0
  375. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_excel.py +0 -0
  376. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_file.py +0 -0
  377. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_grounding_search.py +0 -0
  378. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_info.py +0 -0
  379. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_package.py +0 -0
  380. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_ripgrep.py +0 -0
  381. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_scaffold.py +0 -0
  382. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_transform.py +0 -0
  383. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/test_web_fetch.py +0 -0
  384. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/tool_db/test_db.py +0 -0
  385. {onetool_mcp-1.0.0rc2 → onetool_mcp-1.0.0rc3}/tests/unit/tools/tool_diagram/test_diagram.py +0 -0
  386. {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
- **Guardrails**
13
- - This is primarily a READ-ONLY consultation session. You MUST NOT:
14
- - Make git commits or push changes
15
- - Run commands that modify the system (e.g., `git commit`, `rm`, `mv`, `npm install`)
16
- - Modify existing project source code
17
- - You CAN and SHOULD:
18
- - Read files, search code, and explore the codebase
19
- - Run read-only commands (e.g., `git log`, `git status`, `git diff`, `ls`, `cat`)
20
- - Use web search for up-to-date information
21
- - Answer questions thoroughly with code references
22
- - Ask clarifying questions to understand user needs
23
- - **Writing Findings (on explicit request only)**:
24
- - When the user explicitly asks to save, write, or document findings (e.g., "save these findings", "write this up", "document what we found"):
25
- - Suggest a descriptive filename based on the topic discussed
26
- - Write findings to `plan/consult/<name>.md` (create directory if needed)
27
- - Unless user specifies a different location
28
- - Use a clear heading with date/time and topic
29
- - Include key discoveries, code references, and conclusions
30
- - Do NOT write findings unless the user explicitly requests it
31
- - The session continues until the user explicitly ends it (e.g., "end consultation", "done consulting", "exit consult mode").
32
-
33
- **Steps**
34
- 1. Begin the consultation:
35
- - Acknowledge entering consultation mode.
36
- - Briefly explain the read-only constraints.
37
- - Ask what the user would like to explore or discuss.
38
- 2. Handle each question:
39
- - Listen to the user's question or topic.
40
- - Use read-only tools (Read, Glob, Grep, WebSearch, WebFetch, Task with Explore agent) to research.
41
- - Provide clear, detailed answers with file references where relevant.
42
- - Ask follow-up questions if clarification is needed.
43
- 3. Continue the dialogue:
44
- - After answering, check if the user has more questions.
45
- - Offer to dive deeper into related topics.
46
- - Suggest areas that might be worth exploring.
47
- 4. Save findings (on explicit request):
48
- - When user asks to save/document findings:
49
- - Suggest a filename: "I'll save this as `plan/consult/<topic>.md` - sound good?"
50
- - Create `plan/consult/` directory if it doesn't exist
51
- - Write with dated heading and key discoveries
52
- - Confirm what was written
53
- 5. End the session:
54
- - When the user signals they are done (e.g., "end consultation", "done", "exit"):
55
- - Summarize key findings from the session.
56
- - Suggest next steps if applicable (e.g., creating a proposal, making changes).
57
- - Confirm the session has ended.
58
-
59
- **Reference**
60
- - Use exploration agents (Task with subagent_type=Explore) for open-ended codebase questions.
61
- - Reference files using markdown link format: `[filename.ts](path/to/file.ts)`.
62
- - For web research, cite sources in your answers.
63
- - Cross-reference with `openspec/project.md` for project context when relevant.
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 `tests/sanity/test_sanity_status.yaml` and suggest retesting failed/partial areas.
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 `tests/sanity/test_sanity_status.yaml` to see current test status
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 `./plan/issues/{issue-name}.md` with issue details
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 `tests/sanity/test_sanity_status.yaml`:
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 status updates.
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
- runs-on: ubuntu-latest
14
- steps:
15
- - uses: actions/checkout@v6.0.1
16
-
17
- - name: Install uv
18
- uses: astral-sh/setup-uv@v7.2.0
19
-
20
- - name: Build package
21
- run: uv build
22
-
23
- - name: Upload artifacts
24
- uses: actions/upload-artifact@v6.0.0
25
- with:
26
- name: dist
27
- path: dist/
28
-
29
- publish-testpypi:
30
- if: github.event_name == 'workflow_dispatch'
31
- needs: build
32
- runs-on: ubuntu-latest
33
- environment: testpypi
34
- permissions:
35
- id-token: write
36
- steps:
37
- - name: Download artifacts
38
- uses: actions/download-artifact@v7.0.0
39
- with:
40
- name: dist
41
- path: dist/
42
-
43
- - name: Publish to TestPyPI
44
- uses: pypa/gh-action-pypi-publish@v1.13.0
45
- with:
46
- repository-url: https://test.pypi.org/legacy/
47
-
48
- publish-pypi:
49
- if: github.event_name == 'release'
50
- needs: build
51
- runs-on: ubuntu-latest
52
- environment: pypi
53
- permissions:
54
- id-token: write
55
- steps:
56
- - name: Download artifacts
57
- uses: actions/download-artifact@v7.0.0
58
- with:
59
- name: dist
60
- path: dist/
61
-
62
- - name: Publish to PyPI
63
- uses: pypa/gh-action-pypi-publish@v1.13.0
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