jason.woltje
9bd4f1c405
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
2026-09-03 11:56:38 -05:00
jason.woltje
7db4c5c2ed
feat(agent): interactive TUI launcher + identity + TOOLS.md ( #35 )
...
- scripts/agent.sh <name>: launches interactive pi TUI in the container
with contracts + optional mission + agent identity + named session +
optional workspace/tools; the Mosaic alternative to vanilla pi
- pi adapter: MOSAIC_INTERACTIVE branch (clean TUI, no -p, no initial
prompt); headless exec rebuilt via positional args (no word-splitting
on the request); MOSAIC_AGENT_NAME optional in headless
- loader: AGENT IDENTITY section when the launcher names the agent
- compose: fixed command removed (request defaults live in run-agent.sh);
MOSAIC_INTERACTIVE/MOSAIC_AGENT_NAME passthrough
- docs/TOOLS.md: full on-demand tool reference; AGENTS.md routes to it
- RELEASE -> 0.0.8 (container change); build verified
Closes #35
2026-09-03 11:24:56 -05:00
jason.woltje
bb5cecb348
feat(adapters): adapter contract, dispatch, pi + mock adapters ( #16 )
...
- adapters/README.md: the harness boundary contract (env in, response on
stdout, diagnostics stderr, exit 0 success)
- adapters/pi: extracted current invocation unchanged
- adapters/mock: deterministic MOSAIC_MOCK_RESPONSE echo (test-only)
- run-agent.sh: name-validated dispatch to adapters/<name>/adapter.sh
- config: optional execution.adapter (pi|mock), default pi, configVersion
stays 1 — existing configs remain valid; selection authority is the
config file (load_config exports it)
- compose: MOSAIC_ADAPTER / MOSAIC_MOCK_RESPONSE passthrough; Containerfile
installs adapters read-only; RELEASE -> 0.0.5
Verified: hello unchanged; mock verbatim via config; unknown adapter and
path-traversal names refused in-container; invalid adapter exits 2.
Closes #16
2026-09-02 21:18:07 -05:00
jason.woltje
c2365ae519
chore: baseline container POC and atomic foundation plan
...
- Containerized Pi hello-world proof (image mosaic-poc-agent:0.84.4, non-root)
- Four immutable contract fixtures loaded into a generated system prompt
- build/hello/verify/reset scripts with exact-match gating and reset safety
- Documented Pi discovery (v0.84.4, -p mode, --system-prompt, container auth)
- Append-only BUILD-LOG with corrections; deferred layers in LAYERS.md
- Architecture plan: docs/plans/2026-09-02_atomic-mosaic-foundation.md
2026-09-02 18:24:36 -05:00