@vybestack/llxprt-code-core 0.1.23-nightly.250829.6bacfcba → 0.1.23-nightly.250902.c3d3686d

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 (51) hide show
  1. package/dist/src/code_assist/codeAssist.js +17 -6
  2. package/dist/src/code_assist/codeAssist.js.map +1 -1
  3. package/dist/src/code_assist/server.js +15 -4
  4. package/dist/src/code_assist/server.js.map +1 -1
  5. package/dist/src/code_assist/setup.js +7 -0
  6. package/dist/src/code_assist/setup.js.map +1 -1
  7. package/dist/src/core/ContentGeneratorAdapter.d.ts +37 -0
  8. package/dist/src/core/ContentGeneratorAdapter.js +58 -0
  9. package/dist/src/core/ContentGeneratorAdapter.js.map +1 -0
  10. package/dist/src/core/client.d.ts +9 -2
  11. package/dist/src/core/client.js +111 -36
  12. package/dist/src/core/client.js.map +1 -1
  13. package/dist/src/core/compression-config.d.ts +10 -0
  14. package/dist/src/core/compression-config.js +18 -0
  15. package/dist/src/core/compression-config.js.map +1 -0
  16. package/dist/src/core/geminiChat.d.ts +8 -2
  17. package/dist/src/core/geminiChat.js +148 -32
  18. package/dist/src/core/geminiChat.js.map +1 -1
  19. package/dist/src/core/prompts.js +4 -2
  20. package/dist/src/core/prompts.js.map +1 -1
  21. package/dist/src/index.d.ts +2 -0
  22. package/dist/src/index.js +2 -0
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/providers/BaseProvider.d.ts +1 -1
  25. package/dist/src/providers/BaseProvider.js.map +1 -1
  26. package/dist/src/providers/anthropic/AnthropicProvider.js +1 -1
  27. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  28. package/dist/src/providers/gemini/GeminiProvider.js +100 -36
  29. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  30. package/dist/src/providers/openai/OpenAIProvider.d.ts +54 -25
  31. package/dist/src/providers/openai/OpenAIProvider.js +528 -984
  32. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  33. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +91 -0
  34. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +440 -0
  35. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -0
  36. package/dist/src/providers/openai-responses/index.d.ts +1 -0
  37. package/dist/src/providers/openai-responses/index.js +2 -0
  38. package/dist/src/providers/openai-responses/index.js.map +1 -0
  39. package/dist/src/services/history/ContentConverters.d.ts +38 -0
  40. package/dist/src/services/history/ContentConverters.js +188 -0
  41. package/dist/src/services/history/ContentConverters.js.map +1 -0
  42. package/dist/src/services/history/HistoryEvents.d.ts +32 -0
  43. package/dist/src/services/history/HistoryEvents.js +17 -0
  44. package/dist/src/services/history/HistoryEvents.js.map +1 -0
  45. package/dist/src/services/history/HistoryService.d.ts +168 -0
  46. package/dist/src/services/history/HistoryService.js +521 -0
  47. package/dist/src/services/history/HistoryService.js.map +1 -0
  48. package/dist/src/services/history/IContent.d.ts +179 -0
  49. package/dist/src/services/history/IContent.js +104 -0
  50. package/dist/src/services/history/IContent.js.map +1 -0
  51. package/package.json +1 -1
@@ -0,0 +1,440 @@
1
+ /**
2
+ * Copyright 2025 Vybestack LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * OpenAI Responses API Provider
18
+ * This provider exclusively uses the OpenAI /responses endpoint
19
+ * for models that support it (o1, o3, etc.)
20
+ */
21
+ import { DebugLogger } from '../../debug/index.js';
22
+ import { ContentGeneratorRole } from '../ContentGeneratorRole.js';
23
+ import { ToolFormatter } from '../../tools/ToolFormatter.js';
24
+ import { RESPONSES_API_MODELS } from '../openai/RESPONSES_API_MODELS.js';
25
+ import { ConversationCache } from '../openai/ConversationCache.js';
26
+ import { estimateMessagesTokens, estimateRemoteTokens, } from '../openai/estimateRemoteTokens.js';
27
+ import { parseResponsesStream, parseErrorResponse, } from '../openai/parseResponsesStream.js';
28
+ import { buildResponsesRequest } from '../openai/buildResponsesRequest.js';
29
+ import { BaseProvider } from '../BaseProvider.js';
30
+ import { getSettingsService } from '../../settings/settingsServiceInstance.js';
31
+ export class OpenAIResponsesProvider extends BaseProvider {
32
+ logger;
33
+ currentModel = 'o3-mini';
34
+ baseURL;
35
+ toolFormatter;
36
+ conversationCache;
37
+ modelParams;
38
+ constructor(apiKey, baseURL, _config) {
39
+ const baseConfig = {
40
+ name: 'openai-responses',
41
+ apiKey,
42
+ baseURL: baseURL || 'https://api.openai.com/v1',
43
+ envKeyNames: ['OPENAI_API_KEY'],
44
+ isOAuthEnabled: false,
45
+ oauthProvider: undefined,
46
+ oauthManager: undefined,
47
+ };
48
+ super(baseConfig);
49
+ this.logger = new DebugLogger('llxprt:providers:openai-responses');
50
+ this.logger.debug(() => `Constructor - baseURL: ${baseURL || 'https://api.openai.com/v1'}, apiKey: ${apiKey?.substring(0, 10) || 'none'}`);
51
+ this.baseURL = baseURL || 'https://api.openai.com/v1';
52
+ this.toolFormatter = new ToolFormatter();
53
+ this.conversationCache = new ConversationCache();
54
+ // Initialize from SettingsService
55
+ this.initializeFromSettings().catch((error) => {
56
+ this.logger.debug(() => `Failed to initialize from SettingsService: ${error}`);
57
+ });
58
+ // Set default model for responses API
59
+ if (process.env.LLXPRT_DEFAULT_MODEL &&
60
+ RESPONSES_API_MODELS.some((m) => process.env.LLXPRT_DEFAULT_MODEL.startsWith(m))) {
61
+ this.currentModel = process.env.LLXPRT_DEFAULT_MODEL;
62
+ }
63
+ }
64
+ /**
65
+ * This provider does not support OAuth
66
+ */
67
+ supportsOAuth() {
68
+ return false;
69
+ }
70
+ getToolFormat() {
71
+ // Always use OpenAI format for responses API
72
+ return 'openai';
73
+ }
74
+ async callResponsesEndpoint(messages, tools, options) {
75
+ // Check if API key is available (using resolved authentication)
76
+ const apiKey = await this.getAuthToken();
77
+ if (!apiKey) {
78
+ throw new Error('OpenAI API key is required to make API calls');
79
+ }
80
+ // Check context usage and warn if getting close to limit
81
+ if (options?.conversationId && options?.parentId) {
82
+ const contextInfo = this.estimateContextUsage(options.conversationId, options.parentId, messages);
83
+ // Warn if less than 4k tokens remaining
84
+ if (contextInfo.tokensRemaining < 4000) {
85
+ this.logger.debug(() => `Warning: Only ${contextInfo.tokensRemaining} tokens remaining (${contextInfo.contextUsedPercent.toFixed(1)}% context used). Consider starting a new conversation.`);
86
+ }
87
+ }
88
+ // Check cache for existing conversation
89
+ if (options?.conversationId && options?.parentId) {
90
+ const cachedMessages = this.conversationCache.get(options.conversationId, options.parentId);
91
+ if (cachedMessages) {
92
+ // Return cached messages as an async iterable
93
+ return (async function* () {
94
+ for (const message of cachedMessages) {
95
+ yield message;
96
+ }
97
+ })();
98
+ }
99
+ }
100
+ // Format tools for Responses API
101
+ const formattedTools = tools
102
+ ? this.toolFormatter.toResponsesTool(tools)
103
+ : undefined;
104
+ // Patch messages to include synthetic responses for cancelled tools
105
+ const { SyntheticToolResponseHandler } = await import('../openai/syntheticToolResponses.js');
106
+ const patchedMessages = SyntheticToolResponseHandler.patchMessageHistory(messages);
107
+ // Build the request
108
+ const request = buildResponsesRequest({
109
+ model: this.currentModel,
110
+ messages: patchedMessages,
111
+ tools: formattedTools,
112
+ stream: options?.stream ?? true,
113
+ conversationId: options?.conversationId,
114
+ parentId: options?.parentId,
115
+ tool_choice: options?.tool_choice,
116
+ ...(this.modelParams || {}),
117
+ });
118
+ // Make the API call
119
+ const responsesURL = `${this.baseURL}/responses`;
120
+ // Ensure proper UTF-8 encoding for the request body
121
+ const requestBody = JSON.stringify(request);
122
+ const bodyBlob = new Blob([requestBody], {
123
+ type: 'application/json; charset=utf-8',
124
+ });
125
+ const response = await fetch(responsesURL, {
126
+ method: 'POST',
127
+ headers: {
128
+ Authorization: `Bearer ${apiKey}`,
129
+ 'Content-Type': 'application/json; charset=utf-8',
130
+ },
131
+ body: bodyBlob,
132
+ });
133
+ // Handle errors
134
+ if (!response.ok) {
135
+ const errorBody = await response.text();
136
+ // Handle 422 context_length_exceeded error
137
+ if (response.status === 422 &&
138
+ errorBody.includes('context_length_exceeded')) {
139
+ this.logger.debug(() => 'Context length exceeded, invalidating cache and retrying stateless...');
140
+ // Invalidate the cache for this conversation
141
+ if (options?.conversationId && options?.parentId) {
142
+ this.conversationCache.invalidate(options.conversationId, options.parentId);
143
+ }
144
+ // Retry without conversation context (pure stateless)
145
+ const retryRequest = buildResponsesRequest({
146
+ model: this.currentModel,
147
+ messages,
148
+ tools: formattedTools,
149
+ stream: options?.stream ?? true,
150
+ // Omit conversationId and parentId for stateless retry
151
+ tool_choice: options?.tool_choice,
152
+ ...(this.modelParams || {}),
153
+ });
154
+ const retryRequestBody = JSON.stringify(retryRequest);
155
+ const retryBodyBlob = new Blob([retryRequestBody], {
156
+ type: 'application/json; charset=utf-8',
157
+ });
158
+ const retryResponse = await fetch(responsesURL, {
159
+ method: 'POST',
160
+ headers: {
161
+ Authorization: `Bearer ${apiKey}`,
162
+ 'Content-Type': 'application/json; charset=utf-8',
163
+ },
164
+ body: retryBodyBlob,
165
+ });
166
+ if (!retryResponse.ok) {
167
+ const retryErrorBody = await retryResponse.text();
168
+ throw parseErrorResponse(retryResponse.status, retryErrorBody, this.name);
169
+ }
170
+ // Use the retry response
171
+ return this.handleResponsesApiResponse(retryResponse, messages, undefined, // No conversation context on retry
172
+ undefined, options?.stream !== false);
173
+ }
174
+ throw parseErrorResponse(response.status, errorBody, this.name);
175
+ }
176
+ // Handle the response
177
+ return this.handleResponsesApiResponse(response, messages, options?.conversationId, options?.parentId, options?.stream !== false);
178
+ }
179
+ async handleResponsesApiResponse(response, messages, conversationId, parentId, isStreaming) {
180
+ // Handle streaming response
181
+ if (isStreaming && response.body) {
182
+ const collectedMessages = [];
183
+ const cache = this.conversationCache;
184
+ return (async function* () {
185
+ for await (const message of parseResponsesStream(response.body)) {
186
+ // Collect messages for caching
187
+ if (message.content || message.tool_calls) {
188
+ collectedMessages.push(message);
189
+ }
190
+ else if (message.usage && collectedMessages.length === 0) {
191
+ // If we only got a usage message with no content, add a placeholder
192
+ collectedMessages.push({
193
+ role: ContentGeneratorRole.ASSISTANT,
194
+ content: '',
195
+ });
196
+ }
197
+ yield message;
198
+ }
199
+ // Cache the collected messages with token count
200
+ if (conversationId && parentId && collectedMessages.length > 0) {
201
+ // Get previous accumulated tokens
202
+ const previousTokens = cache.getAccumulatedTokens(conversationId, parentId);
203
+ // Calculate tokens for this request (messages + response)
204
+ const requestTokens = estimateMessagesTokens(messages);
205
+ const responseTokens = estimateMessagesTokens(collectedMessages);
206
+ const totalTokensForRequest = requestTokens + responseTokens;
207
+ // Update cache with new accumulated total
208
+ cache.set(conversationId, parentId, collectedMessages, previousTokens + totalTokensForRequest);
209
+ }
210
+ })();
211
+ }
212
+ const data = (await response.json());
213
+ const resultMessages = [];
214
+ if (data.choices && data.choices.length > 0) {
215
+ const choice = data.choices[0];
216
+ const message = {
217
+ role: choice.message.role,
218
+ content: choice.message.content || '',
219
+ };
220
+ if (choice.message.tool_calls) {
221
+ message.tool_calls = choice.message.tool_calls;
222
+ }
223
+ if (data.usage) {
224
+ message.usage = {
225
+ prompt_tokens: data.usage.prompt_tokens || 0,
226
+ completion_tokens: data.usage.completion_tokens || 0,
227
+ total_tokens: data.usage.total_tokens || 0,
228
+ };
229
+ }
230
+ resultMessages.push(message);
231
+ }
232
+ // Cache the result with token count
233
+ if (conversationId && parentId && resultMessages.length > 0) {
234
+ // Get previous accumulated tokens
235
+ const previousTokens = this.conversationCache.getAccumulatedTokens(conversationId, parentId);
236
+ // Calculate tokens for this request
237
+ const requestTokens = estimateMessagesTokens(messages);
238
+ const responseTokens = estimateMessagesTokens(resultMessages);
239
+ const totalTokensForRequest = requestTokens + responseTokens;
240
+ // Update cache with new accumulated total
241
+ this.conversationCache.set(conversationId, parentId, resultMessages, previousTokens + totalTokensForRequest);
242
+ }
243
+ return (async function* () {
244
+ for (const message of resultMessages) {
245
+ yield message;
246
+ }
247
+ })();
248
+ }
249
+ async getModels() {
250
+ // Return models that support the responses API
251
+ return [
252
+ {
253
+ id: 'o1',
254
+ name: 'o1',
255
+ provider: 'openai-responses',
256
+ supportedToolFormats: ['openai'],
257
+ },
258
+ {
259
+ id: 'o1-preview',
260
+ name: 'o1-preview',
261
+ provider: 'openai-responses',
262
+ supportedToolFormats: ['openai'],
263
+ },
264
+ {
265
+ id: 'o1-mini',
266
+ name: 'o1-mini',
267
+ provider: 'openai-responses',
268
+ supportedToolFormats: ['openai'],
269
+ },
270
+ {
271
+ id: 'o3-mini',
272
+ name: 'o3-mini',
273
+ provider: 'openai-responses',
274
+ supportedToolFormats: ['openai'],
275
+ },
276
+ ];
277
+ }
278
+ async *generateChatCompletion(messages, tools, _toolFormat) {
279
+ // Check if API key is available
280
+ const apiKey = await this.getAuthToken();
281
+ if (!apiKey) {
282
+ throw new Error('OpenAI API key is required to generate completions');
283
+ }
284
+ // Always use responses endpoint
285
+ const conversationId = undefined;
286
+ const parentId = undefined;
287
+ yield* await this.callResponsesEndpoint(messages, tools, {
288
+ stream: true,
289
+ tool_choice: tools && tools.length > 0 ? 'auto' : undefined,
290
+ stateful: false, // Always stateless for now
291
+ conversationId,
292
+ parentId,
293
+ });
294
+ }
295
+ setModel(modelId) {
296
+ // Update SettingsService as the source of truth
297
+ this.setModelInSettings(modelId).catch((error) => {
298
+ this.logger.debug(() => `Failed to persist model to SettingsService: ${error}`);
299
+ });
300
+ // Keep local cache for performance
301
+ this.currentModel = modelId;
302
+ }
303
+ getCurrentModel() {
304
+ // Try to get from SettingsService first (source of truth)
305
+ try {
306
+ const settingsService = getSettingsService();
307
+ const providerSettings = settingsService.getProviderSettings(this.name);
308
+ if (providerSettings.model) {
309
+ return providerSettings.model;
310
+ }
311
+ }
312
+ catch (error) {
313
+ this.logger.debug(() => `Failed to get model from SettingsService: ${error}`);
314
+ }
315
+ // Fall back to cached value or default
316
+ return this.currentModel || this.getDefaultModel();
317
+ }
318
+ getDefaultModel() {
319
+ // Return the default model for responses API
320
+ return 'o3-mini';
321
+ }
322
+ setApiKey(apiKey) {
323
+ // Call base provider implementation
324
+ super.setApiKey?.(apiKey);
325
+ // Persist to SettingsService if available
326
+ this.setApiKeyInSettings(apiKey).catch((error) => {
327
+ this.logger.debug(() => `Failed to persist API key to SettingsService: ${error}`);
328
+ });
329
+ }
330
+ setBaseUrl(baseUrl) {
331
+ // If no baseUrl is provided, use default
332
+ this.baseURL =
333
+ baseUrl && baseUrl.trim() !== '' ? baseUrl : 'https://api.openai.com/v1';
334
+ // Persist to SettingsService if available
335
+ this.setBaseUrlInSettings(this.baseURL).catch((error) => {
336
+ this.logger.debug(() => `Failed to persist base URL to SettingsService: ${error}`);
337
+ });
338
+ // Call base provider implementation
339
+ super.setBaseUrl?.(baseUrl);
340
+ }
341
+ setConfig(_config) {
342
+ // Config not used by this provider
343
+ }
344
+ setToolFormatOverride(format) {
345
+ // Responses API only supports OpenAI format
346
+ if (format && format !== 'openai') {
347
+ this.logger.debug(() => `Warning: Responses API only supports OpenAI tool format, ignoring override to ${format}`);
348
+ }
349
+ }
350
+ /**
351
+ * Estimates the remote context usage for the current conversation
352
+ */
353
+ estimateContextUsage(conversationId, parentId, promptMessages) {
354
+ const promptTokens = estimateMessagesTokens(promptMessages);
355
+ return estimateRemoteTokens(this.currentModel, this.conversationCache, conversationId, parentId, promptTokens);
356
+ }
357
+ /**
358
+ * Get the conversation cache instance
359
+ */
360
+ getConversationCache() {
361
+ return this.conversationCache;
362
+ }
363
+ /**
364
+ * OpenAI Responses API always requires payment (API key)
365
+ */
366
+ isPaidMode() {
367
+ return true;
368
+ }
369
+ clearState() {
370
+ // Clear the conversation cache to prevent tool call ID mismatches
371
+ this.conversationCache.clear();
372
+ }
373
+ /**
374
+ * Get the list of server tools supported by this provider
375
+ */
376
+ getServerTools() {
377
+ return [];
378
+ }
379
+ /**
380
+ * Invoke a server tool (native provider tool)
381
+ */
382
+ async invokeServerTool(_toolName, _params, _config) {
383
+ throw new Error('Server tools not supported by OpenAI Responses provider');
384
+ }
385
+ /**
386
+ * Set model parameters to be included in API calls
387
+ */
388
+ setModelParams(params) {
389
+ if (params === undefined) {
390
+ this.modelParams = undefined;
391
+ }
392
+ else {
393
+ this.modelParams = { ...this.modelParams, ...params };
394
+ }
395
+ // Persist to SettingsService if available
396
+ this.setModelParamsInSettings(this.modelParams).catch((error) => {
397
+ this.logger.debug(() => `Failed to persist model params to SettingsService: ${error}`);
398
+ });
399
+ }
400
+ /**
401
+ * Get current model parameters
402
+ */
403
+ getModelParams() {
404
+ return this.modelParams;
405
+ }
406
+ /**
407
+ * Initialize provider configuration from SettingsService
408
+ */
409
+ async initializeFromSettings() {
410
+ try {
411
+ // Load saved model if available
412
+ const savedModel = await this.getModelFromSettings();
413
+ if (savedModel &&
414
+ RESPONSES_API_MODELS.some((m) => savedModel.startsWith(m))) {
415
+ this.currentModel = savedModel;
416
+ }
417
+ // Load saved base URL if available
418
+ const savedBaseUrl = await this.getBaseUrlFromSettings();
419
+ if (savedBaseUrl !== undefined) {
420
+ this.baseURL = savedBaseUrl || 'https://api.openai.com/v1';
421
+ }
422
+ // Load saved model parameters if available
423
+ const savedParams = await this.getModelParamsFromSettings();
424
+ if (savedParams) {
425
+ this.modelParams = savedParams;
426
+ }
427
+ this.logger.debug(() => `Initialized from SettingsService - model: ${this.currentModel}, baseURL: ${this.baseURL}, params: ${JSON.stringify(this.modelParams)}`);
428
+ }
429
+ catch (error) {
430
+ this.logger.debug(() => `Failed to initialize OpenAI Responses provider from SettingsService: ${error}`);
431
+ }
432
+ }
433
+ /**
434
+ * Check if the provider is authenticated using any available method
435
+ */
436
+ async isAuthenticated() {
437
+ return super.isAuthenticated();
438
+ }
439
+ }
440
+ //# sourceMappingURL=OpenAIResponsesProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIResponsesProvider.js","sourceRoot":"","sources":["../../../../src/providers/openai-responses/OpenAIResponsesProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { OpenAIResponsesProvider } from './OpenAIResponsesProvider.js';
@@ -0,0 +1,2 @@
1
+ export { OpenAIResponsesProvider } from './OpenAIResponsesProvider.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/openai-responses/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright 2025 Vybestack LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Content } from '@google/genai';
17
+ import type { IContent } from './IContent.js';
18
+ /**
19
+ * Converts between Gemini Content format and IContent format
20
+ */
21
+ export declare class ContentConverters {
22
+ /**
23
+ * Convert IContent to Gemini Content format
24
+ */
25
+ static toGeminiContent(iContent: IContent): Content;
26
+ /**
27
+ * Convert Gemini Content to IContent format
28
+ */
29
+ static toIContent(content: Content): IContent;
30
+ /**
31
+ * Convert array of IContent to array of Gemini Content
32
+ */
33
+ static toGeminiContents(iContents: IContent[]): Content[];
34
+ /**
35
+ * Convert array of Gemini Content to array of IContent
36
+ */
37
+ static toIContents(contents: Content[]): IContent[];
38
+ }