Metadata-Version: 2.5
Name: harness-sdk-python
Version: 0.33.0
Summary: RunManager: the harness-sdk runs subsystem for Python Statewire hosts
Project-URL: Repository, https://github.com/assistant-ui/harness-sdk
License-Expression: MIT
Requires-Python: <4.0,>=3.12
Requires-Dist: pinned<0.16,>=0.15.0
Requires-Dist: statewire<0.14,>=0.13.0
Provides-Extra: deepagents
Requires-Dist: deepagents>=0.6.12; extra == 'deepagents'
Requires-Dist: langchain-core>=0.3; extra == 'deepagents'
Requires-Dist: langchain-openai>=0.3; extra == 'deepagents'
Requires-Dist: langgraph>=1.0.0; extra == 'deepagents'
Requires-Dist: uvicorn[standard]>=0.30.0; extra == 'deepagents'
Provides-Extra: postgres
Requires-Dist: langgraph-checkpoint-postgres>=2.0.0; extra == 'postgres'
Description-Content-Type: text/markdown

# harness-sdk-python

The runs subsystem for Python Statewire hosts: `@run_manager` turns one async method into the run executor and mounts the `run/*` command surface (enqueue, steer, dequeue, edit, reload, stop, continue, input), each run in its own tray. Part of [harness-sdk](https://github.com/assistant-ui/harness-sdk), with `statewire` and `pinned`.

## Install

```sh
uv add harness-sdk-python
```

Extras: `uv add "harness-sdk-python[postgres]"`, `uv add "harness-sdk-python[deepagents]"`.

## Use

```python
from statewire import Statewire, command

from harness_sdk import RunManager, run_manager


class RunsHost(Statewire):
    async def lifespan(self):
        self.state = {"messages": []}
        yield

    @run_manager()
    async def run(self, ctx: RunManager.RunContext):
        for message in ctx.messages:
            self.state["messages"].append({"id": message["id"]})
        ctx.applied()
        return RunManager.Complete()

    @command("run/enqueue")
    async def run_enqueue(self, params, *, ctx):
        return await (await self.run.get()).enqueue(params, applied=ctx.applied)
```

## Docs

- Get started: https://github.com/assistant-ui/harness-sdk/blob/main/apps/docs/app/docs/get-started/chat-app/page.mdx
- Guide: https://github.com/assistant-ui/harness-sdk/blob/main/apps/docs/app/docs/guides/harness/host/page.mdx
- Reference: https://github.com/assistant-ui/harness-sdk/blob/main/apps/docs/app/docs/reference/harness-sdk-python/page.mdx
- Spec: https://github.com/assistant-ui/harness-sdk/blob/main/apps/docs/app/docs/spec/runs-protocol/page.mdx
