feat: add shell-native message routing
Some checks failed
tamq-ci / test (push) Failing after 5s

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a03397-4d51-7fd1-8ff2-946eb22ea2bc
This commit is contained in:
tegwick 2026-08-24 20:42:35 +02:00
parent 398fe316b4
commit e995cab1b8
12 changed files with 391 additions and 42 deletions

View file

@ -4,7 +4,7 @@ type: workplan
title: "Shell-native message routing and explicit inbox filters"
domain: communication
repo: tmux-amq
status: active
status: finished
owner: codex
topic_slug: coulomb-social
planning_priority: P0
@ -39,7 +39,9 @@ tamq flex-auth audit-core
@flex-auth Another message
```
These are per-session executable command shims, not shell aliases. They enqueue
These are tamq-owned executable command shims, not shell aliases. They are
placed in the operator command directory that already exposes `tamq`, with an
explicit command-directory override and isolated fallback. They enqueue
messages and do nothing else by default. Reading a manual inbox produces
comment-safe text:
@ -62,7 +64,7 @@ background, modifies a pane, or becomes a startup default.
```task
id: TAMQ-WP-0006-T01
status: progress
status: done
priority: high
state_hub_task_id: "f6228d55-37f0-5be6-a868-f681f09d091b"
```
@ -70,26 +72,35 @@ state_hub_task_id: "f6228d55-37f0-5be6-a868-f681f09d091b"
Document repository-first invocation and `--command COMMAND` in `tamq --help`,
including the terminal-neutral default and exact opt-in nature of the command.
Completed with a root-help shorthand section that names `--command COMMAND`,
the ordinary-shell default, and the absence of implicit terminal observation or
message injection.
## Install shell-native repository address commands
```task
id: TAMQ-WP-0006-T02
status: todo
status: done
priority: high
state_hub_task_id: "432e737c-b34e-56aa-8003-3f61e8ef4faf"
```
Create a private command directory for the managed session, populate it with
safe `@repo` and `@repo:` entry points for every requested repository, and add
that directory to each newly created window's environment. Invocation must
route through tamq's existing validation and durable send path. Reject unsafe
repository names rather than creating ambiguous executable paths.
Populate the operator command directory that exposes `tamq` with safe `@repo`
and `@repo:` entry points for every requested repository; support an explicit
`TAMQ_COMMAND_DIR` and isolated state fallback, and also add the selected
directory to each newly created window's environment. Invocation must route
through tamq's existing validation and durable send path. Reject unsafe
repository names and refuse to overwrite commands not owned by tamq.
Completed with executable `@repo` and `@repo:` shims beside the installed tamq
command, `TAMQ_COMMAND_DIR` override and state fallback, tmux PATH propagation,
safe repository-name checks, tamq ownership markers, and collision refusal.
## Make manual inbox output comment-safe
```task
id: TAMQ-WP-0006-T03
status: todo
status: done
priority: high
state_hub_task_id: "b4ff430d-3b09-56de-9c1a-20afb018964c"
```
@ -98,11 +109,15 @@ Render human-readable messages as shell comments prefixed with `#sender:` and
retain the message id for acknowledgement. Keep structured JSON stable for
automation.
Completed with `#sender:` rendering on every body line, durable ids on the
final line, and escaping of non-printing terminal control characters. JSON
output retains the original structured record.
## Add explicit pull-time inbox filters
```task
id: TAMQ-WP-0006-T04
status: todo
status: done
priority: high
state_hub_task_id: "d413ad83-06ff-5de1-97aa-256b4f684007"
```
@ -113,11 +128,15 @@ metadata through environment variables, acknowledge only after a zero exit,
and leave failed and subsequent messages pending. Filters are explicit inbox
consumers and never background terminal interceptors.
Completed with sequential pull-time filters, bounded metadata environment,
comment-only standard input, success acknowledgement, fail-fast pending
retention, and rejection of ambiguous `--all`/`--json` combinations.
## Prove and document the ordinary-shell workflow
```task
id: TAMQ-WP-0006-T05
status: todo
status: done
priority: high
state_hub_task_id: "da957158-fb75-5232-9610-7684ebca45b5"
```
@ -126,3 +145,10 @@ Cover root help, both address spellings, spaces and shell metacharacters in
message bodies, unknown targets, comment-safe inbox output, successful and
failed filters, acknowledgement behavior, path isolation, and installed tmux
acceptance. Update the operator quickstart and practical command reference.
Completed with 85 passing tests and 75% statement coverage. The isolated
installed-package test proves root help, real ordinary-shell command lookup
after shell startup, both neutral panes, durable delivery, comment-safe output,
filter acknowledgement, target-pane immutability, restart, recovery, and exact
explicit-command startup. A live user-install smoke repeated shell-native
routing with no target-pane change and left zero pending messages.