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.4.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.4.0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: halo_format_claude-0.4.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.4.0.tar.gz
Algorithm Hash digest
SHA256 fd6d52e8f46e2023669fdcc371169586156d4a7c65040efb2b34124e635a53c1
MD5 693690912bd5fda22623ff00b47513de
BLAKE2b-256 90bb3ca51905be774d61ed23f613aa6b832a1cf26073cb7881bf8ac31be70e21

See more details on using hashes here.

Provenance

The following attestation bundles were made for halo_format_claude-0.4.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.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for halo_format_claude-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 11087ac2d49a9f5a73565b5ff8a10f1ce397d68fdd61fc81ad808e1774078914
MD5 b0085500abb37ad150e91cc9a59cd039
BLAKE2b-256 dbb8f102ba511a812c069a5dee3c1d609572d77ed7f5f1373771f825e495bdda

See more details on using hashes here.

Provenance

The following attestation bundles were made for halo_format_claude-0.4.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