@hermespilot/link 0.8.1-beta.4 → 0.8.2
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.
|
@@ -7721,7 +7721,7 @@ function isConversationMissingError(error) {
|
|
|
7721
7721
|
}
|
|
7722
7722
|
|
|
7723
7723
|
// src/constants.ts
|
|
7724
|
-
var LINK_VERSION = "0.8.
|
|
7724
|
+
var LINK_VERSION = "0.8.2";
|
|
7725
7725
|
var LINK_COMMAND = "hermeslink";
|
|
7726
7726
|
var LINK_DEFAULT_PORT = 52379;
|
|
7727
7727
|
var LINK_RUNTIME_DIR_NAME = ".hermeslink";
|
|
@@ -29186,7 +29186,13 @@ ${details.join("\n")}` : localizedEmptyHermesResponseMessage(language);
|
|
|
29186
29186
|
});
|
|
29187
29187
|
if (messageId) {
|
|
29188
29188
|
if (isReasoningEvent) {
|
|
29189
|
-
await this.appendThinkingDelta(
|
|
29189
|
+
await this.appendThinkingDelta(
|
|
29190
|
+
conversationId,
|
|
29191
|
+
runId,
|
|
29192
|
+
messageId,
|
|
29193
|
+
event,
|
|
29194
|
+
conversationEvent.created_at
|
|
29195
|
+
);
|
|
29190
29196
|
} else {
|
|
29191
29197
|
await this.persistAgentEventProjection(
|
|
29192
29198
|
conversationId,
|
|
@@ -29452,7 +29458,7 @@ ${details.join("\n")}` : localizedEmptyHermesResponseMessage(language);
|
|
|
29452
29458
|
extracted.references
|
|
29453
29459
|
);
|
|
29454
29460
|
}
|
|
29455
|
-
async appendThinkingDelta(conversationId, runId, messageId, event) {
|
|
29461
|
+
async appendThinkingDelta(conversationId, runId, messageId, event, updatedAt) {
|
|
29456
29462
|
const delta = readDelta(event.payload);
|
|
29457
29463
|
if (!delta) {
|
|
29458
29464
|
return;
|
|
@@ -29463,7 +29469,27 @@ ${details.join("\n")}` : localizedEmptyHermesResponseMessage(language);
|
|
|
29463
29469
|
);
|
|
29464
29470
|
const hasAssistantText = assistant != null && messageText2(assistant).trim().length > 0;
|
|
29465
29471
|
const run = snapshot.runs.find((item) => item.id === runId);
|
|
29466
|
-
if (!assistant ||
|
|
29472
|
+
if (!assistant || run?.status !== "running") {
|
|
29473
|
+
return;
|
|
29474
|
+
}
|
|
29475
|
+
const occurredAt = updatedAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
29476
|
+
if (isInlineReasoningDeltaEvent(event.payloadType)) {
|
|
29477
|
+
appendThinkingEventBlock(
|
|
29478
|
+
assistant,
|
|
29479
|
+
{
|
|
29480
|
+
id: `reasoning_${this.reasoningDeltaSegmentId(event) ?? "delta"}`,
|
|
29481
|
+
kind: "thinking_delta",
|
|
29482
|
+
title: "Thinking",
|
|
29483
|
+
status: "running",
|
|
29484
|
+
created_at: occurredAt,
|
|
29485
|
+
text: delta
|
|
29486
|
+
},
|
|
29487
|
+
occurredAt
|
|
29488
|
+
);
|
|
29489
|
+
assistant.updated_at = occurredAt;
|
|
29490
|
+
await this.deps.writeSnapshot(conversationId, snapshot);
|
|
29491
|
+
}
|
|
29492
|
+
if (hasAssistantText) {
|
|
29467
29493
|
return;
|
|
29468
29494
|
}
|
|
29469
29495
|
await this.deps.appendEvent(conversationId, {
|
|
@@ -29483,8 +29509,11 @@ ${details.join("\n")}` : localizedEmptyHermesResponseMessage(language);
|
|
|
29483
29509
|
});
|
|
29484
29510
|
}
|
|
29485
29511
|
thinkingSegmentId(runId, event) {
|
|
29512
|
+
return this.reasoningDeltaSegmentId(event) ?? `${event.payloadType}:${runId}`;
|
|
29513
|
+
}
|
|
29514
|
+
reasoningDeltaSegmentId(event) {
|
|
29486
29515
|
const payload = event.payload;
|
|
29487
|
-
return readString20(payload, "segment_id") ?? readString20(payload, "segmentId") ?? readString20(payload, "id") ?? readString20(payload, "tool_call_id") ?? readString20(payload, "tool_id") ??
|
|
29516
|
+
return readString20(payload, "segment_id") ?? readString20(payload, "segmentId") ?? readString20(payload, "id") ?? readString20(payload, "tool_call_id") ?? readString20(payload, "tool_id") ?? null;
|
|
29488
29517
|
}
|
|
29489
29518
|
async runRequestsAppDelivery(conversationId, runId) {
|
|
29490
29519
|
const snapshot = await this.deps.readSnapshot(conversationId).catch(() => null);
|
|
@@ -30499,9 +30528,12 @@ function appendAgentEventBlock2(message, event, updatedAt) {
|
|
|
30499
30528
|
if (block.type !== "agent_events") {
|
|
30500
30529
|
return false;
|
|
30501
30530
|
}
|
|
30531
|
+
if (!agentEventBlockAcceptsEvent(block, event)) {
|
|
30532
|
+
return false;
|
|
30533
|
+
}
|
|
30502
30534
|
return upsertAgentEventProjection(block.events, event).length === block.events.length;
|
|
30503
30535
|
});
|
|
30504
|
-
const targetIndex = matchingIndex >= 0 ? matchingIndex : blocks.at(-1)?.type === "agent_events" ? blocks.length - 1 : -1;
|
|
30536
|
+
const targetIndex = matchingIndex >= 0 ? matchingIndex : blocks.at(-1)?.type === "agent_events" && agentEventBlockAcceptsEvent(blocks.at(-1), event) ? blocks.length - 1 : -1;
|
|
30505
30537
|
if (targetIndex >= 0) {
|
|
30506
30538
|
const block = blocks[targetIndex];
|
|
30507
30539
|
if (block.type === "agent_events") {
|
|
@@ -30522,6 +30554,68 @@ function appendAgentEventBlock2(message, event, updatedAt) {
|
|
|
30522
30554
|
}
|
|
30523
30555
|
message.blocks = blocks;
|
|
30524
30556
|
}
|
|
30557
|
+
function appendThinkingEventBlock(message, event, updatedAt) {
|
|
30558
|
+
const blocks = [...message.blocks ?? []];
|
|
30559
|
+
const lastBlock = blocks.at(-1);
|
|
30560
|
+
const targetIndex = lastBlock?.type === "agent_events" && agentEventBlockAcceptsEvent(lastBlock, event) ? blocks.length - 1 : -1;
|
|
30561
|
+
if (targetIndex >= 0) {
|
|
30562
|
+
const block = blocks[targetIndex];
|
|
30563
|
+
if (block.type === "agent_events") {
|
|
30564
|
+
blocks[targetIndex] = {
|
|
30565
|
+
...block,
|
|
30566
|
+
events: upsertThinkingDeltaEvent(block.events, event),
|
|
30567
|
+
updated_at: updatedAt
|
|
30568
|
+
};
|
|
30569
|
+
}
|
|
30570
|
+
} else {
|
|
30571
|
+
blocks.push({
|
|
30572
|
+
id: `thinking_${blocks.length + 1}`,
|
|
30573
|
+
type: "agent_events",
|
|
30574
|
+
events: [event],
|
|
30575
|
+
created_at: updatedAt,
|
|
30576
|
+
updated_at: updatedAt
|
|
30577
|
+
});
|
|
30578
|
+
}
|
|
30579
|
+
message.blocks = blocks;
|
|
30580
|
+
}
|
|
30581
|
+
function agentEventBlockAcceptsEvent(block, event) {
|
|
30582
|
+
if (block.type !== "agent_events" || block.events.length === 0) {
|
|
30583
|
+
return true;
|
|
30584
|
+
}
|
|
30585
|
+
return block.events.every(
|
|
30586
|
+
(item) => isThinkingAgentEvent(item) === isThinkingAgentEvent(event)
|
|
30587
|
+
);
|
|
30588
|
+
}
|
|
30589
|
+
function upsertThinkingDeltaEvent(events, event) {
|
|
30590
|
+
const index = events.findIndex((item) => item.id === event.id);
|
|
30591
|
+
if (index < 0) {
|
|
30592
|
+
return [...events, event];
|
|
30593
|
+
}
|
|
30594
|
+
const previous = events[index];
|
|
30595
|
+
const copy = [...events];
|
|
30596
|
+
copy[index] = {
|
|
30597
|
+
...previous,
|
|
30598
|
+
...event,
|
|
30599
|
+
text: mergeThinkingText(previous.text ?? "", event.text ?? ""),
|
|
30600
|
+
created_at: previous.created_at
|
|
30601
|
+
};
|
|
30602
|
+
return copy;
|
|
30603
|
+
}
|
|
30604
|
+
function mergeThinkingText(previous, delta) {
|
|
30605
|
+
if (!delta) {
|
|
30606
|
+
return previous;
|
|
30607
|
+
}
|
|
30608
|
+
if (!previous || delta === previous) {
|
|
30609
|
+
return delta;
|
|
30610
|
+
}
|
|
30611
|
+
if (delta.startsWith(previous)) {
|
|
30612
|
+
return delta;
|
|
30613
|
+
}
|
|
30614
|
+
return `${previous}${delta}`;
|
|
30615
|
+
}
|
|
30616
|
+
function isThinkingAgentEvent(event) {
|
|
30617
|
+
return event.kind === "thinking_delta";
|
|
30618
|
+
}
|
|
30525
30619
|
function contextUsagePayloadForSnapshot(snapshot) {
|
|
30526
30620
|
const run = latestContextUsageRun(snapshot);
|
|
30527
30621
|
return run ? contextUsagePayload2(run) : null;
|
|
@@ -30577,7 +30671,10 @@ function reasoningEffortForRun(run) {
|
|
|
30577
30671
|
return effort;
|
|
30578
30672
|
}
|
|
30579
30673
|
function isReasoningStreamEvent(payloadType) {
|
|
30580
|
-
return payloadType === "reasoning.
|
|
30674
|
+
return payloadType === "reasoning.delta" || payloadType === "thinking.delta";
|
|
30675
|
+
}
|
|
30676
|
+
function isInlineReasoningDeltaEvent(payloadType) {
|
|
30677
|
+
return payloadType === "reasoning.delta";
|
|
30581
30678
|
}
|
|
30582
30679
|
function mergeRunUsage(previous, next) {
|
|
30583
30680
|
const nextContextWindow = next.context_window ?? previous?.context_window;
|
package/dist/cli/index.js
CHANGED
package/dist/http/app.js
CHANGED