Releases: LunarCommand/openarmature-python
Releases · LunarCommand/openarmature-python
v0.13.0
What's Changed
- Add cache-stat fields to Response.usage by @chris-colinsky in #136
- Add LlmCompletionEvent typed event variant by @chris-colinsky in #137
- Migrate LlmUsageAccumulator to typed event filter by @chris-colinsky in #138
- Activate proposal 0049 conformance fixtures 050-056 by @chris-colinsky in #139
- Emit OA-namespace cache attributes on the LLM span by @chris-colinsky in #140
- Extend LlmCompletionEvent with proposal 0057 fields by @chris-colinsky in #141
- Migrate OTel observer LLM span to typed event by @chris-colinsky in #142
- Migrate Langfuse to typed LLM event by @chris-colinsky in #143
- Implement LlmFailedEvent typed variant (proposal 0058) by @chris-colinsky in #144
- Implement wire-byte stability (proposal 0047) by @chris-colinsky in #145
- Prepare v0.13.0 release: reconcile changelog, docs, and examples by @chris-colinsky in #146
- chore(release): v0.13.0-rc1 by @chris-colinsky in #147
- chore(release): v0.13.0 by @chris-colinsky in #148
Full Changelog: v0.12.0...v0.13.0
v0.12.0
What's Changed
- Harden OpenAIProvider readiness probe by @chris-colinsky in #109
- Add HyperDX OTel integration test path by @chris-colinsky in #110
- Add three patterns from graduated agent shapes by @chris-colinsky in #111
- Add vLLM production deployment notes by @chris-colinsky in #112
- Sweep docs em dashes and stale refs by @chris-colinsky in #113
- Refresh README and docs homepage pitch by @chris-colinsky in #114
- Add PyPI and spec version shields to homepage by @chris-colinsky in #115
- Add chat-with-multimodal example by @chris-colinsky in #116
- Add production-observability example by @chris-colinsky in #117
- Add crash-and-resume drama to example 08 by @chris-colinsky in #118
- Add examples 11 and 12 to smoke test by @chris-colinsky in #119
- Rename examples and reorder catalog by topic by @chris-colinsky in #120
- Scrub proposal/spec refs from example walk-throughs by @chris-colinsky in #121
- Add source callout to example walk-through docs by @chris-colinsky in #122
- Update stale 'four patterns' docstring in test by @chris-colinsky in #123
- Bump idna and pymdown-extensions for advisories by @chris-colinsky in #124
- chore(deps): bump github/codeql-action from 4.35.4 to 4.36.1 by @dependabot[bot] in #125
- chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #126
- chore(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0 by @dependabot[bot] in #127
- Bump spec pin to v0.45.0 + textual-only acks by @chris-colinsky in #128
- Implement proposal 0048 read-symmetric metadata by @chris-colinsky in #129
- Reset metadata between retry attempts per spec 3.4 by @chris-colinsky in #130
- Add per-invocation observer event drain primitive by @chris-colinsky in #131
- Emit implementation attribution on every invocation by @chris-colinsky in #132
- Extend production-observability example with accumulator pattern by @chris-colinsky in #133
- chore(release): v0.12.0-rc1 by @chris-colinsky in #134
- chore(release): v0.12.0 by @chris-colinsky in #135
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's Changed
- Clean up docs nav titles and default uv toolchain by @chris-colinsky in #91
- Reorganize docs nav into three top-level tabs by @chris-colinsky in #92
- Add Langfuse prompt backend (text prompts) by @chris-colinsky in #93
- Add caller-supplied invocation_id and 0041 reserved keys by @chris-colinsky in #94
- Bump spec pin to v0.31.0 + 0039/0041 fixtures by @chris-colinsky in #95
- Implement 0040 open-span metadata update by @chris-colinsky in #96
- Detect SDK handler in install_log_bridge by @chris-colinsky in #97
- Implement proposal 0042 (reserved keys) by @chris-colinsky in #98
- Implement proposal 0043 (trace input/output) by @chris-colinsky in #99
- Emit trace.input/output via Langfuse SDK adapter by @chris-colinsky in #100
- Activate fixture 037 cases 1-4 in langfuse harness by @chris-colinsky in #101
- Activate fixture 037 case 5 (resume re-fire) by @chris-colinsky in #102
- Implement proposal 0044 (parallel-branches dispatch span) by @chris-colinsky in #103
- Implement proposal 0045 (nested-lineage augmentation) by @chris-colinsky in #104
- Implement proposal 0046 (chat-prompt rendering) by @chris-colinsky in #105
- chore(release): v0.11.0-rc1 by @chris-colinsky in #106
- chore(release): v0.11.0-rc2 by @chris-colinsky in #107
- chore(release): v0.11.0 by @chris-colinsky in #108
Full Changelog: v0.10.0...v0.11.0
v0.10.0
What's Changed
- Add conformance.toml manifest and CI guard by @chris-colinsky in #77
- Add RuntimeConfig declared fields + null-skip (proposal 0032) by @chris-colinsky in #78
- Add prompt-management surface refinements (proposal 0033 + wishes 1, 5) by @chris-colinsky in #79
- Add Langfuse observer (proposal 0031) by @chris-colinsky in #80
- Langfuse observer: fan-out / subgraph / detached parenting by @chris-colinsky in #81
- Add [langfuse] extras and SDK adapter (PR 3.6) by @chris-colinsky in #82
- Add public force_flush() to OTel and Langfuse observers by @chris-colinsky in #83
- Reject /v1 suffix on OpenAIProvider base_url by @chris-colinsky in #84
- Bump spec submodule to v0.26.1 + Langfuse observer audit fixes by @chris-colinsky in #85
- Add caller-supplied invocation metadata (proposal 0034) by @chris-colinsky in #86
- Docs: vLLM cookbook, non-obvious shapes, caller-metadata concept by @chris-colinsky in #87
- Add concat_flatten + merge_all reducers; activate 0035/0036 fixtures by @chris-colinsky in #88
- chore(release): v0.10.0-rc1 by @chris-colinsky in #89
- chore(release): v0.10.0 by @chris-colinsky in #90
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
- Bump spec pin to v0.17.1 for proposal 0019 by @chris-colinsky in #65
- Pass ASCII commit message to Cloudflare deploy by @chris-colinsky in #66
- Add Patterns docs section with 4 seed patterns by @chris-colinsky in #67
- Implement proposal 0009: per-instance fan-out resume by @chris-colinsky in #68
- Implement proposal 0010: bounded drain timeout by @chris-colinsky in #69
- Implement proposal 0025: tool_choice + absorb 0026 §8.X template by @chris-colinsky in #70
- Implement proposals 0027/0028/0029 + absorb textual 0030 by @chris-colinsky in #71
- Bundle agent-discoverable AGENTS.md in the wheel (agent-docs A2) by @chris-colinsky in #72
- Add openarmature CLI and patterns API (agent-docs A3+A4) by @chris-colinsky in #73
- chore(release): v0.9.0-rc1 by @chris-colinsky in #74
- Fetch submodule tags in release workflow test job by @chris-colinsky in #75
- chore(release): v0.9.0 by @chris-colinsky in #76
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
- Observability LLM payload + GenAI semconv (v0.17.0) by @chris-colinsky in #61
- chore(release): v0.8.0-rc1 by @chris-colinsky in #62
- chore(release): v0.8.0 by @chris-colinsky in #63
Full Changelog: v0.7.0...v0.8.0
v0.7.0
What's Changed
- chore(examples): scrub, standardize, reframe 04 by @chris-colinsky in #50
- feat(examples): add 05-08 (fan-out, parallel-branches, multimodal-prompt, checkpointing) by @chris-colinsky in #51
- feat(examples): close spec coverage gaps + add 09-tool-use by @chris-colinsky in #52
- docs(site): UX, nav, and reference cleanup by @chris-colinsky in #53
- docs(examples): per-example docs pages with mermaid diagrams by @chris-colinsky in #54
- docs: re-read README, Quickstart, Concepts against v0.6.0 by @chris-colinsky in #55
- docs: add RELEASING.md by @chris-colinsky in #56
- docs: complete reference, add middleware page by @chris-colinsky in #57
- chore(release): v0.7.0 by @chris-colinsky in #58
- chore(release): pin pyproject to 0.7.0rc1 + fix RELEASING.md by @chris-colinsky in #59
- chore(release): v0.7.0 by @chris-colinsky in #60
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
- docs: README install section for v0.5.0 PyPI publish by @chris-colinsky in #31
- docs: ship the openarmature docs site (Phase A) by @chris-colinsky in #32
- ci: rename CF Pages project to openarmature-python-docs by @chris-colinsky in #33
- docs: flip site_url to apex openarmature.ai by @chris-colinsky in #34
- docs: drop mike version provider for pre-1.0 by @chris-colinsky in #35
- docs: README rework + small docs-site polish by @chris-colinsky in #36
- chore: add PEP 621 classifiers to pyproject.toml by @chris-colinsky in #37
- chore: pin GitHub Actions to SHAs, add dependabot by @chris-colinsky in #38
- docs: scrub em dashes, polish landing + nav by @chris-colinsky in #41
- chore(deps): bump softprops/action-gh-release from 2.6.2 to 3.0.0 by @dependabot[bot] in #39
- chore(deps): bump github/codeql-action from 3.35.4 to 4.35.4 by @dependabot[bot] in #40
- feat(llm): structured output (proposal 0016) by @chris-colinsky in #42
- chore: bring examples under pyright by @chris-colinsky in #43
- feat(llm): image content blocks (proposal 0015) by @chris-colinsky in #44
- feat(prompts): prompt-management core (proposal 0017) by @chris-colinsky in #45
- feat(checkpoint): state migration for checkpoints (proposal 0014) by @chris-colinsky in #46
- feat(graph): parallel branches (proposal 0011) by @chris-colinsky in #47
- chore(release): v0.6.0 by @chris-colinsky in #48
- fix(release): install examples dep group in release workflow by @chris-colinsky in #49
New Contributors
- @dependabot[bot] made their first contribution in #39
Full Changelog: v0.5.0...v0.6.0
v0.5.0
What's Changed
- test: phase 0 conformance harness — typed parser for all 68 fixtures by @chris-colinsky in #7
- test: handle model instances in fixture discriminators by @chris-colinsky in #8
- graph: spec v0.6 observer pair model (proposal 0005) by @chris-colinsky in #9
- chore: support plural subgraphs: form, pull spec v0.8.1 by @chris-colinsky in #10
- ci: tag-driven release pipeline with TestPyPI RC track by @chris-colinsky in #11
- chore: bump to 0.4.0rc0 for release pipeline smoke test by @chris-colinsky in #12
- docs: add RELEASING.md, bump workflow actions to Node 24 by @chris-colinsky in #13
- graph: spec v0.4 middleware (proposal 0004) — phase 2 by @chris-colinsky in #14
- graph: phase 2 polish — review followups by @chris-colinsky in #15
- graph: spec v0.4 fan-out runtime (proposal 0005 PU side) — phase 3 by @chris-colinsky in #16
- llm: spec v0.8 llm-provider (proposal 0006) — phase 4 by @chris-colinsky in #17
- checkpoint: spec v0.8 checkpointing (proposal 0008) — phase 5 by @chris-colinsky in #18
- observability: spec v0.7 OTel mapping (proposal 0007) — phase 6.0 by @chris-colinsky in #19
- observability: PR #19 round-7 review followups by @chris-colinsky in #20
- sync spec_version pin to 0.8.2 by @chris-colinsky in #21
- observability: phase 6.1 concurrency-safe observer (PR-A) by @chris-colinsky in #22
- observability: phase 6.1 PR-B — logs SDK migration + filter bug fix by @chris-colinsky in #23
- observability: phase 6.1 PR-C — 4 conformance fixtures by @chris-colinsky in #24
- graph: phase 6.1 PR-C.1 — proposal 0012 + v0.9.0 by @chris-colinsky in #25
- observability: phase 6.1 PR-C.2 — proposal 0013 + v0.10.0 by @chris-colinsky in #26
- observability: phase 6.1 PR-C.3 — prepare_sync + fixture 010 by @chris-colinsky in #27
- release: prep 0.5.0rc1 by @chris-colinsky in #28
- ci: release workflow needs --all-extras for type checks by @chris-colinsky in #29
- release: 0.5.0 by @chris-colinsky in #30
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Spec v0.3.1 / proposal 0003: node-boundary observer hooks.
External code can now observe execution as it happens — the control-side equivalent of the data-side trace field pattern.
New public API
NodeEvent(frozen dataclass):node_name,namespacetuple,step,pre_state/post_state,error,parent_states. Exactly one ofpost_stateorerroris populated per event.ObserverProtocol: async callable receiving aNodeEvent. The parameter is positional-only so conformance isn't tied to a parameter name.CompiledGraph.attach_observer(fn) -> RemoveHandlefor graph-attached observers;invoke(state, observers=...)for invocation-scoped.CompiledGraph.drain()— awaits delivery of every event dispatched by prior invocations of this graph. Required for short-lived processes (CLIs, scripts, serverless).
Delivery semantics
- Strictly serial within an invocation: no two observers process the same event concurrently; no observer sees event N+1 until everyone has finished N.
- Order: graph-attached (outermost → innermost), then invocation-scoped — both in registration order.
- Async-from-graph:
invoke()returns when the graph reaches END regardless of queue state. - Observer exceptions are caught and reported via
warnings.warn— they don't break siblings, subsequent events, or the graph run. - Subgraph-internal events bubble up: the subgraph wrapper itself stays observer-transparent. Step counter spans the subgraph boundary;
namespaceandparent_statesextend.
Other changes
- CI workflow added at
.github/workflows/ci.yml(ruff + ruff-format + pyright + pytest). - Spec submodule pinned at v0.3.1 (corrigendum to fixture 013's YAML syntax).
See the proposal for design rationale.