@probelabs/probe 0.6.0-rc246 → 0.6.0-rc248
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/bin/binaries/probe-v0.6.0-rc248-aarch64-apple-darwin.tar.gz +0 -0
- package/bin/binaries/probe-v0.6.0-rc248-aarch64-unknown-linux-musl.tar.gz +0 -0
- package/bin/binaries/probe-v0.6.0-rc248-x86_64-apple-darwin.tar.gz +0 -0
- package/bin/binaries/probe-v0.6.0-rc248-x86_64-pc-windows-msvc.zip +0 -0
- package/bin/binaries/probe-v0.6.0-rc248-x86_64-unknown-linux-musl.tar.gz +0 -0
- package/build/agent/ProbeAgent.js +31 -7
- package/build/agent/index.js +20 -3
- package/build/tools/executePlan.js +3 -0
- package/cjs/agent/ProbeAgent.cjs +7474 -9776
- package/cjs/index.cjs +7477 -9779
- package/package.json +1 -1
- package/src/agent/ProbeAgent.js +31 -7
- package/src/tools/executePlan.js +3 -0
- package/bin/binaries/probe-v0.6.0-rc246-aarch64-apple-darwin.tar.gz +0 -0
- package/bin/binaries/probe-v0.6.0-rc246-aarch64-unknown-linux-musl.tar.gz +0 -0
- package/bin/binaries/probe-v0.6.0-rc246-x86_64-apple-darwin.tar.gz +0 -0
- package/bin/binaries/probe-v0.6.0-rc246-x86_64-pc-windows-msvc.zip +0 -0
- package/bin/binaries/probe-v0.6.0-rc246-x86_64-unknown-linux-musl.tar.gz +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
validateAndFixMermaidResponse,
|
|
86
86
|
tryAutoWrapForSimpleSchema
|
|
87
87
|
} from './schemaUtils.js';
|
|
88
|
-
import { removeThinkingTags } from './xmlParsingUtils.js';
|
|
88
|
+
import { removeThinkingTags, extractThinkingContent } from './xmlParsingUtils.js';
|
|
89
89
|
import { predefinedPrompts } from './shared/prompts.js';
|
|
90
90
|
import {
|
|
91
91
|
MCPXmlBridge,
|
|
@@ -2904,10 +2904,11 @@ Follow these instructions carefully:
|
|
|
2904
2904
|
// Track initial history length for storage
|
|
2905
2905
|
const oldHistoryLength = this.history.length;
|
|
2906
2906
|
|
|
2907
|
-
// Reset output buffer for this answer() call — but NOT during
|
|
2908
|
-
//
|
|
2909
|
-
//
|
|
2910
|
-
|
|
2907
|
+
// Reset output buffer for this answer() call — but NOT during recursive calls.
|
|
2908
|
+
// _schemaFormatted: recursive call to fix JSON formatting
|
|
2909
|
+
// _completionPromptProcessed: recursive call for completionPrompt follow-up
|
|
2910
|
+
// Both must preserve the output buffer so the parent call can append it.
|
|
2911
|
+
if (this._outputBuffer && !options?._schemaFormatted && !options?._completionPromptProcessed) {
|
|
2911
2912
|
this._outputBuffer.items = [];
|
|
2912
2913
|
}
|
|
2913
2914
|
|
|
@@ -3554,8 +3555,25 @@ Follow these instructions carefully:
|
|
|
3554
3555
|
continue; // Don't use broken response, continue the loop
|
|
3555
3556
|
}
|
|
3556
3557
|
|
|
3557
|
-
|
|
3558
|
-
|
|
3558
|
+
// Pre-strip thinking tags to avoid losing content at final cleanup stage
|
|
3559
|
+
const strippedContent = removeThinkingTags(prevContent);
|
|
3560
|
+
if (strippedContent.length > 50) {
|
|
3561
|
+
// Enough content outside thinking tags — use stripped version directly
|
|
3562
|
+
finalResult = strippedContent;
|
|
3563
|
+
if (this.debug) console.log(`[DEBUG] Using previous response (thinking-stripped) as completion: ${finalResult.substring(0, 100)}...`);
|
|
3564
|
+
} else {
|
|
3565
|
+
// Content was mostly/entirely inside thinking tags.
|
|
3566
|
+
// Extract thinking content and use it as the actual answer.
|
|
3567
|
+
const thinkingContent = extractThinkingContent(prevContent);
|
|
3568
|
+
if (thinkingContent && thinkingContent.length > 50) {
|
|
3569
|
+
finalResult = thinkingContent;
|
|
3570
|
+
if (this.debug) console.log(`[DEBUG] Previous response was mostly in thinking tags — using thinking content as completion: ${finalResult.substring(0, 100)}...`);
|
|
3571
|
+
} else {
|
|
3572
|
+
// Neither stripped nor thinking content is substantive — use raw as fallback
|
|
3573
|
+
finalResult = prevContent;
|
|
3574
|
+
if (this.debug) console.log(`[DEBUG] Using previous response as completion (raw): ${finalResult.substring(0, 100)}...`);
|
|
3575
|
+
}
|
|
3576
|
+
}
|
|
3559
3577
|
} else {
|
|
3560
3578
|
finalResult = 'Error: No previous response found to use as completion.';
|
|
3561
3579
|
if (this.debug) console.log(`[DEBUG] No suitable previous response found for attempt_complete shorthand`);
|
|
@@ -4296,10 +4314,16 @@ After reviewing, provide your final answer using attempt_completion.`;
|
|
|
4296
4314
|
|
|
4297
4315
|
// Make a follow-up call with the completion prompt
|
|
4298
4316
|
// Pass _completionPromptProcessed to prevent infinite loops
|
|
4317
|
+
// Save output buffer — the recursive answer() must not destroy DSL output() content
|
|
4318
|
+
const savedOutputItems = this._outputBuffer ? [...this._outputBuffer.items] : [];
|
|
4299
4319
|
const completionResult = await this.answer(completionPromptMessage, [], {
|
|
4300
4320
|
...options,
|
|
4301
4321
|
_completionPromptProcessed: true
|
|
4302
4322
|
});
|
|
4323
|
+
// Restore output buffer so the parent call can append it to the final result
|
|
4324
|
+
if (this._outputBuffer) {
|
|
4325
|
+
this._outputBuffer.items = savedOutputItems;
|
|
4326
|
+
}
|
|
4303
4327
|
|
|
4304
4328
|
// Update finalResult with the result from the completion prompt
|
|
4305
4329
|
finalResult = completionResult;
|
package/build/agent/index.js
CHANGED
|
@@ -29346,6 +29346,7 @@ ${RAW_OUTPUT_END}`;
|
|
|
29346
29346
|
output += `
|
|
29347
29347
|
|
|
29348
29348
|
[The above raw output (${rawContent.length} chars) will be passed directly to the final response. Do NOT repeat, summarize, or modify it.]`;
|
|
29349
|
+
outputBuffer.items = [];
|
|
29349
29350
|
}
|
|
29350
29351
|
return output;
|
|
29351
29352
|
}
|
|
@@ -83496,7 +83497,7 @@ You are working with a workspace. Available paths: ${workspaceDesc}
|
|
|
83496
83497
|
}
|
|
83497
83498
|
try {
|
|
83498
83499
|
const oldHistoryLength = this.history.length;
|
|
83499
|
-
if (this._outputBuffer && !options?._schemaFormatted) {
|
|
83500
|
+
if (this._outputBuffer && !options?._schemaFormatted && !options?._completionPromptProcessed) {
|
|
83500
83501
|
this._outputBuffer.items = [];
|
|
83501
83502
|
}
|
|
83502
83503
|
if (this.enableTasks) {
|
|
@@ -83941,8 +83942,20 @@ You are working with a workspace. Available paths: ${workspaceDesc}
|
|
|
83941
83942
|
completionAttempted = false;
|
|
83942
83943
|
continue;
|
|
83943
83944
|
}
|
|
83944
|
-
|
|
83945
|
-
if (
|
|
83945
|
+
const strippedContent = removeThinkingTags(prevContent);
|
|
83946
|
+
if (strippedContent.length > 50) {
|
|
83947
|
+
finalResult = strippedContent;
|
|
83948
|
+
if (this.debug) console.log(`[DEBUG] Using previous response (thinking-stripped) as completion: ${finalResult.substring(0, 100)}...`);
|
|
83949
|
+
} else {
|
|
83950
|
+
const thinkingContent = extractThinkingContent(prevContent);
|
|
83951
|
+
if (thinkingContent && thinkingContent.length > 50) {
|
|
83952
|
+
finalResult = thinkingContent;
|
|
83953
|
+
if (this.debug) console.log(`[DEBUG] Previous response was mostly in thinking tags \u2014 using thinking content as completion: ${finalResult.substring(0, 100)}...`);
|
|
83954
|
+
} else {
|
|
83955
|
+
finalResult = prevContent;
|
|
83956
|
+
if (this.debug) console.log(`[DEBUG] Using previous response as completion (raw): ${finalResult.substring(0, 100)}...`);
|
|
83957
|
+
}
|
|
83958
|
+
}
|
|
83946
83959
|
} else {
|
|
83947
83960
|
finalResult = "Error: No previous response found to use as completion.";
|
|
83948
83961
|
if (this.debug) console.log(`[DEBUG] No suitable previous response found for attempt_complete shorthand`);
|
|
@@ -84514,10 +84527,14 @@ ${finalResult}
|
|
|
84514
84527
|
</result>
|
|
84515
84528
|
|
|
84516
84529
|
After reviewing, provide your final answer using attempt_completion.`;
|
|
84530
|
+
const savedOutputItems = this._outputBuffer ? [...this._outputBuffer.items] : [];
|
|
84517
84531
|
const completionResult = await this.answer(completionPromptMessage, [], {
|
|
84518
84532
|
...options,
|
|
84519
84533
|
_completionPromptProcessed: true
|
|
84520
84534
|
});
|
|
84535
|
+
if (this._outputBuffer) {
|
|
84536
|
+
this._outputBuffer.items = savedOutputItems;
|
|
84537
|
+
}
|
|
84521
84538
|
finalResult = completionResult;
|
|
84522
84539
|
if (this.debug) {
|
|
84523
84540
|
console.log(`[DEBUG] Completion prompt finished. New result length: ${finalResult?.length || 0}`);
|
|
@@ -525,6 +525,9 @@ function formatSuccess(result, description, attempt, outputBuffer) {
|
|
|
525
525
|
const rawContent = outputBuffer.items.join('\n');
|
|
526
526
|
output += `\n\n${RAW_OUTPUT_START}\n${rawContent}\n${RAW_OUTPUT_END}`;
|
|
527
527
|
output += `\n\n[The above raw output (${rawContent.length} chars) will be passed directly to the final response. Do NOT repeat, summarize, or modify it.]`;
|
|
528
|
+
// Clear the buffer after reading to prevent re-wrapping on subsequent execute_plan calls
|
|
529
|
+
// Without this, extractRawOutputBlocks pushes content back to buffer, causing exponential duplication
|
|
530
|
+
outputBuffer.items = [];
|
|
528
531
|
}
|
|
529
532
|
|
|
530
533
|
return output;
|