blq-cli 1.2.1__tar.gz → 1.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. {blq_cli-1.2.1 → blq_cli-1.2.2}/CHANGELOG.md +9 -0
  2. {blq_cli-1.2.1 → blq_cli-1.2.2}/PKG-INFO +1 -1
  3. {blq_cli-1.2.1 → blq_cli-1.2.2}/pyproject.toml +1 -1
  4. blq_cli-1.2.2/src/blq/__init__.py +32 -0
  5. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/serve.py +2 -2
  6. blq_cli-1.2.2/tests/test_version.py +37 -0
  7. blq_cli-1.2.1/src/blq/__init__.py +0 -21
  8. {blq_cli-1.2.1 → blq_cli-1.2.2}/.claude/hooks/blq-suggest.sh +0 -0
  9. {blq_cli-1.2.1 → blq_cli-1.2.2}/.github/workflows/ci.yml +0 -0
  10. {blq_cli-1.2.1 → blq_cli-1.2.2}/.github/workflows/docs.yml +0 -0
  11. {blq_cli-1.2.1 → blq_cli-1.2.2}/.github/workflows/publish.yml +0 -0
  12. {blq_cli-1.2.1 → blq_cli-1.2.2}/.gitignore +0 -0
  13. {blq_cli-1.2.1 → blq_cli-1.2.2}/.mcp.json +0 -0
  14. {blq_cli-1.2.1 → blq_cli-1.2.2}/.readthedocs.yml +0 -0
  15. {blq_cli-1.2.1 → blq_cli-1.2.2}/AGENT.md +0 -0
  16. {blq_cli-1.2.1 → blq_cli-1.2.2}/AGENTS.md +0 -0
  17. {blq_cli-1.2.1 → blq_cli-1.2.2}/CLAUDE.md +0 -0
  18. {blq_cli-1.2.1 → blq_cli-1.2.2}/CONTRIBUTING.md +0 -0
  19. {blq_cli-1.2.1 → blq_cli-1.2.2}/README.md +0 -0
  20. {blq_cli-1.2.1 → blq_cli-1.2.2}/SKILL.md +0 -0
  21. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/api-reference.md +0 -0
  22. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/capture.md +0 -0
  23. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/ci.md +0 -0
  24. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/completions.md +0 -0
  25. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/errors.md +0 -0
  26. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/exec.md +0 -0
  27. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/filter.md +0 -0
  28. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/index.md +0 -0
  29. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/init.md +0 -0
  30. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/maintenance.md +0 -0
  31. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/query.md +0 -0
  32. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/registry.md +0 -0
  33. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/report.md +0 -0
  34. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/run.md +0 -0
  35. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/sql.md +0 -0
  36. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/status.md +0 -0
  37. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/sync.md +0 -0
  38. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/commands/watch.md +0 -0
  39. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-bird-migration.md +0 -0
  40. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-commands.md +0 -0
  41. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-config-command.md +0 -0
  42. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-extensions.md +0 -0
  43. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-git-integration.md +0 -0
  44. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-hooks-v2.md +0 -0
  45. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-live-inspection.md +0 -0
  46. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-parameterized-commands.md +0 -0
  47. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-run-args.md +0 -0
  48. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-sandbox-specs.md +0 -0
  49. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-sync.md +0 -0
  50. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/design-track-save.md +0 -0
  51. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/duck-hunt-v2-migration.md +0 -0
  52. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/duck-hunt-v3-migration.md +0 -0
  53. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/proposal-bird-v5.md +0 -0
  54. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/design/skill-inspect-enrichment.md +0 -0
  55. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/getting-started.md +0 -0
  56. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/index.md +0 -0
  57. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/integration.md +0 -0
  58. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/mcp.md +0 -0
  59. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/plans/explore-bird-sqlite-backend.md +0 -0
  60. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/plans/explore-nsjail-python-wrapper.md +0 -0
  61. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/plans/explore-nsjail-spack-package.md +0 -0
  62. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/plans/patterns-integration-prompt.md +0 -0
  63. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/plans/roadmap-to-1.0.md +0 -0
  64. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/plugin-guide.md +0 -0
  65. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/python-api.md +0 -0
  66. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/query-guide.md +0 -0
  67. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/requirements.txt +0 -0
  68. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/sandbox.md +0 -0
  69. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/schema-stability.md +0 -0
  70. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/schema.md +0 -0
  71. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/plans/2026-03-22-extension-system.md +0 -0
  72. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/plans/2026-03-28-bwrap-engine.md +0 -0
  73. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/plans/2026-03-28-command-locks.md +0 -0
  74. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/plans/2026-03-29-annotators-and-tighten.md +0 -0
  75. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/plans/2026-03-29-service-layer-phase1.md +0 -0
  76. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/plans/2026-03-29-strace-profiling.md +0 -0
  77. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/specs/2026-03-22-extension-system-design.md +0 -0
  78. {blq_cli-1.2.1 → blq_cli-1.2.2}/docs/superpowers/specs/2026-03-29-unified-service-layer-design.md +0 -0
  79. {blq_cli-1.2.1 → blq_cli-1.2.2}/experiments/agent-build-test.md +0 -0
  80. {blq_cli-1.2.1 → blq_cli-1.2.2}/mkdocs.yml +0 -0
  81. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/__main__.py +0 -0
  82. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/bird.py +0 -0
  83. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/bird_schema.sql +0 -0
  84. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/cli.py +0 -0
  85. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/README.md +0 -0
  86. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/__init__.py +0 -0
  87. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/ci_cmd.py +0 -0
  88. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/clean_cmd.py +0 -0
  89. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/config_cmd.py +0 -0
  90. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/core.py +0 -0
  91. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/events.py +0 -0
  92. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/execution.py +0 -0
  93. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/hooks_cmd.py +0 -0
  94. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/hooks_gen.py +0 -0
  95. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/init_cmd.py +0 -0
  96. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/management.py +0 -0
  97. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/management_cmd.py +0 -0
  98. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/mcp_cmd.py +0 -0
  99. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/migrate.py +0 -0
  100. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/query_cmd.py +0 -0
  101. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/record_cmd.py +0 -0
  102. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/registry.py +0 -0
  103. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/report_cmd.py +0 -0
  104. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/sandbox_cmd.py +0 -0
  105. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/serve_cmd.py +0 -0
  106. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/sync_cmd.py +0 -0
  107. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/commands/watch_cmd.py +0 -0
  108. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/config_format.py +0 -0
  109. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/ext/__init__.py +0 -0
  110. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/ext/annotator.py +0 -0
  111. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/ext/discovery.py +0 -0
  112. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/ext/local_executor.py +0 -0
  113. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/ext/pipeline.py +0 -0
  114. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/git.py +0 -0
  115. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/github.py +0 -0
  116. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/locks.py +0 -0
  117. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/output.py +0 -0
  118. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/query.py +0 -0
  119. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/runtime.py +0 -0
  120. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/schema.sql +0 -0
  121. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/services/__init__.py +0 -0
  122. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/services/execution.py +0 -0
  123. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/services/inspect.py +0 -0
  124. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/services/query.py +0 -0
  125. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/services/refs.py +0 -0
  126. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/storage.py +0 -0
  127. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/templates/drone.yml.j2 +0 -0
  128. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/templates/git_hook.sh.j2 +0 -0
  129. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/templates/github_workflow.yml.j2 +0 -0
  130. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/templates/gitlab_ci.yml.j2 +0 -0
  131. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/templates/hook_script.sh.j2 +0 -0
  132. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq/user_config.py +0 -0
  133. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/__init__.py +0 -0
  134. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/engines.py +0 -0
  135. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/profile.py +0 -0
  136. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/source_annotator.py +0 -0
  137. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/spec.py +0 -0
  138. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/strace_parser.py +0 -0
  139. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/tighten.py +0 -0
  140. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox/violations.py +0 -0
  141. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox_bwrap/__init__.py +0 -0
  142. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox_bwrap/args.py +0 -0
  143. {blq_cli-1.2.1 → blq_cli-1.2.2}/src/blq_sandbox_systemd/__init__.py +0 -0
  144. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/__init__.py +0 -0
  145. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/conftest.py +0 -0
  146. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/sql/test_duck_hunt_v2_migration.sql +0 -0
  147. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_annotator.py +0 -0
  148. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_attempts_outcomes.py +0 -0
  149. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_auto_init.py +0 -0
  150. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_autoprune.py +0 -0
  151. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_bird.py +0 -0
  152. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_bwrap_args.py +0 -0
  153. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_bwrap_engine.py +0 -0
  154. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_ci.py +0 -0
  155. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_ci_generators.py +0 -0
  156. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_command_args.py +0 -0
  157. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_command_lock_field.py +0 -0
  158. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_config_consumption.py +0 -0
  159. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_core.py +0 -0
  160. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_execution_locks.py +0 -0
  161. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_exit_code_reason.py +0 -0
  162. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_ext_discovery.py +0 -0
  163. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_ext_integration.py +0 -0
  164. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_ext_local_executor.py +0 -0
  165. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_ext_pipeline.py +0 -0
  166. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_ext_types.py +0 -0
  167. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_git.py +0 -0
  168. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_hooks.py +0 -0
  169. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_hooks_gen.py +0 -0
  170. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_import_capture_storage.py +0 -0
  171. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_inspect.py +0 -0
  172. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_json_null_filter.py +0 -0
  173. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_locks.py +0 -0
  174. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_log_content_persistence.py +0 -0
  175. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_mcp_ci_tools.py +0 -0
  176. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_mcp_merge.py +0 -0
  177. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_mcp_server.py +0 -0
  178. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_output_schemas.py +0 -0
  179. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_phase1_structured_output.py +0 -0
  180. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_phase2_command_registry.py +0 -0
  181. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_query_api.py +0 -0
  182. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_query_filter.py +0 -0
  183. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_record_invocation.py +0 -0
  184. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_report.py +0 -0
  185. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_runtime_config.py +0 -0
  186. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox.py +0 -0
  187. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_cmd.py +0 -0
  188. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_events.py +0 -0
  189. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_ext.py +0 -0
  190. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_profile.py +0 -0
  191. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_register.py +0 -0
  192. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_systemd.py +0 -0
  193. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_tighten.py +0 -0
  194. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_sandbox_violations.py +0 -0
  195. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_schema_repair.py +0 -0
  196. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_security_containment.py +0 -0
  197. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_services_execution.py +0 -0
  198. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_services_inspect.py +0 -0
  199. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_services_query.py +0 -0
  200. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_services_refs.py +0 -0
  201. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_source_annotator.py +0 -0
  202. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_storage.py +0 -0
  203. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_storage_prune.py +0 -0
  204. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_strace_parser.py +0 -0
  205. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_user_config.py +0 -0
  206. {blq_cli-1.2.1 → blq_cli-1.2.2}/tests/test_watch.py +0 -0
  207. {blq_cli-1.2.1 → blq_cli-1.2.2}/uv.lock +0 -0
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.2.2
4
+
5
+ ### Fixed — Suppress FastMCP banners on stdio transport
6
+
7
+ When starting the MCP server over stdio, FastMCP banner rendering is suppressed
8
+ (`show_banner=False`) so that stdout contains strictly valid JSON-RPC messages
9
+ without terminal box decorations. Also derives `__version__` from installed package
10
+ metadata.
11
+
3
12
  ## v1.2.1
4
13
 
5
14
  ### Fixed — 1.2.0 was broken on Python 3.10 and 3.11
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: blq-cli
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Build Log Query - capture and query build/test logs with DuckDB
5
5
  Project-URL: Homepage, https://blq-cli.readthedocs.io/
6
6
  Project-URL: Repository, https://github.com/teaguesterling/blq-cli
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "blq-cli"
7
- version = "1.2.1"
7
+ version = "1.2.2"
8
8
  description = "Build Log Query - capture and query build/test logs with DuckDB"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -0,0 +1,32 @@
1
+ """
2
+ blq - Log Query
3
+
4
+ Capture and query build/test logs with DuckDB.
5
+
6
+ Example usage:
7
+ from blq import LogStore, LogQuery
8
+
9
+ # Query stored events
10
+ store = LogStore.open()
11
+ errors = store.errors().filter(ref_file="%main%").df()
12
+
13
+ # Query a log file directly
14
+ events = LogQuery.from_file("build.log").filter(severity="error").df()
15
+ """
16
+
17
+ from importlib.metadata import PackageNotFoundError, version as _dist_version
18
+
19
+ # Derived, never written by hand. The literal here read "1.0.1" against a
20
+ # distribution version of 1.2.1 — two releases stale, and immune to
21
+ # --force-reinstall because it was not derived from anything. Nothing consumes
22
+ # it today (the CLI reads importlib.metadata directly), which is exactly why it
23
+ # drifted unnoticed; a version string that lies makes a healthy install look
24
+ # broken, which is the most expensive direction to send a reader.
25
+ try:
26
+ __version__ = _dist_version("blq-cli")
27
+ except PackageNotFoundError: # running from a source tree with no install
28
+ __version__ = "0.0.0.dev0"
29
+
30
+ from blq.query import LogQuery, LogQueryGrouped, LogStore
31
+
32
+ __all__ = ["LogQuery", "LogStore", "LogQueryGrouped", "__version__"]
@@ -4174,9 +4174,9 @@ def serve(
4174
4174
  _init_disabled_tools(cli_disabled=disabled_tools, safe_mode=safe_mode)
4175
4175
 
4176
4176
  if transport == "stdio":
4177
- mcp.run()
4177
+ mcp.run(show_banner=False)
4178
4178
  elif transport == "sse":
4179
- mcp.run(transport="sse", port=port)
4179
+ mcp.run(transport="sse", port=port, show_banner=False)
4180
4180
  else:
4181
4181
  raise ValueError(f"Unknown transport: {transport}")
4182
4182
 
@@ -0,0 +1,37 @@
1
+ """The exported version must match the installed distribution.
2
+
3
+ `__version__` was a hand-written literal and drifted two releases behind
4
+ pyproject.toml before anyone noticed — nothing consumes it (the CLI reads
5
+ importlib.metadata directly), so nothing failed. The same defect in squackit
6
+ reached four releases of drift.
7
+
8
+ Asserting a hardcoded string here would recreate the problem: the module and
9
+ its test would agree with each other and with nothing else. Assert the
10
+ correspondence instead.
11
+ """
12
+
13
+ from importlib.metadata import PackageNotFoundError, version
14
+
15
+
16
+ def test_version_matches_the_installed_distribution():
17
+ import blq
18
+
19
+ try:
20
+ expected = version("blq-cli")
21
+ except PackageNotFoundError:
22
+ expected = "0.0.0.dev0"
23
+ assert blq.__version__ == expected
24
+
25
+
26
+ def test_version_is_not_a_hardcoded_literal():
27
+ """Guard the mechanism, not just today's value."""
28
+ import pathlib
29
+
30
+ src = pathlib.Path(blq_init()).read_text()
31
+ assert "_dist_version" in src, "version is no longer derived from metadata"
32
+
33
+
34
+ def blq_init():
35
+ import blq
36
+
37
+ return blq.__file__
@@ -1,21 +0,0 @@
1
- """
2
- blq - Log Query
3
-
4
- Capture and query build/test logs with DuckDB.
5
-
6
- Example usage:
7
- from blq import LogStore, LogQuery
8
-
9
- # Query stored events
10
- store = LogStore.open()
11
- errors = store.errors().filter(ref_file="%main%").df()
12
-
13
- # Query a log file directly
14
- events = LogQuery.from_file("build.log").filter(severity="error").df()
15
- """
16
-
17
- __version__ = "1.0.1"
18
-
19
- from blq.query import LogQuery, LogQueryGrouped, LogStore
20
-
21
- __all__ = ["LogQuery", "LogStore", "LogQueryGrouped", "__version__"]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes