You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
🤖 Generated with [Nori](https://noriagentic.com/)
- Adds config-gated ACP wire proxy logging via `[acp_proxy] enabled =
true`, writing append-only JSONL files under `$NORI_HOME/acp-wire`.
- Wraps each ACP child subprocess transport with raw JSON-RPC line
logging in both directions, including prompt-summary subprocesses.
- Documents the new diagnostic path and adds durable config plus real
subprocess coverage.
## Test Plan
- [x] `cargo test -p nori-acp`
- [x] `cargo test -p nori-tui`
- [x] `cargo build --bin nori && cargo test -p tui-pty-e2e`
- [x] Manual TUI smoke with `elizacp`, temp `NORI_HOME`, `[acp_proxy]
enabled = true`, and generated wire logs
- [x] `just fmt`
- [x] `just fix -p nori-acp`
- [x] `just fix -p nori-tui`
- [x] `git diff --check`
Share Nori with your team: https://www.npmjs.com/package/nori-skillsets
Nori can optionally wrap ACP subprocess transports with an append-only wire logger. The setting is top-level in `config.toml`:
135
+
136
+
```toml
137
+
[acp_proxy]
138
+
enabled = true
139
+
```
140
+
141
+
When enabled, the resolved `AcpProxyConfig` stores logs under `$NORI_HOME/acp-wire`. The config layer intentionally owns this path resolution so every ACP entry point uses the same home directory semantics. The TUI passes the resolved proxy config into `AcpBackendConfig`; the backend passes it to each `SacpConnection::spawn()` call, including prompt-summary subprocesses, so every ACP child process gets its own log file.
142
+
143
+
The connection layer uses `sacp::Lines` to observe raw newline-delimited JSON-RPC messages at the transport boundary before or after SACP parsing. Each child process gets a distinct JSONL file named from the launch timestamp, child PID, and sanitized agent slug. Records include the timestamp, direction (`client_to_agent` or `agent_to_client`), agent slug, child PID, and the parsed JSON message. If a line cannot be parsed as JSON, the logger preserves the raw line and parse error instead of disrupting the live session.
0 commit comments