@spenceriam/impulse 0.15.0 → 0.15.3
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/bin/impulse +95 -0
- package/package.json +17 -51
- package/postinstall.mjs +115 -0
- package/README.md +0 -194
- package/dist/api/client.d.ts +0 -53
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -271
- package/dist/api/client.js.map +0 -1
- package/dist/api/index.d.ts +0 -6
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -7
- package/dist/api/index.js.map +0 -1
- package/dist/api/stream.d.ts +0 -98
- package/dist/api/stream.d.ts.map +0 -1
- package/dist/api/stream.js +0 -202
- package/dist/api/stream.js.map +0 -1
- package/dist/api/types.d.ts +0 -1353
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js +0 -143
- package/dist/api/types.js.map +0 -1
- package/dist/bash.txt +0 -28
- package/dist/bus/bus.d.ts +0 -21
- package/dist/bus/bus.d.ts.map +0 -1
- package/dist/bus/bus.js +0 -22
- package/dist/bus/bus.js.map +0 -1
- package/dist/bus/events.d.ts +0 -100
- package/dist/bus/events.d.ts.map +0 -1
- package/dist/bus/events.js +0 -45
- package/dist/bus/events.js.map +0 -1
- package/dist/bus/index.d.ts +0 -3
- package/dist/bus/index.d.ts.map +0 -1
- package/dist/bus/index.js +0 -3
- package/dist/bus/index.js.map +0 -1
- package/dist/file-edit.txt +0 -21
- package/dist/file-read.txt +0 -18
- package/dist/file-write.txt +0 -16
- package/dist/glob.txt +0 -19
- package/dist/global.d.ts +0 -8
- package/dist/global.d.ts.map +0 -1
- package/dist/global.js +0 -14
- package/dist/global.js.map +0 -1
- package/dist/grep.txt +0 -20
- package/dist/highlights-eq9cgrbb.scm +0 -604
- package/dist/highlights-ghv9g403.scm +0 -205
- package/dist/highlights-hk7bwhj4.scm +0 -284
- package/dist/highlights-r812a2qc.scm +0 -150
- package/dist/highlights-x6tmsnaa.scm +0 -115
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -62122
- package/dist/index.js.map +0 -1
- package/dist/index.jsx +0 -5
- package/dist/index.jsx.map +0 -1
- package/dist/injections-73j83es3.scm +0 -27
- package/dist/input/at-refs.d.ts +0 -42
- package/dist/input/at-refs.d.ts.map +0 -1
- package/dist/input/at-refs.js +0 -154
- package/dist/input/at-refs.js.map +0 -1
- package/dist/input/history.d.ts +0 -26
- package/dist/input/history.d.ts.map +0 -1
- package/dist/input/history.js +0 -109
- package/dist/input/history.js.map +0 -1
- package/dist/input/index.d.ts +0 -5
- package/dist/input/index.d.ts.map +0 -1
- package/dist/input/index.js +0 -5
- package/dist/input/index.js.map +0 -1
- package/dist/input/paste.d.ts +0 -19
- package/dist/input/paste.d.ts.map +0 -1
- package/dist/input/paste.js +0 -75
- package/dist/input/paste.js.map +0 -1
- package/dist/input/shortcuts.d.ts +0 -6
- package/dist/input/shortcuts.d.ts.map +0 -1
- package/dist/input/shortcuts.js +0 -84
- package/dist/input/shortcuts.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -3
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -3
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/manager.d.ts +0 -51
- package/dist/mcp/manager.d.ts.map +0 -1
- package/dist/mcp/manager.js +0 -158
- package/dist/mcp/manager.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -18
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -5
- package/dist/mcp/types.js.map +0 -1
- package/dist/session/todo.d.ts +0 -24
- package/dist/session/todo.d.ts.map +0 -1
- package/dist/session/todo.js +0 -39
- package/dist/session/todo.js.map +0 -1
- package/dist/storage/index.d.ts +0 -2
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -2
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/storage.d.ts +0 -13
- package/dist/storage/storage.d.ts.map +0 -1
- package/dist/storage/storage.js +0 -84
- package/dist/storage/storage.js.map +0 -1
- package/dist/task.txt +0 -26
- package/dist/todo-read.txt +0 -14
- package/dist/todo-write.txt +0 -166
- package/dist/tools/bash.d.ts +0 -22
- package/dist/tools/bash.d.ts.map +0 -1
- package/dist/tools/bash.js +0 -70
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/file-edit.d.ts +0 -22
- package/dist/tools/file-edit.d.ts.map +0 -1
- package/dist/tools/file-edit.js +0 -67
- package/dist/tools/file-edit.js.map +0 -1
- package/dist/tools/file-read.d.ts +0 -19
- package/dist/tools/file-read.d.ts.map +0 -1
- package/dist/tools/file-read.js +0 -70
- package/dist/tools/file-read.js.map +0 -1
- package/dist/tools/file-write.d.ts +0 -16
- package/dist/tools/file-write.d.ts.map +0 -1
- package/dist/tools/file-write.js +0 -45
- package/dist/tools/file-write.js.map +0 -1
- package/dist/tools/glob.d.ts +0 -16
- package/dist/tools/glob.d.ts.map +0 -1
- package/dist/tools/glob.js +0 -45
- package/dist/tools/glob.js.map +0 -1
- package/dist/tools/grep.d.ts +0 -19
- package/dist/tools/grep.d.ts.map +0 -1
- package/dist/tools/grep.js +0 -65
- package/dist/tools/grep.js.map +0 -1
- package/dist/tools/index.d.ts +0 -11
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -11
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -22
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -75
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/task.d.ts +0 -19
- package/dist/tools/task.d.ts.map +0 -1
- package/dist/tools/task.js +0 -51
- package/dist/tools/task.js.map +0 -1
- package/dist/tools/todo-read.d.ts +0 -7
- package/dist/tools/todo-read.d.ts.map +0 -1
- package/dist/tools/todo-read.js +0 -56
- package/dist/tools/todo-read.js.map +0 -1
- package/dist/tools/todo-write.d.ts +0 -38
- package/dist/tools/todo-write.d.ts.map +0 -1
- package/dist/tools/todo-write.js +0 -40
- package/dist/tools/todo-write.js.map +0 -1
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
- package/dist/ui/App.d.ts +0 -6
- package/dist/ui/App.d.ts.map +0 -1
- package/dist/ui/App.jsx +0 -37
- package/dist/ui/App.jsx.map +0 -1
- package/dist/ui/components/Autocomplete.d.ts +0 -24
- package/dist/ui/components/Autocomplete.d.ts.map +0 -1
- package/dist/ui/components/Autocomplete.jsx +0 -67
- package/dist/ui/components/Autocomplete.jsx.map +0 -1
- package/dist/ui/components/ChatView.d.ts +0 -14
- package/dist/ui/components/ChatView.d.ts.map +0 -1
- package/dist/ui/components/ChatView.jsx +0 -11
- package/dist/ui/components/ChatView.jsx.map +0 -1
- package/dist/ui/components/InputArea.d.ts +0 -18
- package/dist/ui/components/InputArea.d.ts.map +0 -1
- package/dist/ui/components/InputArea.jsx +0 -35
- package/dist/ui/components/InputArea.jsx.map +0 -1
- package/dist/ui/components/MessageBlock.d.ts +0 -21
- package/dist/ui/components/MessageBlock.d.ts.map +0 -1
- package/dist/ui/components/MessageBlock.jsx +0 -94
- package/dist/ui/components/MessageBlock.jsx.map +0 -1
- package/dist/ui/components/Overlay.d.ts +0 -28
- package/dist/ui/components/Overlay.d.ts.map +0 -1
- package/dist/ui/components/Overlay.jsx +0 -102
- package/dist/ui/components/Overlay.jsx.map +0 -1
- package/dist/ui/components/ProgressBar.d.ts +0 -9
- package/dist/ui/components/ProgressBar.d.ts.map +0 -1
- package/dist/ui/components/ProgressBar.jsx +0 -17
- package/dist/ui/components/ProgressBar.jsx.map +0 -1
- package/dist/ui/components/Sidebar.d.ts +0 -22
- package/dist/ui/components/Sidebar.d.ts.map +0 -1
- package/dist/ui/components/Sidebar.jsx +0 -96
- package/dist/ui/components/Sidebar.jsx.map +0 -1
- package/dist/ui/components/StatusLine.d.ts +0 -6
- package/dist/ui/components/StatusLine.d.ts.map +0 -1
- package/dist/ui/components/StatusLine.jsx +0 -32
- package/dist/ui/components/StatusLine.jsx.map +0 -1
- package/dist/ui/components/ThinkingBlock.d.ts +0 -15
- package/dist/ui/components/ThinkingBlock.d.ts.map +0 -1
- package/dist/ui/components/ThinkingBlock.jsx +0 -33
- package/dist/ui/components/ThinkingBlock.jsx.map +0 -1
- package/dist/ui/components/TodoItem.d.ts +0 -22
- package/dist/ui/components/TodoItem.d.ts.map +0 -1
- package/dist/ui/components/TodoItem.jsx +0 -11
- package/dist/ui/components/TodoItem.jsx.map +0 -1
- package/dist/ui/components/ToolBlock.d.ts +0 -27
- package/dist/ui/components/ToolBlock.d.ts.map +0 -1
- package/dist/ui/components/ToolBlock.jsx +0 -76
- package/dist/ui/components/ToolBlock.jsx.map +0 -1
- package/dist/ui/components/index.d.ts +0 -12
- package/dist/ui/components/index.d.ts.map +0 -1
- package/dist/ui/components/index.js +0 -12
- package/dist/ui/components/index.js.map +0 -1
- package/dist/ui/context/index.d.ts +0 -4
- package/dist/ui/context/index.d.ts.map +0 -1
- package/dist/ui/context/index.js +0 -4
- package/dist/ui/context/index.js.map +0 -1
- package/dist/ui/context/mode.d.ts +0 -24
- package/dist/ui/context/mode.d.ts.map +0 -1
- package/dist/ui/context/mode.jsx +0 -53
- package/dist/ui/context/mode.jsx.map +0 -1
- package/dist/ui/context/session.d.ts +0 -43
- package/dist/ui/context/session.d.ts.map +0 -1
- package/dist/ui/context/session.jsx +0 -63
- package/dist/ui/context/session.jsx.map +0 -1
- package/dist/ui/context/todo.d.ts +0 -32
- package/dist/ui/context/todo.d.ts.map +0 -1
- package/dist/ui/context/todo.jsx +0 -75
- package/dist/ui/context/todo.jsx.map +0 -1
- package/dist/ui/design.d.ts +0 -182
- package/dist/ui/design.d.ts.map +0 -1
- package/dist/ui/design.js +0 -189
- package/dist/ui/design.js.map +0 -1
- package/dist/ui/index.d.ts +0 -4
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js +0 -3
- package/dist/ui/index.js.map +0 -1
- package/dist/util/config.d.ts +0 -22
- package/dist/util/config.d.ts.map +0 -1
- package/dist/util/config.js +0 -55
- package/dist/util/config.js.map +0 -1
- package/dist/util/instructions.d.ts +0 -39
- package/dist/util/instructions.d.ts.map +0 -1
- package/dist/util/instructions.js +0 -96
- package/dist/util/instructions.js.map +0 -1
- package/dist/util/lock.d.ts +0 -18
- package/dist/util/lock.d.ts.map +0 -1
- package/dist/util/lock.js +0 -65
- package/dist/util/lock.js.map +0 -1
- package/dist/util/logger.d.ts +0 -8
- package/dist/util/logger.d.ts.map +0 -1
- package/dist/util/logger.js +0 -81
- package/dist/util/logger.js.map +0 -1
package/dist/api/client.js
DELETED
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
import OpenAI from "openai";
|
|
2
|
-
import { load as loadConfig } from "../util/config";
|
|
3
|
-
import * as logger from "../util/logger";
|
|
4
|
-
/**
|
|
5
|
-
* GLM API Client
|
|
6
|
-
* OpenAI-compatible client for Z.AI Coding Plan API
|
|
7
|
-
*/
|
|
8
|
-
// Z.AI Coding Plan API endpoint (required - no fallback)
|
|
9
|
-
const BASE_URL = "https://api.z.ai/api/coding/paas/v4/";
|
|
10
|
-
// Retry configuration
|
|
11
|
-
const MAX_RETRIES = 5;
|
|
12
|
-
const INITIAL_BACKOFF_MS = 1000;
|
|
13
|
-
const MAX_BACKOFF_MS = 32000;
|
|
14
|
-
// Retryable HTTP status codes
|
|
15
|
-
const RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
|
|
16
|
-
export class GLMClientError extends Error {
|
|
17
|
-
code;
|
|
18
|
-
statusCode;
|
|
19
|
-
constructor(message, code, statusCode) {
|
|
20
|
-
super(message);
|
|
21
|
-
this.code = code;
|
|
22
|
-
this.statusCode = statusCode;
|
|
23
|
-
this.name = "GLMClientError";
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export class GLMAuthError extends GLMClientError {
|
|
27
|
-
constructor(message) {
|
|
28
|
-
super(message, "auth_error", 401);
|
|
29
|
-
this.name = "GLMAuthError";
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export class GLMRateLimitError extends GLMClientError {
|
|
33
|
-
retryAfter;
|
|
34
|
-
constructor(message, retryAfter) {
|
|
35
|
-
super(message, "rate_limit", 429);
|
|
36
|
-
this.retryAfter = retryAfter;
|
|
37
|
-
this.name = "GLMRateLimitError";
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
class GLMClientImpl {
|
|
41
|
-
client = null;
|
|
42
|
-
apiKey = null;
|
|
43
|
-
async getClient() {
|
|
44
|
-
if (this.client && this.apiKey) {
|
|
45
|
-
return this.client;
|
|
46
|
-
}
|
|
47
|
-
const config = await loadConfig();
|
|
48
|
-
if (!config.apiKey) {
|
|
49
|
-
throw new GLMAuthError("API key not configured. Set GLM_API_KEY environment variable or configure in ~/.config/glm-cli/config.json");
|
|
50
|
-
}
|
|
51
|
-
this.apiKey = config.apiKey;
|
|
52
|
-
this.client = new OpenAI({
|
|
53
|
-
apiKey: config.apiKey,
|
|
54
|
-
baseURL: BASE_URL,
|
|
55
|
-
maxRetries: 0, // We handle retries ourselves
|
|
56
|
-
});
|
|
57
|
-
return this.client;
|
|
58
|
-
}
|
|
59
|
-
async sleep(ms) {
|
|
60
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
61
|
-
}
|
|
62
|
-
calculateBackoff(attempt) {
|
|
63
|
-
const backoff = INITIAL_BACKOFF_MS * Math.pow(2, attempt);
|
|
64
|
-
const jitter = Math.random() * 0.3 * backoff; // 30% jitter
|
|
65
|
-
return Math.min(backoff + jitter, MAX_BACKOFF_MS);
|
|
66
|
-
}
|
|
67
|
-
isRetryableError(error) {
|
|
68
|
-
if (error instanceof OpenAI.APIError) {
|
|
69
|
-
return RETRYABLE_STATUS_CODES.has(error.status);
|
|
70
|
-
}
|
|
71
|
-
// Network errors are retryable
|
|
72
|
-
if (error instanceof Error && error.message.includes("fetch")) {
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
async executeWithRetry(operation, signal) {
|
|
78
|
-
let lastError = null;
|
|
79
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
80
|
-
// Check for abort before each attempt
|
|
81
|
-
if (signal?.aborted) {
|
|
82
|
-
throw new GLMClientError("Request aborted", "aborted");
|
|
83
|
-
}
|
|
84
|
-
try {
|
|
85
|
-
return await operation();
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
lastError = error instanceof Error ? error : new Error(String(error));
|
|
89
|
-
// Don't retry auth errors
|
|
90
|
-
if (error instanceof OpenAI.AuthenticationError) {
|
|
91
|
-
throw new GLMAuthError(error.message);
|
|
92
|
-
}
|
|
93
|
-
// Handle rate limiting
|
|
94
|
-
if (error instanceof OpenAI.RateLimitError) {
|
|
95
|
-
const retryAfter = parseInt(error.headers?.["retry-after"] ?? "60", 10);
|
|
96
|
-
if (attempt === MAX_RETRIES - 1) {
|
|
97
|
-
throw new GLMRateLimitError(error.message, retryAfter);
|
|
98
|
-
}
|
|
99
|
-
await logger.warn(`Rate limited, waiting ${retryAfter}s before retry`);
|
|
100
|
-
await this.sleep(retryAfter * 1000);
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
// Only retry on retryable errors
|
|
104
|
-
if (!this.isRetryableError(error)) {
|
|
105
|
-
throw error;
|
|
106
|
-
}
|
|
107
|
-
// Last attempt, throw
|
|
108
|
-
if (attempt === MAX_RETRIES - 1) {
|
|
109
|
-
await logger.error(`All ${MAX_RETRIES} retry attempts failed`);
|
|
110
|
-
throw lastError;
|
|
111
|
-
}
|
|
112
|
-
const backoff = this.calculateBackoff(attempt);
|
|
113
|
-
await logger.warn(`Request failed, retrying in ${Math.round(backoff)}ms (attempt ${attempt + 1}/${MAX_RETRIES})`);
|
|
114
|
-
await this.sleep(backoff);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
throw lastError ?? new GLMClientError("Unknown error during retry");
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Create a chat completion (non-streaming)
|
|
121
|
-
*/
|
|
122
|
-
async complete(options) {
|
|
123
|
-
const client = await this.getClient();
|
|
124
|
-
const config = await loadConfig();
|
|
125
|
-
const response = await this.executeWithRetry(async () => {
|
|
126
|
-
// Build request with only defined properties (exactOptionalPropertyTypes)
|
|
127
|
-
const request = {
|
|
128
|
-
model: options.model ?? config.defaultModel,
|
|
129
|
-
messages: options.messages,
|
|
130
|
-
stream: false,
|
|
131
|
-
};
|
|
132
|
-
if (options.temperature !== undefined)
|
|
133
|
-
request.temperature = options.temperature;
|
|
134
|
-
if (options.top_p !== undefined)
|
|
135
|
-
request.top_p = options.top_p;
|
|
136
|
-
if (options.max_tokens !== undefined)
|
|
137
|
-
request.max_tokens = options.max_tokens;
|
|
138
|
-
if (options.stop !== undefined)
|
|
139
|
-
request.stop = options.stop;
|
|
140
|
-
if (options.tools !== undefined) {
|
|
141
|
-
request.tools = options.tools;
|
|
142
|
-
}
|
|
143
|
-
if (options.tool_choice !== undefined) {
|
|
144
|
-
request.tool_choice = options.tool_choice;
|
|
145
|
-
}
|
|
146
|
-
const result = await client.chat.completions.create(request);
|
|
147
|
-
return result;
|
|
148
|
-
}, options.signal);
|
|
149
|
-
// Transform to our type
|
|
150
|
-
return {
|
|
151
|
-
id: response.id,
|
|
152
|
-
object: "chat.completion",
|
|
153
|
-
created: response.created,
|
|
154
|
-
model: response.model,
|
|
155
|
-
choices: response.choices.map((choice) => {
|
|
156
|
-
// Map finish_reason, filtering out deprecated "function_call"
|
|
157
|
-
const finishReason = choice.finish_reason === "function_call"
|
|
158
|
-
? "tool_calls"
|
|
159
|
-
: choice.finish_reason;
|
|
160
|
-
return {
|
|
161
|
-
index: choice.index,
|
|
162
|
-
message: {
|
|
163
|
-
role: choice.message.role,
|
|
164
|
-
content: choice.message.content,
|
|
165
|
-
tool_calls: choice.message.tool_calls?.map((tc) => ({
|
|
166
|
-
id: tc.id,
|
|
167
|
-
type: "function",
|
|
168
|
-
function: {
|
|
169
|
-
name: tc.function.name,
|
|
170
|
-
arguments: tc.function.arguments,
|
|
171
|
-
},
|
|
172
|
-
})),
|
|
173
|
-
// Extract reasoning_content if present (GLM-specific)
|
|
174
|
-
reasoning_content: choice.message.reasoning_content,
|
|
175
|
-
},
|
|
176
|
-
finish_reason: finishReason,
|
|
177
|
-
};
|
|
178
|
-
}),
|
|
179
|
-
usage: response.usage ? {
|
|
180
|
-
prompt_tokens: response.usage.prompt_tokens,
|
|
181
|
-
completion_tokens: response.usage.completion_tokens,
|
|
182
|
-
total_tokens: response.usage.total_tokens,
|
|
183
|
-
} : undefined,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Create a streaming chat completion
|
|
188
|
-
* Returns an async iterable of chunks
|
|
189
|
-
*/
|
|
190
|
-
async *stream(options) {
|
|
191
|
-
const client = await this.getClient();
|
|
192
|
-
const config = await loadConfig();
|
|
193
|
-
const stream = await this.executeWithRetry(async () => {
|
|
194
|
-
// Build request with only defined properties (exactOptionalPropertyTypes)
|
|
195
|
-
const request = {
|
|
196
|
-
model: options.model ?? config.defaultModel,
|
|
197
|
-
messages: options.messages,
|
|
198
|
-
stream: true,
|
|
199
|
-
};
|
|
200
|
-
if (options.temperature !== undefined)
|
|
201
|
-
request.temperature = options.temperature;
|
|
202
|
-
if (options.top_p !== undefined)
|
|
203
|
-
request.top_p = options.top_p;
|
|
204
|
-
if (options.max_tokens !== undefined)
|
|
205
|
-
request.max_tokens = options.max_tokens;
|
|
206
|
-
if (options.stop !== undefined)
|
|
207
|
-
request.stop = options.stop;
|
|
208
|
-
if (options.tools !== undefined) {
|
|
209
|
-
request.tools = options.tools;
|
|
210
|
-
}
|
|
211
|
-
if (options.tool_choice !== undefined) {
|
|
212
|
-
request.tool_choice = options.tool_choice;
|
|
213
|
-
}
|
|
214
|
-
return client.chat.completions.create(request);
|
|
215
|
-
}, options.signal);
|
|
216
|
-
for await (const chunk of stream) {
|
|
217
|
-
// Check abort signal during streaming
|
|
218
|
-
if (options.signal?.aborted) {
|
|
219
|
-
stream.controller.abort();
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
// Transform to our chunk type
|
|
223
|
-
yield {
|
|
224
|
-
id: chunk.id,
|
|
225
|
-
object: "chat.completion.chunk",
|
|
226
|
-
created: chunk.created,
|
|
227
|
-
model: chunk.model,
|
|
228
|
-
choices: chunk.choices.map((choice) => {
|
|
229
|
-
// Map finish_reason, filtering out deprecated "function_call"
|
|
230
|
-
const finishReason = choice.finish_reason === "function_call"
|
|
231
|
-
? "tool_calls"
|
|
232
|
-
: choice.finish_reason;
|
|
233
|
-
return {
|
|
234
|
-
index: choice.index,
|
|
235
|
-
delta: {
|
|
236
|
-
role: choice.delta.role,
|
|
237
|
-
content: choice.delta.content,
|
|
238
|
-
// Extract reasoning_content if present (GLM-specific)
|
|
239
|
-
reasoning_content: choice.delta.reasoning_content,
|
|
240
|
-
tool_calls: choice.delta.tool_calls?.map((tc) => ({
|
|
241
|
-
index: tc.index,
|
|
242
|
-
id: tc.id,
|
|
243
|
-
type: tc.type,
|
|
244
|
-
function: tc.function ? {
|
|
245
|
-
name: tc.function.name,
|
|
246
|
-
arguments: tc.function.arguments,
|
|
247
|
-
} : undefined,
|
|
248
|
-
})),
|
|
249
|
-
},
|
|
250
|
-
finish_reason: finishReason,
|
|
251
|
-
};
|
|
252
|
-
}),
|
|
253
|
-
usage: chunk.usage ? {
|
|
254
|
-
prompt_tokens: chunk.usage.prompt_tokens,
|
|
255
|
-
completion_tokens: chunk.usage.completion_tokens,
|
|
256
|
-
total_tokens: chunk.usage.total_tokens,
|
|
257
|
-
} : null,
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Reset the client (useful when API key changes)
|
|
263
|
-
*/
|
|
264
|
-
reset() {
|
|
265
|
-
this.client = null;
|
|
266
|
-
this.apiKey = null;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
// Singleton instance
|
|
270
|
-
export const GLMClient = new GLMClientImpl();
|
|
271
|
-
//# sourceMappingURL=client.js.map
|
package/dist/api/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { GLMClient, GLMClientError, GLMAuthError, GLMRateLimitError } from "./client";
|
|
2
|
-
export { StreamProcessor, processStream, processChunk, createStreamState, stateToMessage, getToolCalls, } from "./stream";
|
|
3
|
-
export type { StreamState, StreamEvent, StreamEventHandler, } from "./stream";
|
|
4
|
-
export type { GLMModel, MessageRole, ChatMessage, MessageContent, ToolCall, ToolDefinition, ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, ChatCompletionChoice, StreamChoice, StreamDelta, Usage, APIError, } from "./types";
|
|
5
|
-
export { GLMModel as GLMModelSchema, MessageRole as MessageRoleSchema, ChatMessage as ChatMessageSchema, ChatCompletionRequest as ChatCompletionRequestSchema, ChatCompletionResponse as ChatCompletionResponseSchema, ChatCompletionChunk as ChatCompletionChunkSchema, } from "./types";
|
|
6
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGtF,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,WAAW,EACX,WAAW,EACX,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACV,QAAQ,EACR,WAAW,EACX,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,KAAK,EACL,QAAQ,GACT,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,QAAQ,IAAI,cAAc,EAC1B,WAAW,IAAI,iBAAiB,EAChC,WAAW,IAAI,iBAAiB,EAChC,qBAAqB,IAAI,2BAA2B,EACpD,sBAAsB,IAAI,4BAA4B,EACtD,mBAAmB,IAAI,yBAAyB,GACjD,MAAM,SAAS,CAAC"}
|
package/dist/api/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// GLM API Client
|
|
2
|
-
export { GLMClient, GLMClientError, GLMAuthError, GLMRateLimitError } from "./client";
|
|
3
|
-
// Streaming
|
|
4
|
-
export { StreamProcessor, processStream, processChunk, createStreamState, stateToMessage, getToolCalls, } from "./stream";
|
|
5
|
-
// Schemas (for validation)
|
|
6
|
-
export { GLMModel as GLMModelSchema, MessageRole as MessageRoleSchema, ChatMessage as ChatMessageSchema, ChatCompletionRequest as ChatCompletionRequestSchema, ChatCompletionResponse as ChatCompletionResponseSchema, ChatCompletionChunk as ChatCompletionChunkSchema, } from "./types";
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEtF,YAAY;AACZ,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,UAAU,CAAC;AA0BlB,2BAA2B;AAC3B,OAAO,EACL,QAAQ,IAAI,cAAc,EAC1B,WAAW,IAAI,iBAAiB,EAChC,WAAW,IAAI,iBAAiB,EAChC,qBAAqB,IAAI,2BAA2B,EACpD,sBAAsB,IAAI,4BAA4B,EACtD,mBAAmB,IAAI,yBAAyB,GACjD,MAAM,SAAS,CAAC"}
|
package/dist/api/stream.d.ts
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import type { ChatCompletionChunk, ChatMessage, ToolCall } from "./types";
|
|
2
|
-
/**
|
|
3
|
-
* Streaming Handler
|
|
4
|
-
* Processes SSE chunks and aggregates content/reasoning
|
|
5
|
-
*/
|
|
6
|
-
export interface StreamState {
|
|
7
|
-
content: string;
|
|
8
|
-
reasoningContent: string;
|
|
9
|
-
role: ChatMessage["role"] | null;
|
|
10
|
-
toolCalls: Map<number, PartialToolCall>;
|
|
11
|
-
finishReason: "stop" | "length" | "tool_calls" | "content_filter" | null;
|
|
12
|
-
usage: {
|
|
13
|
-
promptTokens: number;
|
|
14
|
-
completionTokens: number;
|
|
15
|
-
totalTokens: number;
|
|
16
|
-
} | null;
|
|
17
|
-
}
|
|
18
|
-
interface PartialToolCall {
|
|
19
|
-
id: string;
|
|
20
|
-
functionName: string;
|
|
21
|
-
functionArguments: string;
|
|
22
|
-
}
|
|
23
|
-
export type StreamEvent = {
|
|
24
|
-
type: "content";
|
|
25
|
-
delta: string;
|
|
26
|
-
} | {
|
|
27
|
-
type: "reasoning";
|
|
28
|
-
delta: string;
|
|
29
|
-
} | {
|
|
30
|
-
type: "tool_call_start";
|
|
31
|
-
index: number;
|
|
32
|
-
id: string;
|
|
33
|
-
name: string;
|
|
34
|
-
} | {
|
|
35
|
-
type: "tool_call_delta";
|
|
36
|
-
index: number;
|
|
37
|
-
arguments: string;
|
|
38
|
-
} | {
|
|
39
|
-
type: "done";
|
|
40
|
-
state: StreamState;
|
|
41
|
-
};
|
|
42
|
-
export type StreamEventHandler = (event: StreamEvent) => void;
|
|
43
|
-
/**
|
|
44
|
-
* Create a new stream state
|
|
45
|
-
*/
|
|
46
|
-
export declare function createStreamState(): StreamState;
|
|
47
|
-
/**
|
|
48
|
-
* Process a single chunk and update state
|
|
49
|
-
* Returns events generated from this chunk
|
|
50
|
-
*/
|
|
51
|
-
export declare function processChunk(chunk: ChatCompletionChunk, state: StreamState): StreamEvent[];
|
|
52
|
-
/**
|
|
53
|
-
* Convert accumulated tool calls to final format
|
|
54
|
-
*/
|
|
55
|
-
export declare function getToolCalls(state: StreamState): ToolCall[];
|
|
56
|
-
/**
|
|
57
|
-
* Convert stream state to a complete ChatMessage
|
|
58
|
-
*/
|
|
59
|
-
export declare function stateToMessage(state: StreamState): ChatMessage;
|
|
60
|
-
/**
|
|
61
|
-
* High-level stream processor that handles async iteration
|
|
62
|
-
*/
|
|
63
|
-
export declare class StreamProcessor {
|
|
64
|
-
private state;
|
|
65
|
-
private eventHandler;
|
|
66
|
-
private abortController;
|
|
67
|
-
constructor();
|
|
68
|
-
/**
|
|
69
|
-
* Set event handler for real-time updates
|
|
70
|
-
*/
|
|
71
|
-
onEvent(handler: StreamEventHandler): this;
|
|
72
|
-
/**
|
|
73
|
-
* Get the current accumulated state
|
|
74
|
-
*/
|
|
75
|
-
getState(): StreamState;
|
|
76
|
-
/**
|
|
77
|
-
* Get abort signal for cancellation
|
|
78
|
-
*/
|
|
79
|
-
getAbortSignal(): AbortSignal;
|
|
80
|
-
/**
|
|
81
|
-
* Abort the stream
|
|
82
|
-
*/
|
|
83
|
-
abort(): void;
|
|
84
|
-
/**
|
|
85
|
-
* Process an async iterable of chunks
|
|
86
|
-
*/
|
|
87
|
-
process(chunks: AsyncIterable<ChatCompletionChunk>): Promise<StreamState>;
|
|
88
|
-
/**
|
|
89
|
-
* Reset for reuse
|
|
90
|
-
*/
|
|
91
|
-
reset(): void;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Convenience function to process a stream and return the final message
|
|
95
|
-
*/
|
|
96
|
-
export declare function processStream(chunks: AsyncIterable<ChatCompletionChunk>, onEvent?: StreamEventHandler): Promise<ChatMessage>;
|
|
97
|
-
export {};
|
|
98
|
-
//# sourceMappingURL=stream.d.ts.map
|
package/dist/api/stream.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/api/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1E;;;GAGG;AAGH,MAAM,WAAW,WAAW;IAE1B,OAAO,EAAE,MAAM,CAAC;IAEhB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAEjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAExC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAEzE,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI,CAAC;CACV;AAGD,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAGzC,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE9D;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAS/C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,WAAW,GACjB,WAAW,EAAE,CA6Ef;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,QAAQ,EAAE,CAoB3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAS9D;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,eAAe,CAAgC;;IAMvD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAK1C;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,cAAc,IAAI,WAAW;IAO7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACzC,OAAO,CAAC,WAAW,CAAC;IAyBvB;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC1C,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAOtB"}
|
package/dist/api/stream.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Create a new stream state
|
|
3
|
-
*/
|
|
4
|
-
export function createStreamState() {
|
|
5
|
-
return {
|
|
6
|
-
content: "",
|
|
7
|
-
reasoningContent: "",
|
|
8
|
-
role: null,
|
|
9
|
-
toolCalls: new Map(),
|
|
10
|
-
finishReason: null,
|
|
11
|
-
usage: null,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Process a single chunk and update state
|
|
16
|
-
* Returns events generated from this chunk
|
|
17
|
-
*/
|
|
18
|
-
export function processChunk(chunk, state) {
|
|
19
|
-
const events = [];
|
|
20
|
-
for (const choice of chunk.choices) {
|
|
21
|
-
const delta = choice.delta;
|
|
22
|
-
// Update role if present
|
|
23
|
-
if (delta.role) {
|
|
24
|
-
state.role = delta.role;
|
|
25
|
-
}
|
|
26
|
-
// Process content delta
|
|
27
|
-
if (delta.content) {
|
|
28
|
-
state.content += delta.content;
|
|
29
|
-
events.push({ type: "content", delta: delta.content });
|
|
30
|
-
}
|
|
31
|
-
// Process reasoning content (GLM thinking mode)
|
|
32
|
-
if (delta.reasoning_content) {
|
|
33
|
-
state.reasoningContent += delta.reasoning_content;
|
|
34
|
-
events.push({ type: "reasoning", delta: delta.reasoning_content });
|
|
35
|
-
}
|
|
36
|
-
// Process tool calls
|
|
37
|
-
if (delta.tool_calls) {
|
|
38
|
-
for (const tc of delta.tool_calls) {
|
|
39
|
-
const existing = state.toolCalls.get(tc.index);
|
|
40
|
-
if (!existing) {
|
|
41
|
-
// New tool call
|
|
42
|
-
const partial = {
|
|
43
|
-
id: tc.id ?? "",
|
|
44
|
-
functionName: tc.function?.name ?? "",
|
|
45
|
-
functionArguments: tc.function?.arguments ?? "",
|
|
46
|
-
};
|
|
47
|
-
state.toolCalls.set(tc.index, partial);
|
|
48
|
-
if (tc.id && tc.function?.name) {
|
|
49
|
-
events.push({
|
|
50
|
-
type: "tool_call_start",
|
|
51
|
-
index: tc.index,
|
|
52
|
-
id: tc.id,
|
|
53
|
-
name: tc.function.name,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
// Accumulate to existing tool call
|
|
59
|
-
if (tc.id)
|
|
60
|
-
existing.id = tc.id;
|
|
61
|
-
if (tc.function?.name)
|
|
62
|
-
existing.functionName = tc.function.name;
|
|
63
|
-
if (tc.function?.arguments) {
|
|
64
|
-
existing.functionArguments += tc.function.arguments;
|
|
65
|
-
events.push({
|
|
66
|
-
type: "tool_call_delta",
|
|
67
|
-
index: tc.index,
|
|
68
|
-
arguments: tc.function.arguments,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Update finish reason
|
|
75
|
-
if (choice.finish_reason) {
|
|
76
|
-
state.finishReason = choice.finish_reason;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Update usage if present (usually only on final chunk)
|
|
80
|
-
if (chunk.usage) {
|
|
81
|
-
state.usage = {
|
|
82
|
-
promptTokens: chunk.usage.prompt_tokens,
|
|
83
|
-
completionTokens: chunk.usage.completion_tokens,
|
|
84
|
-
totalTokens: chunk.usage.total_tokens,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
return events;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Convert accumulated tool calls to final format
|
|
91
|
-
*/
|
|
92
|
-
export function getToolCalls(state) {
|
|
93
|
-
const calls = [];
|
|
94
|
-
// Sort by index to maintain order
|
|
95
|
-
const sortedEntries = [...state.toolCalls.entries()].sort((a, b) => a[0] - b[0]);
|
|
96
|
-
for (const [_, partial] of sortedEntries) {
|
|
97
|
-
if (partial.id && partial.functionName) {
|
|
98
|
-
calls.push({
|
|
99
|
-
id: partial.id,
|
|
100
|
-
type: "function",
|
|
101
|
-
function: {
|
|
102
|
-
name: partial.functionName,
|
|
103
|
-
arguments: partial.functionArguments,
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return calls;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Convert stream state to a complete ChatMessage
|
|
112
|
-
*/
|
|
113
|
-
export function stateToMessage(state) {
|
|
114
|
-
const toolCalls = getToolCalls(state);
|
|
115
|
-
return {
|
|
116
|
-
role: state.role ?? "assistant",
|
|
117
|
-
content: state.content || null,
|
|
118
|
-
reasoning_content: state.reasoningContent || undefined,
|
|
119
|
-
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* High-level stream processor that handles async iteration
|
|
124
|
-
*/
|
|
125
|
-
export class StreamProcessor {
|
|
126
|
-
state;
|
|
127
|
-
eventHandler = null;
|
|
128
|
-
abortController = null;
|
|
129
|
-
constructor() {
|
|
130
|
-
this.state = createStreamState();
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Set event handler for real-time updates
|
|
134
|
-
*/
|
|
135
|
-
onEvent(handler) {
|
|
136
|
-
this.eventHandler = handler;
|
|
137
|
-
return this;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get the current accumulated state
|
|
141
|
-
*/
|
|
142
|
-
getState() {
|
|
143
|
-
return this.state;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Get abort signal for cancellation
|
|
147
|
-
*/
|
|
148
|
-
getAbortSignal() {
|
|
149
|
-
if (!this.abortController) {
|
|
150
|
-
this.abortController = new AbortController();
|
|
151
|
-
}
|
|
152
|
-
return this.abortController.signal;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Abort the stream
|
|
156
|
-
*/
|
|
157
|
-
abort() {
|
|
158
|
-
this.abortController?.abort();
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Process an async iterable of chunks
|
|
162
|
-
*/
|
|
163
|
-
async process(chunks) {
|
|
164
|
-
for await (const chunk of chunks) {
|
|
165
|
-
// Check for abort
|
|
166
|
-
if (this.abortController?.signal.aborted) {
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
const events = processChunk(chunk, this.state);
|
|
170
|
-
// Emit events
|
|
171
|
-
if (this.eventHandler) {
|
|
172
|
-
for (const event of events) {
|
|
173
|
-
this.eventHandler(event);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
// Emit done event
|
|
178
|
-
if (this.eventHandler) {
|
|
179
|
-
this.eventHandler({ type: "done", state: this.state });
|
|
180
|
-
}
|
|
181
|
-
return this.state;
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Reset for reuse
|
|
185
|
-
*/
|
|
186
|
-
reset() {
|
|
187
|
-
this.state = createStreamState();
|
|
188
|
-
this.abortController = null;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Convenience function to process a stream and return the final message
|
|
193
|
-
*/
|
|
194
|
-
export async function processStream(chunks, onEvent) {
|
|
195
|
-
const processor = new StreamProcessor();
|
|
196
|
-
if (onEvent) {
|
|
197
|
-
processor.onEvent(onEvent);
|
|
198
|
-
}
|
|
199
|
-
const state = await processor.process(chunks);
|
|
200
|
-
return stateToMessage(state);
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=stream.js.map
|
package/dist/api/stream.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/api/stream.ts"],"names":[],"mappings":"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"}
|