Skip to main content

Halo adapter for Claude on two runtimes (Python): the Agent SDK (install_halo — a PostToolUse encode hook + a single in-process halo_fetch MCP tool) and the raw Messages API (halo_format_claude.raw — create_raw_halo, no Agent SDK needed). Tool results become a shape map kept out of context.

Project description

halo-format-claude

Halo adapter for Claude on two runtimes (Python): the Claude Agent SDK and the raw Claude Messages API. Same engine — encode a large tool result, hand the model a shape map, let it pull back only the leaves it needs, verified on read — bound to whichever loop you run.

Agent SDK — install_halo()

install_halo() wires the adapter in one call (install the Agent SDK extra: pip install halo-format-claude[agent-sdk]):

  • a PostToolUse encode hook that replaces a large tool result with a halo shape map (root kind + one line per field: ref, kind, and a bounded preview), so the payload stays out of the model's context while it still sees what's there;
  • a single in-process halo_fetch MCP tool the model uses to pull back only the leaves it needs, verified on read — a ref that lands on a branch returns that branch's sub-refs, so one batch API both pulls and expands (there is no separate halo_walk).
from claude_agent_sdk import ClaudeAgentOptions, query
from halo_format_claude import install_halo

result = install_halo(ClaudeAgentOptions(...))
# pass result.options to query(); result.session holds the shared store for audit/inspection

The encode hook is deterministic plumbing (it always fires, even for built-in tools); the Halo Skill is the navigation guidance. Pass store=FileStore(dir) for the heavy/persistent deployment.

Raw Messages API — halo_format_claude.raw

No hook exists on the raw API — you own the tool-use loop on messages.create(...). create_raw_halo() gives you the same mechanism to drive by hand. This submodule imports zero Agent SDK code (the package imports the SDK lazily), so pip install halo-format-claude without the agent-sdk extra is enough for the raw path. This is the runtime where Halo's token win is largest: the raw API re-sends every tool result in context each turn, so keeping a heavy payload out of context is a real, growing saving.

import json
from anthropic import Anthropic
from halo_format_claude.raw import create_raw_halo

halo = create_raw_halo(threshold=2048)
tools = [*domain_tools, halo.tool_def]          # add the halo_fetch tool
system = SYSTEM_PROMPT + halo.guidance          # add the navigation guidance

# inside your loop, per tool_use block:
async def run_tool(name, args):
    if halo.is_fetch(name):
        return halo.fetch(args["refs"])          # verified leaves; never re-encode
    result = await dispatch[name](**args)
    return halo.encode_result(name, args, result)  # shape map if large, else passthrough

encode_result size-gates (shape map above the threshold, raw JSON below); fetch returns the verified per-ref results as a JSON string for the tool_result content. The core engine is halo-format; this package is only the shim that binds it to the two Claude runtimes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

halo_format_claude-0.3.0.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

halo_format_claude-0.3.0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file halo_format_claude-0.3.0.tar.gz.

File metadata

  • Download URL: halo_format_claude-0.3.0.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for halo_format_claude-0.3.0.tar.gz
Algorithm Hash digest
SHA256 2b0958ad7b864d3c6c1a7f925d6bb4a9f0d51acd10e32dc9ffec04e4a783bde0
MD5 c21a6c2bca739051a3e276763f2e1e7d
BLAKE2b-256 2b245fb99c43e96cbfa82617e3418996b3bc17853abb55fe86bec0bea9c0078b

See more details on using hashes here.

Provenance

The following attestation bundles were made for halo_format_claude-0.3.0.tar.gz:

Publisher: publish-python-claude.yml on halo-format/halo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file halo_format_claude-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for halo_format_claude-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5557a43aaa96d28bb51cd1c8c55fb39a2b6bef4c45ecae5d964ec0a300ba955a
MD5 640e06c5403e3685fdb78845f7a48a08
BLAKE2b-256 65b86d84dca0b45cf0d58c4dc63e9872ff3166d080dffcdff0ed2b2ecf733452

See more details on using hashes here.

Provenance

The following attestation bundles were made for halo_format_claude-0.3.0-py3-none-any.whl:

Publisher: publish-python-claude.yml on halo-format/halo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page