97840e25ab
7 curated knowledge cards extracted from RFCs and docs: - architecture: core pipeline, extension points, process isolation - sense: compute behavior, Sense→Workflow, config - workflow: engine, threads, WorkflowSpec - adapter: AgentFn protocol, available adapters, extract layer - coding-conventions: functional-first, Result type, naming - monorepo: package structure, dependency rules - knowledge-layer: sync/query CLI, embedding service knowledge.yaml indexes .knowledge/**/*.md only.
1.1 KiB
1.1 KiB
Sense
A compute() function that samples or derives external data. The only first-class citizen in nerve.
Behavior
- Returns
T | null— non-null emits a Signal, null is silent (no storage write, no signal, no downstream trigger) - Each Sense has its own independent SQLite database
- Cross-sense reads are read-only via
peersparameter - Schema defined with Drizzle ORM (
schema.tsis single source of truth)
Sense → Workflow
If compute() returns an object with workflow: "name|maxRounds|prompt", the engine starts that workflow and does not emit a Signal. workflow: null or "" means emit signal normally.
See routeSenseComputeOutput / parseSenseWorkflowDirective in @uncaged/nerve-core.
Config (nerve.yaml)
senses:
cpu-usage:
group: system # senses in same group share a worker
throttle: 10s # min interval between computes
timeout: 30s # max compute duration
grace_period: 5s # wait before first compute
interval: 30s # periodic trigger (optional)
on: [disk-pressure] # trigger on signals from other senses (optional)