aire-ai 0.3.5__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.
- aire_ai-0.3.5/.editorconfig +18 -0
- aire_ai-0.3.5/.github/ISSUE_TEMPLATE/bug_report.yml +83 -0
- aire_ai-0.3.5/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
- aire_ai-0.3.5/.github/PULL_REQUEST_TEMPLATE.md +15 -0
- aire_ai-0.3.5/.github/dependabot.yml +13 -0
- aire_ai-0.3.5/.github/workflows/benchmarks.yml +34 -0
- aire_ai-0.3.5/.github/workflows/ci.yml +50 -0
- aire_ai-0.3.5/.github/workflows/codeql.yml +31 -0
- aire_ai-0.3.5/.github/workflows/docs.yml +54 -0
- aire_ai-0.3.5/.github/workflows/release.yml +71 -0
- aire_ai-0.3.5/.gitignore +35 -0
- aire_ai-0.3.5/.pre-commit-config.yaml +15 -0
- aire_ai-0.3.5/.python-version +1 -0
- aire_ai-0.3.5/CHANGELOG.md +495 -0
- aire_ai-0.3.5/CITATION.cff +21 -0
- aire_ai-0.3.5/CODE_OF_CONDUCT.md +134 -0
- aire_ai-0.3.5/CONTRIBUTING.md +82 -0
- aire_ai-0.3.5/GAPS.md +28 -0
- aire_ai-0.3.5/LICENSE +190 -0
- aire_ai-0.3.5/Makefile +27 -0
- aire_ai-0.3.5/PKG-INFO +261 -0
- aire_ai-0.3.5/README.md +143 -0
- aire_ai-0.3.5/SECURITY.md +50 -0
- aire_ai-0.3.5/benchmarks/microbench.py +89 -0
- aire_ai-0.3.5/benchmarks/results/.gitignore +3 -0
- aire_ai-0.3.5/benchmarks/results/.gitkeep +0 -0
- aire_ai-0.3.5/docs/ARCHITECTURE.md +62 -0
- aire_ai-0.3.5/docs/GUIDE.md +25 -0
- aire_ai-0.3.5/docs/PUBLIC_API.md +77 -0
- aire_ai-0.3.5/docs/agents.md +91 -0
- aire_ai-0.3.5/docs/api.md +23 -0
- aire_ai-0.3.5/docs/api_freeze.md +14 -0
- aire_ai-0.3.5/docs/cli.md +30 -0
- aire_ai-0.3.5/docs/compatibility.md +29 -0
- aire_ai-0.3.5/docs/contributing.md +15 -0
- aire_ai-0.3.5/docs/gateway.md +39 -0
- aire_ai-0.3.5/docs/honesty.md +22 -0
- aire_ai-0.3.5/docs/index.md +39 -0
- aire_ai-0.3.5/docs/mcp.md +35 -0
- aire_ai-0.3.5/docs/migration.md +21 -0
- aire_ai-0.3.5/docs/product.md +24 -0
- aire_ai-0.3.5/docs/publishing.md +70 -0
- aire_ai-0.3.5/docs/rag.md +63 -0
- aire_ai-0.3.5/docs/security.md +22 -0
- aire_ai-0.3.5/examples/00_quickstart/README.md +7 -0
- aire_ai-0.3.5/examples/00_quickstart/main.py +16 -0
- aire_ai-0.3.5/examples/README.md +26 -0
- aire_ai-0.3.5/examples/agent_tools/README.md +8 -0
- aire_ai-0.3.5/examples/agent_tools/main.py +17 -0
- aire_ai-0.3.5/examples/eval_gates/README.md +7 -0
- aire_ai-0.3.5/examples/eval_gates/main.py +31 -0
- aire_ai-0.3.5/examples/gateway_offline/README.md +9 -0
- aire_ai-0.3.5/examples/gateway_offline/main.py +18 -0
- aire_ai-0.3.5/examples/graph_store/main.py +36 -0
- aire_ai-0.3.5/examples/graphrag_communities/main.py +31 -0
- aire_ai-0.3.5/examples/hitl/README.md +1 -0
- aire_ai-0.3.5/examples/hitl/main.py +35 -0
- aire_ai-0.3.5/examples/lora_dry_run/main.py +23 -0
- aire_ai-0.3.5/examples/mcp_roundtrip/main.py +37 -0
- aire_ai-0.3.5/examples/memory/README.md +1 -0
- aire_ai-0.3.5/examples/memory/main.py +34 -0
- aire_ai-0.3.5/examples/multimodal_offline/main.py +20 -0
- aire_ai-0.3.5/examples/openapi_tools/README.md +7 -0
- aire_ai-0.3.5/examples/openapi_tools/main.py +30 -0
- aire_ai-0.3.5/examples/rag_assistant/README.md +7 -0
- aire_ai-0.3.5/examples/rag_assistant/main.py +30 -0
- aire_ai-0.3.5/examples/rag_assistant/sample_docs/auth.md +1 -0
- aire_ai-0.3.5/mkdocs.yml +67 -0
- aire_ai-0.3.5/pyproject.toml +225 -0
- aire_ai-0.3.5/src/aire/__init__.py +101 -0
- aire_ai-0.3.5/src/aire/_version.py +3 -0
- aire_ai-0.3.5/src/aire/agents/__init__.py +87 -0
- aire_ai-0.3.5/src/aire/agents/agent.py +276 -0
- aire_ai-0.3.5/src/aire/agents/approvals.py +105 -0
- aire_ai-0.3.5/src/aire/agents/builder.py +204 -0
- aire_ai-0.3.5/src/aire/agents/memory.py +100 -0
- aire_ai-0.3.5/src/aire/agents/patterns.py +162 -0
- aire_ai-0.3.5/src/aire/agents/plan.py +161 -0
- aire_ai-0.3.5/src/aire/agents/runtime.py +348 -0
- aire_ai-0.3.5/src/aire/agents/session.py +133 -0
- aire_ai-0.3.5/src/aire/agents/skills.py +244 -0
- aire_ai-0.3.5/src/aire/agents/streaming.py +130 -0
- aire_ai-0.3.5/src/aire/agents/team.py +149 -0
- aire_ai-0.3.5/src/aire/agents/toolkits.py +207 -0
- aire_ai-0.3.5/src/aire/agents/topologies.py +169 -0
- aire_ai-0.3.5/src/aire/agents/types.py +103 -0
- aire_ai-0.3.5/src/aire/ai.py +1686 -0
- aire_ai-0.3.5/src/aire/audio/__init__.py +23 -0
- aire_ai-0.3.5/src/aire/audio/pipelines.py +184 -0
- aire_ai-0.3.5/src/aire/audio/voice.py +218 -0
- aire_ai-0.3.5/src/aire/cli/__init__.py +1 -0
- aire_ai-0.3.5/src/aire/cli/main.py +581 -0
- aire_ai-0.3.5/src/aire/core/__init__.py +84 -0
- aire_ai-0.3.5/src/aire/core/config.py +252 -0
- aire_ai-0.3.5/src/aire/core/content.py +142 -0
- aire_ai-0.3.5/src/aire/core/context.py +117 -0
- aire_ai-0.3.5/src/aire/core/errors.py +211 -0
- aire_ai-0.3.5/src/aire/core/events.py +112 -0
- aire_ai-0.3.5/src/aire/core/lifecycle.py +84 -0
- aire_ai-0.3.5/src/aire/core/logging.py +56 -0
- aire_ai-0.3.5/src/aire/core/plugins.py +129 -0
- aire_ai-0.3.5/src/aire/core/registry.py +109 -0
- aire_ai-0.3.5/src/aire/core/runtime.py +127 -0
- aire_ai-0.3.5/src/aire/core/serialization.py +101 -0
- aire_ai-0.3.5/src/aire/core/types.py +123 -0
- aire_ai-0.3.5/src/aire/data/__init__.py +34 -0
- aire_ai-0.3.5/src/aire/data/chunking.py +301 -0
- aire_ai-0.3.5/src/aire/data/dataset.py +280 -0
- aire_ai-0.3.5/src/aire/data/loaders.py +271 -0
- aire_ai-0.3.5/src/aire/data/types.py +64 -0
- aire_ai-0.3.5/src/aire/deployment/__init__.py +25 -0
- aire_ai-0.3.5/src/aire/deployment/artifacts.py +162 -0
- aire_ai-0.3.5/src/aire/deployment/fastapi_app.py +237 -0
- aire_ai-0.3.5/src/aire/deployment/gateway.py +1443 -0
- aire_ai-0.3.5/src/aire/deployment/scale.py +320 -0
- aire_ai-0.3.5/src/aire/docs/__init__.py +12 -0
- aire_ai-0.3.5/src/aire/docs/pdf.py +201 -0
- aire_ai-0.3.5/src/aire/evaluation/__init__.py +23 -0
- aire_ai-0.3.5/src/aire/evaluation/gates.py +114 -0
- aire_ai-0.3.5/src/aire/evaluation/metrics.py +500 -0
- aire_ai-0.3.5/src/aire/evaluation/runner.py +202 -0
- aire_ai-0.3.5/src/aire/evaluation/types.py +105 -0
- aire_ai-0.3.5/src/aire/graph/__init__.py +40 -0
- aire_ai-0.3.5/src/aire/graph/community.py +211 -0
- aire_ai-0.3.5/src/aire/graph/extract.py +88 -0
- aire_ai-0.3.5/src/aire/graph/neo4j_store.py +266 -0
- aire_ai-0.3.5/src/aire/graph/pipeline.py +215 -0
- aire_ai-0.3.5/src/aire/graph/store.py +316 -0
- aire_ai-0.3.5/src/aire/graph/types.py +92 -0
- aire_ai-0.3.5/src/aire/integrations/__init__.py +10 -0
- aire_ai-0.3.5/src/aire/integrations/anthropic.py +252 -0
- aire_ai-0.3.5/src/aire/integrations/chroma.py +181 -0
- aire_ai-0.3.5/src/aire/integrations/http.py +131 -0
- aire_ai-0.3.5/src/aire/integrations/huggingface.py +61 -0
- aire_ai-0.3.5/src/aire/integrations/milvus.py +192 -0
- aire_ai-0.3.5/src/aire/integrations/mock.py +36 -0
- aire_ai-0.3.5/src/aire/integrations/ollama.py +190 -0
- aire_ai-0.3.5/src/aire/integrations/openai.py +306 -0
- aire_ai-0.3.5/src/aire/integrations/openai_compat.py +356 -0
- aire_ai-0.3.5/src/aire/integrations/openai_media.py +249 -0
- aire_ai-0.3.5/src/aire/integrations/pinecone.py +132 -0
- aire_ai-0.3.5/src/aire/integrations/qdrant.py +192 -0
- aire_ai-0.3.5/src/aire/integrations/weaviate.py +204 -0
- aire_ai-0.3.5/src/aire/knowledge_assistant.py +247 -0
- aire_ai-0.3.5/src/aire/mcp/__init__.py +8 -0
- aire_ai-0.3.5/src/aire/mcp/__main__.py +6 -0
- aire_ai-0.3.5/src/aire/mcp/client.py +312 -0
- aire_ai-0.3.5/src/aire/mcp/guide.md +218 -0
- aire_ai-0.3.5/src/aire/mcp/http_client.py +271 -0
- aire_ai-0.3.5/src/aire/mcp/knowledge.py +261 -0
- aire_ai-0.3.5/src/aire/mcp/protocol.py +85 -0
- aire_ai-0.3.5/src/aire/mcp/server.py +257 -0
- aire_ai-0.3.5/src/aire/memory/__init__.py +10 -0
- aire_ai-0.3.5/src/aire/memory/store.py +229 -0
- aire_ai-0.3.5/src/aire/memory/types.py +37 -0
- aire_ai-0.3.5/src/aire/ml/__init__.py +65 -0
- aire_ai-0.3.5/src/aire/ml/arch/__init__.py +80 -0
- aire_ai-0.3.5/src/aire/ml/arch/attention.py +281 -0
- aire_ai-0.3.5/src/aire/ml/arch/block.py +93 -0
- aire_ai-0.3.5/src/aire/ml/arch/compose.py +176 -0
- aire_ai-0.3.5/src/aire/ml/arch/embed.py +39 -0
- aire_ai-0.3.5/src/aire/ml/arch/ffn.py +174 -0
- aire_ai-0.3.5/src/aire/ml/arch/head.py +20 -0
- aire_ai-0.3.5/src/aire/ml/arch/norm.py +38 -0
- aire_ai-0.3.5/src/aire/ml/arch/recipes.py +64 -0
- aire_ai-0.3.5/src/aire/ml/arch/registry.py +75 -0
- aire_ai-0.3.5/src/aire/ml/arch/residual.py +55 -0
- aire_ai-0.3.5/src/aire/ml/arch/specs.py +112 -0
- aire_ai-0.3.5/src/aire/ml/arch/stack.py +129 -0
- aire_ai-0.3.5/src/aire/ml/arch/torch_util.py +24 -0
- aire_ai-0.3.5/src/aire/ml/boosting.py +257 -0
- aire_ai-0.3.5/src/aire/ml/callbacks.py +101 -0
- aire_ai-0.3.5/src/aire/ml/compose.py +107 -0
- aire_ai-0.3.5/src/aire/ml/estimator.py +214 -0
- aire_ai-0.3.5/src/aire/ml/factory.py +38 -0
- aire_ai-0.3.5/src/aire/ml/keras_adapter.py +298 -0
- aire_ai-0.3.5/src/aire/ml/loss/__init__.py +113 -0
- aire_ai-0.3.5/src/aire/ml/metrics.py +493 -0
- aire_ai-0.3.5/src/aire/ml/native.py +258 -0
- aire_ai-0.3.5/src/aire/ml/optim/__init__.py +102 -0
- aire_ai-0.3.5/src/aire/ml/pandas_bridge.py +110 -0
- aire_ai-0.3.5/src/aire/ml/pipeline.py +198 -0
- aire_ai-0.3.5/src/aire/ml/polars_bridge.py +79 -0
- aire_ai-0.3.5/src/aire/ml/scoring.py +139 -0
- aire_ai-0.3.5/src/aire/ml/sklearn_adapter.py +414 -0
- aire_ai-0.3.5/src/aire/ml/torch_adapter.py +427 -0
- aire_ai-0.3.5/src/aire/ml/transform.py +245 -0
- aire_ai-0.3.5/src/aire/ml/types.py +87 -0
- aire_ai-0.3.5/src/aire/models/__init__.py +41 -0
- aire_ai-0.3.5/src/aire/models/base.py +170 -0
- aire_ai-0.3.5/src/aire/models/builtin.py +239 -0
- aire_ai-0.3.5/src/aire/models/registry.py +156 -0
- aire_ai-0.3.5/src/aire/models/retry.py +41 -0
- aire_ai-0.3.5/src/aire/models/types.py +186 -0
- aire_ai-0.3.5/src/aire/multimodal/__init__.py +33 -0
- aire_ai-0.3.5/src/aire/multimodal/conversions.py +111 -0
- aire_ai-0.3.5/src/aire/observability/__init__.py +39 -0
- aire_ai-0.3.5/src/aire/observability/analytics.py +153 -0
- aire_ai-0.3.5/src/aire/observability/metrics.py +68 -0
- aire_ai-0.3.5/src/aire/observability/otel_sdk.py +109 -0
- aire_ai-0.3.5/src/aire/observability/otlp.py +155 -0
- aire_ai-0.3.5/src/aire/observability/tracing.py +197 -0
- aire_ai-0.3.5/src/aire/optimization/__init__.py +17 -0
- aire_ai-0.3.5/src/aire/optimization/cache.py +226 -0
- aire_ai-0.3.5/src/aire/optimization/cost_policy.py +94 -0
- aire_ai-0.3.5/src/aire/optimization/prompt_opt.py +127 -0
- aire_ai-0.3.5/src/aire/optimization/redis_cache.py +250 -0
- aire_ai-0.3.5/src/aire/optimization/router.py +265 -0
- aire_ai-0.3.5/src/aire/project/__init__.py +5 -0
- aire_ai-0.3.5/src/aire/project/lock.py +133 -0
- aire_ai-0.3.5/src/aire/py.typed +0 -0
- aire_ai-0.3.5/src/aire/rag/__init__.py +43 -0
- aire_ai-0.3.5/src/aire/rag/acl.py +78 -0
- aire_ai-0.3.5/src/aire/rag/compress.py +119 -0
- aire_ai-0.3.5/src/aire/rag/filters.py +57 -0
- aire_ai-0.3.5/src/aire/rag/incremental.py +114 -0
- aire_ai-0.3.5/src/aire/rag/pgvector.py +354 -0
- aire_ai-0.3.5/src/aire/rag/pipeline.py +321 -0
- aire_ai-0.3.5/src/aire/rag/rerank.py +198 -0
- aire_ai-0.3.5/src/aire/rag/retriever.py +80 -0
- aire_ai-0.3.5/src/aire/rag/rewrite.py +121 -0
- aire_ai-0.3.5/src/aire/rag/sqlite.py +119 -0
- aire_ai-0.3.5/src/aire/rag/store.py +227 -0
- aire_ai-0.3.5/src/aire/rag/types.py +75 -0
- aire_ai-0.3.5/src/aire/recipes/__init__.py +162 -0
- aire_ai-0.3.5/src/aire/safety/__init__.py +41 -0
- aire_ai-0.3.5/src/aire/safety/guardrails.py +293 -0
- aire_ai-0.3.5/src/aire/safety/patterns.py +80 -0
- aire_ai-0.3.5/src/aire/safety/policy.py +179 -0
- aire_ai-0.3.5/src/aire/safety/redaction.py +36 -0
- aire_ai-0.3.5/src/aire/schedule/__init__.py +5 -0
- aire_ai-0.3.5/src/aire/schedule/scheduler.py +198 -0
- aire_ai-0.3.5/src/aire/synthetic/__init__.py +5 -0
- aire_ai-0.3.5/src/aire/synthetic/generator.py +69 -0
- aire_ai-0.3.5/src/aire/tools/__init__.py +20 -0
- aire_ai-0.3.5/src/aire/tools/builtins.py +190 -0
- aire_ai-0.3.5/src/aire/tools/openapi.py +168 -0
- aire_ai-0.3.5/src/aire/tools/registry.py +59 -0
- aire_ai-0.3.5/src/aire/tools/tool.py +220 -0
- aire_ai-0.3.5/src/aire/tools/types.py +82 -0
- aire_ai-0.3.5/src/aire/training/__init__.py +52 -0
- aire_ai-0.3.5/src/aire/training/distill.py +350 -0
- aire_ai-0.3.5/src/aire/training/foundation.py +281 -0
- aire_ai-0.3.5/src/aire/training/hpo.py +210 -0
- aire_ai-0.3.5/src/aire/training/lm_trainer.py +233 -0
- aire_ai-0.3.5/src/aire/training/lora.py +297 -0
- aire_ai-0.3.5/src/aire/training/quantize.py +126 -0
- aire_ai-0.3.5/src/aire/training/trainer.py +182 -0
- aire_ai-0.3.5/src/aire/ui/__init__.py +150 -0
- aire_ai-0.3.5/src/aire/vision/__init__.py +20 -0
- aire_ai-0.3.5/src/aire/vision/pipelines.py +279 -0
- aire_ai-0.3.5/src/aire/vision/video.py +177 -0
- aire_ai-0.3.5/src/aire/workers/__init__.py +21 -0
- aire_ai-0.3.5/src/aire/workers/queue.py +301 -0
- aire_ai-0.3.5/src/aire/workflows/__init__.py +26 -0
- aire_ai-0.3.5/src/aire/workflows/graph.py +462 -0
- aire_ai-0.3.5/src/aire/workflows/hitl.py +72 -0
- aire_ai-0.3.5/src/aire/workflows/types.py +97 -0
- aire_ai-0.3.5/tests/__init__.py +1 -0
- aire_ai-0.3.5/tests/conftest.py +39 -0
- aire_ai-0.3.5/tests/contract/__init__.py +1 -0
- aire_ai-0.3.5/tests/contract/test_model_protocol.py +15 -0
- aire_ai-0.3.5/tests/live/test_live_stores.py +67 -0
- aire_ai-0.3.5/tests/security/__init__.py +1 -0
- aire_ai-0.3.5/tests/security/test_sandbox_path.py +45 -0
- aire_ai-0.3.5/tests/unit/__init__.py +1 -0
- aire_ai-0.3.5/tests/unit/test_agent_config.py +23 -0
- aire_ai-0.3.5/tests/unit/test_agent_offline.py +16 -0
- aire_ai-0.3.5/tests/unit/test_anthropic_gateway.py +115 -0
- aire_ai-0.3.5/tests/unit/test_api_freeze.py +65 -0
- aire_ai-0.3.5/tests/unit/test_builtins.py +28 -0
- aire_ai-0.3.5/tests/unit/test_chunking.py +20 -0
- aire_ai-0.3.5/tests/unit/test_core_quality.py +82 -0
- aire_ai-0.3.5/tests/unit/test_eval_safety_035.py +137 -0
- aire_ai-0.3.5/tests/unit/test_filters.py +22 -0
- aire_ai-0.3.5/tests/unit/test_foundation_describe.py +17 -0
- aire_ai-0.3.5/tests/unit/test_mcp_depth.py +71 -0
- aire_ai-0.3.5/tests/unit/test_metrics_honesty.py +41 -0
- aire_ai-0.3.5/tests/unit/test_multimodal_media.py +63 -0
- aire_ai-0.3.5/tests/unit/test_openapi_load.py +27 -0
- aire_ai-0.3.5/tests/unit/test_plan_verify_json.py +35 -0
- aire_ai-0.3.5/tests/unit/test_platform_scale.py +43 -0
- aire_ai-0.3.5/tests/unit/test_policy.py +22 -0
- aire_ai-0.3.5/tests/unit/test_rag_offline.py +31 -0
- aire_ai-0.3.5/tests/unit/test_session.py +31 -0
- aire_ai-0.3.5/tests/unit/test_training_depth.py +55 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
root = true
|
|
2
|
+
|
|
3
|
+
[*]
|
|
4
|
+
charset = utf-8
|
|
5
|
+
end_of_line = lf
|
|
6
|
+
insert_final_newline = true
|
|
7
|
+
trim_trailing_whitespace = true
|
|
8
|
+
indent_style = space
|
|
9
|
+
indent_size = 4
|
|
10
|
+
|
|
11
|
+
[*.{yml,yaml,toml,md,cff}]
|
|
12
|
+
indent_size = 2
|
|
13
|
+
|
|
14
|
+
[*.{json,html,css,js,ts}]
|
|
15
|
+
indent_size = 2
|
|
16
|
+
|
|
17
|
+
[Makefile]
|
|
18
|
+
indent_style = tab
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a bug or unexpected behavior in aire
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for taking the time to file a bug. Please fill in as much as you can —
|
|
10
|
+
reproducible reports with a minimal offline example (`mock:echo`) are ideal.
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: summary
|
|
14
|
+
attributes:
|
|
15
|
+
label: Summary
|
|
16
|
+
description: A clear, short description of the problem.
|
|
17
|
+
placeholder: When I call AI.agents.create(...), ...
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: reproduce
|
|
23
|
+
attributes:
|
|
24
|
+
label: Steps to reproduce
|
|
25
|
+
description: Minimal steps or a short script (prefer `mock:echo` / offline).
|
|
26
|
+
placeholder: |
|
|
27
|
+
```python
|
|
28
|
+
from aire import AI
|
|
29
|
+
...
|
|
30
|
+
```
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
33
|
+
|
|
34
|
+
- type: textarea
|
|
35
|
+
id: expected
|
|
36
|
+
attributes:
|
|
37
|
+
label: Expected behavior
|
|
38
|
+
description: What you expected to happen.
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: actual
|
|
44
|
+
attributes:
|
|
45
|
+
label: Actual behavior
|
|
46
|
+
description: What happened instead (include traceback if relevant).
|
|
47
|
+
validations:
|
|
48
|
+
required: true
|
|
49
|
+
|
|
50
|
+
- type: input
|
|
51
|
+
id: version
|
|
52
|
+
attributes:
|
|
53
|
+
label: aire version
|
|
54
|
+
description: Output of `python -c "import aire; print(aire.__version__)"` or the installed package version.
|
|
55
|
+
placeholder: 0.3.5
|
|
56
|
+
validations:
|
|
57
|
+
required: true
|
|
58
|
+
|
|
59
|
+
- type: input
|
|
60
|
+
id: python
|
|
61
|
+
attributes:
|
|
62
|
+
label: Python version
|
|
63
|
+
placeholder: 3.11.9
|
|
64
|
+
validations:
|
|
65
|
+
required: true
|
|
66
|
+
|
|
67
|
+
- type: dropdown
|
|
68
|
+
id: os
|
|
69
|
+
attributes:
|
|
70
|
+
label: OS
|
|
71
|
+
options:
|
|
72
|
+
- macOS
|
|
73
|
+
- Linux
|
|
74
|
+
- Windows
|
|
75
|
+
- Other
|
|
76
|
+
validations:
|
|
77
|
+
required: true
|
|
78
|
+
|
|
79
|
+
- type: textarea
|
|
80
|
+
id: extras
|
|
81
|
+
attributes:
|
|
82
|
+
label: Additional context
|
|
83
|
+
description: Provider used, optional extras installed, related issues, etc.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose a new feature or improvement for aire
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
aire is agent-first and offline-capable. Feature ideas that fit that design
|
|
10
|
+
(discoverable APIs, provider independence, honest stubs) are especially welcome.
|
|
11
|
+
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: problem
|
|
14
|
+
attributes:
|
|
15
|
+
label: Problem
|
|
16
|
+
description: What problem are you trying to solve? Who benefits?
|
|
17
|
+
placeholder: As a developer building X, I need Y because Z.
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: proposal
|
|
23
|
+
attributes:
|
|
24
|
+
label: Proposed solution
|
|
25
|
+
description: How should aire address this? Sketch API shape if you can.
|
|
26
|
+
validations:
|
|
27
|
+
required: true
|
|
28
|
+
|
|
29
|
+
- type: textarea
|
|
30
|
+
id: alternatives
|
|
31
|
+
attributes:
|
|
32
|
+
label: Alternatives considered
|
|
33
|
+
description: Other approaches, existing workarounds, or related libraries.
|
|
34
|
+
|
|
35
|
+
- type: dropdown
|
|
36
|
+
id: area
|
|
37
|
+
attributes:
|
|
38
|
+
label: Area
|
|
39
|
+
options:
|
|
40
|
+
- Agents / tools
|
|
41
|
+
- Models / providers
|
|
42
|
+
- RAG / retrieval
|
|
43
|
+
- Workflows
|
|
44
|
+
- Evaluation
|
|
45
|
+
- Deployment / gateway
|
|
46
|
+
- Observability / safety
|
|
47
|
+
- CLI / docs / DX
|
|
48
|
+
- Other
|
|
49
|
+
validations:
|
|
50
|
+
required: true
|
|
51
|
+
|
|
52
|
+
- type: textarea
|
|
53
|
+
id: extras
|
|
54
|
+
attributes:
|
|
55
|
+
label: Additional context
|
|
56
|
+
description: Links, mocks, or examples that would help.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## Pull request checklist
|
|
2
|
+
|
|
3
|
+
- [ ] Change is covered by tests when behavior changes (offline / `mock:echo` preferred)
|
|
4
|
+
- [ ] `ruff check`, `ruff format --check`, and `mypy` pass locally (`make lint typecheck`)
|
|
5
|
+
- [ ] Docs / docstrings updated when public API changes
|
|
6
|
+
- [ ] `CHANGELOG.md` updated for user-visible changes
|
|
7
|
+
- [ ] No secrets, credentials, or large generated artifacts committed
|
|
8
|
+
|
|
9
|
+
## Summary
|
|
10
|
+
|
|
11
|
+
<!-- What does this PR do and why? -->
|
|
12
|
+
|
|
13
|
+
## Test plan
|
|
14
|
+
|
|
15
|
+
<!-- How did you verify this? Commands, scenarios, edge cases. -->
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Benchmarks
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
tags: ["v*"]
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
microbench:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
cache: pip
|
|
23
|
+
|
|
24
|
+
- name: Install package
|
|
25
|
+
run: pip install -e ".[dev]"
|
|
26
|
+
|
|
27
|
+
- name: Run offline microbenchmarks
|
|
28
|
+
run: python benchmarks/microbench.py --json benchmarks/results/latest.json
|
|
29
|
+
|
|
30
|
+
- name: Upload results
|
|
31
|
+
uses: actions/upload-artifact@v4
|
|
32
|
+
with:
|
|
33
|
+
name: microbench-results
|
|
34
|
+
path: benchmarks/results/latest.json
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, master]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test:
|
|
15
|
+
name: Python ${{ matrix.python-version }}
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
26
|
+
uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: ${{ matrix.python-version }}
|
|
29
|
+
cache: pip
|
|
30
|
+
|
|
31
|
+
- name: Install package (dev)
|
|
32
|
+
run: pip install -e ".[dev]"
|
|
33
|
+
|
|
34
|
+
- name: Ruff check
|
|
35
|
+
run: ruff check src tests
|
|
36
|
+
|
|
37
|
+
- name: Ruff format
|
|
38
|
+
run: ruff format --check src tests
|
|
39
|
+
|
|
40
|
+
- name: Typecheck
|
|
41
|
+
run: mypy
|
|
42
|
+
|
|
43
|
+
- name: Tests
|
|
44
|
+
run: pytest -q -m "not live"
|
|
45
|
+
|
|
46
|
+
- name: Dependency audit
|
|
47
|
+
continue-on-error: true
|
|
48
|
+
run: |
|
|
49
|
+
pip install pip-audit
|
|
50
|
+
pip-audit
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: CodeQL
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, master]
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: "17 7 * * 1"
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
security-events: write
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
analyze:
|
|
17
|
+
name: Analyze
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Initialize CodeQL
|
|
23
|
+
uses: github/codeql-action/init@v3
|
|
24
|
+
with:
|
|
25
|
+
languages: python
|
|
26
|
+
|
|
27
|
+
- name: Autobuild
|
|
28
|
+
uses: github/codeql-action/autobuild@v3
|
|
29
|
+
|
|
30
|
+
- name: Perform CodeQL Analysis
|
|
31
|
+
uses: github/codeql-action/analyze@v3
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
paths:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- "mkdocs.yml"
|
|
9
|
+
- "src/aire/**"
|
|
10
|
+
- ".github/workflows/docs.yml"
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
pages: write
|
|
16
|
+
id-token: write
|
|
17
|
+
|
|
18
|
+
concurrency:
|
|
19
|
+
group: pages
|
|
20
|
+
cancel-in-progress: true
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
build:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v4
|
|
27
|
+
|
|
28
|
+
- name: Set up Python
|
|
29
|
+
uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.12"
|
|
32
|
+
cache: pip
|
|
33
|
+
|
|
34
|
+
- name: Install docs extras
|
|
35
|
+
run: pip install -e ".[docs]"
|
|
36
|
+
|
|
37
|
+
- name: Build MkDocs
|
|
38
|
+
run: mkdocs build --strict
|
|
39
|
+
|
|
40
|
+
- name: Upload Pages artifact
|
|
41
|
+
uses: actions/upload-pages-artifact@v3
|
|
42
|
+
with:
|
|
43
|
+
path: site
|
|
44
|
+
|
|
45
|
+
deploy:
|
|
46
|
+
needs: build
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
environment:
|
|
49
|
+
name: github-pages
|
|
50
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
51
|
+
steps:
|
|
52
|
+
- name: Deploy to GitHub Pages
|
|
53
|
+
id: deployment
|
|
54
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
dry_run:
|
|
10
|
+
description: "Build only (skip PyPI upload)"
|
|
11
|
+
type: boolean
|
|
12
|
+
default: false
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
name: Build distributions
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.12"
|
|
28
|
+
cache: pip
|
|
29
|
+
|
|
30
|
+
- name: Install build tooling
|
|
31
|
+
run: pip install --upgrade pip build twine
|
|
32
|
+
|
|
33
|
+
- name: Build sdist and wheel
|
|
34
|
+
run: python -m build
|
|
35
|
+
|
|
36
|
+
- name: Check metadata
|
|
37
|
+
run: twine check dist/*
|
|
38
|
+
|
|
39
|
+
- name: Upload artifacts
|
|
40
|
+
uses: actions/upload-artifact@v4
|
|
41
|
+
with:
|
|
42
|
+
name: python-package-distributions
|
|
43
|
+
path: dist/
|
|
44
|
+
|
|
45
|
+
publish:
|
|
46
|
+
name: Publish to PyPI
|
|
47
|
+
needs: build
|
|
48
|
+
if: >-
|
|
49
|
+
github.event_name == 'push' ||
|
|
50
|
+
(github.event_name == 'workflow_dispatch' && inputs.dry_run == false)
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
environment:
|
|
53
|
+
name: release
|
|
54
|
+
url: https://pypi.org/project/aire-ai/
|
|
55
|
+
permissions:
|
|
56
|
+
id-token: write # mandatory for Trusted Publishing (OIDC)
|
|
57
|
+
contents: read
|
|
58
|
+
steps:
|
|
59
|
+
- name: Download artifacts
|
|
60
|
+
uses: actions/download-artifact@v4
|
|
61
|
+
with:
|
|
62
|
+
name: python-package-distributions
|
|
63
|
+
path: dist/
|
|
64
|
+
|
|
65
|
+
- name: Publish package distributions to PyPI
|
|
66
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
67
|
+
with:
|
|
68
|
+
# packages-dir defaults to dist/
|
|
69
|
+
verbose: true
|
|
70
|
+
# print-hash helps debug upload issues
|
|
71
|
+
print-hash: true
|
aire_ai-0.3.5/.gitignore
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
*.egg
|
|
6
|
+
build/
|
|
7
|
+
dist/
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv/
|
|
11
|
+
venv/
|
|
12
|
+
|
|
13
|
+
# Tooling caches
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
.mypy_cache/
|
|
16
|
+
.ruff_cache/
|
|
17
|
+
.coverage
|
|
18
|
+
htmlcov/
|
|
19
|
+
|
|
20
|
+
# Environments and secrets
|
|
21
|
+
.env
|
|
22
|
+
.env.*
|
|
23
|
+
!.env.template
|
|
24
|
+
|
|
25
|
+
# Generated docs site
|
|
26
|
+
site/
|
|
27
|
+
|
|
28
|
+
# Graphify local outputs
|
|
29
|
+
graphify-out/
|
|
30
|
+
**/graphify-out/
|
|
31
|
+
|
|
32
|
+
# OS / editor
|
|
33
|
+
.DS_Store
|
|
34
|
+
.idea/
|
|
35
|
+
.vscode/
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
+
rev: v0.9.9
|
|
4
|
+
hooks:
|
|
5
|
+
- id: ruff
|
|
6
|
+
args: [--fix]
|
|
7
|
+
- id: ruff-format
|
|
8
|
+
|
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
+
rev: v5.0.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: check-yaml
|
|
13
|
+
- id: end-of-file-fixer
|
|
14
|
+
- id: trailing-whitespace
|
|
15
|
+
- id: detect-private-key
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|