From fdd6a82fe1c0399e212639779668a9fd45661681 Mon Sep 17 00:00:00 2001 From: Lakshman Patel Date: Tue, 14 Jul 2026 01:01:19 +0530 Subject: [PATCH 1/2] chore(release): hawk-sdk-python 0.2.0 Bump VERSION 0.1.0 -> 0.2.0 and fold the Unreleased changelog entries under a dated [0.2.0] section. Breaking changes in 0.2.0: - list_sessions() now returns list[SessionSummary]; limit/offset removed (the daemon's GET /v1/sessions returns a bare JSON array, so the old PaginatedResponse could never validate a real response). - create_session() removed from both HawkClient and AsyncHawkClient (the daemon has no POST /v1/sessions; sessions are created implicitly by POST /v1/chat and the method always returned a 404). - Message.tool_result alias fixed to tool_results to match the daemon. - __version__ synced with pyproject.toml. Other: User-Agent header on every outbound request; OSS-standard files (CHANGELOG, CONTRIBUTING, SECURITY, CoC, templates); expanded .gitignore/.editorconfig. Co-Authored-By: Claude --- CHANGELOG.md | 2 ++ VERSION | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f25c941..2115d77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.2.0] — 2026-07-14 + ### Changed - **BREAKING: `list_sessions()` now returns `list[SessionSummary]`** and no longer accepts `limit`/`offset`. The daemon's `GET /v1/sessions` returns a diff --git a/VERSION b/VERSION index 6e8bf73..0ea3a94 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0 +0.2.0 From b4b545bcc2f053639db159cad52988fec02f3be3 Mon Sep 17 00:00:00 2001 From: Lakshman Patel Date: Thu, 16 Jul 2026 06:34:42 +0530 Subject: [PATCH 2/2] sync api/openapi.yaml with upstream GrayCodeAI/hawk --- api/openapi.yaml | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/api/openapi.yaml b/api/openapi.yaml index 5ef4bf5..4356670 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -43,7 +43,9 @@ components: description: The user prompt to send to the agent session_id: type: string - description: Reserved for session continuation (currently ignored; every chat creates a fresh engine session) + maxLength: 128 + pattern: '^[A-Za-z0-9._-]+$' + description: Durable session ID to continue. The session must already exist; successful continuation returns the same ID. model: type: string description: Optional model override @@ -55,10 +57,10 @@ components: description: Autonomy preset controlling non-interactive permission approval cwd: type: string - description: Working directory for the agent session + description: Existing directory associated with session metadata. The daemon executes tools from its startup working directory; it never performs a process-wide chdir per request. agent: type: string - description: Named agent persona to run + description: Named Hawk agent persona to apply. Continuations inherit the persisted persona when omitted. ChatResponse: type: object @@ -79,7 +81,7 @@ components: Session: type: object - description: Lightweight in-memory record of a daemon chat session. + description: Lightweight active record for a durably persisted daemon chat session. properties: id: type: string @@ -93,6 +95,8 @@ components: type: integer cwd: type: string + agent: + type: string SessionDetail: type: object @@ -110,6 +114,8 @@ components: type: string provider: type: string + agent: + type: string cwd: type: string name: @@ -277,8 +283,9 @@ paths: tags: [system] summary: Readiness probe description: | - Returns 200 when the daemon can serve chat (engine configured), - 503 with a reason otherwise. + Returns 200 only when a session factory is configured and Eyrie's local + preflight confirms provider state, catalog, credentials, and model + selection are ready. Returns 503 with the failed dependency otherwise. security: [] responses: "200": @@ -301,8 +308,10 @@ paths: description: | Non-streaming: returns the full response in one JSON object. Streaming: send `Accept: text/event-stream` to receive Server-Sent Events. - Each request creates a new agent session; there is no standalone - session-creation endpoint. + Omit `session_id` to create and durably persist a new session. Supply a + previously returned `session_id` to load its transcript, append a turn, + and update that same durable session. The returned JSON field and the + `X-Hawk-Session-ID` header identify a retrievable `/v1/sessions/{id}`. requestBody: required: true content: @@ -312,6 +321,11 @@ paths: responses: "200": description: Agent response (or SSE stream) + headers: + X-Hawk-Session-ID: + description: Durable session ID created or continued by this request. + schema: + type: string content: application/json: schema: @@ -331,6 +345,12 @@ paths: application/json: schema: $ref: "#/components/schemas/Error" + "404": + description: Requested continuation session does not exist + content: + application/json: + schema: + $ref: "#/components/schemas/Error" "503": description: Engine not configured content: