Metadata-Version: 2.4
Name: bijux-agent
Version: 0.1.0
Summary: A composable, multi-agentic pipeline for advanced file processing and summarization.
Author-email: Bijan Mousavi <mousavi.bijan@gmail.com>
License: MIT License
        
        Copyright (c) 2025 Bijan Mousavi
        
        Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
        associated documentation files (the "Software"), to deal in the Software without restriction, including
        without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
        following conditions:
        
        The above copyright notice and this permission notice shall be included in all copies or substantial
        portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
        LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
        EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
        IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
        USE OR OTHER DEALINGS IN THE SOFTWARE.
License-File: LICENSE
Keywords: AI,LLM,file-processing,multi-agent,pipeline,summarization
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing :: General
Requires-Python: <4,>=3.11
Requires-Dist: click>=8.1.7
Requires-Dist: colorama>=0.4.6
Requires-Dist: colorlog<7.0,>=6.7.0
Requires-Dist: cookiecutter>=2.3.0
Requires-Dist: cryptography>=44.0.1
Requires-Dist: fastapi<1.0,>=0.110
Requires-Dist: injector>=0.20.1
Requires-Dist: openai>=1.0.0
Requires-Dist: orjson>=3.9.0
Requires-Dist: packaging>=23.0
Requires-Dist: pluggy>=1.0.0
Requires-Dist: prompt-toolkit>=3.0.0
Requires-Dist: psutil>=6.0.0
Requires-Dist: pydantic-settings~=2.0
Requires-Dist: pydantic<3.0,>=2.9.2
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: rapidfuzz>=3.0.0
Requires-Dist: requests>=2.30.0
Requires-Dist: structlog>=24.4.0
Requires-Dist: typer>=0.12.5
Provides-Extra: dev
Requires-Dist: anyio<5.0,>=4.4.0; extra == 'dev'
Requires-Dist: bandit<2.0,>=1.7.10; extra == 'dev'
Requires-Dist: build<2.0,>=1.0.3; extra == 'dev'
Requires-Dist: codespell<3.0,>=2.3.0; extra == 'dev'
Requires-Dist: commitizen<5.0,>=4.0.0; extra == 'dev'
Requires-Dist: cosmic-ray>=4.0.0; extra == 'dev'
Requires-Dist: deptry<1.0,>=0.10.0; extra == 'dev'
Requires-Dist: hypothesis-jsonschema<1.0,>=0.23.0; extra == 'dev'
Requires-Dist: hypothesis<7.0,>=6.103.0; extra == 'dev'
Requires-Dist: interrogate<2.0,>=1.7.0; extra == 'dev'
Requires-Dist: mkdocs-gen-files; extra == 'dev'
Requires-Dist: mkdocs-git-revision-date-localized-plugin<2.0,>=1.2.0; extra == 'dev'
Requires-Dist: mkdocs-glightbox<1.0,>=0.3; extra == 'dev'
Requires-Dist: mkdocs-include-markdown-plugin; extra == 'dev'
Requires-Dist: mkdocs-literate-nav; extra == 'dev'
Requires-Dist: mkdocs-material<10.0,>=9.5.39; extra == 'dev'
Requires-Dist: mkdocs-material[imaging]<10.0,>=9.5.39; extra == 'dev'
Requires-Dist: mkdocs-minify-plugin<1.0,>=0.7; extra == 'dev'
Requires-Dist: mkdocs-redirects<2.0,>=1.2; extra == 'dev'
Requires-Dist: mkdocs<2.0,>=1.6.1; extra == 'dev'
Requires-Dist: mkdocstrings[python]<1.0,>=0.26.1; extra == 'dev'
Requires-Dist: mutmut>=3.0; extra == 'dev'
Requires-Dist: mypy<2.0,>=1.11.2; extra == 'dev'
Requires-Dist: openapi-spec-validator<1.0,>=0.7.1; extra == 'dev'
Requires-Dist: pexpect<5.0,>=4.8.0; extra == 'dev'
Requires-Dist: pip-audit<3.0,>=2.7.3; extra == 'dev'
Requires-Dist: prance>=25.4.0.0; extra == 'dev'
Requires-Dist: pre-commit>=4.0; extra == 'dev'
Requires-Dist: pydocstyle<7.0,>=6.2.1; extra == 'dev'
Requires-Dist: pyright<2.0,>=1.1.320; extra == 'dev'
Requires-Dist: pytest-asyncio<2.0,>=1.0.0; extra == 'dev'
Requires-Dist: pytest-benchmark<5.0,>=4.0.0; extra == 'dev'
Requires-Dist: pytest-cov<7.0,>=6.2.1; extra == 'dev'
Requires-Dist: pytest-rerunfailures<14.0,>=13.0; extra == 'dev'
Requires-Dist: pytest-timeout<3.0,>=2.4.0; extra == 'dev'
Requires-Dist: pytest<9.0,>=8.4.1; extra == 'dev'
Requires-Dist: pytype>=2024.10.11; extra == 'dev'
Requires-Dist: radon>=6.0.0; extra == 'dev'
Requires-Dist: reuse<6.0.0,>=4.0.0; extra == 'dev'
Requires-Dist: ruff<1.0,>=0.6.8; extra == 'dev'
Requires-Dist: schemathesis<5.0,>=4.0; extra == 'dev'
Requires-Dist: towncrier<25.0,>=23.0; extra == 'dev'
Requires-Dist: twine<7.0,>=6.1.0; extra == 'dev'
Requires-Dist: types-colorama<1.0,>=0.0.14; extra == 'dev'
Requires-Dist: types-orjson<4.0,>=3.6.0; extra == 'dev'
Requires-Dist: types-pexpect<5.0,>=4.9.0; extra == 'dev'
Requires-Dist: types-psutil<7.0,>=6.0.0; extra == 'dev'
Requires-Dist: types-pyyaml<7.0,>=6.0.12; extra == 'dev'
Requires-Dist: types-requests<3.0,>=2.32.4; extra == 'dev'
Requires-Dist: typing-extensions<5.0,>=4.5.0; extra == 'dev'
Requires-Dist: uvicorn<1.0,>=0.30.1; extra == 'dev'
Requires-Dist: vulture<3.0,>=2.7; extra == 'dev'
Provides-Extra: doc
Requires-Dist: myst-parser<4.0.0,>=3.0.0; extra == 'doc'
Requires-Dist: sphinx-rtd-theme<3.0.0,>=2.0.0; extra == 'doc'
Requires-Dist: sphinx<8.0.0,>=7.0.0; extra == 'doc'
Provides-Extra: extra
Requires-Dist: lxml<6.0.0,>=5.3.0; extra == 'extra'
Requires-Dist: openpyxl<4.0.0,>=3.1.0; extra == 'extra'
Requires-Dist: python-docx<2.0.0,>=1.1.0; extra == 'extra'
Provides-Extra: filereaders
Requires-Dist: pandas<3.0,>=2.0.3; extra == 'filereaders'
Requires-Dist: pdfminer-six<20240000,>=20221105; extra == 'filereaders'
Requires-Dist: pymupdf<2.0,>=1.23.0; extra == 'filereaders'
Requires-Dist: pypdf2<4.0,>=3.0.1; extra == 'filereaders'
Requires-Dist: pytesseract<0.4,>=0.3.10; extra == 'filereaders'
Requires-Dist: python-docx<2.0.0,>=1.1.0; extra == 'filereaders'
Provides-Extra: profiling
Requires-Dist: memory-profiler<0.62.0,>=0.61.0; extra == 'profiling'
Requires-Dist: psutil<7.0.0,>=6.0.0; extra == 'profiling'
Description-Content-Type: text/markdown

# Project Contract

This page MUST define the runtime contract for bijux-agent. It MUST exist to bind Orchestrator, TraceRecorder, and FailureArtifact behavior. It MUST apply to all users and integrators.

## Contract Scope

- The contract MUST apply to runtime behavior only.
- The contract MUST cover Orchestrator, TraceRecorder, FailureArtifact, and AuditableDocPipeline.
- The contract MUST NOT cover performance, cost, model quality, or UX stability.

## Guarantees

- Orchestrator MUST record TraceEntry records via TraceRecorder.
- RunTrace MUST capture RunTraceHeader and ReplayMetadata fields.
- FailureArtifact MUST encode FailureClass and FailureCategory values.

## Refusals

- Agents MUST NOT orchestrate execution or manage lifecycle.
- Agents MUST NOT persist state across runs.
- Orchestrator MUST NOT apply silent retries without FailurePolicy.

## CLI Contract

- The CLI MUST invoke AuditableDocPipeline through `src/bijux_agent/main.py`.
- The CLI MUST NOT bypass FailurePolicy or TraceRecorder enforcement.
- The CLI and HTTP API MUST produce equivalent PipelineResult traces for identical inputs and config.

## Failure Semantics

- Invalid inputs MUST raise schema validation errors.
- Missing trace metadata MUST raise runtime errors in TraceRecorder.
