Increase wait times from 200ms to 1s for daemon startup to ensure
the daemon has sufficient time to initialize SQLite database and
create its socket. Also adds stderr capture for better debugging
of failures and increases test timeout from 2s to 5s.
Fixes ENG-1625
* Complete InterruptSession implementation
- Fix syscall import compilation error in claudecode-go
- Add proper race condition handling in session manager
- Move InterruptSessionRequest to types.go for consistency
- Add InterruptSessionResponse with success/status fields
- Add 'completing' status for graceful shutdown semantics
- Update event publishing to use completing status
- Add TypeScript types for interrupt operations
- Update Rust client with proper response handling
- Fix unit tests for new completing status
- All 109 tests passing with full type safety
* git ignore test-results.json
* Enable resume during running status
- Allow continueSession to accept running sessions in addition to completed
- Interrupt running sessions before resuming to ensure clean state transitions
- Reorder validation to check claude_session_id before attempting interrupt
- Provide clear error messages for orphaned sessions (running but no claude_session_id)
- Add comprehensive unit and integration tests for new resume-during-running functionality
- Maintain backward compatibility for existing completed session resume workflow
* fix: force bash shell in CI to prevent shell compatibility errors
The CI was using /bin/sh which doesn't support bash-specific syntax
like [[ ]] used in hack/run_silent.sh lines 73 and 88. This caused
'/bin/sh: [[: not found' errors that made tests appear to pass when
they may not have actually run properly.
* add fail-fast shell syntax validation to prevent silent CI failures
- Added 'set -e' to hack/run_silent.sh to exit on any command failure
- Added 'bash -n' syntax validation before sourcing shell scripts in Makefile
- This ensures CI will fail immediately if shell scripts have syntax errors
- Prevents scenarios where malformed scripts cause tests to appear to pass
when they may not have actually executed properly
* fix: resolve Claude Code streaming JSON schema compatibility issues
- Fix pointer-to-loop-variable bug in streaming test event collection
- Add missing system event fields (CWD, Model, PermissionMode, APIKeySource)
- Update Usage struct to match current Claude Code schema (ServerToolUse, ServiceTier)
- Fix cost field mapping from TotalCost to CostUSD throughout codebase
- Improve message event validation to handle user vs assistant differences
- All schema compatibility tests now pass
* fix: complete TotalCost to CostUSD field migration across codebase
- Remove deprecated TotalCost field assignments in session manager
- Update TUI to display CostUSD instead of TotalCost
- Remove TotalCost test assertions in result population tests
- Completes schema consistency with Claude Code SDK changes
* fix: make shell scripts POSIX-compliant to prevent CI failures
- Replace bash-specific [[ with POSIX [ syntax in run_silent.sh
- Replace == with = for POSIX compatibility
- Simplify test-ts to use run_silent instead of complex JSON parsing
- Remove SHELL := /bin/bash from all Makefiles (no longer needed)
- Remove shell: bash from GitHub Actions (no longer needed)
- Keep set -e for fail-fast behavior and syntax validation
- Scripts now work consistently in both bash and sh environments
* fix: use sh -n instead of bash -n for syntax validation
Since scripts are now POSIX-compliant, use sh for syntax validation
to match the target shell environment and ensure consistency.
**What I did**
- Added Vercel AI SDK integration for HumanLayer
- Improved HTTP timeout handling in Python and TypeScript SDKs
- Updated examples and documentation
**How I did it**
- Created new humanlayer-ts-vercel-ai-sdk package
- Added configurable timeout to Python and TypeScript SDKs
- Updated examples to use latest SDK versions
- Added new examples for Vercel AI SDK integration
**How to verify it**
- Run examples in ts_vercel_ai_sdk directory
- Check updated timeout handling in Python and TypeScript SDKs
**Description for the changelog**
Add Vercel AI SDK integration and improve timeout handling across SDKs
**A bunch of small fixes**
- TS - Fix a bug in fetchHumanApproval with callId resolution
- TS - remove env var for HUMANLAYER_APPROVAL_METHOD
- TS - add non-constructor entrypoint `import { humanlayer } from "humanlayer"`, `humanlayer(params)` is a wrapper around `new HumanLayer(params)`
- PY - AsyncHumanLayer.human_as_tool() is not async (but the tool it returns is)
- PY - remove env var for HUMANLAYER_APPROVAL_METHOD
- PY - remove all approval_method logic for AsyncHumanLayer - only backend is supported. Use a sync HumanLayer if you want to use the cli
- DEV - update makefile for building/testing TS more regularly
**How to verify it**
- Use the new constructor method instead of `new HumanLayer()` in Typescript
- Verify that the examples in ts_openai_client are no longer broken!
**Description for the changelog**
- TS - Fix a bug in fetchHumanApproval with callId resolution
- TS - remove env var for HUMANLAYER_APPROVAL_METHOD
- TS - add non-constructor entrypoint `import { humanlayer } from "humanlayer"`, `humanlayer(params)` is a wrapper around `new HumanLayer(params)`
- PY - AsyncHumanLayer.human_as_tool() is not async (but the tool it returns is)
- PY - remove env var for HUMANLAYER_APPROVAL_METHOD
- PY - remove all approval_method logic for AsyncHumanLayer - only backend is supported. Use a sync HumanLayer if you want to use the cli
- DEV - update makefile for building/testing TS more regularly
- Updated `humanlayer` package to version `0.6.1`
- Added module exports in `package.json` to support both CommonJS and ES modules
- Improved handling of human contact and function call APIs by exposing lower level ts things
- Incorporated pkgroll for builds
- Modified `package.json` with `main`, `module`, `types`, and `exports` fields
- Refactored `src/approval.ts`, `src/cloud.ts`, `src/models.ts`, and `src/protocol.ts` for better API support
- Updated build scripts and `tsconfig.json` to output to the `dist` directory
- Ensured compatibility with both CommonJS and ES module systems
- [ ] I have ensured `make check test` passes
- Run `npm install` to update dependencies
- Build the package with `npm run build`
- Test the examples in the `examples/ts_langchain` folder
- Verify that the package works correctly in both CommonJS and ES module environments
* HumanLayer TS: Add more comprehensive module exports for CommonJS and ES modules
* HumanLayer TS: add lower-level create/fetch methods to typescript package
* HumanLayer TS: expand EmailContactChannel to support experimental subject and message id fields
What I did
-----------
- Enabled state preservation in `FunctionCallSpec` and `HumanContactSpec`, allowing applications to maintain context across request lifecycles without storing state.
- Updated documentation and examples to demonstrate the new state preservation feature.
How I did it
-----------
- Added an optional `state` field to the models.
- Created new examples and updated existing ones to showcase state usage.
- Wrote tests to verify state is preserved across requests.
- Refactored session management in `async_cloud.py` for simplicity.
- [x] I have ensured `make check test` passes
How to verify it
-----------
- Run `make check test` to ensure all tests pass.
- Review the `app-statehooks.py` example for state preservation without webhooks.
- Check the updated documentation under the **State Preservation** section.
Description for the changelog
--------------
- Add state preservation support to `FunctionCallSpec` and `HumanContactSpec`, enabling applications to maintain context across requests without storing state.