@design.estate/dees-catalog 3.104.0 → 4.0.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/dist_bundle/bundle.js +65 -24
- package/dist_ts_web/00_commitinfo_data.js +2 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +2 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +15 -5
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js +22 -12
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +63 -18
- package/package.json +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +1 -3
- package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts +21 -11
- package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +55 -9
package/dist_bundle/bundle.js
CHANGED
|
@@ -172563,19 +172563,29 @@ var demoFunc54 = /* @__PURE__ */ __name(() => b2`
|
|
|
172563
172563
|
</style>
|
|
172564
172564
|
<div class="reasoningDemo">
|
|
172565
172565
|
<dees-harness-reasoning
|
|
172566
|
-
.
|
|
172567
|
-
|
|
172568
|
-
|
|
172569
|
-
|
|
172570
|
-
|
|
172571
|
-
|
|
172566
|
+
.reasoningParts=${[
|
|
172567
|
+
{
|
|
172568
|
+
id: "r1",
|
|
172569
|
+
text: "Summarize the failing test before touching code.\nThe user wants a summary of the failing test. I should read the test output first, then check the assertion that failed and compare with the fixture data.",
|
|
172570
|
+
startedAt: Date.now() - 9200,
|
|
172571
|
+
endedAt: Date.now() - 5200
|
|
172572
|
+
},
|
|
172573
|
+
{
|
|
172574
|
+
id: "r2",
|
|
172575
|
+
text: "The fixture predates the schema change; regenerating it should settle both assertions.",
|
|
172576
|
+
startedAt: Date.now() - 5200,
|
|
172577
|
+
endedAt: Date.now() - 4100
|
|
172578
|
+
}
|
|
172579
|
+
]}
|
|
172572
172580
|
></dees-harness-reasoning>
|
|
172573
172581
|
<dees-harness-reasoning
|
|
172574
|
-
.
|
|
172575
|
-
|
|
172576
|
-
|
|
172577
|
-
|
|
172578
|
-
|
|
172582
|
+
.reasoningParts=${[
|
|
172583
|
+
{
|
|
172584
|
+
id: "r3",
|
|
172585
|
+
text: "Considering the tradeoffs between the two migration paths",
|
|
172586
|
+
startedAt: Date.now() - 1500
|
|
172587
|
+
}
|
|
172588
|
+
]}
|
|
172579
172589
|
></dees-harness-reasoning>
|
|
172580
172590
|
</div>
|
|
172581
172591
|
`, "demoFunc");
|
|
@@ -172584,22 +172594,38 @@ var demoFunc54 = /* @__PURE__ */ __name(() => b2`
|
|
|
172584
172594
|
init_dist_ts25();
|
|
172585
172595
|
init_theme();
|
|
172586
172596
|
init_dees_icon();
|
|
172587
|
-
var _expanded_dec,
|
|
172597
|
+
var _expanded_dec, _reasoningParts_dec, _a76, _DeesHarnessReasoning_decorators, _init77, _reasoningParts, _expanded;
|
|
172588
172598
|
_DeesHarnessReasoning_decorators = [customElement("dees-harness-reasoning")];
|
|
172589
|
-
var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a76 = DeesElement,
|
|
172599
|
+
var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a76 = DeesElement, _reasoningParts_dec = [n5({ attribute: false })], _expanded_dec = [r5()], _a76) {
|
|
172590
172600
|
constructor() {
|
|
172591
172601
|
super(...arguments);
|
|
172592
|
-
__privateAdd(this,
|
|
172602
|
+
__privateAdd(this, _reasoningParts, __runInitializers(_init77, 8, this, [])), __runInitializers(_init77, 11, this);
|
|
172593
172603
|
__privateAdd(this, _expanded, __runInitializers(_init77, 12, this)), __runInitializers(_init77, 15, this);
|
|
172594
172604
|
}
|
|
172595
172605
|
get isStreaming() {
|
|
172596
|
-
return Boolean(
|
|
172606
|
+
return this.reasoningParts.some((part) => Boolean(part.startedAt) && !part.endedAt);
|
|
172597
172607
|
}
|
|
172598
172608
|
get isOpen() {
|
|
172599
172609
|
return this.expanded ?? this.isStreaming;
|
|
172600
172610
|
}
|
|
172611
|
+
/** All parts joined into the one full trace the expanded body shows. */
|
|
172612
|
+
get fullText() {
|
|
172613
|
+
return this.reasoningParts.map((part) => part.text.trim()).filter((text8) => text8.length > 0).join("\n\n");
|
|
172614
|
+
}
|
|
172615
|
+
/**
|
|
172616
|
+
* One line for the collapsed state: the latest line while streaming (live
|
|
172617
|
+
* progress), the first line once finished (the trace's own summary).
|
|
172618
|
+
*/
|
|
172619
|
+
get previewLine() {
|
|
172620
|
+
const lines = this.fullText.split("\n").map((line) => line.trim()).filter((line) => line.length > 0);
|
|
172621
|
+
if (lines.length === 0) return "";
|
|
172622
|
+
return this.isStreaming ? lines[lines.length - 1] : lines[0];
|
|
172623
|
+
}
|
|
172601
172624
|
render() {
|
|
172602
|
-
const
|
|
172625
|
+
const startedAt = this.reasoningParts.find((part) => part.startedAt)?.startedAt;
|
|
172626
|
+
const endedAt = this.isStreaming ? void 0 : [...this.reasoningParts].reverse().find((part) => part.endedAt)?.endedAt;
|
|
172627
|
+
const duration = harnessFormatDuration(startedAt, endedAt);
|
|
172628
|
+
const preview = this.previewLine;
|
|
172603
172629
|
return b2`
|
|
172604
172630
|
<div class="reasoning">
|
|
172605
172631
|
<button
|
|
@@ -172613,14 +172639,15 @@ var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a76 = DeesElem
|
|
|
172613
172639
|
<span class="chevron ${this.isOpen ? "open" : ""}">
|
|
172614
172640
|
<dees-icon icon="lucide:ChevronRight" iconSize="12"></dees-icon>
|
|
172615
172641
|
</span>
|
|
172616
|
-
<span class
|
|
172642
|
+
<span class="label ${this.isStreaming ? "thinkingDots" : ""}">
|
|
172617
172643
|
${this.isStreaming ? "Thinking" : "Thought"}
|
|
172618
172644
|
</span>
|
|
172645
|
+
${!this.isOpen && preview ? b2`<span class="preview">${preview}</span>` : ""}
|
|
172619
172646
|
${duration ? b2`<span class="duration">${duration}</span>` : ""}
|
|
172620
172647
|
</button>
|
|
172621
172648
|
<div class="bodyWrap ${this.isOpen ? "open" : ""}" aria-hidden=${this.isOpen ? "false" : "true"}>
|
|
172622
172649
|
<div class="bodyClip">
|
|
172623
|
-
<pre class="body">${this.
|
|
172650
|
+
<pre class="body">${this.fullText || (this.isStreaming ? "Waiting for reasoning\u2026" : "No reasoning emitted.")}</pre>
|
|
172624
172651
|
</div>
|
|
172625
172652
|
</div>
|
|
172626
172653
|
</div>
|
|
@@ -172628,9 +172655,9 @@ var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a76 = DeesElem
|
|
|
172628
172655
|
}
|
|
172629
172656
|
};
|
|
172630
172657
|
_init77 = __decoratorStart(_a76);
|
|
172631
|
-
|
|
172658
|
+
_reasoningParts = new WeakMap();
|
|
172632
172659
|
_expanded = new WeakMap();
|
|
172633
|
-
__decorateElement(_init77, 4, "
|
|
172660
|
+
__decorateElement(_init77, 4, "reasoningParts", _reasoningParts_dec, _DeesHarnessReasoning, _reasoningParts);
|
|
172634
172661
|
__decorateElement(_init77, 4, "expanded", _expanded_dec, _DeesHarnessReasoning, _expanded);
|
|
172635
172662
|
_DeesHarnessReasoning = __decorateElement(_init77, 0, "DeesHarnessReasoning", _DeesHarnessReasoning_decorators, _DeesHarnessReasoning);
|
|
172636
172663
|
__name(_DeesHarnessReasoning, "DeesHarnessReasoning");
|
|
@@ -172715,6 +172742,7 @@ __publicField(_DeesHarnessReasoning, "styles", [
|
|
|
172715
172742
|
.chevron {
|
|
172716
172743
|
display: grid;
|
|
172717
172744
|
place-items: center;
|
|
172745
|
+
flex: 0 0 auto;
|
|
172718
172746
|
transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
|
|
172719
172747
|
}
|
|
172720
172748
|
|
|
@@ -172722,8 +172750,23 @@ __publicField(_DeesHarnessReasoning, "styles", [
|
|
|
172722
172750
|
transform: rotate(90deg);
|
|
172723
172751
|
}
|
|
172724
172752
|
|
|
172753
|
+
.label {
|
|
172754
|
+
flex: 0 0 auto;
|
|
172755
|
+
}
|
|
172756
|
+
|
|
172757
|
+
.preview {
|
|
172758
|
+
min-width: 0;
|
|
172759
|
+
overflow: hidden;
|
|
172760
|
+
text-overflow: ellipsis;
|
|
172761
|
+
white-space: nowrap;
|
|
172762
|
+
color: var(--dees-color-text-muted);
|
|
172763
|
+
font-weight: 400;
|
|
172764
|
+
font-style: italic;
|
|
172765
|
+
}
|
|
172766
|
+
|
|
172725
172767
|
.duration {
|
|
172726
172768
|
margin-left: auto;
|
|
172769
|
+
flex: 0 0 auto;
|
|
172727
172770
|
color: var(--dees-color-text-muted);
|
|
172728
172771
|
font-weight: 400;
|
|
172729
172772
|
}
|
|
@@ -173861,9 +173904,7 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a80 = DeesElement,
|
|
|
173861
173904
|
` : ""}
|
|
173862
173905
|
${message2.reasoning?.length ? b2`
|
|
173863
173906
|
<div class="reasoningStack">
|
|
173864
|
-
|
|
173865
|
-
(part) => b2`<dees-harness-reasoning .reasoningPart=${part}></dees-harness-reasoning>`
|
|
173866
|
-
)}
|
|
173907
|
+
<dees-harness-reasoning .reasoningParts=${message2.reasoning}></dees-harness-reasoning>
|
|
173867
173908
|
</div>
|
|
173868
173909
|
` : ""}
|
|
173869
173910
|
${message2.attachments?.length ? this.renderAttachments(message2.attachments) : ""}
|
|
@@ -198977,7 +199018,7 @@ init_group_runtime();
|
|
|
198977
199018
|
// ts_web/00_commitinfo_data.ts
|
|
198978
199019
|
var commitinfo = {
|
|
198979
199020
|
name: "@design.estate/dees-catalog",
|
|
198980
|
-
version: "
|
|
199021
|
+
version: "4.0.0",
|
|
198981
199022
|
description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
|
|
198982
199023
|
};
|
|
198983
199024
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '
|
|
6
|
+
version: '4.0.0',
|
|
7
7
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
|
|
@@ -402,7 +402,7 @@ let DeesHarnessMessage = (() => {
|
|
|
402
402
|
${message.reasoning?.length
|
|
403
403
|
? html `
|
|
404
404
|
<div class="reasoningStack">
|
|
405
|
-
|
|
405
|
+
<dees-harness-reasoning .reasoningParts=${message.reasoning}></dees-harness-reasoning>
|
|
406
406
|
</div>
|
|
407
407
|
`
|
|
408
408
|
: ''}
|
|
@@ -548,4 +548,4 @@ let DeesHarnessMessage = (() => {
|
|
|
548
548
|
return DeesHarnessMessage = _classThis;
|
|
549
549
|
})();
|
|
550
550
|
export { DeesHarnessMessage };
|
|
551
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlL2RlZXMtaGFybmVzcy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8scURBQXFELENBQUM7QUFDN0QsT0FBTyxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLDhDQUE4QyxDQUFDO0FBUXRELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0lBRVUsa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O21DQUloRCxR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
|
|
551
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlL2RlZXMtaGFybmVzcy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8scURBQXFELENBQUM7QUFDN0QsT0FBTyxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLDhDQUE4QyxDQUFDO0FBUXRELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0lBRVUsa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O21DQUloRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7b0NBRzlCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzt5Q0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2tEQUkzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7d0NBRzNCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt5Q0FROUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2dEQUc5QixLQUFLLEVBQUU7WUF2QlIsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUEwRTtZQUcxRiw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWlCO1lBR2xDLDRMQUFTLGFBQWEsNkJBQWIsYUFBYSxxR0FBa0I7WUFJeEMsdU5BQVMsc0JBQXNCLDZCQUF0QixzQkFBc0IsdUhBQWlCO1lBR2hELHlMQUFTLFlBQVksNkJBQVosWUFBWSxtR0FBNEQ7WUFRakYsNExBQVMsYUFBYSw2QkFBYixhQUFhLHFHQUFrQjtZQUd4QyxpTkFBUyxvQkFBb0IsNkJBQXBCLG9CQUFvQixtSEFBYztZQTdCN0MsNktBd2NDOzs7O1FBdmNRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUcxQywyRUFBb0MsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUM7UUFBMUYsSUFBUyxPQUFPLDZDQUEwRTtRQUExRixJQUFTLE9BQU8sbURBQTBFO1FBRzFGLG1JQUE2QixJQUFJLEdBQUM7UUFBbEMsSUFBUyxRQUFRLDhDQUFpQjtRQUFsQyxJQUFTLFFBQVEsb0RBQWlCO1FBR2xDLDhJQUFrQyxLQUFLLEdBQUM7UUFBeEMsSUFBUyxhQUFhLG1EQUFrQjtRQUF4QyxJQUFTLGFBQWEseURBQWtCO1FBSXhDLHFLQUEyQyxJQUFJLEdBQUM7UUFGaEQsd0VBQXdFO1FBRXhFLElBQVMsc0JBQXNCLDREQUFpQjtRQUFoRCxJQUFTLHNCQUFzQixrRUFBaUI7UUFHaEQsMEpBQWlELHVCQUF1QixDQUFDLE9BQU8sR0FBQztRQUFqRixJQUFTLFlBQVksa0RBQTREO1FBQWpGLElBQVMsWUFBWSx3REFBNEQ7UUFRakYsa0pBQWtDLEtBQUssR0FBQztRQU54Qzs7OztXQUlHO1FBRUgsSUFBUyxhQUFhLG1EQUFrQjtRQUF4QyxJQUFTLGFBQWEseURBQWtCO1FBR3hDLGlLQUF3QyxFQUFFLEdBQUM7UUFBM0MsSUFBUyxvQkFBb0IsMERBQWM7UUFBM0MsSUFBUyxvQkFBb0IsZ0VBQWM7UUFFcEMsTUFBTSxDQUFDLE1BQU0sR0FBRztZQUNyQixrQkFBa0I7WUFDbEIsVUFBVSxDQUFDLGFBQWE7WUFDeEIsY0FBYztZQUNkLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdMRjtZQUNELCtEQUErRDtZQUMvRCxtQkFBbUI7WUFDbkIsaUJBQWlCO1NBQ2xCLENBQUM7UUFFTSxrQkFBa0Isc0VBQUcsQ0FBQyxFQUFDO1FBQ3ZCLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsdUJBQXVCLEdBQXlDLElBQUksQ0FBQztRQUNyRSxXQUFXLEdBQW1CLElBQUksQ0FBQztRQUUzQyxJQUFXLGNBQWM7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7UUFDcEUsQ0FBQztRQUVELDZFQUE2RTtRQUU3RSxnRUFBZ0U7UUFDekQsZUFBZSxDQUFDLEtBQWE7WUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUVELHNEQUFzRDtRQUMvQyxvQkFBb0IsQ0FBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLFNBQWtCO1lBQzNFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNWLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUNwRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQix3RUFBd0U7WUFDeEUsS0FBSyxNQUFNLGdCQUFnQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDakcsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsQ0FBQztRQUNILENBQUM7UUFFRCx1Q0FBdUM7UUFDaEMsWUFBWSxDQUFDLE1BQWMsRUFBRSxPQUFnQjtZQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDbEYsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixLQUFLLE1BQU0sZ0JBQWdCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNqRyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsaUVBQWlFO1FBQzFELFNBQVMsQ0FBQyxLQUFxQixFQUFFLEtBQWM7WUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksS0FBSztnQkFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDdEMsSUFBSSxLQUFLO2dCQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCw0RUFBNEU7UUFFckUsTUFBTTtZQUNYLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDN0Isd0VBQXdFO1lBQ3hFLHVFQUF1RTtZQUN2RSxJQUNFLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTTttQkFDcEIsT0FBTyxDQUFDLFFBQVE7bUJBQ2hCLENBQUMsT0FBTyxDQUFDLElBQUk7bUJBQ2IsQ0FBQyxPQUFPLENBQUMsS0FBSzttQkFDZCxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTTttQkFDMUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFDL0IsQ0FBQztnQkFDRCxPQUFPLElBQUksQ0FBQTt3Q0FDdUIsT0FBTyxDQUFDLFFBQVEsa0JBQWtCLElBQUksQ0FBQyxZQUFZO09BQ3BGLENBQUM7WUFDSixDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekMsT0FBTyxJQUFJLENBQUE7NEJBQ2EsU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtVQUMvRCxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhO2dCQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFBOztrQkFFRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsMkJBQTJCLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtrQkFDekUsSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsU0FBUztvQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQSwyQkFBMkIseUJBQXlCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTO29CQUN0RixDQUFDLENBQUMsRUFBRTs7YUFFVDtnQkFDSCxDQUFDLENBQUMsRUFBRTtVQUNKLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTTtnQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQTs7MERBRTBDLE9BQU8sQ0FBQyxTQUFTOzthQUU5RDtnQkFDSCxDQUFDLENBQUMsRUFBRTtVQUNKLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1VBQzlFLE9BQU8sQ0FBQyxRQUFRO2dCQUNoQixDQUFDLENBQUMsSUFBSSxDQUFBLGlDQUFpQyxPQUFPLENBQUMsUUFBUSxrQkFBa0IsSUFBSSxDQUFDLFlBQVksNEJBQTRCO2dCQUN0SCxDQUFDLENBQUMsRUFBRTtVQUNKLElBQUksQ0FBQyxVQUFVLEVBQUU7VUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLDBCQUEwQixPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7VUFDeEUsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXO2dCQUMxQixDQUFDLENBQUMsSUFBSSxDQUFBOzt3QkFFUSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLFNBQVMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVzs7YUFFcEg7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUU7O0tBRVQsQ0FBQztRQUNKLENBQUM7UUFFTyxVQUFVO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsMkRBQTJELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSxFQUFFLENBQUM7WUFDdEcsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjO21CQUNwQyxJQUFJLENBQUMsb0JBQW9CO21CQUN6QixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUM7bUJBQ25ELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNwQyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixPQUFPLElBQUksQ0FBQTtxQ0FDb0IsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztVQUNoRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsOEJBQThCLENBQUMsQ0FBQyxDQUFDLEVBQUU7T0FDOUQsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQTsrQkFDZ0IsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsOEJBQThCLENBQUMsQ0FBQyxDQUFDLEVBQUU7S0FDcEcsQ0FBQztRQUNKLENBQUM7UUFFTyxpQkFBaUIsQ0FBQyxXQUFpQztZQUN6RCxPQUFPLElBQUksQ0FBQTs7VUFFTCxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVO29CQUNuRSxDQUFDLENBQUMsUUFBUSxVQUFVLENBQUMsU0FBUyxXQUFXLFVBQVUsQ0FBQyxVQUFVLEVBQUU7b0JBQ2hFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxJQUFJLENBQUE7O2dCQUVMLFFBQVE7b0JBQ1IsQ0FBQyxDQUFDLElBQUksQ0FBQSxvQ0FBb0MsUUFBUSxRQUFRLFVBQVUsQ0FBQyxJQUFJLEtBQUs7b0JBQzlFLENBQUMsQ0FBQyxJQUFJLENBQUEsZ0dBQWdHOztvREFFbEUsVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSTs7b0JBRWxFLFVBQVUsQ0FBQyxTQUFTLElBQUksTUFBTSxNQUFNLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7Ozs7V0FJN0gsQ0FBQztZQUNKLENBQUMsQ0FBQzs7S0FFTCxDQUFDO1FBQ0osQ0FBQztRQUVELDRFQUE0RTtRQUVyRSxZQUFZLENBQUMsaUJBQW1DO1lBQ3JELEtBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7UUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFtQztZQUN0RCxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Z0JBQUUsT0FBTztZQUN2RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxjQUFjO2dCQUFFLE9BQU87WUFDdEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQjtvQkFBRSxPQUFPO2dCQUN6QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDOUIsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRU8sc0JBQXNCO1lBQzVCLElBQUksSUFBSSxDQUFDLHVCQUF1QjtnQkFBRSxPQUFPO1lBQ3pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM3QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2dCQUNwQyxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRU8sS0FBSyxDQUFDLGFBQWE7WUFDekIsTUFBTSxLQUFLLEdBQUcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25GLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxrQkFBa0I7Z0JBQUUsT0FBTztZQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDO1FBRUQsNEVBQTRFO1FBQ3BFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUFhO1lBQzdDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQzdCLElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQWMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQ2hGLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2hGLENBQUM7WUFDRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsa0JBQWtCO2dCQUFFLE9BQU87WUFDOUMsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDO29CQUNILE1BQU0sV0FBVyxHQUFHLGFBQWE7d0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRTs0QkFDeEQsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7NEJBQzFCLGNBQWMsRUFBRSxJQUFJO3lCQUNyQixDQUFDLENBQUMsS0FBSzt3QkFDVixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ3hFLFdBQVcsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO29CQUNwQyxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBQzNDLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztnQkFDM0MsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRU0sS0FBSyxDQUFDLG9CQUFvQjtZQUMvQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2dCQUNqQyxZQUFZLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFDdEMsQ0FBQztZQUNELE1BQU0sS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDckMsQ0FBQzs7WUF2Y1UsdURBQWtCOzs7OztTQUFsQixrQkFBa0IifQ==
|
package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts
CHANGED
|
@@ -7,18 +7,28 @@ declare global {
|
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Reasoning ("thinking") disclosure for
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* Reasoning ("thinking") disclosure for a message's complete reasoning trace.
|
|
11
|
+
* Collapsed it shows a one-line summary — the trace's first line, or the
|
|
12
|
+
* latest line while streaming — and expanding reveals the FULL concatenated
|
|
13
|
+
* trace of every part in one flat body. Auto-opens while streaming (no
|
|
14
|
+
* endedAt on some part) unless the user has interacted; the user's
|
|
15
|
+
* expand/collapse choice wins afterwards and survives re-renders because it
|
|
16
|
+
* lives on this element, not in the parent's template.
|
|
14
17
|
*/
|
|
15
18
|
export declare class DeesHarnessReasoning extends DeesElement {
|
|
16
19
|
static demo: () => TemplateResult<1>;
|
|
17
20
|
static demoGroups: string[];
|
|
18
|
-
accessor
|
|
21
|
+
accessor reasoningParts: IHarnessReasoningPart[];
|
|
19
22
|
accessor expanded: boolean | undefined;
|
|
20
23
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
21
24
|
get isStreaming(): boolean;
|
|
22
25
|
get isOpen(): boolean;
|
|
26
|
+
/** All parts joined into the one full trace the expanded body shows. */
|
|
27
|
+
get fullText(): string;
|
|
28
|
+
/**
|
|
29
|
+
* One line for the collapsed state: the latest line while streaming (live
|
|
30
|
+
* progress), the first line once finished (the trace's own summary).
|
|
31
|
+
*/
|
|
32
|
+
get previewLine(): string;
|
|
23
33
|
render(): TemplateResult;
|
|
24
34
|
}
|
package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js
CHANGED
|
@@ -13,20 +13,30 @@ export const demoFunc = () => html `
|
|
|
13
13
|
</style>
|
|
14
14
|
<div class="reasoningDemo">
|
|
15
15
|
<dees-harness-reasoning
|
|
16
|
-
.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
.reasoningParts=${[
|
|
17
|
+
{
|
|
18
|
+
id: 'r1',
|
|
19
|
+
text: 'Summarize the failing test before touching code.\nThe user wants a summary of the failing test. I should read the test output first, then check the assertion that failed and compare with the fixture data.',
|
|
20
|
+
startedAt: Date.now() - 9200,
|
|
21
|
+
endedAt: Date.now() - 5200,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'r2',
|
|
25
|
+
text: 'The fixture predates the schema change; regenerating it should settle both assertions.',
|
|
26
|
+
startedAt: Date.now() - 5200,
|
|
27
|
+
endedAt: Date.now() - 4100,
|
|
28
|
+
},
|
|
29
|
+
]}
|
|
22
30
|
></dees-harness-reasoning>
|
|
23
31
|
<dees-harness-reasoning
|
|
24
|
-
.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
.reasoningParts=${[
|
|
33
|
+
{
|
|
34
|
+
id: 'r3',
|
|
35
|
+
text: 'Considering the tradeoffs between the two migration paths',
|
|
36
|
+
startedAt: Date.now() - 1500,
|
|
37
|
+
},
|
|
38
|
+
]}
|
|
29
39
|
></dees-harness-reasoning>
|
|
30
40
|
</div>
|
|
31
41
|
`;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXJlYXNvbmluZy5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtcmVhc29uaW5nL2RlZXMtaGFybmVzcy1yZWFzb25pbmcuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7d0JBY1Y7SUFDaEI7UUFDRSxFQUFFLEVBQUUsSUFBSTtRQUNSLElBQUksRUFBRSw4TUFBOE07UUFDcE4sU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJO1FBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtLQUMzQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLElBQUk7UUFDUixJQUFJLEVBQUUsd0ZBQXdGO1FBQzlGLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtRQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7S0FDM0I7Q0FDRjs7O3dCQUdpQjtJQUNoQjtRQUNFLEVBQUUsRUFBRSxJQUFJO1FBQ1IsSUFBSSxFQUFFLDJEQUEyRDtRQUNqRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7S0FDN0I7Q0FDRjs7O0NBR04sQ0FBQyJ9
|
package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js
CHANGED
|
@@ -38,10 +38,13 @@ import { themeDefaultStyles } from '../../00theme.js';
|
|
|
38
38
|
import { harnessFormatDuration } from '../harness.helpers.js';
|
|
39
39
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
40
40
|
/**
|
|
41
|
-
* Reasoning ("thinking") disclosure for
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
41
|
+
* Reasoning ("thinking") disclosure for a message's complete reasoning trace.
|
|
42
|
+
* Collapsed it shows a one-line summary — the trace's first line, or the
|
|
43
|
+
* latest line while streaming — and expanding reveals the FULL concatenated
|
|
44
|
+
* trace of every part in one flat body. Auto-opens while streaming (no
|
|
45
|
+
* endedAt on some part) unless the user has interacted; the user's
|
|
46
|
+
* expand/collapse choice wins afterwards and survives re-renders because it
|
|
47
|
+
* lives on this element, not in the parent's template.
|
|
45
48
|
*/
|
|
46
49
|
let DeesHarnessReasoning = (() => {
|
|
47
50
|
let _classDecorators = [customElement('dees-harness-reasoning')];
|
|
@@ -49,9 +52,9 @@ let DeesHarnessReasoning = (() => {
|
|
|
49
52
|
let _classExtraInitializers = [];
|
|
50
53
|
let _classThis;
|
|
51
54
|
let _classSuper = DeesElement;
|
|
52
|
-
let
|
|
53
|
-
let
|
|
54
|
-
let
|
|
55
|
+
let _reasoningParts_decorators;
|
|
56
|
+
let _reasoningParts_initializers = [];
|
|
57
|
+
let _reasoningParts_extraInitializers = [];
|
|
55
58
|
let _expanded_decorators;
|
|
56
59
|
let _expanded_initializers = [];
|
|
57
60
|
let _expanded_extraInitializers = [];
|
|
@@ -59,9 +62,9 @@ let DeesHarnessReasoning = (() => {
|
|
|
59
62
|
static { _classThis = this; }
|
|
60
63
|
static {
|
|
61
64
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
62
|
-
|
|
65
|
+
_reasoningParts_decorators = [property({ attribute: false })];
|
|
63
66
|
_expanded_decorators = [state()];
|
|
64
|
-
__esDecorate(this, null,
|
|
67
|
+
__esDecorate(this, null, _reasoningParts_decorators, { kind: "accessor", name: "reasoningParts", static: false, private: false, access: { has: obj => "reasoningParts" in obj, get: obj => obj.reasoningParts, set: (obj, value) => { obj.reasoningParts = value; } }, metadata: _metadata }, _reasoningParts_initializers, _reasoningParts_extraInitializers);
|
|
65
68
|
__esDecorate(this, null, _expanded_decorators, { kind: "accessor", name: "expanded", static: false, private: false, access: { has: obj => "expanded" in obj, get: obj => obj.expanded, set: (obj, value) => { obj.expanded = value; } }, metadata: _metadata }, _expanded_initializers, _expanded_extraInitializers);
|
|
66
69
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
67
70
|
DeesHarnessReasoning = _classThis = _classDescriptor.value;
|
|
@@ -69,10 +72,10 @@ let DeesHarnessReasoning = (() => {
|
|
|
69
72
|
}
|
|
70
73
|
static demo = demoFunc;
|
|
71
74
|
static demoGroups = ['Agent Chat'];
|
|
72
|
-
#
|
|
73
|
-
get
|
|
74
|
-
set
|
|
75
|
-
#expanded_accessor_storage = (__runInitializers(this,
|
|
75
|
+
#reasoningParts_accessor_storage = __runInitializers(this, _reasoningParts_initializers, []);
|
|
76
|
+
get reasoningParts() { return this.#reasoningParts_accessor_storage; }
|
|
77
|
+
set reasoningParts(value) { this.#reasoningParts_accessor_storage = value; }
|
|
78
|
+
#expanded_accessor_storage = (__runInitializers(this, _reasoningParts_extraInitializers), __runInitializers(this, _expanded_initializers, undefined));
|
|
76
79
|
get expanded() { return this.#expanded_accessor_storage; }
|
|
77
80
|
set expanded(value) { this.#expanded_accessor_storage = value; }
|
|
78
81
|
static styles = [
|
|
@@ -154,6 +157,7 @@ let DeesHarnessReasoning = (() => {
|
|
|
154
157
|
.chevron {
|
|
155
158
|
display: grid;
|
|
156
159
|
place-items: center;
|
|
160
|
+
flex: 0 0 auto;
|
|
157
161
|
transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
|
|
158
162
|
}
|
|
159
163
|
|
|
@@ -161,8 +165,23 @@ let DeesHarnessReasoning = (() => {
|
|
|
161
165
|
transform: rotate(90deg);
|
|
162
166
|
}
|
|
163
167
|
|
|
168
|
+
.label {
|
|
169
|
+
flex: 0 0 auto;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.preview {
|
|
173
|
+
min-width: 0;
|
|
174
|
+
overflow: hidden;
|
|
175
|
+
text-overflow: ellipsis;
|
|
176
|
+
white-space: nowrap;
|
|
177
|
+
color: var(--dees-color-text-muted);
|
|
178
|
+
font-weight: 400;
|
|
179
|
+
font-style: italic;
|
|
180
|
+
}
|
|
181
|
+
|
|
164
182
|
.duration {
|
|
165
183
|
margin-left: auto;
|
|
184
|
+
flex: 0 0 auto;
|
|
166
185
|
color: var(--dees-color-text-muted);
|
|
167
186
|
font-weight: 400;
|
|
168
187
|
}
|
|
@@ -194,13 +213,38 @@ let DeesHarnessReasoning = (() => {
|
|
|
194
213
|
`,
|
|
195
214
|
];
|
|
196
215
|
get isStreaming() {
|
|
197
|
-
return Boolean(
|
|
216
|
+
return this.reasoningParts.some((part) => Boolean(part.startedAt) && !part.endedAt);
|
|
198
217
|
}
|
|
199
218
|
get isOpen() {
|
|
200
219
|
return this.expanded ?? this.isStreaming;
|
|
201
220
|
}
|
|
221
|
+
/** All parts joined into the one full trace the expanded body shows. */
|
|
222
|
+
get fullText() {
|
|
223
|
+
return this.reasoningParts
|
|
224
|
+
.map((part) => part.text.trim())
|
|
225
|
+
.filter((text) => text.length > 0)
|
|
226
|
+
.join('\n\n');
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* One line for the collapsed state: the latest line while streaming (live
|
|
230
|
+
* progress), the first line once finished (the trace's own summary).
|
|
231
|
+
*/
|
|
232
|
+
get previewLine() {
|
|
233
|
+
const lines = this.fullText
|
|
234
|
+
.split('\n')
|
|
235
|
+
.map((line) => line.trim())
|
|
236
|
+
.filter((line) => line.length > 0);
|
|
237
|
+
if (lines.length === 0)
|
|
238
|
+
return '';
|
|
239
|
+
return this.isStreaming ? lines[lines.length - 1] : lines[0];
|
|
240
|
+
}
|
|
202
241
|
render() {
|
|
203
|
-
const
|
|
242
|
+
const startedAt = this.reasoningParts.find((part) => part.startedAt)?.startedAt;
|
|
243
|
+
const endedAt = this.isStreaming
|
|
244
|
+
? undefined
|
|
245
|
+
: [...this.reasoningParts].reverse().find((part) => part.endedAt)?.endedAt;
|
|
246
|
+
const duration = harnessFormatDuration(startedAt, endedAt);
|
|
247
|
+
const preview = this.previewLine;
|
|
204
248
|
return html `
|
|
205
249
|
<div class="reasoning">
|
|
206
250
|
<button
|
|
@@ -214,14 +258,15 @@ let DeesHarnessReasoning = (() => {
|
|
|
214
258
|
<span class="chevron ${this.isOpen ? 'open' : ''}">
|
|
215
259
|
<dees-icon icon="lucide:ChevronRight" iconSize="12"></dees-icon>
|
|
216
260
|
</span>
|
|
217
|
-
<span class
|
|
261
|
+
<span class="label ${this.isStreaming ? 'thinkingDots' : ''}">
|
|
218
262
|
${this.isStreaming ? 'Thinking' : 'Thought'}
|
|
219
263
|
</span>
|
|
264
|
+
${!this.isOpen && preview ? html `<span class="preview">${preview}</span>` : ''}
|
|
220
265
|
${duration ? html `<span class="duration">${duration}</span>` : ''}
|
|
221
266
|
</button>
|
|
222
267
|
<div class="bodyWrap ${this.isOpen ? 'open' : ''}" aria-hidden=${this.isOpen ? 'false' : 'true'}>
|
|
223
268
|
<div class="bodyClip">
|
|
224
|
-
<pre class="body">${this.
|
|
269
|
+
<pre class="body">${this.fullText || (this.isStreaming ? 'Waiting for reasoning…' : 'No reasoning emitted.')}</pre>
|
|
225
270
|
</div>
|
|
226
271
|
</div>
|
|
227
272
|
</div>
|
|
@@ -238,4 +283,4 @@ let DeesHarnessReasoning = (() => {
|
|
|
238
283
|
return DeesHarnessReasoning = _classThis;
|
|
239
284
|
})();
|
|
240
285
|
export { DeesHarnessReasoning };
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXJlYXNvbmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXJlYXNvbmluZy9kZWVzLWhhcm5lc3MtcmVhc29uaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7Ozs7O0dBUUc7SUFFVSxvQkFBb0I7NEJBRGhDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7O29DQUFuQixTQUFRLFdBQVc7Ozs7MENBSWxELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQ0FHOUIsS0FBSyxFQUFFO1lBRlIsK0xBQVMsY0FBYyw2QkFBZCxjQUFjLHVHQUErQjtZQUd0RCw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWtDO1lBUnJELDZLQWdOQzs7OztRQS9NUSxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN2QixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFHMUMseUZBQW1ELEVBQUUsRUFBQztRQUF0RCxJQUFTLGNBQWMsb0RBQStCO1FBQXRELElBQVMsY0FBYywwREFBK0I7UUFHdEQsMElBQXlDLFNB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
|
6
6
|
"main": "dist_ts_web/index.js",
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '
|
|
6
|
+
version: '4.0.0',
|
|
7
7
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
|
8
8
|
}
|
|
@@ -351,9 +351,7 @@ export class DeesHarnessMessage extends DeesElement {
|
|
|
351
351
|
${message.reasoning?.length
|
|
352
352
|
? html`
|
|
353
353
|
<div class="reasoningStack">
|
|
354
|
-
|
|
355
|
-
(part) => html`<dees-harness-reasoning .reasoningPart=${part}></dees-harness-reasoning>`,
|
|
356
|
-
)}
|
|
354
|
+
<dees-harness-reasoning .reasoningParts=${message.reasoning}></dees-harness-reasoning>
|
|
357
355
|
</div>
|
|
358
356
|
`
|
|
359
357
|
: ''}
|
package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts
CHANGED
|
@@ -14,19 +14,29 @@ export const demoFunc = () => html`
|
|
|
14
14
|
</style>
|
|
15
15
|
<div class="reasoningDemo">
|
|
16
16
|
<dees-harness-reasoning
|
|
17
|
-
.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
.reasoningParts=${[
|
|
18
|
+
{
|
|
19
|
+
id: 'r1',
|
|
20
|
+
text: 'Summarize the failing test before touching code.\nThe user wants a summary of the failing test. I should read the test output first, then check the assertion that failed and compare with the fixture data.',
|
|
21
|
+
startedAt: Date.now() - 9200,
|
|
22
|
+
endedAt: Date.now() - 5200,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'r2',
|
|
26
|
+
text: 'The fixture predates the schema change; regenerating it should settle both assertions.',
|
|
27
|
+
startedAt: Date.now() - 5200,
|
|
28
|
+
endedAt: Date.now() - 4100,
|
|
29
|
+
},
|
|
30
|
+
]}
|
|
23
31
|
></dees-harness-reasoning>
|
|
24
32
|
<dees-harness-reasoning
|
|
25
|
-
.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
.reasoningParts=${[
|
|
34
|
+
{
|
|
35
|
+
id: 'r3',
|
|
36
|
+
text: 'Considering the tradeoffs between the two migration paths',
|
|
37
|
+
startedAt: Date.now() - 1500,
|
|
38
|
+
},
|
|
39
|
+
]}
|
|
30
40
|
></dees-harness-reasoning>
|
|
31
41
|
</div>
|
|
32
42
|
`;
|
|
@@ -21,10 +21,13 @@ declare global {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* Reasoning ("thinking") disclosure for
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
24
|
+
* Reasoning ("thinking") disclosure for a message's complete reasoning trace.
|
|
25
|
+
* Collapsed it shows a one-line summary — the trace's first line, or the
|
|
26
|
+
* latest line while streaming — and expanding reveals the FULL concatenated
|
|
27
|
+
* trace of every part in one flat body. Auto-opens while streaming (no
|
|
28
|
+
* endedAt on some part) unless the user has interacted; the user's
|
|
29
|
+
* expand/collapse choice wins afterwards and survives re-renders because it
|
|
30
|
+
* lives on this element, not in the parent's template.
|
|
28
31
|
*/
|
|
29
32
|
@customElement('dees-harness-reasoning')
|
|
30
33
|
export class DeesHarnessReasoning extends DeesElement {
|
|
@@ -32,7 +35,7 @@ export class DeesHarnessReasoning extends DeesElement {
|
|
|
32
35
|
public static demoGroups = ['Agent Chat'];
|
|
33
36
|
|
|
34
37
|
@property({ attribute: false })
|
|
35
|
-
accessor
|
|
38
|
+
accessor reasoningParts: IHarnessReasoningPart[] = [];
|
|
36
39
|
|
|
37
40
|
@state()
|
|
38
41
|
accessor expanded: boolean | undefined = undefined;
|
|
@@ -116,6 +119,7 @@ export class DeesHarnessReasoning extends DeesElement {
|
|
|
116
119
|
.chevron {
|
|
117
120
|
display: grid;
|
|
118
121
|
place-items: center;
|
|
122
|
+
flex: 0 0 auto;
|
|
119
123
|
transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
|
|
120
124
|
}
|
|
121
125
|
|
|
@@ -123,8 +127,23 @@ export class DeesHarnessReasoning extends DeesElement {
|
|
|
123
127
|
transform: rotate(90deg);
|
|
124
128
|
}
|
|
125
129
|
|
|
130
|
+
.label {
|
|
131
|
+
flex: 0 0 auto;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.preview {
|
|
135
|
+
min-width: 0;
|
|
136
|
+
overflow: hidden;
|
|
137
|
+
text-overflow: ellipsis;
|
|
138
|
+
white-space: nowrap;
|
|
139
|
+
color: var(--dees-color-text-muted);
|
|
140
|
+
font-weight: 400;
|
|
141
|
+
font-style: italic;
|
|
142
|
+
}
|
|
143
|
+
|
|
126
144
|
.duration {
|
|
127
145
|
margin-left: auto;
|
|
146
|
+
flex: 0 0 auto;
|
|
128
147
|
color: var(--dees-color-text-muted);
|
|
129
148
|
font-weight: 400;
|
|
130
149
|
}
|
|
@@ -157,15 +176,41 @@ export class DeesHarnessReasoning extends DeesElement {
|
|
|
157
176
|
];
|
|
158
177
|
|
|
159
178
|
public get isStreaming(): boolean {
|
|
160
|
-
return Boolean(
|
|
179
|
+
return this.reasoningParts.some((part) => Boolean(part.startedAt) && !part.endedAt);
|
|
161
180
|
}
|
|
162
181
|
|
|
163
182
|
public get isOpen(): boolean {
|
|
164
183
|
return this.expanded ?? this.isStreaming;
|
|
165
184
|
}
|
|
166
185
|
|
|
186
|
+
/** All parts joined into the one full trace the expanded body shows. */
|
|
187
|
+
public get fullText(): string {
|
|
188
|
+
return this.reasoningParts
|
|
189
|
+
.map((part) => part.text.trim())
|
|
190
|
+
.filter((text) => text.length > 0)
|
|
191
|
+
.join('\n\n');
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* One line for the collapsed state: the latest line while streaming (live
|
|
196
|
+
* progress), the first line once finished (the trace's own summary).
|
|
197
|
+
*/
|
|
198
|
+
public get previewLine(): string {
|
|
199
|
+
const lines = this.fullText
|
|
200
|
+
.split('\n')
|
|
201
|
+
.map((line) => line.trim())
|
|
202
|
+
.filter((line) => line.length > 0);
|
|
203
|
+
if (lines.length === 0) return '';
|
|
204
|
+
return this.isStreaming ? lines[lines.length - 1] : lines[0];
|
|
205
|
+
}
|
|
206
|
+
|
|
167
207
|
public render(): TemplateResult {
|
|
168
|
-
const
|
|
208
|
+
const startedAt = this.reasoningParts.find((part) => part.startedAt)?.startedAt;
|
|
209
|
+
const endedAt = this.isStreaming
|
|
210
|
+
? undefined
|
|
211
|
+
: [...this.reasoningParts].reverse().find((part) => part.endedAt)?.endedAt;
|
|
212
|
+
const duration = harnessFormatDuration(startedAt, endedAt);
|
|
213
|
+
const preview = this.previewLine;
|
|
169
214
|
return html`
|
|
170
215
|
<div class="reasoning">
|
|
171
216
|
<button
|
|
@@ -179,14 +224,15 @@ export class DeesHarnessReasoning extends DeesElement {
|
|
|
179
224
|
<span class="chevron ${this.isOpen ? 'open' : ''}">
|
|
180
225
|
<dees-icon icon="lucide:ChevronRight" iconSize="12"></dees-icon>
|
|
181
226
|
</span>
|
|
182
|
-
<span class
|
|
227
|
+
<span class="label ${this.isStreaming ? 'thinkingDots' : ''}">
|
|
183
228
|
${this.isStreaming ? 'Thinking' : 'Thought'}
|
|
184
229
|
</span>
|
|
230
|
+
${!this.isOpen && preview ? html`<span class="preview">${preview}</span>` : ''}
|
|
185
231
|
${duration ? html`<span class="duration">${duration}</span>` : ''}
|
|
186
232
|
</button>
|
|
187
233
|
<div class="bodyWrap ${this.isOpen ? 'open' : ''}" aria-hidden=${this.isOpen ? 'false' : 'true'}>
|
|
188
234
|
<div class="bodyClip">
|
|
189
|
-
<pre class="body">${this.
|
|
235
|
+
<pre class="body">${this.fullText || (this.isStreaming ? 'Waiting for reasoning…' : 'No reasoning emitted.')}</pre>
|
|
190
236
|
</div>
|
|
191
237
|
</div>
|
|
192
238
|
</div>
|