@didim365/agent-cli-core 0.2.26 → 0.3.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/dist/src/availability/policyCatalog.js +2 -2
- package/dist/src/availability/policyCatalog.js.map +1 -1
- package/dist/src/config/costEstimation.d.ts +1 -1
- package/dist/src/config/costEstimation.js +13 -4
- package/dist/src/config/costEstimation.js.map +1 -1
- package/dist/src/config/models.js +4 -3
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/providerModels.js +20 -6
- package/dist/src/config/providerModels.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/providers/openai/adapter.d.ts +27 -0
- package/dist/src/providers/openai/adapter.js +109 -0
- package/dist/src/providers/openai/adapter.js.map +1 -1
- package/dist/src/providers/openai/bootstrap.js +4 -1
- package/dist/src/providers/openai/bootstrap.js.map +1 -1
- package/dist/src/providers/openai/responsesConverter.d.ts +92 -0
- package/dist/src/providers/openai/responsesConverter.js +408 -0
- package/dist/src/providers/openai/responsesConverter.js.map +1 -0
- package/package.json +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DEFAULT_GEMINI_FLASH_LITE_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL,
|
|
6
|
+
import { DEFAULT_GEMINI_FLASH_LITE_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_31_MODEL, PREVIEW_GEMINI_FLASH_MODEL, } from '../config/models.js';
|
|
7
7
|
const DEFAULT_ACTIONS = {
|
|
8
8
|
terminal: 'prompt',
|
|
9
9
|
transient: 'prompt',
|
|
@@ -27,7 +27,7 @@ const DEFAULT_CHAIN = [
|
|
|
27
27
|
definePolicy({ model: DEFAULT_GEMINI_FLASH_MODEL, isLastResort: true }),
|
|
28
28
|
];
|
|
29
29
|
const PREVIEW_CHAIN = [
|
|
30
|
-
definePolicy({ model:
|
|
30
|
+
definePolicy({ model: PREVIEW_GEMINI_31_MODEL }),
|
|
31
31
|
definePolicy({ model: PREVIEW_GEMINI_FLASH_MODEL, isLastResort: true }),
|
|
32
32
|
];
|
|
33
33
|
const FLASH_LITE_CHAIN = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policyCatalog.js","sourceRoot":"","sources":["../../../src/availability/policyCatalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"policyCatalog.js","sourceRoot":"","sources":["../../../src/availability/policyCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export interface ModelPricing {
|
|
|
19
19
|
/**
|
|
20
20
|
* Static pricing table: provider → model → pricing.
|
|
21
21
|
*
|
|
22
|
-
* Prices sourced from official API pricing pages (as of 2026-
|
|
22
|
+
* Prices sourced from official API pricing pages (as of 2026-03).
|
|
23
23
|
* Models not listed here will be treated as $0 (unknown pricing).
|
|
24
24
|
*/
|
|
25
25
|
export declare const MODEL_PRICING: Record<string, Record<string, ModelPricing>>;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Static pricing table: provider → model → pricing.
|
|
8
8
|
*
|
|
9
|
-
* Prices sourced from official API pricing pages (as of 2026-
|
|
9
|
+
* Prices sourced from official API pricing pages (as of 2026-03).
|
|
10
10
|
* Models not listed here will be treated as $0 (unknown pricing).
|
|
11
11
|
*/
|
|
12
12
|
export const MODEL_PRICING = {
|
|
@@ -45,15 +45,24 @@ export const MODEL_PRICING = {
|
|
|
45
45
|
},
|
|
46
46
|
},
|
|
47
47
|
openai: {
|
|
48
|
+
'gpt-5.4': {
|
|
49
|
+
inputPerMToken: 2.5,
|
|
50
|
+
outputPerMToken: 15.0,
|
|
51
|
+
cachedPerMToken: 1.25,
|
|
52
|
+
},
|
|
53
|
+
'gpt-5.4-pro': {
|
|
54
|
+
inputPerMToken: 30.0,
|
|
55
|
+
outputPerMToken: 180.0,
|
|
56
|
+
},
|
|
48
57
|
'gpt-5.2': {
|
|
49
58
|
inputPerMToken: 1.25,
|
|
50
59
|
outputPerMToken: 10.0,
|
|
51
60
|
cachedPerMToken: 0.625,
|
|
52
61
|
},
|
|
53
62
|
'gpt-5-mini': {
|
|
54
|
-
inputPerMToken: 0.
|
|
55
|
-
outputPerMToken: 1.
|
|
56
|
-
cachedPerMToken: 0.
|
|
63
|
+
inputPerMToken: 0.25,
|
|
64
|
+
outputPerMToken: 1.5,
|
|
65
|
+
cachedPerMToken: 0.125,
|
|
57
66
|
},
|
|
58
67
|
'gpt-4.1': {
|
|
59
68
|
inputPerMToken: 2.0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"costEstimation.js","sourceRoot":"","sources":["../../../src/config/costEstimation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAiD;IACzE,MAAM,EAAE;QACN,gBAAgB,EAAE;YAChB,cAAc,EAAE,IAAI;YACpB,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,KAAK;SACvB;QACD,kBAAkB,EAAE;YAClB,cAAc,EAAE,GAAG;YACnB,eAAe,EAAE,GAAG;YACpB,eAAe,EAAE,IAAI;SACtB;QACD,uBAAuB,EAAE;YACvB,cAAc,EAAE,GAAG;YACnB,eAAe,EAAE,GAAG;YACpB,eAAe,EAAE,IAAI;SACtB;KACF;IACD,MAAM,EAAE;QACN,iBAAiB,EAAE;YACjB,cAAc,EAAE,GAAG;YACnB,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,GAAG;SACrB;QACD,4BAA4B,EAAE;YAC5B,cAAc,EAAE,GAAG;YACnB,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,GAAG;SACrB;QACD,2BAA2B,EAAE;YAC3B,cAAc,EAAE,GAAG;YACnB,eAAe,EAAE,GAAG;YACpB,eAAe,EAAE,GAAG;SACrB;KACF;IACD,MAAM,EAAE;QACN,SAAS,EAAE;YACT,cAAc,EAAE,IAAI;YACpB,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,KAAK;SACvB;QACD,YAAY,EAAE;YACZ,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"costEstimation.js","sourceRoot":"","sources":["../../../src/config/costEstimation.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ export const DEFAULT_THINKING_MODE = 8192;
|
|
|
38
38
|
export function resolveModel(requestedModel, previewFeaturesEnabled = false) {
|
|
39
39
|
switch (requestedModel) {
|
|
40
40
|
case PREVIEW_GEMINI_MODEL_AUTO: {
|
|
41
|
-
return
|
|
41
|
+
return PREVIEW_GEMINI_31_MODEL;
|
|
42
42
|
}
|
|
43
43
|
case DEFAULT_GEMINI_MODEL_AUTO: {
|
|
44
44
|
return DEFAULT_GEMINI_MODEL;
|
|
@@ -46,7 +46,7 @@ export function resolveModel(requestedModel, previewFeaturesEnabled = false) {
|
|
|
46
46
|
case GEMINI_MODEL_ALIAS_AUTO:
|
|
47
47
|
case GEMINI_MODEL_ALIAS_PRO: {
|
|
48
48
|
return previewFeaturesEnabled
|
|
49
|
-
?
|
|
49
|
+
? PREVIEW_GEMINI_31_MODEL
|
|
50
50
|
: DEFAULT_GEMINI_MODEL;
|
|
51
51
|
}
|
|
52
52
|
case GEMINI_MODEL_ALIAS_FLASH: {
|
|
@@ -77,6 +77,7 @@ export function resolveClassifierModel(requestedModel, modelAlias, previewFeatur
|
|
|
77
77
|
return DEFAULT_GEMINI_FLASH_MODEL;
|
|
78
78
|
}
|
|
79
79
|
if (requestedModel === PREVIEW_GEMINI_MODEL_AUTO ||
|
|
80
|
+
requestedModel === PREVIEW_GEMINI_31_MODEL ||
|
|
80
81
|
requestedModel === PREVIEW_GEMINI_MODEL) {
|
|
81
82
|
return PREVIEW_GEMINI_FLASH_MODEL;
|
|
82
83
|
}
|
|
@@ -92,7 +93,7 @@ export function getDisplayString(model, previewFeaturesEnabled = false) {
|
|
|
92
93
|
return 'Auto (Gemini 2.5)';
|
|
93
94
|
case GEMINI_MODEL_ALIAS_PRO:
|
|
94
95
|
return previewFeaturesEnabled
|
|
95
|
-
?
|
|
96
|
+
? PREVIEW_GEMINI_31_MODEL
|
|
96
97
|
: DEFAULT_GEMINI_MODEL;
|
|
97
98
|
case GEMINI_MODEL_ALIAS_FLASH:
|
|
98
99
|
return previewFeaturesEnabled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/config/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAC7D,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CAAC;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,uBAAuB;IACvB,oBAAoB;IACpB,0BAA0B;IAC1B,oBAAoB;IACpB,0BAA0B;IAC1B,+BAA+B;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC;AACzD,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D,sCAAsC;AACtC,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC;AAE1D,MAAM,CAAC,MAAM,8BAA8B,GAAG,sBAAsB,CAAC;AAErE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,cAAsB,EACtB,yBAAkC,KAAK;IAEvC,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/config/models.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export const PROVIDER_MODEL_REGISTRY = {
|
|
|
16
16
|
{
|
|
17
17
|
value: 'auto-gemini-3',
|
|
18
18
|
title: 'Auto (Gemini 3)',
|
|
19
|
-
description: 'Let Didim CLI decide the best model: gemini-3-pro, gemini-3-flash',
|
|
19
|
+
description: 'Let Didim CLI decide the best model: gemini-3.1-pro-preview, gemini-3-flash-preview',
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
22
|
value: 'auto-gemini-2.5',
|
|
@@ -27,7 +27,8 @@ export const PROVIDER_MODEL_REGISTRY = {
|
|
|
27
27
|
models: [
|
|
28
28
|
{
|
|
29
29
|
id: 'gemini-3.1-pro-preview',
|
|
30
|
-
|
|
30
|
+
displayName: 'Gemini 3.1 Pro Preview',
|
|
31
|
+
description: 'Preview API model — most capable, complex problem-solving (1M context)',
|
|
31
32
|
category: 'general',
|
|
32
33
|
},
|
|
33
34
|
{ id: 'gemini-3-pro-preview', category: 'general' },
|
|
@@ -68,16 +69,29 @@ export const PROVIDER_MODEL_REGISTRY = {
|
|
|
68
69
|
providerKey: 'openai',
|
|
69
70
|
presets: [
|
|
70
71
|
{
|
|
71
|
-
value: 'gpt-5.
|
|
72
|
-
title: 'Recommended (gpt-5.
|
|
73
|
-
description: '
|
|
72
|
+
value: 'gpt-5.4',
|
|
73
|
+
title: 'Recommended (gpt-5.4)',
|
|
74
|
+
description: 'Latest flagship model for complex tasks',
|
|
74
75
|
},
|
|
75
76
|
],
|
|
76
77
|
models: [
|
|
78
|
+
{
|
|
79
|
+
id: 'gpt-5.4',
|
|
80
|
+
description: 'Latest flagship model, complex tasks',
|
|
81
|
+
isDefault: true,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'gpt-5.4-pro',
|
|
85
|
+
description: 'Most capable reasoning model (Responses API)',
|
|
86
|
+
category: 'reasoning',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: 'gpt-5.3-codex',
|
|
90
|
+
description: 'Codex model for software engineering, 1M context',
|
|
91
|
+
},
|
|
77
92
|
{
|
|
78
93
|
id: 'gpt-5.2',
|
|
79
94
|
description: 'Flagship reasoning model, 400K context',
|
|
80
|
-
isDefault: true,
|
|
81
95
|
},
|
|
82
96
|
{
|
|
83
97
|
id: 'gpt-5-mini',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerModels.js","sourceRoot":"","sources":["../../../src/config/providerModels.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0CH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAuC;IACzE,MAAM,EAAE;QACN,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,eAAe;gBACtB,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"providerModels.js","sourceRoot":"","sources":["../../../src/config/providerModels.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export declare const GIT_COMMIT_INFO = "
|
|
7
|
-
export declare const CLI_VERSION = "0.30.
|
|
6
|
+
export declare const GIT_COMMIT_INFO = "489da1861";
|
|
7
|
+
export declare const CLI_VERSION = "0.30.2";
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
// This file is auto-generated by the build script (scripts/generate-git-commit-info.js)
|
|
7
7
|
// Do not edit this file manually.
|
|
8
|
-
export const GIT_COMMIT_INFO = '
|
|
9
|
-
export const CLI_VERSION = '0.30.
|
|
8
|
+
export const GIT_COMMIT_INFO = '489da1861';
|
|
9
|
+
export const CLI_VERSION = '0.30.2';
|
|
10
10
|
//# sourceMappingURL=git-commit.js.map
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
* Accepts provider-independent LlmGenerateRequest, converts to OpenAI SDK
|
|
10
10
|
* format, and converts responses back to LlmGenerateResponse / LlmEventStream.
|
|
11
11
|
*
|
|
12
|
+
* Supports two API paths:
|
|
13
|
+
* - Chat Completions API (`/v1/chat/completions`) — default for most models
|
|
14
|
+
* - Responses API (`/v1/responses`) — for codex models (gpt-5.3-codex, etc.)
|
|
15
|
+
*
|
|
12
16
|
* @see docs/ai_adapter/03-technical-design.md §3.3.7
|
|
13
17
|
* @see packages/core/src/providers/claude/adapter.ts (Claude counterpart)
|
|
14
18
|
*/
|
|
@@ -17,6 +21,7 @@ import type { LlmGenerateRequest, LlmGenerateResponse, LlmGenerateConfig, LlmPro
|
|
|
17
21
|
import type { LlmEventStream } from '../events.js';
|
|
18
22
|
import { LlmError } from '../errors.js';
|
|
19
23
|
import { OpenAiConverter } from './converter.js';
|
|
24
|
+
import { OpenAiResponsesConverter } from './responsesConverter.js';
|
|
20
25
|
/**
|
|
21
26
|
* Interface for the OpenAI SDK client.
|
|
22
27
|
* This allows dependency injection for testing.
|
|
@@ -27,24 +32,46 @@ export interface OpenAiClient {
|
|
|
27
32
|
create(params: Record<string, unknown>, options?: Record<string, unknown>): Promise<unknown>;
|
|
28
33
|
};
|
|
29
34
|
};
|
|
35
|
+
responses: {
|
|
36
|
+
create(params: Record<string, unknown>, options?: Record<string, unknown>): Promise<unknown>;
|
|
37
|
+
};
|
|
30
38
|
}
|
|
31
39
|
/**
|
|
32
40
|
* OpenAiAdapter wraps the OpenAI SDK behind the BaseAdapter interface.
|
|
41
|
+
*
|
|
42
|
+
* Routes requests to either Chat Completions or Responses API based on model.
|
|
33
43
|
*/
|
|
34
44
|
export declare class OpenAiAdapter extends BaseAdapter {
|
|
35
45
|
protected readonly client: OpenAiClient;
|
|
36
46
|
readonly providerName: string;
|
|
37
47
|
readonly capabilities: LlmProviderCapabilities;
|
|
38
48
|
protected readonly converter: OpenAiConverter;
|
|
49
|
+
protected readonly responsesConverter: OpenAiResponsesConverter;
|
|
39
50
|
constructor(config: AdapterConfig, client: OpenAiClient);
|
|
40
51
|
/**
|
|
41
52
|
* Generate content (non-streaming).
|
|
53
|
+
*
|
|
54
|
+
* Routes to Responses API for codex/pro models, Chat Completions otherwise.
|
|
42
55
|
*/
|
|
43
56
|
generateContent(request: LlmGenerateRequest, _userPromptId: string, options?: GenerateOptions): Promise<LlmGenerateResponse>;
|
|
44
57
|
/**
|
|
45
58
|
* Generate content as a stream of LlmEvents.
|
|
59
|
+
*
|
|
60
|
+
* Routes to Responses API streaming for codex/pro models.
|
|
46
61
|
*/
|
|
47
62
|
generateContentStream(request: LlmGenerateRequest, _userPromptId: string, options?: GenerateOptions): LlmEventStream;
|
|
63
|
+
/**
|
|
64
|
+
* Non-streaming via Responses API.
|
|
65
|
+
*/
|
|
66
|
+
private generateContentViaResponses;
|
|
67
|
+
/**
|
|
68
|
+
* Streaming via Responses API.
|
|
69
|
+
*/
|
|
70
|
+
private generateContentStreamViaResponses;
|
|
71
|
+
/**
|
|
72
|
+
* Check if a model requires the Responses API.
|
|
73
|
+
*/
|
|
74
|
+
private isResponsesApiModel;
|
|
48
75
|
/**
|
|
49
76
|
* Classify an OpenAI SDK error into a typed LlmError.
|
|
50
77
|
* Uses HTTP status code when available, falls back to message heuristics.
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
* Accepts provider-independent LlmGenerateRequest, converts to OpenAI SDK
|
|
10
10
|
* format, and converts responses back to LlmGenerateResponse / LlmEventStream.
|
|
11
11
|
*
|
|
12
|
+
* Supports two API paths:
|
|
13
|
+
* - Chat Completions API (`/v1/chat/completions`) — default for most models
|
|
14
|
+
* - Responses API (`/v1/responses`) — for codex models (gpt-5.3-codex, etc.)
|
|
15
|
+
*
|
|
12
16
|
* @see docs/ai_adapter/03-technical-design.md §3.3.7
|
|
13
17
|
* @see packages/core/src/providers/claude/adapter.ts (Claude counterpart)
|
|
14
18
|
*/
|
|
@@ -17,6 +21,7 @@ import { LlmError, LlmErrorType, AuthenticationError, RateLimitError, ModelNotFo
|
|
|
17
21
|
import { createErrorEvent, LlmEventType } from '../events.js';
|
|
18
22
|
import { extractWithRateLimits, OPENAI_RATE_LIMIT_HEADERS, } from '../rateLimitUtils.js';
|
|
19
23
|
import { OpenAiConverter } from './converter.js';
|
|
24
|
+
import { OpenAiResponsesConverter } from './responsesConverter.js';
|
|
20
25
|
import { debugLogger } from '../../utils/debugLogger.js';
|
|
21
26
|
/**
|
|
22
27
|
* OpenAI adapter capabilities.
|
|
@@ -45,24 +50,41 @@ const OPENAI_CAPABILITIES = {
|
|
|
45
50
|
maxContextLength: 400_000,
|
|
46
51
|
maxOutputTokens: 128_000,
|
|
47
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* Models that require the Responses API (`/v1/responses`).
|
|
55
|
+
* These models do NOT support Chat Completions (`/v1/chat/completions`).
|
|
56
|
+
*/
|
|
57
|
+
const RESPONSES_API_MODELS = new Set([
|
|
58
|
+
'gpt-5.3-codex',
|
|
59
|
+
'gpt-5.4-pro',
|
|
60
|
+
]);
|
|
48
61
|
/**
|
|
49
62
|
* OpenAiAdapter wraps the OpenAI SDK behind the BaseAdapter interface.
|
|
63
|
+
*
|
|
64
|
+
* Routes requests to either Chat Completions or Responses API based on model.
|
|
50
65
|
*/
|
|
51
66
|
export class OpenAiAdapter extends BaseAdapter {
|
|
52
67
|
client;
|
|
53
68
|
providerName = 'openai';
|
|
54
69
|
capabilities = OPENAI_CAPABILITIES;
|
|
55
70
|
converter;
|
|
71
|
+
responsesConverter;
|
|
56
72
|
constructor(config, client) {
|
|
57
73
|
super(config);
|
|
58
74
|
this.client = client;
|
|
59
75
|
this.converter = new OpenAiConverter();
|
|
76
|
+
this.responsesConverter = new OpenAiResponsesConverter();
|
|
60
77
|
}
|
|
61
78
|
/**
|
|
62
79
|
* Generate content (non-streaming).
|
|
80
|
+
*
|
|
81
|
+
* Routes to Responses API for codex/pro models, Chat Completions otherwise.
|
|
63
82
|
*/
|
|
64
83
|
async generateContent(request, _userPromptId, options) {
|
|
65
84
|
this.validateRequest(request);
|
|
85
|
+
if (this.isResponsesApiModel(request.model)) {
|
|
86
|
+
return this.generateContentViaResponses(request, options);
|
|
87
|
+
}
|
|
66
88
|
try {
|
|
67
89
|
const params = this.converter.toOpenAiRequest(request);
|
|
68
90
|
const createResult = this.client.chat.completions.create(params, {
|
|
@@ -81,9 +103,14 @@ export class OpenAiAdapter extends BaseAdapter {
|
|
|
81
103
|
}
|
|
82
104
|
/**
|
|
83
105
|
* Generate content as a stream of LlmEvents.
|
|
106
|
+
*
|
|
107
|
+
* Routes to Responses API streaming for codex/pro models.
|
|
84
108
|
*/
|
|
85
109
|
generateContentStream(request, _userPromptId, options) {
|
|
86
110
|
this.validateRequest(request);
|
|
111
|
+
if (this.isResponsesApiModel(request.model)) {
|
|
112
|
+
return this.generateContentStreamViaResponses(request, options);
|
|
113
|
+
}
|
|
87
114
|
const client = this.client;
|
|
88
115
|
const converter = this.converter;
|
|
89
116
|
const classify = this.classifyError.bind(this);
|
|
@@ -133,6 +160,88 @@ export class OpenAiAdapter extends BaseAdapter {
|
|
|
133
160
|
}
|
|
134
161
|
return streamGenerator();
|
|
135
162
|
}
|
|
163
|
+
// ============================================================================
|
|
164
|
+
// Responses API methods
|
|
165
|
+
// ============================================================================
|
|
166
|
+
/**
|
|
167
|
+
* Non-streaming via Responses API.
|
|
168
|
+
*/
|
|
169
|
+
async generateContentViaResponses(request, options) {
|
|
170
|
+
try {
|
|
171
|
+
const params = this.responsesConverter.toResponsesRequest(request);
|
|
172
|
+
const createResult = this.client.responses.create(params, {
|
|
173
|
+
signal: options?.signal,
|
|
174
|
+
});
|
|
175
|
+
const { data, rateLimits } = await extractWithRateLimits(createResult, OPENAI_RATE_LIMIT_HEADERS);
|
|
176
|
+
const result = this.responsesConverter.fromResponsesResponse(data, request.model);
|
|
177
|
+
if (rateLimits) {
|
|
178
|
+
result.rateLimits = rateLimits;
|
|
179
|
+
}
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
throw this.classifyError(error);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Streaming via Responses API.
|
|
188
|
+
*/
|
|
189
|
+
generateContentStreamViaResponses(request, options) {
|
|
190
|
+
const client = this.client;
|
|
191
|
+
const responsesConverter = this.responsesConverter;
|
|
192
|
+
const classify = this.classifyError.bind(this);
|
|
193
|
+
const params = responsesConverter.toResponsesRequest(request);
|
|
194
|
+
const signal = options?.signal;
|
|
195
|
+
async function* streamGenerator() {
|
|
196
|
+
try {
|
|
197
|
+
const createResult = client.responses.create({
|
|
198
|
+
...params,
|
|
199
|
+
stream: true,
|
|
200
|
+
}, { signal });
|
|
201
|
+
const { data, rateLimits } = await extractWithRateLimits(createResult, OPENAI_RATE_LIMIT_HEADERS);
|
|
202
|
+
const stream = data;
|
|
203
|
+
const state = responsesConverter.createStreamState();
|
|
204
|
+
let chunkIndex = 0;
|
|
205
|
+
let messageEndEmitted = false;
|
|
206
|
+
for await (const event of stream) {
|
|
207
|
+
const events = responsesConverter.convertStreamEvent(event, state);
|
|
208
|
+
for (const llmEvent of events) {
|
|
209
|
+
if (llmEvent.type === LlmEventType.TextDelta) {
|
|
210
|
+
debugLogger.log(`[OpenAI Responses stream] chunk#${chunkIndex} TextDelta: "${llmEvent.text.substring(0, 80)}"`);
|
|
211
|
+
}
|
|
212
|
+
if (llmEvent.type === LlmEventType.MessageEnd) {
|
|
213
|
+
messageEndEmitted = true;
|
|
214
|
+
yield rateLimits ? { ...llmEvent, rateLimits } : llmEvent;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
yield llmEvent;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
chunkIndex++;
|
|
221
|
+
}
|
|
222
|
+
if (!messageEndEmitted) {
|
|
223
|
+
yield {
|
|
224
|
+
type: LlmEventType.MessageEnd,
|
|
225
|
+
...(rateLimits && { rateLimits }),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
const classified = classify(error);
|
|
231
|
+
yield createErrorEvent(classified, classified.code, classified.isRetryable);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return streamGenerator();
|
|
235
|
+
}
|
|
236
|
+
// ============================================================================
|
|
237
|
+
// Helpers
|
|
238
|
+
// ============================================================================
|
|
239
|
+
/**
|
|
240
|
+
* Check if a model requires the Responses API.
|
|
241
|
+
*/
|
|
242
|
+
isResponsesApiModel(model) {
|
|
243
|
+
return RESPONSES_API_MODELS.has(model);
|
|
244
|
+
}
|
|
136
245
|
/**
|
|
137
246
|
* Classify an OpenAI SDK error into a typed LlmError.
|
|
138
247
|
* Uses HTTP status code when available, falls back to message heuristics.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/providers/openai/adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/providers/openai/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,10 @@ export function bootstrapOpenAiProvider(registry) {
|
|
|
30
30
|
reg.register('openai', (config) => {
|
|
31
31
|
const client = new OpenAI({
|
|
32
32
|
apiKey: config.apiKey,
|
|
33
|
-
|
|
33
|
+
// Pin the official API unless the caller explicitly overrides it.
|
|
34
|
+
// Otherwise the SDK inherits OPENAI_BASE_URL from the shell, which can
|
|
35
|
+
// silently route OpenAI requests to a stale gateway or local server.
|
|
36
|
+
baseURL: config.baseUrl ?? 'https://api.openai.com/v1',
|
|
34
37
|
});
|
|
35
38
|
return new OpenAiAdapter(config, client);
|
|
36
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../../src/providers/openai/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAC;AAGhE;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAA2B;IACjE,MAAM,GAAG,GAAG,QAAQ,IAAI,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO;IAE9B,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAqB,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../../src/providers/openai/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAqB,MAAM,cAAc,CAAC;AAGhE;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAA2B;IACjE,MAAM,GAAG,GAAG,QAAQ,IAAI,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO;IAE9B,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAqB,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,kEAAkE;YAClE,uEAAuE;YACvE,qEAAqE;YACrE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,2BAA2B;SACvD,CAAC,CAAC;QACH,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,MAAiC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { LlmGenerateRequest, LlmGenerateResponse, LlmMessage, LlmContent, LlmToolDefinition, LlmToolChoice, LlmStopReason } from '../types.js';
|
|
7
|
+
import type { LlmEvent } from '../events.js';
|
|
8
|
+
/**
|
|
9
|
+
* Stream processing state for Responses API streaming.
|
|
10
|
+
*/
|
|
11
|
+
export interface ResponsesStreamState {
|
|
12
|
+
/** Accumulated function call arguments by item_id. */
|
|
13
|
+
functionCalls: Record<string, {
|
|
14
|
+
callId: string;
|
|
15
|
+
name: string;
|
|
16
|
+
argumentsJson: string;
|
|
17
|
+
}>;
|
|
18
|
+
/** Whether a Finished event has been emitted. */
|
|
19
|
+
finishedEmitted: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Converts between provider-independent types and OpenAI Responses API types.
|
|
23
|
+
*/
|
|
24
|
+
export declare class OpenAiResponsesConverter {
|
|
25
|
+
/**
|
|
26
|
+
* Convert LlmGenerateRequest to Responses API params.
|
|
27
|
+
*/
|
|
28
|
+
toResponsesRequest(request: LlmGenerateRequest): Record<string, unknown>;
|
|
29
|
+
/**
|
|
30
|
+
* Convert LlmMessage[] + systemInstruction to Responses API input array.
|
|
31
|
+
*
|
|
32
|
+
* Key difference: `system` role → `developer` role in Responses API.
|
|
33
|
+
*/
|
|
34
|
+
toResponsesInput(messages: LlmMessage[], systemInstruction?: string): Array<Record<string, unknown>>;
|
|
35
|
+
/**
|
|
36
|
+
* Convert LlmToolDefinition[] to Responses API tools format.
|
|
37
|
+
* Responses API uses flat format: { type, name, description, parameters }
|
|
38
|
+
* (NOT the nested { type, function: { name, ... } } format of Chat Completions).
|
|
39
|
+
*/
|
|
40
|
+
toResponsesTools(tools: LlmToolDefinition[]): Array<Record<string, unknown>>;
|
|
41
|
+
/**
|
|
42
|
+
* Convert LlmToolChoice to Responses API tool_choice.
|
|
43
|
+
*/
|
|
44
|
+
toResponsesToolChoice(choice: LlmToolChoice): string | Record<string, unknown>;
|
|
45
|
+
/**
|
|
46
|
+
* Convert Responses API response to LlmGenerateResponse.
|
|
47
|
+
*/
|
|
48
|
+
fromResponsesResponse(response: unknown, model: string): LlmGenerateResponse;
|
|
49
|
+
/**
|
|
50
|
+
* Convert Responses API output items to LlmContent[].
|
|
51
|
+
*/
|
|
52
|
+
fromResponsesOutput(output: Array<Record<string, unknown>>): LlmContent[];
|
|
53
|
+
/**
|
|
54
|
+
* Map Responses API status + output to LlmStopReason.
|
|
55
|
+
*/
|
|
56
|
+
mapResponsesStatus(status: string | undefined, output: Array<Record<string, unknown>>): LlmStopReason;
|
|
57
|
+
/**
|
|
58
|
+
* Extract token usage from Responses API response.
|
|
59
|
+
*/
|
|
60
|
+
private extractResponsesUsage;
|
|
61
|
+
/**
|
|
62
|
+
* Create a new stream state for Responses API streaming.
|
|
63
|
+
*/
|
|
64
|
+
createStreamState(): ResponsesStreamState;
|
|
65
|
+
/**
|
|
66
|
+
* Convert a single Responses API stream event to LlmEvent[].
|
|
67
|
+
*
|
|
68
|
+
* Responses API stream event types:
|
|
69
|
+
* - response.output_text.delta → TextDelta
|
|
70
|
+
* - response.output_item.added (function_call) → track in state
|
|
71
|
+
* - response.function_call_arguments.delta → accumulate in state
|
|
72
|
+
* - response.function_call_arguments.done → ToolCallRequest
|
|
73
|
+
* - response.completed → Finished + MessageEnd with usage
|
|
74
|
+
*/
|
|
75
|
+
convertStreamEvent(event: unknown, state: ResponsesStreamState): LlmEvent[];
|
|
76
|
+
private handleTextDelta;
|
|
77
|
+
private handleOutputItemAdded;
|
|
78
|
+
private handleFunctionCallDelta;
|
|
79
|
+
private handleFunctionCallDone;
|
|
80
|
+
private handleResponseCompleted;
|
|
81
|
+
/**
|
|
82
|
+
* Convert a single LlmMessage to a Responses API input message.
|
|
83
|
+
*
|
|
84
|
+
* Note: `system` role → `developer` role in Responses API.
|
|
85
|
+
*/
|
|
86
|
+
private convertSingleMessage;
|
|
87
|
+
private convertSystemMessage;
|
|
88
|
+
private convertUserMessage;
|
|
89
|
+
private convertAssistantMessage;
|
|
90
|
+
private convertToolMessage;
|
|
91
|
+
private extractTextContent;
|
|
92
|
+
}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* OpenAiResponsesConverter — converts between provider-independent Llm* types
|
|
8
|
+
* and OpenAI Responses API format (`/v1/responses`).
|
|
9
|
+
*
|
|
10
|
+
* Used by OpenAiAdapter to translate requests/responses for models that
|
|
11
|
+
* require the Responses API (e.g., gpt-5.3-codex, gpt-5.4-pro).
|
|
12
|
+
*
|
|
13
|
+
* Key differences from Chat Completions:
|
|
14
|
+
* - Request uses `input` (not `messages`), `developer` role (not `system`)
|
|
15
|
+
* - Response uses `output` items (not `choices`), `output_text`
|
|
16
|
+
* - Usage fields: `input_tokens`/`output_tokens` (not `prompt_tokens`/`completion_tokens`)
|
|
17
|
+
* - Streaming uses typed events (not chunks with choices[].delta)
|
|
18
|
+
*/
|
|
19
|
+
import crypto from 'node:crypto';
|
|
20
|
+
import { LlmEventType } from '../events.js';
|
|
21
|
+
/**
|
|
22
|
+
* Converts between provider-independent types and OpenAI Responses API types.
|
|
23
|
+
*/
|
|
24
|
+
export class OpenAiResponsesConverter {
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Request Conversion: Llm → Responses API
|
|
27
|
+
// ============================================================================
|
|
28
|
+
/**
|
|
29
|
+
* Convert LlmGenerateRequest to Responses API params.
|
|
30
|
+
*/
|
|
31
|
+
toResponsesRequest(request) {
|
|
32
|
+
const input = this.toResponsesInput(request.messages, request.systemInstruction);
|
|
33
|
+
const params = {
|
|
34
|
+
model: request.model,
|
|
35
|
+
input,
|
|
36
|
+
};
|
|
37
|
+
// Generation parameters
|
|
38
|
+
if (request.maxTokens !== undefined && request.maxTokens > 0) {
|
|
39
|
+
params['max_output_tokens'] = request.maxTokens;
|
|
40
|
+
}
|
|
41
|
+
if (request.temperature !== undefined) {
|
|
42
|
+
params['temperature'] = request.temperature;
|
|
43
|
+
}
|
|
44
|
+
if (request.topP !== undefined) {
|
|
45
|
+
params['top_p'] = request.topP;
|
|
46
|
+
}
|
|
47
|
+
// Tools
|
|
48
|
+
if (request.tools && request.tools.length > 0) {
|
|
49
|
+
params['tools'] = this.toResponsesTools(request.tools);
|
|
50
|
+
}
|
|
51
|
+
if (request.toolChoice) {
|
|
52
|
+
params['tool_choice'] = this.toResponsesToolChoice(request.toolChoice);
|
|
53
|
+
}
|
|
54
|
+
// Response format
|
|
55
|
+
if (request.responseFormat === 'json') {
|
|
56
|
+
params['text'] = { format: { type: 'json_object' } };
|
|
57
|
+
}
|
|
58
|
+
return params;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Convert LlmMessage[] + systemInstruction to Responses API input array.
|
|
62
|
+
*
|
|
63
|
+
* Key difference: `system` role → `developer` role in Responses API.
|
|
64
|
+
*/
|
|
65
|
+
toResponsesInput(messages, systemInstruction) {
|
|
66
|
+
const result = [];
|
|
67
|
+
// System instruction → developer role
|
|
68
|
+
if (systemInstruction) {
|
|
69
|
+
result.push({ role: 'developer', content: systemInstruction });
|
|
70
|
+
}
|
|
71
|
+
for (const msg of messages) {
|
|
72
|
+
const converted = this.convertSingleMessage(msg);
|
|
73
|
+
if (converted) {
|
|
74
|
+
result.push(converted);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Convert LlmToolDefinition[] to Responses API tools format.
|
|
81
|
+
* Responses API uses flat format: { type, name, description, parameters }
|
|
82
|
+
* (NOT the nested { type, function: { name, ... } } format of Chat Completions).
|
|
83
|
+
*/
|
|
84
|
+
toResponsesTools(tools) {
|
|
85
|
+
return tools.map((tool) => ({
|
|
86
|
+
type: 'function',
|
|
87
|
+
name: tool.name,
|
|
88
|
+
description: tool.description,
|
|
89
|
+
parameters: {
|
|
90
|
+
type: tool.parameters.type,
|
|
91
|
+
properties: tool.parameters.properties,
|
|
92
|
+
...(tool.parameters.required
|
|
93
|
+
? { required: tool.parameters.required }
|
|
94
|
+
: {}),
|
|
95
|
+
},
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Convert LlmToolChoice to Responses API tool_choice.
|
|
100
|
+
*/
|
|
101
|
+
toResponsesToolChoice(choice) {
|
|
102
|
+
if (typeof choice === 'string') {
|
|
103
|
+
return choice;
|
|
104
|
+
}
|
|
105
|
+
return { type: 'function', name: choice.name };
|
|
106
|
+
}
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// Response Conversion: Responses API → Llm
|
|
109
|
+
// ============================================================================
|
|
110
|
+
/**
|
|
111
|
+
* Convert Responses API response to LlmGenerateResponse.
|
|
112
|
+
*/
|
|
113
|
+
fromResponsesResponse(response, model) {
|
|
114
|
+
const resp = response;
|
|
115
|
+
const output = resp['output'] ?? [];
|
|
116
|
+
return {
|
|
117
|
+
id: resp['id'] ?? crypto.randomUUID(),
|
|
118
|
+
content: this.fromResponsesOutput(output),
|
|
119
|
+
model: resp['model'] ?? model,
|
|
120
|
+
stopReason: this.mapResponsesStatus(resp['status'], output),
|
|
121
|
+
usage: this.extractResponsesUsage(resp),
|
|
122
|
+
rawResponse: response,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Convert Responses API output items to LlmContent[].
|
|
127
|
+
*/
|
|
128
|
+
fromResponsesOutput(output) {
|
|
129
|
+
const contents = [];
|
|
130
|
+
for (const item of output) {
|
|
131
|
+
const type = item['type'];
|
|
132
|
+
if (type === 'message') {
|
|
133
|
+
const contentParts = item['content'] ?? [];
|
|
134
|
+
for (const part of contentParts) {
|
|
135
|
+
if (part['type'] === 'output_text') {
|
|
136
|
+
const text = part['text'];
|
|
137
|
+
if (text) {
|
|
138
|
+
contents.push({ type: 'text', text });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (type === 'function_call') {
|
|
144
|
+
const argsStr = item['arguments'] ?? '{}';
|
|
145
|
+
let args = {};
|
|
146
|
+
try {
|
|
147
|
+
args = JSON.parse(argsStr);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
args = {};
|
|
151
|
+
}
|
|
152
|
+
contents.push({
|
|
153
|
+
type: 'tool_call',
|
|
154
|
+
id: item['call_id'] ?? '',
|
|
155
|
+
name: item['name'] ?? '',
|
|
156
|
+
arguments: args,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return contents;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Map Responses API status + output to LlmStopReason.
|
|
164
|
+
*/
|
|
165
|
+
mapResponsesStatus(status, output) {
|
|
166
|
+
// Check if any output item is a function_call → tool_use
|
|
167
|
+
const hasToolCall = output.some((item) => item['type'] === 'function_call');
|
|
168
|
+
if (hasToolCall) {
|
|
169
|
+
return 'tool_use';
|
|
170
|
+
}
|
|
171
|
+
switch (status) {
|
|
172
|
+
case 'completed':
|
|
173
|
+
return 'end_turn';
|
|
174
|
+
case 'incomplete':
|
|
175
|
+
return 'max_tokens';
|
|
176
|
+
case 'failed':
|
|
177
|
+
case 'cancelled':
|
|
178
|
+
return 'end_turn';
|
|
179
|
+
default:
|
|
180
|
+
return 'end_turn';
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Extract token usage from Responses API response.
|
|
185
|
+
*/
|
|
186
|
+
extractResponsesUsage(response) {
|
|
187
|
+
const usage = response['usage'];
|
|
188
|
+
const inputTokens = usage?.['input_tokens'] ?? 0;
|
|
189
|
+
const outputTokens = usage?.['output_tokens'] ?? 0;
|
|
190
|
+
const inputDetails = usage?.['input_tokens_details'];
|
|
191
|
+
const cachedTokens = inputDetails?.['cached_tokens'] ?? 0;
|
|
192
|
+
return {
|
|
193
|
+
promptTokens: inputTokens,
|
|
194
|
+
completionTokens: outputTokens,
|
|
195
|
+
totalTokens: inputTokens + outputTokens,
|
|
196
|
+
cachedTokens,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
// ============================================================================
|
|
200
|
+
// Stream Event Conversion
|
|
201
|
+
// ============================================================================
|
|
202
|
+
/**
|
|
203
|
+
* Create a new stream state for Responses API streaming.
|
|
204
|
+
*/
|
|
205
|
+
createStreamState() {
|
|
206
|
+
return { functionCalls: {}, finishedEmitted: false };
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Convert a single Responses API stream event to LlmEvent[].
|
|
210
|
+
*
|
|
211
|
+
* Responses API stream event types:
|
|
212
|
+
* - response.output_text.delta → TextDelta
|
|
213
|
+
* - response.output_item.added (function_call) → track in state
|
|
214
|
+
* - response.function_call_arguments.delta → accumulate in state
|
|
215
|
+
* - response.function_call_arguments.done → ToolCallRequest
|
|
216
|
+
* - response.completed → Finished + MessageEnd with usage
|
|
217
|
+
*/
|
|
218
|
+
convertStreamEvent(event, state) {
|
|
219
|
+
const evt = event;
|
|
220
|
+
const type = evt['type'];
|
|
221
|
+
switch (type) {
|
|
222
|
+
case 'response.output_text.delta':
|
|
223
|
+
return this.handleTextDelta(evt);
|
|
224
|
+
case 'response.output_item.added':
|
|
225
|
+
return this.handleOutputItemAdded(evt, state);
|
|
226
|
+
case 'response.function_call_arguments.delta':
|
|
227
|
+
return this.handleFunctionCallDelta(evt, state);
|
|
228
|
+
case 'response.function_call_arguments.done':
|
|
229
|
+
return this.handleFunctionCallDone(evt, state);
|
|
230
|
+
case 'response.completed':
|
|
231
|
+
return this.handleResponseCompleted(evt, state);
|
|
232
|
+
default:
|
|
233
|
+
return [];
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// ============================================================================
|
|
237
|
+
// Stream Private Helpers
|
|
238
|
+
// ============================================================================
|
|
239
|
+
handleTextDelta(evt) {
|
|
240
|
+
const delta = evt['delta'];
|
|
241
|
+
if (!delta)
|
|
242
|
+
return [];
|
|
243
|
+
return [{ type: LlmEventType.TextDelta, text: delta }];
|
|
244
|
+
}
|
|
245
|
+
handleOutputItemAdded(evt, state) {
|
|
246
|
+
const item = evt['item'];
|
|
247
|
+
if (!item || item['type'] !== 'function_call')
|
|
248
|
+
return [];
|
|
249
|
+
const callId = item['call_id'] ?? '';
|
|
250
|
+
const itemId = item['id'] ?? callId;
|
|
251
|
+
state.functionCalls[itemId] = {
|
|
252
|
+
callId,
|
|
253
|
+
name: item['name'] ?? '',
|
|
254
|
+
argumentsJson: item['arguments'] ?? '',
|
|
255
|
+
};
|
|
256
|
+
return [];
|
|
257
|
+
}
|
|
258
|
+
handleFunctionCallDelta(evt, state) {
|
|
259
|
+
const itemId = evt['item_id'];
|
|
260
|
+
const delta = evt['delta'];
|
|
261
|
+
const existing = state.functionCalls[itemId];
|
|
262
|
+
if (existing && delta) {
|
|
263
|
+
existing.argumentsJson += delta;
|
|
264
|
+
}
|
|
265
|
+
return [];
|
|
266
|
+
}
|
|
267
|
+
handleFunctionCallDone(evt, state) {
|
|
268
|
+
// Use the complete item from the done event
|
|
269
|
+
const item = evt['item'];
|
|
270
|
+
const itemId = evt['item_id'] ?? '';
|
|
271
|
+
let callId;
|
|
272
|
+
let name;
|
|
273
|
+
let argsStr;
|
|
274
|
+
if (item) {
|
|
275
|
+
callId = item['call_id'] ?? '';
|
|
276
|
+
name = item['name'] ?? '';
|
|
277
|
+
argsStr = item['arguments'] ?? '{}';
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// Fallback to accumulated state
|
|
281
|
+
const fc = state.functionCalls[itemId];
|
|
282
|
+
if (!fc)
|
|
283
|
+
return [];
|
|
284
|
+
callId = fc.callId;
|
|
285
|
+
name = fc.name;
|
|
286
|
+
argsStr = fc.argumentsJson || '{}';
|
|
287
|
+
}
|
|
288
|
+
let args = {};
|
|
289
|
+
try {
|
|
290
|
+
args = JSON.parse(argsStr);
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
args = {};
|
|
294
|
+
}
|
|
295
|
+
// Clean up state
|
|
296
|
+
delete state.functionCalls[itemId];
|
|
297
|
+
return [
|
|
298
|
+
{
|
|
299
|
+
type: LlmEventType.ToolCallRequest,
|
|
300
|
+
callId,
|
|
301
|
+
name,
|
|
302
|
+
args,
|
|
303
|
+
},
|
|
304
|
+
];
|
|
305
|
+
}
|
|
306
|
+
handleResponseCompleted(evt, state) {
|
|
307
|
+
const events = [];
|
|
308
|
+
const response = evt['response'];
|
|
309
|
+
// Determine finish reason from response
|
|
310
|
+
const output = response?.['output'] ?? [];
|
|
311
|
+
const hasToolCall = output.some((o) => o['type'] === 'function_call');
|
|
312
|
+
const finishReason = hasToolCall ? 'tool_use' : 'end_turn';
|
|
313
|
+
if (!state.finishedEmitted) {
|
|
314
|
+
events.push({
|
|
315
|
+
type: LlmEventType.Finished,
|
|
316
|
+
finishReason,
|
|
317
|
+
});
|
|
318
|
+
state.finishedEmitted = true;
|
|
319
|
+
}
|
|
320
|
+
// Extract usage
|
|
321
|
+
const usage = response?.['usage'];
|
|
322
|
+
const inputTokens = usage?.['input_tokens'] ?? 0;
|
|
323
|
+
const outputTokens = usage?.['output_tokens'] ?? 0;
|
|
324
|
+
const inputDetails = usage?.['input_tokens_details'];
|
|
325
|
+
const cachedTokens = inputDetails?.['cached_tokens'] ?? 0;
|
|
326
|
+
events.push({
|
|
327
|
+
type: LlmEventType.MessageEnd,
|
|
328
|
+
usage: {
|
|
329
|
+
promptTokens: inputTokens,
|
|
330
|
+
completionTokens: outputTokens,
|
|
331
|
+
totalTokens: inputTokens + outputTokens,
|
|
332
|
+
cachedTokens,
|
|
333
|
+
},
|
|
334
|
+
});
|
|
335
|
+
return events;
|
|
336
|
+
}
|
|
337
|
+
// ============================================================================
|
|
338
|
+
// Private Message Helpers
|
|
339
|
+
// ============================================================================
|
|
340
|
+
/**
|
|
341
|
+
* Convert a single LlmMessage to a Responses API input message.
|
|
342
|
+
*
|
|
343
|
+
* Note: `system` role → `developer` role in Responses API.
|
|
344
|
+
*/
|
|
345
|
+
convertSingleMessage(msg) {
|
|
346
|
+
switch (msg.role) {
|
|
347
|
+
case 'system':
|
|
348
|
+
return this.convertSystemMessage(msg);
|
|
349
|
+
case 'user':
|
|
350
|
+
return this.convertUserMessage(msg);
|
|
351
|
+
case 'assistant':
|
|
352
|
+
return this.convertAssistantMessage(msg);
|
|
353
|
+
case 'tool':
|
|
354
|
+
return this.convertToolMessage(msg);
|
|
355
|
+
default:
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
convertSystemMessage(msg) {
|
|
360
|
+
const text = this.extractTextContent(msg.content);
|
|
361
|
+
if (!text)
|
|
362
|
+
return null;
|
|
363
|
+
// Responses API uses "developer" role instead of "system"
|
|
364
|
+
return { role: 'developer', content: text };
|
|
365
|
+
}
|
|
366
|
+
convertUserMessage(msg) {
|
|
367
|
+
const text = this.extractTextContent(msg.content);
|
|
368
|
+
if (!text)
|
|
369
|
+
return null;
|
|
370
|
+
return { role: 'user', content: text };
|
|
371
|
+
}
|
|
372
|
+
convertAssistantMessage(msg) {
|
|
373
|
+
const text = this.extractTextContent(msg.content);
|
|
374
|
+
if (!text)
|
|
375
|
+
return null;
|
|
376
|
+
return { role: 'assistant', content: text };
|
|
377
|
+
}
|
|
378
|
+
convertToolMessage(msg) {
|
|
379
|
+
const toolResult = msg.content.find((c) => c.type === 'tool_result');
|
|
380
|
+
if (!toolResult || toolResult.type !== 'tool_result')
|
|
381
|
+
return null;
|
|
382
|
+
let output;
|
|
383
|
+
if (typeof toolResult.content === 'string') {
|
|
384
|
+
output = toolResult.content;
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
try {
|
|
388
|
+
output = JSON.stringify(toolResult.content);
|
|
389
|
+
}
|
|
390
|
+
catch {
|
|
391
|
+
output = String(toolResult.content);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return {
|
|
395
|
+
type: 'function_call_output',
|
|
396
|
+
call_id: toolResult.toolCallId,
|
|
397
|
+
output,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
extractTextContent(contents) {
|
|
401
|
+
const texts = contents
|
|
402
|
+
.filter((c) => c.type === 'text')
|
|
403
|
+
.map((c) => c.text)
|
|
404
|
+
.filter(Boolean);
|
|
405
|
+
return texts.length > 0 ? texts.join('') : null;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=responsesConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsesConverter.js","sourceRoot":"","sources":["../../../../src/providers/openai/responsesConverter.ts"],"names":[],"mappings":"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"}
|