iamai 0.2.2a1.dev2__tar.gz → 0.3.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.
Files changed (554) hide show
  1. iamai-0.3.0/.github/ISSUE_TEMPLATE/bug-report.yml +102 -0
  2. iamai-0.3.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. iamai-0.3.0/.github/ISSUE_TEMPLATE/ecosystem-submission.yml +104 -0
  4. iamai-0.3.0/.github/ISSUE_TEMPLATE/feature-request.yml +84 -0
  5. iamai-0.3.0/.github/dependabot.yml +62 -0
  6. iamai-0.3.0/.github/workflows/check.yml +110 -0
  7. iamai-0.3.0/.github/workflows/release.yml +229 -0
  8. iamai-0.3.0/.gitignore +20 -0
  9. iamai-0.3.0/.pre-commit-config.yaml +10 -0
  10. iamai-0.3.0/.readthedocs.yaml +13 -0
  11. iamai-0.3.0/CHANGELOG.md +27 -0
  12. iamai-0.3.0/Cargo.lock +195 -0
  13. iamai-0.3.0/Cargo.toml +20 -0
  14. iamai-0.3.0/LICENSE +21 -0
  15. iamai-0.3.0/PKG-INFO +179 -0
  16. iamai-0.3.0/README.md +165 -0
  17. iamai-0.3.0/README.zh.md +165 -0
  18. iamai-0.3.0/docs/Makefile +14 -0
  19. iamai-0.3.0/docs/_ext/iamai_blog.py +393 -0
  20. iamai-0.3.0/docs/_ext/iamai_i18n_versions.py +146 -0
  21. iamai-0.3.0/docs/_ext/iamai_mermaid.py +66 -0
  22. iamai-0.3.0/docs/_ext/iamai_store.py +510 -0
  23. iamai-0.3.0/docs/_static/brand/favicon.ico +0 -0
  24. iamai-0.3.0/docs/_static/brand/iamai-icon-128.png +0 -0
  25. iamai-0.3.0/docs/_static/brand/iamai-icon-16.png +0 -0
  26. iamai-0.3.0/docs/_static/brand/iamai-icon-180.png +0 -0
  27. iamai-0.3.0/docs/_static/brand/iamai-icon-192.png +0 -0
  28. iamai-0.3.0/docs/_static/brand/iamai-icon-256.png +0 -0
  29. iamai-0.3.0/docs/_static/brand/iamai-icon-32.png +0 -0
  30. iamai-0.3.0/docs/_static/brand/iamai-icon-48.png +0 -0
  31. iamai-0.3.0/docs/_static/brand/iamai-icon-512.png +0 -0
  32. iamai-0.3.0/docs/_static/brand/iamai-icon-64.png +0 -0
  33. iamai-0.3.0/docs/_static/brand/iamai-logo-wide.svg +58 -0
  34. iamai-0.3.0/docs/_static/brand/iamai-logo.svg +55 -0
  35. iamai-0.3.0/docs/_static/custom.css +150 -0
  36. iamai-0.3.0/docs/_static/iamai-blog.css +426 -0
  37. iamai-0.3.0/docs/_static/iamai-docs-switcher.css +147 -0
  38. iamai-0.3.0/docs/_static/iamai-docs-switcher.js +97 -0
  39. iamai-0.3.0/docs/_static/iamai-mermaid.js +29 -0
  40. iamai-0.3.0/docs/_static/iamai-store.css +526 -0
  41. iamai-0.3.0/docs/_static/iamai-store.js +729 -0
  42. iamai-0.3.0/docs/api/index.rst +10 -0
  43. iamai-0.3.0/docs/community/blog/index.rst +7 -0
  44. iamai-0.3.0/docs/community/blog/posts/adapter-conformance.rst +20 -0
  45. iamai-0.3.0/docs/community/blog/posts/architecture-lifecycle.rst +43 -0
  46. iamai-0.3.0/docs/community/blog/posts/community-store.rst +20 -0
  47. iamai-0.3.0/docs/community/index.rst +33 -0
  48. iamai-0.3.0/docs/community/store.rst +7 -0
  49. iamai-0.3.0/docs/concepts.rst +76 -0
  50. iamai-0.3.0/docs/conf.py +99 -0
  51. iamai-0.3.0/docs/ecosystem/entries/adapter.onebot11.json +17 -0
  52. iamai-0.3.0/docs/ecosystem/entries/adapter.onebot11_http_builtin.json +20 -0
  53. iamai-0.3.0/docs/ecosystem/entries/adapter.onebot11_reverse_ws_builtin.json +20 -0
  54. iamai-0.3.0/docs/ecosystem/entries/adapter.onebot11_ws_builtin.json +20 -0
  55. iamai-0.3.0/docs/ecosystem/entries/adapter.telegram.json +17 -0
  56. iamai-0.3.0/docs/ecosystem/entries/adapter.terminal.json +17 -0
  57. iamai-0.3.0/docs/ecosystem/entries/adapter.webhook.json +18 -0
  58. iamai-0.3.0/docs/ecosystem/entries/agent_tool.group_digest_example.json +20 -0
  59. iamai-0.3.0/docs/ecosystem/entries/agent_tool.planner_executor_example.json +20 -0
  60. iamai-0.3.0/docs/ecosystem/entries/agent_tool.react_tools_example.json +20 -0
  61. iamai-0.3.0/docs/ecosystem/entries/agent_tool.supervisor_team_example.json +20 -0
  62. iamai-0.3.0/docs/ecosystem/entries/agent_tool.web_search.json +16 -0
  63. iamai-0.3.0/docs/ecosystem/entries/plugin.arcade_quests_example.json +19 -0
  64. iamai-0.3.0/docs/ecosystem/entries/plugin.group_assistant_example.json +19 -0
  65. iamai-0.3.0/docs/ecosystem/entries/plugin.life_sim_example.json +19 -0
  66. iamai-0.3.0/docs/ecosystem/entries/plugin.management.json +24 -0
  67. iamai-0.3.0/docs/ecosystem/entries/plugin.persona_rp_example.json +19 -0
  68. iamai-0.3.0/docs/ecosystem/entries/plugin.story_director_example.json +19 -0
  69. iamai-0.3.0/docs/ecosystem/entries/state_backend.sqlite.json +17 -0
  70. iamai-0.3.0/docs/ecosystem/entries/template.echo_runtime.json +15 -0
  71. iamai-0.3.0/docs/ecosystem/index.rst +8 -0
  72. iamai-0.3.0/docs/guides/adapters.rst +248 -0
  73. iamai-0.3.0/docs/guides/agent-runtime.rst +63 -0
  74. iamai-0.3.0/docs/guides/architecture.rst +141 -0
  75. iamai-0.3.0/docs/guides/configuration.rst +105 -0
  76. iamai-0.3.0/docs/guides/ecosystem-comparison.rst +243 -0
  77. iamai-0.3.0/docs/guides/index.rst +42 -0
  78. iamai-0.3.0/docs/guides/operations.rst +132 -0
  79. iamai-0.3.0/docs/guides/plugins.rst +198 -0
  80. iamai-0.3.0/docs/guides/roadmap.rst +61 -0
  81. iamai-0.3.0/docs/guides/state-and-sessions.rst +92 -0
  82. iamai-0.3.0/docs/index.rst +94 -0
  83. iamai-0.3.0/docs/installation.rst +49 -0
  84. iamai-0.3.0/docs/locales/README.md +17 -0
  85. iamai-0.3.0/docs/make.bat +15 -0
  86. iamai-0.3.0/docs/quickstart.rst +130 -0
  87. iamai-0.3.0/docs/reference/cli.rst +55 -0
  88. iamai-0.3.0/docs/reference/configuration.rst +148 -0
  89. iamai-0.3.0/docs/reference/docs-i18n-versions.rst +51 -0
  90. iamai-0.3.0/docs/reference/extensions.rst +285 -0
  91. iamai-0.3.0/docs/reference/index.rst +36 -0
  92. iamai-0.3.0/docs/reference/quality-gates.rst +29 -0
  93. iamai-0.3.0/docs/reference/rules.rst +138 -0
  94. iamai-0.3.0/docs/reference/webhook-signatures.rst +50 -0
  95. iamai-0.3.0/docs/requirements.txt +6 -0
  96. iamai-0.3.0/docs/tutorials/index.rst +41 -0
  97. iamai-0.3.0/docs/tutorials/part-1-terminal-runtime.rst +82 -0
  98. iamai-0.3.0/docs/tutorials/part-2-commands-rules.rst +162 -0
  99. iamai-0.3.0/docs/tutorials/part-3-state-sessions.rst +87 -0
  100. iamai-0.3.0/docs/tutorials/part-4-webhook-production.rst +98 -0
  101. iamai-0.3.0/docs/tutorials/part-5-adapter-development.rst +198 -0
  102. iamai-0.3.0/docs/tutorials/part-6-ecosystem-publishing.rst +59 -0
  103. iamai-0.3.0/examples/_shared/README.md +11 -0
  104. iamai-0.3.0/examples/_shared/pyproject.toml +11 -0
  105. iamai-0.3.0/examples/_shared/src/iamai_example_utils/__init__.py +13 -0
  106. iamai-0.3.0/examples/_shared/src/iamai_example_utils/llm.py +80 -0
  107. iamai-0.3.0/examples/arcade-runtime/README.md +25 -0
  108. iamai-0.3.0/examples/arcade-runtime/config.onebot11.napcat.ws_reverse.toml +41 -0
  109. iamai-0.3.0/examples/arcade-runtime/config.terminal.toml +37 -0
  110. iamai-0.3.0/examples/arcade-runtime/pyproject.toml +12 -0
  111. iamai-0.3.0/examples/arcade-runtime/run.py +23 -0
  112. iamai-0.3.0/examples/arcade-runtime/src/arcade_runtime/__init__.py +1 -0
  113. iamai-0.3.0/examples/arcade-runtime/src/arcade_runtime/plugins/__init__.py +6 -0
  114. iamai-0.3.0/examples/arcade-runtime/src/arcade_runtime/plugins/arcade.py +95 -0
  115. iamai-0.3.0/examples/arcade-runtime/src/arcade_runtime/plugins/chaos.py +14 -0
  116. iamai-0.3.0/examples/arcade-runtime/src/arcade_runtime/plugins/quests.py +48 -0
  117. iamai-0.3.0/examples/arcade-runtime/src/arcade_runtime/plugins/session.py +40 -0
  118. iamai-0.3.0/examples/echo-runtime/README.md +54 -0
  119. iamai-0.3.0/examples/echo-runtime/config.onebot11.http.toml +27 -0
  120. iamai-0.3.0/examples/echo-runtime/config.onebot11.napcat.ws_reverse.toml +30 -0
  121. iamai-0.3.0/examples/echo-runtime/config.onebot11.ws.toml +25 -0
  122. iamai-0.3.0/examples/echo-runtime/config.onebot11.ws_reverse.toml +26 -0
  123. iamai-0.3.0/examples/echo-runtime/config.terminal.toml +31 -0
  124. iamai-0.3.0/examples/echo-runtime/config.webhook.toml +31 -0
  125. iamai-0.3.0/examples/echo-runtime/logs/echo-runtime.log +37 -0
  126. iamai-0.3.0/examples/echo-runtime/pyproject.toml +12 -0
  127. iamai-0.3.0/examples/echo-runtime/run.py +23 -0
  128. iamai-0.3.0/examples/echo-runtime/src/echo_runtime/__init__.py +1 -0
  129. iamai-0.3.0/examples/echo-runtime/src/echo_runtime/plugins/__init__.py +3 -0
  130. iamai-0.3.0/examples/echo-runtime/src/echo_runtime/plugins/echo.py +56 -0
  131. iamai-0.3.0/examples/group-assistant-runtime/.asterline/state.json +13 -0
  132. iamai-0.3.0/examples/group-assistant-runtime/README.md +24 -0
  133. iamai-0.3.0/examples/group-assistant-runtime/config.onebot11.napcat.ws_reverse.toml +41 -0
  134. iamai-0.3.0/examples/group-assistant-runtime/config.terminal.toml +37 -0
  135. iamai-0.3.0/examples/group-assistant-runtime/pyproject.toml +14 -0
  136. iamai-0.3.0/examples/group-assistant-runtime/run.py +23 -0
  137. iamai-0.3.0/examples/group-assistant-runtime/src/group_assistant_runtime/__init__.py +1 -0
  138. iamai-0.3.0/examples/group-assistant-runtime/src/group_assistant_runtime/plugins/__init__.py +1 -0
  139. iamai-0.3.0/examples/group-assistant-runtime/src/group_assistant_runtime/plugins/assistant.py +123 -0
  140. iamai-0.3.0/examples/group-assistant-runtime/src/group_assistant_runtime/plugins/room.py +49 -0
  141. iamai-0.3.0/examples/life-sim-runtime/.asterline/state.json +53 -0
  142. iamai-0.3.0/examples/life-sim-runtime/README.md +23 -0
  143. iamai-0.3.0/examples/life-sim-runtime/config.onebot11.napcat.ws_reverse.toml +38 -0
  144. iamai-0.3.0/examples/life-sim-runtime/config.terminal.toml +34 -0
  145. iamai-0.3.0/examples/life-sim-runtime/pyproject.toml +14 -0
  146. iamai-0.3.0/examples/life-sim-runtime/run.py +23 -0
  147. iamai-0.3.0/examples/life-sim-runtime/src/life_sim_runtime/__init__.py +1 -0
  148. iamai-0.3.0/examples/life-sim-runtime/src/life_sim_runtime/plugins/__init__.py +1 -0
  149. iamai-0.3.0/examples/life-sim-runtime/src/life_sim_runtime/plugins/life.py +208 -0
  150. iamai-0.3.0/examples/life-sim-runtime/src/life_sim_runtime/plugins/state.py +49 -0
  151. iamai-0.3.0/examples/persona-rp-runtime/.asterline/state.json +12 -0
  152. iamai-0.3.0/examples/persona-rp-runtime/README.md +22 -0
  153. iamai-0.3.0/examples/persona-rp-runtime/config.onebot11.napcat.ws_reverse.toml +40 -0
  154. iamai-0.3.0/examples/persona-rp-runtime/config.terminal.toml +36 -0
  155. iamai-0.3.0/examples/persona-rp-runtime/pyproject.toml +14 -0
  156. iamai-0.3.0/examples/persona-rp-runtime/run.py +23 -0
  157. iamai-0.3.0/examples/persona-rp-runtime/src/persona_rp_runtime/__init__.py +1 -0
  158. iamai-0.3.0/examples/persona-rp-runtime/src/persona_rp_runtime/plugins/__init__.py +1 -0
  159. iamai-0.3.0/examples/persona-rp-runtime/src/persona_rp_runtime/plugins/lounge.py +33 -0
  160. iamai-0.3.0/examples/persona-rp-runtime/src/persona_rp_runtime/plugins/persona.py +97 -0
  161. iamai-0.3.0/examples/planner-executor-runtime/README.md +23 -0
  162. iamai-0.3.0/examples/planner-executor-runtime/config.onebot11.napcat.ws_reverse.toml +41 -0
  163. iamai-0.3.0/examples/planner-executor-runtime/config.terminal.toml +36 -0
  164. iamai-0.3.0/examples/planner-executor-runtime/pyproject.toml +14 -0
  165. iamai-0.3.0/examples/planner-executor-runtime/run.py +23 -0
  166. iamai-0.3.0/examples/planner-executor-runtime/src/planner_executor_runtime/__init__.py +1 -0
  167. iamai-0.3.0/examples/planner-executor-runtime/src/planner_executor_runtime/plugins/__init__.py +1 -0
  168. iamai-0.3.0/examples/planner-executor-runtime/src/planner_executor_runtime/plugins/executor.py +161 -0
  169. iamai-0.3.0/examples/planner-executor-runtime/src/planner_executor_runtime/plugins/planner.py +119 -0
  170. iamai-0.3.0/examples/planner-executor-runtime/src/planner_executor_runtime/plugins/session.py +38 -0
  171. iamai-0.3.0/examples/react-runtime/README.md +35 -0
  172. iamai-0.3.0/examples/react-runtime/SOUL.md +58 -0
  173. iamai-0.3.0/examples/react-runtime/config.onebot11.napcat.ws_reverse.toml +41 -0
  174. iamai-0.3.0/examples/react-runtime/config.terminal.toml +39 -0
  175. iamai-0.3.0/examples/react-runtime/pyproject.toml +15 -0
  176. iamai-0.3.0/examples/react-runtime/run.py +23 -0
  177. iamai-0.3.0/examples/react-runtime/src/react_runtime/__init__.py +1 -0
  178. iamai-0.3.0/examples/react-runtime/src/react_runtime/plugins/__init__.py +1 -0
  179. iamai-0.3.0/examples/react-runtime/src/react_runtime/plugins/mcp.py +51 -0
  180. iamai-0.3.0/examples/react-runtime/src/react_runtime/plugins/memory.py +66 -0
  181. iamai-0.3.0/examples/react-runtime/src/react_runtime/plugins/reactor.py +181 -0
  182. iamai-0.3.0/examples/react-runtime/src/react_runtime/plugins/tools.py +139 -0
  183. iamai-0.3.0/examples/skill-chat-runtime/README.md +100 -0
  184. iamai-0.3.0/examples/skill-chat-runtime/config.terminal.toml +36 -0
  185. iamai-0.3.0/examples/skill-chat-runtime/pyproject.toml +14 -0
  186. iamai-0.3.0/examples/skill-chat-runtime/run.py +24 -0
  187. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/__init__.py +1 -0
  188. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/data/__init__.py +24 -0
  189. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/data/route_rules.json +22 -0
  190. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/data/seed_skills.json +72 -0
  191. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/data/stopwords.txt +40 -0
  192. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/plugins/__init__.py +1 -0
  193. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/plugins/memory.py +123 -0
  194. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/plugins/router.py +182 -0
  195. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/plugins/skills.py +339 -0
  196. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/plugins/tools.py +219 -0
  197. iamai-0.3.0/examples/skill-chat-runtime/src/skill_chat_runtime/skilllib.py +258 -0
  198. iamai-0.3.0/examples/state-runtime/README.md +23 -0
  199. iamai-0.3.0/examples/state-runtime/__init__.py +1 -0
  200. iamai-0.3.0/examples/state-runtime/config.terminal.toml +22 -0
  201. iamai-0.3.0/examples/state-runtime/pyproject.toml +14 -0
  202. iamai-0.3.0/examples/state-runtime/run.py +23 -0
  203. iamai-0.3.0/examples/state-runtime/src/state_runtime/__init__.py +1 -0
  204. iamai-0.3.0/examples/state-runtime/src/state_runtime/plugins/__init__.py +1 -0
  205. iamai-0.3.0/examples/state-runtime/src/state_runtime/plugins/states.py +18 -0
  206. iamai-0.3.0/examples/story-runtime/README.md +24 -0
  207. iamai-0.3.0/examples/story-runtime/config.onebot11.napcat.ws_reverse.toml +33 -0
  208. iamai-0.3.0/examples/story-runtime/config.terminal.toml +28 -0
  209. iamai-0.3.0/examples/story-runtime/pyproject.toml +12 -0
  210. iamai-0.3.0/examples/story-runtime/run.py +23 -0
  211. iamai-0.3.0/examples/story-runtime/src/story_runtime/__init__.py +1 -0
  212. iamai-0.3.0/examples/story-runtime/src/story_runtime/plugins/__init__.py +6 -0
  213. iamai-0.3.0/examples/story-runtime/src/story_runtime/plugins/cast.py +22 -0
  214. iamai-0.3.0/examples/story-runtime/src/story_runtime/plugins/director.py +80 -0
  215. iamai-0.3.0/examples/story-runtime/src/story_runtime/plugins/memory.py +40 -0
  216. iamai-0.3.0/examples/story-runtime/src/story_runtime/plugins/world.py +19 -0
  217. iamai-0.3.0/examples/supervisor-team-runtime/README.md +22 -0
  218. iamai-0.3.0/examples/supervisor-team-runtime/config.onebot11.napcat.ws_reverse.toml +38 -0
  219. iamai-0.3.0/examples/supervisor-team-runtime/config.terminal.toml +33 -0
  220. iamai-0.3.0/examples/supervisor-team-runtime/pyproject.toml +14 -0
  221. iamai-0.3.0/examples/supervisor-team-runtime/run.py +23 -0
  222. iamai-0.3.0/examples/supervisor-team-runtime/src/supervisor_team_runtime/__init__.py +1 -0
  223. iamai-0.3.0/examples/supervisor-team-runtime/src/supervisor_team_runtime/plugins/__init__.py +1 -0
  224. iamai-0.3.0/examples/supervisor-team-runtime/src/supervisor_team_runtime/plugins/briefing.py +33 -0
  225. iamai-0.3.0/examples/supervisor-team-runtime/src/supervisor_team_runtime/plugins/supervisor.py +167 -0
  226. iamai-0.3.0/examples/supervisor-team-runtime/src/supervisor_team_runtime/plugins/workers.py +69 -0
  227. iamai-0.3.0/pyproject.toml +108 -0
  228. iamai-0.3.0/python/iamai/__init__.py +140 -0
  229. iamai-0.3.0/python/iamai/__main__.py +6 -0
  230. iamai-0.3.0/python/iamai/_core.pyi +30 -0
  231. iamai-0.3.0/python/iamai/adapter.py +54 -0
  232. iamai-0.3.0/python/iamai/adapters/__init__.py +8 -0
  233. iamai-0.3.0/python/iamai/adapters/middleware.py +757 -0
  234. iamai-0.3.0/python/iamai/adapters/onebot11.py +143 -0
  235. iamai-0.3.0/python/iamai/adapters/telegram.py +175 -0
  236. iamai-0.3.0/python/iamai/adapters/terminal.py +74 -0
  237. iamai-0.3.0/python/iamai/adapters/webhook.py +350 -0
  238. iamai-0.3.0/python/iamai/agent.py +557 -0
  239. iamai-0.3.0/python/iamai/config.py +548 -0
  240. iamai-0.3.0/python/iamai/context.py +91 -0
  241. iamai-0.3.0/python/iamai/core.py +35 -0
  242. iamai-0.3.0/python/iamai/di.py +19 -0
  243. iamai-0.3.0/python/iamai/event.py +70 -0
  244. iamai-0.3.0/python/iamai/httpio.py +313 -0
  245. iamai-0.3.0/python/iamai/logging.py +102 -0
  246. iamai-0.3.0/python/iamai/message.py +93 -0
  247. iamai-0.3.0/python/iamai/middleware.py +48 -0
  248. iamai-0.3.0/python/iamai/net.py +87 -0
  249. iamai-0.3.0/python/iamai/observability.py +92 -0
  250. iamai-0.3.0/python/iamai/permissions.py +156 -0
  251. iamai-0.3.0/python/iamai/plugin.py +251 -0
  252. iamai-0.3.0/python/iamai/plugins/__init__.py +6 -0
  253. iamai-0.3.0/python/iamai/plugins/management.py +233 -0
  254. iamai-0.3.0/python/iamai/plugins/management_api.py +123 -0
  255. iamai-0.3.0/python/iamai/py.typed +1 -0
  256. iamai-0.3.0/python/iamai/rules.py +696 -0
  257. iamai-0.3.0/python/iamai/runtime.py +1734 -0
  258. iamai-0.3.0/python/iamai/session.py +164 -0
  259. iamai-0.3.0/python/iamai/state.py +125 -0
  260. iamai-0.3.0/python/iamai/testing/__init__.py +17 -0
  261. iamai-0.3.0/python/iamai/testing/adapters.py +45 -0
  262. iamai-0.3.0/python/iamai/validation.py +79 -0
  263. iamai-0.3.0/python/iamai/webhook_security.py +242 -0
  264. iamai-0.3.0/scripts/check_example_configs.sh +7 -0
  265. iamai-0.3.0/scripts/typecheck.sh +8 -0
  266. iamai-0.3.0/scripts/validate_ecosystem_store.py +65 -0
  267. iamai-0.3.0/src/lib.rs +444 -0
  268. iamai-0.3.0/tests/test_adapter_conformance.py +77 -0
  269. iamai-0.3.0/tests/test_adapter_middleware.py +247 -0
  270. iamai-0.3.0/tests/test_agent_tools.py +76 -0
  271. iamai-0.3.0/tests/test_docs_content.py +59 -0
  272. iamai-0.3.0/tests/test_docs_extensions.py +68 -0
  273. iamai-0.3.0/tests/test_docs_i18n_versions.py +37 -0
  274. iamai-0.3.0/tests/test_echo_runtime_management.py +56 -0
  275. iamai-0.3.0/tests/test_ecosystem_store.py +192 -0
  276. iamai-0.3.0/tests/test_example_llm.py +100 -0
  277. iamai-0.3.0/tests/test_logging_config.py +88 -0
  278. iamai-0.3.0/tests/test_management_api.py +67 -0
  279. iamai-0.3.0/tests/test_package_discovery.py +194 -0
  280. iamai-0.3.0/tests/test_react_runtime.py +299 -0
  281. iamai-0.3.0/tests/test_release_contract.py +76 -0
  282. iamai-0.3.0/tests/test_rules_engine.py +160 -0
  283. iamai-0.3.0/tests/test_runtime_introspection.py +108 -0
  284. iamai-0.3.0/tests/test_runtime_safety.py +1257 -0
  285. iamai-0.3.0/tests/test_telegram_adapter.py +120 -0
  286. iamai-0.3.0/uv.lock +2475 -0
  287. iamai-0.2.2a1.dev2/.github/FUNDING.yml +0 -13
  288. iamai-0.2.2a1.dev2/.github/actions/setup-node/action.yml +0 -21
  289. iamai-0.2.2a1.dev2/.github/actions/setup-python/action.yml +0 -25
  290. iamai-0.2.2a1.dev2/.github/config.yml +0 -7
  291. iamai-0.2.2a1.dev2/.github/copilot-instructions.md +0 -7
  292. iamai-0.2.2a1.dev2/.github/dependabot.yml +0 -19
  293. iamai-0.2.2a1.dev2/.github/workflows/build-api.yml +0 -63
  294. iamai-0.2.2a1.dev2/.github/workflows/changelog.yml +0 -43
  295. iamai-0.2.2a1.dev2/.github/workflows/dependency-review.yml +0 -20
  296. iamai-0.2.2a1.dev2/.github/workflows/nightly.yml +0 -64
  297. iamai-0.2.2a1.dev2/.github/workflows/publish-docker.yml +0 -59
  298. iamai-0.2.2a1.dev2/.github/workflows/release.yml +0 -207
  299. iamai-0.2.2a1.dev2/.gitignore +0 -166
  300. iamai-0.2.2a1.dev2/.gitpod.yml +0 -10
  301. iamai-0.2.2a1.dev2/.pre-commit-config.yaml +0 -20
  302. iamai-0.2.2a1.dev2/.readthedocs.yaml +0 -32
  303. iamai-0.2.2a1.dev2/.sourcery.yaml +0 -74
  304. iamai-0.2.2a1.dev2/.vscode/launch.json +0 -33
  305. iamai-0.2.2a1.dev2/CHANGELOG.md +0 -252
  306. iamai-0.2.2a1.dev2/CITATION.cff +0 -22
  307. iamai-0.2.2a1.dev2/CODE_OF_CONDUCT.md +0 -128
  308. iamai-0.2.2a1.dev2/COPYING +0 -661
  309. iamai-0.2.2a1.dev2/Cargo.lock +0 -1347
  310. iamai-0.2.2a1.dev2/Cargo.toml +0 -31
  311. iamai-0.2.2a1.dev2/Dockerfile +0 -18
  312. iamai-0.2.2a1.dev2/MANIFEST.in +0 -2
  313. iamai-0.2.2a1.dev2/Makefile +0 -53
  314. iamai-0.2.2a1.dev2/PKG-INFO +0 -481
  315. iamai-0.2.2a1.dev2/README.md +0 -435
  316. iamai-0.2.2a1.dev2/docs/Makefile +0 -41
  317. iamai-0.2.2a1.dev2/docs/_static/assets/blog-theme.png +0 -0
  318. iamai-0.2.2a1.dev2/docs/_static/assets/card-1.dark.png +0 -0
  319. iamai-0.2.2a1.dev2/docs/_static/assets/card-1.png +0 -0
  320. iamai-0.2.2a1.dev2/docs/_static/assets/credits.pdf +0 -0
  321. iamai-0.2.2a1.dev2/docs/_static/assets/docs/banner.png +0 -0
  322. iamai-0.2.2a1.dev2/docs/_static/assets/docs/custom-theme.png +0 -0
  323. iamai-0.2.2a1.dev2/docs/_static/assets/docs/how-it-works.png +0 -0
  324. iamai-0.2.2a1.dev2/docs/_static/assets/docs/logo.png +0 -0
  325. iamai-0.2.2a1.dev2/docs/_static/assets/docs/menu.png +0 -0
  326. iamai-0.2.2a1.dev2/docs/_static/assets/docs/navigation.png +0 -0
  327. iamai-0.2.2a1.dev2/docs/_static/assets/docs/project-link.png +0 -0
  328. iamai-0.2.2a1.dev2/docs/_static/assets/docs/sidebar-customized.png +0 -0
  329. iamai-0.2.2a1.dev2/docs/_static/assets/docs/sub-docs.mp4 +0 -0
  330. iamai-0.2.2a1.dev2/docs/_static/assets/docs/title-suffix.png +0 -0
  331. iamai-0.2.2a1.dev2/docs/_static/assets/docs-theme.png +0 -0
  332. iamai-0.2.2a1.dev2/docs/_static/assets/gradient-bg.jpeg +0 -0
  333. iamai-0.2.2a1.dev2/docs/_static/assets/high-contrast.png +0 -0
  334. iamai-0.2.2a1.dev2/docs/_static/assets/routing.png +0 -0
  335. iamai-0.2.2a1.dev2/docs/_static/assets/routing@1x.png +0 -0
  336. iamai-0.2.2a1.dev2/docs/_static/assets/search-dark.mp4 +0 -0
  337. iamai-0.2.2a1.dev2/docs/_static/assets/search.mp4 +0 -0
  338. iamai-0.2.2a1.dev2/docs/_static/assets/syntax-highlighting.svg +0 -1
  339. iamai-0.2.2a1.dev2/docs/_static/demo.png +0 -0
  340. iamai-0.2.2a1.dev2/docs/_static/favicon-dark.png +0 -0
  341. iamai-0.2.2a1.dev2/docs/_static/favicon-dark.svg +0 -39
  342. iamai-0.2.2a1.dev2/docs/_static/favicon.png +0 -0
  343. iamai-0.2.2a1.dev2/docs/_static/favicon.svg +0 -39
  344. iamai-0.2.2a1.dev2/docs/_static/icons/android-chrome-192x192.png +0 -0
  345. iamai-0.2.2a1.dev2/docs/_static/icons/android-chrome-512x512.png +0 -0
  346. iamai-0.2.2a1.dev2/docs/_static/icons/apple-touch-icon.png +0 -0
  347. iamai-0.2.2a1.dev2/docs/_static/icons/favicon-16x16.png +0 -0
  348. iamai-0.2.2a1.dev2/docs/_static/icons/favicon-32x32.png +0 -0
  349. iamai-0.2.2a1.dev2/docs/_static/icons/favicon.ico +0 -0
  350. iamai-0.2.2a1.dev2/docs/_static/icons/logo.png +0 -0
  351. iamai-0.2.2a1.dev2/docs/_static/icons/mstile-150x150.png +0 -0
  352. iamai-0.2.2a1.dev2/docs/_static/icons/retroOG-ICON4.svg +0 -1
  353. iamai-0.2.2a1.dev2/docs/_static/icons/retro_plus.png +0 -0
  354. iamai-0.2.2a1.dev2/docs/_static/icons/safari-pinned-tab.svg +0 -94
  355. iamai-0.2.2a1.dev2/docs/_static/icons/site.webmanifest +0 -1
  356. iamai-0.2.2a1.dev2/docs/_static/kook-structures.drawio +0 -42
  357. iamai-0.2.2a1.dev2/docs/_static/logo.png +0 -0
  358. iamai-0.2.2a1.dev2/docs/_static/logo.svg +0 -1
  359. iamai-0.2.2a1.dev2/docs/_static/manifest.json +0 -20
  360. iamai-0.2.2a1.dev2/docs/_static/og.jpeg +0 -0
  361. iamai-0.2.2a1.dev2/docs/_static/retro.png +0 -0
  362. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/COPYING.po +0 -61
  363. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/changelog.po +0 -631
  364. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/credits.po +0 -1726
  365. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/index.po +0 -148
  366. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/adapters/cqhttp-adapter.po +0 -165
  367. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/adapters/dingtalk-adapter.po +0 -118
  368. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/adapters/mirai-adapter.po +0 -129
  369. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/advanced/hook-function.po +0 -95
  370. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/advanced/hot-reload.po +0 -109
  371. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/advanced/plugin-advanced.po +0 -93
  372. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/advanced/scheduler.po +0 -204
  373. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.apscheduler.config.po +0 -26
  374. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.apscheduler.event.po +0 -26
  375. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.apscheduler.po +0 -36
  376. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.bililive.config.po +0 -26
  377. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.bililive.event.po +0 -26
  378. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.bililive.exceptions.po +0 -26
  379. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.bililive.message.po +0 -26
  380. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.bililive.po +0 -36
  381. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.bililive.tests.po +0 -26
  382. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.console.config.po +0 -50
  383. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.console.event.po +0 -26
  384. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.console.message.po +0 -67
  385. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.console.po +0 -36
  386. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.cqhttp.config.po +0 -26
  387. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.cqhttp.event.po +0 -26
  388. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.cqhttp.exceptions.po +0 -26
  389. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.cqhttp.message.po +0 -26
  390. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.cqhttp.po +0 -36
  391. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.dingtalk.config.po +0 -74
  392. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.dingtalk.event.po +0 -104
  393. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.dingtalk.exceptions.po +0 -44
  394. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.dingtalk.message.po +0 -95
  395. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.dingtalk.po +0 -159
  396. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.gensokyo.config.po +0 -83
  397. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.gensokyo.event.po +0 -205
  398. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.gensokyo.exceptions.po +0 -53
  399. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.gensokyo.message.po +0 -167
  400. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.gensokyo.po +0 -213
  401. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.api.client.po +0 -29
  402. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.api.handle.po +0 -26
  403. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.api.model.po +0 -482
  404. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.api.po +0 -36
  405. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.config.po +0 -86
  406. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.event.po +0 -572
  407. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.exceptions.po +0 -65
  408. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.message.po +0 -79
  409. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.kook.po +0 -161
  410. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.onebot11.config.po +0 -110
  411. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.onebot11.event.po +0 -498
  412. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.onebot11.exceptions.po +0 -73
  413. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.onebot11.message.po +0 -258
  414. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.onebot11.po +0 -301
  415. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.po +0 -130
  416. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.red.config.po +0 -26
  417. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.red.event.po +0 -26
  418. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.red.po +0 -36
  419. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.adapter.utils.po +0 -98
  420. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.bot.po +0 -252
  421. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.cli.po +0 -25
  422. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.config.po +0 -112
  423. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.const.po +0 -25
  424. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.dependencies.po +0 -50
  425. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.event.po +0 -141
  426. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.exceptions.po +0 -68
  427. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.libcore.po +0 -25
  428. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.log.po +0 -34
  429. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.message.po +0 -231
  430. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.models.BM25.config.po +0 -26
  431. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.models.BM25.po +0 -39
  432. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.models.po +0 -33
  433. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.plugin.po +0 -106
  434. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.po +0 -499
  435. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.typing.po +0 -31
  436. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/iamai.utils.po +0 -223
  437. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/api/index.po +0 -25
  438. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/basic/basic-config.po +0 -140
  439. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/basic/builtin-message.po +0 -134
  440. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/basic/plugin-basics.po +0 -321
  441. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/blog/iamai-v3.po +0 -37
  442. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/blog/index.po +0 -26
  443. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/community/assets-library.po +0 -26
  444. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/credits.po +0 -1307
  445. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/development/contributing.po +0 -29
  446. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/introduction.po +0 -95
  447. iamai-0.2.2a1.dev2/docs/locales/zh_CN/LC_MESSAGES/pages/starting/getting-started.po +0 -278
  448. iamai-0.2.2a1.dev2/docs/requirements.txt +0 -9
  449. iamai-0.2.2a1.dev2/docs/source/COPYING.rst +0 -6
  450. iamai-0.2.2a1.dev2/docs/source/changelog.md +0 -2
  451. iamai-0.2.2a1.dev2/docs/source/conf.py +0 -119
  452. iamai-0.2.2a1.dev2/docs/source/credits.md +0 -4585
  453. iamai-0.2.2a1.dev2/docs/source/index.rst +0 -62
  454. iamai-0.2.2a1.dev2/docs/source/pages/adapters/cqhttp-adapter.md +0 -112
  455. iamai-0.2.2a1.dev2/docs/source/pages/adapters/dingtalk-adapter.md +0 -48
  456. iamai-0.2.2a1.dev2/docs/source/pages/adapters/mirai-adapter.md +0 -136
  457. iamai-0.2.2a1.dev2/docs/source/pages/advanced/hook-function.md +0 -92
  458. iamai-0.2.2a1.dev2/docs/source/pages/advanced/hot-reload.md +0 -55
  459. iamai-0.2.2a1.dev2/docs/source/pages/advanced/plugin-advanced.md +0 -37
  460. iamai-0.2.2a1.dev2/docs/source/pages/advanced/scheduler.md +0 -247
  461. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.apscheduler.config.rst +0 -7
  462. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.apscheduler.event.rst +0 -7
  463. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.apscheduler.rst +0 -19
  464. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.bililive.config.rst +0 -7
  465. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.bililive.event.rst +0 -7
  466. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.bililive.exceptions.rst +0 -7
  467. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.bililive.message.rst +0 -7
  468. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.bililive.rst +0 -22
  469. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.bililive.tests.rst +0 -7
  470. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.console.config.rst +0 -7
  471. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.console.event.rst +0 -7
  472. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.console.message.rst +0 -7
  473. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.console.rst +0 -20
  474. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.cqhttp.config.rst +0 -7
  475. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.cqhttp.event.rst +0 -7
  476. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.cqhttp.exceptions.rst +0 -7
  477. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.cqhttp.message.rst +0 -7
  478. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.cqhttp.rst +0 -21
  479. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.dingtalk.config.rst +0 -7
  480. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.dingtalk.event.rst +0 -7
  481. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.dingtalk.exceptions.rst +0 -7
  482. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.dingtalk.message.rst +0 -7
  483. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.dingtalk.rst +0 -21
  484. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.gensokyo.config.rst +0 -7
  485. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.gensokyo.event.rst +0 -7
  486. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.gensokyo.exceptions.rst +0 -7
  487. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.gensokyo.message.rst +0 -7
  488. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.gensokyo.rst +0 -21
  489. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.api.client.rst +0 -7
  490. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.api.handle.rst +0 -7
  491. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.api.model.rst +0 -7
  492. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.api.rst +0 -20
  493. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.config.rst +0 -7
  494. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.event.rst +0 -7
  495. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.exceptions.rst +0 -7
  496. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.message.rst +0 -7
  497. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.kook.rst +0 -29
  498. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.red.config.rst +0 -7
  499. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.red.event.rst +0 -7
  500. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.red.rst +0 -19
  501. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.rst +0 -33
  502. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.adapter.utils.rst +0 -7
  503. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.bot.rst +0 -7
  504. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.cli.rst +0 -7
  505. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.config.rst +0 -7
  506. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.const.rst +0 -7
  507. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.dependencies.rst +0 -7
  508. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.event.rst +0 -7
  509. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.exceptions.rst +0 -7
  510. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.i18n.rst +0 -7
  511. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.log.rst +0 -7
  512. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.message.rst +0 -7
  513. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.model.BM25.config.rst +0 -7
  514. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.model.BM25.rst +0 -18
  515. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.model.rst +0 -18
  516. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.plugin.rst +0 -7
  517. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.rst +0 -39
  518. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.typing.rst +0 -7
  519. iamai-0.2.2a1.dev2/docs/source/pages/api/iamai.utils.rst +0 -7
  520. iamai-0.2.2a1.dev2/docs/source/pages/api/index.rst +0 -7
  521. iamai-0.2.2a1.dev2/docs/source/pages/basic/basic-config.md +0 -115
  522. iamai-0.2.2a1.dev2/docs/source/pages/basic/builtin-message.md +0 -96
  523. iamai-0.2.2a1.dev2/docs/source/pages/basic/plugin-basics.md +0 -241
  524. iamai-0.2.2a1.dev2/docs/source/pages/blog/iamai-v3.rst +0 -10
  525. iamai-0.2.2a1.dev2/docs/source/pages/blog/index.rst +0 -2
  526. iamai-0.2.2a1.dev2/docs/source/pages/community/assets-library.rst +0 -2
  527. iamai-0.2.2a1.dev2/docs/source/pages/dev-api/.gitkeep +0 -0
  528. iamai-0.2.2a1.dev2/docs/source/pages/development/contributing.rst +0 -1
  529. iamai-0.2.2a1.dev2/docs/source/pages/starting/getting-started.rst +0 -128
  530. iamai-0.2.2a1.dev2/examples/basic_example/config.toml +0 -21
  531. iamai-0.2.2a1.dev2/examples/basic_example/main.py +0 -105
  532. iamai-0.2.2a1.dev2/examples/basic_example/plugins/__init__.py +0 -1
  533. iamai-0.2.2a1.dev2/examples/bottle_example/config.toml +0 -25
  534. iamai-0.2.2a1.dev2/examples/bottle_example/main.py +0 -77
  535. iamai-0.2.2a1.dev2/examples/bottle_example/plugins/__init__.py +0 -1
  536. iamai-0.2.2a1.dev2/examples/bottle_example/plugins/bottle.py +0 -64
  537. iamai-0.2.2a1.dev2/noxfile.py +0 -17
  538. iamai-0.2.2a1.dev2/pyproject.toml +0 -174
  539. iamai-0.2.2a1.dev2/src/iamai/__init__.py +0 -56
  540. iamai-0.2.2a1.dev2/src/iamai/bot.py +0 -324
  541. iamai-0.2.2a1.dev2/src/iamai/config.py +0 -189
  542. iamai-0.2.2a1.dev2/src/iamai/event.py +0 -100
  543. iamai-0.2.2a1.dev2/src/iamai/logger.py +0 -51
  544. iamai-0.2.2a1.dev2/src/iamai/message.py +0 -162
  545. iamai-0.2.2a1.dev2/src/iamai/middleware/__init__.py +0 -134
  546. iamai-0.2.2a1.dev2/src/iamai/middleware/console.py +0 -207
  547. iamai-0.2.2a1.dev2/src/iamai/middleware/websockets.py +0 -218
  548. iamai-0.2.2a1.dev2/src/iamai/plugin.py +0 -242
  549. iamai-0.2.2a1.dev2/src/iamai/rule.py +0 -264
  550. iamai-0.2.2a1.dev2/src/iamai/typing.py +0 -120
  551. iamai-0.2.2a1.dev2/src/lib.rs +0 -68
  552. iamai-0.2.2a1.dev2/tests/test_minimal.py +0 -82
  553. iamai-0.2.2a1.dev2/tests/test_textual_ui.py +0 -124
  554. iamai-0.2.2a1.dev2/uv.lock +0 -2224
@@ -0,0 +1,102 @@
1
+ name: Bug report
2
+ description: Report a reproducible defect in the iamai runtime, CLI, adapters, or packaging.
3
+ title: "[Bug] "
4
+ labels:
5
+ - bug
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Please provide a minimal reproduction. Questions and usage help belong in GitHub Discussions.
11
+
12
+ - type: input
13
+ id: version
14
+ attributes:
15
+ label: iamai version or commit
16
+ description: Paste the installed version or full commit SHA.
17
+ placeholder: 0.3.0 or 87ba55b4a1e05c8d158f1f9b43cbf7b1afdcd2f0
18
+ validations:
19
+ required: true
20
+
21
+ - type: dropdown
22
+ id: surface
23
+ attributes:
24
+ label: Affected surface
25
+ options:
26
+ - Runtime lifecycle
27
+ - Event or message model
28
+ - Plugin or adapter lifecycle
29
+ - State backend
30
+ - CLI or configuration
31
+ - Python packaging
32
+ - Rust core
33
+ - Documentation or examples
34
+ - Other
35
+ validations:
36
+ required: true
37
+
38
+ - type: textarea
39
+ id: reproduction
40
+ attributes:
41
+ label: Minimal reproduction
42
+ description: Include the smallest code or repository that reproduces the problem.
43
+ render: python
44
+ validations:
45
+ required: true
46
+
47
+ - type: textarea
48
+ id: steps
49
+ attributes:
50
+ label: Steps to reproduce
51
+ placeholder: |
52
+ 1. Install ...
53
+ 2. Run ...
54
+ 3. Observe ...
55
+ validations:
56
+ required: true
57
+
58
+ - type: textarea
59
+ id: expected
60
+ attributes:
61
+ label: Expected behavior
62
+ validations:
63
+ required: true
64
+
65
+ - type: textarea
66
+ id: actual
67
+ attributes:
68
+ label: Actual behavior and logs
69
+ description: Remove tokens, credentials, and private endpoints before posting.
70
+ render: shell
71
+ validations:
72
+ required: true
73
+
74
+ - type: textarea
75
+ id: environment
76
+ attributes:
77
+ label: Environment
78
+ placeholder: |
79
+ OS: macOS 15.5
80
+ Python: 3.12.4
81
+ Rust: 1.xx
82
+ Installer: uv 0.x
83
+ validations:
84
+ required: true
85
+
86
+ - type: textarea
87
+ id: regression
88
+ attributes:
89
+ label: Regression information
90
+ description: State the last known working version, or write "unknown".
91
+ validations:
92
+ required: true
93
+
94
+ - type: checkboxes
95
+ id: confirmations
96
+ attributes:
97
+ label: Confirmations
98
+ options:
99
+ - label: I searched existing issues and Discussions for duplicates.
100
+ required: true
101
+ - label: The reproduction and logs contain no secrets or private data.
102
+ required: true
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Questions and design discussions
4
+ url: https://github.com/retrofor/iamai/discussions
5
+ about: Ask usage questions or discuss ideas before proposing a core change.
6
+ - name: Security vulnerability
7
+ url: https://github.com/retrofor/iamai/security/advisories/new
8
+ about: Report vulnerabilities privately instead of opening a public issue.
@@ -0,0 +1,104 @@
1
+ name: Ecosystem submission
2
+ description: Publish an iamai plugin, adapter, ruleset, tool, template, or other ecosystem entry.
3
+ title: "[Ecosystem] "
4
+ labels:
5
+ - ecosystem-submission
6
+ - triage
7
+ body:
8
+ - type: markdown
9
+ attributes:
10
+ value: |
11
+ Thanks for publishing an iamai ecosystem entry. Maintainers will validate the package or repository before adding it to the public registry.
12
+ - type: dropdown
13
+ id: extension_type
14
+ attributes:
15
+ label: Extension type
16
+ options:
17
+ - plugin
18
+ - adapter
19
+ - ruleset
20
+ - permission
21
+ - state_backend
22
+ - agent_tool
23
+ - agent_skill
24
+ - middleware
25
+ - template
26
+ - example
27
+ - provider
28
+ - theme
29
+ validations:
30
+ required: true
31
+ - type: input
32
+ id: entry_id
33
+ attributes:
34
+ label: Registry entry id
35
+ description: Use a stable lowercase id such as plugin.echo or adapter.acme.
36
+ placeholder: plugin.echo
37
+ validations:
38
+ required: true
39
+ - type: input
40
+ id: display_name
41
+ attributes:
42
+ label: Display name
43
+ placeholder: Echo Plugin
44
+ validations:
45
+ required: true
46
+ - type: textarea
47
+ id: summary
48
+ attributes:
49
+ label: Summary
50
+ description: One sentence, 180 characters or fewer.
51
+ placeholder: Echo command plugin for local testing.
52
+ validations:
53
+ required: true
54
+ - type: input
55
+ id: package_name
56
+ attributes:
57
+ label: Python package
58
+ description: Required unless this entry is repository-only.
59
+ placeholder: iamai-plugin-echo
60
+ - type: input
61
+ id: repository_url
62
+ attributes:
63
+ label: Repository URL
64
+ description: Required unless this entry is package-only.
65
+ placeholder: https://github.com/you/iamai-plugin-echo
66
+ - type: textarea
67
+ id: runtime_capabilities
68
+ attributes:
69
+ label: Runtime capabilities
70
+ description: Comma or newline separated capabilities such as network:http, storage:sqlite, agent:tool, approval:required.
71
+ placeholder: network:http, storage:sqlite
72
+ - type: textarea
73
+ id: security_notes
74
+ attributes:
75
+ label: Security statement
76
+ description: Declare network access, credentials, dangerous actions, optional dependencies, or review notes.
77
+ placeholder: Requires outbound HTTPS and an API token stored in adapter config.
78
+ - type: textarea
79
+ id: permission_notes
80
+ attributes:
81
+ label: Permission notes
82
+ description: For Agent tools, declare permission name, input schema, audit fields, and whether human approval is required.
83
+ placeholder: permission=web.search; audit_fields=query,provider; approval=false
84
+ - type: textarea
85
+ id: registry_json
86
+ attributes:
87
+ label: Candidate registry JSON
88
+ description: Paste or keep the JSON generated by the documentation submission form.
89
+ render: json
90
+ validations:
91
+ required: true
92
+ - type: checkboxes
93
+ id: confirmations
94
+ attributes:
95
+ label: Confirmations
96
+ options:
97
+ - label: The package or repository is public and reachable.
98
+ required: true
99
+ - label: This submission contains no secrets, private endpoints, or unsafe install steps.
100
+ required: true
101
+ - label: I declared network access, credential needs, dangerous actions, and Agent tool permissions where applicable.
102
+ required: true
103
+ - label: I understand verification badges are assigned by iamai maintainers after review.
104
+ required: true
@@ -0,0 +1,84 @@
1
+ name: Feature request
2
+ description: Propose a scoped, testable change to the iamai core or ecosystem contract.
3
+ title: "[Feature] "
4
+ labels:
5
+ - enhancement
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ iamai keeps the core focused on a safe, testable runtime. Platform integrations and model-specific capabilities normally belong in external packages.
11
+
12
+ - type: textarea
13
+ id: problem
14
+ attributes:
15
+ label: Problem and user scenario
16
+ description: Describe the concrete workflow that is blocked today.
17
+ validations:
18
+ required: true
19
+
20
+ - type: dropdown
21
+ id: ownership
22
+ attributes:
23
+ label: Proposed ownership boundary
24
+ options:
25
+ - Core runtime or public API
26
+ - Official adapter or plugin
27
+ - External ecosystem package
28
+ - Documentation or example
29
+ - Unsure
30
+ validations:
31
+ required: true
32
+
33
+ - type: textarea
34
+ id: proposal
35
+ attributes:
36
+ label: Proposed change
37
+ description: Define the smallest behavior or contract that solves the scenario.
38
+ validations:
39
+ required: true
40
+
41
+ - type: textarea
42
+ id: alternatives
43
+ attributes:
44
+ label: Alternatives considered
45
+ description: Include existing plugins, adapters, or composition options you evaluated.
46
+ validations:
47
+ required: true
48
+
49
+ - type: textarea
50
+ id: compatibility
51
+ attributes:
52
+ label: Compatibility impact
53
+ description: Note public API, serialization, lifecycle, schema, packaging, or migration effects.
54
+ validations:
55
+ required: true
56
+
57
+ - type: textarea
58
+ id: acceptance
59
+ attributes:
60
+ label: Acceptance criteria
61
+ placeholder: |
62
+ - [ ] Observable behavior is defined.
63
+ - [ ] Backward compatibility is preserved or migration is documented.
64
+ - [ ] Tests cover the new contract.
65
+ validations:
66
+ required: true
67
+
68
+ - type: textarea
69
+ id: test_plan
70
+ attributes:
71
+ label: Test plan
72
+ description: Identify the unit, integration, conformance, or packaging checks that prove completion.
73
+ validations:
74
+ required: true
75
+
76
+ - type: checkboxes
77
+ id: confirmations
78
+ attributes:
79
+ label: Confirmations
80
+ options:
81
+ - label: I searched existing issues, the roadmap, and Discussions for duplicates.
82
+ required: true
83
+ - label: I have identified whether this belongs in core or the external ecosystem.
84
+ required: true
@@ -0,0 +1,62 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: "uv"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "weekly"
8
+ day: "monday"
9
+ time: "09:00"
10
+ timezone: "Asia/Shanghai"
11
+ open-pull-requests-limit: 5
12
+ labels:
13
+ - "dependencies"
14
+ - "python:uv"
15
+ commit-message:
16
+ prefix: "deps(python)"
17
+ groups:
18
+ python-minor-and-patch:
19
+ patterns:
20
+ - "*"
21
+ update-types:
22
+ - "minor"
23
+ - "patch"
24
+
25
+ - package-ecosystem: "cargo"
26
+ directory: "/"
27
+ schedule:
28
+ interval: "weekly"
29
+ day: "monday"
30
+ time: "09:10"
31
+ timezone: "Asia/Shanghai"
32
+ open-pull-requests-limit: 5
33
+ labels:
34
+ - "dependencies"
35
+ - "rust"
36
+ commit-message:
37
+ prefix: "deps(rust)"
38
+ groups:
39
+ rust-minor-and-patch:
40
+ patterns:
41
+ - "*"
42
+ update-types:
43
+ - "minor"
44
+ - "patch"
45
+
46
+ - package-ecosystem: "github-actions"
47
+ directory: "/"
48
+ schedule:
49
+ interval: "weekly"
50
+ day: "monday"
51
+ time: "09:20"
52
+ timezone: "Asia/Shanghai"
53
+ open-pull-requests-limit: 5
54
+ labels:
55
+ - "dependencies"
56
+ - "github_actions"
57
+ commit-message:
58
+ prefix: "deps(actions)"
59
+ groups:
60
+ github-actions:
61
+ patterns:
62
+ - "*"
@@ -0,0 +1,110 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - dev
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ lint-and-rust:
19
+ name: Lint / Rust / Config
20
+ runs-on: ubuntu-24.04
21
+ steps:
22
+ - name: Check out repository
23
+ uses: actions/checkout@v6
24
+
25
+ - name: Set up Python
26
+ uses: actions/setup-python@v6
27
+ with:
28
+ python-version: "3.12"
29
+
30
+ - name: Set up uv
31
+ uses: astral-sh/setup-uv@v8.3.2
32
+ with:
33
+ enable-cache: true
34
+ cache-local-path: .uv-cache
35
+
36
+ - name: Set up Rust
37
+ uses: dtolnay/rust-toolchain@stable
38
+
39
+ - name: Sync development dependencies
40
+ run: uv sync --locked --all-packages --group dev
41
+
42
+ - name: Run Ruff
43
+ run: uv run ruff check .
44
+
45
+ - name: Run Mypy
46
+ run: uv run python -m mypy
47
+
48
+ - name: Run Rust tests
49
+ run: cargo test --no-default-features
50
+
51
+ - name: Validate example configs
52
+ run: bash scripts/check_example_configs.sh
53
+
54
+ test:
55
+ name: Pytest (Python ${{ matrix.python-version }})
56
+ runs-on: ubuntu-24.04
57
+ strategy:
58
+ fail-fast: false
59
+ matrix:
60
+ python-version: ["3.11", "3.12", "3.13"]
61
+ steps:
62
+ - name: Check out repository
63
+ uses: actions/checkout@v6
64
+
65
+ - name: Set up Python
66
+ uses: actions/setup-python@v6
67
+ with:
68
+ python-version: ${{ matrix.python-version }}
69
+
70
+ - name: Set up uv
71
+ uses: astral-sh/setup-uv@v8.3.2
72
+ with:
73
+ enable-cache: true
74
+ cache-local-path: .uv-cache
75
+
76
+ - name: Set up Rust
77
+ uses: dtolnay/rust-toolchain@stable
78
+
79
+ - name: Sync test dependencies
80
+ run: uv sync --locked --all-packages --group dev --group docs
81
+
82
+ - name: Run pytest
83
+ run: uv run pytest
84
+
85
+ docs:
86
+ name: Docs
87
+ runs-on: ubuntu-24.04
88
+ steps:
89
+ - name: Check out repository
90
+ uses: actions/checkout@v6
91
+
92
+ - name: Set up Python
93
+ uses: actions/setup-python@v6
94
+ with:
95
+ python-version: "3.12"
96
+
97
+ - name: Set up uv
98
+ uses: astral-sh/setup-uv@v8.3.2
99
+ with:
100
+ enable-cache: true
101
+ cache-local-path: .uv-cache
102
+
103
+ - name: Set up Rust
104
+ uses: dtolnay/rust-toolchain@stable
105
+
106
+ - name: Sync documentation dependencies
107
+ run: uv sync --locked --group dev --group docs
108
+
109
+ - name: Build Sphinx docs
110
+ run: uv run sphinx-build -W --keep-going -b html docs docs/_build/html
@@ -0,0 +1,229 @@
1
+ ---
2
+ # This file is autogenerated by maturin v1.13.1
3
+ # To update, run
4
+ #
5
+ # maturin generate-ci github -o CI.yml
6
+ #
7
+ name: release
8
+ on:
9
+ push:
10
+ tags: ['v*']
11
+ workflow_dispatch:
12
+ permissions:
13
+ contents: read
14
+ jobs:
15
+ validate:
16
+ name: Validate release source
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v6
20
+ - uses: actions/setup-python@v6
21
+ with:
22
+ python-version: 3.12
23
+ - uses: astral-sh/setup-uv@v8.3.2
24
+ - uses: dtolnay/rust-toolchain@stable
25
+ - name: Sync workspace dependencies
26
+ run: uv sync --locked --all-packages --group dev --group docs
27
+ - name: Verify tag matches package version
28
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
29
+ run: |
30
+ package_version="$(uv run python -c 'import tomllib; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"])')"
31
+ test "$GITHUB_REF_NAME" = "v$package_version"
32
+ - name: Run Python checks
33
+ run: |
34
+ uv run ruff check .
35
+ uv run mypy
36
+ uv run pytest
37
+ - name: Run Rust tests
38
+ run: cargo test --no-default-features
39
+ - name: Validate example configurations
40
+ run: bash scripts/check_example_configs.sh
41
+ linux:
42
+ needs: validate
43
+ runs-on: ${{ matrix.platform.runner }}
44
+ strategy:
45
+ matrix:
46
+ platform:
47
+ - runner: ubuntu-22.04
48
+ target: x86_64
49
+ - runner: ubuntu-22.04
50
+ target: x86
51
+ - runner: ubuntu-22.04
52
+ target: aarch64
53
+ - runner: ubuntu-22.04
54
+ target: armv7
55
+ - runner: ubuntu-22.04
56
+ target: s390x
57
+ - runner: ubuntu-22.04
58
+ target: ppc64le
59
+ steps:
60
+ - uses: actions/checkout@v6
61
+ - uses: actions/setup-python@v6
62
+ with:
63
+ python-version: 3.11
64
+ - name: Build wheels
65
+ uses: PyO3/maturin-action@v1
66
+ with:
67
+ target: ${{ matrix.platform.target }}
68
+ args: --release --out dist --find-interpreter
69
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
70
+ manylinux: auto
71
+ - name: Upload wheels
72
+ uses: actions/upload-artifact@v6
73
+ with:
74
+ name: wheels-linux-${{ matrix.platform.target }}
75
+ path: dist
76
+ musllinux:
77
+ needs: validate
78
+ runs-on: ${{ matrix.platform.runner }}
79
+ strategy:
80
+ matrix:
81
+ platform:
82
+ - runner: ubuntu-22.04
83
+ target: x86_64
84
+ - runner: ubuntu-22.04
85
+ target: x86
86
+ - runner: ubuntu-22.04
87
+ target: aarch64
88
+ - runner: ubuntu-22.04
89
+ target: armv7
90
+ steps:
91
+ - uses: actions/checkout@v6
92
+ - uses: actions/setup-python@v6
93
+ with:
94
+ python-version: 3.11
95
+ - name: Build wheels
96
+ uses: PyO3/maturin-action@v1
97
+ with:
98
+ target: ${{ matrix.platform.target }}
99
+ args: --release --out dist --find-interpreter
100
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
101
+ manylinux: musllinux_1_2
102
+ - name: Upload wheels
103
+ uses: actions/upload-artifact@v6
104
+ with:
105
+ name: wheels-musllinux-${{ matrix.platform.target }}
106
+ path: dist
107
+ windows:
108
+ needs: validate
109
+ runs-on: ${{ matrix.platform.runner }}
110
+ strategy:
111
+ matrix:
112
+ platform:
113
+ - runner: windows-latest
114
+ target: x64
115
+ python_arch: x64
116
+ - runner: windows-latest
117
+ target: x86
118
+ python_arch: x86
119
+ - runner: windows-11-arm
120
+ target: aarch64
121
+ python_arch: arm64
122
+ steps:
123
+ - uses: actions/checkout@v6
124
+ - uses: actions/setup-python@v6
125
+ with:
126
+ python-version: 3.13
127
+ architecture: ${{ matrix.platform.python_arch }}
128
+ - name: Build wheels
129
+ uses: PyO3/maturin-action@v1
130
+ with:
131
+ target: ${{ matrix.platform.target }}
132
+ args: --release --out dist --find-interpreter
133
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
134
+ - name: Upload wheels
135
+ uses: actions/upload-artifact@v6
136
+ with:
137
+ name: wheels-windows-${{ matrix.platform.target }}
138
+ path: dist
139
+ macos:
140
+ needs: validate
141
+ runs-on: ${{ matrix.platform.runner }}
142
+ strategy:
143
+ matrix:
144
+ platform:
145
+ - runner: macos-15-intel
146
+ target: x86_64
147
+ - runner: macos-latest
148
+ target: aarch64
149
+ steps:
150
+ - uses: actions/checkout@v6
151
+ - uses: actions/setup-python@v6
152
+ with:
153
+ python-version: 3.11
154
+ - name: Build wheels
155
+ uses: PyO3/maturin-action@v1
156
+ with:
157
+ target: ${{ matrix.platform.target }}
158
+ args: --release --out dist --find-interpreter
159
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
160
+ - name: Upload wheels
161
+ uses: actions/upload-artifact@v6
162
+ with:
163
+ name: wheels-macos-${{ matrix.platform.target }}
164
+ path: dist
165
+ sdist:
166
+ needs: validate
167
+ runs-on: ubuntu-latest
168
+ steps:
169
+ - uses: actions/checkout@v6
170
+ - name: Build sdist
171
+ uses: PyO3/maturin-action@v1
172
+ with:
173
+ command: sdist
174
+ args: --out dist
175
+ - name: Upload sdist
176
+ uses: actions/upload-artifact@v6
177
+ with:
178
+ name: wheels-sdist
179
+ path: dist
180
+ release:
181
+ name: Release
182
+ runs-on: ubuntu-latest
183
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
184
+ needs: [linux, musllinux, windows, macos, sdist]
185
+ permissions:
186
+ # Use to sign the release artifacts
187
+ id-token: write
188
+ # Used to upload release artifacts
189
+ contents: write
190
+ # Used to generate artifact attestation
191
+ attestations: write
192
+ steps:
193
+ - uses: actions/download-artifact@v7
194
+ - name: Generate artifact attestation
195
+ uses: actions/attest-build-provenance@v3
196
+ with:
197
+ subject-path: wheels-*/*
198
+ - name: Install uv
199
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
200
+ uses: astral-sh/setup-uv@v8.3.2
201
+ - name: Publish to PyPI
202
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
203
+ run: uv publish --check-url https://pypi.org/simple 'wheels-*/*'
204
+ env:
205
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN || secrets.PYPI_TOKEN }}
206
+ - name: Create draft GitHub release
207
+ id: github_release
208
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
209
+ env:
210
+ GH_TOKEN: ${{ github.token }}
211
+ run: |
212
+ if gh release view "$GITHUB_REF_NAME" >/dev/null 2>&1; then
213
+ if [[ "$(gh release view "$GITHUB_REF_NAME" --json isDraft --jq .isDraft)" == "false" ]]; then
214
+ echo "already_published=true" >> "$GITHUB_OUTPUT"
215
+ exit 0
216
+ fi
217
+ gh release upload "$GITHUB_REF_NAME" wheels-*/* --clobber
218
+ else
219
+ gh release create "$GITHUB_REF_NAME" wheels-*/* \
220
+ --draft \
221
+ --generate-notes \
222
+ --title "$GITHUB_REF_NAME" \
223
+ --verify-tag
224
+ fi
225
+ - name: Publish GitHub release
226
+ if: ${{ startsWith(github.ref, 'refs/tags/') && steps.github_release.outputs.already_published != 'true' }}
227
+ env:
228
+ GH_TOKEN: ${{ github.token }}
229
+ run: gh release edit "$GITHUB_REF_NAME" --draft=false