mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
Logic that lived under examples/ was outside the per-file 100% coverage
gate (examples/ are not workspaces) and, in the stdio-UI case, duplicated
across two examples. Move it into packages/ so it is gated and de-duped.
- packages/ui-stdio (new): unify the two diverged stdio-chat.ts copies into
one @deepseek-ai/dsh-ui-stdio plugin (welcome/agent Config). A test-only
I/O seam (createStdioChat(ctx, config, runtime)) keeps process streams out
of the serializable config and makes every render/EOF/disposal branch
unit-testable. Per-file 100%. echo/coding cordis.yml now load the package;
both src/stdio-chat.ts deleted.
- packages/llm-replay (new): move examples/acp-agent/src/llm-replay.ts (+ its
spec) here so its derive/parse/replay branches fall under the coverage gate.
cordis.snapshot.yml + README rewired to the package name; added apply/env
/assertNever/abort tests to reach per-file 100%.
- examples/{echo,coding}-agent: keyless Loader-path e2e smokes that boot the
real cordis.yml (no key) — the guard a hand-mounted unit test cannot be for
the unwrapExports/export-shape class (postmortem 0001). examples/AGENTS.md
codifies the keyless+with-key smoke convention (keyless-by-nature exception
for echo-agent).
- AGENTS.md: a scoped, removal-triggered pre-release stance (foundation over
blast radius). packages/README.md: new rows + a FIXME to later regroup ALL
packages into a hierarchy. Wiring: tsconfig paths/refs, publint, knip,
module-graph.
Verified: typecheck, lint, test:coverage (887 tests, 100%), build, hygiene,
doc-sync, test:snapshot (10), test:e2e (6 keyless pass, with-key self-skip).
58 lines
1.2 KiB
YAML
58 lines
1.2 KiB
YAML
# The echo-agent plugin tree, loaded via @cordisjs/plugin-include.
|
|
# Core services first, then the demo plugins, then the agent itself.
|
|
|
|
- id: logger
|
|
name: '@cordisjs/plugin-logger-console'
|
|
|
|
- id: timer
|
|
name: '@cordisjs/plugin-timer'
|
|
|
|
- id: hmr
|
|
name: '@cordisjs/plugin-hmr'
|
|
config:
|
|
root: ['.']
|
|
|
|
- id: llm
|
|
name: '@deepseek-ai/dsh-llm'
|
|
|
|
- id: sessions
|
|
name: '@deepseek-ai/dsh-session'
|
|
|
|
- id: system-prompt
|
|
name: '@deepseek-ai/dsh-system-prompt'
|
|
|
|
- id: tools
|
|
name: '@deepseek-ai/dsh-tools'
|
|
|
|
- id: agents
|
|
name: '@deepseek-ai/dsh-agent'
|
|
|
|
# Dev-mode event-contract assertions + session-log freeze (off in prod;
|
|
# on here so the demo smoke test exercises the contract).
|
|
- id: invariants
|
|
name: '@deepseek-ai/dsh-invariants'
|
|
|
|
- id: agent-loop
|
|
name: '@deepseek-ai/dsh-agent-loop'
|
|
config:
|
|
agents:
|
|
- id: main
|
|
model: mock-echo
|
|
systemPrompt: 'You are echo-agent, a demo agent.'
|
|
|
|
- id: mock-llm
|
|
name: './src/mock-llm.ts'
|
|
|
|
- id: echo-tool
|
|
name: './src/echo-tool.ts'
|
|
|
|
- id: session-persistence
|
|
name: '@deepseek-ai/dsh-session-persistence-jsonl'
|
|
config:
|
|
root: './.sessions'
|
|
|
|
- id: stdio-chat
|
|
name: '@deepseek-ai/dsh-ui-stdio'
|
|
config:
|
|
welcome: 'echo-agent ready. Type a message ("echo <text>" triggers the tool).'
|