@bowenqt/qiniu-ai-sdk 0.22.2 → 0.23.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.
@@ -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,81 @@
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
+ }
45
+ /**
46
+ * Kodo-backed Checkpointer implementation.
47
+ *
48
+ * Stores checkpoints as JSON objects in Qiniu Kodo.
49
+ * Each thread has one checkpoint file: `{prefix}{threadId}.json`
50
+ */
51
+ export declare class KodoCheckpointer implements Checkpointer {
52
+ private readonly client;
53
+ private readonly prefix;
54
+ constructor(config: KodoCheckpointerConfig);
55
+ /**
56
+ * Save a checkpoint.
57
+ */
58
+ save(threadId: string, state: AgentState, options?: CheckpointSaveOptions | Record<string, unknown>): Promise<CheckpointMetadata>;
59
+ /**
60
+ * Load the latest checkpoint for a thread.
61
+ */
62
+ load(threadId: string): Promise<Checkpoint | null>;
63
+ /**
64
+ * List all checkpoints.
65
+ */
66
+ list(threadId: string): Promise<CheckpointMetadata[]>;
67
+ /**
68
+ * Delete a single checkpoint.
69
+ */
70
+ delete(checkpointId: string): Promise<boolean>;
71
+ /**
72
+ * Clear all checkpoints for a thread.
73
+ */
74
+ clear(threadId: string): Promise<number>;
75
+ /**
76
+ * Serialize agent state to JSON-safe format.
77
+ * Strips non-serializable fields (abortSignal, tools Map).
78
+ */
79
+ private serializeState;
80
+ }
81
+ //# 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;CACvB;AAiND;;;;;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;IAwB9B;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKxD;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAoB3D;;OAEG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpD;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9C;;;OAGG;IACH,OAAO,CAAC,cAAc;CAkBzB"}
@@ -0,0 +1,304 @@
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
+ };
53
+ this.hosts = REGION_HOSTS[this.config.region];
54
+ }
55
+ /** Generate upload token */
56
+ generateUploadToken(key) {
57
+ const now = Math.floor(Date.now() / 1000);
58
+ const deadline = now + this.config.tokenExpiry;
59
+ // Check cache
60
+ if (this.cachedToken && this.cachedToken.expiresAt > Date.now() + 60000) {
61
+ return this.cachedToken.token;
62
+ }
63
+ // PutPolicy
64
+ const policy = {
65
+ scope: `${this.config.bucket}:${key}`,
66
+ deadline,
67
+ };
68
+ const encodedPolicy = this.base64UrlSafe(JSON.stringify(policy));
69
+ const sign = this.hmacSha1(encodedPolicy);
70
+ const token = `${this.config.accessKey}:${this.base64UrlSafe(sign)}:${encodedPolicy}`;
71
+ // Cache
72
+ this.cachedToken = { token, expiresAt: deadline * 1000 - 60000 };
73
+ return token;
74
+ }
75
+ /** Generate management authorization */
76
+ generateAuth(path, body) {
77
+ const data = `${path}\n${body ?? ''}`;
78
+ const sign = this.hmacSha1(data);
79
+ return `QBox ${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
80
+ }
81
+ /** Base64 URL-safe encoding */
82
+ base64UrlSafe(input) {
83
+ const b64 = Buffer.from(input).toString('base64');
84
+ return b64.replace(/\+/g, '-').replace(/\//g, '_');
85
+ }
86
+ /** HMAC-SHA1 */
87
+ hmacSha1(data) {
88
+ return (0, crypto_1.createHmac)('sha1', this.config.secretKey).update(data).digest();
89
+ }
90
+ /** Retry wrapper */
91
+ async withRetry(fn) {
92
+ let lastError = null;
93
+ for (let i = 0; i < this.config.maxRetries; i++) {
94
+ try {
95
+ return await fn();
96
+ }
97
+ catch (error) {
98
+ lastError = error;
99
+ if (i < this.config.maxRetries - 1) {
100
+ await new Promise(resolve => setTimeout(resolve, 100 * Math.pow(2, i)));
101
+ }
102
+ }
103
+ }
104
+ throw lastError;
105
+ }
106
+ /** Full key with prefix */
107
+ getFullKey(threadId) {
108
+ return `${this.config.prefix}${threadId}.json`;
109
+ }
110
+ /** Upload JSON data */
111
+ async upload(key, data) {
112
+ const token = this.generateUploadToken(key);
113
+ const body = JSON.stringify(data);
114
+ const formData = new FormData();
115
+ formData.append('token', token);
116
+ formData.append('key', key);
117
+ formData.append('file', new Blob([body], { type: 'application/json' }), key);
118
+ await this.withRetry(async () => {
119
+ const response = await fetch(`https://${this.hosts.up}`, {
120
+ method: 'POST',
121
+ body: formData,
122
+ });
123
+ if (!response.ok) {
124
+ const text = await response.text();
125
+ throw new Error(`Upload failed: ${response.status} ${text}`);
126
+ }
127
+ });
128
+ }
129
+ /** Download JSON data */
130
+ async download(key) {
131
+ return this.withRetry(async () => {
132
+ // Generate signed URL for private bucket
133
+ const deadline = Math.floor(Date.now() / 1000) + 3600;
134
+ const url = `https://${this.config.bucket}.${this.hosts.io.replace('iovip', 'kodo')}/${encodeURIComponent(key)}`;
135
+ const toSign = `${url}?e=${deadline}`;
136
+ const sign = this.hmacSha1(toSign);
137
+ const signedUrl = `${url}?e=${deadline}&token=${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
138
+ const response = await fetch(signedUrl);
139
+ if (response.status === 404) {
140
+ return null;
141
+ }
142
+ if (!response.ok) {
143
+ throw new Error(`Download failed: ${response.status}`);
144
+ }
145
+ return response.json();
146
+ });
147
+ }
148
+ /** Delete object */
149
+ async delete(key) {
150
+ const encodedEntry = this.base64UrlSafe(`${this.config.bucket}:${key}`);
151
+ const path = `/delete/${encodedEntry}`;
152
+ const auth = this.generateAuth(path);
153
+ return this.withRetry(async () => {
154
+ const response = await fetch(`https://${this.hosts.rs}${path}`, {
155
+ method: 'POST',
156
+ headers: {
157
+ 'Authorization': auth,
158
+ 'Content-Type': 'application/x-www-form-urlencoded',
159
+ },
160
+ });
161
+ if (response.status === 612) {
162
+ return false; // Not found
163
+ }
164
+ if (!response.ok) {
165
+ throw new Error(`Delete failed: ${response.status}`);
166
+ }
167
+ return true;
168
+ });
169
+ }
170
+ /** List objects by prefix */
171
+ async list(prefix) {
172
+ const items = [];
173
+ let marker;
174
+ do {
175
+ const params = new URLSearchParams({
176
+ bucket: this.config.bucket,
177
+ prefix,
178
+ limit: '1000',
179
+ });
180
+ if (marker)
181
+ params.set('marker', marker);
182
+ const path = `/list?${params.toString()}`;
183
+ const auth = this.generateAuth(path);
184
+ const response = await this.withRetry(async () => {
185
+ const res = await fetch(`https://${this.hosts.rsf}${path}`, {
186
+ headers: { 'Authorization': auth },
187
+ });
188
+ if (!res.ok) {
189
+ throw new Error(`List failed: ${res.status}`);
190
+ }
191
+ return res.json();
192
+ });
193
+ if (response.items) {
194
+ items.push(...response.items);
195
+ }
196
+ marker = response.marker;
197
+ } while (marker);
198
+ return items;
199
+ }
200
+ }
201
+ // ============================================================================
202
+ // KodoCheckpointer
203
+ // ============================================================================
204
+ /**
205
+ * Kodo-backed Checkpointer implementation.
206
+ *
207
+ * Stores checkpoints as JSON objects in Qiniu Kodo.
208
+ * Each thread has one checkpoint file: `{prefix}{threadId}.json`
209
+ */
210
+ class KodoCheckpointer {
211
+ constructor(config) {
212
+ this.client = new KodoClient(config);
213
+ this.prefix = config.prefix ?? 'checkpoints/';
214
+ }
215
+ /**
216
+ * Save a checkpoint.
217
+ */
218
+ async save(threadId, state, options) {
219
+ const key = this.client.getFullKey(threadId);
220
+ const serialized = this.serializeState(state);
221
+ const metadata = {
222
+ id: `${threadId}-${Date.now()}`,
223
+ threadId,
224
+ createdAt: Date.now(),
225
+ stepCount: state.stepCount,
226
+ status: options?.status,
227
+ pendingApproval: options?.pendingApproval,
228
+ custom: options?.custom,
229
+ };
230
+ const checkpoint = {
231
+ metadata,
232
+ state: serialized,
233
+ };
234
+ await this.client.upload(key, checkpoint);
235
+ return metadata;
236
+ }
237
+ /**
238
+ * Load the latest checkpoint for a thread.
239
+ */
240
+ async load(threadId) {
241
+ const key = this.client.getFullKey(threadId);
242
+ return this.client.download(key);
243
+ }
244
+ /**
245
+ * List all checkpoints.
246
+ */
247
+ async list(threadId) {
248
+ const items = await this.client.list(this.prefix);
249
+ // Filter by threadId if provided
250
+ const filtered = threadId
251
+ ? items.filter(item => item.key.includes(threadId))
252
+ : items;
253
+ // Download metadata for each
254
+ const metadataList = [];
255
+ for (const item of filtered) {
256
+ const checkpoint = await this.client.download(item.key);
257
+ if (checkpoint?.metadata) {
258
+ metadataList.push(checkpoint.metadata);
259
+ }
260
+ }
261
+ return metadataList.sort((a, b) => b.createdAt - a.createdAt);
262
+ }
263
+ /**
264
+ * Delete a single checkpoint.
265
+ */
266
+ async delete(checkpointId) {
267
+ // Extract threadId from checkpointId (format: {threadId}-{timestamp})
268
+ const threadId = checkpointId.split('-').slice(0, -1).join('-');
269
+ const key = this.client.getFullKey(threadId);
270
+ return this.client.delete(key);
271
+ }
272
+ /**
273
+ * Clear all checkpoints for a thread.
274
+ */
275
+ async clear(threadId) {
276
+ const key = this.client.getFullKey(threadId);
277
+ const deleted = await this.client.delete(key);
278
+ return deleted ? 1 : 0;
279
+ }
280
+ /**
281
+ * Serialize agent state to JSON-safe format.
282
+ * Strips non-serializable fields (abortSignal, tools Map).
283
+ */
284
+ serializeState(state) {
285
+ return {
286
+ messages: state.messages.map(msg => ({
287
+ role: msg.role,
288
+ content: msg.content,
289
+ tool_calls: msg.tool_calls,
290
+ tool_call_id: msg.tool_call_id,
291
+ _meta: msg._meta,
292
+ })),
293
+ stepCount: state.stepCount,
294
+ maxSteps: state.maxSteps,
295
+ done: state.done,
296
+ output: state.output,
297
+ reasoning: state.reasoning,
298
+ finishReason: state.finishReason,
299
+ usage: state.usage,
300
+ };
301
+ }
302
+ }
303
+ exports.KodoCheckpointer = KodoCheckpointer;
304
+ //# 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,300 @@
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
+ };
50
+ this.hosts = REGION_HOSTS[this.config.region];
51
+ }
52
+ /** Generate upload token */
53
+ generateUploadToken(key) {
54
+ const now = Math.floor(Date.now() / 1000);
55
+ const deadline = now + this.config.tokenExpiry;
56
+ // Check cache
57
+ if (this.cachedToken && this.cachedToken.expiresAt > Date.now() + 60000) {
58
+ return this.cachedToken.token;
59
+ }
60
+ // PutPolicy
61
+ const policy = {
62
+ scope: `${this.config.bucket}:${key}`,
63
+ deadline,
64
+ };
65
+ const encodedPolicy = this.base64UrlSafe(JSON.stringify(policy));
66
+ const sign = this.hmacSha1(encodedPolicy);
67
+ const token = `${this.config.accessKey}:${this.base64UrlSafe(sign)}:${encodedPolicy}`;
68
+ // Cache
69
+ this.cachedToken = { token, expiresAt: deadline * 1000 - 60000 };
70
+ return token;
71
+ }
72
+ /** Generate management authorization */
73
+ generateAuth(path, body) {
74
+ const data = `${path}\n${body ?? ''}`;
75
+ const sign = this.hmacSha1(data);
76
+ return `QBox ${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
77
+ }
78
+ /** Base64 URL-safe encoding */
79
+ base64UrlSafe(input) {
80
+ const b64 = Buffer.from(input).toString('base64');
81
+ return b64.replace(/\+/g, '-').replace(/\//g, '_');
82
+ }
83
+ /** HMAC-SHA1 */
84
+ hmacSha1(data) {
85
+ return createHmac('sha1', this.config.secretKey).update(data).digest();
86
+ }
87
+ /** Retry wrapper */
88
+ async withRetry(fn) {
89
+ let lastError = null;
90
+ for (let i = 0; i < this.config.maxRetries; i++) {
91
+ try {
92
+ return await fn();
93
+ }
94
+ catch (error) {
95
+ lastError = error;
96
+ if (i < this.config.maxRetries - 1) {
97
+ await new Promise(resolve => setTimeout(resolve, 100 * Math.pow(2, i)));
98
+ }
99
+ }
100
+ }
101
+ throw lastError;
102
+ }
103
+ /** Full key with prefix */
104
+ getFullKey(threadId) {
105
+ return `${this.config.prefix}${threadId}.json`;
106
+ }
107
+ /** Upload JSON data */
108
+ async upload(key, data) {
109
+ const token = this.generateUploadToken(key);
110
+ const body = JSON.stringify(data);
111
+ const formData = new FormData();
112
+ formData.append('token', token);
113
+ formData.append('key', key);
114
+ formData.append('file', new Blob([body], { type: 'application/json' }), key);
115
+ await this.withRetry(async () => {
116
+ const response = await fetch(`https://${this.hosts.up}`, {
117
+ method: 'POST',
118
+ body: formData,
119
+ });
120
+ if (!response.ok) {
121
+ const text = await response.text();
122
+ throw new Error(`Upload failed: ${response.status} ${text}`);
123
+ }
124
+ });
125
+ }
126
+ /** Download JSON data */
127
+ async download(key) {
128
+ return this.withRetry(async () => {
129
+ // Generate signed URL for private bucket
130
+ const deadline = Math.floor(Date.now() / 1000) + 3600;
131
+ const url = `https://${this.config.bucket}.${this.hosts.io.replace('iovip', 'kodo')}/${encodeURIComponent(key)}`;
132
+ const toSign = `${url}?e=${deadline}`;
133
+ const sign = this.hmacSha1(toSign);
134
+ const signedUrl = `${url}?e=${deadline}&token=${this.config.accessKey}:${this.base64UrlSafe(sign)}`;
135
+ const response = await fetch(signedUrl);
136
+ if (response.status === 404) {
137
+ return null;
138
+ }
139
+ if (!response.ok) {
140
+ throw new Error(`Download failed: ${response.status}`);
141
+ }
142
+ return response.json();
143
+ });
144
+ }
145
+ /** Delete object */
146
+ async delete(key) {
147
+ const encodedEntry = this.base64UrlSafe(`${this.config.bucket}:${key}`);
148
+ const path = `/delete/${encodedEntry}`;
149
+ const auth = this.generateAuth(path);
150
+ return this.withRetry(async () => {
151
+ const response = await fetch(`https://${this.hosts.rs}${path}`, {
152
+ method: 'POST',
153
+ headers: {
154
+ 'Authorization': auth,
155
+ 'Content-Type': 'application/x-www-form-urlencoded',
156
+ },
157
+ });
158
+ if (response.status === 612) {
159
+ return false; // Not found
160
+ }
161
+ if (!response.ok) {
162
+ throw new Error(`Delete failed: ${response.status}`);
163
+ }
164
+ return true;
165
+ });
166
+ }
167
+ /** List objects by prefix */
168
+ async list(prefix) {
169
+ const items = [];
170
+ let marker;
171
+ do {
172
+ const params = new URLSearchParams({
173
+ bucket: this.config.bucket,
174
+ prefix,
175
+ limit: '1000',
176
+ });
177
+ if (marker)
178
+ params.set('marker', marker);
179
+ const path = `/list?${params.toString()}`;
180
+ const auth = this.generateAuth(path);
181
+ const response = await this.withRetry(async () => {
182
+ const res = await fetch(`https://${this.hosts.rsf}${path}`, {
183
+ headers: { 'Authorization': auth },
184
+ });
185
+ if (!res.ok) {
186
+ throw new Error(`List failed: ${res.status}`);
187
+ }
188
+ return res.json();
189
+ });
190
+ if (response.items) {
191
+ items.push(...response.items);
192
+ }
193
+ marker = response.marker;
194
+ } while (marker);
195
+ return items;
196
+ }
197
+ }
198
+ // ============================================================================
199
+ // KodoCheckpointer
200
+ // ============================================================================
201
+ /**
202
+ * Kodo-backed Checkpointer implementation.
203
+ *
204
+ * Stores checkpoints as JSON objects in Qiniu Kodo.
205
+ * Each thread has one checkpoint file: `{prefix}{threadId}.json`
206
+ */
207
+ export class KodoCheckpointer {
208
+ constructor(config) {
209
+ this.client = new KodoClient(config);
210
+ this.prefix = config.prefix ?? 'checkpoints/';
211
+ }
212
+ /**
213
+ * Save a checkpoint.
214
+ */
215
+ async save(threadId, state, options) {
216
+ const key = this.client.getFullKey(threadId);
217
+ const serialized = this.serializeState(state);
218
+ const metadata = {
219
+ id: `${threadId}-${Date.now()}`,
220
+ threadId,
221
+ createdAt: Date.now(),
222
+ stepCount: state.stepCount,
223
+ status: options?.status,
224
+ pendingApproval: options?.pendingApproval,
225
+ custom: options?.custom,
226
+ };
227
+ const checkpoint = {
228
+ metadata,
229
+ state: serialized,
230
+ };
231
+ await this.client.upload(key, checkpoint);
232
+ return metadata;
233
+ }
234
+ /**
235
+ * Load the latest checkpoint for a thread.
236
+ */
237
+ async load(threadId) {
238
+ const key = this.client.getFullKey(threadId);
239
+ return this.client.download(key);
240
+ }
241
+ /**
242
+ * List all checkpoints.
243
+ */
244
+ async list(threadId) {
245
+ const items = await this.client.list(this.prefix);
246
+ // Filter by threadId if provided
247
+ const filtered = threadId
248
+ ? items.filter(item => item.key.includes(threadId))
249
+ : items;
250
+ // Download metadata for each
251
+ const metadataList = [];
252
+ for (const item of filtered) {
253
+ const checkpoint = await this.client.download(item.key);
254
+ if (checkpoint?.metadata) {
255
+ metadataList.push(checkpoint.metadata);
256
+ }
257
+ }
258
+ return metadataList.sort((a, b) => b.createdAt - a.createdAt);
259
+ }
260
+ /**
261
+ * Delete a single checkpoint.
262
+ */
263
+ async delete(checkpointId) {
264
+ // Extract threadId from checkpointId (format: {threadId}-{timestamp})
265
+ const threadId = checkpointId.split('-').slice(0, -1).join('-');
266
+ const key = this.client.getFullKey(threadId);
267
+ return this.client.delete(key);
268
+ }
269
+ /**
270
+ * Clear all checkpoints for a thread.
271
+ */
272
+ async clear(threadId) {
273
+ const key = this.client.getFullKey(threadId);
274
+ const deleted = await this.client.delete(key);
275
+ return deleted ? 1 : 0;
276
+ }
277
+ /**
278
+ * Serialize agent state to JSON-safe format.
279
+ * Strips non-serializable fields (abortSignal, tools Map).
280
+ */
281
+ serializeState(state) {
282
+ return {
283
+ messages: state.messages.map(msg => ({
284
+ role: msg.role,
285
+ content: msg.content,
286
+ tool_calls: msg.tool_calls,
287
+ tool_call_id: msg.tool_call_id,
288
+ _meta: msg._meta,
289
+ })),
290
+ stepCount: state.stepCount,
291
+ maxSteps: state.maxSteps,
292
+ done: state.done,
293
+ output: state.output,
294
+ reasoning: state.reasoning,
295
+ finishReason: state.finishReason,
296
+ usage: state.usage,
297
+ };
298
+ }
299
+ }
300
+ //# 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.0",
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",