imperal-sdk 4.2.5__tar.gz → 4.2.6__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.5 → imperal_sdk-4.2.6}/CHANGELOG.md +34 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/PKG-INFO +1 -1
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/__init__.py +1 -1
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/__init__.py +2 -2
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/input_components.py +40 -1
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/.github/workflows/identity-contract.yml +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/.github/workflows/publish.yml +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/.github/workflows/test.yml +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/.gitignore +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/LICENSE +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/README.md +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/api_surface.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/pyproject.toml +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/.codebase-index-cache.pkl +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ai/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ai/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/auth/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/auth/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/auth/middleware.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/billing/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/billing/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/cache/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/cache/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/cache/protocol.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/action_result.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/error_codes.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/extension.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/filters.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/guards.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/handler.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/kernel_primitives.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/narration.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/narration_guard.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/prompt.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/refusal.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/chat/retry.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/cli/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/cli/main.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/config/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/config/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/context.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/db/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/db/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/errors.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/extension.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/extensions/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/extensions/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/http/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/http/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/manifest.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/manifest_schema.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/notify/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/notify/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/prompts/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/prompts/icnli_integrity_rules.txt +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/prompts/kernel_formatting_rule.txt +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/prompts/kernel_proactivity_rule.txt +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/protocols.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/rpc/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/rpc/codec.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/rpc/contract.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/runtime/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/runtime/executor.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/runtime/llm_provider.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/runtime/message_adapter.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/action_result.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/balance_info.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/chat_result.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/completion_result.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/document.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/event.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/file_info.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/function_call.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/http_response.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/imperal.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/limits_result.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/schemas/subscription_info.schema.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/secrets/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/secrets/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/secrets/exceptions.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/secrets/panel_handler.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/secrets/spec.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/security/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/security/call_token.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/skeleton/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/skeleton/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/storage/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/storage/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/store/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/store/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/store/exceptions.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/testing/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/testing/mock_context.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/testing/mock_secrets.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/tools/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/tools/client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/tools/generate_api_surface.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/tools/validate_identity_contract.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/action_result.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/chat_result.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/client_contracts.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/contracts.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/contributions.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/events.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/health.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/identity.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/models.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/pagination.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/types/store_contracts.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/actions.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/base.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/data.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/display.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/feedback.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/graph.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/interactive.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/layout.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/ui/theme.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/validator.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/src/imperal_sdk/validator_v1_6_0.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/conftest.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/contracts/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/contracts/test_store_contracts.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/fixtures/openapi/auth-gateway.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/fixtures/openapi/registry.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/fixtures/openapi/sharelock-cases.json +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/rpc/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/rpc/test_codec.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/rpc/test_contract.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/runtime/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/runtime/test_llm_provider_config_store.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/runtime/test_llm_provider_ctx_injection.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/store/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/store/test_list_users_client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/store/test_query_all_client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_action_result_typed.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_as_user.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_auth.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_billing.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_cache_client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_cache_model.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_call_token.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_chat_extension_deprecation.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_chat_filters.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_chat_guards.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_chat_guards_bleed.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_chat_prompt.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_chat_pydantic_retry.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_chat_result.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_cli.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_client_contracts.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_config_client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_context.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_context_guards.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_contracts.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_contracts_live.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_contributions.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_document_contract.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_emits_decorator.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_error_codes.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_errors.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_event_schema_v2.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_events_health.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_extension.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_extension_v2.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_extensions_emit.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_handler_p2.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_id_shape_guard.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_identity_contract.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_imperal_schema_v2.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_kernel_primitives.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_manifest.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_manifest_roundtrip_gate.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_manifest_schema.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_manifest_v2_events.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_manifest_v2_other_sections.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_manifest_v2_webhooks.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_manifest_validator_v2.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_mock_context.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_models.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_narration_emission.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_narration_guard.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_openai_max_completion_tokens.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_pagination.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_panel_rendering_contract.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_panels.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_skeleton_decorator.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_spec_validation.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_tools_client.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_ui.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_ui_fileupload_enhanced.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_ui_html.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_ui_image_enhanced.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_ui_open.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_ui_theme.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_user.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_v7_emit_refusal.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_validator.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_validator_drift.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_validator_pep563.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_validator_v1_6_0_rules.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/test_write_arg_bleed.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/tools/__init__.py +0 -0
- {imperal_sdk-4.2.5 → imperal_sdk-4.2.6}/tests/tools/test_generate_api_surface.py +0 -0
|
@@ -2,6 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `imperal-sdk` are documented here.
|
|
4
4
|
|
|
5
|
+
## 4.2.6 — 2026-05-13
|
|
6
|
+
|
|
7
|
+
**New: `ui.Password` primitive + `ui.Input(type=)` kwarg**
|
|
8
|
+
|
|
9
|
+
Adds a browser-blind credential-entry primitive for EXT-SECRETS-V1 Panel UIs.
|
|
10
|
+
Renders as `<input type="password" autocomplete="new-password" spellcheck="false">`
|
|
11
|
+
so values are visually masked while the user types and don't get saved into
|
|
12
|
+
the browser's autofill database.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`ui.Password(placeholder=, on_submit=, value=, param_name=)`** — canonical
|
|
17
|
+
credential-entry component. Federal EXT-SECRETS-V1 entry surfaces (Dev Portal
|
|
18
|
+
Secrets tab, Panel SecretManagerCard equivalents) MUST use this instead of
|
|
19
|
+
`ui.Input` for write_mode='user'/'both' secrets.
|
|
20
|
+
- **`ui.Input(type=)` kwarg** — accepts `"text"` (default), `"password"`,
|
|
21
|
+
`"email"`, `"number"`, `"url"`. Backward-compatible: existing `ui.Input(...)`
|
|
22
|
+
calls without `type=` continue rendering as text. The `type` prop is only
|
|
23
|
+
emitted into manifest when != `"text"`.
|
|
24
|
+
|
|
25
|
+
### Panel rendering
|
|
26
|
+
|
|
27
|
+
`DInput.tsx` now reads `type` from props and applies to the native
|
|
28
|
+
`<input type={...}>` element. When `type === "password"` it also sets
|
|
29
|
+
`autoComplete="new-password"` (suppresses browser autofill/save prompts) and
|
|
30
|
+
`spellCheck={false}` (no red squiggle on opaque base64 / hex values).
|
|
31
|
+
|
|
32
|
+
### Federal note
|
|
33
|
+
|
|
34
|
+
`type="password"` is a defence against shoulder-surfing, not a security
|
|
35
|
+
control. The plaintext still travels in the POST body to the server, which
|
|
36
|
+
is the only correctness boundary. Audit chokepoint + Vault transit are what
|
|
37
|
+
make this federal-grade — see EXT-SECRETS-V1 spec for the contract.
|
|
38
|
+
|
|
5
39
|
## 4.2.5 — 2026-05-13
|
|
6
40
|
|
|
7
41
|
**Fix: synthetic `__panel__*` tools excluded from validator tool_count + tests**
|
|
@@ -24,7 +24,7 @@ from .display import Text, Icon, Header, Image, Code, Markdown, Empty, Divider,
|
|
|
24
24
|
from .interactive import Button, Card, Menu, Dialog, Tooltip, Link, SlideOver
|
|
25
25
|
from .feedback import Alert, Progress, Chart, Loading, Error
|
|
26
26
|
from .input_components import (
|
|
27
|
-
Input, Form, Select, MultiSelect, Toggle,
|
|
27
|
+
Input, Password, Form, Select, MultiSelect, Toggle,
|
|
28
28
|
Slider, DatePicker, FileUpload, TextArea, RichEditor, TagInput,
|
|
29
29
|
)
|
|
30
30
|
from .graph import Graph
|
|
@@ -44,7 +44,7 @@ __all__ = [
|
|
|
44
44
|
# Feedback
|
|
45
45
|
"Alert", "Progress", "Chart", "Loading", "Error",
|
|
46
46
|
# Input
|
|
47
|
-
"Input", "Form", "Select", "MultiSelect", "Toggle",
|
|
47
|
+
"Input", "Password", "Form", "Select", "MultiSelect", "Toggle",
|
|
48
48
|
"Slider", "DatePicker", "FileUpload", "TextArea", "RichEditor", "TagInput",
|
|
49
49
|
# Graph (Cytoscape-backed)
|
|
50
50
|
"Graph",
|
|
@@ -10,13 +10,52 @@ def Input(
|
|
|
10
10
|
on_submit: UIAction | None = None,
|
|
11
11
|
value: str = "",
|
|
12
12
|
param_name: str = "value",
|
|
13
|
+
type: str = "text",
|
|
13
14
|
) -> UINode:
|
|
14
|
-
"""Text input field. on_submit fires on Enter, value merged as param_name.
|
|
15
|
+
"""Text input field. on_submit fires on Enter, value merged as param_name.
|
|
16
|
+
|
|
17
|
+
``type`` (v4.2.6+) is a hint to the Panel renderer for native HTML input
|
|
18
|
+
behaviour: ``"text"`` (default), ``"password"`` (browser-blind, no echo),
|
|
19
|
+
``"email"``, ``"number"``, ``"url"``. Prefer ``ui.Password(...)`` for
|
|
20
|
+
credential entry — it's a thin convenience wrapper that pins type for
|
|
21
|
+
federal EXT-SECRETS-V1 UIs.
|
|
22
|
+
"""
|
|
15
23
|
props: dict[str, Any] = {"placeholder": placeholder, "value": value, "param_name": param_name}
|
|
24
|
+
if type and type != "text":
|
|
25
|
+
props["type"] = type
|
|
16
26
|
if on_submit: props["on_submit"] = on_submit
|
|
17
27
|
return UINode(type="Input", props=props)
|
|
18
28
|
|
|
19
29
|
|
|
30
|
+
def Password(
|
|
31
|
+
placeholder: str = "paste value…",
|
|
32
|
+
on_submit: UIAction | None = None,
|
|
33
|
+
value: str = "",
|
|
34
|
+
param_name: str = "value",
|
|
35
|
+
) -> UINode:
|
|
36
|
+
"""Password input — browser-blind, no echo, autocomplete='new-password'.
|
|
37
|
+
|
|
38
|
+
EXT-SECRETS-V1 (federal v4.2.6+) — the canonical credential-entry primitive.
|
|
39
|
+
Renders as ``<input type="password" autocomplete="new-password">`` in the
|
|
40
|
+
Panel UI so values are visually masked while the user types. Submitted
|
|
41
|
+
value rides into the action as ``param_name`` (default ``"value"``); use
|
|
42
|
+
inside ``ui.Form(defaults={...})`` to attach hidden context fields like
|
|
43
|
+
``app_id`` and ``name``.
|
|
44
|
+
|
|
45
|
+
Federal note: type=password is a defence against shoulder-surfing, NOT a
|
|
46
|
+
security control. The plaintext still travels in the POST body to the
|
|
47
|
+
server, which is the only correctness boundary. Audit chokepoint + Vault
|
|
48
|
+
transit are what make this federal-grade.
|
|
49
|
+
"""
|
|
50
|
+
return Input(
|
|
51
|
+
placeholder=placeholder,
|
|
52
|
+
on_submit=on_submit,
|
|
53
|
+
value=value,
|
|
54
|
+
param_name=param_name,
|
|
55
|
+
type="password",
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
20
59
|
def Form(
|
|
21
60
|
children: list[UINode],
|
|
22
61
|
action: str = "",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.5 → imperal_sdk-4.2.6}/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.5 → imperal_sdk-4.2.6}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|