@mrciphersmith/keryx 0.2.155 → 0.2.157

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/README.md CHANGED
@@ -439,8 +439,13 @@ Grouped by what you are trying to do, not by internal module layout.
439
439
  human **owner** (`flow init --owner`/`flow owner set`, never inferred), and
440
440
  `ac confirm`/`complete` append an honest, append-only **signature** — who
441
441
  acted, when, and what was signed, with its basis (`stated`/`derived`/
442
- `unknown`) stated rather than assumed. See
443
- [TM-02](docs/decisions/keryx-harness/TM-02-flow-owner-and-signed-completion.md).
442
+ `unknown`) stated rather than assumed. A flow can also require a
443
+ terminal-minted **confirmation token** (`flow init --require-confirmation`,
444
+ `flow confirm`) that no agent tool can mint. It adds friction for an agent
445
+ but does not prove a person was present. `flow recover` returns a flow left
446
+ in `completing` by an interrupted run. See
447
+ [TM-02](docs/decisions/keryx-harness/TM-02-flow-owner-and-signed-completion.md)
448
+ and [TM-03](docs/decisions/keryx-harness/TM-03-terminal-confirmation-token.md).
444
449
  - **triggers** — declared automation over `.metaproject/triggers.json` (a
445
450
  repository event or a cron/systemd schedule): `reconcile`/`rebuild` keep the
446
451
  graph and wiki current, `open-flow` opens Task Manager work, and `flow-next`
@@ -453,9 +458,45 @@ Grouped by what you are trying to do, not by internal module layout.
453
458
  USD recorded, and a per-trigger spend ceiling on top of the project-wide one.
454
459
  `keryx trigger install` extends the same hook files `sync install-hooks` and
455
460
  `update` already write into; `keryx trigger schedule` prints a cron line or
456
- systemd unit pair and runs no daemon of its own. Triggered runs and a manual
461
+ systemd unit pair (with a real `OnCalendar=`) and runs no daemon of its own. Triggered runs and a manual
457
462
  `sync --apply`/`gdgraph build` share one maintenance lock (manual waits,
458
- triggered refuses). See the [CLI reference](docs/docs/cli-reference.md#trigger).
463
+ triggered refuses). In the TUI, the sidebar's **Triggers** section lists the
464
+ event-fired triggers. Each row shows the last outcome and its age, and a `NET`
465
+ marker when the agent gets the host network. The section also shows project
466
+ trigger spend and any open spend reservations. `/triggers` (or a click)
467
+ opens a list+detail modal with the full unattended posture. There, `r` then
468
+ `y` runs one now as `keryx trigger run <name>` in a child process of the same
469
+ build, bound by the same locks, budgets and refusals as the CLI. See the
470
+ [CLI reference](docs/docs/cli-reference.md#trigger).
471
+ - **schedule**: scheduled agent tasks in the background. Say it in the shell ("schedule a task every
472
+ 4 hours to check my open PRs"), use `/schedule`, or run `keryx schedule add`. keryx shows a
473
+ **confirmation card** listing the cadence and next runs, the prompt, the runner and its budget,
474
+ the network mode, and every granted tool with the account it acts as. It also shows exactly what
475
+ will be installed. Nothing is written until you say yes. After that, keryx stores the schedule in a
476
+ per-machine, gitignored store and installs a `systemd --user` timer (launchd on macOS, cron
477
+ elsewhere) that runs `keryx trigger run <name>` unattended. The run leaves a report in
478
+ `.metaproject/data/trigger/reports/`.
479
+ - **Granted tools** (`gh pr list/view/checks`, `gh issue list/view`, `gh run list`) run
480
+ **outside** the sandbox with your credentials. The model sees only redacted output, and the
481
+ token never enters the sandbox, the model context or the report.
482
+ - **Network:** the agent's shell network is `off`, `full`, or `allowlist` (Linux
483
+ only) — reaches only the domains you name, through a loopback proxy keryx runs
484
+ outside the sandbox; it governs only the agent's own shell commands, never the
485
+ model call or a granted tool. See the [CLI reference](docs/docs/cli-reference.md#schedule).
486
+ - **Refusals:** the unattended floor is unchanged, and an entry edited after you confirmed it is
487
+ refused (`grants-changed`).
488
+ - **Tracking:** every run is spend-bounded and appears in `keryx trigger status` and
489
+ `keryx governance report`.
490
+ - **Management:** `keryx schedule list|show|pause|resume|run|remove`. In `keryx shell`:
491
+ - the sidebar's **Schedules** section shows each schedule's next run and last outcome;
492
+ - `/schedules` (or a click) opens the detail: Overview, Grants, Runs, Report;
493
+ - `p` pauses or resumes, `r` then `y` runs it now, `d` then `y` deletes it;
494
+ - a run finished in the background shows up without a restart.
495
+ - **Limits:** the machine must be on. systemd and launchd catch up one missed run after a boot or
496
+ wake; cron does not. Without linger, a user timer does not run while you are logged out, and
497
+ keryx never enables linger for you. The hardened sandbox is Linux-only.
498
+
499
+ See the [CLI reference](docs/docs/cli-reference.md#schedule).
459
500
  - **governance** — `keryx governance report`, one read-only report unifying what
460
501
  is already recorded: review-round spend per flow (USD and tokens, with a
461
502
  rounds-with-cost/rounds-total count for partial coverage), project-wide
@@ -465,7 +506,14 @@ Grouped by what you are trying to do, not by internal module layout.
465
506
  outcomes. A figure nobody recorded is reported as "not recorded", never as
466
507
  zero. Writes `.metaproject/data/governance/artifacts/latest.{md,json}`, the
467
508
  same convention `keryx health run` uses; `--all-projects` also covers every
468
- project in the user-global registry. See the
509
+ project in the user-global registry. In the TUI, the sidebar's
510
+ **Governance** row shows `no report — click to run`,
511
+ `unreadable — click for reason`, `running…`, `last report <date>` or
512
+ `failed — click to retry`. With no report, a click
513
+ (or `/governance`) runs the report in the background, and the row updates
514
+ when it finishes. With a report, a click opens it in a scrollable modal,
515
+ where `r` re-runs it. Sessions written by `keryx agents external run` appear
516
+ in `/sessions` marked `acp:<agent>`. See the
469
517
  [CLI reference](docs/docs/cli-reference.md#governance).
470
518
  - **security** — deterministic secrets / PII / prompt-injection / egress
471
519
  scanning, redaction, and a policy gate at agent write seams, with a committed
@@ -478,7 +526,8 @@ Grouped by what you are trying to do, not by internal module layout.
478
526
  (Facts / Work / Know-how) overview, evidence-linked wrap-up proposals with owner
479
527
  review, and a fail-closed runtime policy guard. Driven by `keryx workspace`
480
528
  (`keryx modules enable sac` to turn it on); accepting a proposal into real
481
- project knowledge always passes through a human `confirm-review`, which
529
+ project knowledge always passes through an approval-gated `confirm-review`
530
+ (friction for an agent, not proof of a person — see TM-03), which
482
531
  refuses a security-flagged proposal until `--acknowledge-security` records
483
532
  that someone read the findings. The TUI's `/review` modal offers the same
484
533
  acknowledgement as an explicit `[s]` action, never as an automatic fallback