# DSH Base Composition The dsh-base bundle patch every profile applies first; mode bundles (dsh-web-app, dsh-headless) and the user's profile layer patch over it. ```mermaid flowchart LR cfg["packages/bundle/base/cordis.patch.yml
cordis.yml"] plugin_dsh_base_timer["timer
@deepseek-ai/cordis-plugin-timer"] cfg --> plugin_dsh_base_timer plugin_dsh_base_hmr["hmr
@deepseek-ai/cordis-plugin-hmr"] cfg --> plugin_dsh_base_hmr plugin_dsh_base_llm["llm
@deepseek-ai/dsh-llm"] cfg --> plugin_dsh_base_llm plugin_dsh_base_session["session
@deepseek-ai/dsh-session"] cfg --> plugin_dsh_base_session plugin_dsh_base_typert["typert
@deepseek-ai/dsh-typert-registry"] cfg --> plugin_dsh_base_typert plugin_dsh_base_typert_loader["typert-loader
@deepseek-ai/dsh-typert-loader"] cfg --> plugin_dsh_base_typert_loader plugin_dsh_base_typert_gateway["typert-gateway
@deepseek-ai/dsh-api-gateway"] cfg --> plugin_dsh_base_typert_gateway plugin_dsh_base_session_title["session-title
@deepseek-ai/dsh-session-title"] cfg --> plugin_dsh_base_session_title plugin_dsh_base_session_title_llm["session-title-llm
@deepseek-ai/dsh-session-title-first-prompt-llm"] cfg --> plugin_dsh_base_session_title_llm plugin_dsh_base_user_questions["user-questions
@deepseek-ai/dsh-user-questions"] cfg --> plugin_dsh_base_user_questions plugin_dsh_base_agent["agent
@deepseek-ai/dsh-agent"] cfg --> plugin_dsh_base_agent plugin_dsh_base_agent_default_model["agent-default-model
@deepseek-ai/dsh-agent-default-model"] cfg --> plugin_dsh_base_agent_default_model plugin_dsh_base_jobs["jobs
@deepseek-ai/dsh-jobs-local"] cfg --> plugin_dsh_base_jobs plugin_dsh_base_llm_retry["llm-retry
@deepseek-ai/dsh-llm-retry"] cfg --> plugin_dsh_base_llm_retry plugin_dsh_base_settings["settings
@deepseek-ai/dsh-settings-file"] cfg --> plugin_dsh_base_settings plugin_dsh_base_credentials["credentials
@deepseek-ai/dsh-credentials-local"] cfg --> plugin_dsh_base_credentials plugin_dsh_base_llm_pi_ai["llm-pi-ai
@deepseek-ai/dsh-llm-pi-ai"] cfg --> plugin_dsh_base_llm_pi_ai plugin_dsh_base_session_persistence_jsonl["session-persistence-jsonl
@deepseek-ai/dsh-session-persistence-jsonl"] cfg --> plugin_dsh_base_session_persistence_jsonl plugin_dsh_base_attachment_local["attachment-local
@deepseek-ai/dsh-attachment-local"] cfg --> plugin_dsh_base_attachment_local plugin_dsh_base_session_query_sqlite["session-query-sqlite
@deepseek-ai/dsh-session-query-sqlite"] cfg --> plugin_dsh_base_session_query_sqlite plugin_dsh_base_session_projection["session-projection
@deepseek-ai/dsh-session-projection"] cfg --> plugin_dsh_base_session_projection plugin_dsh_base_session_telemetry_otel["session-telemetry-otel
@deepseek-ai/dsh-session-telemetry-otel"] cfg --> plugin_dsh_base_session_telemetry_otel plugin_dsh_base_subprocess["subprocess
@deepseek-ai/dsh-subprocess-local"] cfg --> plugin_dsh_base_subprocess plugin_dsh_base_sandbox["sandbox
@deepseek-ai/dsh-sandbox-local"] cfg --> plugin_dsh_base_sandbox plugin_dsh_base_sandbox_policy["sandbox-policy
@deepseek-ai/dsh-sandbox-policy"] cfg --> plugin_dsh_base_sandbox_policy plugin_dsh_base_bash_sandbox["bash-sandbox
@deepseek-ai/dsh-bash-sandbox"] cfg --> plugin_dsh_base_bash_sandbox plugin_dsh_base_pwsh_sandbox["pwsh-sandbox
@deepseek-ai/dsh-pwsh-sandbox"] cfg --> plugin_dsh_base_pwsh_sandbox plugin_dsh_base_approval["approval
@deepseek-ai/dsh-user-approval"] cfg --> plugin_dsh_base_approval plugin_dsh_base_permission["permission
@deepseek-ai/dsh-permission-presets"] cfg --> plugin_dsh_base_permission plugin_dsh_base_shell_env["shell-env
@deepseek-ai/dsh-shell-env"] cfg --> plugin_dsh_base_shell_env plugin_dsh_base_tool_bash["tool-bash
@deepseek-ai/dsh-tool-bash"] cfg --> plugin_dsh_base_tool_bash plugin_dsh_base_tool_pwsh["tool-pwsh
@deepseek-ai/dsh-tool-pwsh"] cfg --> plugin_dsh_base_tool_pwsh plugin_dsh_base_tool_jobs["tool-jobs
@deepseek-ai/dsh-tool-jobs"] cfg --> plugin_dsh_base_tool_jobs plugin_dsh_base_fs_observation_policy["fs-observation-policy
@deepseek-ai/dsh-fs-observation-policy"] cfg --> plugin_dsh_base_fs_observation_policy plugin_dsh_base_tool_fs["tool-fs
@deepseek-ai/dsh-tool-fs"] cfg --> plugin_dsh_base_tool_fs plugin_dsh_base_tool_fs_search["tool-fs-search
@deepseek-ai/dsh-tool-fs-search"] cfg --> plugin_dsh_base_tool_fs_search plugin_dsh_base_agent_instructions["agent-instructions
@deepseek-ai/dsh-agent-instructions"] cfg --> plugin_dsh_base_agent_instructions plugin_dsh_base_skill["skill
@deepseek-ai/dsh-skill"] cfg --> plugin_dsh_base_skill plugin_dsh_base_skill_filesystem["skill-filesystem
@deepseek-ai/dsh-skill-filesystem"] cfg --> plugin_dsh_base_skill_filesystem plugin_dsh_base_skill_badge["skill-badge
@deepseek-ai/dsh-skill-badge"] cfg --> plugin_dsh_base_skill_badge plugin_dsh_base_tool_skill["tool-skill
@deepseek-ai/dsh-tool-skill"] cfg --> plugin_dsh_base_tool_skill plugin_dsh_base_commands["commands
@deepseek-ai/dsh-commands"] cfg --> plugin_dsh_base_commands plugin_dsh_base_command_feedback["command-feedback
@deepseek-ai/dsh-command-feedback"] cfg --> plugin_dsh_base_command_feedback plugin_dsh_base_goal["goal
@deepseek-ai/dsh-goal"] cfg --> plugin_dsh_base_goal plugin_dsh_base_goal_round_driver["goal-round-driver
@deepseek-ai/dsh-goal-round-driver"] cfg --> plugin_dsh_base_goal_round_driver plugin_dsh_base_command_goal["command-goal
@deepseek-ai/dsh-command-goal"] cfg --> plugin_dsh_base_command_goal plugin_dsh_base_plan_mode["plan-mode
@deepseek-ai/dsh-plan-mode"] cfg --> plugin_dsh_base_plan_mode plugin_dsh_base_token_meter["token-meter
@deepseek-ai/dsh-token-meter"] cfg --> plugin_dsh_base_token_meter plugin_dsh_base_compaction_basic["compaction-basic
@deepseek-ai/dsh-compaction-basic"] cfg --> plugin_dsh_base_compaction_basic plugin_dsh_base_command_compact["command-compact
@deepseek-ai/dsh-command-compact"] cfg --> plugin_dsh_base_command_compact plugin_dsh_base_subagent["subagent
@deepseek-ai/dsh-subagent"] cfg --> plugin_dsh_base_subagent plugin_dsh_base_subagent_spawn_in_process["subagent-spawn-in-process
@deepseek-ai/dsh-subagent-spawn-in-process"] cfg --> plugin_dsh_base_subagent_spawn_in_process plugin_dsh_base_subagent_fork_in_process["subagent-fork-in-process
@deepseek-ai/dsh-subagent-fork-in-process"] cfg --> plugin_dsh_base_subagent_fork_in_process plugin_dsh_base_tool_subagent_control["tool-subagent-control
@deepseek-ai/dsh-tool-subagent-control"] cfg --> plugin_dsh_base_tool_subagent_control plugin_dsh_base_tool_subagent_list_agents["tool-subagent-list-agents
@deepseek-ai/dsh-tool-subagent-control/list-agents"] cfg --> plugin_dsh_base_tool_subagent_list_agents plugin_dsh_base_tool_subagent["tool-subagent
@deepseek-ai/dsh-tool-subagent"] cfg --> plugin_dsh_base_tool_subagent plugin_dsh_base_tool_subagent_fork["tool-subagent-fork
@deepseek-ai/dsh-tool-subagent"] cfg --> plugin_dsh_base_tool_subagent_fork plugin_dsh_base_tool_subagent_report["tool-subagent-report
@deepseek-ai/dsh-tool-subagent-report"] cfg --> plugin_dsh_base_tool_subagent_report plugin_dsh_base_workflow_worker_thread["workflow-worker-thread
@deepseek-ai/dsh-workflow-worker-thread"] cfg --> plugin_dsh_base_workflow_worker_thread plugin_dsh_base_tool_workflow["tool-workflow
@deepseek-ai/dsh-tool-workflow"] cfg --> plugin_dsh_base_tool_workflow plugin_dsh_base_timeout_policy["timeout-policy
@deepseek-ai/dsh-tool-call-timeout-policy"] cfg --> plugin_dsh_base_timeout_policy plugin_dsh_base_spill_local["spill-local
@deepseek-ai/dsh-spill-local"] cfg --> plugin_dsh_base_spill_local plugin_dsh_base_spill_policy["spill-policy
@deepseek-ai/dsh-spill-policy"] cfg --> plugin_dsh_base_spill_policy plugin_dsh_base_session_checkpoint_policy["session-checkpoint-policy
@deepseek-ai/dsh-session-checkpoint-policy"] cfg --> plugin_dsh_base_session_checkpoint_policy plugin_dsh_base_tool_result_pruner["tool-result-pruner
@deepseek-ai/dsh-compaction-tool-result-pruner"] cfg --> plugin_dsh_base_tool_result_pruner plugin_dsh_base_tool_todo["tool-todo
@deepseek-ai/dsh-tool-todo"] cfg --> plugin_dsh_base_tool_todo plugin_dsh_base_tool_goal["tool-goal
@deepseek-ai/dsh-tool-goal"] cfg --> plugin_dsh_base_tool_goal plugin_dsh_base_tool_ralph["tool-ralph
@deepseek-ai/dsh-tool-ralph"] cfg --> plugin_dsh_base_tool_ralph plugin_dsh_base_tool_str_replace_editor["tool-str-replace-editor
@deepseek-ai/dsh-tool-str-replace-editor"] cfg --> plugin_dsh_base_tool_str_replace_editor plugin_dsh_base_repeat_tool_reminder["repeat-tool-reminder
@deepseek-ai/dsh-repeat-tool-reminder"] cfg --> plugin_dsh_base_repeat_tool_reminder plugin_dsh_base_web["web
@deepseek-ai/dsh-web"] cfg --> plugin_dsh_base_web plugin_dsh_base_web_search_deepseek["web-search-deepseek
@deepseek-ai/dsh-web-search-deepseek"] cfg --> plugin_dsh_base_web_search_deepseek plugin_dsh_base_tool_web["tool-web
@deepseek-ai/dsh-tool-web"] cfg --> plugin_dsh_base_tool_web plugin_dsh_base_tools["tools
@deepseek-ai/dsh-tools"] cfg --> plugin_dsh_base_tools plugin_dsh_base_system_prompt["system-prompt
@deepseek-ai/dsh-system-prompt"] cfg --> plugin_dsh_base_system_prompt plugin_dsh_base_agent_loop["agent-loop
@deepseek-ai/dsh-agent-loop"] cfg --> plugin_dsh_base_agent_loop plugin_dsh_base_fs_sandbox["fs-sandbox
@deepseek-ai/dsh-fs-sandbox"] cfg --> plugin_dsh_base_fs_sandbox plugin_dsh_base_llm_deepseek["llm-deepseek
@deepseek-ai/dsh-llm-deepseek"] cfg --> plugin_dsh_base_llm_deepseek ``` | Plugin id | Package / module | | --- | --- | | `timer` | `@deepseek-ai/cordis-plugin-timer` | | `hmr` | `@deepseek-ai/cordis-plugin-hmr` | | `llm` | `@deepseek-ai/dsh-llm` | | `session` | `@deepseek-ai/dsh-session` | | `typert` | `@deepseek-ai/dsh-typert-registry` | | `typert-loader` | `@deepseek-ai/dsh-typert-loader` | | `typert-gateway` | `@deepseek-ai/dsh-api-gateway` | | `session-title` | `@deepseek-ai/dsh-session-title` | | `session-title-llm` | `@deepseek-ai/dsh-session-title-first-prompt-llm` | | `user-questions` | `@deepseek-ai/dsh-user-questions` | | `agent` | `@deepseek-ai/dsh-agent` | | `agent-default-model` | `@deepseek-ai/dsh-agent-default-model` | | `jobs` | `@deepseek-ai/dsh-jobs-local` | | `llm-retry` | `@deepseek-ai/dsh-llm-retry` | | `settings` | `@deepseek-ai/dsh-settings-file` | | `credentials` | `@deepseek-ai/dsh-credentials-local` | | `llm-pi-ai` | `@deepseek-ai/dsh-llm-pi-ai` | | `session-persistence-jsonl` | `@deepseek-ai/dsh-session-persistence-jsonl` | | `attachment-local` | `@deepseek-ai/dsh-attachment-local` | | `session-query-sqlite` | `@deepseek-ai/dsh-session-query-sqlite` | | `session-projection` | `@deepseek-ai/dsh-session-projection` | | `session-telemetry-otel` | `@deepseek-ai/dsh-session-telemetry-otel` | | `subprocess` | `@deepseek-ai/dsh-subprocess-local` | | `sandbox` | `@deepseek-ai/dsh-sandbox-local` | | `sandbox-policy` | `@deepseek-ai/dsh-sandbox-policy` | | `bash-sandbox` | `@deepseek-ai/dsh-bash-sandbox` | | `pwsh-sandbox` | `@deepseek-ai/dsh-pwsh-sandbox` | | `approval` | `@deepseek-ai/dsh-user-approval` | | `permission` | `@deepseek-ai/dsh-permission-presets` | | `shell-env` | `@deepseek-ai/dsh-shell-env` | | `tool-bash` | `@deepseek-ai/dsh-tool-bash` | | `tool-pwsh` | `@deepseek-ai/dsh-tool-pwsh` | | `tool-jobs` | `@deepseek-ai/dsh-tool-jobs` | | `fs-observation-policy` | `@deepseek-ai/dsh-fs-observation-policy` | | `tool-fs` | `@deepseek-ai/dsh-tool-fs` | | `tool-fs-search` | `@deepseek-ai/dsh-tool-fs-search` | | `agent-instructions` | `@deepseek-ai/dsh-agent-instructions` | | `skill` | `@deepseek-ai/dsh-skill` | | `skill-filesystem` | `@deepseek-ai/dsh-skill-filesystem` | | `skill-badge` | `@deepseek-ai/dsh-skill-badge` | | `tool-skill` | `@deepseek-ai/dsh-tool-skill` | | `commands` | `@deepseek-ai/dsh-commands` | | `command-feedback` | `@deepseek-ai/dsh-command-feedback` | | `goal` | `@deepseek-ai/dsh-goal` | | `goal-round-driver` | `@deepseek-ai/dsh-goal-round-driver` | | `command-goal` | `@deepseek-ai/dsh-command-goal` | | `plan-mode` | `@deepseek-ai/dsh-plan-mode` | | `token-meter` | `@deepseek-ai/dsh-token-meter` | | `compaction-basic` | `@deepseek-ai/dsh-compaction-basic` | | `command-compact` | `@deepseek-ai/dsh-command-compact` | | `subagent` | `@deepseek-ai/dsh-subagent` | | `subagent-spawn-in-process` | `@deepseek-ai/dsh-subagent-spawn-in-process` | | `subagent-fork-in-process` | `@deepseek-ai/dsh-subagent-fork-in-process` | | `tool-subagent-control` | `@deepseek-ai/dsh-tool-subagent-control` | | `tool-subagent-list-agents` | `@deepseek-ai/dsh-tool-subagent-control/list-agents` | | `tool-subagent` | `@deepseek-ai/dsh-tool-subagent` | | `tool-subagent-fork` | `@deepseek-ai/dsh-tool-subagent` | | `tool-subagent-report` | `@deepseek-ai/dsh-tool-subagent-report` | | `workflow-worker-thread` | `@deepseek-ai/dsh-workflow-worker-thread` | | `tool-workflow` | `@deepseek-ai/dsh-tool-workflow` | | `timeout-policy` | `@deepseek-ai/dsh-tool-call-timeout-policy` | | `spill-local` | `@deepseek-ai/dsh-spill-local` | | `spill-policy` | `@deepseek-ai/dsh-spill-policy` | | `session-checkpoint-policy` | `@deepseek-ai/dsh-session-checkpoint-policy` | | `tool-result-pruner` | `@deepseek-ai/dsh-compaction-tool-result-pruner` | | `tool-todo` | `@deepseek-ai/dsh-tool-todo` | | `tool-goal` | `@deepseek-ai/dsh-tool-goal` | | `tool-ralph` | `@deepseek-ai/dsh-tool-ralph` | | `tool-str-replace-editor` | `@deepseek-ai/dsh-tool-str-replace-editor` | | `repeat-tool-reminder` | `@deepseek-ai/dsh-repeat-tool-reminder` | | `web` | `@deepseek-ai/dsh-web` | | `web-search-deepseek` | `@deepseek-ai/dsh-web-search-deepseek` | | `tool-web` | `@deepseek-ai/dsh-tool-web` | | `tools` | `@deepseek-ai/dsh-tools` | | `system-prompt` | `@deepseek-ai/dsh-system-prompt` | | `agent-loop` | `@deepseek-ai/dsh-agent-loop` | | `fs-sandbox` | `@deepseek-ai/dsh-fs-sandbox` | | `llm-deepseek` | `@deepseek-ai/dsh-llm-deepseek` | Source config: [`packages/bundle/base/cordis.patch.yml`](../../packages/bundle/base/cordis.patch.yml). Maintenance mode: hybrid: the leaf plugin list is parsed from its `cordis.yml`; app package expansion is curated from package source.