@copilotkit/runtime 1.69.0 → 1.69.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.mjs +1 -15
- package/dist/agents/langgraph/events.cjs +1 -1
- package/dist/agents/langgraph/events.cjs.map +1 -1
- package/dist/agents/langgraph/events.mjs +1 -1
- package/dist/agents/langgraph/events.mjs.map +1 -1
- package/dist/graphql/inputs/action.input.cjs +1 -1
- package/dist/graphql/inputs/action.input.cjs.map +1 -1
- package/dist/graphql/inputs/action.input.d.cts +1 -1
- package/dist/graphql/inputs/action.input.d.cts.map +1 -1
- package/dist/graphql/inputs/action.input.d.mts +1 -1
- package/dist/graphql/inputs/action.input.d.mts.map +1 -1
- package/dist/graphql/inputs/action.input.mjs +1 -1
- package/dist/graphql/inputs/action.input.mjs.map +1 -1
- package/dist/graphql/inputs/agent-session.input.cjs +1 -1
- package/dist/graphql/inputs/agent-session.input.cjs.map +1 -1
- package/dist/graphql/inputs/agent-session.input.d.cts +1 -1
- package/dist/graphql/inputs/agent-session.input.d.cts.map +1 -1
- package/dist/graphql/inputs/agent-session.input.d.mts +1 -1
- package/dist/graphql/inputs/agent-session.input.d.mts.map +1 -1
- package/dist/graphql/inputs/agent-session.input.mjs +1 -1
- package/dist/graphql/inputs/agent-session.input.mjs.map +1 -1
- package/dist/graphql/inputs/agent-state.input.cjs +1 -1
- package/dist/graphql/inputs/agent-state.input.cjs.map +1 -1
- package/dist/graphql/inputs/agent-state.input.d.cts +1 -1
- package/dist/graphql/inputs/agent-state.input.d.cts.map +1 -1
- package/dist/graphql/inputs/agent-state.input.d.mts +1 -1
- package/dist/graphql/inputs/agent-state.input.d.mts.map +1 -1
- package/dist/graphql/inputs/agent-state.input.mjs +1 -1
- package/dist/graphql/inputs/agent-state.input.mjs.map +1 -1
- package/dist/graphql/inputs/cloud-guardrails.input.cjs +1 -1
- package/dist/graphql/inputs/cloud-guardrails.input.cjs.map +1 -1
- package/dist/graphql/inputs/cloud-guardrails.input.mjs +1 -1
- package/dist/graphql/inputs/cloud-guardrails.input.mjs.map +1 -1
- package/dist/graphql/inputs/cloud.input.cjs +1 -1
- package/dist/graphql/inputs/cloud.input.cjs.map +1 -1
- package/dist/graphql/inputs/cloud.input.mjs +1 -1
- package/dist/graphql/inputs/cloud.input.mjs.map +1 -1
- package/dist/graphql/inputs/copilot-context.input.cjs +1 -1
- package/dist/graphql/inputs/copilot-context.input.cjs.map +1 -1
- package/dist/graphql/inputs/copilot-context.input.mjs +1 -1
- package/dist/graphql/inputs/copilot-context.input.mjs.map +1 -1
- package/dist/graphql/inputs/extensions.input.cjs +1 -1
- package/dist/graphql/inputs/extensions.input.cjs.map +1 -1
- package/dist/graphql/inputs/extensions.input.d.cts +1 -1
- package/dist/graphql/inputs/extensions.input.d.cts.map +1 -1
- package/dist/graphql/inputs/extensions.input.d.mts +1 -1
- package/dist/graphql/inputs/extensions.input.d.mts.map +1 -1
- package/dist/graphql/inputs/extensions.input.mjs +1 -1
- package/dist/graphql/inputs/extensions.input.mjs.map +1 -1
- package/dist/graphql/inputs/forwarded-parameters.input.cjs +2 -3
- package/dist/graphql/inputs/forwarded-parameters.input.cjs.map +1 -1
- package/dist/graphql/inputs/forwarded-parameters.input.d.cts +2 -2
- package/dist/graphql/inputs/forwarded-parameters.input.d.cts.map +1 -1
- package/dist/graphql/inputs/forwarded-parameters.input.d.mts +2 -2
- package/dist/graphql/inputs/forwarded-parameters.input.d.mts.map +1 -1
- package/dist/graphql/inputs/forwarded-parameters.input.mjs +2 -3
- package/dist/graphql/inputs/forwarded-parameters.input.mjs.map +1 -1
- package/dist/graphql/inputs/frontend.input.cjs +1 -1
- package/dist/graphql/inputs/frontend.input.cjs.map +1 -1
- package/dist/graphql/inputs/frontend.input.mjs +1 -1
- package/dist/graphql/inputs/frontend.input.mjs.map +1 -1
- package/dist/graphql/inputs/generate-copilot-response.input.cjs +1 -1
- package/dist/graphql/inputs/generate-copilot-response.input.cjs.map +1 -1
- package/dist/graphql/inputs/generate-copilot-response.input.mjs +1 -1
- package/dist/graphql/inputs/generate-copilot-response.input.mjs.map +1 -1
- package/dist/graphql/inputs/load-agent-state.input.cjs +1 -1
- package/dist/graphql/inputs/load-agent-state.input.cjs.map +1 -1
- package/dist/graphql/inputs/load-agent-state.input.mjs +1 -1
- package/dist/graphql/inputs/load-agent-state.input.mjs.map +1 -1
- package/dist/graphql/inputs/message.input.cjs +10 -10
- package/dist/graphql/inputs/message.input.cjs.map +1 -1
- package/dist/graphql/inputs/message.input.d.cts +2 -2
- package/dist/graphql/inputs/message.input.d.cts.map +1 -1
- package/dist/graphql/inputs/message.input.d.mts +2 -2
- package/dist/graphql/inputs/message.input.d.mts.map +1 -1
- package/dist/graphql/inputs/message.input.mjs +10 -10
- package/dist/graphql/inputs/message.input.mjs.map +1 -1
- package/dist/graphql/inputs/meta-event.input.cjs +1 -1
- package/dist/graphql/inputs/meta-event.input.cjs.map +1 -1
- package/dist/graphql/inputs/meta-event.input.mjs +1 -1
- package/dist/graphql/inputs/meta-event.input.mjs.map +1 -1
- package/dist/graphql/message-conversion/agui-to-gql.cjs +1 -1
- package/dist/graphql/message-conversion/agui-to-gql.cjs.map +1 -1
- package/dist/graphql/message-conversion/agui-to-gql.mjs +1 -1
- package/dist/graphql/message-conversion/agui-to-gql.mjs.map +1 -1
- package/dist/graphql/resolvers/copilot.resolver.cjs +1 -1
- package/dist/graphql/resolvers/copilot.resolver.cjs.map +1 -1
- package/dist/graphql/resolvers/copilot.resolver.mjs +1 -1
- package/dist/graphql/resolvers/copilot.resolver.mjs.map +1 -1
- package/dist/graphql/resolvers/resolve-message-id.cjs +1 -1
- package/dist/graphql/resolvers/resolve-message-id.cjs.map +1 -1
- package/dist/graphql/resolvers/resolve-message-id.mjs +1 -1
- package/dist/graphql/resolvers/resolve-message-id.mjs.map +1 -1
- package/dist/graphql/resolvers/state.resolver.cjs +1 -1
- package/dist/graphql/resolvers/state.resolver.cjs.map +1 -1
- package/dist/graphql/resolvers/state.resolver.mjs +1 -1
- package/dist/graphql/resolvers/state.resolver.mjs.map +1 -1
- package/dist/graphql/types/agents-response.type.cjs +1 -1
- package/dist/graphql/types/agents-response.type.cjs.map +1 -1
- package/dist/graphql/types/agents-response.type.mjs +1 -1
- package/dist/graphql/types/agents-response.type.mjs.map +1 -1
- package/dist/graphql/types/base/index.cjs +1 -1
- package/dist/graphql/types/base/index.cjs.map +1 -1
- package/dist/graphql/types/base/index.d.cts +1 -1
- package/dist/graphql/types/base/index.d.cts.map +1 -1
- package/dist/graphql/types/base/index.d.mts +1 -1
- package/dist/graphql/types/base/index.d.mts.map +1 -1
- package/dist/graphql/types/base/index.mjs +1 -1
- package/dist/graphql/types/base/index.mjs.map +1 -1
- package/dist/graphql/types/converted/index.cjs +2 -2
- package/dist/graphql/types/converted/index.cjs.map +1 -1
- package/dist/graphql/types/converted/index.d.cts +1 -1
- package/dist/graphql/types/converted/index.d.cts.map +1 -1
- package/dist/graphql/types/converted/index.d.mts +1 -1
- package/dist/graphql/types/converted/index.d.mts.map +1 -1
- package/dist/graphql/types/converted/index.mjs +2 -2
- package/dist/graphql/types/converted/index.mjs.map +1 -1
- package/dist/graphql/types/copilot-response.type.cjs +1 -1
- package/dist/graphql/types/copilot-response.type.cjs.map +1 -1
- package/dist/graphql/types/copilot-response.type.d.cts +1 -1
- package/dist/graphql/types/copilot-response.type.d.cts.map +1 -1
- package/dist/graphql/types/copilot-response.type.d.mts +1 -1
- package/dist/graphql/types/copilot-response.type.d.mts.map +1 -1
- package/dist/graphql/types/copilot-response.type.mjs +1 -1
- package/dist/graphql/types/copilot-response.type.mjs.map +1 -1
- package/dist/graphql/types/enums.cjs +1 -1
- package/dist/graphql/types/enums.cjs.map +1 -1
- package/dist/graphql/types/enums.d.cts +1 -1
- package/dist/graphql/types/enums.d.cts.map +1 -1
- package/dist/graphql/types/enums.d.mts +1 -1
- package/dist/graphql/types/enums.d.mts.map +1 -1
- package/dist/graphql/types/enums.mjs +1 -1
- package/dist/graphql/types/enums.mjs.map +1 -1
- package/dist/graphql/types/extensions-response.type.cjs +1 -1
- package/dist/graphql/types/extensions-response.type.cjs.map +1 -1
- package/dist/graphql/types/extensions-response.type.d.cts +1 -1
- package/dist/graphql/types/extensions-response.type.d.cts.map +1 -1
- package/dist/graphql/types/extensions-response.type.d.mts +1 -1
- package/dist/graphql/types/extensions-response.type.d.mts.map +1 -1
- package/dist/graphql/types/extensions-response.type.mjs +1 -1
- package/dist/graphql/types/extensions-response.type.mjs.map +1 -1
- package/dist/graphql/types/load-agent-state-response.type.cjs +1 -1
- package/dist/graphql/types/load-agent-state-response.type.cjs.map +1 -1
- package/dist/graphql/types/load-agent-state-response.type.mjs +1 -1
- package/dist/graphql/types/load-agent-state-response.type.mjs.map +1 -1
- package/dist/graphql/types/message-status.type.cjs +1 -1
- package/dist/graphql/types/message-status.type.cjs.map +1 -1
- package/dist/graphql/types/message-status.type.d.cts +1 -1
- package/dist/graphql/types/message-status.type.d.cts.map +1 -1
- package/dist/graphql/types/message-status.type.d.mts +1 -1
- package/dist/graphql/types/message-status.type.d.mts.map +1 -1
- package/dist/graphql/types/message-status.type.mjs +1 -1
- package/dist/graphql/types/message-status.type.mjs.map +1 -1
- package/dist/graphql/types/meta-events.type.cjs +2 -2
- package/dist/graphql/types/meta-events.type.cjs.map +1 -1
- package/dist/graphql/types/meta-events.type.mjs +2 -2
- package/dist/graphql/types/meta-events.type.mjs.map +1 -1
- package/dist/graphql/types/response-status.type.cjs +1 -1
- package/dist/graphql/types/response-status.type.cjs.map +1 -1
- package/dist/graphql/types/response-status.type.d.cts +1 -1
- package/dist/graphql/types/response-status.type.d.cts.map +1 -1
- package/dist/graphql/types/response-status.type.d.mts +1 -1
- package/dist/graphql/types/response-status.type.d.mts.map +1 -1
- package/dist/graphql/types/response-status.type.mjs +1 -1
- package/dist/graphql/types/response-status.type.mjs.map +1 -1
- package/dist/index.d.cts +618 -4
- package/dist/index.d.mts +618 -4
- package/dist/langgraph.d.cts +54 -1
- package/dist/langgraph.d.mts +54 -1
- package/dist/lib/cloud/index.d.cts +1 -1
- package/dist/lib/cloud/index.d.cts.map +1 -1
- package/dist/lib/cloud/index.d.mts +1 -1
- package/dist/lib/cloud/index.d.mts.map +1 -1
- package/dist/lib/index.cjs +1 -1
- package/dist/lib/index.cjs.map +1 -1
- package/dist/lib/index.d.cts +2 -2
- package/dist/lib/index.d.cts.map +1 -1
- package/dist/lib/index.d.mts +2 -2
- package/dist/lib/index.d.mts.map +1 -1
- package/dist/lib/index.mjs +1 -1
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/integrations/index.d.cts +1 -1
- package/dist/lib/integrations/index.d.mts +1 -1
- package/dist/lib/integrations/nest/index.cjs +1 -1
- package/dist/lib/integrations/nest/index.cjs.map +1 -1
- package/dist/lib/integrations/nest/index.d.cts +1 -1
- package/dist/lib/integrations/nest/index.d.cts.map +1 -1
- package/dist/lib/integrations/nest/index.d.mts +1 -1
- package/dist/lib/integrations/nest/index.d.mts.map +1 -1
- package/dist/lib/integrations/nest/index.mjs +1 -1
- package/dist/lib/integrations/nest/index.mjs.map +1 -1
- package/dist/lib/integrations/nextjs/app-router.cjs +1 -1
- package/dist/lib/integrations/nextjs/app-router.cjs.map +1 -1
- package/dist/lib/integrations/nextjs/app-router.d.cts +1 -1
- package/dist/lib/integrations/nextjs/app-router.d.cts.map +1 -1
- package/dist/lib/integrations/nextjs/app-router.d.mts +1 -1
- package/dist/lib/integrations/nextjs/app-router.d.mts.map +1 -1
- package/dist/lib/integrations/nextjs/app-router.mjs +1 -1
- package/dist/lib/integrations/nextjs/app-router.mjs.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.cjs +1 -1
- package/dist/lib/integrations/nextjs/pages-router.cjs.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.d.cts +1 -2
- package/dist/lib/integrations/nextjs/pages-router.d.cts.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.d.mts +1 -2
- package/dist/lib/integrations/nextjs/pages-router.d.mts.map +1 -1
- package/dist/lib/integrations/nextjs/pages-router.mjs +1 -1
- package/dist/lib/integrations/nextjs/pages-router.mjs.map +1 -1
- package/dist/lib/integrations/node-express/index.cjs +1 -1
- package/dist/lib/integrations/node-express/index.cjs.map +1 -1
- package/dist/lib/integrations/node-express/index.d.cts +1 -1
- package/dist/lib/integrations/node-express/index.d.cts.map +1 -1
- package/dist/lib/integrations/node-express/index.d.mts +1 -1
- package/dist/lib/integrations/node-express/index.d.mts.map +1 -1
- package/dist/lib/integrations/node-express/index.mjs +1 -1
- package/dist/lib/integrations/node-express/index.mjs.map +1 -1
- package/dist/lib/integrations/node-http/index.cjs +1 -1
- package/dist/lib/integrations/node-http/index.cjs.map +1 -1
- package/dist/lib/integrations/node-http/index.d.cts +1 -1
- package/dist/lib/integrations/node-http/index.d.cts.map +1 -1
- package/dist/lib/integrations/node-http/index.d.mts +1 -1
- package/dist/lib/integrations/node-http/index.d.mts.map +1 -1
- package/dist/lib/integrations/node-http/index.mjs +1 -1
- package/dist/lib/integrations/node-http/index.mjs.map +1 -1
- package/dist/lib/integrations/node-http/request-handler.cjs +1 -1
- package/dist/lib/integrations/node-http/request-handler.cjs.map +1 -1
- package/dist/lib/integrations/node-http/request-handler.mjs +1 -1
- package/dist/lib/integrations/node-http/request-handler.mjs.map +1 -1
- package/dist/lib/integrations/shared.cjs +1 -1
- package/dist/lib/integrations/shared.cjs.map +1 -1
- package/dist/lib/integrations/shared.d.cts +30 -4
- package/dist/lib/integrations/shared.d.cts.map +1 -1
- package/dist/lib/integrations/shared.d.mts +30 -4
- package/dist/lib/integrations/shared.d.mts.map +1 -1
- package/dist/lib/integrations/shared.mjs +1 -1
- package/dist/lib/integrations/shared.mjs.map +1 -1
- package/dist/lib/logger.cjs +1 -1
- package/dist/lib/logger.cjs.map +1 -1
- package/dist/lib/logger.d.cts +1 -1
- package/dist/lib/logger.d.cts.map +1 -1
- package/dist/lib/logger.d.mts +1 -1
- package/dist/lib/logger.d.mts.map +1 -1
- package/dist/lib/logger.mjs +1 -1
- package/dist/lib/logger.mjs.map +1 -1
- package/dist/lib/observability.d.cts +1 -1
- package/dist/lib/observability.d.cts.map +1 -1
- package/dist/lib/observability.d.mts +1 -1
- package/dist/lib/observability.d.mts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts +13 -3
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts +13 -3
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.cjs +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.cjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.d.cts +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.d.cts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.d.mts +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.d.mts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.mjs +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/consts.mjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.cjs +9 -1
- package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts +9 -1
- package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.mts +9 -1
- package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.mjs +9 -1
- package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
- package/dist/lib/runtime/mcp-tools-utils.cjs +1 -1
- package/dist/lib/runtime/mcp-tools-utils.cjs.map +1 -1
- package/dist/lib/runtime/mcp-tools-utils.d.cts +1 -1
- package/dist/lib/runtime/mcp-tools-utils.d.cts.map +1 -1
- package/dist/lib/runtime/mcp-tools-utils.d.mts +1 -1
- package/dist/lib/runtime/mcp-tools-utils.d.mts.map +1 -1
- package/dist/lib/runtime/mcp-tools-utils.mjs +1 -1
- package/dist/lib/runtime/mcp-tools-utils.mjs.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.cjs +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.cjs.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.cts +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.cts.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.mts +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.d.mts.map +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.mjs +1 -1
- package/dist/lib/runtime/telemetry-agent-runner.mjs.map +1 -1
- package/dist/lib/runtime/types.cjs +1 -1
- package/dist/lib/runtime/types.cjs.map +1 -1
- package/dist/lib/runtime/types.d.cts +1 -1
- package/dist/lib/runtime/types.d.cts.map +1 -1
- package/dist/lib/runtime/types.d.mts +1 -1
- package/dist/lib/runtime/types.d.mts.map +1 -1
- package/dist/lib/runtime/types.mjs +1 -1
- package/dist/lib/runtime/types.mjs.map +1 -1
- package/dist/lib/telemetry-client.cjs +1 -1
- package/dist/lib/telemetry-client.cjs.map +1 -1
- package/dist/lib/telemetry-client.mjs +2 -2
- package/dist/lib/telemetry-client.mjs.map +1 -1
- package/dist/lib/telemetry-disclosure.cjs +1 -1
- package/dist/lib/telemetry-disclosure.cjs.map +1 -1
- package/dist/lib/telemetry-disclosure.mjs +1 -1
- package/dist/lib/telemetry-disclosure.mjs.map +1 -1
- package/dist/package.cjs +5 -5
- package/dist/{runtime/package.mjs → package.mjs} +6 -6
- package/dist/package.mjs.map +1 -0
- package/dist/service-adapters/anthropic/anthropic-adapter.cjs +1 -1
- package/dist/service-adapters/anthropic/anthropic-adapter.cjs.map +1 -1
- package/dist/service-adapters/anthropic/anthropic-adapter.d.cts +4 -4
- package/dist/service-adapters/anthropic/anthropic-adapter.d.cts.map +1 -1
- package/dist/service-adapters/anthropic/anthropic-adapter.d.mts +5 -4
- package/dist/service-adapters/anthropic/anthropic-adapter.d.mts.map +1 -1
- package/dist/service-adapters/anthropic/anthropic-adapter.mjs +1 -1
- package/dist/service-adapters/anthropic/anthropic-adapter.mjs.map +1 -1
- package/dist/service-adapters/anthropic/utils.cjs +1 -1
- package/dist/service-adapters/anthropic/utils.cjs.map +1 -1
- package/dist/service-adapters/anthropic/utils.mjs +1 -1
- package/dist/service-adapters/anthropic/utils.mjs.map +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.cjs +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.cjs.map +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.d.cts +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.d.cts.map +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.d.mts +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.d.mts.map +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.mjs +1 -1
- package/dist/service-adapters/bedrock/bedrock-adapter.mjs.map +1 -1
- package/dist/service-adapters/empty/empty-adapter.cjs +1 -1
- package/dist/service-adapters/empty/empty-adapter.cjs.map +1 -1
- package/dist/service-adapters/empty/empty-adapter.d.cts +1 -1
- package/dist/service-adapters/empty/empty-adapter.d.cts.map +1 -1
- package/dist/service-adapters/empty/empty-adapter.d.mts +1 -1
- package/dist/service-adapters/empty/empty-adapter.d.mts.map +1 -1
- package/dist/service-adapters/empty/empty-adapter.mjs +1 -1
- package/dist/service-adapters/empty/empty-adapter.mjs.map +1 -1
- package/dist/service-adapters/events.cjs +1 -1
- package/dist/service-adapters/events.cjs.map +1 -1
- package/dist/service-adapters/events.d.cts +1 -1
- package/dist/service-adapters/events.d.cts.map +1 -1
- package/dist/service-adapters/events.d.mts +1 -1
- package/dist/service-adapters/events.d.mts.map +1 -1
- package/dist/service-adapters/events.mjs +1 -1
- package/dist/service-adapters/events.mjs.map +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.cjs +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.cjs.map +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.d.cts +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.d.cts.map +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.d.mts +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.d.mts.map +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.mjs +1 -1
- package/dist/service-adapters/experimental/ollama/ollama-adapter.mjs.map +1 -1
- package/dist/service-adapters/google/google-genai-adapter.cjs +1 -1
- package/dist/service-adapters/google/google-genai-adapter.cjs.map +1 -1
- package/dist/service-adapters/google/google-genai-adapter.d.cts +1 -1
- package/dist/service-adapters/google/google-genai-adapter.d.cts.map +1 -1
- package/dist/service-adapters/google/google-genai-adapter.d.mts +1 -1
- package/dist/service-adapters/google/google-genai-adapter.d.mts.map +1 -1
- package/dist/service-adapters/google/google-genai-adapter.mjs +1 -1
- package/dist/service-adapters/google/google-genai-adapter.mjs.map +1 -1
- package/dist/service-adapters/groq/groq-adapter.cjs +1 -1
- package/dist/service-adapters/groq/groq-adapter.cjs.map +1 -1
- package/dist/service-adapters/groq/groq-adapter.d.cts +4 -4
- package/dist/service-adapters/groq/groq-adapter.d.cts.map +1 -1
- package/dist/service-adapters/groq/groq-adapter.d.mts +5 -4
- package/dist/service-adapters/groq/groq-adapter.d.mts.map +1 -1
- package/dist/service-adapters/groq/groq-adapter.mjs +1 -1
- package/dist/service-adapters/groq/groq-adapter.mjs.map +1 -1
- package/dist/service-adapters/index.d.cts +2 -2
- package/dist/service-adapters/index.d.mts +3 -3
- package/dist/service-adapters/langchain/langchain-adapter.cjs +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.cjs.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.cts +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.cts.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.mts +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.mts.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.mjs +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.mjs.map +1 -1
- package/dist/service-adapters/langchain/langserve.cjs +1 -1
- package/dist/service-adapters/langchain/langserve.cjs.map +1 -1
- package/dist/service-adapters/langchain/langserve.d.cts +1 -1
- package/dist/service-adapters/langchain/langserve.d.cts.map +1 -1
- package/dist/service-adapters/langchain/langserve.d.mts +1 -1
- package/dist/service-adapters/langchain/langserve.d.mts.map +1 -1
- package/dist/service-adapters/langchain/langserve.mjs +1 -1
- package/dist/service-adapters/langchain/langserve.mjs.map +1 -1
- package/dist/service-adapters/langchain/types.d.cts +1 -1
- package/dist/service-adapters/langchain/types.d.cts.map +1 -1
- package/dist/service-adapters/langchain/types.d.mts +1 -1
- package/dist/service-adapters/langchain/types.d.mts.map +1 -1
- package/dist/service-adapters/langchain/utils.cjs +1 -1
- package/dist/service-adapters/langchain/utils.cjs.map +1 -1
- package/dist/service-adapters/langchain/utils.mjs +1 -1
- package/dist/service-adapters/langchain/utils.mjs.map +1 -1
- package/dist/service-adapters/openai/openai-adapter.cjs +1 -1
- package/dist/service-adapters/openai/openai-adapter.cjs.map +1 -1
- package/dist/service-adapters/openai/openai-adapter.d.cts +1 -1
- package/dist/service-adapters/openai/openai-adapter.d.cts.map +1 -1
- package/dist/service-adapters/openai/openai-adapter.d.mts +1 -1
- package/dist/service-adapters/openai/openai-adapter.d.mts.map +1 -1
- package/dist/service-adapters/openai/openai-adapter.mjs +1 -1
- package/dist/service-adapters/openai/openai-adapter.mjs.map +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.cjs +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.cjs.map +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.d.cts +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.d.cts.map +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.d.mts +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.d.mts.map +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.mjs +1 -1
- package/dist/service-adapters/openai/openai-assistant-adapter.mjs.map +1 -1
- package/dist/service-adapters/openai/utils.cjs +1 -1
- package/dist/service-adapters/openai/utils.cjs.map +1 -1
- package/dist/service-adapters/openai/utils.mjs +1 -1
- package/dist/service-adapters/openai/utils.mjs.map +1 -1
- package/dist/service-adapters/service-adapter.d.cts +1 -1
- package/dist/service-adapters/service-adapter.d.cts.map +1 -1
- package/dist/service-adapters/service-adapter.d.mts +1 -1
- package/dist/service-adapters/service-adapter.d.mts.map +1 -1
- package/dist/service-adapters/shared/error-utils.cjs +1 -1
- package/dist/service-adapters/shared/error-utils.cjs.map +1 -1
- package/dist/service-adapters/shared/error-utils.d.cts +1 -1
- package/dist/service-adapters/shared/error-utils.d.cts.map +1 -1
- package/dist/service-adapters/shared/error-utils.d.mts +1 -1
- package/dist/service-adapters/shared/error-utils.d.mts.map +1 -1
- package/dist/service-adapters/shared/error-utils.mjs +1 -1
- package/dist/service-adapters/shared/error-utils.mjs.map +1 -1
- package/dist/service-adapters/shared/index.d.mts +1 -1
- package/dist/service-adapters/shared/sdk-client-utils.cjs +1 -1
- package/dist/service-adapters/shared/sdk-client-utils.cjs.map +1 -1
- package/dist/service-adapters/shared/sdk-client-utils.d.cts +21 -2
- package/dist/service-adapters/shared/sdk-client-utils.d.cts.map +1 -1
- package/dist/service-adapters/shared/sdk-client-utils.d.mts +21 -2
- package/dist/service-adapters/shared/sdk-client-utils.d.mts.map +1 -1
- package/dist/service-adapters/shared/sdk-client-utils.mjs +1 -1
- package/dist/service-adapters/shared/sdk-client-utils.mjs.map +1 -1
- package/dist/service-adapters/unify/unify-adapter.cjs +1 -1
- package/dist/service-adapters/unify/unify-adapter.cjs.map +1 -1
- package/dist/service-adapters/unify/unify-adapter.d.cts +1 -1
- package/dist/service-adapters/unify/unify-adapter.d.cts.map +1 -1
- package/dist/service-adapters/unify/unify-adapter.d.mts +1 -1
- package/dist/service-adapters/unify/unify-adapter.d.mts.map +1 -1
- package/dist/service-adapters/unify/unify-adapter.mjs +1 -1
- package/dist/service-adapters/unify/unify-adapter.mjs.map +1 -1
- package/dist/utils/failed-response-status-reasons.cjs +1 -1
- package/dist/utils/failed-response-status-reasons.cjs.map +1 -1
- package/dist/utils/failed-response-status-reasons.d.cts +1 -1
- package/dist/utils/failed-response-status-reasons.d.cts.map +1 -1
- package/dist/utils/failed-response-status-reasons.d.mts +1 -1
- package/dist/utils/failed-response-status-reasons.d.mts.map +1 -1
- package/dist/utils/failed-response-status-reasons.mjs +1 -1
- package/dist/utils/failed-response-status-reasons.mjs.map +1 -1
- package/dist/v2/runtime/core/channel-activation-config.cjs.map +1 -1
- package/dist/v2/runtime/core/channel-activation-config.d.cts +2 -2
- package/dist/v2/runtime/core/channel-activation-config.d.cts.map +1 -1
- package/dist/v2/runtime/core/channel-activation-config.d.mts +2 -2
- package/dist/v2/runtime/core/channel-activation-config.d.mts.map +1 -1
- package/dist/v2/runtime/core/channel-activation-config.mjs.map +1 -1
- package/dist/v2/runtime/core/channel-manager.cjs.map +1 -1
- package/dist/v2/runtime/core/channel-manager.d.cts +2 -2
- package/dist/v2/runtime/core/channel-manager.d.cts.map +1 -1
- package/dist/v2/runtime/core/channel-manager.d.mts +2 -2
- package/dist/v2/runtime/core/channel-manager.d.mts.map +1 -1
- package/dist/v2/runtime/core/channel-manager.mjs.map +1 -1
- package/dist/v2/runtime/core/runtime.cjs +1 -0
- package/dist/v2/runtime/core/runtime.cjs.map +1 -1
- package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
- package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
- package/dist/v2/runtime/core/runtime.mjs +2 -1
- package/dist/v2/runtime/core/runtime.mjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/memories.cjs +1 -1
- package/dist/v2/runtime/handlers/intelligence/memories.cjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/memories.mjs +1 -1
- package/dist/v2/runtime/handlers/intelligence/memories.mjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/threads.cjs +1 -1
- package/dist/v2/runtime/handlers/intelligence/threads.cjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/threads.mjs +1 -1
- package/dist/v2/runtime/handlers/intelligence/threads.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -1
- package/dist/v2/runtime/handlers/sse/run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/sse/run.mjs.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.cjs +14 -9
- package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.cts +16 -11
- package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.mts +16 -11
- package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.mjs +14 -9
- package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -1
- package/dist/v2/runtime/runner/in-memory.cjs +3 -3
- package/dist/v2/runtime/runner/in-memory.cjs.map +1 -1
- package/dist/v2/runtime/runner/in-memory.d.cts +4 -4
- package/dist/v2/runtime/runner/in-memory.d.mts +4 -4
- package/dist/v2/runtime/runner/in-memory.mjs +3 -3
- package/dist/v2/runtime/runner/in-memory.mjs.map +1 -1
- package/dist/v2/runtime/telemetry/telemetry-client.mjs +1 -1
- package/package.json +7 -7
- package/skills/runtime/SKILL.md +1 -1
- package/skills/runtime/references/agent-runners-custom.md +1 -1
- package/skills/runtime/references/agent-runners.md +11 -5
- package/skills/runtime/references/intelligence-mode.md +1 -1
- package/dist/channels/dist/index.d.cts +0 -10
- package/dist/channels/dist/index.d.cts.map +0 -1
- package/dist/channels/dist/index.d.mts +0 -10
- package/dist/channels/dist/index.d.mts.map +0 -1
- package/dist/runtime/package.mjs.map +0 -1
|
@@ -2,7 +2,7 @@ import "reflect-metadata";
|
|
|
2
2
|
import { __require } from "../../_virtual/_rolldown/runtime.mjs";
|
|
3
3
|
import { convertActionInputToOpenAITool, convertMessageToOpenAIMessage, convertSystemMessageToAssistantAPI, retrieveThreadRun, submitToolOutputsStream } from "./utils.mjs";
|
|
4
4
|
|
|
5
|
-
//#region src/service-adapters/openai/openai-assistant-adapter.ts
|
|
5
|
+
//#region src/v1-deprecated/service-adapters/openai/openai-assistant-adapter.ts
|
|
6
6
|
var OpenAIAssistantAdapter = class {
|
|
7
7
|
get name() {
|
|
8
8
|
return "OpenAIAssistantAdapter";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-assistant-adapter.mjs","names":[],"sources":["../../../src/service-adapters/openai/openai-assistant-adapter.ts"],"sourcesContent":["/**\n * Copilot Runtime adapter for the OpenAI Assistant API.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, OpenAIAssistantAdapter } from \"@copilotkit/runtime\";\n * import OpenAI from \"openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const openai = new OpenAI({\n * organization: \"<your-organization-id>\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new OpenAIAssistantAdapter({\n * openai,\n * assistantId: \"<your-assistant-id>\",\n * codeInterpreterEnabled: true,\n * fileSearchEnabled: true,\n * });\n * ```\n */\nimport type OpenAI from \"openai\";\nimport type { AssistantStream } from \"openai/lib/AssistantStream\";\nimport type {\n AssistantStreamEvent,\n AssistantTool,\n} from \"openai/resources/beta/assistants\";\nimport type {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport type { Message, ResultMessage } from \"../../graphql/types/converted\";\nimport { TextMessage } from \"../../graphql/types/converted\";\nimport {\n convertActionInputToOpenAITool,\n convertMessageToOpenAIMessage,\n convertSystemMessageToAssistantAPI,\n retrieveThreadRun,\n submitToolOutputsStream,\n} from \"./utils\";\nimport type { RuntimeEventSource } from \"../events\";\nimport type { ActionInput } from \"../../graphql/inputs/action.input\";\nimport type { ForwardedParametersInput } from \"../../graphql/inputs/forwarded-parameters.input\";\n\nexport interface OpenAIAssistantAdapterParams {\n /**\n * The ID of the assistant to use.\n */\n assistantId: string;\n\n /**\n * An optional OpenAI instance to use. If not provided, a new instance will be created.\n */\n openai?: OpenAI;\n\n /**\n * Whether to enable code interpretation.\n * @default true\n */\n codeInterpreterEnabled?: boolean;\n\n /**\n * Whether to enable file search.\n * @default true\n */\n fileSearchEnabled?: boolean;\n\n /**\n * Whether to disable parallel tool calls.\n * You can disable parallel tool calls to force the model to execute tool calls sequentially.\n * This is useful if you want to execute tool calls in a specific order so that the state changes\n * introduced by one tool call are visible to the next tool call. (i.e. new actions or readables)\n *\n * @default false\n */\n disableParallelToolCalls?: boolean;\n\n /**\n * Whether to keep the role in system messages as \"System\".\n * By default, it is converted to \"developer\", which is used by newer OpenAI models\n *\n * @default false\n */\n keepSystemRole?: boolean;\n}\n\nexport class OpenAIAssistantAdapter implements CopilotServiceAdapter {\n private _openai: OpenAI;\n private codeInterpreterEnabled: boolean;\n private assistantId: string;\n private fileSearchEnabled: boolean;\n private disableParallelToolCalls: boolean;\n private keepSystemRole: boolean = false;\n\n public get name() {\n return \"OpenAIAssistantAdapter\";\n }\n\n constructor(params: OpenAIAssistantAdapterParams) {\n if (params.openai) {\n this._openai = params.openai;\n }\n // If no instance provided, we'll lazy-load in ensureOpenAI()\n this.codeInterpreterEnabled =\n params.codeInterpreterEnabled === false || true;\n this.fileSearchEnabled = params.fileSearchEnabled === false || true;\n this.assistantId = params.assistantId;\n this.disableParallelToolCalls = params?.disableParallelToolCalls || false;\n this.keepSystemRole = params?.keepSystemRole ?? false;\n }\n\n private ensureOpenAI(): OpenAI {\n if (!this._openai) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const OpenAI = require(\"openai\").default;\n this._openai = new OpenAI({});\n }\n return this._openai;\n }\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n const { messages, actions, eventSource, runId, forwardedParameters } =\n request;\n\n // if we don't have a threadId, create a new thread\n let threadId = request.extensions?.openaiAssistantAPI?.threadId;\n const openai = this.ensureOpenAI();\n\n if (!threadId) {\n threadId = (await openai.beta.threads.create()).id;\n }\n\n const lastMessage = messages.at(-1);\n\n let nextRunId: string | undefined = undefined;\n\n // submit function outputs\n if (lastMessage.isResultMessage() && runId) {\n nextRunId = await this.submitToolOutputs(\n threadId,\n runId,\n messages,\n eventSource,\n );\n }\n // submit user message\n else if (lastMessage.isTextMessage()) {\n nextRunId = await this.submitUserMessage(\n threadId,\n messages,\n actions,\n eventSource,\n forwardedParameters,\n );\n }\n // unsupported message\n else {\n throw new Error(\"No actionable message found in the messages\");\n }\n\n return {\n runId: nextRunId,\n threadId,\n extensions: {\n ...request.extensions,\n openaiAssistantAPI: {\n threadId: threadId,\n runId: nextRunId,\n },\n },\n };\n }\n\n private async submitToolOutputs(\n threadId: string,\n runId: string,\n messages: Message[],\n eventSource: RuntimeEventSource,\n ) {\n const openai = this.ensureOpenAI();\n let run = await retrieveThreadRun(openai, threadId, runId);\n\n if (!run.required_action) {\n throw new Error(\"No tool outputs required\");\n }\n\n // get the required tool call ids\n const toolCallsIds = run.required_action.submit_tool_outputs.tool_calls.map(\n (toolCall) => toolCall.id,\n );\n\n // search for these tool calls\n const resultMessages = messages.filter(\n (message) =>\n message.isResultMessage() &&\n toolCallsIds.includes(message.actionExecutionId),\n ) as ResultMessage[];\n\n if (toolCallsIds.length != resultMessages.length) {\n throw new Error(\n \"Number of function results does not match the number of tool calls\",\n );\n }\n\n // submit the tool outputs\n const toolOutputs: { tool_call_id: string; output: string }[] =\n resultMessages.map((message) => {\n return {\n tool_call_id: message.actionExecutionId,\n output: message.result,\n };\n });\n\n const stream = submitToolOutputsStream(openai, threadId, runId, {\n tool_outputs: toolOutputs,\n ...(this.disableParallelToolCalls && { parallel_tool_calls: false }),\n });\n\n await this.streamResponse(stream, eventSource);\n return runId;\n }\n\n private async submitUserMessage(\n threadId: string,\n messages: Message[],\n actions: ActionInput[],\n eventSource: RuntimeEventSource,\n forwardedParameters: ForwardedParametersInput,\n ) {\n const openai = this.ensureOpenAI();\n messages = [...messages];\n\n // get the instruction message\n const instructionsMessage = messages.shift();\n const instructions = instructionsMessage.isTextMessage()\n ? instructionsMessage.content\n : \"\";\n\n // get the latest user message\n const userMessage = messages\n .map((m) =>\n convertMessageToOpenAIMessage(m, {\n keepSystemRole: this.keepSystemRole,\n }),\n )\n .map(convertSystemMessageToAssistantAPI)\n .at(-1);\n\n if (userMessage.role !== \"user\") {\n throw new Error(\"No user message found\");\n }\n\n await openai.beta.threads.messages.create(threadId, {\n role: \"user\",\n content: userMessage.content,\n });\n\n const openaiTools = actions.map(convertActionInputToOpenAITool);\n\n const tools = [\n ...openaiTools,\n ...(this.codeInterpreterEnabled\n ? [{ type: \"code_interpreter\" } as AssistantTool]\n : []),\n ...(this.fileSearchEnabled\n ? [{ type: \"file_search\" } as AssistantTool]\n : []),\n ];\n\n let stream = openai.beta.threads.runs.stream(threadId, {\n assistant_id: this.assistantId,\n instructions,\n tools: tools,\n ...(forwardedParameters?.maxTokens && {\n max_completion_tokens: forwardedParameters.maxTokens,\n }),\n ...(this.disableParallelToolCalls && { parallel_tool_calls: false }),\n });\n\n await this.streamResponse(stream, eventSource);\n\n return getRunIdFromStream(stream);\n }\n\n private async streamResponse(\n stream: AssistantStream,\n eventSource: RuntimeEventSource,\n ) {\n eventSource.stream(async (eventStream$) => {\n let inFunctionCall = false;\n let currentMessageId: string;\n let currentToolCallId: string;\n\n for await (const chunk of stream) {\n switch (chunk.event) {\n case \"thread.message.created\":\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n currentMessageId = chunk.data.id;\n eventStream$.sendTextMessageStart({ messageId: currentMessageId });\n break;\n case \"thread.message.delta\":\n if (chunk.data.delta.content?.[0].type === \"text\") {\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: chunk.data.delta.content?.[0].text.value,\n });\n }\n break;\n case \"thread.message.completed\":\n eventStream$.sendTextMessageEnd({ messageId: currentMessageId });\n break;\n case \"thread.run.step.delta\":\n let toolCallId: string | undefined;\n let toolCallName: string | undefined;\n let toolCallArgs: string | undefined;\n if (\n chunk.data.delta.step_details.type === \"tool_calls\" &&\n chunk.data.delta.step_details.tool_calls?.[0].type === \"function\"\n ) {\n toolCallId = chunk.data.delta.step_details.tool_calls?.[0].id;\n toolCallName =\n chunk.data.delta.step_details.tool_calls?.[0].function.name;\n toolCallArgs =\n chunk.data.delta.step_details.tool_calls?.[0].function\n .arguments;\n }\n\n if (toolCallName && toolCallId) {\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n inFunctionCall = true;\n currentToolCallId = toolCallId;\n eventStream$.sendActionExecutionStart({\n actionExecutionId: currentToolCallId,\n parentMessageId: chunk.data.id,\n actionName: toolCallName,\n });\n } else if (toolCallArgs) {\n eventStream$.sendActionExecutionArgs({\n actionExecutionId: currentToolCallId,\n args: toolCallArgs,\n });\n }\n break;\n }\n }\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n eventStream$.complete();\n });\n }\n}\n\nfunction getRunIdFromStream(stream: AssistantStream): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n let runIdGetter = (event: AssistantStreamEvent) => {\n if (event.event === \"thread.run.created\") {\n const runId = event.data.id;\n stream.off(\"event\", runIdGetter);\n resolve(runId);\n }\n };\n stream.on(\"event\", runIdGetter);\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-assistant-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/openai/openai-assistant-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — OpenAIAssistantAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — OpenAIAssistantAdapterParams:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for the OpenAI Assistant API.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, OpenAIAssistantAdapter } from \"@copilotkit/runtime\";\n * import OpenAI from \"openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const openai = new OpenAI({\n * organization: \"<your-organization-id>\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new OpenAIAssistantAdapter({\n * openai,\n * assistantId: \"<your-assistant-id>\",\n * codeInterpreterEnabled: true,\n * fileSearchEnabled: true,\n * });\n * ```\n */\nimport type OpenAI from \"openai\";\nimport type { AssistantStream } from \"openai/lib/AssistantStream\";\nimport type {\n AssistantStreamEvent,\n AssistantTool,\n} from \"openai/resources/beta/assistants\";\nimport type {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport type { Message, ResultMessage } from \"../../graphql/types/converted\";\nimport { TextMessage } from \"../../graphql/types/converted\";\nimport {\n convertActionInputToOpenAITool,\n convertMessageToOpenAIMessage,\n convertSystemMessageToAssistantAPI,\n retrieveThreadRun,\n submitToolOutputsStream,\n} from \"./utils\";\nimport type { RuntimeEventSource } from \"../events\";\nimport type { ActionInput } from \"../../graphql/inputs/action.input\";\nimport type { ForwardedParametersInput } from \"../../graphql/inputs/forwarded-parameters.input\";\n\nexport interface OpenAIAssistantAdapterParams {\n /**\n * The ID of the assistant to use.\n */\n assistantId: string;\n\n /**\n * An optional OpenAI instance to use. If not provided, a new instance will be created.\n */\n openai?: OpenAI;\n\n /**\n * Whether to enable code interpretation.\n * @default true\n */\n codeInterpreterEnabled?: boolean;\n\n /**\n * Whether to enable file search.\n * @default true\n */\n fileSearchEnabled?: boolean;\n\n /**\n * Whether to disable parallel tool calls.\n * You can disable parallel tool calls to force the model to execute tool calls sequentially.\n * This is useful if you want to execute tool calls in a specific order so that the state changes\n * introduced by one tool call are visible to the next tool call. (i.e. new actions or readables)\n *\n * @default false\n */\n disableParallelToolCalls?: boolean;\n\n /**\n * Whether to keep the role in system messages as \"System\".\n * By default, it is converted to \"developer\", which is used by newer OpenAI models\n *\n * @default false\n */\n keepSystemRole?: boolean;\n}\n\nexport class OpenAIAssistantAdapter implements CopilotServiceAdapter {\n private _openai: OpenAI;\n private codeInterpreterEnabled: boolean;\n private assistantId: string;\n private fileSearchEnabled: boolean;\n private disableParallelToolCalls: boolean;\n private keepSystemRole: boolean = false;\n\n public get name() {\n return \"OpenAIAssistantAdapter\";\n }\n\n constructor(params: OpenAIAssistantAdapterParams) {\n if (params.openai) {\n this._openai = params.openai;\n }\n // If no instance provided, we'll lazy-load in ensureOpenAI()\n this.codeInterpreterEnabled =\n params.codeInterpreterEnabled === false || true;\n this.fileSearchEnabled = params.fileSearchEnabled === false || true;\n this.assistantId = params.assistantId;\n this.disableParallelToolCalls = params?.disableParallelToolCalls || false;\n this.keepSystemRole = params?.keepSystemRole ?? false;\n }\n\n private ensureOpenAI(): OpenAI {\n if (!this._openai) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const OpenAI = require(\"openai\").default;\n this._openai = new OpenAI({});\n }\n return this._openai;\n }\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n const { messages, actions, eventSource, runId, forwardedParameters } =\n request;\n\n // if we don't have a threadId, create a new thread\n let threadId = request.extensions?.openaiAssistantAPI?.threadId;\n const openai = this.ensureOpenAI();\n\n if (!threadId) {\n threadId = (await openai.beta.threads.create()).id;\n }\n\n const lastMessage = messages.at(-1);\n\n let nextRunId: string | undefined = undefined;\n\n // submit function outputs\n if (lastMessage.isResultMessage() && runId) {\n nextRunId = await this.submitToolOutputs(\n threadId,\n runId,\n messages,\n eventSource,\n );\n }\n // submit user message\n else if (lastMessage.isTextMessage()) {\n nextRunId = await this.submitUserMessage(\n threadId,\n messages,\n actions,\n eventSource,\n forwardedParameters,\n );\n }\n // unsupported message\n else {\n throw new Error(\"No actionable message found in the messages\");\n }\n\n return {\n runId: nextRunId,\n threadId,\n extensions: {\n ...request.extensions,\n openaiAssistantAPI: {\n threadId: threadId,\n runId: nextRunId,\n },\n },\n };\n }\n\n private async submitToolOutputs(\n threadId: string,\n runId: string,\n messages: Message[],\n eventSource: RuntimeEventSource,\n ) {\n const openai = this.ensureOpenAI();\n let run = await retrieveThreadRun(openai, threadId, runId);\n\n if (!run.required_action) {\n throw new Error(\"No tool outputs required\");\n }\n\n // get the required tool call ids\n const toolCallsIds = run.required_action.submit_tool_outputs.tool_calls.map(\n (toolCall) => toolCall.id,\n );\n\n // search for these tool calls\n const resultMessages = messages.filter(\n (message) =>\n message.isResultMessage() &&\n toolCallsIds.includes(message.actionExecutionId),\n ) as ResultMessage[];\n\n if (toolCallsIds.length != resultMessages.length) {\n throw new Error(\n \"Number of function results does not match the number of tool calls\",\n );\n }\n\n // submit the tool outputs\n const toolOutputs: { tool_call_id: string; output: string }[] =\n resultMessages.map((message) => {\n return {\n tool_call_id: message.actionExecutionId,\n output: message.result,\n };\n });\n\n const stream = submitToolOutputsStream(openai, threadId, runId, {\n tool_outputs: toolOutputs,\n ...(this.disableParallelToolCalls && { parallel_tool_calls: false }),\n });\n\n await this.streamResponse(stream, eventSource);\n return runId;\n }\n\n private async submitUserMessage(\n threadId: string,\n messages: Message[],\n actions: ActionInput[],\n eventSource: RuntimeEventSource,\n forwardedParameters: ForwardedParametersInput,\n ) {\n const openai = this.ensureOpenAI();\n messages = [...messages];\n\n // get the instruction message\n const instructionsMessage = messages.shift();\n const instructions = instructionsMessage.isTextMessage()\n ? instructionsMessage.content\n : \"\";\n\n // get the latest user message\n const userMessage = messages\n .map((m) =>\n convertMessageToOpenAIMessage(m, {\n keepSystemRole: this.keepSystemRole,\n }),\n )\n .map(convertSystemMessageToAssistantAPI)\n .at(-1);\n\n if (userMessage.role !== \"user\") {\n throw new Error(\"No user message found\");\n }\n\n await openai.beta.threads.messages.create(threadId, {\n role: \"user\",\n content: userMessage.content,\n });\n\n const openaiTools = actions.map(convertActionInputToOpenAITool);\n\n const tools = [\n ...openaiTools,\n ...(this.codeInterpreterEnabled\n ? [{ type: \"code_interpreter\" } as AssistantTool]\n : []),\n ...(this.fileSearchEnabled\n ? [{ type: \"file_search\" } as AssistantTool]\n : []),\n ];\n\n let stream = openai.beta.threads.runs.stream(threadId, {\n assistant_id: this.assistantId,\n instructions,\n tools: tools,\n ...(forwardedParameters?.maxTokens && {\n max_completion_tokens: forwardedParameters.maxTokens,\n }),\n ...(this.disableParallelToolCalls && { parallel_tool_calls: false }),\n });\n\n await this.streamResponse(stream, eventSource);\n\n return getRunIdFromStream(stream);\n }\n\n private async streamResponse(\n stream: AssistantStream,\n eventSource: RuntimeEventSource,\n ) {\n eventSource.stream(async (eventStream$) => {\n let inFunctionCall = false;\n let currentMessageId: string;\n let currentToolCallId: string;\n\n for await (const chunk of stream) {\n switch (chunk.event) {\n case \"thread.message.created\":\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n currentMessageId = chunk.data.id;\n eventStream$.sendTextMessageStart({ messageId: currentMessageId });\n break;\n case \"thread.message.delta\":\n if (chunk.data.delta.content?.[0].type === \"text\") {\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: chunk.data.delta.content?.[0].text.value,\n });\n }\n break;\n case \"thread.message.completed\":\n eventStream$.sendTextMessageEnd({ messageId: currentMessageId });\n break;\n case \"thread.run.step.delta\":\n let toolCallId: string | undefined;\n let toolCallName: string | undefined;\n let toolCallArgs: string | undefined;\n if (\n chunk.data.delta.step_details.type === \"tool_calls\" &&\n chunk.data.delta.step_details.tool_calls?.[0].type === \"function\"\n ) {\n toolCallId = chunk.data.delta.step_details.tool_calls?.[0].id;\n toolCallName =\n chunk.data.delta.step_details.tool_calls?.[0].function.name;\n toolCallArgs =\n chunk.data.delta.step_details.tool_calls?.[0].function\n .arguments;\n }\n\n if (toolCallName && toolCallId) {\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n inFunctionCall = true;\n currentToolCallId = toolCallId;\n eventStream$.sendActionExecutionStart({\n actionExecutionId: currentToolCallId,\n parentMessageId: chunk.data.id,\n actionName: toolCallName,\n });\n } else if (toolCallArgs) {\n eventStream$.sendActionExecutionArgs({\n actionExecutionId: currentToolCallId,\n args: toolCallArgs,\n });\n }\n break;\n }\n }\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n eventStream$.complete();\n });\n }\n}\n\nfunction getRunIdFromStream(stream: AssistantStream): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n let runIdGetter = (event: AssistantStreamEvent) => {\n if (event.event === \"thread.run.created\") {\n const runId = event.data.id;\n stream.off(\"event\", runIdGetter);\n resolve(runId);\n }\n };\n stream.on(\"event\", runIdGetter);\n });\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ require("reflect-metadata");
|
|
|
2
2
|
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
|
|
3
3
|
let _copilotkit_shared = require("@copilotkit/shared");
|
|
4
4
|
|
|
5
|
-
//#region src/service-adapters/openai/utils.ts
|
|
5
|
+
//#region src/v1-deprecated/service-adapters/openai/utils.ts
|
|
6
6
|
/**
|
|
7
7
|
* Type guard: checks whether the OpenAI client has the v4-era `beta.chat`
|
|
8
8
|
* namespace. Returns `false` for v5+ clients where `beta.chat` was removed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","names":[],"sources":["../../../src/service-adapters/openai/utils.ts"],"sourcesContent":["import type OpenAI from \"openai\";\nimport type { Message } from \"../../graphql/types/converted\";\nimport type { ActionInput } from \"../../graphql/inputs/action.input\";\nimport type {\n ChatCompletionAssistantMessageParam,\n ChatCompletionMessageParam,\n ChatCompletionSystemMessageParam,\n ChatCompletionTool,\n ChatCompletionUserMessageParam,\n ChatCompletionDeveloperMessageParam,\n} from \"openai/resources/chat\";\nimport { parseJson } from \"@copilotkit/shared\";\n\n/**\n * OpenAI v4 exposes streaming completions under `beta.chat.completions`.\n * v5 removed `beta.chat` and promoted streaming to `chat.completions`.\n * These types model the v4-specific shape so we can detect and access\n * the beta namespace safely without `as any`.\n */\ntype StreamingChatCompletions = OpenAI[\"beta\"][\"chat\"][\"completions\"];\n\ninterface OpenAIV4BetaChat {\n chat: {\n completions: StreamingChatCompletions;\n };\n}\n\ntype OpenAIV4Beta = OpenAI[\"beta\"] & OpenAIV4BetaChat;\n\n/**\n * Type guard: checks whether the OpenAI client has the v4-era `beta.chat`\n * namespace. Returns `false` for v5+ clients where `beta.chat` was removed.\n */\nfunction hasV4BetaChat(beta: OpenAI[\"beta\"] | undefined): beta is OpenAIV4Beta {\n return beta != null && \"chat\" in beta && (beta as OpenAIV4Beta).chat != null;\n}\n\n/**\n * Detects whether the provided OpenAI client is v5+ by checking for the\n * removal of the `beta.chat` namespace (which was promoted to `chat` in v5).\n */\nexport function isOpenAIV5(openai: OpenAI): boolean {\n return !hasV4BetaChat(openai.beta);\n}\n\n/**\n * Returns the chat completions object that supports `.stream()`.\n * In v4 this lives under `openai.beta.chat.completions`;\n * in v5 it was promoted to `openai.chat.completions`.\n */\nexport function getChatCompletionsForStreaming(\n openai: OpenAI,\n): StreamingChatCompletions {\n if (hasV4BetaChat(openai.beta)) {\n return openai.beta.chat.completions;\n }\n // v5+ runtime: streaming was promoted to `chat.completions`, which the\n // installed v4 type definitions don't model — same boundary between two\n // incompatible SDK type surfaces as retrieveThreadRun below.\n return openai.chat.completions as unknown as StreamingChatCompletions;\n}\n\n/**\n * Retrieves a thread run, handling the v4→v5 API signature change.\n * v4: retrieve(threadId, runId)\n * v5: retrieve(runId, { thread_id: threadId })\n */\nexport async function retrieveThreadRun(\n openai: OpenAI,\n threadId: string,\n runId: string,\n): Promise<OpenAI.Beta.Threads.Runs.Run> {\n if (isOpenAIV5(openai)) {\n // v5 switched to named path params. The type definitions from whichever\n // SDK version is installed won't match both signatures, so we call through\n // a generic function reference. This is the one unavoidable boundary\n // between two incompatible SDK type surfaces.\n const retrieve = openai.beta.threads.runs.retrieve as {\n (...args: unknown[]): Promise<OpenAI.Beta.Threads.Runs.Run>;\n };\n return retrieve(runId, { thread_id: threadId });\n }\n return openai.beta.threads.runs.retrieve(threadId, runId);\n}\n\n/**\n * Submits tool outputs as a stream, handling the v4→v5 API signature change.\n * v4: submitToolOutputsStream(threadId, runId, body)\n * v5: submitToolOutputsStream(runId, { thread_id, ...body })\n */\nexport function submitToolOutputsStream(\n openai: OpenAI,\n threadId: string,\n runId: string,\n body: {\n tool_outputs: Array<{ tool_call_id: string; output: string }>;\n parallel_tool_calls?: false;\n },\n) {\n if (isOpenAIV5(openai)) {\n // Same boundary as retrieveThreadRun — v5 uses named path params.\n const submit = openai.beta.threads.runs.submitToolOutputsStream as {\n (\n ...args: unknown[]\n ): ReturnType<typeof openai.beta.threads.runs.submitToolOutputsStream>;\n };\n return submit(runId, { thread_id: threadId, ...body });\n }\n return openai.beta.threads.runs.submitToolOutputsStream(\n threadId,\n runId,\n body,\n );\n}\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= maxTokensForOpenAIModel(model);\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n return result;\n}\n\nexport function maxTokensForOpenAIModel(model: string): number {\n return maxTokensByModel[model] || DEFAULT_MAX_TOKENS;\n}\n\nconst DEFAULT_MAX_TOKENS = 128000;\n\nconst maxTokensByModel: { [key: string]: number } = {\n // o1\n o1: 200000,\n \"o1-2024-12-17\": 200000,\n \"o1-mini\": 128000,\n \"o1-mini-2024-09-12\": 128000,\n \"o1-preview\": 128000,\n \"o1-preview-2024-09-12\": 128000,\n // o3-mini\n \"o3-mini\": 200000,\n \"o3-mini-2025-01-31\": 200000,\n // GPT-4\n \"gpt-4o\": 128000,\n \"chatgpt-4o-latest\": 128000,\n \"gpt-4o-2024-08-06\": 128000,\n \"gpt-4o-2024-05-13\": 128000,\n \"gpt-4o-mini\": 128000,\n \"gpt-4o-mini-2024-07-18\": 128000,\n \"gpt-4-turbo\": 128000,\n \"gpt-4-turbo-2024-04-09\": 128000,\n \"gpt-4-0125-preview\": 128000,\n \"gpt-4-turbo-preview\": 128000,\n \"gpt-4-1106-preview\": 128000,\n \"gpt-4-vision-preview\": 128000,\n \"gpt-4-1106-vision-preview\": 128000,\n \"gpt-4-32k\": 32768,\n \"gpt-4-32k-0613\": 32768,\n \"gpt-4-32k-0314\": 32768,\n \"gpt-4\": 8192,\n \"gpt-4-0613\": 8192,\n \"gpt-4-0314\": 8192,\n\n // GPT-3.5\n \"gpt-3.5-turbo-0125\": 16385,\n \"gpt-3.5-turbo\": 16385,\n \"gpt-3.5-turbo-1106\": 16385,\n \"gpt-3.5-turbo-instruct\": 4096,\n \"gpt-3.5-turbo-16k\": 16385,\n \"gpt-3.5-turbo-0613\": 4096,\n \"gpt-3.5-turbo-16k-0613\": 16385,\n \"gpt-3.5-turbo-0301\": 4097,\n};\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, message.content || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToOpenAITool(\n action: ActionInput,\n): ChatCompletionTool {\n return {\n type: \"function\",\n function: {\n name: action.name,\n description: action.description,\n parameters: parseJson(action.jsonSchema, {}),\n },\n };\n}\n\ntype UsedMessageParams =\n | ChatCompletionUserMessageParam\n | ChatCompletionAssistantMessageParam\n | ChatCompletionDeveloperMessageParam\n | ChatCompletionSystemMessageParam;\nexport function convertMessageToOpenAIMessage(\n message: Message,\n options?: { keepSystemRole: boolean },\n): ChatCompletionMessageParam {\n const { keepSystemRole } = options || { keepSystemRole: false };\n if (message.isTextMessage()) {\n let role = message.role as UsedMessageParams[\"role\"];\n if (message.role === \"system\" && !keepSystemRole) {\n role = \"developer\";\n }\n return {\n role,\n content: message.content,\n } satisfies UsedMessageParams;\n } else if (message.isImageMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"image_url\",\n image_url: {\n url: `data:image/${message.format};base64,${message.bytes}`,\n },\n },\n ],\n } satisfies UsedMessageParams;\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n tool_calls: [\n {\n id: message.id,\n type: \"function\",\n function: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n },\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"tool\",\n content: message.result,\n tool_call_id: message.actionExecutionId,\n };\n }\n}\n\nexport function convertSystemMessageToAssistantAPI(\n message: ChatCompletionMessageParam,\n) {\n return {\n ...message,\n ...([\"system\", \"developer\"].includes(message.role) && {\n role: \"assistant\",\n content: \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n }),\n };\n}\n"],"mappings":";;;;;;;;;AAiCA,SAAS,cAAc,MAAwD;AAC7E,QAAO,QAAQ,QAAQ,UAAU,QAAS,KAAsB,QAAQ;;;;;;AAO1E,SAAgB,WAAW,QAAyB;AAClD,QAAO,CAAC,cAAc,OAAO,KAAK;;;;;;;AAQpC,SAAgB,+BACd,QAC0B;AAC1B,KAAI,cAAc,OAAO,KAAK,CAC5B,QAAO,OAAO,KAAK,KAAK;AAK1B,QAAO,OAAO,KAAK;;;;;;;AAQrB,eAAsB,kBACpB,QACA,UACA,OACuC;AACvC,KAAI,WAAW,OAAO,EAAE;EAKtB,MAAM,WAAW,OAAO,KAAK,QAAQ,KAAK;AAG1C,SAAO,SAAS,OAAO,EAAE,WAAW,UAAU,CAAC;;AAEjD,QAAO,OAAO,KAAK,QAAQ,KAAK,SAAS,UAAU,MAAM;;;;;;;AAQ3D,SAAgB,wBACd,QACA,UACA,OACA,MAIA;AACA,KAAI,WAAW,OAAO,EAAE;EAEtB,MAAM,SAAS,OAAO,KAAK,QAAQ,KAAK;AAKxC,SAAO,OAAO,OAAO;GAAE,WAAW;GAAU,GAAG;GAAM,CAAC;;AAExD,QAAO,OAAO,KAAK,QAAQ,KAAK,wBAC9B,UACA,OACA,KACD;;AAGH,SAAgB,0BACd,UACA,OACA,OACA,WACO;AACP,eAAc,wBAAwB,MAAM;CAE5C,MAAM,SAAgB,EAAE;CACxB,MAAM,iBAAiB,iBAAiB,OAAO,MAAM;AACrD,KAAI,iBAAiB,UACnB,OAAM,IAAI,MACR,4CAA4C,eAAe,KAAK,YACjE;AAEH,cAAa;AAEb,MAAK,MAAM,WAAW,SACpB,KAAI,CAAC,UAAU,YAAY,CAAC,SAAS,QAAQ,KAAK,EAAE;EAClD,MAAM,YAAY,mBAAmB,OAAO,QAAQ;AACpD,eAAa;AAEb,MAAI,YAAY,EACd,OAAM,IAAI,MAAM,wCAAwC;;CAK9D,IAAI,SAAkB;CAEtB,MAAM,mBAAmB,CAAC,GAAG,SAAS,CAAC,YAAY;AACnD,MAAK,MAAM,WAAW,kBAAkB;AACtC,MAAI,CAAC,UAAU,YAAY,CAAC,SAAS,QAAQ,KAAK,EAAE;AAClD,UAAO,QAAQ,QAAQ;AACvB;aACS,OACT;EAEF,IAAI,YAAY,mBAAmB,OAAO,QAAQ;AAClD,MAAI,YAAY,WAAW;AACzB,YAAS;AACT;;AAEF,SAAO,QAAQ,QAAQ;AACvB,eAAa;;AAGf,QAAO;;AAGT,SAAgB,wBAAwB,OAAuB;AAC7D,QAAO,iBAAiB,UAAU;;AAGpC,MAAM,qBAAqB;AAE3B,MAAM,mBAA8C;CAElD,IAAI;CACJ,iBAAiB;CACjB,WAAW;CACX,sBAAsB;CACtB,cAAc;CACd,yBAAyB;CAEzB,WAAW;CACX,sBAAsB;CAEtB,UAAU;CACV,qBAAqB;CACrB,qBAAqB;CACrB,qBAAqB;CACrB,eAAe;CACf,0BAA0B;CAC1B,eAAe;CACf,0BAA0B;CAC1B,sBAAsB;CACtB,uBAAuB;CACvB,sBAAsB;CACtB,wBAAwB;CACxB,6BAA6B;CAC7B,aAAa;CACb,kBAAkB;CAClB,kBAAkB;CAClB,SAAS;CACT,cAAc;CACd,cAAc;CAGd,sBAAsB;CACtB,iBAAiB;CACjB,sBAAsB;CACtB,0BAA0B;CAC1B,qBAAqB;CACrB,sBAAsB;CACtB,0BAA0B;CAC1B,sBAAsB;CACvB;AAED,SAAS,iBAAiB,OAAe,OAAsB;AAC7D,KAAI,MAAM,WAAW,EACnB,QAAO;AAGT,QAAO,YAAY,OADN,KAAK,UAAU,MAAM,CACH;;AAGjC,SAAS,mBAAmB,OAAe,SAAsB;AAC/D,QAAO,YAAY,OAAO,QAAQ,WAAW,GAAG;;AAGlD,SAAS,YAAY,OAAe,MAAsB;AACxD,QAAO,KAAK,SAAS;;AAGvB,SAAgB,+BACd,QACoB;AACpB,QAAO;EACL,MAAM;EACN,UAAU;GACR,MAAM,OAAO;GACb,aAAa,OAAO;GACpB,8CAAsB,OAAO,YAAY,EAAE,CAAC;GAC7C;EACF;;AAQH,SAAgB,8BACd,SACA,SAC4B;CAC5B,MAAM,EAAE,mBAAmB,WAAW,EAAE,gBAAgB,OAAO;AAC/D,KAAI,QAAQ,eAAe,EAAE;EAC3B,IAAI,OAAO,QAAQ;AACnB,MAAI,QAAQ,SAAS,YAAY,CAAC,eAChC,QAAO;AAET,SAAO;GACL;GACA,SAAS,QAAQ;GAClB;YACQ,QAAQ,gBAAgB,CACjC,QAAO;EACL,MAAM;EACN,SAAS,CACP;GACE,MAAM;GACN,WAAW,EACT,KAAK,cAAc,QAAQ,OAAO,UAAU,QAAQ,SACrD;GACF,CACF;EACF;UACQ,QAAQ,0BAA0B,CAC3C,QAAO;EACL,MAAM;EACN,YAAY,CACV;GACE,IAAI,QAAQ;GACZ,MAAM;GACN,UAAU;IACR,MAAM,QAAQ;IACd,WAAW,KAAK,UAAU,QAAQ,UAAU;IAC7C;GACF,CACF;EACF;UACQ,QAAQ,iBAAiB,CAClC,QAAO;EACL,MAAM;EACN,SAAS,QAAQ;EACjB,cAAc,QAAQ;EACvB;;AAIL,SAAgB,mCACd,SACA;AACA,QAAO;EACL,GAAG;EACH,GAAI,CAAC,UAAU,YAAY,CAAC,SAAS,QAAQ,KAAK,IAAI;GACpD,MAAM;GACN,SAAS,gDAAgD,QAAQ;GAClE;EACF"}
|
|
1
|
+
{"version":3,"file":"utils.cjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/openai/utils.ts"],"sourcesContent":["import type OpenAI from \"openai\";\nimport type { Message } from \"../../graphql/types/converted\";\nimport type { ActionInput } from \"../../graphql/inputs/action.input\";\nimport type {\n ChatCompletionAssistantMessageParam,\n ChatCompletionMessageParam,\n ChatCompletionSystemMessageParam,\n ChatCompletionTool,\n ChatCompletionUserMessageParam,\n ChatCompletionDeveloperMessageParam,\n} from \"openai/resources/chat\";\nimport { parseJson } from \"@copilotkit/shared\";\n\n/**\n * OpenAI v4 exposes streaming completions under `beta.chat.completions`.\n * v5 removed `beta.chat` and promoted streaming to `chat.completions`.\n * These types model the v4-specific shape so we can detect and access\n * the beta namespace safely without `as any`.\n */\ntype StreamingChatCompletions = OpenAI[\"beta\"][\"chat\"][\"completions\"];\n\ninterface OpenAIV4BetaChat {\n chat: {\n completions: StreamingChatCompletions;\n };\n}\n\ntype OpenAIV4Beta = OpenAI[\"beta\"] & OpenAIV4BetaChat;\n\n/**\n * Type guard: checks whether the OpenAI client has the v4-era `beta.chat`\n * namespace. Returns `false` for v5+ clients where `beta.chat` was removed.\n */\nfunction hasV4BetaChat(beta: OpenAI[\"beta\"] | undefined): beta is OpenAIV4Beta {\n return beta != null && \"chat\" in beta && (beta as OpenAIV4Beta).chat != null;\n}\n\n/**\n * Detects whether the provided OpenAI client is v5+ by checking for the\n * removal of the `beta.chat` namespace (which was promoted to `chat` in v5).\n */\nexport function isOpenAIV5(openai: OpenAI): boolean {\n return !hasV4BetaChat(openai.beta);\n}\n\n/**\n * Returns the chat completions object that supports `.stream()`.\n * In v4 this lives under `openai.beta.chat.completions`;\n * in v5 it was promoted to `openai.chat.completions`.\n */\nexport function getChatCompletionsForStreaming(\n openai: OpenAI,\n): StreamingChatCompletions {\n if (hasV4BetaChat(openai.beta)) {\n return openai.beta.chat.completions;\n }\n // v5+ runtime: streaming was promoted to `chat.completions`, which the\n // installed v4 type definitions don't model — same boundary between two\n // incompatible SDK type surfaces as retrieveThreadRun below.\n return openai.chat.completions as unknown as StreamingChatCompletions;\n}\n\n/**\n * Retrieves a thread run, handling the v4→v5 API signature change.\n * v4: retrieve(threadId, runId)\n * v5: retrieve(runId, { thread_id: threadId })\n */\nexport async function retrieveThreadRun(\n openai: OpenAI,\n threadId: string,\n runId: string,\n): Promise<OpenAI.Beta.Threads.Runs.Run> {\n if (isOpenAIV5(openai)) {\n // v5 switched to named path params. The type definitions from whichever\n // SDK version is installed won't match both signatures, so we call through\n // a generic function reference. This is the one unavoidable boundary\n // between two incompatible SDK type surfaces.\n const retrieve = openai.beta.threads.runs.retrieve as {\n (...args: unknown[]): Promise<OpenAI.Beta.Threads.Runs.Run>;\n };\n return retrieve(runId, { thread_id: threadId });\n }\n return openai.beta.threads.runs.retrieve(threadId, runId);\n}\n\n/**\n * Submits tool outputs as a stream, handling the v4→v5 API signature change.\n * v4: submitToolOutputsStream(threadId, runId, body)\n * v5: submitToolOutputsStream(runId, { thread_id, ...body })\n */\nexport function submitToolOutputsStream(\n openai: OpenAI,\n threadId: string,\n runId: string,\n body: {\n tool_outputs: Array<{ tool_call_id: string; output: string }>;\n parallel_tool_calls?: false;\n },\n) {\n if (isOpenAIV5(openai)) {\n // Same boundary as retrieveThreadRun — v5 uses named path params.\n const submit = openai.beta.threads.runs.submitToolOutputsStream as {\n (\n ...args: unknown[]\n ): ReturnType<typeof openai.beta.threads.runs.submitToolOutputsStream>;\n };\n return submit(runId, { thread_id: threadId, ...body });\n }\n return openai.beta.threads.runs.submitToolOutputsStream(\n threadId,\n runId,\n body,\n );\n}\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= maxTokensForOpenAIModel(model);\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n return result;\n}\n\nexport function maxTokensForOpenAIModel(model: string): number {\n return maxTokensByModel[model] || DEFAULT_MAX_TOKENS;\n}\n\nconst DEFAULT_MAX_TOKENS = 128000;\n\nconst maxTokensByModel: { [key: string]: number } = {\n // o1\n o1: 200000,\n \"o1-2024-12-17\": 200000,\n \"o1-mini\": 128000,\n \"o1-mini-2024-09-12\": 128000,\n \"o1-preview\": 128000,\n \"o1-preview-2024-09-12\": 128000,\n // o3-mini\n \"o3-mini\": 200000,\n \"o3-mini-2025-01-31\": 200000,\n // GPT-4\n \"gpt-4o\": 128000,\n \"chatgpt-4o-latest\": 128000,\n \"gpt-4o-2024-08-06\": 128000,\n \"gpt-4o-2024-05-13\": 128000,\n \"gpt-4o-mini\": 128000,\n \"gpt-4o-mini-2024-07-18\": 128000,\n \"gpt-4-turbo\": 128000,\n \"gpt-4-turbo-2024-04-09\": 128000,\n \"gpt-4-0125-preview\": 128000,\n \"gpt-4-turbo-preview\": 128000,\n \"gpt-4-1106-preview\": 128000,\n \"gpt-4-vision-preview\": 128000,\n \"gpt-4-1106-vision-preview\": 128000,\n \"gpt-4-32k\": 32768,\n \"gpt-4-32k-0613\": 32768,\n \"gpt-4-32k-0314\": 32768,\n \"gpt-4\": 8192,\n \"gpt-4-0613\": 8192,\n \"gpt-4-0314\": 8192,\n\n // GPT-3.5\n \"gpt-3.5-turbo-0125\": 16385,\n \"gpt-3.5-turbo\": 16385,\n \"gpt-3.5-turbo-1106\": 16385,\n \"gpt-3.5-turbo-instruct\": 4096,\n \"gpt-3.5-turbo-16k\": 16385,\n \"gpt-3.5-turbo-0613\": 4096,\n \"gpt-3.5-turbo-16k-0613\": 16385,\n \"gpt-3.5-turbo-0301\": 4097,\n};\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, message.content || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToOpenAITool(\n action: ActionInput,\n): ChatCompletionTool {\n return {\n type: \"function\",\n function: {\n name: action.name,\n description: action.description,\n parameters: parseJson(action.jsonSchema, {}),\n },\n };\n}\n\ntype UsedMessageParams =\n | ChatCompletionUserMessageParam\n | ChatCompletionAssistantMessageParam\n | ChatCompletionDeveloperMessageParam\n | ChatCompletionSystemMessageParam;\nexport function convertMessageToOpenAIMessage(\n message: Message,\n options?: { keepSystemRole: boolean },\n): ChatCompletionMessageParam {\n const { keepSystemRole } = options || { keepSystemRole: false };\n if (message.isTextMessage()) {\n let role = message.role as UsedMessageParams[\"role\"];\n if (message.role === \"system\" && !keepSystemRole) {\n role = \"developer\";\n }\n return {\n role,\n content: message.content,\n } satisfies UsedMessageParams;\n } else if (message.isImageMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"image_url\",\n image_url: {\n url: `data:image/${message.format};base64,${message.bytes}`,\n },\n },\n ],\n } satisfies UsedMessageParams;\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n tool_calls: [\n {\n id: message.id,\n type: \"function\",\n function: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n },\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"tool\",\n content: message.result,\n tool_call_id: message.actionExecutionId,\n };\n }\n}\n\nexport function convertSystemMessageToAssistantAPI(\n message: ChatCompletionMessageParam,\n) {\n return {\n ...message,\n ...([\"system\", \"developer\"].includes(message.role) && {\n role: \"assistant\",\n content: \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n }),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { parseJson } from "@copilotkit/shared";
|
|
3
3
|
|
|
4
|
-
//#region src/service-adapters/openai/utils.ts
|
|
4
|
+
//#region src/v1-deprecated/service-adapters/openai/utils.ts
|
|
5
5
|
/**
|
|
6
6
|
* Type guard: checks whether the OpenAI client has the v4-era `beta.chat`
|
|
7
7
|
* namespace. Returns `false` for v5+ clients where `beta.chat` was removed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/service-adapters/openai/utils.ts"],"sourcesContent":["import type OpenAI from \"openai\";\nimport type { Message } from \"../../graphql/types/converted\";\nimport type { ActionInput } from \"../../graphql/inputs/action.input\";\nimport type {\n ChatCompletionAssistantMessageParam,\n ChatCompletionMessageParam,\n ChatCompletionSystemMessageParam,\n ChatCompletionTool,\n ChatCompletionUserMessageParam,\n ChatCompletionDeveloperMessageParam,\n} from \"openai/resources/chat\";\nimport { parseJson } from \"@copilotkit/shared\";\n\n/**\n * OpenAI v4 exposes streaming completions under `beta.chat.completions`.\n * v5 removed `beta.chat` and promoted streaming to `chat.completions`.\n * These types model the v4-specific shape so we can detect and access\n * the beta namespace safely without `as any`.\n */\ntype StreamingChatCompletions = OpenAI[\"beta\"][\"chat\"][\"completions\"];\n\ninterface OpenAIV4BetaChat {\n chat: {\n completions: StreamingChatCompletions;\n };\n}\n\ntype OpenAIV4Beta = OpenAI[\"beta\"] & OpenAIV4BetaChat;\n\n/**\n * Type guard: checks whether the OpenAI client has the v4-era `beta.chat`\n * namespace. Returns `false` for v5+ clients where `beta.chat` was removed.\n */\nfunction hasV4BetaChat(beta: OpenAI[\"beta\"] | undefined): beta is OpenAIV4Beta {\n return beta != null && \"chat\" in beta && (beta as OpenAIV4Beta).chat != null;\n}\n\n/**\n * Detects whether the provided OpenAI client is v5+ by checking for the\n * removal of the `beta.chat` namespace (which was promoted to `chat` in v5).\n */\nexport function isOpenAIV5(openai: OpenAI): boolean {\n return !hasV4BetaChat(openai.beta);\n}\n\n/**\n * Returns the chat completions object that supports `.stream()`.\n * In v4 this lives under `openai.beta.chat.completions`;\n * in v5 it was promoted to `openai.chat.completions`.\n */\nexport function getChatCompletionsForStreaming(\n openai: OpenAI,\n): StreamingChatCompletions {\n if (hasV4BetaChat(openai.beta)) {\n return openai.beta.chat.completions;\n }\n // v5+ runtime: streaming was promoted to `chat.completions`, which the\n // installed v4 type definitions don't model — same boundary between two\n // incompatible SDK type surfaces as retrieveThreadRun below.\n return openai.chat.completions as unknown as StreamingChatCompletions;\n}\n\n/**\n * Retrieves a thread run, handling the v4→v5 API signature change.\n * v4: retrieve(threadId, runId)\n * v5: retrieve(runId, { thread_id: threadId })\n */\nexport async function retrieveThreadRun(\n openai: OpenAI,\n threadId: string,\n runId: string,\n): Promise<OpenAI.Beta.Threads.Runs.Run> {\n if (isOpenAIV5(openai)) {\n // v5 switched to named path params. The type definitions from whichever\n // SDK version is installed won't match both signatures, so we call through\n // a generic function reference. This is the one unavoidable boundary\n // between two incompatible SDK type surfaces.\n const retrieve = openai.beta.threads.runs.retrieve as {\n (...args: unknown[]): Promise<OpenAI.Beta.Threads.Runs.Run>;\n };\n return retrieve(runId, { thread_id: threadId });\n }\n return openai.beta.threads.runs.retrieve(threadId, runId);\n}\n\n/**\n * Submits tool outputs as a stream, handling the v4→v5 API signature change.\n * v4: submitToolOutputsStream(threadId, runId, body)\n * v5: submitToolOutputsStream(runId, { thread_id, ...body })\n */\nexport function submitToolOutputsStream(\n openai: OpenAI,\n threadId: string,\n runId: string,\n body: {\n tool_outputs: Array<{ tool_call_id: string; output: string }>;\n parallel_tool_calls?: false;\n },\n) {\n if (isOpenAIV5(openai)) {\n // Same boundary as retrieveThreadRun — v5 uses named path params.\n const submit = openai.beta.threads.runs.submitToolOutputsStream as {\n (\n ...args: unknown[]\n ): ReturnType<typeof openai.beta.threads.runs.submitToolOutputsStream>;\n };\n return submit(runId, { thread_id: threadId, ...body });\n }\n return openai.beta.threads.runs.submitToolOutputsStream(\n threadId,\n runId,\n body,\n );\n}\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= maxTokensForOpenAIModel(model);\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n return result;\n}\n\nexport function maxTokensForOpenAIModel(model: string): number {\n return maxTokensByModel[model] || DEFAULT_MAX_TOKENS;\n}\n\nconst DEFAULT_MAX_TOKENS = 128000;\n\nconst maxTokensByModel: { [key: string]: number } = {\n // o1\n o1: 200000,\n \"o1-2024-12-17\": 200000,\n \"o1-mini\": 128000,\n \"o1-mini-2024-09-12\": 128000,\n \"o1-preview\": 128000,\n \"o1-preview-2024-09-12\": 128000,\n // o3-mini\n \"o3-mini\": 200000,\n \"o3-mini-2025-01-31\": 200000,\n // GPT-4\n \"gpt-4o\": 128000,\n \"chatgpt-4o-latest\": 128000,\n \"gpt-4o-2024-08-06\": 128000,\n \"gpt-4o-2024-05-13\": 128000,\n \"gpt-4o-mini\": 128000,\n \"gpt-4o-mini-2024-07-18\": 128000,\n \"gpt-4-turbo\": 128000,\n \"gpt-4-turbo-2024-04-09\": 128000,\n \"gpt-4-0125-preview\": 128000,\n \"gpt-4-turbo-preview\": 128000,\n \"gpt-4-1106-preview\": 128000,\n \"gpt-4-vision-preview\": 128000,\n \"gpt-4-1106-vision-preview\": 128000,\n \"gpt-4-32k\": 32768,\n \"gpt-4-32k-0613\": 32768,\n \"gpt-4-32k-0314\": 32768,\n \"gpt-4\": 8192,\n \"gpt-4-0613\": 8192,\n \"gpt-4-0314\": 8192,\n\n // GPT-3.5\n \"gpt-3.5-turbo-0125\": 16385,\n \"gpt-3.5-turbo\": 16385,\n \"gpt-3.5-turbo-1106\": 16385,\n \"gpt-3.5-turbo-instruct\": 4096,\n \"gpt-3.5-turbo-16k\": 16385,\n \"gpt-3.5-turbo-0613\": 4096,\n \"gpt-3.5-turbo-16k-0613\": 16385,\n \"gpt-3.5-turbo-0301\": 4097,\n};\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, message.content || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToOpenAITool(\n action: ActionInput,\n): ChatCompletionTool {\n return {\n type: \"function\",\n function: {\n name: action.name,\n description: action.description,\n parameters: parseJson(action.jsonSchema, {}),\n },\n };\n}\n\ntype UsedMessageParams =\n | ChatCompletionUserMessageParam\n | ChatCompletionAssistantMessageParam\n | ChatCompletionDeveloperMessageParam\n | ChatCompletionSystemMessageParam;\nexport function convertMessageToOpenAIMessage(\n message: Message,\n options?: { keepSystemRole: boolean },\n): ChatCompletionMessageParam {\n const { keepSystemRole } = options || { keepSystemRole: false };\n if (message.isTextMessage()) {\n let role = message.role as UsedMessageParams[\"role\"];\n if (message.role === \"system\" && !keepSystemRole) {\n role = \"developer\";\n }\n return {\n role,\n content: message.content,\n } satisfies UsedMessageParams;\n } else if (message.isImageMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"image_url\",\n image_url: {\n url: `data:image/${message.format};base64,${message.bytes}`,\n },\n },\n ],\n } satisfies UsedMessageParams;\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n tool_calls: [\n {\n id: message.id,\n type: \"function\",\n function: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n },\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"tool\",\n content: message.result,\n tool_call_id: message.actionExecutionId,\n };\n }\n}\n\nexport function convertSystemMessageToAssistantAPI(\n message: ChatCompletionMessageParam,\n) {\n return {\n ...message,\n ...([\"system\", \"developer\"].includes(message.role) && {\n role: \"assistant\",\n content: \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n }),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/openai/utils.ts"],"sourcesContent":["import type OpenAI from \"openai\";\nimport type { Message } from \"../../graphql/types/converted\";\nimport type { ActionInput } from \"../../graphql/inputs/action.input\";\nimport type {\n ChatCompletionAssistantMessageParam,\n ChatCompletionMessageParam,\n ChatCompletionSystemMessageParam,\n ChatCompletionTool,\n ChatCompletionUserMessageParam,\n ChatCompletionDeveloperMessageParam,\n} from \"openai/resources/chat\";\nimport { parseJson } from \"@copilotkit/shared\";\n\n/**\n * OpenAI v4 exposes streaming completions under `beta.chat.completions`.\n * v5 removed `beta.chat` and promoted streaming to `chat.completions`.\n * These types model the v4-specific shape so we can detect and access\n * the beta namespace safely without `as any`.\n */\ntype StreamingChatCompletions = OpenAI[\"beta\"][\"chat\"][\"completions\"];\n\ninterface OpenAIV4BetaChat {\n chat: {\n completions: StreamingChatCompletions;\n };\n}\n\ntype OpenAIV4Beta = OpenAI[\"beta\"] & OpenAIV4BetaChat;\n\n/**\n * Type guard: checks whether the OpenAI client has the v4-era `beta.chat`\n * namespace. Returns `false` for v5+ clients where `beta.chat` was removed.\n */\nfunction hasV4BetaChat(beta: OpenAI[\"beta\"] | undefined): beta is OpenAIV4Beta {\n return beta != null && \"chat\" in beta && (beta as OpenAIV4Beta).chat != null;\n}\n\n/**\n * Detects whether the provided OpenAI client is v5+ by checking for the\n * removal of the `beta.chat` namespace (which was promoted to `chat` in v5).\n */\nexport function isOpenAIV5(openai: OpenAI): boolean {\n return !hasV4BetaChat(openai.beta);\n}\n\n/**\n * Returns the chat completions object that supports `.stream()`.\n * In v4 this lives under `openai.beta.chat.completions`;\n * in v5 it was promoted to `openai.chat.completions`.\n */\nexport function getChatCompletionsForStreaming(\n openai: OpenAI,\n): StreamingChatCompletions {\n if (hasV4BetaChat(openai.beta)) {\n return openai.beta.chat.completions;\n }\n // v5+ runtime: streaming was promoted to `chat.completions`, which the\n // installed v4 type definitions don't model — same boundary between two\n // incompatible SDK type surfaces as retrieveThreadRun below.\n return openai.chat.completions as unknown as StreamingChatCompletions;\n}\n\n/**\n * Retrieves a thread run, handling the v4→v5 API signature change.\n * v4: retrieve(threadId, runId)\n * v5: retrieve(runId, { thread_id: threadId })\n */\nexport async function retrieveThreadRun(\n openai: OpenAI,\n threadId: string,\n runId: string,\n): Promise<OpenAI.Beta.Threads.Runs.Run> {\n if (isOpenAIV5(openai)) {\n // v5 switched to named path params. The type definitions from whichever\n // SDK version is installed won't match both signatures, so we call through\n // a generic function reference. This is the one unavoidable boundary\n // between two incompatible SDK type surfaces.\n const retrieve = openai.beta.threads.runs.retrieve as {\n (...args: unknown[]): Promise<OpenAI.Beta.Threads.Runs.Run>;\n };\n return retrieve(runId, { thread_id: threadId });\n }\n return openai.beta.threads.runs.retrieve(threadId, runId);\n}\n\n/**\n * Submits tool outputs as a stream, handling the v4→v5 API signature change.\n * v4: submitToolOutputsStream(threadId, runId, body)\n * v5: submitToolOutputsStream(runId, { thread_id, ...body })\n */\nexport function submitToolOutputsStream(\n openai: OpenAI,\n threadId: string,\n runId: string,\n body: {\n tool_outputs: Array<{ tool_call_id: string; output: string }>;\n parallel_tool_calls?: false;\n },\n) {\n if (isOpenAIV5(openai)) {\n // Same boundary as retrieveThreadRun — v5 uses named path params.\n const submit = openai.beta.threads.runs.submitToolOutputsStream as {\n (\n ...args: unknown[]\n ): ReturnType<typeof openai.beta.threads.runs.submitToolOutputsStream>;\n };\n return submit(runId, { thread_id: threadId, ...body });\n }\n return openai.beta.threads.runs.submitToolOutputsStream(\n threadId,\n runId,\n body,\n );\n}\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= maxTokensForOpenAIModel(model);\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if ([\"system\", \"developer\"].includes(message.role)) {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n return result;\n}\n\nexport function maxTokensForOpenAIModel(model: string): number {\n return maxTokensByModel[model] || DEFAULT_MAX_TOKENS;\n}\n\nconst DEFAULT_MAX_TOKENS = 128000;\n\nconst maxTokensByModel: { [key: string]: number } = {\n // o1\n o1: 200000,\n \"o1-2024-12-17\": 200000,\n \"o1-mini\": 128000,\n \"o1-mini-2024-09-12\": 128000,\n \"o1-preview\": 128000,\n \"o1-preview-2024-09-12\": 128000,\n // o3-mini\n \"o3-mini\": 200000,\n \"o3-mini-2025-01-31\": 200000,\n // GPT-4\n \"gpt-4o\": 128000,\n \"chatgpt-4o-latest\": 128000,\n \"gpt-4o-2024-08-06\": 128000,\n \"gpt-4o-2024-05-13\": 128000,\n \"gpt-4o-mini\": 128000,\n \"gpt-4o-mini-2024-07-18\": 128000,\n \"gpt-4-turbo\": 128000,\n \"gpt-4-turbo-2024-04-09\": 128000,\n \"gpt-4-0125-preview\": 128000,\n \"gpt-4-turbo-preview\": 128000,\n \"gpt-4-1106-preview\": 128000,\n \"gpt-4-vision-preview\": 128000,\n \"gpt-4-1106-vision-preview\": 128000,\n \"gpt-4-32k\": 32768,\n \"gpt-4-32k-0613\": 32768,\n \"gpt-4-32k-0314\": 32768,\n \"gpt-4\": 8192,\n \"gpt-4-0613\": 8192,\n \"gpt-4-0314\": 8192,\n\n // GPT-3.5\n \"gpt-3.5-turbo-0125\": 16385,\n \"gpt-3.5-turbo\": 16385,\n \"gpt-3.5-turbo-1106\": 16385,\n \"gpt-3.5-turbo-instruct\": 4096,\n \"gpt-3.5-turbo-16k\": 16385,\n \"gpt-3.5-turbo-0613\": 4096,\n \"gpt-3.5-turbo-16k-0613\": 16385,\n \"gpt-3.5-turbo-0301\": 4097,\n};\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, message.content || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToOpenAITool(\n action: ActionInput,\n): ChatCompletionTool {\n return {\n type: \"function\",\n function: {\n name: action.name,\n description: action.description,\n parameters: parseJson(action.jsonSchema, {}),\n },\n };\n}\n\ntype UsedMessageParams =\n | ChatCompletionUserMessageParam\n | ChatCompletionAssistantMessageParam\n | ChatCompletionDeveloperMessageParam\n | ChatCompletionSystemMessageParam;\nexport function convertMessageToOpenAIMessage(\n message: Message,\n options?: { keepSystemRole: boolean },\n): ChatCompletionMessageParam {\n const { keepSystemRole } = options || { keepSystemRole: false };\n if (message.isTextMessage()) {\n let role = message.role as UsedMessageParams[\"role\"];\n if (message.role === \"system\" && !keepSystemRole) {\n role = \"developer\";\n }\n return {\n role,\n content: message.content,\n } satisfies UsedMessageParams;\n } else if (message.isImageMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"image_url\",\n image_url: {\n url: `data:image/${message.format};base64,${message.bytes}`,\n },\n },\n ],\n } satisfies UsedMessageParams;\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n tool_calls: [\n {\n id: message.id,\n type: \"function\",\n function: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n },\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"tool\",\n content: message.result,\n tool_call_id: message.actionExecutionId,\n };\n }\n}\n\nexport function convertSystemMessageToAssistantAPI(\n message: ChatCompletionMessageParam,\n) {\n return {\n ...message,\n ...([\"system\", \"developer\"].includes(message.role) && {\n role: \"assistant\",\n content: \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n }),\n };\n}\n"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { AgentSessionInput } from "../graphql/inputs/agent-session.input.cjs";
|
|
|
9
9
|
import { AgentStateInput } from "../graphql/inputs/agent-state.input.cjs";
|
|
10
10
|
import { LanguageModel } from "ai";
|
|
11
11
|
|
|
12
|
-
//#region src/service-adapters/service-adapter.d.ts
|
|
12
|
+
//#region src/v1-deprecated/service-adapters/service-adapter.d.ts
|
|
13
13
|
interface CopilotRuntimeChatCompletionRequest {
|
|
14
14
|
eventSource: RuntimeEventSource;
|
|
15
15
|
messages: Message[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-adapter.d.cts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"service-adapter.d.cts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/service-adapter.ts"],"mappings":";;;;;;;;;;;;UAgDiB,mCAAA;EACf,WAAA,EAAa,kBAAA;EACb,QAAA,EAAU,OAAA;EACV,OAAA,EAAS,WAAA;EACT,KAAA;EACA,QAAA;EACA,KAAA;EACA,mBAAA,GAAsB,wBAAA;EACtB,UAAA,GAAa,eAAA;EACb,YAAA,GAAe,iBAAA;EACf,WAAA,GAAc,eAAA;AAAA;AAAA,UAGC,oCAAA;EACf,QAAA;EACA,KAAA;EACA,UAAA,GAAa,kBAAA;AAAA;AAAA,UAGE,qBAAA;EACf,QAAA;EACA,KAAA;EACA,OAAA,CACE,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;EACX,IAAA;EAjBa;;;;;;EAyBb,gBAAA,KAAqB,aAAA;AAAA"}
|
|
@@ -9,7 +9,7 @@ import { AgentSessionInput } from "../graphql/inputs/agent-session.input.mjs";
|
|
|
9
9
|
import { AgentStateInput } from "../graphql/inputs/agent-state.input.mjs";
|
|
10
10
|
import { LanguageModel } from "ai";
|
|
11
11
|
|
|
12
|
-
//#region src/service-adapters/service-adapter.d.ts
|
|
12
|
+
//#region src/v1-deprecated/service-adapters/service-adapter.d.ts
|
|
13
13
|
interface CopilotRuntimeChatCompletionRequest {
|
|
14
14
|
eventSource: RuntimeEventSource;
|
|
15
15
|
messages: Message[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-adapter.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"service-adapter.d.mts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/service-adapter.ts"],"mappings":";;;;;;;;;;;;UAgDiB,mCAAA;EACf,WAAA,EAAa,kBAAA;EACb,QAAA,EAAU,OAAA;EACV,OAAA,EAAS,WAAA;EACT,KAAA;EACA,QAAA;EACA,KAAA;EACA,mBAAA,GAAsB,wBAAA;EACtB,UAAA,GAAa,eAAA;EACb,YAAA,GAAe,iBAAA;EACf,WAAA,GAAc,eAAA;AAAA;AAAA,UAGC,oCAAA;EACf,QAAA;EACA,KAAA;EACA,UAAA,GAAa,kBAAA;AAAA;AAAA,UAGE,qBAAA;EACf,QAAA;EACA,KAAA;EACA,OAAA,CACE,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;EACX,IAAA;EAjBa;;;;;;EAyBb,gBAAA,KAAqB,aAAA;AAAA"}
|
|
@@ -2,7 +2,7 @@ require("reflect-metadata");
|
|
|
2
2
|
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
|
|
3
3
|
let _copilotkit_shared = require("@copilotkit/shared");
|
|
4
4
|
|
|
5
|
-
//#region src/service-adapters/shared/error-utils.ts
|
|
5
|
+
//#region src/v1-deprecated/service-adapters/shared/error-utils.ts
|
|
6
6
|
/**
|
|
7
7
|
* Converts service adapter errors to structured CopilotKitError format using HTTP status codes.
|
|
8
8
|
* This provides consistent error classification across all service adapters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-utils.cjs","names":["CopilotKitLowLevelError","CopilotKitErrorCode"],"sources":["
|
|
1
|
+
{"version":3,"file":"error-utils.cjs","names":["CopilotKitLowLevelError","CopilotKitErrorCode"],"sources":["../../../../src/v1-deprecated/service-adapters/shared/error-utils.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — convertServiceAdapterError:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\nimport {\n CopilotKitLowLevelError,\n CopilotKitErrorCode,\n} from \"@copilotkit/shared\";\n\n/**\n * Converts service adapter errors to structured CopilotKitError format using HTTP status codes.\n * This provides consistent error classification across all service adapters.\n */\nexport function convertServiceAdapterError(\n error: any,\n adapterName: string,\n): CopilotKitLowLevelError {\n const errorName = error?.constructor?.name || error.name;\n const errorMessage = error?.message || String(error);\n const statusCode = error.status || error.statusCode || error.response?.status;\n const responseData = error.error || error.response?.data || error.data;\n\n // Create the base error with the constructor signature\n const structuredError = new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(errorMessage),\n url: `${adapterName} service adapter`,\n message: `${adapterName} API error: ${errorMessage}`,\n });\n\n // Add additional properties after construction\n if (statusCode) {\n (structuredError as any).statusCode = statusCode;\n }\n if (responseData) {\n (structuredError as any).responseData = responseData;\n }\n if (errorName) {\n (structuredError as any).originalErrorType = errorName;\n }\n\n // Classify error based on HTTP status codes (reliable and provider-agnostic)\n let newCode: CopilotKitErrorCode;\n\n if (statusCode === 401) {\n // 401 = Authentication/API key issues\n newCode = CopilotKitErrorCode.AUTHENTICATION_ERROR;\n } else if (statusCode >= 400 && statusCode < 500) {\n // 4xx = Client errors (bad request, invalid params, etc.) - these are configuration issues\n newCode = CopilotKitErrorCode.CONFIGURATION_ERROR;\n } else if (statusCode >= 500) {\n // 5xx = Server errors - keep as NETWORK_ERROR since it's infrastructure related\n newCode = CopilotKitErrorCode.NETWORK_ERROR;\n } else if (statusCode) {\n // Any other HTTP status with an error - likely configuration\n newCode = CopilotKitErrorCode.CONFIGURATION_ERROR;\n } else {\n // No status code - likely a genuine network/connection error\n newCode = CopilotKitErrorCode.NETWORK_ERROR;\n }\n\n // Update both the instance property and the extensions\n (structuredError as any).code = newCode;\n if ((structuredError as any).extensions) {\n (structuredError as any).extensions.code = newCode;\n }\n\n return structuredError;\n}\n"],"mappings":";;;;;;;;;AA4BA,SAAgB,2BACd,OACA,aACyB;CACzB,MAAM,YAAY,OAAO,aAAa,QAAQ,MAAM;CACpD,MAAM,eAAe,OAAO,WAAW,OAAO,MAAM;CACpD,MAAM,aAAa,MAAM,UAAU,MAAM,cAAc,MAAM,UAAU;CACvE,MAAM,eAAe,MAAM,SAAS,MAAM,UAAU,QAAQ,MAAM;CAGlE,MAAM,kBAAkB,IAAIA,2CAAwB;EAClD,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,aAAa;EAC/D,KAAK,GAAG,YAAY;EACpB,SAAS,GAAG,YAAY,cAAc;EACvC,CAAC;AAGF,KAAI,WACF,CAAC,gBAAwB,aAAa;AAExC,KAAI,aACF,CAAC,gBAAwB,eAAe;AAE1C,KAAI,UACF,CAAC,gBAAwB,oBAAoB;CAI/C,IAAI;AAEJ,KAAI,eAAe,IAEjB,WAAUC,uCAAoB;UACrB,cAAc,OAAO,aAAa,IAE3C,WAAUA,uCAAoB;UACrB,cAAc,IAEvB,WAAUA,uCAAoB;UACrB,WAET,WAAUA,uCAAoB;KAG9B,WAAUA,uCAAoB;AAIhC,CAAC,gBAAwB,OAAO;AAChC,KAAK,gBAAwB,WAC3B,CAAC,gBAAwB,WAAW,OAAO;AAG7C,QAAO"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { CopilotKitLowLevelError } from "@copilotkit/shared";
|
|
3
3
|
|
|
4
|
-
//#region src/service-adapters/shared/error-utils.d.ts
|
|
4
|
+
//#region src/v1-deprecated/service-adapters/shared/error-utils.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Converts service adapter errors to structured CopilotKitError format using HTTP status codes.
|
|
7
7
|
* This provides consistent error classification across all service adapters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-utils.d.cts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"error-utils.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/shared/error-utils.ts"],"mappings":";;;;;;AA4BA;;iBAAgB,0BAAA,CACd,KAAA,OACA,WAAA,WACC,uBAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { CopilotKitLowLevelError } from "@copilotkit/shared";
|
|
3
3
|
|
|
4
|
-
//#region src/service-adapters/shared/error-utils.d.ts
|
|
4
|
+
//#region src/v1-deprecated/service-adapters/shared/error-utils.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Converts service adapter errors to structured CopilotKitError format using HTTP status codes.
|
|
7
7
|
* This provides consistent error classification across all service adapters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-utils.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"error-utils.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/shared/error-utils.ts"],"mappings":";;;;;;AA4BA;;iBAAgB,0BAAA,CACd,KAAA,OACA,WAAA,WACC,uBAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { CopilotKitErrorCode, CopilotKitLowLevelError } from "@copilotkit/shared";
|
|
3
3
|
|
|
4
|
-
//#region src/service-adapters/shared/error-utils.ts
|
|
4
|
+
//#region src/v1-deprecated/service-adapters/shared/error-utils.ts
|
|
5
5
|
/**
|
|
6
6
|
* Converts service adapter errors to structured CopilotKitError format using HTTP status codes.
|
|
7
7
|
* This provides consistent error classification across all service adapters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-utils.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"error-utils.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/shared/error-utils.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — convertServiceAdapterError:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\nimport {\n CopilotKitLowLevelError,\n CopilotKitErrorCode,\n} from \"@copilotkit/shared\";\n\n/**\n * Converts service adapter errors to structured CopilotKitError format using HTTP status codes.\n * This provides consistent error classification across all service adapters.\n */\nexport function convertServiceAdapterError(\n error: any,\n adapterName: string,\n): CopilotKitLowLevelError {\n const errorName = error?.constructor?.name || error.name;\n const errorMessage = error?.message || String(error);\n const statusCode = error.status || error.statusCode || error.response?.status;\n const responseData = error.error || error.response?.data || error.data;\n\n // Create the base error with the constructor signature\n const structuredError = new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(errorMessage),\n url: `${adapterName} service adapter`,\n message: `${adapterName} API error: ${errorMessage}`,\n });\n\n // Add additional properties after construction\n if (statusCode) {\n (structuredError as any).statusCode = statusCode;\n }\n if (responseData) {\n (structuredError as any).responseData = responseData;\n }\n if (errorName) {\n (structuredError as any).originalErrorType = errorName;\n }\n\n // Classify error based on HTTP status codes (reliable and provider-agnostic)\n let newCode: CopilotKitErrorCode;\n\n if (statusCode === 401) {\n // 401 = Authentication/API key issues\n newCode = CopilotKitErrorCode.AUTHENTICATION_ERROR;\n } else if (statusCode >= 400 && statusCode < 500) {\n // 4xx = Client errors (bad request, invalid params, etc.) - these are configuration issues\n newCode = CopilotKitErrorCode.CONFIGURATION_ERROR;\n } else if (statusCode >= 500) {\n // 5xx = Server errors - keep as NETWORK_ERROR since it's infrastructure related\n newCode = CopilotKitErrorCode.NETWORK_ERROR;\n } else if (statusCode) {\n // Any other HTTP status with an error - likely configuration\n newCode = CopilotKitErrorCode.CONFIGURATION_ERROR;\n } else {\n // No status code - likely a genuine network/connection error\n newCode = CopilotKitErrorCode.NETWORK_ERROR;\n }\n\n // Update both the instance property and the extensions\n (structuredError as any).code = newCode;\n if ((structuredError as any).extensions) {\n (structuredError as any).extensions.code = newCode;\n }\n\n return structuredError;\n}\n"],"mappings":";;;;;;;;AA4BA,SAAgB,2BACd,OACA,aACyB;CACzB,MAAM,YAAY,OAAO,aAAa,QAAQ,MAAM;CACpD,MAAM,eAAe,OAAO,WAAW,OAAO,MAAM;CACpD,MAAM,aAAa,MAAM,UAAU,MAAM,cAAc,MAAM,UAAU;CACvE,MAAM,eAAe,MAAM,SAAS,MAAM,UAAU,QAAQ,MAAM;CAGlE,MAAM,kBAAkB,IAAI,wBAAwB;EAClD,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,aAAa;EAC/D,KAAK,GAAG,YAAY;EACpB,SAAS,GAAG,YAAY,cAAc;EACvC,CAAC;AAGF,KAAI,WACF,CAAC,gBAAwB,aAAa;AAExC,KAAI,aACF,CAAC,gBAAwB,eAAe;AAE1C,KAAI,UACF,CAAC,gBAAwB,oBAAoB;CAI/C,IAAI;AAEJ,KAAI,eAAe,IAEjB,WAAU,oBAAoB;UACrB,cAAc,OAAO,aAAa,IAE3C,WAAU,oBAAoB;UACrB,cAAc,IAEvB,WAAU,oBAAoB;UACrB,WAET,WAAU,oBAAoB;KAG9B,WAAU,oBAAoB;AAIhC,CAAC,gBAAwB,OAAO;AAChC,KAAK,gBAAwB,WAC3B,CAAC,gBAAwB,WAAW,OAAO;AAG7C,QAAO"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("reflect-metadata");
|
|
2
2
|
|
|
3
|
-
//#region src/service-adapters/shared/sdk-client-utils.ts
|
|
3
|
+
//#region src/v1-deprecated/service-adapters/shared/sdk-client-utils.ts
|
|
4
4
|
/**
|
|
5
5
|
* SDK clients (OpenAI, Anthropic, Groq) store constructor options like
|
|
6
6
|
* `defaultHeaders` and `fetch` in a private/protected `_options` field
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client-utils.cjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"sdk-client-utils.cjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/shared/sdk-client-utils.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — getSdkClientOptions:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * The part of a vendor SDK client these adapters actually use.\n *\n * `@anthropic-ai/sdk` and `groq-sdk` are *optional* peer dependencies, so a\n * consumer who never touches those adapters does not install them. Naming their\n * types in a published signature makes the declaration unresolvable for everyone\n * else -- a TS2307 on a bare `import { CopilotRuntime }` under\n * `skipLibCheck: false` (OSS-899).\n *\n * A real `Anthropic` or `Groq` instance satisfies this, so passing one still\n * type-checks. The adapters read nothing beyond these two fields; everything\n * else goes through `getSdkClientOptions`, which takes an `object`.\n */\nexport interface SdkClientLike {\n /** Base URL the client was configured with. */\n baseURL: string;\n /** API key the client was configured with. */\n apiKey: string | null;\n}\n\n/**\n * SDK clients (OpenAI, Anthropic, Groq) store constructor options like\n * `defaultHeaders` and `fetch` in a private/protected `_options` field\n * with no public accessor. This extracts them with a narrow type assertion.\n */\nexport function getSdkClientOptions(client: object): {\n defaultHeaders?: Record<string, string>;\n fetch?: typeof globalThis.fetch;\n} {\n const rec = client as Record<string, unknown>;\n const options = rec._options;\n if (options != null && typeof options === \"object\") {\n return options as {\n defaultHeaders?: Record<string, string>;\n fetch?: typeof globalThis.fetch;\n };\n }\n return {};\n}\n"],"mappings":";;;;;;;;AA4CA,SAAgB,oBAAoB,QAGlC;CAEA,MAAM,UADM,OACQ;AACpB,KAAI,WAAW,QAAQ,OAAO,YAAY,SACxC,QAAO;AAKT,QAAO,EAAE"}
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
|
|
2
|
-
//#region src/service-adapters/shared/sdk-client-utils.d.ts
|
|
2
|
+
//#region src/v1-deprecated/service-adapters/shared/sdk-client-utils.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The part of a vendor SDK client these adapters actually use.
|
|
5
|
+
*
|
|
6
|
+
* `@anthropic-ai/sdk` and `groq-sdk` are *optional* peer dependencies, so a
|
|
7
|
+
* consumer who never touches those adapters does not install them. Naming their
|
|
8
|
+
* types in a published signature makes the declaration unresolvable for everyone
|
|
9
|
+
* else -- a TS2307 on a bare `import { CopilotRuntime }` under
|
|
10
|
+
* `skipLibCheck: false` (OSS-899).
|
|
11
|
+
*
|
|
12
|
+
* A real `Anthropic` or `Groq` instance satisfies this, so passing one still
|
|
13
|
+
* type-checks. The adapters read nothing beyond these two fields; everything
|
|
14
|
+
* else goes through `getSdkClientOptions`, which takes an `object`.
|
|
15
|
+
*/
|
|
16
|
+
interface SdkClientLike {
|
|
17
|
+
/** Base URL the client was configured with. */
|
|
18
|
+
baseURL: string;
|
|
19
|
+
/** API key the client was configured with. */
|
|
20
|
+
apiKey: string | null;
|
|
21
|
+
}
|
|
3
22
|
/**
|
|
4
23
|
* SDK clients (OpenAI, Anthropic, Groq) store constructor options like
|
|
5
24
|
* `defaultHeaders` and `fetch` in a private/protected `_options` field
|
|
@@ -10,5 +29,5 @@ declare function getSdkClientOptions(client: object): {
|
|
|
10
29
|
fetch?: typeof globalThis.fetch;
|
|
11
30
|
};
|
|
12
31
|
//#endregion
|
|
13
|
-
export { getSdkClientOptions };
|
|
32
|
+
export { SdkClientLike, getSdkClientOptions };
|
|
14
33
|
//# sourceMappingURL=sdk-client-utils.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client-utils.d.cts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"sdk-client-utils.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/shared/sdk-client-utils.ts"],"mappings":";;;AAgCA;;;;;AAYA;;;;;;;UAZiB,aAAA;EAcA;EAZf,OAAA;EAY+B;EAV/B,MAAA;AAAA;;;;;;iBAQc,mBAAA,CAAoB,MAAA;EAClC,cAAA,GAAiB,MAAA;EACjB,KAAA,UAAe,UAAA,CAAW,KAAA;AAAA"}
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
|
|
2
|
-
//#region src/service-adapters/shared/sdk-client-utils.d.ts
|
|
2
|
+
//#region src/v1-deprecated/service-adapters/shared/sdk-client-utils.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The part of a vendor SDK client these adapters actually use.
|
|
5
|
+
*
|
|
6
|
+
* `@anthropic-ai/sdk` and `groq-sdk` are *optional* peer dependencies, so a
|
|
7
|
+
* consumer who never touches those adapters does not install them. Naming their
|
|
8
|
+
* types in a published signature makes the declaration unresolvable for everyone
|
|
9
|
+
* else -- a TS2307 on a bare `import { CopilotRuntime }` under
|
|
10
|
+
* `skipLibCheck: false` (OSS-899).
|
|
11
|
+
*
|
|
12
|
+
* A real `Anthropic` or `Groq` instance satisfies this, so passing one still
|
|
13
|
+
* type-checks. The adapters read nothing beyond these two fields; everything
|
|
14
|
+
* else goes through `getSdkClientOptions`, which takes an `object`.
|
|
15
|
+
*/
|
|
16
|
+
interface SdkClientLike {
|
|
17
|
+
/** Base URL the client was configured with. */
|
|
18
|
+
baseURL: string;
|
|
19
|
+
/** API key the client was configured with. */
|
|
20
|
+
apiKey: string | null;
|
|
21
|
+
}
|
|
3
22
|
/**
|
|
4
23
|
* SDK clients (OpenAI, Anthropic, Groq) store constructor options like
|
|
5
24
|
* `defaultHeaders` and `fetch` in a private/protected `_options` field
|
|
@@ -10,5 +29,5 @@ declare function getSdkClientOptions(client: object): {
|
|
|
10
29
|
fetch?: typeof globalThis.fetch;
|
|
11
30
|
};
|
|
12
31
|
//#endregion
|
|
13
|
-
export { getSdkClientOptions };
|
|
32
|
+
export { SdkClientLike, getSdkClientOptions };
|
|
14
33
|
//# sourceMappingURL=sdk-client-utils.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client-utils.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"sdk-client-utils.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/shared/sdk-client-utils.ts"],"mappings":";;;AAgCA;;;;;AAYA;;;;;;;UAZiB,aAAA;EAcA;EAZf,OAAA;EAY+B;EAV/B,MAAA;AAAA;;;;;;iBAQc,mBAAA,CAAoB,MAAA;EAClC,cAAA,GAAiB,MAAA;EACjB,KAAA,UAAe,UAAA,CAAW,KAAA;AAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
//#region src/service-adapters/shared/sdk-client-utils.ts
|
|
2
|
+
//#region src/v1-deprecated/service-adapters/shared/sdk-client-utils.ts
|
|
3
3
|
/**
|
|
4
4
|
* SDK clients (OpenAI, Anthropic, Groq) store constructor options like
|
|
5
5
|
* `defaultHeaders` and `fetch` in a private/protected `_options` field
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client-utils.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"sdk-client-utils.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/shared/sdk-client-utils.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — getSdkClientOptions:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * The part of a vendor SDK client these adapters actually use.\n *\n * `@anthropic-ai/sdk` and `groq-sdk` are *optional* peer dependencies, so a\n * consumer who never touches those adapters does not install them. Naming their\n * types in a published signature makes the declaration unresolvable for everyone\n * else -- a TS2307 on a bare `import { CopilotRuntime }` under\n * `skipLibCheck: false` (OSS-899).\n *\n * A real `Anthropic` or `Groq` instance satisfies this, so passing one still\n * type-checks. The adapters read nothing beyond these two fields; everything\n * else goes through `getSdkClientOptions`, which takes an `object`.\n */\nexport interface SdkClientLike {\n /** Base URL the client was configured with. */\n baseURL: string;\n /** API key the client was configured with. */\n apiKey: string | null;\n}\n\n/**\n * SDK clients (OpenAI, Anthropic, Groq) store constructor options like\n * `defaultHeaders` and `fetch` in a private/protected `_options` field\n * with no public accessor. This extracts them with a narrow type assertion.\n */\nexport function getSdkClientOptions(client: object): {\n defaultHeaders?: Record<string, string>;\n fetch?: typeof globalThis.fetch;\n} {\n const rec = client as Record<string, unknown>;\n const options = rec._options;\n if (options != null && typeof options === \"object\") {\n return options as {\n defaultHeaders?: Record<string, string>;\n fetch?: typeof globalThis.fetch;\n };\n }\n return {};\n}\n"],"mappings":";;;;;;;AA4CA,SAAgB,oBAAoB,QAGlC;CAEA,MAAM,UADM,OACQ;AACpB,KAAI,WAAW,QAAQ,OAAO,YAAY,SACxC,QAAO;AAKT,QAAO,EAAE"}
|
|
@@ -3,7 +3,7 @@ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
|
|
|
3
3
|
const require_utils = require('../openai/utils.cjs');
|
|
4
4
|
let _copilotkit_shared = require("@copilotkit/shared");
|
|
5
5
|
|
|
6
|
-
//#region src/service-adapters/unify/unify-adapter.ts
|
|
6
|
+
//#region src/v1-deprecated/service-adapters/unify/unify-adapter.ts
|
|
7
7
|
var UnifyAdapter = class {
|
|
8
8
|
get name() {
|
|
9
9
|
return "UnifyAdapter";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unify-adapter.cjs","names":["convertActionInputToOpenAITool","convertMessageToOpenAIMessage"],"sources":["
|
|
1
|
+
{"version":3,"file":"unify-adapter.cjs","names":["convertActionInputToOpenAITool","convertMessageToOpenAIMessage"],"sources":["../../../../src/v1-deprecated/service-adapters/unify/unify-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — UnifyAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — UnifyAdapterParams:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * CopilotKit Adapter for Unify\n *\n * <RequestExample>\n * ```jsx CopilotRuntime Example\n * const copilotKit = new CopilotRuntime();\n * return copilotKit.response(req, new UnifyAdapter());\n * ```\n * </RequestExample>\n *\n * You can easily set the model to use by passing it to the constructor.\n * ```jsx\n * const copilotKit = new CopilotRuntime();\n * return copilotKit.response(\n * req,\n * new UnifyAdapter({ model: \"llama-3-8b-chat@fireworks-ai\" }),\n * );\n * ```\n */\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n CopilotServiceAdapter,\n} from \"../service-adapter\";\nimport { randomId, randomUUID } from \"@copilotkit/shared\";\nimport {\n convertActionInputToOpenAITool,\n convertMessageToOpenAIMessage,\n} from \"../openai/utils\";\n\nexport interface UnifyAdapterParams {\n apiKey?: string;\n model: string;\n}\n\nexport class UnifyAdapter implements CopilotServiceAdapter {\n private apiKey: string;\n public model: string;\n private start: boolean;\n public provider = \"unify\";\n\n public get name() {\n return \"UnifyAdapter\";\n }\n\n constructor(options?: UnifyAdapterParams) {\n if (options?.apiKey) {\n this.apiKey = options.apiKey;\n } else {\n this.apiKey = \"UNIFY_API_KEY\";\n }\n this.model = options?.model;\n this.start = true;\n }\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n const tools = request.actions.map(convertActionInputToOpenAITool);\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const OpenAI = require(\"openai\").default;\n const openai = new OpenAI({\n apiKey: this.apiKey,\n baseURL: \"https://api.unify.ai/v0/\",\n });\n const forwardedParameters = request.forwardedParameters;\n\n const messages = request.messages.map((m) =>\n convertMessageToOpenAIMessage(m),\n );\n\n const stream = await openai.chat.completions.create({\n model: this.model,\n messages: messages,\n stream: true,\n ...(tools.length > 0 && { tools }),\n ...(forwardedParameters?.temperature && {\n temperature: forwardedParameters.temperature,\n }),\n });\n\n let model = null;\n let currentMessageId: string;\n let currentToolCallId: string;\n request.eventSource.stream(async (eventStream$) => {\n let mode: \"function\" | \"message\" | null = null;\n for await (const chunk of stream) {\n if (this.start) {\n model = chunk.model;\n currentMessageId = randomId();\n eventStream$.sendTextMessageStart({ messageId: currentMessageId });\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: `Model used: ${model}\\n`,\n });\n eventStream$.sendTextMessageEnd({ messageId: currentMessageId });\n this.start = false;\n }\n const toolCall = chunk.choices[0].delta.tool_calls?.[0];\n const content = chunk.choices[0].delta.content;\n\n // When switching from message to function or vice versa,\n // send the respective end event.\n // If toolCall?.id is defined, it means a new tool call starts.\n if (mode === \"message\" && toolCall?.id) {\n mode = null;\n eventStream$.sendTextMessageEnd({ messageId: currentMessageId });\n } else if (\n mode === \"function\" &&\n (toolCall === undefined || toolCall?.id)\n ) {\n mode = null;\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n\n // If we send a new message type, send the appropriate start event.\n if (mode === null) {\n if (toolCall?.id) {\n mode = \"function\";\n currentToolCallId = toolCall!.id;\n eventStream$.sendActionExecutionStart({\n actionExecutionId: currentToolCallId,\n actionName: toolCall!.function!.name,\n });\n } else if (content) {\n mode = \"message\";\n currentMessageId = chunk.id;\n eventStream$.sendTextMessageStart({ messageId: currentMessageId });\n }\n }\n\n // send the content events\n if (mode === \"message\" && content) {\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: content,\n });\n } else if (mode === \"function\" && toolCall?.function?.arguments) {\n eventStream$.sendActionExecutionArgs({\n actionExecutionId: currentToolCallId,\n args: toolCall.function.arguments,\n });\n }\n }\n\n // send the end events\n if (mode === \"message\") {\n eventStream$.sendTextMessageEnd({ messageId: currentMessageId });\n } else if (mode === \"function\") {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n\n eventStream$.complete();\n });\n\n return {\n threadId: request.threadId || randomUUID(),\n };\n }\n}\n"],"mappings":";;;;;;AA6DA,IAAa,eAAb,MAA2D;CAMzD,IAAW,OAAO;AAChB,SAAO;;CAGT,YAAY,SAA8B;kBANxB;AAOhB,MAAI,SAAS,OACX,MAAK,SAAS,QAAQ;MAEtB,MAAK,SAAS;AAEhB,OAAK,QAAQ,SAAS;AACtB,OAAK,QAAQ;;CAGf,MAAM,QACJ,SAC+C;EAC/C,MAAM,QAAQ,QAAQ,QAAQ,IAAIA,6CAA+B;EAGjE,MAAM,SAAS,QAAQ,SAAS,CAAC;EACjC,MAAM,SAAS,IAAI,OAAO;GACxB,QAAQ,KAAK;GACb,SAAS;GACV,CAAC;EACF,MAAM,sBAAsB,QAAQ;EAEpC,MAAM,WAAW,QAAQ,SAAS,KAAK,MACrCC,4CAA8B,EAAE,CACjC;EAED,MAAM,SAAS,MAAM,OAAO,KAAK,YAAY,OAAO;GAClD,OAAO,KAAK;GACF;GACV,QAAQ;GACR,GAAI,MAAM,SAAS,KAAK,EAAE,OAAO;GACjC,GAAI,qBAAqB,eAAe,EACtC,aAAa,oBAAoB,aAClC;GACF,CAAC;EAEF,IAAI,QAAQ;EACZ,IAAI;EACJ,IAAI;AACJ,UAAQ,YAAY,OAAO,OAAO,iBAAiB;GACjD,IAAI,OAAsC;AAC1C,cAAW,MAAM,SAAS,QAAQ;AAChC,QAAI,KAAK,OAAO;AACd,aAAQ,MAAM;AACd,0DAA6B;AAC7B,kBAAa,qBAAqB,EAAE,WAAW,kBAAkB,CAAC;AAClE,kBAAa,uBAAuB;MAClC,WAAW;MACX,SAAS,eAAe,MAAM;MAC/B,CAAC;AACF,kBAAa,mBAAmB,EAAE,WAAW,kBAAkB,CAAC;AAChE,UAAK,QAAQ;;IAEf,MAAM,WAAW,MAAM,QAAQ,GAAG,MAAM,aAAa;IACrD,MAAM,UAAU,MAAM,QAAQ,GAAG,MAAM;AAKvC,QAAI,SAAS,aAAa,UAAU,IAAI;AACtC,YAAO;AACP,kBAAa,mBAAmB,EAAE,WAAW,kBAAkB,CAAC;eAEhE,SAAS,eACR,aAAa,UAAa,UAAU,KACrC;AACA,YAAO;AACP,kBAAa,uBAAuB,EAClC,mBAAmB,mBACpB,CAAC;;AAIJ,QAAI,SAAS,MACX;SAAI,UAAU,IAAI;AAChB,aAAO;AACP,0BAAoB,SAAU;AAC9B,mBAAa,yBAAyB;OACpC,mBAAmB;OACnB,YAAY,SAAU,SAAU;OACjC,CAAC;gBACO,SAAS;AAClB,aAAO;AACP,yBAAmB,MAAM;AACzB,mBAAa,qBAAqB,EAAE,WAAW,kBAAkB,CAAC;;;AAKtE,QAAI,SAAS,aAAa,QACxB,cAAa,uBAAuB;KAClC,WAAW;KACF;KACV,CAAC;aACO,SAAS,cAAc,UAAU,UAAU,UACpD,cAAa,wBAAwB;KACnC,mBAAmB;KACnB,MAAM,SAAS,SAAS;KACzB,CAAC;;AAKN,OAAI,SAAS,UACX,cAAa,mBAAmB,EAAE,WAAW,kBAAkB,CAAC;YACvD,SAAS,WAClB,cAAa,uBAAuB,EAClC,mBAAmB,mBACpB,CAAC;AAGJ,gBAAa,UAAU;IACvB;AAEF,SAAO,EACL,UAAU,QAAQ,gDAAwB,EAC3C"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { CopilotRuntimeChatCompletionRequest, CopilotRuntimeChatCompletionResponse, CopilotServiceAdapter } from "../service-adapter.cjs";
|
|
3
3
|
|
|
4
|
-
//#region src/service-adapters/unify/unify-adapter.d.ts
|
|
4
|
+
//#region src/v1-deprecated/service-adapters/unify/unify-adapter.d.ts
|
|
5
5
|
interface UnifyAdapterParams {
|
|
6
6
|
apiKey?: string;
|
|
7
7
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unify-adapter.d.cts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"unify-adapter.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/unify/unify-adapter.ts"],"mappings":";;;;UAwDiB,kBAAA;EACf,MAAA;EACA,KAAA;AAAA;AAAA,cAGW,YAAA,YAAwB,qBAAA;EAAA,QAC3B,MAAA;EACD,KAAA;EAAA,QACC,KAAA;EACD,QAAA;EAAA,IAEI,IAAA,CAAA;cAIC,OAAA,GAAU,kBAAA;EAUhB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { CopilotRuntimeChatCompletionRequest, CopilotRuntimeChatCompletionResponse, CopilotServiceAdapter } from "../service-adapter.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/service-adapters/unify/unify-adapter.d.ts
|
|
4
|
+
//#region src/v1-deprecated/service-adapters/unify/unify-adapter.d.ts
|
|
5
5
|
interface UnifyAdapterParams {
|
|
6
6
|
apiKey?: string;
|
|
7
7
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unify-adapter.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"unify-adapter.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/unify/unify-adapter.ts"],"mappings":";;;;UAwDiB,kBAAA;EACf,MAAA;EACA,KAAA;AAAA;AAAA,cAGW,YAAA,YAAwB,qBAAA;EAAA,QAC3B,MAAA;EACD,KAAA;EAAA,QACC,KAAA;EACD,QAAA;EAAA,IAEI,IAAA,CAAA;cAIC,OAAA,GAAU,kBAAA;EAUhB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
|
|
@@ -3,7 +3,7 @@ import { __require } from "../../_virtual/_rolldown/runtime.mjs";
|
|
|
3
3
|
import { convertActionInputToOpenAITool, convertMessageToOpenAIMessage } from "../openai/utils.mjs";
|
|
4
4
|
import { randomId, randomUUID } from "@copilotkit/shared";
|
|
5
5
|
|
|
6
|
-
//#region src/service-adapters/unify/unify-adapter.ts
|
|
6
|
+
//#region src/v1-deprecated/service-adapters/unify/unify-adapter.ts
|
|
7
7
|
var UnifyAdapter = class {
|
|
8
8
|
get name() {
|
|
9
9
|
return "UnifyAdapter";
|