@mastra/cursor 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -0
- package/dist/docs/SKILL.md +2 -2
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-agents-sdk-agents.md +168 -4
- package/dist/index.cjs +64 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +39 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -6
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +5 -2
- package/dist/utils.d.ts.map +1 -1
- package/package.json +7 -6
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts","../src/index.ts"],"names":["ReadableStream","randomUUID","stream","messageList","MessageList","MastraModelOutput","getOrCreateSpan","SpanType","EntityType","executeWithContext","TransformStream","ChunkFrom","Agent","requestContext","RequestContext","CursorAgent","toolName"],"mappings":"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","file":"index.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { ReadableStream, TransformStream } from 'node:stream/web';\nimport type { ReadableStreamDefaultController } from 'node:stream/web';\n\nimport type { AgentExecutionOptionsBase, MastraLanguageModel } from '@mastra/core/agent';\nimport { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { EntityType, executeWithContext, getOrCreateSpan, SpanType } from '@mastra/core/observability';\nimport type {\n AIModelGenerationSpan,\n CostContext,\n IModelSpanTracker,\n Span,\n UsageStats,\n} from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType, FullOutput, JSONValue, LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';\nimport { ChunkFrom, MastraModelOutput } from '@mastra/core/stream';\ntype MastraModelOutputOptions<OUTPUT = undefined> = ConstructorParameters<\n typeof MastraModelOutput<OUTPUT>\n>[0]['options'];\n\nexport type SDKAgentRunOptions<OUTPUT = unknown> = AgentExecutionOptionsBase<OUTPUT> & {\n signal?: AbortSignal;\n [key: string]: unknown;\n};\n\nexport type V3Usage = {\n inputTokens: {\n total: number | undefined;\n noCache?: number;\n cacheRead?: number;\n cacheWrite?: number;\n };\n outputTokens: {\n total: number | undefined;\n text?: number;\n };\n};\n\nexport type SDKModelGenerateResult = {\n content: Array<{ type: 'text'; text: string }>;\n finishReason: { unified: 'stop'; raw: 'stop' };\n usage: V3Usage;\n response: {\n id: string;\n modelId: string;\n timestamp: Date;\n };\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n};\n\nexport function createNoopModel({ modelId, provider }: { modelId: string; provider: string }): MastraLanguageModel {\n return {\n modelId,\n provider,\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => createNoopStreamResult(),\n doStream: async () => createNoopStreamResult(),\n } as MastraLanguageModel;\n}\n\nfunction createNoopStreamResult(): { stream: ReadableStream<never> } {\n return {\n stream: new ReadableStream<never>({\n start: controller => controller.close(),\n }),\n };\n}\n\nexport function createCompletedMastraStream({\n runId,\n prompt,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n}: {\n runId: string;\n prompt: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n}): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start(controller) {\n const textId = randomUUID();\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n });\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n });\n controller.close();\n },\n });\n}\n\nexport function createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider,\n stream,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: '' }], 'response');\n\n return new MastraModelOutput<OUTPUT>({\n model: {\n modelId,\n provider,\n version: 'v3',\n },\n stream: stream as ReadableStream<ChunkType<OUTPUT>>,\n messageList,\n messageId: randomUUID(),\n options: {\n ...options,\n runId,\n },\n });\n}\n\nexport function toFullOutput<OUTPUT>({\n messages,\n runId,\n provider,\n result,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n provider: string;\n result: SDKModelGenerateResult;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): Promise<FullOutput<OUTPUT>> {\n const text = result.content.map(part => part.text).join('');\n const stream = createCompletedMastraStream({\n runId,\n prompt: promptToText(messages),\n text,\n responseId: result.response.id,\n modelId: result.response.modelId,\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n costContext: result.costContext,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId: result.response.modelId,\n provider,\n stream,\n options,\n }).getFullOutput();\n}\n\nexport type SDKAgentTelemetryOptions<OUTPUT = unknown> = {\n agentId: string;\n agentName: string;\n provider: string;\n modelId: string;\n messages: MessageListInput;\n prompt: string;\n runId: string;\n streaming: boolean;\n method: 'generate' | 'stream';\n requestContext: RequestContext;\n instructions?: string;\n maxSteps?: SDKAgentRunOptions<OUTPUT>['maxSteps'];\n tracingOptions?: SDKAgentRunOptions<OUTPUT>['tracingOptions'];\n tracingContext?: SDKAgentRunOptions<OUTPUT>['tracingContext'];\n onFinish?: SDKAgentRunOptions<OUTPUT>['onFinish'];\n onStepFinish?: SDKAgentRunOptions<OUTPUT>['onStepFinish'];\n mastra?: Mastra;\n};\n\nexport type SDKAgentTelemetry<OUTPUT = unknown> = {\n execute<T>(fn: () => Promise<T>): Promise<T>;\n endGenerate(result: SDKModelGenerateResult): void;\n fail(error: unknown): void;\n startToolCall(input: SDKAgentToolCallInput): void;\n endToolCall(output: SDKAgentToolCallOutput): void;\n wrapStream(stream: ReadableStream<ChunkType>): ReadableStream<ChunkType>;\n outputOptions(): Partial<MastraModelOutputOptions<OUTPUT>>;\n};\n\nexport type SDKAgentToolCallInput = {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n};\n\nexport type SDKAgentToolCallOutput = {\n toolCallId: string;\n output?: unknown;\n isError?: boolean;\n};\n\nexport function createSDKAgentTelemetry<OUTPUT>({\n agentId,\n agentName,\n provider,\n modelId,\n messages,\n prompt,\n runId,\n streaming,\n method,\n requestContext,\n instructions,\n maxSteps,\n tracingOptions,\n tracingContext,\n onFinish,\n onStepFinish,\n mastra,\n}: SDKAgentTelemetryOptions<OUTPUT>): SDKAgentTelemetry<OUTPUT> {\n const agentSpan = getOrCreateSpan({\n type: SpanType.AGENT_RUN,\n name: `agent run: '${agentId}'`,\n entityType: EntityType.AGENT,\n entityId: agentId,\n entityName: agentName,\n input: messages,\n attributes: {\n prompt,\n instructions,\n maxSteps,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n tracingOptions,\n tracingContext,\n requestContext,\n mastra,\n });\n\n const modelSpan = agentSpan?.createChildSpan({\n type: SpanType.MODEL_GENERATION,\n name: `llm: '${modelId}'`,\n input: {\n messages,\n },\n attributes: {\n model: modelId,\n provider,\n streaming,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n requestContext,\n });\n const modelSpanTracker = getModelSpanTracker(modelSpan);\n const toolSpans = new Map<string, Span<SpanType.TOOL_CALL> | Span<SpanType.MCP_TOOL_CALL>>();\n\n let ended = false;\n\n const startToolCall = ({ toolCallId, toolName, input }: SDKAgentToolCallInput) => {\n if (toolSpans.has(toolCallId)) {\n return;\n }\n\n const parentSpan = agentSpan ?? modelSpan;\n if (!parentSpan) {\n return;\n }\n\n const mcp = parseMcpToolName(toolName);\n const span = mcp\n ? parentSpan.createChildSpan({\n type: SpanType.MCP_TOOL_CALL,\n name: `mcp_tool: '${toolName}' on '${mcp.serverName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n mcpServer: mcp.serverName,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n })\n : parentSpan.createChildSpan({\n type: SpanType.TOOL_CALL,\n name: `tool: '${toolName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n toolType: 'tool',\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n });\n\n toolSpans.set(toolCallId, span);\n };\n\n const endToolCall = ({ toolCallId, output, isError }: SDKAgentToolCallOutput) => {\n const span = toolSpans.get(toolCallId);\n if (!span) {\n return;\n }\n\n toolSpans.delete(toolCallId);\n if (isError) {\n span.error({\n error:\n output instanceof Error ? output : new Error(typeof output === 'string' ? output : 'SDK tool call failed'),\n attributes: { success: false },\n });\n return;\n }\n\n span.end({\n output,\n attributes: { success: true },\n });\n };\n\n const closeOpenToolSpans = (success: boolean, error?: unknown) => {\n for (const [toolCallId, span] of toolSpans) {\n toolSpans.delete(toolCallId);\n if (success) {\n span.end({ attributes: { success: true } });\n continue;\n }\n\n const normalized = error instanceof Error ? error : new Error(String(error ?? 'SDK agent run failed'));\n span.error({ error: normalized, attributes: { success: false } });\n }\n };\n\n const endModel = ({\n text,\n usage,\n providerMetadata,\n finishReason = 'stop',\n responseId,\n responseModel,\n costContext,\n }: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (modelSpanTracker) {\n modelSpanTracker.endGeneration({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n costContext,\n },\n usage,\n providerMetadata,\n });\n return;\n }\n\n modelSpan?.end({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n usage: usage ? toUsageStats(usage) : undefined,\n costContext,\n },\n });\n };\n\n const end = (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (ended) {\n return;\n }\n\n ended = true;\n closeOpenToolSpans(true);\n endModel(result);\n agentSpan?.end({\n output: {\n text: result.text,\n },\n });\n };\n\n const fail = (error: unknown) => {\n if (ended) {\n return;\n }\n\n ended = true;\n const normalized = error instanceof Error ? error : new Error(String(error));\n closeOpenToolSpans(false, normalized);\n if (modelSpanTracker) {\n modelSpanTracker.reportGenerationError({ error: normalized });\n } else {\n modelSpan?.error({ error: normalized });\n }\n agentSpan?.error({ error: normalized });\n };\n\n return {\n execute: fn => executeWithContext({ span: modelSpan ?? agentSpan, fn }),\n endGenerate(result) {\n end({\n text: result.content.map(part => part.text).join(''),\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n finishReason: result.finishReason.unified,\n responseId: result.response.id,\n responseModel: result.response.modelId,\n costContext: result.costContext,\n });\n },\n fail,\n startToolCall,\n endToolCall,\n wrapStream(stream) {\n const trackedStream = (modelSpanTracker?.wrapStream(stream) ?? stream) as ReadableStream<ChunkType>;\n return wrapStreamForAgentSpan(trackedStream, {\n end,\n fail,\n });\n },\n outputOptions() {\n return {\n onFinish,\n onStepFinish,\n requestContext,\n tracingContext: agentSpan ? { currentSpan: agentSpan } : tracingContext,\n };\n },\n };\n}\n\nfunction parseMcpToolName(toolName: string): { serverName: string; toolName: string } | undefined {\n const match = /^mcp__([^_].*?)__(.+)$/.exec(toolName);\n if (!match?.[1] || !match[2]) {\n return undefined;\n }\n\n return {\n serverName: match[1],\n toolName: match[2],\n };\n}\n\nfunction getModelSpanTracker(\n modelSpan: Span<SpanType.MODEL_GENERATION> | AIModelGenerationSpan | undefined,\n): IModelSpanTracker | undefined {\n if (!modelSpan || !('createTracker' in modelSpan)) {\n return undefined;\n }\n\n return modelSpan.createTracker();\n}\n\nfunction wrapStreamForAgentSpan(\n stream: ReadableStream<ChunkType>,\n telemetry: {\n end: (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => void;\n fail: (error: unknown) => void;\n },\n): ReadableStream<ChunkType> {\n let text = '';\n\n return stream.pipeThrough(\n new TransformStream<ChunkType, ChunkType>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n text += chunk.payload.text;\n }\n\n if (chunk.type === 'finish') {\n telemetry.end({\n text,\n usage: chunk.payload.output.usage,\n providerMetadata: chunk.payload.providerMetadata,\n finishReason: chunk.payload.stepResult.reason,\n responseId: chunk.payload.response?.id,\n responseModel: chunk.payload.response?.modelId,\n costContext: getCostContext(chunk.payload.metadata?.costContext),\n });\n }\n\n if (chunk.type === 'error') {\n telemetry.fail(chunk.payload.error);\n }\n\n controller.enqueue(chunk);\n },\n flush() {\n telemetry.end({ text });\n },\n }),\n );\n}\n\nfunction toUsageStats(usage: LanguageModelUsage): UsageStats {\n return {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n inputDetails: {\n cacheRead: usage.cachedInputTokens,\n cacheWrite: usage.cacheCreationInputTokens,\n },\n outputDetails: {\n text: usage.outputTokens,\n reasoning: usage.reasoningTokens,\n },\n };\n}\n\nfunction getCostContext(value: unknown): CostContext | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n return value as CostContext;\n}\n\nexport function enqueueStartChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n responseId: string;\n modelId: string;\n providerMetadata?: ProviderMetadata;\n },\n): void {\n controller.enqueue({\n type: 'start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {},\n });\n controller.enqueue({\n type: 'step-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n request: { body: prompt },\n },\n });\n controller.enqueue({\n type: 'response-metadata',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n modelId,\n timestamp: new Date().toISOString(),\n },\n });\n controller.enqueue({\n type: 'text-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n}\n\nexport function enqueueTextDelta(\n controller: ReadableStreamDefaultController<ChunkType>,\n runId: string,\n textId: string,\n text: string,\n): void {\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n text,\n },\n });\n}\n\nexport function enqueueFinishChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n },\n): void {\n const timestamp = new Date();\n const response = {\n id: responseId,\n modelId,\n timestamp,\n };\n const metadata = {\n providerMetadata,\n costContext,\n request: { body: prompt },\n modelId,\n timestamp,\n };\n\n controller.enqueue({\n type: 'text-end',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n controller.enqueue({\n type: 'step-finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n providerMetadata,\n totalUsage: usage,\n response,\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n text,\n usage,\n steps: [],\n },\n metadata,\n },\n });\n controller.enqueue({\n type: 'finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n usage,\n steps: [],\n },\n metadata,\n providerMetadata,\n messages: {\n all: [],\n user: [],\n nonUser: [],\n },\n response,\n },\n });\n}\n\nexport function toLanguageModelUsage(usage: V3Usage): LanguageModelUsage {\n const inputTokens = usage.inputTokens.total ?? 0;\n const outputTokens = usage.outputTokens.total ?? 0;\n\n return {\n inputTokens,\n outputTokens,\n totalTokens: inputTokens + outputTokens,\n cachedInputTokens: usage.inputTokens.cacheRead,\n cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n raw: usage,\n };\n}\n\nexport function createProviderMetadata(provider: string, metadata: Record<string, unknown>): ProviderMetadata {\n return {\n [provider]: toJsonRecord(metadata),\n };\n}\n\nfunction toJsonRecord(record: Record<string, unknown>): Record<string, JSONValue> {\n return Object.fromEntries(\n Object.entries(record)\n .filter((entry): entry is [string, Exclude<unknown, undefined>] => entry[1] !== undefined)\n .map(([key, value]) => [key, toJsonValue(value)]),\n );\n}\n\nfunction toJsonValue(value: unknown): JSONValue {\n if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined).map(toJsonValue);\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === 'object') {\n return toJsonRecord(value as Record<string, unknown>);\n }\n\n return String(value);\n}\n\nexport function promptToText(prompt: unknown): string {\n if (typeof prompt === 'string') {\n return prompt;\n }\n\n if (Array.isArray(prompt)) {\n return prompt.map(promptToText).filter(Boolean).join('\\n');\n }\n\n if (!prompt || typeof prompt !== 'object') {\n return '';\n }\n\n const record = prompt as Record<string, unknown>;\n if (typeof record.text === 'string') {\n return record.text;\n }\n if (typeof record.content === 'string') {\n return record.content;\n }\n if (record.content) {\n return promptToText(record.content);\n }\n\n return '';\n}\n\nexport function sumDefined(...values: Array<number | undefined>): number | undefined {\n const defined = values.filter((value): value is number => typeof value === 'number');\n if (defined.length === 0) {\n return undefined;\n }\n\n return defined.reduce((sum, value) => sum + value, 0);\n}\n","import { randomUUID } from 'node:crypto';\nimport { ReadableStream } from 'node:stream/web';\n\nimport { Agent as CursorAgent } from '@cursor/sdk';\nimport type {\n AgentOptions as CursorCreateOptions,\n InteractionUpdate,\n ModelSelection,\n Run,\n SDKAgent,\n SDKMessage,\n SendOptions,\n} from '@cursor/sdk';\n\nimport { Agent } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type {\n ChunkType,\n FullOutput,\n LanguageModelUsage,\n ProviderMetadata,\n MastraModelOutput,\n} from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n createMastraOutput,\n createNoopModel,\n createProviderMetadata,\n createSDKAgentTelemetry,\n enqueueFinishChunks,\n enqueueStartChunks,\n enqueueTextDelta,\n promptToText,\n sumDefined,\n toFullOutput,\n toLanguageModelUsage,\n} from './utils';\nimport type { SDKAgentRunOptions, SDKAgentTelemetry, SDKModelGenerateResult, V3Usage } from './utils';\n\nconst PROVIDER = '@cursor/sdk';\nconst MODEL_ID = 'cursor-agent-sdk';\n\ntype CursorUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n};\n\ntype CursorToolTelemetry = Pick<SDKAgentTelemetry, 'startToolCall' | 'endToolCall'>;\n\nexport type CursorAgentFactory = (options: CursorCreateOptions) => SDKAgent | Promise<SDKAgent>;\nexport type CursorAgentInput = SDKAgent | Promise<SDKAgent> | CursorAgentFactory;\n\nexport type CursorAgentOptions = {\n /**\n * Mastra agent id used when registering this wrapper with Mastra.\n */\n id: string;\n /**\n * Optional display name for the Mastra agent. Defaults to `id`.\n */\n name?: string;\n /**\n * Description surfaced by Mastra when listing or selecting agents.\n */\n description: string;\n /**\n * Cursor SDK agent or factory. Pass a pre-created SDK agent when you manage\n * its lifecycle elsewhere. Omit this option to let this wrapper call\n * `CursorAgent.create()` with `sdkOptions`.\n *\n * If you pass `CursorAgent.create({...})`, that promise has already been\n * created by the Cursor SDK and wrapper-level create options cannot be\n * merged into it. Put all Cursor create options in that call, or pass the\n * factory itself as `agent: CursorAgent.create`.\n *\n * The factory path allows Mastra to hydrate defaults such as `apiKey`.\n */\n agent?: CursorAgentInput;\n /**\n * Cursor SDK options used when `agent` is omitted or when `agent` is a\n * factory. Defaults `apiKey` to `process.env.CURSOR_API_KEY` when not\n * provided.\n */\n sdkOptions?: CursorCreateOptions;\n};\n\nexport class CursorSDKAgent extends Agent {\n readonly options: CursorAgentOptions;\n #mastra?: Mastra;\n #createdAgent?: Promise<SDKAgent>;\n\n constructor(options: CursorAgentOptions) {\n super({\n id: options.id,\n name: options.name ?? options.id,\n description: options.description,\n instructions: '',\n model: createNoopModel({\n modelId: getModelId(getRequestedModel(options)),\n provider: PROVIDER,\n }),\n });\n this.options = options;\n }\n\n override __registerMastra(mastra: Mastra): void {\n super.__registerMastra(mastra);\n this.#mastra = mastra;\n }\n\n supportsMemory(): boolean {\n return false;\n }\n\n async generate<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const sdkAgent = await this.resolveCursorAgent();\n const modelId = getCursorModelId(this.options, sdkAgent);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: false,\n method: 'generate',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n let result: SDKModelGenerateResult;\n try {\n result = await telemetry.execute(() => runCursorGenerate(prompt, this.options, sdkAgent, telemetry));\n telemetry.endGenerate(result);\n } catch (error) {\n telemetry.fail(error);\n throw error;\n }\n\n return toFullOutput<OUTPUT>({\n messages,\n runId,\n provider: PROVIDER,\n result,\n options: telemetry.outputOptions(),\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const runId = options?.runId ?? randomUUID();\n const prompt = promptToText(messages);\n const sdkAgent = await this.resolveCursorAgent();\n const modelId = getCursorModelId(this.options, sdkAgent);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: true,\n method: 'stream',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider: PROVIDER,\n stream: telemetry.wrapStream(runCursorAsMastraStream(prompt, this.options, sdkAgent, runId, telemetry)),\n options: telemetry.outputOptions(),\n });\n }\n\n private resolveCursorAgent(): Promise<SDKAgent> {\n this.#createdAgent ??= resolveCursorAgent(this.options.agent, this.options).catch(error => {\n this.#createdAgent = undefined;\n throw error;\n });\n return this.#createdAgent;\n }\n}\n\nasync function runCursorGenerate(\n prompt: string,\n options: CursorAgentOptions,\n agent: SDKAgent,\n telemetry: CursorToolTelemetry,\n): Promise<SDKModelGenerateResult> {\n const usage = createCursorUsageCollector();\n const run = await agent.send(prompt, createCursorSendOptions(options, usage, telemetry));\n const result = await run.wait();\n\n if (result.status === 'error' || result.status === 'cancelled') {\n throw new Error(`Cursor run ${result.id} ended with status ${result.status}`);\n }\n\n const responseModel = getModelId(result.model ?? run.model ?? getRequestedModel(options) ?? agent.model);\n const providerMetadata = getCursorProviderMetadata(\n options,\n agent.agentId,\n result.id,\n result.status,\n result.durationMs,\n usage.totals(),\n responseModel,\n );\n\n return {\n content: [{ type: 'text', text: result.result ?? '' }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: usage.toV3Usage(),\n response: {\n id: result.id,\n modelId: responseModel,\n timestamp: new Date(),\n },\n providerMetadata,\n };\n}\n\nfunction runCursorAsMastraStream(\n prompt: string,\n options: CursorAgentOptions,\n agent: SDKAgent,\n runId: string,\n telemetry: CursorToolTelemetry,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n const usage = createCursorUsageCollector();\n let text = '';\n\n try {\n const run = await agent.send(prompt, createCursorSendOptions(options, usage, telemetry));\n const responseId = run.id;\n const responseModel = getModelId(run.model ?? getRequestedModel(options) ?? agent.model);\n\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId: responseModel,\n providerMetadata: getCursorProviderMetadata(\n options,\n agent.agentId,\n run.id,\n run.status,\n run.durationMs,\n usage.totals(),\n responseModel,\n ),\n });\n\n let result: Awaited<ReturnType<Run['wait']>> | undefined;\n if (run.supports('stream')) {\n for await (const message of run.stream()) {\n const delta = getTextFromCursorMessage(message);\n if (delta) {\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n }\n result = await run.wait();\n } else {\n result = await run.wait();\n if (result.status === 'error' || result.status === 'cancelled') {\n throw new Error(`Cursor run ${result.id} ended with status ${result.status}`);\n }\n if (result.result) {\n text += result.result;\n enqueueTextDelta(controller, runId, textId, result.result);\n }\n }\n\n if (result.status === 'error' || result.status === 'cancelled') {\n throw new Error(`Cursor run ${result.id} ended with status ${result.status}`);\n }\n\n if (!text && result.result) {\n text = result.result;\n enqueueTextDelta(controller, runId, textId, result.result);\n }\n\n const providerMetadata = getCursorProviderMetadata(\n options,\n agent.agentId,\n run.id,\n result.status,\n result.durationMs,\n usage.totals(),\n getModelId(result.model ?? run.model ?? getRequestedModel(options) ?? agent.model),\n );\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId: getModelId(result.model ?? run.model ?? getRequestedModel(options) ?? agent.model),\n usage: usage.toLanguageModelUsage(),\n providerMetadata,\n });\n controller.close();\n } catch (error) {\n controller.enqueue({\n type: 'error',\n runId,\n from: ChunkFrom.AGENT,\n payload: { error },\n });\n controller.close();\n }\n },\n });\n}\n\nasync function resolveCursorAgent(agent: CursorAgentInput | undefined, options: CursorAgentOptions): Promise<SDKAgent> {\n if (!agent) {\n return CursorAgent.create(toCursorCreateOptions(options));\n }\n\n return typeof agent === 'function' ? agent(toCursorCreateOptions(options)) : agent;\n}\n\nfunction toCursorCreateOptions(options: CursorAgentOptions): CursorCreateOptions {\n const createOptions: CursorCreateOptions = { ...options.sdkOptions };\n const apiKey = createOptions.apiKey ?? process.env['CURSOR_API_KEY'];\n\n if (apiKey) createOptions.apiKey = apiKey;\n if (options.name && !createOptions.name) createOptions.name = options.name;\n\n return createOptions;\n}\n\nfunction createCursorSendOptions(\n options: CursorAgentOptions,\n usage: CursorUsageCollector,\n telemetry: CursorToolTelemetry,\n): SendOptions {\n return {\n mcpServers: options.sdkOptions?.mcpServers,\n onDelta: async args => {\n usage.record(args.update);\n recordCursorToolTelemetry(args.update, telemetry);\n },\n };\n}\n\ntype CursorUsageCollector = ReturnType<typeof createCursorUsageCollector>;\n\nfunction createCursorUsageCollector() {\n const totals: Required<CursorUsageTotals> = {\n inputTokens: 0,\n outputTokens: 0,\n cacheReadTokens: 0,\n cacheWriteTokens: 0,\n };\n\n return {\n record(update: InteractionUpdate) {\n if (update.type !== 'turn-ended' || !update.usage) {\n return;\n }\n\n totals.inputTokens += update.usage.inputTokens;\n totals.outputTokens += update.usage.outputTokens;\n totals.cacheReadTokens += update.usage.cacheReadTokens;\n totals.cacheWriteTokens += update.usage.cacheWriteTokens;\n },\n totals(): CursorUsageTotals {\n return {\n inputTokens: totals.inputTokens || undefined,\n outputTokens: totals.outputTokens || undefined,\n cacheReadTokens: totals.cacheReadTokens || undefined,\n cacheWriteTokens: totals.cacheWriteTokens || undefined,\n };\n },\n toV3Usage(): V3Usage {\n return toV3Usage(totals);\n },\n toLanguageModelUsage(): LanguageModelUsage {\n return toLanguageModelUsage(toV3Usage(totals));\n },\n };\n}\n\nfunction toV3Usage(usage: CursorUsageTotals): V3Usage {\n const noCache = usage.inputTokens;\n const cacheRead = usage.cacheReadTokens;\n const cacheWrite = usage.cacheWriteTokens;\n const totalInputTokens = sumDefined(noCache, cacheRead, cacheWrite);\n const outputTokens = usage.outputTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n },\n };\n}\n\nfunction getRequestedModel(options: CursorAgentOptions): ModelSelection | undefined {\n return options.sdkOptions?.model;\n}\n\nfunction getModelId(model: ModelSelection | undefined): string {\n if (!model) {\n return MODEL_ID;\n }\n\n return typeof model === 'string' ? model : model.id;\n}\n\nfunction getCursorModelId(options: CursorAgentOptions, agent: SDKAgent): string {\n return getModelId(getRequestedModel(options) ?? agent.model);\n}\n\nfunction getCursorProviderMetadata(\n options: CursorAgentOptions,\n agentId: string,\n runId: string,\n status?: Run['status'],\n durationMs?: number,\n usage?: CursorUsageTotals,\n requestedModel?: string,\n): ProviderMetadata {\n return createProviderMetadata('cursor', {\n agentId,\n runId,\n status,\n requestedModel: requestedModel ?? getModelId(getRequestedModel(options)),\n durationMs,\n mcpServerNames: getMcpServerNames(options),\n usage,\n });\n}\n\nfunction getMcpServerNames(options: CursorAgentOptions): string[] | undefined {\n const servers = options.sdkOptions?.mcpServers;\n return servers ? Object.keys(servers) : undefined;\n}\n\nfunction getTextFromCursorMessage(message: SDKMessage): string {\n if (message.type === 'assistant') {\n return message.message.content\n .map(block => {\n if (block.type === 'text') {\n return block.text;\n }\n\n return '';\n })\n .filter(Boolean)\n .join('');\n }\n\n if (message.type === 'task') {\n return message.text ?? '';\n }\n\n return '';\n}\n\nfunction recordCursorToolTelemetry(update: InteractionUpdate, telemetry: CursorToolTelemetry): void {\n const updateRecord = toRecord(update);\n if (!updateRecord) {\n return;\n }\n\n const updateType = typeof updateRecord?.type === 'string' ? updateRecord.type : undefined;\n\n if (\n updateType !== 'tool-call-started' &&\n updateType !== 'partial-tool-call' &&\n updateType !== 'tool-call-completed'\n ) {\n return;\n }\n\n const toolCall = getCursorToolCall(updateRecord);\n if (!toolCall) {\n return;\n }\n\n if (updateType === 'tool-call-started' || updateType === 'partial-tool-call') {\n telemetry.startToolCall({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n });\n return;\n }\n\n telemetry.startToolCall({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n });\n telemetry.endToolCall({\n toolCallId: toolCall.toolCallId,\n output: toolCall.output,\n isError: toolCall.isError,\n });\n}\n\nfunction getCursorToolCall(update: Record<string, unknown>):\n | {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n output?: unknown;\n isError?: boolean;\n }\n | undefined {\n const toolCallId = typeof update.callId === 'string' ? update.callId : undefined;\n const toolCall = toRecord(update.toolCall);\n if (!toolCallId || !toolCall) {\n return undefined;\n }\n\n if (toolCall.type === 'mcp') {\n const args = toRecord(toolCall.args);\n if (!args) {\n return undefined;\n }\n\n const providerIdentifier = typeof args?.providerIdentifier === 'string' ? args.providerIdentifier : undefined;\n const toolName = typeof args?.toolName === 'string' ? args.toolName : undefined;\n if (!providerIdentifier || !toolName) {\n return undefined;\n }\n\n const result = toRecord(toolCall.result);\n\n return {\n toolCallId,\n toolName: `mcp__${providerIdentifier}__${toolName}`,\n input: args.args,\n output: result?.value ?? toolCall.result,\n isError: result?.status === 'error' || result?.status === 'failed',\n };\n }\n\n const toolName =\n typeof toolCall.name === 'string' ? toolCall.name : typeof toolCall.type === 'string' ? toolCall.type : undefined;\n if (!toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: 'args' in toolCall ? toolCall.args : undefined,\n output: 'result' in toolCall ? toolCall.result : undefined,\n isError: toolCall.status === 'error',\n };\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> | undefined {\n return value !== null && typeof value === 'object' ? (value as Record<string, unknown>) : undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/index.ts"],"names":["ReadableStream","randomUUID","stream","messageList","MessageList","MastraModelOutput","getOrCreateSpan","SpanType","EntityType","executeWithContext","TransformStream","ChunkFrom","Agent","requestContext","RequestContext","CursorAgent","toolName"],"mappings":"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","file":"index.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { ReadableStream, TransformStream } from 'node:stream/web';\nimport type { ReadableStreamDefaultController } from 'node:stream/web';\n\nimport type { AgentExecutionOptionsBase, MastraLanguageModel } from '@mastra/core/agent';\nimport { MessageList } from '@mastra/core/agent/message-list';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { EntityType, executeWithContext, getOrCreateSpan, SpanType } from '@mastra/core/observability';\nimport type {\n AIModelGenerationSpan,\n CostContext,\n IModelSpanTracker,\n Span,\n UsageStats,\n} from '@mastra/core/observability';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { ChunkType, FullOutput, JSONValue, LanguageModelUsage, ProviderMetadata } from '@mastra/core/stream';\nimport { ChunkFrom, MastraModelOutput } from '@mastra/core/stream';\ntype MastraModelOutputOptions<OUTPUT = undefined> = ConstructorParameters<\n typeof MastraModelOutput<OUTPUT>\n>[0]['options'];\n\nexport type SDKAgentRunOptions<OUTPUT = unknown> = AgentExecutionOptionsBase<OUTPUT> & {\n signal?: AbortSignal;\n [key: string]: unknown;\n};\n\nexport type V3Usage = {\n inputTokens: {\n total: number | undefined;\n noCache?: number;\n cacheRead?: number;\n cacheWrite?: number;\n };\n outputTokens: {\n total: number | undefined;\n text?: number;\n };\n};\n\nexport type SDKModelGenerateResult = {\n content: Array<{ type: 'text'; text: string }>;\n finishReason: { unified: 'stop'; raw: 'stop' };\n usage: V3Usage;\n response: {\n id: string;\n modelId: string;\n timestamp: Date;\n };\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n};\n\nexport function createNoopModel({ modelId, provider }: { modelId: string; provider: string }): MastraLanguageModel {\n return {\n modelId,\n provider,\n specificationVersion: 'v3',\n supportedUrls: {},\n doGenerate: async () => createNoopStreamResult(),\n doStream: async () => createNoopStreamResult(),\n } as MastraLanguageModel;\n}\n\nfunction createNoopStreamResult(): { stream: ReadableStream<never> } {\n return {\n stream: new ReadableStream<never>({\n start: controller => controller.close(),\n }),\n };\n}\n\nexport function createCompletedMastraStream({\n runId,\n prompt,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n}: {\n runId: string;\n prompt: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n}): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start(controller) {\n const textId = randomUUID();\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n });\n if (text) {\n enqueueTextDelta(controller, runId, textId, text);\n }\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n });\n controller.close();\n },\n });\n}\n\nexport function createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider,\n stream,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n modelId: string;\n provider: string;\n stream: ReadableStream<ChunkType>;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): MastraModelOutput<OUTPUT> {\n const messageList = new MessageList();\n messageList.add(messages, 'input');\n messageList.add([{ role: 'assistant', content: '' }], 'response');\n\n return new MastraModelOutput<OUTPUT>({\n model: {\n modelId,\n provider,\n version: 'v3',\n },\n stream: stream as ReadableStream<ChunkType<OUTPUT>>,\n messageList,\n messageId: randomUUID(),\n options: {\n ...options,\n runId,\n },\n });\n}\n\nexport function toFullOutput<OUTPUT>({\n messages,\n runId,\n provider,\n result,\n options,\n}: {\n messages: MessageListInput;\n runId: string;\n provider: string;\n result: SDKModelGenerateResult;\n options?: Partial<MastraModelOutputOptions<OUTPUT>>;\n}): Promise<FullOutput<OUTPUT>> {\n const text = result.content.map(part => part.text).join('');\n const stream = createCompletedMastraStream({\n runId,\n prompt: promptToText(messages),\n text,\n responseId: result.response.id,\n modelId: result.response.modelId,\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n costContext: result.costContext,\n object: result.object,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId: result.response.modelId,\n provider,\n stream,\n options,\n }).getFullOutput();\n}\n\nexport type SDKAgentTelemetryOptions<OUTPUT = unknown> = {\n agentId: string;\n agentName: string;\n provider: string;\n modelId: string;\n messages: MessageListInput;\n prompt: string;\n runId: string;\n streaming: boolean;\n method: 'generate' | 'stream';\n requestContext: RequestContext;\n instructions?: string;\n maxSteps?: SDKAgentRunOptions<OUTPUT>['maxSteps'];\n tracingOptions?: SDKAgentRunOptions<OUTPUT>['tracingOptions'];\n tracingContext?: SDKAgentRunOptions<OUTPUT>['tracingContext'];\n onFinish?: SDKAgentRunOptions<OUTPUT>['onFinish'];\n onStepFinish?: SDKAgentRunOptions<OUTPUT>['onStepFinish'];\n mastra?: Mastra;\n};\n\nexport type SDKAgentTelemetry<OUTPUT = unknown> = {\n execute<T>(fn: () => Promise<T>): Promise<T>;\n endGenerate(result: SDKModelGenerateResult): void;\n fail(error: unknown): void;\n startToolCall(input: SDKAgentToolCallInput): void;\n endToolCall(output: SDKAgentToolCallOutput): void;\n wrapStream(stream: ReadableStream<ChunkType>): ReadableStream<ChunkType>;\n outputOptions(): Partial<MastraModelOutputOptions<OUTPUT>>;\n};\n\nexport type SDKAgentToolCallInput = {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n};\n\nexport type SDKAgentToolCallOutput = {\n toolCallId: string;\n output?: unknown;\n isError?: boolean;\n};\n\nexport function createSDKAgentTelemetry<OUTPUT>({\n agentId,\n agentName,\n provider,\n modelId,\n messages,\n prompt,\n runId,\n streaming,\n method,\n requestContext,\n instructions,\n maxSteps,\n tracingOptions,\n tracingContext,\n onFinish,\n onStepFinish,\n mastra,\n}: SDKAgentTelemetryOptions<OUTPUT>): SDKAgentTelemetry<OUTPUT> {\n const agentSpan = getOrCreateSpan({\n type: SpanType.AGENT_RUN,\n name: `agent run: '${agentId}'`,\n entityType: EntityType.AGENT,\n entityId: agentId,\n entityName: agentName,\n input: messages,\n attributes: {\n prompt,\n instructions,\n maxSteps,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n tracingOptions,\n tracingContext,\n requestContext,\n mastra,\n });\n\n const modelSpan = agentSpan?.createChildSpan({\n type: SpanType.MODEL_GENERATION,\n name: `llm: '${modelId}'`,\n input: {\n messages,\n },\n attributes: {\n model: modelId,\n provider,\n streaming,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n },\n requestContext,\n });\n const modelSpanTracker = getModelSpanTracker(modelSpan);\n const toolSpans = new Map<string, Span<SpanType.TOOL_CALL> | Span<SpanType.MCP_TOOL_CALL>>();\n\n let ended = false;\n\n const startToolCall = ({ toolCallId, toolName, input }: SDKAgentToolCallInput) => {\n if (toolSpans.has(toolCallId)) {\n return;\n }\n\n const parentSpan = agentSpan ?? modelSpan;\n if (!parentSpan) {\n return;\n }\n\n const mcp = parseMcpToolName(toolName);\n const span = mcp\n ? parentSpan.createChildSpan({\n type: SpanType.MCP_TOOL_CALL,\n name: `mcp_tool: '${toolName}' on '${mcp.serverName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n mcpServer: mcp.serverName,\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n })\n : parentSpan.createChildSpan({\n type: SpanType.TOOL_CALL,\n name: `tool: '${toolName}'`,\n input,\n entityType: EntityType.TOOL,\n entityId: toolName,\n entityName: toolName,\n attributes: {\n toolType: 'tool',\n },\n metadata: {\n runId,\n sdkAgent: true,\n sdkProvider: provider,\n sdkMethod: method,\n toolCallId,\n },\n requestContext,\n });\n\n toolSpans.set(toolCallId, span);\n };\n\n const endToolCall = ({ toolCallId, output, isError }: SDKAgentToolCallOutput) => {\n const span = toolSpans.get(toolCallId);\n if (!span) {\n return;\n }\n\n toolSpans.delete(toolCallId);\n if (isError) {\n span.error({\n error:\n output instanceof Error ? output : new Error(typeof output === 'string' ? output : 'SDK tool call failed'),\n attributes: { success: false },\n });\n return;\n }\n\n span.end({\n output,\n attributes: { success: true },\n });\n };\n\n const closeOpenToolSpans = (success: boolean, error?: unknown) => {\n for (const [toolCallId, span] of toolSpans) {\n toolSpans.delete(toolCallId);\n if (success) {\n span.end({ attributes: { success: true } });\n continue;\n }\n\n const normalized = error instanceof Error ? error : new Error(String(error ?? 'SDK agent run failed'));\n span.error({ error: normalized, attributes: { success: false } });\n }\n };\n\n const endModel = ({\n text,\n usage,\n providerMetadata,\n finishReason = 'stop',\n responseId,\n responseModel,\n costContext,\n }: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (modelSpanTracker) {\n modelSpanTracker.endGeneration({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n costContext,\n },\n usage,\n providerMetadata,\n });\n return;\n }\n\n modelSpan?.end({\n output: {\n text,\n },\n attributes: {\n finishReason,\n responseId,\n responseModel,\n usage: usage ? toUsageStats(usage) : undefined,\n costContext,\n },\n });\n };\n\n const end = (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => {\n if (ended) {\n return;\n }\n\n ended = true;\n closeOpenToolSpans(true);\n endModel(result);\n agentSpan?.end({\n output: {\n text: result.text,\n },\n });\n };\n\n const fail = (error: unknown) => {\n if (ended) {\n return;\n }\n\n ended = true;\n const normalized = error instanceof Error ? error : new Error(String(error));\n closeOpenToolSpans(false, normalized);\n if (modelSpanTracker) {\n modelSpanTracker.reportGenerationError({ error: normalized });\n } else {\n modelSpan?.error({ error: normalized });\n }\n agentSpan?.error({ error: normalized });\n };\n\n return {\n execute: fn => executeWithContext({ span: modelSpan ?? agentSpan, fn }),\n endGenerate(result) {\n end({\n text: result.content.map(part => part.text).join(''),\n usage: toLanguageModelUsage(result.usage),\n providerMetadata: result.providerMetadata,\n finishReason: result.finishReason.unified,\n responseId: result.response.id,\n responseModel: result.response.modelId,\n costContext: result.costContext,\n });\n },\n fail,\n startToolCall,\n endToolCall,\n wrapStream(stream) {\n const trackedStream = (modelSpanTracker?.wrapStream(stream) ?? stream) as ReadableStream<ChunkType>;\n return wrapStreamForAgentSpan(trackedStream, {\n end,\n fail,\n });\n },\n outputOptions() {\n return {\n onFinish,\n onStepFinish,\n requestContext,\n tracingContext: agentSpan ? { currentSpan: agentSpan } : tracingContext,\n };\n },\n };\n}\n\nfunction parseMcpToolName(toolName: string): { serverName: string; toolName: string } | undefined {\n const match = /^mcp__([^_].*?)__(.+)$/.exec(toolName);\n if (!match?.[1] || !match[2]) {\n return undefined;\n }\n\n return {\n serverName: match[1],\n toolName: match[2],\n };\n}\n\nfunction getModelSpanTracker(\n modelSpan: Span<SpanType.MODEL_GENERATION> | AIModelGenerationSpan | undefined,\n): IModelSpanTracker | undefined {\n if (!modelSpan || !('createTracker' in modelSpan)) {\n return undefined;\n }\n\n return modelSpan.createTracker();\n}\n\nfunction wrapStreamForAgentSpan(\n stream: ReadableStream<ChunkType>,\n telemetry: {\n end: (result: {\n text: string;\n usage?: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n finishReason?: string;\n responseId?: string;\n responseModel?: string;\n costContext?: CostContext;\n }) => void;\n fail: (error: unknown) => void;\n },\n): ReadableStream<ChunkType> {\n let text = '';\n\n return stream.pipeThrough(\n new TransformStream<ChunkType, ChunkType>({\n transform(chunk, controller) {\n if (chunk.type === 'text-delta') {\n text += chunk.payload.text;\n }\n\n if (chunk.type === 'finish') {\n telemetry.end({\n text,\n usage: chunk.payload.output.usage,\n providerMetadata: chunk.payload.providerMetadata,\n finishReason: chunk.payload.stepResult.reason,\n responseId: chunk.payload.response?.id,\n responseModel: chunk.payload.response?.modelId,\n costContext: getCostContext(chunk.payload.metadata?.costContext),\n });\n }\n\n if (chunk.type === 'error') {\n telemetry.fail(chunk.payload.error);\n }\n\n controller.enqueue(chunk);\n },\n flush() {\n telemetry.end({ text });\n },\n }),\n );\n}\n\nfunction toUsageStats(usage: LanguageModelUsage): UsageStats {\n return {\n inputTokens: usage.inputTokens,\n outputTokens: usage.outputTokens,\n inputDetails: {\n cacheRead: usage.cachedInputTokens,\n cacheWrite: usage.cacheCreationInputTokens,\n },\n outputDetails: {\n text: usage.outputTokens,\n reasoning: usage.reasoningTokens,\n },\n };\n}\n\nfunction getCostContext(value: unknown): CostContext | undefined {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n return value as CostContext;\n}\n\nexport function enqueueStartChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n responseId,\n modelId,\n providerMetadata,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n responseId: string;\n modelId: string;\n providerMetadata?: ProviderMetadata;\n },\n): void {\n controller.enqueue({\n type: 'start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {},\n });\n controller.enqueue({\n type: 'step-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n request: { body: prompt },\n },\n });\n controller.enqueue({\n type: 'response-metadata',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n modelId,\n timestamp: new Date().toISOString(),\n },\n });\n controller.enqueue({\n type: 'text-start',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n}\n\nexport function enqueueTextDelta(\n controller: ReadableStreamDefaultController<ChunkType>,\n runId: string,\n textId: string,\n text: string,\n): void {\n controller.enqueue({\n type: 'text-delta',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n text,\n },\n });\n}\n\nexport function enqueueFinishChunks(\n controller: ReadableStreamDefaultController<ChunkType>,\n {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId,\n usage,\n providerMetadata,\n costContext,\n object,\n }: {\n runId: string;\n prompt: string;\n textId: string;\n text: string;\n responseId: string;\n modelId: string;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n costContext?: CostContext;\n object?: unknown;\n },\n): void {\n const timestamp = new Date();\n const response = {\n id: responseId,\n modelId,\n timestamp,\n };\n const metadata = {\n providerMetadata,\n costContext,\n request: { body: prompt },\n modelId,\n timestamp,\n };\n\n controller.enqueue({\n type: 'text-end',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: textId,\n providerMetadata,\n },\n });\n if (object !== undefined) {\n controller.enqueue({\n type: 'object-result',\n runId,\n from: ChunkFrom.AGENT,\n object,\n } as unknown as ChunkType);\n }\n controller.enqueue({\n type: 'step-finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n id: responseId,\n providerMetadata,\n totalUsage: usage,\n response,\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n text,\n usage,\n steps: [],\n },\n metadata,\n },\n });\n controller.enqueue({\n type: 'finish',\n runId,\n from: ChunkFrom.AGENT,\n payload: {\n stepResult: {\n reason: 'stop',\n warnings: [],\n },\n output: {\n usage,\n steps: [],\n },\n metadata,\n providerMetadata,\n messages: {\n all: [],\n user: [],\n nonUser: [],\n },\n response,\n },\n });\n}\n\nexport function toLanguageModelUsage(usage: V3Usage): LanguageModelUsage {\n const inputTokens = usage.inputTokens.total ?? 0;\n const outputTokens = usage.outputTokens.total ?? 0;\n\n return {\n inputTokens,\n outputTokens,\n totalTokens: inputTokens + outputTokens,\n cachedInputTokens: usage.inputTokens.cacheRead,\n cacheCreationInputTokens: usage.inputTokens.cacheWrite,\n raw: usage,\n };\n}\n\nexport function createProviderMetadata(provider: string, metadata: Record<string, unknown>): ProviderMetadata {\n return {\n [provider]: toJsonRecord(metadata),\n };\n}\n\nfunction toJsonRecord(record: Record<string, unknown>): Record<string, JSONValue> {\n return Object.fromEntries(\n Object.entries(record)\n .filter((entry): entry is [string, Exclude<unknown, undefined>] => entry[1] !== undefined)\n .map(([key, value]) => [key, toJsonValue(value)]),\n );\n}\n\nfunction toJsonValue(value: unknown): JSONValue {\n if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined).map(toJsonValue);\n }\n\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (typeof value === 'object') {\n return toJsonRecord(value as Record<string, unknown>);\n }\n\n return String(value);\n}\n\nexport function promptToText(prompt: unknown): string {\n if (typeof prompt === 'string') {\n return prompt;\n }\n\n if (Array.isArray(prompt)) {\n return prompt.map(promptToText).filter(Boolean).join('\\n');\n }\n\n if (!prompt || typeof prompt !== 'object') {\n return '';\n }\n\n const record = prompt as Record<string, unknown>;\n if (typeof record.text === 'string') {\n return record.text;\n }\n if (typeof record.content === 'string') {\n return record.content;\n }\n if (record.content) {\n return promptToText(record.content);\n }\n\n return '';\n}\n\nexport function sumDefined(...values: Array<number | undefined>): number | undefined {\n const defined = values.filter((value): value is number => typeof value === 'number');\n if (defined.length === 0) {\n return undefined;\n }\n\n return defined.reduce((sum, value) => sum + value, 0);\n}\n","import { randomUUID } from 'node:crypto';\nimport { ReadableStream } from 'node:stream/web';\n\nimport { Agent as CursorAgent } from '@cursor/sdk';\nimport type {\n AgentOptions as CursorCreateOptions,\n InteractionUpdate,\n ModelSelection,\n Run,\n SDKAgent,\n SDKMessage,\n SendOptions,\n} from '@cursor/sdk';\n\nimport { Agent } from '@mastra/core/agent';\nimport type { MessageListInput } from '@mastra/core/agent/message-list';\nimport type { Mastra } from '@mastra/core/mastra';\nimport { RequestContext } from '@mastra/core/request-context';\nimport type {\n ChunkType,\n FullOutput,\n LanguageModelUsage,\n ProviderMetadata,\n MastraModelOutput,\n} from '@mastra/core/stream';\nimport { ChunkFrom } from '@mastra/core/stream';\nimport {\n createMastraOutput,\n createNoopModel,\n createProviderMetadata,\n createSDKAgentTelemetry,\n enqueueFinishChunks,\n enqueueStartChunks,\n enqueueTextDelta,\n promptToText,\n sumDefined,\n toFullOutput,\n toLanguageModelUsage,\n} from './utils';\nimport type { SDKAgentRunOptions, SDKAgentTelemetry, SDKModelGenerateResult, V3Usage } from './utils';\n\nconst PROVIDER = '@cursor/sdk';\nconst MODEL_ID = 'cursor-agent-sdk';\n\ntype CursorUsageTotals = {\n inputTokens?: number;\n outputTokens?: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n};\n\ntype CursorToolTelemetry = Pick<SDKAgentTelemetry, 'startToolCall' | 'endToolCall'>;\n\nexport type CursorAgentFactory = (options: CursorCreateOptions) => SDKAgent | Promise<SDKAgent>;\nexport type CursorAgentInput = SDKAgent | Promise<SDKAgent> | CursorAgentFactory;\n\nexport type CursorSDKAgentResumeData = {\n /**\n * Message to send while continuing the Cursor SDK agent.\n */\n message: MessageListInput;\n /**\n * Cursor SDK agent id to resume. If omitted, the wrapped SDK agent is reused.\n */\n agentId?: string;\n /**\n * Cursor SDK options used only when `agentId` is provided.\n */\n sdkOptions?: Partial<CursorCreateOptions>;\n};\n\ntype CursorSDKAgentBaseOptions = {\n /**\n * Mastra agent id used when registering this wrapper with Mastra.\n */\n id: string;\n /**\n * Optional display name for the Mastra agent. Defaults to `id`.\n */\n name?: string;\n /**\n * Description surfaced by Mastra when listing or selecting agents.\n */\n description: string;\n};\n\nexport type CursorAgentOptions = CursorSDKAgentBaseOptions &\n (\n | {\n /**\n * Pre-created Cursor SDK agent. Pass this when you manage the SDK\n * agent lifecycle yourself.\n */\n agent: SDKAgent | Promise<SDKAgent>;\n sdkOptions?: never;\n }\n | {\n /**\n * Cursor SDK agent factory. The wrapper calls it with `sdkOptions`,\n * including defaults such as `process.env.CURSOR_API_KEY`.\n */\n agent: CursorAgentFactory;\n sdkOptions?: CursorCreateOptions;\n }\n | {\n agent?: never;\n /**\n * Cursor SDK options used to create an SDK agent. Defaults `apiKey` to\n * `process.env.CURSOR_API_KEY` when not provided.\n */\n sdkOptions: CursorCreateOptions;\n }\n );\n\nexport class CursorSDKAgent extends Agent {\n readonly options: CursorAgentOptions;\n #mastra?: Mastra;\n #createdAgent?: Promise<SDKAgent>;\n\n constructor(options: CursorAgentOptions) {\n super({\n id: options.id,\n name: options.name ?? options.id,\n description: options.description,\n instructions: '',\n model: createNoopModel({\n modelId: getModelId(getRequestedModel(options)),\n provider: PROVIDER,\n }),\n });\n this.options = options;\n }\n\n override __registerMastra(mastra: Mastra): void {\n super.__registerMastra(mastra);\n this.#mastra = mastra;\n }\n\n supportsMemory(): boolean {\n return false;\n }\n\n async generate<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n assertStructuredOutputUnsupported(options);\n const sdkAgent = await this.resolveCursorAgent();\n return this.generateWithAgent(messages, sdkAgent, options);\n }\n\n private async generateWithAgent<OUTPUT = undefined>(\n messages: MessageListInput,\n sdkAgent: SDKAgent,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n const prompt = promptToText(messages);\n const runId = options?.runId ?? randomUUID();\n const modelId = getCursorModelId(this.options, sdkAgent);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: false,\n method: 'generate',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n let result: SDKModelGenerateResult;\n try {\n result = await telemetry.execute(() => runCursorGenerate(prompt, this.options, sdkAgent, telemetry));\n telemetry.endGenerate(result);\n } catch (error) {\n telemetry.fail(error);\n throw error;\n }\n\n return toFullOutput<OUTPUT>({\n messages,\n runId,\n provider: PROVIDER,\n result,\n options: telemetry.outputOptions(),\n });\n }\n\n async stream<OUTPUT = undefined>(\n messages: MessageListInput,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n assertStructuredOutputUnsupported(options);\n const sdkAgent = await this.resolveCursorAgent();\n return this.streamWithAgent(messages, sdkAgent, options);\n }\n\n private async streamWithAgent<OUTPUT = undefined>(\n messages: MessageListInput,\n sdkAgent: SDKAgent,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n const runId = options?.runId ?? randomUUID();\n const prompt = promptToText(messages);\n const modelId = getCursorModelId(this.options, sdkAgent);\n const requestContext = options?.requestContext ?? new RequestContext();\n const instructions = options?.instructions ? promptToText(options.instructions) : undefined;\n const telemetry = createSDKAgentTelemetry({\n agentId: this.id,\n agentName: this.name,\n provider: PROVIDER,\n modelId,\n messages,\n prompt,\n runId,\n streaming: true,\n method: 'stream',\n requestContext,\n instructions,\n maxSteps: options?.maxSteps,\n tracingOptions: options?.tracingOptions,\n tracingContext: options?.tracingContext,\n onFinish: options?.onFinish,\n onStepFinish: options?.onStepFinish,\n mastra: this.#mastra,\n });\n\n return createMastraOutput<OUTPUT>({\n messages,\n runId,\n modelId,\n provider: PROVIDER,\n stream: telemetry.wrapStream(runCursorAsMastraStream(prompt, this.options, sdkAgent, runId, telemetry)),\n options: telemetry.outputOptions(),\n });\n }\n\n async resumeGenerate<OUTPUT = undefined>(\n resumeData: CursorSDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<FullOutput<OUTPUT>> {\n assertStructuredOutputUnsupported(options);\n const data = validateCursorResumeData(resumeData);\n const sdkAgent = await this.resolveResumeCursorAgent(data);\n return this.generateWithAgent(data.message, sdkAgent, options);\n }\n\n async resumeStream<OUTPUT = undefined>(\n resumeData: CursorSDKAgentResumeData,\n options?: SDKAgentRunOptions<OUTPUT>,\n ): Promise<MastraModelOutput<OUTPUT>> {\n assertStructuredOutputUnsupported(options);\n const data = validateCursorResumeData(resumeData);\n const sdkAgent = await this.resolveResumeCursorAgent(data);\n return this.streamWithAgent(data.message, sdkAgent, options);\n }\n\n private resolveCursorAgent(): Promise<SDKAgent> {\n this.#createdAgent ??= resolveCursorAgent(this.options.agent, this.options).catch(error => {\n this.#createdAgent = undefined;\n throw error;\n });\n return this.#createdAgent;\n }\n\n private async resolveResumeCursorAgent(resumeData: CursorSDKAgentResumeData): Promise<SDKAgent> {\n if (!resumeData.agentId) {\n return this.resolveCursorAgent();\n }\n\n return CursorAgent.resume(resumeData.agentId, {\n ...toCursorCreateOptions(this.options),\n ...resumeData.sdkOptions,\n });\n }\n}\n\nfunction validateCursorResumeData(resumeData: CursorSDKAgentResumeData): CursorSDKAgentResumeData {\n if (!toRecord(resumeData) || !('message' in resumeData)) {\n throw new Error('CursorSDKAgent resumeData must include a message.');\n }\n\n if (resumeData.agentId !== undefined && typeof resumeData.agentId !== 'string') {\n throw new Error('CursorSDKAgent resumeData.agentId must be a string when provided.');\n }\n\n return resumeData;\n}\n\nfunction assertStructuredOutputUnsupported(options?: unknown): void {\n const structuredOutput = toRecord(toRecord(options)?.structuredOutput);\n if (structuredOutput && 'schema' in structuredOutput) {\n throw new Error(\n 'CursorSDKAgent does not support structuredOutput because the Cursor TypeScript SDK does not expose a schema-constrained output API.',\n );\n }\n}\n\nasync function runCursorGenerate(\n prompt: string,\n options: CursorAgentOptions,\n agent: SDKAgent,\n telemetry: CursorToolTelemetry,\n): Promise<SDKModelGenerateResult> {\n const usage = createCursorUsageCollector();\n const run = await agent.send(prompt, createCursorSendOptions(options, usage, telemetry));\n const result = await run.wait();\n\n if (result.status === 'error' || result.status === 'cancelled') {\n throw new Error(`Cursor run ${result.id} ended with status ${result.status}`);\n }\n\n const responseModel = getModelId(result.model ?? run.model ?? getRequestedModel(options) ?? agent.model);\n const providerMetadata = getCursorProviderMetadata(\n options,\n agent.agentId,\n result.id,\n result.status,\n result.durationMs,\n usage.totals(),\n responseModel,\n );\n\n return {\n content: [{ type: 'text', text: result.result ?? '' }],\n finishReason: { unified: 'stop', raw: 'stop' },\n usage: usage.toV3Usage(),\n response: {\n id: result.id,\n modelId: responseModel,\n timestamp: new Date(),\n },\n providerMetadata,\n };\n}\n\nfunction runCursorAsMastraStream(\n prompt: string,\n options: CursorAgentOptions,\n agent: SDKAgent,\n runId: string,\n telemetry: CursorToolTelemetry,\n): ReadableStream<ChunkType> {\n return new ReadableStream<ChunkType>({\n start: async controller => {\n const textId = randomUUID();\n const usage = createCursorUsageCollector();\n let text = '';\n\n try {\n const run = await agent.send(prompt, createCursorSendOptions(options, usage, telemetry));\n const responseId = run.id;\n const responseModel = getModelId(run.model ?? getRequestedModel(options) ?? agent.model);\n\n enqueueStartChunks(controller, {\n runId,\n prompt,\n textId,\n responseId,\n modelId: responseModel,\n providerMetadata: getCursorProviderMetadata(\n options,\n agent.agentId,\n run.id,\n run.status,\n run.durationMs,\n usage.totals(),\n responseModel,\n ),\n });\n\n let result: Awaited<ReturnType<Run['wait']>> | undefined;\n if (run.supports('stream')) {\n for await (const message of run.stream()) {\n const delta = getTextFromCursorMessage(message);\n if (delta) {\n text += delta;\n enqueueTextDelta(controller, runId, textId, delta);\n }\n }\n result = await run.wait();\n } else {\n result = await run.wait();\n if (result.status === 'error' || result.status === 'cancelled') {\n throw new Error(`Cursor run ${result.id} ended with status ${result.status}`);\n }\n if (result.result) {\n text += result.result;\n enqueueTextDelta(controller, runId, textId, result.result);\n }\n }\n\n if (result.status === 'error' || result.status === 'cancelled') {\n throw new Error(`Cursor run ${result.id} ended with status ${result.status}`);\n }\n\n if (!text && result.result) {\n text = result.result;\n enqueueTextDelta(controller, runId, textId, result.result);\n }\n\n const providerMetadata = getCursorProviderMetadata(\n options,\n agent.agentId,\n run.id,\n result.status,\n result.durationMs,\n usage.totals(),\n getModelId(result.model ?? run.model ?? getRequestedModel(options) ?? agent.model),\n );\n enqueueFinishChunks(controller, {\n runId,\n prompt,\n textId,\n text,\n responseId,\n modelId: getModelId(result.model ?? run.model ?? getRequestedModel(options) ?? agent.model),\n usage: usage.toLanguageModelUsage(),\n providerMetadata,\n });\n controller.close();\n } catch (error) {\n controller.enqueue({\n type: 'error',\n runId,\n from: ChunkFrom.AGENT,\n payload: { error },\n });\n controller.close();\n }\n },\n });\n}\n\nasync function resolveCursorAgent(agent: CursorAgentInput | undefined, options: CursorAgentOptions): Promise<SDKAgent> {\n if (!agent) {\n return CursorAgent.create(toCursorCreateOptions(options));\n }\n\n return typeof agent === 'function' ? agent(toCursorCreateOptions(options)) : agent;\n}\n\nfunction toCursorCreateOptions(options: CursorAgentOptions): CursorCreateOptions {\n const createOptions: CursorCreateOptions = { ...options.sdkOptions };\n const apiKey = createOptions.apiKey ?? process.env['CURSOR_API_KEY'];\n\n if (apiKey) createOptions.apiKey = apiKey;\n if (options.name && !createOptions.name) createOptions.name = options.name;\n\n return createOptions;\n}\n\nfunction createCursorSendOptions(\n options: CursorAgentOptions,\n usage: CursorUsageCollector,\n telemetry: CursorToolTelemetry,\n): SendOptions {\n return {\n mcpServers: options.sdkOptions?.mcpServers,\n onDelta: async args => {\n usage.record(args.update);\n recordCursorToolTelemetry(args.update, telemetry);\n },\n };\n}\n\ntype CursorUsageCollector = ReturnType<typeof createCursorUsageCollector>;\n\nfunction createCursorUsageCollector() {\n const totals: Required<CursorUsageTotals> = {\n inputTokens: 0,\n outputTokens: 0,\n cacheReadTokens: 0,\n cacheWriteTokens: 0,\n };\n\n return {\n record(update: InteractionUpdate) {\n if (update.type !== 'turn-ended' || !update.usage) {\n return;\n }\n\n totals.inputTokens += update.usage.inputTokens;\n totals.outputTokens += update.usage.outputTokens;\n totals.cacheReadTokens += update.usage.cacheReadTokens;\n totals.cacheWriteTokens += update.usage.cacheWriteTokens;\n },\n totals(): CursorUsageTotals {\n return {\n inputTokens: totals.inputTokens || undefined,\n outputTokens: totals.outputTokens || undefined,\n cacheReadTokens: totals.cacheReadTokens || undefined,\n cacheWriteTokens: totals.cacheWriteTokens || undefined,\n };\n },\n toV3Usage(): V3Usage {\n return toV3Usage(totals);\n },\n toLanguageModelUsage(): LanguageModelUsage {\n return toLanguageModelUsage(toV3Usage(totals));\n },\n };\n}\n\nfunction toV3Usage(usage: CursorUsageTotals): V3Usage {\n const noCache = usage.inputTokens;\n const cacheRead = usage.cacheReadTokens;\n const cacheWrite = usage.cacheWriteTokens;\n const totalInputTokens = sumDefined(noCache, cacheRead, cacheWrite);\n const outputTokens = usage.outputTokens;\n\n return {\n inputTokens: {\n total: totalInputTokens,\n noCache,\n cacheRead,\n cacheWrite,\n },\n outputTokens: {\n total: outputTokens,\n text: outputTokens,\n },\n };\n}\n\nfunction getRequestedModel(options: CursorAgentOptions): ModelSelection | undefined {\n return options.sdkOptions?.model;\n}\n\nfunction getModelId(model: ModelSelection | undefined): string {\n if (!model) {\n return MODEL_ID;\n }\n\n return typeof model === 'string' ? model : model.id;\n}\n\nfunction getCursorModelId(options: CursorAgentOptions, agent: SDKAgent): string {\n return getModelId(getRequestedModel(options) ?? agent.model);\n}\n\nfunction getCursorProviderMetadata(\n options: CursorAgentOptions,\n agentId: string,\n runId: string,\n status?: Run['status'],\n durationMs?: number,\n usage?: CursorUsageTotals,\n requestedModel?: string,\n): ProviderMetadata {\n return createProviderMetadata('cursor', {\n agentId,\n runId,\n status,\n requestedModel: requestedModel ?? getModelId(getRequestedModel(options)),\n durationMs,\n mcpServerNames: getMcpServerNames(options),\n usage,\n });\n}\n\nfunction getMcpServerNames(options: CursorAgentOptions): string[] | undefined {\n const servers = options.sdkOptions?.mcpServers;\n return servers ? Object.keys(servers) : undefined;\n}\n\nfunction getTextFromCursorMessage(message: SDKMessage): string {\n if (message.type === 'assistant') {\n return message.message.content\n .map(block => {\n if (block.type === 'text') {\n return block.text;\n }\n\n return '';\n })\n .filter(Boolean)\n .join('');\n }\n\n if (message.type === 'task') {\n return message.text ?? '';\n }\n\n return '';\n}\n\nfunction recordCursorToolTelemetry(update: InteractionUpdate, telemetry: CursorToolTelemetry): void {\n const updateRecord = toRecord(update);\n if (!updateRecord) {\n return;\n }\n\n const updateType = typeof updateRecord?.type === 'string' ? updateRecord.type : undefined;\n\n if (\n updateType !== 'tool-call-started' &&\n updateType !== 'partial-tool-call' &&\n updateType !== 'tool-call-completed'\n ) {\n return;\n }\n\n const toolCall = getCursorToolCall(updateRecord);\n if (!toolCall) {\n return;\n }\n\n if (updateType === 'tool-call-started' || updateType === 'partial-tool-call') {\n telemetry.startToolCall({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n });\n return;\n }\n\n telemetry.startToolCall({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n });\n telemetry.endToolCall({\n toolCallId: toolCall.toolCallId,\n output: toolCall.output,\n isError: toolCall.isError,\n });\n}\n\nfunction getCursorToolCall(update: Record<string, unknown>):\n | {\n toolCallId: string;\n toolName: string;\n input?: unknown;\n output?: unknown;\n isError?: boolean;\n }\n | undefined {\n const toolCallId = typeof update.callId === 'string' ? update.callId : undefined;\n const toolCall = toRecord(update.toolCall);\n if (!toolCallId || !toolCall) {\n return undefined;\n }\n\n if (toolCall.type === 'mcp') {\n const args = toRecord(toolCall.args);\n if (!args) {\n return undefined;\n }\n\n const providerIdentifier = typeof args?.providerIdentifier === 'string' ? args.providerIdentifier : undefined;\n const toolName = typeof args?.toolName === 'string' ? args.toolName : undefined;\n if (!providerIdentifier || !toolName) {\n return undefined;\n }\n\n const result = toRecord(toolCall.result);\n\n return {\n toolCallId,\n toolName: `mcp__${providerIdentifier}__${toolName}`,\n input: args.args,\n output: result?.value ?? toolCall.result,\n isError: result?.status === 'error' || result?.status === 'failed',\n };\n }\n\n const toolName =\n typeof toolCall.name === 'string' ? toolCall.name : typeof toolCall.type === 'string' ? toolCall.type : undefined;\n if (!toolName) {\n return undefined;\n }\n\n return {\n toolCallId,\n toolName,\n input: 'args' in toolCall ? toolCall.args : undefined,\n output: 'result' in toolCall ? toolCall.result : undefined,\n isError: toolCall.status === 'error',\n };\n}\n\nfunction toRecord(value: unknown): Record<string, unknown> | undefined {\n return value !== null && typeof value === 'object' ? (value as Record<string, unknown>) : undefined;\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,21 @@ import type { FullOutput, MastraModelOutput } from '@mastra/core/stream';
|
|
|
6
6
|
import type { SDKAgentRunOptions } from './utils.js';
|
|
7
7
|
export type CursorAgentFactory = (options: CursorCreateOptions) => SDKAgent | Promise<SDKAgent>;
|
|
8
8
|
export type CursorAgentInput = SDKAgent | Promise<SDKAgent> | CursorAgentFactory;
|
|
9
|
-
export type
|
|
9
|
+
export type CursorSDKAgentResumeData = {
|
|
10
|
+
/**
|
|
11
|
+
* Message to send while continuing the Cursor SDK agent.
|
|
12
|
+
*/
|
|
13
|
+
message: MessageListInput;
|
|
14
|
+
/**
|
|
15
|
+
* Cursor SDK agent id to resume. If omitted, the wrapped SDK agent is reused.
|
|
16
|
+
*/
|
|
17
|
+
agentId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Cursor SDK options used only when `agentId` is provided.
|
|
20
|
+
*/
|
|
21
|
+
sdkOptions?: Partial<CursorCreateOptions>;
|
|
22
|
+
};
|
|
23
|
+
type CursorSDKAgentBaseOptions = {
|
|
10
24
|
/**
|
|
11
25
|
* Mastra agent id used when registering this wrapper with Mastra.
|
|
12
26
|
*/
|
|
@@ -19,26 +33,29 @@ export type CursorAgentOptions = {
|
|
|
19
33
|
* Description surfaced by Mastra when listing or selecting agents.
|
|
20
34
|
*/
|
|
21
35
|
description: string;
|
|
36
|
+
};
|
|
37
|
+
export type CursorAgentOptions = CursorSDKAgentBaseOptions & ({
|
|
22
38
|
/**
|
|
23
|
-
* Cursor SDK agent
|
|
24
|
-
*
|
|
25
|
-
* `CursorAgent.create()` with `sdkOptions`.
|
|
26
|
-
*
|
|
27
|
-
* If you pass `CursorAgent.create({...})`, that promise has already been
|
|
28
|
-
* created by the Cursor SDK and wrapper-level create options cannot be
|
|
29
|
-
* merged into it. Put all Cursor create options in that call, or pass the
|
|
30
|
-
* factory itself as `agent: CursorAgent.create`.
|
|
31
|
-
*
|
|
32
|
-
* The factory path allows Mastra to hydrate defaults such as `apiKey`.
|
|
39
|
+
* Pre-created Cursor SDK agent. Pass this when you manage the SDK
|
|
40
|
+
* agent lifecycle yourself.
|
|
33
41
|
*/
|
|
34
|
-
agent
|
|
42
|
+
agent: SDKAgent | Promise<SDKAgent>;
|
|
43
|
+
sdkOptions?: never;
|
|
44
|
+
} | {
|
|
35
45
|
/**
|
|
36
|
-
* Cursor SDK
|
|
37
|
-
*
|
|
38
|
-
* provided.
|
|
46
|
+
* Cursor SDK agent factory. The wrapper calls it with `sdkOptions`,
|
|
47
|
+
* including defaults such as `process.env.CURSOR_API_KEY`.
|
|
39
48
|
*/
|
|
49
|
+
agent: CursorAgentFactory;
|
|
40
50
|
sdkOptions?: CursorCreateOptions;
|
|
41
|
-
}
|
|
51
|
+
} | {
|
|
52
|
+
agent?: never;
|
|
53
|
+
/**
|
|
54
|
+
* Cursor SDK options used to create an SDK agent. Defaults `apiKey` to
|
|
55
|
+
* `process.env.CURSOR_API_KEY` when not provided.
|
|
56
|
+
*/
|
|
57
|
+
sdkOptions: CursorCreateOptions;
|
|
58
|
+
});
|
|
42
59
|
export declare class CursorSDKAgent extends Agent {
|
|
43
60
|
#private;
|
|
44
61
|
readonly options: CursorAgentOptions;
|
|
@@ -46,7 +63,13 @@ export declare class CursorSDKAgent extends Agent {
|
|
|
46
63
|
__registerMastra(mastra: Mastra): void;
|
|
47
64
|
supportsMemory(): boolean;
|
|
48
65
|
generate<OUTPUT = undefined>(messages: MessageListInput, options?: SDKAgentRunOptions<OUTPUT>): Promise<FullOutput<OUTPUT>>;
|
|
66
|
+
private generateWithAgent;
|
|
49
67
|
stream<OUTPUT = undefined>(messages: MessageListInput, options?: SDKAgentRunOptions<OUTPUT>): Promise<MastraModelOutput<OUTPUT>>;
|
|
68
|
+
private streamWithAgent;
|
|
69
|
+
resumeGenerate<OUTPUT = undefined>(resumeData: CursorSDKAgentResumeData, options?: SDKAgentRunOptions<OUTPUT>): Promise<FullOutput<OUTPUT>>;
|
|
70
|
+
resumeStream<OUTPUT = undefined>(resumeData: CursorSDKAgentResumeData, options?: SDKAgentRunOptions<OUTPUT>): Promise<MastraModelOutput<OUTPUT>>;
|
|
50
71
|
private resolveCursorAgent;
|
|
72
|
+
private resolveResumeCursorAgent;
|
|
51
73
|
}
|
|
74
|
+
export {};
|
|
52
75
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,IAAI,mBAAmB,EAInC,QAAQ,EAGT,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAEV,UAAU,EAGV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAe7B,OAAO,KAAK,EAAE,kBAAkB,EAAsD,MAAM,SAAS,CAAC;AActG,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChG,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;AAEjF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,IAAI,mBAAmB,EAInC,QAAQ,EAGT,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAEV,UAAU,EAGV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAe7B,OAAO,KAAK,EAAE,kBAAkB,EAAsD,MAAM,SAAS,CAAC;AActG,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChG,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;AAEjF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC3C,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,yBAAyB,GACxD,CACI;IACE;;;OAGG;IACH,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,GACD;IACE;;;OAGG;IACH,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC,GACD;IACE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,UAAU,EAAE,mBAAmB,CAAC;CACjC,CACJ,CAAC;AAEJ,qBAAa,cAAe,SAAQ,KAAK;;IACvC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;gBAIzB,OAAO,EAAE,kBAAkB;IAc9B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/C,cAAc,IAAI,OAAO;IAInB,QAAQ,CAAC,MAAM,GAAG,SAAS,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAMhB,iBAAiB;IA+CzB,MAAM,CAAC,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAMvB,eAAe;IAwCvB,cAAc,CAAC,MAAM,GAAG,SAAS,EACrC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAOxB,YAAY,CAAC,MAAM,GAAG,SAAS,EACnC,UAAU,EAAE,wBAAwB,EACpC,OAAO,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACnC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAOrC,OAAO,CAAC,kBAAkB;YAQZ,wBAAwB;CAUvC"}
|
package/dist/index.js
CHANGED
|
@@ -33,7 +33,8 @@ function createCompletedMastraStream({
|
|
|
33
33
|
modelId,
|
|
34
34
|
usage,
|
|
35
35
|
providerMetadata,
|
|
36
|
-
costContext
|
|
36
|
+
costContext,
|
|
37
|
+
object
|
|
37
38
|
}) {
|
|
38
39
|
return new ReadableStream({
|
|
39
40
|
start(controller) {
|
|
@@ -58,7 +59,8 @@ function createCompletedMastraStream({
|
|
|
58
59
|
modelId,
|
|
59
60
|
usage,
|
|
60
61
|
providerMetadata,
|
|
61
|
-
costContext
|
|
62
|
+
costContext,
|
|
63
|
+
object
|
|
62
64
|
});
|
|
63
65
|
controller.close();
|
|
64
66
|
}
|
|
@@ -106,7 +108,8 @@ function toFullOutput({
|
|
|
106
108
|
modelId: result.response.modelId,
|
|
107
109
|
usage: toLanguageModelUsage(result.usage),
|
|
108
110
|
providerMetadata: result.providerMetadata,
|
|
109
|
-
costContext: result.costContext
|
|
111
|
+
costContext: result.costContext,
|
|
112
|
+
object: result.object
|
|
110
113
|
});
|
|
111
114
|
return createMastraOutput({
|
|
112
115
|
messages,
|
|
@@ -484,7 +487,8 @@ function enqueueFinishChunks(controller, {
|
|
|
484
487
|
modelId,
|
|
485
488
|
usage,
|
|
486
489
|
providerMetadata,
|
|
487
|
-
costContext
|
|
490
|
+
costContext,
|
|
491
|
+
object
|
|
488
492
|
}) {
|
|
489
493
|
const timestamp = /* @__PURE__ */ new Date();
|
|
490
494
|
const response = {
|
|
@@ -508,6 +512,14 @@ function enqueueFinishChunks(controller, {
|
|
|
508
512
|
providerMetadata
|
|
509
513
|
}
|
|
510
514
|
});
|
|
515
|
+
if (object !== void 0) {
|
|
516
|
+
controller.enqueue({
|
|
517
|
+
type: "object-result",
|
|
518
|
+
runId,
|
|
519
|
+
from: ChunkFrom.AGENT,
|
|
520
|
+
object
|
|
521
|
+
});
|
|
522
|
+
}
|
|
511
523
|
controller.enqueue({
|
|
512
524
|
type: "step-finish",
|
|
513
525
|
runId,
|
|
@@ -648,9 +660,13 @@ var CursorSDKAgent = class extends Agent {
|
|
|
648
660
|
return false;
|
|
649
661
|
}
|
|
650
662
|
async generate(messages, options) {
|
|
663
|
+
assertStructuredOutputUnsupported(options);
|
|
664
|
+
const sdkAgent = await this.resolveCursorAgent();
|
|
665
|
+
return this.generateWithAgent(messages, sdkAgent, options);
|
|
666
|
+
}
|
|
667
|
+
async generateWithAgent(messages, sdkAgent, options) {
|
|
651
668
|
const prompt = promptToText(messages);
|
|
652
669
|
const runId = options?.runId ?? randomUUID();
|
|
653
|
-
const sdkAgent = await this.resolveCursorAgent();
|
|
654
670
|
const modelId = getCursorModelId(this.options, sdkAgent);
|
|
655
671
|
const requestContext = options?.requestContext ?? new RequestContext();
|
|
656
672
|
const instructions = options?.instructions ? promptToText(options.instructions) : void 0;
|
|
@@ -690,9 +706,13 @@ var CursorSDKAgent = class extends Agent {
|
|
|
690
706
|
});
|
|
691
707
|
}
|
|
692
708
|
async stream(messages, options) {
|
|
709
|
+
assertStructuredOutputUnsupported(options);
|
|
710
|
+
const sdkAgent = await this.resolveCursorAgent();
|
|
711
|
+
return this.streamWithAgent(messages, sdkAgent, options);
|
|
712
|
+
}
|
|
713
|
+
async streamWithAgent(messages, sdkAgent, options) {
|
|
693
714
|
const runId = options?.runId ?? randomUUID();
|
|
694
715
|
const prompt = promptToText(messages);
|
|
695
|
-
const sdkAgent = await this.resolveCursorAgent();
|
|
696
716
|
const modelId = getCursorModelId(this.options, sdkAgent);
|
|
697
717
|
const requestContext = options?.requestContext ?? new RequestContext();
|
|
698
718
|
const instructions = options?.instructions ? promptToText(options.instructions) : void 0;
|
|
@@ -724,6 +744,18 @@ var CursorSDKAgent = class extends Agent {
|
|
|
724
744
|
options: telemetry.outputOptions()
|
|
725
745
|
});
|
|
726
746
|
}
|
|
747
|
+
async resumeGenerate(resumeData, options) {
|
|
748
|
+
assertStructuredOutputUnsupported(options);
|
|
749
|
+
const data = validateCursorResumeData(resumeData);
|
|
750
|
+
const sdkAgent = await this.resolveResumeCursorAgent(data);
|
|
751
|
+
return this.generateWithAgent(data.message, sdkAgent, options);
|
|
752
|
+
}
|
|
753
|
+
async resumeStream(resumeData, options) {
|
|
754
|
+
assertStructuredOutputUnsupported(options);
|
|
755
|
+
const data = validateCursorResumeData(resumeData);
|
|
756
|
+
const sdkAgent = await this.resolveResumeCursorAgent(data);
|
|
757
|
+
return this.streamWithAgent(data.message, sdkAgent, options);
|
|
758
|
+
}
|
|
727
759
|
resolveCursorAgent() {
|
|
728
760
|
this.#createdAgent ??= resolveCursorAgent(this.options.agent, this.options).catch((error) => {
|
|
729
761
|
this.#createdAgent = void 0;
|
|
@@ -731,7 +763,33 @@ var CursorSDKAgent = class extends Agent {
|
|
|
731
763
|
});
|
|
732
764
|
return this.#createdAgent;
|
|
733
765
|
}
|
|
766
|
+
async resolveResumeCursorAgent(resumeData) {
|
|
767
|
+
if (!resumeData.agentId) {
|
|
768
|
+
return this.resolveCursorAgent();
|
|
769
|
+
}
|
|
770
|
+
return Agent$1.resume(resumeData.agentId, {
|
|
771
|
+
...toCursorCreateOptions(this.options),
|
|
772
|
+
...resumeData.sdkOptions
|
|
773
|
+
});
|
|
774
|
+
}
|
|
734
775
|
};
|
|
776
|
+
function validateCursorResumeData(resumeData) {
|
|
777
|
+
if (!toRecord(resumeData) || !("message" in resumeData)) {
|
|
778
|
+
throw new Error("CursorSDKAgent resumeData must include a message.");
|
|
779
|
+
}
|
|
780
|
+
if (resumeData.agentId !== void 0 && typeof resumeData.agentId !== "string") {
|
|
781
|
+
throw new Error("CursorSDKAgent resumeData.agentId must be a string when provided.");
|
|
782
|
+
}
|
|
783
|
+
return resumeData;
|
|
784
|
+
}
|
|
785
|
+
function assertStructuredOutputUnsupported(options) {
|
|
786
|
+
const structuredOutput = toRecord(toRecord(options)?.structuredOutput);
|
|
787
|
+
if (structuredOutput && "schema" in structuredOutput) {
|
|
788
|
+
throw new Error(
|
|
789
|
+
"CursorSDKAgent does not support structuredOutput because the Cursor TypeScript SDK does not expose a schema-constrained output API."
|
|
790
|
+
);
|
|
791
|
+
}
|
|
792
|
+
}
|
|
735
793
|
async function runCursorGenerate(prompt, options, agent, telemetry) {
|
|
736
794
|
const usage = createCursorUsageCollector();
|
|
737
795
|
const run = await agent.send(prompt, createCursorSendOptions(options, usage, telemetry));
|