Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
---
hide:
- navigation
- toc
---

Expand Down Expand Up @@ -65,7 +64,11 @@ buy-in from every node.

---

Built around an open, language-agnostic
[specification](https://github.com/LunarCommand/openarmature-spec){target="_blank" rel="noopener"}.
A TypeScript implementation is on the roadmap; behaviour stays
identical across implementations via spec conformance fixtures.
## Open specification

openarmature is defined by a public, language-agnostic specification —
Comment thread
chris-colinsky marked this conversation as resolved.
Outdated
not a Python-shaped opinion exported to other languages. Reference
implementations share conformance fixtures, so behavior stays identical
across languages, runtimes, and tooling stacks.

[Read the spec →](https://openarmature.org){target="_blank" rel="noopener"}
94 changes: 94 additions & 0 deletions docs/overrides/partials/header.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
{#-
Local override of material/partials/header.html.

Sole change vs. the upstream partial: the "site_name" topic in
``.md-header__title`` is wrapped in an anchor pointing at the site
root, so clicking the visible "OpenArmature" wordmark navigates
home. Upstream's default leaves that topic as a plain ``<div>`` —
the only header-area link is the icon-style ``md-logo`` button,
which our extra.css hides because we want the wordmark on its own.

Re-sync this file when bumping mkdocs-material; everything below is
copied verbatim from the upstream partial except the marked ``<a>``
wrap on the site-name topic.
Comment thread
chris-colinsky marked this conversation as resolved.
Outdated
-#}
{% set class = "md-header" %}
{% if "navigation.tabs.sticky" in features %}
{% set class = class ~ " md-header--shadow md-header--lifted" %}
{% elif "navigation.tabs" not in features %}
{% set class = class ~ " md-header--shadow" %}
{% endif %}
<header class="{{ class }}" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="{{ lang.t('header') }}">
<a href="{{ config.extra.homepage | d(nav.homepage.url, true) | url }}" title="{{ config.site_name | e }}" class="md-header__button md-logo" aria-label="{{ config.site_name }}" data-md-component="logo">
Comment thread
chris-colinsky marked this conversation as resolved.
{% include "partials/logo.html" %}
</a>
<label class="md-header__button md-icon" for="__drawer">
{% set icon = config.theme.icon.menu or "material/menu" %}
{% include ".icons/" ~ icon ~ ".svg" %}
</label>
{#- LOCAL OVERRIDE: pin the wordmark on the homepage. The page title
there is also "OpenArmature", so Material's default scroll
animation flips between the bold wordmark and the un-bold page
title of the same text, which reads as a glitch. On the
homepage we tag the title element so extra.css can suppress the
swap, and we skip rendering the page-title topic entirely. -#}
<div class="md-header__title{% if page.is_homepage %} md-header__title--pinned{% endif %}" data-md-component="header-title">
<div class="md-header__ellipsis">
{# LOCAL OVERRIDE: render the site-name topic as an <a> so the
wordmark is clickable. Material's default markup is a plain
<div class="md-header__topic">; we substitute an anchor that
carries the same .md-header__topic class so the theme's
positioning rules (which target direct children of
.md-header__ellipsis) still apply. #}
<a href="{{ config.extra.homepage | d(nav.homepage.url, true) | url }}" class="md-header__topic md-header__topic-link" aria-label="{{ config.site_name }}">
<span class="md-ellipsis">
{{ config.site_name }}
</span>
</a>
{% if not page.is_homepage %}
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
{% if page.meta and page.meta.title %}
{{ page.meta.title }}
{% else %}
{{ page.title }}
{% endif %}
</span>
</div>
{% endif %}
</div>
</div>
{% if config.theme.palette %}
{% if not config.theme.palette is mapping %}
{% include "partials/palette.html" %}
{% endif %}
{% endif %}
{% if not config.theme.palette is mapping %}
{% include "partials/javascripts/palette.html" %}
{% endif %}
{% if config.extra.alternate %}
{% include "partials/alternate.html" %}
{% endif %}
{% if "material/search" in config.plugins %}
{% set search = config.plugins["material/search"] | attr("config") %}
{% if search.enabled %}
<label class="md-header__button md-icon" for="__search">
{% set icon = config.theme.icon.search or "material/magnify" %}
{% include ".icons/" ~ icon ~ ".svg" %}
</label>
{% include "partials/search.html" %}
{% endif %}
{% endif %}
{% if config.repo_url %}
<div class="md-header__source">
{% include "partials/source.html" %}
</div>
{% endif %}
</nav>
{% if "navigation.tabs.sticky" in features %}
{% if "navigation.tabs" in features %}
{% include "partials/tabs.html" %}
{% endif %}
{% endif %}
</header>
15 changes: 9 additions & 6 deletions docs/reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
Auto-generated from docstrings. Pick a subpackage:

- [`openarmature.graph`](graph.md): state, builder, edges, nodes,
projections, fan-out, middleware, observer, reducers, errors.
projections, fan-out, parallel branches, middleware, observer,
reducers, errors.
- [`openarmature.llm`](llm.md): Provider Protocol, message + tool
types, the OpenAIProvider, shared error helpers.
types, multimodal content blocks, structured output, the
OpenAIProvider, shared error helpers.
- [`openarmature.prompts`](prompts.md): PromptManager, PromptBackend
Protocol, FilesystemPromptBackend, PromptGroup, prompt
observability propagation.
- [`openarmature.checkpoint`](checkpoint.md): Checkpointer Protocol,
CheckpointRecord, in-memory + SQLite backends.
CheckpointRecord, in-memory + SQLite backends, state-migration
registry.
- [`openarmature.observability`](observability.md): correlation
primitives and the optional OTel mapping (`[otel]` extra).

Public surface is what each subpackage's `__init__.py` re-exports. Symbols
prefixed with `_` are package-private and not shown here.
32 changes: 29 additions & 3 deletions docs/stylesheets/extra.css
Original file line number Diff line number Diff line change
Expand Up @@ -157,13 +157,39 @@
color: #cd8bf4;
}

/* Hide the default Material book-icon logo next to the site name; the
* "OpenArmature" wordmark stands on its own and already links to the
* site root. */
/* Hide the default Material book-icon logo next to the site name. The
* "OpenArmature" wordmark itself is made clickable by the local
* ``docs/overrides/partials/header.html`` override, which wraps the
* site-name topic in an ``<a>`` pointing at the site root. */
.md-header__button.md-logo {
display: none;
}

/* Inherit header text colors on the wordmark anchor introduced by the
* partial override, so it reads as the wordmark rather than a styled
* link. */
.md-header__topic-link,
.md-header__topic-link:hover,
.md-header__topic-link:focus,
.md-header__topic-link:visited {
color: inherit;
text-decoration: none;
}

/* Suppress the wordmark/page-title scroll animation on the homepage.
* The homepage's page title is also "OpenArmature", so Material's
* default swap flips between the bold wordmark and the un-bold
* page-title of the same text — reads as a render glitch. The
* ``--pinned`` modifier is added by the partial override when
* ``page.is_homepage`` is true, and we don't render the second topic
* at all in that case; this rule keeps the wordmark visible regardless
* of the ``data-md-state="topic"`` toggle Material adds on scroll. */
.md-header__title--pinned .md-header__topic {
opacity: 1;
pointer-events: auto;
transform: none;
}

/* Hide Material's auto-generated site-name header at the top of the
* primary sidebar — we have an explicit ``OpenArmature: index.md``
* entry in the nav config which serves as the home link. */
Expand Down
6 changes: 6 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ dev_addr: "127.0.0.1:8765"

theme:
name: material
# Override directory for theme partials. ``docs/overrides/`` carries
# the customized ``partials/header.html`` that makes the
# "OpenArmature" wordmark clickable (Material's default leaves it
# as a plain ``<div>``).
custom_dir: docs/overrides
palette:
- media: "(prefers-color-scheme: light)"
scheme: default
Expand Down Expand Up @@ -94,6 +99,7 @@ nav:
- Graphs: concepts/graphs.md
- Composition: concepts/composition.md
- Fan-out: concepts/fan-out.md
- Parallel branches: concepts/parallel-branches.md
- LLMs: concepts/llms.md
- Prompts: concepts/prompts.md
- Observability: concepts/observability.md
Expand Down