Files
deepseek-harness/packages/core
Tianyi Cui d5a109c60f fix(session): preserve direct V3 source kinds during wrapper conversion
Convert an unknown legacy plugin wrapper such as
{kind: 'plugin', plugin: 'acme'} into {kind: 'plugin:acme'}, retaining the
complete plugin name after one prefix. Keep the existing explicit
first-party producer renames and preserve all non-identity metadata.

A direct source already records its producer in kind. Reclassifying
unknown direct kinds into plugin:source:<name> needlessly changes that
attribution and forces plugin consumers to adopt new identifiers even
though V4 accepts their existing representation. Return every valid
direct source unchanged, including already-prefixed names. Remove the
obsolete direct-kind table and two-category identity helper rather than
adding collision classification or another mapping layer.

Update the source conversion examples, codec/restore regressions, and
native fixture producers together. Refresh only the owning Python
advanced scenario's unshipped V4 outputs; preserve historical V0-V3
recordings and their generation selection. Event names, content tags,
and ToolSchema migration remain separate concerns.

Refs #2692
2026-09-19 17:11:45 +08:00
..
2026-09-17 21:11:19 +08:00

description, kind
description kind
The core group map: the session log, system-prompt assembly, tool registry, agent vocabulary, and default loop that form the product API spine. package-group

packages/core

English | 中文

Summary

Use the core packages to build or extend an agent that records durable session history, assembles system prompts, exposes tools, selects a default model, and runs model turns. These packages define the shared APIs used by every composition, while executable product assemblies live under packages/bundle. Choose this group when developing agent behavior or replacing one of those capabilities; start with dsh-base when you need the default runnable composition.

Table of Contents


Packages

Package Role ctx key
scope/ Scoped registration and event routing that isolate one agent's contributions library — no ctx key
session/ The append-only session event log every agent's history derives from ctx.sessions
system-prompt/ System-prompt assembly from ordered sections, tool schemas, and variables ctx.systemPrompt
tools/ The tool registry and guarded execution pipeline the loop dispatches through ctx.tools
agent-tool-presentation/ Per-agent tool-presentation selector for presets no ctx key
agent/ The Agent handle plugins program against, plus its live registry and events ctx.agents
agent-default-model/ The deployment default model selection entry points apply to fresh agents ctx.agentDefaultModel
agent-loop/ The default agent driver: creates agents and runs the turn and step lifecycle ctx.agentLoop

scope supplies the shared scoping primitive; agent owns the public Agent contract, while agent-loop is its default implementation, so extension plugins depend on agent and the driver stays swappable. agent-default-model owns the deployment selection an entry point applies when a session has none of its own. Runnable compositions live under packages/bundle; this group owns only the swappable spine pieces.



Dev Note

Working context for maintainers — click to expand

None.