c8e42c838b
1. writeState: atomic write via temp file + rename 2. readState: distinguish missing file vs corrupt JSON (warn on error) 3. executeCompute: write disk before updating memory state 4. SenseInfo.triggers: ReadonlyArray<string> 5. CLAUDE.md: added Sense State Persistence docs 6. .knowledge/: updated architecture, sense, worker-isolation, storage-layer, cli, coding-conventions for stateful sense Fixes #313
3.1 KiB
3.1 KiB
Nerve CLI
nerve — CLI entry point for nerve workspace management.
Workspace Lifecycle
nerve init # scaffold a new workspace (nerve.yaml, senses/, workflows/)
nerve init --force # reinitialize workspace even if ~/.uncaged-nerve/ exists (preserves data/)
nerve init --from <git-url> # clone existing workspace from git repository
nerve validate # validate nerve.yaml config
nerve dev # run kernel foreground (development, Ctrl+C to stop)
nerve start # start daemon (background)
nerve stop # stop daemon
nerve status # check daemon health (uptime, senses, workflows)
nerve daemon # restart daemon (stop + start)
Init Behavior
Default nerve init: Creates workspace at ~/.uncaged-nerve/. If this directory already exists and is non-empty, exits with error requiring --force flag.
Force mode nerve init --force: Reinitializes workspace even if ~/.uncaged-nerve/ exists. Preserves data/ directory (containing sense state files and logs) but overwrites all config files.
Git clone nerve init --from <url>: Clones existing repository to ~/.uncaged-nerve/. Requires empty target directory.
Sense Management
nerve create sense <name> # scaffold a new sense (compute + initialState)
nerve sense list # list configured senses
nerve sense trigger <name> # manually trigger a sense compute
Workflow Management
nerve create workflow <name> # scaffold a new workflow
nerve workflow trigger <name> --prompt "..." [--max-rounds N] [--dry-run]
nerve workflow list # list configured workflows
nerve thread # list active (queued/started) workflow threads
Knowledge
nerve knowledge sync # chunk files per knowledge.yaml, compute embeddings → knowledge.db
nerve knowledge query "text" # search indexed knowledge (cosine similarity)
nerve knowledge query -g "text" # global search across all indexed repos
nerve knowledge query --repo /path "text" # search specific repo
Logs & Store
nerve logs # view daemon logs (last 50 lines)
nerve logs -f # follow logs (tail -f style)
nerve logs -n 200 # last N lines
nerve store archive # archive old log entries to JSONL
Remote
nerve remote add <name> <url> # add a remote daemon endpoint
nerve status --remote <name> # check remote daemon health
Workspace Layout
my-agent/
nerve.yaml # senses, workflows, extract config
knowledge.yaml # knowledge index config (optional)
senses/
cpu-usage/
src/index.ts # compute(state) + initialState export
workflows/
cleanup/
src/index.ts # workflow definition
data/
senses/ # sense state JSON files (auto-generated)
logs.db # log store (auto-generated)
knowledge.db # generated by nerve knowledge sync
.knowledge/ # curated knowledge cards