@lazyingart/agintiflow 0.20.270 → 0.20.271

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.270",
3
+ "version": "0.20.271",
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",
@@ -6265,6 +6265,22 @@ try {
6265
6265
  })?.category === "repeated-no-progress-call",
6266
6266
  "a third identical unchanged shell probe was not blocked"
6267
6267
  );
6268
+ assert(
6269
+ repeatedNoProgressToolBlock(repeatedProbeState, "run_command", repeatedProbeArgs, {
6270
+ commandCwd: workspace,
6271
+ generatedArtifactProducerPending: true,
6272
+ generatedArtifactProducerCommand: repeatedProbeArgs.command,
6273
+ }) === null,
6274
+ "the exact authoritative generated-artifact producer remained blocked by stale no-progress history"
6275
+ );
6276
+ assert(
6277
+ repeatedNoProgressToolBlock(repeatedProbeState, "run_command", repeatedProbeArgs, {
6278
+ commandCwd: workspace,
6279
+ generatedArtifactProducerPending: true,
6280
+ generatedArtifactProducerCommand: "python3 build_deck.py",
6281
+ })?.category === "repeated-no-progress-call",
6282
+ "a mismatched generated-artifact producer disabled the ordinary no-progress guard"
6283
+ );
6268
6284
  const repeatedFailureState = {
6269
6285
  meta: {
6270
6286
  toolLoop: {
@@ -1685,7 +1685,10 @@ assert(
1685
1685
  "a pending exact verifier did not activate the constrained project-command phase"
1686
1686
  );
1687
1687
  const exactVerifierTools = selectProgressiveTools(allTools, {
1688
- config: exactVerifierRuntime,
1688
+ config: {
1689
+ ...exactVerifierRuntime,
1690
+ convergenceSuppressedToolNames: ["run_command"],
1691
+ },
1689
1692
  goal: `Run ${exactVerifier}.`,
1690
1693
  profile: "security",
1691
1694
  });
@@ -1754,6 +1757,7 @@ const generatedArtifactProducerTools = selectProgressiveTools(allTools, {
1754
1757
  testFailureRepairMutationRequired: true,
1755
1758
  generatedArtifactProducerPending: true,
1756
1759
  generatedArtifactProducerCommand: "python3 build_deck.py",
1760
+ convergenceSuppressedToolNames: ["run_command"],
1757
1761
  },
1758
1762
  goal: "Rebuild the generated presentation before rerunning its validator.",
1759
1763
  profile: "slides",
@@ -1768,6 +1772,22 @@ assertStrict.deepEqual(
1768
1772
  ["python3 build_deck.py"],
1769
1773
  "the generated-artifact producer command was not schema-constrained"
1770
1774
  );
1775
+ const disabledGeneratedArtifactProducerTools = selectProgressiveTools(allTools, {
1776
+ config: {
1777
+ provider: "localllm",
1778
+ allowShellTool: false,
1779
+ generatedArtifactProducerPending: true,
1780
+ generatedArtifactProducerCommand: "python3 build_deck.py",
1781
+ convergenceSuppressedToolNames: ["run_command"],
1782
+ },
1783
+ goal: "Rebuild the generated presentation.",
1784
+ profile: "slides",
1785
+ });
1786
+ sameNames(
1787
+ disabledGeneratedArtifactProducerTools,
1788
+ ["finish"],
1789
+ "an authoritative producer phase bypassed an explicit shell capability disable"
1790
+ );
1771
1791
 
1772
1792
  const mutationOnlyFailedTestRepairTools = selectProgressiveTools(allTools, {
1773
1793
  config: {
@@ -3523,6 +3543,7 @@ const pendingTestTools = selectProgressiveTools(allTools, {
3523
3543
  provider: "localllm",
3524
3544
  testVerificationPending: true,
3525
3545
  testVerificationCommand: "python -m unittest discover -s tests -v",
3546
+ convergenceSuppressedToolNames: ["run_command"],
3526
3547
  },
3527
3548
  goal: "Verify the canonical mutation.",
3528
3549
  profile: "data",
@@ -7841,6 +7841,23 @@ function noProgressOutcomeFingerprint(toolResult = {}) {
7841
7841
 
7842
7842
  export function repeatedNoProgressToolBlock(state, toolName, args = {}, config = {}) {
7843
7843
  if (toolName !== "run_command" || expectedRepeatedObservationCommand(args.command)) return null;
7844
+ const requestedCommand = projectTestCommandKey(
7845
+ normalizeLeadingWorkspaceCd(args.command, config)
7846
+ );
7847
+ const pendingProducerCommand = projectTestCommandKey(
7848
+ normalizeLeadingWorkspaceCd(config.generatedArtifactProducerCommand, config)
7849
+ );
7850
+ if (
7851
+ config.generatedArtifactProducerPending === true &&
7852
+ requestedCommand &&
7853
+ requestedCommand === pendingProducerCommand
7854
+ ) {
7855
+ // A persisted session can contain no-progress history from a runtime that
7856
+ // did not yet credit generated-artifact rebuilds as mutations. The current
7857
+ // exact producer contract is authoritative and gets one executable route;
7858
+ // unrelated repeated probes remain guarded below.
7859
+ return null;
7860
+ }
7844
7861
  const toolLoop = state.meta?.toolLoop || {};
7845
7862
  const signature = staticToolCallSignature(toolName, args || {}, {
7846
7863
  commandCwd: config.commandCwd,
@@ -1938,7 +1938,10 @@ export function selectProgressiveTools(
1938
1938
  }
1939
1939
 
1940
1940
  if (config.generatedArtifactProducerPending === true) {
1941
- const available = new Map(enabled.map(({ name, tool }) => [name, tool]));
1941
+ // An authoritative producer phase supersedes a stale convergence marker.
1942
+ // Keep explicit capability disables effective by selecting from the real
1943
+ // enabled baseline rather than from the convergence-pruned surface.
1944
+ const available = new Map(baselineEnabled.map(({ name, tool }) => [name, tool]));
1942
1945
  const producerCommand = constrainRunCommand(
1943
1946
  available.get("run_command"),
1944
1947
  config.generatedArtifactProducerCommand,
@@ -1954,8 +1957,11 @@ export function selectProgressiveTools(
1954
1957
  typeof config.testFailureStalemateCommand === "string" &&
1955
1958
  config.testFailureStalemateCommand.trim()
1956
1959
  ) {
1960
+ const mandatoryAvailable = new Map(
1961
+ baselineEnabled.map(({ name, tool }) => [name, tool])
1962
+ );
1957
1963
  const verificationCommand = constrainRunCommand(
1958
- available.get("run_command"),
1964
+ mandatoryAvailable.get("run_command"),
1959
1965
  config.testFailureStalemateCommand,
1960
1966
  "Run this exact retained failing verifier once to refresh stale evidence after repeated semantic repair rejections. This is a bounded stalemate escape hatch, not permission to rerun arbitrary commands or loop unchanged tests."
1961
1967
  );
@@ -2053,7 +2059,7 @@ export function selectProgressiveTools(
2053
2059
  }
2054
2060
 
2055
2061
  if (config.requiredProjectCommandPending === true) {
2056
- const available = new Map(enabled.map(({ name, tool }) => [name, tool]));
2062
+ const available = new Map(baselineEnabled.map(({ name, tool }) => [name, tool]));
2057
2063
  const requiredCommand = constrainRunCommand(
2058
2064
  available.get("run_command"),
2059
2065
  config.requiredProjectCommand,
@@ -2063,7 +2069,7 @@ export function selectProgressiveTools(
2063
2069
  }
2064
2070
 
2065
2071
  if (config.testVerificationPending === true) {
2066
- const available = new Map(enabled.map(({ name, tool }) => [name, tool]));
2072
+ const available = new Map(baselineEnabled.map(({ name, tool }) => [name, tool]));
2067
2073
  const verificationCommand = constrainRunCommand(
2068
2074
  available.get("run_command"),
2069
2075
  config.testVerificationCommand,