Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "promptl-ai",
"version": "0.7.1",
"version": "0.7.2",
"author": "Latitude Data",
"license": "MIT",
"description": "Compiler for PromptL, the prompt language",
Expand All @@ -20,9 +20,7 @@
}
}
},
"files": [
"dist"
],
"files": ["dist"],
"scripts": {
"dev": "rollup -c -w",
"build": "rollup -c",
Expand Down
102 changes: 51 additions & 51 deletions src/providers/openai-responses/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ function fromPromptlContentToOpenAIResponseContent(
file_data: toOpenAiFileData(item),
})
return acc
} else if (ContentType.toolCall) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

el buen bug

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add tests for the fix. Luckily we have tests here i think

} else if (type === ContentType.toolCall) {
acc.toolCalls.push({
type: 'function_call',
call_id: item.toolCallId,
Expand Down Expand Up @@ -154,68 +154,68 @@ type ToolMappings = {
}
const fromOpenAiResponseToPromptlMessage =
(toolMappings: ToolMappings) =>
(message: MessageInputItem): PromptlMessage | null => {
if (isReasoning(message)) {
return parseReasoning(message)
}

if (isOutputMessage(message)) {
return parseOutputMessage({
message,
webSearch: toolMappings.websearch,
fileSearch: toolMappings.fileSearch,
})
}
(message: MessageInputItem): PromptlMessage | null => {
if (isReasoning(message)) {
return parseReasoning(message)
}

if (isInputMessage(message)) {
return parseInputMessage(message)
}
if (isOutputMessage(message)) {
return parseOutputMessage({
message,
webSearch: toolMappings.websearch,
fileSearch: toolMappings.fileSearch,
})
}

if (isFunctionCall(message)) {
toolMappings.userTools.set(message.call_id, message.name)
return parseFunctionCall(message)
}
if (isInputMessage(message)) {
return parseInputMessage(message)
}

if (isFunctionCallOutput(message)) {
return parseFunctionCallOutput({
message,
toolNameMap: toolMappings.userTools,
})
}
if (isFunctionCall(message)) {
toolMappings.userTools.set(message.call_id, message.name)
return parseFunctionCall(message)
}

if (isWebsearchCall(message)) {
return parseWebsearchCall({
message,
webSearch: toolMappings.websearch,
})
}
if (isFunctionCallOutput(message)) {
return parseFunctionCallOutput({
message,
toolNameMap: toolMappings.userTools,
})
}

if (isFileSearchCall(message)) {
return parseFileSearch({
message,
fileSearch: toolMappings.fileSearch,
})
}
if (isWebsearchCall(message)) {
return parseWebsearchCall({
message,
webSearch: toolMappings.websearch,
})
}

if (isSimpleInputMessage(message)) {
return parseSimpleInputMessage(message)
}
if (isFileSearchCall(message)) {
return parseFileSearch({
message,
fileSearch: toolMappings.fileSearch,
})
}

if (message.type === 'item_reference') return null
if (isSimpleInputMessage(message)) {
return parseSimpleInputMessage(message)
}

if (message.type === 'computer_call') {
throw new Error('Not implemented computer_call')
}
if (message.type === 'item_reference') return null

if (message.type === 'computer_call_output') {
throw new Error('Not implemented computer_call_output')
}
if (message.type === 'computer_call') {
throw new Error('Not implemented computer_call')
}

throw new Error(
`Unknown message type ${message.type} in OpenAIResponse adapter`,
)
if (message.type === 'computer_call_output') {
throw new Error('Not implemented computer_call_output')
}

throw new Error(
`Unknown message type ${message.type} in OpenAIResponse adapter`,
)
}

export const OpenAIResponsesAdapter: ProviderAdapter<MessageInputItem> = {
type: 'openaiResponses',
fromPromptl(promptlConversation: PromptlConversation) {
Expand Down
15 changes: 15 additions & 0 deletions src/types/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export enum ContentType {
image = 'image',
file = 'file',
toolCall = 'tool-call',
toolResult = 'tool-result',
}

export enum ContentTypeTagName {
Expand Down Expand Up @@ -50,11 +51,20 @@ export type ToolCallContent = {
toolArguments: Record<string, unknown>
}

export type ToolResultContent = {
type: ContentType.toolResult
toolCallId: string
toolName: string
result: unknown
isError?: boolean
}

export type MessageContent =
| TextContent
| ImageContent
| FileContent
| ToolCallContent
| ToolResultContent

/* Message */

Expand Down Expand Up @@ -95,9 +105,14 @@ export type ToolMessage = IMessage & {
toolId: string
}

export type ToolResultMessage = IMessage & {
role: MessageRole.tool
}

export type Message =
| SystemMessage
| DeveloperMessage
| UserMessage
| AssistantMessage
| ToolMessage
| ToolResultMessage