@hadooppei/hwcode 1.0.22 → 1.0.24
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.
|
@@ -257,7 +257,6 @@ async function runReview(message: Extract<KnowledgeWorkerOutput, { type: "review
|
|
|
257
257
|
reasoningEffort: "low",
|
|
258
258
|
cacheRetention: "none",
|
|
259
259
|
temperature: 0,
|
|
260
|
-
maxTokens: KNOWLEDGE_RUNTIME_DEFAULTS.review.maxOutputTokens,
|
|
261
260
|
timeoutMs: KNOWLEDGE_RUNTIME_DEFAULTS.review.requestTimeoutMs,
|
|
262
261
|
maxRetries: 0,
|
|
263
262
|
onPayload: () => { setRequestPhase("awaiting-http-response"); },
|
|
@@ -270,8 +269,15 @@ async function runReview(message: Extract<KnowledgeWorkerOutput, { type: "review
|
|
|
270
269
|
if (response.stopReason === "error" || response.stopReason === "aborted") {
|
|
271
270
|
throw new Error(response.errorMessage ?? `knowledge-review-model-${response.stopReason}`);
|
|
272
271
|
}
|
|
272
|
+
const responseDetail = [
|
|
273
|
+
`stopReason=${response.stopReason}`,
|
|
274
|
+
`contentTypes=${response.content.map((item) => item.type).join(",") || "none"}`,
|
|
275
|
+
`outputTokens=${response.usage.output}`,
|
|
276
|
+
].join("; ");
|
|
277
|
+
if (response.stopReason === "length") throw new Error(`knowledge-review-output-truncated; ${responseDetail}`);
|
|
273
278
|
const raw = response.content.filter((item): item is { type: "text"; text: string } => item.type === "text")
|
|
274
279
|
.map((item) => item.text).join("\n");
|
|
280
|
+
if (!raw.trim()) throw new Error(`knowledge-review-model-returned-no-text; ${responseDetail}`);
|
|
275
281
|
post({ type: "review_result", leaderToken: message.leaderToken, requestId: message.requestId, raw });
|
|
276
282
|
} catch (error) {
|
|
277
283
|
const baseReason = review?.controller.signal.aborted
|
|
@@ -28,6 +28,7 @@ type OpenAIModel = Model<"openai-completions">;
|
|
|
28
28
|
interface RemoteModel {
|
|
29
29
|
id: string;
|
|
30
30
|
name?: string;
|
|
31
|
+
reasoning?: boolean;
|
|
31
32
|
input?: ModelInput[];
|
|
32
33
|
contextWindow?: number;
|
|
33
34
|
}
|
|
@@ -69,7 +70,7 @@ function toPiModel(
|
|
|
69
70
|
api: "openai-completions",
|
|
70
71
|
provider: provider.id,
|
|
71
72
|
baseUrl,
|
|
72
|
-
reasoning: override?.reasoning ?? defaults?.reasoning ?? false,
|
|
73
|
+
reasoning: override?.reasoning ?? defaults?.reasoning ?? remote.reasoning ?? false,
|
|
73
74
|
input: override?.input ?? remote.input ?? defaults?.input ?? ["text"],
|
|
74
75
|
contextWindow,
|
|
75
76
|
maxTokens: Math.min(maxTokens, contextWindow),
|
|
@@ -104,7 +105,7 @@ function remoteContextWindow(model: Record<string, unknown>): number | undefined
|
|
|
104
105
|
return undefined;
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
function parseRemoteModels(payload: unknown): RemoteModel[] {
|
|
108
|
+
export function parseRemoteModels(payload: unknown): RemoteModel[] {
|
|
108
109
|
const entries = Array.isArray(payload)
|
|
109
110
|
? payload
|
|
110
111
|
: isRecord(payload) && Array.isArray(payload.data)
|
|
@@ -122,6 +123,7 @@ function parseRemoteModels(payload: unknown): RemoteModel[] {
|
|
|
122
123
|
models.push({
|
|
123
124
|
id,
|
|
124
125
|
name: typeof entry.name === "string" && entry.name.trim() ? entry.name.trim() : undefined,
|
|
126
|
+
reasoning: typeof entry.reasoning === "boolean" ? entry.reasoning : isRecord(entry.reasoning) || undefined,
|
|
125
127
|
input: remoteInput(entry),
|
|
126
128
|
contextWindow: remoteContextWindow(entry),
|
|
127
129
|
});
|