opencode-gemini-cli-oauth 1.1.13 → 1.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -8,8 +8,7 @@
8
8
  *
9
9
  * Main entry point for the plugin
10
10
  */
11
- export { GeminiCLIOAuthPlugin, metadata } from './plugin.js';
12
- export type { OAuthCredentials, GoogleAccount, AccountPoolEntry, AccountPool, PluginConfig, } from './types.js';
11
+ export { default } from './plugin.js';
13
12
  export { oauth } from './auth/oauth.js';
14
13
  export { accountManager } from './auth/account-manager.js';
15
14
  export { StorageManager } from './storage/storage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AAGH,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG7D,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -8,8 +8,8 @@
8
8
  *
9
9
  * Main entry point for the plugin
10
10
  */
11
- // Named export for OpenCode (following Antigravity pattern)
12
- export { GeminiCLIOAuthPlugin, metadata } from './plugin.js';
11
+ // Default export for OpenCode (Factory Function Pattern)
12
+ export { default } from './plugin.js';
13
13
  // Export utilities for advanced usage
14
14
  export { oauth } from './auth/oauth.js';
15
15
  export { accountManager } from './auth/account-manager.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AAEH,4DAA4D;AAC5D,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAW7D,sCAAsC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AAEH,yDAAyD;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,sCAAsC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/plugin.d.ts CHANGED
@@ -6,20 +6,15 @@
6
6
  import type { PluginContext } from './types.js';
7
7
  /**
8
8
  * OpenCode Plugin for Gemini CLI OAuth Authentication
9
+ * Refactored based on Architectural Analysis (Factory Function Pattern)
9
10
  */
10
- export declare const GeminiCLIOAuthPlugin: ({ client, directory }: PluginContext) => Promise<{
11
+ export default function loadPlugin(context: PluginContext): Promise<{
11
12
  auth: {
12
13
  provider: string;
13
- /**
14
- * Auth loader - returns object with apiKey and fetch function
15
- */
16
14
  loader: (getAuth: any, provider: string) => Promise<{
17
15
  apiKey: string;
18
- fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
16
+ fetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
19
17
  }>;
20
- /**
21
- * Auth methods
22
- */
23
18
  methods: {
24
19
  label: string;
25
20
  type: string;
@@ -40,13 +35,4 @@ export declare const GeminiCLIOAuthPlugin: ({ client, directory }: PluginContext
40
35
  }[];
41
36
  };
42
37
  }>;
43
- export declare const metadata: {
44
- name: string;
45
- version: string;
46
- description: string;
47
- author: string;
48
- compatibleWith: {
49
- opencode: string;
50
- };
51
- };
52
38
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAK5D;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAU,uBAAuB,aAAa;;;QAOzE;;WAEG;0BACqB,GAAG,YAAY,MAAM;;yBAKtB,WAAW,GAAG,GAAG,SAAS,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;;QAgChF;;WAEG;;;;;;;;;;;;;;;;;;;;EA6BR,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,wBAA8B,UAAU,CAAC,OAAO,EAAE,aAAa;;;0BA4DjC,GAAG,YAAY,MAAM;;2BAlDV,WAAW,GAAG,GAAG,SAAS,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;GAkFjG"}
package/dist/plugin.js CHANGED
@@ -4,53 +4,68 @@
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
6
  import { oauth } from './auth/oauth.js';
7
- // No instantiation needed
8
- // const oauthManager = new OAuthManager();
9
7
  /**
10
8
  * OpenCode Plugin for Gemini CLI OAuth Authentication
9
+ * Refactored based on Architectural Analysis (Factory Function Pattern)
11
10
  */
12
- export const GeminiCLIOAuthPlugin = async ({ client, directory }) => {
13
- console.log('🚀 Loading Gemini CLI OAuth plugin (v1.1.13)...');
11
+ export default async function loadPlugin(context) {
12
+ console.log('🚀 Loading Gemini CLI OAuth plugin (v1.1.14)...');
13
+ // 1. Capture original fetcher (Middleware pattern)
14
+ // Fallback to global fetch if context.client.fetch is not available
15
+ const nextFetch = (context.client && context.client.fetch)
16
+ ? context.client.fetch.bind(context.client)
17
+ : globalThis.fetch.bind(globalThis);
18
+ // 2. Define the interceptor
19
+ const interceptedFetch = async (input, init) => {
20
+ const urlStr = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
21
+ // Filter: Only intercept Gemini API requests
22
+ if (!urlStr.includes('generativelanguage.googleapis.com')) {
23
+ return nextFetch(input, init);
24
+ }
25
+ try {
26
+ // 3. Auth Check & Token Retrieval
27
+ // This handles token refresh automatically via our functional module
28
+ const token = await oauth.getAccessToken();
29
+ // 4. Clone init to avoid mutation side-effects
30
+ const newInit = { ...init };
31
+ const headers = new Headers(newInit.headers);
32
+ // 5. Inject Header
33
+ headers.set('Authorization', `Bearer ${token}`);
34
+ newInit.headers = headers;
35
+ // Remove API key query param if present (cleanup)
36
+ let targetInput = input;
37
+ if (typeof input === 'string' && input.includes('key=')) {
38
+ const urlObj = new URL(input);
39
+ urlObj.searchParams.delete('key');
40
+ targetInput = urlObj.toString();
41
+ }
42
+ else if (input instanceof URL && input.searchParams.has('key')) {
43
+ const urlObj = new URL(input.toString());
44
+ urlObj.searchParams.delete('key');
45
+ targetInput = urlObj;
46
+ }
47
+ // 6. Forward to original fetcher
48
+ return nextFetch(targetInput, newInit);
49
+ }
50
+ catch (error) {
51
+ console.error('❌ [Gemini OAuth] Token error:', error);
52
+ // Fallback: try request without auth injection (will likely fail 401/403 but preserves flow)
53
+ return nextFetch(input, init);
54
+ }
55
+ };
56
+ // 7. Return the plugin instance with the auth loader structure
57
+ // The runtime expects an object that provides the auth strategy
14
58
  return {
15
59
  auth: {
16
60
  provider: 'gemini-cli-oauth',
17
- /**
18
- * Auth loader - returns object with apiKey and fetch function
19
- */
61
+ // The loader itself is a factory that returns the strategy implementation
20
62
  loader: async (getAuth, provider) => {
63
+ console.log(`🔌 Initializing auth strategy for ${provider}`);
21
64
  return {
22
65
  apiKey: 'gemini-cli-oauth-placeholder',
23
- // Inline fetch definition
24
- async fetch(input, init) {
25
- const urlStr = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url;
26
- // Only intercept Gemini API requests
27
- if (!urlStr.includes('generativelanguage.googleapis.com')) {
28
- return fetch(input, init);
29
- }
30
- try {
31
- // Get OAuth token using functional module
32
- const token = await oauth.getAccessToken();
33
- // Inject Authorization header
34
- const headers = new Headers(init === null || init === void 0 ? void 0 : init.headers);
35
- headers.set('Authorization', `Bearer ${token}`);
36
- // Remove API key from URL if present
37
- const urlObj = new URL(urlStr);
38
- urlObj.searchParams.delete('key');
39
- return fetch(urlObj.toString(), {
40
- ...init,
41
- headers
42
- });
43
- }
44
- catch (error) {
45
- console.error('❌ [Gemini OAuth] Token error:', error);
46
- return fetch(input, init);
47
- }
48
- }
66
+ fetch: interceptedFetch
49
67
  };
50
68
  },
51
- /**
52
- * Auth methods
53
- */
54
69
  methods: [
55
70
  {
56
71
  label: "Google Account (via Gemini CLI)",
@@ -68,25 +83,13 @@ export const GeminiCLIOAuthPlugin = async ({ client, directory }) => {
68
83
  }
69
84
  }
70
85
  catch (_a) { }
71
- return {
72
- type: "failed",
73
- error: "Authentication failed. Run 'opencode-gemini-setup'."
74
- };
86
+ return { type: "failed", error: "Run 'opencode-gemini-setup' first." };
75
87
  }
76
88
  };
77
89
  }
78
90
  }
79
91
  ]
80
- },
92
+ }
81
93
  };
82
- };
83
- export const metadata = {
84
- name: 'opencode-gemini-cli-oauth',
85
- version: '1.1.8',
86
- description: 'Use Gemini CLI OAuth credentials in OpenCode',
87
- author: 'Yusuf',
88
- compatibleWith: {
89
- opencode: '^1.0.0',
90
- },
91
- };
94
+ }
92
95
  //# sourceMappingURL=plugin.js.map
@@ -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-gemini-cli-oauth",
3
- "version": "1.1.13",
3
+ "version": "1.1.14",
4
4
  "description": "OpenCode plugin for Gemini CLI OAuth authentication - use Google account quota without API keys",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",