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.
- {atif_sql-0.2.0 → atif_sql-0.4.0}/PKG-INFO +12 -4
- {atif_sql-0.2.0 → atif_sql-0.4.0}/README.md +10 -3
- {atif_sql-0.2.0 → atif_sql-0.4.0}/docs/README.md +10 -8
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/README.md +9 -5
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/pyproject.toml +2 -2
- atif_sql-0.4.0/packages/atif-analytics/src/atif_analytics/application/prompts.py +771 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/_shared.py +9 -4
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/classify.py +11 -5
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/conflicts.py +10 -5
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/friction.py +11 -36
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/perceived.py +10 -5
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/config.py +9 -2
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/costs.py +10 -8
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/transcript.py +13 -2
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/corpus_reader.py +1 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/settings.py +5 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/README.md +6 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/pyproject.toml +6 -6
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/README.md +6 -4
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/pyproject.toml +1 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/model_prices.json +2131 -1482
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/pricing.py +2 -2
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/schema_version.py +13 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/pyproject.toml +1 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/README.md +5 -5
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/pyproject.toml +1 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/README.md +13 -11
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/pyproject.toml +1 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/cohere_bedrock.py +1 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/README.md +10 -5
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/pyproject.toml +5 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/__init__.py +1 -1
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/domain/ports.py +21 -6
- atif_sql-0.4.0/packages/atif-models/src/atif_models/domain/registry.py +225 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/domain/schema.py +1 -1
- atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/__init__.py +9 -0
- atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/anthropic_bedrock.py +296 -0
- atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/bedrock_common.py +113 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/infrastructure/openai_bedrock.py +22 -87
- atif_sql-0.4.0/packages/atif-models/src/atif_models/infrastructure/providers.py +37 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/infrastructure/settings.py +12 -12
- {atif_sql-0.2.0 → atif_sql-0.4.0}/pyproject.toml +3 -9
- atif_sql-0.2.0/packages/atif-analytics/src/atif_analytics/application/prompts.py +0 -750
- atif_sql-0.2.0/packages/atif-models/src/atif_models/domain/registry.py +0 -151
- atif_sql-0.2.0/packages/atif-models/src/atif_models/infrastructure/__init__.py +0 -8
- {atif_sql-0.2.0 → atif_sql-0.4.0}/.gitignore +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/.vale/styles/Google/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/.vale/styles/proselint/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/.vale/styles/proselint/README.md +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/analyze.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/application/use_cases/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/authorship.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/friction.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/layout.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/models.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/domain/ports.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/parquet_cache.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/sqlite_state/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/sqlite_state/checkpointer.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/infrastructure/sqlite_state/retry_queue.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-analytics/src/atif_analytics/py.typed +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/__main__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/app.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/converter_adapter.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/corpus.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/cron.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/duck_errors.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/embed_lake.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/errors.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/lake.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/lake_sessions.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/output.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-cli/src/atif_cli/py.typed +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/application/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/application/convert_and_audit.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/application/convert_codex.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/agents.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/agent.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/content.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/final_metrics.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/metrics.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/observation.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/observation_result.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/step.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/subagent_trajectory_ref.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/tool_call.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/trajectory.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/atif/trajectory_validator.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/blobs.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/claude_code_conversion.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_conversion.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_edges.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_enrichment.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_fidelity.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/codex_nested_calls.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/edges.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/enrichment.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/errors.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/fidelity.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/result_signals.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/domain/session_events.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/census.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/claude_code_converter.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/codex_adapter.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/codex_census.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/codex_converter.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/harbor_adapter.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/raw_records.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/infrastructure/source_archive.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-converter/src/atif_converter/py.typed +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/README.md +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/application/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/application/materialize.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/agents.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/generation.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/layout.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/ports.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/session_id.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/sessions.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/slug.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/source_layout.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/domain/watermark.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/atomic.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/compress_artifacts.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/fake_converter.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/scanner.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/settings.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/infrastructure/source_archive.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-corpus/src/atif_corpus/py.typed +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/artifacts.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/authorship.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/catalog.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/columnar.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/embedding_guard.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/examples.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/lake.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/lake_sessions.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/raw_readers.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/session_id.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/domain/sql_literal.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/analytics.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/authorship.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/columnar.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake_sessions.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake_settings.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/lake_steps.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/projections.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/registry.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/infrastructure/stored_artifacts.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-duck/src/atif_duck/py.typed +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/application/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/application/embed.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/application/prune.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/discovery.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/embedding_guard.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/errors.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/ports.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/sql_literal.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/domain/text_stamp.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/__init__.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/corpus_text_rows.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/gemma_local.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/lake_text_rows.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/lance_store.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/providers.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/infrastructure/settings.py +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-embed/src/atif_embed/py.typed +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/LICENSE +0 -0
- {atif_sql-0.2.0 → atif_sql-0.4.0}/packages/atif-models/src/atif_models/domain/__init__.py +0 -0
- {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.
|
|
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
|
|
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
|
|
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.
|
|
10
|
-
|
|
11
|
-
|
|
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,
|
|
28
|
-
|
|
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
|
|
79
|
-
|
|
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
|
|
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-
|
|
10
|
-
bedrock-runtime; sizes classify=
|
|
11
|
-
perceived=
|
|
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
|
|
26
|
-
atif-
|
|
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.
|
|
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.
|
|
23
|
+
"atif-models==0.4.0",
|
|
24
24
|
"loguru>=0.7.3",
|
|
25
25
|
"polars>=1.40.0",
|
|
26
26
|
"pyarrow>=23.0.1",
|