@bowenqt/qiniu-ai-sdk 0.22.2 → 0.23.1

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.
@@ -10,4 +10,6 @@ export { RedisCheckpointer } from './redis-checkpointer';
10
10
  export type { RedisClient, RedisCheckpointerConfig } from './redis-checkpointer';
11
11
  export { PostgresCheckpointer } from './postgres-checkpointer';
12
12
  export type { PostgresClient, PostgresCheckpointerConfig } from './postgres-checkpointer';
13
+ export { KodoCheckpointer } from './kodo-checkpointer';
14
+ export type { KodoCheckpointerConfig, KodoRegion } from './kodo-checkpointer';
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/graph/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC9B,YAAY,EACR,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EAErB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACR,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EAEpB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,YAAY,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/graph/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC9B,YAAY,EACR,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,GACnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EAErB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACR,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EAEpB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,YAAY,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAG1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Graph Runtime public exports.
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PostgresCheckpointer = exports.RedisCheckpointer = exports.resumeWithApproval = exports.getPendingApproval = exports.isPendingApproval = exports.deserializeCheckpoint = exports.MemoryCheckpointer = exports.END = exports.MaxGraphStepsError = exports.StateGraph = void 0;
6
+ exports.KodoCheckpointer = exports.PostgresCheckpointer = exports.RedisCheckpointer = exports.resumeWithApproval = exports.getPendingApproval = exports.isPendingApproval = exports.deserializeCheckpoint = exports.MemoryCheckpointer = exports.END = exports.MaxGraphStepsError = exports.StateGraph = void 0;
7
7
  var state_graph_1 = require("./state-graph");
8
8
  Object.defineProperty(exports, "StateGraph", { enumerable: true, get: function () { return state_graph_1.StateGraph; } });
9
9
  Object.defineProperty(exports, "MaxGraphStepsError", { enumerable: true, get: function () { return state_graph_1.MaxGraphStepsError; } });
@@ -23,4 +23,7 @@ Object.defineProperty(exports, "RedisCheckpointer", { enumerable: true, get: fun
23
23
  // Postgres Checkpointer (optional - requires pg)
24
24
  var postgres_checkpointer_1 = require("./postgres-checkpointer");
25
25
  Object.defineProperty(exports, "PostgresCheckpointer", { enumerable: true, get: function () { return postgres_checkpointer_1.PostgresCheckpointer; } });
26
+ // Kodo Checkpointer (Phase 7 - Qiniu Object Storage)
27
+ var kodo_checkpointer_1 = require("./kodo-checkpointer");
28
+ Object.defineProperty(exports, "KodoCheckpointer", { enumerable: true, get: function () { return kodo_checkpointer_1.KodoCheckpointer; } });
26
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/graph/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6CAA+D;AAAtD,yGAAA,UAAU,OAAA;AAAE,iHAAA,kBAAkB,OAAA;AACvC,iCAA8B;AAArB,4FAAA,GAAG,OAAA;AAWZ,gBAAgB;AAChB,+CAOwB;AANpB,kHAAA,kBAAkB,OAAA;AAClB,qHAAA,qBAAqB,OAAA;AACrB,kCAAkC;AAClC,iHAAA,iBAAiB,OAAA;AACjB,kHAAA,kBAAkB,OAAA;AAClB,kHAAA,kBAAkB,OAAA;AAetB,mDAAmD;AACnD,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAG1B,iDAAiD;AACjD,iEAA+D;AAAtD,6HAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/graph/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6CAA+D;AAAtD,yGAAA,UAAU,OAAA;AAAE,iHAAA,kBAAkB,OAAA;AACvC,iCAA8B;AAArB,4FAAA,GAAG,OAAA;AAWZ,gBAAgB;AAChB,+CAOwB;AANpB,kHAAA,kBAAkB,OAAA;AAClB,qHAAA,qBAAqB,OAAA;AACrB,kCAAkC;AAClC,iHAAA,iBAAiB,OAAA;AACjB,kHAAA,kBAAkB,OAAA;AAClB,kHAAA,kBAAkB,OAAA;AAetB,mDAAmD;AACnD,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAG1B,iDAAiD;AACjD,iEAA+D;AAAtD,6HAAA,oBAAoB,OAAA;AAG7B,qDAAqD;AACrD,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
@@ -11,4 +11,6 @@ isPendingApproval, getPendingApproval, resumeWithApproval, } from './checkpointe
11
11
  export { RedisCheckpointer } from './redis-checkpointer.mjs';
12
12
  // Postgres Checkpointer (optional - requires pg)
13
13
  export { PostgresCheckpointer } from './postgres-checkpointer.mjs';
14
+ // Kodo Checkpointer (Phase 7 - Qiniu Object Storage)
15
+ export { KodoCheckpointer } from './kodo-checkpointer.mjs';
14
16
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,84 @@
1
+ /**
2
+ * KodoCheckpointer - State persistence using Qiniu Kodo Object Storage.
3
+ *
4
+ * Implements the Checkpointer interface for serverless-compatible
5
+ * durable state management.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { KodoCheckpointer } from '@bowenqt/qiniu-ai-sdk';
10
+ *
11
+ * const checkpointer = new KodoCheckpointer({
12
+ * bucket: 'my-checkpoints',
13
+ * accessKey: process.env.QINIU_ACCESS_KEY!,
14
+ * secretKey: process.env.QINIU_SECRET_KEY!,
15
+ * region: 'z0',
16
+ * });
17
+ *
18
+ * const graph = createAgentGraph({
19
+ * checkpointer,
20
+ * // ...
21
+ * });
22
+ * ```
23
+ */
24
+ import type { AgentState } from '../internal-types';
25
+ import type { Checkpointer, Checkpoint, CheckpointMetadata, CheckpointSaveOptions } from './checkpointer';
26
+ /** Kodo region codes */
27
+ export type KodoRegion = 'z0' | 'z1' | 'z2' | 'na0' | 'cn-east-2' | 'ap-southeast-1';
28
+ /** KodoCheckpointer configuration */
29
+ export interface KodoCheckpointerConfig {
30
+ /** Kodo bucket name */
31
+ bucket: string;
32
+ /** Qiniu Access Key */
33
+ accessKey: string;
34
+ /** Qiniu Secret Key */
35
+ secretKey: string;
36
+ /** Region code (default: 'z0') */
37
+ region?: KodoRegion;
38
+ /** Key prefix (default: 'checkpoints/') */
39
+ prefix?: string;
40
+ /** Upload token expiry in seconds (default: 3600) */
41
+ tokenExpiry?: number;
42
+ /** Max retries for API calls (default: 3) */
43
+ maxRetries?: number;
44
+ /** Download domain (e.g., 'cdn.example.com'). If not set, uses Kodo default domain. */
45
+ downloadDomain?: string;
46
+ }
47
+ /**
48
+ * Kodo-backed Checkpointer implementation.
49
+ *
50
+ * Stores checkpoints as JSON objects in Qiniu Kodo.
51
+ * Each thread has one checkpoint file: `{prefix}{threadId}.json`
52
+ */
53
+ export declare class KodoCheckpointer implements Checkpointer {
54
+ private readonly client;
55
+ private readonly prefix;
56
+ constructor(config: KodoCheckpointerConfig);
57
+ /**
58
+ * Save a checkpoint.
59
+ */
60
+ save(threadId: string, state: AgentState, options?: CheckpointSaveOptions | Record<string, unknown>): Promise<CheckpointMetadata>;
61
+ /**
62
+ * Load the latest checkpoint for a thread.
63
+ */
64
+ load(threadId: string): Promise<Checkpoint | null>;
65
+ /**
66
+ * List checkpoints for a specific thread.
67
+ * Since we store single checkpoint per thread, this returns 0 or 1 item.
68
+ */
69
+ list(threadId: string): Promise<CheckpointMetadata[]>;
70
+ /**
71
+ * Delete a single checkpoint.
72
+ */
73
+ delete(checkpointId: string): Promise<boolean>;
74
+ /**
75
+ * Clear all checkpoints for a thread.
76
+ */
77
+ clear(threadId: string): Promise<number>;
78
+ /**
79
+ * Serialize agent state to JSON-safe format.
80
+ * Strips non-serializable fields (abortSignal, tools Map).
81
+ */
82
+ private serializeState;
83
+ }
84
+ //# sourceMappingURL=kodo-checkpointer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kodo-checkpointer.d.ts","sourceRoot":"","sources":["../../../src/ai/graph/kodo-checkpointer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACR,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EAExB,MAAM,gBAAgB,CAAC;AAOxB,wBAAwB;AACxB,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAoBrF,qCAAqC;AACrC,MAAM,WAAW,sBAAsB;IACnC,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAuND;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,sBAAsB;IAK1C;;OAEG;IACG,IAAI,CACN,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1D,OAAO,CAAC,kBAAkB,CAAC;IA0C9B;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKxD;;;OAGG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAM3D;;OAEG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpD;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9C;;;OAGG;IACH,OAAO,CAAC,cAAc;CAkBzB"}
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ /**
3
+ * KodoCheckpointer - State persistence using Qiniu Kodo Object Storage.
4
+ *
5
+ * Implements the Checkpointer interface for serverless-compatible
6
+ * durable state management.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { KodoCheckpointer } from '@bowenqt/qiniu-ai-sdk';
11
+ *
12
+ * const checkpointer = new KodoCheckpointer({
13
+ * bucket: 'my-checkpoints',
14
+ * accessKey: process.env.QINIU_ACCESS_KEY!,
15
+ * secretKey: process.env.QINIU_SECRET_KEY!,
16
+ * region: 'z0',
17
+ * });
18
+ *
19
+ * const graph = createAgentGraph({
20
+ * checkpointer,
21
+ * // ...
22
+ * });
23
+ * ```
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.KodoCheckpointer = void 0;
27
+ const crypto_1 = require("crypto");
28
+ /** Region host mapping */
29
+ const REGION_HOSTS = {
30
+ 'z0': { up: 'up.qiniup.com', rs: 'rs.qiniuapi.com', rsf: 'rsf.qiniuapi.com', io: 'iovip.qiniuio.com' },
31
+ 'z1': { up: 'up-z1.qiniup.com', rs: 'rs-z1.qiniuapi.com', rsf: 'rsf-z1.qiniuapi.com', io: 'iovip-z1.qiniuio.com' },
32
+ 'z2': { up: 'up-z2.qiniup.com', rs: 'rs-z2.qiniuapi.com', rsf: 'rsf-z2.qiniuapi.com', io: 'iovip-z2.qiniuio.com' },
33
+ 'na0': { up: 'up-na0.qiniup.com', rs: 'rs-na0.qiniuapi.com', rsf: 'rsf-na0.qiniuapi.com', io: 'iovip-na0.qiniuio.com' },
34
+ 'cn-east-2': { up: 'up-cn-east-2.qiniup.com', rs: 'rs-cn-east-2.qiniuapi.com', rsf: 'rsf-cn-east-2.qiniuapi.com', io: 'iovip-cn-east-2.qiniuio.com' },
35
+ 'ap-southeast-1': { up: 'up-ap-southeast-1.qiniup.com', rs: 'rs-ap-southeast-1.qiniuapi.com', rsf: 'rsf-ap-southeast-1.qiniuapi.com', io: 'iovip-ap-southeast-1.qiniuio.com' },
36
+ };
37
+ // ============================================================================
38
+ // Kodo Client
39
+ // ============================================================================
40
+ /** Internal Kodo API client */
41
+ class KodoClient {
42
+ constructor(config) {
43
+ this.cachedToken = null;
44
+ this.config = {
45
+ bucket: config.bucket,
46
+ accessKey: config.accessKey,
47
+ secretKey: config.secretKey,
48
+ region: config.region ?? 'z0',
49
+ prefix: config.prefix ?? 'checkpoints/',
50
+ tokenExpiry: config.tokenExpiry ?? 3600,
51
+ maxRetries: config.maxRetries ?? 3,
52
+ downloadDomain: config.downloadDomain,
53
+ };
54
+ this.hosts = REGION_HOSTS[this.config.region];
55
+ }
56
+ /** Generate upload token (bucket-level scope for reuse) */
57
+ generateUploadToken() {
58
+ const now = Math.floor(Date.now() / 1000);
59
+ const deadline = now + this.config.tokenExpiry;
60
+ // Check cache
61
+ if (this.cachedToken && this.cachedToken.expiresAt > Date.now() + 60000) {
62
+ return this.cachedToken.token;
63
+ }
64
+ // PutPolicy with bucket-level scope (allows any key in bucket)
65
+ const policy = {
66
+ scope: this.config.bucket,
67
+ deadline,
68
+ insertOnly: 0, // Allow overwrite
69
+ };
70
+ const encodedPolicy = this.base64UrlSafe(JSON.stringify(policy));
71
+ const sign = this.hmacSha1(encodedPolicy);
72
+ const token = `${this.config.accessKey}:${this.base64UrlSafe(sign)}:${encodedPolicy}`;
73
+ // Cache
74
+ this.cachedToken = { token, expiresAt: deadline * 1000 - 60000 };
75
+ return token;
76
+ }
77
+ /** Generate management authorization */
78
+ generateAuth(path, body) {
79
+ const data = `${path}\n${body ?? ''}`;
80
+ const sign = this.hmacSha1(data);
81
+ return `QBox ${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
82
+ }
83
+ /** Base64 URL-safe encoding */
84
+ base64UrlSafe(input) {
85
+ const b64 = Buffer.from(input).toString('base64');
86
+ return b64.replace(/\+/g, '-').replace(/\//g, '_');
87
+ }
88
+ /** HMAC-SHA1 */
89
+ hmacSha1(data) {
90
+ return (0, crypto_1.createHmac)('sha1', this.config.secretKey).update(data).digest();
91
+ }
92
+ /** Retry wrapper */
93
+ async withRetry(fn) {
94
+ let lastError = null;
95
+ for (let i = 0; i < this.config.maxRetries; i++) {
96
+ try {
97
+ return await fn();
98
+ }
99
+ catch (error) {
100
+ lastError = error;
101
+ if (i < this.config.maxRetries - 1) {
102
+ await new Promise(resolve => setTimeout(resolve, 100 * Math.pow(2, i)));
103
+ }
104
+ }
105
+ }
106
+ throw lastError;
107
+ }
108
+ /** Full key with prefix */
109
+ getFullKey(threadId) {
110
+ return `${this.config.prefix}${threadId}.json`;
111
+ }
112
+ /** Upload JSON data */
113
+ async upload(key, data) {
114
+ const token = this.generateUploadToken();
115
+ const body = JSON.stringify(data);
116
+ const formData = new FormData();
117
+ formData.append('token', token);
118
+ formData.append('key', key);
119
+ formData.append('file', new Blob([body], { type: 'application/json' }), key);
120
+ await this.withRetry(async () => {
121
+ const response = await fetch(`https://${this.hosts.up}`, {
122
+ method: 'POST',
123
+ body: formData,
124
+ });
125
+ if (!response.ok) {
126
+ const text = await response.text();
127
+ throw new Error(`Upload failed: ${response.status} ${text}`);
128
+ }
129
+ });
130
+ }
131
+ /** Download JSON data */
132
+ async download(key) {
133
+ return this.withRetry(async () => {
134
+ // Determine download domain
135
+ const domain = this.config.downloadDomain
136
+ ?? `${this.config.bucket}.${this.hosts.io.replace('iovip', 'kodo')}`;
137
+ // Generate signed URL for private bucket
138
+ const deadline = Math.floor(Date.now() / 1000) + 3600;
139
+ const baseUrl = `https://${domain}/${encodeURIComponent(key)}`;
140
+ const toSign = `${baseUrl}?e=${deadline}`;
141
+ const sign = this.hmacSha1(toSign);
142
+ const signedUrl = `${baseUrl}?e=${deadline}&token=${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
143
+ const response = await fetch(signedUrl);
144
+ if (response.status === 404) {
145
+ return null;
146
+ }
147
+ if (!response.ok) {
148
+ throw new Error(`Download failed: ${response.status}`);
149
+ }
150
+ return response.json();
151
+ });
152
+ }
153
+ /** Delete object */
154
+ async delete(key) {
155
+ const encodedEntry = this.base64UrlSafe(`${this.config.bucket}:${key}`);
156
+ const path = `/delete/${encodedEntry}`;
157
+ const auth = this.generateAuth(path);
158
+ return this.withRetry(async () => {
159
+ const response = await fetch(`https://${this.hosts.rs}${path}`, {
160
+ method: 'POST',
161
+ headers: {
162
+ 'Authorization': auth,
163
+ 'Content-Type': 'application/x-www-form-urlencoded',
164
+ },
165
+ });
166
+ if (response.status === 612) {
167
+ return false; // Not found
168
+ }
169
+ if (!response.ok) {
170
+ throw new Error(`Delete failed: ${response.status}`);
171
+ }
172
+ return true;
173
+ });
174
+ }
175
+ /** List objects by prefix */
176
+ async list(prefix) {
177
+ const items = [];
178
+ let marker;
179
+ do {
180
+ const params = new URLSearchParams({
181
+ bucket: this.config.bucket,
182
+ prefix,
183
+ limit: '1000',
184
+ });
185
+ if (marker)
186
+ params.set('marker', marker);
187
+ const path = `/list?${params.toString()}`;
188
+ const auth = this.generateAuth(path);
189
+ const response = await this.withRetry(async () => {
190
+ const res = await fetch(`https://${this.hosts.rsf}${path}`, {
191
+ headers: { 'Authorization': auth },
192
+ });
193
+ if (!res.ok) {
194
+ throw new Error(`List failed: ${res.status}`);
195
+ }
196
+ return res.json();
197
+ });
198
+ if (response.items) {
199
+ items.push(...response.items);
200
+ }
201
+ marker = response.marker;
202
+ } while (marker);
203
+ return items;
204
+ }
205
+ }
206
+ // ============================================================================
207
+ // KodoCheckpointer
208
+ // ============================================================================
209
+ /**
210
+ * Kodo-backed Checkpointer implementation.
211
+ *
212
+ * Stores checkpoints as JSON objects in Qiniu Kodo.
213
+ * Each thread has one checkpoint file: `{prefix}{threadId}.json`
214
+ */
215
+ class KodoCheckpointer {
216
+ constructor(config) {
217
+ this.client = new KodoClient(config);
218
+ this.prefix = config.prefix ?? 'checkpoints/';
219
+ }
220
+ /**
221
+ * Save a checkpoint.
222
+ */
223
+ async save(threadId, state, options) {
224
+ const key = this.client.getFullKey(threadId);
225
+ const serialized = this.serializeState(state);
226
+ // Extract options - handle both new CheckpointSaveOptions and legacy custom object
227
+ let status = 'active';
228
+ let pendingApproval;
229
+ let custom;
230
+ if (options) {
231
+ if ('status' in options || 'pendingApproval' in options || 'custom' in options) {
232
+ // New CheckpointSaveOptions format
233
+ const opts = options;
234
+ status = opts.status ?? 'active';
235
+ pendingApproval = opts.pendingApproval;
236
+ custom = opts.custom;
237
+ }
238
+ else {
239
+ // Legacy: treat entire object as custom metadata
240
+ custom = options;
241
+ }
242
+ }
243
+ const metadata = {
244
+ id: threadId, // Simplified: single checkpoint per thread
245
+ threadId,
246
+ createdAt: Date.now(),
247
+ stepCount: state.stepCount,
248
+ status,
249
+ pendingApproval,
250
+ custom,
251
+ };
252
+ const checkpoint = {
253
+ metadata,
254
+ state: serialized,
255
+ };
256
+ await this.client.upload(key, checkpoint);
257
+ return metadata;
258
+ }
259
+ /**
260
+ * Load the latest checkpoint for a thread.
261
+ */
262
+ async load(threadId) {
263
+ const key = this.client.getFullKey(threadId);
264
+ return this.client.download(key);
265
+ }
266
+ /**
267
+ * List checkpoints for a specific thread.
268
+ * Since we store single checkpoint per thread, this returns 0 or 1 item.
269
+ */
270
+ async list(threadId) {
271
+ // Direct download (single checkpoint per thread model)
272
+ const checkpoint = await this.load(threadId);
273
+ return checkpoint ? [checkpoint.metadata] : [];
274
+ }
275
+ /**
276
+ * Delete a single checkpoint.
277
+ */
278
+ async delete(checkpointId) {
279
+ // For single checkpoint per thread, checkpointId is the threadId
280
+ const key = this.client.getFullKey(checkpointId);
281
+ return this.client.delete(key);
282
+ }
283
+ /**
284
+ * Clear all checkpoints for a thread.
285
+ */
286
+ async clear(threadId) {
287
+ const key = this.client.getFullKey(threadId);
288
+ const deleted = await this.client.delete(key);
289
+ return deleted ? 1 : 0;
290
+ }
291
+ /**
292
+ * Serialize agent state to JSON-safe format.
293
+ * Strips non-serializable fields (abortSignal, tools Map).
294
+ */
295
+ serializeState(state) {
296
+ return {
297
+ messages: state.messages.map(msg => ({
298
+ role: msg.role,
299
+ content: msg.content,
300
+ tool_calls: msg.tool_calls,
301
+ tool_call_id: msg.tool_call_id,
302
+ _meta: msg._meta,
303
+ })),
304
+ stepCount: state.stepCount,
305
+ maxSteps: state.maxSteps,
306
+ done: state.done,
307
+ output: state.output,
308
+ reasoning: state.reasoning,
309
+ finishReason: state.finishReason,
310
+ usage: state.usage,
311
+ };
312
+ }
313
+ }
314
+ exports.KodoCheckpointer = KodoCheckpointer;
315
+ //# sourceMappingURL=kodo-checkpointer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kodo-checkpointer.js","sourceRoot":"","sources":["../../../src/ai/graph/kodo-checkpointer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,311 @@
1
+ /**
2
+ * KodoCheckpointer - State persistence using Qiniu Kodo Object Storage.
3
+ *
4
+ * Implements the Checkpointer interface for serverless-compatible
5
+ * durable state management.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { KodoCheckpointer } from '@bowenqt/qiniu-ai-sdk';
10
+ *
11
+ * const checkpointer = new KodoCheckpointer({
12
+ * bucket: 'my-checkpoints',
13
+ * accessKey: process.env.QINIU_ACCESS_KEY!,
14
+ * secretKey: process.env.QINIU_SECRET_KEY!,
15
+ * region: 'z0',
16
+ * });
17
+ *
18
+ * const graph = createAgentGraph({
19
+ * checkpointer,
20
+ * // ...
21
+ * });
22
+ * ```
23
+ */
24
+ import { createHmac } from 'crypto';
25
+ /** Region host mapping */
26
+ const REGION_HOSTS = {
27
+ 'z0': { up: 'up.qiniup.com', rs: 'rs.qiniuapi.com', rsf: 'rsf.qiniuapi.com', io: 'iovip.qiniuio.com' },
28
+ 'z1': { up: 'up-z1.qiniup.com', rs: 'rs-z1.qiniuapi.com', rsf: 'rsf-z1.qiniuapi.com', io: 'iovip-z1.qiniuio.com' },
29
+ 'z2': { up: 'up-z2.qiniup.com', rs: 'rs-z2.qiniuapi.com', rsf: 'rsf-z2.qiniuapi.com', io: 'iovip-z2.qiniuio.com' },
30
+ 'na0': { up: 'up-na0.qiniup.com', rs: 'rs-na0.qiniuapi.com', rsf: 'rsf-na0.qiniuapi.com', io: 'iovip-na0.qiniuio.com' },
31
+ 'cn-east-2': { up: 'up-cn-east-2.qiniup.com', rs: 'rs-cn-east-2.qiniuapi.com', rsf: 'rsf-cn-east-2.qiniuapi.com', io: 'iovip-cn-east-2.qiniuio.com' },
32
+ 'ap-southeast-1': { up: 'up-ap-southeast-1.qiniup.com', rs: 'rs-ap-southeast-1.qiniuapi.com', rsf: 'rsf-ap-southeast-1.qiniuapi.com', io: 'iovip-ap-southeast-1.qiniuio.com' },
33
+ };
34
+ // ============================================================================
35
+ // Kodo Client
36
+ // ============================================================================
37
+ /** Internal Kodo API client */
38
+ class KodoClient {
39
+ constructor(config) {
40
+ this.cachedToken = null;
41
+ this.config = {
42
+ bucket: config.bucket,
43
+ accessKey: config.accessKey,
44
+ secretKey: config.secretKey,
45
+ region: config.region ?? 'z0',
46
+ prefix: config.prefix ?? 'checkpoints/',
47
+ tokenExpiry: config.tokenExpiry ?? 3600,
48
+ maxRetries: config.maxRetries ?? 3,
49
+ downloadDomain: config.downloadDomain,
50
+ };
51
+ this.hosts = REGION_HOSTS[this.config.region];
52
+ }
53
+ /** Generate upload token (bucket-level scope for reuse) */
54
+ generateUploadToken() {
55
+ const now = Math.floor(Date.now() / 1000);
56
+ const deadline = now + this.config.tokenExpiry;
57
+ // Check cache
58
+ if (this.cachedToken && this.cachedToken.expiresAt > Date.now() + 60000) {
59
+ return this.cachedToken.token;
60
+ }
61
+ // PutPolicy with bucket-level scope (allows any key in bucket)
62
+ const policy = {
63
+ scope: this.config.bucket,
64
+ deadline,
65
+ insertOnly: 0, // Allow overwrite
66
+ };
67
+ const encodedPolicy = this.base64UrlSafe(JSON.stringify(policy));
68
+ const sign = this.hmacSha1(encodedPolicy);
69
+ const token = `${this.config.accessKey}:${this.base64UrlSafe(sign)}:${encodedPolicy}`;
70
+ // Cache
71
+ this.cachedToken = { token, expiresAt: deadline * 1000 - 60000 };
72
+ return token;
73
+ }
74
+ /** Generate management authorization */
75
+ generateAuth(path, body) {
76
+ const data = `${path}\n${body ?? ''}`;
77
+ const sign = this.hmacSha1(data);
78
+ return `QBox ${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
79
+ }
80
+ /** Base64 URL-safe encoding */
81
+ base64UrlSafe(input) {
82
+ const b64 = Buffer.from(input).toString('base64');
83
+ return b64.replace(/\+/g, '-').replace(/\//g, '_');
84
+ }
85
+ /** HMAC-SHA1 */
86
+ hmacSha1(data) {
87
+ return createHmac('sha1', this.config.secretKey).update(data).digest();
88
+ }
89
+ /** Retry wrapper */
90
+ async withRetry(fn) {
91
+ let lastError = null;
92
+ for (let i = 0; i < this.config.maxRetries; i++) {
93
+ try {
94
+ return await fn();
95
+ }
96
+ catch (error) {
97
+ lastError = error;
98
+ if (i < this.config.maxRetries - 1) {
99
+ await new Promise(resolve => setTimeout(resolve, 100 * Math.pow(2, i)));
100
+ }
101
+ }
102
+ }
103
+ throw lastError;
104
+ }
105
+ /** Full key with prefix */
106
+ getFullKey(threadId) {
107
+ return `${this.config.prefix}${threadId}.json`;
108
+ }
109
+ /** Upload JSON data */
110
+ async upload(key, data) {
111
+ const token = this.generateUploadToken();
112
+ const body = JSON.stringify(data);
113
+ const formData = new FormData();
114
+ formData.append('token', token);
115
+ formData.append('key', key);
116
+ formData.append('file', new Blob([body], { type: 'application/json' }), key);
117
+ await this.withRetry(async () => {
118
+ const response = await fetch(`https://${this.hosts.up}`, {
119
+ method: 'POST',
120
+ body: formData,
121
+ });
122
+ if (!response.ok) {
123
+ const text = await response.text();
124
+ throw new Error(`Upload failed: ${response.status} ${text}`);
125
+ }
126
+ });
127
+ }
128
+ /** Download JSON data */
129
+ async download(key) {
130
+ return this.withRetry(async () => {
131
+ // Determine download domain
132
+ const domain = this.config.downloadDomain
133
+ ?? `${this.config.bucket}.${this.hosts.io.replace('iovip', 'kodo')}`;
134
+ // Generate signed URL for private bucket
135
+ const deadline = Math.floor(Date.now() / 1000) + 3600;
136
+ const baseUrl = `https://${domain}/${encodeURIComponent(key)}`;
137
+ const toSign = `${baseUrl}?e=${deadline}`;
138
+ const sign = this.hmacSha1(toSign);
139
+ const signedUrl = `${baseUrl}?e=${deadline}&token=${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
140
+ const response = await fetch(signedUrl);
141
+ if (response.status === 404) {
142
+ return null;
143
+ }
144
+ if (!response.ok) {
145
+ throw new Error(`Download failed: ${response.status}`);
146
+ }
147
+ return response.json();
148
+ });
149
+ }
150
+ /** Delete object */
151
+ async delete(key) {
152
+ const encodedEntry = this.base64UrlSafe(`${this.config.bucket}:${key}`);
153
+ const path = `/delete/${encodedEntry}`;
154
+ const auth = this.generateAuth(path);
155
+ return this.withRetry(async () => {
156
+ const response = await fetch(`https://${this.hosts.rs}${path}`, {
157
+ method: 'POST',
158
+ headers: {
159
+ 'Authorization': auth,
160
+ 'Content-Type': 'application/x-www-form-urlencoded',
161
+ },
162
+ });
163
+ if (response.status === 612) {
164
+ return false; // Not found
165
+ }
166
+ if (!response.ok) {
167
+ throw new Error(`Delete failed: ${response.status}`);
168
+ }
169
+ return true;
170
+ });
171
+ }
172
+ /** List objects by prefix */
173
+ async list(prefix) {
174
+ const items = [];
175
+ let marker;
176
+ do {
177
+ const params = new URLSearchParams({
178
+ bucket: this.config.bucket,
179
+ prefix,
180
+ limit: '1000',
181
+ });
182
+ if (marker)
183
+ params.set('marker', marker);
184
+ const path = `/list?${params.toString()}`;
185
+ const auth = this.generateAuth(path);
186
+ const response = await this.withRetry(async () => {
187
+ const res = await fetch(`https://${this.hosts.rsf}${path}`, {
188
+ headers: { 'Authorization': auth },
189
+ });
190
+ if (!res.ok) {
191
+ throw new Error(`List failed: ${res.status}`);
192
+ }
193
+ return res.json();
194
+ });
195
+ if (response.items) {
196
+ items.push(...response.items);
197
+ }
198
+ marker = response.marker;
199
+ } while (marker);
200
+ return items;
201
+ }
202
+ }
203
+ // ============================================================================
204
+ // KodoCheckpointer
205
+ // ============================================================================
206
+ /**
207
+ * Kodo-backed Checkpointer implementation.
208
+ *
209
+ * Stores checkpoints as JSON objects in Qiniu Kodo.
210
+ * Each thread has one checkpoint file: `{prefix}{threadId}.json`
211
+ */
212
+ export class KodoCheckpointer {
213
+ constructor(config) {
214
+ this.client = new KodoClient(config);
215
+ this.prefix = config.prefix ?? 'checkpoints/';
216
+ }
217
+ /**
218
+ * Save a checkpoint.
219
+ */
220
+ async save(threadId, state, options) {
221
+ const key = this.client.getFullKey(threadId);
222
+ const serialized = this.serializeState(state);
223
+ // Extract options - handle both new CheckpointSaveOptions and legacy custom object
224
+ let status = 'active';
225
+ let pendingApproval;
226
+ let custom;
227
+ if (options) {
228
+ if ('status' in options || 'pendingApproval' in options || 'custom' in options) {
229
+ // New CheckpointSaveOptions format
230
+ const opts = options;
231
+ status = opts.status ?? 'active';
232
+ pendingApproval = opts.pendingApproval;
233
+ custom = opts.custom;
234
+ }
235
+ else {
236
+ // Legacy: treat entire object as custom metadata
237
+ custom = options;
238
+ }
239
+ }
240
+ const metadata = {
241
+ id: threadId, // Simplified: single checkpoint per thread
242
+ threadId,
243
+ createdAt: Date.now(),
244
+ stepCount: state.stepCount,
245
+ status,
246
+ pendingApproval,
247
+ custom,
248
+ };
249
+ const checkpoint = {
250
+ metadata,
251
+ state: serialized,
252
+ };
253
+ await this.client.upload(key, checkpoint);
254
+ return metadata;
255
+ }
256
+ /**
257
+ * Load the latest checkpoint for a thread.
258
+ */
259
+ async load(threadId) {
260
+ const key = this.client.getFullKey(threadId);
261
+ return this.client.download(key);
262
+ }
263
+ /**
264
+ * List checkpoints for a specific thread.
265
+ * Since we store single checkpoint per thread, this returns 0 or 1 item.
266
+ */
267
+ async list(threadId) {
268
+ // Direct download (single checkpoint per thread model)
269
+ const checkpoint = await this.load(threadId);
270
+ return checkpoint ? [checkpoint.metadata] : [];
271
+ }
272
+ /**
273
+ * Delete a single checkpoint.
274
+ */
275
+ async delete(checkpointId) {
276
+ // For single checkpoint per thread, checkpointId is the threadId
277
+ const key = this.client.getFullKey(checkpointId);
278
+ return this.client.delete(key);
279
+ }
280
+ /**
281
+ * Clear all checkpoints for a thread.
282
+ */
283
+ async clear(threadId) {
284
+ const key = this.client.getFullKey(threadId);
285
+ const deleted = await this.client.delete(key);
286
+ return deleted ? 1 : 0;
287
+ }
288
+ /**
289
+ * Serialize agent state to JSON-safe format.
290
+ * Strips non-serializable fields (abortSignal, tools Map).
291
+ */
292
+ serializeState(state) {
293
+ return {
294
+ messages: state.messages.map(msg => ({
295
+ role: msg.role,
296
+ content: msg.content,
297
+ tool_calls: msg.tool_calls,
298
+ tool_call_id: msg.tool_call_id,
299
+ _meta: msg._meta,
300
+ })),
301
+ stepCount: state.stepCount,
302
+ maxSteps: state.maxSteps,
303
+ done: state.done,
304
+ output: state.output,
305
+ reasoning: state.reasoning,
306
+ finishReason: state.finishReason,
307
+ usage: state.usage,
308
+ };
309
+ }
310
+ }
311
+ //# sourceMappingURL=kodo-checkpointer.js.map
package/dist/index.d.ts CHANGED
@@ -57,8 +57,8 @@ export { SkillLoader } from './modules/skills';
57
57
  export type { Skill } from './modules/skills';
58
58
  export { MCPClient, MCPClientError, adaptMCPToolsToRegistry, getAllMCPToolsAsRegistered, MCPHttpTransport, MCPHttpTransportError, PKCEFlow, DeviceCodeFlow, OAuthError, generateCodeVerifier, generateCodeChallenge, generateState, refreshAccessToken, MemoryTokenStore, FileTokenStore, TokenManager, QiniuMCPServer, startFromEnv, } from './modules/mcp';
59
59
  export type { MCPClientConfig, MCPServerConfig, MCPStdioServerConfig, MCPHttpServerConfig, MCPOAuthConfig, MCPToolDefinition, MCPToolResult, MCPConnectionState, MCPTransport, TokenProvider, OAuthTokens, TokenStore, FileTokenStoreConfig, QiniuMCPServerConfig, } from './modules/mcp';
60
- export { MemoryCheckpointer, deserializeCheckpoint, RedisCheckpointer, PostgresCheckpointer, isPendingApproval, getPendingApproval, resumeWithApproval, } from './ai/graph';
61
- export type { Checkpointer, Checkpoint, CheckpointMetadata, SerializedAgentState, RedisClient, RedisCheckpointerConfig, PostgresClient, PostgresCheckpointerConfig, CheckpointStatus, CheckpointSaveOptions, PendingApproval, ResumeWithApprovalResult, ToolExecutor, } from './ai/graph';
60
+ export { MemoryCheckpointer, deserializeCheckpoint, RedisCheckpointer, PostgresCheckpointer, KodoCheckpointer, isPendingApproval, getPendingApproval, resumeWithApproval, } from './ai/graph';
61
+ export type { Checkpointer, Checkpoint, CheckpointMetadata, SerializedAgentState, RedisClient, RedisCheckpointerConfig, PostgresClient, PostgresCheckpointerConfig, KodoCheckpointerConfig, KodoRegion, CheckpointStatus, CheckpointSaveOptions, PendingApproval, ResumeWithApprovalResult, ToolExecutor, } from './ai/graph';
62
62
  export { ToolRegistry, ToolConflictError } from './lib/tool-registry';
63
63
  export type { RegisteredTool, ToolSource, ToolSourceType, ToolParameters, ToolRegistryConfig, ConflictStrategy } from './lib/tool-registry';
64
64
  export { StateGraph, END, MaxGraphStepsError } from './ai/graph';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,8 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.buildVframeUrl = exports.buildVframeFop = exports.AssetResolutionError = exports.resolveAssets = exports.resolveAsset = exports.parseQiniuUri = exports.CachedSigner = exports.UrlCache = exports.isMessageDroppable = exports.InMemoryVectorStore = exports.MemoryManager = exports.getDroppableId = exports.getSummaryId = exports.getSkillId = exports.isDroppable = exports.stripMeta = exports.createAgent = exports.AgentGraph = exports.generateTextWithGraph = exports.createPoller = exports.pollUntilComplete = exports.accumulateDelta = exports.createStreamAccumulator = exports.parseSSEStream = exports.parsePartialJson = exports.PartialJsonParser = exports.streamObject = exports.generateObject = exports.serializeToolResult = exports.generateText = exports.truncateHistory = exports.appendMessages = exports.StructuredOutputError = 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
- exports.estimateMessageTokens = exports.defaultContentEstimator = exports.createTokenEstimator = exports.ContextOverflowError = exports.buildToolPairs = exports.compactMessages = exports.MaxGraphStepsError = exports.END = exports.StateGraph = exports.ToolConflictError = exports.ToolRegistry = exports.resumeWithApproval = exports.getPendingApproval = exports.isPendingApproval = exports.PostgresCheckpointer = exports.RedisCheckpointer = exports.deserializeCheckpoint = exports.MemoryCheckpointer = exports.startFromEnv = exports.QiniuMCPServer = exports.TokenManager = exports.FileTokenStore = exports.MemoryTokenStore = exports.refreshAccessToken = exports.generateState = exports.generateCodeChallenge = exports.generateCodeVerifier = exports.OAuthError = exports.DeviceCodeFlow = exports.PKCEFlow = exports.MCPHttpTransportError = exports.MCPHttpTransport = exports.getAllMCPToolsAsRegistered = exports.adaptMCPToolsToRegistry = exports.MCPClientError = exports.MCPClient = exports.SkillLoader = exports.qiniuVframeTool = exports.qiniuVideoCensorTool = exports.qiniuImageCensorTool = exports.qiniuOcrTool = exports.getQiniuToolSchemas = exports.getQiniuToolsArray = exports.QINIU_TOOLS = exports.Censor = exports.detectAssetType = exports.estimateAssetCost = exports.VframeError = exports.extractFrame = exports.extractFrames = void 0;
19
- exports.OTelTracer = exports.PRODUCTION_TRACER_CONFIG = exports.DEFAULT_TRACER_CONFIG = exports.redactAttributes = exports.redactContent = exports.getGlobalTracer = exports.setGlobalTracer = exports.ConsoleTracer = exports.NoopTracer = exports.DEFAULT_ESTIMATOR_CONFIG = exports.estimateMessagesTokens = void 0;
18
+ exports.defaultContentEstimator = exports.createTokenEstimator = exports.ContextOverflowError = exports.buildToolPairs = exports.compactMessages = exports.MaxGraphStepsError = exports.END = exports.StateGraph = exports.ToolConflictError = exports.ToolRegistry = exports.resumeWithApproval = exports.getPendingApproval = exports.isPendingApproval = exports.KodoCheckpointer = exports.PostgresCheckpointer = exports.RedisCheckpointer = exports.deserializeCheckpoint = exports.MemoryCheckpointer = exports.startFromEnv = exports.QiniuMCPServer = exports.TokenManager = exports.FileTokenStore = exports.MemoryTokenStore = exports.refreshAccessToken = exports.generateState = exports.generateCodeChallenge = exports.generateCodeVerifier = exports.OAuthError = exports.DeviceCodeFlow = exports.PKCEFlow = exports.MCPHttpTransportError = exports.MCPHttpTransport = exports.getAllMCPToolsAsRegistered = exports.adaptMCPToolsToRegistry = exports.MCPClientError = exports.MCPClient = exports.SkillLoader = exports.qiniuVframeTool = exports.qiniuVideoCensorTool = exports.qiniuImageCensorTool = exports.qiniuOcrTool = exports.getQiniuToolSchemas = exports.getQiniuToolsArray = exports.QINIU_TOOLS = exports.Censor = exports.detectAssetType = exports.estimateAssetCost = exports.VframeError = exports.extractFrame = exports.extractFrames = void 0;
19
+ exports.OTelTracer = exports.PRODUCTION_TRACER_CONFIG = exports.DEFAULT_TRACER_CONFIG = exports.redactAttributes = exports.redactContent = exports.getGlobalTracer = exports.setGlobalTracer = exports.ConsoleTracer = exports.NoopTracer = exports.DEFAULT_ESTIMATOR_CONFIG = exports.estimateMessagesTokens = exports.estimateMessageTokens = void 0;
20
20
  // Main client
21
21
  var client_1 = require("./client");
22
22
  Object.defineProperty(exports, "QiniuAI", { enumerable: true, get: function () { return client_1.QiniuAI; } });
@@ -164,6 +164,8 @@ Object.defineProperty(exports, "deserializeCheckpoint", { enumerable: true, get:
164
164
  // Phase 3: Redis + Postgres
165
165
  Object.defineProperty(exports, "RedisCheckpointer", { enumerable: true, get: function () { return graph_1.RedisCheckpointer; } });
166
166
  Object.defineProperty(exports, "PostgresCheckpointer", { enumerable: true, get: function () { return graph_1.PostgresCheckpointer; } });
167
+ // Phase 7: Kodo (Qiniu Object Storage)
168
+ Object.defineProperty(exports, "KodoCheckpointer", { enumerable: true, get: function () { return graph_1.KodoCheckpointer; } });
167
169
  // Phase 5: Async Approval
168
170
  Object.defineProperty(exports, "isPendingApproval", { enumerable: true, get: function () { return graph_1.isPendingApproval; } });
169
171
  Object.defineProperty(exports, "getPendingApproval", { enumerable: true, get: function () { return graph_1.getPendingApproval; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -64,6 +64,8 @@ QiniuMCPServer, startFromEnv, } from './modules/mcp.mjs';
64
64
  export { MemoryCheckpointer, deserializeCheckpoint,
65
65
  // Phase 3: Redis + Postgres
66
66
  RedisCheckpointer, PostgresCheckpointer,
67
+ // Phase 7: Kodo (Qiniu Object Storage)
68
+ KodoCheckpointer,
67
69
  // Phase 5: Async Approval
68
70
  isPendingApproval, getPendingApproval, resumeWithApproval, } from './ai/graph.mjs';
69
71
  // Tool Registry
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bowenqt/qiniu-ai-sdk",
3
- "version": "0.22.2",
3
+ "version": "0.23.1",
4
4
  "description": "TypeScript SDK for Qiniu Cloud AI Token API - Chat, Image, Video generation and more",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",