fluxflow-cli 1.7.7 → 1.7.9
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 +24 -4
- package/package.json +1 -1
package/dist/fluxflow.js
CHANGED
|
@@ -2380,6 +2380,9 @@ USER_PROMPT: ${agentText}`.trim();
|
|
|
2380
2380
|
}
|
|
2381
2381
|
});
|
|
2382
2382
|
for (let loop = 0; loop < MAX_LOOPS; loop++) {
|
|
2383
|
+
if (loop > 0) {
|
|
2384
|
+
yield { type: "status", content: "Processed. Reconnecting..." };
|
|
2385
|
+
}
|
|
2383
2386
|
if (TERMINATION_SIGNAL) {
|
|
2384
2387
|
yield { type: "status", content: "Termination Signal Received." };
|
|
2385
2388
|
break;
|
|
@@ -2458,12 +2461,14 @@ USER_PROMPT: ${agentText}`.trim();
|
|
|
2458
2461
|
}
|
|
2459
2462
|
let turnText = "";
|
|
2460
2463
|
let lastToolSniffed = null;
|
|
2464
|
+
let lastToolEventTime = null;
|
|
2461
2465
|
for await (const chunk of stream) {
|
|
2462
2466
|
if (TERMINATION_SIGNAL) break;
|
|
2463
2467
|
if (chunk.text) {
|
|
2464
2468
|
turnText += chunk.text;
|
|
2465
2469
|
yield { type: "text", content: chunk.text };
|
|
2466
2470
|
if (turnText.includes("tool:functions.")) {
|
|
2471
|
+
if (!lastToolEventTime) lastToolEventTime = Date.now();
|
|
2467
2472
|
const parts = turnText.split("tool:functions.");
|
|
2468
2473
|
const potentialTool = parts[parts.length - 1].split("(")[0].trim();
|
|
2469
2474
|
if (potentialTool && /^[a-z_]+$/.test(potentialTool) && potentialTool !== lastToolSniffed) {
|
|
@@ -2494,7 +2499,13 @@ USER_PROMPT: ${agentText}`.trim();
|
|
|
2494
2499
|
let toolResults = [];
|
|
2495
2500
|
const shouldContinue = toolCalls.length > 0;
|
|
2496
2501
|
if (toolCalls.length > 0) {
|
|
2502
|
+
let toolIdx = 0;
|
|
2497
2503
|
for (const toolCall of toolCalls) {
|
|
2504
|
+
if (toolIdx > 0) {
|
|
2505
|
+
yield { type: "status", content: `Preparing next tool (${toolCall.toolName})...` };
|
|
2506
|
+
await new Promise((resolve) => setTimeout(resolve, 3e3));
|
|
2507
|
+
}
|
|
2508
|
+
toolIdx++;
|
|
2498
2509
|
yield { type: "turn_reset", content: true };
|
|
2499
2510
|
yield { type: "status", content: `Working (${toolCall.toolName})...` };
|
|
2500
2511
|
let label = "";
|
|
@@ -2623,7 +2634,7 @@ ${boxBottom}
|
|
|
2623
2634
|
}
|
|
2624
2635
|
}
|
|
2625
2636
|
}
|
|
2626
|
-
const
|
|
2637
|
+
const effectiveStart = lastToolEventTime || Date.now();
|
|
2627
2638
|
let result = await dispatchTool(toolCall.toolName, toolCall.args, {
|
|
2628
2639
|
chatId,
|
|
2629
2640
|
history,
|
|
@@ -2631,7 +2642,8 @@ ${boxBottom}
|
|
|
2631
2642
|
onAskUser: settings.onAskUser
|
|
2632
2643
|
});
|
|
2633
2644
|
const toolEnd = Date.now();
|
|
2634
|
-
yield { type: "tool_time", content: toolEnd -
|
|
2645
|
+
yield { type: "tool_time", content: toolEnd - effectiveStart };
|
|
2646
|
+
lastToolEventTime = toolEnd;
|
|
2635
2647
|
let binaryPart = null;
|
|
2636
2648
|
if (typeof result === "object" && result.binaryPart) {
|
|
2637
2649
|
binaryPart = result.binaryPart;
|
|
@@ -3470,6 +3482,14 @@ Check what's new using \`/changelog\` command.`,
|
|
|
3470
3482
|
if (!absoluteClean.trim()) return;
|
|
3471
3483
|
if (isProcessing) {
|
|
3472
3484
|
const hintText = absoluteClean.trim();
|
|
3485
|
+
if (hintText.startsWith("/")) {
|
|
3486
|
+
setMessages((prev) => {
|
|
3487
|
+
setCompletedIndex(prev.length + 1);
|
|
3488
|
+
return [...prev, { id: "hint-err-" + Date.now(), role: "system", text: "\u274C [RESTRICTED] Steering Hints cannot start with /", isMeta: true }];
|
|
3489
|
+
});
|
|
3490
|
+
setInput("");
|
|
3491
|
+
return;
|
|
3492
|
+
}
|
|
3473
3493
|
setQueuedPrompt(hintText);
|
|
3474
3494
|
queuedPromptRef.current = hintText;
|
|
3475
3495
|
setMessages((prev) => {
|
|
@@ -4659,8 +4679,8 @@ var init_app = __esm({
|
|
|
4659
4679
|
init_setup();
|
|
4660
4680
|
SESSION_START_TIME = Date.now();
|
|
4661
4681
|
CHANGELOG_URL = "https://fluxflow-cli.onrender.com/changelog.html";
|
|
4662
|
-
versionFluxflow = "1.7.
|
|
4663
|
-
updatedOn = "2026-05-
|
|
4682
|
+
versionFluxflow = "1.7.9";
|
|
4683
|
+
updatedOn = "2026-05-04";
|
|
4664
4684
|
ResolutionModal = ({ data, onResolve, onEdit }) => /* @__PURE__ */ React10.createElement(Box10, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 2, paddingY: 1, width: "100%" }, /* @__PURE__ */ React10.createElement(Text10, { color: "magenta", bold: true, underline: true }, "\u{1F7E3} STEERING HINT RESOLUTION"), /* @__PURE__ */ React10.createElement(Text10, { marginTop: 1 }, "The agent already finished the task (turn: finish) before your hint was consumed."), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1, backgroundColor: "#222", paddingX: 1, width: "100%" }, /* @__PURE__ */ React10.createElement(Text10, { italic: true, color: "gray" }, '"', data, '"')), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React10.createElement(Text10, { color: "cyan" }, "How would you like to proceed?")), /* @__PURE__ */ React10.createElement(Box10, { marginTop: 1 }, /* @__PURE__ */ React10.createElement(
|
|
4665
4685
|
CommandMenu,
|
|
4666
4686
|
{
|