dsh --profile <name> replaces the fixed entry modes: --config and -p are removed, --patch adds overlays over the composed profile, a positional task selects one-shot mode (requires the headless-runner row), and dsh web stays as the alias for --profile web carrying the Web flag family as patches. dsh plugin --profile <name> forwards verbatim to pnpm in the profile directory, initializes on first use, and reconciles the dsh.plugins layer list after add/remove (patch-less packages warn and stay plain dependencies). Config dumps and the keyless web e2e scaffold compose the same bundle layers over the same empty root as the boot.
12 KiB
12 KiB
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.
flowchart LR
cfg["packages/bundle/base/cordis.patch.yml<br/>cordis.yml"]
plugin_dsh_base_timer["timer<br/>@cordisjs/plugin-timer"]
cfg --> plugin_dsh_base_timer
plugin_dsh_base_hmr["hmr<br/>@cordisjs/plugin-hmr"]
cfg --> plugin_dsh_base_hmr
plugin_dsh_base_repository_plugins["repository-plugins<br/>@deepseek-ai/dsh-repository-plugin"]
cfg --> plugin_dsh_base_repository_plugins
plugin_dsh_base_llm["llm<br/>@deepseek-ai/dsh-llm"]
cfg --> plugin_dsh_base_llm
plugin_dsh_base_session["session<br/>@deepseek-ai/dsh-session"]
cfg --> plugin_dsh_base_session
plugin_dsh_base_session_title["session-title<br/>@deepseek-ai/dsh-session-title"]
cfg --> plugin_dsh_base_session_title
plugin_dsh_base_session_title_llm["session-title-llm<br/>@deepseek-ai/dsh-session-title-first-message-llm"]
cfg --> plugin_dsh_base_session_title_llm
plugin_dsh_base_user_interaction["user-interaction<br/>@deepseek-ai/dsh-user-interaction"]
cfg --> plugin_dsh_base_user_interaction
plugin_dsh_base_agent["agent<br/>@deepseek-ai/dsh-agent"]
cfg --> plugin_dsh_base_agent
plugin_dsh_base_tasks["tasks<br/>@deepseek-ai/dsh-tasks-local"]
cfg --> plugin_dsh_base_tasks
plugin_dsh_base_llm_retry["llm-retry<br/>@deepseek-ai/dsh-llm-retry"]
cfg --> plugin_dsh_base_llm_retry
plugin_dsh_base_settings["settings<br/>@deepseek-ai/dsh-settings-local"]
cfg --> plugin_dsh_base_settings
plugin_dsh_base_credentials["credentials<br/>@deepseek-ai/dsh-credentials-local"]
cfg --> plugin_dsh_base_credentials
plugin_dsh_base_llm_pi_ai["llm-pi-ai<br/>@deepseek-ai/dsh-llm-pi-ai"]
cfg --> plugin_dsh_base_llm_pi_ai
plugin_dsh_base_session_persistence_jsonl["session-persistence-jsonl<br/>@deepseek-ai/dsh-session-persistence-jsonl"]
cfg --> plugin_dsh_base_session_persistence_jsonl
plugin_dsh_base_session_query_sqlite["session-query-sqlite<br/>@deepseek-ai/dsh-session-query-sqlite"]
cfg --> plugin_dsh_base_session_query_sqlite
plugin_dsh_base_telemetry_otel["telemetry-otel<br/>@deepseek-ai/dsh-session-telemetry-otel"]
cfg --> plugin_dsh_base_telemetry_otel
plugin_dsh_base_subprocess["subprocess<br/>@deepseek-ai/dsh-subprocess-local"]
cfg --> plugin_dsh_base_subprocess
plugin_dsh_base_sandbox["sandbox<br/>@deepseek-ai/dsh-sandbox-local"]
cfg --> plugin_dsh_base_sandbox
plugin_dsh_base_sandbox_policy["sandbox-policy<br/>@deepseek-ai/dsh-sandbox-policy"]
cfg --> plugin_dsh_base_sandbox_policy
plugin_dsh_base_bash_sandbox["bash-sandbox<br/>@deepseek-ai/dsh-bash-sandbox"]
cfg --> plugin_dsh_base_bash_sandbox
plugin_dsh_base_approval["approval<br/>@deepseek-ai/dsh-user-approval"]
cfg --> plugin_dsh_base_approval
plugin_dsh_base_permission["permission<br/>@deepseek-ai/dsh-permission"]
cfg --> plugin_dsh_base_permission
plugin_dsh_base_bash_env["bash-env<br/>@deepseek-ai/dsh-bash-env"]
cfg --> plugin_dsh_base_bash_env
plugin_dsh_base_tool_bash["tool-bash<br/>@deepseek-ai/dsh-tool-bash"]
cfg --> plugin_dsh_base_tool_bash
plugin_dsh_base_tool_tasks["tool-tasks<br/>@deepseek-ai/dsh-tool-tasks"]
cfg --> plugin_dsh_base_tool_tasks
plugin_dsh_base_fs_policy["fs-policy<br/>@deepseek-ai/dsh-fs-policy"]
cfg --> plugin_dsh_base_fs_policy
plugin_dsh_base_tool_fs["tool-fs<br/>@deepseek-ai/dsh-tool-fs"]
cfg --> plugin_dsh_base_tool_fs
plugin_dsh_base_tool_fs_search["tool-fs-search<br/>@deepseek-ai/dsh-tool-fs-search"]
cfg --> plugin_dsh_base_tool_fs_search
plugin_dsh_base_workspace_context["workspace-context<br/>@deepseek-ai/dsh-workspace-context"]
cfg --> plugin_dsh_base_workspace_context
plugin_dsh_base_skill["skill<br/>@deepseek-ai/dsh-skill"]
cfg --> plugin_dsh_base_skill
plugin_dsh_base_skill_local["skill-local<br/>@deepseek-ai/dsh-skill-local"]
cfg --> plugin_dsh_base_skill_local
plugin_dsh_base_tool_skill["tool-skill<br/>@deepseek-ai/dsh-tool-skill"]
cfg --> plugin_dsh_base_tool_skill
plugin_dsh_base_commands["commands<br/>@deepseek-ai/dsh-commands"]
cfg --> plugin_dsh_base_commands
plugin_dsh_base_goal["goal<br/>@deepseek-ai/dsh-goal"]
cfg --> plugin_dsh_base_goal
plugin_dsh_base_goal_session["goal-session<br/>@deepseek-ai/dsh-goal-session"]
cfg --> plugin_dsh_base_goal_session
plugin_dsh_base_command_goal["command-goal<br/>@deepseek-ai/dsh-command-goal"]
cfg --> plugin_dsh_base_command_goal
plugin_dsh_base_plan_mode["plan-mode<br/>@deepseek-ai/dsh-plan-mode"]
cfg --> plugin_dsh_base_plan_mode
plugin_dsh_base_token_meter["token-meter<br/>@deepseek-ai/dsh-token-meter"]
cfg --> plugin_dsh_base_token_meter
plugin_dsh_base_compact_basic["compact-basic<br/>@deepseek-ai/dsh-compact-basic"]
cfg --> plugin_dsh_base_compact_basic
plugin_dsh_base_command_compact["command-compact<br/>@deepseek-ai/dsh-command-compact"]
cfg --> plugin_dsh_base_command_compact
plugin_dsh_base_subagent["subagent<br/>@deepseek-ai/dsh-subagent"]
cfg --> plugin_dsh_base_subagent
plugin_dsh_base_subagent_spawn["subagent-spawn<br/>@deepseek-ai/dsh-subagent-spawn"]
cfg --> plugin_dsh_base_subagent_spawn
plugin_dsh_base_subagent_fork["subagent-fork<br/>@deepseek-ai/dsh-subagent-fork"]
cfg --> plugin_dsh_base_subagent_fork
plugin_dsh_base_tool_subagent_control["tool-subagent-control<br/>@deepseek-ai/dsh-tool-subagent-control"]
cfg --> plugin_dsh_base_tool_subagent_control
plugin_dsh_base_tool_subagent_list_agents["tool-subagent-list-agents<br/>@deepseek-ai/dsh-tool-subagent-control/list-agents"]
cfg --> plugin_dsh_base_tool_subagent_list_agents
plugin_dsh_base_tool_subagent["tool-subagent<br/>@deepseek-ai/dsh-tool-subagent"]
cfg --> plugin_dsh_base_tool_subagent
plugin_dsh_base_tool_subagent_fork["tool-subagent-fork<br/>@deepseek-ai/dsh-tool-subagent"]
cfg --> plugin_dsh_base_tool_subagent_fork
plugin_dsh_base_tool_subagent_report["tool-subagent-report<br/>@deepseek-ai/dsh-tool-subagent-report"]
cfg --> plugin_dsh_base_tool_subagent_report
plugin_dsh_base_workflow_workerthread["workflow-workerthread<br/>@deepseek-ai/dsh-workflow-workerthread"]
cfg --> plugin_dsh_base_workflow_workerthread
plugin_dsh_base_tool_workflow["tool-workflow<br/>@deepseek-ai/dsh-tool-workflow"]
cfg --> plugin_dsh_base_tool_workflow
plugin_dsh_base_timeout_policy["timeout-policy<br/>@deepseek-ai/dsh-timeout-policy"]
cfg --> plugin_dsh_base_timeout_policy
plugin_dsh_base_spill_local["spill-local<br/>@deepseek-ai/dsh-spill-local"]
cfg --> plugin_dsh_base_spill_local
plugin_dsh_base_spill_policy["spill-policy<br/>@deepseek-ai/dsh-spill-policy"]
cfg --> plugin_dsh_base_spill_policy
plugin_dsh_base_session_checkpoint_policy["session-checkpoint-policy<br/>@deepseek-ai/dsh-session-checkpoint-policy"]
cfg --> plugin_dsh_base_session_checkpoint_policy
plugin_dsh_base_tool_result_prune["tool-result-prune<br/>@deepseek-ai/dsh-compact-tool-result-prune"]
cfg --> plugin_dsh_base_tool_result_prune
plugin_dsh_base_tool_todo["tool-todo<br/>@deepseek-ai/dsh-tool-todo"]
cfg --> plugin_dsh_base_tool_todo
plugin_dsh_base_tool_goal["tool-goal<br/>@deepseek-ai/dsh-tool-goal"]
cfg --> plugin_dsh_base_tool_goal
plugin_dsh_base_tool_ralph["tool-ralph<br/>@deepseek-ai/dsh-tool-ralph"]
cfg --> plugin_dsh_base_tool_ralph
plugin_dsh_base_tool_str_replace_editor["tool-str-replace-editor<br/>@deepseek-ai/dsh-tool-str-replace-editor"]
cfg --> plugin_dsh_base_tool_str_replace_editor
plugin_dsh_base_repeat_tool_guard["repeat-tool-guard<br/>@deepseek-ai/dsh-repeat-tool-guard"]
cfg --> plugin_dsh_base_repeat_tool_guard
plugin_dsh_base_web["web<br/>@deepseek-ai/dsh-web"]
cfg --> plugin_dsh_base_web
plugin_dsh_base_web_search_deepseek["web-search-deepseek<br/>@deepseek-ai/dsh-web-search-deepseek"]
cfg --> plugin_dsh_base_web_search_deepseek
plugin_dsh_base_tool_web["tool-web<br/>@deepseek-ai/dsh-tool-web"]
cfg --> plugin_dsh_base_tool_web
plugin_dsh_base_tools["tools<br/>@deepseek-ai/dsh-tools"]
cfg --> plugin_dsh_base_tools
plugin_dsh_base_system_prompt["system-prompt<br/>@deepseek-ai/dsh-system-prompt"]
cfg --> plugin_dsh_base_system_prompt
plugin_dsh_base_agent_loop["agent-loop<br/>@deepseek-ai/dsh-agent-loop"]
cfg --> plugin_dsh_base_agent_loop
plugin_dsh_base_fs_sandbox["fs-sandbox<br/>@deepseek-ai/dsh-fs-sandbox"]
cfg --> plugin_dsh_base_fs_sandbox
plugin_dsh_base_llm_deepseek["llm-deepseek<br/>@deepseek-ai/dsh-llm-deepseek"]
cfg --> plugin_dsh_base_llm_deepseek
| Plugin id | Package / module |
|---|---|
timer |
@cordisjs/plugin-timer |
hmr |
@cordisjs/plugin-hmr |
repository-plugins |
@deepseek-ai/dsh-repository-plugin |
llm |
@deepseek-ai/dsh-llm |
session |
@deepseek-ai/dsh-session |
session-title |
@deepseek-ai/dsh-session-title |
session-title-llm |
@deepseek-ai/dsh-session-title-first-message-llm |
user-interaction |
@deepseek-ai/dsh-user-interaction |
agent |
@deepseek-ai/dsh-agent |
tasks |
@deepseek-ai/dsh-tasks-local |
llm-retry |
@deepseek-ai/dsh-llm-retry |
settings |
@deepseek-ai/dsh-settings-local |
credentials |
@deepseek-ai/dsh-credentials-local |
llm-pi-ai |
@deepseek-ai/dsh-llm-pi-ai |
session-persistence-jsonl |
@deepseek-ai/dsh-session-persistence-jsonl |
session-query-sqlite |
@deepseek-ai/dsh-session-query-sqlite |
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 |
approval |
@deepseek-ai/dsh-user-approval |
permission |
@deepseek-ai/dsh-permission |
bash-env |
@deepseek-ai/dsh-bash-env |
tool-bash |
@deepseek-ai/dsh-tool-bash |
tool-tasks |
@deepseek-ai/dsh-tool-tasks |
fs-policy |
@deepseek-ai/dsh-fs-policy |
tool-fs |
@deepseek-ai/dsh-tool-fs |
tool-fs-search |
@deepseek-ai/dsh-tool-fs-search |
workspace-context |
@deepseek-ai/dsh-workspace-context |
skill |
@deepseek-ai/dsh-skill |
skill-local |
@deepseek-ai/dsh-skill-local |
tool-skill |
@deepseek-ai/dsh-tool-skill |
commands |
@deepseek-ai/dsh-commands |
goal |
@deepseek-ai/dsh-goal |
goal-session |
@deepseek-ai/dsh-goal-session |
command-goal |
@deepseek-ai/dsh-command-goal |
plan-mode |
@deepseek-ai/dsh-plan-mode |
token-meter |
@deepseek-ai/dsh-token-meter |
compact-basic |
@deepseek-ai/dsh-compact-basic |
command-compact |
@deepseek-ai/dsh-command-compact |
subagent |
@deepseek-ai/dsh-subagent |
subagent-spawn |
@deepseek-ai/dsh-subagent-spawn |
subagent-fork |
@deepseek-ai/dsh-subagent-fork |
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-workerthread |
@deepseek-ai/dsh-workflow-workerthread |
tool-workflow |
@deepseek-ai/dsh-tool-workflow |
timeout-policy |
@deepseek-ai/dsh-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-prune |
@deepseek-ai/dsh-compact-tool-result-prune |
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-guard |
@deepseek-ai/dsh-repeat-tool-guard |
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.
Maintenance mode: hybrid: the leaf plugin list is parsed from its cordis.yml; app package expansion is curated from package source.