@elench/testkit 0.1.103 → 0.1.104
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/lib/cli/assistant/providers/codex.mjs +6 -2
- package/lib/cli/assistant/state.mjs +20 -6
- package/node_modules/@elench/next-analysis/package.json +1 -1
- package/node_modules/@elench/testkit-bridge/package.json +2 -2
- package/node_modules/@elench/testkit-protocol/package.json +1 -1
- package/node_modules/@elench/ts-analysis/package.json +1 -1
- package/package.json +5 -5
|
@@ -182,7 +182,9 @@ function codexItemStartedEvent(item) {
|
|
|
182
182
|
function codexItemUpdatedEvent(item) {
|
|
183
183
|
if (!item || typeof item !== "object") return null;
|
|
184
184
|
if (item.type === "agent_message" && typeof item.text === "string") {
|
|
185
|
-
return providerAssistantDelta(item.text
|
|
185
|
+
return providerAssistantDelta(item.text, {
|
|
186
|
+
id: item.id || null,
|
|
187
|
+
});
|
|
186
188
|
}
|
|
187
189
|
if (item.type === "command_execution") {
|
|
188
190
|
return providerToolUpdate("command", {
|
|
@@ -204,7 +206,9 @@ function codexItemUpdatedEvent(item) {
|
|
|
204
206
|
function codexItemCompletedEvent(item) {
|
|
205
207
|
if (!item || typeof item !== "object") return null;
|
|
206
208
|
if (item.type === "agent_message" && typeof item.text === "string") {
|
|
207
|
-
return providerAssistantFinal(item.text
|
|
209
|
+
return providerAssistantFinal(item.text, {
|
|
210
|
+
id: item.id || null,
|
|
211
|
+
});
|
|
208
212
|
}
|
|
209
213
|
if (item.type === "command_execution") {
|
|
210
214
|
return providerToolEnd("command", {
|
|
@@ -635,6 +635,7 @@ function handleAssistantToolEvent(state, event, appendMessage) {
|
|
|
635
635
|
function createProviderTurnState() {
|
|
636
636
|
return {
|
|
637
637
|
assistantMessageId: null,
|
|
638
|
+
assistantMessageIdsByProviderItem: new Map(),
|
|
638
639
|
lastActivityText: null,
|
|
639
640
|
};
|
|
640
641
|
}
|
|
@@ -693,15 +694,19 @@ function handleProviderEvent(turn, event, { appendMessage, updateMessage, setSta
|
|
|
693
694
|
}
|
|
694
695
|
|
|
695
696
|
function appendAssistantDelta(turn, event, { appendMessage, updateMessage }) {
|
|
696
|
-
|
|
697
|
-
|
|
697
|
+
const messageKey = providerAssistantMessageKey(event);
|
|
698
|
+
let messageId = messageKey ? turn.assistantMessageIdsByProviderItem.get(messageKey) : turn.assistantMessageId;
|
|
699
|
+
if (!messageId) {
|
|
700
|
+
messageId = appendMessage({
|
|
698
701
|
role: "assistant",
|
|
699
702
|
status: "streaming",
|
|
700
703
|
provider: event.provider || null,
|
|
701
704
|
text: "",
|
|
702
705
|
});
|
|
706
|
+
if (messageKey) turn.assistantMessageIdsByProviderItem.set(messageKey, messageId);
|
|
707
|
+
else turn.assistantMessageId = messageId;
|
|
703
708
|
}
|
|
704
|
-
updateMessage(
|
|
709
|
+
updateMessage(messageId, (message) => ({
|
|
705
710
|
text: `${message.text || ""}${event.text || ""}`,
|
|
706
711
|
status: "streaming",
|
|
707
712
|
}));
|
|
@@ -709,20 +714,29 @@ function appendAssistantDelta(turn, event, { appendMessage, updateMessage }) {
|
|
|
709
714
|
|
|
710
715
|
function finalizeAssistantMessage(turn, event, { appendMessage, updateMessage }) {
|
|
711
716
|
const finalText = event.text || "";
|
|
712
|
-
|
|
713
|
-
|
|
717
|
+
const messageKey = providerAssistantMessageKey(event);
|
|
718
|
+
let messageId = messageKey ? turn.assistantMessageIdsByProviderItem.get(messageKey) : turn.assistantMessageId;
|
|
719
|
+
if (!messageId) {
|
|
720
|
+
messageId = appendMessage({
|
|
714
721
|
role: "assistant",
|
|
715
722
|
provider: event.provider || null,
|
|
716
723
|
text: finalText,
|
|
717
724
|
});
|
|
725
|
+
if (messageKey) turn.assistantMessageIdsByProviderItem.set(messageKey, messageId);
|
|
726
|
+
else turn.assistantMessageId = messageId;
|
|
718
727
|
return;
|
|
719
728
|
}
|
|
720
|
-
updateMessage(
|
|
729
|
+
updateMessage(messageId, (message) => ({
|
|
721
730
|
text: finalText || message.text || "",
|
|
722
731
|
status: null,
|
|
723
732
|
}));
|
|
724
733
|
}
|
|
725
734
|
|
|
735
|
+
function providerAssistantMessageKey(event) {
|
|
736
|
+
if (!event?.id) return null;
|
|
737
|
+
return `${event.provider || "provider"}:${event.id}`;
|
|
738
|
+
}
|
|
739
|
+
|
|
726
740
|
function appendProviderActivity(turn, message, { appendMessage, setStatus }) {
|
|
727
741
|
const text = String(message.text || "").trim();
|
|
728
742
|
if (!text) return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elench/testkit-bridge",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.104",
|
|
4
4
|
"description": "Browser bridge helpers for testkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@elench/testkit-protocol": "0.1.
|
|
25
|
+
"@elench/testkit-protocol": "0.1.104"
|
|
26
26
|
},
|
|
27
27
|
"private": false
|
|
28
28
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elench/testkit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.104",
|
|
4
4
|
"description": "Assistant-first CLI for running, inspecting, and debugging local testkit suites",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"workspaces": [
|
|
@@ -90,10 +90,10 @@
|
|
|
90
90
|
},
|
|
91
91
|
"dependencies": {
|
|
92
92
|
"@babel/code-frame": "^7.29.0",
|
|
93
|
-
"@elench/next-analysis": "0.1.
|
|
94
|
-
"@elench/testkit-bridge": "0.1.
|
|
95
|
-
"@elench/testkit-protocol": "0.1.
|
|
96
|
-
"@elench/ts-analysis": "0.1.
|
|
93
|
+
"@elench/next-analysis": "0.1.104",
|
|
94
|
+
"@elench/testkit-bridge": "0.1.104",
|
|
95
|
+
"@elench/testkit-protocol": "0.1.104",
|
|
96
|
+
"@elench/ts-analysis": "0.1.104",
|
|
97
97
|
"@oclif/core": "^4.10.6",
|
|
98
98
|
"esbuild": "^0.25.11",
|
|
99
99
|
"execa": "^9.5.0",
|