omnius 1.0.461 → 1.0.462
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 +104 -24
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -563781,6 +563781,15 @@ function isSuccessfulVerificationEvidence(entry) {
|
|
|
563781
563781
|
function isFailedVerificationEvidence(entry) {
|
|
563782
563782
|
return entry.role === "verification" && entry.success === false;
|
|
563783
563783
|
}
|
|
563784
|
+
function isSuccessfulPostMutationObservation(entry) {
|
|
563785
|
+
if (entry.success !== true)
|
|
563786
|
+
return false;
|
|
563787
|
+
if (entry.role === "blocker")
|
|
563788
|
+
return false;
|
|
563789
|
+
if (isMutationEvidence(entry))
|
|
563790
|
+
return false;
|
|
563791
|
+
return entry.kind === "tool_result" || entry.kind === "runtime_observation" || entry.kind === "delivery_result";
|
|
563792
|
+
}
|
|
563784
563793
|
function verificationFamily(entry) {
|
|
563785
563794
|
if (entry.role !== "verification")
|
|
563786
563795
|
return null;
|
|
@@ -563807,6 +563816,7 @@ function finalizeCompletionLedgerTruth(ledger) {
|
|
|
563807
563816
|
let unresolved = [...ledger.unresolved];
|
|
563808
563817
|
let lastVerificationInvalidatingMutation = -1;
|
|
563809
563818
|
let lastVerification = -1;
|
|
563819
|
+
let lastCriticApprovedVerification = -1;
|
|
563810
563820
|
const lastSuccessfulVerificationByFamily = /* @__PURE__ */ new Map();
|
|
563811
563821
|
ledger.evidence.forEach((entry, index) => {
|
|
563812
563822
|
if (isVerificationInvalidatingMutation(entry))
|
|
@@ -563818,6 +563828,21 @@ function finalizeCompletionLedgerTruth(ledger) {
|
|
|
563818
563828
|
lastSuccessfulVerificationByFamily.set(family, index);
|
|
563819
563829
|
}
|
|
563820
563830
|
});
|
|
563831
|
+
for (const critique2 of ledger.critiques) {
|
|
563832
|
+
if (critique2.verdict !== "approve")
|
|
563833
|
+
continue;
|
|
563834
|
+
if (lastVerificationInvalidatingMutation >= 0 && critique2.evidenceSequence <= lastVerificationInvalidatingMutation) {
|
|
563835
|
+
continue;
|
|
563836
|
+
}
|
|
563837
|
+
const reviewedEvidence = ledger.evidence.slice(Math.max(0, lastVerificationInvalidatingMutation + 1), Math.max(0, critique2.evidenceSequence));
|
|
563838
|
+
if (reviewedEvidence.some(isSuccessfulPostMutationObservation)) {
|
|
563839
|
+
lastCriticApprovedVerification = Math.max(lastCriticApprovedVerification, critique2.evidenceSequence - 1);
|
|
563840
|
+
}
|
|
563841
|
+
}
|
|
563842
|
+
const effectiveLastVerification = Math.max(lastVerification, lastCriticApprovedVerification);
|
|
563843
|
+
if (effectiveLastVerification >= 0 && effectiveLastVerification >= lastVerificationInvalidatingMutation) {
|
|
563844
|
+
unresolved = unresolved.filter((item) => item.source !== "verification_missing" && item.source !== "verification_freshness");
|
|
563845
|
+
}
|
|
563821
563846
|
ledger.evidence.forEach((entry, index) => {
|
|
563822
563847
|
if (isFailedVerificationEvidence(entry)) {
|
|
563823
563848
|
const family = verificationFamily(entry);
|
|
@@ -563830,12 +563855,13 @@ function finalizeCompletionLedgerTruth(ledger) {
|
|
|
563830
563855
|
unresolved = appendUnresolved(unresolved, `Stale edit failure remains unresolved: ${entry.summary}`, entry.id);
|
|
563831
563856
|
}
|
|
563832
563857
|
});
|
|
563833
|
-
if (lastVerificationInvalidatingMutation >= 0 &&
|
|
563858
|
+
if (lastVerificationInvalidatingMutation >= 0 && effectiveLastVerification < 0) {
|
|
563834
563859
|
unresolved = appendUnresolved(unresolved, "File changes occurred without any successful verification evidence.", "verification_missing");
|
|
563835
|
-
} else if (
|
|
563860
|
+
} else if (effectiveLastVerification >= 0 && lastVerificationInvalidatingMutation > effectiveLastVerification) {
|
|
563836
563861
|
unresolved = appendUnresolved(unresolved, "File changes occurred after the last successful verification; final verification is stale.", "verification_freshness");
|
|
563837
563862
|
}
|
|
563838
|
-
const
|
|
563863
|
+
const latestCritique = ledger.critiques.at(-1);
|
|
563864
|
+
const status = ledger.status === "blocked" || ledger.status === "request_changes" ? ledger.status : unresolved.length > 0 ? "incomplete_verification" : latestCritique?.verdict === "approve" ? "approved" : ledger.status === "incomplete_verification" ? "open" : ledger.status;
|
|
563839
563865
|
return {
|
|
563840
563866
|
...ledger,
|
|
563841
563867
|
unresolved,
|
|
@@ -579170,6 +579196,15 @@ var init_agenticRunner = __esm({
|
|
|
579170
579196
|
_workboardDir() {
|
|
579171
579197
|
return this.options.workboardDir || this._workingDirectory || process.cwd();
|
|
579172
579198
|
}
|
|
579199
|
+
_todoWriteAvailable() {
|
|
579200
|
+
return this.tools.has("todo_write");
|
|
579201
|
+
}
|
|
579202
|
+
_availablePreferredTools(candidates) {
|
|
579203
|
+
const available = candidates.filter((name10) => this.tools.has(name10));
|
|
579204
|
+
if (available.length > 0)
|
|
579205
|
+
return available;
|
|
579206
|
+
return this.tools.has("task_complete") ? ["task_complete"] : [];
|
|
579207
|
+
}
|
|
579173
579208
|
getOrCreateWorkboard() {
|
|
579174
579209
|
const goal = this._taskState.originalGoal || this._taskState.goal || "";
|
|
579175
579210
|
if (this._workboard) {
|
|
@@ -579425,7 +579460,7 @@ ${parts.join("\n")}
|
|
|
579425
579460
|
cardId: integration.id,
|
|
579426
579461
|
title: integration.title,
|
|
579427
579462
|
reason: "implementation evidence exists; exercise the changed runtime path before more discovery",
|
|
579428
|
-
preferredTools: ["shell"]
|
|
579463
|
+
preferredTools: this._availablePreferredTools(["shell"])
|
|
579429
579464
|
};
|
|
579430
579465
|
}
|
|
579431
579466
|
if (hasVerificationEvidence && verification) {
|
|
@@ -579433,7 +579468,10 @@ ${parts.join("\n")}
|
|
|
579433
579468
|
cardId: verification.id,
|
|
579434
579469
|
title: verification.title,
|
|
579435
579470
|
reason: "verification evidence exists; reconcile outcome, todos, and blockers",
|
|
579436
|
-
preferredTools: [
|
|
579471
|
+
preferredTools: this._availablePreferredTools([
|
|
579472
|
+
"todo_write",
|
|
579473
|
+
"task_complete"
|
|
579474
|
+
])
|
|
579437
579475
|
};
|
|
579438
579476
|
}
|
|
579439
579477
|
if (discoveryEvidence > 0 && !hasImplementationEvidence && implementation2) {
|
|
@@ -579441,7 +579479,12 @@ ${parts.join("\n")}
|
|
|
579441
579479
|
cardId: implementation2.id,
|
|
579442
579480
|
title: implementation2.title,
|
|
579443
579481
|
reason: "discovery evidence is already present; land the smallest concrete repair",
|
|
579444
|
-
preferredTools: [
|
|
579482
|
+
preferredTools: this._availablePreferredTools([
|
|
579483
|
+
"file_patch",
|
|
579484
|
+
"batch_edit",
|
|
579485
|
+
"file_edit",
|
|
579486
|
+
"file_write"
|
|
579487
|
+
])
|
|
579445
579488
|
};
|
|
579446
579489
|
}
|
|
579447
579490
|
const active = snapshot.cards.find((card) => card.status === "in_progress") ?? snapshot.cards.find((card) => card.status === "needs_changes") ?? snapshot.cards.find((card) => card.status === "open") ?? discovery;
|
|
@@ -579451,13 +579494,24 @@ ${parts.join("\n")}
|
|
|
579451
579494
|
cardId: active.id,
|
|
579452
579495
|
title: active.title,
|
|
579453
579496
|
reason: active.id === "discover-current-state" ? "no authoritative target evidence is recorded yet" : "workboard card is the next unresolved card",
|
|
579454
|
-
preferredTools: active.id === "discover-current-state" ? [
|
|
579497
|
+
preferredTools: active.id === "discover-current-state" ? this._availablePreferredTools([
|
|
579498
|
+
"file_read",
|
|
579499
|
+
"grep_search",
|
|
579500
|
+
"list_directory",
|
|
579501
|
+
"shell"
|
|
579502
|
+
]) : this._availablePreferredTools([
|
|
579503
|
+
"file_patch",
|
|
579504
|
+
"batch_edit",
|
|
579505
|
+
"file_edit",
|
|
579506
|
+
"file_write",
|
|
579507
|
+
"shell"
|
|
579508
|
+
])
|
|
579455
579509
|
};
|
|
579456
579510
|
}
|
|
579457
579511
|
_focusToolsForRequiredAction(action) {
|
|
579458
579512
|
switch (action) {
|
|
579459
579513
|
case "update_todos":
|
|
579460
|
-
return "todo_write with a changed plan/status, or a real file edit if that is the active work";
|
|
579514
|
+
return this._todoWriteAvailable() ? "todo_write with a changed plan/status, or a real file edit if that is the active work" : "todo_write is unavailable in this tool surface; continue with the intended substantive action, or task_complete with evidence if done";
|
|
579461
579515
|
case "read_authoritative_target":
|
|
579462
579516
|
return "use cached evidence or one authoritative file_read/read-only shell, then act";
|
|
579463
579517
|
case "use_cached_evidence":
|
|
@@ -579511,7 +579565,9 @@ ${parts.join("\n")}
|
|
|
579511
579565
|
const integration = byId.get("integrate-and-run");
|
|
579512
579566
|
const verification = byId.get("verify-observed-outcome");
|
|
579513
579567
|
lines.push(`workboard_current_card=${action.cardId} (${action.title})`);
|
|
579514
|
-
|
|
579568
|
+
if (action.preferredTools.length > 0) {
|
|
579569
|
+
lines.push(`workboard_preferred_tools=${action.preferredTools.join(", ")}`);
|
|
579570
|
+
}
|
|
579515
579571
|
lines.push(`workboard_reason=${action.reason}`);
|
|
579516
579572
|
lines.push(`workboard_evidence_counts=discover:${this._workboardEvidenceCount(discovery)} implement:${this._workboardEvidenceCount(implementation2)} integrate:${this._workboardEvidenceCount(integration)} verify:${this._workboardEvidenceCount(verification)}`);
|
|
579517
579573
|
if (this._workboardHasEditEvidence(implementation2)) {
|
|
@@ -579537,7 +579593,7 @@ ${parts.join("\n")}
|
|
|
579537
579593
|
}
|
|
579538
579594
|
if (lines.length === 2)
|
|
579539
579595
|
return null;
|
|
579540
|
-
lines.push("not_progress=repeat unchanged todo_write; repeat broad discovery already represented in this frame; keep discovery active after a real mutation");
|
|
579596
|
+
lines.push(this._todoWriteAvailable() ? "not_progress=repeat unchanged todo_write; repeat broad discovery already represented in this frame; keep discovery active after a real mutation" : "not_progress=repeat broad discovery already represented in this frame; keep discovery active after a real mutation");
|
|
579541
579597
|
return lines.join("\n");
|
|
579542
579598
|
}
|
|
579543
579599
|
_workboardTargetCardId(snapshot, toolName, result, meta = {}) {
|
|
@@ -580266,10 +580322,23 @@ ${parts.join("\n")}
|
|
|
580266
580322
|
const pressureCue = pressureCheck(task);
|
|
580267
580323
|
const rawPrompt = getSystemPromptForTier(this.options.modelTier);
|
|
580268
580324
|
const basePrompt = rawPrompt + pressureCue;
|
|
580325
|
+
const todoBatchGuidance = this._todoWriteAvailable() ? " Use todo_write between batches to mark progress." : "";
|
|
580269
580326
|
const _BATCH_GUIDANCE = {
|
|
580270
|
-
small:
|
|
580271
|
-
|
|
580272
|
-
|
|
580327
|
+
small: `
|
|
580328
|
+
|
|
580329
|
+
## Response batching
|
|
580330
|
+
|
|
580331
|
+
Emit AT MOST 2 tool calls per response. After observing their results, plan the next 2 in your following response. Smaller batches let the orchestrator deliver cache/failure/progress signals to you between actions. Tool calls beyond the cap are dropped.${todoBatchGuidance}`,
|
|
580332
|
+
medium: `
|
|
580333
|
+
|
|
580334
|
+
## Response batching
|
|
580335
|
+
|
|
580336
|
+
Emit AT MOST 4 tool calls per response. After observing their results, plan the next batch in your following response. Smaller batches let the orchestrator deliver cache/failure/progress signals to you between actions. Tool calls beyond the cap are dropped.${todoBatchGuidance}`,
|
|
580337
|
+
large: `
|
|
580338
|
+
|
|
580339
|
+
## Response batching
|
|
580340
|
+
|
|
580341
|
+
Emit AT MOST 6 tool calls per response. Smaller batches receive better feedback (cache/failure/progress signals between actions). Tool calls beyond the cap are dropped.${todoBatchGuidance}`
|
|
580273
580342
|
};
|
|
580274
580343
|
const batchGuidance = _BATCH_GUIDANCE[this.options.modelTier ?? "large"] ?? _BATCH_GUIDANCE.large;
|
|
580275
580344
|
const shellGuidance = "\n\n## Shell command patterns\n\nWhen investigating a build/test/install failure, RUN THE COMMAND WITHOUT TRUNCATION FIRST to see the full error.\nAvoid `| tail -N` / `| head -N` / `| sed -n '1,Np'` on commands you don't yet trust — they drop the part of the output where errors usually appear.\nPipefail is on by default in this orchestrator: a pipeline's exit code reflects the FIRST failing stage, not just the last. So `<cmd> | tail -80` returns non-zero if `<cmd>` failed.\nWhen you DO want to limit context (after diagnosis), prefer `<cmd> 2>&1 | tail -300` (or larger) so you keep enough output to see the actual error block.\nIf your command exited 0 but produced suspiciously short output (~< 800 chars), the orchestrator will inject a [HINT — pipe-to-truncator detected] block telling you to re-run without truncation.";
|
|
@@ -581506,6 +581575,8 @@ ${result.output ?? ""}`;
|
|
|
581506
581575
|
getOpenTodoItems() {
|
|
581507
581576
|
if (this.options.disableTodoCompletionGuard)
|
|
581508
581577
|
return [];
|
|
581578
|
+
if (!this._todoWriteAvailable())
|
|
581579
|
+
return [];
|
|
581509
581580
|
const todos = this.readSessionTodos();
|
|
581510
581581
|
if (!todos || todos.length === 0)
|
|
581511
581582
|
return [];
|
|
@@ -582496,6 +582567,8 @@ ${_checks}`
|
|
|
582496
582567
|
* Mutates `_lastTodoReminderTurn` when a reminder is produced.
|
|
582497
582568
|
*/
|
|
582498
582569
|
getTodoReminderContent(currentTurn) {
|
|
582570
|
+
if (!this._todoWriteAvailable())
|
|
582571
|
+
return null;
|
|
582499
582572
|
const todos = this.readSessionTodos();
|
|
582500
582573
|
const result = computeTodoReminder({
|
|
582501
582574
|
currentTurn,
|
|
@@ -582856,6 +582929,8 @@ ${contentPreview}
|
|
|
582856
582929
|
* Recommends marking progress before further work. Returns null otherwise.
|
|
582857
582930
|
*/
|
|
582858
582931
|
_renderProgressNudgeBlock(turn) {
|
|
582932
|
+
if (!this._todoWriteAvailable())
|
|
582933
|
+
return null;
|
|
582859
582934
|
const n2 = this._writesSinceLastTodoWrite;
|
|
582860
582935
|
if (n2 < 4)
|
|
582861
582936
|
return null;
|
|
@@ -583469,11 +583544,14 @@ ${contentPreview}
|
|
|
583469
583544
|
].join("\n");
|
|
583470
583545
|
}
|
|
583471
583546
|
if (latest.tool === "todo_write") {
|
|
583547
|
+
const raw2 = `${latest.error || ""}
|
|
583548
|
+
${latest.output || ""}`;
|
|
583549
|
+
const unavailable = /Unknown tool/i.test(raw2);
|
|
583472
583550
|
return [
|
|
583473
583551
|
`[PLANNING TOOL RECOVERY]`,
|
|
583474
583552
|
`Last failing tool: todo_write (turn ${latest.turn})`,
|
|
583475
|
-
`A checklist write failure is bookkeeping/argument transport, not evidence that the target codebase is broken.`,
|
|
583476
|
-
`Repair the todo_write payload if you still need the visible plan, or continue with the intended first substantive task using the plan content you already attempted to record.`,
|
|
583553
|
+
unavailable ? `todo_write is not registered in this tool surface. Do not retry it.` : `A checklist write failure is bookkeeping/argument transport, not evidence that the target codebase is broken.`,
|
|
583554
|
+
unavailable ? `Use the attempted checklist only as private state; continue with available substantive tools or task_complete with evidence.` : `Repair the todo_write payload if you still need the visible plan, or continue with the intended first substantive task using the plan content you already attempted to record.`,
|
|
583477
583555
|
`Do not inspect or edit project files solely because todo_write rejected its arguments.`
|
|
583478
583556
|
].join("\n");
|
|
583479
583557
|
}
|
|
@@ -583571,7 +583649,7 @@ ${latest.output || ""}`.trim();
|
|
|
583571
583649
|
lines.push(`... +${ordered.length - visible.length} more todo node(s)`);
|
|
583572
583650
|
}
|
|
583573
583651
|
lines.push("decomposition_contract=Use stable ids plus parentId for subtasks. If the active item has multiple remaining actions, rewrite it as a parent with concrete child leaf todos; work leaf-first and do not complete a parent before all children are complete with evidence.");
|
|
583574
|
-
lines.push(`(turn ${turn} — call todo_write ONLY to update state, never to re-read this plan)`);
|
|
583652
|
+
lines.push(this._todoWriteAvailable() ? `(turn ${turn} — call todo_write ONLY to update state, never to re-read this plan)` : `(turn ${turn} — todo_write is unavailable in this tool surface; use this plan as read-only state)`);
|
|
583575
583653
|
return lines.join("\n");
|
|
583576
583654
|
} catch {
|
|
583577
583655
|
return null;
|
|
@@ -583825,12 +583903,13 @@ ${sections.join("\n")}` : sections.join("\n");
|
|
|
583825
583903
|
*/
|
|
583826
583904
|
_buildRepeatGateBlock(toolName, args, hits) {
|
|
583827
583905
|
const argPreview = JSON.stringify(args ?? {}).slice(0, 200);
|
|
583906
|
+
const progressStep = this._todoWriteAvailable() ? ` 1. Call todo_write — decompose the remaining work into concrete, verifiable steps, mark the current step in_progress, and mark anything already done as completed.` : ` 1. Re-anchor on the active evidence and name the concrete next action; do not call unavailable planning tools.`;
|
|
583828
583907
|
return [
|
|
583829
583908
|
`[REPEAT GATE] Exact repeat #${hits} of ${toolName}(${argPreview}).`,
|
|
583830
583909
|
`You ALREADY have this result — re-reading identical arguments cannot produce new information, so this call was NOT executed.`,
|
|
583831
583910
|
``,
|
|
583832
583911
|
`You are looping because progress tracking has drifted. Before any further redundant calls you MUST:`,
|
|
583833
|
-
|
|
583912
|
+
progressStep,
|
|
583834
583913
|
` 2. Then take a CONCRETE action on the evidence you already have: edit/write the implicated file, run a verification command, or call task_complete with evidence.`,
|
|
583835
583914
|
``,
|
|
583836
583915
|
`Do NOT repeat this exact call. If you believe state changed, perform the concrete change first, then retry with distinct evidence.`
|
|
@@ -583847,7 +583926,7 @@ ${sections.join("\n")}` : sections.join("\n");
|
|
|
583847
583926
|
"This call was not executed again, and the cached payload was not re-emitted because repeating it bloats the model context.",
|
|
583848
583927
|
summary,
|
|
583849
583928
|
"",
|
|
583850
|
-
"Required next action: use the active evidence frame/tool cache and take a concrete next step: edit/write, run verification, update todos with changed state, or task_complete with evidence.",
|
|
583929
|
+
this._todoWriteAvailable() ? "Required next action: use the active evidence frame/tool cache and take a concrete next step: edit/write, run verification, update todos with changed state, or task_complete with evidence." : "Required next action: use the active evidence frame/tool cache and take a concrete next step: edit/write, run verification, or task_complete with evidence.",
|
|
583851
583930
|
"If you need different information, use a distinct offset/limit/query. For broad multi-file discovery, use file_explore, grep_search, fanout_explore, or full_sub_agent instead of repeating this call."
|
|
583852
583931
|
].join("\n");
|
|
583853
583932
|
}
|
|
@@ -587683,7 +587762,7 @@ ${_staleSamples.join("\n")}` : ``,
|
|
|
587683
587762
|
}
|
|
587684
587763
|
}
|
|
587685
587764
|
const turnTier = this.options.modelTier ?? "large";
|
|
587686
|
-
if (turn === 0 && !this.options.disableTodoPlanningNudges && (turnTier === "small" || turnTier === "medium")) {
|
|
587765
|
+
if (turn === 0 && !this.options.disableTodoPlanningNudges && this._todoWriteAvailable() && (turnTier === "small" || turnTier === "medium")) {
|
|
587687
587766
|
const goal = this._taskState.goal || "";
|
|
587688
587767
|
const substantiveGoal = goal.replace(/\b(?:then\s+)?call\s+task_complete\b[^.?!;]*/gi, "").replace(/\b(?:observe|report|summarize|finish|complete)\b[^.?!;]*/gi, "");
|
|
587689
587768
|
const wordCount2 = substantiveGoal.split(/\s+/).filter(Boolean).length;
|
|
@@ -587796,7 +587875,7 @@ ${top.map((t2) => `- ${t2.name}: ${t2.desc}`).join("\n")}`);
|
|
|
587796
587875
|
const isReadTask = /\bread\b|\bshow\b|\btell me\b|\bwhat is\b/i.test(taskGoal);
|
|
587797
587876
|
const hints = [];
|
|
587798
587877
|
if (isSimpleTask) {
|
|
587799
|
-
hints.push("This is a simple task — if it needs only ONE substantive tool call, skip todo_write and call the tool directly, then task_complete. Do not count reporting, observing output, or task_complete as planning steps. If it needs 2+ substantive work steps, use todo_write to plan.");
|
|
587878
|
+
hints.push(this._todoWriteAvailable() ? "This is a simple task — if it needs only ONE substantive tool call, skip todo_write and call the tool directly, then task_complete. Do not count reporting, observing output, or task_complete as planning steps. If it needs 2+ substantive work steps, use todo_write to plan." : "This is a simple task — if it needs only ONE substantive tool call, call the tool directly, then task_complete. Do not count reporting, observing output, or task_complete as planning steps.");
|
|
587800
587879
|
}
|
|
587801
587880
|
if (isSearchTask) {
|
|
587802
587881
|
hints.push("SEARCH STRATEGY: Use grep_search to find what you need FIRST, THEN file_read only the specific file and lines. Do NOT read entire files hoping to find something.");
|
|
@@ -588532,7 +588611,7 @@ ${memoryLines.join("\n")}`
|
|
|
588532
588611
|
`Best practice for this model tier: emit at most ${_responseCap} tool calls per turn.`,
|
|
588533
588612
|
`Observe the results of the first ${_responseCap}, then plan the next batch in the NEXT turn.`,
|
|
588534
588613
|
`Smaller batches let cache/dedup/progress-gate/failure signals reach you BEFORE you commit to more work.`,
|
|
588535
|
-
`Use todo_write between batches to track which items are done.`
|
|
588614
|
+
this._todoWriteAvailable() ? `Use todo_write between batches to track which items are done.` : `Track progress internally between batches; do not call unavailable planning tools.`
|
|
588536
588615
|
].join("\n")
|
|
588537
588616
|
});
|
|
588538
588617
|
}
|
|
@@ -588873,7 +588952,7 @@ Corrective action: try a different approach first: read relevant files, adjust a
|
|
|
588873
588952
|
turn,
|
|
588874
588953
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
588875
588954
|
});
|
|
588876
|
-
const budgetMsg = `[BUDGET EXHAUSTED] You have used all ${toolBudgets[tc.name]} allowed ${tc.name} calls for the current phase. You ALREADY have enough information from previous calls. DO NOT try to call ${tc.name} again — it will be blocked. If your todo list shows more phases pending: mark the current phase completed via todo_write so a new budget allowance kicks in. If all phases are done: call task_complete with your final summary.`;
|
|
588955
|
+
const budgetMsg = `[BUDGET EXHAUSTED] You have used all ${toolBudgets[tc.name]} allowed ${tc.name} calls for the current phase. You ALREADY have enough information from previous calls. DO NOT try to call ${tc.name} again — it will be blocked. ` + (this._todoWriteAvailable() ? `If your todo list shows more phases pending: mark the current phase completed via todo_write so a new budget allowance kicks in. ` : `If more phases remain, continue with a different available tool instead of repeating the exhausted one. `) + `If all phases are done: call task_complete with your final summary.`;
|
|
588877
588956
|
this.emit({
|
|
588878
588957
|
type: "tool_result",
|
|
588879
588958
|
toolName: tc.name,
|
|
@@ -590559,14 +590638,15 @@ Respond with EXACTLY this structure before your next tool call:
|
|
|
590559
590638
|
}
|
|
590560
590639
|
if (!_prior && !this._opaqueErrorHintInjected.has(_refStem) && _entry.subject == null && (categorizeError(_refErr) === "unknown" || _refErr.length > 100)) {
|
|
590561
590640
|
this._opaqueErrorHintInjected.add(_refStem);
|
|
590641
|
+
const todoWriteUnavailable = tc.name === "todo_write" && /Unknown tool/i.test(_entry.wentWrong);
|
|
590562
590642
|
const opaqueMessage = tc.name === "todo_write" ? [
|
|
590563
590643
|
`[PLANNING TOOL RECOVERY — todo_write failed before updating the visible checklist.]`,
|
|
590564
590644
|
``,
|
|
590565
590645
|
`Tool: ${tc.name}`,
|
|
590566
590646
|
`Error: "${_entry.wentWrong}"`,
|
|
590567
590647
|
``,
|
|
590568
|
-
`This is a recoverable planning-tool argument issue, not a local code or dependency failure.`,
|
|
590569
|
-
`Correct the todo_write payload if a visible checklist is still needed; otherwise continue with the first substantive task from the attempted plan.`,
|
|
590648
|
+
todoWriteUnavailable ? `todo_write is not registered in this tool surface. Do not retry it; continue using the available tools and call task_complete with evidence when done.` : `This is a recoverable planning-tool argument issue, not a local code or dependency failure.`,
|
|
590649
|
+
todoWriteUnavailable ? `Use the attempted checklist only as private state; do not let missing bookkeeping block substantive work.` : `Correct the todo_write payload if a visible checklist is still needed; otherwise continue with the first substantive task from the attempted plan.`,
|
|
590570
590650
|
`Do not pivot to broad shell discovery or code edits solely because todo_write failed.`,
|
|
590571
590651
|
``,
|
|
590572
590652
|
this._renderLocalFailureNudge(turn)
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omnius",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.462",
|
|
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.462",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"image-to-ascii"
|
|
12
12
|
],
|
package/package.json
CHANGED