opencode-windsurf-codeium 0.1.9 → 0.1.11

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/README.md CHANGED
@@ -28,7 +28,7 @@ bun add opencode-windsurf-codeium@beta
28
28
 
29
29
  ## OpenCode Configuration
30
30
 
31
- Add the following to your OpenCode config (typically `~/.config/opencode/config.json`):
31
+ Add the following to your OpenCode config (typically `~/.config/opencode/config.json`). The plugin starts a local proxy server on port 42100:
32
32
 
33
33
  ```json
34
34
  {
@@ -36,6 +36,10 @@ Add the following to your OpenCode config (typically `~/.config/opencode/config.
36
36
  "plugin": ["opencode-windsurf-codeium"],
37
37
  "provider": {
38
38
  "windsurf": {
39
+ "npm": "@ai-sdk/openai-compatible",
40
+ "options": {
41
+ "baseURL": "http://127.0.0.1:42100/v1"
42
+ },
39
43
  "models": {
40
44
  "claude-4.5-opus": {
41
45
  "name": "Claude 4.5 Opus (Windsurf)",
@@ -35,8 +35,8 @@ export declare class WindsurfError extends Error {
35
35
  */
36
36
  export declare function getCSRFToken(): string;
37
37
  /**
38
- * Get the language server port from process arguments
39
- * The actual gRPC port is extension_server_port + 4
38
+ * Get the language server gRPC port dynamically using lsof
39
+ * The port offset from extension_server_port varies (--random_port flag), so we use lsof
40
40
  */
41
41
  export declare function getPort(): number;
42
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/plugin/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,iBAAiB;IAC3B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAC9B;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO;CAMxE;AA8DD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAmBrC;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAsChC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,MAAM,CA+ClC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAc3C;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,mBAAmB,CAOpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAe7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,WAAW,IAAI,mBAAmB,CAUjH"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/plugin/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,iBAAiB;IAC3B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAC9B;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO;CAMxE;AA8DD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAmBrC;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAwDhC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,MAAM,CA+ClC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAc3C;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,mBAAmB,CAOpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAe7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,WAAW,IAAI,mBAAmB,CAUjH"}
@@ -93,34 +93,48 @@ export function getCSRFToken() {
93
93
  throw new WindsurfError('CSRF token not found in Windsurf process. Is Windsurf running?', WindsurfErrorCode.CSRF_MISSING);
94
94
  }
95
95
  /**
96
- * Get the language server port from process arguments
97
- * The actual gRPC port is extension_server_port + 4
96
+ * Get the language server gRPC port dynamically using lsof
97
+ * The port offset from extension_server_port varies (--random_port flag), so we use lsof
98
98
  */
99
99
  export function getPort() {
100
100
  const processInfo = getLanguageServerProcess();
101
101
  if (!processInfo) {
102
102
  throw new WindsurfError('Windsurf language server not found. Is Windsurf running?', WindsurfErrorCode.NOT_RUNNING);
103
103
  }
104
- // Try to get extension_server_port from process args
104
+ // Extract PID from ps output (second column)
105
+ const pidMatch = processInfo.match(/^\s*\S+\s+(\d+)/);
106
+ const pid = pidMatch ? pidMatch[1] : null;
107
+ // Get extension_server_port as a reference point
105
108
  const portMatch = processInfo.match(/--extension_server_port\s+(\d+)/);
106
- if (portMatch) {
107
- // The gRPC port is extension_server_port + 4
108
- return parseInt(portMatch[1], 10) + 4;
109
- }
110
- // Fallback: try to find from lsof
111
- if (process.platform !== 'win32') {
109
+ const extPort = portMatch ? parseInt(portMatch[1], 10) : null;
110
+ // Use lsof to find actual listening ports for this specific PID
111
+ if (process.platform !== 'win32' && pid) {
112
112
  try {
113
- const pattern = getLanguageServerPattern();
114
- const lsof = execSync(`lsof -c ${pattern.substring(0, 15)} -i -P 2>/dev/null | grep LISTEN`, { encoding: 'utf8', timeout: 15000 });
115
- const match = lsof.match(/:(\d+)\s+\(LISTEN\)/);
116
- if (match) {
117
- return parseInt(match[1], 10);
113
+ const lsof = execSync(`lsof -p ${pid} -i -P -n 2>/dev/null | grep LISTEN`, { encoding: 'utf8', timeout: 15000 });
114
+ // Extract all listening ports
115
+ const portMatches = lsof.matchAll(/:(\d+)\s+\(LISTEN\)/g);
116
+ const ports = Array.from(portMatches).map(m => parseInt(m[1], 10));
117
+ if (ports.length > 0) {
118
+ // If we have extension_server_port, prefer the port closest to it (usually +3)
119
+ if (extPort) {
120
+ // Sort by distance from extPort and pick the closest one > extPort
121
+ const candidatePorts = ports.filter(p => p > extPort).sort((a, b) => a - b);
122
+ if (candidatePorts.length > 0) {
123
+ return candidatePorts[0]; // Return the first port after extPort
124
+ }
125
+ }
126
+ // Otherwise just return the first listening port
127
+ return ports[0];
118
128
  }
119
129
  }
120
130
  catch {
121
- // Ignore fallback errors
131
+ // Fall through to offset-based approach
122
132
  }
123
133
  }
134
+ // Fallback: try common offsets (+3, +2, +4)
135
+ if (extPort) {
136
+ return extPort + 3;
137
+ }
124
138
  throw new WindsurfError('Windsurf language server port not found. Is Windsurf running?', WindsurfErrorCode.NOT_RUNNING);
125
139
  }
126
140
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/plugin/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/plugin/auth.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  */
16
16
  import type { PluginInput, Hooks } from '@opencode-ai/plugin';
17
17
  /**
18
- * Create the Windsurf plugin
18
+ * Create the Windsurf plugin (follows cursor-auth pattern)
19
19
  */
20
20
  export declare const createWindsurfPlugin: (providerId?: string) => (_context: PluginInput) => Promise<Hooks>;
21
21
  /** Default Windsurf plugin export */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAmO9D;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC9B,aAAY,MAAkB,MACxB,UAAU,WAAW,KAAG,OAAO,CAAC,KAAK,CAsJ3C,CAAC;AAEJ,qCAAqC;AACrC,eAAO,MAAM,cAAc,aAzJR,WAAW,KAAG,OAAO,CAAC,KAAK,CAyJM,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,aAAa,aA5JP,WAAW,KAAG,OAAO,CAAC,KAAK,CA4Jc,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AA2X9D;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC9B,aAAY,MAAkB,MACxB,UAAU,WAAW,KAAG,OAAO,CAAC,KAAK,CA6B3C,CAAC;AAEJ,qCAAqC;AACrC,eAAO,MAAM,cAAc,aAhCR,WAAW,KAAG,OAAO,CAAC,KAAK,CAgCM,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,aAAa,aAnCP,WAAW,KAAG,OAAO,CAAC,KAAK,CAmCc,CAAC"}
@@ -119,142 +119,186 @@ async function createNonStreamingResponse(credentials, request) {
119
119
  const fullContent = chunks.join('');
120
120
  return createOpenAICompatibleResponse(responseId, model, fullContent, false, 'stop');
121
121
  }
122
- /**
123
- * Parse request body from various formats
124
- */
125
- function parseRequestBody(body) {
126
- if (!body) {
127
- return { model: getDefaultModel(), messages: [] };
128
- }
129
- if (typeof body === 'string') {
130
- return JSON.parse(body);
131
- }
132
- if (body instanceof ArrayBuffer) {
133
- return JSON.parse(new TextDecoder().decode(body));
122
+ // ============================================================================
123
+ // Local Proxy Server (like cursor-auth pattern)
124
+ // ============================================================================
125
+ const WINDSURF_PROXY_HOST = '127.0.0.1';
126
+ const WINDSURF_PROXY_DEFAULT_PORT = 42100;
127
+ function getGlobalKey() {
128
+ return '__opencode_windsurf_proxy_server__';
129
+ }
130
+ function openAIError(status, message, details) {
131
+ return new Response(JSON.stringify({
132
+ error: {
133
+ message: details ? `${message}\n${details}` : message,
134
+ type: 'windsurf_error',
135
+ param: null,
136
+ code: null,
137
+ },
138
+ }), { status, headers: { 'Content-Type': 'application/json' } });
139
+ }
140
+ async function ensureWindsurfProxyServer() {
141
+ const key = getGlobalKey();
142
+ const g = globalThis;
143
+ // Return existing server URL if already started
144
+ const existingBaseURL = g[key]?.baseURL;
145
+ if (typeof existingBaseURL === 'string' && existingBaseURL.length > 0) {
146
+ return existingBaseURL;
134
147
  }
135
- if (typeof body === 'object' && body !== null) {
136
- return body;
148
+ // Mark as starting to avoid duplicate starts
149
+ g[key] = { baseURL: '' };
150
+ const handler = async (req) => {
151
+ try {
152
+ const url = new URL(req.url);
153
+ // Health check endpoint
154
+ if (url.pathname === '/health') {
155
+ return new Response(JSON.stringify({ ok: true, windsurf: isWindsurfRunning() }), {
156
+ status: 200,
157
+ headers: { 'Content-Type': 'application/json' },
158
+ });
159
+ }
160
+ // Models endpoint
161
+ if (url.pathname === '/v1/models' || url.pathname === '/models') {
162
+ const models = getCanonicalModels();
163
+ return new Response(JSON.stringify({
164
+ object: 'list',
165
+ data: models.map((id) => ({
166
+ id,
167
+ object: 'model',
168
+ created: Math.floor(Date.now() / 1000),
169
+ owned_by: 'windsurf',
170
+ })),
171
+ }), { status: 200, headers: { 'Content-Type': 'application/json' } });
172
+ }
173
+ // Chat completions endpoint
174
+ if (url.pathname === '/v1/chat/completions' || url.pathname === '/chat/completions') {
175
+ console.log('[windsurf-plugin] Received chat completion request');
176
+ if (!isWindsurfRunning()) {
177
+ console.log('[windsurf-plugin] Windsurf not running');
178
+ return openAIError(503, 'Windsurf is not running. Please launch Windsurf first.');
179
+ }
180
+ try {
181
+ const credentials = getCredentials();
182
+ console.log('[windsurf-plugin] Got credentials, port:', credentials.port);
183
+ const body = await req.json().catch(() => ({}));
184
+ const requestBody = body;
185
+ const isStreaming = requestBody.stream === true;
186
+ console.log('[windsurf-plugin] Model:', requestBody.model, 'Streaming:', isStreaming);
187
+ if (isStreaming) {
188
+ const stream = createStreamingResponse(credentials, requestBody);
189
+ return new Response(stream, {
190
+ status: 200,
191
+ headers: {
192
+ 'Content-Type': 'text/event-stream',
193
+ 'Cache-Control': 'no-cache',
194
+ Connection: 'keep-alive',
195
+ },
196
+ });
197
+ }
198
+ const responseData = await createNonStreamingResponse(credentials, requestBody);
199
+ console.log('[windsurf-plugin] Response received');
200
+ return new Response(JSON.stringify(responseData), {
201
+ status: 200,
202
+ headers: { 'Content-Type': 'application/json' },
203
+ });
204
+ }
205
+ catch (chatError) {
206
+ const errMsg = chatError instanceof Error ? chatError.message : String(chatError);
207
+ console.error('[windsurf-plugin] Chat error:', errMsg);
208
+ return openAIError(500, 'Chat completion failed', errMsg);
209
+ }
210
+ }
211
+ return openAIError(404, `Unsupported path: ${url.pathname}`);
212
+ }
213
+ catch (error) {
214
+ const message = error instanceof Error ? error.message : String(error);
215
+ return openAIError(500, 'Proxy error', message);
216
+ }
217
+ };
218
+ const bunAny = globalThis;
219
+ if (typeof bunAny.Bun !== 'undefined' && typeof bunAny.Bun.serve === 'function') {
220
+ // Check if server already running on default port
221
+ try {
222
+ const res = await fetch(`http://${WINDSURF_PROXY_HOST}:${WINDSURF_PROXY_DEFAULT_PORT}/health`).catch(() => null);
223
+ if (res && res.ok) {
224
+ const baseURL = `http://${WINDSURF_PROXY_HOST}:${WINDSURF_PROXY_DEFAULT_PORT}/v1`;
225
+ g[key].baseURL = baseURL;
226
+ return baseURL;
227
+ }
228
+ }
229
+ catch {
230
+ // ignore
231
+ }
232
+ const startServer = (port) => {
233
+ return bunAny.Bun.serve({
234
+ hostname: WINDSURF_PROXY_HOST,
235
+ port,
236
+ fetch: handler,
237
+ });
238
+ };
239
+ try {
240
+ const server = startServer(WINDSURF_PROXY_DEFAULT_PORT);
241
+ const baseURL = `http://${WINDSURF_PROXY_HOST}:${server.port}/v1`;
242
+ g[key].baseURL = baseURL;
243
+ console.log(`[windsurf-plugin] Proxy server started at ${baseURL}`);
244
+ return baseURL;
245
+ }
246
+ catch (error) {
247
+ const code = error?.code;
248
+ if (code !== 'EADDRINUSE') {
249
+ throw error;
250
+ }
251
+ // Port in use - check if it's our server
252
+ try {
253
+ const res = await fetch(`http://${WINDSURF_PROXY_HOST}:${WINDSURF_PROXY_DEFAULT_PORT}/health`).catch(() => null);
254
+ if (res && res.ok) {
255
+ const baseURL = `http://${WINDSURF_PROXY_HOST}:${WINDSURF_PROXY_DEFAULT_PORT}/v1`;
256
+ g[key].baseURL = baseURL;
257
+ return baseURL;
258
+ }
259
+ }
260
+ catch {
261
+ // ignore
262
+ }
263
+ // Fallback to random port
264
+ const server = startServer(0);
265
+ const baseURL = `http://${WINDSURF_PROXY_HOST}:${server.port}/v1`;
266
+ g[key].baseURL = baseURL;
267
+ console.log(`[windsurf-plugin] Proxy server started at ${baseURL} (fallback port)`);
268
+ return baseURL;
269
+ }
137
270
  }
138
- return { model: getDefaultModel(), messages: [] };
271
+ throw new Error('Windsurf proxy server requires Bun runtime');
139
272
  }
140
273
  // ============================================================================
141
274
  // Plugin Factory
142
275
  // ============================================================================
143
276
  /**
144
- * Create the Windsurf plugin
277
+ * Create the Windsurf plugin (follows cursor-auth pattern)
145
278
  */
146
279
  export const createWindsurfPlugin = (providerId = PLUGIN_ID) => async (_context) => {
280
+ // Start proxy server on plugin load
281
+ const proxyBaseURL = await ensureWindsurfProxyServer();
147
282
  return {
148
283
  auth: {
149
284
  provider: providerId,
150
- loader: async (_getAuth, _provider) => {
151
- const windsRunning = isWindsurfRunning();
152
- if (!windsRunning) {
153
- console.warn('[windsurf-plugin] Windsurf is not running. Please start Windsurf first.');
154
- }
155
- return {
156
- // Empty API key since we use local credentials
157
- apiKey: '',
158
- // Custom fetch handler (method syntax like antigravity)
159
- async fetch(input, init) {
160
- // Extract URL string, handling undefined/malformed cases
161
- let url;
162
- try {
163
- url =
164
- typeof input === 'string'
165
- ? input
166
- : input instanceof URL
167
- ? input.href
168
- : input.url;
169
- }
170
- catch {
171
- url = String(input);
172
- }
173
- // Normalize: if URL starts with "undefined" (no baseURL configured),
174
- // extract just the path portion
175
- if (url.startsWith('undefined')) {
176
- url = url.replace(/^undefined/, '');
177
- }
178
- // Handle /v1/models - return available models even if Windsurf is offline
179
- if (url.includes('/models') || url.includes('/v1/models')) {
180
- const models = getCanonicalModels();
181
- return new Response(JSON.stringify({
182
- object: 'list',
183
- data: models.map((id) => ({
184
- id,
185
- object: 'model',
186
- created: Math.floor(Date.now() / 1000),
187
- owned_by: 'windsurf',
188
- })),
189
- }), {
190
- status: 200,
191
- headers: { 'Content-Type': 'application/json' },
192
- });
193
- }
194
- // Handle chat completions
195
- if (url.includes('/chat/completions') ||
196
- url.includes('/v1/chat/completions')) {
197
- try {
198
- if (!isWindsurfRunning()) {
199
- return new Response(JSON.stringify({
200
- error: {
201
- message: 'Windsurf is not running. Please launch Windsurf to use this provider.',
202
- type: 'windsurf_not_running',
203
- code: 'windsurf_not_running',
204
- },
205
- }), {
206
- status: 503,
207
- headers: { 'Content-Type': 'application/json' },
208
- });
209
- }
210
- // Get fresh credentials for each request
211
- const credentials = getCredentials();
212
- // Parse request body
213
- const requestBody = parseRequestBody(init?.body);
214
- const isStreaming = requestBody.stream === true;
215
- if (isStreaming) {
216
- const stream = createStreamingResponse(credentials, requestBody);
217
- return new Response(stream, {
218
- status: 200,
219
- headers: {
220
- 'Content-Type': 'text/event-stream',
221
- 'Cache-Control': 'no-cache',
222
- Connection: 'keep-alive',
223
- },
224
- });
225
- }
226
- // Non-streaming response
227
- const responseData = await createNonStreamingResponse(credentials, requestBody);
228
- return new Response(JSON.stringify(responseData), {
229
- status: 200,
230
- headers: { 'Content-Type': 'application/json' },
231
- });
232
- }
233
- catch (error) {
234
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
235
- return new Response(JSON.stringify({
236
- error: {
237
- message: errorMessage,
238
- type: 'windsurf_error',
239
- code: 'windsurf_connection_failed',
240
- },
241
- }), {
242
- status: 500,
243
- headers: { 'Content-Type': 'application/json' },
244
- });
245
- }
246
- }
247
- // For any other endpoint, return a generic success
248
- return new Response(JSON.stringify({ status: 'ok' }), {
249
- status: 200,
250
- headers: { 'Content-Type': 'application/json' },
251
- });
252
- },
253
- };
285
+ async loader(_getAuth) {
286
+ // Return empty - we handle auth via the proxy server
287
+ return {};
254
288
  },
255
289
  // No auth methods needed - we use Windsurf's existing auth
256
290
  methods: [],
257
291
  },
292
+ // Dynamic baseURL injection (key pattern from cursor-auth)
293
+ async 'chat.params'(input, output) {
294
+ if (input.model?.providerID !== providerId) {
295
+ return;
296
+ }
297
+ // Inject the proxy server URL dynamically
298
+ output.options = output.options || {};
299
+ output.options.baseURL = proxyBaseURL;
300
+ output.options.apiKey = output.options.apiKey || 'windsurf-local';
301
+ },
258
302
  };
259
303
  };
260
304
  /** Default Windsurf plugin export */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-windsurf-codeium",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "OpenCode plugin for Windsurf/Codeium authentication - use Windsurf models in OpenCode",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",