starweaver 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 (603) hide show
  1. starweaver-0.3.0/Cargo.toml +100 -0
  2. starweaver-0.3.0/PKG-INFO +121 -0
  3. starweaver-0.3.0/README.md +100 -0
  4. starweaver-0.3.0/crates/starweaver-agent/Cargo.toml +55 -0
  5. starweaver-0.3.0/crates/starweaver-agent/README.md +188 -0
  6. starweaver-0.3.0/crates/starweaver-agent/src/bundles/context_tools/args.rs +34 -0
  7. starweaver-0.3.0/crates/starweaver-agent/src/bundles/context_tools/context.rs +77 -0
  8. starweaver-0.3.0/crates/starweaver-agent/src/bundles/context_tools/mod.rs +167 -0
  9. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/args.rs +270 -0
  10. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/common.rs +35 -0
  11. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/context.rs +39 -0
  12. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/editing.rs +156 -0
  13. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/instructions.rs +260 -0
  14. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/media.rs +332 -0
  15. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/output.rs +155 -0
  16. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/paths.rs +142 -0
  17. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/reading.rs +71 -0
  18. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/search.rs +95 -0
  19. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/text.rs +239 -0
  20. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem.rs +32 -0
  21. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/handle.rs +260 -0
  22. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/mod.rs +18 -0
  23. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell.rs +495 -0
  24. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/execution.rs +357 -0
  25. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/parsing.rs +30 -0
  26. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/tests.rs +378 -0
  27. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types/handle.rs +89 -0
  28. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types/policy.rs +180 -0
  29. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types/request.rs +233 -0
  30. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types.rs +46 -0
  31. starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review.rs +17 -0
  32. starweaver-0.3.0/crates/starweaver-agent/src/bundles/helpers.rs +121 -0
  33. starweaver-0.3.0/crates/starweaver-agent/src/bundles/output.rs +155 -0
  34. starweaver-0.3.0/crates/starweaver-agent/src/bundles/runtime_context.rs +166 -0
  35. starweaver-0.3.0/crates/starweaver-agent/src/bundles/skills.rs +1170 -0
  36. starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/args.rs +55 -0
  37. starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/formatting.rs +85 -0
  38. starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/instructions.rs +65 -0
  39. starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/operations.rs +177 -0
  40. starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/tests.rs +142 -0
  41. starweaver-0.3.0/crates/starweaver-agent/src/bundles/task.rs +55 -0
  42. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/args.rs +38 -0
  43. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/download.rs +127 -0
  44. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/http.rs +204 -0
  45. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/media.rs +297 -0
  46. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/mod.rs +200 -0
  47. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/fetch_image.rs +89 -0
  48. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/html.rs +112 -0
  49. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/scrape_impl.rs +136 -0
  50. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/search_provider.rs +83 -0
  51. starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web.rs +470 -0
  52. starweaver-0.3.0/crates/starweaver-agent/src/bundles.rs +62 -0
  53. starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/constants.rs +52 -0
  54. starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/messages.rs +402 -0
  55. starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/request.rs +37 -0
  56. starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/settings.rs +95 -0
  57. starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/threshold.rs +24 -0
  58. starweaver-0.3.0/crates/starweaver-agent/src/filters/compact.rs +391 -0
  59. starweaver-0.3.0/crates/starweaver-agent/src/filters/media/capability.rs +288 -0
  60. starweaver-0.3.0/crates/starweaver-agent/src/filters/media/compression.rs +310 -0
  61. starweaver-0.3.0/crates/starweaver-agent/src/filters/media/policy.rs +51 -0
  62. starweaver-0.3.0/crates/starweaver-agent/src/filters/media/preflight.rs +275 -0
  63. starweaver-0.3.0/crates/starweaver-agent/src/filters/media/split.rs +111 -0
  64. starweaver-0.3.0/crates/starweaver-agent/src/filters/media/upload.rs +292 -0
  65. starweaver-0.3.0/crates/starweaver-agent/src/filters/media.rs +15 -0
  66. starweaver-0.3.0/crates/starweaver-agent/src/filters/message.rs +309 -0
  67. starweaver-0.3.0/crates/starweaver-agent/src/filters/named/capability.rs +133 -0
  68. starweaver-0.3.0/crates/starweaver-agent/src/filters/named/context_injection.rs +678 -0
  69. starweaver-0.3.0/crates/starweaver-agent/src/filters/named/ordering.rs +43 -0
  70. starweaver-0.3.0/crates/starweaver-agent/src/filters/named/reasoning.rs +64 -0
  71. starweaver-0.3.0/crates/starweaver-agent/src/filters/named/tool_args.rs +56 -0
  72. starweaver-0.3.0/crates/starweaver-agent/src/filters/named.rs +88 -0
  73. starweaver-0.3.0/crates/starweaver-agent/src/filters.rs +50 -0
  74. starweaver-0.3.0/crates/starweaver-agent/src/lib.rs +953 -0
  75. starweaver-0.3.0/crates/starweaver-agent/src/mcp_live.rs +409 -0
  76. starweaver-0.3.0/crates/starweaver-agent/src/mcp_rmcp.rs +294 -0
  77. starweaver-0.3.0/crates/starweaver-agent/src/media_compression.rs +305 -0
  78. starweaver-0.3.0/crates/starweaver-agent/src/presets/registry.rs +274 -0
  79. starweaver-0.3.0/crates/starweaver-agent/src/presets/spec.rs +960 -0
  80. starweaver-0.3.0/crates/starweaver-agent/src/presets/types/agent_spec.rs +171 -0
  81. starweaver-0.3.0/crates/starweaver-agent/src/presets/types/error.rs +87 -0
  82. starweaver-0.3.0/crates/starweaver-agent/src/presets/types/policy.rs +126 -0
  83. starweaver-0.3.0/crates/starweaver-agent/src/presets/types/resource.rs +125 -0
  84. starweaver-0.3.0/crates/starweaver-agent/src/presets/types.rs +77 -0
  85. starweaver-0.3.0/crates/starweaver-agent/src/presets.rs +21 -0
  86. starweaver-0.3.0/crates/starweaver-agent/src/runtime.rs +1245 -0
  87. starweaver-0.3.0/crates/starweaver-agent/src/session.rs +1522 -0
  88. starweaver-0.3.0/crates/starweaver-agent/src/streaming.rs +976 -0
  89. starweaver-0.3.0/crates/starweaver-agent/src/subagent/app.rs +248 -0
  90. starweaver-0.3.0/crates/starweaver-agent/src/subagent/config.rs +264 -0
  91. starweaver-0.3.0/crates/starweaver-agent/src/subagent/inheritance.rs +193 -0
  92. starweaver-0.3.0/crates/starweaver-agent/src/subagent/registry.rs +1288 -0
  93. starweaver-0.3.0/crates/starweaver-agent/src/subagent/task.rs +64 -0
  94. starweaver-0.3.0/crates/starweaver-agent/src/subagent.rs +23 -0
  95. starweaver-0.3.0/crates/starweaver-agent/src/subagent_config.rs +319 -0
  96. starweaver-0.3.0/crates/starweaver-agent/tests/agent_spec_profiles.rs +120 -0
  97. starweaver-0.3.0/crates/starweaver-agent/tests/agent_spec_v2.rs +222 -0
  98. starweaver-0.3.0/crates/starweaver-agent/tests/app_facade.rs +322 -0
  99. starweaver-0.3.0/crates/starweaver-agent/tests/builder.rs +1218 -0
  100. starweaver-0.3.0/crates/starweaver-agent/tests/bundles.rs +2458 -0
  101. starweaver-0.3.0/crates/starweaver-agent/tests/cost.rs +38 -0
  102. starweaver-0.3.0/crates/starweaver-agent/tests/coverage_acceptance.rs +380 -0
  103. starweaver-0.3.0/crates/starweaver-agent/tests/delegation_failure.rs +183 -0
  104. starweaver-0.3.0/crates/starweaver-agent/tests/delegation_tool.rs +654 -0
  105. starweaver-0.3.0/crates/starweaver-agent/tests/direct.rs +46 -0
  106. starweaver-0.3.0/crates/starweaver-agent/tests/fixtures/rmcp_stdio_server.rs +128 -0
  107. starweaver-0.3.0/crates/starweaver-agent/tests/history.rs +36 -0
  108. starweaver-0.3.0/crates/starweaver-agent/tests/iteration.rs +23 -0
  109. starweaver-0.3.0/crates/starweaver-agent/tests/live_mcp.rs +580 -0
  110. starweaver-0.3.0/crates/starweaver-agent/tests/mcp.rs +74 -0
  111. starweaver-0.3.0/crates/starweaver-agent/tests/output_policy.rs +109 -0
  112. starweaver-0.3.0/crates/starweaver-agent/tests/presets.rs +223 -0
  113. starweaver-0.3.0/crates/starweaver-agent/tests/process_shell.rs +78 -0
  114. starweaver-0.3.0/crates/starweaver-agent/tests/sdk_filter_order.rs +2415 -0
  115. starweaver-0.3.0/crates/starweaver-agent/tests/session.rs +2116 -0
  116. starweaver-0.3.0/crates/starweaver-agent/tests/session_options.rs +262 -0
  117. starweaver-0.3.0/crates/starweaver-agent/tests/skills.rs +478 -0
  118. starweaver-0.3.0/crates/starweaver-agent/tests/spec_selection.rs +718 -0
  119. starweaver-0.3.0/crates/starweaver-agent/tests/stream.rs +451 -0
  120. starweaver-0.3.0/crates/starweaver-agent/tests/subagent_config.rs +277 -0
  121. starweaver-0.3.0/crates/starweaver-agent/tests/subagent_inheritance.rs +276 -0
  122. starweaver-0.3.0/crates/starweaver-agent/tests/subagent_lifecycle.rs +138 -0
  123. starweaver-0.3.0/crates/starweaver-agent/tests/subagents.rs +293 -0
  124. starweaver-0.3.0/crates/starweaver-agent/tests/trace.rs +352 -0
  125. starweaver-0.3.0/crates/starweaver-context/Cargo.toml +25 -0
  126. starweaver-0.3.0/crates/starweaver-context/README.md +188 -0
  127. starweaver-0.3.0/crates/starweaver-context/src/agent_context.rs +992 -0
  128. starweaver-0.3.0/crates/starweaver-context/src/config/model.rs +210 -0
  129. starweaver-0.3.0/crates/starweaver-context/src/config/tool.rs +306 -0
  130. starweaver-0.3.0/crates/starweaver-context/src/config.rs +103 -0
  131. starweaver-0.3.0/crates/starweaver-context/src/context_handle.rs +65 -0
  132. starweaver-0.3.0/crates/starweaver-context/src/context_protocol.rs +249 -0
  133. starweaver-0.3.0/crates/starweaver-context/src/dependency.rs +100 -0
  134. starweaver-0.3.0/crates/starweaver-context/src/event.rs +79 -0
  135. starweaver-0.3.0/crates/starweaver-context/src/lib.rs +33 -0
  136. starweaver-0.3.0/crates/starweaver-context/src/message_bus.rs +349 -0
  137. starweaver-0.3.0/crates/starweaver-context/src/notes.rs +62 -0
  138. starweaver-0.3.0/crates/starweaver-context/src/resumable_state.rs +203 -0
  139. starweaver-0.3.0/crates/starweaver-context/src/runtime_context.rs +223 -0
  140. starweaver-0.3.0/crates/starweaver-context/src/state.rs +49 -0
  141. starweaver-0.3.0/crates/starweaver-context/src/task.rs +379 -0
  142. starweaver-0.3.0/crates/starweaver-context/tests/config.rs +117 -0
  143. starweaver-0.3.0/crates/starweaver-context/tests/context.rs +435 -0
  144. starweaver-0.3.0/crates/starweaver-context/tests/context_state.rs +357 -0
  145. starweaver-0.3.0/crates/starweaver-context/tests/notes.rs +126 -0
  146. starweaver-0.3.0/crates/starweaver-core/Cargo.toml +22 -0
  147. starweaver-0.3.0/crates/starweaver-core/README.md +188 -0
  148. starweaver-0.3.0/crates/starweaver-core/src/cancellation.rs +101 -0
  149. starweaver-0.3.0/crates/starweaver-core/src/ids.rs +176 -0
  150. starweaver-0.3.0/crates/starweaver-core/src/lib.rs +134 -0
  151. starweaver-0.3.0/crates/starweaver-core/src/subagent.rs +124 -0
  152. starweaver-0.3.0/crates/starweaver-core/src/trace.rs +121 -0
  153. starweaver-0.3.0/crates/starweaver-core/src/xml.rs +167 -0
  154. starweaver-0.3.0/crates/starweaver-envd-core/Cargo.toml +23 -0
  155. starweaver-0.3.0/crates/starweaver-envd-core/README.md +188 -0
  156. starweaver-0.3.0/crates/starweaver-envd-core/src/error.rs +74 -0
  157. starweaver-0.3.0/crates/starweaver-envd-core/src/lib.rs +40 -0
  158. starweaver-0.3.0/crates/starweaver-envd-core/src/request.rs +451 -0
  159. starweaver-0.3.0/crates/starweaver-envd-core/src/rpc.rs +119 -0
  160. starweaver-0.3.0/crates/starweaver-envd-core/src/service.rs +106 -0
  161. starweaver-0.3.0/crates/starweaver-envd-core/src/types.rs +217 -0
  162. starweaver-0.3.0/crates/starweaver-environment/Cargo.toml +33 -0
  163. starweaver-0.3.0/crates/starweaver-environment/README.md +188 -0
  164. starweaver-0.3.0/crates/starweaver-environment/src/composite_provider.rs +1014 -0
  165. starweaver-0.3.0/crates/starweaver-environment/src/context_xml.rs +106 -0
  166. starweaver-0.3.0/crates/starweaver-environment/src/envd_provider/convert.rs +109 -0
  167. starweaver-0.3.0/crates/starweaver-environment/src/envd_provider/mod.rs +507 -0
  168. starweaver-0.3.0/crates/starweaver-environment/src/error.rs +23 -0
  169. starweaver-0.3.0/crates/starweaver-environment/src/factory.rs +284 -0
  170. starweaver-0.3.0/crates/starweaver-environment/src/file_tree.rs +345 -0
  171. starweaver-0.3.0/crates/starweaver-environment/src/lib.rs +86 -0
  172. starweaver-0.3.0/crates/starweaver-environment/src/local_io.rs +70 -0
  173. starweaver-0.3.0/crates/starweaver-environment/src/local_provider/paths.rs +142 -0
  174. starweaver-0.3.0/crates/starweaver-environment/src/local_provider/process.rs +217 -0
  175. starweaver-0.3.0/crates/starweaver-environment/src/local_provider/temp.rs +47 -0
  176. starweaver-0.3.0/crates/starweaver-environment/src/local_provider.rs +687 -0
  177. starweaver-0.3.0/crates/starweaver-environment/src/path.rs +454 -0
  178. starweaver-0.3.0/crates/starweaver-environment/src/policy.rs +93 -0
  179. starweaver-0.3.0/crates/starweaver-environment/src/provider.rs +221 -0
  180. starweaver-0.3.0/crates/starweaver-environment/src/search.rs +188 -0
  181. starweaver-0.3.0/crates/starweaver-environment/src/shell.rs +249 -0
  182. starweaver-0.3.0/crates/starweaver-environment/src/switchable_provider.rs +275 -0
  183. starweaver-0.3.0/crates/starweaver-environment/src/tests.rs +1968 -0
  184. starweaver-0.3.0/crates/starweaver-environment/src/types.rs +241 -0
  185. starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider/impls.rs +656 -0
  186. starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider/process.rs +140 -0
  187. starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider/store.rs +124 -0
  188. starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider.rs +164 -0
  189. starweaver-0.3.0/crates/starweaver-model/Cargo.toml +35 -0
  190. starweaver-0.3.0/crates/starweaver-model/README.md +188 -0
  191. starweaver-0.3.0/crates/starweaver-model/src/adapter/context.rs +85 -0
  192. starweaver-0.3.0/crates/starweaver-model/src/adapter/error.rs +49 -0
  193. starweaver-0.3.0/crates/starweaver-model/src/adapter/guard.rs +47 -0
  194. starweaver-0.3.0/crates/starweaver-model/src/adapter/params.rs +110 -0
  195. starweaver-0.3.0/crates/starweaver-model/src/adapter/traits.rs +183 -0
  196. starweaver-0.3.0/crates/starweaver-model/src/adapter.rs +89 -0
  197. starweaver-0.3.0/crates/starweaver-model/src/lib.rs +81 -0
  198. starweaver-0.3.0/crates/starweaver-model/src/media/data_url.rs +39 -0
  199. starweaver-0.3.0/crates/starweaver-model/src/media/dimensions.rs +117 -0
  200. starweaver-0.3.0/crates/starweaver-model/src/media/policy.rs +51 -0
  201. starweaver-0.3.0/crates/starweaver-model/src/media/preflight.rs +162 -0
  202. starweaver-0.3.0/crates/starweaver-model/src/media/types.rs +139 -0
  203. starweaver-0.3.0/crates/starweaver-model/src/media.rs +13 -0
  204. starweaver-0.3.0/crates/starweaver-model/src/message/history.rs +138 -0
  205. starweaver-0.3.0/crates/starweaver-model/src/message/provider.rs +90 -0
  206. starweaver-0.3.0/crates/starweaver-model/src/message/request_parts.rs +187 -0
  207. starweaver-0.3.0/crates/starweaver-model/src/message/response_parts.rs +182 -0
  208. starweaver-0.3.0/crates/starweaver-model/src/message/tool.rs +281 -0
  209. starweaver-0.3.0/crates/starweaver-model/src/message.rs +18 -0
  210. starweaver-0.3.0/crates/starweaver-model/src/oauth/codex_model.rs +228 -0
  211. starweaver-0.3.0/crates/starweaver-model/src/oauth/headers.rs +218 -0
  212. starweaver-0.3.0/crates/starweaver-model/src/oauth/http_client.rs +343 -0
  213. starweaver-0.3.0/crates/starweaver-model/src/oauth.rs +15 -0
  214. starweaver-0.3.0/crates/starweaver-model/src/presets/config.rs +144 -0
  215. starweaver-0.3.0/crates/starweaver-model/src/presets/http.rs +121 -0
  216. starweaver-0.3.0/crates/starweaver-model/src/presets/registry.rs +182 -0
  217. starweaver-0.3.0/crates/starweaver-model/src/presets/settings.rs +404 -0
  218. starweaver-0.3.0/crates/starweaver-model/src/presets/tests.rs +189 -0
  219. starweaver-0.3.0/crates/starweaver-model/src/presets/types/config_preset.rs +59 -0
  220. starweaver-0.3.0/crates/starweaver-model/src/presets/types/data.rs +64 -0
  221. starweaver-0.3.0/crates/starweaver-model/src/presets/types/settings_preset.rs +390 -0
  222. starweaver-0.3.0/crates/starweaver-model/src/presets/types.rs +32 -0
  223. starweaver-0.3.0/crates/starweaver-model/src/presets.rs +107 -0
  224. starweaver-0.3.0/crates/starweaver-model/src/profile.rs +370 -0
  225. starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/content.rs +108 -0
  226. starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/request.rs +169 -0
  227. starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/response.rs +95 -0
  228. starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/settings.rs +167 -0
  229. starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/tests.rs +165 -0
  230. starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic.rs +43 -0
  231. starweaver-0.3.0/crates/starweaver-model/src/providers/bedrock.rs +503 -0
  232. starweaver-0.3.0/crates/starweaver-model/src/providers/client/adapter_impl.rs +1829 -0
  233. starweaver-0.3.0/crates/starweaver-model/src/providers/client/factory.rs +111 -0
  234. starweaver-0.3.0/crates/starweaver-model/src/providers/client/output_schema.rs +131 -0
  235. starweaver-0.3.0/crates/starweaver-model/src/providers/client/request_options.rs +203 -0
  236. starweaver-0.3.0/crates/starweaver-model/src/providers/client/wire.rs +126 -0
  237. starweaver-0.3.0/crates/starweaver-model/src/providers/client.rs +83 -0
  238. starweaver-0.3.0/crates/starweaver-model/src/providers/content.rs +176 -0
  239. starweaver-0.3.0/crates/starweaver-model/src/providers/gemini.rs +652 -0
  240. starweaver-0.3.0/crates/starweaver-model/src/providers/mod.rs +79 -0
  241. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_chat.rs +277 -0
  242. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_common.rs +63 -0
  243. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/instructions.rs +17 -0
  244. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/options.rs +35 -0
  245. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/replay_items.rs +293 -0
  246. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/server_state.rs +162 -0
  247. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/tools.rs +40 -0
  248. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request.rs +166 -0
  249. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/response.rs +260 -0
  250. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/stream/response_parts.rs +169 -0
  251. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/stream.rs +614 -0
  252. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/tests.rs +951 -0
  253. starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses.rs +96 -0
  254. starweaver-0.3.0/crates/starweaver-model/src/providers/settings.rs +99 -0
  255. starweaver-0.3.0/crates/starweaver-model/src/providers/system.rs +105 -0
  256. starweaver-0.3.0/crates/starweaver-model/src/providers/tests.rs +377 -0
  257. starweaver-0.3.0/crates/starweaver-model/src/providers/usage.rs +155 -0
  258. starweaver-0.3.0/crates/starweaver-model/src/registry.rs +139 -0
  259. starweaver-0.3.0/crates/starweaver-model/src/request/instructions.rs +185 -0
  260. starweaver-0.3.0/crates/starweaver-model/src/request/normalization.rs +196 -0
  261. starweaver-0.3.0/crates/starweaver-model/src/request/prepare.rs +406 -0
  262. starweaver-0.3.0/crates/starweaver-model/src/request/types.rs +75 -0
  263. starweaver-0.3.0/crates/starweaver-model/src/request.rs +18 -0
  264. starweaver-0.3.0/crates/starweaver-model/src/settings.rs +707 -0
  265. starweaver-0.3.0/crates/starweaver-model/src/stream.rs +219 -0
  266. starweaver-0.3.0/crates/starweaver-model/src/test/function_model.rs +225 -0
  267. starweaver-0.3.0/crates/starweaver-model/src/test/helpers.rs +64 -0
  268. starweaver-0.3.0/crates/starweaver-model/src/test/scripted.rs +212 -0
  269. starweaver-0.3.0/crates/starweaver-model/src/test.rs +11 -0
  270. starweaver-0.3.0/crates/starweaver-model/src/transport/audit.rs +322 -0
  271. starweaver-0.3.0/crates/starweaver-model/src/transport/client.rs +172 -0
  272. starweaver-0.3.0/crates/starweaver-model/src/transport/config.rs +270 -0
  273. starweaver-0.3.0/crates/starweaver-model/src/transport/reqwest_client.rs +244 -0
  274. starweaver-0.3.0/crates/starweaver-model/src/transport/retry.rs +447 -0
  275. starweaver-0.3.0/crates/starweaver-model/src/transport/sse.rs +128 -0
  276. starweaver-0.3.0/crates/starweaver-model/src/transport/types.rs +77 -0
  277. starweaver-0.3.0/crates/starweaver-model/src/transport/websocket.rs +1196 -0
  278. starweaver-0.3.0/crates/starweaver-model/src/transport.rs +30 -0
  279. starweaver-0.3.0/crates/starweaver-model/src/wrappers/concurrency.rs +222 -0
  280. starweaver-0.3.0/crates/starweaver-model/src/wrappers/fallback.rs +241 -0
  281. starweaver-0.3.0/crates/starweaver-model/src/wrappers/hooked.rs +427 -0
  282. starweaver-0.3.0/crates/starweaver-model/src/wrappers/profile_override.rs +127 -0
  283. starweaver-0.3.0/crates/starweaver-model/src/wrappers.rs +18 -0
  284. starweaver-0.3.0/crates/starweaver-model/tests/client.rs +610 -0
  285. starweaver-0.3.0/crates/starweaver-model/tests/coverage_core.rs +751 -0
  286. starweaver-0.3.0/crates/starweaver-model/tests/fixture_schema.rs +129 -0
  287. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/document_input.json +51 -0
  288. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/image_input.json +86 -0
  289. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/max_token_stop.json +78 -0
  290. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/provider_thinking_replay.json +94 -0
  291. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/safety_style_response.json +70 -0
  292. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/text_response.json +80 -0
  293. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/thinking_block.json +88 -0
  294. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/thinking_request.json +85 -0
  295. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_choice_parallel_policy.json +99 -0
  296. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_result_error_cache_control.json +80 -0
  297. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_return_history.json +165 -0
  298. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_use_response.json +122 -0
  299. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_use_with_text_preamble.json +120 -0
  300. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/additional_model_response_fields.json +103 -0
  301. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/content_block_variants.json +92 -0
  302. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/document_resource_input.json +46 -0
  303. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/max_token_stop.json +87 -0
  304. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/provider_status_error.json +72 -0
  305. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/sigv4_gateway_metadata.json +99 -0
  306. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/strict_tool_call.json +142 -0
  307. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/text_response.json +90 -0
  308. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/tool_result_error.json +82 -0
  309. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/tool_return_history.json +190 -0
  310. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/tool_use_response.json +140 -0
  311. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/typed_request_fields.json +82 -0
  312. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/audio_video_document_input.json +64 -0
  313. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/function_call_missing_id.json +127 -0
  314. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/generation_config_seed_topk.json +62 -0
  315. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/malformed_candidate.json +57 -0
  316. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/max_token_stop.json +80 -0
  317. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/multimodal_input.json +90 -0
  318. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/native_code_execution_request.json +79 -0
  319. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/native_google_search_request.json +79 -0
  320. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/safety_block.json +85 -0
  321. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/text_response.json +89 -0
  322. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/tool_config_function_calling_mode.json +142 -0
  323. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/tool_return_history.json +186 -0
  324. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/tool_use_response.json +137 -0
  325. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/content_filter_response.json +70 -0
  326. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/file_input.json +45 -0
  327. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/json_object_mode.json +85 -0
  328. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/malformed_choices.json +56 -0
  329. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/multimodal_user_input.json +90 -0
  330. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/parallel_tool_calls.json +116 -0
  331. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/prompt_cache_settings.json +46 -0
  332. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/refusal_response.json +76 -0
  333. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/text_response.json +137 -0
  334. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_call_response.json +151 -0
  335. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_auto.json +118 -0
  336. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_named_tool.json +124 -0
  337. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_none.json +118 -0
  338. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_required.json +118 -0
  339. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_return_history.json +196 -0
  340. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/conversation_auto_trim.json +73 -0
  341. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/file_image_output.json +83 -0
  342. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/file_input.json +43 -0
  343. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/multimodal_user_input.json +88 -0
  344. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_mcp_approval_response.json +89 -0
  345. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_mcp_request.json +37 -0
  346. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_web_search_request.json +85 -0
  347. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_web_search_response.json +94 -0
  348. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/previous_response_auto_trim.json +70 -0
  349. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/previous_response_compaction_boundary.json +77 -0
  350. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/prompt_cache_settings.json +48 -0
  351. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/provider_refusal.json +70 -0
  352. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/reasoning_item.json +95 -0
  353. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/status_error.json +75 -0
  354. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/structured_output_response.json +80 -0
  355. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/summary_item.json +99 -0
  356. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/text_response.json +86 -0
  357. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_auto.json +121 -0
  358. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_named_tool.json +125 -0
  359. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_none.json +121 -0
  360. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_required.json +121 -0
  361. starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_response.json +100 -0
  362. starweaver-0.3.0/crates/starweaver-model/tests/http_config.rs +172 -0
  363. starweaver-0.3.0/crates/starweaver-model/tests/media_preflight.rs +170 -0
  364. starweaver-0.3.0/crates/starweaver-model/tests/message_ast.rs +74 -0
  365. starweaver-0.3.0/crates/starweaver-model/tests/model_wrappers.rs +124 -0
  366. starweaver-0.3.0/crates/starweaver-model/tests/multimodal_mapping.rs +187 -0
  367. starweaver-0.3.0/crates/starweaver-model/tests/native_mcp.rs +34 -0
  368. starweaver-0.3.0/crates/starweaver-model/tests/native_tool_coverage.rs +182 -0
  369. starweaver-0.3.0/crates/starweaver-model/tests/oauth_provider.rs +634 -0
  370. starweaver-0.3.0/crates/starweaver-model/tests/protocol_agent_loop_mapping.rs +1593 -0
  371. starweaver-0.3.0/crates/starweaver-model/tests/protocol_client_agent_loop.rs +798 -0
  372. starweaver-0.3.0/crates/starweaver-model/tests/replay.rs +773 -0
  373. starweaver-0.3.0/crates/starweaver-model/tests/replay_tooling.rs +107 -0
  374. starweaver-0.3.0/crates/starweaver-model/tests/request_guard.rs +84 -0
  375. starweaver-0.3.0/crates/starweaver-model/tests/request_parameters.rs +2000 -0
  376. starweaver-0.3.0/crates/starweaver-model/tests/request_preparation.rs +495 -0
  377. starweaver-0.3.0/crates/starweaver-model/tests/stream_replay.rs +122 -0
  378. starweaver-0.3.0/crates/starweaver-model/tests/support/mod.rs +3 -0
  379. starweaver-0.3.0/crates/starweaver-model/tests/support/replay.rs +96 -0
  380. starweaver-0.3.0/crates/starweaver-model/tests/test_models.rs +214 -0
  381. starweaver-0.3.0/crates/starweaver-oauth/Cargo.toml +30 -0
  382. starweaver-0.3.0/crates/starweaver-oauth/README.md +188 -0
  383. starweaver-0.3.0/crates/starweaver-oauth/src/codex.rs +416 -0
  384. starweaver-0.3.0/crates/starweaver-oauth/src/error.rs +68 -0
  385. starweaver-0.3.0/crates/starweaver-oauth/src/jwt.rs +103 -0
  386. starweaver-0.3.0/crates/starweaver-oauth/src/lib.rs +57 -0
  387. starweaver-0.3.0/crates/starweaver-oauth/src/store.rs +217 -0
  388. starweaver-0.3.0/crates/starweaver-oauth/src/token_source.rs +80 -0
  389. starweaver-0.3.0/crates/starweaver-oauth/src/types.rs +198 -0
  390. starweaver-0.3.0/crates/starweaver-oauth/tests/oauth.rs +289 -0
  391. starweaver-0.3.0/crates/starweaver-oauth-provider/Cargo.toml +29 -0
  392. starweaver-0.3.0/crates/starweaver-oauth-provider/README.md +188 -0
  393. starweaver-0.3.0/crates/starweaver-oauth-provider/src/lib.rs +424 -0
  394. starweaver-0.3.0/crates/starweaver-oauth-provider/tests/refresh.rs +121 -0
  395. starweaver-0.3.0/crates/starweaver-runtime/Cargo.toml +32 -0
  396. starweaver-0.3.0/crates/starweaver-runtime/README.md +188 -0
  397. starweaver-0.3.0/crates/starweaver-runtime/src/agent/helpers.rs +126 -0
  398. starweaver-0.3.0/crates/starweaver-runtime/src/agent/overrides.rs +167 -0
  399. starweaver-0.3.0/crates/starweaver-runtime/src/agent/run_loop/entrypoints.rs +183 -0
  400. starweaver-0.3.0/crates/starweaver-runtime/src/agent/run_loop.rs +1694 -0
  401. starweaver-0.3.0/crates/starweaver-runtime/src/agent/run_loop_helpers.rs +161 -0
  402. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/capability_hooks.rs +173 -0
  403. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/checkpoint.rs +49 -0
  404. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/compact_context.rs +97 -0
  405. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/errors.rs +42 -0
  406. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/history_sanitize.rs +122 -0
  407. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/output_validation.rs +139 -0
  408. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/prepare_tools_safety.rs +67 -0
  409. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/previous_response.rs +136 -0
  410. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/request_building.rs +530 -0
  411. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/request_parts.rs +61 -0
  412. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/steering.rs +100 -0
  413. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/tool_media.rs +54 -0
  414. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/trace_events.rs +134 -0
  415. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/usage_limits.rs +99 -0
  416. starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers.rs +21 -0
  417. starweaver-0.3.0/crates/starweaver-runtime/src/agent/types.rs +319 -0
  418. starweaver-0.3.0/crates/starweaver-runtime/src/agent.rs +419 -0
  419. starweaver-0.3.0/crates/starweaver-runtime/src/capability/bundle.rs +254 -0
  420. starweaver-0.3.0/crates/starweaver-runtime/src/capability/error.rs +27 -0
  421. starweaver-0.3.0/crates/starweaver-runtime/src/capability/hooks.rs +344 -0
  422. starweaver-0.3.0/crates/starweaver-runtime/src/capability/ordering.rs +119 -0
  423. starweaver-0.3.0/crates/starweaver-runtime/src/capability/spec.rs +132 -0
  424. starweaver-0.3.0/crates/starweaver-runtime/src/capability.rs +16 -0
  425. starweaver-0.3.0/crates/starweaver-runtime/src/direct.rs +119 -0
  426. starweaver-0.3.0/crates/starweaver-runtime/src/executor.rs +240 -0
  427. starweaver-0.3.0/crates/starweaver-runtime/src/goal.rs +475 -0
  428. starweaver-0.3.0/crates/starweaver-runtime/src/graph.rs +246 -0
  429. starweaver-0.3.0/crates/starweaver-runtime/src/instructions.rs +63 -0
  430. starweaver-0.3.0/crates/starweaver-runtime/src/iteration.rs +177 -0
  431. starweaver-0.3.0/crates/starweaver-runtime/src/lib.rs +66 -0
  432. starweaver-0.3.0/crates/starweaver-runtime/src/output/function.rs +151 -0
  433. starweaver-0.3.0/crates/starweaver-runtime/src/output/policy.rs +219 -0
  434. starweaver-0.3.0/crates/starweaver-runtime/src/output/types.rs +227 -0
  435. starweaver-0.3.0/crates/starweaver-runtime/src/output/validation.rs +121 -0
  436. starweaver-0.3.0/crates/starweaver-runtime/src/output.rs +17 -0
  437. starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery/classify.rs +82 -0
  438. starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery/openai.rs +253 -0
  439. starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery/overflow.rs +195 -0
  440. starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery.rs +379 -0
  441. starweaver-0.3.0/crates/starweaver-runtime/src/run.rs +169 -0
  442. starweaver-0.3.0/crates/starweaver-runtime/src/stream.rs +471 -0
  443. starweaver-0.3.0/crates/starweaver-runtime/src/trace/memory.rs +122 -0
  444. starweaver-0.3.0/crates/starweaver-runtime/src/trace/otel.rs +102 -0
  445. starweaver-0.3.0/crates/starweaver-runtime/src/trace/policy.rs +334 -0
  446. starweaver-0.3.0/crates/starweaver-runtime/src/trace/recorder.rs +60 -0
  447. starweaver-0.3.0/crates/starweaver-runtime/src/trace/tests.rs +210 -0
  448. starweaver-0.3.0/crates/starweaver-runtime/src/trace/types.rs +205 -0
  449. starweaver-0.3.0/crates/starweaver-runtime/src/trace.rs +15 -0
  450. starweaver-0.3.0/crates/starweaver-runtime/tests/agent.rs +1094 -0
  451. starweaver-0.3.0/crates/starweaver-runtime/tests/agent_readiness.rs +143 -0
  452. starweaver-0.3.0/crates/starweaver-runtime/tests/capability_bundle.rs +203 -0
  453. starweaver-0.3.0/crates/starweaver-runtime/tests/context.rs +562 -0
  454. starweaver-0.3.0/crates/starweaver-runtime/tests/dependencies.rs +108 -0
  455. starweaver-0.3.0/crates/starweaver-runtime/tests/dependency_aware_capability.rs +103 -0
  456. starweaver-0.3.0/crates/starweaver-runtime/tests/direct.rs +118 -0
  457. starweaver-0.3.0/crates/starweaver-runtime/tests/dynamic_instructions.rs +68 -0
  458. starweaver-0.3.0/crates/starweaver-runtime/tests/executor.rs +189 -0
  459. starweaver-0.3.0/crates/starweaver-runtime/tests/graph.rs +161 -0
  460. starweaver-0.3.0/crates/starweaver-runtime/tests/iteration.rs +46 -0
  461. starweaver-0.3.0/crates/starweaver-runtime/tests/layering.rs +15 -0
  462. starweaver-0.3.0/crates/starweaver-runtime/tests/output_functions.rs +304 -0
  463. starweaver-0.3.0/crates/starweaver-runtime/tests/output_policy.rs +73 -0
  464. starweaver-0.3.0/crates/starweaver-runtime/tests/override.rs +60 -0
  465. starweaver-0.3.0/crates/starweaver-runtime/tests/prepare_tools.rs +67 -0
  466. starweaver-0.3.0/crates/starweaver-runtime/tests/request_pipeline.rs +701 -0
  467. starweaver-0.3.0/crates/starweaver-runtime/tests/session_affinity.rs +153 -0
  468. starweaver-0.3.0/crates/starweaver-runtime/tests/stream.rs +504 -0
  469. starweaver-0.3.0/crates/starweaver-runtime/tests/stream_deltas.rs +87 -0
  470. starweaver-0.3.0/crates/starweaver-runtime/tests/structured_output.rs +245 -0
  471. starweaver-0.3.0/crates/starweaver-runtime/tests/tool_control_flow.rs +177 -0
  472. starweaver-0.3.0/crates/starweaver-runtime/tests/tool_loop.rs +489 -0
  473. starweaver-0.3.0/crates/starweaver-runtime/tests/tool_metadata.rs +59 -0
  474. starweaver-0.3.0/crates/starweaver-runtime/tests/tool_retries.rs +313 -0
  475. starweaver-0.3.0/crates/starweaver-runtime/tests/toolset.rs +82 -0
  476. starweaver-0.3.0/crates/starweaver-runtime/tests/trace.rs +434 -0
  477. starweaver-0.3.0/crates/starweaver-runtime/tests/trace_model.rs +202 -0
  478. starweaver-0.3.0/crates/starweaver-runtime/tests/typed_output.rs +91 -0
  479. starweaver-0.3.0/crates/starweaver-runtime/tests/usage_history.rs +915 -0
  480. starweaver-0.3.0/crates/starweaver-session/Cargo.toml +30 -0
  481. starweaver-0.3.0/crates/starweaver-session/README.md +188 -0
  482. starweaver-0.3.0/crates/starweaver-session/src/approval.rs +571 -0
  483. starweaver-0.3.0/crates/starweaver-session/src/error.rs +26 -0
  484. starweaver-0.3.0/crates/starweaver-session/src/input.rs +149 -0
  485. starweaver-0.3.0/crates/starweaver-session/src/lib.rs +30 -0
  486. starweaver-0.3.0/crates/starweaver-session/src/records.rs +290 -0
  487. starweaver-0.3.0/crates/starweaver-session/src/resume.rs +39 -0
  488. starweaver-0.3.0/crates/starweaver-session/src/store/contract.rs +215 -0
  489. starweaver-0.3.0/crates/starweaver-session/src/store/memory/approvals.rs +72 -0
  490. starweaver-0.3.0/crates/starweaver-session/src/store/memory/checkpoints.rs +59 -0
  491. starweaver-0.3.0/crates/starweaver-session/src/store/memory/runs.rs +110 -0
  492. starweaver-0.3.0/crates/starweaver-session/src/store/memory/sessions.rs +108 -0
  493. starweaver-0.3.0/crates/starweaver-session/src/store/memory/streams.rs +92 -0
  494. starweaver-0.3.0/crates/starweaver-session/src/store/memory/traces.rs +91 -0
  495. starweaver-0.3.0/crates/starweaver-session/src/store/memory.rs +214 -0
  496. starweaver-0.3.0/crates/starweaver-session/src/store.rs +92 -0
  497. starweaver-0.3.0/crates/starweaver-session/src/tests.rs +384 -0
  498. starweaver-0.3.0/crates/starweaver-session/src/trace.rs +89 -0
  499. starweaver-0.3.0/crates/starweaver-stream/Cargo.toml +29 -0
  500. starweaver-0.3.0/crates/starweaver-stream/README.md +188 -0
  501. starweaver-0.3.0/crates/starweaver-stream/src/adapters.rs +257 -0
  502. starweaver-0.3.0/crates/starweaver-stream/src/archive.rs +239 -0
  503. starweaver-0.3.0/crates/starweaver-stream/src/compaction.rs +215 -0
  504. starweaver-0.3.0/crates/starweaver-stream/src/display/custom.rs +478 -0
  505. starweaver-0.3.0/crates/starweaver-stream/src/display/projector/model.rs +304 -0
  506. starweaver-0.3.0/crates/starweaver-stream/src/display/projector/run.rs +107 -0
  507. starweaver-0.3.0/crates/starweaver-stream/src/display/projector/tool.rs +193 -0
  508. starweaver-0.3.0/crates/starweaver-stream/src/display/projector.rs +156 -0
  509. starweaver-0.3.0/crates/starweaver-stream/src/display/types.rs +353 -0
  510. starweaver-0.3.0/crates/starweaver-stream/src/display.rs +11 -0
  511. starweaver-0.3.0/crates/starweaver-stream/src/envelope.rs +116 -0
  512. starweaver-0.3.0/crates/starweaver-stream/src/error.rs +20 -0
  513. starweaver-0.3.0/crates/starweaver-stream/src/lib.rs +42 -0
  514. starweaver-0.3.0/crates/starweaver-stream/src/replay.rs +447 -0
  515. starweaver-0.3.0/crates/starweaver-stream/src/sanitizer.rs +234 -0
  516. starweaver-0.3.0/crates/starweaver-stream/src/tests.rs +1128 -0
  517. starweaver-0.3.0/crates/starweaver-stream/src/transport.rs +148 -0
  518. starweaver-0.3.0/crates/starweaver-stream/tests/sse_replay.rs +61 -0
  519. starweaver-0.3.0/crates/starweaver-stream/tests/ui_adapters.rs +186 -0
  520. starweaver-0.3.0/crates/starweaver-tools/Cargo.toml +29 -0
  521. starweaver-0.3.0/crates/starweaver-tools/README.md +188 -0
  522. starweaver-0.3.0/crates/starweaver-tools/src/combinators/approval.rs +248 -0
  523. starweaver-0.3.0/crates/starweaver-tools/src/combinators/deferred.rs +219 -0
  524. starweaver-0.3.0/crates/starweaver-tools/src/combinators/renamed.rs +175 -0
  525. starweaver-0.3.0/crates/starweaver-tools/src/combinators.rs +320 -0
  526. starweaver-0.3.0/crates/starweaver-tools/src/context.rs +181 -0
  527. starweaver-0.3.0/crates/starweaver-tools/src/error.rs +306 -0
  528. starweaver-0.3.0/crates/starweaver-tools/src/execution_hooks.rs +218 -0
  529. starweaver-0.3.0/crates/starweaver-tools/src/instruction.rs +47 -0
  530. starweaver-0.3.0/crates/starweaver-tools/src/lib.rs +53 -0
  531. starweaver-0.3.0/crates/starweaver-tools/src/mcp/config.rs +152 -0
  532. starweaver-0.3.0/crates/starweaver-tools/src/mcp/native.rs +119 -0
  533. starweaver-0.3.0/crates/starweaver-tools/src/mcp/toolset.rs +137 -0
  534. starweaver-0.3.0/crates/starweaver-tools/src/mcp/transport.rs +124 -0
  535. starweaver-0.3.0/crates/starweaver-tools/src/mcp.rs +268 -0
  536. starweaver-0.3.0/crates/starweaver-tools/src/prefixed.rs +184 -0
  537. starweaver-0.3.0/crates/starweaver-tools/src/registry.rs +576 -0
  538. starweaver-0.3.0/crates/starweaver-tools/src/tool/function.rs +279 -0
  539. starweaver-0.3.0/crates/starweaver-tools/src/tool/result.rs +88 -0
  540. starweaver-0.3.0/crates/starweaver-tools/src/tool/typed.rs +325 -0
  541. starweaver-0.3.0/crates/starweaver-tools/src/tool.rs +341 -0
  542. starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy/format.rs +72 -0
  543. starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy/index.rs +127 -0
  544. starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy/inner.rs +397 -0
  545. starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy.rs +1293 -0
  546. starweaver-0.3.0/crates/starweaver-tools/src/toolset.rs +543 -0
  547. starweaver-0.3.0/crates/starweaver-tools/tests/combinators.rs +214 -0
  548. starweaver-0.3.0/crates/starweaver-tools/tests/control_flow.rs +72 -0
  549. starweaver-0.3.0/crates/starweaver-tools/tests/mcp.rs +144 -0
  550. starweaver-0.3.0/crates/starweaver-tools/tests/metadata.rs +281 -0
  551. starweaver-0.3.0/crates/starweaver-tools/tests/prefixed.rs +85 -0
  552. starweaver-0.3.0/crates/starweaver-tools/tests/registry_extra.rs +673 -0
  553. starweaver-0.3.0/crates/starweaver-tools/tests/retries.rs +97 -0
  554. starweaver-0.3.0/crates/starweaver-tools/tests/tool_proxy.rs +781 -0
  555. starweaver-0.3.0/crates/starweaver-tools/tests/toolset.rs +164 -0
  556. starweaver-0.3.0/crates/starweaver-tools/tests/typed_tool.rs +148 -0
  557. starweaver-0.3.0/crates/starweaver-usage/Cargo.toml +25 -0
  558. starweaver-0.3.0/crates/starweaver-usage/README.md +188 -0
  559. starweaver-0.3.0/crates/starweaver-usage/src/lib.rs +542 -0
  560. starweaver-0.3.0/crates/starweaver-usage/src/pricing/catalog.rs +697 -0
  561. starweaver-0.3.0/crates/starweaver-usage/src/pricing/profile.rs +286 -0
  562. starweaver-0.3.0/crates/starweaver-usage/src/pricing.rs +506 -0
  563. starweaver-0.3.0/packages/starweaver-py/Cargo.lock +3084 -0
  564. starweaver-0.3.0/packages/starweaver-py/Cargo.toml +36 -0
  565. starweaver-0.3.0/packages/starweaver-py/README.md +100 -0
  566. starweaver-0.3.0/packages/starweaver-py/src/agent.rs +1264 -0
  567. starweaver-0.3.0/packages/starweaver-py/src/capability.rs +64 -0
  568. starweaver-0.3.0/packages/starweaver-py/src/context.rs +72 -0
  569. starweaver-0.3.0/packages/starweaver-py/src/conversion.rs +71 -0
  570. starweaver-0.3.0/packages/starweaver-py/src/environment.rs +483 -0
  571. starweaver-0.3.0/packages/starweaver-py/src/errors.rs +5 -0
  572. starweaver-0.3.0/packages/starweaver-py/src/lib.rs +67 -0
  573. starweaver-0.3.0/packages/starweaver-py/src/media.rs +206 -0
  574. starweaver-0.3.0/packages/starweaver-py/src/model.rs +464 -0
  575. starweaver-0.3.0/packages/starweaver-py/src/output.rs +692 -0
  576. starweaver-0.3.0/packages/starweaver-py/src/runtime.rs +228 -0
  577. starweaver-0.3.0/packages/starweaver-py/src/skills.rs +302 -0
  578. starweaver-0.3.0/packages/starweaver-py/src/stream.rs +61 -0
  579. starweaver-0.3.0/packages/starweaver-py/src/subagent.rs +81 -0
  580. starweaver-0.3.0/packages/starweaver-py/src/testing.rs +287 -0
  581. starweaver-0.3.0/packages/starweaver-py/src/tool.rs +490 -0
  582. starweaver-0.3.0/packages/starweaver-py/src/toolset.rs +155 -0
  583. starweaver-0.3.0/packages/starweaver-py/tests/test_package.py +2328 -0
  584. starweaver-0.3.0/pyproject.toml +35 -0
  585. starweaver-0.3.0/python/starweaver/__init__.py +177 -0
  586. starweaver-0.3.0/python/starweaver/_native.pyi +543 -0
  587. starweaver-0.3.0/python/starweaver/agent.py +1560 -0
  588. starweaver-0.3.0/python/starweaver/capability.py +65 -0
  589. starweaver-0.3.0/python/starweaver/environment.py +199 -0
  590. starweaver-0.3.0/python/starweaver/errors.py +85 -0
  591. starweaver-0.3.0/python/starweaver/media.py +73 -0
  592. starweaver-0.3.0/python/starweaver/model.py +411 -0
  593. starweaver-0.3.0/python/starweaver/output.py +366 -0
  594. starweaver-0.3.0/python/starweaver/py.typed +0 -0
  595. starweaver-0.3.0/python/starweaver/resources.py +81 -0
  596. starweaver-0.3.0/python/starweaver/runtime.py +89 -0
  597. starweaver-0.3.0/python/starweaver/skills.py +266 -0
  598. starweaver-0.3.0/python/starweaver/store.py +557 -0
  599. starweaver-0.3.0/python/starweaver/stream_adapter.py +58 -0
  600. starweaver-0.3.0/python/starweaver/subagent.py +58 -0
  601. starweaver-0.3.0/python/starweaver/testing.py +78 -0
  602. starweaver-0.3.0/python/starweaver/tool.py +443 -0
  603. starweaver-0.3.0/python/starweaver/toolset.py +158 -0
@@ -0,0 +1,100 @@
1
+ [workspace]
2
+ members = [
3
+ "crates/starweaver-cli",
4
+ "crates/starweaver-rpc",
5
+ "crates/starweaver-rpc-core",
6
+ "crates/starweaver-agent",
7
+ "crates/starweaver-context",
8
+ "crates/starweaver-core",
9
+ "crates/starweaver-model",
10
+ "crates/starweaver-oauth",
11
+ "crates/starweaver-oauth-provider",
12
+ "crates/starweaver-runtime",
13
+ "crates/starweaver-tools",
14
+ "crates/starweaver-environment",
15
+ "crates/starweaver-envd-core",
16
+ "crates/starweaver-envd",
17
+ "crates/starweaver-envd-client",
18
+ "crates/starweaver-session",
19
+ "crates/starweaver-stream",
20
+ "crates/starweaver-storage",
21
+ "crates/starweaver-usage",
22
+ "xtask",
23
+ ]
24
+ exclude = ["packages/starweaver-py"]
25
+ resolver = "2"
26
+
27
+ [workspace.package]
28
+ version = "0.3.0"
29
+ edition = "2024"
30
+ rust-version = "1.96"
31
+ authors = ["wh1isper"]
32
+ license = "BSD-3-Clause"
33
+ repository = "https://github.com/Wh1isper/starweaver"
34
+ homepage = "https://github.com/Wh1isper/starweaver"
35
+ description = "Rust agent SDK workspace for Starweaver"
36
+ readme = "README.md"
37
+ keywords = ["agent", "sdk", "ai", "runtime"]
38
+ categories = ["development-tools"]
39
+
40
+ [workspace.dependencies]
41
+ starweaver-agent = { path = "crates/starweaver-agent", version = "0.3.0" }
42
+ starweaver-context = { path = "crates/starweaver-context", version = "0.3.0" }
43
+ starweaver-core = { path = "crates/starweaver-core", version = "0.3.0" }
44
+ starweaver-model = { path = "crates/starweaver-model", version = "0.3.0" }
45
+ starweaver-oauth = { path = "crates/starweaver-oauth", version = "0.3.0" }
46
+ starweaver-oauth-provider = { path = "crates/starweaver-oauth-provider", version = "0.3.0" }
47
+ starweaver-runtime = { path = "crates/starweaver-runtime", version = "0.3.0" }
48
+ starweaver-tools = { path = "crates/starweaver-tools", version = "0.3.0" }
49
+ starweaver-usage = { path = "crates/starweaver-usage", version = "0.3.0" }
50
+ starweaver-environment = { path = "crates/starweaver-environment", version = "0.3.0" }
51
+ starweaver-envd-core = { path = "crates/starweaver-envd-core", version = "0.3.0" }
52
+ starweaver-envd = { path = "crates/starweaver-envd", version = "0.3.0" }
53
+ starweaver-envd-client = { path = "crates/starweaver-envd-client", version = "0.3.0" }
54
+ starweaver-session = { path = "crates/starweaver-session", version = "0.3.0" }
55
+ starweaver-stream = { path = "crates/starweaver-stream", version = "0.3.0" }
56
+ starweaver-storage = { path = "crates/starweaver-storage", version = "0.3.0" }
57
+ starweaver-cli = { path = "crates/starweaver-cli", version = "0.3.0" }
58
+ starweaver-rpc-core = { path = "crates/starweaver-rpc-core", version = "0.3.0" }
59
+ async-trait = "0.1.89"
60
+ chrono = { version = "0.4.42", default-features = false, features = ["clock", "serde", "std"] }
61
+ reqwest = { version = "0.12.24", default-features = false, features = ["json", "rustls-tls", "stream"] }
62
+ serde = { version = "1.0.228", features = ["derive"] }
63
+ serde_json = "1.0.145"
64
+ semver = "1.0.27"
65
+ schemars = { version = "1.2.1", features = ["derive"] }
66
+ globset = "0.4.16"
67
+ grep-matcher = "0.1.8"
68
+ grep-regex = "0.1.14"
69
+ grep-searcher = "0.1.16"
70
+ ignore = "0.4.24"
71
+ jsonschema = { version = "0.33.0", default-features = false }
72
+ yaml_serde = "=0.10.2"
73
+ thiserror = "2.0.17"
74
+ tokio = { version = "1.48.0", features = ["macros", "rt-multi-thread", "net", "signal", "sync", "time"] }
75
+ uuid = { version = "1.18.1", features = ["serde", "v4"] }
76
+ clap = { version = "4.5.51", features = ["derive"] }
77
+ clap_complete = "4.5.61"
78
+ crossterm = "0.28.1"
79
+ pulldown-cmark = "0.10"
80
+ ring = "0.17.14"
81
+ rusqlite = { version = "0.32.1", features = ["bundled", "chrono", "serde_json"] }
82
+ toml = "0.8.23"
83
+ tempfile = "3.23.0"
84
+ unicode-width = "0.2.0"
85
+ base64 = "0.22.1"
86
+ futures-util = "0.3.31"
87
+ tokio-tungstenite = { version = "0.28.0", default-features = false, features = ["connect", "rustls-tls-native-roots"] }
88
+ fs2 = "0.4.3"
89
+ image = { version = "0.25.8", default-features = false, features = ["jpeg", "png", "gif", "webp", "bmp", "ico"] }
90
+
91
+ [workspace.lints.rust]
92
+ unsafe_code = "forbid"
93
+ missing_docs = "warn"
94
+
95
+ [workspace.lints.clippy]
96
+ all = "warn"
97
+ pedantic = "warn"
98
+ nursery = "warn"
99
+ unwrap_used = "warn"
100
+ expect_used = "warn"
@@ -0,0 +1,121 @@
1
+ Metadata-Version: 2.4
2
+ Name: starweaver
3
+ Version: 0.3.0
4
+ Classifier: Intended Audience :: Developers
5
+ Classifier: Programming Language :: Python
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: Programming Language :: Python :: 3.11
8
+ Classifier: Programming Language :: Python :: 3.12
9
+ Classifier: Programming Language :: Python :: 3.13
10
+ Classifier: Programming Language :: Rust
11
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
12
+ Requires-Dist: pydantic>=2.0
13
+ Summary: Python bindings for Starweaver
14
+ Keywords: agent,sdk,ai,runtime
15
+ Home-Page: https://github.com/Wh1isper/starweaver
16
+ Author: wh1isper
17
+ Requires-Python: >=3.11, <3.14
18
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
19
+ Project-URL: Repository, https://github.com/Wh1isper/starweaver
20
+
21
+ # Starweaver Python
22
+
23
+ `starweaver` is the in-process Python SDK and binding package for Starweaver.
24
+ It keeps the Rust runtime as the canonical agent loop while exposing Python
25
+ ergonomics for agents, tools, models, sessions, streams, resources, media, and
26
+ deterministic tests.
27
+
28
+ Python tools are injected directly as native Starweaver runtime tools. They do
29
+ not use MCP, stdio, or another binary protocol.
30
+
31
+ Supported Python versions are CPython 3.11 through 3.13. Local development and
32
+ single-version CI jobs default to Python 3.13.
33
+
34
+ ## Quickstart
35
+
36
+ ```python
37
+ import asyncio
38
+
39
+ from starweaver import create_agent, tool
40
+ from starweaver.testing import TestModel
41
+
42
+
43
+ @tool
44
+ async def add(left: int, right: int) -> dict[str, int]:
45
+ return {"total": left + right}
46
+
47
+
48
+ async def main() -> None:
49
+ model = TestModel.responses(
50
+ [
51
+ TestModel.tool_call_response(
52
+ [{"id": "call_add", "name": "add", "arguments": {"left": 2, "right": 3}}]
53
+ ),
54
+ {"text": "done"},
55
+ ]
56
+ )
57
+ result = await create_agent(model=model, tools=[add]).run("Add two numbers")
58
+ print(result.output)
59
+
60
+
61
+ asyncio.run(main())
62
+ ```
63
+
64
+ ## Core Surfaces
65
+
66
+ - `create_agent()` builds a Python facade over the Rust runtime.
67
+ - `@tool`, raw callables, and `BaseTool` register in-process tools.
68
+ - Independent tool calls run in parallel by default; use `sequential=True` for
69
+ ordered side effects.
70
+ - `Toolset`, `ToolSearchToolset`, and `ToolProxyToolset` compose grouped tools.
71
+ - `ProviderModel`, `TestModel`, and `FunctionModel` cover production providers,
72
+ deterministic scripts, and callback-backed tests.
73
+ - `OutputSchema`, `OutputPolicy`, validators, and output functions handle final
74
+ output.
75
+ - `AgentSession` and `SessionArchive` preserve reusable session state.
76
+ - `EnvironmentProvider`, `ResourceRef`, `SkillRegistry`, and `MediaUploader`
77
+ expose environment, resource, skill, and media boundaries.
78
+
79
+ ## Stream Boundary
80
+
81
+ `run_stream()` currently returns `AgentRun`, an async iterator over canonical
82
+ `StreamEvent` records plus a Python facade for `recv()`, `join()`, `result()`,
83
+ `status()`, `recoverable_state()`, `interrupt()`, active messages, steering, and
84
+ streamed HITL helpers. The stable portable contract is the canonical
85
+ `StreamEvent.raw` record sequence and collected run result. Python live-control
86
+ ergonomics are the current facade, not a separately frozen live-handle
87
+ protocol.
88
+
89
+ `AgentStream` remains a compatibility alias for `AgentRun`.
90
+
91
+ ## Documentation
92
+
93
+ Start with `docs/python-sdk.md` in the repository. The Python docs are organized
94
+ by feature:
95
+
96
+ - `docs/python/agents.md`
97
+ - `docs/python/tools.md`
98
+ - `docs/python/toolsets.md`
99
+ - `docs/python/models.md`
100
+ - `docs/python/output.md`
101
+ - `docs/python/sessions-streams.md`
102
+ - `docs/python/environments-skills.md`
103
+ - `docs/python/media.md`
104
+ - `docs/python/testing.md`
105
+ - `docs/python/examples.md`
106
+ - `docs/python/stability.md`
107
+
108
+ Runnable examples live in `examples/python/`.
109
+
110
+ ## Validation
111
+
112
+ From the repository root:
113
+
114
+ ```bash
115
+ make py-sync
116
+ make py-lint
117
+ make py-rust-check
118
+ make py-test
119
+ make py-check
120
+ ```
121
+
@@ -0,0 +1,100 @@
1
+ # Starweaver Python
2
+
3
+ `starweaver` is the in-process Python SDK and binding package for Starweaver.
4
+ It keeps the Rust runtime as the canonical agent loop while exposing Python
5
+ ergonomics for agents, tools, models, sessions, streams, resources, media, and
6
+ deterministic tests.
7
+
8
+ Python tools are injected directly as native Starweaver runtime tools. They do
9
+ not use MCP, stdio, or another binary protocol.
10
+
11
+ Supported Python versions are CPython 3.11 through 3.13. Local development and
12
+ single-version CI jobs default to Python 3.13.
13
+
14
+ ## Quickstart
15
+
16
+ ```python
17
+ import asyncio
18
+
19
+ from starweaver import create_agent, tool
20
+ from starweaver.testing import TestModel
21
+
22
+
23
+ @tool
24
+ async def add(left: int, right: int) -> dict[str, int]:
25
+ return {"total": left + right}
26
+
27
+
28
+ async def main() -> None:
29
+ model = TestModel.responses(
30
+ [
31
+ TestModel.tool_call_response(
32
+ [{"id": "call_add", "name": "add", "arguments": {"left": 2, "right": 3}}]
33
+ ),
34
+ {"text": "done"},
35
+ ]
36
+ )
37
+ result = await create_agent(model=model, tools=[add]).run("Add two numbers")
38
+ print(result.output)
39
+
40
+
41
+ asyncio.run(main())
42
+ ```
43
+
44
+ ## Core Surfaces
45
+
46
+ - `create_agent()` builds a Python facade over the Rust runtime.
47
+ - `@tool`, raw callables, and `BaseTool` register in-process tools.
48
+ - Independent tool calls run in parallel by default; use `sequential=True` for
49
+ ordered side effects.
50
+ - `Toolset`, `ToolSearchToolset`, and `ToolProxyToolset` compose grouped tools.
51
+ - `ProviderModel`, `TestModel`, and `FunctionModel` cover production providers,
52
+ deterministic scripts, and callback-backed tests.
53
+ - `OutputSchema`, `OutputPolicy`, validators, and output functions handle final
54
+ output.
55
+ - `AgentSession` and `SessionArchive` preserve reusable session state.
56
+ - `EnvironmentProvider`, `ResourceRef`, `SkillRegistry`, and `MediaUploader`
57
+ expose environment, resource, skill, and media boundaries.
58
+
59
+ ## Stream Boundary
60
+
61
+ `run_stream()` currently returns `AgentRun`, an async iterator over canonical
62
+ `StreamEvent` records plus a Python facade for `recv()`, `join()`, `result()`,
63
+ `status()`, `recoverable_state()`, `interrupt()`, active messages, steering, and
64
+ streamed HITL helpers. The stable portable contract is the canonical
65
+ `StreamEvent.raw` record sequence and collected run result. Python live-control
66
+ ergonomics are the current facade, not a separately frozen live-handle
67
+ protocol.
68
+
69
+ `AgentStream` remains a compatibility alias for `AgentRun`.
70
+
71
+ ## Documentation
72
+
73
+ Start with `docs/python-sdk.md` in the repository. The Python docs are organized
74
+ by feature:
75
+
76
+ - `docs/python/agents.md`
77
+ - `docs/python/tools.md`
78
+ - `docs/python/toolsets.md`
79
+ - `docs/python/models.md`
80
+ - `docs/python/output.md`
81
+ - `docs/python/sessions-streams.md`
82
+ - `docs/python/environments-skills.md`
83
+ - `docs/python/media.md`
84
+ - `docs/python/testing.md`
85
+ - `docs/python/examples.md`
86
+ - `docs/python/stability.md`
87
+
88
+ Runnable examples live in `examples/python/`.
89
+
90
+ ## Validation
91
+
92
+ From the repository root:
93
+
94
+ ```bash
95
+ make py-sync
96
+ make py-lint
97
+ make py-rust-check
98
+ make py-test
99
+ make py-check
100
+ ```
@@ -0,0 +1,55 @@
1
+ [package]
2
+ name = "starweaver-agent"
3
+ version.workspace = true
4
+ edition.workspace = true
5
+ rust-version.workspace = true
6
+ authors.workspace = true
7
+ license.workspace = true
8
+ repository.workspace = true
9
+ homepage.workspace = true
10
+ description = "Ergonomic agent SDK facade for Starweaver"
11
+ readme = "README.md"
12
+ keywords.workspace = true
13
+ categories.workspace = true
14
+
15
+ [[bin]]
16
+ name = "starweaver_agent_rmcp_stdio_fixture"
17
+ path = "tests/fixtures/rmcp_stdio_server.rs"
18
+ test = false
19
+ bench = false
20
+ doc = false
21
+
22
+ [dependencies]
23
+ base64.workspace = true
24
+ async-trait.workspace = true
25
+ chrono.workspace = true
26
+ image.workspace = true
27
+ serde.workspace = true
28
+ serde_json.workspace = true
29
+ schemars.workspace = true
30
+ yaml_serde.workspace = true
31
+ thiserror.workspace = true
32
+ reqwest.workspace = true
33
+ rmcp = { version = "1.7.0", default-features = false, features = ["client", "server", "transport-child-process", "transport-io", "transport-streamable-http-client-reqwest"] }
34
+ uuid.workspace = true
35
+ starweaver-context.workspace = true
36
+ starweaver-core.workspace = true
37
+ starweaver-environment.workspace = true
38
+ starweaver-model.workspace = true
39
+ starweaver-oauth-provider.workspace = true
40
+ starweaver-runtime.workspace = true
41
+ starweaver-session.workspace = true
42
+ starweaver-stream.workspace = true
43
+ starweaver-usage = { workspace = true, features = ["pricing"] }
44
+ starweaver-tools.workspace = true
45
+ tokio.workspace = true
46
+
47
+ [dev-dependencies]
48
+ axum = "0.8.7"
49
+ rmcp = { version = "1.7.0", default-features = false, features = ["client", "server", "transport-child-process", "transport-io", "transport-streamable-http-client-reqwest", "transport-streamable-http-server"] }
50
+ starweaver-core.workspace = true
51
+ starweaver-tools.workspace = true
52
+ tokio-util = "0.7.17"
53
+
54
+ [lints]
55
+ workspace = true
@@ -0,0 +1,188 @@
1
+ # Starweaver
2
+
3
+ Starweaver is a Rust agent SDK for building local-first AI agents, CLIs, and service runtimes.
4
+ It gives you a typed agent loop, provider-neutral model protocol, function tools, structured
5
+ output, durable session primitives, first-party environment tools, and a CLI product surface in
6
+ one workspace.
7
+
8
+ ## Why Starweaver
9
+
10
+ - Rust-native agent construction with `AgentBuilder`, `AgentApp`, and `AgentSession`.
11
+ - Provider-neutral model messages, settings, profiles, streaming parts, and request audit hooks.
12
+ - Typed function tools from Serde and `schemars`, plus toolsets, metadata, retries, approval, and deferred records.
13
+ - Structured output through JSON Schema, typed parsing, output functions, and validation retry.
14
+ - Runtime extension hooks for prompt preparation, request shaping, tool policy, output validation, usage, and trace recording.
15
+ - Durable execution foundations: context export/restore, checkpoints, session records, replay streams, and SQLite storage adapters.
16
+ - First-party SDK bundles for filesystem, shell, skills, task tracking, host search/scrape/media adapters, MCP, and subagents.
17
+ - A CLI launcher with profile-based local runs, install/update flow, display messages, local storage, and release artifacts.
18
+
19
+ ## Install
20
+
21
+ Install the latest public release:
22
+
23
+ ```bash
24
+ curl -fsSL https://raw.githubusercontent.com/Wh1isper/starweaver/main/scripts/install.sh | sh
25
+ ```
26
+
27
+ The installer downloads the matching `starweaver-cli` archive, verifies `checksums.txt` when
28
+ available, and installs `starweaver`, `starweaver-cli`, `sw`, and `starweaver-rpc`. It installs into
29
+ `$HOME/.local/bin` for normal users and `/usr/local/bin` for root. Override the location when
30
+ needed:
31
+
32
+ ```bash
33
+ curl -fsSL https://raw.githubusercontent.com/Wh1isper/starweaver/main/scripts/install.sh \
34
+ | STARWEAVER_INSTALL_DIR="$HOME/bin" sh
35
+ ```
36
+
37
+ Install a pinned release or prerelease:
38
+
39
+ ```bash
40
+ curl -fsSL https://raw.githubusercontent.com/Wh1isper/starweaver/main/scripts/install.sh \
41
+ | STARWEAVER_VERSION=vX.Y.Z sh
42
+ ```
43
+
44
+ The default `latest` channel uses GitHub's latest stable release first and falls back to the
45
+ newest public prerelease when no stable release exists yet.
46
+
47
+ Update an installed CLI from GitHub release artifacts:
48
+
49
+ ```bash
50
+ starweaver update
51
+ ```
52
+
53
+ The update command checks the current CLI package version before invoking the installer. When the
54
+ selected release is already installed it exits with `status=up-to-date`; pass `--force` to reinstall
55
+ the same version.
56
+
57
+ Run from a checkout:
58
+
59
+ ```bash
60
+ make cli -- -p "hello" --output text
61
+ make sw -- --help
62
+ make sw -- -p "hello" --output text
63
+ make sw -- version
64
+ ```
65
+
66
+ ## SDK Quickstart
67
+
68
+ ```rust
69
+ use std::sync::Arc;
70
+
71
+ use starweaver_agent::{AgentBuilder, TestModel};
72
+
73
+ # async fn example() -> Result<(), starweaver_agent::AgentError> {
74
+ let agent = AgentBuilder::new(Arc::new(TestModel::with_text("Paris")))
75
+ .instruction("Answer concisely.")
76
+ .build();
77
+
78
+ let result = agent.run("What is the capital of France?").await?;
79
+ assert_eq!(result.output, "Paris");
80
+ # Ok(())
81
+ # }
82
+ ```
83
+
84
+ Add typed tools:
85
+
86
+ ```rust
87
+ use std::sync::Arc;
88
+
89
+ use schemars::JsonSchema;
90
+ use serde::{Deserialize, Serialize};
91
+ use starweaver_agent::{typed_tool, AgentBuilder, TestModel, ToolContext, ToolResult};
92
+
93
+ #[derive(Clone, Debug, Deserialize, JsonSchema, Serialize)]
94
+ struct LookupArgs {
95
+ /// City to look up.
96
+ city: String,
97
+ }
98
+
99
+ # async fn example() -> Result<(), starweaver_agent::AgentError> {
100
+ let lookup = typed_tool::<LookupArgs, _, _>(
101
+ "lookup_weather",
102
+ Some("Look up weather for a city".to_string()),
103
+ |_ctx: ToolContext, args: LookupArgs| async move {
104
+ Ok(ToolResult::new(serde_json::json!({
105
+ "city": args.city,
106
+ "forecast": "clear"
107
+ })))
108
+ },
109
+ );
110
+
111
+ let agent = AgentBuilder::new(Arc::new(TestModel::with_text("clear")))
112
+ .tool(Arc::new(lookup))
113
+ .build();
114
+
115
+ let result = agent.run("What is the weather in Paris?").await?;
116
+ assert_eq!(result.output, "clear");
117
+ # Ok(())
118
+ # }
119
+ ```
120
+
121
+ ## Documentation
122
+
123
+ Published docs: <https://starweaver.wh1isper.top>
124
+
125
+ Start here:
126
+
127
+ - [Quickstart](docs/quickstart.md)
128
+ - [Agent SDK](docs/agent-sdk.md)
129
+ - [Python SDK](docs/python-sdk.md)
130
+ - [Agents](docs/agent.md)
131
+ - [Models](docs/models.md)
132
+ - [Tools](docs/tools.md)
133
+ - [Structured Output](docs/output.md)
134
+ - [CLI](docs/cli.md)
135
+ - [Testing](docs/testing.md)
136
+ - [Release](docs/release.md)
137
+
138
+ Architecture and product decisions live in [spec/](spec/). User-facing guides live in [docs/](docs/).
139
+
140
+ ## Workspace
141
+
142
+ Starweaver is organized as focused crates:
143
+
144
+ - `starweaver-agent`: public SDK facade, app/session helpers, bundles, subagents, profiles, and filters.
145
+ - `starweaver-runtime`: deterministic agent loop, graph state, tools, output, retries, capabilities, streams, traces, and checkpoints.
146
+ - `starweaver-model`: provider-neutral model protocol, settings, profiles, transports, wrappers, OAuth-backed adapters, and replay tests.
147
+ - `starweaver-tools`: function tools, toolsets, metadata, lifecycle, MCP foundations, approval, and deferred execution.
148
+ - `starweaver-context`: `AgentContext`, typed dependencies, state, event/message buses, notes, usage, and resumable state.
149
+ - `starweaver-environment`: local and virtual filesystem/shell providers, policies, resources, and environment snapshots.
150
+ - `starweaver-session`, `starweaver-stream`, `starweaver-storage`: durable session, replay, display stream, and SQLite storage contracts.
151
+ - `starweaver-cli`: local CLI product surface, launcher dispatch, profiles, TUI, storage, install, and update workflows.
152
+ - `starweaver-rpc-core`: shared JSON-RPC host protocol helpers and stream/replay projections.
153
+ - `starweaver-rpc`: standalone JSON-RPC host process for Desktop and local host integrations.
154
+ - `packages/starweaver-py`: in-process Python SDK bindings, Python tool injection, live run control, message bus facades, typed HITL helpers, deterministic test models, sessions, and Python distribution artifacts.
155
+
156
+ ## Validation
157
+
158
+ ```bash
159
+ make fmt-check
160
+ make check
161
+ make test
162
+ make docs-check
163
+ make docs-build
164
+ ```
165
+
166
+ Full local gate:
167
+
168
+ ```bash
169
+ make ci
170
+ ```
171
+
172
+ ## Release
173
+
174
+ Prepare a release:
175
+
176
+ ```bash
177
+ gh workflow run prepare-release.yml -f version=X.Y.Z
178
+ ```
179
+
180
+ The workflow pushes `release/vX.Y.Z` for review. After that release commit reaches `main`, publish `vX.Y.Z` as a GitHub Release; the published Release event builds CLI archives and Python distributions, uploads checksums, and publishes crates plus the Python package through the `Release` environment.
181
+
182
+ ## Acknowledgements
183
+
184
+ Thank you to the projects that helped shape Starweaver's thinking, especially [Pydantic AI](https://github.com/pydantic/pydantic-ai) and [Yet Another Agents / ya-mono](https://github.com/Wh1isper/ya-mono).
185
+
186
+ ## License
187
+
188
+ BSD-3-Clause
@@ -0,0 +1,34 @@
1
+ use schemars::JsonSchema;
2
+ use serde::{Deserialize, Serialize};
3
+
4
+ #[derive(Clone, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
5
+ pub(super) struct SummarizeArgs {
6
+ /// Context summary to preserve across context handoff.
7
+ pub(super) content: String,
8
+ /// File paths to auto-load after summary.
9
+ #[serde(default)]
10
+ pub(super) auto_load_files: Option<Vec<String>>,
11
+ }
12
+
13
+ #[derive(Clone, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
14
+ pub(super) struct NoteSetArgs {
15
+ /// Unique key for the note entry.
16
+ pub(super) key: String,
17
+ /// Content to store. Omit or set to null to delete the entry.
18
+ #[serde(default)]
19
+ pub(super) value: Option<String>,
20
+ }
21
+
22
+ #[derive(Clone, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
23
+ pub(super) struct NoteGetArgs {
24
+ /// The note key to retrieve. Omit to list all notes.
25
+ #[serde(default)]
26
+ pub(super) key: Option<String>,
27
+ }
28
+
29
+ #[derive(Clone, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
30
+ pub(super) struct ThinkingArgs {
31
+ /// A thought in markdown format.
32
+ #[serde(alias = "content")]
33
+ pub(super) thought: String,
34
+ }
@@ -0,0 +1,77 @@
1
+ use serde_json::{Map, Value};
2
+ use starweaver_context::AgentContextHandle;
3
+ use starweaver_tools::{ToolContext, ToolError, ToolResult};
4
+
5
+ use super::args::{NoteGetArgs, NoteSetArgs, SummarizeArgs, ThinkingArgs};
6
+
7
+ pub(super) async fn summarize(
8
+ context: ToolContext,
9
+ arguments: SummarizeArgs,
10
+ ) -> Result<ToolResult, ToolError> {
11
+ let Some(handle) = context.dependency::<AgentContextHandle>() else {
12
+ return Err(ToolError::Execution {
13
+ tool: "summarize".to_string(),
14
+ message: "summarize requires AgentContextHandle".to_string(),
15
+ });
16
+ };
17
+ let auto_load_files = arguments.auto_load_files.unwrap_or_default();
18
+ let rendered = render_handoff_message(&arguments.content);
19
+ handle.update(|agent_context| {
20
+ agent_context.handoff_message = Some(rendered.clone());
21
+ for file in &auto_load_files {
22
+ if !agent_context.auto_load_files.contains(file) {
23
+ agent_context.auto_load_files.push(file.clone());
24
+ }
25
+ }
26
+ });
27
+
28
+ Ok(operation(
29
+ "summarize",
30
+ serde_json::json!({
31
+ "content": arguments.content,
32
+ "rendered": rendered,
33
+ "auto_load_files": auto_load_files,
34
+ }),
35
+ ))
36
+ }
37
+
38
+ fn render_handoff_message(content: &str) -> String {
39
+ format!("# Context Summary\n\n{content}")
40
+ }
41
+
42
+ pub(super) async fn note_set(
43
+ _context: ToolContext,
44
+ arguments: NoteSetArgs,
45
+ ) -> Result<ToolResult, ToolError> {
46
+ Ok(operation(
47
+ "note",
48
+ serde_json::json!({"key": arguments.key, "value": arguments.value}),
49
+ ))
50
+ }
51
+
52
+ pub(super) async fn note_get(
53
+ _context: ToolContext,
54
+ arguments: NoteGetArgs,
55
+ ) -> Result<ToolResult, ToolError> {
56
+ Ok(operation(
57
+ "note_get",
58
+ serde_json::json!({"key": arguments.key}),
59
+ ))
60
+ }
61
+
62
+ pub(super) async fn thinking(
63
+ _context: ToolContext,
64
+ arguments: ThinkingArgs,
65
+ ) -> Result<ToolResult, ToolError> {
66
+ Ok(operation(
67
+ "thinking",
68
+ serde_json::json!({"thought": arguments.thought}),
69
+ ))
70
+ }
71
+
72
+ fn operation(name: &str, payload: Value) -> ToolResult {
73
+ let mut content = Map::new();
74
+ content.insert("operation".to_string(), Value::String(name.to_string()));
75
+ content.insert("payload".to_string(), payload);
76
+ ToolResult::new(Value::Object(content))
77
+ }