@design.estate/dees-catalog 3.92.0 → 3.93.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 +212 -39
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +10 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +127 -16
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +82 -9
- package/dist_watch/bundle.js +211 -38
- package/dist_watch/bundle.js.map +3 -3
- package/package.json +1 -1
- package/readme.md +3 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +132 -19
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +69 -7
package/dist_bundle/bundle.js
CHANGED
|
@@ -171448,26 +171448,150 @@ var simulate = /* @__PURE__ */ __name((event) => {
|
|
|
171448
171448
|
const chat = chatOf(event);
|
|
171449
171449
|
if (!chat) return;
|
|
171450
171450
|
stopStream?.();
|
|
171451
|
-
const
|
|
171452
|
-
|
|
171451
|
+
const runId = Date.now();
|
|
171452
|
+
const cancels = [];
|
|
171453
|
+
const at = /* @__PURE__ */ __name((ms, action) => {
|
|
171454
|
+
const timeout2 = setTimeout(action, ms);
|
|
171455
|
+
cancels.push(() => clearTimeout(timeout2));
|
|
171456
|
+
}, "at");
|
|
171457
|
+
stopStream = /* @__PURE__ */ __name(() => {
|
|
171458
|
+
for (const cancel of cancels) cancel();
|
|
171459
|
+
chat.status = { type: "idle" };
|
|
171460
|
+
}, "stopStream");
|
|
171461
|
+
const pushMessage = /* @__PURE__ */ __name((message2) => {
|
|
171462
|
+
chat.messages = [...chat.messages, message2];
|
|
171463
|
+
}, "pushMessage");
|
|
171464
|
+
const updateTool = /* @__PURE__ */ __name((messageId, tool) => {
|
|
171465
|
+
chat.applyDelta({ type: "tool-update", messageId, tool });
|
|
171466
|
+
}, "updateTool");
|
|
171467
|
+
chat.status = { type: "busy", message: "Planning\u2026" };
|
|
171468
|
+
const reasoningMessage = {
|
|
171469
|
+
id: `sim-${runId}-reasoning`,
|
|
171453
171470
|
role: "assistant",
|
|
171454
171471
|
text: "",
|
|
171455
171472
|
createdAt: Date.now(),
|
|
171456
171473
|
streaming: true
|
|
171457
171474
|
};
|
|
171458
|
-
|
|
171459
|
-
chat.
|
|
171460
|
-
|
|
171461
|
-
|
|
171462
|
-
|
|
171463
|
-
|
|
171464
|
-
|
|
171465
|
-
|
|
171466
|
-
|
|
171467
|
-
|
|
171468
|
-
|
|
171469
|
-
|
|
171470
|
-
)
|
|
171475
|
+
pushMessage(reasoningMessage);
|
|
171476
|
+
chat.applyDelta({ type: "reasoning-start", messageId: reasoningMessage.id, partId: "r1", startedAt: Date.now() });
|
|
171477
|
+
const reasoningText = "The cache key includes the locale list, so every rollout re-crawls. Plan: track the fix as todos, run the tests, then pin the key to the route manifest.";
|
|
171478
|
+
reasoningText.split(" ").forEach((word, index3) => {
|
|
171479
|
+
at(80 + index3 * 45, () => chat.applyDelta({ type: "reasoning", messageId: reasoningMessage.id, partId: "r1", delta: word + " " }));
|
|
171480
|
+
});
|
|
171481
|
+
const reasoningDoneAt = 80 + reasoningText.split(" ").length * 45 + 150;
|
|
171482
|
+
at(reasoningDoneAt, () => {
|
|
171483
|
+
chat.applyDelta({ type: "reasoning-end", messageId: reasoningMessage.id, partId: "r1", endedAt: Date.now() });
|
|
171484
|
+
chat.applyDelta({ type: "message-end", messageId: reasoningMessage.id });
|
|
171485
|
+
});
|
|
171486
|
+
const todoId = `sim-${runId}-todos`;
|
|
171487
|
+
at(reasoningDoneAt + 300, () => {
|
|
171488
|
+
chat.status = { type: "busy", message: "Updating task list\u2026" };
|
|
171489
|
+
pushMessage({
|
|
171490
|
+
id: todoId,
|
|
171491
|
+
role: "tool",
|
|
171492
|
+
text: "",
|
|
171493
|
+
createdAt: Date.now(),
|
|
171494
|
+
toolCall: {
|
|
171495
|
+
id: `${todoId}-call`,
|
|
171496
|
+
name: "todowrite",
|
|
171497
|
+
status: "running",
|
|
171498
|
+
input: { todos: [
|
|
171499
|
+
{ content: "Pin sitemap cache key to route manifest hash", status: "in_progress" },
|
|
171500
|
+
{ content: "Run the sitemap test suite", status: "pending" },
|
|
171501
|
+
{ content: "Apply the cache-key patch", status: "pending" },
|
|
171502
|
+
{ content: "Verify staging timings", status: "pending" }
|
|
171503
|
+
] },
|
|
171504
|
+
startedAt: Date.now()
|
|
171505
|
+
}
|
|
171506
|
+
});
|
|
171507
|
+
});
|
|
171508
|
+
at(reasoningDoneAt + 1e3, () => updateTool(todoId, { id: `${todoId}-call`, status: "completed", finishedAt: Date.now() }));
|
|
171509
|
+
const testId = `sim-${runId}-test`;
|
|
171510
|
+
at(reasoningDoneAt + 1400, () => {
|
|
171511
|
+
chat.status = { type: "busy", message: "Running tests\u2026" };
|
|
171512
|
+
pushMessage({
|
|
171513
|
+
id: testId,
|
|
171514
|
+
role: "tool",
|
|
171515
|
+
text: "",
|
|
171516
|
+
createdAt: Date.now(),
|
|
171517
|
+
toolCall: {
|
|
171518
|
+
id: `${testId}-call`,
|
|
171519
|
+
name: "run_command",
|
|
171520
|
+
status: "running",
|
|
171521
|
+
input: { command: "pnpm test --filter sitemap", cwd: "/srv/app" },
|
|
171522
|
+
startedAt: Date.now()
|
|
171523
|
+
}
|
|
171524
|
+
});
|
|
171525
|
+
});
|
|
171526
|
+
at(reasoningDoneAt + 3200, () => updateTool(testId, {
|
|
171527
|
+
id: `${testId}-call`,
|
|
171528
|
+
status: "completed",
|
|
171529
|
+
output: { exitCode: 0, stdout: "14 tests passed\n0 failed" },
|
|
171530
|
+
finishedAt: Date.now()
|
|
171531
|
+
}));
|
|
171532
|
+
const editId = `sim-${runId}-edit`;
|
|
171533
|
+
at(reasoningDoneAt + 3600, () => {
|
|
171534
|
+
chat.status = { type: "busy", message: "Applying the patch\u2026" };
|
|
171535
|
+
pushMessage({
|
|
171536
|
+
id: editId,
|
|
171537
|
+
role: "tool",
|
|
171538
|
+
text: "",
|
|
171539
|
+
createdAt: Date.now(),
|
|
171540
|
+
toolCall: {
|
|
171541
|
+
id: `${editId}-call`,
|
|
171542
|
+
name: "write_file",
|
|
171543
|
+
status: "running",
|
|
171544
|
+
input: {
|
|
171545
|
+
path: "/srv/app/src/jobs/sitemap.job.ts",
|
|
171546
|
+
oldContent: "const cacheKey = hash(locales);\nconst ttl = 3600;",
|
|
171547
|
+
content: "const cacheKey = hash(routeManifest);\nconst ttl = 3600;"
|
|
171548
|
+
},
|
|
171549
|
+
startedAt: Date.now()
|
|
171550
|
+
}
|
|
171551
|
+
});
|
|
171552
|
+
});
|
|
171553
|
+
at(reasoningDoneAt + 4600, () => updateTool(editId, { id: `${editId}-call`, status: "completed", finishedAt: Date.now() }));
|
|
171554
|
+
const todoDoneId = `sim-${runId}-todos-2`;
|
|
171555
|
+
at(reasoningDoneAt + 5e3, () => {
|
|
171556
|
+
pushMessage({
|
|
171557
|
+
id: todoDoneId,
|
|
171558
|
+
role: "tool",
|
|
171559
|
+
text: "",
|
|
171560
|
+
createdAt: Date.now(),
|
|
171561
|
+
toolCall: {
|
|
171562
|
+
id: `${todoDoneId}-call`,
|
|
171563
|
+
name: "todowrite",
|
|
171564
|
+
status: "completed",
|
|
171565
|
+
input: { todos: [
|
|
171566
|
+
{ content: "Pin sitemap cache key to route manifest hash", status: "completed" },
|
|
171567
|
+
{ content: "Run the sitemap test suite", status: "completed" },
|
|
171568
|
+
{ content: "Apply the cache-key patch", status: "completed" },
|
|
171569
|
+
{ content: "Verify staging timings", status: "in_progress" }
|
|
171570
|
+
] },
|
|
171571
|
+
startedAt: Date.now(),
|
|
171572
|
+
finishedAt: Date.now()
|
|
171573
|
+
}
|
|
171574
|
+
});
|
|
171575
|
+
});
|
|
171576
|
+
const summaryId = `sim-${runId}-summary`;
|
|
171577
|
+
at(reasoningDoneAt + 5400, () => {
|
|
171578
|
+
chat.status = { type: "busy", message: "Responding\u2026" };
|
|
171579
|
+
pushMessage({ id: summaryId, role: "assistant", text: "", createdAt: Date.now(), streaming: true });
|
|
171580
|
+
const summary = "Patched `sitemap.job.ts` to key the cache on the **route manifest hash** \u2014 tests pass (14/14). Staging verification is the last open task.";
|
|
171581
|
+
let offset = 0;
|
|
171582
|
+
const interval3 = setInterval(() => {
|
|
171583
|
+
const chunk = summary.slice(offset, offset + 6);
|
|
171584
|
+
offset += 6;
|
|
171585
|
+
if (!chunk) {
|
|
171586
|
+
clearInterval(interval3);
|
|
171587
|
+
chat.applyDelta({ type: "message-end", messageId: summaryId, usage: { inputTokens: 2100, outputTokens: 260, totalTokens: 2360 } });
|
|
171588
|
+
chat.status = { type: "idle" };
|
|
171589
|
+
return;
|
|
171590
|
+
}
|
|
171591
|
+
chat.applyDelta({ type: "text", messageId: summaryId, delta: chunk });
|
|
171592
|
+
}, 40);
|
|
171593
|
+
cancels.push(() => clearInterval(interval3));
|
|
171594
|
+
});
|
|
171471
171595
|
}, "simulate");
|
|
171472
171596
|
var askPermission = /* @__PURE__ */ __name((event) => {
|
|
171473
171597
|
const chat = chatOf(event);
|
|
@@ -174768,30 +174892,32 @@ var DeesHarnessUsage = _DeesHarnessUsage;
|
|
|
174768
174892
|
init_dist_ts25();
|
|
174769
174893
|
init_theme();
|
|
174770
174894
|
init_dees_icon();
|
|
174771
|
-
var _toolRegistry_dec4, _effortOptions_dec2, _reasoningEffort_dec2, _modelOptions_dec2, _model_dec2, _attachments_dec2, _composerValue_dec, _queuedCount_dec2, _busy_dec3, _disabled_dec6, _showRoles_dec2, _showToolbar_dec, _subheading_dec, _heading_dec6, _usage_dec2, _status_dec6, _permissions_dec, _messages_dec2, _a86, _DeesHarnessChat_decorators, _init87, _messages2, _permissions, _status6, _usage2, _heading6, _subheading, _showToolbar, _showRoles2, _disabled6, _busy3, _queuedCount2, _composerValue, _attachments2, _model2, _modelOptions2, _reasoningEffort2, _effortOptions2, _toolRegistry4;
|
|
174895
|
+
var _toolRegistry_dec4, _effortOptions_dec2, _reasoningEffort_dec2, _modelOptions_dec2, _model_dec2, _attachments_dec2, _composerValue_dec, _queuedCount_dec2, _busy_dec3, _disabled_dec6, _showRoles_dec2, _showToolbar_dec, _subheading_dec, _heading_dec6, _showTodosPanel_dec, _todos_dec2, _usage_dec2, _status_dec6, _permissions_dec, _messages_dec2, _a86, _DeesHarnessChat_decorators, _init87, _messages2, _permissions, _status6, _usage2, _todos2, _showTodosPanel, _heading6, _subheading, _showToolbar, _showRoles2, _disabled6, _busy3, _queuedCount2, _composerValue, _attachments2, _model2, _modelOptions2, _reasoningEffort2, _effortOptions2, _toolRegistry4;
|
|
174772
174896
|
var idleStatus = { type: "idle" };
|
|
174773
174897
|
_DeesHarnessChat_decorators = [customElement("dees-harness-chat")];
|
|
174774
|
-
var _DeesHarnessChat = class _DeesHarnessChat extends (_a86 = DeesElement, _messages_dec2 = [n5({ attribute: false })], _permissions_dec = [n5({ attribute: false })], _status_dec6 = [n5({ attribute: false })], _usage_dec2 = [n5({ attribute: false })], _heading_dec6 = [n5()], _subheading_dec = [n5()], _showToolbar_dec = [n5({ type: Boolean })], _showRoles_dec2 = [n5({ type: Boolean })], _disabled_dec6 = [n5({ type: Boolean })], _busy_dec3 = [n5({ type: Boolean })], _queuedCount_dec2 = [n5({ type: Number })], _composerValue_dec = [n5()], _attachments_dec2 = [n5({ attribute: false })], _model_dec2 = [n5()], _modelOptions_dec2 = [n5({ attribute: false })], _reasoningEffort_dec2 = [n5()], _effortOptions_dec2 = [n5({ attribute: false })], _toolRegistry_dec4 = [n5({ attribute: false })], _a86) {
|
|
174898
|
+
var _DeesHarnessChat = class _DeesHarnessChat extends (_a86 = DeesElement, _messages_dec2 = [n5({ attribute: false })], _permissions_dec = [n5({ attribute: false })], _status_dec6 = [n5({ attribute: false })], _usage_dec2 = [n5({ attribute: false })], _todos_dec2 = [n5({ attribute: false })], _showTodosPanel_dec = [n5({ type: Boolean })], _heading_dec6 = [n5()], _subheading_dec = [n5()], _showToolbar_dec = [n5({ type: Boolean })], _showRoles_dec2 = [n5({ type: Boolean })], _disabled_dec6 = [n5({ type: Boolean })], _busy_dec3 = [n5({ type: Boolean })], _queuedCount_dec2 = [n5({ type: Number })], _composerValue_dec = [n5()], _attachments_dec2 = [n5({ attribute: false })], _model_dec2 = [n5()], _modelOptions_dec2 = [n5({ attribute: false })], _reasoningEffort_dec2 = [n5()], _effortOptions_dec2 = [n5({ attribute: false })], _toolRegistry_dec4 = [n5({ attribute: false })], _a86) {
|
|
174775
174899
|
constructor() {
|
|
174776
174900
|
super(...arguments);
|
|
174777
174901
|
__privateAdd(this, _messages2, __runInitializers(_init87, 8, this, [])), __runInitializers(_init87, 11, this);
|
|
174778
174902
|
__privateAdd(this, _permissions, __runInitializers(_init87, 12, this, [])), __runInitializers(_init87, 15, this);
|
|
174779
174903
|
__privateAdd(this, _status6, __runInitializers(_init87, 16, this, { type: "idle" })), __runInitializers(_init87, 19, this);
|
|
174780
174904
|
__privateAdd(this, _usage2, __runInitializers(_init87, 20, this, {})), __runInitializers(_init87, 23, this);
|
|
174781
|
-
__privateAdd(this,
|
|
174782
|
-
__privateAdd(this,
|
|
174783
|
-
__privateAdd(this,
|
|
174784
|
-
__privateAdd(this,
|
|
174785
|
-
__privateAdd(this,
|
|
174786
|
-
__privateAdd(this,
|
|
174787
|
-
__privateAdd(this,
|
|
174788
|
-
__privateAdd(this,
|
|
174789
|
-
__privateAdd(this,
|
|
174790
|
-
__privateAdd(this,
|
|
174791
|
-
__privateAdd(this,
|
|
174792
|
-
__privateAdd(this,
|
|
174793
|
-
__privateAdd(this,
|
|
174794
|
-
__privateAdd(this,
|
|
174905
|
+
__privateAdd(this, _todos2, __runInitializers(_init87, 24, this, [])), __runInitializers(_init87, 27, this);
|
|
174906
|
+
__privateAdd(this, _showTodosPanel, __runInitializers(_init87, 28, this, true)), __runInitializers(_init87, 31, this);
|
|
174907
|
+
__privateAdd(this, _heading6, __runInitializers(_init87, 32, this, "")), __runInitializers(_init87, 35, this);
|
|
174908
|
+
__privateAdd(this, _subheading, __runInitializers(_init87, 36, this, "")), __runInitializers(_init87, 39, this);
|
|
174909
|
+
__privateAdd(this, _showToolbar, __runInitializers(_init87, 40, this, true)), __runInitializers(_init87, 43, this);
|
|
174910
|
+
__privateAdd(this, _showRoles2, __runInitializers(_init87, 44, this, true)), __runInitializers(_init87, 47, this);
|
|
174911
|
+
__privateAdd(this, _disabled6, __runInitializers(_init87, 48, this, false)), __runInitializers(_init87, 51, this);
|
|
174912
|
+
__privateAdd(this, _busy3, __runInitializers(_init87, 52, this, false)), __runInitializers(_init87, 55, this);
|
|
174913
|
+
__privateAdd(this, _queuedCount2, __runInitializers(_init87, 56, this, 0)), __runInitializers(_init87, 59, this);
|
|
174914
|
+
__privateAdd(this, _composerValue, __runInitializers(_init87, 60, this, "")), __runInitializers(_init87, 63, this);
|
|
174915
|
+
__privateAdd(this, _attachments2, __runInitializers(_init87, 64, this, [])), __runInitializers(_init87, 67, this);
|
|
174916
|
+
__privateAdd(this, _model2, __runInitializers(_init87, 68, this, "")), __runInitializers(_init87, 71, this);
|
|
174917
|
+
__privateAdd(this, _modelOptions2, __runInitializers(_init87, 72, this, [])), __runInitializers(_init87, 75, this);
|
|
174918
|
+
__privateAdd(this, _reasoningEffort2, __runInitializers(_init87, 76, this, "")), __runInitializers(_init87, 79, this);
|
|
174919
|
+
__privateAdd(this, _effortOptions2, __runInitializers(_init87, 80, this, [])), __runInitializers(_init87, 83, this);
|
|
174920
|
+
__privateAdd(this, _toolRegistry4, __runInitializers(_init87, 84, this, DeesHarnessToolRegistry.default)), __runInitializers(_init87, 87, this);
|
|
174795
174921
|
}
|
|
174796
174922
|
// ---------------------------------------------------------------- methods
|
|
174797
174923
|
/** Streams an incremental update into the message list. */
|
|
@@ -174809,6 +174935,16 @@ var _DeesHarnessChat = class _DeesHarnessChat extends (_a86 = DeesElement, _mess
|
|
|
174809
174935
|
scrollToBottom(force = false) {
|
|
174810
174936
|
this.listElement?.scrollToBottom(force);
|
|
174811
174937
|
}
|
|
174938
|
+
get effectiveTodos() {
|
|
174939
|
+
if (this.todos.length) return this.todos;
|
|
174940
|
+
for (let index3 = this.messages.length - 1; index3 >= 0; index3--) {
|
|
174941
|
+
const call = this.messages[index3]?.toolCall;
|
|
174942
|
+
if (!call) continue;
|
|
174943
|
+
if (this.toolRegistry.resolve(call).kind !== "todo") continue;
|
|
174944
|
+
return harnessParseTodos(call.input);
|
|
174945
|
+
}
|
|
174946
|
+
return [];
|
|
174947
|
+
}
|
|
174812
174948
|
get listElement() {
|
|
174813
174949
|
const element4 = this.shadowRoot?.querySelector("dees-harness-message-list");
|
|
174814
174950
|
return element4 instanceof DeesHarnessMessageList ? element4 : void 0;
|
|
@@ -174821,12 +174957,19 @@ var _DeesHarnessChat = class _DeesHarnessChat extends (_a86 = DeesElement, _mess
|
|
|
174821
174957
|
render() {
|
|
174822
174958
|
return b2`
|
|
174823
174959
|
${this.showToolbar ? this.renderToolbar() : ""}
|
|
174824
|
-
<
|
|
174825
|
-
|
|
174826
|
-
|
|
174827
|
-
|
|
174828
|
-
|
|
174829
|
-
|
|
174960
|
+
<div class="chatBody">
|
|
174961
|
+
<dees-harness-message-list
|
|
174962
|
+
.messages=${this.messages}
|
|
174963
|
+
.status=${idleStatus}
|
|
174964
|
+
.showRoles=${this.showRoles}
|
|
174965
|
+
.toolRegistry=${this.toolRegistry}
|
|
174966
|
+
></dees-harness-message-list>
|
|
174967
|
+
${this.showTodosPanel && this.effectiveTodos.length ? b2`
|
|
174968
|
+
<aside class="todosPanel">
|
|
174969
|
+
<dees-harness-todos heading="Tasks" .todos=${this.effectiveTodos}></dees-harness-todos>
|
|
174970
|
+
</aside>
|
|
174971
|
+
` : ""}
|
|
174972
|
+
</div>
|
|
174830
174973
|
${this.permissions.length ? b2`
|
|
174831
174974
|
<div class="permissionQueue">
|
|
174832
174975
|
${this.permissions.map(
|
|
@@ -174892,6 +175035,8 @@ _messages2 = new WeakMap();
|
|
|
174892
175035
|
_permissions = new WeakMap();
|
|
174893
175036
|
_status6 = new WeakMap();
|
|
174894
175037
|
_usage2 = new WeakMap();
|
|
175038
|
+
_todos2 = new WeakMap();
|
|
175039
|
+
_showTodosPanel = new WeakMap();
|
|
174895
175040
|
_heading6 = new WeakMap();
|
|
174896
175041
|
_subheading = new WeakMap();
|
|
174897
175042
|
_showToolbar = new WeakMap();
|
|
@@ -174910,6 +175055,8 @@ __decorateElement(_init87, 4, "messages", _messages_dec2, _DeesHarnessChat, _mes
|
|
|
174910
175055
|
__decorateElement(_init87, 4, "permissions", _permissions_dec, _DeesHarnessChat, _permissions);
|
|
174911
175056
|
__decorateElement(_init87, 4, "status", _status_dec6, _DeesHarnessChat, _status6);
|
|
174912
175057
|
__decorateElement(_init87, 4, "usage", _usage_dec2, _DeesHarnessChat, _usage2);
|
|
175058
|
+
__decorateElement(_init87, 4, "todos", _todos_dec2, _DeesHarnessChat, _todos2);
|
|
175059
|
+
__decorateElement(_init87, 4, "showTodosPanel", _showTodosPanel_dec, _DeesHarnessChat, _showTodosPanel);
|
|
174913
175060
|
__decorateElement(_init87, 4, "heading", _heading_dec6, _DeesHarnessChat, _heading6);
|
|
174914
175061
|
__decorateElement(_init87, 4, "subheading", _subheading_dec, _DeesHarnessChat, _subheading);
|
|
174915
175062
|
__decorateElement(_init87, 4, "showToolbar", _showToolbar_dec, _DeesHarnessChat, _showToolbar);
|
|
@@ -174940,6 +175087,32 @@ __publicField(_DeesHarnessChat, "styles", [
|
|
|
174940
175087
|
font-family: var(--dees-font-family);
|
|
174941
175088
|
color: var(--dees-color-text-primary);
|
|
174942
175089
|
background: var(--dees-color-bg-primary);
|
|
175090
|
+
container-type: inline-size;
|
|
175091
|
+
}
|
|
175092
|
+
|
|
175093
|
+
.chatBody {
|
|
175094
|
+
flex: 1;
|
|
175095
|
+
min-height: 0;
|
|
175096
|
+
display: flex;
|
|
175097
|
+
}
|
|
175098
|
+
|
|
175099
|
+
.todosPanel {
|
|
175100
|
+
flex: 0 0 232px;
|
|
175101
|
+
min-width: 0;
|
|
175102
|
+
overflow-y: auto;
|
|
175103
|
+
scrollbar-width: thin;
|
|
175104
|
+
scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
|
|
175105
|
+
padding: var(--dees-spacing-sm) var(--dees-spacing-md);
|
|
175106
|
+
border-left: 1px solid var(--dees-color-border-subtle);
|
|
175107
|
+
background: var(--dees-color-bg-secondary);
|
|
175108
|
+
}
|
|
175109
|
+
|
|
175110
|
+
/* narrow hosts (e.g. a sidebar chat) drop the panel; todo tool cards
|
|
175111
|
+
in the transcript still carry the same information */
|
|
175112
|
+
@container (max-width: 520px) {
|
|
175113
|
+
.todosPanel {
|
|
175114
|
+
display: none;
|
|
175115
|
+
}
|
|
174943
175116
|
}
|
|
174944
175117
|
|
|
174945
175118
|
.toolbar {
|
|
@@ -174982,7 +175155,7 @@ __publicField(_DeesHarnessChat, "styles", [
|
|
|
174982
175155
|
flex: 0 0 auto;
|
|
174983
175156
|
}
|
|
174984
175157
|
|
|
174985
|
-
dees-harness-message-list {
|
|
175158
|
+
.chatBody dees-harness-message-list {
|
|
174986
175159
|
flex: 1;
|
|
174987
175160
|
min-height: 0;
|
|
174988
175161
|
}
|
|
@@ -195088,7 +195261,7 @@ init_group_runtime();
|
|
|
195088
195261
|
// ts_web/00_commitinfo_data.ts
|
|
195089
195262
|
var commitinfo = {
|
|
195090
195263
|
name: "@design.estate/dees-catalog",
|
|
195091
|
-
version: "3.
|
|
195264
|
+
version: "3.93.0",
|
|
195092
195265
|
description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
|
|
195093
195266
|
};
|
|
195094
195267
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.93.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
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
-
import type { IHarnessAttachment, IHarnessMessage, IHarnessPermissionRequest, IHarnessStatus, IHarnessUsage, THarnessStreamDelta } from '../interfaces.js';
|
|
2
|
+
import type { IHarnessAttachment, IHarnessMessage, IHarnessPermissionRequest, IHarnessStatus, IHarnessTodoItem, IHarnessUsage, THarnessStreamDelta } from '../interfaces.js';
|
|
3
3
|
import { DeesHarnessToolRegistry } from '../toolregistry.js';
|
|
4
4
|
import '../dees-harness-permission-card/dees-harness-permission-card.js';
|
|
5
5
|
import '../dees-harness-status/dees-harness-status.js';
|
|
6
|
+
import '../dees-harness-todos/dees-harness-todos.js';
|
|
6
7
|
import '../dees-harness-usage/dees-harness-usage.js';
|
|
7
8
|
import '../../00group-button/dees-button/dees-button.js';
|
|
8
9
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
@@ -26,6 +27,13 @@ export declare class DeesHarnessChat extends DeesElement {
|
|
|
26
27
|
accessor permissions: IHarnessPermissionRequest[];
|
|
27
28
|
accessor status: IHarnessStatus;
|
|
28
29
|
accessor usage: IHarnessUsage;
|
|
30
|
+
/**
|
|
31
|
+
* Current task list for the side panel. When empty, the panel derives it
|
|
32
|
+
* from the newest todo tool call in `messages` (registry kind 'todo'), so
|
|
33
|
+
* hosts that stream todowrite calls get the sidebar for free.
|
|
34
|
+
*/
|
|
35
|
+
accessor todos: IHarnessTodoItem[];
|
|
36
|
+
accessor showTodosPanel: boolean;
|
|
29
37
|
accessor heading: string;
|
|
30
38
|
accessor subheading: string;
|
|
31
39
|
accessor showToolbar: boolean;
|
|
@@ -47,6 +55,7 @@ export declare class DeesHarnessChat extends DeesElement {
|
|
|
47
55
|
focusComposer(): Promise<void>;
|
|
48
56
|
clearComposer(): void;
|
|
49
57
|
scrollToBottom(force?: boolean): void;
|
|
58
|
+
get effectiveTodos(): IHarnessTodoItem[];
|
|
50
59
|
private get listElement();
|
|
51
60
|
private get composerElement();
|
|
52
61
|
render(): TemplateResult;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { html } from '@design.estate/dees-element';
|
|
2
|
-
import { harnessDemoConversation
|
|
2
|
+
import { harnessDemoConversation } from '../harness.demodata.js';
|
|
3
3
|
const toolShowcase = () => {
|
|
4
4
|
const now = Date.now();
|
|
5
5
|
return [
|
|
@@ -76,28 +76,139 @@ const pendingPermission = {
|
|
|
76
76
|
};
|
|
77
77
|
let stopStream;
|
|
78
78
|
const chatOf = (event) => event.target.closest('.chatDemo')?.querySelector('dees-harness-chat') ?? null;
|
|
79
|
+
/**
|
|
80
|
+
* Streams a realistic turn: reasoning, a todo write, a test run, a file
|
|
81
|
+
* edit rendered as a diff, then the streamed summary text.
|
|
82
|
+
*/
|
|
79
83
|
const simulate = (event) => {
|
|
80
84
|
const chat = chatOf(event);
|
|
81
85
|
if (!chat)
|
|
82
86
|
return;
|
|
83
87
|
stopStream?.();
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
streaming: true,
|
|
88
|
+
const runId = Date.now();
|
|
89
|
+
const cancels = [];
|
|
90
|
+
const at = (ms, action) => {
|
|
91
|
+
const timeout = setTimeout(action, ms);
|
|
92
|
+
cancels.push(() => clearTimeout(timeout));
|
|
90
93
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
stopStream = () => {
|
|
95
|
+
for (const cancel of cancels)
|
|
96
|
+
cancel();
|
|
97
|
+
chat.status = { type: 'idle' };
|
|
98
|
+
};
|
|
99
|
+
const pushMessage = (message) => {
|
|
100
|
+
chat.messages = [...chat.messages, message];
|
|
101
|
+
};
|
|
102
|
+
const updateTool = (messageId, tool) => {
|
|
103
|
+
chat.applyDelta({ type: 'tool-update', messageId, tool: tool });
|
|
104
|
+
};
|
|
105
|
+
chat.status = { type: 'busy', message: 'Planning…' };
|
|
106
|
+
// 1) reasoning streams first
|
|
107
|
+
const reasoningMessage = {
|
|
108
|
+
id: `sim-${runId}-reasoning`, role: 'assistant', text: '', createdAt: Date.now(), streaming: true,
|
|
109
|
+
};
|
|
110
|
+
pushMessage(reasoningMessage);
|
|
111
|
+
chat.applyDelta({ type: 'reasoning-start', messageId: reasoningMessage.id, partId: 'r1', startedAt: Date.now() });
|
|
112
|
+
const reasoningText = 'The cache key includes the locale list, so every rollout re-crawls. Plan: track the fix as todos, run the tests, then pin the key to the route manifest.';
|
|
113
|
+
reasoningText.split(' ').forEach((word, index) => {
|
|
114
|
+
at(80 + index * 45, () => chat.applyDelta({ type: 'reasoning', messageId: reasoningMessage.id, partId: 'r1', delta: word + ' ' }));
|
|
115
|
+
});
|
|
116
|
+
const reasoningDoneAt = 80 + reasoningText.split(' ').length * 45 + 150;
|
|
117
|
+
at(reasoningDoneAt, () => {
|
|
118
|
+
chat.applyDelta({ type: 'reasoning-end', messageId: reasoningMessage.id, partId: 'r1', endedAt: Date.now() });
|
|
119
|
+
chat.applyDelta({ type: 'message-end', messageId: reasoningMessage.id });
|
|
120
|
+
});
|
|
121
|
+
// 2) todo write
|
|
122
|
+
const todoId = `sim-${runId}-todos`;
|
|
123
|
+
at(reasoningDoneAt + 300, () => {
|
|
124
|
+
chat.status = { type: 'busy', message: 'Updating task list…' };
|
|
125
|
+
pushMessage({
|
|
126
|
+
id: todoId, role: 'tool', text: '', createdAt: Date.now(),
|
|
127
|
+
toolCall: {
|
|
128
|
+
id: `${todoId}-call`, name: 'todowrite', status: 'running',
|
|
129
|
+
input: { todos: [
|
|
130
|
+
{ content: 'Pin sitemap cache key to route manifest hash', status: 'in_progress' },
|
|
131
|
+
{ content: 'Run the sitemap test suite', status: 'pending' },
|
|
132
|
+
{ content: 'Apply the cache-key patch', status: 'pending' },
|
|
133
|
+
{ content: 'Verify staging timings', status: 'pending' },
|
|
134
|
+
] },
|
|
135
|
+
startedAt: Date.now(),
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
at(reasoningDoneAt + 1000, () => updateTool(todoId, { id: `${todoId}-call`, status: 'completed', finishedAt: Date.now() }));
|
|
140
|
+
// 3) test run
|
|
141
|
+
const testId = `sim-${runId}-test`;
|
|
142
|
+
at(reasoningDoneAt + 1400, () => {
|
|
143
|
+
chat.status = { type: 'busy', message: 'Running tests…' };
|
|
144
|
+
pushMessage({
|
|
145
|
+
id: testId, role: 'tool', text: '', createdAt: Date.now(),
|
|
146
|
+
toolCall: {
|
|
147
|
+
id: `${testId}-call`, name: 'run_command', status: 'running',
|
|
148
|
+
input: { command: 'pnpm test --filter sitemap', cwd: '/srv/app' },
|
|
149
|
+
startedAt: Date.now(),
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
at(reasoningDoneAt + 3200, () => updateTool(testId, {
|
|
154
|
+
id: `${testId}-call`, status: 'completed',
|
|
155
|
+
output: { exitCode: 0, stdout: '14 tests passed\n0 failed' },
|
|
156
|
+
finishedAt: Date.now(),
|
|
157
|
+
}));
|
|
158
|
+
// 4) file edit rendered as a diff
|
|
159
|
+
const editId = `sim-${runId}-edit`;
|
|
160
|
+
at(reasoningDoneAt + 3600, () => {
|
|
161
|
+
chat.status = { type: 'busy', message: 'Applying the patch…' };
|
|
162
|
+
pushMessage({
|
|
163
|
+
id: editId, role: 'tool', text: '', createdAt: Date.now(),
|
|
164
|
+
toolCall: {
|
|
165
|
+
id: `${editId}-call`, name: 'write_file', status: 'running',
|
|
166
|
+
input: {
|
|
167
|
+
path: '/srv/app/src/jobs/sitemap.job.ts',
|
|
168
|
+
oldContent: 'const cacheKey = hash(locales);\nconst ttl = 3600;',
|
|
169
|
+
content: 'const cacheKey = hash(routeManifest);\nconst ttl = 3600;',
|
|
170
|
+
},
|
|
171
|
+
startedAt: Date.now(),
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
at(reasoningDoneAt + 4600, () => updateTool(editId, { id: `${editId}-call`, status: 'completed', finishedAt: Date.now() }));
|
|
176
|
+
// 5) updated todos, then the streamed summary
|
|
177
|
+
const todoDoneId = `sim-${runId}-todos-2`;
|
|
178
|
+
at(reasoningDoneAt + 5000, () => {
|
|
179
|
+
pushMessage({
|
|
180
|
+
id: todoDoneId, role: 'tool', text: '', createdAt: Date.now(),
|
|
181
|
+
toolCall: {
|
|
182
|
+
id: `${todoDoneId}-call`, name: 'todowrite', status: 'completed',
|
|
183
|
+
input: { todos: [
|
|
184
|
+
{ content: 'Pin sitemap cache key to route manifest hash', status: 'completed' },
|
|
185
|
+
{ content: 'Run the sitemap test suite', status: 'completed' },
|
|
186
|
+
{ content: 'Apply the cache-key patch', status: 'completed' },
|
|
187
|
+
{ content: 'Verify staging timings', status: 'in_progress' },
|
|
188
|
+
] },
|
|
189
|
+
startedAt: Date.now(), finishedAt: Date.now(),
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
const summaryId = `sim-${runId}-summary`;
|
|
194
|
+
at(reasoningDoneAt + 5400, () => {
|
|
195
|
+
chat.status = { type: 'busy', message: 'Responding…' };
|
|
196
|
+
pushMessage({ id: summaryId, role: 'assistant', text: '', createdAt: Date.now(), streaming: true });
|
|
197
|
+
const summary = 'Patched `sitemap.job.ts` to key the cache on the **route manifest hash** — tests pass (14/14). Staging verification is the last open task.';
|
|
198
|
+
let offset = 0;
|
|
199
|
+
const interval = setInterval(() => {
|
|
200
|
+
const chunk = summary.slice(offset, offset + 6);
|
|
201
|
+
offset += 6;
|
|
202
|
+
if (!chunk) {
|
|
203
|
+
clearInterval(interval);
|
|
204
|
+
chat.applyDelta({ type: 'message-end', messageId: summaryId, usage: { inputTokens: 2100, outputTokens: 260, totalTokens: 2360 } });
|
|
97
205
|
chat.status = { type: 'idle' };
|
|
206
|
+
return;
|
|
98
207
|
}
|
|
99
|
-
|
|
100
|
-
|
|
208
|
+
chat.applyDelta({ type: 'text', messageId: summaryId, delta: chunk });
|
|
209
|
+
}, 40);
|
|
210
|
+
cancels.push(() => clearInterval(interval));
|
|
211
|
+
});
|
|
101
212
|
};
|
|
102
213
|
const askPermission = (event) => {
|
|
103
214
|
const chat = chatOf(event);
|
|
@@ -180,4 +291,4 @@ export const demoFunc = () => html `
|
|
|
180
291
|
></dees-harness-chat>
|
|
181
292
|
</div>
|
|
182
293
|
`;
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNoYXQuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLWNoYXQvZGVlcy1oYXJuZXNzLWNoYXQuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekYsTUFBTSxZQUFZLEdBQUcsR0FBc0IsRUFBRTtJQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsT0FBTztRQUNMO1lBQ0UsRUFBRSxFQUFFLFNBQVM7WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUUsUUFBUTtnQkFDWixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUNqRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtnQkFDbEQsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO2dCQUN4QixVQUFVLEVBQUUsR0FBRyxHQUFHLE9BQU87YUFDMUI7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLFNBQVM7WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUUsUUFBUTtnQkFDWixJQUFJLEVB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
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNoYXQuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLWNoYXQvZGVlcy1oYXJuZXNzLWNoYXQuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsTUFBTSxZQUFZLEdBQUcsR0FBc0IsRUFBRTtJQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsT0FBTztRQUNMO1lBQ0UsRUFBRSxFQUFFLFNBQVM7WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUUsUUFBUTtnQkFDWixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUNqRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtnQkFDbEQsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO2dCQUN4QixVQUFVLEVBQUUsR0FBRyxHQUFHLE9BQU87YUFDMUI7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLFNBQVM7WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUUsUUFBUTtnQkFDWixJQUFJLEVBQUUsWUFBWTtnQkFD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
|