agents-pod 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,55 @@
1
+ # Changelog
2
+
3
+ All notable changes to agents-pod. The format follows
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project
5
+ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [0.1.0] — 2026-11-03
8
+
9
+ First release: one pod, many wake-ups, and the machinery that keeps a standing
10
+ unit alive across them. Published under the AGPL-3.0-or-later.
11
+
12
+ ### Added
13
+
14
+ - **CLI** — `spawn`, `status`, `list`, `logs [--follow]`, `wake [--warm]`,
15
+ `cancel`, `reconcile`, `agent add|edit|rm|list`, `listener add|rm|list`,
16
+ `project cap`. Exit codes: `0` success or nothing to do, `1` at least one pod
17
+ failed, `2` configuration or storage error.
18
+ - **Wrapper per wake-up** (`bin/wrapper.mjs`) — a detached session and
19
+ process-group leader that spawns the agent CLI, streams stdout/stderr to the
20
+ pod log, touches a heartbeat, and adjudicates the outcome in three layers
21
+ (fresh handoff declaration over observed events over exit facts). A clean
22
+ exit with no fresh handoff is `failed`.
23
+ - **Document store** — `docs/HANDOFF.md` (rolling, `status: rotating | done`
24
+ first line), `docs/DECISIONS.md` (append-only), `docs/TASKS.md` (plan
25
+ checkboxes plus the `## Inbox` section reconcile appends to).
26
+ - **Reconcile** — idempotent cron entry point: ghost records marked lost,
27
+ orphans reaped, reboot detection, idle pods woken per policy (backoff after
28
+ `failed`/`lost`, 1m ×2 capped at 15m, three consecutive failures park the
29
+ pod), listener inboxes scanned and claimed, one lock so overlapping passes
30
+ cannot double-wake.
31
+ - **Wake admission** — `--after <podId>` dependencies and the per-project live
32
+ wake-up cap; a manual `wake` overrides park and backoff, never a dependency
33
+ or the cap.
34
+ - **Listeners** — standing intake without a daemon: an inbox directory or
35
+ JSONL file, a pod template or a bound standing pod, routing by substring.
36
+ - **Progress signals** — document and log growth per wake-up, so a live but
37
+ progressless wake-up is killed and re-woken rather than left to burn.
38
+ - **Notifications** — system, webhook and email channels adapted from
39
+ agents-cron, on the two events a human must hear: a pod reached `done`, and a
40
+ pod parked after three consecutive failures (with its failure trail).
41
+ - **Pi extension** — two planes gated by wrapper-injected env: the management
42
+ plane (`/pod …` commands and the `spawn_pod` tool) registers only in an
43
+ interactive session, and the self plane (`pod_handoff`) only inside a pod, so
44
+ fan-out from inside a pod is structurally impossible rather than forbidden.
45
+ - **Packaging** — TypeScript shipped and executed as-is (no build step, no
46
+ `dist/`), a bin loader hook for files under `node_modules`, and a
47
+ packed-tarball smoke test in `npm run check`.
48
+
49
+ ### Limits
50
+
51
+ - **Pi only.** `--type claude | codex` is refused at `agent add`, `spawn`,
52
+ `wake`, and again at launch: the wrapper has one command line, and running pi
53
+ in claude's name would be a silent wrong agent.
54
+ - **No default timeout, no default expiry.** Liveness is a pid plus our own
55
+ heartbeat; a pod idles as a registry record for as long as its goal is open.