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.
Files changed (286) hide show
  1. aire_ai-0.3.5/.editorconfig +18 -0
  2. aire_ai-0.3.5/.github/ISSUE_TEMPLATE/bug_report.yml +83 -0
  3. aire_ai-0.3.5/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
  4. aire_ai-0.3.5/.github/PULL_REQUEST_TEMPLATE.md +15 -0
  5. aire_ai-0.3.5/.github/dependabot.yml +13 -0
  6. aire_ai-0.3.5/.github/workflows/benchmarks.yml +34 -0
  7. aire_ai-0.3.5/.github/workflows/ci.yml +50 -0
  8. aire_ai-0.3.5/.github/workflows/codeql.yml +31 -0
  9. aire_ai-0.3.5/.github/workflows/docs.yml +54 -0
  10. aire_ai-0.3.5/.github/workflows/release.yml +71 -0
  11. aire_ai-0.3.5/.gitignore +35 -0
  12. aire_ai-0.3.5/.pre-commit-config.yaml +15 -0
  13. aire_ai-0.3.5/.python-version +1 -0
  14. aire_ai-0.3.5/CHANGELOG.md +495 -0
  15. aire_ai-0.3.5/CITATION.cff +21 -0
  16. aire_ai-0.3.5/CODE_OF_CONDUCT.md +134 -0
  17. aire_ai-0.3.5/CONTRIBUTING.md +82 -0
  18. aire_ai-0.3.5/GAPS.md +28 -0
  19. aire_ai-0.3.5/LICENSE +190 -0
  20. aire_ai-0.3.5/Makefile +27 -0
  21. aire_ai-0.3.5/PKG-INFO +261 -0
  22. aire_ai-0.3.5/README.md +143 -0
  23. aire_ai-0.3.5/SECURITY.md +50 -0
  24. aire_ai-0.3.5/benchmarks/microbench.py +89 -0
  25. aire_ai-0.3.5/benchmarks/results/.gitignore +3 -0
  26. aire_ai-0.3.5/benchmarks/results/.gitkeep +0 -0
  27. aire_ai-0.3.5/docs/ARCHITECTURE.md +62 -0
  28. aire_ai-0.3.5/docs/GUIDE.md +25 -0
  29. aire_ai-0.3.5/docs/PUBLIC_API.md +77 -0
  30. aire_ai-0.3.5/docs/agents.md +91 -0
  31. aire_ai-0.3.5/docs/api.md +23 -0
  32. aire_ai-0.3.5/docs/api_freeze.md +14 -0
  33. aire_ai-0.3.5/docs/cli.md +30 -0
  34. aire_ai-0.3.5/docs/compatibility.md +29 -0
  35. aire_ai-0.3.5/docs/contributing.md +15 -0
  36. aire_ai-0.3.5/docs/gateway.md +39 -0
  37. aire_ai-0.3.5/docs/honesty.md +22 -0
  38. aire_ai-0.3.5/docs/index.md +39 -0
  39. aire_ai-0.3.5/docs/mcp.md +35 -0
  40. aire_ai-0.3.5/docs/migration.md +21 -0
  41. aire_ai-0.3.5/docs/product.md +24 -0
  42. aire_ai-0.3.5/docs/publishing.md +70 -0
  43. aire_ai-0.3.5/docs/rag.md +63 -0
  44. aire_ai-0.3.5/docs/security.md +22 -0
  45. aire_ai-0.3.5/examples/00_quickstart/README.md +7 -0
  46. aire_ai-0.3.5/examples/00_quickstart/main.py +16 -0
  47. aire_ai-0.3.5/examples/README.md +26 -0
  48. aire_ai-0.3.5/examples/agent_tools/README.md +8 -0
  49. aire_ai-0.3.5/examples/agent_tools/main.py +17 -0
  50. aire_ai-0.3.5/examples/eval_gates/README.md +7 -0
  51. aire_ai-0.3.5/examples/eval_gates/main.py +31 -0
  52. aire_ai-0.3.5/examples/gateway_offline/README.md +9 -0
  53. aire_ai-0.3.5/examples/gateway_offline/main.py +18 -0
  54. aire_ai-0.3.5/examples/graph_store/main.py +36 -0
  55. aire_ai-0.3.5/examples/graphrag_communities/main.py +31 -0
  56. aire_ai-0.3.5/examples/hitl/README.md +1 -0
  57. aire_ai-0.3.5/examples/hitl/main.py +35 -0
  58. aire_ai-0.3.5/examples/lora_dry_run/main.py +23 -0
  59. aire_ai-0.3.5/examples/mcp_roundtrip/main.py +37 -0
  60. aire_ai-0.3.5/examples/memory/README.md +1 -0
  61. aire_ai-0.3.5/examples/memory/main.py +34 -0
  62. aire_ai-0.3.5/examples/multimodal_offline/main.py +20 -0
  63. aire_ai-0.3.5/examples/openapi_tools/README.md +7 -0
  64. aire_ai-0.3.5/examples/openapi_tools/main.py +30 -0
  65. aire_ai-0.3.5/examples/rag_assistant/README.md +7 -0
  66. aire_ai-0.3.5/examples/rag_assistant/main.py +30 -0
  67. aire_ai-0.3.5/examples/rag_assistant/sample_docs/auth.md +1 -0
  68. aire_ai-0.3.5/mkdocs.yml +67 -0
  69. aire_ai-0.3.5/pyproject.toml +225 -0
  70. aire_ai-0.3.5/src/aire/__init__.py +101 -0
  71. aire_ai-0.3.5/src/aire/_version.py +3 -0
  72. aire_ai-0.3.5/src/aire/agents/__init__.py +87 -0
  73. aire_ai-0.3.5/src/aire/agents/agent.py +276 -0
  74. aire_ai-0.3.5/src/aire/agents/approvals.py +105 -0
  75. aire_ai-0.3.5/src/aire/agents/builder.py +204 -0
  76. aire_ai-0.3.5/src/aire/agents/memory.py +100 -0
  77. aire_ai-0.3.5/src/aire/agents/patterns.py +162 -0
  78. aire_ai-0.3.5/src/aire/agents/plan.py +161 -0
  79. aire_ai-0.3.5/src/aire/agents/runtime.py +348 -0
  80. aire_ai-0.3.5/src/aire/agents/session.py +133 -0
  81. aire_ai-0.3.5/src/aire/agents/skills.py +244 -0
  82. aire_ai-0.3.5/src/aire/agents/streaming.py +130 -0
  83. aire_ai-0.3.5/src/aire/agents/team.py +149 -0
  84. aire_ai-0.3.5/src/aire/agents/toolkits.py +207 -0
  85. aire_ai-0.3.5/src/aire/agents/topologies.py +169 -0
  86. aire_ai-0.3.5/src/aire/agents/types.py +103 -0
  87. aire_ai-0.3.5/src/aire/ai.py +1686 -0
  88. aire_ai-0.3.5/src/aire/audio/__init__.py +23 -0
  89. aire_ai-0.3.5/src/aire/audio/pipelines.py +184 -0
  90. aire_ai-0.3.5/src/aire/audio/voice.py +218 -0
  91. aire_ai-0.3.5/src/aire/cli/__init__.py +1 -0
  92. aire_ai-0.3.5/src/aire/cli/main.py +581 -0
  93. aire_ai-0.3.5/src/aire/core/__init__.py +84 -0
  94. aire_ai-0.3.5/src/aire/core/config.py +252 -0
  95. aire_ai-0.3.5/src/aire/core/content.py +142 -0
  96. aire_ai-0.3.5/src/aire/core/context.py +117 -0
  97. aire_ai-0.3.5/src/aire/core/errors.py +211 -0
  98. aire_ai-0.3.5/src/aire/core/events.py +112 -0
  99. aire_ai-0.3.5/src/aire/core/lifecycle.py +84 -0
  100. aire_ai-0.3.5/src/aire/core/logging.py +56 -0
  101. aire_ai-0.3.5/src/aire/core/plugins.py +129 -0
  102. aire_ai-0.3.5/src/aire/core/registry.py +109 -0
  103. aire_ai-0.3.5/src/aire/core/runtime.py +127 -0
  104. aire_ai-0.3.5/src/aire/core/serialization.py +101 -0
  105. aire_ai-0.3.5/src/aire/core/types.py +123 -0
  106. aire_ai-0.3.5/src/aire/data/__init__.py +34 -0
  107. aire_ai-0.3.5/src/aire/data/chunking.py +301 -0
  108. aire_ai-0.3.5/src/aire/data/dataset.py +280 -0
  109. aire_ai-0.3.5/src/aire/data/loaders.py +271 -0
  110. aire_ai-0.3.5/src/aire/data/types.py +64 -0
  111. aire_ai-0.3.5/src/aire/deployment/__init__.py +25 -0
  112. aire_ai-0.3.5/src/aire/deployment/artifacts.py +162 -0
  113. aire_ai-0.3.5/src/aire/deployment/fastapi_app.py +237 -0
  114. aire_ai-0.3.5/src/aire/deployment/gateway.py +1443 -0
  115. aire_ai-0.3.5/src/aire/deployment/scale.py +320 -0
  116. aire_ai-0.3.5/src/aire/docs/__init__.py +12 -0
  117. aire_ai-0.3.5/src/aire/docs/pdf.py +201 -0
  118. aire_ai-0.3.5/src/aire/evaluation/__init__.py +23 -0
  119. aire_ai-0.3.5/src/aire/evaluation/gates.py +114 -0
  120. aire_ai-0.3.5/src/aire/evaluation/metrics.py +500 -0
  121. aire_ai-0.3.5/src/aire/evaluation/runner.py +202 -0
  122. aire_ai-0.3.5/src/aire/evaluation/types.py +105 -0
  123. aire_ai-0.3.5/src/aire/graph/__init__.py +40 -0
  124. aire_ai-0.3.5/src/aire/graph/community.py +211 -0
  125. aire_ai-0.3.5/src/aire/graph/extract.py +88 -0
  126. aire_ai-0.3.5/src/aire/graph/neo4j_store.py +266 -0
  127. aire_ai-0.3.5/src/aire/graph/pipeline.py +215 -0
  128. aire_ai-0.3.5/src/aire/graph/store.py +316 -0
  129. aire_ai-0.3.5/src/aire/graph/types.py +92 -0
  130. aire_ai-0.3.5/src/aire/integrations/__init__.py +10 -0
  131. aire_ai-0.3.5/src/aire/integrations/anthropic.py +252 -0
  132. aire_ai-0.3.5/src/aire/integrations/chroma.py +181 -0
  133. aire_ai-0.3.5/src/aire/integrations/http.py +131 -0
  134. aire_ai-0.3.5/src/aire/integrations/huggingface.py +61 -0
  135. aire_ai-0.3.5/src/aire/integrations/milvus.py +192 -0
  136. aire_ai-0.3.5/src/aire/integrations/mock.py +36 -0
  137. aire_ai-0.3.5/src/aire/integrations/ollama.py +190 -0
  138. aire_ai-0.3.5/src/aire/integrations/openai.py +306 -0
  139. aire_ai-0.3.5/src/aire/integrations/openai_compat.py +356 -0
  140. aire_ai-0.3.5/src/aire/integrations/openai_media.py +249 -0
  141. aire_ai-0.3.5/src/aire/integrations/pinecone.py +132 -0
  142. aire_ai-0.3.5/src/aire/integrations/qdrant.py +192 -0
  143. aire_ai-0.3.5/src/aire/integrations/weaviate.py +204 -0
  144. aire_ai-0.3.5/src/aire/knowledge_assistant.py +247 -0
  145. aire_ai-0.3.5/src/aire/mcp/__init__.py +8 -0
  146. aire_ai-0.3.5/src/aire/mcp/__main__.py +6 -0
  147. aire_ai-0.3.5/src/aire/mcp/client.py +312 -0
  148. aire_ai-0.3.5/src/aire/mcp/guide.md +218 -0
  149. aire_ai-0.3.5/src/aire/mcp/http_client.py +271 -0
  150. aire_ai-0.3.5/src/aire/mcp/knowledge.py +261 -0
  151. aire_ai-0.3.5/src/aire/mcp/protocol.py +85 -0
  152. aire_ai-0.3.5/src/aire/mcp/server.py +257 -0
  153. aire_ai-0.3.5/src/aire/memory/__init__.py +10 -0
  154. aire_ai-0.3.5/src/aire/memory/store.py +229 -0
  155. aire_ai-0.3.5/src/aire/memory/types.py +37 -0
  156. aire_ai-0.3.5/src/aire/ml/__init__.py +65 -0
  157. aire_ai-0.3.5/src/aire/ml/arch/__init__.py +80 -0
  158. aire_ai-0.3.5/src/aire/ml/arch/attention.py +281 -0
  159. aire_ai-0.3.5/src/aire/ml/arch/block.py +93 -0
  160. aire_ai-0.3.5/src/aire/ml/arch/compose.py +176 -0
  161. aire_ai-0.3.5/src/aire/ml/arch/embed.py +39 -0
  162. aire_ai-0.3.5/src/aire/ml/arch/ffn.py +174 -0
  163. aire_ai-0.3.5/src/aire/ml/arch/head.py +20 -0
  164. aire_ai-0.3.5/src/aire/ml/arch/norm.py +38 -0
  165. aire_ai-0.3.5/src/aire/ml/arch/recipes.py +64 -0
  166. aire_ai-0.3.5/src/aire/ml/arch/registry.py +75 -0
  167. aire_ai-0.3.5/src/aire/ml/arch/residual.py +55 -0
  168. aire_ai-0.3.5/src/aire/ml/arch/specs.py +112 -0
  169. aire_ai-0.3.5/src/aire/ml/arch/stack.py +129 -0
  170. aire_ai-0.3.5/src/aire/ml/arch/torch_util.py +24 -0
  171. aire_ai-0.3.5/src/aire/ml/boosting.py +257 -0
  172. aire_ai-0.3.5/src/aire/ml/callbacks.py +101 -0
  173. aire_ai-0.3.5/src/aire/ml/compose.py +107 -0
  174. aire_ai-0.3.5/src/aire/ml/estimator.py +214 -0
  175. aire_ai-0.3.5/src/aire/ml/factory.py +38 -0
  176. aire_ai-0.3.5/src/aire/ml/keras_adapter.py +298 -0
  177. aire_ai-0.3.5/src/aire/ml/loss/__init__.py +113 -0
  178. aire_ai-0.3.5/src/aire/ml/metrics.py +493 -0
  179. aire_ai-0.3.5/src/aire/ml/native.py +258 -0
  180. aire_ai-0.3.5/src/aire/ml/optim/__init__.py +102 -0
  181. aire_ai-0.3.5/src/aire/ml/pandas_bridge.py +110 -0
  182. aire_ai-0.3.5/src/aire/ml/pipeline.py +198 -0
  183. aire_ai-0.3.5/src/aire/ml/polars_bridge.py +79 -0
  184. aire_ai-0.3.5/src/aire/ml/scoring.py +139 -0
  185. aire_ai-0.3.5/src/aire/ml/sklearn_adapter.py +414 -0
  186. aire_ai-0.3.5/src/aire/ml/torch_adapter.py +427 -0
  187. aire_ai-0.3.5/src/aire/ml/transform.py +245 -0
  188. aire_ai-0.3.5/src/aire/ml/types.py +87 -0
  189. aire_ai-0.3.5/src/aire/models/__init__.py +41 -0
  190. aire_ai-0.3.5/src/aire/models/base.py +170 -0
  191. aire_ai-0.3.5/src/aire/models/builtin.py +239 -0
  192. aire_ai-0.3.5/src/aire/models/registry.py +156 -0
  193. aire_ai-0.3.5/src/aire/models/retry.py +41 -0
  194. aire_ai-0.3.5/src/aire/models/types.py +186 -0
  195. aire_ai-0.3.5/src/aire/multimodal/__init__.py +33 -0
  196. aire_ai-0.3.5/src/aire/multimodal/conversions.py +111 -0
  197. aire_ai-0.3.5/src/aire/observability/__init__.py +39 -0
  198. aire_ai-0.3.5/src/aire/observability/analytics.py +153 -0
  199. aire_ai-0.3.5/src/aire/observability/metrics.py +68 -0
  200. aire_ai-0.3.5/src/aire/observability/otel_sdk.py +109 -0
  201. aire_ai-0.3.5/src/aire/observability/otlp.py +155 -0
  202. aire_ai-0.3.5/src/aire/observability/tracing.py +197 -0
  203. aire_ai-0.3.5/src/aire/optimization/__init__.py +17 -0
  204. aire_ai-0.3.5/src/aire/optimization/cache.py +226 -0
  205. aire_ai-0.3.5/src/aire/optimization/cost_policy.py +94 -0
  206. aire_ai-0.3.5/src/aire/optimization/prompt_opt.py +127 -0
  207. aire_ai-0.3.5/src/aire/optimization/redis_cache.py +250 -0
  208. aire_ai-0.3.5/src/aire/optimization/router.py +265 -0
  209. aire_ai-0.3.5/src/aire/project/__init__.py +5 -0
  210. aire_ai-0.3.5/src/aire/project/lock.py +133 -0
  211. aire_ai-0.3.5/src/aire/py.typed +0 -0
  212. aire_ai-0.3.5/src/aire/rag/__init__.py +43 -0
  213. aire_ai-0.3.5/src/aire/rag/acl.py +78 -0
  214. aire_ai-0.3.5/src/aire/rag/compress.py +119 -0
  215. aire_ai-0.3.5/src/aire/rag/filters.py +57 -0
  216. aire_ai-0.3.5/src/aire/rag/incremental.py +114 -0
  217. aire_ai-0.3.5/src/aire/rag/pgvector.py +354 -0
  218. aire_ai-0.3.5/src/aire/rag/pipeline.py +321 -0
  219. aire_ai-0.3.5/src/aire/rag/rerank.py +198 -0
  220. aire_ai-0.3.5/src/aire/rag/retriever.py +80 -0
  221. aire_ai-0.3.5/src/aire/rag/rewrite.py +121 -0
  222. aire_ai-0.3.5/src/aire/rag/sqlite.py +119 -0
  223. aire_ai-0.3.5/src/aire/rag/store.py +227 -0
  224. aire_ai-0.3.5/src/aire/rag/types.py +75 -0
  225. aire_ai-0.3.5/src/aire/recipes/__init__.py +162 -0
  226. aire_ai-0.3.5/src/aire/safety/__init__.py +41 -0
  227. aire_ai-0.3.5/src/aire/safety/guardrails.py +293 -0
  228. aire_ai-0.3.5/src/aire/safety/patterns.py +80 -0
  229. aire_ai-0.3.5/src/aire/safety/policy.py +179 -0
  230. aire_ai-0.3.5/src/aire/safety/redaction.py +36 -0
  231. aire_ai-0.3.5/src/aire/schedule/__init__.py +5 -0
  232. aire_ai-0.3.5/src/aire/schedule/scheduler.py +198 -0
  233. aire_ai-0.3.5/src/aire/synthetic/__init__.py +5 -0
  234. aire_ai-0.3.5/src/aire/synthetic/generator.py +69 -0
  235. aire_ai-0.3.5/src/aire/tools/__init__.py +20 -0
  236. aire_ai-0.3.5/src/aire/tools/builtins.py +190 -0
  237. aire_ai-0.3.5/src/aire/tools/openapi.py +168 -0
  238. aire_ai-0.3.5/src/aire/tools/registry.py +59 -0
  239. aire_ai-0.3.5/src/aire/tools/tool.py +220 -0
  240. aire_ai-0.3.5/src/aire/tools/types.py +82 -0
  241. aire_ai-0.3.5/src/aire/training/__init__.py +52 -0
  242. aire_ai-0.3.5/src/aire/training/distill.py +350 -0
  243. aire_ai-0.3.5/src/aire/training/foundation.py +281 -0
  244. aire_ai-0.3.5/src/aire/training/hpo.py +210 -0
  245. aire_ai-0.3.5/src/aire/training/lm_trainer.py +233 -0
  246. aire_ai-0.3.5/src/aire/training/lora.py +297 -0
  247. aire_ai-0.3.5/src/aire/training/quantize.py +126 -0
  248. aire_ai-0.3.5/src/aire/training/trainer.py +182 -0
  249. aire_ai-0.3.5/src/aire/ui/__init__.py +150 -0
  250. aire_ai-0.3.5/src/aire/vision/__init__.py +20 -0
  251. aire_ai-0.3.5/src/aire/vision/pipelines.py +279 -0
  252. aire_ai-0.3.5/src/aire/vision/video.py +177 -0
  253. aire_ai-0.3.5/src/aire/workers/__init__.py +21 -0
  254. aire_ai-0.3.5/src/aire/workers/queue.py +301 -0
  255. aire_ai-0.3.5/src/aire/workflows/__init__.py +26 -0
  256. aire_ai-0.3.5/src/aire/workflows/graph.py +462 -0
  257. aire_ai-0.3.5/src/aire/workflows/hitl.py +72 -0
  258. aire_ai-0.3.5/src/aire/workflows/types.py +97 -0
  259. aire_ai-0.3.5/tests/__init__.py +1 -0
  260. aire_ai-0.3.5/tests/conftest.py +39 -0
  261. aire_ai-0.3.5/tests/contract/__init__.py +1 -0
  262. aire_ai-0.3.5/tests/contract/test_model_protocol.py +15 -0
  263. aire_ai-0.3.5/tests/live/test_live_stores.py +67 -0
  264. aire_ai-0.3.5/tests/security/__init__.py +1 -0
  265. aire_ai-0.3.5/tests/security/test_sandbox_path.py +45 -0
  266. aire_ai-0.3.5/tests/unit/__init__.py +1 -0
  267. aire_ai-0.3.5/tests/unit/test_agent_config.py +23 -0
  268. aire_ai-0.3.5/tests/unit/test_agent_offline.py +16 -0
  269. aire_ai-0.3.5/tests/unit/test_anthropic_gateway.py +115 -0
  270. aire_ai-0.3.5/tests/unit/test_api_freeze.py +65 -0
  271. aire_ai-0.3.5/tests/unit/test_builtins.py +28 -0
  272. aire_ai-0.3.5/tests/unit/test_chunking.py +20 -0
  273. aire_ai-0.3.5/tests/unit/test_core_quality.py +82 -0
  274. aire_ai-0.3.5/tests/unit/test_eval_safety_035.py +137 -0
  275. aire_ai-0.3.5/tests/unit/test_filters.py +22 -0
  276. aire_ai-0.3.5/tests/unit/test_foundation_describe.py +17 -0
  277. aire_ai-0.3.5/tests/unit/test_mcp_depth.py +71 -0
  278. aire_ai-0.3.5/tests/unit/test_metrics_honesty.py +41 -0
  279. aire_ai-0.3.5/tests/unit/test_multimodal_media.py +63 -0
  280. aire_ai-0.3.5/tests/unit/test_openapi_load.py +27 -0
  281. aire_ai-0.3.5/tests/unit/test_plan_verify_json.py +35 -0
  282. aire_ai-0.3.5/tests/unit/test_platform_scale.py +43 -0
  283. aire_ai-0.3.5/tests/unit/test_policy.py +22 -0
  284. aire_ai-0.3.5/tests/unit/test_rag_offline.py +31 -0
  285. aire_ai-0.3.5/tests/unit/test_session.py +31 -0
  286. 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,13 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ open-pull-requests-limit: 5
8
+
9
+ - package-ecosystem: pip
10
+ directory: /
11
+ schedule:
12
+ interval: weekly
13
+ open-pull-requests-limit: 5
@@ -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
@@ -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