@ai-sdk/harness-claude-code 1.0.116 → 1.0.118
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/CHANGELOG.md +22 -0
- package/dist/bridge/index.mjs +41 -3
- package/dist/bridge/index.mjs.map +1 -1
- package/dist/index.d.ts +400 -0
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/src/bridge/create-emit-stream-event.ts +56 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @ai-sdk/harness-claude-code
|
|
2
2
|
|
|
3
|
+
## 1.0.118
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [215b25e]
|
|
8
|
+
- Updated dependencies [d4d96bf]
|
|
9
|
+
- Updated dependencies [3456e2c]
|
|
10
|
+
- Updated dependencies [c4e76de]
|
|
11
|
+
- @ai-sdk/provider-utils@5.0.43
|
|
12
|
+
- @ai-sdk/harness@1.0.114
|
|
13
|
+
|
|
14
|
+
## 1.0.117
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 5145174: fix(harness-claude-code): use message delta usage for per-step metering
|
|
19
|
+
- Updated dependencies [91c2128]
|
|
20
|
+
- Updated dependencies [2cd80b3]
|
|
21
|
+
- Updated dependencies [2fa5e0e]
|
|
22
|
+
- @ai-sdk/provider-utils@5.0.42
|
|
23
|
+
- @ai-sdk/harness@1.0.113
|
|
24
|
+
|
|
3
25
|
## 1.0.116
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/dist/bridge/index.mjs
CHANGED
|
@@ -701,6 +701,8 @@ function createClaudeStreamEventState() {
|
|
|
701
701
|
partialBlocks: /* @__PURE__ */ new Map(),
|
|
702
702
|
stepUsage: void 0,
|
|
703
703
|
pendingStepToolUseIds: /* @__PURE__ */ new Set(),
|
|
704
|
+
pendingStepAssistantUsage: void 0,
|
|
705
|
+
pendingStepDeltaUsage: void 0,
|
|
704
706
|
pendingStepUsage: void 0,
|
|
705
707
|
stepOpen: false,
|
|
706
708
|
mcpToolUseIds: /* @__PURE__ */ new Set(),
|
|
@@ -778,7 +780,7 @@ function createEmitStreamEvent({
|
|
|
778
780
|
return;
|
|
779
781
|
}
|
|
780
782
|
if (type === "assistant" && msg.message?.content) {
|
|
781
|
-
const usage =
|
|
783
|
+
const usage = toUsageRecord(msg.message.usage);
|
|
782
784
|
const toolUseIds = [];
|
|
783
785
|
let opensStep = false;
|
|
784
786
|
for (const block of msg.message.content) {
|
|
@@ -820,7 +822,10 @@ function createEmitStreamEvent({
|
|
|
820
822
|
}
|
|
821
823
|
if (opensStep || toolUseIds.length === 0) {
|
|
822
824
|
state.stepOpen = true;
|
|
823
|
-
if (usage)
|
|
825
|
+
if (usage) {
|
|
826
|
+
state.pendingStepAssistantUsage = usage;
|
|
827
|
+
updatePendingStepUsage(state);
|
|
828
|
+
}
|
|
824
829
|
}
|
|
825
830
|
return;
|
|
826
831
|
}
|
|
@@ -886,6 +891,8 @@ function emitFinishStep({
|
|
|
886
891
|
usage: usage ?? defaultUsage()
|
|
887
892
|
});
|
|
888
893
|
state.stepUsage = usage ?? state.stepUsage;
|
|
894
|
+
state.pendingStepAssistantUsage = void 0;
|
|
895
|
+
state.pendingStepDeltaUsage = void 0;
|
|
889
896
|
state.pendingStepUsage = void 0;
|
|
890
897
|
state.pendingStepToolUseIds = /* @__PURE__ */ new Set();
|
|
891
898
|
state.stepOpen = false;
|
|
@@ -920,7 +927,19 @@ function handleStreamEvent({
|
|
|
920
927
|
send,
|
|
921
928
|
toCommonName: toCommonName2
|
|
922
929
|
}) {
|
|
923
|
-
if (!event
|
|
930
|
+
if (!event) return;
|
|
931
|
+
if (event.type === "message_delta") {
|
|
932
|
+
const usage = toUsageRecord(event.usage);
|
|
933
|
+
if (usage) {
|
|
934
|
+
state.pendingStepDeltaUsage = mergeNonNullUsage(
|
|
935
|
+
state.pendingStepDeltaUsage,
|
|
936
|
+
usage
|
|
937
|
+
);
|
|
938
|
+
updatePendingStepUsage(state);
|
|
939
|
+
}
|
|
940
|
+
return;
|
|
941
|
+
}
|
|
942
|
+
if (typeof event.index !== "number") return;
|
|
924
943
|
const index = event.index;
|
|
925
944
|
const partialBlocks = state.partialBlocks;
|
|
926
945
|
if (event.type === "content_block_start") {
|
|
@@ -988,6 +1007,25 @@ function handleStreamEvent({
|
|
|
988
1007
|
}
|
|
989
1008
|
}
|
|
990
1009
|
}
|
|
1010
|
+
function toUsageRecord(usage) {
|
|
1011
|
+
return usage != null && typeof usage === "object" ? usage : void 0;
|
|
1012
|
+
}
|
|
1013
|
+
function mergeNonNullUsage(current, update) {
|
|
1014
|
+
const merged = { ...current };
|
|
1015
|
+
for (const [key, value] of Object.entries(update)) {
|
|
1016
|
+
if (value != null) {
|
|
1017
|
+
merged[key] = value;
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
return merged;
|
|
1021
|
+
}
|
|
1022
|
+
function updatePendingStepUsage(state) {
|
|
1023
|
+
const assistantUsage = state.pendingStepAssistantUsage;
|
|
1024
|
+
const deltaUsage = state.pendingStepDeltaUsage;
|
|
1025
|
+
state.pendingStepUsage = mapUsage(
|
|
1026
|
+
assistantUsage || deltaUsage ? { ...assistantUsage, ...deltaUsage } : void 0
|
|
1027
|
+
);
|
|
1028
|
+
}
|
|
991
1029
|
function isTextEntry(entry) {
|
|
992
1030
|
return entry != null && typeof entry === "object" && "text" in entry;
|
|
993
1031
|
}
|