refactor(core): remove WorkflowTrigger from SenseTrigger — sense only triggers shell commands #318

Closed
opened 2026-05-02 12:28:38 +00:00 by xiaoju · 0 comments
Owner

What

Remove WorkflowTrigger from SenseTrigger discriminated union. Senses should only trigger shell commands. Workflows are triggered via CLI (nerve workflow trigger ...), which is just another shell command.

Why

Sense and workflow should be fully decoupled:

  • Sense observes → triggers a shell command
  • Workflow is an independent system, invoked via CLI
  • A sense that wants to trigger a workflow simply runs: nerve workflow trigger restart-gateway --prompt "gateway down"

This eliminates the coupling between sense types and workflow types in nerve-core.

Changes Required

packages/core/src/config.ts

  • Remove WorkflowTrigger type (or move it to workflow-only scope)
  • SenseTrigger becomes just { command: string } (no more discriminated union, no kind field)
  • Or keep the type as ShellTrigger but drop the kind discriminant since there is only one variant

packages/core/src/sense.ts

  • SenseComputeFn return: trigger: { command: string } | null
  • Remove/simplify parseSenseTrigger — no longer needs to handle workflow kind

packages/daemon/src/kernel.ts

  • Remove workflow routing logic from handleComputeResult — no more kind === "workflow" branch
  • Remove shell-launch vs workflow-launch distinction, just log trigger-launch
  • Remove workflow manager invocation from sense trigger path

packages/daemon/src/ipc.ts

  • Simplify ComputeResultMsg.trigger parsing — just validate command string
  • Remove or simplify sense-workflow-trigger IPC message if it only existed for sense→workflow coupling

packages/daemon/src/sense-worker.ts

  • Simplify executeShellTriggerIfNeeded — no kind check needed

Tests

  • Update all tests referencing kind: "workflow" or kind: "shell" in sense triggers
  • Remove tests for workflow trigger parsing in sense context

Documentation

  • Update CLAUDE.md SenseComputeReturn example

Breaking Change

SenseTrigger no longer supports kind: "workflow". Senses that previously triggered workflows directly must use shell command: nerve workflow trigger <name> --prompt "..." instead.


小橘 🍊(NEKO Team)

## What Remove `WorkflowTrigger` from `SenseTrigger` discriminated union. Senses should only trigger shell commands. Workflows are triggered via CLI (`nerve workflow trigger ...`), which is just another shell command. ## Why Sense and workflow should be fully decoupled: - Sense observes → triggers a shell command - Workflow is an independent system, invoked via CLI - A sense that wants to trigger a workflow simply runs: `nerve workflow trigger restart-gateway --prompt "gateway down"` This eliminates the coupling between sense types and workflow types in nerve-core. ## Changes Required ### packages/core/src/config.ts - Remove `WorkflowTrigger` type (or move it to workflow-only scope) - `SenseTrigger` becomes just `{ command: string }` (no more discriminated union, no `kind` field) - Or keep the type as `ShellTrigger` but drop the `kind` discriminant since there is only one variant ### packages/core/src/sense.ts - `SenseComputeFn` return: `trigger: { command: string } | null` - Remove/simplify `parseSenseTrigger` — no longer needs to handle workflow kind ### packages/daemon/src/kernel.ts - Remove workflow routing logic from `handleComputeResult` — no more `kind === "workflow"` branch - Remove `shell-launch` vs `workflow-launch` distinction, just log `trigger-launch` - Remove workflow manager invocation from sense trigger path ### packages/daemon/src/ipc.ts - Simplify `ComputeResultMsg.trigger` parsing — just validate `command` string - Remove or simplify `sense-workflow-trigger` IPC message if it only existed for sense→workflow coupling ### packages/daemon/src/sense-worker.ts - Simplify `executeShellTriggerIfNeeded` — no kind check needed ### Tests - Update all tests referencing `kind: "workflow"` or `kind: "shell"` in sense triggers - Remove tests for workflow trigger parsing in sense context ### Documentation - Update CLAUDE.md SenseComputeReturn example ## Breaking Change `SenseTrigger` no longer supports `kind: "workflow"`. Senses that previously triggered workflows directly must use shell command: `nerve workflow trigger <name> --prompt "..."` instead. --- 小橘 🍊(NEKO Team)
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#318