mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
dsh-goal/types becomes the client-safe pure outlet (tool-todo dual-outlet shape): GoalId/GoalRef/GoalPhase/GoalBlockReason/GoalSnapshot, the new GoalProjection payload, and the SessionProjectionMap 'goal' key merge — zero host imports. Host-coupled vocabulary (GoalView/activation, change metas, message source, folds, GoalError codes, the scoped goal/changed event) moves to src/domain.ts, re-exported from the package root. ./client re-exports the outlet for client aggregates. GoalService registers the projection unit under ctx.inject(['sessionProjections']): applyGoalProjection is a projection-grade last-wins fold — plain-JSON state, same-reference return on non-goal or malformed events (a throwing apply would tear down the registry drive; strict validation stays with the write side and foldGoal). Activation is process-local and deliberately absent from the projection value.
goal/ — persisted same-session goals
English | 中文
The goal family owns durable objective state independently of the model-facing tools and continuation policy that consume it.
| Package | Role | ctx key |
|---|---|---|
goal/ |
Event-sourced goal lifecycle, replay fold, compare-and-set mutations, and process-local activation | ctx.goals |
goal-session/ |
Same-session goal-round admission, outcome mapping, and lifecycle race fencing | — |
tool-goal/ |
Model-facing read/create/update tools with execution-time authority checks | — |
command-goal/ |
Human-facing /goal status and lifecycle control over the command plane |
— |
Goal state is part of the owning session log. Consumers depend on dsh-goal, not on the concrete agent loop; continuation behavior belongs in a separate plugin on the public agent seams.