@mohamedtebo/convai-platform 1.0.0 → 1.0.4

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.
Files changed (154) hide show
  1. package/README.md +80 -72
  2. package/dist/providers/openai/builders/conversation-or-create.builder.d.ts +7 -6
  3. package/dist/providers/openai/builders/conversation-or-create.builder.d.ts.map +1 -1
  4. package/dist/providers/openai/builders/conversation-or-create.builder.js +11 -11
  5. package/dist/providers/openai/builders/conversation-or-create.builder.js.map +1 -1
  6. package/dist/providers/openai/loops/responses-tool.loop.d.ts +7 -2
  7. package/dist/providers/openai/loops/responses-tool.loop.d.ts.map +1 -1
  8. package/dist/providers/openai/loops/responses-tool.loop.js +164 -48
  9. package/dist/providers/openai/loops/responses-tool.loop.js.map +1 -1
  10. package/dist/providers/openai/openai-responses.provider.d.ts.map +1 -1
  11. package/dist/providers/openai/openai-responses.provider.js +1 -2
  12. package/dist/providers/openai/openai-responses.provider.js.map +1 -1
  13. package/dist/providers/openai/operations/create-response.operation.d.ts +2 -1
  14. package/dist/providers/openai/operations/create-response.operation.d.ts.map +1 -1
  15. package/dist/providers/openai/operations/create-response.operation.js +13 -4
  16. package/dist/providers/openai/operations/create-response.operation.js.map +1 -1
  17. package/dist/providers/openai/operations/submit-tool-outputs.operation.d.ts +4 -3
  18. package/dist/providers/openai/operations/submit-tool-outputs.operation.d.ts.map +1 -1
  19. package/dist/providers/openai/operations/submit-tool-outputs.operation.js +13 -7
  20. package/dist/providers/openai/operations/submit-tool-outputs.operation.js.map +1 -1
  21. package/docs/API_INTEGRATION.md +385 -0
  22. package/package.json +3 -3
  23. package/dist/src/adapters/index.d.ts +0 -2
  24. package/dist/src/adapters/index.d.ts.map +0 -1
  25. package/dist/src/adapters/index.js +0 -6
  26. package/dist/src/adapters/index.js.map +0 -1
  27. package/dist/src/adapters/memory-conversation.store.d.ts +0 -12
  28. package/dist/src/adapters/memory-conversation.store.d.ts.map +0 -1
  29. package/dist/src/adapters/memory-conversation.store.js +0 -25
  30. package/dist/src/adapters/memory-conversation.store.js.map +0 -1
  31. package/dist/src/composed/platform-client.d.ts +0 -29
  32. package/dist/src/composed/platform-client.d.ts.map +0 -1
  33. package/dist/src/composed/platform-client.js +0 -16
  34. package/dist/src/composed/platform-client.js.map +0 -1
  35. package/dist/src/errors/index.d.ts +0 -4
  36. package/dist/src/errors/index.d.ts.map +0 -1
  37. package/dist/src/errors/index.js +0 -11
  38. package/dist/src/errors/index.js.map +0 -1
  39. package/dist/src/errors/provider.error.d.ts +0 -16
  40. package/dist/src/errors/provider.error.d.ts.map +0 -1
  41. package/dist/src/errors/provider.error.js +0 -15
  42. package/dist/src/errors/provider.error.js.map +0 -1
  43. package/dist/src/errors/sdk.error.d.ts +0 -15
  44. package/dist/src/errors/sdk.error.d.ts.map +0 -1
  45. package/dist/src/errors/sdk.error.js +0 -16
  46. package/dist/src/errors/sdk.error.js.map +0 -1
  47. package/dist/src/errors/tool-loop.error.d.ts +0 -11
  48. package/dist/src/errors/tool-loop.error.d.ts.map +0 -1
  49. package/dist/src/errors/tool-loop.error.js +0 -30
  50. package/dist/src/errors/tool-loop.error.js.map +0 -1
  51. package/dist/src/factory/index.d.ts +0 -2
  52. package/dist/src/factory/index.d.ts.map +0 -1
  53. package/dist/src/factory/index.js +0 -6
  54. package/dist/src/factory/index.js.map +0 -1
  55. package/dist/src/factory/provider.factory.d.ts +0 -8
  56. package/dist/src/factory/provider.factory.d.ts.map +0 -1
  57. package/dist/src/factory/provider.factory.js +0 -49
  58. package/dist/src/factory/provider.factory.js.map +0 -1
  59. package/dist/src/index.d.ts +0 -13
  60. package/dist/src/index.d.ts.map +0 -1
  61. package/dist/src/index.js +0 -34
  62. package/dist/src/index.js.map +0 -1
  63. package/dist/src/providers/anthropic/anthropic.provider.d.ts +0 -22
  64. package/dist/src/providers/anthropic/anthropic.provider.d.ts.map +0 -1
  65. package/dist/src/providers/anthropic/anthropic.provider.js +0 -34
  66. package/dist/src/providers/anthropic/anthropic.provider.js.map +0 -1
  67. package/dist/src/providers/anthropic/loops/claude-tool.loop.d.ts +0 -11
  68. package/dist/src/providers/anthropic/loops/claude-tool.loop.d.ts.map +0 -1
  69. package/dist/src/providers/anthropic/loops/claude-tool.loop.js +0 -58
  70. package/dist/src/providers/anthropic/loops/claude-tool.loop.js.map +0 -1
  71. package/dist/src/providers/anthropic/utils/error-mapper.d.ts +0 -4
  72. package/dist/src/providers/anthropic/utils/error-mapper.d.ts.map +0 -1
  73. package/dist/src/providers/anthropic/utils/error-mapper.js +0 -35
  74. package/dist/src/providers/anthropic/utils/error-mapper.js.map +0 -1
  75. package/dist/src/providers/openai/builders/conversation-or-create.builder.d.ts +0 -15
  76. package/dist/src/providers/openai/builders/conversation-or-create.builder.d.ts.map +0 -1
  77. package/dist/src/providers/openai/builders/conversation-or-create.builder.js +0 -18
  78. package/dist/src/providers/openai/builders/conversation-or-create.builder.js.map +0 -1
  79. package/dist/src/providers/openai/loops/assistants-tool.loop.d.ts +0 -19
  80. package/dist/src/providers/openai/loops/assistants-tool.loop.d.ts.map +0 -1
  81. package/dist/src/providers/openai/loops/assistants-tool.loop.js +0 -58
  82. package/dist/src/providers/openai/loops/assistants-tool.loop.js.map +0 -1
  83. package/dist/src/providers/openai/loops/responses-tool.loop.d.ts +0 -14
  84. package/dist/src/providers/openai/loops/responses-tool.loop.d.ts.map +0 -1
  85. package/dist/src/providers/openai/loops/responses-tool.loop.js +0 -87
  86. package/dist/src/providers/openai/loops/responses-tool.loop.js.map +0 -1
  87. package/dist/src/providers/openai/openai-assistants.provider.d.ts +0 -27
  88. package/dist/src/providers/openai/openai-assistants.provider.d.ts.map +0 -1
  89. package/dist/src/providers/openai/openai-assistants.provider.js +0 -40
  90. package/dist/src/providers/openai/openai-assistants.provider.js.map +0 -1
  91. package/dist/src/providers/openai/openai-responses.provider.d.ts +0 -25
  92. package/dist/src/providers/openai/openai-responses.provider.d.ts.map +0 -1
  93. package/dist/src/providers/openai/openai-responses.provider.js +0 -35
  94. package/dist/src/providers/openai/openai-responses.provider.js.map +0 -1
  95. package/dist/src/providers/openai/operations/create-conversation.operation.d.ts +0 -7
  96. package/dist/src/providers/openai/operations/create-conversation.operation.d.ts.map +0 -1
  97. package/dist/src/providers/openai/operations/create-conversation.operation.js +0 -22
  98. package/dist/src/providers/openai/operations/create-conversation.operation.js.map +0 -1
  99. package/dist/src/providers/openai/operations/create-response.operation.d.ts +0 -13
  100. package/dist/src/providers/openai/operations/create-response.operation.d.ts.map +0 -1
  101. package/dist/src/providers/openai/operations/create-response.operation.js +0 -27
  102. package/dist/src/providers/openai/operations/create-response.operation.js.map +0 -1
  103. package/dist/src/providers/openai/operations/submit-tool-outputs.operation.d.ts +0 -17
  104. package/dist/src/providers/openai/operations/submit-tool-outputs.operation.d.ts.map +0 -1
  105. package/dist/src/providers/openai/operations/submit-tool-outputs.operation.js +0 -33
  106. package/dist/src/providers/openai/operations/submit-tool-outputs.operation.js.map +0 -1
  107. package/dist/src/providers/openai/utils/error-mapper.d.ts +0 -4
  108. package/dist/src/providers/openai/utils/error-mapper.d.ts.map +0 -1
  109. package/dist/src/providers/openai/utils/error-mapper.js +0 -45
  110. package/dist/src/providers/openai/utils/error-mapper.js.map +0 -1
  111. package/dist/src/providers/openai/utils/usage-mapper.d.ts +0 -10
  112. package/dist/src/providers/openai/utils/usage-mapper.d.ts.map +0 -1
  113. package/dist/src/providers/openai/utils/usage-mapper.js +0 -16
  114. package/dist/src/providers/openai/utils/usage-mapper.js.map +0 -1
  115. package/dist/src/safe/index.d.ts +0 -2
  116. package/dist/src/safe/index.d.ts.map +0 -1
  117. package/dist/src/safe/index.js +0 -6
  118. package/dist/src/safe/index.js.map +0 -1
  119. package/dist/src/safe/safe-platform.client.d.ts +0 -14
  120. package/dist/src/safe/safe-platform.client.d.ts.map +0 -1
  121. package/dist/src/safe/safe-platform.client.js +0 -56
  122. package/dist/src/safe/safe-platform.client.js.map +0 -1
  123. package/dist/src/types/ask-with-tools.types.d.ts +0 -48
  124. package/dist/src/types/ask-with-tools.types.d.ts.map +0 -1
  125. package/dist/src/types/ask-with-tools.types.js +0 -3
  126. package/dist/src/types/ask-with-tools.types.js.map +0 -1
  127. package/dist/src/types/client-config.interface.d.ts +0 -33
  128. package/dist/src/types/client-config.interface.d.ts.map +0 -1
  129. package/dist/src/types/client-config.interface.js +0 -3
  130. package/dist/src/types/client-config.interface.js.map +0 -1
  131. package/dist/src/types/conversation-store.interface.d.ts +0 -24
  132. package/dist/src/types/conversation-store.interface.d.ts.map +0 -1
  133. package/dist/src/types/conversation-store.interface.js +0 -3
  134. package/dist/src/types/conversation-store.interface.js.map +0 -1
  135. package/dist/src/types/index.d.ts +0 -8
  136. package/dist/src/types/index.d.ts.map +0 -1
  137. package/dist/src/types/index.js +0 -7
  138. package/dist/src/types/index.js.map +0 -1
  139. package/dist/src/types/provider.interface.d.ts +0 -13
  140. package/dist/src/types/provider.interface.d.ts.map +0 -1
  141. package/dist/src/types/provider.interface.js +0 -3
  142. package/dist/src/types/provider.interface.js.map +0 -1
  143. package/dist/src/types/sdk-result.interface.d.ts +0 -30
  144. package/dist/src/types/sdk-result.interface.d.ts.map +0 -1
  145. package/dist/src/types/sdk-result.interface.js +0 -11
  146. package/dist/src/types/sdk-result.interface.js.map +0 -1
  147. package/dist/src/types/tool-handler.interface.d.ts +0 -45
  148. package/dist/src/types/tool-handler.interface.d.ts.map +0 -1
  149. package/dist/src/types/tool-handler.interface.js +0 -3
  150. package/dist/src/types/tool-handler.interface.js.map +0 -1
  151. package/dist/tests/safe-client.test.d.ts +0 -2
  152. package/dist/tests/safe-client.test.d.ts.map +0 -1
  153. package/dist/tests/safe-client.test.js +0 -66
  154. package/dist/tests/safe-client.test.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @mohamedtebo/convai-platform
2
2
 
3
- > Multi-provider AI conversation SDK — OpenAI Responses/Conversations API, OpenAI Assistants (legacy), and Anthropic Claude with explicit tool loops, pluggable persistence, and strict Single Responsibility architecture.
3
+ > Multi-provider AI SDK — OpenAI **Responses + Conversations** (recommended), OpenAI Assistants (legacy), Anthropic Claude. Explicit tool loops, pluggable `ConversationStore` + `ToolHandler`, `SdkResult` safe API.
4
4
 
5
5
  ---
6
6
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```bash
10
10
  npm install @mohamedtebo/convai-platform openai
11
- # optional: add Anthropic support
11
+ # optional
12
12
  npm install @anthropic-ai/sdk
13
13
  ```
14
14
 
@@ -22,132 +22,140 @@ import { createPlatformClient, MemoryConversationStore } from '@mohamedtebo/conv
22
22
  const client = createPlatformClient({
23
23
  provider: 'openai-responses',
24
24
  apiKey: process.env.OPENAI_API_KEY!,
25
- model: 'gpt-4o',
25
+ model: 'gpt-4o-mini',
26
26
  conversationStore: new MemoryConversationStore(),
27
27
  });
28
28
 
29
29
  const result = await client.safe.askWithTools({
30
- threadKey: 'thread_abc123',
31
- chatbotId: 'bot_001',
32
- userQuestion: 'Hello, how can I book a ticket?',
30
+ threadKey: 'resp_conv_abc123',
31
+ chatbotId: '507f1f77bcf86cd799439011',
32
+ userQuestion: 'Book a ticket for tomorrow',
33
33
  instructions: 'You are a helpful booking assistant.',
34
34
  });
35
35
 
36
36
  if (result.success) {
37
- console.log(result.data.outputText);
37
+ if (result.data.kind === 'text') {
38
+ console.log(result.data.outputText);
39
+ } else {
40
+ console.log(result.data.toolCallResult);
41
+ }
38
42
  } else {
39
- console.error(result.error.hint);
43
+ console.error(result.error.code, result.error.hint);
40
44
  }
41
45
  ```
42
46
 
43
47
  ---
44
48
 
45
- ## Architecture
49
+ ## Documentation (included in npm package)
46
50
 
47
- ```
48
- src/
49
- ├── index.ts ← Public API (exports)
50
- ├── composed/
51
- │ └── platform-client.ts ← createPlatformClient() — composed entry point
52
- ├── factory/
53
- │ └── provider.factory.ts ← Maps ClientConfig → AIProvider
54
- ├── safe/
55
- │ └── safe-platform.client.ts ← SdkResult<T> wrapper (never throws)
56
- ├── types/ ← Shared interfaces (all ≤ 60 lines)
57
- │ ├── ask-with-tools.types.ts
58
- │ ├── client-config.interface.ts
59
- │ ├── conversation-store.interface.ts
60
- │ ├── provider.interface.ts
61
- │ ├── sdk-result.interface.ts
62
- │ └── tool-handler.interface.ts
63
- ├── errors/ ← Typed error hierarchy
64
- │ ├── sdk.error.ts
65
- │ ├── provider.error.ts
66
- │ └── tool-loop.error.ts
67
- ├── adapters/
68
- │ └── memory-conversation.store.ts ← In-memory ConversationStore (for tests)
69
- └── providers/
70
- ├── openai/
71
- │ ├── openai-responses.provider.ts ← NEW API: Responses + Conversations
72
- │ ├── openai-assistants.provider.ts ← LEGACY API: beta.threads (deprecated)
73
- │ ├── operations/ ← Single-operation files (createResponse, etc.)
74
- │ ├── loops/ ← Tool loop implementations
75
- │ ├── builders/ ← State builders (resolveConversationId)
76
- │ └── utils/ ← error-mapper, usage-mapper
77
- └── anthropic/
78
- ├── anthropic.provider.ts
79
- ├── loops/claude-tool.loop.ts
80
- └── utils/error-mapper.ts
81
- ```
51
+ | Doc | Description |
52
+ |-----|-------------|
53
+ | **[docs/API_INTEGRATION.md](./docs/API_INTEGRATION.md)** | Full **api** integration: migration, lifecycle, WhatsApp, Facebook |
54
+ | **[../api/docs/COMPLETE_CONVAI_SDK_INTEGRATION_GUIDE.md](../api/docs/COMPLETE_CONVAI_SDK_INTEGRATION_GUIDE.md)** | Master guide (api monorepo) — all channels + migration |
55
+ | [README.md](./README.md) | This file SDK API reference |
56
+
57
+ After install: `node_modules/@mohamedtebo/convai-platform/docs/API_INTEGRATION.md`
58
+
59
+ **api monorepo copies:**
60
+
61
+ - `api/docs/CONVAI_SDK_INTEGRATION.md` — integration guide
62
+ - `api/docs/reports/CONVAI_SDK_INTEGRATION_REPORT.md` — formal rollout report
82
63
 
83
64
  ---
84
65
 
85
66
  ## Providers
86
67
 
87
- | Provider | Config `provider` value | Notes |
88
- |---|---|---|
89
- | OpenAI Responses + Conversations | `openai-responses` | **Recommended** |
90
- | OpenAI Assistants (legacy) | `openai-assistants` | Deprecated use during migration |
91
- | Anthropic Claude | `anthropic` | Requires `@anthropic-ai/sdk` peer dep |
68
+ | `provider` value | API |
69
+ |------------------|-----|
70
+ | `openai-responses` | OpenAI Responses + Conversations (**recommended**) |
71
+ | `openai-assistants` | OpenAI Assistants beta (legacy) |
72
+ | `anthropic` | Claude |
92
73
 
93
74
  ---
94
75
 
95
- ## Pluggable Persistence — ConversationStore
76
+ ## Core interfaces
77
+
78
+ ### ConversationStore
79
+
80
+ Persist `conversationId` and `lastResponseId` per app thread key.
96
81
 
97
82
  ```typescript
98
- export interface ConversationStore {
83
+ interface ConversationStore {
99
84
  load(threadKey: string): Promise<ConversationState | null>;
100
85
  save(threadKey: string, state: ConversationState): Promise<void>;
101
86
  create(threadKey: string, conversationId: string): Promise<ConversationState>;
102
87
  }
103
88
  ```
104
89
 
105
- Telbany ships a `MongoConversationStore` inside `api/src/core/convai-adapters/` that reads/writes `Thread.openai_conversation_id` and `Thread.last_response_id`.
90
+ **api** implements this as `MongoConversationStore` (`Thread.openai_conversation_id`).
106
91
 
107
- ---
92
+ ### ToolHandler
108
93
 
109
- ## Pluggable Tool Handling ToolHandler
94
+ Execute business tools when the model returns `function_call`.
110
95
 
111
96
  ```typescript
112
- export interface ToolHandler {
97
+ interface ToolHandler {
113
98
  buildOutput(call: RawToolCall, ctx: ToolHandlerContext): Promise<ToolOutput | undefined>;
114
99
  extractResult(calls: RawToolCall[], outputs: ToolOutput[], ctx: ToolHandlerContext): Promise<unknown>;
115
100
  }
116
101
  ```
117
102
 
118
- Telbany ships a `TelbanyToolHandler` that delegates to existing run-completion services so all business logic stays in `telbany`, not in the SDK.
103
+ **api** implements this as **ApiToolHandler** in `api/src/core/convai-adapters/telbany-tool.handler.ts`.
119
104
 
120
105
  ---
121
106
 
122
- ## Result type
107
+ ## api integration (production)
123
108
 
124
109
  ```typescript
125
- const result = await client.safe.askWithTools(params);
110
+ import { getAIPlatformClient } from './core/convai-adapters';
111
+
112
+ const client = getAIPlatformClient({ backend: 'openai-responses', model: 'gpt-4o-mini' });
113
+
114
+ await client.safe.askWithTools({
115
+ threadKey: threadId,
116
+ chatbotId,
117
+ organizationId,
118
+ userQuestion: enrichedQuestion,
119
+ instructions: params.instructions,
120
+ tools: params.tools,
121
+ model: params.model,
122
+ mediaUrl,
123
+ });
124
+ ```
125
+
126
+ Enable: `AI_USE_CONVAI_SDK=true` in api `.env` (after migration steps 01–06).
127
+
128
+ ---
129
+
130
+ ## Package layout
126
131
 
127
- if (result.success) {
128
- if (result.data.kind === 'text') {
129
- console.log(result.data.outputText); // plain AI reply
130
- } else {
131
- console.log(result.data.toolCallResult); // ticket, product, etc.
132
- }
133
- } else {
134
- console.error(result.error.code, result.error.hint);
135
- }
132
+ ```
133
+ src/
134
+ ├── composed/platform-client.ts
135
+ ├── factory/provider.factory.ts
136
+ ├── safe/safe-platform.client.ts
137
+ ├── types/
138
+ ├── errors/
139
+ ├── adapters/memory-conversation.store.ts
140
+ └── providers/openai/
141
+ ├── openai-responses.provider.ts
142
+ ├── operations/create-response.operation.ts
143
+ ├── operations/submit-tool-outputs.operation.ts
144
+ └── loops/responses-tool.loop.ts
145
+ docs/
146
+ └── API_INTEGRATION.md ← full api rollout guide
136
147
  ```
137
148
 
138
149
  ---
139
150
 
140
- ## Build & Publish
151
+ ## Build & publish
141
152
 
142
153
  ```bash
143
- # inside convai-platform/
144
- npm install
145
154
  npm run build
155
+ npm test
146
156
  npm publish --access public
147
157
  ```
148
158
 
149
- Requires npm login under `mohamedtebo` account, or `npm login --registry https://registry.npmjs.org`.
150
-
151
159
  ---
152
160
 
153
161
  ## License
@@ -1,15 +1,16 @@
1
- import type OpenAI from 'openai';
2
1
  import type { ConversationStore } from '../../../types/conversation-store.interface';
3
2
  /**
4
- * Resolve the conversationId for a thread.
5
- * Creates a new OpenAI conversation when none exists yet (lazy creation).
3
+ * Load existing conversation state for a thread.
4
+ * Returns undefined conversationId on first turn OpenAI auto-creates the
5
+ * conversation and returns its ID in the response (response.conversation.id).
6
+ * The caller is responsible for persisting that ID via store.save() after
7
+ * receiving the first response.
6
8
  */
7
- export declare function resolveConversationId({ openai, store, threadKey, }: {
8
- openai: OpenAI;
9
+ export declare function loadConversationState({ store, threadKey, }: {
9
10
  store: ConversationStore;
10
11
  threadKey: string;
11
12
  }): Promise<{
12
- conversationId: string;
13
+ conversationId: string | undefined;
13
14
  lastResponseId: string | undefined;
14
15
  }>;
15
16
  //# sourceMappingURL=conversation-or-create.builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-or-create.builder.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/builders/conversation-or-create.builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAGrF;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,MAAM,EACN,KAAK,EACL,SAAS,GACV,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAU1E"}
1
+ {"version":3,"file":"conversation-or-create.builder.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/builders/conversation-or-create.builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAErF;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAMtF"}
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveConversationId = resolveConversationId;
4
- const create_conversation_operation_1 = require("../operations/create-conversation.operation");
3
+ exports.loadConversationState = loadConversationState;
5
4
  /**
6
- * Resolve the conversationId for a thread.
7
- * Creates a new OpenAI conversation when none exists yet (lazy creation).
5
+ * Load existing conversation state for a thread.
6
+ * Returns undefined conversationId on first turn OpenAI auto-creates the
7
+ * conversation and returns its ID in the response (response.conversation.id).
8
+ * The caller is responsible for persisting that ID via store.save() after
9
+ * receiving the first response.
8
10
  */
9
- async function resolveConversationId({ openai, store, threadKey, }) {
11
+ async function loadConversationState({ store, threadKey, }) {
10
12
  const existing = await store.load(threadKey);
11
- if (existing) {
12
- return { conversationId: existing.conversationId, lastResponseId: existing.lastResponseId };
13
- }
14
- const conversationId = await (0, create_conversation_operation_1.createConversation)(openai);
15
- await store.create(threadKey, conversationId);
16
- return { conversationId, lastResponseId: undefined };
13
+ return {
14
+ conversationId: existing?.conversationId,
15
+ lastResponseId: existing?.lastResponseId,
16
+ };
17
17
  }
18
18
  //# sourceMappingURL=conversation-or-create.builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-or-create.builder.js","sourceRoot":"","sources":["../../../../src/providers/openai/builders/conversation-or-create.builder.ts"],"names":[],"mappings":";;AAQA,sDAkBC;AAxBD,+FAAiF;AAEjF;;;GAGG;AACI,KAAK,UAAU,qBAAqB,CAAC,EAC1C,MAAM,EACN,KAAK,EACL,SAAS,GAKV;IACC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,IAAA,kDAAkB,EAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"conversation-or-create.builder.js","sourceRoot":"","sources":["../../../../src/providers/openai/builders/conversation-or-create.builder.ts"],"names":[],"mappings":";;AASA,sDAYC;AAnBD;;;;;;GAMG;AACI,KAAK,UAAU,qBAAqB,CAAC,EAC1C,KAAK,EACL,SAAS,GAIV;IACC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,OAAO;QACL,cAAc,EAAE,QAAQ,EAAE,cAAc;QACxC,cAAc,EAAE,QAAQ,EAAE,cAAc;KACzC,CAAC;AACJ,CAAC"}
@@ -8,7 +8,12 @@ interface LoopContext {
8
8
  handler?: ToolHandler;
9
9
  model: string;
10
10
  }
11
- /** Run the full Responses API tool loop for one user turn. */
12
- export declare function runResponsesToolLoop(ctx: LoopContext, params: AskWithToolsParams, conversationId: string, previousResponseId: string | undefined): Promise<AskWithToolsResult>;
11
+ /**
12
+ * Run the full Responses API tool loop for one user turn.
13
+ *
14
+ * Mirrors telbany's legacy runResponseToolLoop: tool calls are detected from
15
+ * `output[]` items with type `function_call`, not from status `requires_action`.
16
+ */
17
+ export declare function runResponsesToolLoop(ctx: LoopContext, params: AskWithToolsParams, conversationId: string | undefined, previousResponseId: string | undefined): Promise<AskWithToolsResult>;
13
18
  export {};
14
19
  //# sourceMappingURL=responses-tool.loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses-tool.loop.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/loops/responses-tool.loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,uCAAuC,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAQrF,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8DAA8D;AAC9D,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAyD7B"}
1
+ {"version":3,"file":"responses-tool.loop.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/loops/responses-tool.loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,uCAAuC,CAAC;AAClG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAQrF,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,kBAAkB,EAC1B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAsG7B"}
@@ -6,60 +6,104 @@ const submit_tool_outputs_operation_1 = require("../operations/submit-tool-outpu
6
6
  const usage_mapper_1 = require("../utils/usage-mapper");
7
7
  const errors_1 = require("../../../errors");
8
8
  const MAX_TURNS = 10;
9
- /** Run the full Responses API tool loop for one user turn. */
9
+ function buildTextResult(response, responseId, model) {
10
+ return {
11
+ kind: 'text',
12
+ outputText: extractOutputText(response),
13
+ responseId,
14
+ usage: (0, usage_mapper_1.mapUsage)(response['usage']),
15
+ model,
16
+ };
17
+ }
18
+ function buildToolResult(toolCallResult, response, responseId, model) {
19
+ return {
20
+ kind: 'toolResult',
21
+ toolCallResult,
22
+ responseId,
23
+ usage: (0, usage_mapper_1.mapUsage)(response['usage']),
24
+ model,
25
+ };
26
+ }
27
+ /**
28
+ * Run the full Responses API tool loop for one user turn.
29
+ *
30
+ * Mirrors telbany's legacy runResponseToolLoop: tool calls are detected from
31
+ * `output[]` items with type `function_call`, not from status `requires_action`.
32
+ */
10
33
  async function runResponsesToolLoop(ctx, params, conversationId, previousResponseId) {
11
34
  const { openai, store, handler, model } = ctx;
12
- let lastResponseId = previousResponseId;
35
+ let currentResponse = await createResponseWithRecovery(openai, store, params, conversationId, previousResponseId, model);
36
+ const resolvedConversationId = currentResponse['conversation']?.['id']
37
+ ?? conversationId
38
+ ?? '';
39
+ let currentResponseId = currentResponse['id'];
40
+ await store.save(params.threadKey, {
41
+ conversationId: resolvedConversationId,
42
+ lastResponseId: currentResponseId,
43
+ });
13
44
  for (let turn = 0; turn < MAX_TURNS; turn++) {
14
- const response = (await (turn === 0
15
- ? (0, create_response_operation_1.createResponse)(openai, {
16
- conversationId,
17
- previousResponseId: lastResponseId,
18
- model,
19
- instructions: params.instructions,
20
- userQuestion: params.userQuestion,
21
- tools: params.tools,
22
- vectorStoreIds: params.vectorStoreIds,
23
- })
24
- : Promise.resolve(null)));
25
- // On re-entry submit tool outputs instead
26
- if (turn > 0 || !response)
45
+ const status = currentResponse['status'];
46
+ if (status === 'failed') {
27
47
  break;
28
- const raw = response;
29
- const responseId = raw['id'];
30
- lastResponseId = responseId;
31
- await store.save(params.threadKey, { conversationId, lastResponseId: responseId });
32
- const status = raw['status'];
33
- if (status === 'completed') {
34
- const outputText = extractOutputText(raw);
35
- return { kind: 'text', outputText, responseId, usage: (0, usage_mapper_1.mapUsage)(raw['usage']), model };
36
48
  }
37
- if (status === 'requires_action' || status === 'failed_with_tool_calls') {
38
- if (!handler)
39
- throw new errors_1.NoToolHandlerError();
40
- const calls = extractToolCalls(raw);
41
- const toolContext = { threadKey: params.threadKey, chatbotId: params.chatbotId, organizationId: params.organizationId, userQuestion: params.userQuestion, mediaUrl: params.mediaUrl };
42
- const outputs = [];
43
- for (const call of calls) {
44
- const out = await handler.buildOutput(call, toolContext);
45
- if (out)
46
- outputs.push(out);
47
- }
48
- const appResult = await handler.extractResult(calls, outputs, toolContext);
49
- if (appResult !== null) {
50
- return { kind: 'toolResult', toolCallResult: appResult, responseId, usage: (0, usage_mapper_1.mapUsage)(raw['usage']), model };
51
- }
52
- const nextResponse = await (0, submit_tool_outputs_operation_1.submitToolOutputs)(openai, { previousResponseId: responseId, conversationId, model, instructions: params.instructions, toolOutputs: outputs, tools: params.tools });
53
- const nextId = nextResponse['id'];
54
- await store.save(params.threadKey, { conversationId, lastResponseId: nextId });
55
- lastResponseId = nextId;
56
- const nextStatus = nextResponse['status'];
57
- if (nextStatus === 'completed') {
58
- return { kind: 'text', outputText: extractOutputText(nextResponse), responseId: nextId, usage: (0, usage_mapper_1.mapUsage)(nextResponse['usage']), model };
49
+ const calls = extractToolCalls(currentResponse);
50
+ // No function calls — plain text turn complete
51
+ if (!calls.length) {
52
+ return buildTextResult(currentResponse, currentResponseId, model);
53
+ }
54
+ if (!handler)
55
+ throw new errors_1.NoToolHandlerError();
56
+ const toolCtx = {
57
+ threadKey: params.threadKey,
58
+ chatbotId: params.chatbotId,
59
+ organizationId: params.organizationId,
60
+ userQuestion: params.userQuestion,
61
+ mediaUrl: params.mediaUrl,
62
+ };
63
+ const outputs = (await Promise.all(calls.map((call) => handler.buildOutput(call, toolCtx)))).filter((o) => o !== undefined);
64
+ const appResult = await handler.extractResult(calls, outputs, toolCtx);
65
+ if (appResult !== null) {
66
+ // Side-effect ready (ticket, calendar, etc.) api post-processes via AssistantResponseService.
67
+ // Must still submit tool outputs so the OpenAI conversation is not left with a pending
68
+ // function_call (matches legacy runResponseToolLoop + handleRunCompletion).
69
+ if (outputs.length) {
70
+ currentResponse = (await (0, submit_tool_outputs_operation_1.submitToolOutputs)(openai, {
71
+ previousResponseId: currentResponseId,
72
+ conversationId: resolvedConversationId,
73
+ model,
74
+ instructions: params.instructions,
75
+ toolOutputs: outputs,
76
+ tools: params.tools,
77
+ }));
78
+ currentResponseId = currentResponse['id'];
79
+ await store.save(params.threadKey, {
80
+ conversationId: resolvedConversationId,
81
+ lastResponseId: currentResponseId,
82
+ });
59
83
  }
84
+ return buildToolResult(appResult, currentResponse, currentResponseId, model);
85
+ }
86
+ if (!outputs.length) {
87
+ break;
60
88
  }
89
+ currentResponse = (await (0, submit_tool_outputs_operation_1.submitToolOutputs)(openai, {
90
+ previousResponseId: currentResponseId,
91
+ conversationId: resolvedConversationId,
92
+ model,
93
+ instructions: params.instructions,
94
+ toolOutputs: outputs,
95
+ tools: params.tools,
96
+ }));
97
+ currentResponseId = currentResponse['id'];
98
+ await store.save(params.threadKey, {
99
+ conversationId: resolvedConversationId,
100
+ lastResponseId: currentResponseId,
101
+ });
61
102
  }
62
- throw new errors_1.ToolLoopError(MAX_TURNS);
103
+ if (currentResponse['status'] === 'failed') {
104
+ throw new errors_1.ToolLoopError(MAX_TURNS);
105
+ }
106
+ return buildTextResult(currentResponse, currentResponseId, model);
63
107
  }
64
108
  function extractOutputText(response) {
65
109
  const output = response['output'];
@@ -71,7 +115,12 @@ function extractOutputText(response) {
71
115
  const content = textBlock['content'];
72
116
  if (!Array.isArray(content))
73
117
  return '';
74
- return content.map((c) => c['text'] ?? '').join('');
118
+ return content
119
+ .map((c) => {
120
+ const part = c;
121
+ return (part['text'] ?? part['output_text'] ?? '');
122
+ })
123
+ .join('');
75
124
  }
76
125
  function extractToolCalls(response) {
77
126
  const output = response['output'];
@@ -81,7 +130,74 @@ function extractToolCalls(response) {
81
130
  .filter((b) => b['type'] === 'function_call')
82
131
  .map((b) => {
83
132
  const block = b;
84
- return { id: block['call_id'], name: block['name'], arguments: block['arguments'] };
133
+ return {
134
+ id: (block['call_id'] ?? block['id']),
135
+ name: block['name'],
136
+ arguments: (block['arguments'] ?? '{}'),
137
+ };
85
138
  });
86
139
  }
140
+ function isPendingToolOutputError(err) {
141
+ const msg = err instanceof Error ? err.message : String(err);
142
+ return msg.includes('No tool output found for function call');
143
+ }
144
+ /** Heal conversations left with unanswered function_call (pre-fix SDK short-circuit). */
145
+ async function recoverPendingToolOutputs(openai, opts) {
146
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
147
+ const stuck = (await openai.responses.retrieve(opts.previousResponseId));
148
+ const calls = extractToolCalls(stuck);
149
+ if (!calls.length)
150
+ return undefined;
151
+ const outputs = calls.map((call) => ({
152
+ call_id: call.id,
153
+ output: JSON.stringify({ status: 'completed' }),
154
+ }));
155
+ const healed = (await (0, submit_tool_outputs_operation_1.submitToolOutputs)(openai, {
156
+ previousResponseId: opts.previousResponseId,
157
+ conversationId: opts.conversationId,
158
+ model: opts.model,
159
+ instructions: opts.instructions,
160
+ toolOutputs: outputs,
161
+ tools: opts.tools,
162
+ }));
163
+ return healed['id'];
164
+ }
165
+ async function createResponseWithRecovery(openai, store, params, conversationId, previousResponseId, model) {
166
+ try {
167
+ return (await (0, create_response_operation_1.createResponse)(openai, {
168
+ conversationId,
169
+ previousResponseId,
170
+ model,
171
+ instructions: params.instructions,
172
+ userQuestion: params.userQuestion,
173
+ tools: params.tools,
174
+ vectorStoreIds: params.vectorStoreIds,
175
+ }));
176
+ }
177
+ catch (err) {
178
+ if (!isPendingToolOutputError(err) || !previousResponseId)
179
+ throw err;
180
+ const healedId = await recoverPendingToolOutputs(openai, {
181
+ previousResponseId,
182
+ conversationId,
183
+ model,
184
+ instructions: params.instructions,
185
+ tools: params.tools,
186
+ });
187
+ if (healedId && conversationId) {
188
+ await store.save(params.threadKey, {
189
+ conversationId,
190
+ lastResponseId: healedId,
191
+ });
192
+ }
193
+ return (await (0, create_response_operation_1.createResponse)(openai, {
194
+ conversationId,
195
+ model,
196
+ instructions: params.instructions,
197
+ userQuestion: params.userQuestion,
198
+ tools: params.tools,
199
+ vectorStoreIds: params.vectorStoreIds,
200
+ }));
201
+ }
202
+ }
87
203
  //# sourceMappingURL=responses-tool.loop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses-tool.loop.js","sourceRoot":"","sources":["../../../../src/providers/openai/loops/responses-tool.loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responses-tool.loop.js","sourceRoot":"","sources":["../../../../src/providers/openai/loops/responses-tool.loop.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai-responses.provider.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/openai-responses.provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAItE,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;gBAE3B,MAAM,EAAE,6BAA6B;IAW3C,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAc5E"}
1
+ {"version":3,"file":"openai-responses.provider.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/openai-responses.provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAItE,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;gBAE3B,MAAM,EAAE,6BAA6B;IAW3C,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAa5E"}
@@ -23,8 +23,7 @@ class OpenAIResponsesProvider {
23
23
  this.handler = config.toolHandler;
24
24
  }
25
25
  async askWithTools(params) {
26
- const { conversationId, lastResponseId } = await (0, conversation_or_create_builder_1.resolveConversationId)({
27
- openai: this.openai,
26
+ const { conversationId, lastResponseId } = await (0, conversation_or_create_builder_1.loadConversationState)({
28
27
  store: this.store,
29
28
  threadKey: params.threadKey,
30
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"openai-responses.provider.js","sourceRoot":"","sources":["../../../src/providers/openai/openai-responses.provider.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAK5B,8FAAkF;AAClF,qEAAmE;AAWnE;;;GAGG;AACH,MAAa,uBAAuB;IAMlC,YAAY,MAAqC;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC,SAAS,IAAI,KAAM;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,IAAA,sDAAqB,EAAC;YACrE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,IAAA,0CAAoB,EACzB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EACpG,MAAM,EACN,cAAc,EACd,cAAc,CACf,CAAC;IACJ,CAAC;CACF;AA/BD,0DA+BC"}
1
+ {"version":3,"file":"openai-responses.provider.js","sourceRoot":"","sources":["../../../src/providers/openai/openai-responses.provider.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAK5B,8FAAkF;AAClF,qEAAmE;AAWnE;;;GAGG;AACH,MAAa,uBAAuB;IAMlC,YAAY,MAAqC;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;YAClC,OAAO,EAAE,MAAM,CAAC,SAAS,IAAI,KAAM;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA0B;QAC3C,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,IAAA,sDAAqB,EAAC;YACrE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,IAAA,0CAAoB,EACzB,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,EACpG,MAAM,EACN,cAAc,EACd,cAAc,CACf,CAAC;IACJ,CAAC;CACF;AA9BD,0DA8BC"}
@@ -1,6 +1,7 @@
1
1
  import type OpenAI from 'openai';
2
2
  export interface CreateResponseParams {
3
- conversationId: string;
3
+ /** Existing OpenAI conversation ID, or undefined for the very first turn (auto-created by OpenAI). */
4
+ conversationId?: string;
4
5
  previousResponseId?: string;
5
6
  model: string;
6
7
  instructions: string;
@@ -1 +1 @@
1
- {"version":3,"file":"create-response.operation.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/operations/create-response.operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC,CA8BlB"}
1
+ {"version":3,"file":"create-response.operation.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/operations/create-response.operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAGjC,MAAM,WAAW,oBAAoB;IACnC,sGAAsG;IACtG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAwClB"}