@osdk/aip-core 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.md +211 -0
- package/ai-sdk.d.ts +17 -0
- package/build/browser/ai-sdk/convert-prompt.js +136 -0
- package/build/browser/ai-sdk/convert-prompt.js.map +1 -0
- package/build/browser/ai-sdk/foundry-chat-language-model.js +386 -0
- package/build/browser/ai-sdk/foundry-chat-language-model.js.map +1 -0
- package/build/browser/ai-sdk/map-finish-reason.js +42 -0
- package/build/browser/ai-sdk/map-finish-reason.js.map +1 -0
- package/build/browser/ai-sdk/provider.js +62 -0
- package/build/browser/ai-sdk/provider.js.map +1 -0
- package/build/browser/ai-sdk/types.js +2 -0
- package/build/browser/ai-sdk/types.js.map +1 -0
- package/build/browser/generateText.js +76 -0
- package/build/browser/generateText.js.map +1 -0
- package/build/browser/index.js +23 -0
- package/build/browser/index.js.map +1 -0
- package/build/browser/internal/__test__/mockPlatformClient.js +36 -0
- package/build/browser/internal/__test__/mockPlatformClient.js.map +1 -0
- package/build/browser/internal/ids.js +23 -0
- package/build/browser/internal/ids.js.map +1 -0
- package/build/browser/internal/openAi.js +293 -0
- package/build/browser/internal/openAi.js.map +1 -0
- package/build/browser/internal/options.js +58 -0
- package/build/browser/internal/options.js.map +1 -0
- package/build/browser/internal/runStep.js +107 -0
- package/build/browser/internal/runStep.js.map +1 -0
- package/build/browser/internal/streamStep.js +223 -0
- package/build/browser/internal/streamStep.js.map +1 -0
- package/build/browser/internal/uiMessageBridge.js +55 -0
- package/build/browser/internal/uiMessageBridge.js.map +1 -0
- package/build/browser/lmsChatTransport.js +185 -0
- package/build/browser/lmsChatTransport.js.map +1 -0
- package/build/browser/model.js +74 -0
- package/build/browser/model.js.map +1 -0
- package/build/browser/public/ai-sdk.js +18 -0
- package/build/browser/public/ai-sdk.js.map +1 -0
- package/build/browser/streamText.js +210 -0
- package/build/browser/streamText.js.map +1 -0
- package/build/browser/types.js +2 -0
- package/build/browser/types.js.map +1 -0
- package/build/browser/uiMessage.js +34 -0
- package/build/browser/uiMessage.js.map +1 -0
- package/build/cjs/index.cjs +1012 -0
- package/build/cjs/index.cjs.map +1 -0
- package/build/cjs/index.d.cts +467 -0
- package/build/cjs/model-B5uS56VB.d.cts +45 -0
- package/build/cjs/public/ai-sdk.cjs +534 -0
- package/build/cjs/public/ai-sdk.cjs.map +1 -0
- package/build/cjs/public/ai-sdk.d.cts +49 -0
- package/build/esm/ai-sdk/convert-prompt.js +136 -0
- package/build/esm/ai-sdk/convert-prompt.js.map +1 -0
- package/build/esm/ai-sdk/foundry-chat-language-model.js +386 -0
- package/build/esm/ai-sdk/foundry-chat-language-model.js.map +1 -0
- package/build/esm/ai-sdk/map-finish-reason.js +42 -0
- package/build/esm/ai-sdk/map-finish-reason.js.map +1 -0
- package/build/esm/ai-sdk/provider.js +62 -0
- package/build/esm/ai-sdk/provider.js.map +1 -0
- package/build/esm/ai-sdk/types.js +2 -0
- package/build/esm/ai-sdk/types.js.map +1 -0
- package/build/esm/generateText.js +76 -0
- package/build/esm/generateText.js.map +1 -0
- package/build/esm/index.js +23 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/internal/__test__/mockPlatformClient.js +36 -0
- package/build/esm/internal/__test__/mockPlatformClient.js.map +1 -0
- package/build/esm/internal/ids.js +23 -0
- package/build/esm/internal/ids.js.map +1 -0
- package/build/esm/internal/openAi.js +293 -0
- package/build/esm/internal/openAi.js.map +1 -0
- package/build/esm/internal/options.js +58 -0
- package/build/esm/internal/options.js.map +1 -0
- package/build/esm/internal/runStep.js +107 -0
- package/build/esm/internal/runStep.js.map +1 -0
- package/build/esm/internal/streamStep.js +223 -0
- package/build/esm/internal/streamStep.js.map +1 -0
- package/build/esm/internal/uiMessageBridge.js +55 -0
- package/build/esm/internal/uiMessageBridge.js.map +1 -0
- package/build/esm/lmsChatTransport.js +185 -0
- package/build/esm/lmsChatTransport.js.map +1 -0
- package/build/esm/model.js +74 -0
- package/build/esm/model.js.map +1 -0
- package/build/esm/public/ai-sdk.js +18 -0
- package/build/esm/public/ai-sdk.js.map +1 -0
- package/build/esm/streamText.js +210 -0
- package/build/esm/streamText.js.map +1 -0
- package/build/esm/types.js +2 -0
- package/build/esm/types.js.map +1 -0
- package/build/esm/uiMessage.js +34 -0
- package/build/esm/uiMessage.js.map +1 -0
- package/build/types/ai-sdk/convert-prompt.d.ts +19 -0
- package/build/types/ai-sdk/convert-prompt.d.ts.map +1 -0
- package/build/types/ai-sdk/foundry-chat-language-model.d.ts +20 -0
- package/build/types/ai-sdk/foundry-chat-language-model.d.ts.map +1 -0
- package/build/types/ai-sdk/map-finish-reason.d.ts +2 -0
- package/build/types/ai-sdk/map-finish-reason.d.ts.map +1 -0
- package/build/types/ai-sdk/provider.d.ts +46 -0
- package/build/types/ai-sdk/provider.d.ts.map +1 -0
- package/build/types/ai-sdk/types.d.ts +1 -0
- package/build/types/ai-sdk/types.d.ts.map +1 -0
- package/build/types/generateText.d.ts +56 -0
- package/build/types/generateText.d.ts.map +1 -0
- package/build/types/index.d.ts +12 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/internal/__test__/mockPlatformClient.d.ts +13 -0
- package/build/types/internal/__test__/mockPlatformClient.d.ts.map +1 -0
- package/build/types/internal/ids.d.ts +1 -0
- package/build/types/internal/ids.d.ts.map +1 -0
- package/build/types/internal/openAi.d.ts +107 -0
- package/build/types/internal/openAi.d.ts.map +1 -0
- package/build/types/internal/options.d.ts +4 -0
- package/build/types/internal/options.d.ts.map +1 -0
- package/build/types/internal/runStep.d.ts +29 -0
- package/build/types/internal/runStep.d.ts.map +1 -0
- package/build/types/internal/streamStep.d.ts +52 -0
- package/build/types/internal/streamStep.d.ts.map +1 -0
- package/build/types/internal/uiMessageBridge.d.ts +15 -0
- package/build/types/internal/uiMessageBridge.d.ts.map +1 -0
- package/build/types/lmsChatTransport.d.ts +35 -0
- package/build/types/lmsChatTransport.d.ts.map +1 -0
- package/build/types/model.d.ts +42 -0
- package/build/types/model.d.ts.map +1 -0
- package/build/types/public/ai-sdk.d.ts +2 -0
- package/build/types/public/ai-sdk.d.ts.map +1 -0
- package/build/types/streamText.d.ts +82 -0
- package/build/types/streamText.d.ts.map +1 -0
- package/build/types/types.d.ts +189 -0
- package/build/types/types.d.ts.map +1 -0
- package/build/types/uiMessage.d.ts +85 -0
- package/build/types/uiMessage.d.ts.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/internal/options.ts","../../src/model.ts","../../src/internal/openAi.ts","../../src/internal/runStep.ts","../../src/generateText.ts","../../src/internal/streamStep.ts","../../src/streamText.ts","../../src/uiMessage.ts","../../src/internal/uiMessageBridge.ts","../../src/lmsChatTransport.ts","../../src/internal/ids.ts"],"names":["getOpenAiBaseUrl"],"mappings":"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","file":"index.cjs","sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function resolveMessages(callerLabel, system, prompt, messages) {\n if (prompt != null && messages != null) {\n throw new Error(`${callerLabel}: cannot specify both \\`prompt\\` and \\`messages\\`: choose one.`);\n }\n const sys = resolveSystem(system);\n const body = resolveBody(prompt, messages);\n if (sys.length === 0 && body.length === 0) {\n throw new Error(`${callerLabel}: must provide at least one of \\`system\\`, \\`prompt\\`, or \\`messages\\`.`);\n }\n return [...sys, ...body];\n}\nfunction resolveSystem(system) {\n if (system == null) {\n return [];\n }\n if (typeof system === \"string\") {\n return system === \"\" ? [] : [{\n role: \"system\",\n content: system\n }];\n }\n if (Array.isArray(system)) {\n return system;\n }\n return [system];\n}\nfunction resolveBody(prompt, messages) {\n if (messages != null) {\n return messages;\n }\n if (prompt == null) {\n return [];\n }\n if (typeof prompt === \"string\") {\n return [{\n role: \"user\",\n content: prompt\n }];\n }\n return prompt;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Identifies a model in the Foundry Language Model Service.\n *\n * - `lmsModel`: a built-in LMS model addressed by `apiName` (e.g. \"gpt-4o\")\n * - `registeredModel`: a customer-registered model addressed by RID\n */\n\n/** Opaque language model handle accepted by `generateText` / `streamText`. */\n\n/** @internal */\n\nconst internals = new WeakMap();\n\n/**\n * Construct a Foundry-LMS-backed {@link LanguageModel}.\n *\n * @example\n * ```ts\n * import { foundryModel, generateText } from \"@osdk/aip-core\";\n *\n * const model = foundryModel({ client, model: \"gpt-4o\" });\n * const { text } = await generateText({\n * model,\n * prompt: \"Hello, world\",\n * });\n * ```\n */\nexport function foundryModel(options) {\n const identifier = typeof options.model === \"string\" ? {\n type: \"lmsModel\",\n apiName: options.model\n } : options.model;\n const id = identifier.type === \"lmsModel\" ? identifier.apiName : identifier.registeredModelRid;\n const handle = Object.freeze({\n modelId: `foundry/${id}`,\n provider: \"foundry-lms\"\n });\n internals.set(handle, {\n client: options.client,\n identifier\n });\n return handle;\n}\n\n/**\n * Internal accessor for the foundry handle. Not exported from the package\n * index. `runStep` calls this; consumers should never need it.\n *\n * @internal\n */\nexport function _getFoundryInternal(model) {\n const handle = internals.get(model);\n if (handle == null) {\n throw new Error(`LanguageModel(modelId=${model.modelId}, provider=${model.provider}) ` + `was not constructed via foundryModel(). Only foundry-lms models are supported in v0.`);\n }\n return handle;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getOpenAiBaseUrl } from \"@osdk/language-models\";\nimport { _getFoundryInternal } from \"../model.js\";\nexport function getModelApiName(identifier) {\n return identifier.type === \"lmsModel\" ? identifier.apiName : identifier.registeredModelRid;\n}\nexport function mapUsage(raw) {\n return {\n inputTokens: raw.prompt_tokens,\n outputTokens: raw.completion_tokens,\n totalTokens: raw.total_tokens,\n reasoningTokens: raw.completion_tokens_details?.reasoning_tokens,\n cachedInputTokens: raw.prompt_tokens_details?.cached_tokens\n };\n}\nexport const EMPTY_USAGE = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined\n};\nexport function mapFinishReason(reason) {\n switch (reason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n return \"length\";\n case \"tool_calls\":\n case \"function_call\":\n return \"tool-calls\";\n case \"content_filter\":\n return \"content-filter\";\n default:\n return \"other\";\n }\n}\nexport function convertMessage(m, warnings) {\n switch (m.role) {\n case \"system\":\n return [{\n role: \"system\",\n content: m.content\n }];\n case \"user\":\n {\n if (typeof m.content === \"string\") {\n return [{\n role: \"user\",\n content: m.content\n }];\n }\n const parts = [];\n for (const p of m.content) {\n if (p.type === \"text\") {\n parts.push({\n type: \"text\",\n text: p.text\n });\n } else {\n warnings.push({\n type: \"other\",\n message: `Unsupported user content part \"${p.type}\": ignored in v0`\n });\n }\n }\n return [{\n role: \"user\",\n content: parts\n }];\n }\n case \"assistant\":\n {\n if (typeof m.content === \"string\") {\n return [{\n role: \"assistant\",\n content: m.content\n }];\n }\n let text = \"\";\n const toolCalls = [];\n for (const p of m.content) {\n switch (p.type) {\n case \"text\":\n text += p.text;\n break;\n case \"tool-call\":\n toolCalls.push({\n id: p.toolCallId,\n type: \"function\",\n function: {\n name: p.toolName,\n arguments: JSON.stringify(p.input ?? {})\n }\n });\n break;\n case \"reasoning\":\n case \"file\":\n warnings.push({\n type: \"other\",\n message: `Unsupported assistant content part \"${p.type}\": ignored in v0`\n });\n break;\n }\n }\n return [{\n role: \"assistant\",\n content: text.length > 0 ? text : null,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined\n }];\n }\n case \"tool\":\n return m.content.map(part => ({\n role: \"tool\",\n content: stringifyToolResult(part, warnings),\n tool_call_id: part.toolCallId\n }));\n }\n}\nfunction stringifyToolResult(part, warnings) {\n switch (part.output.type) {\n case \"text\":\n case \"error-text\":\n return part.output.value;\n case \"json\":\n case \"error-json\":\n return JSON.stringify(part.output.value);\n case \"content\":\n return part.output.value.map(c => {\n if (c.type === \"text\") {\n return c.text;\n }\n warnings.push({\n type: \"other\",\n message: `Unsupported tool result media: ignored in v0`\n });\n return \"\";\n }).filter(s => s.length > 0).join(\"\\n\");\n }\n}\nexport function convertTools(tools, warnings) {\n return Object.entries(tools).map(([name, tool]) => {\n const parameters = isJsonSchemaLike(tool.inputSchema) ? tool.inputSchema : (warnings.push({\n type: \"unsupported-tool\",\n details: `Tool \"${name}\" inputSchema is not a JSON Schema; v0 only supports plain JSON Schema objects. Defaulting to {} parameters.`\n }), {\n type: \"object\",\n properties: {}\n });\n return {\n type: \"function\",\n function: {\n name,\n description: tool.description,\n parameters\n }\n };\n });\n}\nexport function convertToolChoice(choice) {\n if (choice == null) {\n return undefined;\n }\n if (choice === \"auto\" || choice === \"none\" || choice === \"required\") {\n return choice;\n }\n return {\n type: \"function\",\n function: {\n name: choice.toolName\n }\n };\n}\nfunction isJsonSchemaLike(value) {\n return typeof value === \"object\" && value != null && (\"type\" in value || \"properties\" in value || \"$ref\" in value || \"oneOf\" in value || \"anyOf\" in value || \"allOf\" in value);\n}\nexport function parseToolArguments(args, warnings) {\n if (args === \"\") {\n return {};\n }\n try {\n return JSON.parse(args);\n } catch {\n warnings.push({\n type: \"other\",\n message: `Tool call arguments were not valid JSON; passing through as a raw string`\n });\n return args;\n }\n}\nexport function buildOpenAiRequestBody(args, streaming) {\n const common = {\n model: args.apiName,\n messages: args.messages.map(m => convertMessage(m, args.warnings)).flat(),\n max_tokens: args.maxOutputTokens,\n temperature: args.temperature,\n top_p: args.topP,\n stop: args.stopSequences,\n seed: args.seed,\n presence_penalty: args.presencePenalty,\n frequency_penalty: args.frequencyPenalty,\n tools: args.tools != null ? convertTools(args.tools, args.warnings) : undefined,\n tool_choice: convertToolChoice(args.toolChoice)\n };\n if (streaming) {\n return {\n ...common,\n stream: true,\n stream_options: {\n include_usage: true\n }\n };\n }\n return {\n ...common,\n stream: false\n };\n}\nexport function buildAssistantContent(text, toolCalls) {\n if (toolCalls.length === 0) {\n return text;\n }\n const parts = [];\n if (text.length > 0) {\n parts.push({\n type: \"text\",\n text\n });\n }\n for (const tc of toolCalls) {\n parts.push({\n type: \"tool-call\",\n toolCallId: tc.toolCallId,\n toolName: tc.toolName,\n input: tc.input\n });\n }\n return parts;\n}\nexport function filterHeaders(input) {\n const out = {};\n for (const [k, v] of Object.entries(input)) {\n if (v != null) {\n out[k] = v;\n }\n }\n return out;\n}\nexport async function safeReadText(res) {\n try {\n return await res.text();\n } catch {\n return undefined;\n }\n}\n/**\n * POST against the LMS OpenAI proxy's chat/completions endpoint and return\n * the raw response. Throws on a non-2xx response.\n */\nexport async function postChatCompletions(args) {\n const handle = _getFoundryInternal(args.model);\n const baseUrl = getOpenAiBaseUrl(handle.client);\n const url = new URL(\"chat/completions\", `${baseUrl}/`).toString();\n const res = await handle.client.fetch(url, {\n method: \"POST\",\n headers: filterHeaders({\n \"Content-Type\": \"application/json\",\n Accept: args.accept,\n ...(args.headers ?? {})\n }),\n body: JSON.stringify(args.body),\n signal: args.abortSignal\n });\n if (!res.ok) {\n const errBody = await safeReadText(res);\n throw new Error(`LMS chat/completions request failed: ${res.status} ${res.statusText}` + (errBody ? `: ${errBody}` : \"\"));\n }\n return res;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getFoundryInternal } from \"../model.js\";\nimport { buildAssistantContent, buildOpenAiRequestBody, EMPTY_USAGE, getModelApiName, mapFinishReason, mapUsage, parseToolArguments, postChatCompletions } from \"./openAi.js\";\n/**\n * Performs a single non-streaming chat completion against the LMS OpenAI proxy\n * and returns a {@link StepResult}. Caller is responsible for prepending any\n * system messages before invoking.\n */\nexport async function runStep(input) {\n const apiName = getModelApiName(_getFoundryInternal(input.model).identifier);\n const body = buildOpenAiRequestBody({\n apiName,\n ...input\n }, false);\n const res = await postChatCompletions({\n model: input.model,\n body,\n accept: \"application/json\",\n headers: input.headers,\n abortSignal: input.abortSignal\n });\n const data = await res.json();\n return parseResponse(data, body, input.warnings);\n}\nfunction parseResponse(res, request, warnings) {\n const choice = res.choices[0];\n if (choice == null) {\n throw new Error(\"LMS chat/completions response did not include any choices\");\n }\n const message = choice.message;\n const text = message.content ?? \"\";\n const reasoningText = message.reasoning ?? message.reasoning_content;\n const toolCalls = (message.tool_calls ?? []).map(c => ({\n type: \"tool-call\",\n toolCallId: c.id,\n toolName: c.function.name,\n input: parseToolArguments(c.function.arguments, warnings)\n }));\n const reasoning = reasoningText != null ? [{\n type: \"reasoning\",\n text: reasoningText\n }] : [];\n const content = [];\n if (text.length > 0) {\n content.push({\n type: \"text\",\n text\n });\n }\n for (const r of reasoning) {\n content.push({\n type: \"reasoning\",\n text: r.text\n });\n }\n for (const tc of toolCalls) {\n content.push({\n ...tc,\n type: \"tool-call\"\n });\n }\n const usage = res.usage != null ? mapUsage(res.usage) : EMPTY_USAGE;\n const finishReason = mapFinishReason(choice.finish_reason);\n const responseMessages = [{\n role: \"assistant\",\n content: buildAssistantContent(text, toolCalls)\n }];\n return {\n content,\n text,\n reasoning,\n reasoningText,\n toolCalls,\n toolResults: [],\n finishReason,\n rawFinishReason: choice.finish_reason,\n usage,\n warnings: warnings.length > 0 ? warnings : undefined,\n request: {\n body: request\n },\n response: {\n id: res.id,\n modelId: res.model,\n timestamp: new Date(res.created * 1000),\n body: res,\n messages: responseMessages\n },\n providerMetadata: undefined\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { resolveMessages } from \"./internal/options.js\";\nimport { runStep } from \"./internal/runStep.js\";\n\n/**\n * Options for {@link generateText}.\n */\n\n/**\n * Result of {@link generateText}.\n */\n\n/**\n * Generate a text completion via the Foundry Language Model Service.\n *\n * v0: single-step. Multi-step tool execution loops, image/file content,\n * structured output, and Zod tool schemas are not yet supported.\n *\n * @example\n * ```ts\n * import { foundryModel, generateText } from \"@osdk/aip-core\";\n *\n * const { text } = await generateText({\n * model: foundryModel({ client, model: \"gpt-4o\" }),\n * system: \"You are a concise assistant.\",\n * prompt: \"Summarise this PR.\",\n * });\n * ```\n */\nexport async function generateText(options) {\n const messages = resolveMessages(\"generateText\", options.system, options.prompt, options.messages);\n const step = await runStep({\n model: options.model,\n messages,\n tools: options.tools,\n toolChoice: options.toolChoice,\n maxOutputTokens: options.maxOutputTokens,\n temperature: options.temperature,\n topP: options.topP,\n stopSequences: options.stopSequences,\n seed: options.seed,\n presencePenalty: options.presencePenalty,\n frequencyPenalty: options.frequencyPenalty,\n abortSignal: options.abortSignal,\n headers: options.headers,\n warnings: []\n });\n await options.onStepFinish?.(step);\n const totalUsage = step.usage;\n await options.onFinish?.({\n ...step,\n steps: [step],\n totalUsage\n });\n return {\n ...step,\n totalUsage,\n steps: [step]\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getFoundryInternal } from \"../model.js\";\nimport { buildAssistantContent, buildOpenAiRequestBody, EMPTY_USAGE, getModelApiName, mapFinishReason, mapUsage, parseToolArguments, postChatCompletions } from \"./openAi.js\";\nexport async function streamStep(input) {\n const apiName = getModelApiName(_getFoundryInternal(input.model).identifier);\n const body = buildOpenAiRequestBody({\n apiName,\n ...input\n }, true);\n const res = await postChatCompletions({\n model: input.model,\n body,\n accept: \"text/event-stream\",\n headers: input.headers,\n abortSignal: input.abortSignal\n });\n if (res.body == null) {\n throw new Error(\"LMS chat/completions response had no streaming body\");\n }\n return parseSseStream({\n body: res.body,\n onChunk: input.onChunk,\n warnings: input.warnings,\n request: {\n body\n }\n });\n}\nconst TEXT_PART_ID = \"text-0\";\nconst REASONING_PART_ID = \"reasoning-0\";\nasync function parseSseStream(args) {\n const reader = args.body.pipeThrough(new TextDecoderStream()).getReader();\n let buffer = \"\";\n let textBuf = \"\";\n let reasoningStarted = false;\n let reasoningBuf = \"\";\n let finishReason = \"other\";\n let rawFinishReason;\n let usage;\n const toolCallAcc = new Map();\n let responseInitialized = false;\n let responseId;\n let responseModel;\n let responseCreated;\n try {\n while (true) {\n const {\n value,\n done\n } = await reader.read();\n if (done) {\n break;\n }\n buffer += value.replace(/\\r\\n/g, \"\\n\");\n let frameEnd = buffer.indexOf(\"\\n\\n\");\n while (frameEnd !== -1) {\n const frame = buffer.slice(0, frameEnd);\n buffer = buffer.slice(frameEnd + 2);\n for (const line of frame.split(\"\\n\")) {\n if (!line.startsWith(\"data:\")) {\n continue;\n }\n const payload = line.slice(5).trim();\n if (payload === \"\") {\n continue;\n }\n if (payload === \"[DONE]\") {\n continue;\n }\n let parsed;\n try {\n parsed = JSON.parse(payload);\n } catch {\n args.warnings.push({\n type: \"other\",\n message: `Skipped malformed SSE frame: ${payload.slice(0, 80)}`\n });\n continue;\n }\n if (isErrorFrame(parsed)) {\n throw new Error(extractErrorMessage(parsed));\n }\n const chunk = parsed;\n if (!responseInitialized) {\n responseId = chunk.id;\n responseModel = chunk.model;\n responseCreated = chunk.created;\n responseInitialized = true;\n }\n if (chunk.usage != null) {\n usage = mapUsage(chunk.usage);\n }\n for (const choice of chunk.choices ?? []) {\n const delta = choice.delta;\n const contentDelta = delta.content;\n if (typeof contentDelta === \"string\" && contentDelta.length > 0) {\n textBuf += contentDelta;\n await args.onChunk({\n type: \"text-delta\",\n id: TEXT_PART_ID,\n delta: contentDelta\n });\n }\n const reasoningDelta = delta.reasoning ?? delta.reasoning_content;\n if (typeof reasoningDelta === \"string\" && reasoningDelta.length > 0) {\n reasoningStarted = true;\n reasoningBuf += reasoningDelta;\n await args.onChunk({\n type: \"reasoning-delta\",\n id: REASONING_PART_ID,\n delta: reasoningDelta\n });\n }\n if (delta.tool_calls != null) {\n for (const tc of delta.tool_calls) {\n if (typeof tc.index !== \"number\") {\n continue;\n }\n const acc = toolCallAcc.get(tc.index) ?? {\n id: \"\",\n name: \"\",\n args: \"\"\n };\n if (tc.id != null) {\n acc.id = tc.id;\n }\n if (tc.function?.name != null) {\n acc.name = tc.function.name;\n }\n if (tc.function?.arguments != null) {\n acc.args += tc.function.arguments;\n }\n toolCallAcc.set(tc.index, acc);\n }\n }\n if (choice.finish_reason != null) {\n rawFinishReason = choice.finish_reason;\n finishReason = mapFinishReason(choice.finish_reason);\n }\n }\n }\n frameEnd = buffer.indexOf(\"\\n\\n\");\n }\n }\n } finally {\n reader.releaseLock();\n }\n const finalUsage = usage ?? EMPTY_USAGE;\n\n // A connection drop or non-conformant provider that closes the stream\n // without finish_reason should still surface tool calls to fullStream.\n const toolCalls = Array.from(toolCallAcc.entries()).map(([index, acc]) => ({\n type: \"tool-call\",\n toolCallId: acc.id !== \"\" ? acc.id : `tool_call_${index}`,\n toolName: acc.name,\n input: parseToolArguments(acc.args, args.warnings)\n }));\n for (const tc of toolCalls) {\n await args.onChunk({\n type: \"tool-call\",\n toolCallId: tc.toolCallId,\n toolName: tc.toolName,\n input: tc.input\n });\n }\n await args.onChunk({\n type: \"finish\",\n finishReason,\n rawFinishReason,\n usage: finalUsage\n });\n const response = {\n id: responseId,\n modelId: responseModel,\n timestamp: responseCreated != null ? new Date(responseCreated * 1000) : undefined,\n messages: [{\n role: \"assistant\",\n content: buildAssistantContent(textBuf, toolCalls)\n }]\n };\n return {\n text: textBuf,\n reasoningText: reasoningStarted ? reasoningBuf : undefined,\n toolCalls,\n finishReason,\n rawFinishReason,\n usage: finalUsage,\n request: args.request,\n response\n };\n}\nfunction isErrorFrame(payload) {\n return typeof payload === \"object\" && payload != null && \"error\" in payload && payload.error != null;\n}\nfunction extractErrorMessage(payload) {\n const err = payload.error;\n if (typeof err === \"string\") {\n return err;\n }\n if (typeof err === \"object\" && err != null) {\n const message = err.message;\n if (typeof message === \"string\") {\n return message;\n }\n }\n return \"LMS chat/completions stream emitted an error frame\";\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { resolveMessages } from \"./internal/options.js\";\nimport { streamStep } from \"./internal/streamStep.js\";\n\n/**\n * Options for {@link streamText}.\n */\n\n/**\n * Single chunk emitted on a {@link StreamTextResult.fullStream}.\n *\n * `toolName` is a runtime string — the model returns whatever it returns,\n * so the chunk's tool name is not statically narrowed against the user's\n * `TOOLS` set.\n */\n\n/**\n * Result of {@link streamText}.\n *\n * `fullStream` is a `ReadableStream` (not an async iterable) so it can be\n * `pipeThrough`-ed with browser-native transforms.\n */\n\n/**\n * Stream a chat completion via the Foundry Language Model Service.\n *\n * v0: single-step. Multi-step tool execution loops, image/file content,\n * structured output, and Zod tool schemas are not yet supported. Unsupported\n * options surface via the `warnings` promise rather than throwing.\n *\n * @example\n * ```ts\n * import { foundryModel, streamText } from \"@osdk/aip-core\";\n *\n * const { textStream } = streamText({\n * model: foundryModel({ client, model: \"gpt-4o\" }),\n * prompt: \"Tell me a story.\",\n * });\n *\n * const reader = textStream.getReader();\n * while (true) {\n * const { done, value } = await reader.read();\n * if (done) break;\n * process.stdout.write(value);\n * }\n * ```\n */\n\nexport function streamText(options) {\n const warnings = [];\n const messages = resolveMessages(\"streamText\", options.system, options.prompt, options.messages);\n const final = createDeferred();\n const internalAbort = new AbortController();\n const abortHandler = () => internalAbort.abort();\n if (options.abortSignal != null) {\n if (options.abortSignal.aborted) {\n internalAbort.abort();\n } else {\n options.abortSignal.addEventListener(\"abort\", abortHandler);\n }\n }\n const detachAbortHandler = () => {\n options.abortSignal?.removeEventListener(\"abort\", abortHandler);\n };\n let streamController;\n let streamClosed = false;\n const run = async () => {\n try {\n const result = await streamStep({\n model: options.model,\n messages,\n tools: options.tools,\n toolChoice: options.toolChoice,\n maxOutputTokens: options.maxOutputTokens,\n temperature: options.temperature,\n topP: options.topP,\n stopSequences: options.stopSequences,\n seed: options.seed,\n presencePenalty: options.presencePenalty,\n frequencyPenalty: options.frequencyPenalty,\n abortSignal: internalAbort.signal,\n headers: options.headers,\n warnings,\n onChunk: async chunk => {\n if (!streamClosed) {\n streamController?.enqueue(chunk);\n }\n if (options.onChunk != null) {\n await options.onChunk(chunk);\n }\n }\n });\n streamController?.close();\n streamClosed = true;\n const finalWarnings = warnings.length > 0 ? warnings : undefined;\n final.resolve({\n text: result.text,\n reasoningText: result.reasoningText,\n usage: result.usage,\n finishReason: result.finishReason,\n toolCalls: result.toolCalls,\n warnings: finalWarnings,\n response: result.response,\n request: result.request\n });\n if (options.onFinish != null) {\n await options.onFinish({\n finishReason: result.finishReason,\n text: result.text,\n reasoningText: result.reasoningText,\n toolCalls: result.toolCalls,\n usage: result.usage,\n totalUsage: result.usage,\n warnings: finalWarnings,\n response: result.response,\n request: result.request\n });\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n if (!streamClosed) {\n streamController?.enqueue({\n type: \"error\",\n error\n });\n streamController?.error(error);\n streamClosed = true;\n }\n final.reject(error);\n if (options.onError != null) {\n await options.onError(error);\n }\n } finally {\n detachAbortHandler();\n }\n };\n const sourceStream = new ReadableStream({\n start(controller) {\n streamController = controller;\n void run();\n },\n cancel() {\n internalAbort.abort();\n detachAbortHandler();\n }\n });\n const [fullStreamBranch, textStreamBranch] = sourceStream.tee();\n const textStream = textStreamBranch.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n if (chunk.type === \"text-delta\") {\n controller.enqueue(chunk.delta);\n }\n }\n }));\n\n // Warnings settle even if the stream errors, so the consumer can read them\n // off the failure path. Other promises propagate the error.\n const warningsPromise = final.promise.then(s => s.warnings, () => warnings.length > 0 ? warnings : undefined);\n return {\n fullStream: fullStreamBranch,\n textStream,\n text: silence(final.promise.then(s => s.text)),\n reasoningText: silence(final.promise.then(s => s.reasoningText)),\n usage: silence(final.promise.then(s => s.usage)),\n totalUsage: silence(final.promise.then(s => s.usage)),\n finishReason: silence(final.promise.then(s => s.finishReason)),\n toolCalls: silence(final.promise.then(s => s.toolCalls)),\n warnings: warningsPromise,\n response: silence(final.promise.then(s => s.response)),\n request: silence(final.promise.then(s => s.request))\n };\n}\n\n// Pre-attach a no-op rejection handler so a consumer that awaits only some of\n// the result promises doesn't trigger unhandled-rejection warnings on the\n// rest. The promise still rejects for any consumer that awaits it.\nfunction silence(p) {\n p.catch(() => {});\n return p;\n}\nfunction createDeferred() {\n let resolveFn = () => {};\n let rejectFn = () => {};\n const promise = new Promise((res, rej) => {\n resolveFn = res;\n rejectFn = rej;\n });\n promise.catch(() => {});\n return {\n promise,\n resolve: resolveFn,\n reject: rejectFn\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * UI-level message and stream-chunk shapes for the AIP SDK's chat\n * primitives. Describes the wire format that transports produce and UI\n * consumers read — a thin local subset of the AI SDK v5 UI types\n * covering the v0 text-only surface.\n */\n\n/** Concatenate all `text` parts of a UIMessage into a single string. */\nexport function getUIMessageText(message) {\n let buf = \"\";\n for (const p of message.parts) {\n if (p.type === \"text\") {\n buf += p.text;\n }\n }\n return buf;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getUIMessageText } from \"../uiMessage.js\";\n\n/**\n * Convert `UIMessage[]` (the conversation shape rendered in the UI) into\n * `ModelMessage[]` (the shape `streamText` accepts).\n *\n * v0: text-only. File parts, reasoning parts, source parts, and tool-related\n * parts are dropped. Tool-result UIMessages (none in v0 either) would map to\n * `ToolModelMessage` once tool round-trips are wired up.\n *\n * When `system` is provided, any system-role messages already in `ui` are\n * dropped so the prompt isn't double-prepended — the transport-level\n * `system` wins.\n */\nexport function uiMessagesToModelMessages(ui, system) {\n const out = [];\n const transportSystemSet = system != null && system.length > 0;\n if (transportSystemSet) {\n out.push({\n role: \"system\",\n content: system\n });\n }\n for (const m of ui) {\n const text = getUIMessageText(m);\n if (text.length === 0) {\n continue;\n }\n if (m.role === \"system\" && transportSystemSet) {\n continue;\n }\n out.push({\n role: m.role,\n content: text\n });\n }\n return out;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { uiMessagesToModelMessages } from \"./internal/uiMessageBridge.js\";\nimport { streamText } from \"./streamText.js\";\n\n/**\n * Options for {@link LmsChatTransport}. Configures the streamed chat\n * completion against the Foundry Language Model Service.\n */\n\n/**\n * Stream chat completions through the Foundry Language Model Service via\n * `streamText`. Implements `ChatTransport`, so any consumer that accepts a\n * transport can plug it in (e.g. to inject custom sampling).\n */\nexport class LmsChatTransport {\n constructor(opts) {\n this.opts = opts;\n }\n sendMessages = async args => {\n const result = streamText({\n model: this.opts.model,\n // System prompt is folded into the model-message list by the bridge so\n // it isn't double-prepended (transport.system + system messages from\n // args.messages would both land otherwise).\n messages: uiMessagesToModelMessages(args.messages, this.opts.system),\n temperature: this.opts.temperature,\n maxOutputTokens: this.opts.maxOutputTokens,\n topP: this.opts.topP,\n presencePenalty: this.opts.presencePenalty,\n frequencyPenalty: this.opts.frequencyPenalty,\n stopSequences: this.opts.stopSequences,\n seed: this.opts.seed,\n headers: mergeHeaders(this.opts.headers, args.headers),\n abortSignal: args.abortSignal\n });\n const assistantId = args.messageId;\n const textPartId = `${assistantId}-text-0`;\n const reasoningPartId = `${assistantId}-reasoning-0`;\n let textOpen = false;\n let reasoningOpen = false;\n let startEmitted = false;\n return result.fullStream.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n if (!startEmitted) {\n startEmitted = true;\n controller.enqueue({\n type: \"start\",\n messageId: assistantId\n });\n controller.enqueue({\n type: \"start-step\"\n });\n }\n const closeText = () => {\n if (textOpen) {\n textOpen = false;\n controller.enqueue({\n type: \"text-end\",\n id: textPartId\n });\n }\n };\n const closeReasoning = () => {\n if (reasoningOpen) {\n reasoningOpen = false;\n controller.enqueue({\n type: \"reasoning-end\",\n id: reasoningPartId\n });\n }\n };\n switch (chunk.type) {\n case \"text-delta\":\n {\n if (!textOpen) {\n textOpen = true;\n controller.enqueue({\n type: \"text-start\",\n id: textPartId\n });\n }\n controller.enqueue({\n type: \"text-delta\",\n id: textPartId,\n delta: chunk.delta\n });\n return;\n }\n case \"reasoning-delta\":\n {\n if (!reasoningOpen) {\n reasoningOpen = true;\n controller.enqueue({\n type: \"reasoning-start\",\n id: reasoningPartId\n });\n }\n controller.enqueue({\n type: \"reasoning-delta\",\n id: reasoningPartId,\n delta: chunk.delta\n });\n return;\n }\n case \"tool-call\":\n {\n controller.enqueue({\n type: \"tool-input-available\",\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n input: chunk.input\n });\n return;\n }\n case \"finish\":\n {\n closeText();\n closeReasoning();\n controller.enqueue({\n type: \"finish-step\"\n });\n controller.enqueue({\n type: \"finish\",\n messageMetadata: {\n finishReason: chunk.finishReason,\n usage: chunk.usage\n }\n });\n return;\n }\n case \"error\":\n {\n closeText();\n closeReasoning();\n controller.enqueue({\n type: \"error\",\n errorText: chunk.error.message\n });\n return;\n }\n default:\n {\n const unhandled = chunk;\n controller.enqueue({\n type: \"error\",\n errorText: `Unhandled chunk type \"${unhandled.type}\"`\n });\n }\n }\n }\n }));\n };\n reconnectToStream = async _args => {\n return null;\n };\n}\nfunction mergeHeaders(base, override) {\n if (base == null && override == null) {\n return undefined;\n }\n const out = {\n ...(base ?? {})\n };\n if (override != null) {\n for (const [k, v] of Object.entries(override)) {\n out[k] = v;\n }\n }\n return out;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function generateMessageId() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n return `msg-${Math.random().toString(36).slice(2, 10)}-${Date.now()}`;\n}"]}
|
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
import { L as LanguageModel } from './model-B5uS56VB.cjs';
|
|
2
|
+
export { F as FoundryModelOptions, M as ModelIdentifier, f as foundryModel } from './model-B5uS56VB.cjs';
|
|
3
|
+
import '@osdk/client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Shared types for the AIP SDK's chat completion primitives.
|
|
7
|
+
*/
|
|
8
|
+
type Role = "system" | "user" | "assistant" | "tool";
|
|
9
|
+
interface SystemModelMessage {
|
|
10
|
+
role: "system";
|
|
11
|
+
content: string;
|
|
12
|
+
providerOptions?: ProviderOptions;
|
|
13
|
+
}
|
|
14
|
+
interface UserModelMessage {
|
|
15
|
+
role: "user";
|
|
16
|
+
content: string | Array<TextPart | ImagePart | FilePart>;
|
|
17
|
+
providerOptions?: ProviderOptions;
|
|
18
|
+
}
|
|
19
|
+
interface AssistantModelMessage {
|
|
20
|
+
role: "assistant";
|
|
21
|
+
content: string | Array<TextPart | ReasoningPart | ToolCallPart | FilePart>;
|
|
22
|
+
providerOptions?: ProviderOptions;
|
|
23
|
+
}
|
|
24
|
+
interface ToolModelMessage {
|
|
25
|
+
role: "tool";
|
|
26
|
+
content: Array<ToolResultPart>;
|
|
27
|
+
providerOptions?: ProviderOptions;
|
|
28
|
+
}
|
|
29
|
+
type ModelMessage = SystemModelMessage | UserModelMessage | AssistantModelMessage | ToolModelMessage;
|
|
30
|
+
interface TextPart {
|
|
31
|
+
type: "text";
|
|
32
|
+
text: string;
|
|
33
|
+
providerOptions?: ProviderOptions;
|
|
34
|
+
}
|
|
35
|
+
interface ReasoningPart {
|
|
36
|
+
type: "reasoning";
|
|
37
|
+
text: string;
|
|
38
|
+
providerOptions?: ProviderOptions;
|
|
39
|
+
}
|
|
40
|
+
interface ImagePart {
|
|
41
|
+
type: "image";
|
|
42
|
+
/** Base64 string, data URL, ArrayBuffer, Uint8Array, or remote URL. */
|
|
43
|
+
image: string | Uint8Array | ArrayBuffer | URL;
|
|
44
|
+
mediaType?: string;
|
|
45
|
+
providerOptions?: ProviderOptions;
|
|
46
|
+
}
|
|
47
|
+
interface FilePart {
|
|
48
|
+
type: "file";
|
|
49
|
+
data: string | Uint8Array | ArrayBuffer | URL;
|
|
50
|
+
mediaType: string;
|
|
51
|
+
filename?: string;
|
|
52
|
+
providerOptions?: ProviderOptions;
|
|
53
|
+
}
|
|
54
|
+
interface ToolCallPart {
|
|
55
|
+
type: "tool-call";
|
|
56
|
+
toolCallId: string;
|
|
57
|
+
toolName: string;
|
|
58
|
+
input: unknown;
|
|
59
|
+
providerOptions?: ProviderOptions;
|
|
60
|
+
}
|
|
61
|
+
interface ToolResultPart {
|
|
62
|
+
type: "tool-result";
|
|
63
|
+
toolCallId: string;
|
|
64
|
+
toolName: string;
|
|
65
|
+
output: ToolResultOutput;
|
|
66
|
+
providerOptions?: ProviderOptions;
|
|
67
|
+
}
|
|
68
|
+
type ToolResultOutput = {
|
|
69
|
+
type: "text";
|
|
70
|
+
value: string;
|
|
71
|
+
} | {
|
|
72
|
+
type: "json";
|
|
73
|
+
value: unknown;
|
|
74
|
+
} | {
|
|
75
|
+
type: "error-text";
|
|
76
|
+
value: string;
|
|
77
|
+
} | {
|
|
78
|
+
type: "error-json";
|
|
79
|
+
value: unknown;
|
|
80
|
+
} | {
|
|
81
|
+
type: "content";
|
|
82
|
+
value: Array<{
|
|
83
|
+
type: "text";
|
|
84
|
+
text: string;
|
|
85
|
+
} | {
|
|
86
|
+
type: "media";
|
|
87
|
+
data: string;
|
|
88
|
+
mediaType: string;
|
|
89
|
+
}>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Tool definition.
|
|
93
|
+
*
|
|
94
|
+
* `inputSchema` is intentionally typed as `unknown` rather than a specific
|
|
95
|
+
* schema library type — it can be a Zod schema, a JSON Schema object, or any
|
|
96
|
+
* other validator the consumer supplies.
|
|
97
|
+
*/
|
|
98
|
+
interface Tool {
|
|
99
|
+
description?: string;
|
|
100
|
+
inputSchema: unknown;
|
|
101
|
+
/** Provider-specific options, e.g. OpenAI strict mode. */
|
|
102
|
+
providerOptions?: ProviderOptions;
|
|
103
|
+
}
|
|
104
|
+
type ToolSet = Record<string, Tool>;
|
|
105
|
+
type ToolChoice<TOOLS extends ToolSet = ToolSet> = "auto" | "none" | "required" | {
|
|
106
|
+
type: "tool";
|
|
107
|
+
toolName: keyof TOOLS & string;
|
|
108
|
+
};
|
|
109
|
+
interface ToolCall<NAME extends string = string, INPUT = unknown> {
|
|
110
|
+
type: "tool-call";
|
|
111
|
+
toolCallId: string;
|
|
112
|
+
toolName: NAME;
|
|
113
|
+
input: INPUT;
|
|
114
|
+
providerExecuted?: boolean;
|
|
115
|
+
providerMetadata?: ProviderMetadata;
|
|
116
|
+
}
|
|
117
|
+
interface ToolResult<NAME extends string = string, INPUT = unknown, OUTPUT = unknown> {
|
|
118
|
+
type: "tool-result";
|
|
119
|
+
toolCallId: string;
|
|
120
|
+
toolName: NAME;
|
|
121
|
+
input: INPUT;
|
|
122
|
+
output: OUTPUT;
|
|
123
|
+
providerMetadata?: ProviderMetadata;
|
|
124
|
+
}
|
|
125
|
+
type FinishReason = "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other";
|
|
126
|
+
interface LanguageModelUsage {
|
|
127
|
+
inputTokens: number | undefined;
|
|
128
|
+
outputTokens: number | undefined;
|
|
129
|
+
totalTokens: number | undefined;
|
|
130
|
+
reasoningTokens?: number;
|
|
131
|
+
cachedInputTokens?: number;
|
|
132
|
+
}
|
|
133
|
+
interface ProviderMetadata {
|
|
134
|
+
[providerId: string]: Record<string, unknown>;
|
|
135
|
+
}
|
|
136
|
+
type ProviderOptions = ProviderMetadata;
|
|
137
|
+
interface Warning {
|
|
138
|
+
type: "unsupported-tool" | "other";
|
|
139
|
+
details?: string;
|
|
140
|
+
message?: string;
|
|
141
|
+
}
|
|
142
|
+
interface RequestMetadata {
|
|
143
|
+
body?: unknown;
|
|
144
|
+
}
|
|
145
|
+
interface ResponseMetadata {
|
|
146
|
+
id?: string;
|
|
147
|
+
modelId?: string;
|
|
148
|
+
timestamp?: Date;
|
|
149
|
+
headers?: Record<string, string>;
|
|
150
|
+
body?: unknown;
|
|
151
|
+
/** Raw assistant messages emitted by the provider. */
|
|
152
|
+
messages?: Array<AssistantModelMessage | ToolModelMessage>;
|
|
153
|
+
}
|
|
154
|
+
interface ReasoningOutput {
|
|
155
|
+
type: "reasoning";
|
|
156
|
+
text: string;
|
|
157
|
+
providerMetadata?: ProviderMetadata;
|
|
158
|
+
}
|
|
159
|
+
type ContentPart<TOOLS extends ToolSet = ToolSet> = {
|
|
160
|
+
type: "text";
|
|
161
|
+
text: string;
|
|
162
|
+
providerMetadata?: ProviderMetadata;
|
|
163
|
+
} | {
|
|
164
|
+
type: "reasoning";
|
|
165
|
+
text: string;
|
|
166
|
+
providerMetadata?: ProviderMetadata;
|
|
167
|
+
} | (ToolCall<keyof TOOLS & string> & {
|
|
168
|
+
type: "tool-call";
|
|
169
|
+
}) | (ToolResult<keyof TOOLS & string> & {
|
|
170
|
+
type: "tool-result";
|
|
171
|
+
});
|
|
172
|
+
interface StepResult<TOOLS extends ToolSet = ToolSet> {
|
|
173
|
+
content: Array<ContentPart<TOOLS>>;
|
|
174
|
+
text: string;
|
|
175
|
+
reasoning: Array<ReasoningOutput>;
|
|
176
|
+
reasoningText: string | undefined;
|
|
177
|
+
toolCalls: Array<ToolCall<keyof TOOLS & string>>;
|
|
178
|
+
toolResults: Array<ToolResult<keyof TOOLS & string>>;
|
|
179
|
+
finishReason: FinishReason;
|
|
180
|
+
rawFinishReason: string | undefined;
|
|
181
|
+
usage: LanguageModelUsage;
|
|
182
|
+
warnings: Array<Warning> | undefined;
|
|
183
|
+
request?: RequestMetadata;
|
|
184
|
+
response?: ResponseMetadata;
|
|
185
|
+
providerMetadata: ProviderMetadata | undefined;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Options for {@link generateText}.
|
|
190
|
+
*/
|
|
191
|
+
interface GenerateTextOptions<TOOLS extends ToolSet = ToolSet> {
|
|
192
|
+
/** The language model to use. Build one via `foundryModel(...)`. */
|
|
193
|
+
model: LanguageModel;
|
|
194
|
+
/** Plain text prompt. Mutually exclusive with `messages`. */
|
|
195
|
+
prompt?: string | Array<ModelMessage>;
|
|
196
|
+
/** Conversation history. Mutually exclusive with `prompt`. */
|
|
197
|
+
messages?: Array<ModelMessage>;
|
|
198
|
+
/** System instructions, prepended to the conversation. */
|
|
199
|
+
system?: string | SystemModelMessage | Array<SystemModelMessage>;
|
|
200
|
+
tools?: TOOLS;
|
|
201
|
+
toolChoice?: ToolChoice<TOOLS>;
|
|
202
|
+
maxOutputTokens?: number;
|
|
203
|
+
temperature?: number;
|
|
204
|
+
topP?: number;
|
|
205
|
+
presencePenalty?: number;
|
|
206
|
+
frequencyPenalty?: number;
|
|
207
|
+
stopSequences?: Array<string>;
|
|
208
|
+
seed?: number;
|
|
209
|
+
abortSignal?: AbortSignal;
|
|
210
|
+
headers?: Record<string, string | undefined>;
|
|
211
|
+
onStepFinish?: (step: StepResult<TOOLS>) => void | Promise<void>;
|
|
212
|
+
onFinish?: (event: StepResult<TOOLS> & {
|
|
213
|
+
steps: Array<StepResult<TOOLS>>;
|
|
214
|
+
totalUsage: LanguageModelUsage;
|
|
215
|
+
}) => void | PromiseLike<void>;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Result of {@link generateText}.
|
|
219
|
+
*/
|
|
220
|
+
type GenerateTextResult<TOOLS extends ToolSet = ToolSet> = StepResult<TOOLS> & {
|
|
221
|
+
totalUsage: LanguageModelUsage;
|
|
222
|
+
steps: Array<StepResult<TOOLS>>;
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Generate a text completion via the Foundry Language Model Service.
|
|
226
|
+
*
|
|
227
|
+
* v0: single-step. Multi-step tool execution loops, image/file content,
|
|
228
|
+
* structured output, and Zod tool schemas are not yet supported.
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts
|
|
232
|
+
* import { foundryModel, generateText } from "@osdk/aip-core";
|
|
233
|
+
*
|
|
234
|
+
* const { text } = await generateText({
|
|
235
|
+
* model: foundryModel({ client, model: "gpt-4o" }),
|
|
236
|
+
* system: "You are a concise assistant.",
|
|
237
|
+
* prompt: "Summarise this PR.",
|
|
238
|
+
* });
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
declare function generateText<TOOLS extends ToolSet = ToolSet>(options: GenerateTextOptions<TOOLS>): Promise<GenerateTextResult<TOOLS>>;
|
|
242
|
+
|
|
243
|
+
type StreamChunkEvent = {
|
|
244
|
+
type: "text-delta";
|
|
245
|
+
id: string;
|
|
246
|
+
delta: string;
|
|
247
|
+
} | {
|
|
248
|
+
type: "reasoning-delta";
|
|
249
|
+
id: string;
|
|
250
|
+
delta: string;
|
|
251
|
+
} | {
|
|
252
|
+
type: "tool-call";
|
|
253
|
+
toolCallId: string;
|
|
254
|
+
toolName: string;
|
|
255
|
+
input: unknown;
|
|
256
|
+
} | {
|
|
257
|
+
type: "finish";
|
|
258
|
+
finishReason: FinishReason;
|
|
259
|
+
rawFinishReason: string | undefined;
|
|
260
|
+
usage: LanguageModelUsage;
|
|
261
|
+
} | {
|
|
262
|
+
type: "error";
|
|
263
|
+
error: Error;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Options for {@link streamText}.
|
|
268
|
+
*/
|
|
269
|
+
interface StreamTextOptions<TOOLS extends ToolSet = ToolSet> {
|
|
270
|
+
/** The language model to use. Build one via `foundryModel(...)`. */
|
|
271
|
+
model: LanguageModel;
|
|
272
|
+
/** Plain text prompt. Mutually exclusive with `messages`. */
|
|
273
|
+
prompt?: string | Array<ModelMessage>;
|
|
274
|
+
/** Conversation history. Mutually exclusive with `prompt`. */
|
|
275
|
+
messages?: Array<ModelMessage>;
|
|
276
|
+
/** System instructions, prepended to the conversation. */
|
|
277
|
+
system?: string | SystemModelMessage | Array<SystemModelMessage>;
|
|
278
|
+
tools?: TOOLS;
|
|
279
|
+
toolChoice?: ToolChoice<TOOLS>;
|
|
280
|
+
maxOutputTokens?: number;
|
|
281
|
+
temperature?: number;
|
|
282
|
+
topP?: number;
|
|
283
|
+
presencePenalty?: number;
|
|
284
|
+
frequencyPenalty?: number;
|
|
285
|
+
stopSequences?: Array<string>;
|
|
286
|
+
seed?: number;
|
|
287
|
+
abortSignal?: AbortSignal;
|
|
288
|
+
headers?: Record<string, string | undefined>;
|
|
289
|
+
/** Fires for every chunk emitted on `fullStream`. */
|
|
290
|
+
onChunk?: (chunk: TextStreamChunk) => void | PromiseLike<void>;
|
|
291
|
+
/** Fires when the stream errors out. The same error is also emitted via the stream. */
|
|
292
|
+
onError?: (error: Error) => void | PromiseLike<void>;
|
|
293
|
+
/** Fires once after the stream completes successfully. */
|
|
294
|
+
onFinish?: (event: {
|
|
295
|
+
finishReason: FinishReason;
|
|
296
|
+
text: string;
|
|
297
|
+
reasoningText: string | undefined;
|
|
298
|
+
toolCalls: Array<ToolCall>;
|
|
299
|
+
usage: LanguageModelUsage;
|
|
300
|
+
totalUsage: LanguageModelUsage;
|
|
301
|
+
warnings: Array<Warning> | undefined;
|
|
302
|
+
response: ResponseMetadata | undefined;
|
|
303
|
+
request: RequestMetadata | undefined;
|
|
304
|
+
}) => void | PromiseLike<void>;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Single chunk emitted on a {@link StreamTextResult.fullStream}.
|
|
308
|
+
*
|
|
309
|
+
* `toolName` is a runtime string — the model returns whatever it returns,
|
|
310
|
+
* so the chunk's tool name is not statically narrowed against the user's
|
|
311
|
+
* `TOOLS` set.
|
|
312
|
+
*/
|
|
313
|
+
type TextStreamChunk = StreamChunkEvent;
|
|
314
|
+
/**
|
|
315
|
+
* Result of {@link streamText}.
|
|
316
|
+
*
|
|
317
|
+
* `fullStream` is a `ReadableStream` (not an async iterable) so it can be
|
|
318
|
+
* `pipeThrough`-ed with browser-native transforms.
|
|
319
|
+
*/
|
|
320
|
+
interface StreamTextResult {
|
|
321
|
+
/** Stream of all chunk events. */
|
|
322
|
+
fullStream: ReadableStream<TextStreamChunk>;
|
|
323
|
+
/** Stream of just text-delta strings (convenience). */
|
|
324
|
+
textStream: ReadableStream<string>;
|
|
325
|
+
/** Resolves to the final accumulated assistant text. */
|
|
326
|
+
text: Promise<string>;
|
|
327
|
+
/** Resolves to the final accumulated reasoning text, if any. */
|
|
328
|
+
reasoningText: Promise<string | undefined>;
|
|
329
|
+
/** Resolves to the final usage. */
|
|
330
|
+
usage: Promise<LanguageModelUsage>;
|
|
331
|
+
/** Resolves to the same usage (single-step v0). */
|
|
332
|
+
totalUsage: Promise<LanguageModelUsage>;
|
|
333
|
+
/** Resolves to the finish reason. */
|
|
334
|
+
finishReason: Promise<FinishReason>;
|
|
335
|
+
/** Resolves to the accumulated tool calls. */
|
|
336
|
+
toolCalls: Promise<Array<ToolCall>>;
|
|
337
|
+
/** Resolves to v0 warnings, if any. */
|
|
338
|
+
warnings: Promise<Array<Warning> | undefined>;
|
|
339
|
+
/** Resolves to response metadata once the stream finishes. */
|
|
340
|
+
response: Promise<ResponseMetadata | undefined>;
|
|
341
|
+
/** Resolves to the request metadata. */
|
|
342
|
+
request: Promise<RequestMetadata | undefined>;
|
|
343
|
+
}
|
|
344
|
+
declare function streamText<TOOLS extends ToolSet = ToolSet>(options: StreamTextOptions<TOOLS>): StreamTextResult;
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* UI-level message and stream-chunk shapes for the AIP SDK's chat
|
|
348
|
+
* primitives. Describes the wire format that transports produce and UI
|
|
349
|
+
* consumers read — a thin local subset of the AI SDK v5 UI types
|
|
350
|
+
* covering the v0 text-only surface.
|
|
351
|
+
*/
|
|
352
|
+
|
|
353
|
+
type UIMessageRole = "system" | "user" | "assistant";
|
|
354
|
+
type UIMessagePart = {
|
|
355
|
+
type: "text";
|
|
356
|
+
text: string;
|
|
357
|
+
} | {
|
|
358
|
+
type: "reasoning";
|
|
359
|
+
text: string;
|
|
360
|
+
} | {
|
|
361
|
+
type: "file";
|
|
362
|
+
url: string;
|
|
363
|
+
mediaType: string;
|
|
364
|
+
};
|
|
365
|
+
interface UIMessage {
|
|
366
|
+
id: string;
|
|
367
|
+
role: UIMessageRole;
|
|
368
|
+
parts: Array<UIMessagePart>;
|
|
369
|
+
metadata?: Record<string, unknown>;
|
|
370
|
+
}
|
|
371
|
+
type UIMessageChunk = {
|
|
372
|
+
type: "start";
|
|
373
|
+
messageId: string;
|
|
374
|
+
} | {
|
|
375
|
+
type: "start-step";
|
|
376
|
+
} | {
|
|
377
|
+
type: "text-start";
|
|
378
|
+
id: string;
|
|
379
|
+
} | {
|
|
380
|
+
type: "text-delta";
|
|
381
|
+
id: string;
|
|
382
|
+
delta: string;
|
|
383
|
+
} | {
|
|
384
|
+
type: "text-end";
|
|
385
|
+
id: string;
|
|
386
|
+
} | {
|
|
387
|
+
type: "reasoning-start";
|
|
388
|
+
id: string;
|
|
389
|
+
} | {
|
|
390
|
+
type: "reasoning-delta";
|
|
391
|
+
id: string;
|
|
392
|
+
delta: string;
|
|
393
|
+
} | {
|
|
394
|
+
type: "reasoning-end";
|
|
395
|
+
id: string;
|
|
396
|
+
} | {
|
|
397
|
+
type: "tool-input-available";
|
|
398
|
+
toolCallId: string;
|
|
399
|
+
toolName: string;
|
|
400
|
+
input: unknown;
|
|
401
|
+
} | {
|
|
402
|
+
type: "finish-step";
|
|
403
|
+
} | {
|
|
404
|
+
type: "finish";
|
|
405
|
+
messageMetadata?: {
|
|
406
|
+
finishReason?: FinishReason;
|
|
407
|
+
usage?: LanguageModelUsage;
|
|
408
|
+
};
|
|
409
|
+
} | {
|
|
410
|
+
type: "error";
|
|
411
|
+
errorText: string;
|
|
412
|
+
};
|
|
413
|
+
type ChatTransportTrigger = "submit-message" | "regenerate-message";
|
|
414
|
+
interface ChatTransportSendMessagesArgs<MSG extends UIMessage> {
|
|
415
|
+
trigger: ChatTransportTrigger;
|
|
416
|
+
chatId: string;
|
|
417
|
+
messageId: string;
|
|
418
|
+
messages: ReadonlyArray<MSG>;
|
|
419
|
+
abortSignal: AbortSignal | undefined;
|
|
420
|
+
headers?: Record<string, string>;
|
|
421
|
+
}
|
|
422
|
+
interface ChatTransportReconnectArgs {
|
|
423
|
+
chatId: string;
|
|
424
|
+
}
|
|
425
|
+
interface ChatTransport<MSG extends UIMessage = UIMessage> {
|
|
426
|
+
sendMessages(args: ChatTransportSendMessagesArgs<MSG>): Promise<ReadableStream<UIMessageChunk>>;
|
|
427
|
+
reconnectToStream(args: ChatTransportReconnectArgs): Promise<ReadableStream<UIMessageChunk> | null>;
|
|
428
|
+
}
|
|
429
|
+
/** Concatenate all `text` parts of a UIMessage into a single string. */
|
|
430
|
+
declare function getUIMessageText(message: UIMessage): string;
|
|
431
|
+
|
|
432
|
+
type SendMessagesArgs = ChatTransportSendMessagesArgs<UIMessage>;
|
|
433
|
+
/**
|
|
434
|
+
* Options for {@link LmsChatTransport}. Configures the streamed chat
|
|
435
|
+
* completion against the Foundry Language Model Service.
|
|
436
|
+
*/
|
|
437
|
+
interface LmsChatTransportOptions {
|
|
438
|
+
/** Foundry-LMS-backed language model. Build via `foundryModel(...)`. */
|
|
439
|
+
model: LanguageModel;
|
|
440
|
+
/** System prompt prepended to every request. */
|
|
441
|
+
system?: string;
|
|
442
|
+
/** Sampling controls. */
|
|
443
|
+
temperature?: number;
|
|
444
|
+
maxOutputTokens?: number;
|
|
445
|
+
topP?: number;
|
|
446
|
+
presencePenalty?: number;
|
|
447
|
+
frequencyPenalty?: number;
|
|
448
|
+
stopSequences?: Array<string>;
|
|
449
|
+
seed?: number;
|
|
450
|
+
/** Extra HTTP headers forwarded to LMS. */
|
|
451
|
+
headers?: Record<string, string | undefined>;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Stream chat completions through the Foundry Language Model Service via
|
|
455
|
+
* `streamText`. Implements `ChatTransport`, so any consumer that accepts a
|
|
456
|
+
* transport can plug it in (e.g. to inject custom sampling).
|
|
457
|
+
*/
|
|
458
|
+
declare class LmsChatTransport implements ChatTransport<UIMessage> {
|
|
459
|
+
private readonly opts;
|
|
460
|
+
constructor(opts: LmsChatTransportOptions);
|
|
461
|
+
sendMessages: (args: SendMessagesArgs) => Promise<ReadableStream<UIMessageChunk>>;
|
|
462
|
+
reconnectToStream: (_args: ChatTransportReconnectArgs) => Promise<ReadableStream<UIMessageChunk> | null>;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
declare function generateMessageId(): string;
|
|
466
|
+
|
|
467
|
+
export { type AssistantModelMessage, type ChatTransport, type ChatTransportReconnectArgs, type ChatTransportSendMessagesArgs, type ChatTransportTrigger, type ContentPart, type FilePart, type FinishReason, type GenerateTextOptions, type GenerateTextResult, type ImagePart, LanguageModel, type LanguageModelUsage, LmsChatTransport, type LmsChatTransportOptions, type ModelMessage, type ProviderMetadata, type ProviderOptions, type ReasoningOutput, type ReasoningPart, type RequestMetadata, type ResponseMetadata, type Role, type StepResult, type StreamTextOptions, type StreamTextResult, type SystemModelMessage, type TextPart, type TextStreamChunk, type Tool, type ToolCall, type ToolCallPart, type ToolChoice, type ToolModelMessage, type ToolResult, type ToolResultOutput, type ToolResultPart, type ToolSet, type UIMessage, type UIMessageChunk, type UIMessagePart, type UIMessageRole, type UserModelMessage, type Warning, generateMessageId, generateText, getUIMessageText, streamText };
|