@baishuyun/coze-provider 0.0.5 → 0.0.7

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.
@@ -1,26 +1,23 @@
1
1
 
2
2
  
3
- > @baishuyun/coze-provider@0.0.1-alpha.1 build /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider
4
- > pnpm clean && tsup --tsconfig tsconfig.json
5
-
6
-
7
- > @baishuyun/coze-provider@0.0.1-alpha.1 clean /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider
8
- > del-cli dist *.tsbuildinfo
3
+ > @baishuyun/coze-provider@0.0.6 build /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider
4
+ > tsup --tsconfig tsconfig.json --clean
9
5
 
10
6
  CLI Building entry: src/index.ts
11
7
  CLI Using tsconfig: tsconfig.json
12
8
  CLI tsup v8.5.1
13
9
  CLI Using tsup config: /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider/tsup.config.ts
14
10
  CLI Target: es2022
11
+ CLI Cleaning output folder
15
12
  CJS Build start
16
13
  ESM Build start
17
- CJS dist/index.js 45.32 KB
18
- CJS dist/index.js.map 83.63 KB
19
- CJS ⚡️ Build success in 20ms
20
- ESM dist/index.mjs 43.27 KB
21
- ESM dist/index.mjs.map 83.23 KB
22
- ESM ⚡️ Build success in 20ms
14
+ ESM dist/index.mjs 44.72 KB
15
+ ESM dist/index.mjs.map 85.63 KB
16
+ ESM ⚡️ Build success in 21ms
17
+ CJS dist/index.js 46.81 KB
18
+ CJS dist/index.js.map 86.03 KB
19
+ CJS ⚡️ Build success in 21ms
23
20
  DTS Build start
24
- DTS ⚡️ Build success in 754ms
25
- DTS dist/index.d.ts 1.54 KB
26
- DTS dist/index.d.mts 1.54 KB
21
+ DTS ⚡️ Build success in 802ms
22
+ DTS dist/index.d.ts 1.57 KB
23
+ DTS dist/index.d.mts 1.57 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @baishuyun/coze-provider
2
2
 
3
+ ## 0.0.7
4
+
5
+ ### Patch Changes
6
+
7
+ - add ai filling
8
+
9
+ ## 0.0.6
10
+
11
+ ### Patch Changes
12
+
13
+ - add ai filling
14
+
3
15
  ## 0.0.5
4
16
 
5
17
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { LanguageModelV2StreamPart, ProviderV2, LanguageModelV2, JSONValue } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
 
4
- type CozeChatModelId = "chat";
4
+ type CozeChatModelId = 'chat';
5
5
 
6
6
  interface CozeProviderSettings {
7
7
  apiKey?: string;
@@ -19,7 +19,7 @@ interface CozeProviderSettings {
19
19
  or to provide a custom fetch implementation for e.g. testing.
20
20
  */
21
21
  fetch?: FetchFunction;
22
- extraStreamTransformers?: TransformStream<LanguageModelV2StreamPart, any>[];
22
+ extraStreamTransformers?: (() => TransformStream<LanguageModelV2StreamPart, any>)[];
23
23
  }
24
24
  interface CozeProvider extends ProviderV2 {
25
25
  (modelId: CozeChatModelId): LanguageModelV2;
@@ -37,6 +37,6 @@ declare class SuggestionTransformStream extends TransformStream<any, any> {
37
37
  constructor(enable: boolean);
38
38
  }
39
39
 
40
- declare const createTextInfoEnqueuer: (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) => (textInfo: string, metaPayload?: JSONValue, id?: string) => void;
40
+ declare const createTextInfoEnqueuer: (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) => (textInfo: string, metaPayload?: JSONValue, id?: string, deltaOnly?: boolean) => void;
41
41
 
42
42
  export { SuggestionTransformStream, createCoze, createFieldsJsonTransformStream, createTextInfoEnqueuer };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { LanguageModelV2StreamPart, ProviderV2, LanguageModelV2, JSONValue } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
 
4
- type CozeChatModelId = "chat";
4
+ type CozeChatModelId = 'chat';
5
5
 
6
6
  interface CozeProviderSettings {
7
7
  apiKey?: string;
@@ -19,7 +19,7 @@ interface CozeProviderSettings {
19
19
  or to provide a custom fetch implementation for e.g. testing.
20
20
  */
21
21
  fetch?: FetchFunction;
22
- extraStreamTransformers?: TransformStream<LanguageModelV2StreamPart, any>[];
22
+ extraStreamTransformers?: (() => TransformStream<LanguageModelV2StreamPart, any>)[];
23
23
  }
24
24
  interface CozeProvider extends ProviderV2 {
25
25
  (modelId: CozeChatModelId): LanguageModelV2;
@@ -37,6 +37,6 @@ declare class SuggestionTransformStream extends TransformStream<any, any> {
37
37
  constructor(enable: boolean);
38
38
  }
39
39
 
40
- declare const createTextInfoEnqueuer: (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) => (textInfo: string, metaPayload?: JSONValue, id?: string) => void;
40
+ declare const createTextInfoEnqueuer: (controller: TransformStreamDefaultController<LanguageModelV2StreamPart>) => (textInfo: string, metaPayload?: JSONValue, id?: string, deltaOnly?: boolean) => void;
41
41
 
42
42
  export { SuggestionTransformStream, createCoze, createFieldsJsonTransformStream, createTextInfoEnqueuer };
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ module.exports = __toCommonJS(index_exports);
39
39
 
40
40
  // src/coze-provider.ts
41
41
  var import_provider = require("@ai-sdk/provider");
42
- var import_provider_utils = require("@ai-sdk/provider-utils");
42
+ var import_provider_utils2 = require("@ai-sdk/provider-utils");
43
43
 
44
44
  // src/const.ts
45
45
  var VERSION = "0.0.1";
@@ -105,7 +105,6 @@ var parseMessageContent = (message, isMultiModalMsg) => {
105
105
  const isExcel = part.mediaType === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
106
106
  if (isImg) {
107
107
  const meta = part.providerOptions?.uploadMetadata;
108
- console.log("img meta", meta);
109
108
  return meta?.parsedData;
110
109
  }
111
110
  if (isExcel) {
@@ -141,6 +140,33 @@ var convertPromptToMessages = (messages) => {
141
140
  });
142
141
  };
143
142
 
143
+ // src/utils/create-error-stream.ts
144
+ var import_provider_utils = require("@ai-sdk/provider-utils");
145
+ var createErrorStream = (error) => {
146
+ return new ReadableStream({
147
+ start(controller) {
148
+ const id = (0, import_provider_utils.generateId)();
149
+ controller.enqueue({
150
+ id,
151
+ type: "text-start"
152
+ });
153
+ controller.enqueue({
154
+ id,
155
+ type: "text-delta",
156
+ providerMetadata: {
157
+ raw: { data: { type: "agent-error", error } }
158
+ },
159
+ delta: error
160
+ });
161
+ controller.enqueue({
162
+ type: "text-end",
163
+ id
164
+ });
165
+ controller.close();
166
+ }
167
+ });
168
+ };
169
+
144
170
  // src/evt-sample.ts
145
171
  var EvtSample = class {
146
172
  _evtSampleMap = /* @__PURE__ */ new Map();
@@ -212,7 +238,6 @@ var MCPChunkFilterTransformStream = class extends TransformStream {
212
238
  super({
213
239
  transform: (evt, controller) => {
214
240
  if (!evt) return;
215
- console.log("origin event", evt);
216
241
  const part = {
217
242
  event: evt.type,
218
243
  data: JSON.parse(evt.data) || {}
@@ -264,11 +289,17 @@ var mcp2llmChunk = (part) => {
264
289
  rawValue: part.data
265
290
  };
266
291
  }
292
+ if (part.status === "completed") {
293
+ return {
294
+ type: "text-end",
295
+ id: part.data.conversation_id,
296
+ // delta: part.data.content || part.data.reasoning_content || "",
297
+ providerMetadata: {}
298
+ };
299
+ }
267
300
  return {
268
- type: "text-end",
269
- id: part.data.conversation_id,
270
- // delta: part.data.content || part.data.reasoning_content || "",
271
- providerMetadata: {}
301
+ type: "raw",
302
+ rawValue: part.data
272
303
  };
273
304
  break;
274
305
  case import_api3.ChatEventType.CONVERSATION_CHAT_COMPLETED:
@@ -364,14 +395,27 @@ var CozeLanguageModel = class {
364
395
  path: "/chat"
365
396
  });
366
397
  const user_id = options.headers ? options.headers["x-user-id"] : "";
398
+ const user_var = options.headers ? options.headers["x-user-var"] : "";
399
+ const user_token = options.headers ? options.headers["x-user-token"] : "";
400
+ const idFromToken = user_token?.slice(-16);
401
+ let customVar;
402
+ if (user_var) {
403
+ try {
404
+ customVar = JSON.parse(user_var);
405
+ } catch (e) {
406
+ console.warn("x-user-var parse error", e);
407
+ }
408
+ }
367
409
  const body = {
368
410
  bot_id: this.config.botId,
369
411
  auto_save_history: false,
370
- user_id: user_id || "123456",
412
+ user_id: user_id || idFromToken || "guest_" + Date.now(),
371
413
  stream: true,
372
414
  additional_messages: messages
373
415
  };
374
- console.log("messages", messages);
416
+ if (customVar) {
417
+ body.custom_var = customVar;
418
+ }
375
419
  const headers = this.config.headers();
376
420
  const response = await fetch(url, {
377
421
  method: "POST",
@@ -387,19 +431,21 @@ var CozeLanguageModel = class {
387
431
  } catch {
388
432
  errorDetail = rawError;
389
433
  }
390
- throw new Error(
391
- `Coze API error: ${response.status} ${response.statusText}`
392
- );
434
+ const errorMessage = typeof errorDetail === "object" && errorDetail?.msg ? errorDetail.msg : `Coze API error: ${response.status} ${response.statusText}`;
435
+ console.error(errorMessage);
436
+ return {
437
+ stream: createErrorStream("\u4F1A\u8BDD\u5F02\u5E38\uFF0C\u8BF7\u91CD\u8BD5")
438
+ };
393
439
  }
394
- let externalTransformers = this.config.extraStreamTransformers || [];
440
+ let externalTransformers = (this.config.extraStreamTransformers || []).map(
441
+ (factory) => factory()
442
+ );
395
443
  const stage = options.headers ? options.headers["x-user-stage"] : "";
396
444
  const isBuildStage = stage === "build";
397
445
  const isFillStage = stage === "fill";
398
446
  const result = response.body.pipeThrough(
399
447
  new import_web.TextDecoderStream()
400
- ).pipeThrough(new import_parse_sse.ServerSentEventTransformStream()).pipeThrough(
401
- new MCPChunkFilterTransformStream(isBuildStage || isFillStage)
402
- ).pipeThrough(new LLMChunkInjectorTransformStream()).pipeThrough(new LLMPartTrasnformStream());
448
+ ).pipeThrough(new import_parse_sse.ServerSentEventTransformStream()).pipeThrough(new MCPChunkFilterTransformStream(isBuildStage || isFillStage)).pipeThrough(new LLMChunkInjectorTransformStream()).pipeThrough(new LLMPartTrasnformStream());
403
449
  let finalResult = result;
404
450
  if (externalTransformers.length > 0) {
405
451
  finalResult = externalTransformers.reduce(
@@ -418,12 +464,9 @@ var CozeLanguageModel = class {
418
464
  function createCoze(options = {
419
465
  botId: ""
420
466
  }) {
421
- const baseURL = (0, import_provider_utils.withoutTrailingSlash)(options.baseURL);
422
- const agentPartHeader = (0, import_provider_utils.withUserAgentSuffix)(
423
- options.headers || {},
424
- `ai-sdk/coze/${VERSION}`
425
- );
426
- const authorizationHeader = `Bearer ${(0, import_provider_utils.loadApiKey)({
467
+ const baseURL = (0, import_provider_utils2.withoutTrailingSlash)(options.baseURL);
468
+ const agentPartHeader = (0, import_provider_utils2.withUserAgentSuffix)(options.headers || {}, `ai-sdk/coze/${VERSION}`);
469
+ const authorizationHeader = `Bearer ${(0, import_provider_utils2.loadApiKey)({
427
470
  apiKey: options.apiKey,
428
471
  environmentVariableName: "COZE_API_KEY",
429
472
  description: ""
@@ -463,25 +506,32 @@ function createCoze(options = {
463
506
  var import_json = require("@streamparser/json");
464
507
 
465
508
  // src/utils/enqueue-text-info.ts
466
- var import_provider_utils2 = require("@ai-sdk/provider-utils");
467
- var createTextInfoEnqueuer = (controller) => (textInfo, metaPayload, id = (0, import_provider_utils2.generateId)()) => {
468
- controller.enqueue({
509
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
510
+ var createTextInfoEnqueuer = (controller) => (textInfo, metaPayload, id = (0, import_provider_utils3.generateId)(), deltaOnly = false) => {
511
+ const i = id ?? (0, import_provider_utils3.generateId)();
512
+ const startPart = {
469
513
  type: "text-start",
470
- id
471
- });
472
- const chunk = {
514
+ id: i
515
+ };
516
+ const deltaPart = {
473
517
  type: "text-delta",
474
- id,
518
+ id: i,
475
519
  delta: textInfo,
476
520
  providerMetadata: metaPayload ? {
477
521
  raw: { data: metaPayload }
478
522
  } : void 0
479
523
  };
480
- controller.enqueue(chunk);
481
- controller.enqueue({
524
+ const endPart = {
482
525
  type: "text-end",
483
- id
484
- });
526
+ id: i
527
+ };
528
+ if (deltaOnly) {
529
+ controller.enqueue(deltaPart);
530
+ return;
531
+ }
532
+ controller.enqueue(startPart);
533
+ controller.enqueue(deltaPart);
534
+ controller.enqueue(endPart);
485
535
  };
486
536
 
487
537
  // src/utils/fields-json-rebuild/rebuild-text.ts
@@ -1677,7 +1727,6 @@ var createFieldsJsonTransformStream = (enableJsonParser) => {
1677
1727
  },
1678
1728
  transform: (chunk, controller) => {
1679
1729
  if (!parser) {
1680
- console.log("parser not init");
1681
1730
  return;
1682
1731
  }
1683
1732
  try {