imperal-sdk 4.2.8__tar.gz → 4.2.10__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.
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/CHANGELOG.md +38 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/PKG-INFO +1 -1
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/__init__.py +1 -1
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/extension.py +10 -1
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/imperal.schema.json +73 -1
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.github/workflows/identity-contract.yml +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.github/workflows/publish.yml +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.github/workflows/test.yml +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.gitignore +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/LICENSE +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/README.md +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/api_surface.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/pyproject.toml +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/.codebase-index-cache.pkl +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ai/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ai/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/auth/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/auth/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/auth/middleware.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/billing/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/billing/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cache/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cache/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cache/protocol.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/action_result.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/error_codes.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/filters.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/guards.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/handler.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/kernel_primitives.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/narration.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/narration_guard.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/prompt.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/refusal.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/retry.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cli/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cli/main.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/config/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/config/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/context.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/db/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/db/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/errors.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/extension.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/extensions/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/extensions/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/http/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/http/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/manifest.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/manifest_schema.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/notify/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/notify/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/icnli_integrity_rules.txt +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/kernel_formatting_rule.txt +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/kernel_proactivity_rule.txt +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/protocols.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/rpc/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/rpc/codec.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/rpc/contract.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/executor.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/llm_provider.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/message_adapter.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/action_result.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/balance_info.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/chat_result.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/completion_result.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/document.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/event.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/file_info.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/function_call.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/http_response.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/limits_result.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/subscription_info.schema.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/exceptions.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/panel_handler.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/spec.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/security/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/security/call_token.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/skeleton/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/skeleton/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/storage/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/storage/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/store/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/store/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/store/exceptions.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/testing/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/testing/mock_context.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/testing/mock_secrets.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/generate_api_surface.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/validate_identity_contract.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/action_result.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/chat_result.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/client_contracts.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/contracts.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/contributions.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/events.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/health.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/identity.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/models.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/pagination.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/store_contracts.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/actions.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/base.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/data.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/display.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/feedback.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/graph.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/input_components.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/interactive.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/layout.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/theme.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/validator.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/validator_v1_6_0.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/conftest.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/contracts/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/contracts/test_store_contracts.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/fixtures/openapi/auth-gateway.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/fixtures/openapi/registry.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/fixtures/openapi/sharelock-cases.json +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/rpc/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/rpc/test_codec.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/rpc/test_contract.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/runtime/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/runtime/test_llm_provider_config_store.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/runtime/test_llm_provider_ctx_injection.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/store/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/store/test_list_users_client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/store/test_query_all_client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_action_result_typed.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_as_user.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_auth.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_billing.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_cache_client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_cache_model.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_call_token.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_extension_deprecation.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_filters.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_guards.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_guards_bleed.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_prompt.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_pydantic_retry.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_result.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_cli.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_client_contracts.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_config_client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_context.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_context_guards.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_contracts.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_contracts_live.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_contributions.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_document_contract.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_emits_decorator.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_error_codes.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_errors.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_event_schema_v2.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_events_health.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_extension.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_extension_v2.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_extensions_emit.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_handler_p2.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_id_shape_guard.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_identity_contract.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_imperal_schema_v2.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_kernel_primitives.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_roundtrip_gate.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_schema.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_v2_events.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_v2_other_sections.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_v2_webhooks.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_validator_v2.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_mock_context.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_models.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_narration_emission.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_narration_guard.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_openai_max_completion_tokens.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_pagination.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_panel_rendering_contract.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_panels.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_skeleton_decorator.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_spec_validation.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_tools_client.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_fileupload_enhanced.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_html.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_image_enhanced.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_open.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_theme.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_user.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_v7_emit_refusal.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator_drift.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator_pep563.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator_v1_6_0_rules.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_write_arg_bleed.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/tools/__init__.py +0 -0
- {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/tools/test_generate_api_surface.py +0 -0
|
@@ -2,6 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `imperal-sdk` are documented here.
|
|
4
4
|
|
|
5
|
+
## 4.2.10 — 2026-05-13
|
|
6
|
+
|
|
7
|
+
**Feat: `@chat.function` default `chain_callable=True` for ALL action_types (was write/destructive only)**
|
|
8
|
+
|
|
9
|
+
V19 federal default: `chain_callable` now defaults to `True` for read
|
|
10
|
+
action_types too, not just `write` / `destructive`. This closes the
|
|
11
|
+
wrapper-LLM paraphrase risk for typed read handlers (`list_*`,
|
|
12
|
+
`search_*`, `get_*`) — when the classifier picks a read with concrete
|
|
13
|
+
args, the kernel `chain_executor._resolve_typed_dispatch` dispatches
|
|
14
|
+
the typed call directly instead of routing through the ChatExtension
|
|
15
|
+
BYOLLM tool-use loop.
|
|
16
|
+
|
|
17
|
+
Authors who need the wrapper-LLM tool-use loop for their handler
|
|
18
|
+
(conversational catch-all like `case_chat`) must explicitly set
|
|
19
|
+
`chain_callable=False`. The change is backward-compatible — existing
|
|
20
|
+
manifests with explicit `True` / `False` are unaffected; only the
|
|
21
|
+
implicit default for reads flips.
|
|
22
|
+
|
|
23
|
+
Migration: run `imperal build` to regenerate manifests; read functions
|
|
24
|
+
without explicit `chain_callable` will now emit `chain_callable: true`.
|
|
25
|
+
|
|
26
|
+
Federal invariant: closes the wrapper-LLM paraphrase risk class for
|
|
27
|
+
read intents, completing the `I-CHAT-FUNCTION-VERBATIM-PARAMS`
|
|
28
|
+
structural enforcement.
|
|
29
|
+
|
|
30
|
+
## 4.2.9 — 2026-05-13
|
|
31
|
+
|
|
32
|
+
**Fix: regenerate `src/imperal_sdk/schemas/imperal.schema.json` after SecretDecl addition**
|
|
33
|
+
|
|
34
|
+
v4.2.8 added the `SecretDecl` Pydantic model + `Manifest.secrets` field but
|
|
35
|
+
forgot to regenerate the committed static JSON Schema mirror. CI gate
|
|
36
|
+
`test_spec_validation.py::test_static_schema_matches_runtime_export[imperal]`
|
|
37
|
+
caught the drift — runtime Pydantic schema (with `SecretDecl` + `secrets[]`)
|
|
38
|
+
no longer matched the committed file.
|
|
39
|
+
|
|
40
|
+
This release ships the regenerated `imperal.schema.json` so the static
|
|
41
|
+
artifact equals the runtime model again. No public API change.
|
|
42
|
+
|
|
5
43
|
## 4.2.8 — 2026-05-13
|
|
6
44
|
|
|
7
45
|
**Fix: `secrets[]` finally in `Manifest` Pydantic schema**
|
|
@@ -147,7 +147,16 @@ class ChatExtension:
|
|
|
147
147
|
``archive_drafts_in_project``.
|
|
148
148
|
"""
|
|
149
149
|
if chain_callable is None:
|
|
150
|
-
|
|
150
|
+
# V19 (federal v4.2.10, 2026-05-13): default True for ALL
|
|
151
|
+
# action_types — reads also typed-dispatch when the classifier
|
|
152
|
+
# picked them, closing the wrapper-LLM paraphrase risk on
|
|
153
|
+
# `list_*`, `search_*`, `get_*` style handlers. Authors who
|
|
154
|
+
# need the wrapper-LLM tool-use loop (catch-all conversational
|
|
155
|
+
# handlers like `case_chat`) must set `chain_callable=False`
|
|
156
|
+
# explicitly. Pre-v4.2.10 default kept `False` for reads;
|
|
157
|
+
# backward-compatible because action_type in ("write",
|
|
158
|
+
# "destructive") already returned True and continues to.
|
|
159
|
+
chain_callable = True
|
|
151
160
|
|
|
152
161
|
def decorator(func: Callable) -> Callable:
|
|
153
162
|
# Auto-detect Pydantic BaseModel params + return type
|
|
@@ -224,6 +224,63 @@
|
|
|
224
224
|
"title": "Schedule",
|
|
225
225
|
"type": "object"
|
|
226
226
|
},
|
|
227
|
+
"SecretDecl": {
|
|
228
|
+
"additionalProperties": false,
|
|
229
|
+
"description": "One entry in `manifest['secrets']` — EXT-SECRETS-V1 (v4.2.2+).\n\nMirrors :class:`imperal_sdk.secrets.spec.SecretSpec` after\n``to_manifest_dict()``. The Pydantic model exists so\n:func:`validate_manifest_dict` round-trips the emitted shape — closes\nthe `I-MANIFEST-EMITTER-SCHEMA-SYMMETRIC` drift gap that lived\nsilently from v4.2.2 → v4.2.7.",
|
|
230
|
+
"properties": {
|
|
231
|
+
"name": {
|
|
232
|
+
"pattern": "^[a-z][a-z0-9_]{0,62}$",
|
|
233
|
+
"title": "Name",
|
|
234
|
+
"type": "string"
|
|
235
|
+
},
|
|
236
|
+
"description": {
|
|
237
|
+
"minLength": 1,
|
|
238
|
+
"title": "Description",
|
|
239
|
+
"type": "string"
|
|
240
|
+
},
|
|
241
|
+
"required": {
|
|
242
|
+
"default": false,
|
|
243
|
+
"title": "Required",
|
|
244
|
+
"type": "boolean"
|
|
245
|
+
},
|
|
246
|
+
"write_mode": {
|
|
247
|
+
"default": "user",
|
|
248
|
+
"enum": [
|
|
249
|
+
"user",
|
|
250
|
+
"extension",
|
|
251
|
+
"both"
|
|
252
|
+
],
|
|
253
|
+
"title": "Write Mode",
|
|
254
|
+
"type": "string"
|
|
255
|
+
},
|
|
256
|
+
"max_bytes": {
|
|
257
|
+
"default": 4096,
|
|
258
|
+
"maximum": 65536,
|
|
259
|
+
"minimum": 1,
|
|
260
|
+
"title": "Max Bytes",
|
|
261
|
+
"type": "integer"
|
|
262
|
+
},
|
|
263
|
+
"rotation_hint_days": {
|
|
264
|
+
"anyOf": [
|
|
265
|
+
{
|
|
266
|
+
"minimum": 1,
|
|
267
|
+
"type": "integer"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"type": "null"
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
"default": null,
|
|
274
|
+
"title": "Rotation Hint Days"
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
"required": [
|
|
278
|
+
"name",
|
|
279
|
+
"description"
|
|
280
|
+
],
|
|
281
|
+
"title": "SecretDecl",
|
|
282
|
+
"type": "object"
|
|
283
|
+
},
|
|
227
284
|
"Signal": {
|
|
228
285
|
"additionalProperties": false,
|
|
229
286
|
"description": "One entry in `manifest['signals']`.",
|
|
@@ -254,7 +311,7 @@
|
|
|
254
311
|
},
|
|
255
312
|
"Tool": {
|
|
256
313
|
"additionalProperties": false,
|
|
257
|
-
"description": "One entry in `manifest['tools']`.\n\nFederal v4.0.0
|
|
314
|
+
"description": "One entry in `manifest['tools']`.\n\nFederal v4.0.0 — typed dispatch fields (action_type, chain_callable,\neffects, params_schema, return_schema, event) declared at top level so\nthe kernel chain planner can route deterministically without\nre-deriving from extension code.",
|
|
258
315
|
"properties": {
|
|
259
316
|
"name": {
|
|
260
317
|
"minLength": 1,
|
|
@@ -704,6 +761,21 @@
|
|
|
704
761
|
"default": null,
|
|
705
762
|
"title": "System"
|
|
706
763
|
},
|
|
764
|
+
"secrets": {
|
|
765
|
+
"anyOf": [
|
|
766
|
+
{
|
|
767
|
+
"items": {
|
|
768
|
+
"$ref": "#/$defs/SecretDecl"
|
|
769
|
+
},
|
|
770
|
+
"type": "array"
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"type": "null"
|
|
774
|
+
}
|
|
775
|
+
],
|
|
776
|
+
"default": null,
|
|
777
|
+
"title": "Secrets"
|
|
778
|
+
},
|
|
707
779
|
"name": {
|
|
708
780
|
"anyOf": [
|
|
709
781
|
{
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/kernel_proactivity_rule.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/completion_result.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/subscription_info.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/validate_identity_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|