Skip to content

Releases: yoheinakajima/activegraph

v1.1.0

10 Jun 15:09
27c2901

Choose a tag to compare

v1.0.5.post2

20 May 06:29
f3ed033

Choose a tag to compare

v1.0.5.post2: type-system documentation.

A maintainer reading the docs as a user found that the type system
was never documented as a coherent whole — a reader had to assemble
it from the graph, events, relations, and patches concept pages,
and the question "are there base object types, or just the Diligence
pack as an example?" never got a direct answer.

This post-release adds a dedicated type-system page and a README
orientation section covering the three layers:

Event types are framework-defined — a fixed vocabulary (object.created,
behavior.failed, patch.applied, and so on, plus custom event types
behaviors can emit as any string).

Object and relation types are developer-defined — any string works,
no central schema, no registration. Packs can attach optional Pydantic
validation per type, but absent a pack the data passes through. The
Diligence pack's object and relation types are an example ontology,
not framework base types.

Patch states are framework-defined: proposed, applied, rejected.

The new concepts/type-system page covers all three layers, the
composition narrative, ontology design guidance, and the Diligence
pack as a worked example. The README gains a compact "type system at
a glance" section with the full event-type vocabulary inline.

Both the rendered doc page and the machine-readable /llms.txt and
/llms-full.txt regenerate from the same source markdown.

CONTRACT v1.0.5.post2 documents the work and surfaces two v1.1
candidates (an events.md doc-drift fix and a reason-taxonomy
enumeration).

See CHANGELOG.md for full notes.

v1.0.5.post1

19 May 22:38
dea4185

Choose a tag to compare

v1.0.5.post1: Apache 2.0 license and contribution policy.

This post-release ships three foundation pieces before the public
launch:

The Apache 2.0 license. The pyproject and README had declared MIT
for 12 milestones but the LICENSE text was never present at the
repo root. v1.0.5.post1 ships the first LICENSE file at the repo
root, with the declared license switched to Apache 2.0 in the
same motion. Reasons: explicit patent grant (MIT lacks this;
matters for a framework with novel architectural ideas), standard
for institutional projects, legally precise on contribution and
notice requirements. PEP 639 SPDX metadata; LICENSE and NOTICE
land under dist-info/licenses/ in the wheel.

The CONTRIBUTING.md policy. Issues-first contribution policy.
Doc PRs welcome directly. Code PRs maintainer-only until the
contributor community matures. Policy will relax in 3-6 months
based on actual contribution patterns.

Issue templates and config. Three structured templates (bug
report, feature request, question) under .github/ISSUE_TEMPLATE/,
plus a config.yml that disables blank issues and points
contributors at the docs first.

CONTRACT v1.0.5.post1 amendment documents the license change and
the contribution policy.

This is the last release before public launch.

See CHANGELOG.md for full notes.

v1.0.5

19 May 21:28
08826d2

Choose a tag to compare

v1.0.5: AI-readable docs via llms.txt support.

External user feedback on v1.0.4 surfaced that the docs site is
hard for AI agents to parse — they hit mkdocs-rendered HTML with
navigation chrome and visual structure rather than clean markdown.
Most evaluators of Active Graph in 2026 use AI tooling (Claude
Code, Cursor, Replit agents) to test repos. The docs need to be
machine-readable as a first-class concern.

v1.0.5 adds two files to docs.activegraph.ai:

/llms.txt — structured markdown index. H1 + blockquote summary

  • H2 sections linking the major doc pages. ~100 lines. Acts as
    a navigation aid for AI tools that support llms.txt-aware
    fetching.

/llms-full.txt — concatenated markdown of all doc pages. ~110K
tokens, well under the 200K context-window budget. Acts as the
"everything in one file" reference for AI tools that ingest
comprehensive docs.

Both files are generated at docs build time via mkdocs-llmstxt
(no hand-maintenance, no drift between source markdown and
generated files). A CI gate verifies both files exist and are
well-formed after every docs build.

CONTRACT v1.0.5 #1 documents the decision and deliberately does
not touch three adjacent concerns filed for v1.1: content
negotiation for Accept: text/markdown serving, editorial
doc-readability audit, and source-markdown improvements for AI
parseability.

This is the final patch release before the public launch.

See CHANGELOG.md for full notes.

v1.0.4

19 May 18:30
dfbb7c5

Choose a tag to compare

v1.0.4: pre-launch foundation cleanup.

Six findings from the post-v1.0.3 contract review, plus the
contract review's deliverables (overlay banner, Standing Rules,
CONTRACT-review-findings.md, v1.1-plan.md) which merged
separately. v1.0.4 absorbs the findings and lands the
documentation continuity that makes the contract review's
output visible from CONTRACT.md alone.

Findings:

  1. graph.relations(source=, target=, type=) added as the
    canonical form. graph.get_relations() kept as backward-
    compatible alias.

  2. Per-error-page footers pointing at runtime.errors /
    BehaviorFailure observation surfaces added to 10 error pages
    that route through behavior.failed.

  3. WARNING-log vs BehaviorFailure field-name divergence
    documented in failure-model.md.

  4. Boundary-anchored test added for _requeue_unfired's zero-
    subscriber case, per Standing Rule §2.

  5. Review-overlay markers added at three CONTRACT prose sites
    (v0 #11, v0 #16, v0.8 #19) clarifying scope without modifying
    amendment prose.

  6. v1.0.2.post1 amendment section appended retroactively,

    completing the archeological record per Standing Rule §1.

Two v1.1 candidates surfaced during v1.0.4 work and filed in
v1.1-plan.md: C-3 (failure-routing convention for programmer-
error classes that currently escape behavior.failed) and I-4
(replay-divergence-error doc cross-link, parked behind C-3).

This is the last patch release before public launch.

See CHANGELOG.md for full notes.

v1.0.3

19 May 13:27
80f1a0e

Choose a tag to compare

v1.0.3: comprehensive response to two user-test reports.

Two independent users built systems on Active Graph v1.0.1 and
v1.0.2 and produced detailed friction reports. v1.0.3 addresses
four findings spanning API ergonomics, error UX, and a runtime
bug:

Finding 1: graph.objects() canonical form
The natural API form graph.objects(type="x") now exists. It
matches ctx.view.objects(type="x") for consistency. The previous
graph.query(object_type="x") is kept as a backward-compatible
alias. Documentation updated to recommend graph.objects().

Finding 2: output_schema strict validation
@llm_behavior(output_schema=...) now strict-validates at
decoration time. Passing a non-Pydantic-BaseModel (e.g., a JSON
schema dict) raises TypeError immediately with a code example
showing the correct form. Previously the validation failed
silently at LLM-call time via a behavior.failed event with an
unhelpful diagnostic. Dict-form schema support is filed as a v1.1
candidate.

Finding 3: behavior.failed user-facing signal
Behavior failures during a run now log at WARNING level with the
reason code and a More: URL pointing at the error reference page.
A new runtime.errors property exposes accumulated failures as
structured BehaviorFailure objects for programmatic inspection.
The underlying failures-as-events model from CONTRACT v0.6 #11
is unchanged; this adds user-facing surfaces to it.

Finding 4: tool-use multi-turn message construction (BUG)
The runtime's tool-use message history now includes tool_use
content blocks in assistant messages, matching Anthropic's API
specification. Previously, the framework appended only raw_text
to message history, omitting the tool_use blocks. The Vertex AI
proxy enforces the spec strictly and returned HTTP 400 on every
tool-using behavior. This fix is the precondition for any Anthropic
deployment that enforces strict message-shape validation. LLMMessage
gained a tool_calls field (non-breaking additive change).

CONTRACT v1.0.3 amendments document each decision. Five v1.1
candidates filed alongside the amendments (dict-form output_schema,
on_failure= callback, OpenAI tool-use translation, fire-once
aggregation triggers, pack-load cross-provider validation). A
contract-review work item after v1.0.3 will consolidate the v1.1
backlog.

See CHANGELOG.md for full notes.

v1.0.2.post1

19 May 07:15
5425a1b

Choose a tag to compare

v1.0.2.post1: validation boundary correction.

v1.0.2 added cross-provider model validation but the validation
fired at first-run time rather than at the binding moments
(Runtime construction and behavior registration) that CONTRACT
v1.0.2 #1 promised. External spot-check caught the gap: users
who constructed a Runtime with a registered conflicting behavior
got no signal until they called run_goal(), which is the wrong
discovery moment for a configuration error.

v1.0.2.post1 moves the validation to both binding moments:

  • Runtime.init validates against the existing global registry
  • register() and @llm_behavior decoration validate against live
    Runtimes (tracked via WeakSet)

Cross-provider model mismatches now raise InvalidRuntimeConfiguration
at the moment the conflict comes into existence, not at first use.
The error message itself is unchanged and remains specific about
the model, the configured provider, and the fix.

This is a post-release fix to v1.0.2's broken promise, not a new
feature. The other v1.0.1 user-test findings remain scheduled for
v1.0.3.

See CHANGELOG.md for full notes.

v1.0.2

19 May 06:32
f503d28

Choose a tag to compare

v1.0.2: patch release addressing v1.0.1 user-test finding.

The @llm_behavior decorator's default model was Anthropic-specific
(claude-sonnet-4-5), silently producing HTTP 404 when used with
OpenAIProvider. This undermined v1.0.1's provider-agnostic claim:
a user swapping AnthropicProvider() for OpenAIProvider() and running
the same code got a 404 with no helpful diagnostic.

v1.0.2 makes the default provider-aware: each provider now declares
its own default_model, and @llm_behavior resolves to the runtime's
provider default when no explicit model= is set. Cross-provider model
name mismatches (e.g., model="claude-..." with OpenAIProvider) now
raise InvalidRuntimeConfiguration at registration time with a clear
message naming the fix. Unknown model names pass silently to preserve
support for custom and fine-tuned models.

CONTRACT v1.0.2 #1 documents the new provider-aware default surface
and the model-validation behavior.

Two additional v1.0.1 user-test findings (output_schema accepting
dicts silently, behavior.failed UX gap) are scheduled for a later
release.

See CHANGELOG.md for full notes.

v1.0.1

19 May 05:03
3f33652

Choose a tag to compare

v1.0.1: patch release based on first-external-user feedback,
plus provider expansion to back the provider-agnostic claim,
plus BabyAGI example as the lineage demonstration.

Patches:

  • register() public API for multi-run scripts
  • Schema-vs-instance failure mode in LLM auto-instructions
  • SQLiteEventStore error hints at Runtime(persist_to=...)

Provider expansion:

  • OpenAIProvider with surface parity to AnthropicProvider
  • New [openai] and [anthropic] extras; [llm] now installs both
  • Shared parsing.py module for cross-provider structured output

Examples:

  • examples/babyagi.py: BabyAGI's autonomous agent loop rebuilt
    as three reactive behaviors on Active Graph, with --provider
    selection between anthropic and openai

CONTRACT v1.0.1 #5 documents the LLMProvider commitment surface,
the three-extras pattern, and the explicit non-promises for v1.0.1
(tool use is Anthropic-only; native structured output modes deferred
to v1.1).

See CHANGELOG.md for full notes.

v1.0

19 May 00:04
994aaaa

Choose a tag to compare

v1.0: production release.

activegraph is now stable and available on PyPI as activegraph==1.0.0.

Substantive changes from v1.0-rc3:

  • Tutorial step 7 fix: the fork-and-diff Python snippet now self-documents
    the diff command it enables, so a first-time user running
    python fork_and_diff.py sees both the fork creation and the diff
    command in one execution. (Surfaced by the v1.0-rc3 user-test gate.)
  • README expansion: new "Concepts at a glance" section indexes the
    twelve framework primitives with one-line summaries and links to
    the concepts pages.
  • "five counts" prose correction in tutorial step 7 (divergent_relations
    was missing from the count description).
  • Workflow trigger correction: deploy-verification now auto-runs on PRs
    alongside other CI checks (caught during v1.0 final's own merge).

See CHANGELOG.md for the full v0 → v1.0 history.