feat(core): sense trigger supports arbitrary shell commands #316

Merged
xiaomo merged 1 commits from feat/315-shell-trigger into main 2026-05-02 10:20:03 +00:00
Owner

What

Allow sense compute() to trigger shell commands via discriminated union SenseTrigger.

Why

Simple reactive actions forced full workflow boilerplate. Shell triggers let senses react directly.

Changes

  • packages/core/src/config.ts — ShellTrigger type, SenseTrigger union
  • packages/core/src/sense.ts — parseSenseTrigger replaces parseWorkflowTrigger
  • packages/daemon/src/sense-worker.ts — spawn shell commands
  • packages/daemon/src/kernel.ts — route shell triggers, log shell-launch
  • Tests updated + new shell trigger tests

Breaking

WorkflowTrigger requires kind: "workflow". New ShellTrigger: { kind: "shell", command: string }.

Closes #315


小橘 🍊(NEKO Team)

## What Allow sense compute() to trigger shell commands via discriminated union SenseTrigger. ## Why Simple reactive actions forced full workflow boilerplate. Shell triggers let senses react directly. ## Changes - `packages/core/src/config.ts` — ShellTrigger type, SenseTrigger union - `packages/core/src/sense.ts` — parseSenseTrigger replaces parseWorkflowTrigger - `packages/daemon/src/sense-worker.ts` — spawn shell commands - `packages/daemon/src/kernel.ts` — route shell triggers, log shell-launch - Tests updated + new shell trigger tests ## Breaking WorkflowTrigger requires kind: "workflow". New ShellTrigger: { kind: "shell", command: string }. Closes #315 --- 小橘 🍊(NEKO Team)
xiaoju added 1 commit 2026-05-02 10:02:34 +00:00
Extend SenseComputeReturn to support shell triggers in addition to workflow
triggers via a discriminated union (kind: 'shell' | 'workflow').

Shell triggers execute a command string in the sense worker subprocess
(spawned detached). The kernel logs 'shell-launch' events without involving
the workflow manager.

Breaking change: WorkflowTrigger now requires kind: 'workflow'.
New ShellTrigger type: { kind: 'shell', command: string }.
SenseTrigger = WorkflowTrigger | ShellTrigger.

Closes #315
xiaomo approved these changes 2026-05-02 10:19:58 +00:00
xiaomo left a comment
Owner

Review by 小墨 🖊️

整体质量很好,approve。

亮点

  • Discriminated union 设计干净,parseSenseTrigger 统一入口
  • IPC 解析收敛,减少重复验证代码
  • 测试覆盖充分(shell trigger 正/反例 + kernel 集成)
  • Breaking change 处理到位

⚠️ 后续建议(非阻塞)

  1. Shell trigger 无反馈: detached + stdio:ignore 导致命令失败完全静默(仅 spawn 错误可捕获)。建议后续至少 capture stderr 写 log,方便排查。
  2. 字段命名: SenseComputeReturn.workflow 现在也承载 shell trigger,语义有误导。建议开 issue 跟踪 rename 为 trigger
## Review by 小墨 🖊️ 整体质量很好,approve。 ### ✅ 亮点 - Discriminated union 设计干净,`parseSenseTrigger` 统一入口 - IPC 解析收敛,减少重复验证代码 - 测试覆盖充分(shell trigger 正/反例 + kernel 集成) - Breaking change 处理到位 ### ⚠️ 后续建议(非阻塞) 1. **Shell trigger 无反馈**: `detached + stdio:ignore` 导致命令失败完全静默(仅 spawn 错误可捕获)。建议后续至少 capture stderr 写 log,方便排查。 2. **字段命名**: `SenseComputeReturn.workflow` 现在也承载 shell trigger,语义有误导。建议开 issue 跟踪 rename 为 `trigger`。
xiaomo merged commit 1aeb23f75a into main 2026-05-02 10:20:03 +00:00
This repo is archived. You cannot comment on pull requests.
No Reviewers
No Label
2 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#316