Skip to content

Latest commit

 

History

History
130 lines (101 loc) · 5.8 KB

File metadata and controls

130 lines (101 loc) · 5.8 KB

Changelog

All notable changes to the ChatBotKit Python SDK are documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[0.6.0] - 2026-09-18

Added

  • token= is the new name for the API credential, on ChatBotKit(...), ClientOptions and extend(...). secret= is deprecated and still works; token wins when both are set.
  • cbk.decision.create asks a decision model typed questions (boolean, choice, score) about a state and returns an answer with probabilities for each. Pass a mapping for choice questions, as the generated Question type cannot hold their named options.

Changed

  • BREAKING: skillset ability link fields renamed. On create/update/fetch/ list/export, secretId / fileId / botId / spaceId are now linkedSecretId / linkedFileId / linkedBotId / linkedSpaceId. Inline conversation extensions.skillsets[].abilities[] entries use linkedSecretId (and the new linkedSpaceId). GraphQL Ability relations secret / file / bot / space are now linkedSecret / linkedFile / linkedBot / linkedSpace. There are no compatibility aliases; upgrade together with the platform deploy.
  • Regenerated types also pick up unrelated API changes since the previous regeneration (2026-08-19), grouped by resource:
    • BREAKING: Dataset: store removed from DatasetCreateRequest, DatasetFetchResponse, DatasetListResponseItem and DatasetListStreamItemData (the platform now has a single vector store; the REST API accepts and ignores store).
    • Conversation: expiresAt (epoch ms, auto-delete) added to ConversationUpdateRequest, ConversationFetchResponse, ConversationListResponseItem and ConversationListStreamItemData.
    • Memory: expiresAt added to MemoryCreateRequest, MemoryUpdateRequest, MemoryFetchResponse, MemoryListResponseItem and MemoryListStreamItemData.
    • Task: expiresAt added to TaskCreateRequest, TaskUpdateRequest, TaskFetchResponse, TaskListResponseItem and TaskListStreamItemData; resumeAt (when a paused run resumes, null while running) added to TaskExecutionListResponseItem and TaskExecutionListStreamItemData.
    • Policy: state (enabled | disabled) added to PolicyCreateRequest, PolicyUpdateRequest, PolicyFetchResponse, PolicyListResponseItem and PolicyListStreamItemData.
    • WhatsApp integration: appSecret (Meta app secret for webhook signature validation, masked as ******** on read) added to IntegrationWhatsAppCreateRequest, IntegrationWhatsAppUpdateRequest, IntegrationWhatsAppFetchResponse, IntegrationWhatsAppListResponseItem and IntegrationWhatsAppListStreamItemData; idempotencyKey added to WhatsappInitiateRequest.
    • GitHub integration: allowFrom (allowed senders) added to GithubIntegrationCreateRequest.

[0.5.1] - 2026-07-22

Changed

  • Packaging only: releases are now published to PyPI through GitHub Actions Trusted Publishing (OIDC), replacing the previous API-token flow. There are no changes to the SDK's public API or behaviour since 0.5.0.

[0.5.0] - 2026-07-22

Added

  • Agent cancellation. agent.execute(...) and agent.complete(...) now accept an abort_signal (asyncio.Event); setting it stops the loop from the outside (timeout, shutdown, user stop) and exits with code 1 at the next event boundary. The built-in abort tool's hard=True option now cancels the in-flight iteration immediately instead of being a no-op, bringing the Python agent to parity with the Node and Go SDKs.

Changed

  • The agent system instruction now includes the "Be Responsive" guideline (prioritise new user input mid-run), matching the Node and Go SDKs.

[0.4.0] - 2026-06-27

Added

  • Secret token minting and request proxying. client.secret.mint(...) / client.contact.secret.mint(...) mint a usable token from a secret (oauth/jwt secrets only; owner-only) and return { token, expiresAt }. client.secret.proxy(...) / client.contact.secret.proxy(...) proxy a request through a secret — the credential is injected server-side (it never leaves the platform) and the upstream httpx.Response is returned as-is, success or error.
  • AuthorizationRequiredError (exported from chatbotkit; a subclass of APIError) carrying the url the user must visit to authorize. It is raised when a secret or connection has not been authenticated yet (409 authorization_required) — by mint, by any normal route, and by proxy (which otherwise passes every genuine upstream response through untouched). APIError now also carries status_code and the parsed data body.

[0.3.0] - 2026-06-26

Added

  • state lifecycle field on the skillset and ability resources, backed by the new ResourceState enum (enabled / disabled). A skillset or ability can now be toggled off without deleting it. Available on the create, update, fetch, and list types.

[0.2.0] - 2026-06-22

Added

  • skill_server integration client (client.integration.skill_server) with list, fetch, create, update, and delete. The Skill Server integration exposes a skillset's abilities as a text-first HTTP API.
  • site client under space (client.space.site) with list, fetch, create, update, and delete, keyed by the parent space ID. A space site binds a <label>.chatbotkit.space subdomain to static content served from a space's storage.

Changed

  • Re-generated types from the latest API spec, including the alias field now present across integration create/update requests.

[0.1.0] - 2026-06-11

Added

  • Initial release of the async Python SDK for ChatBotKit.