blq-cli 1.2.0__tar.gz → 1.2.1__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 (205) hide show
  1. {blq_cli-1.2.0 → blq_cli-1.2.1}/CHANGELOG.md +23 -0
  2. {blq_cli-1.2.0 → blq_cli-1.2.1}/PKG-INFO +2 -1
  3. {blq_cli-1.2.0 → blq_cli-1.2.1}/pyproject.toml +4 -1
  4. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/serve.py +11 -1
  5. {blq_cli-1.2.0 → blq_cli-1.2.1}/.claude/hooks/blq-suggest.sh +0 -0
  6. {blq_cli-1.2.0 → blq_cli-1.2.1}/.github/workflows/ci.yml +0 -0
  7. {blq_cli-1.2.0 → blq_cli-1.2.1}/.github/workflows/docs.yml +0 -0
  8. {blq_cli-1.2.0 → blq_cli-1.2.1}/.github/workflows/publish.yml +0 -0
  9. {blq_cli-1.2.0 → blq_cli-1.2.1}/.gitignore +0 -0
  10. {blq_cli-1.2.0 → blq_cli-1.2.1}/.mcp.json +0 -0
  11. {blq_cli-1.2.0 → blq_cli-1.2.1}/.readthedocs.yml +0 -0
  12. {blq_cli-1.2.0 → blq_cli-1.2.1}/AGENT.md +0 -0
  13. {blq_cli-1.2.0 → blq_cli-1.2.1}/AGENTS.md +0 -0
  14. {blq_cli-1.2.0 → blq_cli-1.2.1}/CLAUDE.md +0 -0
  15. {blq_cli-1.2.0 → blq_cli-1.2.1}/CONTRIBUTING.md +0 -0
  16. {blq_cli-1.2.0 → blq_cli-1.2.1}/README.md +0 -0
  17. {blq_cli-1.2.0 → blq_cli-1.2.1}/SKILL.md +0 -0
  18. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/api-reference.md +0 -0
  19. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/capture.md +0 -0
  20. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/ci.md +0 -0
  21. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/completions.md +0 -0
  22. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/errors.md +0 -0
  23. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/exec.md +0 -0
  24. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/filter.md +0 -0
  25. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/index.md +0 -0
  26. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/init.md +0 -0
  27. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/maintenance.md +0 -0
  28. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/query.md +0 -0
  29. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/registry.md +0 -0
  30. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/report.md +0 -0
  31. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/run.md +0 -0
  32. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/sql.md +0 -0
  33. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/status.md +0 -0
  34. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/sync.md +0 -0
  35. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/commands/watch.md +0 -0
  36. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-bird-migration.md +0 -0
  37. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-commands.md +0 -0
  38. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-config-command.md +0 -0
  39. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-extensions.md +0 -0
  40. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-git-integration.md +0 -0
  41. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-hooks-v2.md +0 -0
  42. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-live-inspection.md +0 -0
  43. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-parameterized-commands.md +0 -0
  44. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-run-args.md +0 -0
  45. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-sandbox-specs.md +0 -0
  46. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-sync.md +0 -0
  47. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/design-track-save.md +0 -0
  48. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/duck-hunt-v2-migration.md +0 -0
  49. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/duck-hunt-v3-migration.md +0 -0
  50. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/proposal-bird-v5.md +0 -0
  51. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/design/skill-inspect-enrichment.md +0 -0
  52. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/getting-started.md +0 -0
  53. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/index.md +0 -0
  54. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/integration.md +0 -0
  55. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/mcp.md +0 -0
  56. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/plans/explore-bird-sqlite-backend.md +0 -0
  57. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/plans/explore-nsjail-python-wrapper.md +0 -0
  58. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/plans/explore-nsjail-spack-package.md +0 -0
  59. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/plans/patterns-integration-prompt.md +0 -0
  60. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/plans/roadmap-to-1.0.md +0 -0
  61. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/plugin-guide.md +0 -0
  62. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/python-api.md +0 -0
  63. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/query-guide.md +0 -0
  64. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/requirements.txt +0 -0
  65. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/sandbox.md +0 -0
  66. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/schema-stability.md +0 -0
  67. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/schema.md +0 -0
  68. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/plans/2026-03-22-extension-system.md +0 -0
  69. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/plans/2026-03-28-bwrap-engine.md +0 -0
  70. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/plans/2026-03-28-command-locks.md +0 -0
  71. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/plans/2026-03-29-annotators-and-tighten.md +0 -0
  72. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/plans/2026-03-29-service-layer-phase1.md +0 -0
  73. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/plans/2026-03-29-strace-profiling.md +0 -0
  74. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/specs/2026-03-22-extension-system-design.md +0 -0
  75. {blq_cli-1.2.0 → blq_cli-1.2.1}/docs/superpowers/specs/2026-03-29-unified-service-layer-design.md +0 -0
  76. {blq_cli-1.2.0 → blq_cli-1.2.1}/experiments/agent-build-test.md +0 -0
  77. {blq_cli-1.2.0 → blq_cli-1.2.1}/mkdocs.yml +0 -0
  78. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/__init__.py +0 -0
  79. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/__main__.py +0 -0
  80. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/bird.py +0 -0
  81. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/bird_schema.sql +0 -0
  82. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/cli.py +0 -0
  83. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/README.md +0 -0
  84. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/__init__.py +0 -0
  85. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/ci_cmd.py +0 -0
  86. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/clean_cmd.py +0 -0
  87. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/config_cmd.py +0 -0
  88. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/core.py +0 -0
  89. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/events.py +0 -0
  90. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/execution.py +0 -0
  91. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/hooks_cmd.py +0 -0
  92. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/hooks_gen.py +0 -0
  93. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/init_cmd.py +0 -0
  94. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/management.py +0 -0
  95. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/management_cmd.py +0 -0
  96. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/mcp_cmd.py +0 -0
  97. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/migrate.py +0 -0
  98. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/query_cmd.py +0 -0
  99. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/record_cmd.py +0 -0
  100. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/registry.py +0 -0
  101. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/report_cmd.py +0 -0
  102. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/sandbox_cmd.py +0 -0
  103. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/serve_cmd.py +0 -0
  104. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/sync_cmd.py +0 -0
  105. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/commands/watch_cmd.py +0 -0
  106. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/config_format.py +0 -0
  107. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/ext/__init__.py +0 -0
  108. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/ext/annotator.py +0 -0
  109. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/ext/discovery.py +0 -0
  110. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/ext/local_executor.py +0 -0
  111. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/ext/pipeline.py +0 -0
  112. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/git.py +0 -0
  113. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/github.py +0 -0
  114. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/locks.py +0 -0
  115. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/output.py +0 -0
  116. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/query.py +0 -0
  117. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/runtime.py +0 -0
  118. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/schema.sql +0 -0
  119. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/services/__init__.py +0 -0
  120. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/services/execution.py +0 -0
  121. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/services/inspect.py +0 -0
  122. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/services/query.py +0 -0
  123. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/services/refs.py +0 -0
  124. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/storage.py +0 -0
  125. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/templates/drone.yml.j2 +0 -0
  126. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/templates/git_hook.sh.j2 +0 -0
  127. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/templates/github_workflow.yml.j2 +0 -0
  128. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/templates/gitlab_ci.yml.j2 +0 -0
  129. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/templates/hook_script.sh.j2 +0 -0
  130. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq/user_config.py +0 -0
  131. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/__init__.py +0 -0
  132. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/engines.py +0 -0
  133. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/profile.py +0 -0
  134. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/source_annotator.py +0 -0
  135. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/spec.py +0 -0
  136. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/strace_parser.py +0 -0
  137. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/tighten.py +0 -0
  138. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox/violations.py +0 -0
  139. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox_bwrap/__init__.py +0 -0
  140. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox_bwrap/args.py +0 -0
  141. {blq_cli-1.2.0 → blq_cli-1.2.1}/src/blq_sandbox_systemd/__init__.py +0 -0
  142. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/__init__.py +0 -0
  143. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/conftest.py +0 -0
  144. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/sql/test_duck_hunt_v2_migration.sql +0 -0
  145. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_annotator.py +0 -0
  146. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_attempts_outcomes.py +0 -0
  147. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_auto_init.py +0 -0
  148. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_autoprune.py +0 -0
  149. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_bird.py +0 -0
  150. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_bwrap_args.py +0 -0
  151. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_bwrap_engine.py +0 -0
  152. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_ci.py +0 -0
  153. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_ci_generators.py +0 -0
  154. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_command_args.py +0 -0
  155. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_command_lock_field.py +0 -0
  156. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_config_consumption.py +0 -0
  157. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_core.py +0 -0
  158. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_execution_locks.py +0 -0
  159. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_exit_code_reason.py +0 -0
  160. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_ext_discovery.py +0 -0
  161. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_ext_integration.py +0 -0
  162. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_ext_local_executor.py +0 -0
  163. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_ext_pipeline.py +0 -0
  164. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_ext_types.py +0 -0
  165. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_git.py +0 -0
  166. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_hooks.py +0 -0
  167. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_hooks_gen.py +0 -0
  168. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_import_capture_storage.py +0 -0
  169. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_inspect.py +0 -0
  170. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_json_null_filter.py +0 -0
  171. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_locks.py +0 -0
  172. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_log_content_persistence.py +0 -0
  173. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_mcp_ci_tools.py +0 -0
  174. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_mcp_merge.py +0 -0
  175. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_mcp_server.py +0 -0
  176. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_output_schemas.py +0 -0
  177. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_phase1_structured_output.py +0 -0
  178. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_phase2_command_registry.py +0 -0
  179. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_query_api.py +0 -0
  180. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_query_filter.py +0 -0
  181. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_record_invocation.py +0 -0
  182. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_report.py +0 -0
  183. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_runtime_config.py +0 -0
  184. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox.py +0 -0
  185. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_cmd.py +0 -0
  186. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_events.py +0 -0
  187. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_ext.py +0 -0
  188. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_profile.py +0 -0
  189. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_register.py +0 -0
  190. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_systemd.py +0 -0
  191. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_tighten.py +0 -0
  192. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_sandbox_violations.py +0 -0
  193. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_schema_repair.py +0 -0
  194. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_security_containment.py +0 -0
  195. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_services_execution.py +0 -0
  196. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_services_inspect.py +0 -0
  197. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_services_query.py +0 -0
  198. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_services_refs.py +0 -0
  199. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_source_annotator.py +0 -0
  200. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_storage.py +0 -0
  201. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_storage_prune.py +0 -0
  202. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_strace_parser.py +0 -0
  203. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_user_config.py +0 -0
  204. {blq_cli-1.2.0 → blq_cli-1.2.1}/tests/test_watch.py +0 -0
  205. {blq_cli-1.2.0 → blq_cli-1.2.1}/uv.lock +0 -0
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.2.1
4
+
5
+ ### Fixed — 1.2.0 was broken on Python 3.10 and 3.11
6
+
7
+ The TypedDicts added in 1.2.0 were imported from `typing`. pydantic refuses to
8
+ build a schema from `typing.TypedDict` below 3.12 ("Please use
9
+ `typing_extensions.TypedDict` instead"), so importing `blq.serve` raised on
10
+ every supported Python under 3.12 — which is to say the MCP server did not
11
+ start at all there.
12
+
13
+ `requires-python` is `>=3.10`, so 1.2.0 should not have shipped. It passed
14
+ local checks because the development interpreter was 3.14; CI caught it on the
15
+ 3.10 matrix entry, but the publish workflow triggers on release rather than on
16
+ a green CI run, so the package reached PyPI anyway.
17
+
18
+ Now imported from `typing_extensions` below 3.12, with the backport declared as
19
+ a conditional dependency. Verified against a real 3.11 interpreter: 1382 tests
20
+ pass, where 1.2.0 could not import.
21
+
22
+ **If you installed 1.2.0 on Python 3.10 or 3.11, upgrade.** On 3.12+ it was
23
+ unaffected.
24
+
25
+
3
26
  ## v1.2.0
4
27
 
5
28
  ### Added — MCP tools publish the names of the keys they return (#47)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: blq-cli
3
- Version: 1.2.0
3
+ Version: 1.2.1
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
@@ -27,6 +27,7 @@ Requires-Dist: pyyaml>=6.0
27
27
  Requires-Dist: tabulate>=0.9.0
28
28
  Requires-Dist: tomli-w>=1.0.0
29
29
  Requires-Dist: tomli>=2.0.0; python_version < '3.11'
30
+ Requires-Dist: typing-extensions>=4.0; python_version < '3.12'
30
31
  Requires-Dist: watchdog>=3.0.0
31
32
  Provides-Extra: dev
32
33
  Requires-Dist: fastmcp>=2.0.0; extra == 'dev'
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "blq-cli"
7
- version = "1.2.0"
7
+ version = "1.2.1"
8
8
  description = "Build Log Query - capture and query build/test logs with DuckDB"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -33,6 +33,9 @@ dependencies = [
33
33
  "pyyaml>=6.0",
34
34
  "tabulate>=0.9.0",
35
35
  "tomli>=2.0.0;python_version<'3.11'",
36
+ # pydantic will not build a schema from `typing.TypedDict` below 3.12, so
37
+ # the MCP tools' output schemas need the backport there.
38
+ "typing_extensions>=4.0;python_version<'3.12'",
36
39
  "tomli-w>=1.0.0",
37
40
  "watchdog>=3.0.0",
38
41
  ]
@@ -34,7 +34,17 @@ import re as _re
34
34
  import shlex
35
35
  import subprocess
36
36
  import sys
37
- from typing import Any, TypedDict
37
+ from typing import Any
38
+
39
+ # pydantic rejects `typing.TypedDict` below 3.12 and refuses to build a schema
40
+ # from it ("Please use typing_extensions.TypedDict instead"). This package
41
+ # supports 3.10+, so the stdlib import breaks every MCP tool on 3.10/3.11 —
42
+ # which is exactly how it shipped in 1.2.0, because the dev interpreter was
43
+ # 3.14 and only CI runs the older matrix.
44
+ if sys.version_info >= (3, 12):
45
+ from typing import TypedDict
46
+ else:
47
+ from typing_extensions import TypedDict
38
48
 
39
49
  import pandas as pd # type: ignore[import-untyped]
40
50
  from fastmcp import FastMCP
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
File without changes