@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.
- package/dist/ai/graph/index.d.ts +2 -0
- package/dist/ai/graph/index.d.ts.map +1 -1
- package/dist/ai/graph/index.js +4 -1
- package/dist/ai/graph/index.js.map +1 -1
- package/dist/ai/graph/index.mjs +2 -0
- package/dist/ai/graph/kodo-checkpointer.d.ts +84 -0
- package/dist/ai/graph/kodo-checkpointer.d.ts.map +1 -0
- package/dist/ai/graph/kodo-checkpointer.js +315 -0
- package/dist/ai/graph/kodo-checkpointer.js.map +1 -0
- package/dist/ai/graph/kodo-checkpointer.mjs +311 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/package.json +1 -1
package/dist/ai/graph/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/ai/graph/index.js
CHANGED
|
@@ -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"}
|
package/dist/ai/graph/index.mjs
CHANGED
|
@@ -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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;AACzC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzG,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,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,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACR,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACR,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,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;AAOjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGpG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGxG,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAG3G,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,IAAI,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrI,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGvG,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACpG,YAAY,EACR,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,yBAAyB,GAC5B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EACR,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,GACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,aAAa,EACb,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACR,UAAU,EACV,cAAc,EACd,aAAa,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACH,cAAc,EACd,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EACR,aAAa,EACb,UAAU,EACV,YAAY,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,iBAAiB,EACjB,eAAe,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,YAAY,EACR,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACR,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,GACnB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C,OAAO,EACH,SAAS,EACT,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAE1B,gBAAgB,EAChB,qBAAqB,EAErB,QAAQ,EACR,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAElB,gBAAgB,EAChB,cAAc,EACd,YAAY,EAEZ,cAAc,EACd,YAAY,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EACR,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,oBAAoB,EAEpB,oBAAoB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACH,kBAAkB,EAClB,qBAAqB,EAErB,iBAAiB,EACjB,oBAAoB,EAEpB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACR,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,uBAAuB,EACvB,cAAc,EACd,0BAA0B,EAE1B,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,EACxB,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5I,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG7G,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG9F,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGtG,OAAO,EACH,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
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.
|
|
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