feat(agents): agent seats - per-agent SOUL, role, definitions dir (#36)

- agents/<name>/ holds agent.json (strictly validated: version, name,
  role?, capabilities?, workspace?, session?) + SOUL.md (persona prose)
- agent.sh: definition loading (quote-safe node defaults file), runtime
  SOUL copy to dataRoot/agents/<name>/, MOSAIC_AGENT_SOUL_FILE ->
  loader fills the SOUL slot from the seat's persona (contract SOUL =
  default persona; governance never overridden)
- seat.json written once at instantiation (seatVersion, name, role, at)
- identity section gains agent role; compose passthrough for role+SOUL
- live user context (M14) + seat SOUL compose the full persona:
  governance -> persona -> identity -> user -> mission
- RELEASE -> 0.0.10; packaged and health-gated activated
- example seat committed: agents/researcher

Closes #36
This commit is contained in:
2026-09-03 11:56:38 -05:00
parent a7b612435b
commit 9bd4f1c405
9 changed files with 129 additions and 10 deletions
+7
View File
@@ -50,4 +50,11 @@ bootstrap_runtime_dir() {
echo "bootstrap: created $MOSAIC_DEV_DIR"
fi
touch "$MOSAIC_DEV_DIR/$POC_ROOT_MARKER"
# Live user context layer (M14): seeded once, owned by the user from
# then on; dispatched to every agent launch without rebuilds.
mkdir -p "$MOSAIC_DEV_DIR/user"
if [ ! -f "$MOSAIC_DEV_DIR/user/USER.md" ]; then
printf '# User\n\nDescribe yourself, your machine, and your preferences here.\nThis file is dispatched to every Mosaic agent launch.\n' \
> "$MOSAIC_DEV_DIR/user/USER.md"
fi
}