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.
- starweaver-0.3.0/Cargo.toml +100 -0
- starweaver-0.3.0/PKG-INFO +121 -0
- starweaver-0.3.0/README.md +100 -0
- starweaver-0.3.0/crates/starweaver-agent/Cargo.toml +55 -0
- starweaver-0.3.0/crates/starweaver-agent/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/context_tools/args.rs +34 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/context_tools/context.rs +77 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/context_tools/mod.rs +167 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/args.rs +270 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/common.rs +35 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/context.rs +39 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/editing.rs +156 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/instructions.rs +260 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/media.rs +332 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/output.rs +155 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/paths.rs +142 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/reading.rs +71 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/search.rs +95 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem/text.rs +239 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/filesystem.rs +32 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/handle.rs +260 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/mod.rs +18 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell.rs +495 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/execution.rs +357 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/parsing.rs +30 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/tests.rs +378 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types/handle.rs +89 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types/policy.rs +180 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types/request.rs +233 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review/types.rs +46 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/environment/shell_review.rs +17 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/helpers.rs +121 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/output.rs +155 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/runtime_context.rs +166 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/skills.rs +1170 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/args.rs +55 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/formatting.rs +85 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/instructions.rs +65 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/operations.rs +177 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/task/tests.rs +142 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/task.rs +55 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/args.rs +38 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/download.rs +127 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/http.rs +204 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/media.rs +297 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/mod.rs +200 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/fetch_image.rs +89 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/html.rs +112 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/scrape_impl.rs +136 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web/search_provider.rs +83 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles/web_media/web.rs +470 -0
- starweaver-0.3.0/crates/starweaver-agent/src/bundles.rs +62 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/constants.rs +52 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/messages.rs +402 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/request.rs +37 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/settings.rs +95 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/compact/threshold.rs +24 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/compact.rs +391 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/media/capability.rs +288 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/media/compression.rs +310 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/media/policy.rs +51 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/media/preflight.rs +275 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/media/split.rs +111 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/media/upload.rs +292 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/media.rs +15 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/message.rs +309 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/named/capability.rs +133 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/named/context_injection.rs +678 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/named/ordering.rs +43 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/named/reasoning.rs +64 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/named/tool_args.rs +56 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters/named.rs +88 -0
- starweaver-0.3.0/crates/starweaver-agent/src/filters.rs +50 -0
- starweaver-0.3.0/crates/starweaver-agent/src/lib.rs +953 -0
- starweaver-0.3.0/crates/starweaver-agent/src/mcp_live.rs +409 -0
- starweaver-0.3.0/crates/starweaver-agent/src/mcp_rmcp.rs +294 -0
- starweaver-0.3.0/crates/starweaver-agent/src/media_compression.rs +305 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets/registry.rs +274 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets/spec.rs +960 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets/types/agent_spec.rs +171 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets/types/error.rs +87 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets/types/policy.rs +126 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets/types/resource.rs +125 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets/types.rs +77 -0
- starweaver-0.3.0/crates/starweaver-agent/src/presets.rs +21 -0
- starweaver-0.3.0/crates/starweaver-agent/src/runtime.rs +1245 -0
- starweaver-0.3.0/crates/starweaver-agent/src/session.rs +1522 -0
- starweaver-0.3.0/crates/starweaver-agent/src/streaming.rs +976 -0
- starweaver-0.3.0/crates/starweaver-agent/src/subagent/app.rs +248 -0
- starweaver-0.3.0/crates/starweaver-agent/src/subagent/config.rs +264 -0
- starweaver-0.3.0/crates/starweaver-agent/src/subagent/inheritance.rs +193 -0
- starweaver-0.3.0/crates/starweaver-agent/src/subagent/registry.rs +1288 -0
- starweaver-0.3.0/crates/starweaver-agent/src/subagent/task.rs +64 -0
- starweaver-0.3.0/crates/starweaver-agent/src/subagent.rs +23 -0
- starweaver-0.3.0/crates/starweaver-agent/src/subagent_config.rs +319 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/agent_spec_profiles.rs +120 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/agent_spec_v2.rs +222 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/app_facade.rs +322 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/builder.rs +1218 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/bundles.rs +2458 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/cost.rs +38 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/coverage_acceptance.rs +380 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/delegation_failure.rs +183 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/delegation_tool.rs +654 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/direct.rs +46 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/fixtures/rmcp_stdio_server.rs +128 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/history.rs +36 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/iteration.rs +23 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/live_mcp.rs +580 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/mcp.rs +74 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/output_policy.rs +109 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/presets.rs +223 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/process_shell.rs +78 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/sdk_filter_order.rs +2415 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/session.rs +2116 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/session_options.rs +262 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/skills.rs +478 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/spec_selection.rs +718 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/stream.rs +451 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/subagent_config.rs +277 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/subagent_inheritance.rs +276 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/subagent_lifecycle.rs +138 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/subagents.rs +293 -0
- starweaver-0.3.0/crates/starweaver-agent/tests/trace.rs +352 -0
- starweaver-0.3.0/crates/starweaver-context/Cargo.toml +25 -0
- starweaver-0.3.0/crates/starweaver-context/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-context/src/agent_context.rs +992 -0
- starweaver-0.3.0/crates/starweaver-context/src/config/model.rs +210 -0
- starweaver-0.3.0/crates/starweaver-context/src/config/tool.rs +306 -0
- starweaver-0.3.0/crates/starweaver-context/src/config.rs +103 -0
- starweaver-0.3.0/crates/starweaver-context/src/context_handle.rs +65 -0
- starweaver-0.3.0/crates/starweaver-context/src/context_protocol.rs +249 -0
- starweaver-0.3.0/crates/starweaver-context/src/dependency.rs +100 -0
- starweaver-0.3.0/crates/starweaver-context/src/event.rs +79 -0
- starweaver-0.3.0/crates/starweaver-context/src/lib.rs +33 -0
- starweaver-0.3.0/crates/starweaver-context/src/message_bus.rs +349 -0
- starweaver-0.3.0/crates/starweaver-context/src/notes.rs +62 -0
- starweaver-0.3.0/crates/starweaver-context/src/resumable_state.rs +203 -0
- starweaver-0.3.0/crates/starweaver-context/src/runtime_context.rs +223 -0
- starweaver-0.3.0/crates/starweaver-context/src/state.rs +49 -0
- starweaver-0.3.0/crates/starweaver-context/src/task.rs +379 -0
- starweaver-0.3.0/crates/starweaver-context/tests/config.rs +117 -0
- starweaver-0.3.0/crates/starweaver-context/tests/context.rs +435 -0
- starweaver-0.3.0/crates/starweaver-context/tests/context_state.rs +357 -0
- starweaver-0.3.0/crates/starweaver-context/tests/notes.rs +126 -0
- starweaver-0.3.0/crates/starweaver-core/Cargo.toml +22 -0
- starweaver-0.3.0/crates/starweaver-core/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-core/src/cancellation.rs +101 -0
- starweaver-0.3.0/crates/starweaver-core/src/ids.rs +176 -0
- starweaver-0.3.0/crates/starweaver-core/src/lib.rs +134 -0
- starweaver-0.3.0/crates/starweaver-core/src/subagent.rs +124 -0
- starweaver-0.3.0/crates/starweaver-core/src/trace.rs +121 -0
- starweaver-0.3.0/crates/starweaver-core/src/xml.rs +167 -0
- starweaver-0.3.0/crates/starweaver-envd-core/Cargo.toml +23 -0
- starweaver-0.3.0/crates/starweaver-envd-core/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-envd-core/src/error.rs +74 -0
- starweaver-0.3.0/crates/starweaver-envd-core/src/lib.rs +40 -0
- starweaver-0.3.0/crates/starweaver-envd-core/src/request.rs +451 -0
- starweaver-0.3.0/crates/starweaver-envd-core/src/rpc.rs +119 -0
- starweaver-0.3.0/crates/starweaver-envd-core/src/service.rs +106 -0
- starweaver-0.3.0/crates/starweaver-envd-core/src/types.rs +217 -0
- starweaver-0.3.0/crates/starweaver-environment/Cargo.toml +33 -0
- starweaver-0.3.0/crates/starweaver-environment/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-environment/src/composite_provider.rs +1014 -0
- starweaver-0.3.0/crates/starweaver-environment/src/context_xml.rs +106 -0
- starweaver-0.3.0/crates/starweaver-environment/src/envd_provider/convert.rs +109 -0
- starweaver-0.3.0/crates/starweaver-environment/src/envd_provider/mod.rs +507 -0
- starweaver-0.3.0/crates/starweaver-environment/src/error.rs +23 -0
- starweaver-0.3.0/crates/starweaver-environment/src/factory.rs +284 -0
- starweaver-0.3.0/crates/starweaver-environment/src/file_tree.rs +345 -0
- starweaver-0.3.0/crates/starweaver-environment/src/lib.rs +86 -0
- starweaver-0.3.0/crates/starweaver-environment/src/local_io.rs +70 -0
- starweaver-0.3.0/crates/starweaver-environment/src/local_provider/paths.rs +142 -0
- starweaver-0.3.0/crates/starweaver-environment/src/local_provider/process.rs +217 -0
- starweaver-0.3.0/crates/starweaver-environment/src/local_provider/temp.rs +47 -0
- starweaver-0.3.0/crates/starweaver-environment/src/local_provider.rs +687 -0
- starweaver-0.3.0/crates/starweaver-environment/src/path.rs +454 -0
- starweaver-0.3.0/crates/starweaver-environment/src/policy.rs +93 -0
- starweaver-0.3.0/crates/starweaver-environment/src/provider.rs +221 -0
- starweaver-0.3.0/crates/starweaver-environment/src/search.rs +188 -0
- starweaver-0.3.0/crates/starweaver-environment/src/shell.rs +249 -0
- starweaver-0.3.0/crates/starweaver-environment/src/switchable_provider.rs +275 -0
- starweaver-0.3.0/crates/starweaver-environment/src/tests.rs +1968 -0
- starweaver-0.3.0/crates/starweaver-environment/src/types.rs +241 -0
- starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider/impls.rs +656 -0
- starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider/process.rs +140 -0
- starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider/store.rs +124 -0
- starweaver-0.3.0/crates/starweaver-environment/src/virtual_provider.rs +164 -0
- starweaver-0.3.0/crates/starweaver-model/Cargo.toml +35 -0
- starweaver-0.3.0/crates/starweaver-model/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-model/src/adapter/context.rs +85 -0
- starweaver-0.3.0/crates/starweaver-model/src/adapter/error.rs +49 -0
- starweaver-0.3.0/crates/starweaver-model/src/adapter/guard.rs +47 -0
- starweaver-0.3.0/crates/starweaver-model/src/adapter/params.rs +110 -0
- starweaver-0.3.0/crates/starweaver-model/src/adapter/traits.rs +183 -0
- starweaver-0.3.0/crates/starweaver-model/src/adapter.rs +89 -0
- starweaver-0.3.0/crates/starweaver-model/src/lib.rs +81 -0
- starweaver-0.3.0/crates/starweaver-model/src/media/data_url.rs +39 -0
- starweaver-0.3.0/crates/starweaver-model/src/media/dimensions.rs +117 -0
- starweaver-0.3.0/crates/starweaver-model/src/media/policy.rs +51 -0
- starweaver-0.3.0/crates/starweaver-model/src/media/preflight.rs +162 -0
- starweaver-0.3.0/crates/starweaver-model/src/media/types.rs +139 -0
- starweaver-0.3.0/crates/starweaver-model/src/media.rs +13 -0
- starweaver-0.3.0/crates/starweaver-model/src/message/history.rs +138 -0
- starweaver-0.3.0/crates/starweaver-model/src/message/provider.rs +90 -0
- starweaver-0.3.0/crates/starweaver-model/src/message/request_parts.rs +187 -0
- starweaver-0.3.0/crates/starweaver-model/src/message/response_parts.rs +182 -0
- starweaver-0.3.0/crates/starweaver-model/src/message/tool.rs +281 -0
- starweaver-0.3.0/crates/starweaver-model/src/message.rs +18 -0
- starweaver-0.3.0/crates/starweaver-model/src/oauth/codex_model.rs +228 -0
- starweaver-0.3.0/crates/starweaver-model/src/oauth/headers.rs +218 -0
- starweaver-0.3.0/crates/starweaver-model/src/oauth/http_client.rs +343 -0
- starweaver-0.3.0/crates/starweaver-model/src/oauth.rs +15 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/config.rs +144 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/http.rs +121 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/registry.rs +182 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/settings.rs +404 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/tests.rs +189 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/types/config_preset.rs +59 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/types/data.rs +64 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/types/settings_preset.rs +390 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets/types.rs +32 -0
- starweaver-0.3.0/crates/starweaver-model/src/presets.rs +107 -0
- starweaver-0.3.0/crates/starweaver-model/src/profile.rs +370 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/content.rs +108 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/request.rs +169 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/response.rs +95 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/settings.rs +167 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic/tests.rs +165 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/anthropic.rs +43 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/bedrock.rs +503 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/client/adapter_impl.rs +1829 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/client/factory.rs +111 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/client/output_schema.rs +131 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/client/request_options.rs +203 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/client/wire.rs +126 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/client.rs +83 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/content.rs +176 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/gemini.rs +652 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/mod.rs +79 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_chat.rs +277 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_common.rs +63 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/instructions.rs +17 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/options.rs +35 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/replay_items.rs +293 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/server_state.rs +162 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request/tools.rs +40 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/request.rs +166 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/response.rs +260 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/stream/response_parts.rs +169 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/stream.rs +614 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses/tests.rs +951 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/openai_responses.rs +96 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/settings.rs +99 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/system.rs +105 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/tests.rs +377 -0
- starweaver-0.3.0/crates/starweaver-model/src/providers/usage.rs +155 -0
- starweaver-0.3.0/crates/starweaver-model/src/registry.rs +139 -0
- starweaver-0.3.0/crates/starweaver-model/src/request/instructions.rs +185 -0
- starweaver-0.3.0/crates/starweaver-model/src/request/normalization.rs +196 -0
- starweaver-0.3.0/crates/starweaver-model/src/request/prepare.rs +406 -0
- starweaver-0.3.0/crates/starweaver-model/src/request/types.rs +75 -0
- starweaver-0.3.0/crates/starweaver-model/src/request.rs +18 -0
- starweaver-0.3.0/crates/starweaver-model/src/settings.rs +707 -0
- starweaver-0.3.0/crates/starweaver-model/src/stream.rs +219 -0
- starweaver-0.3.0/crates/starweaver-model/src/test/function_model.rs +225 -0
- starweaver-0.3.0/crates/starweaver-model/src/test/helpers.rs +64 -0
- starweaver-0.3.0/crates/starweaver-model/src/test/scripted.rs +212 -0
- starweaver-0.3.0/crates/starweaver-model/src/test.rs +11 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/audit.rs +322 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/client.rs +172 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/config.rs +270 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/reqwest_client.rs +244 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/retry.rs +447 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/sse.rs +128 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/types.rs +77 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport/websocket.rs +1196 -0
- starweaver-0.3.0/crates/starweaver-model/src/transport.rs +30 -0
- starweaver-0.3.0/crates/starweaver-model/src/wrappers/concurrency.rs +222 -0
- starweaver-0.3.0/crates/starweaver-model/src/wrappers/fallback.rs +241 -0
- starweaver-0.3.0/crates/starweaver-model/src/wrappers/hooked.rs +427 -0
- starweaver-0.3.0/crates/starweaver-model/src/wrappers/profile_override.rs +127 -0
- starweaver-0.3.0/crates/starweaver-model/src/wrappers.rs +18 -0
- starweaver-0.3.0/crates/starweaver-model/tests/client.rs +610 -0
- starweaver-0.3.0/crates/starweaver-model/tests/coverage_core.rs +751 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixture_schema.rs +129 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/document_input.json +51 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/image_input.json +86 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/max_token_stop.json +78 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/provider_thinking_replay.json +94 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/safety_style_response.json +70 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/text_response.json +80 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/thinking_block.json +88 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/thinking_request.json +85 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_choice_parallel_policy.json +99 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_result_error_cache_control.json +80 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_return_history.json +165 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_use_response.json +122 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/anthropic/tool_use_with_text_preamble.json +120 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/additional_model_response_fields.json +103 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/content_block_variants.json +92 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/document_resource_input.json +46 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/max_token_stop.json +87 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/provider_status_error.json +72 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/sigv4_gateway_metadata.json +99 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/strict_tool_call.json +142 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/text_response.json +90 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/tool_result_error.json +82 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/tool_return_history.json +190 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/tool_use_response.json +140 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/bedrock/typed_request_fields.json +82 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/audio_video_document_input.json +64 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/function_call_missing_id.json +127 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/generation_config_seed_topk.json +62 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/malformed_candidate.json +57 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/max_token_stop.json +80 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/multimodal_input.json +90 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/native_code_execution_request.json +79 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/native_google_search_request.json +79 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/safety_block.json +85 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/text_response.json +89 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/tool_config_function_calling_mode.json +142 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/tool_return_history.json +186 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/gemini/tool_use_response.json +137 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/content_filter_response.json +70 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/file_input.json +45 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/json_object_mode.json +85 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/malformed_choices.json +56 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/multimodal_user_input.json +90 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/parallel_tool_calls.json +116 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/prompt_cache_settings.json +46 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/refusal_response.json +76 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/text_response.json +137 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_call_response.json +151 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_auto.json +118 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_named_tool.json +124 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_none.json +118 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_choice_required.json +118 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_chat/tool_return_history.json +196 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/conversation_auto_trim.json +73 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/file_image_output.json +83 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/file_input.json +43 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/multimodal_user_input.json +88 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_mcp_approval_response.json +89 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_mcp_request.json +37 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_web_search_request.json +85 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/native_web_search_response.json +94 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/previous_response_auto_trim.json +70 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/previous_response_compaction_boundary.json +77 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/prompt_cache_settings.json +48 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/provider_refusal.json +70 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/reasoning_item.json +95 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/status_error.json +75 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/structured_output_response.json +80 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/summary_item.json +99 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/text_response.json +86 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_auto.json +121 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_named_tool.json +125 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_none.json +121 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_choice_required.json +121 -0
- starweaver-0.3.0/crates/starweaver-model/tests/fixtures/openai_responses/tool_response.json +100 -0
- starweaver-0.3.0/crates/starweaver-model/tests/http_config.rs +172 -0
- starweaver-0.3.0/crates/starweaver-model/tests/media_preflight.rs +170 -0
- starweaver-0.3.0/crates/starweaver-model/tests/message_ast.rs +74 -0
- starweaver-0.3.0/crates/starweaver-model/tests/model_wrappers.rs +124 -0
- starweaver-0.3.0/crates/starweaver-model/tests/multimodal_mapping.rs +187 -0
- starweaver-0.3.0/crates/starweaver-model/tests/native_mcp.rs +34 -0
- starweaver-0.3.0/crates/starweaver-model/tests/native_tool_coverage.rs +182 -0
- starweaver-0.3.0/crates/starweaver-model/tests/oauth_provider.rs +634 -0
- starweaver-0.3.0/crates/starweaver-model/tests/protocol_agent_loop_mapping.rs +1593 -0
- starweaver-0.3.0/crates/starweaver-model/tests/protocol_client_agent_loop.rs +798 -0
- starweaver-0.3.0/crates/starweaver-model/tests/replay.rs +773 -0
- starweaver-0.3.0/crates/starweaver-model/tests/replay_tooling.rs +107 -0
- starweaver-0.3.0/crates/starweaver-model/tests/request_guard.rs +84 -0
- starweaver-0.3.0/crates/starweaver-model/tests/request_parameters.rs +2000 -0
- starweaver-0.3.0/crates/starweaver-model/tests/request_preparation.rs +495 -0
- starweaver-0.3.0/crates/starweaver-model/tests/stream_replay.rs +122 -0
- starweaver-0.3.0/crates/starweaver-model/tests/support/mod.rs +3 -0
- starweaver-0.3.0/crates/starweaver-model/tests/support/replay.rs +96 -0
- starweaver-0.3.0/crates/starweaver-model/tests/test_models.rs +214 -0
- starweaver-0.3.0/crates/starweaver-oauth/Cargo.toml +30 -0
- starweaver-0.3.0/crates/starweaver-oauth/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-oauth/src/codex.rs +416 -0
- starweaver-0.3.0/crates/starweaver-oauth/src/error.rs +68 -0
- starweaver-0.3.0/crates/starweaver-oauth/src/jwt.rs +103 -0
- starweaver-0.3.0/crates/starweaver-oauth/src/lib.rs +57 -0
- starweaver-0.3.0/crates/starweaver-oauth/src/store.rs +217 -0
- starweaver-0.3.0/crates/starweaver-oauth/src/token_source.rs +80 -0
- starweaver-0.3.0/crates/starweaver-oauth/src/types.rs +198 -0
- starweaver-0.3.0/crates/starweaver-oauth/tests/oauth.rs +289 -0
- starweaver-0.3.0/crates/starweaver-oauth-provider/Cargo.toml +29 -0
- starweaver-0.3.0/crates/starweaver-oauth-provider/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-oauth-provider/src/lib.rs +424 -0
- starweaver-0.3.0/crates/starweaver-oauth-provider/tests/refresh.rs +121 -0
- starweaver-0.3.0/crates/starweaver-runtime/Cargo.toml +32 -0
- starweaver-0.3.0/crates/starweaver-runtime/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/helpers.rs +126 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/overrides.rs +167 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/run_loop/entrypoints.rs +183 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/run_loop.rs +1694 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/run_loop_helpers.rs +161 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/capability_hooks.rs +173 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/checkpoint.rs +49 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/compact_context.rs +97 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/errors.rs +42 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/history_sanitize.rs +122 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/output_validation.rs +139 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/prepare_tools_safety.rs +67 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/previous_response.rs +136 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/request_building.rs +530 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/request_parts.rs +61 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/steering.rs +100 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/tool_media.rs +54 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/trace_events.rs +134 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers/usage_limits.rs +99 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/runtime_helpers.rs +21 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent/types.rs +319 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/agent.rs +419 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/capability/bundle.rs +254 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/capability/error.rs +27 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/capability/hooks.rs +344 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/capability/ordering.rs +119 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/capability/spec.rs +132 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/capability.rs +16 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/direct.rs +119 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/executor.rs +240 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/goal.rs +475 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/graph.rs +246 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/instructions.rs +63 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/iteration.rs +177 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/lib.rs +66 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/output/function.rs +151 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/output/policy.rs +219 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/output/types.rs +227 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/output/validation.rs +121 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/output.rs +17 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery/classify.rs +82 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery/openai.rs +253 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery/overflow.rs +195 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/retry_recovery.rs +379 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/run.rs +169 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/stream.rs +471 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/trace/memory.rs +122 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/trace/otel.rs +102 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/trace/policy.rs +334 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/trace/recorder.rs +60 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/trace/tests.rs +210 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/trace/types.rs +205 -0
- starweaver-0.3.0/crates/starweaver-runtime/src/trace.rs +15 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/agent.rs +1094 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/agent_readiness.rs +143 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/capability_bundle.rs +203 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/context.rs +562 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/dependencies.rs +108 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/dependency_aware_capability.rs +103 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/direct.rs +118 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/dynamic_instructions.rs +68 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/executor.rs +189 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/graph.rs +161 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/iteration.rs +46 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/layering.rs +15 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/output_functions.rs +304 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/output_policy.rs +73 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/override.rs +60 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/prepare_tools.rs +67 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/request_pipeline.rs +701 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/session_affinity.rs +153 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/stream.rs +504 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/stream_deltas.rs +87 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/structured_output.rs +245 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/tool_control_flow.rs +177 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/tool_loop.rs +489 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/tool_metadata.rs +59 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/tool_retries.rs +313 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/toolset.rs +82 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/trace.rs +434 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/trace_model.rs +202 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/typed_output.rs +91 -0
- starweaver-0.3.0/crates/starweaver-runtime/tests/usage_history.rs +915 -0
- starweaver-0.3.0/crates/starweaver-session/Cargo.toml +30 -0
- starweaver-0.3.0/crates/starweaver-session/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-session/src/approval.rs +571 -0
- starweaver-0.3.0/crates/starweaver-session/src/error.rs +26 -0
- starweaver-0.3.0/crates/starweaver-session/src/input.rs +149 -0
- starweaver-0.3.0/crates/starweaver-session/src/lib.rs +30 -0
- starweaver-0.3.0/crates/starweaver-session/src/records.rs +290 -0
- starweaver-0.3.0/crates/starweaver-session/src/resume.rs +39 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/contract.rs +215 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/memory/approvals.rs +72 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/memory/checkpoints.rs +59 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/memory/runs.rs +110 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/memory/sessions.rs +108 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/memory/streams.rs +92 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/memory/traces.rs +91 -0
- starweaver-0.3.0/crates/starweaver-session/src/store/memory.rs +214 -0
- starweaver-0.3.0/crates/starweaver-session/src/store.rs +92 -0
- starweaver-0.3.0/crates/starweaver-session/src/tests.rs +384 -0
- starweaver-0.3.0/crates/starweaver-session/src/trace.rs +89 -0
- starweaver-0.3.0/crates/starweaver-stream/Cargo.toml +29 -0
- starweaver-0.3.0/crates/starweaver-stream/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-stream/src/adapters.rs +257 -0
- starweaver-0.3.0/crates/starweaver-stream/src/archive.rs +239 -0
- starweaver-0.3.0/crates/starweaver-stream/src/compaction.rs +215 -0
- starweaver-0.3.0/crates/starweaver-stream/src/display/custom.rs +478 -0
- starweaver-0.3.0/crates/starweaver-stream/src/display/projector/model.rs +304 -0
- starweaver-0.3.0/crates/starweaver-stream/src/display/projector/run.rs +107 -0
- starweaver-0.3.0/crates/starweaver-stream/src/display/projector/tool.rs +193 -0
- starweaver-0.3.0/crates/starweaver-stream/src/display/projector.rs +156 -0
- starweaver-0.3.0/crates/starweaver-stream/src/display/types.rs +353 -0
- starweaver-0.3.0/crates/starweaver-stream/src/display.rs +11 -0
- starweaver-0.3.0/crates/starweaver-stream/src/envelope.rs +116 -0
- starweaver-0.3.0/crates/starweaver-stream/src/error.rs +20 -0
- starweaver-0.3.0/crates/starweaver-stream/src/lib.rs +42 -0
- starweaver-0.3.0/crates/starweaver-stream/src/replay.rs +447 -0
- starweaver-0.3.0/crates/starweaver-stream/src/sanitizer.rs +234 -0
- starweaver-0.3.0/crates/starweaver-stream/src/tests.rs +1128 -0
- starweaver-0.3.0/crates/starweaver-stream/src/transport.rs +148 -0
- starweaver-0.3.0/crates/starweaver-stream/tests/sse_replay.rs +61 -0
- starweaver-0.3.0/crates/starweaver-stream/tests/ui_adapters.rs +186 -0
- starweaver-0.3.0/crates/starweaver-tools/Cargo.toml +29 -0
- starweaver-0.3.0/crates/starweaver-tools/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-tools/src/combinators/approval.rs +248 -0
- starweaver-0.3.0/crates/starweaver-tools/src/combinators/deferred.rs +219 -0
- starweaver-0.3.0/crates/starweaver-tools/src/combinators/renamed.rs +175 -0
- starweaver-0.3.0/crates/starweaver-tools/src/combinators.rs +320 -0
- starweaver-0.3.0/crates/starweaver-tools/src/context.rs +181 -0
- starweaver-0.3.0/crates/starweaver-tools/src/error.rs +306 -0
- starweaver-0.3.0/crates/starweaver-tools/src/execution_hooks.rs +218 -0
- starweaver-0.3.0/crates/starweaver-tools/src/instruction.rs +47 -0
- starweaver-0.3.0/crates/starweaver-tools/src/lib.rs +53 -0
- starweaver-0.3.0/crates/starweaver-tools/src/mcp/config.rs +152 -0
- starweaver-0.3.0/crates/starweaver-tools/src/mcp/native.rs +119 -0
- starweaver-0.3.0/crates/starweaver-tools/src/mcp/toolset.rs +137 -0
- starweaver-0.3.0/crates/starweaver-tools/src/mcp/transport.rs +124 -0
- starweaver-0.3.0/crates/starweaver-tools/src/mcp.rs +268 -0
- starweaver-0.3.0/crates/starweaver-tools/src/prefixed.rs +184 -0
- starweaver-0.3.0/crates/starweaver-tools/src/registry.rs +576 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool/function.rs +279 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool/result.rs +88 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool/typed.rs +325 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool.rs +341 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy/format.rs +72 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy/index.rs +127 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy/inner.rs +397 -0
- starweaver-0.3.0/crates/starweaver-tools/src/tool_proxy.rs +1293 -0
- starweaver-0.3.0/crates/starweaver-tools/src/toolset.rs +543 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/combinators.rs +214 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/control_flow.rs +72 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/mcp.rs +144 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/metadata.rs +281 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/prefixed.rs +85 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/registry_extra.rs +673 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/retries.rs +97 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/tool_proxy.rs +781 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/toolset.rs +164 -0
- starweaver-0.3.0/crates/starweaver-tools/tests/typed_tool.rs +148 -0
- starweaver-0.3.0/crates/starweaver-usage/Cargo.toml +25 -0
- starweaver-0.3.0/crates/starweaver-usage/README.md +188 -0
- starweaver-0.3.0/crates/starweaver-usage/src/lib.rs +542 -0
- starweaver-0.3.0/crates/starweaver-usage/src/pricing/catalog.rs +697 -0
- starweaver-0.3.0/crates/starweaver-usage/src/pricing/profile.rs +286 -0
- starweaver-0.3.0/crates/starweaver-usage/src/pricing.rs +506 -0
- starweaver-0.3.0/packages/starweaver-py/Cargo.lock +3084 -0
- starweaver-0.3.0/packages/starweaver-py/Cargo.toml +36 -0
- starweaver-0.3.0/packages/starweaver-py/README.md +100 -0
- starweaver-0.3.0/packages/starweaver-py/src/agent.rs +1264 -0
- starweaver-0.3.0/packages/starweaver-py/src/capability.rs +64 -0
- starweaver-0.3.0/packages/starweaver-py/src/context.rs +72 -0
- starweaver-0.3.0/packages/starweaver-py/src/conversion.rs +71 -0
- starweaver-0.3.0/packages/starweaver-py/src/environment.rs +483 -0
- starweaver-0.3.0/packages/starweaver-py/src/errors.rs +5 -0
- starweaver-0.3.0/packages/starweaver-py/src/lib.rs +67 -0
- starweaver-0.3.0/packages/starweaver-py/src/media.rs +206 -0
- starweaver-0.3.0/packages/starweaver-py/src/model.rs +464 -0
- starweaver-0.3.0/packages/starweaver-py/src/output.rs +692 -0
- starweaver-0.3.0/packages/starweaver-py/src/runtime.rs +228 -0
- starweaver-0.3.0/packages/starweaver-py/src/skills.rs +302 -0
- starweaver-0.3.0/packages/starweaver-py/src/stream.rs +61 -0
- starweaver-0.3.0/packages/starweaver-py/src/subagent.rs +81 -0
- starweaver-0.3.0/packages/starweaver-py/src/testing.rs +287 -0
- starweaver-0.3.0/packages/starweaver-py/src/tool.rs +490 -0
- starweaver-0.3.0/packages/starweaver-py/src/toolset.rs +155 -0
- starweaver-0.3.0/packages/starweaver-py/tests/test_package.py +2328 -0
- starweaver-0.3.0/pyproject.toml +35 -0
- starweaver-0.3.0/python/starweaver/__init__.py +177 -0
- starweaver-0.3.0/python/starweaver/_native.pyi +543 -0
- starweaver-0.3.0/python/starweaver/agent.py +1560 -0
- starweaver-0.3.0/python/starweaver/capability.py +65 -0
- starweaver-0.3.0/python/starweaver/environment.py +199 -0
- starweaver-0.3.0/python/starweaver/errors.py +85 -0
- starweaver-0.3.0/python/starweaver/media.py +73 -0
- starweaver-0.3.0/python/starweaver/model.py +411 -0
- starweaver-0.3.0/python/starweaver/output.py +366 -0
- starweaver-0.3.0/python/starweaver/py.typed +0 -0
- starweaver-0.3.0/python/starweaver/resources.py +81 -0
- starweaver-0.3.0/python/starweaver/runtime.py +89 -0
- starweaver-0.3.0/python/starweaver/skills.py +266 -0
- starweaver-0.3.0/python/starweaver/store.py +557 -0
- starweaver-0.3.0/python/starweaver/stream_adapter.py +58 -0
- starweaver-0.3.0/python/starweaver/subagent.py +58 -0
- starweaver-0.3.0/python/starweaver/testing.py +78 -0
- starweaver-0.3.0/python/starweaver/tool.py +443 -0
- 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
|
+
}
|