fc7fc9158c
Phase 4 of RFC #308: Stateful Sense refactor. - CLAUDE.md: updated diagram, tables, examples (no more Signal) - Cleaned stale Signal Bus / DrizzleDB / _signals / retention refs across READMEs, .cursor rules, copilot instructions, .knowledge - Removed drizzle-orm from core package.json (no longer used) - Updated pnpm-lock.yaml Refs #308
1.1 KiB
1.1 KiB
Sense compute → workflow (RFC #308)
Stateful senses no longer emit signals or pass outputs through routeSenseComputeOutput. The worker runs compute(state) and returns { state, workflow }.
Flow
Sense worker: compute(state) → { state, workflow }
↓
persist state JSON (data/senses/<name>.json)
↓
IPC compute-result → kernel
↓
workflow !== null → parseWorkflowTrigger (validation) → workflowManager.startWorkflow
scheduler.onSenseCompleted(senseName) → dependents with `on: [senseName]`
Workflow trigger shape
When workflow is non-null it must be a plain object validated by parseWorkflowTrigger() in packages/core/src/sense.ts:
name: non-empty stringmaxRounds: integer ≥ 1prompt: stringdryRun: boolean
Invalid triggers are rejected by the daemon when handling the worker message (workflow is not started).
Scheduling
Other senses list this sense under on in nerve.yaml to be scheduled when this sense completes a successful compute (see sense scheduler reverse-index in the daemon).