imccyu 42b07a7022 feat(sdk): add developer project tooling 2 kuukautta sitten
..
agent 42b07a7022 feat(sdk): add developer project tooling 2 kuukautta sitten
agent-loop 3285b77d3c Merge remote-tracking branch 'origin/master' into codex/rfc-subagent-background-tasks 2 kuukautta sitten
scope 31f4441fd4 pkg: update vendor dep 2 kuukautta sitten
session 31f4441fd4 pkg: update vendor dep 2 kuukautta sitten
system-prompt e6edee1d54 Merge remote-tracking branch 'origin/master' into codex/simp-drop-assembled-section-order 2 kuukautta sitten
tools 17511ea0d8 Merge branch 'master' into codex/rfc-subagent-background-tasks 2 kuukautta sitten
README.md 2a48b31306 docs: rewrite group maps for the examples/ relocation 2 kuukautta sitten

README.md

core/ — product API spine

The session log, system-prompt assembly, tool registry, agent vocabulary, and concrete loop that form the harness's default control spine. These are product packages — the stable surface plugins and consumers build against.

Package Role ctx key
scope/ Scoped-context registration primitive (scope tags, scope-filtered dispatch) (library — no ctx key)
session/ Event-sourced session log + in-memory store ctx.sessions
system-prompt/ Prompt-section + tool-schema assembly registry ctx.systemPrompt
tools/ Scoped tool registry + pre-policy, guards, around-dispatch, post-policy, and final-result observation ctx.tools
agent/ Agent interface, registry, agent/* event vocabulary ctx.agents
agent-loop/ The concrete loop plugin: ReactLoopAgent + the loop driver ctx.agentLoop

scope/ is the one non-service package here: a dependency-free library (createScope/scopeOf/scopeTarget) the registries and the loop build per-agent scoping on — it sits below session/ and system-prompt/ in the module graph precisely so they can consume it without a cycle.

agent-loop is the one concrete implementation of the agent seam and lives here because it is the harness's default product loop; everything else in core/ is interface/vocabulary. Plugins depend on the agent vocabulary, never on agent-loop directly, so the loop stays swappable.

The default composition that wires this spine into a runnable agent lives in examples/agent-spine-demo: one bundle plugin that loads the control spine plus selected default capabilities (timer + llm + sessions + system-prompt + tools + agents + invariants + the local skill family + tool-bash + agent-loop) and forwards agent-loop's agents list as its own config. It sits in examples/ — ready-to-run demo/reference bundles — not in core/: core/ ships the swappable spine pieces, while a demo bundle picks one concrete composition of them and adds a front door.