@iamtoricool/opencool-qwen-auth 0.0.1-alpha → 0.0.3-alpha

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 (47) hide show
  1. package/dist/lib/auth/auth.d.ts +72 -0
  2. package/dist/lib/auth/auth.d.ts.map +1 -0
  3. package/dist/lib/auth/auth.js +212 -0
  4. package/dist/lib/auth/auth.js.map +1 -0
  5. package/dist/lib/auth/browser-session.d.ts +49 -0
  6. package/dist/lib/auth/browser-session.d.ts.map +1 -0
  7. package/dist/lib/auth/browser-session.js +211 -0
  8. package/dist/lib/auth/browser-session.js.map +1 -0
  9. package/dist/lib/auth/browser.d.ts +17 -0
  10. package/dist/lib/auth/browser.d.ts.map +1 -0
  11. package/dist/lib/auth/browser.js +86 -0
  12. package/dist/lib/auth/browser.js.map +1 -0
  13. package/dist/lib/auth/server.d.ts +14 -0
  14. package/dist/lib/auth/server.d.ts.map +1 -0
  15. package/dist/lib/auth/server.js +253 -0
  16. package/dist/lib/auth/server.js.map +1 -0
  17. package/dist/lib/config.d.ts +28 -0
  18. package/dist/lib/config.d.ts.map +1 -0
  19. package/dist/lib/config.js +67 -0
  20. package/dist/lib/config.js.map +1 -0
  21. package/dist/lib/constants.d.ts +77 -0
  22. package/dist/lib/constants.d.ts.map +1 -0
  23. package/dist/lib/constants.js +109 -0
  24. package/dist/lib/constants.js.map +1 -0
  25. package/dist/lib/logger.d.ts +49 -0
  26. package/dist/lib/logger.d.ts.map +1 -0
  27. package/dist/lib/logger.js +56 -0
  28. package/dist/lib/logger.js.map +1 -0
  29. package/dist/lib/oauth-success.html +83 -0
  30. package/dist/lib/request/fetch-helpers.d.ts +66 -0
  31. package/dist/lib/request/fetch-helpers.d.ts.map +1 -0
  32. package/dist/lib/request/fetch-helpers.js +193 -0
  33. package/dist/lib/request/fetch-helpers.js.map +1 -0
  34. package/dist/lib/request/request-transformer.d.ts +27 -0
  35. package/dist/lib/request/request-transformer.d.ts.map +1 -0
  36. package/dist/lib/request/request-transformer.js +159 -0
  37. package/dist/lib/request/request-transformer.js.map +1 -0
  38. package/dist/lib/request/response-handler.d.ts +32 -0
  39. package/dist/lib/request/response-handler.d.ts.map +1 -0
  40. package/dist/lib/request/response-handler.js +176 -0
  41. package/dist/lib/request/response-handler.js.map +1 -0
  42. package/dist/lib/types.d.ts +159 -0
  43. package/dist/lib/types.d.ts.map +1 -0
  44. package/dist/lib/types.js +5 -0
  45. package/dist/lib/types.js.map +1 -0
  46. package/iamtoricool-opencool-qwen-auth-0.0.1-alpha.tgz +0 -0
  47. package/package.json +1 -1
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Response handling utilities
3
+ * Handles SSE parsing and conversion to JSON for non-streaming requests
4
+ */
5
+ import type { SSEEventData } from "../types.js";
6
+ /**
7
+ * Parse SSE stream data to extract the final response
8
+ * @param text - Raw SSE response text
9
+ * @returns Array of parsed SSE events
10
+ */
11
+ export declare function parseSseStream(text: string): SSEEventData[];
12
+ /**
13
+ * Convert SSE stream to OpenAI-compatible JSON response
14
+ * This is used for non-streaming requests that receive SSE responses
15
+ * @param events - Parsed SSE events
16
+ * @returns OpenAI-compatible chat completion response
17
+ */
18
+ export declare function convertSseToChatCompletion(events: SSEEventData[]): Record<string, unknown>;
19
+ /**
20
+ * Convert SSE response to JSON response for non-streaming requests
21
+ * @param response - Original SSE response
22
+ * @param headers - Response headers to preserve
23
+ * @returns JSON response
24
+ */
25
+ export declare function convertSseToJson(response: Response, headers: Headers): Promise<Response>;
26
+ /**
27
+ * Ensure response has proper content-type headers
28
+ * @param originalHeaders - Original response headers
29
+ * @returns Headers with proper content-type
30
+ */
31
+ export declare function ensureContentType(originalHeaders: Headers): Headers;
32
+ //# sourceMappingURL=response-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-handler.d.ts","sourceRoot":"","sources":["../../../lib/request/response-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwBhD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAe3D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EAAE,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2EzB;AAmBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAwBnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CASnE"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Response handling utilities
3
+ * Handles SSE parsing and conversion to JSON for non-streaming requests
4
+ */
5
+ /**
6
+ * Parse an SSE (Server-Sent Events) data line
7
+ * @param line - SSE data line (e.g., "data: {...}")
8
+ * @returns Parsed event data or null if invalid
9
+ */
10
+ function parseSseLine(line) {
11
+ if (!line.startsWith("data: "))
12
+ return null;
13
+ const data = line.substring(6); // Remove "data: " prefix
14
+ // Check for [DONE] marker
15
+ if (data === "[DONE]") {
16
+ return { type: "done" };
17
+ }
18
+ try {
19
+ return JSON.parse(data);
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ /**
26
+ * Parse SSE stream data to extract the final response
27
+ * @param text - Raw SSE response text
28
+ * @returns Array of parsed SSE events
29
+ */
30
+ export function parseSseStream(text) {
31
+ const events = [];
32
+ const lines = text.split("\n");
33
+ for (const line of lines) {
34
+ const trimmed = line.trim();
35
+ if (!trimmed || !trimmed.startsWith("data: "))
36
+ continue;
37
+ const event = parseSseLine(trimmed);
38
+ if (event) {
39
+ events.push(event);
40
+ }
41
+ }
42
+ return events;
43
+ }
44
+ /**
45
+ * Convert SSE stream to OpenAI-compatible JSON response
46
+ * This is used for non-streaming requests that receive SSE responses
47
+ * @param events - Parsed SSE events
48
+ * @returns OpenAI-compatible chat completion response
49
+ */
50
+ export function convertSseToChatCompletion(events) {
51
+ // Collect all choices from the events
52
+ const choices = [];
53
+ let model = "unknown";
54
+ for (const event of events) {
55
+ // Handle different event types
56
+ if (event.type === "message_start" && event.message) {
57
+ const msg = event.message;
58
+ if (msg.model) {
59
+ model = String(msg.model);
60
+ }
61
+ }
62
+ // Handle content block deltas
63
+ if (event.type === "content_block_delta" || event.type === "delta") {
64
+ const delta = (event.delta || {});
65
+ const index = event.index ?? 0;
66
+ // Ensure choice exists
67
+ while (choices.length <= index) {
68
+ choices.push({
69
+ index: choices.length,
70
+ message: {
71
+ role: "assistant",
72
+ content: "",
73
+ },
74
+ finish_reason: null,
75
+ });
76
+ }
77
+ const choice = choices[index];
78
+ const message = (choice.message || {});
79
+ // Append text content
80
+ if (delta.text) {
81
+ message.content = String(message.content || "") + String(delta.text);
82
+ }
83
+ // Handle tool calls
84
+ if (delta.tool_calls) {
85
+ const existingToolCalls = (message.tool_calls || []);
86
+ const newToolCalls = delta.tool_calls;
87
+ message.tool_calls = [...existingToolCalls, ...newToolCalls];
88
+ }
89
+ }
90
+ // Handle message delta (finish reason)
91
+ if (event.type === "message_delta" && event.delta) {
92
+ const delta = event.delta;
93
+ if (delta.stop_reason && choices.length > 0) {
94
+ choices[0].finish_reason = mapStopReason(String(delta.stop_reason));
95
+ }
96
+ }
97
+ }
98
+ // Set default finish_reason if not set
99
+ for (const choice of choices) {
100
+ if (choice.finish_reason === null) {
101
+ choice.finish_reason = "stop";
102
+ }
103
+ }
104
+ return {
105
+ id: `chatcmpl-${Date.now()}`,
106
+ object: "chat.completion",
107
+ created: Math.floor(Date.now() / 1000),
108
+ model,
109
+ choices,
110
+ usage: {
111
+ prompt_tokens: 0,
112
+ completion_tokens: 0,
113
+ total_tokens: 0,
114
+ },
115
+ };
116
+ }
117
+ /**
118
+ * Map Qwen stop reasons to OpenAI-compatible finish_reason values
119
+ * @param stopReason - Qwen stop reason
120
+ * @returns OpenAI-compatible finish reason
121
+ */
122
+ function mapStopReason(stopReason) {
123
+ const reasonMap = {
124
+ end_turn: "stop",
125
+ stop: "stop",
126
+ max_tokens: "length",
127
+ tool_use: "tool_calls",
128
+ content_filter: "content_filter",
129
+ };
130
+ return reasonMap[stopReason] || stopReason;
131
+ }
132
+ /**
133
+ * Convert SSE response to JSON response for non-streaming requests
134
+ * @param response - Original SSE response
135
+ * @param headers - Response headers to preserve
136
+ * @returns JSON response
137
+ */
138
+ export async function convertSseToJson(response, headers) {
139
+ try {
140
+ const text = await response.text();
141
+ const events = parseSseStream(text);
142
+ const completion = convertSseToChatCompletion(events);
143
+ // Create JSON response
144
+ return new Response(JSON.stringify(completion), {
145
+ status: response.status,
146
+ statusText: response.statusText,
147
+ headers: {
148
+ ...Object.fromEntries(headers.entries()),
149
+ "Content-Type": "application/json",
150
+ },
151
+ });
152
+ }
153
+ catch (error) {
154
+ // If conversion fails, return original response
155
+ console.error("Failed to convert SSE to JSON:", error);
156
+ return new Response(response.body, {
157
+ status: response.status,
158
+ statusText: response.statusText,
159
+ headers,
160
+ });
161
+ }
162
+ }
163
+ /**
164
+ * Ensure response has proper content-type headers
165
+ * @param originalHeaders - Original response headers
166
+ * @returns Headers with proper content-type
167
+ */
168
+ export function ensureContentType(originalHeaders) {
169
+ const headers = new Headers(originalHeaders);
170
+ // Ensure we have a content-type
171
+ if (!headers.has("Content-Type")) {
172
+ headers.set("Content-Type", "application/json");
173
+ }
174
+ return headers;
175
+ }
176
+ //# sourceMappingURL=response-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-handler.js","sourceRoot":"","sources":["../../../lib/request/response-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Type definitions for the Qwen Auth Plugin
3
+ */
4
+ import type { Auth } from "@opencode-ai/sdk";
5
+ export type { Auth };
6
+ /**
7
+ * Plugin configuration from ~/.opencode/qwen-auth-config.json
8
+ */
9
+ export interface PluginConfig {
10
+ /**
11
+ * Enable debug logging
12
+ * @default false
13
+ */
14
+ debug?: boolean;
15
+ }
16
+ /**
17
+ * User configuration structure from opencode.json
18
+ */
19
+ export interface UserConfig {
20
+ global: ConfigOptions;
21
+ models: {
22
+ [modelName: string]: {
23
+ options?: ConfigOptions;
24
+ variants?: Record<string, (ConfigOptions & {
25
+ disabled?: boolean;
26
+ }) | undefined>;
27
+ [key: string]: unknown;
28
+ };
29
+ };
30
+ }
31
+ /**
32
+ * Configuration options for model settings
33
+ */
34
+ export interface ConfigOptions {
35
+ max_tokens?: number;
36
+ temperature?: number;
37
+ top_p?: number;
38
+ [key: string]: unknown;
39
+ }
40
+ /**
41
+ * OAuth server information
42
+ */
43
+ export interface OAuthServerInfo {
44
+ port: number;
45
+ ready: boolean;
46
+ close: () => void;
47
+ waitForCode: (state: string) => Promise<{
48
+ code: string;
49
+ } | null>;
50
+ }
51
+ /**
52
+ * PKCE challenge and verifier
53
+ */
54
+ export interface PKCEPair {
55
+ challenge: string;
56
+ verifier: string;
57
+ }
58
+ /**
59
+ * Authorization flow result
60
+ */
61
+ export interface AuthorizationFlow {
62
+ pkce: PKCEPair;
63
+ state: string;
64
+ url: string;
65
+ }
66
+ /**
67
+ * Token exchange success result
68
+ */
69
+ export interface TokenSuccess {
70
+ type: "success";
71
+ access: string;
72
+ refresh: string;
73
+ expires: number;
74
+ }
75
+ /**
76
+ * Token exchange failure result
77
+ */
78
+ export interface TokenFailure {
79
+ type: "failed";
80
+ }
81
+ /**
82
+ * Token exchange result
83
+ */
84
+ export type TokenResult = TokenSuccess | TokenFailure;
85
+ /**
86
+ * Parsed authorization input
87
+ */
88
+ export interface ParsedAuthInput {
89
+ code?: string;
90
+ state?: string;
91
+ }
92
+ /**
93
+ * JWT payload with Qwen account info
94
+ */
95
+ export interface JWTPayload {
96
+ sub?: string;
97
+ email?: string;
98
+ [key: string]: unknown;
99
+ }
100
+ /**
101
+ * Message input item for chat completions
102
+ */
103
+ export interface InputItem {
104
+ id?: string;
105
+ type?: string;
106
+ role: string;
107
+ content: string | Array<{
108
+ type: string;
109
+ text?: string;
110
+ image_url?: {
111
+ url: string;
112
+ };
113
+ }>;
114
+ name?: string;
115
+ [key: string]: unknown;
116
+ }
117
+ /**
118
+ * Request body structure for chat completions
119
+ */
120
+ export interface RequestBody {
121
+ model: string;
122
+ messages?: InputItem[];
123
+ store?: boolean;
124
+ stream?: boolean;
125
+ max_tokens?: number;
126
+ max_completion_tokens?: number;
127
+ temperature?: number;
128
+ top_p?: number;
129
+ stop?: string | string[];
130
+ tools?: unknown[];
131
+ tool_choice?: string | {
132
+ type: string;
133
+ function?: {
134
+ name: string;
135
+ };
136
+ };
137
+ [key: string]: unknown;
138
+ }
139
+ /**
140
+ * SSE event data structure
141
+ */
142
+ export interface SSEEventData {
143
+ type: string;
144
+ response?: unknown;
145
+ delta?: unknown;
146
+ [key: string]: unknown;
147
+ }
148
+ /**
149
+ * Qwen model definition
150
+ */
151
+ export interface QwenModel {
152
+ id: string;
153
+ name: string;
154
+ description: string;
155
+ maxTokens?: number;
156
+ supportsVision?: boolean;
157
+ supportsCode?: boolean;
158
+ }
159
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for the Qwen Auth Plugin
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamtoricool/opencool-qwen-auth",
3
- "version": "0.0.1-alpha",
3
+ "version": "0.0.3-alpha",
4
4
  "description": "Qwen AI OAuth Authentication Plugin for opencode - Access Qwen models via chat.qwen.ai subscription",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",