Skip to content

shipit-watcher 1.1.0

Choose a tag to compare

@iamrraj iamrraj released this 04 Aug 12:05

Reusable in any Python project — the package no longer carries references to the codebase it grew in.

pip install shipit-watcher

Public-ready

  • Removed 63 client-specific references across 17 files: product and customer names, a private Langfuse hostname, internal audit finding ids, and a client's accounting vocabulary that had been used as if it were a general concept.
  • Package metadata now carries an OSI licence classifier and project URLs, so the project is findable and its licence machine-readable.
  • Capability table states what is not built (budgets/alerts, Langfuse datasets) alongside what is.

Since 1.0.0 on the library itself

Nothing changed in behaviour — 1.1.0 is 1.0.0 with honest, reusable documentation.

What 1.0.0 introduced

  • Agent graphs. Langfuse renders a graph only for observations carrying a semantic type (agent / tool / retriever / guardrail). Those cannot be sent over the classic ingestion API, and the Langfuse SDK exposes them only from 3.3.1 — which drops client.trace(). LangfuseOTLPSink speaks OTLP directly, so only the server has to be v3. Enable with WATCHER_LANGFUSE_TRANSPORT=otlp.
  • Prompt registry: create_prompt() publishes versions, get_agent_prompt() namespaces prompts per agent, use_prompt() binds one ambiently for calls that cannot pass metadata, run_prompt() does fetch → compile → call → trace in one step.
  • LLM gateway: traced completions and streaming, governance enforced pre-call, provider-agnostic retries, model-alias routing through a proxy.
  • LiteLLM calls are named for the operation (rag.embedding, never litellm-aembedding), and background calls get their own trace instead of being dropped.
  • Django ledger accepts any user identifier — the FK resolves only for a real primary key, user_ref always holds the raw value.

246 tests.