dpml-prompt
Version:
DPML-powered AI prompt framework - Revolutionary AI-First CLI system based on Deepractice Prompt Markup Language. Build sophisticated AI agents with structured prompts, memory systems, and execution frameworks.
92 lines (79 loc) • 1.95 kB
JavaScript
/**
* 锦囊命令注册器
* 负责管理和注册所有锦囊命令
*/
class PouchRegistry {
constructor () {
this.commands = new Map()
}
/**
* 注册锦囊命令
* @param {string} name - 命令名称
* @param {BasePouchCommand} command - 命令实例
*/
register (name, command) {
if (!name || typeof name !== 'string') {
throw new Error('命令名称必须是非空字符串')
}
if (!command || typeof command.execute !== 'function') {
throw new Error('命令必须实现 execute 方法')
}
this.commands.set(name.toLowerCase(), command)
}
/**
* 获取锦囊命令
* @param {string} name - 命令名称
* @returns {BasePouchCommand} 命令实例
*/
get (name) {
return this.commands.get(name.toLowerCase())
}
/**
* 列出所有已注册的命令
* @returns {string[]} 命令名称列表
*/
list () {
return Array.from(this.commands.keys())
}
/**
* 验证命令是否存在
* @param {string} name - 命令名称
* @returns {boolean} 是否存在
*/
validate (name) {
return this.commands.has(name.toLowerCase())
}
/**
* 获取命令详情
* @returns {Object[]} 命令详情列表
*/
getCommandDetails () {
const details = []
for (const [name, command] of this.commands) {
details.push({
name,
purpose: command.getPurpose ? command.getPurpose() : '未定义',
className: command.constructor.name
})
}
return details
}
/**
* 清空注册器
*/
clear () {
this.commands.clear()
}
/**
* 批量注册命令
* @param {Object} commandMap - 命令映射对象
*/
registerBatch (commandMap) {
for (const [name, CommandClass] of Object.entries(commandMap)) {
if (typeof CommandClass === 'function') {
this.register(name.toLowerCase(), new CommandClass())
}
}
}
}
module.exports = PouchRegistry