## fujibee/agmsg — v1.3.1…v1.4.0

_36 commits._

### Features
- **jev: add TypeSafe as a second provider alongside OpenRouter (#1364)** (c2da3f3)
- **feat(ext-tool/jev): accept only the strict JSON-with-questions shape, and document how to ask (#1358)** (7809465)
- **feat(ext-tool): Jev adapter — route a task to a model and effort (#1339)** (4be65bf)
- **feat(team): show ext-tool members as ext-tool (<tool>) without error-looking cells (#1337)** (4787125)
- **feat(ext-tool): Slack adapter (#1336)** (cf2154c)
- **feat(ext-tool): an external program as a team member, foundation (#1331)** (4f16e13)
- **feat(delivery): re-arm the Claude Code Monitor by default when its expiry notice shows it delivered something (#1328)** (bd232c2)
- **feat(remote): reprocess quarantine rows a newer parser can now understand (#1323)** (8e899f7)

### Fixes
- **perf(types): defer the renderable-types scan out of source time (#1366)** (bc94d06)
- **jev: fix tool.conf comments that still named only OpenRouter (#1365)** (0807ed2)
- **fix(join): skip pane placement for ext-tool members (#1340)** (4a5764e)
- **fix(ext-tool): forward setup args and read the secret from the clipboard (#1335)** (7e17072)
- **perf(watch): cache a team's storage driver per cycle and the storage dir per process (#1333)** (8ade0fb)
- **fix(remote-sync): bound the scoped reprocess pending-count walk (#1332)** (adb1302)
- **perf(watch): cache lock-path invariants and skip idle-cycle reformatting (#1329)** (fcf7440)
- **fix(poke): refuse to type over a live draft, and drop rearm.sh for a template procedure (#1322)** (751adcd)
- **fix(watch): restart on the new code when the installation changes (#1320)** (7f10704)
- **fix(remote-sync): release the team config lock on SIGTERM/SIGINT (#1325)** (1939642)

### Backend
- **release: 1.4.0 (#1374)** (fdab094)
- **Merge pull request #1370 from fujibee/integration/ext-tool** (8abe912)
- **jev: report each question's own confidence, not one joint figure (#1369)** (3125984)
- **jev, ext-tool README: state that handle is not a direct entry point (#1368)** (d825d52)
- **jev: promote batching multiple questions into one call in USAGE.md (#1367)** (0c0e4a6)
- **Merge remote-tracking branch 'origin/main' into int-ext** (cb20b81)
- **tests(delivery): wait for watcher conditions instead of a flat sleep (#1327)** (5dab54b)
- **tests(self-name): stop the #1137 detect walk from shelling out to a real ps (#1324)** (62b2fdb)

### Tests
- **test(ext-tool): harden the mock-server wait and the clipboard-reader fakes (#1342)** (94a4c60)
- **test(ext-tool): wait for the mock server to accept, and keep the fake pbpaste executable (#1341)** (b82288e)
- **test(remote-status): make the fake ps answer only for a pid that is actually alive (#1338)** (ac00fbe)
- **test(self-proof): let the fixture's kill of an already-gone pid fail without aborting under errexit (#1334)** (1cdf5d7)

### Docs
- **docs(ext-tool): preview page — what it is, what it does not do yet, where invocation goes (#1355)** (f7b3fcc)
- **docs(watch): point the three stale source comments at #983 (#989)** (4e74b8a)
- **docs(ext-tool/slack): add USAGE.md for the sending seat, declare request=loose (#1356)** (c85f1c6)
- **docs(architecture): document the terminal axis and the terminal driver interface (#1357)** (bacf9ae)

### Chore
- **refactor(ext-tool/slack): drop the request= key nothing reads (#1362)** (42e4e65)
- **refactor(ext-tool): move join, delivery and row rendering behind per-type hooks (#1359)** (8828739)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/fujibee/agmsg?utm_source=github-action)._