omnius 1.0.224 → 1.0.225
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 +61 -6
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -560040,6 +560040,15 @@ var init_agenticRunner = __esm({
|
|
|
560040
560040
|
_fileWritesThisRun = 0;
|
|
560041
560041
|
_backwardPassCyclesUsed = 0;
|
|
560042
560042
|
_lastBackwardPassVerdict = null;
|
|
560043
|
+
// REG-54: completion-gate anti-collapse circuit breaker. The no-progress and
|
|
560044
|
+
// completion-provenance gates can hold task_complete indefinitely. When a
|
|
560045
|
+
// collapsed/weak model resubmits the same (or a similar) completion summary,
|
|
560046
|
+
// the gate rejects it every turn and the model re-emits the identical
|
|
560047
|
+
// task_complete forever — a mode-collapse loop. Unlike the backward-pass
|
|
560048
|
+
// critic (REG-47), these gates had no cycle bound. We track consecutive holds
|
|
560049
|
+
// of the same summary and fail open after a small threshold so the run
|
|
560050
|
+
// terminates instead of spinning. Reset whenever a completion is allowed.
|
|
560051
|
+
_completionHoldState = { count: 0, lastKey: "" };
|
|
560043
560052
|
// ── WO-AM-01/04/10: Associative memory stores ──
|
|
560044
560053
|
// Episode store: every tool call → persistent episode with importance + decay
|
|
560045
560054
|
// Temporal KG: entities + relations with temporal validity (valid_from/valid_until)
|
|
@@ -564982,6 +564991,52 @@ TASK: ${scrubbedTask}` : scrubbedTask;
|
|
|
564982
564991
|
});
|
|
564983
564992
|
return true;
|
|
564984
564993
|
};
|
|
564994
|
+
const completionHoldEscapeMax = (() => {
|
|
564995
|
+
const raw = Number(process.env["OMNIUS_COMPLETION_HOLD_MAX"]);
|
|
564996
|
+
return Number.isFinite(raw) && raw >= 1 ? Math.floor(raw) : 3;
|
|
564997
|
+
})();
|
|
564998
|
+
const holdTaskCompleteGates = (args, turn) => {
|
|
564999
|
+
const held = holdNoProgressTaskComplete(args, turn) || holdProvenanceTaskComplete(args, turn);
|
|
565000
|
+
if (!held) {
|
|
565001
|
+
this._completionHoldState.count = 0;
|
|
565002
|
+
this._completionHoldState.lastKey = "";
|
|
565003
|
+
return false;
|
|
565004
|
+
}
|
|
565005
|
+
const key = (extractTaskCompleteSummary(args) || "").trim().slice(0, 200);
|
|
565006
|
+
if (key && key === this._completionHoldState.lastKey) {
|
|
565007
|
+
this._completionHoldState.count += 1;
|
|
565008
|
+
} else {
|
|
565009
|
+
this._completionHoldState.lastKey = key;
|
|
565010
|
+
this._completionHoldState.count = 1;
|
|
565011
|
+
}
|
|
565012
|
+
if (this._completionHoldState.count >= completionHoldEscapeMax) {
|
|
565013
|
+
messages2.push({
|
|
565014
|
+
role: "system",
|
|
565015
|
+
content: `[COMPLETION GATE ESCAPE] task_complete was held ${this._completionHoldState.count} times for the same summary without new progress. The gate feedback above is not being acted on, so completion is now ALLOWED to avoid a stall/mode-collapse loop. If the summary lacks evidence, that limitation stands in the final result.`
|
|
565016
|
+
});
|
|
565017
|
+
this.emit({
|
|
565018
|
+
type: "status",
|
|
565019
|
+
content: `completion gates yielding after ${this._completionHoldState.count} repeated holds to prevent a mode-collapse loop`,
|
|
565020
|
+
turn,
|
|
565021
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
565022
|
+
});
|
|
565023
|
+
this.emit({
|
|
565024
|
+
type: "adversary_reaction",
|
|
565025
|
+
adversary: {
|
|
565026
|
+
class: "guidance",
|
|
565027
|
+
shortText: "Completion gate escape (anti-loop)",
|
|
565028
|
+
confidence: 0.9,
|
|
565029
|
+
details: `Same task_complete summary held ${this._completionHoldState.count}× — failing open to terminate the run.`
|
|
565030
|
+
},
|
|
565031
|
+
turn,
|
|
565032
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
565033
|
+
});
|
|
565034
|
+
this._completionHoldState.count = 0;
|
|
565035
|
+
this._completionHoldState.lastKey = "";
|
|
565036
|
+
return false;
|
|
565037
|
+
}
|
|
565038
|
+
return true;
|
|
565039
|
+
};
|
|
564985
565040
|
const emitBackwardPassAdvisory = (feedback, turn) => {
|
|
564986
565041
|
messages2.push({
|
|
564987
565042
|
role: "system",
|
|
@@ -568543,7 +568598,7 @@ ${sr.result.output}`;
|
|
|
568543
568598
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
568544
568599
|
});
|
|
568545
568600
|
} else {
|
|
568546
|
-
if (
|
|
568601
|
+
if (holdTaskCompleteGates(matchTc.arguments, turn)) {
|
|
568547
568602
|
continue;
|
|
568548
568603
|
}
|
|
568549
568604
|
const _bp1 = await this._runBackwardPassReview(turn);
|
|
@@ -568598,7 +568653,7 @@ ${sr.result.output}`;
|
|
|
568598
568653
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
568599
568654
|
});
|
|
568600
568655
|
} else {
|
|
568601
|
-
if (
|
|
568656
|
+
if (holdTaskCompleteGates(r2.tc.arguments, turn)) {
|
|
568602
568657
|
continue;
|
|
568603
568658
|
}
|
|
568604
568659
|
const _bp2 = await this._runBackwardPassReview(turn);
|
|
@@ -568690,7 +568745,7 @@ ${sr.result.output}`;
|
|
|
568690
568745
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
568691
568746
|
});
|
|
568692
568747
|
} else {
|
|
568693
|
-
if (
|
|
568748
|
+
if (holdTaskCompleteGates(r2.tc.arguments, turn)) {
|
|
568694
568749
|
continue;
|
|
568695
568750
|
}
|
|
568696
568751
|
const _bp3 = await this._runBackwardPassReview(turn);
|
|
@@ -568911,7 +568966,7 @@ Call task_complete(summary="...") NOW with whatever you have.`
|
|
|
568911
568966
|
const adversaryAddedGuidance = this.pendingUserMessages.length > pendingBeforeAdversary;
|
|
568912
568967
|
if (/task.?complete|all tests pass/i.test(content)) {
|
|
568913
568968
|
const completionArgs = { summary: content };
|
|
568914
|
-
if (
|
|
568969
|
+
if (holdTaskCompleteGates(completionArgs, turn)) {
|
|
568915
568970
|
continue;
|
|
568916
568971
|
}
|
|
568917
568972
|
completed = true;
|
|
@@ -569482,7 +569537,7 @@ Full content available via: repl_exec(code="data = retrieve('${handleId}')") or
|
|
|
569482
569537
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
569483
569538
|
});
|
|
569484
569539
|
} else {
|
|
569485
|
-
if (
|
|
569540
|
+
if (holdTaskCompleteGates(tc.arguments, turn)) {
|
|
569486
569541
|
continue;
|
|
569487
569542
|
}
|
|
569488
569543
|
const _bp4 = await this._runBackwardPassReview(turn);
|
|
@@ -569535,7 +569590,7 @@ Full content available via: repl_exec(code="data = retrieve('${handleId}')") or
|
|
|
569535
569590
|
});
|
|
569536
569591
|
} else {
|
|
569537
569592
|
const completionArgs = { summary: content };
|
|
569538
|
-
if (
|
|
569593
|
+
if (holdTaskCompleteGates(completionArgs, turn)) {
|
|
569539
569594
|
continue;
|
|
569540
569595
|
}
|
|
569541
569596
|
completed = true;
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.225",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "omnius",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.225",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
package/package.json
CHANGED