A delivery's own restarts reached the operator as notifications while it ran, and every restart of the tool runner popped the four silenced messages up again on the desk, twice. The router now reads the controller's walk start and end on plan-moved, holds what an open walk touches until its end or bound, tells the end as one message, and makes the restart pass once per restart from its own state, leaving silenced, withheld, answered and held messages as they are.
158 lines
2.8 KiB
JSON
158 lines
2.8 KiB
JSON
{
|
|
"module": "messenger",
|
|
"version": "1",
|
|
"slug": "msgr",
|
|
"runs-as": "messenger",
|
|
"seats": [
|
|
{
|
|
"name": "operator-channel",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"open",
|
|
"history",
|
|
"notify",
|
|
"asks"
|
|
],
|
|
"accepts": [
|
|
"ask",
|
|
"cancel"
|
|
],
|
|
"emits": [
|
|
"decided"
|
|
],
|
|
"by-caller": [
|
|
"ask",
|
|
"cancel",
|
|
"decided"
|
|
],
|
|
"records": [
|
|
"asks"
|
|
]
|
|
},
|
|
{
|
|
"name": "channel",
|
|
"scope": "mesh",
|
|
"kinded": true,
|
|
"accepts": [
|
|
"show",
|
|
"edit",
|
|
"send"
|
|
]
|
|
},
|
|
{
|
|
"name": "intake",
|
|
"scope": "mesh",
|
|
"kinded": true,
|
|
"emits": [
|
|
"choice",
|
|
"link",
|
|
"failed",
|
|
"standing"
|
|
],
|
|
"proofs": [
|
|
"code"
|
|
]
|
|
}
|
|
],
|
|
"claims": [
|
|
{
|
|
"name": "operator-channel",
|
|
"scope": "mesh",
|
|
"serves": [
|
|
"open",
|
|
"history",
|
|
"notify",
|
|
"asks"
|
|
]
|
|
}
|
|
],
|
|
"uses": [
|
|
"channel"
|
|
],
|
|
"consumes": [
|
|
"mesh-controller.condition-raised",
|
|
"mesh-controller.condition-changed",
|
|
"mesh-controller.condition-cleared",
|
|
"mesh-controller.plan-moved",
|
|
"intake.choice",
|
|
"intake.link",
|
|
"intake.failed",
|
|
"intake.standing"
|
|
],
|
|
"emits": [
|
|
"refused"
|
|
],
|
|
"invokes": [
|
|
"seat:mesh-controller.conditions",
|
|
"seat:mesh-controller.root-free",
|
|
"seat:issue-tracker.tracking"
|
|
],
|
|
"state": [
|
|
"open",
|
|
"sent",
|
|
{
|
|
"name": "asks",
|
|
"ttl-seconds": 2592000
|
|
},
|
|
"identities",
|
|
"walks"
|
|
],
|
|
"own-secrets": {
|
|
"broker": "${dir:state}/broker"
|
|
},
|
|
"secrets-owner": "messenger",
|
|
"tools": [
|
|
"messenger_status",
|
|
"messenger_recent",
|
|
"messenger_test",
|
|
"messenger_preview",
|
|
"messenger_check",
|
|
"messenger_identities",
|
|
"messenger_unlink"
|
|
],
|
|
"resources": [
|
|
{
|
|
"id": "account",
|
|
"type": "user",
|
|
"name": "messenger",
|
|
"shell": "/usr/bin/nologin",
|
|
"home": "/var/lib/messenger"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"place": ".",
|
|
"owner": "messenger"
|
|
},
|
|
{
|
|
"id": "settings",
|
|
"type": "file",
|
|
"path": "${dir:state}/settings.json",
|
|
"mode": "0600",
|
|
"merge": "json",
|
|
"content": "{\n \"time-zone\": \"\",\n \"only-what-needs-me\": []\n}\n",
|
|
"owner": "messenger"
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/messenger",
|
|
"binary": "messenger",
|
|
"loads": [
|
|
"messenger"
|
|
],
|
|
"env": {
|
|
"MESH_MESSENGER_SETTINGS": "${dir:state}/settings.json",
|
|
"MESH_MESSENGER_STATE": "${dir:state}"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|