@design.estate/dees-catalog 3.104.0 → 4.0.1
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 +66 -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 +70 -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 +62 -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,39 @@ 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((line2) => line2.trim()).filter((line2) => line2.length > 0);
|
|
172621
|
+
if (lines.length === 0) return "";
|
|
172622
|
+
const line = this.isStreaming ? lines[lines.length - 1] : lines[0];
|
|
172623
|
+
return line.replace(/^#+\s*/, "").replace(/\*\*([^*]+)\*\*/g, "$1").replace(/\*([^*]+)\*/g, "$1").replace(/`([^`]+)`/g, "$1");
|
|
172624
|
+
}
|
|
172601
172625
|
render() {
|
|
172602
|
-
const
|
|
172626
|
+
const startedAt = this.reasoningParts.find((part) => part.startedAt)?.startedAt;
|
|
172627
|
+
const endedAt = this.isStreaming ? void 0 : [...this.reasoningParts].reverse().find((part) => part.endedAt)?.endedAt;
|
|
172628
|
+
const duration = harnessFormatDuration(startedAt, endedAt);
|
|
172629
|
+
const preview = this.previewLine;
|
|
172603
172630
|
return b2`
|
|
172604
172631
|
<div class="reasoning">
|
|
172605
172632
|
<button
|
|
@@ -172613,14 +172640,15 @@ var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a76 = DeesElem
|
|
|
172613
172640
|
<span class="chevron ${this.isOpen ? "open" : ""}">
|
|
172614
172641
|
<dees-icon icon="lucide:ChevronRight" iconSize="12"></dees-icon>
|
|
172615
172642
|
</span>
|
|
172616
|
-
<span class
|
|
172643
|
+
<span class="label ${this.isStreaming ? "thinkingDots" : ""}">
|
|
172617
172644
|
${this.isStreaming ? "Thinking" : "Thought"}
|
|
172618
172645
|
</span>
|
|
172646
|
+
${!this.isOpen && preview ? b2`<span class="preview">${preview}</span>` : ""}
|
|
172619
172647
|
${duration ? b2`<span class="duration">${duration}</span>` : ""}
|
|
172620
172648
|
</button>
|
|
172621
172649
|
<div class="bodyWrap ${this.isOpen ? "open" : ""}" aria-hidden=${this.isOpen ? "false" : "true"}>
|
|
172622
172650
|
<div class="bodyClip">
|
|
172623
|
-
<pre class="body">${this.
|
|
172651
|
+
<pre class="body">${this.fullText || (this.isStreaming ? "Waiting for reasoning\u2026" : "No reasoning emitted.")}</pre>
|
|
172624
172652
|
</div>
|
|
172625
172653
|
</div>
|
|
172626
172654
|
</div>
|
|
@@ -172628,9 +172656,9 @@ var _DeesHarnessReasoning = class _DeesHarnessReasoning extends (_a76 = DeesElem
|
|
|
172628
172656
|
}
|
|
172629
172657
|
};
|
|
172630
172658
|
_init77 = __decoratorStart(_a76);
|
|
172631
|
-
|
|
172659
|
+
_reasoningParts = new WeakMap();
|
|
172632
172660
|
_expanded = new WeakMap();
|
|
172633
|
-
__decorateElement(_init77, 4, "
|
|
172661
|
+
__decorateElement(_init77, 4, "reasoningParts", _reasoningParts_dec, _DeesHarnessReasoning, _reasoningParts);
|
|
172634
172662
|
__decorateElement(_init77, 4, "expanded", _expanded_dec, _DeesHarnessReasoning, _expanded);
|
|
172635
172663
|
_DeesHarnessReasoning = __decorateElement(_init77, 0, "DeesHarnessReasoning", _DeesHarnessReasoning_decorators, _DeesHarnessReasoning);
|
|
172636
172664
|
__name(_DeesHarnessReasoning, "DeesHarnessReasoning");
|
|
@@ -172715,6 +172743,7 @@ __publicField(_DeesHarnessReasoning, "styles", [
|
|
|
172715
172743
|
.chevron {
|
|
172716
172744
|
display: grid;
|
|
172717
172745
|
place-items: center;
|
|
172746
|
+
flex: 0 0 auto;
|
|
172718
172747
|
transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
|
|
172719
172748
|
}
|
|
172720
172749
|
|
|
@@ -172722,8 +172751,23 @@ __publicField(_DeesHarnessReasoning, "styles", [
|
|
|
172722
172751
|
transform: rotate(90deg);
|
|
172723
172752
|
}
|
|
172724
172753
|
|
|
172754
|
+
.label {
|
|
172755
|
+
flex: 0 0 auto;
|
|
172756
|
+
}
|
|
172757
|
+
|
|
172758
|
+
.preview {
|
|
172759
|
+
min-width: 0;
|
|
172760
|
+
overflow: hidden;
|
|
172761
|
+
text-overflow: ellipsis;
|
|
172762
|
+
white-space: nowrap;
|
|
172763
|
+
color: var(--dees-color-text-muted);
|
|
172764
|
+
font-weight: 400;
|
|
172765
|
+
font-style: italic;
|
|
172766
|
+
}
|
|
172767
|
+
|
|
172725
172768
|
.duration {
|
|
172726
172769
|
margin-left: auto;
|
|
172770
|
+
flex: 0 0 auto;
|
|
172727
172771
|
color: var(--dees-color-text-muted);
|
|
172728
172772
|
font-weight: 400;
|
|
172729
172773
|
}
|
|
@@ -173861,9 +173905,7 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a80 = DeesElement,
|
|
|
173861
173905
|
` : ""}
|
|
173862
173906
|
${message2.reasoning?.length ? b2`
|
|
173863
173907
|
<div class="reasoningStack">
|
|
173864
|
-
|
|
173865
|
-
(part) => b2`<dees-harness-reasoning .reasoningPart=${part}></dees-harness-reasoning>`
|
|
173866
|
-
)}
|
|
173908
|
+
<dees-harness-reasoning .reasoningParts=${message2.reasoning}></dees-harness-reasoning>
|
|
173867
173909
|
</div>
|
|
173868
173910
|
` : ""}
|
|
173869
173911
|
${message2.attachments?.length ? this.renderAttachments(message2.attachments) : ""}
|
|
@@ -198977,7 +199019,7 @@ init_group_runtime();
|
|
|
198977
199019
|
// ts_web/00_commitinfo_data.ts
|
|
198978
199020
|
var commitinfo = {
|
|
198979
199021
|
name: "@design.estate/dees-catalog",
|
|
198980
|
-
version: "
|
|
199022
|
+
version: "4.0.1",
|
|
198981
199023
|
description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
|
|
198982
199024
|
};
|
|
198983
199025
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '
|
|
6
|
+
version: '4.0.1',
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlL2RlZXMtaGFybmVzcy1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8scURBQXFELENBQUM7QUFDN0QsT0FBTyxxREFBcUQsQ0FBQztBQUM3RCxPQUFPLDhDQUE4QyxDQUFDO0FBUXRELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRXBDOzs7OztHQUtHO0lBRVUsa0JBQWtCOzRCQUQ5QixhQUFhLENBQUMsc0JBQXNCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQ0FBbkIsU0FBUSxXQUFXOzs7O21DQUloRCxR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
|
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,45 @@ 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
|
+
const line = this.isStreaming ? lines[lines.length - 1] : lines[0];
|
|
240
|
+
// Reasoning summaries often arrive as markdown headings; the one-line
|
|
241
|
+
// preview shows plain text.
|
|
242
|
+
return line
|
|
243
|
+
.replace(/^#+\s*/, '')
|
|
244
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1')
|
|
245
|
+
.replace(/\*([^*]+)\*/g, '$1')
|
|
246
|
+
.replace(/`([^`]+)`/g, '$1');
|
|
247
|
+
}
|
|
202
248
|
render() {
|
|
203
|
-
const
|
|
249
|
+
const startedAt = this.reasoningParts.find((part) => part.startedAt)?.startedAt;
|
|
250
|
+
const endedAt = this.isStreaming
|
|
251
|
+
? undefined
|
|
252
|
+
: [...this.reasoningParts].reverse().find((part) => part.endedAt)?.endedAt;
|
|
253
|
+
const duration = harnessFormatDuration(startedAt, endedAt);
|
|
254
|
+
const preview = this.previewLine;
|
|
204
255
|
return html `
|
|
205
256
|
<div class="reasoning">
|
|
206
257
|
<button
|
|
@@ -214,14 +265,15 @@ let DeesHarnessReasoning = (() => {
|
|
|
214
265
|
<span class="chevron ${this.isOpen ? 'open' : ''}">
|
|
215
266
|
<dees-icon icon="lucide:ChevronRight" iconSize="12"></dees-icon>
|
|
216
267
|
</span>
|
|
217
|
-
<span class
|
|
268
|
+
<span class="label ${this.isStreaming ? 'thinkingDots' : ''}">
|
|
218
269
|
${this.isStreaming ? 'Thinking' : 'Thought'}
|
|
219
270
|
</span>
|
|
271
|
+
${!this.isOpen && preview ? html `<span class="preview">${preview}</span>` : ''}
|
|
220
272
|
${duration ? html `<span class="duration">${duration}</span>` : ''}
|
|
221
273
|
</button>
|
|
222
274
|
<div class="bodyWrap ${this.isOpen ? 'open' : ''}" aria-hidden=${this.isOpen ? 'false' : 'true'}>
|
|
223
275
|
<div class="bodyClip">
|
|
224
|
-
<pre class="body">${this.
|
|
276
|
+
<pre class="body">${this.fullText || (this.isStreaming ? 'Waiting for reasoning…' : 'No reasoning emitted.')}</pre>
|
|
225
277
|
</div>
|
|
226
278
|
</div>
|
|
227
279
|
</div>
|
|
@@ -238,4 +290,4 @@ let DeesHarnessReasoning = (() => {
|
|
|
238
290
|
return DeesHarnessReasoning = _classThis;
|
|
239
291
|
})();
|
|
240
292
|
export { DeesHarnessReasoning };
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXJlYXNvbmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXJlYXNvbmluZy9kZWVzLWhhcm5lc3MtcmVhc29uaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sOENBQThDLENBQUM7QUFRdEQ7Ozs7Ozs7O0dBUUc7SUFFVSxvQkFBb0I7NEJBRGhDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7O29DQUFuQixTQUFRLFdBQVc7Ozs7MENBSWxELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQ0FHOUIsS0FBSyxFQUFFO1lBRlIsK0xBQVMsY0FBYyw2QkFBZCxjQUFjLHVHQUErQjtZQUd0RCw2S0FBUyxRQUFRLDZCQUFSLFFBQVEsMkZBQWtDO1lBUnJELDZLQXVOQzs7OztRQXROUSxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN2QixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFHMUMseUZBQW1ELEVBQUUsRUFBQztRQUF0RCxJQUFTLGNBQWMsb0RBQStCO1FBQXRELElBQVMsY0FBYywwREFBK0I7UUFHdEQsMElBQXlDLFNB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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.1",
|
|
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.1',
|
|
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,48 @@ 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
|
+
const line = this.isStreaming ? lines[lines.length - 1] : lines[0];
|
|
205
|
+
// Reasoning summaries often arrive as markdown headings; the one-line
|
|
206
|
+
// preview shows plain text.
|
|
207
|
+
return line
|
|
208
|
+
.replace(/^#+\s*/, '')
|
|
209
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1')
|
|
210
|
+
.replace(/\*([^*]+)\*/g, '$1')
|
|
211
|
+
.replace(/`([^`]+)`/g, '$1');
|
|
212
|
+
}
|
|
213
|
+
|
|
167
214
|
public render(): TemplateResult {
|
|
168
|
-
const
|
|
215
|
+
const startedAt = this.reasoningParts.find((part) => part.startedAt)?.startedAt;
|
|
216
|
+
const endedAt = this.isStreaming
|
|
217
|
+
? undefined
|
|
218
|
+
: [...this.reasoningParts].reverse().find((part) => part.endedAt)?.endedAt;
|
|
219
|
+
const duration = harnessFormatDuration(startedAt, endedAt);
|
|
220
|
+
const preview = this.previewLine;
|
|
169
221
|
return html`
|
|
170
222
|
<div class="reasoning">
|
|
171
223
|
<button
|
|
@@ -179,14 +231,15 @@ export class DeesHarnessReasoning extends DeesElement {
|
|
|
179
231
|
<span class="chevron ${this.isOpen ? 'open' : ''}">
|
|
180
232
|
<dees-icon icon="lucide:ChevronRight" iconSize="12"></dees-icon>
|
|
181
233
|
</span>
|
|
182
|
-
<span class
|
|
234
|
+
<span class="label ${this.isStreaming ? 'thinkingDots' : ''}">
|
|
183
235
|
${this.isStreaming ? 'Thinking' : 'Thought'}
|
|
184
236
|
</span>
|
|
237
|
+
${!this.isOpen && preview ? html`<span class="preview">${preview}</span>` : ''}
|
|
185
238
|
${duration ? html`<span class="duration">${duration}</span>` : ''}
|
|
186
239
|
</button>
|
|
187
240
|
<div class="bodyWrap ${this.isOpen ? 'open' : ''}" aria-hidden=${this.isOpen ? 'false' : 'true'}>
|
|
188
241
|
<div class="bodyClip">
|
|
189
|
-
<pre class="body">${this.
|
|
242
|
+
<pre class="body">${this.fullText || (this.isStreaming ? 'Waiting for reasoning…' : 'No reasoning emitted.')}</pre>
|
|
190
243
|
</div>
|
|
191
244
|
</div>
|
|
192
245
|
</div>
|