mirror of
https://github.com/SilenceLurker/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 08:55:50 +00:00
Initial commit with CC BY-NC-ND 4.0 license
This commit is contained in:
109
core/auto-char-card/task-state.js
Normal file
109
core/auto-char-card/task-state.js
Normal file
@@ -0,0 +1,109 @@
|
||||
export class TaskState {
|
||||
constructor() {
|
||||
this.reset();
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.originalRequest = "";
|
||||
this.currentGoal = "";
|
||||
this.completedSteps = [];
|
||||
this.pendingSteps = [];
|
||||
this.summary = "";
|
||||
this.generatedData = {};
|
||||
this.style_reference = "";
|
||||
this.keyFacts = [];
|
||||
this.lastSummaryTimestamp = 0;
|
||||
}
|
||||
|
||||
init(request) {
|
||||
this.reset();
|
||||
this.originalRequest = request;
|
||||
this.currentGoal = "Analyze request and plan steps";
|
||||
this.lastSummaryTimestamp = Date.now();
|
||||
}
|
||||
|
||||
updateSummary(newSummary) {
|
||||
this.summary = newSummary;
|
||||
this.lastSummaryTimestamp = Date.now();
|
||||
}
|
||||
|
||||
addCompletedStep(step) {
|
||||
this.completedSteps.push(step);
|
||||
}
|
||||
|
||||
setPendingSteps(steps) {
|
||||
this.pendingSteps = steps;
|
||||
}
|
||||
|
||||
setCurrentGoal(goal) {
|
||||
this.currentGoal = goal;
|
||||
}
|
||||
|
||||
updateGeneratedData(key, value) {
|
||||
this.generatedData[key] = value;
|
||||
}
|
||||
|
||||
setStyle(style) {
|
||||
this.style_reference = style;
|
||||
}
|
||||
|
||||
addKeyFacts(facts) {
|
||||
this.keyFacts.push(...facts);
|
||||
}
|
||||
|
||||
getPromptContext() {
|
||||
let context = `\n# Task State\n`;
|
||||
context += `- **Original Request**: ${this.originalRequest}\n`;
|
||||
context += `- **Current Goal**: ${this.currentGoal}\n`;
|
||||
|
||||
if (this.style_reference) {
|
||||
context += `- **Style Reference**: ${this.style_reference}\n`;
|
||||
}
|
||||
|
||||
if (this.completedSteps.length > 0) {
|
||||
context += `- **Completed Steps**:\n${this.completedSteps.map(s => ` - ${s}`).join('\n')}\n`;
|
||||
}
|
||||
|
||||
if (this.pendingSteps.length > 0) {
|
||||
context += `- **Pending Steps**:\n${this.pendingSteps.map(s => ` - ${s}`).join('\n')}\n`;
|
||||
}
|
||||
|
||||
if (this.keyFacts.length > 0) {
|
||||
context += `\n# Key Facts (Long Term Memory)\n`;
|
||||
this.keyFacts.forEach(fact => context += `- ${fact}\n`);
|
||||
}
|
||||
|
||||
if (this.summary) {
|
||||
context += `\n# Recent Context Summary\n${this.summary}\n`;
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
toJSON() {
|
||||
return {
|
||||
originalRequest: this.originalRequest,
|
||||
currentGoal: this.currentGoal,
|
||||
completedSteps: this.completedSteps,
|
||||
pendingSteps: this.pendingSteps,
|
||||
summary: this.summary,
|
||||
generatedData: this.generatedData,
|
||||
style_reference: this.style_reference,
|
||||
keyFacts: this.keyFacts,
|
||||
lastSummaryTimestamp: this.lastSummaryTimestamp
|
||||
};
|
||||
}
|
||||
|
||||
fromJSON(json) {
|
||||
if (!json) return;
|
||||
this.originalRequest = json.originalRequest || "";
|
||||
this.currentGoal = json.currentGoal || "";
|
||||
this.completedSteps = json.completedSteps || [];
|
||||
this.pendingSteps = json.pendingSteps || [];
|
||||
this.summary = json.summary || "";
|
||||
this.generatedData = json.generatedData || {};
|
||||
this.style_reference = json.style_reference || "";
|
||||
this.keyFacts = json.keyFacts || [];
|
||||
this.lastSummaryTimestamp = json.lastSummaryTimestamp || 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user