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.
Files changed (206) hide show
  1. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/CHANGELOG.md +38 -0
  2. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/PKG-INFO +1 -1
  3. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/__init__.py +1 -1
  4. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/extension.py +10 -1
  5. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/imperal.schema.json +73 -1
  6. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.github/workflows/identity-contract.yml +0 -0
  7. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.github/workflows/publish.yml +0 -0
  8. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.github/workflows/test.yml +0 -0
  9. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/.gitignore +0 -0
  10. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/LICENSE +0 -0
  11. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/README.md +0 -0
  12. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/api_surface.json +0 -0
  13. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/pyproject.toml +0 -0
  14. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/.codebase-index-cache.pkl +0 -0
  15. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ai/__init__.py +0 -0
  16. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ai/client.py +0 -0
  17. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/auth/__init__.py +0 -0
  18. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/auth/client.py +0 -0
  19. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/auth/middleware.py +0 -0
  20. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/billing/__init__.py +0 -0
  21. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/billing/client.py +0 -0
  22. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cache/__init__.py +0 -0
  23. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cache/client.py +0 -0
  24. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cache/protocol.py +0 -0
  25. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/__init__.py +0 -0
  26. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/action_result.py +0 -0
  27. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/error_codes.py +0 -0
  28. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/filters.py +0 -0
  29. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/guards.py +0 -0
  30. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/handler.py +0 -0
  31. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/kernel_primitives.py +0 -0
  32. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/narration.py +0 -0
  33. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/narration_guard.py +0 -0
  34. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/prompt.py +0 -0
  35. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/refusal.py +0 -0
  36. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/chat/retry.py +0 -0
  37. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cli/__init__.py +0 -0
  38. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/cli/main.py +0 -0
  39. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/config/__init__.py +0 -0
  40. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/config/client.py +0 -0
  41. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/context.py +0 -0
  42. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/db/__init__.py +0 -0
  43. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/db/client.py +0 -0
  44. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/errors.py +0 -0
  45. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/extension.py +0 -0
  46. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/extensions/__init__.py +0 -0
  47. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/extensions/client.py +0 -0
  48. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/http/__init__.py +0 -0
  49. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/http/client.py +0 -0
  50. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/manifest.py +0 -0
  51. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/manifest_schema.py +0 -0
  52. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/notify/__init__.py +0 -0
  53. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/notify/client.py +0 -0
  54. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/__init__.py +0 -0
  55. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/icnli_integrity_rules.txt +0 -0
  56. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/kernel_formatting_rule.txt +0 -0
  57. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/prompts/kernel_proactivity_rule.txt +0 -0
  58. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/protocols.py +0 -0
  59. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/rpc/__init__.py +0 -0
  60. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/rpc/codec.py +0 -0
  61. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/rpc/contract.py +0 -0
  62. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/__init__.py +0 -0
  63. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/executor.py +0 -0
  64. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/llm_provider.py +0 -0
  65. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/runtime/message_adapter.py +0 -0
  66. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/action_result.schema.json +0 -0
  67. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/balance_info.schema.json +0 -0
  68. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/chat_result.schema.json +0 -0
  69. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/completion_result.schema.json +0 -0
  70. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/document.schema.json +0 -0
  71. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/event.schema.json +0 -0
  72. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/file_info.schema.json +0 -0
  73. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/function_call.schema.json +0 -0
  74. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/http_response.schema.json +0 -0
  75. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/limits_result.schema.json +0 -0
  76. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/schemas/subscription_info.schema.json +0 -0
  77. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/__init__.py +0 -0
  78. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/client.py +0 -0
  79. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/exceptions.py +0 -0
  80. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/panel_handler.py +0 -0
  81. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/secrets/spec.py +0 -0
  82. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/security/__init__.py +0 -0
  83. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/security/call_token.py +0 -0
  84. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/skeleton/__init__.py +0 -0
  85. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/skeleton/client.py +0 -0
  86. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/storage/__init__.py +0 -0
  87. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/storage/client.py +0 -0
  88. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/store/__init__.py +0 -0
  89. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/store/client.py +0 -0
  90. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/store/exceptions.py +0 -0
  91. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/testing/__init__.py +0 -0
  92. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/testing/mock_context.py +0 -0
  93. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/testing/mock_secrets.py +0 -0
  94. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/__init__.py +0 -0
  95. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/client.py +0 -0
  96. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/generate_api_surface.py +0 -0
  97. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/tools/validate_identity_contract.py +0 -0
  98. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/__init__.py +0 -0
  99. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/action_result.py +0 -0
  100. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/chat_result.py +0 -0
  101. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/client_contracts.py +0 -0
  102. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/contracts.py +0 -0
  103. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/contributions.py +0 -0
  104. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/events.py +0 -0
  105. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/health.py +0 -0
  106. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/identity.py +0 -0
  107. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/models.py +0 -0
  108. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/pagination.py +0 -0
  109. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/types/store_contracts.py +0 -0
  110. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/__init__.py +0 -0
  111. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/actions.py +0 -0
  112. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/base.py +0 -0
  113. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/data.py +0 -0
  114. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/display.py +0 -0
  115. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/feedback.py +0 -0
  116. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/graph.py +0 -0
  117. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/input_components.py +0 -0
  118. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/interactive.py +0 -0
  119. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/layout.py +0 -0
  120. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/ui/theme.py +0 -0
  121. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/validator.py +0 -0
  122. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/src/imperal_sdk/validator_v1_6_0.py +0 -0
  123. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/conftest.py +0 -0
  124. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/contracts/__init__.py +0 -0
  125. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/contracts/test_store_contracts.py +0 -0
  126. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/fixtures/openapi/auth-gateway.json +0 -0
  127. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/fixtures/openapi/registry.json +0 -0
  128. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/fixtures/openapi/sharelock-cases.json +0 -0
  129. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/rpc/__init__.py +0 -0
  130. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/rpc/test_codec.py +0 -0
  131. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/rpc/test_contract.py +0 -0
  132. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/runtime/__init__.py +0 -0
  133. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/runtime/test_llm_provider_config_store.py +0 -0
  134. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/runtime/test_llm_provider_ctx_injection.py +0 -0
  135. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/store/__init__.py +0 -0
  136. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/store/test_list_users_client.py +0 -0
  137. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/store/test_query_all_client.py +0 -0
  138. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_action_result_typed.py +0 -0
  139. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_as_user.py +0 -0
  140. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_auth.py +0 -0
  141. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_billing.py +0 -0
  142. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_cache_client.py +0 -0
  143. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_cache_model.py +0 -0
  144. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_call_token.py +0 -0
  145. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_extension_deprecation.py +0 -0
  146. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_filters.py +0 -0
  147. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_guards.py +0 -0
  148. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_guards_bleed.py +0 -0
  149. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_prompt.py +0 -0
  150. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_pydantic_retry.py +0 -0
  151. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_chat_result.py +0 -0
  152. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_cli.py +0 -0
  153. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_client_contracts.py +0 -0
  154. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_config_client.py +0 -0
  155. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_context.py +0 -0
  156. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_context_guards.py +0 -0
  157. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_contracts.py +0 -0
  158. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_contracts_live.py +0 -0
  159. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_contributions.py +0 -0
  160. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_document_contract.py +0 -0
  161. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_emits_decorator.py +0 -0
  162. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_error_codes.py +0 -0
  163. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_errors.py +0 -0
  164. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_event_schema_v2.py +0 -0
  165. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_events_health.py +0 -0
  166. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_extension.py +0 -0
  167. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_extension_v2.py +0 -0
  168. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_extensions_emit.py +0 -0
  169. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_handler_p2.py +0 -0
  170. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_id_shape_guard.py +0 -0
  171. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_identity_contract.py +0 -0
  172. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_imperal_schema_v2.py +0 -0
  173. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_kernel_primitives.py +0 -0
  174. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest.py +0 -0
  175. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_roundtrip_gate.py +0 -0
  176. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_schema.py +0 -0
  177. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_v2_events.py +0 -0
  178. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_v2_other_sections.py +0 -0
  179. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_v2_webhooks.py +0 -0
  180. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_manifest_validator_v2.py +0 -0
  181. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_mock_context.py +0 -0
  182. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_models.py +0 -0
  183. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_narration_emission.py +0 -0
  184. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_narration_guard.py +0 -0
  185. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_openai_max_completion_tokens.py +0 -0
  186. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_pagination.py +0 -0
  187. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_panel_rendering_contract.py +0 -0
  188. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_panels.py +0 -0
  189. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_skeleton_decorator.py +0 -0
  190. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_spec_validation.py +0 -0
  191. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_tools_client.py +0 -0
  192. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui.py +0 -0
  193. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_fileupload_enhanced.py +0 -0
  194. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_html.py +0 -0
  195. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_image_enhanced.py +0 -0
  196. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_open.py +0 -0
  197. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_ui_theme.py +0 -0
  198. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_user.py +0 -0
  199. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_v7_emit_refusal.py +0 -0
  200. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator.py +0 -0
  201. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator_drift.py +0 -0
  202. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator_pep563.py +0 -0
  203. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_validator_v1_6_0_rules.py +0 -0
  204. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/test_write_arg_bleed.py +0 -0
  205. {imperal_sdk-4.2.8 → imperal_sdk-4.2.10}/tests/tools/__init__.py +0 -0
  206. {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**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: imperal-sdk
3
- Version: 4.2.8
3
+ Version: 4.2.10
4
4
  Summary: SDK for building Imperal Cloud extensions
5
5
  Author: Valentin Scerbacov, Imperal, Inc.
6
6
  License-Expression: AGPL-3.0-or-later
@@ -39,7 +39,7 @@ from imperal_sdk.secrets import (
39
39
  SecretValueTooLarge, SecretDeclarationConflict,
40
40
  )
41
41
 
42
- __version__ = "4.2.8"
42
+ __version__ = "4.2.10"
43
43
 
44
44
  __all__ = [
45
45
  # Core
@@ -147,7 +147,16 @@ class ChatExtension:
147
147
  ``archive_drafts_in_project``.
148
148
  """
149
149
  if chain_callable is None:
150
- chain_callable = action_type in ("write", "destructive")
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 \u2014 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.",
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