Skip to content

feat: extract portable runtime batch - #14

Merged
zhanghanduo merged 9 commits into
mainfrom
refactor/portable-runtime-batch
Sep 1, 2026
Merged

zhanghanduo merged 9 commits into
mainfrom
refactor/portable-runtime-batch

Conversation

@zhanghanduo

Copy link
Copy Markdown
Collaborator

Summary

  • extract durable run-local context journals and content-addressed blob storage
  • move MiniDAG, dynamic graph construction, shared models, and scoped registries
  • move reusable LLM middleware, observers, skills, session history, and agent-bus coordination primitives
  • add renewable wall-time leases and clarify the product/AgentCore persistence boundary

Boundary

AgentCore owns portable runtime semantics and implementation. Products continue to own composition roots, session/checkpoint association, sandbox authorization, UI history, and retention/TTL policy.

Validation

  • uv run ruff check agent_core tests
  • uv run pyright agent_core
  • uv run pytest -q (674 passed)
  • uv build

zhanghanduo and others added 9 commits September 1, 2026 23:18
Four spots where the extraction from ApodexHarness drifted from the
original, all found by diffing this branch against it file by file.

Name the node-context seam. ``models/node_context.py`` is deliberately
identity-only here, but ``DynamicGraphBuilder`` defaults to it, so a node
written against the full contract died on a bare "'NodeContext' object has
no attribute 'call_llm'" that said nothing about where a context with one
comes from. ``__getattr__`` now names ``node_context_factory`` (and the
node/role that asked); dunder probes still raise a plain AttributeError so
copy/pickle keep working.

Restore the SSE display-name lookup. ``_lookup_skill_name`` had been
stubbed to ``return None`` as "not part of the trimmed distribution", but
``FileSystemSkillLoader`` came across in the same batch — so every
``skill_loaded`` event degraded ``skill_name`` to the raw id. Resolved
structurally against the ``SkillLoader`` Protocol, which also finds a
loader registered under its concrete type.

Derive the injected SKILL.md path from ``root_dir``. The hardcoded
``plugins/skills/<id>/`` prefix happened to be right in the product repo;
in a library, any caller with custom ``skill_dirs`` was handed a path that
does not exist. Relative to cwd when the skill lives under it (what a
workspace-scoped ``read_text`` accepts), absolute otherwise, legacy layout
when a loader leaves ``root_dir`` empty.

Route the extensions-config env var through the shared prefix cascade
instead of the lone ``MIROHARNESS_``-prefixed name this module kept.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@zhanghanduo
zhanghanduo merged commit c7c5072 into main Sep 1, 2026
1 check passed
@zhanghanduo
zhanghanduo deleted the refactor/portable-runtime-batch branch September 1, 2026 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant