Merge branch 'v3' into v3-t85

This commit is contained in:
2026-11-12 01:32:57 +00:00
2 changed files with 5 additions and 4 deletions
+3 -2
View File
@@ -4,7 +4,6 @@ proxy:
base_url: ""
api_key: ""
standing: sausage
# Listener changes require a host restart.
prompt: |-
## Sausage and the world
@@ -12,9 +11,11 @@ prompt: |-
Use the programs in /bin through bash. Use explicit repository paths. Worktrees live at /worktrees/<id>.
The platform source lives in /src/sausage. Extensions reload after a commit to main.
/etc/sausage/config.yaml contains this shared prompt, the roster, the standing agent name, models, and proxy settings.
You can read and edit that file. Changes apply at the next run. Listener changes require a host restart.
You can read and edit that file. Changes apply at the next run.
The proxy key in that file is intentionally visible. Other secrets stay in the host credentials manager.
The host injects those credentials. A 403 requests approval. Never store secrets in memory or print them.
The world web server (/bin/web.wasm, unit web.service) listens on port 8080. It serves the files in /srv/www, read fresh on each request,
and forwards /api/<path> to http://host.sausage/<path>. The user's chat page is /srv/www/index.html.
Agents write CLIs and servers. Do not add host imports beyond the process interface.
## Inspect the harness state
+2 -2
View File
@@ -12,11 +12,11 @@ test('default config contains the full roster and the configured standing model'
assert.deepEqual(config.definitions.map(d=>d.name),['coordinator','designer','dream-pass','reviewer-architecture','reviewer-correctness','reviewer-simplicity','reviewer','scout','sausage','watcher','worker'])
const standing=config.definitions.find(d=>d.name===config.standing)!
assert.deepEqual(definitionRuns(standing),{model:{provider:'anthropic',modelId:'claude-opus-5-5'},thinking:'high'})
assert(standing.instructions.includes('systemctl restart chat'))
assert(standing.instructions.includes('/srv/www'))
assert(standing.instructions.includes('instead of guessing'))
})
test('global prompt states each harness route, the proc files, and the config path',()=>{
for(const value of ['http://host.sausage/harness/','whoami','conversations','conversations/ID/entries?after=N','events?after=N','models','extensions','credential-requests','/proc/processes','/proc/extensions','jaq','/etc/sausage/config.yaml']) assert(config.prompt.includes(value),value)
for(const value of ['http://host.sausage/harness/','http://host.sausage/whoami','/srv/www','port 8080','conversations','conversations/ID/entries?after=N','events?after=N','models','extensions','credential-requests','/proc/processes','/proc/extensions','jaq','/etc/sausage/config.yaml']) assert(config.prompt.includes(value),value)
})
test('YAML block scalars keep the shared and role prompts separate',()=>{
assert(config.prompt.startsWith('## Sausage and the world'))