atif-sql 0.2.0__tar.gz → 0.4.0__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 (195) hide show
  1. {atif_sql-0.2.0 → atif_sql-0.4.0}/PKG-INFO +12 -4
  2. {atif_sql-0.2.0 → atif_sql-0.4.0}/README.md +10 -3
  3. {atif_sql-0.2.0 → atif_sql-0.4.0}/docs/README.md +10 -8
  4. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/README.md +9 -5
  5. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/pyproject.toml +2 -2
  6. atif_sql-0.4.0/packages/atif-analytics/src/atif_analytics/application/prompts.py +771 -0
  7. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/_shared.py +9 -4
  8. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/classify.py +11 -5
  9. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/conflicts.py +10 -5
  10. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/friction.py +11 -36
  11. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/perceived.py +10 -5
  12. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/config.py +9 -2
  13. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/costs.py +10 -8
  14. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/transcript.py +13 -2
  15. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/corpus_reader.py +1 -0
  16. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/settings.py +5 -0
  17. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/README.md +6 -1
  18. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/pyproject.toml +6 -6
  19. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/README.md +6 -4
  20. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/pyproject.toml +1 -1
  21. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/model_prices.json +2131 -1482
  22. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/pricing.py +2 -2
  23. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/schema_version.py +13 -1
  24. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/pyproject.toml +1 -1
  25. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/README.md +5 -5
  26. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/pyproject.toml +1 -1
  27. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/README.md +13 -11
  28. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/pyproject.toml +1 -1
  29. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/cohere_bedrock.py +1 -1
  30. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/README.md +10 -5
  31. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/pyproject.toml +5 -1
  32. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/__init__.py +1 -1
  33. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/domain/ports.py +21 -6
  34. atif_sql-0.4.0/packages/atif-models/src/atif_models/domain/registry.py +225 -0
  35. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/domain/schema.py +1 -1
  36. atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/__init__.py +9 -0
  37. atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/anthropic_bedrock.py +296 -0
  38. atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/bedrock_common.py +113 -0
  39. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/infrastructure/openai_bedrock.py +22 -87
  40. atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/providers.py +37 -0
  41. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/infrastructure/settings.py +12 -12
  42. {atif_sql-0.2.0 → atif_sql-0.4.0}/pyproject.toml +3 -9
  43. atif_sql-0.2.0/packages/atif-analytics/src/atif_analytics/application/prompts.py +0 -750
  44. atif_sql-0.2.0/packages/atif-models/src/atif_models/domain/registry.py +0 -151
  45. atif_sql-0.2.0/packages/atif-models/src/atif_models/infrastructure/__init__.py +0 -8
  46. {atif_sql-0.2.0 → atif_sql-0.4.0}/.gitignore +0 -0
  47. {atif_sql-0.2.0 → atif_sql-0.4.0}/.vale/styles/Google/LICENSE +0 -0
  48. {atif_sql-0.2.0 → atif_sql-0.4.0}/.vale/styles/proselint/LICENSE +0 -0
  49. {atif_sql-0.2.0 → atif_sql-0.4.0}/.vale/styles/proselint/README.md +0 -0
  50. {atif_sql-0.2.0 → atif_sql-0.4.0}/LICENSE +0 -0
  51. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/LICENSE +0 -0
  52. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/__init__.py +0 -0
  53. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/__init__.py +0 -0
  54. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/analyze.py +0 -0
  55. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/__init__.py +0 -0
  56. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/__init__.py +0 -0
  57. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/authorship.py +0 -0
  58. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/friction.py +0 -0
  59. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/layout.py +0 -0
  60. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/models.py +0 -0
  61. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/ports.py +0 -0
  62. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/__init__.py +0 -0
  63. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/parquet_cache.py +0 -0
  64. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/sqlite_state/__init__.py +0 -0
  65. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/sqlite_state/checkpointer.py +0 -0
  66. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/sqlite_state/retry_queue.py +0 -0
  67. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/py.typed +0 -0
  68. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/LICENSE +0 -0
  69. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/__init__.py +0 -0
  70. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/__main__.py +0 -0
  71. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/app.py +0 -0
  72. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/converter_adapter.py +0 -0
  73. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/corpus.py +0 -0
  74. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/cron.py +0 -0
  75. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/duck_errors.py +0 -0
  76. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/embed_lake.py +0 -0
  77. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/errors.py +0 -0
  78. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/lake.py +0 -0
  79. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/lake_sessions.py +0 -0
  80. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/output.py +0 -0
  81. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/py.typed +0 -0
  82. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/LICENSE +0 -0
  83. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/__init__.py +0 -0
  84. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/application/__init__.py +0 -0
  85. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/application/convert_and_audit.py +0 -0
  86. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/application/convert_codex.py +0 -0
  87. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/__init__.py +0 -0
  88. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/agents.py +0 -0
  89. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/__init__.py +0 -0
  90. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/agent.py +0 -0
  91. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/content.py +0 -0
  92. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/final_metrics.py +0 -0
  93. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/metrics.py +0 -0
  94. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/observation.py +0 -0
  95. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/observation_result.py +0 -0
  96. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/step.py +0 -0
  97. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/subagent_trajectory_ref.py +0 -0
  98. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/tool_call.py +0 -0
  99. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/trajectory.py +0 -0
  100. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/trajectory_validator.py +0 -0
  101. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/blobs.py +0 -0
  102. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/claude_code_conversion.py +0 -0
  103. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_conversion.py +0 -0
  104. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_edges.py +0 -0
  105. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_enrichment.py +0 -0
  106. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_fidelity.py +0 -0
  107. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_nested_calls.py +0 -0
  108. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/edges.py +0 -0
  109. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/enrichment.py +0 -0
  110. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/errors.py +0 -0
  111. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/fidelity.py +0 -0
  112. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/result_signals.py +0 -0
  113. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/session_events.py +0 -0
  114. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/__init__.py +0 -0
  115. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/census.py +0 -0
  116. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/claude_code_converter.py +0 -0
  117. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/codex_adapter.py +0 -0
  118. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/codex_census.py +0 -0
  119. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/codex_converter.py +0 -0
  120. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/harbor_adapter.py +0 -0
  121. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/raw_records.py +0 -0
  122. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/source_archive.py +0 -0
  123. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/py.typed +0 -0
  124. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/LICENSE +0 -0
  125. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/README.md +0 -0
  126. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/__init__.py +0 -0
  127. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/application/__init__.py +0 -0
  128. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/application/materialize.py +0 -0
  129. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/__init__.py +0 -0
  130. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/agents.py +0 -0
  131. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/generation.py +0 -0
  132. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/layout.py +0 -0
  133. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/ports.py +0 -0
  134. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/session_id.py +0 -0
  135. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/sessions.py +0 -0
  136. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/slug.py +0 -0
  137. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/source_layout.py +0 -0
  138. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/watermark.py +0 -0
  139. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/__init__.py +0 -0
  140. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/atomic.py +0 -0
  141. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/compress_artifacts.py +0 -0
  142. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/fake_converter.py +0 -0
  143. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/scanner.py +0 -0
  144. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/settings.py +0 -0
  145. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/source_archive.py +0 -0
  146. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/py.typed +0 -0
  147. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/LICENSE +0 -0
  148. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/__init__.py +0 -0
  149. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/__init__.py +0 -0
  150. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/artifacts.py +0 -0
  151. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/authorship.py +0 -0
  152. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/catalog.py +0 -0
  153. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/columnar.py +0 -0
  154. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/embedding_guard.py +0 -0
  155. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/examples.py +0 -0
  156. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/lake.py +0 -0
  157. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/lake_sessions.py +0 -0
  158. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/raw_readers.py +0 -0
  159. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/session_id.py +0 -0
  160. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/sql_literal.py +0 -0
  161. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/__init__.py +0 -0
  162. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/analytics.py +0 -0
  163. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/authorship.py +0 -0
  164. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/columnar.py +0 -0
  165. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake.py +0 -0
  166. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake_sessions.py +0 -0
  167. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake_settings.py +0 -0
  168. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake_steps.py +0 -0
  169. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/projections.py +0 -0
  170. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/registry.py +0 -0
  171. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/stored_artifacts.py +0 -0
  172. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/py.typed +0 -0
  173. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/LICENSE +0 -0
  174. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/__init__.py +0 -0
  175. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/application/__init__.py +0 -0
  176. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/application/embed.py +0 -0
  177. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/application/prune.py +0 -0
  178. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/__init__.py +0 -0
  179. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/discovery.py +0 -0
  180. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/embedding_guard.py +0 -0
  181. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/errors.py +0 -0
  182. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/ports.py +0 -0
  183. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/sql_literal.py +0 -0
  184. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/text_stamp.py +0 -0
  185. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/__init__.py +0 -0
  186. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/corpus_text_rows.py +0 -0
  187. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/gemma_local.py +0 -0
  188. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/lake_text_rows.py +0 -0
  189. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/lance_store.py +0 -0
  190. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/providers.py +0 -0
  191. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/settings.py +0 -0
  192. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/py.typed +0 -0
  193. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/LICENSE +0 -0
  194. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/domain/__init__.py +0 -0
  195. {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: atif-sql
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: ATIF-native analytics over Claude Code agent trajectories: convert, materialize, and query agent sessions with DuckDB.
5
5
  Project-URL: Homepage, https://github.com/laithalsaadoon/atif-sql
6
6
  Project-URL: Repository, https://github.com/laithalsaadoon/atif-sql
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.13
17
17
  Classifier: Topic :: Software Development
18
18
  Classifier: Typing :: Typed
19
19
  Requires-Python: >=3.13
20
+ Requires-Dist: anthropic>=1.11.0
20
21
  Requires-Dist: anyio>=4.11.0
21
22
  Requires-Dist: boto3>=1.42.91
22
23
  Requires-Dist: cyclopts>=5.1.1
@@ -94,6 +95,13 @@ are not supported. [RELEASING.md](RELEASING.md) says how to measure the install.
94
95
  `ATIF_SQL_EMBED_PROVIDER=gemma`, `embed` and `search` run on this machine instead and cost
95
96
  nothing. Nothing else in the tool needs a credential.
96
97
 
98
+ `analyze` runs on OpenAI's GPT-6 models by default, and `ATIF_SQL_LLM_FAMILY=anthropic` switches
99
+ it to Claude 5.5. It sends the user and agent turns of each session plus every tool call's name and
100
+ the first 400 characters of its arguments. Each tool result goes as its size only, so command
101
+ output and file contents stay on your machine unless you set
102
+ `ATIF_SQL_SESSION_TEXT_TOOL_RESULT_BODIES=true`. The turns themselves still reach the model, so
103
+ anything pasted into a conversation does too.
104
+
97
105
  ## What you can do
98
106
 
99
107
  Start with the question you want to answer or the work you want to keep. Each command links
@@ -141,7 +149,7 @@ the only thing documented as installable is the `atif-sql` CLI above.
141
149
  | `atif-converter` | Claude Code and Codex CLI transcript → ATIF converters (ours, built on Harbor's ATIF models, vendored) + per-agent fidelity policy (loss accounting per session) |
142
150
  | `atif-corpus` | Corpus materialization: discovery, watermarks, quiescence, atomic artifact writes |
143
151
  | `atif-duck` | DuckDB views + macros over the materialized corpus (core surface plus the v2 analytics surface) |
144
- | `atif-models` | Model alias registry + structured-output LLM client; no other package hardcodes a model id |
152
+ | `atif-models` | Model alias registry + structured-output LLM clients for GPT-6 and Claude 5.5 on Bedrock; no other package hardcodes an LLM model id |
145
153
  | `atif-analytics` | the LLM pipelines `atif-sql analyze` runs: classify, conflicts, friction, and perceived |
146
154
  | `atif-embed` | Cohere Embed v4 on Bedrock or EmbeddingGemma 2 on this machine + LanceDB vector store + embedding backfill |
147
155
  | `atif-cli` | the composition root, and the source of the `atif-sql` command (see [What you can do](#what-you-can-do)) |
@@ -186,7 +194,7 @@ matching `ATIF_SQL_*` env var still wins.
186
194
  ```bash
187
195
  atif-sql materialize --agent codex
188
196
  atif-sql status --agent codex
189
- atif-sql query "SELECT agent, count(*) FROM sessions GROUP BY 1"
197
+ atif-sql query --agent codex "SELECT agent, count(*) FROM sessions GROUP BY 1"
190
198
  ```
191
199
 
192
200
  One corpus holds one agent, so a Codex corpus and a Claude Code corpus stay
@@ -261,7 +269,7 @@ vulnerability in a tool that reads local transcripts are in
261
269
  corpus is registered (override with `ATIF_SQL_QUERY_MEMORY_LIMIT` and `ATIF_SQL_QUERY_THREADS`),
262
270
  a private spill directory outside the corpus that's removed on exit, no extension installs at
263
271
  query time (`atif-sql embed --install-extension` is where the lance extension comes from), file
264
- facing statements (`COPY`, `EXPORT`, `ATTACH`, `INSTALL`, `LOAD`, `PREPARE`, `EXECUTE`) refused
272
+ facing statements (`COPY`, `EXPORT`, `ATTACH`, `DETACH`, `INSTALL`, `LOAD`, `PREPARE`, `EXECUTE`) refused
265
273
  before they run, and a refusal to run as root unless `ATIF_SQL_ALLOW_ROOT=1` says so. The details
266
274
  and the one accepted disclosure (`duckdb_settings()` lists the granted paths) are in
267
275
  [docs/reference/cli.md](docs/reference/cli.md#query).
@@ -53,6 +53,13 @@ are not supported. [RELEASING.md](RELEASING.md) says how to measure the install.
53
53
  `ATIF_SQL_EMBED_PROVIDER=gemma`, `embed` and `search` run on this machine instead and cost
54
54
  nothing. Nothing else in the tool needs a credential.
55
55
 
56
+ `analyze` runs on OpenAI's GPT-6 models by default, and `ATIF_SQL_LLM_FAMILY=anthropic` switches
57
+ it to Claude 5.5. It sends the user and agent turns of each session plus every tool call's name and
58
+ the first 400 characters of its arguments. Each tool result goes as its size only, so command
59
+ output and file contents stay on your machine unless you set
60
+ `ATIF_SQL_SESSION_TEXT_TOOL_RESULT_BODIES=true`. The turns themselves still reach the model, so
61
+ anything pasted into a conversation does too.
62
+
56
63
  ## What you can do
57
64
 
58
65
  Start with the question you want to answer or the work you want to keep. Each command links
@@ -100,7 +107,7 @@ the only thing documented as installable is the `atif-sql` CLI above.
100
107
  | `atif-converter` | Claude Code and Codex CLI transcript → ATIF converters (ours, built on Harbor's ATIF models, vendored) + per-agent fidelity policy (loss accounting per session) |
101
108
  | `atif-corpus` | Corpus materialization: discovery, watermarks, quiescence, atomic artifact writes |
102
109
  | `atif-duck` | DuckDB views + macros over the materialized corpus (core surface plus the v2 analytics surface) |
103
- | `atif-models` | Model alias registry + structured-output LLM client; no other package hardcodes a model id |
110
+ | `atif-models` | Model alias registry + structured-output LLM clients for GPT-6 and Claude 5.5 on Bedrock; no other package hardcodes an LLM model id |
104
111
  | `atif-analytics` | the LLM pipelines `atif-sql analyze` runs: classify, conflicts, friction, and perceived |
105
112
  | `atif-embed` | Cohere Embed v4 on Bedrock or EmbeddingGemma 2 on this machine + LanceDB vector store + embedding backfill |
106
113
  | `atif-cli` | the composition root, and the source of the `atif-sql` command (see [What you can do](#what-you-can-do)) |
@@ -145,7 +152,7 @@ matching `ATIF_SQL_*` env var still wins.
145
152
  ```bash
146
153
  atif-sql materialize --agent codex
147
154
  atif-sql status --agent codex
148
- atif-sql query "SELECT agent, count(*) FROM sessions GROUP BY 1"
155
+ atif-sql query --agent codex "SELECT agent, count(*) FROM sessions GROUP BY 1"
149
156
  ```
150
157
 
151
158
  One corpus holds one agent, so a Codex corpus and a Claude Code corpus stay
@@ -220,7 +227,7 @@ vulnerability in a tool that reads local transcripts are in
220
227
  corpus is registered (override with `ATIF_SQL_QUERY_MEMORY_LIMIT` and `ATIF_SQL_QUERY_THREADS`),
221
228
  a private spill directory outside the corpus that's removed on exit, no extension installs at
222
229
  query time (`atif-sql embed --install-extension` is where the lance extension comes from), file
223
- facing statements (`COPY`, `EXPORT`, `ATTACH`, `INSTALL`, `LOAD`, `PREPARE`, `EXECUTE`) refused
230
+ facing statements (`COPY`, `EXPORT`, `ATTACH`, `DETACH`, `INSTALL`, `LOAD`, `PREPARE`, `EXECUTE`) refused
224
231
  before they run, and a refusal to run as root unless `ATIF_SQL_ALLOW_ROOT=1` says so. The details
225
232
  and the one accepted disclosure (`duckdb_settings()` lists the granted paths) are in
226
233
  [docs/reference/cli.md](docs/reference/cli.md#query).
@@ -6,9 +6,11 @@ this codebase quietly assumes. Every factual claim carries a `path:LOC` citation
6
6
  Prose is generated; structure is mechanical. Cross-references are deterministic.
7
7
 
8
8
  Citations come as full paths or as shorthands, and each one resolves into a
9
- source file. A validator rejects any citation naming a file that does not exist, a line
10
- outside that file's range, or a shorthand with no resolvable antecedent, and it exits non-zero on the
11
- first one, so a citation here resolves or the tree does not ship.
9
+ source file. The docs site build turns each one into a link and fails on the first citation naming
10
+ a file that does not exist at the commit it links to, or a shorthand with no resolvable antecedent.
11
+ `mise run docs:citations` also fails on a line outside its file and, against the base commit, on a
12
+ citation whose cited lines a change moved or removed without editing the citation, so a citation
13
+ here resolves to the code it names or the tree does not ship.
12
14
 
13
15
  ## Start here
14
16
 
@@ -24,8 +26,8 @@ first one, so a citation here resolves or the tree does not ship.
24
26
 
25
27
  - [System overview](architecture/system-overview.md): the short version, the stack, and one
26
28
  diagram of the workspace members.
27
- - [Module map](architecture/module-map.md): one section per member, ordered by source size, with the
28
- files in each that carry the weight.
29
+ - [Module map](architecture/module-map.md): one section per member, with the files in each that
30
+ carry the weight.
29
31
  - [Data flow](architecture/data-flow.md): the flows (`materialize`, `query`, `analyze`) traced end
30
32
  to end, each as a sequence diagram.
31
33
 
@@ -75,11 +77,11 @@ first one, so a citation here resolves or the tree does not ship.
75
77
 
76
78
  ## Documents this tree deliberately omits
77
79
 
78
- - **`analysis/ownership.md`**: the history sits under a single bot identity,
79
- with no human authors. A per-person ranked table and a bus-factor list would be noise dressed as
80
+ - **`analysis/ownership.md`**: every commit in the history names either the one maintainer or a
81
+ GitHub bot account. A per-person ranked table and a bus-factor list would be noise dressed as
80
82
  analysis.
81
83
  - **`reference/rpc-tools.md`**: there is no RPC, MCP, or HTTP surface. `fastapi`, `uvicorn`,
82
- `starlette`, and the supabase client stack do appear in the installed dependency closure, arriving
84
+ `starlette`, and the supabase client stack do appear in the locked dev dependency closure, arriving
83
85
  transitively through harbor, and no first-party module imports any of them.
84
86
 
85
87
  An empty file in either slot would imply absence by omission rather than by silence, which is why
@@ -6,11 +6,14 @@ The v2 analytics pipelines over the materialized ATIF corpus:
6
6
  read the materialized corpus (`trajectory.json` steps + `edges.jsonl`,
7
7
  each stored compressed or plain),
8
8
  render session transcripts under the documented caps, and classify through
9
- `atif_models.LlmStructuredProvider` (GPT-5.6 strict structured outputs on
10
- bedrock-runtime; sizes classify=luna, conflicts=sol, friction=luna,
11
- perceived=terra). `classify` labels `work_category` and `goal` only.
9
+ `atif_models.domain.ports.LlmStructuredProvider` (GPT-6 or Claude 5.5
10
+ structured outputs on bedrock-runtime; sizes classify=small, conflicts=large,
11
+ friction=small, perceived=medium). `classify` labels `work_category` and `goal` only.
12
12
  `classify` and `conflicts` skip non-interactive sessions (`turn_audit`,
13
13
  `one_shot_job`), and `friction` and `perceived` read human turns only.
14
+ The transcripts carry user and agent turns and tool calls with their
15
+ arguments; each tool result is a size stub unless
16
+ `ATIF_SQL_SESSION_TEXT_TOOL_RESULT_BODIES=true`.
14
17
  * **Authorship** — `atif_analytics.domain.authorship` decides who wrote a
15
18
  user step (`human`, `stop_hook`, `task_notification`, `harness`,
16
19
  `audit_prompt`). It's a twin of `atif_duck.domain.authorship`, pinned by
@@ -22,8 +25,9 @@ The v2 analytics pipelines over the materialized ATIF corpus:
22
25
  sharded parquet caches under `<corpus_root>/analytics/<name>/`.
23
26
 
24
27
  Composition: atif-analytics imports **only** atif-models among the workspace
25
- packages (import-linter independence contract); atif-cli composes it with
26
- atif-duck's registered views via the `atif-sql analyze` command.
28
+ packages (import-linter forbidden contract); atif-cli composes it via the
29
+ `atif-sql analyze` command, handing it a session source over atif-duck's lake
30
+ (`atif_cli.lake_sessions`).
27
31
 
28
32
  All pipelines default to `dry_run=True` and return plan dicts with
29
33
  `estimate_cost_tokens` projections (cost guard per CONTRACT-V2).
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "atif-analytics"
3
- version = "0.2.0"
3
+ version = "0.4.0"
4
4
  description = "LLM analytics pipelines over the materialized ATIF corpus: session classification, stance conflicts, user friction, and perceived errors."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -20,7 +20,7 @@ dependencies = [
20
20
  # a LOCAL source an external installer never sees, so a bare name would ship as
21
21
  # `Requires-Dist: atif-models` and resolve to whatever the newest release of
22
22
  # that name is. `[tool.commitizen] version_files` rewrites this line on a bump.
23
- "atif-models==0.2.0",
23
+ "atif-models==0.4.0",
24
24
  "loguru>=0.7.3",
25
25
  "polars>=1.40.0",
26
26
  "pyarrow>=23.0.1",