heddle-ai 0.9.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.
- heddle_ai-0.9.1/.github/workflows/ci.yml +68 -0
- heddle_ai-0.9.1/.github/workflows/docs.yml +50 -0
- heddle_ai-0.9.1/.github/workflows/publish.yml +41 -0
- heddle_ai-0.9.1/.gitignore +19 -0
- heddle_ai-0.9.1/.python-version +1 -0
- heddle_ai-0.9.1/.rumdl.toml +8 -0
- heddle_ai-0.9.1/CLAUDE.md +666 -0
- heddle_ai-0.9.1/GOVERNANCE.md +110 -0
- heddle_ai-0.9.1/LICENSE +379 -0
- heddle_ai-0.9.1/PKG-INFO +330 -0
- heddle_ai-0.9.1/README.md +240 -0
- heddle_ai-0.9.1/configs/councils/example.yaml +40 -0
- heddle_ai-0.9.1/configs/mcp/docman.yaml +193 -0
- heddle_ai-0.9.1/configs/orchestrators/default.yaml +150 -0
- heddle_ai-0.9.1/configs/orchestrators/rag_pipeline.yaml +160 -0
- heddle_ai-0.9.1/configs/router_rules.yaml +102 -0
- heddle_ai-0.9.1/configs/schedulers/example.yaml +120 -0
- heddle_ai-0.9.1/configs/workers/_template.yaml +312 -0
- heddle_ai-0.9.1/configs/workers/classifier.yaml +120 -0
- heddle_ai-0.9.1/configs/workers/extractor.yaml +132 -0
- heddle_ai-0.9.1/configs/workers/qa.yaml +79 -0
- heddle_ai-0.9.1/configs/workers/rag_chunker.yaml +118 -0
- heddle_ai-0.9.1/configs/workers/rag_ingestor.yaml +110 -0
- heddle_ai-0.9.1/configs/workers/rag_mux.yaml +118 -0
- heddle_ai-0.9.1/configs/workers/rag_trend_analyzer.yaml +144 -0
- heddle_ai-0.9.1/configs/workers/rag_vectorstore.yaml +152 -0
- heddle_ai-0.9.1/configs/workers/rag_vectorstore_lance.yaml +80 -0
- heddle_ai-0.9.1/configs/workers/reviewer.yaml +106 -0
- heddle_ai-0.9.1/configs/workers/summarizer.yaml +136 -0
- heddle_ai-0.9.1/configs/workers/translator.yaml +73 -0
- heddle_ai-0.9.1/deploy/macos/install.sh +195 -0
- heddle_ai-0.9.1/deploy/macos/uninstall.sh +20 -0
- heddle_ai-0.9.1/deploy/windows/install.ps1 +182 -0
- heddle_ai-0.9.1/deploy/windows/uninstall.ps1 +12 -0
- heddle_ai-0.9.1/docker/Dockerfile.orchestrator +27 -0
- heddle_ai-0.9.1/docker/Dockerfile.router +26 -0
- heddle_ai-0.9.1/docker/Dockerfile.worker +28 -0
- heddle_ai-0.9.1/docker/Dockerfile.workshop +21 -0
- heddle_ai-0.9.1/docker/entrypoint.sh +17 -0
- heddle_ai-0.9.1/docker-compose.yml +74 -0
- heddle_ai-0.9.1/docs/APP_DEPLOYMENT.md +152 -0
- heddle_ai-0.9.1/docs/ARCHITECTURE.md +503 -0
- heddle_ai-0.9.1/docs/BLIND_AUDIT.md +403 -0
- heddle_ai-0.9.1/docs/CLI_REFERENCE.md +417 -0
- heddle_ai-0.9.1/docs/CODING_GUIDE.md +539 -0
- heddle_ai-0.9.1/docs/CONCEPTS.md +176 -0
- heddle_ai-0.9.1/docs/CONFIG.md +134 -0
- heddle_ai-0.9.1/docs/CONTRIBUTING.md +140 -0
- heddle_ai-0.9.1/docs/DESIGN_INVARIANTS.md +560 -0
- heddle_ai-0.9.1/docs/GETTING_STARTED.md +282 -0
- heddle_ai-0.9.1/docs/KUBERNETES.md +241 -0
- heddle_ai-0.9.1/docs/LOCAL_DEPLOYMENT.md +223 -0
- heddle_ai-0.9.1/docs/TROUBLESHOOTING.md +551 -0
- heddle_ai-0.9.1/docs/WHY_HEDDLE.md +173 -0
- heddle_ai-0.9.1/docs/WORKSHOP_TOUR.md +175 -0
- heddle_ai-0.9.1/docs/api/bus.md +13 -0
- heddle_ai-0.9.1/docs/api/contrib.md +102 -0
- heddle_ai-0.9.1/docs/api/core.md +49 -0
- heddle_ai-0.9.1/docs/api/mcp.md +33 -0
- heddle_ai-0.9.1/docs/api/orchestrator.md +29 -0
- heddle_ai-0.9.1/docs/api/router.md +9 -0
- heddle_ai-0.9.1/docs/api/scheduler.md +3 -0
- heddle_ai-0.9.1/docs/api/tracing.md +3 -0
- heddle_ai-0.9.1/docs/api/worker.md +62 -0
- heddle_ai-0.9.1/docs/building-workflows.md +1068 -0
- heddle_ai-0.9.1/docs/council-howto.md +303 -0
- heddle_ai-0.9.1/docs/generate_diagrams.py +729 -0
- heddle_ai-0.9.1/docs/images/architecture-overview.svg +117 -0
- heddle_ai-0.9.1/docs/images/data-flow.svg +117 -0
- heddle_ai-0.9.1/docs/images/developer-workflow.svg +78 -0
- heddle_ai-0.9.1/docs/images/nats-topology.svg +53 -0
- heddle_ai-0.9.1/docs/images/workshop-ui.svg +280 -0
- heddle_ai-0.9.1/docs/index.md +93 -0
- heddle_ai-0.9.1/docs/rag-howto.md +594 -0
- heddle_ai-0.9.1/docs/tutorials/document-intake.md +471 -0
- heddle_ai-0.9.1/docs/tutorials/research-review.md +639 -0
- heddle_ai-0.9.1/docs/workers-reference.md +405 -0
- heddle_ai-0.9.1/docs/workshop.md +684 -0
- heddle_ai-0.9.1/examples/document-intake/README.md +113 -0
- heddle_ai-0.9.1/examples/document-intake/phase-1/eval/test_suite.json +80 -0
- heddle_ai-0.9.1/examples/document-intake/phase-1/workers/comment_classifier.yaml +121 -0
- heddle_ai-0.9.1/examples/document-intake/phase-2/orchestrators/document_intake.yaml +81 -0
- heddle_ai-0.9.1/examples/document-intake/phase-2/workers/batch_summarizer.yaml +157 -0
- heddle_ai-0.9.1/examples/document-intake/phase-2/workers/comment_classifier.yaml +129 -0
- heddle_ai-0.9.1/examples/document-intake/phase-2/workers/csv_reader.yaml +57 -0
- heddle_ai-0.9.1/examples/document-intake/phase-2/workers/entity_extractor.yaml +140 -0
- heddle_ai-0.9.1/examples/document-intake/phase-3/orchestrators/document_intake_audited.yaml +93 -0
- heddle_ai-0.9.1/examples/document-intake/phase-3/workers/batch_summarizer.yaml +157 -0
- heddle_ai-0.9.1/examples/document-intake/phase-3/workers/blind_bias_auditor.yaml +144 -0
- heddle_ai-0.9.1/examples/document-intake/phase-3/workers/comment_classifier.yaml +129 -0
- heddle_ai-0.9.1/examples/document-intake/phase-3/workers/csv_reader.yaml +57 -0
- heddle_ai-0.9.1/examples/document-intake/phase-3/workers/entity_extractor.yaml +140 -0
- heddle_ai-0.9.1/examples/document-intake/phase-3/workers/fairness_reviewer.yaml +166 -0
- heddle_ai-0.9.1/examples/document-intake/processing/__init__.py +1 -0
- heddle_ai-0.9.1/examples/document-intake/processing/csv_reader.py +106 -0
- heddle_ai-0.9.1/examples/document-intake/sample-data/public_comments.csv +13 -0
- heddle_ai-0.9.1/examples/document-intake/sample-data/public_comments.json +74 -0
- heddle_ai-0.9.1/examples/rag_demo.py +194 -0
- heddle_ai-0.9.1/examples/research-review/README.md +97 -0
- heddle_ai-0.9.1/examples/research-review/phase-1/eval/test_suite.json +42 -0
- heddle_ai-0.9.1/examples/research-review/phase-1/workers/claim_extractor.yaml +98 -0
- heddle_ai-0.9.1/examples/research-review/phase-2/orchestrators/research_review.yaml +78 -0
- heddle_ai-0.9.1/examples/research-review/phase-2/workers/claim_extractor.yaml +98 -0
- heddle_ai-0.9.1/examples/research-review/phase-2/workers/methodology_reviewer.yaml +116 -0
- heddle_ai-0.9.1/examples/research-review/phase-2/workers/review_summarizer.yaml +131 -0
- heddle_ai-0.9.1/examples/research-review/phase-3/orchestrators/research_review_blind.yaml +85 -0
- heddle_ai-0.9.1/examples/research-review/phase-3/workers/blind_reviewer.yaml +129 -0
- heddle_ai-0.9.1/examples/research-review/phase-3/workers/claim_extractor.yaml +98 -0
- heddle_ai-0.9.1/examples/research-review/phase-3/workers/methodology_reviewer.yaml +116 -0
- heddle_ai-0.9.1/examples/research-review/phase-3/workers/review_synthesizer.yaml +163 -0
- heddle_ai-0.9.1/examples/research-review/phase-3/workers/terminology_neutralizer.yaml +110 -0
- heddle_ai-0.9.1/examples/research-review/sample-data/abstracts.json +26 -0
- heddle_ai-0.9.1/k8s/kustomization.yaml +31 -0
- heddle_ai-0.9.1/k8s/namespace.yaml +6 -0
- heddle_ai-0.9.1/k8s/nats-deployment.yaml +45 -0
- heddle_ai-0.9.1/k8s/orchestrator-deployment.yaml +50 -0
- heddle_ai-0.9.1/k8s/redis-deployment.yaml +39 -0
- heddle_ai-0.9.1/k8s/router-deployment.yaml +29 -0
- heddle_ai-0.9.1/k8s/worker-deployment.yaml +144 -0
- heddle_ai-0.9.1/k8s/workshop-deployment.yaml +52 -0
- heddle_ai-0.9.1/mkdocs.yml +108 -0
- heddle_ai-0.9.1/pyproject.toml +258 -0
- heddle_ai-0.9.1/src/heddle/__init__.py +5 -0
- heddle_ai-0.9.1/src/heddle/bus/__init__.py +0 -0
- heddle_ai-0.9.1/src/heddle/bus/base.py +91 -0
- heddle_ai-0.9.1/src/heddle/bus/memory.py +118 -0
- heddle_ai-0.9.1/src/heddle/bus/nats_adapter.py +180 -0
- heddle_ai-0.9.1/src/heddle/cli/__init__.py +0 -0
- heddle_ai-0.9.1/src/heddle/cli/config.py +176 -0
- heddle_ai-0.9.1/src/heddle/cli/council.py +249 -0
- heddle_ai-0.9.1/src/heddle/cli/main.py +927 -0
- heddle_ai-0.9.1/src/heddle/cli/new.py +369 -0
- heddle_ai-0.9.1/src/heddle/cli/preflight.py +103 -0
- heddle_ai-0.9.1/src/heddle/cli/rag.py +307 -0
- heddle_ai-0.9.1/src/heddle/cli/setup.py +268 -0
- heddle_ai-0.9.1/src/heddle/cli/validate.py +144 -0
- heddle_ai-0.9.1/src/heddle/contrib/__init__.py +1 -0
- heddle_ai-0.9.1/src/heddle/contrib/chatbridge/__init__.py +13 -0
- heddle_ai-0.9.1/src/heddle/contrib/chatbridge/anthropic.py +104 -0
- heddle_ai-0.9.1/src/heddle/contrib/chatbridge/base.py +97 -0
- heddle_ai-0.9.1/src/heddle/contrib/chatbridge/manual.py +103 -0
- heddle_ai-0.9.1/src/heddle/contrib/chatbridge/ollama.py +102 -0
- heddle_ai-0.9.1/src/heddle/contrib/chatbridge/openai.py +106 -0
- heddle_ai-0.9.1/src/heddle/contrib/chatbridge/worker.py +126 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/__init__.py +34 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/config.py +110 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/convergence.py +264 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/orchestrator.py +404 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/protocol.py +254 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/runner.py +311 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/schemas.py +124 -0
- heddle_ai-0.9.1/src/heddle/contrib/council/transcript.py +149 -0
- heddle_ai-0.9.1/src/heddle/contrib/docproc/__init__.py +18 -0
- heddle_ai-0.9.1/src/heddle/contrib/docproc/contracts.py +26 -0
- heddle_ai-0.9.1/src/heddle/contrib/docproc/docling_backend.py +304 -0
- heddle_ai-0.9.1/src/heddle/contrib/docproc/markitdown_backend.py +182 -0
- heddle_ai-0.9.1/src/heddle/contrib/docproc/smart_extractor.py +154 -0
- heddle_ai-0.9.1/src/heddle/contrib/duckdb/__init__.py +17 -0
- heddle_ai-0.9.1/src/heddle/contrib/duckdb/query_backend.py +410 -0
- heddle_ai-0.9.1/src/heddle/contrib/duckdb/vector_tool.py +202 -0
- heddle_ai-0.9.1/src/heddle/contrib/duckdb/view_tool.py +205 -0
- heddle_ai-0.9.1/src/heddle/contrib/lancedb/__init__.py +14 -0
- heddle_ai-0.9.1/src/heddle/contrib/lancedb/store.py +371 -0
- heddle_ai-0.9.1/src/heddle/contrib/lancedb/tool.py +162 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/__init__.py +31 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/analysis/__init__.py +19 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/analysis/llm_analyzers.py +617 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/backends.py +270 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/chunker/__init__.py +9 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/chunker/sentence_chunker.py +220 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/ingestion/__init__.py +9 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/ingestion/base.py +52 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/ingestion/normalize.py +116 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/ingestion/telegram_ingestor.py +261 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/ingestion/telegram_live.py +285 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/mux/__init__.py +5 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/mux/stream_mux.py +191 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/schemas/__init__.py +75 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/schemas/analysis.py +173 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/schemas/chunk.py +40 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/schemas/embedding.py +35 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/schemas/mux.py +127 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/schemas/post.py +105 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/schemas/telegram.py +180 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/tools/__init__.py +27 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/tools/rtl_normalizer.py +241 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/tools/temporal_batcher.py +233 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/vectorstore/__init__.py +6 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/vectorstore/base.py +113 -0
- heddle_ai-0.9.1/src/heddle/contrib/rag/vectorstore/duckdb_store.py +357 -0
- heddle_ai-0.9.1/src/heddle/contrib/redis/__init__.py +7 -0
- heddle_ai-0.9.1/src/heddle/contrib/redis/store.py +46 -0
- heddle_ai-0.9.1/src/heddle/core/__init__.py +0 -0
- heddle_ai-0.9.1/src/heddle/core/actor.py +236 -0
- heddle_ai-0.9.1/src/heddle/core/config.py +696 -0
- heddle_ai-0.9.1/src/heddle/core/contracts.py +86 -0
- heddle_ai-0.9.1/src/heddle/core/manifest.py +194 -0
- heddle_ai-0.9.1/src/heddle/core/messages.py +151 -0
- heddle_ai-0.9.1/src/heddle/core/workspace.py +122 -0
- heddle_ai-0.9.1/src/heddle/discovery/__init__.py +1 -0
- heddle_ai-0.9.1/src/heddle/discovery/mdns.py +142 -0
- heddle_ai-0.9.1/src/heddle/mcp/__init__.py +29 -0
- heddle_ai-0.9.1/src/heddle/mcp/bridge.py +315 -0
- heddle_ai-0.9.1/src/heddle/mcp/config.py +248 -0
- heddle_ai-0.9.1/src/heddle/mcp/council_bridge.py +290 -0
- heddle_ai-0.9.1/src/heddle/mcp/council_discovery.py +155 -0
- heddle_ai-0.9.1/src/heddle/mcp/discovery.py +413 -0
- heddle_ai-0.9.1/src/heddle/mcp/resources.py +167 -0
- heddle_ai-0.9.1/src/heddle/mcp/server.py +609 -0
- heddle_ai-0.9.1/src/heddle/mcp/session_bridge.py +335 -0
- heddle_ai-0.9.1/src/heddle/mcp/session_registry.py +46 -0
- heddle_ai-0.9.1/src/heddle/mcp/workshop_bridge.py +280 -0
- heddle_ai-0.9.1/src/heddle/mcp/workshop_discovery.py +399 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/__init__.py +0 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/checkpoint.py +190 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/decomposer.py +624 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/pipeline.py +776 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/runner.py +756 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/store.py +66 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/stream.py +342 -0
- heddle_ai-0.9.1/src/heddle/orchestrator/synthesizer.py +467 -0
- heddle_ai-0.9.1/src/heddle/router/__init__.py +0 -0
- heddle_ai-0.9.1/src/heddle/router/dead_letter.py +250 -0
- heddle_ai-0.9.1/src/heddle/router/router.py +349 -0
- heddle_ai-0.9.1/src/heddle/scheduler/__init__.py +0 -0
- heddle_ai-0.9.1/src/heddle/scheduler/config.py +116 -0
- heddle_ai-0.9.1/src/heddle/scheduler/scheduler.py +402 -0
- heddle_ai-0.9.1/src/heddle/tracing/__init__.py +45 -0
- heddle_ai-0.9.1/src/heddle/tracing/otel.py +222 -0
- heddle_ai-0.9.1/src/heddle/tui/__init__.py +10 -0
- heddle_ai-0.9.1/src/heddle/tui/app.py +502 -0
- heddle_ai-0.9.1/src/heddle/worker/__init__.py +10 -0
- heddle_ai-0.9.1/src/heddle/worker/backends.py +531 -0
- heddle_ai-0.9.1/src/heddle/worker/base.py +176 -0
- heddle_ai-0.9.1/src/heddle/worker/embeddings.py +114 -0
- heddle_ai-0.9.1/src/heddle/worker/knowledge.py +264 -0
- heddle_ai-0.9.1/src/heddle/worker/processor.py +164 -0
- heddle_ai-0.9.1/src/heddle/worker/runner.py +387 -0
- heddle_ai-0.9.1/src/heddle/worker/tools.py +140 -0
- heddle_ai-0.9.1/src/heddle/workshop/__init__.py +1 -0
- heddle_ai-0.9.1/src/heddle/workshop/app.py +646 -0
- heddle_ai-0.9.1/src/heddle/workshop/app_manager.py +280 -0
- heddle_ai-0.9.1/src/heddle/workshop/config_impact.py +163 -0
- heddle_ai-0.9.1/src/heddle/workshop/config_manager.py +215 -0
- heddle_ai-0.9.1/src/heddle/workshop/db.py +534 -0
- heddle_ai-0.9.1/src/heddle/workshop/eval_runner.py +350 -0
- heddle_ai-0.9.1/src/heddle/workshop/pipeline_editor.py +186 -0
- heddle_ai-0.9.1/src/heddle/workshop/rag_manager.py +167 -0
- heddle_ai-0.9.1/src/heddle/workshop/static/workshop.css +748 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/apps/detail.html +92 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/apps/list.html +66 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/base.html +79 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/dead_letters.html +50 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/partials/impact_panel.html +56 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/partials/rag_search_result.html +30 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/partials/rag_stats.html +24 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/partials/test_result.html +59 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/partials/validation_errors.html +9 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/pipelines/editor.html +120 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/pipelines/list.html +34 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/rag/channels.html +71 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/rag/dashboard.html +55 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/rag/search.html +43 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/workers/detail.html +69 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/workers/eval.html +86 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/workers/eval_detail.html +70 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/workers/list.html +60 -0
- heddle_ai-0.9.1/src/heddle/workshop/templates/workers/test.html +48 -0
- heddle_ai-0.9.1/src/heddle/workshop/test_runner.py +211 -0
- heddle_ai-0.9.1/tests/__init__.py +0 -0
- heddle_ai-0.9.1/tests/conftest.py +32 -0
- heddle_ai-0.9.1/tests/contrib/__init__.py +0 -0
- heddle_ai-0.9.1/tests/contrib/chatbridge/__init__.py +0 -0
- heddle_ai-0.9.1/tests/contrib/chatbridge/test_anthropic.py +85 -0
- heddle_ai-0.9.1/tests/contrib/chatbridge/test_base.py +43 -0
- heddle_ai-0.9.1/tests/contrib/chatbridge/test_manual.py +86 -0
- heddle_ai-0.9.1/tests/contrib/chatbridge/test_ollama.py +53 -0
- heddle_ai-0.9.1/tests/contrib/chatbridge/test_openai.py +66 -0
- heddle_ai-0.9.1/tests/contrib/chatbridge/test_worker.py +90 -0
- heddle_ai-0.9.1/tests/contrib/council/__init__.py +0 -0
- heddle_ai-0.9.1/tests/contrib/council/test_config.py +129 -0
- heddle_ai-0.9.1/tests/contrib/council/test_convergence.py +177 -0
- heddle_ai-0.9.1/tests/contrib/council/test_orchestrator.py +316 -0
- heddle_ai-0.9.1/tests/contrib/council/test_protocol.py +140 -0
- heddle_ai-0.9.1/tests/contrib/council/test_runner.py +191 -0
- heddle_ai-0.9.1/tests/contrib/council/test_schemas.py +138 -0
- heddle_ai-0.9.1/tests/contrib/council/test_transcript.py +141 -0
- heddle_ai-0.9.1/tests/contrib/docproc/__init__.py +0 -0
- heddle_ai-0.9.1/tests/contrib/docproc/test_docproc.py +278 -0
- heddle_ai-0.9.1/tests/contrib/lancedb/__init__.py +0 -0
- heddle_ai-0.9.1/tests/contrib/lancedb/test_lancedb_store.py +171 -0
- heddle_ai-0.9.1/tests/contrib/rag/__init__.py +0 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_abstractions.py +109 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_backends.py +280 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_chunker.py +105 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_duckdb_vectorstore.py +291 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_ingestion.py +196 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_llm_analyzers.py +559 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_mux.py +123 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_schemas.py +332 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_telegram_live.py +165 -0
- heddle_ai-0.9.1/tests/contrib/rag/test_tools.py +154 -0
- heddle_ai-0.9.1/tests/test_actor.py +380 -0
- heddle_ai-0.9.1/tests/test_app_manager.py +424 -0
- heddle_ai-0.9.1/tests/test_app_manifest.py +177 -0
- heddle_ai-0.9.1/tests/test_backends.py +759 -0
- heddle_ai-0.9.1/tests/test_bus_memory.py +254 -0
- heddle_ai-0.9.1/tests/test_checkpoint.py +498 -0
- heddle_ai-0.9.1/tests/test_cli.py +1451 -0
- heddle_ai-0.9.1/tests/test_cli_config.py +215 -0
- heddle_ai-0.9.1/tests/test_cli_council.py +335 -0
- heddle_ai-0.9.1/tests/test_cli_new.py +328 -0
- heddle_ai-0.9.1/tests/test_cli_rag.py +382 -0
- heddle_ai-0.9.1/tests/test_cli_setup.py +186 -0
- heddle_ai-0.9.1/tests/test_cli_validate.py +232 -0
- heddle_ai-0.9.1/tests/test_config_impact.py +349 -0
- heddle_ai-0.9.1/tests/test_config_shipped.py +194 -0
- heddle_ai-0.9.1/tests/test_config_validation.py +199 -0
- heddle_ai-0.9.1/tests/test_config_validation_extended.py +591 -0
- heddle_ai-0.9.1/tests/test_contracts.py +79 -0
- heddle_ai-0.9.1/tests/test_contrib_duckdb_query.py +532 -0
- heddle_ai-0.9.1/tests/test_contrib_duckdb_vector.py +226 -0
- heddle_ai-0.9.1/tests/test_contrib_duckdb_view.py +225 -0
- heddle_ai-0.9.1/tests/test_dead_letter.py +515 -0
- heddle_ai-0.9.1/tests/test_decomposer.py +399 -0
- heddle_ai-0.9.1/tests/test_deepeval_worker.py +103 -0
- heddle_ai-0.9.1/tests/test_e2e_advanced.py +847 -0
- heddle_ai-0.9.1/tests/test_e2e_operations.py +625 -0
- heddle_ai-0.9.1/tests/test_embeddings.py +138 -0
- heddle_ai-0.9.1/tests/test_extract_json.py +57 -0
- heddle_ai-0.9.1/tests/test_extract_json_extended.py +243 -0
- heddle_ai-0.9.1/tests/test_integration.py +129 -0
- heddle_ai-0.9.1/tests/test_knowledge_silos.py +553 -0
- heddle_ai-0.9.1/tests/test_mcp_bridge.py +410 -0
- heddle_ai-0.9.1/tests/test_mcp_config.py +428 -0
- heddle_ai-0.9.1/tests/test_mcp_council_bridge.py +121 -0
- heddle_ai-0.9.1/tests/test_mcp_council_discovery.py +52 -0
- heddle_ai-0.9.1/tests/test_mcp_discovery.py +692 -0
- heddle_ai-0.9.1/tests/test_mcp_resources.py +171 -0
- heddle_ai-0.9.1/tests/test_mcp_server.py +1394 -0
- heddle_ai-0.9.1/tests/test_mcp_session_bridge.py +261 -0
- heddle_ai-0.9.1/tests/test_mcp_session_registry.py +85 -0
- heddle_ai-0.9.1/tests/test_mcp_workshop_bridge.py +576 -0
- heddle_ai-0.9.1/tests/test_mcp_workshop_discovery.py +125 -0
- heddle_ai-0.9.1/tests/test_mdns.py +108 -0
- heddle_ai-0.9.1/tests/test_messages.py +122 -0
- heddle_ai-0.9.1/tests/test_nats_adapter.py +274 -0
- heddle_ai-0.9.1/tests/test_orchestrator.py +1017 -0
- heddle_ai-0.9.1/tests/test_pipeline.py +1621 -0
- heddle_ai-0.9.1/tests/test_preflight.py +137 -0
- heddle_ai-0.9.1/tests/test_processor_worker.py +188 -0
- heddle_ai-0.9.1/tests/test_redis_store.py +90 -0
- heddle_ai-0.9.1/tests/test_reload.py +210 -0
- heddle_ai-0.9.1/tests/test_result_stream.py +578 -0
- heddle_ai-0.9.1/tests/test_router.py +323 -0
- heddle_ai-0.9.1/tests/test_scheduler.py +722 -0
- heddle_ai-0.9.1/tests/test_scheduler_config.py +253 -0
- heddle_ai-0.9.1/tests/test_scheduler_expansion.py +249 -0
- heddle_ai-0.9.1/tests/test_schema_ref.py +162 -0
- heddle_ai-0.9.1/tests/test_serialize_writes.py +78 -0
- heddle_ai-0.9.1/tests/test_store.py +84 -0
- heddle_ai-0.9.1/tests/test_synthesizer.py +293 -0
- heddle_ai-0.9.1/tests/test_task_worker.py +187 -0
- heddle_ai-0.9.1/tests/test_tool_use.py +377 -0
- heddle_ai-0.9.1/tests/test_tools.py +179 -0
- heddle_ai-0.9.1/tests/test_tracing.py +550 -0
- heddle_ai-0.9.1/tests/test_tui.py +245 -0
- heddle_ai-0.9.1/tests/test_worker.py +295 -0
- heddle_ai-0.9.1/tests/test_workshop_app.py +1018 -0
- heddle_ai-0.9.1/tests/test_workshop_config.py +224 -0
- heddle_ai-0.9.1/tests/test_workshop_db.py +295 -0
- heddle_ai-0.9.1/tests/test_workshop_eval.py +440 -0
- heddle_ai-0.9.1/tests/test_workshop_pipeline_editor.py +262 -0
- heddle_ai-0.9.1/tests/test_workshop_rag.py +164 -0
- heddle_ai-0.9.1/tests/test_workshop_runner.py +469 -0
- heddle_ai-0.9.1/tests/test_workspace.py +100 -0
- heddle_ai-0.9.1/uv.lock +5533 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
lint-md:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: rvben/rumdl@v0
|
|
18
|
+
with:
|
|
19
|
+
report-type: annotations
|
|
20
|
+
|
|
21
|
+
lint:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v4
|
|
25
|
+
- uses: astral-sh/setup-uv@v5
|
|
26
|
+
- run: uv sync --extra dev
|
|
27
|
+
- name: Ruff lint (src + tests)
|
|
28
|
+
run: uv run ruff check src/ tests/
|
|
29
|
+
- name: Ruff format check
|
|
30
|
+
run: uv run ruff format --check src/ tests/
|
|
31
|
+
|
|
32
|
+
test:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
strategy:
|
|
35
|
+
matrix:
|
|
36
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
|
|
40
|
+
- uses: astral-sh/setup-uv@v5
|
|
41
|
+
with:
|
|
42
|
+
python-version: ${{ matrix.python-version }}
|
|
43
|
+
|
|
44
|
+
- name: Install dependencies
|
|
45
|
+
run: uv sync --all-extras
|
|
46
|
+
|
|
47
|
+
- name: Run tests with coverage
|
|
48
|
+
run: |
|
|
49
|
+
uv run pytest tests/ -v -m "not integration and not deepeval" \
|
|
50
|
+
--cov --cov-report=term-missing --cov-report=xml
|
|
51
|
+
|
|
52
|
+
- name: Upload coverage to Codecov
|
|
53
|
+
if: matrix.python-version == '3.12'
|
|
54
|
+
uses: codecov/codecov-action@v5
|
|
55
|
+
with:
|
|
56
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
57
|
+
files: coverage.xml
|
|
58
|
+
fail_ci_if_error: false
|
|
59
|
+
|
|
60
|
+
docs:
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
steps:
|
|
63
|
+
- uses: actions/checkout@v4
|
|
64
|
+
- uses: astral-sh/setup-uv@v5
|
|
65
|
+
- run: uv sync --extra docs
|
|
66
|
+
- name: Build API documentation
|
|
67
|
+
run: uv run mkdocs build --strict
|
|
68
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: "pages"
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.12"
|
|
27
|
+
|
|
28
|
+
- name: Install uv
|
|
29
|
+
uses: astral-sh/setup-uv@v5
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
run: uv sync --extra docs
|
|
33
|
+
|
|
34
|
+
- name: Build docs
|
|
35
|
+
run: uv run mkdocs build --strict
|
|
36
|
+
|
|
37
|
+
- name: Upload artifact
|
|
38
|
+
uses: actions/upload-pages-artifact@v3
|
|
39
|
+
with:
|
|
40
|
+
path: site
|
|
41
|
+
|
|
42
|
+
deploy:
|
|
43
|
+
environment:
|
|
44
|
+
name: github-pages
|
|
45
|
+
url: ${{ github.pages.url }}
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
needs: build
|
|
48
|
+
steps:
|
|
49
|
+
- name: Deploy to GitHub Pages
|
|
50
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
id-token: write # Trusted publishing (no API token needed)
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- uses: astral-sh/setup-uv@v5
|
|
17
|
+
with:
|
|
18
|
+
enable-cache: true
|
|
19
|
+
|
|
20
|
+
- name: Build package
|
|
21
|
+
run: uv build
|
|
22
|
+
|
|
23
|
+
- name: Upload build artifacts
|
|
24
|
+
uses: actions/upload-artifact@v4
|
|
25
|
+
with:
|
|
26
|
+
name: dist
|
|
27
|
+
path: dist/
|
|
28
|
+
|
|
29
|
+
publish:
|
|
30
|
+
needs: build
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
environment: pypi
|
|
33
|
+
steps:
|
|
34
|
+
- name: Download build artifacts
|
|
35
|
+
uses: actions/download-artifact@v4
|
|
36
|
+
with:
|
|
37
|
+
name: dist
|
|
38
|
+
path: dist/
|
|
39
|
+
|
|
40
|
+
- name: Publish to PyPI
|
|
41
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# rumdl configuration — Heddle
|
|
2
|
+
|
|
3
|
+
[global]
|
|
4
|
+
# MD013: Line length — 80 chars is too restrictive for prose documentation
|
|
5
|
+
# MD036: Emphasis as heading — false positive on subtitle lines
|
|
6
|
+
# MD042: Empty link — used for status badges with no target URL
|
|
7
|
+
# MD057: Cross-repo relative links unresolvable in CI (repos checked out in isolation)
|
|
8
|
+
disable = ["MD013", "MD036", "MD042", "MD057"]
|