fluxflow-cli 1.12.6 → 1.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fluxflow.js +13 -17
- package/package.json +2 -2
package/dist/fluxflow.js
CHANGED
|
@@ -992,7 +992,7 @@ Your tool syntax is: '[tool:functions.ToolName(args...)]'
|
|
|
992
992
|
[tool:functions.Chat(title="<short creative title of FULL conversation in 3-5 words>")]. Consider full chat context to generate title NOT just latest message.
|
|
993
993
|
[tool:functions.Memory(action="temp", content="<summary of the user prompt & model responses ONLY FROM LATEST PROMPT UNDER 40 WORDS>. [Talked on: <date> <hour>]")]
|
|
994
994
|
|
|
995
|
-
${isMemoryEnabled ? `-- User-specific long-term/permanent memory (USE BASED ON CONVERSATION CONTEXT,
|
|
995
|
+
${isMemoryEnabled ? `-- User-specific long-term/permanent memory (USE BASED ON CONVERSATION CONTEXT, DO NOT RE-SAVE MEMORY WHICH IS ALREADY SAVED) --
|
|
996
996
|
- Add: [tool:functions.Memory(action="user", method="add", content="<string to add>. [Saved on: <date ONLY>]")]
|
|
997
997
|
- Delete: [tool:functions.Memory(action="user", method="delete", id="<memory id>")]
|
|
998
998
|
- Update: [tool:functions.Memory(action="user", method="update", content-new="string to update", id="<memory id>")]
|
|
@@ -1060,12 +1060,13 @@ ${parts.join("\n\n")}
|
|
|
1060
1060
|
if (thinkingLevel === "xHigh" || thinkingLevel === "Max") levelKey = "xHigh";
|
|
1061
1061
|
const thinkingConfig = thinking_prompts_default[levelKey] || thinking_prompts_default["Medium"];
|
|
1062
1062
|
const osDetected = process.platform === "win32" ? "Windows" : process.platform === "darwin" ? "macOS" : "Linux";
|
|
1063
|
-
const nameStr = profile.name && profile.name?.length > 0 ? `User Name: ${profile.name}
|
|
1064
|
-
` : "";
|
|
1065
|
-
const nicknameStr = profile.nickname && profile.nickname?.length > 0 ? `User Nickname: ${profile.nickname}
|
|
1066
|
-
` : "";
|
|
1067
1063
|
const userInstrStr = profile.instructions && profile.instructions?.length > 0 ? `User Instructions: ${profile.instructions}
|
|
1064
|
+
|
|
1068
1065
|
` : "";
|
|
1066
|
+
const nicknameStr = profile.nickname && profile.nickname?.length > 0 ? `User Nickname: ${profile.nickname}
|
|
1067
|
+
${userInstrStr.length ? "" : "\n"}` : "";
|
|
1068
|
+
const nameStr = profile.name && profile.name?.length > 0 ? `User Name: ${profile.name}
|
|
1069
|
+
${nicknameStr.length || userInstrStr.length ? "" : "\n"}` : "";
|
|
1069
1070
|
const cwdStr = process.cwd();
|
|
1070
1071
|
const isSystemDir = (() => {
|
|
1071
1072
|
const cwd = process.cwd().toLowerCase();
|
|
@@ -1092,8 +1093,7 @@ ${parts.join("\n\n")}
|
|
|
1092
1093
|
-- PROJECT CONTEXT (Source of Truth) --
|
|
1093
1094
|
${foundFiles.map((f) => `- ${f.name}: ${f.desc}`).join("\n")}
|
|
1094
1095
|
Check these first; these files > training data for project consistency. Safety rules apply` : "";
|
|
1095
|
-
return `${nameStr}${nicknameStr}${userInstrStr}
|
|
1096
|
-
[SYSTEM (OVERRIDES EVERYTHING)]
|
|
1096
|
+
return `${nameStr}${nicknameStr}${userInstrStr}[SYSTEM (OVERRIDES EVERYTHING)]
|
|
1097
1097
|
Identity: Flux Flow (by Kushal Roy Chowdhury). Sassy, Friendly, Humorous, CLI Agent. No flirting ${mode === "Flux" ? "" : ""}
|
|
1098
1098
|
Mode: ${mode}${thinkingLevel !== "Fast" ? "(Thinking Mode)" : ""}. ${mode === "Flux" ? "Goal-oriented, Logical" : "Conversational & UX-focused"}
|
|
1099
1099
|
CWD: ${cwdStr}.${isSystemDir ? " [PROTECTED: ASK BEFORE MODIFYING]" : ""} OS: ${osDetected}${osDetected === "Windows" && mode === "Flux" ? ". PS via CMD" : ""}
|
|
@@ -1130,15 +1130,11 @@ ${projectContextBlock}
|
|
|
1130
1130
|
[/SYSTEM]`.trim();
|
|
1131
1131
|
};
|
|
1132
1132
|
getJanitorInstruction = (userMemories = "", isMemoryEnabled = true, needTitle = true) => {
|
|
1133
|
-
return
|
|
1134
|
-
${userMemories ? `
|
|
1135
|
-
|
|
1136
|
-
-- CURRENT PERSISTENT USER MEMORIES --
|
|
1133
|
+
return `${userMemories ? `-- CURRENT SAVED USER MEMORIES --
|
|
1137
1134
|
${userMemories}
|
|
1138
1135
|
-------------------------------------------------
|
|
1139
|
-
` : ""}
|
|
1140
1136
|
|
|
1141
|
-
=== START SYSTEM PROMPT (STRICT HEADLESS LOGIC WORKER: ZERO USER-FACING TEXT POLICY, STRICTLY FOLLOW) ===
|
|
1137
|
+
` : ""}=== START SYSTEM PROMPT (STRICT HEADLESS LOGIC WORKER: ZERO USER-FACING TEXT POLICY, STRICTLY FOLLOW) ===
|
|
1142
1138
|
YOU ARE A SILENT BACKGROUND SYSTEM PROCESS. YOU HAVE NO MOUTH. YOUR ONLY OUTPUT MEDIUM IS VALID TOOL CALLS.
|
|
1143
1139
|
[CRITICAL RULES]
|
|
1144
1140
|
1. OUTPUT ONLY '[tool:functions.xxx(args)]' CALLS (BRACKET WRAP IS MANDATORY).
|
|
@@ -3531,7 +3527,7 @@ var init_ai = __esm({
|
|
|
3531
3527
|
const isMemoryEnabled = systemSettings?.memory !== false;
|
|
3532
3528
|
const persistentStorage = readEncryptedJson(MEMORIES_FILE, []);
|
|
3533
3529
|
const janitorUserMemories = persistentStorage.map((m) => `- [${m.id}]: ${m.memory}`).join("\n");
|
|
3534
|
-
const janitorContents = history.slice(0, -1).filter((msg) => msg.text && !msg.text.includes("[TOOL RESULT]") && !msg.text.includes("OBSERVATION:") && !msg.isMeta && !msg.isLogo && !String(msg.id).startsWith("welcome") && !String(msg.id).startsWith("logo")).slice(-
|
|
3530
|
+
const janitorContents = history.slice(0, -1).filter((msg) => msg.text && !msg.text.includes("[TOOL RESULT]") && !msg.text.includes("OBSERVATION:") && !msg.isMeta && !msg.isLogo && !String(msg.id).startsWith("welcome") && !String(msg.id).startsWith("logo")).slice(-14).map((msg) => {
|
|
3535
3531
|
let processedText = msg.text.replace(/\[tool:functions\..*?\]/g, "").replace(/<think>[\s\S]*?<\/think>/g, "").replace(/\[Prompted on:.*?\]/g, "").replace(/\[METADATA \(PRIORITY: DYNAMIC\)\] Time: ([^|\n]+)/g, (match, p1) => {
|
|
3536
3532
|
return `[METADATA (PRIORITY: DYNAMIC)] Time: ${p1.replace(/:\d{2}/g, "")}`;
|
|
3537
3533
|
}).replace(/\[turn: continue\]/g, "").replace(/\[turn: finish\]/g, "").replace(/\[TOOL RESULTS\]/g, "").replace(/\[tool results\]/g, "").replace(/\r?\n\r?\n/g, "\n").replace(/\n\n/g, "\n").replace(/\\n\\n/g, "").trim();
|
|
@@ -3571,7 +3567,7 @@ ${originalTextProcessed.length > USER_CONTEXT_LENGTH ? "... (truncated) ...\n\n"
|
|
|
3571
3567
|
const MAX_JANITOR_RETRIES = 12;
|
|
3572
3568
|
while (attempts <= MAX_JANITOR_RETRIES) {
|
|
3573
3569
|
if (process.stdout.isTTY) {
|
|
3574
|
-
process.stdout.write(`\x1B]0;Retrying
|
|
3570
|
+
process.stdout.write(`\x1B]0;Retrying Finalizing... (${attempts + 1})...\x07`);
|
|
3575
3571
|
}
|
|
3576
3572
|
try {
|
|
3577
3573
|
if (!await checkQuota("background", settings)) {
|
|
@@ -3654,7 +3650,7 @@ ${originalTextProcessed.length > USER_CONTEXT_LENGTH ? "... (truncated) ...\n\n"
|
|
|
3654
3650
|
attempts++;
|
|
3655
3651
|
const date = (/* @__PURE__ */ new Date()).toLocaleString();
|
|
3656
3652
|
if (process.stdout.isTTY) {
|
|
3657
|
-
process.stdout.write(`\x1B]0;
|
|
3653
|
+
process.stdout.write(`\x1B]0;Finalizing Error\x07`);
|
|
3658
3654
|
}
|
|
3659
3655
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
3660
3656
|
const janitorErrDir = path14.join(LOGS_DIR, "janitor");
|
|
@@ -3675,7 +3671,7 @@ ${originalTextProcessed.length > USER_CONTEXT_LENGTH ? "... (truncated) ...\n\n"
|
|
|
3675
3671
|
`);
|
|
3676
3672
|
if (attempts >= MAX_JANITOR_RETRIES) {
|
|
3677
3673
|
if (process.stdout.isTTY) {
|
|
3678
|
-
process.stdout.write(`\x1B]0;
|
|
3674
|
+
process.stdout.write(`\x1B]0;Finalizing Error\x07`);
|
|
3679
3675
|
}
|
|
3680
3676
|
await new Promise((resolve) => setTimeout(resolve, 3e3));
|
|
3681
3677
|
}
|