@promptx/cli
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.
200 lines (169 loc) • 5.26 kB
JavaScript
// ThoughtEntity - Thought接口的具体实现
// 一个可以从普通对象构造的Thought实体类
const { Thought } = require('../interfaces/Thought');
class ThoughtEntity extends Thought {
/**
* 构造函数
* @param {Object} data - Thought数据对象
* @param {Object} data.goalEngram - 目标记忆(必需)
* @param {string} data.thinkingPattern - 思维模式(必需)
* @param {Array<string>} data.spreadActivationCues - 激活线索(必需)
* @param {Array<Object>} data.insightEngrams - 洞察记忆(可选)
* @param {Object} data.conclusionEngram - 结论记忆(可选)
* @param {number} data.confidence - 置信度(可选)
* @param {Array<Object>} data.recalledEngrams - 回忆的记忆(系统自动填充)
* @param {Thought} data.previousThought - 前序思想(系统自动填充)
* @param {number} data.iteration - 迭代次数(系统自动填充)
* @param {number} data.timestamp - 时间戳(系统自动填充)
* @param {string} data.thinkingState - 思考状态(系统自动填充)
*/
constructor(data = {}) {
super();
// === AI创建的字段(受控加工) ===
this.goalEngram = data.goalEngram || null;
this.thinkingPattern = data.thinkingPattern || null;
this.spreadActivationCues = data.spreadActivationCues || [];
this.insightEngrams = data.insightEngrams || [];
this.conclusionEngram = data.conclusionEngram || null;
this.confidence = data.confidence !== undefined ? data.confidence : null;
// === 系统自动的字段(自动加工) ===
this.recalledEngrams = data.recalledEngrams || [];
this.previousThought = data.previousThought || null;
this.iteration = data.iteration || 1;
this.timestamp = data.timestamp || Date.now();
this.thinkingState = data.thinkingState || 'initial';
}
// === 目标导向字段 ===
getGoalEngram() {
return this.goalEngram;
}
// === 系统自动加工字段 ===
getPreviousThought() {
return this.previousThought;
}
getRecalledEngrams() {
return this.recalledEngrams;
}
getIteration() {
return this.iteration;
}
getTimestamp() {
return this.timestamp;
}
getThinkingState() {
return this.thinkingState;
}
// === AI受控加工字段 ===
getThinkingPattern() {
return this.thinkingPattern;
}
getSpreadActivationCues() {
return this.spreadActivationCues;
}
getConclusionEngram() {
return this.conclusionEngram;
}
getInsightEngrams() {
return this.insightEngrams;
}
// === 元认知信息 ===
getConfidence() {
return this.confidence;
}
// === 辅助方法 ===
/**
* 设置系统自动字段
* @param {Object} systemFields - 系统字段
*/
setSystemFields(systemFields) {
if (systemFields.recalledEngrams !== undefined) {
this.recalledEngrams = systemFields.recalledEngrams;
}
if (systemFields.previousThought !== undefined) {
this.previousThought = systemFields.previousThought;
}
if (systemFields.iteration !== undefined) {
this.iteration = systemFields.iteration;
}
if (systemFields.timestamp !== undefined) {
this.timestamp = systemFields.timestamp;
}
if (systemFields.thinkingState !== undefined) {
this.thinkingState = systemFields.thinkingState;
}
}
/**
* 判断是否有洞察
*/
hasInsights() {
return this.insightEngrams && this.insightEngrams.length > 0;
}
/**
* 判断是否有结论
*/
hasConclusion() {
return this.conclusionEngram !== null;
}
/**
* 判断是否有置信度评估
*/
hasConfidence() {
return this.confidence !== null;
}
/**
* 获取思考深度级别
*/
getDepthLevel() {
if (this.hasConfidence()) return 'complete';
if (this.hasConclusion()) return 'conclusion';
if (this.hasInsights()) return 'insights';
return 'initial';
}
/**
* 转换为普通对象
*/
toObject() {
return {
goalEngram: this.goalEngram,
thinkingPattern: this.thinkingPattern,
spreadActivationCues: this.spreadActivationCues,
insightEngrams: this.insightEngrams,
conclusionEngram: this.conclusionEngram,
confidence: this.confidence,
recalledEngrams: this.recalledEngrams,
previousThought: this.previousThought,
iteration: this.iteration,
timestamp: this.timestamp,
thinkingState: this.thinkingState
};
}
/**
* 从普通对象创建ThoughtEntity
* @param {Object} data - 普通对象
* @returns {ThoughtEntity}
*/
static fromObject(data) {
return new ThoughtEntity(data);
}
/**
* 验证必需字段
* @returns {Object} 验证结果
*/
validate() {
const errors = [];
if (!this.goalEngram) {
errors.push('goalEngram is required');
}
if (!this.thinkingPattern) {
errors.push('thinkingPattern is required');
}
if (!this.spreadActivationCues || this.spreadActivationCues.length === 0) {
errors.push('spreadActivationCues is required and must not be empty');
}
return {
valid: errors.length === 0,
errors
};
}
}
module.exports = { ThoughtEntity };