@bowenqt/qiniu-ai-sdk 0.5.0 → 0.9.0

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.
@@ -0,0 +1,73 @@
1
+ export function tool(definition) {
2
+ return definition;
3
+ }
4
+ export function zodToJsonSchema(schema) {
5
+ return convertSchema(schema);
6
+ }
7
+ function convertSchema(schema) {
8
+ const def = schema._def;
9
+ const typeName = def?.typeName;
10
+ switch (typeName) {
11
+ case 'ZodString':
12
+ return { type: 'string' };
13
+ case 'ZodNumber':
14
+ return { type: 'number' };
15
+ case 'ZodBoolean':
16
+ return { type: 'boolean' };
17
+ case 'ZodArray':
18
+ return { type: 'array', items: convertSchema(def.type) };
19
+ case 'ZodEnum':
20
+ return { type: 'string', enum: def.values };
21
+ case 'ZodLiteral':
22
+ return literalSchema(def.value);
23
+ case 'ZodObject':
24
+ return objectSchema(schema);
25
+ case 'ZodUnion':
26
+ return { oneOf: def.options.map(convertSchema) };
27
+ case 'ZodOptional':
28
+ return convertSchema(def.innerType);
29
+ case 'ZodNullable':
30
+ return convertSchema(def.innerType);
31
+ case 'ZodDefault':
32
+ return convertSchema(def.innerType);
33
+ default:
34
+ return {};
35
+ }
36
+ }
37
+ function objectSchema(schema) {
38
+ const def = schema._def;
39
+ const shapeSource = def?.shape;
40
+ const shape = typeof shapeSource === 'function' ? shapeSource() : shapeSource || {};
41
+ const properties = {};
42
+ const required = [];
43
+ for (const [key, value] of Object.entries(shape)) {
44
+ const { inner, optional } = unwrapOptional(value);
45
+ properties[key] = convertSchema(inner);
46
+ if (!optional) {
47
+ required.push(key);
48
+ }
49
+ }
50
+ const schemaResult = { type: 'object', properties };
51
+ if (required.length) {
52
+ schemaResult.required = required;
53
+ }
54
+ return schemaResult;
55
+ }
56
+ function unwrapOptional(schema) {
57
+ const def = schema._def;
58
+ if (!def?.typeName) {
59
+ return { inner: schema, optional: false };
60
+ }
61
+ if (def.typeName === 'ZodOptional' || def.typeName === 'ZodDefault') {
62
+ return { inner: def.innerType, optional: true };
63
+ }
64
+ return { inner: schema, optional: false };
65
+ }
66
+ function literalSchema(value) {
67
+ const valueType = typeof value;
68
+ if (valueType === 'string' || valueType === 'number' || valueType === 'boolean') {
69
+ return { type: valueType, enum: [value] };
70
+ }
71
+ return { enum: [value] };
72
+ }
73
+ //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -3,14 +3,19 @@ export { CHAT_MODELS, IMAGE_MODELS, VIDEO_MODELS, MODEL_CATALOG, } from './model
3
3
  export type { ChatModel, ImageModel as ImageModelType, VideoModel as VideoModelType, Model, ModelInfo, } from './models';
4
4
  export type { QiniuAIOptions, Logger, LogLevel, FetchAdapter, Middleware, MiddlewareRequest, MiddlewareResponse, RequestOptions, } from './client';
5
5
  export { APIError } from './lib/request';
6
+ export { AIError, ToolExecutionError, MaxStepsExceededError } from './lib/errors';
6
7
  export * from './lib/types';
8
+ export { appendMessages, truncateHistory } from './lib/messages';
9
+ export type { TruncateOptions } from './lib/messages';
10
+ export { generateText, serializeToolResult } from './ai/generate-text';
11
+ export type { GenerateTextOptions, GenerateTextResult, StepResult, Tool, ToolResult, } from './ai/generate-text';
7
12
  export type { ChatCompletionRequest, ChatCompletionResponse, ChatCompletionChunk, ChatMessage, ContentPart, ToolCall, ChatDelta, ToolCallDelta, } from './lib/types';
8
13
  export type { StreamOptions, StreamResult } from './modules/chat';
9
14
  export { parseSSEStream, createStreamAccumulator, accumulateDelta } from './lib/sse';
10
15
  export type { SSEParseOptions, StreamAccumulator } from './lib/sse';
11
16
  export { pollUntilComplete, createPoller } from './lib/poller';
12
17
  export type { PollerOptions, PollResult } from './lib/poller';
13
- export type { ImageGenerationRequest, ImageTaskResponse, WaitOptions as ImageWaitOptions, ImageModel, ImageEditRequest, ImageEditResponse, ImageConfig, ImageReference, } from './modules/image';
18
+ export type { ImageGenerationRequest, ImageTaskResponse, ImageCreateResult, ImageGenerateResult, ImageUsage, SyncImageResponse, AsyncImageResponse, WaitOptions as ImageWaitOptions, ImageModel, ImageEditRequest, ImageEditResponse, ImageConfig, ImageReference, } from './modules/image';
14
19
  export type { VideoGenerationRequest, VideoTaskResponse, WaitOptions as VideoWaitOptions, VideoModel, FrameInput, KlingImageListItem, VideoReference, VideoRemixRequest, } from './modules/video';
15
20
  export type { WebSearchRequest, WebSearchResult } from './modules/tools';
16
21
  export type { OcrRequest, OcrResponse, OcrBlock } from './modules/ocr';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,OAAO,EACP,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GAChB,MAAM,UAAU,CAAC;AAElB,YAAY,EACR,SAAS,EACT,UAAU,IAAI,cAAc,EAC5B,UAAU,IAAI,cAAc,EAC5B,KAAK,EACL,SAAS,GACZ,MAAM,UAAU,CAAC;AAElB,YAAY,EACR,cAAc,EACd,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,cAAc,aAAa,CAAC;AAG5B,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,aAAa,GAChB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG9D,YAAY,EACR,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,IAAI,gBAAgB,EAC/B,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,cAAc,GACjB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACR,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,IAAI,gBAAgB,EAC/B,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGzE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGvE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGtF,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGnG,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGzH,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,OAAO,EACP,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACH,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GAChB,MAAM,UAAU,CAAC;AAElB,YAAY,EACR,SAAS,EACT,UAAU,IAAI,cAAc,EAC5B,UAAU,IAAI,cAAc,EAC5B,KAAK,EACL,SAAS,GACZ,MAAM,UAAU,CAAC;AAElB,YAAY,EACR,cAAc,EACd,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGlF,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EACR,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,IAAI,EACJ,UAAU,GACb,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACR,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,aAAa,GAChB,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGpE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG9D,YAAY,EACR,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,IAAI,gBAAgB,EAC/B,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,cAAc,GACjB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACR,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,IAAI,gBAAgB,EAC/B,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGzE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGvE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGtF,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGnG,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGzH,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.createPoller = exports.pollUntilComplete = exports.accumulateDelta = exports.createStreamAccumulator = exports.parseSSEStream = exports.APIError = exports.MODEL_CATALOG = exports.VIDEO_MODELS = exports.IMAGE_MODELS = exports.CHAT_MODELS = exports.timingMiddleware = exports.headersMiddleware = exports.retryMiddleware = exports.composeMiddleware = exports.defaultFetchAdapter = exports.createFilteredLogger = exports.noopLogger = exports.consoleLogger = exports.QiniuAI = void 0;
17
+ exports.createPoller = exports.pollUntilComplete = exports.accumulateDelta = exports.createStreamAccumulator = exports.parseSSEStream = exports.serializeToolResult = exports.generateText = exports.truncateHistory = exports.appendMessages = exports.MaxStepsExceededError = exports.ToolExecutionError = exports.AIError = exports.APIError = exports.MODEL_CATALOG = exports.VIDEO_MODELS = exports.IMAGE_MODELS = exports.CHAT_MODELS = exports.timingMiddleware = exports.headersMiddleware = exports.retryMiddleware = exports.composeMiddleware = exports.defaultFetchAdapter = exports.createFilteredLogger = exports.noopLogger = exports.consoleLogger = exports.QiniuAI = void 0;
18
18
  // Main client
19
19
  var client_1 = require("./client");
20
20
  Object.defineProperty(exports, "QiniuAI", { enumerable: true, get: function () { return client_1.QiniuAI; } });
@@ -35,8 +35,20 @@ Object.defineProperty(exports, "MODEL_CATALOG", { enumerable: true, get: functio
35
35
  // Error types
36
36
  var request_1 = require("./lib/request");
37
37
  Object.defineProperty(exports, "APIError", { enumerable: true, get: function () { return request_1.APIError; } });
38
+ var errors_1 = require("./lib/errors");
39
+ Object.defineProperty(exports, "AIError", { enumerable: true, get: function () { return errors_1.AIError; } });
40
+ Object.defineProperty(exports, "ToolExecutionError", { enumerable: true, get: function () { return errors_1.ToolExecutionError; } });
41
+ Object.defineProperty(exports, "MaxStepsExceededError", { enumerable: true, get: function () { return errors_1.MaxStepsExceededError; } });
38
42
  // Shared types
39
43
  __exportStar(require("./lib/types"), exports);
44
+ // Message helpers
45
+ var messages_1 = require("./lib/messages");
46
+ Object.defineProperty(exports, "appendMessages", { enumerable: true, get: function () { return messages_1.appendMessages; } });
47
+ Object.defineProperty(exports, "truncateHistory", { enumerable: true, get: function () { return messages_1.truncateHistory; } });
48
+ // Native generateText
49
+ var generate_text_1 = require("./ai/generate-text");
50
+ Object.defineProperty(exports, "generateText", { enumerable: true, get: function () { return generate_text_1.generateText; } });
51
+ Object.defineProperty(exports, "serializeToolResult", { enumerable: true, get: function () { return generate_text_1.serializeToolResult; } });
40
52
  // SSE utilities (for advanced users who want to parse streams manually)
41
53
  var sse_1 = require("./lib/sse");
42
54
  Object.defineProperty(exports, "parseSSEStream", { enumerable: true, get: function () { return sse_1.parseSSEStream; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,mCAUkB;AATd,iGAAA,OAAO,OAAA;AACP,uGAAA,aAAa,OAAA;AACb,oGAAA,UAAU,OAAA;AACV,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AACnB,2GAAA,iBAAiB,OAAA;AACjB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAGpB,gBAAgB;AAChB,mCAKkB;AAJd,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,sGAAA,YAAY,OAAA;AACZ,uGAAA,aAAa,OAAA;AAsBjB,cAAc;AACd,yCAAyC;AAAhC,mGAAA,QAAQ,OAAA;AAEjB,eAAe;AACf,8CAA4B;AAiB5B,wEAAwE;AACxE,iCAAqF;AAA5E,qGAAA,cAAc,OAAA;AAAE,8GAAA,uBAAuB,OAAA;AAAE,sGAAA,eAAe,OAAA;AAGjE,2EAA2E;AAC3E,uCAA+D;AAAtD,2GAAA,iBAAiB,OAAA;AAAE,sGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,mCAUkB;AATd,iGAAA,OAAO,OAAA;AACP,uGAAA,aAAa,OAAA;AACb,oGAAA,UAAU,OAAA;AACV,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AACnB,2GAAA,iBAAiB,OAAA;AACjB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAGpB,gBAAgB;AAChB,mCAKkB;AAJd,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,sGAAA,YAAY,OAAA;AACZ,uGAAA,aAAa,OAAA;AAsBjB,cAAc;AACd,yCAAyC;AAAhC,mGAAA,QAAQ,OAAA;AACjB,uCAAkF;AAAzE,iGAAA,OAAO,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAE3D,eAAe;AACf,8CAA4B;AAE5B,kBAAkB;AAClB,2CAAiE;AAAxD,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAGxC,sBAAsB;AACtB,oDAAuE;AAA9D,6GAAA,YAAY,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAwB1C,wEAAwE;AACxE,iCAAqF;AAA5E,qGAAA,cAAc,OAAA;AAAE,8GAAA,uBAAuB,OAAA;AAAE,sGAAA,eAAe,OAAA;AAGjE,2EAA2E;AAC3E,uCAA+D;AAAtD,2GAAA,iBAAiB,OAAA;AAAE,sGAAA,YAAY,OAAA"}
package/dist/index.mjs CHANGED
@@ -4,8 +4,13 @@ export { QiniuAI, consoleLogger, noopLogger, createFilteredLogger, defaultFetchA
4
4
  export { CHAT_MODELS, IMAGE_MODELS, VIDEO_MODELS, MODEL_CATALOG, } from './models.mjs';
5
5
  // Error types
6
6
  export { APIError } from './lib/request.mjs';
7
+ export { AIError, ToolExecutionError, MaxStepsExceededError } from './lib/errors.mjs';
7
8
  // Shared types
8
9
  export * from './lib/types.mjs';
10
+ // Message helpers
11
+ export { appendMessages, truncateHistory } from './lib/messages.mjs';
12
+ // Native generateText
13
+ export { generateText, serializeToolResult } from './ai/generate-text.mjs';
9
14
  // SSE utilities (for advanced users who want to parse streams manually)
10
15
  export { parseSSEStream, createStreamAccumulator, accumulateDelta } from './lib/sse.mjs';
11
16
  // Polling utilities (for advanced users who want to create custom pollers)
@@ -0,0 +1,12 @@
1
+ export declare class AIError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class ToolExecutionError extends AIError {
5
+ toolName: string;
6
+ constructor(toolName: string, message: string);
7
+ }
8
+ export declare class MaxStepsExceededError extends AIError {
9
+ maxSteps: number;
10
+ constructor(maxSteps: number);
11
+ }
12
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAQ,SAAQ,KAAK;gBAClB,OAAO,EAAE,MAAM;CAI9B;AAED,qBAAa,kBAAmB,SAAQ,OAAO;IAC3C,QAAQ,EAAE,MAAM,CAAC;gBAEL,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAKhD;AAED,qBAAa,qBAAsB,SAAQ,OAAO;IAC9C,QAAQ,EAAE,MAAM,CAAC;gBAEL,QAAQ,EAAE,MAAM;CAK/B"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MaxStepsExceededError = exports.ToolExecutionError = exports.AIError = void 0;
4
+ class AIError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'AIError';
8
+ }
9
+ }
10
+ exports.AIError = AIError;
11
+ class ToolExecutionError extends AIError {
12
+ constructor(toolName, message) {
13
+ super(message);
14
+ this.name = 'ToolExecutionError';
15
+ this.toolName = toolName;
16
+ }
17
+ }
18
+ exports.ToolExecutionError = ToolExecutionError;
19
+ class MaxStepsExceededError extends AIError {
20
+ constructor(maxSteps) {
21
+ super(`Max steps (${maxSteps}) exceeded while handling tool calls.`);
22
+ this.name = 'MaxStepsExceededError';
23
+ this.maxSteps = maxSteps;
24
+ }
25
+ }
26
+ exports.MaxStepsExceededError = MaxStepsExceededError;
27
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,OAAQ,SAAQ,KAAK;IAC9B,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,CAAC;CACJ;AALD,0BAKC;AAED,MAAa,kBAAmB,SAAQ,OAAO;IAG3C,YAAY,QAAgB,EAAE,OAAe;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AARD,gDAQC;AAED,MAAa,qBAAsB,SAAQ,OAAO;IAG9C,YAAY,QAAgB;QACxB,KAAK,CAAC,cAAc,QAAQ,uCAAuC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;CACJ;AARD,sDAQC"}
@@ -0,0 +1,21 @@
1
+ export class AIError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'AIError';
5
+ }
6
+ }
7
+ export class ToolExecutionError extends AIError {
8
+ constructor(toolName, message) {
9
+ super(message);
10
+ this.name = 'ToolExecutionError';
11
+ this.toolName = toolName;
12
+ }
13
+ }
14
+ export class MaxStepsExceededError extends AIError {
15
+ constructor(maxSteps) {
16
+ super(`Max steps (${maxSteps}) exceeded while handling tool calls.`);
17
+ this.name = 'MaxStepsExceededError';
18
+ this.maxSteps = maxSteps;
19
+ }
20
+ }
21
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1,18 @@
1
+ import type { ChatMessage } from './types';
2
+ export interface TruncateOptions {
3
+ /**
4
+ * Whether to keep the first system message when truncating.
5
+ * Default: false
6
+ */
7
+ keepSystem?: boolean;
8
+ }
9
+ /**
10
+ * Append one or multiple messages to a history without mutating it.
11
+ */
12
+ export declare function appendMessages(history: ChatMessage[], newMessage: ChatMessage | ChatMessage[]): ChatMessage[];
13
+ /**
14
+ * Truncate a message list to fit within an approximate token budget.
15
+ * Uses a lightweight heuristic based on character length.
16
+ */
17
+ export declare function truncateHistory(messages: ChatMessage[], maxTokens: number, options?: TruncateOptions): ChatMessage[];
18
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/lib/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AAExD,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC1B,OAAO,EAAE,WAAW,EAAE,EACtB,UAAU,EAAE,WAAW,GAAG,WAAW,EAAE,GACxC,WAAW,EAAE,CAGf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC9B,WAAW,EAAE,CAiCf"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendMessages = appendMessages;
4
+ exports.truncateHistory = truncateHistory;
5
+ /**
6
+ * Append one or multiple messages to a history without mutating it.
7
+ */
8
+ function appendMessages(history, newMessage) {
9
+ const next = Array.isArray(newMessage) ? newMessage : [newMessage];
10
+ return [...history, ...next];
11
+ }
12
+ /**
13
+ * Truncate a message list to fit within an approximate token budget.
14
+ * Uses a lightweight heuristic based on character length.
15
+ */
16
+ function truncateHistory(messages, maxTokens, options = {}) {
17
+ if (maxTokens <= 0) {
18
+ return [];
19
+ }
20
+ const keepSystem = options.keepSystem ?? false;
21
+ const systemMessage = keepSystem ? messages.find((msg) => msg.role === 'system') : undefined;
22
+ const trimmed = [];
23
+ let totalTokens = 0;
24
+ for (let i = messages.length - 1; i >= 0; i -= 1) {
25
+ const message = messages[i];
26
+ if (keepSystem && message.role === 'system') {
27
+ continue;
28
+ }
29
+ const messageTokens = estimateMessageTokens(message);
30
+ if (totalTokens + messageTokens > maxTokens) {
31
+ break;
32
+ }
33
+ trimmed.push(message);
34
+ totalTokens += messageTokens;
35
+ }
36
+ trimmed.reverse();
37
+ if (systemMessage && !trimmed.includes(systemMessage)) {
38
+ trimmed.unshift(systemMessage);
39
+ }
40
+ return trimmed;
41
+ }
42
+ function estimateMessageTokens(message) {
43
+ if (typeof message.content === 'string') {
44
+ return estimateTokensFromText(message.content);
45
+ }
46
+ if (Array.isArray(message.content)) {
47
+ return message.content.reduce((sum, part) => sum + estimateTokensFromPart(part), 0);
48
+ }
49
+ return 0;
50
+ }
51
+ function estimateTokensFromPart(part) {
52
+ if (part.type === 'text') {
53
+ return estimateTokensFromText(part.text ?? '');
54
+ }
55
+ if (part.type === 'image_url') {
56
+ return 50;
57
+ }
58
+ return 0;
59
+ }
60
+ function estimateTokensFromText(text) {
61
+ if (!text) {
62
+ return 0;
63
+ }
64
+ return Math.ceil(text.length / 4);
65
+ }
66
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/lib/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Append one or multiple messages to a history without mutating it.
3
+ */
4
+ export function appendMessages(history, newMessage) {
5
+ const next = Array.isArray(newMessage) ? newMessage : [newMessage];
6
+ return [...history, ...next];
7
+ }
8
+ /**
9
+ * Truncate a message list to fit within an approximate token budget.
10
+ * Uses a lightweight heuristic based on character length.
11
+ */
12
+ export function truncateHistory(messages, maxTokens, options = {}) {
13
+ if (maxTokens <= 0) {
14
+ return [];
15
+ }
16
+ const keepSystem = options.keepSystem ?? false;
17
+ const systemMessage = keepSystem ? messages.find((msg) => msg.role === 'system') : undefined;
18
+ const trimmed = [];
19
+ let totalTokens = 0;
20
+ for (let i = messages.length - 1; i >= 0; i -= 1) {
21
+ const message = messages[i];
22
+ if (keepSystem && message.role === 'system') {
23
+ continue;
24
+ }
25
+ const messageTokens = estimateMessageTokens(message);
26
+ if (totalTokens + messageTokens > maxTokens) {
27
+ break;
28
+ }
29
+ trimmed.push(message);
30
+ totalTokens += messageTokens;
31
+ }
32
+ trimmed.reverse();
33
+ if (systemMessage && !trimmed.includes(systemMessage)) {
34
+ trimmed.unshift(systemMessage);
35
+ }
36
+ return trimmed;
37
+ }
38
+ function estimateMessageTokens(message) {
39
+ if (typeof message.content === 'string') {
40
+ return estimateTokensFromText(message.content);
41
+ }
42
+ if (Array.isArray(message.content)) {
43
+ return message.content.reduce((sum, part) => sum + estimateTokensFromPart(part), 0);
44
+ }
45
+ return 0;
46
+ }
47
+ function estimateTokensFromPart(part) {
48
+ if (part.type === 'text') {
49
+ return estimateTokensFromText(part.text ?? '');
50
+ }
51
+ if (part.type === 'image_url') {
52
+ return 50;
53
+ }
54
+ return 0;
55
+ }
56
+ function estimateTokensFromText(text) {
57
+ if (!text) {
58
+ return 0;
59
+ }
60
+ return Math.ceil(text.length / 4);
61
+ }
62
+ //# sourceMappingURL=messages.js.map
@@ -78,6 +78,49 @@ export interface ImageTaskResponse {
78
78
  };
79
79
  quantity?: number;
80
80
  }
81
+ export interface ImageUsage {
82
+ total_tokens: number;
83
+ input_tokens: number;
84
+ output_tokens: number;
85
+ input_tokens_details?: {
86
+ text_tokens: number;
87
+ image_tokens: number;
88
+ };
89
+ }
90
+ export interface SyncImageResponse {
91
+ isSync: true;
92
+ created: number;
93
+ data: {
94
+ index: number;
95
+ b64_json: string;
96
+ }[];
97
+ output_format: 'png' | 'jpeg';
98
+ usage?: ImageUsage;
99
+ }
100
+ export interface AsyncImageResponse {
101
+ isSync: false;
102
+ task_id: string;
103
+ }
104
+ export type ImageCreateResult = SyncImageResponse | AsyncImageResponse;
105
+ export interface ImageGenerateResult {
106
+ task_id?: string;
107
+ created?: number;
108
+ /**
109
+ * Task status:
110
+ * - Async models: real status returned by the service
111
+ * - Sync models: SDK sets it to 'succeed' when data is returned
112
+ */
113
+ status: 'succeed' | 'failed';
114
+ status_message?: string;
115
+ data: {
116
+ index: number;
117
+ url?: string;
118
+ b64_json?: string;
119
+ }[];
120
+ output_format?: 'png' | 'jpeg';
121
+ usage?: ImageUsage;
122
+ isSync: boolean;
123
+ }
81
124
  export interface WaitOptions {
82
125
  intervalMs?: number;
83
126
  timeoutMs?: number;
@@ -89,10 +132,16 @@ export declare class Image {
89
132
  constructor(client: IQiniuClient);
90
133
  /**
91
134
  * Create an image generation task
135
+ *
136
+ * @deprecated Use generate() for unified sync/async handling.
92
137
  */
93
138
  create(params: ImageGenerationRequest): Promise<{
94
139
  task_id: string;
95
140
  }>;
141
+ /**
142
+ * Unified image generation API for both sync and async models.
143
+ */
144
+ generate(params: ImageGenerationRequest): Promise<ImageCreateResult>;
96
145
  /**
97
146
  * Edit or transform images.
98
147
  */
@@ -103,7 +152,13 @@ export declare class Image {
103
152
  get(taskId: string): Promise<ImageTaskResponse>;
104
153
  /**
105
154
  * Poll for completion with retry and cancellation support
155
+ *
156
+ * @deprecated Use waitForResult() for unified sync/async handling.
106
157
  */
107
158
  waitForCompletion(taskId: string, options?: WaitOptions): Promise<ImageTaskResponse>;
159
+ /**
160
+ * Wait for a unified image generation result.
161
+ */
162
+ waitForResult(result: ImageCreateResult, options?: WaitOptions): Promise<ImageGenerateResult>;
108
163
  }
109
164
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/image/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/image/index.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,24 @@ class Image {
9
9
  }
10
10
  /**
11
11
  * Create an image generation task
12
+ *
13
+ * @deprecated Use generate() for unified sync/async handling.
12
14
  */
13
15
  async create(params) {
14
- return this.client.post('/images/generations', params);
16
+ const response = await this.client.post('/images/generations', params);
17
+ const result = response;
18
+ if (!result.task_id || typeof result.task_id !== 'string') {
19
+ throw new Error('This model returns synchronous results without task_id. ' +
20
+ 'Please use image.generate() instead of image.create() for unified handling.');
21
+ }
22
+ return { task_id: result.task_id };
23
+ }
24
+ /**
25
+ * Unified image generation API for both sync and async models.
26
+ */
27
+ async generate(params) {
28
+ const response = await this.client.post('/images/generations', params);
29
+ return normalizeCreateResponse(response);
15
30
  }
16
31
  /**
17
32
  * Edit or transform images.
@@ -42,6 +57,8 @@ class Image {
42
57
  }
43
58
  /**
44
59
  * Poll for completion with retry and cancellation support
60
+ *
61
+ * @deprecated Use waitForResult() for unified sync/async handling.
45
62
  */
46
63
  async waitForCompletion(taskId, options = {}) {
47
64
  const { intervalMs = 2000, timeoutMs = 120000, signal, maxRetries = 3, } = options;
@@ -64,6 +81,49 @@ class Image {
64
81
  });
65
82
  return result;
66
83
  }
84
+ /**
85
+ * Wait for a unified image generation result.
86
+ */
87
+ async waitForResult(result, options = {}) {
88
+ if (result.isSync) {
89
+ return {
90
+ created: result.created,
91
+ status: 'succeed',
92
+ data: result.data,
93
+ output_format: result.output_format,
94
+ usage: result.usage,
95
+ isSync: true,
96
+ };
97
+ }
98
+ const taskResult = await this.waitForCompletion(result.task_id, options);
99
+ return {
100
+ task_id: taskResult.task_id,
101
+ created: taskResult.created,
102
+ status: taskResult.status === 'failed' ? 'failed' : 'succeed',
103
+ status_message: taskResult.status_message,
104
+ data: taskResult.data || [],
105
+ isSync: false,
106
+ };
107
+ }
67
108
  }
68
109
  exports.Image = Image;
110
+ function normalizeCreateResponse(response) {
111
+ const res = response;
112
+ if (res.task_id && typeof res.task_id === 'string') {
113
+ return {
114
+ isSync: false,
115
+ task_id: res.task_id,
116
+ };
117
+ }
118
+ if (res.data && Array.isArray(res.data)) {
119
+ return {
120
+ isSync: true,
121
+ data: res.data,
122
+ created: typeof res.created === 'number' ? res.created : 0,
123
+ output_format: res.output_format || 'png',
124
+ usage: res.usage,
125
+ };
126
+ }
127
+ throw new Error('Unexpected image generation response format');
128
+ }
69
129
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/image/index.ts"],"names":[],"mappings":";;;AAEA,6CAAqD;AAkGrD,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhD,MAAa,KAAK;IAGd,YAAY,MAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAA8B;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAsB,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAwB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAM,eAAe,EAAE,MAAM,CAAC,CAAC;QAEtE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,QAA6B,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO,QAAQ,CAAC,MAA2B,CAAC;QAChD,CAAC;QACD,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1D,OAAO,QAA6B,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnE,OAAO,QAA6B,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAoB,iBAAiB,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,UAAuB,EAAE;QAC7D,MAAM,EACF,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,MAAM,EAClB,MAAM,EACN,UAAU,GAAG,CAAC,GACjB,GAAG,OAAO,CAAC;QAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAEvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAiB,EAAoB,MAAM,EAAE;YAClE,UAAU;YACV,SAAS;YACT,UAAU;YACV,MAAM;YACN,MAAM;YACN,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,4BAA4B;gBAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC9C,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC/E,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YACD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA7ED,sBA6EC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/image/index.ts"],"names":[],"mappings":"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"}