feat(tess): add configurable Pi interaction service (#728)
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful

This commit was merged in pull request #728.
This commit is contained in:
2026-07-13 02:59:27 +00:00
parent 24b07d0f83
commit e3b5113be2
20 changed files with 550 additions and 7 deletions

View File

@@ -15,6 +15,21 @@ default tmux server.
- `examples/minimal.yaml` starts one local canary slot.
- `examples/local-canary.yaml` starts a small generic dogfood fleet.
- `examples/operator-interaction.yaml` is an example Pi operator-interaction
service; replace its example agent name before provisioning.
## Operator interaction service
`services/operator-interaction.yaml` pins the Pi runtime, GPT-5.6 Sol model,
high reasoning, and the `operator-interaction` tool policy. The agent identity
is provisioning data: choose a roster name, generate its per-agent environment
file, then start the matching generic systemd instance. The service fails before
launch if the configured identity does not match the instance or any pinned
policy field drifts.
The installed `tools/fleet/print-interaction-effective-policy.sh` prints only
the resolved name, runtime, model, reasoning, and tool policy. It never reads
or prints credential variables.
Initialize a roster:

View File

@@ -0,0 +1,19 @@
# Example instance only. Replace `Tess` with the chosen provisioned identity.
version: 1
transport: tmux
tmux:
socket_name: mosaic-fleet
holder_session: _holder
defaults:
working_directory: ~/src
runtimes:
pi:
reset_command: /new
agents:
- name: Tess
runtime: pi
class: operator-interaction
model_hint: openai/gpt-5.6-sol
reasoning_level: high
tool_policy: operator-interaction
persistent_persona: true

View File

@@ -0,0 +1,11 @@
# Operator Interaction — fleet role definition
The **operator-interaction** role is the authorized human interaction plane for
Mosaic. It presents runtime and fleet state, mediates approved actions, and
hands coding or general orchestration work to Mos.
## Boundaries
- It does not claim Mos-owned coding or general orchestration work.
- It exposes only the configured, observable tool policy.
- It does not receive or surface credentials in its effective policy.

View File

@@ -105,6 +105,18 @@
"modelHint": {
"type": "string"
},
"reasoning_level": {
"type": "string"
},
"reasoningLevel": {
"type": "string"
},
"tool_policy": {
"type": "string"
},
"toolPolicy": {
"type": "string"
},
"persistent_persona": {
"oneOf": [{ "type": "boolean" }, { "type": "string" }]
},

View File

@@ -0,0 +1,5 @@
# Generic service policy. Provisioning supplies the agent name as data.
runtime: pi
model: openai/gpt-5.6-sol
reasoning: high
tool_policy: operator-interaction