@dreb/coding-agent 2.30.0 → 2.31.0
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/README.md +12 -1
- package/dist/core/agent-session.d.ts +16 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +58 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/nested-context.d.ts +60 -0
- package/dist/core/nested-context.d.ts.map +1 -0
- package/dist/core/nested-context.js +276 -0
- package/dist/core/nested-context.js.map +1 -0
- package/dist/core/resource-loader.d.ts +5 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +12 -12
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/settings-manager.d.ts +10 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +11 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/modes/interactive/components/copy-selector.d.ts +3 -3
- package/dist/modes/interactive/components/copy-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/copy-selector.js +4 -5
- package/dist/modes/interactive/components/copy-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +10 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +29 -13
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +47 -10
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/message-text.d.ts +12 -0
- package/dist/utils/message-text.d.ts.map +1 -1
- package/dist/utils/message-text.js +31 -19
- package/dist/utils/message-text.js.map +1 -1
- package/docs/settings.md +18 -0
- package/package.json +1 -1
|
@@ -30,7 +30,7 @@ import { getChangelogPath, getNewEntries, parseChangelog } from "../../utils/cha
|
|
|
30
30
|
import { copyToClipboard } from "../../utils/clipboard.js";
|
|
31
31
|
import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
|
|
32
32
|
import { parseGitUrl } from "../../utils/git.js";
|
|
33
|
-
import { extractCopyableText, getMessagePreview, getMessageRoleLabel } from "../../utils/message-text.js";
|
|
33
|
+
import { extractCopyableText, extractThinkingText, getMessagePreview, getMessageRoleLabel, toSingleLinePreview, } from "../../utils/message-text.js";
|
|
34
34
|
import { ensureTool } from "../../utils/tools-manager.js";
|
|
35
35
|
import { ArminComponent } from "./components/armin.js";
|
|
36
36
|
import { AssistantMessageComponent } from "./components/assistant-message.js";
|
|
@@ -3103,6 +3103,7 @@ export class InteractiveMode {
|
|
|
3103
3103
|
editorPaddingX: this.settingsManager.getEditorPaddingX(),
|
|
3104
3104
|
autocompleteMaxVisible: this.settingsManager.getAutocompleteMaxVisible(),
|
|
3105
3105
|
quietStartup: this.settingsManager.getQuietStartup(),
|
|
3106
|
+
autoLoadNestedContext: this.settingsManager.getAutoLoadNestedContext(),
|
|
3106
3107
|
agentModels: this.settingsManager.getAgentModels(),
|
|
3107
3108
|
agentNames: agentNames,
|
|
3108
3109
|
availableModelIds,
|
|
@@ -3111,6 +3112,9 @@ export class InteractiveMode {
|
|
|
3111
3112
|
this.session.setAutoCompactionEnabled(enabled);
|
|
3112
3113
|
this.footer.setAutoCompactEnabled(enabled);
|
|
3113
3114
|
},
|
|
3115
|
+
onAutoLoadNestedContextChange: (enabled) => {
|
|
3116
|
+
this.settingsManager.setAutoLoadNestedContext(enabled);
|
|
3117
|
+
},
|
|
3114
3118
|
onShowImagesChange: (enabled) => {
|
|
3115
3119
|
this.settingsManager.setShowImages(enabled);
|
|
3116
3120
|
for (const child of this.committedChatContainer.children) {
|
|
@@ -3833,12 +3837,26 @@ export class InteractiveMode {
|
|
|
3833
3837
|
this.showStatus("No messages to copy");
|
|
3834
3838
|
return;
|
|
3835
3839
|
}
|
|
3836
|
-
// Build items from session messages
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3840
|
+
// Build items from session messages. Each assistant message that carries
|
|
3841
|
+
// thinking gets an extra "Thinking" row listed directly ABOVE its message
|
|
3842
|
+
// (matching the TUI's thinking-above-answer presentation), so when both are
|
|
3843
|
+
// selected the reasoning lands at the top of the combined copy.
|
|
3844
|
+
const items = [];
|
|
3845
|
+
for (const msg of messages) {
|
|
3846
|
+
const thinking = extractThinkingText(msg);
|
|
3847
|
+
if (thinking) {
|
|
3848
|
+
items.push({
|
|
3849
|
+
roleLabel: "Thinking",
|
|
3850
|
+
preview: toSingleLinePreview(thinking),
|
|
3851
|
+
text: thinking,
|
|
3852
|
+
});
|
|
3853
|
+
}
|
|
3854
|
+
items.push({
|
|
3855
|
+
roleLabel: getMessageRoleLabel(msg),
|
|
3856
|
+
preview: getMessagePreview(msg),
|
|
3857
|
+
text: extractCopyableText(msg),
|
|
3858
|
+
});
|
|
3859
|
+
}
|
|
3842
3860
|
// Hide buddy while selector is open to free vertical space
|
|
3843
3861
|
const hadBuddy = this.buddyComponent !== null;
|
|
3844
3862
|
if (hadBuddy) {
|
|
@@ -3851,20 +3869,18 @@ export class InteractiveMode {
|
|
|
3851
3869
|
const overhead = 12;
|
|
3852
3870
|
const maxVisible = Math.max(3, Math.min(15, terminalRows - overhead));
|
|
3853
3871
|
this.showSelector((done) => {
|
|
3854
|
-
const selector = new CopySelectorComponent(items, async (
|
|
3872
|
+
const selector = new CopySelectorComponent(items, async (selectedPositions) => {
|
|
3855
3873
|
done();
|
|
3856
3874
|
// Restore buddy
|
|
3857
3875
|
if (hadBuddy)
|
|
3858
3876
|
this.renderWidgets();
|
|
3859
3877
|
this.ui.requestRender();
|
|
3860
|
-
if (
|
|
3878
|
+
if (selectedPositions.length === 0) {
|
|
3861
3879
|
this.showWarning("No messages selected");
|
|
3862
3880
|
return;
|
|
3863
3881
|
}
|
|
3864
|
-
// Extract text from selected
|
|
3865
|
-
const selectedTexts =
|
|
3866
|
-
.map((i) => extractCopyableText(messages[i]))
|
|
3867
|
-
.filter((text) => text.length > 0);
|
|
3882
|
+
// Extract pre-built text from selected rows in chronological (list) order
|
|
3883
|
+
const selectedTexts = selectedPositions.map((pos) => items[pos].text).filter((text) => text.length > 0);
|
|
3868
3884
|
if (selectedTexts.length === 0) {
|
|
3869
3885
|
this.showWarning("Selected messages have no copyable text");
|
|
3870
3886
|
return;
|