@oh-my-pi/pi-catalog 17.1.1 → 17.1.3
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 +6 -0
- package/dist/types/types.d.ts +9 -1
- package/package.json +3 -3
- package/src/compat/openai.ts +2 -0
- package/src/types.ts +9 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [17.1.3] - 2026-07-24
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Disabled the first-event watchdog for local OpenAI-compatible backends while retaining the 300-second inter-event watchdog, so long llama.cpp prompt prefill is not canceled and retried ([#6524](https://github.com/can1357/oh-my-pi/issues/6524)).
|
|
10
|
+
|
|
5
11
|
## [17.1.1] - 2026-07-24
|
|
6
12
|
|
|
7
13
|
### Added
|
package/dist/types/types.d.ts
CHANGED
|
@@ -303,6 +303,12 @@ export interface OpenAICompat {
|
|
|
303
303
|
* to opt a host out.
|
|
304
304
|
*/
|
|
305
305
|
toolSchemaFlavor?: "moonshot-mfjs" | "grammar" | "none";
|
|
306
|
+
/**
|
|
307
|
+
* Stream-watchdog first-event timeout in ms.
|
|
308
|
+
* Set to `0` to allow unbounded prompt processing. Default: auto-detected
|
|
309
|
+
* (disabled for local OpenAI-compatible backends).
|
|
310
|
+
*/
|
|
311
|
+
streamFirstEventTimeoutMs?: number;
|
|
306
312
|
/**
|
|
307
313
|
* Stream-watchdog idle-timeout floor in ms for slow reasoning hosts.
|
|
308
314
|
* Default: auto-detected (GLM coding-plan hosts, direct DeepSeek reasoning).
|
|
@@ -520,6 +526,8 @@ export interface ResolvedOpenAISharedCompat {
|
|
|
520
526
|
requiresAssistantContentForToolCalls: boolean;
|
|
521
527
|
stripDeepseekSpecialTokens: boolean;
|
|
522
528
|
streamMarkupHealingPattern?: OpenAIStreamMarkupHealingPattern;
|
|
529
|
+
/** See {@link OpenAICompat.streamFirstEventTimeoutMs}. */
|
|
530
|
+
streamFirstEventTimeoutMs?: number;
|
|
523
531
|
reasoningDeltasMayBeCumulative: boolean;
|
|
524
532
|
emptyLengthFinishIsContextError: boolean;
|
|
525
533
|
usesOpenAIToolCallIdLimit: boolean;
|
|
@@ -550,7 +558,7 @@ export interface ResolvedOpenAISharedCompat {
|
|
|
550
558
|
* `buildModel`; request handlers read fields and never detect, resolve, or
|
|
551
559
|
* allocate.
|
|
552
560
|
*/
|
|
553
|
-
export type ResolvedOpenAICompat = ResolvedOpenAISharedCompat & Required<Omit<OpenAICompat, "supportsDeveloperRole" | "supportsReasoningEffort" | "reasoningEffortMap" | "supportsReasoningParams" | "supportsSamplingParams" | "thinkingFormat" | "kimiApiFormat" | "reasoningDisableMode" | "omitReasoningEffort" | "includeEncryptedReasoning" | "filterReasoningHistory" | "disableReasoningOnForcedToolChoice" | "disableReasoningOnToolChoice" | "supportsToolChoice" | "supportsForcedToolChoice" | "supportsNamedToolChoice" | "reasoningContentField" | "requiresReasoningContentForToolCalls" | "requiresReasoningContentForAllAssistantTurns" | "allowsSyntheticReasoningContentForToolCalls" | "replayReasoningContent" | "qwenPreserveThinking" | "requiresThinkingAsText" | "requiresMistralToolIds" | "requiresToolResultName" | "requiresAssistantAfterToolResult" | "requiresAssistantContentForToolCalls" | "stripDeepseekSpecialTokens" | "streamMarkupHealingPattern" | "reasoningDeltasMayBeCumulative" | "emptyLengthFinishIsContextError" | "usesOpenAIToolCallIdLimit" | "promptCacheSessionHeader" | "supportsPromptCacheBreakpoints" | "promptCacheBreakpointTtl" | "openRouterRouting" | "isOpenRouterHost" | "supportsStrictMode" | "supportsLongPromptCacheRetention" | "alwaysSendMaxTokens" | "wireModelIdMode" | "vercelGatewayRouting" | "extraBody" | "toolStrictMode" | "toolSchemaFlavor" | "streamIdleTimeoutMs" | "cacheControlFormat" | "thinkingKeep" | "strictResponsesPairing" | "supportsImageDetailOriginal" | "enableGeminiThinkingLoopGuard" | "whenThinking">> & {
|
|
561
|
+
export type ResolvedOpenAICompat = ResolvedOpenAISharedCompat & Required<Omit<OpenAICompat, "supportsDeveloperRole" | "supportsReasoningEffort" | "reasoningEffortMap" | "supportsReasoningParams" | "supportsSamplingParams" | "thinkingFormat" | "kimiApiFormat" | "reasoningDisableMode" | "omitReasoningEffort" | "includeEncryptedReasoning" | "filterReasoningHistory" | "disableReasoningOnForcedToolChoice" | "disableReasoningOnToolChoice" | "supportsToolChoice" | "supportsForcedToolChoice" | "supportsNamedToolChoice" | "reasoningContentField" | "requiresReasoningContentForToolCalls" | "requiresReasoningContentForAllAssistantTurns" | "allowsSyntheticReasoningContentForToolCalls" | "replayReasoningContent" | "qwenPreserveThinking" | "requiresThinkingAsText" | "requiresMistralToolIds" | "requiresToolResultName" | "requiresAssistantAfterToolResult" | "requiresAssistantContentForToolCalls" | "stripDeepseekSpecialTokens" | "streamMarkupHealingPattern" | "reasoningDeltasMayBeCumulative" | "emptyLengthFinishIsContextError" | "usesOpenAIToolCallIdLimit" | "promptCacheSessionHeader" | "supportsPromptCacheBreakpoints" | "promptCacheBreakpointTtl" | "openRouterRouting" | "isOpenRouterHost" | "supportsStrictMode" | "supportsLongPromptCacheRetention" | "alwaysSendMaxTokens" | "wireModelIdMode" | "vercelGatewayRouting" | "extraBody" | "toolStrictMode" | "toolSchemaFlavor" | "streamFirstEventTimeoutMs" | "streamIdleTimeoutMs" | "cacheControlFormat" | "thinkingKeep" | "strictResponsesPairing" | "supportsImageDetailOriginal" | "enableGeminiThinkingLoopGuard" | "whenThinking">> & {
|
|
554
562
|
vercelGatewayRouting?: OpenAICompat["vercelGatewayRouting"];
|
|
555
563
|
extraBody?: OpenAICompat["extraBody"];
|
|
556
564
|
cacheControlFormat?: OpenAICompat["cacheControlFormat"];
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@oh-my-pi/pi-catalog",
|
|
4
|
-
"version": "17.1.
|
|
4
|
+
"version": "17.1.3",
|
|
5
5
|
"description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
|
|
6
6
|
"homepage": "https://omp.sh",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@bufbuild/protobuf": "^2.12.1",
|
|
37
|
-
"@oh-my-pi/pi-utils": "17.1.
|
|
37
|
+
"@oh-my-pi/pi-utils": "17.1.3",
|
|
38
38
|
"arktype": "2.2.3",
|
|
39
39
|
"zod": "^4"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@oh-my-pi/pi-ai": "17.1.
|
|
42
|
+
"@oh-my-pi/pi-ai": "17.1.3",
|
|
43
43
|
"@types/bun": "^1.3.14"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
package/src/compat/openai.ts
CHANGED
|
@@ -574,6 +574,7 @@ export function buildOpenAICompat(spec: ModelSpec<"openai-completions">): Resolv
|
|
|
574
574
|
// to Moonshot verbatim, which 400s on non-MFJS constructs.
|
|
575
575
|
toolSchemaFlavor:
|
|
576
576
|
isMoonshotNative || isKimiModel ? "moonshot-mfjs" : isLocalOpenAICompatBackend ? "grammar" : undefined,
|
|
577
|
+
streamFirstEventTimeoutMs: isLocalServingBackend ? 0 : undefined,
|
|
577
578
|
streamIdleTimeoutMs,
|
|
578
579
|
stripDeepseekSpecialTokens:
|
|
579
580
|
isDeepseekModelIdOrName(spec.id) && (provider === "nvidia" || provider === "deepseek"),
|
|
@@ -723,6 +724,7 @@ export function buildOpenAIResponsesCompat(spec: OpenAIResponsesSpecLike): Resol
|
|
|
723
724
|
emptyLengthFinishIsContextError: spec.provider === "ollama",
|
|
724
725
|
usesOpenAIToolCallIdLimit: spec.provider === "openai",
|
|
725
726
|
promptCacheSessionHeader: spec.provider === "xai-oauth" ? "x-grok-conv-id" : undefined,
|
|
727
|
+
streamFirstEventTimeoutMs: isLocalServingBackend ? 0 : spec.compat?.streamFirstEventTimeoutMs,
|
|
726
728
|
streamIdleTimeoutMs: isLocalServingBackend
|
|
727
729
|
? LOCAL_OPENAI_COMPAT_STREAM_IDLE_TIMEOUT_MS
|
|
728
730
|
: spec.compat?.streamIdleTimeoutMs,
|
package/src/types.ts
CHANGED
|
@@ -341,6 +341,12 @@ export interface OpenAICompat {
|
|
|
341
341
|
* to opt a host out.
|
|
342
342
|
*/
|
|
343
343
|
toolSchemaFlavor?: "moonshot-mfjs" | "grammar" | "none";
|
|
344
|
+
/**
|
|
345
|
+
* Stream-watchdog first-event timeout in ms.
|
|
346
|
+
* Set to `0` to allow unbounded prompt processing. Default: auto-detected
|
|
347
|
+
* (disabled for local OpenAI-compatible backends).
|
|
348
|
+
*/
|
|
349
|
+
streamFirstEventTimeoutMs?: number;
|
|
344
350
|
/**
|
|
345
351
|
* Stream-watchdog idle-timeout floor in ms for slow reasoning hosts.
|
|
346
352
|
* Default: auto-detected (GLM coding-plan hosts, direct DeepSeek reasoning).
|
|
@@ -565,6 +571,8 @@ export interface ResolvedOpenAISharedCompat {
|
|
|
565
571
|
requiresAssistantContentForToolCalls: boolean;
|
|
566
572
|
stripDeepseekSpecialTokens: boolean;
|
|
567
573
|
streamMarkupHealingPattern?: OpenAIStreamMarkupHealingPattern;
|
|
574
|
+
/** See {@link OpenAICompat.streamFirstEventTimeoutMs}. */
|
|
575
|
+
streamFirstEventTimeoutMs?: number;
|
|
568
576
|
reasoningDeltasMayBeCumulative: boolean;
|
|
569
577
|
emptyLengthFinishIsContextError: boolean;
|
|
570
578
|
usesOpenAIToolCallIdLimit: boolean;
|
|
@@ -645,6 +653,7 @@ export type ResolvedOpenAICompat = ResolvedOpenAISharedCompat &
|
|
|
645
653
|
| "extraBody"
|
|
646
654
|
| "toolStrictMode"
|
|
647
655
|
| "toolSchemaFlavor"
|
|
656
|
+
| "streamFirstEventTimeoutMs"
|
|
648
657
|
| "streamIdleTimeoutMs"
|
|
649
658
|
| "cacheControlFormat"
|
|
650
659
|
| "thinkingKeep"
|