@lazyingart/agintiflow 0.20.322 → 0.20.323
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lazyingart/agintiflow",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.323",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AgInTiFlow is a project-aware agent workspace for hybrid wet-dry R&D, hardware-aware intelligence, software automation, and industrial workflows.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -11089,6 +11089,20 @@ try {
|
|
|
11089
11089
|
})?.category === "repeated-no-progress-call",
|
|
11090
11090
|
"a third identical failed shell command was not blocked"
|
|
11091
11091
|
);
|
|
11092
|
+
const repeatedChangingFailureState = structuredClone(repeatedFailureState);
|
|
11093
|
+
repeatedChangingFailureState.meta.toolLoop.recent[0].outcomeFingerprint =
|
|
11094
|
+
"failure-with-first-dynamic-log";
|
|
11095
|
+
repeatedChangingFailureState.meta.toolLoop.recent[1].outcomeFingerprint =
|
|
11096
|
+
"failure-with-second-dynamic-log";
|
|
11097
|
+
assert(
|
|
11098
|
+
repeatedNoProgressToolBlock(
|
|
11099
|
+
repeatedChangingFailureState,
|
|
11100
|
+
"run_command",
|
|
11101
|
+
repeatedProbeArgs,
|
|
11102
|
+
{ commandCwd: workspace }
|
|
11103
|
+
)?.category === "repeated-no-progress-call",
|
|
11104
|
+
"dynamic failure output allowed an unchanged failing command to loop"
|
|
11105
|
+
);
|
|
11092
11106
|
const newlyAuthoritativeVerificationState = structuredClone(repeatedFailureState);
|
|
11093
11107
|
newlyAuthoritativeVerificationState.meta.projectVerification = {
|
|
11094
11108
|
mutationRevision: 6,
|
package/src/agent-runner.js
CHANGED
|
@@ -11094,6 +11094,26 @@ export function repeatedNoProgressToolBlock(state, toolName, args = {}, config =
|
|
|
11094
11094
|
Boolean(entry?.outcomeFingerprint)
|
|
11095
11095
|
);
|
|
11096
11096
|
if (matches.length < 2) return null;
|
|
11097
|
+
const repeatedFailures = matches.slice(-2).every((entry) => entry?.ok === false);
|
|
11098
|
+
if (repeatedFailures) {
|
|
11099
|
+
return {
|
|
11100
|
+
reason:
|
|
11101
|
+
"The same command already failed twice without an intervening file, artifact, browser, or task-state change.",
|
|
11102
|
+
category: "repeated-no-progress-call",
|
|
11103
|
+
permissionAdvice: {
|
|
11104
|
+
category: "repeated-no-progress-call",
|
|
11105
|
+
autoRecover: true,
|
|
11106
|
+
summary: "This is a failed-command convergence guard, not a permission blocker.",
|
|
11107
|
+
instruction:
|
|
11108
|
+
"Do not rerun the command or a cosmetically equivalent form. Use the retained failure evidence, change the command or repair the implicated source, then run the smallest relevant validation.",
|
|
11109
|
+
options: [
|
|
11110
|
+
"Choose the correct compiler, interpreter, working directory, or command flags from the observed failure.",
|
|
11111
|
+
"Apply one bounded source repair that addresses the failure, then rerun validation.",
|
|
11112
|
+
"Finish with a concrete external blocker only when no enabled tool can make progress.",
|
|
11113
|
+
],
|
|
11114
|
+
},
|
|
11115
|
+
};
|
|
11116
|
+
}
|
|
11097
11117
|
const recentFingerprints = matches.slice(-2).map((entry) => entry.outcomeFingerprint);
|
|
11098
11118
|
if (new Set(recentFingerprints).size !== 1) return null;
|
|
11099
11119
|
return {
|