-
Notifications
You must be signed in to change notification settings - Fork 1
Commands
Edge adaptation of the upstream slash command registry and execution system.
Upstream reference: Commands
The commands subsystem (dsh-commands) enables direct execution of plugin-registered slash commands against a specific agent without creating model messages:
- CommandRegistry — plugins register named commands with a handler, description, and optional input descriptor (hint text, image support). Commands can be global or agent-scoped.
-
Execution flow —
parseCommand()resolves the slash prefix, the registry validates input and image admission, lifecycle events (command/run,command/done) bracket the handler invocation, and results render directly to UI without model involvement. -
Discovery — adapters query the registry for
CommandDescriptorobjects (handlers excluded).commands/changeevents notify clients when commands are registered or unregistered. -
Relationship with Skills — skill invocation via
/namein the composer goes through the command system:dsh-tool-skillregisters a command handler that loads the skill content and injects it as model context.
Edge does not install the upstream dsh-commands CommandRegistry plugin. No slash commands are registered on the server side.
The client-side dsh-client-ui-commands plugin is included in the 33-plugin bundle. It renders the commands menu in the composer and queries commands/list for available commands.
Edge handles the commands/list RPC via a manual stub in handleEdgeRemote() (edge-remotes.ts) that always returns an empty array. This stub exists because:
- The client UI always queries
commands/liston connection - Without a response, the client would show an error
- The Typert gateway cannot auto-route it because the upstream CommandService lacks
@Remotedecorators
- Client-side command UI (composer menu, command input bubble)
- Command lifecycle event format (
command/run,command/done)
| Component | Category | Status |
|---|---|---|
| CommandRegistry (server) | Not installed | Empty catalog stub |
Client UI (ui-commands) |
Reuse | Renders commands menu |
commands/list RPC |
Stub | Returns [] via handleEdgeRemote |
Key observation: Commands are closely tied to Skills — the primary use case for slash commands is /skill-name invocation. Once Skills are merged from feat/tool-skill (#103), the command system becomes meaningful. The handleEdgeRemote stub (#95) can then be evaluated for replacement.
(#109) Install CommandRegistry after Skills merge. Once
feat/tool-skillis merged (#103) andSkillRegistryis active, install the upstreamdsh-commandsplugin so skill-invocation slash commands appear in the composer menu. ThehandleEdgeRemotestub (#95) may then be removable if the Typert gateway or apiproxy coverscommands/list.
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发