Files
humanlayer/CHANGELOG.md
2025-06-03 13:35:44 -07:00

265 lines
10 KiB
Markdown

## 0.7.9
### Features
- Add `channel` field to `Escalation` model to allow channel overrides during escalation
- Escalations can now specify a different contact channel than the original request
## 0.7.8
### Changes
- Rename `humanlayer` package in npm to `@humanlayer/sdk` - if you are using the humanlayer sdk, you should change your package.json to use the new package.
## 0.7.7
### Fixes
- Add `additional_recipients` field to `EmailContactChannel` in TypeScript SDK
- No Python SDK changes, this field was already supported in the Python SDK and the upstream API
## 0.7.6
### Features
- Add `thread_ts` support for `SlackContactChannel` to enable sending messages in threads
- Add `slack_message_ts` to `FunctionCallStatus` for tracking slack message timestamps
- Export v1beta2 webhook types from typescript package root for better developer experience
### Examples
- Add langchain example demonstrating Slack thread creation and management
- Update typescript examples with email escalation patterns
### Documentation
- Update examples to latest version and dependency management
## 0.7.5
### Features
- Add `additional_recipients` to `EmailContactChannel` to enable `to`, `cc`, `bcc` email recipients
- Add `escalate_email` methods for Function Call and Human Contact objects, allowing for followup/escalation emails to be sent with additional recipients
### Documentation
- Add [quickstart guide for using the humanlayer typescript sdk](https://humanlayer.dev/docs/quickstart-typescript)
- Add [guide for using Function Calls for Classification](https://humanlayer.dev/docs/core/classifications) with human-in-the-loop
- Add [framework guide for using humanlayer with chainlit](https://humanlayer.dev/docs/frameworks/chainlit)
- Add [framework guide for using humanlayer with the vercel ai sdk](https://humanlayer.dev/docs/frameworks/vercel-ai-sdk)
- Update [humanlayer-ts readme](https://github.com/humanlayer/humanlayer-ts) to include quickstart guide
### Examples
- Add [example of a fullstack chat app with nextjs and the vercel ai sdk](https://github.com/humanlayer/humanlayer/tree/main/examples/vercel_ai_nextjs)
- Simplify the [chainlit example](https://github.com/humanlayer/humanlayer/tree/main/examples/chainlit) by using `AsyncHumanLayer`
- Update [langchain email example](https://github.com/humanlayer/humanlayer/tree/main/examples/langchain/09-email-contact.py) to showcase the use of custom jinja templates for email payloads
## 0.7.4
- Add [v1beta2 webhook payload](https://humanlayer.dev/docs/core/response-webhooks) types to ts and python sdks
- Add `spec.channel.email.template` to all operation types, allowing [custom jinja templates for email payloads](https://humanlayer.dev/docs/channels/email#custom-email-templates)
## 0.7.3
This was an internal release with build/release process changes, but no user-facing changes.
## 0.7.2 - Deprecated
This was an internal release with no user-facing changes. It did introduce a small issue, so please upgrade to 0.7.3.
## 0.7.1
### Features
- Support for `interactive: bool` on ReponseOption - setting to false will cause prompts to be written in by default
- BREAKING - if you are using prompt_fill on ReponseOption, and want to give users the option to edit prompt, you will need to add interactive=True
```python
# before
@hl.require_approval(
# reject options lets you show custom pre-filled rejection prompts to the human
reject_options=[
ResponseOption(
name="reject",
description="Reject the message",
prompt_fill="try again but this time ",
),
# ...
```
```diff
# after
@hl.require_approval(
# reject options lets you show custom pre-filled rejection prompts to the human
reject_options=[
ResponseOption(
name="reject",
description="Reject the message",
prompt_fill="try again but this time ",
+ interactive=True
),
# ...
```
- API now returns `HumanContactStatus.response_option_name` and `FunctionCallStatus.reject_option_name` on objects for consuming human classification/steering reponses with deterministic (non-llm) code
### Updates
- Changed default http client timeout to 30s in python clients
### Examples
- Added ts_email_classifier example in [./examples/ts_email_classifier](./examples/ts_email_classifier)
- Added in-depth examples docs in [./examples/README.md](./examples/README.md)
## 0.7.0
- AsyncHumanLayer.human_as_tool() is no longer async (but the tool it returns still is)
- simplifies syntax to `await hl.human_as_tool()(message="lorem ipsum")` instead of `await (await hl.human_as_tool())(message="lorem ipsum")`
- remove all approval_method logic for AsyncHumanLayer - only `backend` usage is supported. Use a sync HumanLayer if you want to use the cli or toggle between backend/cli methods
- BREAKING - remove AsyncHumanLayer.cloud()
- BREAKING - reduce ways to configure approval method by remoing env var for HUMANLAYER_APPROVAL_METHOD
## 0.6.5
### Features
- Added state preservation support to FunctionCallSpec and HumanContactSpec for maintaining context across request lifecycles ([docs](https://humanlayer.dev/docs/core/state-management)) ([example](https://github.com/humanlayer/humanlayer/blob/main/examples/fastapi-email/app-statehooks.py))
### Enhancements
- Moved to `uv` for project management (examples still encourage throwaway envs with `pip` / `requirements.txt`)
- Updated CI/CD pipeline to use uv instead of poetry
- Improved PR template with clearer sections and guidance
- Updated all example dependencies to use v0.6.5
## 0.6.4
### Features
- Add support for required slack responders, restricting who can respond to a slack message. See https://humanlayer.dev/docs/channels/slack for more detail
## 0.6.3
### Features
- Added async support for HumanLayer python SDK with `AsyncHumanLayer` class ([example](https://github.com/humanlayer/humanlayer/tree/main/examples/fastapi))
- Added FastAPI example demonstrating webhooks and async usage ([example](https://github.com/humanlayer/humanlayer/tree/main/examples/fastapi-webhooks))
### Documentation
- Improved webhook documentation and added concrete examples
## 0.6.2
### Features
- Added beta support for agent webhooks to launch agents in response to emails ([docs](https://humanlayer.dev/docs/core/agent-webhooks)) - support for slack inbound coming soon!
### Enhancements
- Added support for non-experimental email threading fields:
- `subject` replaces `experimental_subject_line`
- `references_message_id` replaces `experimental_references_message_id`
- `in_reply_to_message_id` replaces `experimental_in_reply_to_message_id`
- Old fields remain supported for backwards compatibility
- Added convienience method `EmailContactChannel.in_reply_to` for easily creating an email contact channel that is in reply to another email
- Improved handling of `human_as_tool.__name__` generation to exclude more special characters
### Documentation
- Enhanced Slack channel documentation with setup instructions and ID lookup tips
- Improved email channel documentation with clearer threading examples
- Added Ruby and cURL examples for API reference
- Updated documentation navigation and cross-linking
- Added webhook documentation clarifications
### Branding
- Updated logo and documentation assets
- Updated documentation links and social references
## 0.6.1
### Features
- Added initial Mintlify documentation structure
- Added API reference documentation for function calls and classifications
- Added smoke test target for faster example testing
- Added email threading support ([docs](https://humanlayer.dev/docs/channels/email)) with:
- `experimental_subject_line`
- `experimental_references_message_id`
- `experimental_in_reply_to_message_id`
### Documentation
- Updated documentation links to point to humanlayer.dev
- Added Docker configuration for local documentation development
## 0.6.0
### Features
- Added email channel support with subject line customization and threading capabilities ([docs](https://humanlayer.dev/docs/channels/email))
- Added new examples demonstrating email channel usage:
- Email channel with Linear ticket creation ([example](https://github.com/humanlayer/humanlayer/tree/main/examples/langchain/08-email-channel.py))
- Email contact handling with threading ([example](https://github.com/humanlayer/humanlayer/tree/main/examples/langchain/09-email-contact.py))
- Updated TypeScript definitions for email channel models
- Updated all example dependencies to latest versions
## 0.5.11
Initial prep for email feature, use 0.6.0 instead
## 0.5.10
### Enhancements
- Add support for client-side usage of `respond` methods for responding to function calls / human contacts. This enables building custom approval UX in your web app / client of choice.
- Added some contrived examples for client-side approvals in [TS](https://github.com/humanlayer/humanlayer/blob/main/examples/ts_openai_client/04-agent-side-approvals.ts#L99-L103) and [PY](https://github.com/humanlayer/humanlayer/blob/main/examples/openai_client/04-agent-side-approvals.py#L118)
## 0.5.9
### Fixes
- Ensure HumanLayer cloud errors are correctly forwarded into thrown execeptions
### Cloud
- Switched from subscriptions to more flexible credits-based usage model
## 0.5.8
### Features
Functionality to enable lower-level control over approval and human interaction. We had requests from users for more control over these processes compared to higher-order-function approaches.
- Add lower-level `fetch_approval`, `create_function_call`, `get_function_call` methods to `HumanLayer`
- Add lower-level `fetch_human_response`, `create_human_contact`, `get_human_contact` methods to `HumanLayer`
Examples:
- [imperative_fetch](examples/openai_client/02-imperative_fetch.py)
- [for the especially based](examples/openai_client/03-imperative_fetch_based.py)
### Enhancements
- Improved Makefile harness for running/testing examples with prerelease version or local API instances
- Updated examples to use `run_id` to identify agents in slack and in approval history
- Support for python 3.10 - please let us know if you hit any issues with 3.10!
## 0.5.7
- Support for GripTape Custom Tools
## 0.5.6
- Support for `reject_options` and `response_options` in `require_approval` and `human_as_tool`, respectively, allowing custom response buttons in slack and web platforms