imperal-sdk 4.2.9__tar.gz → 4.2.11__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.9 → imperal_sdk-4.2.11}/CHANGELOG.md +48 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/PKG-INFO +1 -1
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/__init__.py +1 -1
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/extension.py +10 -1
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/interactive.py +17 -3
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/.github/workflows/identity-contract.yml +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/.github/workflows/publish.yml +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/.github/workflows/test.yml +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/.gitignore +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/LICENSE +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/README.md +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/api_surface.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/pyproject.toml +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/.codebase-index-cache.pkl +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ai/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ai/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/auth/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/auth/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/auth/middleware.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/billing/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/billing/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/cache/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/cache/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/cache/protocol.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/action_result.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/error_codes.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/filters.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/guards.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/handler.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/kernel_primitives.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/narration.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/narration_guard.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/prompt.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/refusal.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/chat/retry.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/cli/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/cli/main.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/config/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/config/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/context.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/db/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/db/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/errors.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/extension.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/extensions/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/extensions/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/http/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/http/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/manifest.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/manifest_schema.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/notify/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/notify/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/prompts/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/prompts/icnli_integrity_rules.txt +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/prompts/kernel_formatting_rule.txt +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/prompts/kernel_proactivity_rule.txt +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/protocols.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/rpc/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/rpc/codec.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/rpc/contract.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/runtime/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/runtime/executor.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/runtime/llm_provider.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/runtime/message_adapter.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/action_result.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/balance_info.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/chat_result.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/completion_result.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/document.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/event.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/file_info.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/function_call.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/http_response.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/imperal.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/limits_result.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/schemas/subscription_info.schema.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/secrets/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/secrets/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/secrets/exceptions.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/secrets/panel_handler.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/secrets/spec.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/security/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/security/call_token.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/skeleton/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/skeleton/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/storage/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/storage/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/store/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/store/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/store/exceptions.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/testing/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/testing/mock_context.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/testing/mock_secrets.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/tools/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/tools/client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/tools/generate_api_surface.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/tools/validate_identity_contract.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/action_result.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/chat_result.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/client_contracts.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/contracts.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/contributions.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/events.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/health.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/identity.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/models.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/pagination.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/types/store_contracts.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/actions.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/base.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/data.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/display.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/feedback.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/graph.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/input_components.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/layout.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/ui/theme.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/validator.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/src/imperal_sdk/validator_v1_6_0.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/conftest.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/contracts/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/contracts/test_store_contracts.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/fixtures/openapi/auth-gateway.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/fixtures/openapi/registry.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/fixtures/openapi/sharelock-cases.json +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/rpc/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/rpc/test_codec.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/rpc/test_contract.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/runtime/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/runtime/test_llm_provider_config_store.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/runtime/test_llm_provider_ctx_injection.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/store/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/store/test_list_users_client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/store/test_query_all_client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_action_result_typed.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_as_user.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_auth.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_billing.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_cache_client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_cache_model.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_call_token.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_chat_extension_deprecation.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_chat_filters.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_chat_guards.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_chat_guards_bleed.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_chat_prompt.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_chat_pydantic_retry.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_chat_result.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_cli.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_client_contracts.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_config_client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_context.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_context_guards.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_contracts.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_contracts_live.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_contributions.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_document_contract.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_emits_decorator.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_error_codes.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_errors.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_event_schema_v2.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_events_health.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_extension.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_extension_v2.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_extensions_emit.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_handler_p2.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_id_shape_guard.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_identity_contract.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_imperal_schema_v2.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_kernel_primitives.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_manifest.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_manifest_roundtrip_gate.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_manifest_schema.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_manifest_v2_events.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_manifest_v2_other_sections.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_manifest_v2_webhooks.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_manifest_validator_v2.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_mock_context.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_models.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_narration_emission.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_narration_guard.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_openai_max_completion_tokens.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_pagination.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_panel_rendering_contract.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_panels.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_skeleton_decorator.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_spec_validation.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_tools_client.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_ui.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_ui_fileupload_enhanced.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_ui_html.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_ui_image_enhanced.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_ui_open.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_ui_theme.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_user.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_v7_emit_refusal.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_validator.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_validator_drift.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_validator_pep563.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_validator_v1_6_0_rules.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/test_write_arg_bleed.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/tools/__init__.py +0 -0
- {imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/tests/tools/test_generate_api_surface.py +0 -0
|
@@ -2,6 +2,54 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `imperal-sdk` are documented here.
|
|
4
4
|
|
|
5
|
+
## 4.2.11 — 2026-05-13
|
|
6
|
+
|
|
7
|
+
**Fix: `ui.Link(text=...)` no longer breaks panel render**
|
|
8
|
+
|
|
9
|
+
`ui.Link` now accepts the visible text via either `label=` (canonical) or
|
|
10
|
+
`text=` (alias matching the HTML/JSX `<a>text</a>` mental model). Before
|
|
11
|
+
v4.2.11, passing `text=` raised `TypeError: Link() got an unexpected
|
|
12
|
+
keyword argument 'text'` at panel-render time, which killed the right
|
|
13
|
+
panel for any extension that used the natural-looking kwarg.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
# All three are now equivalent
|
|
17
|
+
ui.Link("Read docs", href="https://docs.imperal.io") # positional
|
|
18
|
+
ui.Link(label="Read docs", href="https://docs.imperal.io") # canonical kwarg
|
|
19
|
+
ui.Link(text="Read docs", href="https://docs.imperal.io") # alias kwarg
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Calling `ui.Link()` with neither `label` nor `text` raises a clear
|
|
23
|
+
`TypeError("ui.Link requires a 'label' (or 'text' alias)")` instead of
|
|
24
|
+
silently rendering an empty anchor. `label` wins if both are passed.
|
|
25
|
+
|
|
26
|
+
No migration required — existing `label=` callers are unchanged.
|
|
27
|
+
|
|
28
|
+
## 4.2.10 — 2026-05-13
|
|
29
|
+
|
|
30
|
+
**Feat: `@chat.function` default `chain_callable=True` for ALL action_types (was write/destructive only)**
|
|
31
|
+
|
|
32
|
+
V19 federal default: `chain_callable` now defaults to `True` for read
|
|
33
|
+
action_types too, not just `write` / `destructive`. This closes the
|
|
34
|
+
wrapper-LLM paraphrase risk for typed read handlers (`list_*`,
|
|
35
|
+
`search_*`, `get_*`) — when the classifier picks a read with concrete
|
|
36
|
+
args, the kernel `chain_executor._resolve_typed_dispatch` dispatches
|
|
37
|
+
the typed call directly instead of routing through the ChatExtension
|
|
38
|
+
BYOLLM tool-use loop.
|
|
39
|
+
|
|
40
|
+
Authors who need the wrapper-LLM tool-use loop for their handler
|
|
41
|
+
(conversational catch-all like `case_chat`) must explicitly set
|
|
42
|
+
`chain_callable=False`. The change is backward-compatible — existing
|
|
43
|
+
manifests with explicit `True` / `False` are unaffected; only the
|
|
44
|
+
implicit default for reads flips.
|
|
45
|
+
|
|
46
|
+
Migration: run `imperal build` to regenerate manifests; read functions
|
|
47
|
+
without explicit `chain_callable` will now emit `chain_callable: true`.
|
|
48
|
+
|
|
49
|
+
Federal invariant: closes the wrapper-LLM paraphrase risk class for
|
|
50
|
+
read intents, completing the `I-CHAT-FUNCTION-VERBATIM-PARAMS`
|
|
51
|
+
structural enforcement.
|
|
52
|
+
|
|
5
53
|
## 4.2.9 — 2026-05-13
|
|
6
54
|
|
|
7
55
|
**Fix: regenerate `src/imperal_sdk/schemas/imperal.schema.json` after SecretDecl addition**
|
|
@@ -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
|
|
@@ -73,9 +73,23 @@ def Tooltip(content: str, children: UINode | None = None) -> UINode:
|
|
|
73
73
|
return UINode(type="Tooltip", props=props)
|
|
74
74
|
|
|
75
75
|
|
|
76
|
-
def Link(
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
def Link(
|
|
77
|
+
label: str = "",
|
|
78
|
+
href: str = "",
|
|
79
|
+
on_click: UIAction | None = None,
|
|
80
|
+
*,
|
|
81
|
+
text: str = "",
|
|
82
|
+
) -> UINode:
|
|
83
|
+
"""Hyperlink — navigates via href or fires on_click action.
|
|
84
|
+
|
|
85
|
+
The visible text can be passed as either ``label`` (canonical) or
|
|
86
|
+
``text`` (alias matching the HTML/JSX `<a>text</a>` mental model).
|
|
87
|
+
Exactly one must be provided; ``label`` wins if both are set.
|
|
88
|
+
"""
|
|
89
|
+
resolved = label or text
|
|
90
|
+
if not resolved:
|
|
91
|
+
raise TypeError("ui.Link requires a 'label' (or 'text' alias)")
|
|
92
|
+
props: dict[str, Any] = {"label": resolved}
|
|
79
93
|
if href: props["href"] = href
|
|
80
94
|
if on_click: props["on_click"] = on_click
|
|
81
95
|
return UINode(type="Link", props=props)
|
|
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.9 → imperal_sdk-4.2.11}/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.9 → imperal_sdk-4.2.11}/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
|
|
File without changes
|
{imperal_sdk-4.2.9 → imperal_sdk-4.2.11}/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.9 → imperal_sdk-4.2.11}/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
|