opencode-ext-connector 0.3.0 → 0.3.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.
Files changed (215) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/dist/catalog/parse-ids.d.ts +1 -1
  4. package/dist/catalog/parse-ids.js +1 -1
  5. package/dist/core/adapter.d.ts +3 -3
  6. package/dist/core/adapter.js +1 -1
  7. package/dist/core/deadline.d.ts +2 -2
  8. package/dist/core/deadline.js +2 -2
  9. package/dist/core/errors.d.ts +1 -1
  10. package/dist/core/logger.d.ts +1 -1
  11. package/dist/core/models.d.ts +1 -1
  12. package/dist/core/models.js +1 -1
  13. package/dist/core/options.d.ts +1 -1
  14. package/dist/core/process.d.ts +1 -1
  15. package/dist/http/fetch-transport.d.ts +1 -1
  16. package/dist/http/package-version.d.ts +1 -1
  17. package/dist/http/read-body.d.ts +1 -1
  18. package/dist/logging/logger.d.ts +2 -2
  19. package/dist/logging/logger.js +1 -1
  20. package/dist/opencode/catalog-bridge.d.ts +2 -2
  21. package/dist/opencode/catalog-bridge.js +1 -1
  22. package/dist/opencode/health-refresh.d.ts +5 -5
  23. package/dist/opencode/health-refresh.js +4 -4
  24. package/dist/opencode/host-options.d.ts +1 -1
  25. package/dist/opencode/language-factory.d.ts +3 -3
  26. package/dist/opencode/language-factory.js +5 -5
  27. package/dist/opencode/ollama-probe.d.ts +1 -1
  28. package/dist/opencode/ollama-probe.js +3 -3
  29. package/dist/opencode/ollama-production.d.ts +2 -2
  30. package/dist/opencode/ollama-production.js +3 -3
  31. package/dist/opencode/plugin.d.ts +6 -6
  32. package/dist/opencode/plugin.js +1 -1
  33. package/dist/opencode/provider-entry.d.ts +6 -6
  34. package/dist/opencode/providers.d.ts +4 -4
  35. package/dist/opencode/providers.js +16 -16
  36. package/dist/opencode/register-integrations.d.ts +2 -2
  37. package/dist/opencode/reload.d.ts +1 -1
  38. package/dist/opencode/reload.js +1 -1
  39. package/dist/opencode/v1-anthropic-auth.d.ts +1 -1
  40. package/dist/opencode/v1-anthropic-auth.js +1 -1
  41. package/dist/opencode/v1-catalog.d.ts +2 -2
  42. package/dist/opencode/v1-catalog.js +1 -1
  43. package/dist/opencode/v1-language.js +7 -7
  44. package/dist/opencode/v1-module.d.ts +6 -6
  45. package/dist/opencode/v1-module.js +6 -6
  46. package/dist/opencode/v1-session-auth.d.ts +1 -1
  47. package/dist/opencode/v1-session-auth.js +4 -4
  48. package/dist/providers/claude/adapter.d.ts +2 -2
  49. package/dist/providers/claude/adapter.js +3 -3
  50. package/dist/providers/claude/auth-json.d.ts +1 -1
  51. package/dist/providers/claude/auth.d.ts +4 -4
  52. package/dist/providers/claude/auth.js +3 -3
  53. package/dist/providers/claude/cli-version.d.ts +1 -1
  54. package/dist/providers/claude/cli-version.js +1 -1
  55. package/dist/providers/claude/compat-betas.js +1 -1
  56. package/dist/providers/claude/compat-request.js +3 -3
  57. package/dist/providers/claude/compat-response.js +1 -1
  58. package/dist/providers/claude/compat-transform.js +2 -2
  59. package/dist/providers/claude/emit-stream.js +1 -1
  60. package/dist/providers/claude/language-model.d.ts +1 -1
  61. package/dist/providers/claude/language-model.js +5 -5
  62. package/dist/providers/claude/models.d.ts +2 -2
  63. package/dist/providers/claude/models.js +2 -2
  64. package/dist/providers/claude/prompt.d.ts +1 -1
  65. package/dist/providers/claude/prompt.js +1 -1
  66. package/dist/providers/claude/refresh.d.ts +3 -3
  67. package/dist/providers/claude/sse-convert.d.ts +1 -1
  68. package/dist/providers/claude/sse.d.ts +1 -1
  69. package/dist/providers/claude/sse.js +2 -2
  70. package/dist/providers/claude/writeback.d.ts +1 -1
  71. package/dist/providers/claude/writeback.js +4 -4
  72. package/dist/providers/command-code/adapter.d.ts +2 -2
  73. package/dist/providers/command-code/adapter.js +3 -3
  74. package/dist/providers/command-code/auth.js +1 -1
  75. package/dist/providers/command-code/cli-version.d.ts +1 -1
  76. package/dist/providers/command-code/cli-version.js +1 -1
  77. package/dist/providers/command-code/emit-stream.js +2 -2
  78. package/dist/providers/command-code/language-model.d.ts +2 -2
  79. package/dist/providers/command-code/language-model.js +10 -13
  80. package/dist/providers/command-code/models.d.ts +2 -2
  81. package/dist/providers/command-code/models.js +1 -1
  82. package/dist/providers/command-code/record-stream.js +1 -1
  83. package/dist/providers/command-code/request-lifecycle.d.ts +1 -1
  84. package/dist/providers/command-code/request-lifecycle.js +3 -3
  85. package/dist/providers/command-code/request.d.ts +1 -1
  86. package/dist/providers/cursor/adapter.d.ts +2 -2
  87. package/dist/providers/cursor/adapter.js +3 -3
  88. package/dist/providers/cursor/auth.d.ts +1 -1
  89. package/dist/providers/cursor/auth.js +2 -2
  90. package/dist/providers/cursor/blob-store.d.ts +1 -1
  91. package/dist/providers/cursor/blob-store.js +1 -1
  92. package/dist/providers/cursor/bridge-client.d.ts +2 -2
  93. package/dist/providers/cursor/bridge-client.js +4 -4
  94. package/dist/providers/cursor/bridge-event-sanitize.d.ts +1 -1
  95. package/dist/providers/cursor/bridge-limits.js +1 -1
  96. package/dist/providers/cursor/bridge-process.d.ts +1 -1
  97. package/dist/providers/cursor/bridge-process.js +2 -2
  98. package/dist/providers/cursor/bridge-protocol.d.ts +4 -4
  99. package/dist/providers/cursor/bridge-protocol.js +6 -6
  100. package/dist/providers/cursor/bridge-serialize.d.ts +1 -1
  101. package/dist/providers/cursor/bridge-serialize.js +3 -3
  102. package/dist/providers/cursor/bridge-wire.d.ts +1 -1
  103. package/dist/providers/cursor/bridge-wire.js +3 -3
  104. package/dist/providers/cursor/checkpoint-store.d.ts +3 -3
  105. package/dist/providers/cursor/checkpoint-store.js +1 -1
  106. package/dist/providers/cursor/connect-frame-stream.js +2 -2
  107. package/dist/providers/cursor/connect-frame.js +1 -1
  108. package/dist/providers/cursor/direct-run-types.d.ts +7 -7
  109. package/dist/providers/cursor/direct-run.d.ts +2 -2
  110. package/dist/providers/cursor/direct-run.js +14 -14
  111. package/dist/providers/cursor/direct-runtime.d.ts +5 -5
  112. package/dist/providers/cursor/direct-runtime.js +9 -9
  113. package/dist/providers/cursor/direct-stream.d.ts +4 -4
  114. package/dist/providers/cursor/direct-stream.js +4 -4
  115. package/dist/providers/cursor/exec-reply.d.ts +4 -4
  116. package/dist/providers/cursor/exec-reply.js +4 -4
  117. package/dist/providers/cursor/h2-bridge-response.js +1 -1
  118. package/dist/providers/cursor/h2-bridge-session.d.ts +1 -1
  119. package/dist/providers/cursor/h2-bridge-session.js +2 -2
  120. package/dist/providers/cursor/http2.js +1 -1
  121. package/dist/providers/cursor/interaction-reply.d.ts +1 -1
  122. package/dist/providers/cursor/interaction-reply.js +2 -2
  123. package/dist/providers/cursor/language-generate.js +1 -1
  124. package/dist/providers/cursor/language-model.d.ts +1 -1
  125. package/dist/providers/cursor/language-model.js +6 -6
  126. package/dist/providers/cursor/legacy-stream.js +5 -5
  127. package/dist/providers/cursor/mcp-tools.js +2 -2
  128. package/dist/providers/cursor/models.d.ts +2 -2
  129. package/dist/providers/cursor/models.js +4 -4
  130. package/dist/providers/cursor/proto/checkpoint.js +3 -3
  131. package/dist/providers/cursor/proto/context.js +3 -3
  132. package/dist/providers/cursor/proto/exec-control.js +3 -3
  133. package/dist/providers/cursor/proto/exec.d.ts +3 -3
  134. package/dist/providers/cursor/proto/exec.js +5 -5
  135. package/dist/providers/cursor/proto/fields.d.ts +1 -1
  136. package/dist/providers/cursor/proto/fields.js +3 -3
  137. package/dist/providers/cursor/proto/interaction-query.js +3 -3
  138. package/dist/providers/cursor/proto/interaction-tool-update.d.ts +1 -1
  139. package/dist/providers/cursor/proto/interaction-tool-update.js +3 -3
  140. package/dist/providers/cursor/proto/interaction-turn-ended.js +2 -2
  141. package/dist/providers/cursor/proto/interaction.d.ts +4 -4
  142. package/dist/providers/cursor/proto/interaction.js +7 -7
  143. package/dist/providers/cursor/proto/kv.js +3 -3
  144. package/dist/providers/cursor/proto/mcp-result.d.ts +2 -2
  145. package/dist/providers/cursor/proto/mcp-result.js +5 -5
  146. package/dist/providers/cursor/proto/mcp.d.ts +1 -1
  147. package/dist/providers/cursor/proto/mcp.js +5 -5
  148. package/dist/providers/cursor/proto/model.js +2 -2
  149. package/dist/providers/cursor/proto/output-location.js +4 -4
  150. package/dist/providers/cursor/proto/prewarm.d.ts +3 -3
  151. package/dist/providers/cursor/proto/prewarm.js +5 -5
  152. package/dist/providers/cursor/proto/request-context.d.ts +1 -1
  153. package/dist/providers/cursor/proto/request-context.js +4 -4
  154. package/dist/providers/cursor/proto/request.d.ts +11 -11
  155. package/dist/providers/cursor/proto/request.js +11 -11
  156. package/dist/providers/cursor/proto/run-request.d.ts +4 -4
  157. package/dist/providers/cursor/proto/run-request.js +6 -6
  158. package/dist/providers/cursor/proto/server.d.ts +7 -7
  159. package/dist/providers/cursor/proto/server.js +8 -8
  160. package/dist/providers/cursor/proto/unknown-field.js +2 -2
  161. package/dist/providers/cursor/proto-value.js +3 -3
  162. package/dist/providers/cursor/proto-wire.js +1 -1
  163. package/dist/providers/cursor/protocol-failure.d.ts +1 -1
  164. package/dist/providers/cursor/protocol-failure.js +1 -1
  165. package/dist/providers/cursor/recovery.d.ts +2 -2
  166. package/dist/providers/cursor/recovery.js +2 -2
  167. package/dist/providers/cursor/request-blob-ownership.d.ts +1 -1
  168. package/dist/providers/cursor/request-build.d.ts +3 -3
  169. package/dist/providers/cursor/request-build.js +6 -6
  170. package/dist/providers/cursor/request-history.d.ts +4 -4
  171. package/dist/providers/cursor/request-history.js +2 -2
  172. package/dist/providers/cursor/request-input.d.ts +4 -4
  173. package/dist/providers/cursor/request-input.js +2 -2
  174. package/dist/providers/cursor/run-events.js +1 -1
  175. package/dist/providers/cursor/run-session-expiry.d.ts +1 -1
  176. package/dist/providers/cursor/run-session.d.ts +6 -6
  177. package/dist/providers/cursor/run-session.js +4 -4
  178. package/dist/providers/cursor/run.d.ts +2 -2
  179. package/dist/providers/cursor/run.js +8 -8
  180. package/dist/providers/cursor/runner.js +3 -3
  181. package/dist/providers/cursor/server-dispatch-types.d.ts +6 -6
  182. package/dist/providers/cursor/server-dispatch.d.ts +2 -2
  183. package/dist/providers/cursor/server-dispatch.js +5 -5
  184. package/dist/providers/cursor/session-state.d.ts +2 -2
  185. package/dist/providers/cursor/session-state.js +1 -1
  186. package/dist/providers/cursor/stream-adapter.d.ts +2 -2
  187. package/dist/providers/cursor/stream-adapter.js +1 -1
  188. package/dist/providers/cursor/tool-continuation.d.ts +1 -1
  189. package/dist/providers/cursor/tool-continuation.js +1 -1
  190. package/dist/providers/ollama/adapter.d.ts +3 -3
  191. package/dist/providers/ollama/adapter.js +5 -5
  192. package/dist/providers/ollama/catalog-state.d.ts +3 -3
  193. package/dist/providers/ollama/catalog-state.js +4 -4
  194. package/dist/providers/ollama/cloud-catalog.d.ts +2 -2
  195. package/dist/providers/ollama/cloud-catalog.js +4 -4
  196. package/dist/providers/ollama/http.js +2 -2
  197. package/dist/providers/ollama/index.d.ts +8 -8
  198. package/dist/providers/ollama/index.js +8 -8
  199. package/dist/providers/ollama/language-model.d.ts +3 -3
  200. package/dist/providers/ollama/language-model.js +5 -5
  201. package/dist/providers/ollama/local-catalog.d.ts +2 -2
  202. package/dist/providers/ollama/local-catalog.js +3 -3
  203. package/dist/providers/ollama/ndjson.d.ts +1 -1
  204. package/dist/providers/ollama/ndjson.js +1 -1
  205. package/dist/providers/ollama/prompt.d.ts +1 -1
  206. package/dist/providers/ollama/prompt.js +1 -1
  207. package/dist/providers/ollama/runtime.d.ts +3 -3
  208. package/dist/providers/ollama/runtime.js +6 -6
  209. package/dist/providers/ollama/stream.js +3 -3
  210. package/dist/sdk/command-code.js +1 -1
  211. package/dist/sdk/cursor.js +1 -1
  212. package/dist/sdk/ollama.js +1 -1
  213. package/dist/server.js +10 -10
  214. package/docs/README.ko.md +1 -1
  215. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  // Derived from griffinmartin/opencode-claude-auth@0f0ff6f12c367339130cbfd250393863ed2c8d9e.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
- import { stripClaudeToolPrefix } from "./compat-transform";
3
+ import { stripClaudeToolPrefix } from "./compat-transform.js";
4
4
  export function transformClaudeResponse(response) {
5
5
  if (response.body === null) {
6
6
  return response;
@@ -1,7 +1,7 @@
1
1
  // Derived from griffinmartin/opencode-claude-auth@0f0ff6f12c367339130cbfd250393863ed2c8d9e.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
- import { claudeModelOverride } from "./compat-config";
4
- import { claudeBillingHeader } from "./compat-signing";
3
+ import { claudeModelOverride } from "./compat-config.js";
4
+ import { claudeBillingHeader } from "./compat-signing.js";
5
5
  export const CLAUDE_SYSTEM_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude.";
6
6
  const BILLING_PREFIX = "x-anthropic-billing-header";
7
7
  const TOOL_PREFIX = "mcp_";
@@ -1,6 +1,6 @@
1
1
  // Derived from griffinmartin/opencode-claude-auth@0f0ff6f12c367339130cbfd250393863ed2c8d9e.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
- import { createSseParseState, mapStopReason, parseAnthropicSse } from "./sse";
3
+ import { createSseParseState, mapStopReason, parseAnthropicSse } from "./sse.js";
4
4
  export async function emitClaudeSseChunks(chunks, controller) {
5
5
  controller.enqueue({ type: "stream-start", warnings: [] });
6
6
  let finishReason = { unified: "stop", raw: "end_turn" };
@@ -1,5 +1,5 @@
1
1
  import type { LanguageModelV3 } from "@ai-sdk/provider";
2
- import type { HttpTransport } from "../../core/http";
2
+ import type { HttpTransport } from "../../core/http.js";
3
3
  export type ClaudeLanguageModelOptions = {
4
4
  readonly modelId: string;
5
5
  readonly transport: HttpTransport;
@@ -1,10 +1,10 @@
1
1
  // Derived from griffinmartin/opencode-claude-auth@0f0ff6f12c367339130cbfd250393863ed2c8d9e.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
- import { AdapterError, OperationCancelledError } from "../../core/errors";
4
- import { parseProviderId } from "../../core/ids";
5
- import { openHttpBody } from "../../http/read-body";
6
- import { emitClaudeSseChunks } from "./emit-stream";
7
- import { buildRequestBody, emptyUsage, parseAssistantText, promptToAnthropicMessages, } from "./prompt";
3
+ import { AdapterError, OperationCancelledError } from "../../core/errors.js";
4
+ import { parseProviderId } from "../../core/ids.js";
5
+ import { openHttpBody } from "../../http/read-body.js";
6
+ import { emitClaudeSseChunks } from "./emit-stream.js";
7
+ import { buildRequestBody, emptyUsage, parseAssistantText, promptToAnthropicMessages, } from "./prompt.js";
8
8
  export function createClaudeLanguageModel(options) {
9
9
  const provider = parseProviderId("claude");
10
10
  return {
@@ -1,5 +1,5 @@
1
- import type { HttpTransport } from "../../core/http";
2
- import type { AdapterModel } from "../../core/models";
1
+ import type { HttpTransport } from "../../core/http.js";
2
+ import type { AdapterModel } from "../../core/models.js";
3
3
  export type ClaudeModelListOptions = {
4
4
  readonly transport: HttpTransport;
5
5
  readonly token: string;
@@ -1,5 +1,5 @@
1
- import { parseModelIdList } from "../../catalog/parse-ids";
2
- import { createClaudeCompatibilityHeaders } from "./compat-request";
1
+ import { parseModelIdList } from "../../catalog/parse-ids.js";
2
+ import { createClaudeCompatibilityHeaders } from "./compat-request.js";
3
3
  export async function listClaudeModels(options) {
4
4
  const headers = createClaudeCompatibilityHeaders({
5
5
  accessToken: options.token,
@@ -1,5 +1,5 @@
1
1
  import type { LanguageModelV3CallOptions } from "@ai-sdk/provider";
2
- import { type RequestBody } from "./transform";
2
+ import { type RequestBody } from "./transform.js";
3
3
  type AnthropicContentPart = {
4
4
  readonly type: "text";
5
5
  readonly text: string;
@@ -1,6 +1,6 @@
1
1
  // Derived from griffinmartin/opencode-claude-auth@0f0ff6f12c367339130cbfd250393863ed2c8d9e.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
- import { repairOrphanToolUses } from "./transform";
3
+ import { repairOrphanToolUses } from "./transform.js";
4
4
  const CLAUDE_IDENTITY = "You are Claude Code, Anthropic's official CLI for Claude.";
5
5
  function isTextPart(part) {
6
6
  return (typeof part === "object" &&
@@ -1,6 +1,6 @@
1
- import type { Clock } from "../../core/clock";
2
- import type { HttpTransport } from "../../core/http";
3
- import type { ClaudeCredentials } from "./credentials";
1
+ import type { Clock } from "../../core/clock.js";
2
+ import type { HttpTransport } from "../../core/http.js";
3
+ import type { ClaudeCredentials } from "./credentials.js";
4
4
  export type RefreshClaudeOptions = {
5
5
  readonly transport: HttpTransport;
6
6
  readonly clock: Clock;
@@ -1,4 +1,4 @@
1
- import type { AnthropicSseEvent, SseParseResult } from "./sse";
1
+ import type { AnthropicSseEvent, SseParseResult } from "./sse.js";
2
2
  export declare function convertEventToPart(event: AnthropicSseEvent): SseParseResult | null;
3
3
  export declare function mapStopReason(reason: "end_turn" | "max_tokens" | "stop_sequence" | "tool_use" | null): {
4
4
  unified: "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other";
@@ -68,4 +68,4 @@ export declare function parseAnthropicSse(chunk: Uint8Array, state: SseParseStat
68
68
  readonly events: readonly SseParseResult[];
69
69
  readonly state: SseParseState;
70
70
  };
71
- export { convertEventToPart, mapStopReason } from "./sse-convert";
71
+ export { convertEventToPart, mapStopReason } from "./sse-convert.js";
@@ -1,6 +1,6 @@
1
1
  // Derived from griffinmartin/opencode-claude-auth@0f0ff6f12c367339130cbfd250393863ed2c8d9e.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
- import { convertEventToPart } from "./sse-convert";
3
+ import { convertEventToPart } from "./sse-convert.js";
4
4
  function isAnthropicSseEvent(value) {
5
5
  if (typeof value !== "object" || value === null) {
6
6
  return false;
@@ -120,4 +120,4 @@ export function parseAnthropicSse(chunk, state) {
120
120
  state: { buffer: newBuffer, event: currentEvent ?? null },
121
121
  };
122
122
  }
123
- export { convertEventToPart, mapStopReason } from "./sse-convert";
123
+ export { convertEventToPart, mapStopReason } from "./sse-convert.js";
@@ -1,4 +1,4 @@
1
- import type { ClaudeCredentials } from "./credentials";
1
+ import type { ClaudeCredentials } from "./credentials.js";
2
2
  export type ClaudeWriteBackHooks = {
3
3
  readonly writeFile?: (path: string, body: string) => Promise<void>;
4
4
  readonly readFile?: (path: string) => Promise<string | null>;
@@ -3,10 +3,10 @@ import { readFile } from "node:fs/promises";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
5
5
  import { promisify } from "node:util";
6
- import { opencodeAuthJsonPaths } from "../../opencode/auth-store";
7
- import { writeClaudePrivateFile } from "./atomic-private-file";
8
- import { mergeOpencodeAuthJson } from "./auth-json";
9
- import { parseKeychainAccount } from "./keychain-account";
6
+ import { opencodeAuthJsonPaths } from "../../opencode/auth-store.js";
7
+ import { writeClaudePrivateFile } from "./atomic-private-file.js";
8
+ import { mergeOpencodeAuthJson } from "./auth-json.js";
9
+ import { parseKeychainAccount } from "./keychain-account.js";
10
10
  const execFileAsync = promisify(execFile);
11
11
  const CLAUDE_KEYCHAIN_SERVICE = "Claude Code-credentials";
12
12
  const CLAUDE_KEYCHAIN_ACCOUNT = "Claude Code";
@@ -1,5 +1,5 @@
1
- import type { ProviderAdapter } from "../../core/adapter";
2
- import type { AdapterModel } from "../../core/models";
1
+ import type { ProviderAdapter } from "../../core/adapter.js";
2
+ import type { AdapterModel } from "../../core/models.js";
3
3
  export type CommandCodeAdapterOptions = {
4
4
  readonly readAccessToken: (signal: AbortSignal) => Promise<string | null>;
5
5
  readonly listModels: (token: string, signal: AbortSignal) => Promise<readonly AdapterModel[]>;
@@ -1,6 +1,6 @@
1
- import { OperationCancelledError } from "../../core/errors";
2
- import { parseProviderId } from "../../core/ids";
3
- import { createAsyncDisposable } from "../../core/lifecycle";
1
+ import { OperationCancelledError } from "../../core/errors.js";
2
+ import { parseProviderId } from "../../core/ids.js";
3
+ import { createAsyncDisposable } from "../../core/lifecycle.js";
4
4
  export function createCommandCodeAdapter(options) {
5
5
  const providerId = parseProviderId("command-code");
6
6
  const disposal = createAsyncDisposable(() => undefined);
@@ -2,7 +2,7 @@ import { readFile } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { z } from "zod";
5
- import { OperationCancelledError } from "../../core/errors";
5
+ import { OperationCancelledError } from "../../core/errors.js";
6
6
  const credentialSchema = z
7
7
  .object({
8
8
  apiKey: z.string().optional(),
@@ -1,4 +1,4 @@
1
- import type { HttpTransport } from "../../core/http";
1
+ import type { HttpTransport } from "../../core/http.js";
2
2
  export type CommandCodeVersionResolver = (signal: AbortSignal) => Promise<string | null>;
3
3
  export type CommandCodeVersionResolverOptions = {
4
4
  readonly env: Readonly<Record<string, string | undefined>>;
@@ -1,5 +1,5 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import { createPackageVersionResolver } from "../../http/package-version";
2
+ import { createPackageVersionResolver } from "../../http/package-version.js";
3
3
  const COMMAND_CODE_PACKAGE = "command-code";
4
4
  export function parseCommandCodeCliVersion(stdout) {
5
5
  const match = /(\d+\.\d+\.\d+)/.exec(stdout);
@@ -1,8 +1,8 @@
1
1
  // Derived from brent-weatherall/opencode-commandcode-provider@6cf3f22d4aae469db3723e589291c736285373c1 src/stream.ts.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
3
  import { z } from "zod";
4
- import { commandCodeNdjsonError } from "./errors";
5
- import { commandCodeRecords } from "./record-stream";
4
+ import { commandCodeNdjsonError } from "./errors.js";
5
+ import { commandCodeRecords } from "./record-stream.js";
6
6
  const tokenDetailsSchema = z
7
7
  .object({
8
8
  noCacheTokens: z.number().optional(),
@@ -1,6 +1,6 @@
1
1
  import type { LanguageModelV3 } from "@ai-sdk/provider";
2
- import type { HttpTransport } from "../../core/http";
3
- import { type CommandCodeVersionResolver } from "./cli-version";
2
+ import type { HttpTransport } from "../../core/http.js";
3
+ import { type CommandCodeVersionResolver } from "./cli-version.js";
4
4
  export type CommandCodeLanguageModelOptions = {
5
5
  readonly modelId: string;
6
6
  readonly transport: HttpTransport;
@@ -1,14 +1,14 @@
1
1
  // Derived from brent-weatherall/opencode-commandcode-provider src/model.ts.
2
2
  // Licensed under MIT. See THIRD_PARTY_NOTICES.md.
3
- import { AdapterError, OperationCancelledError } from "../../core/errors";
4
- import { parseProviderId } from "../../core/ids";
5
- import { openHttpBody } from "../../http/read-body";
6
- import { createCommandCodeVersionResolver } from "./cli-version";
7
- import { emitCommandCodeChunks } from "./emit-stream";
8
- import { commandCodeMissingBodyError } from "./errors";
9
- import { buildBody, buildHeaders } from "./request";
10
- import { commandCodeHttpError, createCommandCodeRequestLifecycle, readCommandCodeErrorBody, } from "./request-lifecycle";
11
- import { createCommandCodeSessionId } from "./session";
3
+ import { AdapterError, OperationCancelledError } from "../../core/errors.js";
4
+ import { parseProviderId } from "../../core/ids.js";
5
+ import { openHttpBody } from "../../http/read-body.js";
6
+ import { createCommandCodeVersionResolver } from "./cli-version.js";
7
+ import { emitCommandCodeChunks } from "./emit-stream.js";
8
+ import { commandCodeMissingBodyError } from "./errors.js";
9
+ import { buildBody, buildHeaders, } from "./request.js";
10
+ import { commandCodeHttpError, createCommandCodeRequestLifecycle, readCommandCodeErrorBody, } from "./request-lifecycle.js";
11
+ import { createCommandCodeSessionId } from "./session.js";
12
12
  function buildRequestOptions(options, call, token, cliVersion) {
13
13
  const bodyOptions = {
14
14
  modelId: options.modelId,
@@ -41,9 +41,6 @@ function createUsage() {
41
41
  outputTokens: { total: undefined, text: undefined, reasoning: undefined },
42
42
  };
43
43
  }
44
- function createFinishReason() {
45
- return { unified: "stop", raw: "stop" };
46
- }
47
44
  async function streamCommandCode(options, call) {
48
45
  if (call.abortSignal?.aborted === true) {
49
46
  throw new OperationCancelledError("command-code-stream");
@@ -150,7 +147,7 @@ export function createCommandCodeLanguageModel(options) {
150
147
  const content = [];
151
148
  const text = [];
152
149
  const reasoning = [];
153
- let finish = createFinishReason();
150
+ let finish = { unified: "stop", raw: "stop" };
154
151
  let usage = createUsage();
155
152
  const reader = stream.getReader();
156
153
  try {
@@ -1,3 +1,3 @@
1
- import type { HttpTransport } from "../../core/http";
2
- import type { AdapterModel } from "../../core/models";
1
+ import type { HttpTransport } from "../../core/http.js";
2
+ import type { AdapterModel } from "../../core/models.js";
3
3
  export declare function listCommandCodeModels(transport: HttpTransport, token: string, signal: AbortSignal): Promise<readonly AdapterModel[]>;
@@ -1,4 +1,4 @@
1
- import { parseModelIdList } from "../../catalog/parse-ids";
1
+ import { parseModelIdList } from "../../catalog/parse-ids.js";
2
2
  export async function listCommandCodeModels(transport, token, signal) {
3
3
  const response = await transport.request({
4
4
  method: "GET",
@@ -1,4 +1,4 @@
1
- import { commandCodeStreamRecordTooLargeError } from "./errors";
1
+ import { commandCodeStreamRecordTooLargeError } from "./errors.js";
2
2
  const MAX_STREAM_RECORD_BYTES = 1024 * 1024;
3
3
  const CARRIAGE_RETURN = 13;
4
4
  const LINE_FEED = 10;
@@ -1,4 +1,4 @@
1
- export { commandCodeHttpError } from "./errors";
1
+ export { commandCodeHttpError } from "./errors.js";
2
2
  export type CommandCodeRequestLifecycle = {
3
3
  readonly signal: AbortSignal;
4
4
  readonly abort: () => void;
@@ -1,6 +1,6 @@
1
- import { OperationCancelledError } from "../../core/errors";
2
- import { commandCodeResponseBodyTooLargeError } from "./errors";
3
- export { commandCodeHttpError } from "./errors";
1
+ import { OperationCancelledError } from "../../core/errors.js";
2
+ import { commandCodeResponseBodyTooLargeError } from "./errors.js";
3
+ export { commandCodeHttpError } from "./errors.js";
4
4
  const MAX_ERROR_BODY_BYTES = 64 * 1024;
5
5
  export function createCommandCodeRequestLifecycle(parent, timeoutMs) {
6
6
  const controller = new AbortController();
@@ -1,5 +1,5 @@
1
1
  import type { LanguageModelV3CallOptions } from "@ai-sdk/provider";
2
- import type { CommandCodeSessionId } from "./session";
2
+ import type { CommandCodeSessionId } from "./session.js";
3
3
  export type BuildHeadersOptions = {
4
4
  readonly token: string;
5
5
  readonly cliVersion: string;
@@ -1,5 +1,5 @@
1
- import type { ProviderAdapter } from "../../core/adapter";
2
- import type { AdapterModel } from "../../core/models";
1
+ import type { ProviderAdapter } from "../../core/adapter.js";
2
+ import type { AdapterModel } from "../../core/models.js";
3
3
  export type CursorAdapterOptions = {
4
4
  readonly readAccessToken: (signal: AbortSignal) => Promise<string | null>;
5
5
  readonly listModels: (token: string, signal: AbortSignal) => Promise<readonly AdapterModel[]>;
@@ -1,6 +1,6 @@
1
- import { OperationCancelledError } from "../../core/errors";
2
- import { parseProviderId } from "../../core/ids";
3
- import { createAsyncDisposable } from "../../core/lifecycle";
1
+ import { OperationCancelledError } from "../../core/errors.js";
2
+ import { parseProviderId } from "../../core/ids.js";
3
+ import { createAsyncDisposable } from "../../core/lifecycle.js";
4
4
  export function createCursorAdapter(options) {
5
5
  const providerId = parseProviderId("cursor");
6
6
  const disposal = createAsyncDisposable(() => undefined);
@@ -1,4 +1,4 @@
1
- import { type CursorCredentials } from "./credentials";
1
+ import { type CursorCredentials } from "./credentials.js";
2
2
  export type CursorAuthLookup = {
3
3
  readonly readAuthFile?: (path: string, signal: AbortSignal) => Promise<CursorCredentials | null>;
4
4
  };
@@ -1,7 +1,7 @@
1
1
  import { access, readFile } from "node:fs/promises";
2
2
  import { delimiter, join } from "node:path";
3
- import { OperationCancelledError } from "../../core/errors";
4
- import { parseCursorCredentials } from "./credentials";
3
+ import { OperationCancelledError } from "../../core/errors.js";
4
+ import { parseCursorCredentials } from "./credentials.js";
5
5
  async function defaultReadAuthFile(path, signal) {
6
6
  try {
7
7
  const text = await readFile(path, { encoding: "utf8", signal });
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { Clock } from "../../core/clock";
2
+ import type { Clock } from "../../core/clock.js";
3
3
  export declare const CursorBlobIdSchema: z.core.$ZodBranded<z.ZodString, "CursorBlobId">;
4
4
  export type CursorBlobId = z.output<typeof CursorBlobIdSchema>;
5
5
  export type CursorBlobStoreOptions = {
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { z } from "zod";
3
- import { InvalidArgumentError } from "../../core/errors";
3
+ import { InvalidArgumentError } from "../../core/errors.js";
4
4
  export const CursorBlobIdSchema = z
5
5
  .string()
6
6
  .regex(/^[a-f0-9]{64}$/)
@@ -1,5 +1,5 @@
1
- import { type CursorBridgeProcessFactory } from "./bridge-process";
2
- import { type BridgeEvent } from "./bridge-protocol";
1
+ import { type CursorBridgeProcessFactory } from "./bridge-process.js";
2
+ import { type BridgeEvent } from "./bridge-protocol.js";
3
3
  export type CursorBridgeSessionErrorReason = "duplicate-stream" | "stream-closed";
4
4
  export declare class CursorBridgeSessionError extends Error {
5
5
  readonly reason: CursorBridgeSessionErrorReason;
@@ -1,7 +1,7 @@
1
- import { OperationCancelledError, ResourceDisposedError } from "../../core/errors";
2
- import { createAsyncDisposable } from "../../core/lifecycle";
3
- import { CursorBridgeProcessError, createNodeCursorBridgeProcessFactory, } from "./bridge-process";
4
- import { CursorBridgeProtocolError, createBridgeEventLineDecoder, serializeBridgeCommand, } from "./bridge-protocol";
1
+ import { OperationCancelledError, ResourceDisposedError } from "../../core/errors.js";
2
+ import { createAsyncDisposable } from "../../core/lifecycle.js";
3
+ import { CursorBridgeProcessError, createNodeCursorBridgeProcessFactory, } from "./bridge-process.js";
4
+ import { CursorBridgeProtocolError, createBridgeEventLineDecoder, serializeBridgeCommand, } from "./bridge-protocol.js";
5
5
  export class CursorBridgeSessionError extends Error {
6
6
  reason;
7
7
  name = "CursorBridgeSessionError";
@@ -1,3 +1,3 @@
1
- import type { BridgeEvent } from "./bridge-protocol";
1
+ import type { BridgeEvent } from "./bridge-protocol.js";
2
2
  export declare function isSensitiveBridgeHeader(name: string): boolean;
3
3
  export declare function sanitizeBridgeEvent(event: BridgeEvent, accessToken: string): BridgeEvent;
@@ -1,4 +1,4 @@
1
- import { MAX_CONNECT_FRAME_BYTES } from "./connect-frame";
1
+ import { MAX_CONNECT_FRAME_BYTES } from "./connect-frame.js";
2
2
  const MAX_BRIDGE_ID_CHARACTERS = 128;
3
3
  const MAX_BRIDGE_WIRE_OVERHEAD = '{"kind":"write-frame","id":"","payload":""}'.length;
4
4
  const OPTIONAL_CARRIAGE_RETURN_CHARACTERS = 1;
@@ -1,4 +1,4 @@
1
- import { type AsyncDisposableHandle } from "../../core/lifecycle";
1
+ import { type AsyncDisposableHandle } from "../../core/lifecycle.js";
2
2
  export type CursorBridgeUnavailableReason = "node-unavailable" | "malformed-node-version" | "unsupported-node" | "spawn-failed";
3
3
  export declare class CursorBridgeUnavailableError extends Error {
4
4
  readonly reason: CursorBridgeUnavailableReason;
@@ -2,8 +2,8 @@ import { Buffer } from "node:buffer";
2
2
  import { execFile, spawn } from "node:child_process";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { promisify } from "node:util";
5
- import { OperationCancelledError } from "../../core/errors";
6
- import { createAsyncDisposable } from "../../core/lifecycle";
5
+ import { OperationCancelledError } from "../../core/errors.js";
6
+ import { createAsyncDisposable } from "../../core/lifecycle.js";
7
7
  const execFileAsync = promisify(execFile);
8
8
  const maximumStderrBytes = 16 * 1024;
9
9
  const preservedEnvironment = [
@@ -1,7 +1,7 @@
1
- export { sanitizeBridgeEvent } from "./bridge-event-sanitize";
2
- export { MAX_BRIDGE_BASE64_CHARACTERS, MAX_BRIDGE_BINARY_BYTES, MAX_BRIDGE_LINE_LENGTH, } from "./bridge-limits";
3
- export { serializeBridgeCommand, serializeBridgeEvent } from "./bridge-serialize";
4
- export { parseBridgeCommandLine, parseBridgeEventLine } from "./bridge-wire";
1
+ export { sanitizeBridgeEvent } from "./bridge-event-sanitize.js";
2
+ export { MAX_BRIDGE_BASE64_CHARACTERS, MAX_BRIDGE_BINARY_BYTES, MAX_BRIDGE_LINE_LENGTH, } from "./bridge-limits.js";
3
+ export { serializeBridgeCommand, serializeBridgeEvent } from "./bridge-serialize.js";
4
+ export { parseBridgeCommandLine, parseBridgeEventLine } from "./bridge-wire.js";
5
5
  export type BridgeCommand = {
6
6
  readonly kind: "open";
7
7
  readonly id: string;
@@ -1,9 +1,9 @@
1
- import { MAX_BRIDGE_LINE_LENGTH } from "./bridge-limits";
2
- import { parseBridgeCommandLine, parseBridgeEventLine } from "./bridge-wire";
3
- export { sanitizeBridgeEvent } from "./bridge-event-sanitize";
4
- export { MAX_BRIDGE_BASE64_CHARACTERS, MAX_BRIDGE_BINARY_BYTES, MAX_BRIDGE_LINE_LENGTH, } from "./bridge-limits";
5
- export { serializeBridgeCommand, serializeBridgeEvent } from "./bridge-serialize";
6
- export { parseBridgeCommandLine, parseBridgeEventLine } from "./bridge-wire";
1
+ import { MAX_BRIDGE_LINE_LENGTH } from "./bridge-limits.js";
2
+ import { parseBridgeCommandLine, parseBridgeEventLine } from "./bridge-wire.js";
3
+ export { sanitizeBridgeEvent } from "./bridge-event-sanitize.js";
4
+ export { MAX_BRIDGE_BASE64_CHARACTERS, MAX_BRIDGE_BINARY_BYTES, MAX_BRIDGE_LINE_LENGTH, } from "./bridge-limits.js";
5
+ export { serializeBridgeCommand, serializeBridgeEvent } from "./bridge-serialize.js";
6
+ export { parseBridgeCommandLine, parseBridgeEventLine } from "./bridge-wire.js";
7
7
  export class CursorBridgeProtocolError extends Error {
8
8
  code;
9
9
  name = "CursorBridgeProtocolError";
@@ -1,3 +1,3 @@
1
- import { type BridgeCommand, type BridgeEvent, type BridgeEventSerializationContext } from "./bridge-protocol";
1
+ import { type BridgeCommand, type BridgeEvent, type BridgeEventSerializationContext } from "./bridge-protocol.js";
2
2
  export declare function serializeBridgeCommand(command: BridgeCommand): string;
3
3
  export declare function serializeBridgeEvent(event: BridgeEvent, context: BridgeEventSerializationContext): string;
@@ -1,7 +1,7 @@
1
1
  import { Buffer } from "node:buffer";
2
- import { sanitizeBridgeEvent } from "./bridge-event-sanitize";
3
- import { MAX_BRIDGE_LINE_LENGTH } from "./bridge-limits";
4
- import { CursorBridgeProtocolError, } from "./bridge-protocol";
2
+ import { sanitizeBridgeEvent } from "./bridge-event-sanitize.js";
3
+ import { MAX_BRIDGE_LINE_LENGTH } from "./bridge-limits.js";
4
+ import { CursorBridgeProtocolError, } from "./bridge-protocol.js";
5
5
  function assertNever(value) {
6
6
  void value;
7
7
  throw new CursorBridgeProtocolError("invalid-message");
@@ -1,3 +1,3 @@
1
- import { type BridgeCommand, type BridgeEvent } from "./bridge-protocol";
1
+ import { type BridgeCommand, type BridgeEvent } from "./bridge-protocol.js";
2
2
  export declare function parseBridgeCommandLine(line: string): BridgeCommand;
3
3
  export declare function parseBridgeEventLine(line: string): BridgeEvent;
@@ -1,8 +1,8 @@
1
1
  import { Buffer } from "node:buffer";
2
2
  import { z } from "zod";
3
- import { isSensitiveBridgeHeader } from "./bridge-event-sanitize";
4
- import { MAX_BRIDGE_BASE64_CHARACTERS, MAX_BRIDGE_LINE_LENGTH } from "./bridge-limits";
5
- import { CursorBridgeProtocolError } from "./bridge-protocol";
3
+ import { isSensitiveBridgeHeader } from "./bridge-event-sanitize.js";
4
+ import { MAX_BRIDGE_BASE64_CHARACTERS, MAX_BRIDGE_LINE_LENGTH } from "./bridge-limits.js";
5
+ import { CursorBridgeProtocolError, } from "./bridge-protocol.js";
6
6
  const BridgeIdSchema = z
7
7
  .string()
8
8
  .min(1)
@@ -1,6 +1,6 @@
1
- import type { Clock } from "../../core/clock";
2
- import { type CursorBlobId, type CursorBlobStore } from "./blob-store";
3
- import type { CursorSessionId } from "./session-state";
1
+ import type { Clock } from "../../core/clock.js";
2
+ import { type CursorBlobId, type CursorBlobStore } from "./blob-store.js";
3
+ import type { CursorSessionId } from "./session-state.js";
4
4
  export type CursorCheckpoint = {
5
5
  readonly blobIds: readonly CursorBlobId[];
6
6
  readonly bytes: Uint8Array;
@@ -1,4 +1,4 @@
1
- import { requireCursorStoreTtl, requirePositiveCursorStoreBound, } from "./blob-store";
1
+ import { requireCursorStoreTtl, requirePositiveCursorStoreBound, } from "./blob-store.js";
2
2
  export function createCursorCheckpointStore(options) {
3
3
  const maxBlobReferences = options.maxBlobReferences ?? 64;
4
4
  requirePositiveCursorStoreBound(maxBlobReferences, "maxBlobReferences");
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { CONNECT_COMPRESSED, CONNECT_END_STREAM, MAX_CONNECT_FRAME_BYTES, MAX_CONNECT_MESSAGE_BYTES, } from "./connect-frame";
3
- import { CursorProtocolError } from "./proto/errors";
2
+ import { CONNECT_COMPRESSED, CONNECT_END_STREAM, MAX_CONNECT_FRAME_BYTES, MAX_CONNECT_MESSAGE_BYTES, } from "./connect-frame.js";
3
+ import { CursorProtocolError } from "./proto/errors.js";
4
4
  const ConnectCodeSchema = z.enum([
5
5
  "canceled",
6
6
  "unknown",
@@ -1,6 +1,6 @@
1
1
  // Derived from Rahularya01/pi-cursor Connect envelope handling. Licensed under MIT.
2
2
  // See THIRD_PARTY_NOTICES.md.
3
- import { CursorProtocolError } from "./proto/errors";
3
+ import { CursorProtocolError } from "./proto/errors.js";
4
4
  export const CONNECT_COMPRESSED = 0x01;
5
5
  export const CONNECT_END_STREAM = 0x02;
6
6
  export const MAX_CONNECT_MESSAGE_BYTES = 64 * 1024 * 1024;
@@ -1,11 +1,11 @@
1
1
  import type { LanguageModelV3CallOptions } from "@ai-sdk/provider";
2
- import type { Clock } from "../../core/clock";
3
- import type { CursorBridgeClient } from "./bridge-client";
4
- import type { CursorCheckpointStore } from "./checkpoint-store";
5
- import type { CursorMcpTool } from "./mcp-tools";
6
- import type { CursorRequestBlobOwnership } from "./request-blob-ownership";
7
- import type { CursorRunSessionRegistry } from "./run-session";
8
- import type { CursorSessionId, CursorSessionStateStore } from "./session-state";
2
+ import type { Clock } from "../../core/clock.js";
3
+ import type { CursorBridgeClient } from "./bridge-client.js";
4
+ import type { CursorCheckpointStore } from "./checkpoint-store.js";
5
+ import type { CursorMcpTool } from "./mcp-tools.js";
6
+ import type { CursorRequestBlobOwnership } from "./request-blob-ownership.js";
7
+ import type { CursorRunSessionRegistry } from "./run-session.js";
8
+ import type { CursorSessionId, CursorSessionStateStore } from "./session-state.js";
9
9
  export type CursorDirectSetupCleanupResources = {
10
10
  readonly checkpointStore: CursorCheckpointStore;
11
11
  readonly ownership: CursorRequestBlobOwnership;
@@ -1,5 +1,5 @@
1
- import type { CursorDirectRunOptions } from "./direct-run-types";
2
- import { type CursorStreamAdapter } from "./stream-adapter";
1
+ import type { CursorDirectRunOptions } from "./direct-run-types.js";
2
+ import { type CursorStreamAdapter } from "./stream-adapter.js";
3
3
  export declare function startCursorDirectRun(options: CursorDirectRunOptions): Promise<{
4
4
  readonly stream: CursorStreamAdapter["stream"];
5
5
  }>;
@@ -1,17 +1,17 @@
1
- import { OperationCancelledError } from "../../core/errors";
2
- import { parseModelId } from "../../core/ids";
3
- import { createCursorBlobStore } from "./blob-store";
4
- import { createCursorCheckpointStore } from "./checkpoint-store";
5
- import { encodeConnectFrame } from "./connect-frame";
6
- import { consumeCursorDirectAttempt, isCursorRetryableStreamError } from "./direct-stream";
7
- import { cursorMcpDefinitions } from "./exec-reply";
8
- import { cursorPromptText } from "./prompt";
9
- import { createCursorIdleWatchdog, createCursorRecoveryPlanner } from "./recovery";
10
- import { buildCursorAgentRunRequest } from "./request-build";
11
- import { createCursorServerDispatcher } from "./server-dispatch";
12
- import { createCursorSessionStateStore, parseCursorSessionId } from "./session-state";
13
- import { settleCursorCleanup } from "./settle-cleanup";
14
- import { createCursorStreamAdapter } from "./stream-adapter";
1
+ import { OperationCancelledError } from "../../core/errors.js";
2
+ import { parseModelId } from "../../core/ids.js";
3
+ import { createCursorBlobStore } from "./blob-store.js";
4
+ import { createCursorCheckpointStore } from "./checkpoint-store.js";
5
+ import { encodeConnectFrame } from "./connect-frame.js";
6
+ import { consumeCursorDirectAttempt, isCursorRetryableStreamError } from "./direct-stream.js";
7
+ import { cursorMcpDefinitions } from "./exec-reply.js";
8
+ import { cursorPromptText } from "./prompt.js";
9
+ import { createCursorIdleWatchdog, createCursorRecoveryPlanner } from "./recovery.js";
10
+ import { buildCursorAgentRunRequest } from "./request-build.js";
11
+ import { createCursorServerDispatcher } from "./server-dispatch.js";
12
+ import { createCursorSessionStateStore, parseCursorSessionId } from "./session-state.js";
13
+ import { settleCursorCleanup } from "./settle-cleanup.js";
14
+ import { createCursorStreamAdapter } from "./stream-adapter.js";
15
15
  const CURSOR_RUN_PATH = "/agent.v1.AgentService/Run";
16
16
  function createLogicalRun(options) {
17
17
  const sessionId = parseCursorSessionId(options.createId());