deepseek-harness/packages/core/agent-loop/tests
imccyu adbba0deb2 fix(system-prompt): reject a toolOrder that names an unregistered tool
Review follow-up (#196): a listed name with no registered tool was silently
ignored; misconfiguration must block work instead. The check lives in the
assembly — the earliest moment the registered tool set exists (tool plugins
register after the service constructs) and the only universal one (cordis has
no "all plugins loaded" event; registrations change at any time). assemble()
is now async so the throw surfaces as a rejection rather than a synchronous
escape from a Promise-returning method.

Blast radius, pinned by a loop-level test: the rejection reaches the turn's
outer catch — the turn closes balanced with an `error` reason, agent/error
mirrors it, no step opens, no request/header is logged, no request reaches
the adapter, and the agent returns to idle; every turn fails identically
until the config is fixed. A boot-time validation pass was considered and
rejected (recorded in the RFC). The general principle — misconfiguration
fails loud, never a silent skip — is added to AGENTS.md.
2026-07-07 20:49:42 +08:00
..
agent.spec.ts simplify(agent): drop the unused public Agent.abort(), keep whenIdle() 2026-06-21 09:05:21 +08:00
cancel.spec.ts refactor(events): remove the agent/stream-chunk mirror of assistant/chunk 2026-07-02 23:42:16 +08:00
config-session-id.spec.ts review: the persona becomes the system-prompt plugin's deployment config 2026-07-05 23:23:46 +08:00
coverage-edges.spec.ts refactor(events): remove the turn boundary mirror events 2026-07-02 03:26:45 +08:00
inbox.spec.ts Reorganize packages into a modular hierarchy 2026-06-20 22:55:20 +08:00
interception.spec.ts fix(loop): record a durable prompt/blocked for every vetoed prompt 2026-07-02 17:03:53 +08:00
loop.spec.ts loop: every request is built from the log — boundary snapshot, header events, config-only waterfall 2026-07-06 03:07:34 +08:00
mock-adapter.ts Reorganize packages into a modular hierarchy 2026-06-20 22:55:20 +08:00
properties.spec.ts feat(types): brand bash ids + stop brand erosion; extract Branded to dsh-brand 2026-06-21 07:19:59 +08:00
request-cache.e2e.ts loop: every request is built from the log — boundary snapshot, header events, config-only waterfall 2026-07-06 03:07:34 +08:00
request-log.spec.ts loop: every request is built from the log — boundary snapshot, header events, config-only waterfall 2026-07-06 03:07:34 +08:00
request-reconstruction.spec.ts fix review findings: one frozen seed through the waterfall; stale agent/request docs 2026-07-06 04:17:29 +08:00
resume.spec.ts feat(events): interception seams — the typed-Decision surface for hooks 2026-06-30 17:11:18 +08:00
review-fixes.spec.ts loop: every request is built from the log — boundary snapshot, header events, config-only waterfall 2026-07-06 03:07:34 +08:00
tool-order.spec.ts fix(system-prompt): reject a toolOrder that names an unregistered tool 2026-07-07 20:49:42 +08:00