open-agents-ai 0.187.563 → 0.187.564

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/index.js CHANGED
@@ -533020,99 +533020,50 @@ ${memoryLines.join("\n")}`
533020
533020
  ]);
533021
533021
  const REG61_BYPASS_TOOLS = /* @__PURE__ */ new Set([
533022
533022
  ...REG61_EDIT_TOOLS,
533023
- // Escape hatches: explicitly allowed while gate is active so
533024
- // the agent can exit cleanly (task_complete), escalate to human
533025
- // (ask_user), or complete an explicit web task without deadlock.
533026
- // shell, file_read, todo_*, grep_search, list_directory are
533027
- // NOT in bypass — those are the exact patterns batch528/529
533028
- // agents used to ignore REG-61.
533029
533023
  "web_search",
533030
533024
  "task_complete",
533031
533025
  "ask_user",
533032
- // DECOMP-1: sub-agent dispatch is productive work (it spawns
533033
- // a focused-context implementation worker). Block-listing
533034
- // sub_agent here would defeat the spec-decomposition pattern
533035
- // — agents would be forced into main-context edits even when
533036
- // delegation is the right move. sub_agent calls do NOT clear
533037
- // the gate (we want the agent to also produce direct edits
533038
- // for orchestration glue / integration), but they're allowed
533039
- // through.
533040
533026
  "sub_agent",
533041
533027
  "priority_delegate",
533042
533028
  "background_run"
533043
533029
  ]);
533044
533030
  if (this._reg61PerpetualGateActive && !REG61_BYPASS_TOOLS.has(tc.name) && process.env["OA_DISABLE_REG61_COERCE"] !== "1") {
533045
- this.emit({
533046
- type: "tool_call",
533047
- toolName: tc.name,
533048
- toolArgs: tc.arguments,
533049
- turn,
533050
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
533051
- });
533052
533031
  const _dbgLoop = this._detectDebugLoop(toolCallLog);
533053
533032
  const _debugLoopSampleSafe = (_dbgLoop.repeatedSample ?? "").slice(0, 120);
533054
533033
  const _localFailureNudge = this._renderLocalFailureNudge(turn);
533055
- const reg61BlockMsg = _dbgLoop.detected ? [
533056
- `[BLOCKED — REG-61 directive in effect — REG-66 DEBUG-LOOP detected]`,
533034
+ const reg61SteerMsg = _dbgLoop.detected ? [
533035
+ `[REG-61 directive active — REG-66 DEBUG-LOOP detected]`,
533057
533036
  ``,
533058
- `Pattern: ${_dbgLoop.kind === "shell" ? "shell command" : "file"} "${_debugLoopSampleSafe}" was used ${_dbgLoop.count}× in the trailing window with ZERO creative edits landing. You are stuck in a debug loop where re-running / re-reading is producing no new information.`,
533037
+ `Pattern: ${_dbgLoop.kind === "shell" ? "shell command" : "file"} "${_debugLoopSampleSafe}" was used ${_dbgLoop.count}× in the trailing window with ZERO creative edits landing. You appear stuck in a debug loop where re-running / re-reading is producing no new information.`,
533059
533038
  ``,
533060
- `STOP DEBUGGING. PERTURB.`,
533039
+ `Consider PERTURBING: make a speculative edit to get a NEW error signal.`,
533061
533040
  ``,
533062
- `Strategy when stuck like this (real human debuggers do this):`,
533063
- ` 1. Pick the source file most likely implicated by the recurring failure (probably in src/, the one most-imported by failing tests).`,
533041
+ `Strategy:`,
533042
+ ` 1. Pick the source file most likely implicated by the recurring failure.`,
533064
533043
  ` 2. Pick ONE plausible cause — most-recently-modified line, most-complex function, most-likely-misnamed import, most-likely off-by-one.`,
533065
533044
  ` 3. Make a SPECULATIVE edit that changes that thing — even if you are NOT certain it'll fix the bug. The point is to get a NEW error signal that disambiguates.`,
533066
- ` 4. Re-run the failing command. If the error CHANGED, you've learned something. If it's identical, you've ruled out one hypothesis.`,
533067
- ``,
533068
- `This is NOT random guessing — it's targeted hypothesis falsification. Reading the same files 5+ times has already proven uninformative; only a state change will move the system.`,
533069
- ``,
533070
- `Issue EXACTLY ONE of: file_write / file_edit / batch_edit / file_patch on a single concrete change. The edit must actually change disk state; dry-runs and no-ops do not clear this directive.`,
533045
+ ` 4. Re-run the failing command. If the error CHANGED, you've learned something.`,
533071
533046
  ``,
533072
- _localFailureNudge,
533073
- ``,
533074
- `Allowed exits (will not be blocked but will not clear the directive either):`,
533075
- ` * task_complete - exit if you genuinely cannot identify any plausible local perturbation`,
533076
- ` * ask_user - escalate to human (if available)`,
533077
- ``,
533078
- `Once you make a real edit, the directive clears and you'll see the new test result.`
533047
+ `This tool call was ALLOWED through, but the edit directive remains active.`
533079
533048
  ].join("\n") : [
533080
- `[BLOCKED — REG-61 directive in effect]`,
533049
+ `[REG-61 directive active]`,
533081
533050
  ``,
533082
- `A REG-61 FIRST-EDIT NUDGE was issued earlier and has not yet been satisfied. The directive: your next tool call MUST be a creative edit. You issued '${tc.name}' instead, which is a read/explore/shell call. This call has been BLOCKED.`,
533051
+ `A REG-61 FIRST-EDIT NUDGE was issued earlier and has not yet been satisfied. The directive asks you to prioritize a creative edit. You issued '${tc.name}' instead, which is a read/explore/shell call.`,
533083
533052
  ``,
533084
- `Issue EXACTLY ONE of these to clear the directive:`,
533053
+ `This call was ALLOWED through (needed context should never be blocked), but try to make a creative edit next:`,
533085
533054
  ` • file_write — create a new file`,
533086
533055
  ` • file_edit — modify an existing file (find/replace)`,
533087
533056
  ` • batch_edit — multiple find/replace edits in one call`,
533088
533057
  ` • file_patch — apply a version-checked line-range patch`,
533089
533058
  ``,
533090
- _localFailureNudge,
533091
- ``,
533092
- `These exits are also allowed while the directive is active (will not be blocked, will not clear the gate):`,
533093
- ` * task_complete - to exit if you cannot make any local progress`,
533094
- ` * ask_user - to escalate to human (if available)`,
533095
- ``,
533096
- `Until you issue a creative edit that actually changes disk, ALL of these will be BLOCKED again on every turn: file_read, file_explore, list_directory, grep_search, shell, todo_write, todo_read, memory_read, memory_write, etc. Pick the smallest concrete change that moves work forward.`
533059
+ _localFailureNudge
533097
533060
  ].join("\n");
533098
- this.emit({
533099
- type: "tool_result",
533100
- toolName: tc.name,
533101
- success: false,
533102
- content: reg61BlockMsg.slice(0, 120),
533103
- turn,
533104
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
533105
- });
533061
+ pushSoftInjection("system", reg61SteerMsg);
533106
533062
  this.emit({
533107
533063
  type: "status",
533108
- content: `REG-61 COERCION BLOCK rejected '${tc.name}' at turn ${turn}; gate stays active until creative edit dispatches${_dbgLoop.detected ? `; REG-66 debug-loop variant (${_dbgLoop.kind} "${_debugLoopSampleSafe.slice(0, 60)}" ${_dbgLoop.count}×)` : ""}`,
533064
+ content: `REG-61 STEERnudge injected for '${tc.name}' at turn ${turn}; tool ALLOWED; gate stays active${_dbgLoop.detected ? `; REG-66 debug-loop variant (${_dbgLoop.kind} "${_debugLoopSampleSafe.slice(0, 60)}" ${_dbgLoop.count}×)` : ""}`,
533109
533065
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
533110
533066
  });
533111
- this._tagSyntheticFailure({
533112
- mode: "step_repetition",
533113
- rationale: `REG-61 perpetual coercion block on '${tc.name}' — agent ignored FIRST-EDIT NUDGE${_dbgLoop.detected ? " (debug-loop variant)" : ""}`
533114
- });
533115
- return { tc, output: reg61BlockMsg };
533116
533067
  }
533117
533068
  {
533118
533069
  const _decomp2Block = this._maybeDecomp2Block(tc, turn);
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.563",
3
+ "version": "0.187.564",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "open-agents-ai",
9
- "version": "0.187.563",
9
+ "version": "0.187.564",
10
10
  "hasInstallScript": true,
11
11
  "license": "CC-BY-NC-4.0",
12
12
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.563",
3
+ "version": "0.187.564",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",