@cicctencent/agent-server 0.1.2 → 0.2.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/README.md +93 -16
- package/dist/cjs/agent/agent-server.d.ts.map +1 -1
- package/dist/cjs/agent/agent-server.js +95 -43
- package/dist/cjs/agent/agent-server.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/service/agent-profile.service.d.ts +25 -2
- package/dist/cjs/service/agent-profile.service.d.ts.map +1 -1
- package/dist/cjs/service/agent-profile.service.js +18 -7
- package/dist/cjs/service/agent-profile.service.js.map +1 -1
- package/dist/cjs/service/cache.service.d.ts +70 -0
- package/dist/cjs/service/cache.service.d.ts.map +1 -0
- package/dist/cjs/service/cache.service.js +270 -0
- package/dist/cjs/service/cache.service.js.map +1 -0
- package/dist/cjs/service/engine-pool.d.ts +15 -2
- package/dist/cjs/service/engine-pool.d.ts.map +1 -1
- package/dist/cjs/service/engine-pool.js +15 -4
- package/dist/cjs/service/engine-pool.js.map +1 -1
- package/dist/cjs/service/settings.service.d.ts +7 -3
- package/dist/cjs/service/settings.service.d.ts.map +1 -1
- package/dist/cjs/service/settings.service.js +19 -14
- package/dist/cjs/service/settings.service.js.map +1 -1
- package/dist/cjs/spi/adapters.d.ts +55 -3
- package/dist/cjs/spi/adapters.d.ts.map +1 -1
- package/dist/cjs/spi/adapters.js +75 -23
- package/dist/cjs/spi/adapters.js.map +1 -1
- package/dist/cjs/spi/index.d.ts +85 -1
- package/dist/cjs/spi/index.d.ts.map +1 -1
- package/dist/cjs/spi/index.js +90 -6
- package/dist/cjs/spi/index.js.map +1 -1
- package/dist/cjs/spi/types.d.ts +47 -42
- package/dist/cjs/spi/types.d.ts.map +1 -1
- package/dist/cjs/store/app-stores.js +1 -1
- package/dist/cjs/store/app-stores.js.map +1 -1
- package/dist/cjs/types.d.ts +125 -24
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils/data-dir.d.ts.map +1 -1
- package/dist/cjs/utils/data-dir.js +8 -11
- package/dist/cjs/utils/data-dir.js.map +1 -1
- package/dist/esm/agent/agent-server.d.ts.map +1 -1
- package/dist/esm/agent/agent-server.js +98 -46
- package/dist/esm/agent/agent-server.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/service/agent-profile.service.d.ts +25 -2
- package/dist/esm/service/agent-profile.service.d.ts.map +1 -1
- package/dist/esm/service/agent-profile.service.js +18 -7
- package/dist/esm/service/agent-profile.service.js.map +1 -1
- package/dist/esm/service/cache.service.d.ts +70 -0
- package/dist/esm/service/cache.service.d.ts.map +1 -0
- package/dist/esm/service/cache.service.js +264 -0
- package/dist/esm/service/cache.service.js.map +1 -0
- package/dist/esm/service/engine-pool.d.ts +15 -2
- package/dist/esm/service/engine-pool.d.ts.map +1 -1
- package/dist/esm/service/engine-pool.js +15 -4
- package/dist/esm/service/engine-pool.js.map +1 -1
- package/dist/esm/service/settings.service.d.ts +7 -3
- package/dist/esm/service/settings.service.d.ts.map +1 -1
- package/dist/esm/service/settings.service.js +19 -14
- package/dist/esm/service/settings.service.js.map +1 -1
- package/dist/esm/spi/adapters.d.ts +55 -3
- package/dist/esm/spi/adapters.d.ts.map +1 -1
- package/dist/esm/spi/adapters.js +75 -23
- package/dist/esm/spi/adapters.js.map +1 -1
- package/dist/esm/spi/index.d.ts +85 -1
- package/dist/esm/spi/index.d.ts.map +1 -1
- package/dist/esm/spi/index.js +90 -6
- package/dist/esm/spi/index.js.map +1 -1
- package/dist/esm/spi/types.d.ts +47 -42
- package/dist/esm/spi/types.d.ts.map +1 -1
- package/dist/esm/store/app-stores.js +1 -1
- package/dist/esm/store/app-stores.js.map +1 -1
- package/dist/esm/types.d.ts +125 -24
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils/data-dir.d.ts.map +1 -1
- package/dist/esm/utils/data-dir.js +0 -3
- package/dist/esm/utils/data-dir.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
// agent-server — 统一导出
|
|
4
4
|
// ============================================================
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
8
|
-
exports.CustomSSEAdapter = exports.adaptRequest = exports.KoaRequestAdapter = exports.ExpressRequestAdapter = exports.adaptSSE = exports.NativeHttpSSEAdapter = exports.FastifySSEAdapter = exports.KoaSSEAdapter = exports.ExpressSSEAdapter = exports.createInMemoryStorage = exports.createJsonFileStorage = exports.DatabaseListStorage = exports.InMemoryListStorage = exports.InMemoryKVStorage = exports.JsonFileListStorage = exports.JsonFileKVStorage = exports.getIdCounter = exports.setIdCounter = exports.nextId = exports.getAgentProfileProvider = exports.deleteProfile = exports.updateProfile = exports.createProfile = void 0;
|
|
6
|
+
exports.WorkspaceStore = exports.FileNoteStore = exports.getToolResultStore = exports.McpServerStore = exports.JsonListStore = exports.JsonStore = exports.resetAdapters = exports.listAdapters = exports.listAdapterTypes = exports.getAdapter = exports.registerAdapter = exports.setLogTransport = exports.logEvent = exports.redactAuditEntry = exports.listAuditLogs = exports.appendAuditLog = exports.initPermissionService = exports.decidePermissionRequest = exports.findApprovedPermission = exports.listPermissionRequests = exports.createPermissionRequest = exports.clearRiskCache = exports.isLowRiskTool = exports.assessToolRisk = exports.updateSecurityPolicy = exports.getSecurityPolicy = exports.createSafetyAuditMiddleware = exports.createBuiltinTools = exports.LocalFileSystemExecutor = exports.LocalShellExecutor = exports.collectEngineOutput = exports.runAgentSSEStream = exports.initSSEResponse = exports.writeSSE = exports.CachedAgentProfileProvider = exports.CachedSettingsProvider = exports.TTLCache = exports.resetRunRegistry = exports.getRunRegistry = exports.resetEnginePool = exports.getEnginePool = exports.resetMemoryService = exports.getMemoryService = exports.MemoryService = exports.RESULT_SYNTHESIS_PROMPT = exports.DefaultPromptBuilder = exports.DefaultAgentProfileProvider = exports.DefaultChatStoreProvider = exports.DefaultSettingsProvider = exports.createAgentServer = void 0;
|
|
7
|
+
exports.getChatStoreProvider = exports.buildThreadHistory = exports.updateMessage = exports.addMessage = exports.getMessages = exports.createThread = exports.getThread = exports.getThreads = exports.getSettingsProvider = exports.resetSettings = exports.updateSettings = exports.getSettings = exports.ensureDefaultData = exports.getAppName = exports.setAppName = exports.expandEnvVars = exports.ensureProjectDataDir = exports.ensureDataDir = exports.getProjectDataPath = exports.getDataPath = exports.refreshAutomationCount = exports.refreshThreadCount = exports.deleteWorkspace = exports.updateWorkspace = exports.createWorkspace = exports.ensureDefaultWorkspace = exports.getWorkspace = exports.getWorkspaces = exports.isImageMime = exports.getMimeType = exports.resolveArtifactPath = exports.saveArtifact = exports.FileKnowledgeBase = exports.EmbeddingVectorIndex = exports.parseDocument = exports.importFromOpenAPI = exports.buildFromTemplate = exports.resolveBodyTemplate = exports.ApiBridgeClient = exports.ProcessCodeSandbox = exports.getSandboxManager = exports.LocalSandboxManager = exports.SandboxShellExecutor = exports.SandboxFileSystemExecutor = exports.LocalSandbox = exports.getAutomationRunStore = exports.AutomationRunStore = exports.getAutomationStore = exports.AutomationStore = exports.getWorkspaceStore = void 0;
|
|
8
|
+
exports.CustomSSEAdapter = exports.adaptRequest = exports.KoaRequestAdapter = exports.ExpressRequestAdapter = exports.adaptSSE = exports.NativeHttpSSEAdapter = exports.FastifySSEAdapter = exports.KoaSSEAdapter = exports.ExpressSSEAdapter = exports.createInMemoryStorage = exports.createJsonFileStorage = exports.DatabaseListStorage = exports.InMemoryListStorage = exports.InMemoryKVStorage = exports.JsonFileListStorage = exports.JsonFileKVStorage = exports.getIdCounter = exports.setIdCounter = exports.nextId = exports.getAgentProfileProvider = exports.deleteProfile = exports.updateProfile = exports.createProfile = exports.getDefaultProfile = exports.getProfile = exports.listProfiles = void 0;
|
|
9
9
|
// ---- 工厂函数 ----
|
|
10
10
|
var agent_server_ts_1 = require("./agent/agent-server.js");
|
|
11
11
|
Object.defineProperty(exports, "createAgentServer", { enumerable: true, get: function () { return agent_server_ts_1.createAgentServer; } });
|
|
@@ -30,6 +30,10 @@ Object.defineProperty(exports, "resetEnginePool", { enumerable: true, get: funct
|
|
|
30
30
|
var run_registry_ts_1 = require("./service/run-registry.js");
|
|
31
31
|
Object.defineProperty(exports, "getRunRegistry", { enumerable: true, get: function () { return run_registry_ts_1.getRunRegistry; } });
|
|
32
32
|
Object.defineProperty(exports, "resetRunRegistry", { enumerable: true, get: function () { return run_registry_ts_1.resetRunRegistry; } });
|
|
33
|
+
var cache_service_ts_1 = require("./service/cache.service.js");
|
|
34
|
+
Object.defineProperty(exports, "TTLCache", { enumerable: true, get: function () { return cache_service_ts_1.TTLCache; } });
|
|
35
|
+
Object.defineProperty(exports, "CachedSettingsProvider", { enumerable: true, get: function () { return cache_service_ts_1.CachedSettingsProvider; } });
|
|
36
|
+
Object.defineProperty(exports, "CachedAgentProfileProvider", { enumerable: true, get: function () { return cache_service_ts_1.CachedAgentProfileProvider; } });
|
|
33
37
|
// ---- SSE ----
|
|
34
38
|
var sse_handler_ts_1 = require("./sse/sse-handler.js");
|
|
35
39
|
Object.defineProperty(exports, "writeSSE", { enumerable: true, get: function () { return sse_handler_ts_1.writeSSE; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;;;;;AAE/D,iBAAiB;AACjB,2DAA4D;AAAnD,oHAAA,iBAAiB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
import type { AgentProfileEntity, AgentProfileProvider } from '../types.js';
|
|
2
|
+
/** 默认 Agent Profile 配置(应用层可通过构造函数覆盖) */
|
|
3
|
+
export interface DefaultProfileConfig {
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
icon: string;
|
|
7
|
+
color: string;
|
|
8
|
+
}
|
|
2
9
|
declare function nextId(namespace: string): number;
|
|
3
10
|
declare function setIdCounter(namespace: string, val: number): void;
|
|
4
11
|
declare function getIdCounter(namespace: string): number;
|
|
5
12
|
/**
|
|
6
13
|
* 默认 AgentProfileProvider 实现 — JSON 文件存储
|
|
14
|
+
*
|
|
15
|
+
* @param _dataDir - 数据目录(保留用于未来扩展,当前由 JsonListStore 通过 getProjectDataPath 管理)
|
|
16
|
+
* @param profileConfig - 应用层覆盖默认 Agent 的显示配置(名称、图标、颜色等)
|
|
7
17
|
*/
|
|
8
18
|
export declare class DefaultAgentProfileProvider implements AgentProfileProvider {
|
|
9
19
|
private store;
|
|
10
|
-
|
|
20
|
+
private profileConfig;
|
|
21
|
+
constructor(_dataDir?: string, profileConfig?: {
|
|
22
|
+
name?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
icon?: string;
|
|
25
|
+
color?: string;
|
|
26
|
+
basePrompt?: string;
|
|
27
|
+
});
|
|
11
28
|
private ensureDefaultProfile;
|
|
12
29
|
listProfiles(): AgentProfileEntity[];
|
|
13
30
|
getProfile(id: number): AgentProfileEntity | undefined;
|
|
@@ -16,7 +33,13 @@ export declare class DefaultAgentProfileProvider implements AgentProfileProvider
|
|
|
16
33
|
updateProfile(id: number, data: Partial<AgentProfileEntity>): AgentProfileEntity | undefined;
|
|
17
34
|
deleteProfile(id: number): boolean;
|
|
18
35
|
}
|
|
19
|
-
export declare function getAgentProfileProvider(dataDir?: string
|
|
36
|
+
export declare function getAgentProfileProvider(dataDir?: string, profileConfig?: {
|
|
37
|
+
name?: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
icon?: string;
|
|
40
|
+
color?: string;
|
|
41
|
+
basePrompt?: string;
|
|
42
|
+
}): DefaultAgentProfileProvider;
|
|
20
43
|
export declare function listProfiles(): AgentProfileEntity[];
|
|
21
44
|
export declare function getProfile(id: number): AgentProfileEntity | undefined;
|
|
22
45
|
export declare function getDefaultProfile(): AgentProfileEntity | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-profile.service.d.ts","sourceRoot":"","sources":["../../../src/service/agent-profile.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-profile.service.d.ts","sourceRoot":"","sources":["../../../src/service/agent-profile.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAK5E,wCAAwC;AACxC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAYD,iBAAS,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGzC;AAED,iBAAS,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,iBAAS,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,qBAAa,2BAA4B,YAAW,oBAAoB;IACtE,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,aAAa,CAAuB;gBAEhC,QAAQ,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAM1I,OAAO,CAAC,oBAAoB;IAuB5B,YAAY,IAAI,kBAAkB,EAAE;IAIpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAItD,iBAAiB,IAAI,kBAAkB,GAAG,SAAS;IAKnD,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB;IAgCpE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,SAAS;IAI5F,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAKnC;AAMD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,2BAA2B,CAGlM;AAGD,wBAAgB,YAAY,IAAI,kBAAkB,EAAE,CAEnD;AACD,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAErE;AACD,wBAAgB,iBAAiB,IAAI,kBAAkB,GAAG,SAAS,CAElE;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAEnF;AACD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,SAAS,CAE3G;AACD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -17,6 +17,12 @@ exports.getIdCounter = getIdCounter;
|
|
|
17
17
|
const index_ts_1 = require("../store/index.js");
|
|
18
18
|
const agent_core_1 = require("@cicctencent/agent-core");
|
|
19
19
|
const DEFAULT_BASE_PROMPT = 'You are a helpful AI assistant with access to tools. Use tools when needed to accomplish tasks. Always explain your actions clearly. Respond in the same language as the user.';
|
|
20
|
+
const DEFAULT_PROFILE_CONFIG = {
|
|
21
|
+
name: 'Default Agent',
|
|
22
|
+
description: 'Built-in default agent with tool-calling and task delegation support',
|
|
23
|
+
icon: '🤖',
|
|
24
|
+
color: '#6B5CE7',
|
|
25
|
+
};
|
|
20
26
|
// 自增 ID 辅助
|
|
21
27
|
let _idCounters = {};
|
|
22
28
|
function nextId(namespace) {
|
|
@@ -32,11 +38,16 @@ function getIdCounter(namespace) {
|
|
|
32
38
|
}
|
|
33
39
|
/**
|
|
34
40
|
* 默认 AgentProfileProvider 实现 — JSON 文件存储
|
|
41
|
+
*
|
|
42
|
+
* @param _dataDir - 数据目录(保留用于未来扩展,当前由 JsonListStore 通过 getProjectDataPath 管理)
|
|
43
|
+
* @param profileConfig - 应用层覆盖默认 Agent 的显示配置(名称、图标、颜色等)
|
|
35
44
|
*/
|
|
36
45
|
class DefaultAgentProfileProvider {
|
|
37
46
|
store;
|
|
38
|
-
|
|
47
|
+
profileConfig;
|
|
48
|
+
constructor(_dataDir, profileConfig) {
|
|
39
49
|
this.store = new index_ts_1.JsonListStore('agent-profiles.json', { projectLocal: true, ttl: 5 * 60 * 1000 });
|
|
50
|
+
this.profileConfig = { ...DEFAULT_PROFILE_CONFIG, ...profileConfig };
|
|
40
51
|
this.ensureDefaultProfile();
|
|
41
52
|
}
|
|
42
53
|
ensureDefaultProfile() {
|
|
@@ -44,10 +55,10 @@ class DefaultAgentProfileProvider {
|
|
|
44
55
|
return;
|
|
45
56
|
this.store.add({
|
|
46
57
|
id: nextId('agent-profile'),
|
|
47
|
-
name:
|
|
48
|
-
description:
|
|
49
|
-
icon:
|
|
50
|
-
color:
|
|
58
|
+
name: this.profileConfig.name,
|
|
59
|
+
description: this.profileConfig.description,
|
|
60
|
+
icon: this.profileConfig.icon,
|
|
61
|
+
color: this.profileConfig.color,
|
|
51
62
|
basePrompt: DEFAULT_BASE_PROMPT,
|
|
52
63
|
maxIterations: 15,
|
|
53
64
|
maxMessages: 50,
|
|
@@ -116,9 +127,9 @@ class DefaultAgentProfileProvider {
|
|
|
116
127
|
exports.DefaultAgentProfileProvider = DefaultAgentProfileProvider;
|
|
117
128
|
// ---- 全局单例 ----
|
|
118
129
|
let globalProvider = null;
|
|
119
|
-
function getAgentProfileProvider(dataDir) {
|
|
130
|
+
function getAgentProfileProvider(dataDir, profileConfig) {
|
|
120
131
|
if (!globalProvider)
|
|
121
|
-
globalProvider = new DefaultAgentProfileProvider(dataDir);
|
|
132
|
+
globalProvider = new DefaultAgentProfileProvider(dataDir, profileConfig);
|
|
122
133
|
return globalProvider;
|
|
123
134
|
}
|
|
124
135
|
// 向后兼容的导出
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-profile.service.js","sourceRoot":"","sources":["../../../src/service/agent-profile.service.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mDAAmD;AACnD,+DAA+D;;;
|
|
1
|
+
{"version":3,"file":"agent-profile.service.js","sourceRoot":"","sources":["../../../src/service/agent-profile.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { AgentProfileProvider, SettingsProvider, AgentProfileEntity, SettingsEntity, TenantContext } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 通用 TTL 缓存。
|
|
4
|
+
*
|
|
5
|
+
* - `ttl > 0`:启用缓存,过期后自动失效
|
|
6
|
+
* - `ttl === 0`:禁用缓存,get() 永远返回 null(每次直接查 Provider)
|
|
7
|
+
*/
|
|
8
|
+
export declare class TTLCache<T> {
|
|
9
|
+
private cache;
|
|
10
|
+
private ttl;
|
|
11
|
+
constructor(ttlMs?: number);
|
|
12
|
+
/** 是否启用缓存 */
|
|
13
|
+
get enabled(): boolean;
|
|
14
|
+
/** 更新 TTL(不影响已缓存条目的过期时间) */
|
|
15
|
+
setTTL(ttlMs: number): void;
|
|
16
|
+
/** 获取缓存值(未命中或过期返回 null) */
|
|
17
|
+
get(key: string): T | null;
|
|
18
|
+
/** 设置缓存值 */
|
|
19
|
+
set(key: string, value: T): void;
|
|
20
|
+
/** 清除指定 key 的缓存 */
|
|
21
|
+
invalidate(key?: string): void;
|
|
22
|
+
/** 清除所有缓存 */
|
|
23
|
+
clear(): void;
|
|
24
|
+
/** 清除已过期的条目 */
|
|
25
|
+
purgeExpired(): void;
|
|
26
|
+
/** 缓存条目数量 */
|
|
27
|
+
get size(): number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 包装 SettingsProvider,增加 TTL 缓存。
|
|
31
|
+
*
|
|
32
|
+
* 多进程部署时,每个进程独立缓存 Settings,TTL 到期后重新从底层 Provider 加载。
|
|
33
|
+
* 主动失效通过 `invalidate()` 清除缓存,上层可通过 `CacheInvalidationNotifier` 跨进程通知。
|
|
34
|
+
*/
|
|
35
|
+
export declare class CachedSettingsProvider implements SettingsProvider {
|
|
36
|
+
private cache;
|
|
37
|
+
private delegate;
|
|
38
|
+
constructor(delegate: SettingsProvider, ttlMs?: number);
|
|
39
|
+
getSettings(tenant?: TenantContext): SettingsEntity;
|
|
40
|
+
updateSettings(updates: Partial<SettingsEntity>, tenant?: TenantContext): SettingsEntity;
|
|
41
|
+
resetSettings?(tenant?: TenantContext): SettingsEntity;
|
|
42
|
+
/** 清除缓存 */
|
|
43
|
+
invalidate(): void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 包装 AgentProfileProvider,增加 TTL 缓存。
|
|
47
|
+
*
|
|
48
|
+
* 多进程部署时,每个进程独立缓存 Profile,TTL 到期后重新从底层 Provider 加载。
|
|
49
|
+
* 主动失效通过 `invalidate(profileId?)` 清除指定或全部 Profile 缓存。
|
|
50
|
+
*/
|
|
51
|
+
export declare class CachedAgentProfileProvider implements AgentProfileProvider {
|
|
52
|
+
private cache;
|
|
53
|
+
private listCache;
|
|
54
|
+
private defaultCache;
|
|
55
|
+
private delegate;
|
|
56
|
+
constructor(delegate: AgentProfileProvider, ttlMs?: number);
|
|
57
|
+
private tenantKey;
|
|
58
|
+
listProfiles(tenant?: TenantContext): AgentProfileEntity[] | Promise<AgentProfileEntity[]>;
|
|
59
|
+
getProfile(id: number, tenant?: TenantContext): AgentProfileEntity | undefined | Promise<AgentProfileEntity | undefined>;
|
|
60
|
+
getDefaultProfile(tenant?: TenantContext): AgentProfileEntity | undefined | Promise<AgentProfileEntity | undefined>;
|
|
61
|
+
createProfile(data: Partial<AgentProfileEntity>, tenant?: TenantContext): AgentProfileEntity | Promise<AgentProfileEntity>;
|
|
62
|
+
updateProfile(id: number, data: Partial<AgentProfileEntity>, tenant?: TenantContext): AgentProfileEntity | undefined | Promise<AgentProfileEntity | undefined>;
|
|
63
|
+
deleteProfile(id: number, tenant?: TenantContext): boolean | Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* 清除缓存。
|
|
66
|
+
* @param profileId 指定 profileId 时仅清除该 profile;不指定时清除全部
|
|
67
|
+
*/
|
|
68
|
+
invalidate(profileId?: number): void;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=cache.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.service.d.ts","sourceRoot":"","sources":["../../../src/service/cache.service.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AAYrB;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,GAAG,CAAS;gBAER,KAAK,GAAE,MAAe;IAIlC,aAAa;IACb,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,4BAA4B;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,2BAA2B;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAW1B,YAAY;IACZ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKhC,mBAAmB;IACnB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ9B,aAAa;IACb,KAAK,IAAI,IAAI;IAIb,eAAe;IACf,YAAY,IAAI,IAAI;IASpB,aAAa;IACb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAMD;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,QAAQ,EAAE,gBAAgB,EAAE,KAAK,GAAE,MAAe;IAK9D,WAAW,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc;IAenD,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc;IAWxF,aAAa,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc;IActD,WAAW;IACX,UAAU,IAAI,IAAI;CAGnB;AAMD;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,QAAQ,EAAE,oBAAoB,EAAE,KAAK,GAAE,MAAe;IAOlE,OAAO,CAAC,SAAS;IAIjB,YAAY,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmB1F,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAgBxH,iBAAiB,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAgBnH,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS1H,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAiB9J,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7E;;;OAGG;IACH,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;CASrC"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// CacheService — TTL 缓存包装器(多进程/多实例场景)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// 问题:上层 Web 项目多进程部署时,每次 getSettings() / getProfile() 都查 DB 会产生大量重复查询。
|
|
7
|
+
// 解决:在 Provider 之上加一层 TTL 缓存,减少 DB 压力;同时支持主动失效。
|
|
8
|
+
//
|
|
9
|
+
// 缓存策略:
|
|
10
|
+
// - TTL 到期自动过期,下次请求重新从底层 Provider 加载
|
|
11
|
+
// - 主动失效通过 invalidate() 清除指定 key 或全部
|
|
12
|
+
// - 跨进程失效通过 CacheInvalidationNotifier 实现(如 Redis pub/sub)
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.CachedAgentProfileProvider = exports.CachedSettingsProvider = exports.TTLCache = void 0;
|
|
15
|
+
/**
|
|
16
|
+
* 通用 TTL 缓存。
|
|
17
|
+
*
|
|
18
|
+
* - `ttl > 0`:启用缓存,过期后自动失效
|
|
19
|
+
* - `ttl === 0`:禁用缓存,get() 永远返回 null(每次直接查 Provider)
|
|
20
|
+
*/
|
|
21
|
+
class TTLCache {
|
|
22
|
+
cache = new Map();
|
|
23
|
+
ttl;
|
|
24
|
+
constructor(ttlMs = 60_000) {
|
|
25
|
+
this.ttl = ttlMs;
|
|
26
|
+
}
|
|
27
|
+
/** 是否启用缓存 */
|
|
28
|
+
get enabled() {
|
|
29
|
+
return this.ttl > 0;
|
|
30
|
+
}
|
|
31
|
+
/** 更新 TTL(不影响已缓存条目的过期时间) */
|
|
32
|
+
setTTL(ttlMs) {
|
|
33
|
+
this.ttl = ttlMs;
|
|
34
|
+
}
|
|
35
|
+
/** 获取缓存值(未命中或过期返回 null) */
|
|
36
|
+
get(key) {
|
|
37
|
+
if (!this.enabled)
|
|
38
|
+
return null;
|
|
39
|
+
const entry = this.cache.get(key);
|
|
40
|
+
if (!entry)
|
|
41
|
+
return null;
|
|
42
|
+
if (Date.now() > entry.expiresAt) {
|
|
43
|
+
this.cache.delete(key);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return entry.value;
|
|
47
|
+
}
|
|
48
|
+
/** 设置缓存值 */
|
|
49
|
+
set(key, value) {
|
|
50
|
+
if (!this.enabled)
|
|
51
|
+
return;
|
|
52
|
+
this.cache.set(key, { value, expiresAt: Date.now() + this.ttl });
|
|
53
|
+
}
|
|
54
|
+
/** 清除指定 key 的缓存 */
|
|
55
|
+
invalidate(key) {
|
|
56
|
+
if (key !== undefined) {
|
|
57
|
+
this.cache.delete(key);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.cache.clear();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** 清除所有缓存 */
|
|
64
|
+
clear() {
|
|
65
|
+
this.cache.clear();
|
|
66
|
+
}
|
|
67
|
+
/** 清除已过期的条目 */
|
|
68
|
+
purgeExpired() {
|
|
69
|
+
const now = Date.now();
|
|
70
|
+
for (const [key, entry] of this.cache) {
|
|
71
|
+
if (now > entry.expiresAt) {
|
|
72
|
+
this.cache.delete(key);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** 缓存条目数量 */
|
|
77
|
+
get size() {
|
|
78
|
+
return this.cache.size;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.TTLCache = TTLCache;
|
|
82
|
+
// ============================================================
|
|
83
|
+
// CachedSettingsProvider — Settings 缓存包装器
|
|
84
|
+
// ============================================================
|
|
85
|
+
/**
|
|
86
|
+
* 包装 SettingsProvider,增加 TTL 缓存。
|
|
87
|
+
*
|
|
88
|
+
* 多进程部署时,每个进程独立缓存 Settings,TTL 到期后重新从底层 Provider 加载。
|
|
89
|
+
* 主动失效通过 `invalidate()` 清除缓存,上层可通过 `CacheInvalidationNotifier` 跨进程通知。
|
|
90
|
+
*/
|
|
91
|
+
class CachedSettingsProvider {
|
|
92
|
+
cache;
|
|
93
|
+
delegate;
|
|
94
|
+
constructor(delegate, ttlMs = 60_000) {
|
|
95
|
+
this.delegate = delegate;
|
|
96
|
+
this.cache = new TTLCache(ttlMs);
|
|
97
|
+
}
|
|
98
|
+
getSettings(tenant) {
|
|
99
|
+
const cacheKey = tenant ? `settings:${tenant.tenantId || tenant.userId || ''}` : 'settings';
|
|
100
|
+
const cached = this.cache.get(cacheKey);
|
|
101
|
+
if (cached)
|
|
102
|
+
return cached;
|
|
103
|
+
const value = this.delegate.getSettings(tenant);
|
|
104
|
+
// 支持异步 Provider:如果是 Promise,不能同步返回
|
|
105
|
+
if (value instanceof Promise) {
|
|
106
|
+
// 异步模式下不缓存 Promise,直接返回让调用方 await
|
|
107
|
+
// 缓存将在 Promise 链中填充
|
|
108
|
+
return value.then(v => { this.cache.set(cacheKey, v); return v; });
|
|
109
|
+
}
|
|
110
|
+
this.cache.set(cacheKey, value);
|
|
111
|
+
return value;
|
|
112
|
+
}
|
|
113
|
+
updateSettings(updates, tenant) {
|
|
114
|
+
const cacheKey = tenant ? `settings:${tenant.tenantId || tenant.userId || ''}` : 'settings';
|
|
115
|
+
const value = this.delegate.updateSettings(updates, tenant);
|
|
116
|
+
if (value instanceof Promise) {
|
|
117
|
+
return value.then(v => { this.cache.set(cacheKey, v); return v; });
|
|
118
|
+
}
|
|
119
|
+
// 更新后立即刷新缓存
|
|
120
|
+
this.cache.set(cacheKey, value);
|
|
121
|
+
return value;
|
|
122
|
+
}
|
|
123
|
+
resetSettings(tenant) {
|
|
124
|
+
const cacheKey = tenant ? `settings:${tenant.tenantId || tenant.userId || ''}` : 'settings';
|
|
125
|
+
if (this.delegate.resetSettings) {
|
|
126
|
+
const value = this.delegate.resetSettings(tenant);
|
|
127
|
+
if (value instanceof Promise) {
|
|
128
|
+
return value.then(v => { this.cache.set(cacheKey, v); return v; });
|
|
129
|
+
}
|
|
130
|
+
this.cache.set(cacheKey, value);
|
|
131
|
+
return value;
|
|
132
|
+
}
|
|
133
|
+
this.cache.invalidate(cacheKey);
|
|
134
|
+
return this.getSettings(tenant);
|
|
135
|
+
}
|
|
136
|
+
/** 清除缓存 */
|
|
137
|
+
invalidate() {
|
|
138
|
+
this.cache.invalidate('settings');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.CachedSettingsProvider = CachedSettingsProvider;
|
|
142
|
+
// ============================================================
|
|
143
|
+
// CachedAgentProfileProvider — Profile 缓存包装器
|
|
144
|
+
// ============================================================
|
|
145
|
+
/**
|
|
146
|
+
* 包装 AgentProfileProvider,增加 TTL 缓存。
|
|
147
|
+
*
|
|
148
|
+
* 多进程部署时,每个进程独立缓存 Profile,TTL 到期后重新从底层 Provider 加载。
|
|
149
|
+
* 主动失效通过 `invalidate(profileId?)` 清除指定或全部 Profile 缓存。
|
|
150
|
+
*/
|
|
151
|
+
class CachedAgentProfileProvider {
|
|
152
|
+
cache;
|
|
153
|
+
listCache;
|
|
154
|
+
defaultCache;
|
|
155
|
+
delegate;
|
|
156
|
+
constructor(delegate, ttlMs = 60_000) {
|
|
157
|
+
this.delegate = delegate;
|
|
158
|
+
this.cache = new TTLCache(ttlMs);
|
|
159
|
+
this.listCache = new TTLCache(ttlMs);
|
|
160
|
+
this.defaultCache = new TTLCache(ttlMs);
|
|
161
|
+
}
|
|
162
|
+
tenantKey(tenant) {
|
|
163
|
+
return tenant ? String(tenant.tenantId || tenant.userId || '') : '';
|
|
164
|
+
}
|
|
165
|
+
listProfiles(tenant) {
|
|
166
|
+
const tk = this.tenantKey(tenant);
|
|
167
|
+
const listKey = tk ? `list:${tk}` : 'list';
|
|
168
|
+
const cached = this.listCache.get(listKey);
|
|
169
|
+
if (cached)
|
|
170
|
+
return cached;
|
|
171
|
+
const result = this.delegate.listProfiles(tenant);
|
|
172
|
+
if (result instanceof Promise) {
|
|
173
|
+
return result.then(value => {
|
|
174
|
+
this.listCache.set(listKey, value);
|
|
175
|
+
// 同时缓存每个 profile
|
|
176
|
+
for (const p of value)
|
|
177
|
+
this.cache.set(`${tk}:${p.id}`, p);
|
|
178
|
+
return value;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
this.listCache.set(listKey, result);
|
|
182
|
+
for (const p of result)
|
|
183
|
+
this.cache.set(`${tk}:${p.id}`, p);
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
getProfile(id, tenant) {
|
|
187
|
+
const tk = this.tenantKey(tenant);
|
|
188
|
+
const cacheKey = `${tk}:${id}`;
|
|
189
|
+
const cached = this.cache.get(cacheKey);
|
|
190
|
+
if (cached)
|
|
191
|
+
return cached;
|
|
192
|
+
const result = this.delegate.getProfile(id, tenant);
|
|
193
|
+
if (result instanceof Promise) {
|
|
194
|
+
return result.then(value => {
|
|
195
|
+
if (value)
|
|
196
|
+
this.cache.set(cacheKey, value);
|
|
197
|
+
return value;
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
if (result)
|
|
201
|
+
this.cache.set(cacheKey, result);
|
|
202
|
+
return result;
|
|
203
|
+
}
|
|
204
|
+
getDefaultProfile(tenant) {
|
|
205
|
+
const tk = this.tenantKey(tenant);
|
|
206
|
+
const defaultKey = tk ? `default:${tk}` : 'default';
|
|
207
|
+
const cached = this.defaultCache.get(defaultKey);
|
|
208
|
+
if (cached !== null)
|
|
209
|
+
return cached;
|
|
210
|
+
const result = this.delegate.getDefaultProfile(tenant);
|
|
211
|
+
if (result instanceof Promise) {
|
|
212
|
+
return result.then(value => {
|
|
213
|
+
this.defaultCache.set(defaultKey, value);
|
|
214
|
+
return value;
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
this.defaultCache.set(defaultKey, result);
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
createProfile(data, tenant) {
|
|
221
|
+
const result = this.delegate.createProfile(data, tenant);
|
|
222
|
+
// 创建后清除列表缓存和默认缓存
|
|
223
|
+
const tk = this.tenantKey(tenant);
|
|
224
|
+
this.listCache.invalidate(tk ? `list:${tk}` : 'list');
|
|
225
|
+
this.defaultCache.invalidate(tk ? `default:${tk}` : 'default');
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
updateProfile(id, data, tenant) {
|
|
229
|
+
const tk = this.tenantKey(tenant);
|
|
230
|
+
const cacheKey = `${tk}:${id}`;
|
|
231
|
+
const result = this.delegate.updateProfile(id, data, tenant);
|
|
232
|
+
// 更新后清除该 profile 缓存 + 列表缓存
|
|
233
|
+
this.cache.invalidate(cacheKey);
|
|
234
|
+
this.listCache.invalidate(tk ? `list:${tk}` : 'list');
|
|
235
|
+
if (result instanceof Promise) {
|
|
236
|
+
return result.then(value => {
|
|
237
|
+
if (value)
|
|
238
|
+
this.cache.set(cacheKey, value);
|
|
239
|
+
return value;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
if (result)
|
|
243
|
+
this.cache.set(cacheKey, result);
|
|
244
|
+
return result;
|
|
245
|
+
}
|
|
246
|
+
deleteProfile(id, tenant) {
|
|
247
|
+
const tk = this.tenantKey(tenant);
|
|
248
|
+
const result = this.delegate.deleteProfile(id, tenant);
|
|
249
|
+
this.cache.invalidate(`${tk}:${id}`);
|
|
250
|
+
this.listCache.invalidate(tk ? `list:${tk}` : 'list');
|
|
251
|
+
this.defaultCache.invalidate(tk ? `default:${tk}` : 'default');
|
|
252
|
+
return result;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* 清除缓存。
|
|
256
|
+
* @param profileId 指定 profileId 时仅清除该 profile;不指定时清除全部
|
|
257
|
+
*/
|
|
258
|
+
invalidate(profileId) {
|
|
259
|
+
if (profileId !== undefined) {
|
|
260
|
+
this.cache.invalidate(`profile:${profileId}`);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this.cache.clear();
|
|
264
|
+
this.listCache.clear();
|
|
265
|
+
this.defaultCache.clear();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
exports.CachedAgentProfileProvider = CachedAgentProfileProvider;
|
|
270
|
+
//# sourceMappingURL=cache.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.service.js","sourceRoot":"","sources":["../../../src/service/cache.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { EnginePool } from '@cicctencent/agent-core';
|
|
2
2
|
export { EnginePool } from '@cicctencent/agent-core';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/** EnginePool 初始化配置 */
|
|
4
|
+
export interface EnginePoolConfig {
|
|
5
|
+
/** TTL(ms),默认 5 分钟 */
|
|
6
|
+
ttl?: number;
|
|
7
|
+
/** 最大缓存数量,默认 10 */
|
|
8
|
+
maxSize?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 获取全局 Engine 池单例。
|
|
12
|
+
*
|
|
13
|
+
* 首次调用时按 config 创建;后续调用忽略 config(已创建的池不会被覆盖)。
|
|
14
|
+
* 如需重新创建,请先调用 `resetEnginePool()`。
|
|
15
|
+
*/
|
|
16
|
+
export declare function getEnginePool(config?: EnginePoolConfig): EnginePool;
|
|
17
|
+
/** 重置全局池(测试用 / 配置变更后重建) */
|
|
5
18
|
export declare function resetEnginePool(): void;
|
|
6
19
|
//# sourceMappingURL=engine-pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-pool.d.ts","sourceRoot":"","sources":["../../../src/service/engine-pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine-pool.d.ts","sourceRoot":"","sources":["../../../src/service/engine-pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,uBAAuB;AACvB,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAOnE;AAED,2BAA2B;AAC3B,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
|
|
@@ -11,14 +11,25 @@ var agent_core_2 = require("@cicctencent/agent-core");
|
|
|
11
11
|
Object.defineProperty(exports, "EnginePool", { enumerable: true, get: function () { return agent_core_2.EnginePool; } });
|
|
12
12
|
/** 全局 Engine 池单例 */
|
|
13
13
|
let globalPool = null;
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* 获取全局 Engine 池单例。
|
|
16
|
+
*
|
|
17
|
+
* 首次调用时按 config 创建;后续调用忽略 config(已创建的池不会被覆盖)。
|
|
18
|
+
* 如需重新创建,请先调用 `resetEnginePool()`。
|
|
19
|
+
*/
|
|
20
|
+
function getEnginePool(config) {
|
|
15
21
|
if (!globalPool) {
|
|
16
|
-
|
|
22
|
+
const ttl = config?.ttl ?? 5 * 60_000;
|
|
23
|
+
const maxSize = config?.maxSize ?? 10;
|
|
24
|
+
globalPool = new agent_core_1.EnginePool(ttl, maxSize);
|
|
17
25
|
}
|
|
18
26
|
return globalPool;
|
|
19
27
|
}
|
|
20
|
-
/**
|
|
28
|
+
/** 重置全局池(测试用 / 配置变更后重建) */
|
|
21
29
|
function resetEnginePool() {
|
|
22
|
-
globalPool
|
|
30
|
+
if (globalPool) {
|
|
31
|
+
globalPool.clear();
|
|
32
|
+
globalPool = null;
|
|
33
|
+
}
|
|
23
34
|
}
|
|
24
35
|
//# sourceMappingURL=engine-pool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-pool.js","sourceRoot":"","sources":["../../../src/service/engine-pool.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gDAAgD;AAChD,+DAA+D;;;
|
|
1
|
+
{"version":3,"file":"engine-pool.js","sourceRoot":"","sources":["../../../src/service/engine-pool.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gDAAgD;AAChD,+DAA+D;;;AAuB/D,sCAOC;AAGD,0CAKC;AApCD,wDAAqD;AAErD,sDAAqD;AAA5C,wGAAA,UAAU,OAAA;AAUnB,oBAAoB;AACpB,IAAI,UAAU,GAAsB,IAAI,CAAC;AAEzC;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,MAAyB;IACrD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QACtC,UAAU,GAAG,IAAI,uBAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2BAA2B;AAC3B,SAAgB,eAAe;IAC7B,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;AACH,CAAC"}
|