gnhf 0.1.21 → 0.1.22
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/cli.mjs +66 -10
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -1082,6 +1082,20 @@ function buildClaudeArgs(prompt, extraArgs) {
|
|
|
1082
1082
|
...userSpecifiedPermissionMode ? [] : ["--dangerously-skip-permissions"]
|
|
1083
1083
|
];
|
|
1084
1084
|
}
|
|
1085
|
+
function toTokenUsage(usage) {
|
|
1086
|
+
return {
|
|
1087
|
+
inputTokens: (usage.input_tokens ?? 0) + (usage.cache_read_input_tokens ?? 0),
|
|
1088
|
+
outputTokens: usage.output_tokens ?? 0,
|
|
1089
|
+
cacheReadTokens: usage.cache_read_input_tokens ?? 0,
|
|
1090
|
+
cacheCreationTokens: usage.cache_creation_input_tokens ?? 0
|
|
1091
|
+
};
|
|
1092
|
+
}
|
|
1093
|
+
function isSameUsage(a, b) {
|
|
1094
|
+
return a.inputTokens === b.inputTokens && a.outputTokens === b.outputTokens && a.cacheReadTokens === b.cacheReadTokens && a.cacheCreationTokens === b.cacheCreationTokens;
|
|
1095
|
+
}
|
|
1096
|
+
function extendsUsage(next, previous) {
|
|
1097
|
+
return next.inputTokens >= previous.inputTokens && next.outputTokens >= previous.outputTokens && next.cacheReadTokens >= previous.cacheReadTokens && next.cacheCreationTokens >= previous.cacheCreationTokens && !isSameUsage(next, previous);
|
|
1098
|
+
}
|
|
1085
1099
|
var ClaudeAgent = class {
|
|
1086
1100
|
name = "claude";
|
|
1087
1101
|
bin;
|
|
@@ -1115,13 +1129,60 @@ var ClaudeAgent = class {
|
|
|
1115
1129
|
cacheReadTokens: 0,
|
|
1116
1130
|
cacheCreationTokens: 0
|
|
1117
1131
|
};
|
|
1132
|
+
const usageByMessageId = /* @__PURE__ */ new Map();
|
|
1133
|
+
let anonymousAssistantCount = 0;
|
|
1134
|
+
let lastAnonymousAssistantId = null;
|
|
1135
|
+
let lastAnonymousAssistantUsage = null;
|
|
1136
|
+
let pendingAnonymousAssistantUsage = null;
|
|
1118
1137
|
parseJSONLStream(child.stdout, logStream, (event) => {
|
|
1119
1138
|
if (event.type === "assistant") {
|
|
1120
1139
|
const msg = event.message;
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1140
|
+
const nextUsage = toTokenUsage(msg.usage);
|
|
1141
|
+
let messageId = msg.id;
|
|
1142
|
+
let previousUsage;
|
|
1143
|
+
if (messageId) {
|
|
1144
|
+
previousUsage = usageByMessageId.get(messageId);
|
|
1145
|
+
lastAnonymousAssistantId = null;
|
|
1146
|
+
lastAnonymousAssistantUsage = null;
|
|
1147
|
+
pendingAnonymousAssistantUsage = null;
|
|
1148
|
+
} else if (pendingAnonymousAssistantUsage && extendsUsage(nextUsage, pendingAnonymousAssistantUsage)) {
|
|
1149
|
+
messageId = `assistant-${anonymousAssistantCount++}`;
|
|
1150
|
+
previousUsage = pendingAnonymousAssistantUsage;
|
|
1151
|
+
cumulative.inputTokens += pendingAnonymousAssistantUsage.inputTokens;
|
|
1152
|
+
cumulative.outputTokens += pendingAnonymousAssistantUsage.outputTokens;
|
|
1153
|
+
cumulative.cacheReadTokens += pendingAnonymousAssistantUsage.cacheReadTokens;
|
|
1154
|
+
cumulative.cacheCreationTokens += pendingAnonymousAssistantUsage.cacheCreationTokens;
|
|
1155
|
+
usageByMessageId.set(messageId, pendingAnonymousAssistantUsage);
|
|
1156
|
+
pendingAnonymousAssistantUsage = null;
|
|
1157
|
+
lastAnonymousAssistantId = messageId;
|
|
1158
|
+
lastAnonymousAssistantUsage = nextUsage;
|
|
1159
|
+
} else if (lastAnonymousAssistantId && lastAnonymousAssistantUsage && extendsUsage(nextUsage, lastAnonymousAssistantUsage)) {
|
|
1160
|
+
messageId = lastAnonymousAssistantId;
|
|
1161
|
+
previousUsage = usageByMessageId.get(messageId);
|
|
1162
|
+
pendingAnonymousAssistantUsage = null;
|
|
1163
|
+
lastAnonymousAssistantUsage = nextUsage;
|
|
1164
|
+
} else if (lastAnonymousAssistantId && lastAnonymousAssistantUsage && isSameUsage(nextUsage, lastAnonymousAssistantUsage)) {
|
|
1165
|
+
messageId = lastAnonymousAssistantId;
|
|
1166
|
+
previousUsage = usageByMessageId.get(messageId);
|
|
1167
|
+
pendingAnonymousAssistantUsage ??= nextUsage;
|
|
1168
|
+
} else {
|
|
1169
|
+
messageId = `assistant-${anonymousAssistantCount++}`;
|
|
1170
|
+
pendingAnonymousAssistantUsage = null;
|
|
1171
|
+
lastAnonymousAssistantId = messageId;
|
|
1172
|
+
lastAnonymousAssistantUsage = nextUsage;
|
|
1173
|
+
}
|
|
1174
|
+
if (previousUsage) {
|
|
1175
|
+
cumulative.inputTokens += nextUsage.inputTokens - previousUsage.inputTokens;
|
|
1176
|
+
cumulative.outputTokens += nextUsage.outputTokens - previousUsage.outputTokens;
|
|
1177
|
+
cumulative.cacheReadTokens += nextUsage.cacheReadTokens - previousUsage.cacheReadTokens;
|
|
1178
|
+
cumulative.cacheCreationTokens += nextUsage.cacheCreationTokens - previousUsage.cacheCreationTokens;
|
|
1179
|
+
} else {
|
|
1180
|
+
cumulative.inputTokens += nextUsage.inputTokens;
|
|
1181
|
+
cumulative.outputTokens += nextUsage.outputTokens;
|
|
1182
|
+
cumulative.cacheReadTokens += nextUsage.cacheReadTokens;
|
|
1183
|
+
cumulative.cacheCreationTokens += nextUsage.cacheCreationTokens;
|
|
1184
|
+
}
|
|
1185
|
+
usageByMessageId.set(messageId, nextUsage);
|
|
1125
1186
|
onUsage?.({ ...cumulative });
|
|
1126
1187
|
if (onMessage) {
|
|
1127
1188
|
const content = msg.content;
|
|
@@ -1146,12 +1207,7 @@ var ClaudeAgent = class {
|
|
|
1146
1207
|
return;
|
|
1147
1208
|
}
|
|
1148
1209
|
const output = resultEvent.structured_output;
|
|
1149
|
-
const usage =
|
|
1150
|
-
inputTokens: (resultEvent.usage.input_tokens ?? 0) + (resultEvent.usage.cache_read_input_tokens ?? 0),
|
|
1151
|
-
outputTokens: resultEvent.usage.output_tokens ?? 0,
|
|
1152
|
-
cacheReadTokens: resultEvent.usage.cache_read_input_tokens ?? 0,
|
|
1153
|
-
cacheCreationTokens: resultEvent.usage.cache_creation_input_tokens ?? 0
|
|
1154
|
-
};
|
|
1210
|
+
const usage = toTokenUsage(resultEvent.usage);
|
|
1155
1211
|
onUsage?.(usage);
|
|
1156
1212
|
resolve({
|
|
1157
1213
|
output,
|