@aigne/core 1.15.0 → 1.17.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.
- package/CHANGELOG.md +22 -0
- package/README.md +9 -7
- package/README.zh.md +9 -7
- package/lib/cjs/agents/agent.d.ts +168 -29
- package/lib/cjs/agents/agent.js +152 -56
- package/lib/cjs/agents/ai-agent.d.ts +7 -7
- package/lib/cjs/agents/ai-agent.js +19 -15
- package/lib/{esm/models → cjs/agents}/chat-model.d.ts +29 -19
- package/lib/cjs/{models → agents}/chat-model.js +56 -15
- package/lib/cjs/agents/guide-rail-agent.d.ts +62 -0
- package/lib/cjs/agents/guide-rail-agent.js +14 -0
- package/lib/cjs/agents/mcp-agent.d.ts +3 -4
- package/lib/cjs/agents/mcp-agent.js +11 -11
- package/lib/cjs/agents/team-agent.d.ts +7 -8
- package/lib/cjs/agents/team-agent.js +10 -10
- package/lib/cjs/agents/user-agent.d.ts +4 -4
- package/lib/cjs/agents/user-agent.js +10 -10
- package/lib/cjs/aigne/aigne.d.ts +13 -11
- package/lib/cjs/aigne/aigne.js +7 -6
- package/lib/cjs/aigne/context.d.ts +19 -8
- package/lib/cjs/aigne/context.js +27 -7
- package/lib/cjs/index.d.ts +2 -1
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/loader/agent-yaml.d.ts +2 -2
- package/lib/cjs/loader/index.d.ts +18 -11
- package/lib/cjs/loader/index.js +8 -27
- package/lib/cjs/memory/default-memory/default-memory-storage/index.d.ts +30 -0
- package/lib/cjs/memory/default-memory/default-memory-storage/index.js +69 -0
- package/lib/cjs/memory/default-memory/default-memory-storage/migrate.d.ts +7 -0
- package/lib/cjs/memory/default-memory/default-memory-storage/migrate.js +53 -0
- package/lib/cjs/memory/default-memory/default-memory-storage/migrations/20250523165801-init.d.ts +7 -0
- package/lib/cjs/memory/default-memory/default-memory-storage/migrations/20250523165801-init.js +33 -0
- package/lib/cjs/memory/default-memory/default-memory-storage/models/memory.d.ts +10 -0
- package/lib/cjs/memory/default-memory/default-memory-storage/models/memory.js +32 -0
- package/lib/cjs/memory/default-memory/index.d.ts +10 -0
- package/lib/cjs/memory/{default-memory.js → default-memory/index.js} +16 -25
- package/lib/cjs/memory/default-memory/storage.d.ts +13 -0
- package/lib/cjs/memory/default-memory/storage.js +6 -0
- package/lib/cjs/memory/memory.d.ts +3 -2
- package/lib/cjs/memory/memory.js +1 -1
- package/lib/cjs/memory/retriever.d.ts +2 -2
- package/lib/cjs/prompt/prompt-builder.d.ts +10 -4
- package/lib/cjs/prompt/prompt-builder.js +4 -4
- package/lib/cjs/prompt/template.d.ts +3 -3
- package/lib/cjs/utils/json-schema.js +1 -1
- package/lib/cjs/utils/logger.d.ts +33 -8
- package/lib/cjs/utils/logger.js +63 -5
- package/lib/cjs/utils/model-utils.d.ts +1 -1
- package/lib/cjs/utils/stream-utils.d.ts +3 -1
- package/lib/cjs/utils/stream-utils.js +31 -1
- package/lib/cjs/utils/type-utils.d.ts +7 -2
- package/lib/dts/agents/agent.d.ts +168 -29
- package/lib/dts/agents/ai-agent.d.ts +7 -7
- package/lib/{cjs/models → dts/agents}/chat-model.d.ts +29 -19
- package/lib/dts/agents/guide-rail-agent.d.ts +62 -0
- package/lib/dts/agents/mcp-agent.d.ts +3 -4
- package/lib/dts/agents/team-agent.d.ts +7 -8
- package/lib/dts/agents/user-agent.d.ts +4 -4
- package/lib/dts/aigne/aigne.d.ts +13 -11
- package/lib/dts/aigne/context.d.ts +19 -8
- package/lib/dts/index.d.ts +2 -1
- package/lib/dts/loader/agent-yaml.d.ts +2 -2
- package/lib/dts/loader/index.d.ts +18 -11
- package/lib/dts/memory/default-memory/default-memory-storage/index.d.ts +30 -0
- package/lib/dts/memory/default-memory/default-memory-storage/migrate.d.ts +7 -0
- package/lib/dts/memory/default-memory/default-memory-storage/migrations/20250523165801-init.d.ts +7 -0
- package/lib/dts/memory/default-memory/default-memory-storage/models/memory.d.ts +10 -0
- package/lib/dts/memory/default-memory/index.d.ts +10 -0
- package/lib/dts/memory/default-memory/storage.d.ts +13 -0
- package/lib/dts/memory/memory.d.ts +3 -2
- package/lib/dts/memory/retriever.d.ts +2 -2
- package/lib/dts/prompt/prompt-builder.d.ts +10 -4
- package/lib/dts/prompt/template.d.ts +3 -3
- package/lib/dts/utils/logger.d.ts +33 -8
- package/lib/dts/utils/model-utils.d.ts +1 -1
- package/lib/dts/utils/stream-utils.d.ts +3 -1
- package/lib/dts/utils/type-utils.d.ts +7 -2
- package/lib/esm/agents/agent.d.ts +168 -29
- package/lib/esm/agents/agent.js +152 -56
- package/lib/esm/agents/ai-agent.d.ts +7 -7
- package/lib/esm/agents/ai-agent.js +18 -14
- package/lib/{dts/models → esm/agents}/chat-model.d.ts +29 -19
- package/lib/esm/{models → agents}/chat-model.js +56 -15
- package/lib/esm/agents/guide-rail-agent.d.ts +62 -0
- package/lib/esm/agents/guide-rail-agent.js +11 -0
- package/lib/esm/agents/mcp-agent.d.ts +3 -4
- package/lib/esm/agents/mcp-agent.js +11 -11
- package/lib/esm/agents/team-agent.d.ts +7 -8
- package/lib/esm/agents/team-agent.js +10 -10
- package/lib/esm/agents/user-agent.d.ts +4 -4
- package/lib/esm/agents/user-agent.js +10 -10
- package/lib/esm/aigne/aigne.d.ts +13 -11
- package/lib/esm/aigne/aigne.js +7 -6
- package/lib/esm/aigne/context.d.ts +19 -8
- package/lib/esm/aigne/context.js +28 -8
- package/lib/esm/index.d.ts +2 -1
- package/lib/esm/index.js +2 -1
- package/lib/esm/loader/agent-yaml.d.ts +2 -2
- package/lib/esm/loader/index.d.ts +18 -11
- package/lib/esm/loader/index.js +8 -27
- package/lib/esm/memory/default-memory/default-memory-storage/index.d.ts +30 -0
- package/lib/esm/memory/default-memory/default-memory-storage/index.js +64 -0
- package/lib/esm/memory/default-memory/default-memory-storage/migrate.d.ts +7 -0
- package/lib/esm/memory/default-memory/default-memory-storage/migrate.js +16 -0
- package/lib/esm/memory/default-memory/default-memory-storage/migrations/20250523165801-init.d.ts +7 -0
- package/lib/esm/memory/default-memory/default-memory-storage/migrations/20250523165801-init.js +28 -0
- package/lib/esm/memory/default-memory/default-memory-storage/models/memory.d.ts +10 -0
- package/lib/esm/memory/default-memory/default-memory-storage/models/memory.js +29 -0
- package/lib/esm/memory/default-memory/index.d.ts +10 -0
- package/lib/esm/memory/{default-memory.js → default-memory/index.js} +15 -24
- package/lib/esm/memory/default-memory/storage.d.ts +13 -0
- package/lib/esm/memory/default-memory/storage.js +2 -0
- package/lib/esm/memory/memory.d.ts +3 -2
- package/lib/esm/memory/memory.js +2 -2
- package/lib/esm/memory/retriever.d.ts +2 -2
- package/lib/esm/prompt/prompt-builder.d.ts +10 -4
- package/lib/esm/prompt/prompt-builder.js +4 -4
- package/lib/esm/prompt/template.d.ts +3 -3
- package/lib/esm/utils/json-schema.js +1 -1
- package/lib/esm/utils/logger.d.ts +33 -8
- package/lib/esm/utils/logger.js +61 -4
- package/lib/esm/utils/model-utils.d.ts +1 -1
- package/lib/esm/utils/stream-utils.d.ts +3 -1
- package/lib/esm/utils/stream-utils.js +29 -1
- package/lib/esm/utils/type-utils.d.ts +7 -2
- package/package.json +4 -20
- package/lib/cjs/client/client.d.ts +0 -97
- package/lib/cjs/client/client.js +0 -87
- package/lib/cjs/client/index.d.ts +0 -1
- package/lib/cjs/client/index.js +0 -17
- package/lib/cjs/memory/default-memory.d.ts +0 -16
- package/lib/cjs/models/bedrock-chat-model.d.ts +0 -79
- package/lib/cjs/models/bedrock-chat-model.js +0 -303
- package/lib/cjs/models/claude-chat-model.d.ts +0 -114
- package/lib/cjs/models/claude-chat-model.js +0 -317
- package/lib/cjs/models/deepseek-chat-model.d.ts +0 -23
- package/lib/cjs/models/deepseek-chat-model.js +0 -35
- package/lib/cjs/models/gemini-chat-model.d.ts +0 -23
- package/lib/cjs/models/gemini-chat-model.js +0 -35
- package/lib/cjs/models/ollama-chat-model.d.ts +0 -22
- package/lib/cjs/models/ollama-chat-model.js +0 -34
- package/lib/cjs/models/open-router-chat-model.d.ts +0 -22
- package/lib/cjs/models/open-router-chat-model.js +0 -34
- package/lib/cjs/models/openai-chat-model.d.ts +0 -166
- package/lib/cjs/models/openai-chat-model.js +0 -415
- package/lib/cjs/models/xai-chat-model.d.ts +0 -21
- package/lib/cjs/models/xai-chat-model.js +0 -33
- package/lib/cjs/server/error.d.ts +0 -15
- package/lib/cjs/server/error.js +0 -22
- package/lib/cjs/server/index.d.ts +0 -2
- package/lib/cjs/server/index.js +0 -18
- package/lib/cjs/server/server.d.ts +0 -135
- package/lib/cjs/server/server.js +0 -187
- package/lib/dts/client/client.d.ts +0 -97
- package/lib/dts/client/index.d.ts +0 -1
- package/lib/dts/memory/default-memory.d.ts +0 -16
- package/lib/dts/models/bedrock-chat-model.d.ts +0 -79
- package/lib/dts/models/claude-chat-model.d.ts +0 -114
- package/lib/dts/models/deepseek-chat-model.d.ts +0 -23
- package/lib/dts/models/gemini-chat-model.d.ts +0 -23
- package/lib/dts/models/ollama-chat-model.d.ts +0 -22
- package/lib/dts/models/open-router-chat-model.d.ts +0 -22
- package/lib/dts/models/openai-chat-model.d.ts +0 -166
- package/lib/dts/models/xai-chat-model.d.ts +0 -21
- package/lib/dts/server/error.d.ts +0 -15
- package/lib/dts/server/index.d.ts +0 -2
- package/lib/dts/server/server.d.ts +0 -135
- package/lib/esm/client/client.d.ts +0 -97
- package/lib/esm/client/client.js +0 -83
- package/lib/esm/client/index.d.ts +0 -1
- package/lib/esm/client/index.js +0 -1
- package/lib/esm/memory/default-memory.d.ts +0 -16
- package/lib/esm/models/bedrock-chat-model.d.ts +0 -79
- package/lib/esm/models/bedrock-chat-model.js +0 -298
- package/lib/esm/models/claude-chat-model.d.ts +0 -114
- package/lib/esm/models/claude-chat-model.js +0 -310
- package/lib/esm/models/deepseek-chat-model.d.ts +0 -23
- package/lib/esm/models/deepseek-chat-model.js +0 -31
- package/lib/esm/models/gemini-chat-model.d.ts +0 -23
- package/lib/esm/models/gemini-chat-model.js +0 -31
- package/lib/esm/models/ollama-chat-model.d.ts +0 -22
- package/lib/esm/models/ollama-chat-model.js +0 -30
- package/lib/esm/models/open-router-chat-model.d.ts +0 -22
- package/lib/esm/models/open-router-chat-model.js +0 -30
- package/lib/esm/models/openai-chat-model.d.ts +0 -166
- package/lib/esm/models/openai-chat-model.js +0 -405
- package/lib/esm/models/xai-chat-model.d.ts +0 -21
- package/lib/esm/models/xai-chat-model.js +0 -29
- package/lib/esm/server/error.d.ts +0 -15
- package/lib/esm/server/error.js +0 -18
- package/lib/esm/server/index.d.ts +0 -2
- package/lib/esm/server/index.js +0 -2
- package/lib/esm/server/server.d.ts +0 -135
- package/lib/esm/server/server.js +0 -180
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import EventEmitter from "node:events";
|
|
2
2
|
import { Agent, type AgentInvokeOptions, type AgentProcessAsyncGenerator, type AgentResponse, type AgentResponseStream, type Message } from "../agents/agent.js";
|
|
3
|
+
import type { ChatModel } from "../agents/chat-model.js";
|
|
3
4
|
import { UserAgent } from "../agents/user-agent.js";
|
|
4
|
-
import type { ChatModel } from "../models/chat-model.js";
|
|
5
5
|
import { type OmitPropertiesFromArrayFirstElement } from "../utils/type-utils.js";
|
|
6
6
|
import type { Args, Listener, TypedEventEmitter } from "../utils/typed-event-emtter.js";
|
|
7
7
|
import { type MessagePayload, MessageQueue, type MessageQueueListener, type Unsubscribe } from "./message-queue.js";
|
|
@@ -38,19 +38,27 @@ export type ContextEmitEventMap = {
|
|
|
38
38
|
/**
|
|
39
39
|
* @hidden
|
|
40
40
|
*/
|
|
41
|
-
export interface InvokeOptions extends AgentInvokeOptions {
|
|
41
|
+
export interface InvokeOptions<U extends UserContext = UserContext> extends Partial<Omit<AgentInvokeOptions<U>, "context">> {
|
|
42
42
|
returnActiveAgent?: boolean;
|
|
43
43
|
disableTransfer?: boolean;
|
|
44
|
+
sourceAgent?: Agent;
|
|
45
|
+
userContext?: U;
|
|
44
46
|
}
|
|
45
47
|
/**
|
|
46
48
|
* @hidden
|
|
47
49
|
*/
|
|
48
|
-
export interface
|
|
50
|
+
export interface UserContext extends Record<string, unknown> {
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @hidden
|
|
54
|
+
*/
|
|
55
|
+
export interface Context<U extends UserContext = UserContext> extends TypedEventEmitter<ContextEventMap, ContextEmitEventMap> {
|
|
49
56
|
model?: ChatModel;
|
|
50
57
|
skills?: Agent[];
|
|
51
58
|
usage: ContextUsage;
|
|
52
59
|
limits?: ContextLimits;
|
|
53
60
|
status?: "normal" | "timeout";
|
|
61
|
+
userContext: U;
|
|
54
62
|
/**
|
|
55
63
|
* Create a user agent to consistently invoke an agent
|
|
56
64
|
* @param agent Agent to invoke
|
|
@@ -91,7 +99,7 @@ export interface Context extends TypedEventEmitter<ContextEventMap, ContextEmitE
|
|
|
91
99
|
* @param topic topic name, or an array of topic names
|
|
92
100
|
* @param payload message to publish
|
|
93
101
|
*/
|
|
94
|
-
publish(topic: string | string[], payload: Omit<MessagePayload, "context"> | Message | string): void;
|
|
102
|
+
publish(topic: string | string[], payload: Omit<MessagePayload, "context"> | Message | string, options?: InvokeOptions): void;
|
|
95
103
|
subscribe(topic: string | string[], listener?: undefined): Promise<MessagePayload>;
|
|
96
104
|
subscribe(topic: string | string[], listener: MessageQueueListener): Unsubscribe;
|
|
97
105
|
subscribe(topic: string | string[], listener?: MessageQueueListener): Unsubscribe | Promise<MessagePayload>;
|
|
@@ -113,15 +121,17 @@ export interface Context extends TypedEventEmitter<ContextEventMap, ContextEmitE
|
|
|
113
121
|
* @hidden
|
|
114
122
|
*/
|
|
115
123
|
export declare class AIGNEContext implements Context {
|
|
116
|
-
constructor(parent
|
|
124
|
+
constructor(...[parent, ...args]: ConstructorParameters<typeof AIGNEContextShared>);
|
|
117
125
|
parentId?: string;
|
|
118
126
|
id: string;
|
|
119
|
-
readonly internal:
|
|
127
|
+
readonly internal: AIGNEContextShared;
|
|
120
128
|
get model(): ChatModel | undefined;
|
|
121
129
|
get skills(): Agent<Message, Message>[] | undefined;
|
|
122
130
|
get limits(): ContextLimits | undefined;
|
|
123
131
|
get status(): "normal" | "timeout";
|
|
124
132
|
get usage(): ContextUsage;
|
|
133
|
+
get userContext(): Context["userContext"];
|
|
134
|
+
set userContext(userContext: Context["userContext"]);
|
|
125
135
|
newContext({ reset }?: {
|
|
126
136
|
reset?: boolean;
|
|
127
137
|
}): AIGNEContext;
|
|
@@ -134,17 +144,18 @@ export declare class AIGNEContext implements Context {
|
|
|
134
144
|
once<K extends keyof ContextEventMap>(eventName: K, listener: Listener<K, ContextEventMap>): this;
|
|
135
145
|
off<K extends keyof ContextEventMap>(eventName: K, listener: Listener<K, ContextEventMap>): this;
|
|
136
146
|
}
|
|
137
|
-
declare class
|
|
147
|
+
declare class AIGNEContextShared {
|
|
138
148
|
private readonly parent?;
|
|
139
149
|
constructor(parent?: (Pick<Context, "model" | "skills" | "limits"> & {
|
|
140
150
|
messageQueue?: MessageQueue;
|
|
141
|
-
}) | undefined);
|
|
151
|
+
}) | undefined, overrides?: Partial<Context>);
|
|
142
152
|
readonly messageQueue: MessageQueue;
|
|
143
153
|
readonly events: EventEmitter<ContextEventMap>;
|
|
144
154
|
get model(): ChatModel | undefined;
|
|
145
155
|
get skills(): Agent<Message, Message>[] | undefined;
|
|
146
156
|
get limits(): ContextLimits | undefined;
|
|
147
157
|
usage: ContextUsage;
|
|
158
|
+
userContext: Context["userContext"];
|
|
148
159
|
private abortController;
|
|
149
160
|
private timer?;
|
|
150
161
|
private initTimeout;
|
package/lib/esm/aigne/context.js
CHANGED
|
@@ -2,7 +2,7 @@ import EventEmitter from "node:events";
|
|
|
2
2
|
import { v7 } from "uuid";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { Agent, } from "../agents/agent.js";
|
|
5
|
-
import { isTransferAgentOutput, transferAgentOutputKey } from "../agents/types.js";
|
|
5
|
+
import { isTransferAgentOutput, transferAgentOutputKey, } from "../agents/types.js";
|
|
6
6
|
import { UserAgent } from "../agents/user-agent.js";
|
|
7
7
|
import { createMessage } from "../prompt/prompt-builder.js";
|
|
8
8
|
import { agentResponseStreamToObject, asyncGeneratorToReadableStream, onAgentResponseStreamEnd, } from "../utils/stream-utils.js";
|
|
@@ -13,13 +13,13 @@ import { newEmptyContextUsage } from "./usage.js";
|
|
|
13
13
|
* @hidden
|
|
14
14
|
*/
|
|
15
15
|
export class AIGNEContext {
|
|
16
|
-
constructor(parent) {
|
|
16
|
+
constructor(...[parent, ...args]) {
|
|
17
17
|
if (parent instanceof AIGNEContext) {
|
|
18
18
|
this.parentId = parent.id;
|
|
19
19
|
this.internal = parent.internal;
|
|
20
20
|
}
|
|
21
21
|
else {
|
|
22
|
-
this.internal = new
|
|
22
|
+
this.internal = new AIGNEContextShared(parent, ...args);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
parentId;
|
|
@@ -40,9 +40,15 @@ export class AIGNEContext {
|
|
|
40
40
|
get usage() {
|
|
41
41
|
return this.internal.usage;
|
|
42
42
|
}
|
|
43
|
+
get userContext() {
|
|
44
|
+
return this.internal.userContext;
|
|
45
|
+
}
|
|
46
|
+
set userContext(userContext) {
|
|
47
|
+
this.internal.userContext = userContext;
|
|
48
|
+
}
|
|
43
49
|
newContext({ reset } = {}) {
|
|
44
50
|
if (reset)
|
|
45
|
-
return new AIGNEContext(this
|
|
51
|
+
return new AIGNEContext(this, { userContext: {} });
|
|
46
52
|
return new AIGNEContext(this);
|
|
47
53
|
}
|
|
48
54
|
invoke = ((agent, message, options) => {
|
|
@@ -51,6 +57,8 @@ export class AIGNEContext {
|
|
|
51
57
|
message,
|
|
52
58
|
options,
|
|
53
59
|
});
|
|
60
|
+
if (options?.userContext)
|
|
61
|
+
Object.assign(this.userContext, options.userContext);
|
|
54
62
|
if (isNil(message)) {
|
|
55
63
|
return UserAgent.from({
|
|
56
64
|
context: this,
|
|
@@ -90,7 +98,9 @@ export class AIGNEContext {
|
|
|
90
98
|
return stream;
|
|
91
99
|
});
|
|
92
100
|
});
|
|
93
|
-
publish = ((topic, payload) => {
|
|
101
|
+
publish = ((topic, payload, options) => {
|
|
102
|
+
if (options?.userContext)
|
|
103
|
+
Object.assign(this.userContext, options.userContext);
|
|
94
104
|
return this.internal.messageQueue.publish(topic, {
|
|
95
105
|
...toMessagePayload(payload),
|
|
96
106
|
context: this,
|
|
@@ -125,11 +135,12 @@ export class AIGNEContext {
|
|
|
125
135
|
return this;
|
|
126
136
|
}
|
|
127
137
|
}
|
|
128
|
-
class
|
|
138
|
+
class AIGNEContextShared {
|
|
129
139
|
parent;
|
|
130
|
-
constructor(parent) {
|
|
140
|
+
constructor(parent, overrides) {
|
|
131
141
|
this.parent = parent;
|
|
132
142
|
this.messageQueue = this.parent?.messageQueue ?? new MessageQueue();
|
|
143
|
+
this.userContext = overrides?.userContext ?? {};
|
|
133
144
|
}
|
|
134
145
|
messageQueue;
|
|
135
146
|
events = new EventEmitter();
|
|
@@ -143,6 +154,7 @@ class AIGNEContextInternal {
|
|
|
143
154
|
return this.parent?.limits;
|
|
144
155
|
}
|
|
145
156
|
usage = newEmptyContextUsage();
|
|
157
|
+
userContext;
|
|
146
158
|
abortController = new AbortController();
|
|
147
159
|
timer;
|
|
148
160
|
initTimeout() {
|
|
@@ -167,7 +179,15 @@ class AIGNEContextInternal {
|
|
|
167
179
|
let output;
|
|
168
180
|
for (;;) {
|
|
169
181
|
const result = {};
|
|
170
|
-
|
|
182
|
+
if (options?.sourceAgent && activeAgent !== options.sourceAgent) {
|
|
183
|
+
options.sourceAgent.hooks.onHandoff?.({
|
|
184
|
+
context,
|
|
185
|
+
source: options.sourceAgent,
|
|
186
|
+
target: activeAgent,
|
|
187
|
+
input,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
const stream = await activeAgent.invoke(input, { ...options, context, streaming: true });
|
|
171
191
|
for await (const value of stream) {
|
|
172
192
|
if (value.delta.text) {
|
|
173
193
|
yield { delta: { text: value.delta.text } };
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export * from "./agents/agent.js";
|
|
2
2
|
export * from "./agents/ai-agent.js";
|
|
3
|
+
export * from "./agents/chat-model.js";
|
|
4
|
+
export * from "./agents/guide-rail-agent.js";
|
|
3
5
|
export * from "./agents/mcp-agent.js";
|
|
4
6
|
export * from "./agents/team-agent.js";
|
|
5
7
|
export * from "./agents/types.js";
|
|
6
8
|
export * from "./agents/user-agent.js";
|
|
7
9
|
export * from "./aigne/index.js";
|
|
8
|
-
export * from "./models/chat-model.js";
|
|
9
10
|
export * from "./prompt/prompt-builder.js";
|
|
10
11
|
export * from "./prompt/template.js";
|
package/lib/esm/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export * from "./agents/agent.js";
|
|
2
2
|
export * from "./agents/ai-agent.js";
|
|
3
|
+
export * from "./agents/chat-model.js";
|
|
4
|
+
export * from "./agents/guide-rail-agent.js";
|
|
3
5
|
export * from "./agents/mcp-agent.js";
|
|
4
6
|
export * from "./agents/team-agent.js";
|
|
5
7
|
export * from "./agents/types.js";
|
|
6
8
|
export * from "./agents/user-agent.js";
|
|
7
9
|
export * from "./aigne/index.js";
|
|
8
|
-
export * from "./models/chat-model.js";
|
|
9
10
|
export * from "./prompt/prompt-builder.js";
|
|
10
11
|
export * from "./prompt/template.js";
|
|
@@ -14,16 +14,16 @@ export declare function loadAgentFromYamlFile(path: string): Promise<{
|
|
|
14
14
|
}, {
|
|
15
15
|
[x: string]: any;
|
|
16
16
|
}> | undefined;
|
|
17
|
-
toolChoice?: AIAgentToolChoice | undefined;
|
|
18
17
|
outputSchema?: ZodObject<Record<string, ZodType<any, z.ZodTypeDef, any>>, z.UnknownKeysParam, z.ZodTypeAny, {
|
|
19
18
|
[x: string]: any;
|
|
20
19
|
}, {
|
|
21
20
|
[x: string]: any;
|
|
22
21
|
}> | undefined;
|
|
23
22
|
outputKey?: string | undefined;
|
|
23
|
+
toolChoice?: AIAgentToolChoice | undefined;
|
|
24
24
|
} | {
|
|
25
25
|
type: "mcp";
|
|
26
26
|
url?: string | undefined;
|
|
27
|
-
command?: string | undefined;
|
|
28
27
|
args?: string[] | undefined;
|
|
28
|
+
command?: string | undefined;
|
|
29
29
|
}>;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import type { Camelize } from "camelize-ts";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { type Agent } from "../agents/agent.js";
|
|
3
|
-
import type { ChatModel, ChatModelOptions } from "../
|
|
4
|
+
import type { ChatModel, ChatModelOptions } from "../agents/chat-model.js";
|
|
4
5
|
export interface LoadOptions {
|
|
6
|
+
models: {
|
|
7
|
+
new (parameters: {
|
|
8
|
+
model?: string;
|
|
9
|
+
modelOptions?: ChatModelOptions;
|
|
10
|
+
}): ChatModel;
|
|
11
|
+
}[];
|
|
5
12
|
path: string;
|
|
6
13
|
}
|
|
7
14
|
export declare function load(options: LoadOptions): Promise<{
|
|
@@ -15,12 +22,12 @@ export declare function load(options: LoadOptions): Promise<{
|
|
|
15
22
|
temperature?: number | null | undefined;
|
|
16
23
|
provider?: string | null | undefined;
|
|
17
24
|
top_p?: number | null | undefined;
|
|
18
|
-
|
|
25
|
+
frequency_penalty?: number | null | undefined;
|
|
19
26
|
presence_penalty?: number | null | undefined;
|
|
20
27
|
} | null | undefined;
|
|
21
28
|
}>;
|
|
22
29
|
export declare function loadAgent(path: string): Promise<Agent>;
|
|
23
|
-
export declare function loadModel(model?: z.infer<typeof aigneFileSchema>["chat_model"]
|
|
30
|
+
export declare function loadModel(models: LoadOptions["models"], model?: Camelize<z.infer<typeof aigneFileSchema>["chat_model"]>, modelOptions?: ChatModelOptions): Promise<ChatModel | undefined>;
|
|
24
31
|
declare const aigneFileSchema: z.ZodObject<{
|
|
25
32
|
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
26
33
|
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -29,35 +36,35 @@ declare const aigneFileSchema: z.ZodObject<{
|
|
|
29
36
|
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
30
37
|
temperature: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
31
38
|
top_p: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
32
|
-
|
|
39
|
+
frequency_penalty: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
33
40
|
presence_penalty: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
34
41
|
}, "strip", z.ZodTypeAny, {
|
|
35
42
|
name?: string | null | undefined;
|
|
36
43
|
temperature?: number | null | undefined;
|
|
37
44
|
provider?: string | null | undefined;
|
|
38
45
|
top_p?: number | null | undefined;
|
|
39
|
-
|
|
46
|
+
frequency_penalty?: number | null | undefined;
|
|
40
47
|
presence_penalty?: number | null | undefined;
|
|
41
48
|
}, {
|
|
42
49
|
name?: string | null | undefined;
|
|
43
50
|
temperature?: number | null | undefined;
|
|
44
51
|
provider?: string | null | undefined;
|
|
45
52
|
top_p?: number | null | undefined;
|
|
46
|
-
|
|
53
|
+
frequency_penalty?: number | null | undefined;
|
|
47
54
|
presence_penalty?: number | null | undefined;
|
|
48
55
|
}>]>>>, {
|
|
49
56
|
name?: string | null | undefined;
|
|
50
57
|
temperature?: number | null | undefined;
|
|
51
58
|
provider?: string | null | undefined;
|
|
52
59
|
top_p?: number | null | undefined;
|
|
53
|
-
|
|
60
|
+
frequency_penalty?: number | null | undefined;
|
|
54
61
|
presence_penalty?: number | null | undefined;
|
|
55
62
|
} | null | undefined, string | {
|
|
56
63
|
name?: string | null | undefined;
|
|
57
64
|
temperature?: number | null | undefined;
|
|
58
65
|
provider?: string | null | undefined;
|
|
59
66
|
top_p?: number | null | undefined;
|
|
60
|
-
|
|
67
|
+
frequency_penalty?: number | null | undefined;
|
|
61
68
|
presence_penalty?: number | null | undefined;
|
|
62
69
|
} | null | undefined>;
|
|
63
70
|
agents: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
|
|
@@ -71,7 +78,7 @@ declare const aigneFileSchema: z.ZodObject<{
|
|
|
71
78
|
temperature?: number | null | undefined;
|
|
72
79
|
provider?: string | null | undefined;
|
|
73
80
|
top_p?: number | null | undefined;
|
|
74
|
-
|
|
81
|
+
frequency_penalty?: number | null | undefined;
|
|
75
82
|
presence_penalty?: number | null | undefined;
|
|
76
83
|
} | null | undefined;
|
|
77
84
|
agents?: string[] | null | undefined;
|
|
@@ -84,7 +91,7 @@ declare const aigneFileSchema: z.ZodObject<{
|
|
|
84
91
|
temperature?: number | null | undefined;
|
|
85
92
|
provider?: string | null | undefined;
|
|
86
93
|
top_p?: number | null | undefined;
|
|
87
|
-
|
|
94
|
+
frequency_penalty?: number | null | undefined;
|
|
88
95
|
presence_penalty?: number | null | undefined;
|
|
89
96
|
} | null | undefined;
|
|
90
97
|
agents?: string[] | null | undefined;
|
|
@@ -98,7 +105,7 @@ export declare function loadAIGNEFile(path: string): Promise<{
|
|
|
98
105
|
temperature?: number | null | undefined;
|
|
99
106
|
provider?: string | null | undefined;
|
|
100
107
|
top_p?: number | null | undefined;
|
|
101
|
-
|
|
108
|
+
frequency_penalty?: number | null | undefined;
|
|
102
109
|
presence_penalty?: number | null | undefined;
|
|
103
110
|
} | null | undefined;
|
|
104
111
|
agents?: string[] | null | undefined;
|
package/lib/esm/loader/index.js
CHANGED
|
@@ -5,14 +5,6 @@ import { z } from "zod";
|
|
|
5
5
|
import { FunctionAgent } from "../agents/agent.js";
|
|
6
6
|
import { AIAgent } from "../agents/ai-agent.js";
|
|
7
7
|
import { MCPAgent } from "../agents/mcp-agent.js";
|
|
8
|
-
import { BedrockChatModel } from "../models/bedrock-chat-model.js";
|
|
9
|
-
import { ClaudeChatModel } from "../models/claude-chat-model.js";
|
|
10
|
-
import { DeepSeekChatModel } from "../models/deepseek-chat-model.js";
|
|
11
|
-
import { GeminiChatModel } from "../models/gemini-chat-model.js";
|
|
12
|
-
import { OllamaChatModel } from "../models/ollama-chat-model.js";
|
|
13
|
-
import { OpenRouterChatModel } from "../models/open-router-chat-model.js";
|
|
14
|
-
import { OpenAIChatModel } from "../models/openai-chat-model.js";
|
|
15
|
-
import { XAIChatModel } from "../models/xai-chat-model.js";
|
|
16
8
|
import { tryOrThrow } from "../utils/type-utils.js";
|
|
17
9
|
import { loadAgentFromJsFile } from "./agent-js.js";
|
|
18
10
|
import { loadAgentFromYamlFile } from "./agent-yaml.js";
|
|
@@ -26,7 +18,7 @@ export async function load(options) {
|
|
|
26
18
|
const skills = await Promise.all((aigne.skills ?? []).map((filename) => loadAgent(join(rootDir, filename))));
|
|
27
19
|
return {
|
|
28
20
|
...aigne,
|
|
29
|
-
model: await loadModel(aigne.chat_model),
|
|
21
|
+
model: await loadModel(options.models, aigne.chat_model),
|
|
30
22
|
agents,
|
|
31
23
|
skills,
|
|
32
24
|
};
|
|
@@ -64,26 +56,15 @@ export async function loadAgent(path) {
|
|
|
64
56
|
}
|
|
65
57
|
const { MODEL_PROVIDER, MODEL_NAME } = process.env;
|
|
66
58
|
const DEFAULT_MODEL_PROVIDER = "openai";
|
|
67
|
-
|
|
68
|
-
export async function loadModel(model, modelOptions) {
|
|
59
|
+
export async function loadModel(models, model, modelOptions) {
|
|
69
60
|
const params = {
|
|
70
|
-
model: MODEL_NAME ?? model?.name ??
|
|
61
|
+
model: MODEL_NAME ?? model?.name ?? undefined,
|
|
71
62
|
temperature: model?.temperature ?? undefined,
|
|
72
|
-
topP: model?.
|
|
73
|
-
frequencyPenalty: model?.
|
|
74
|
-
presencePenalty: model?.
|
|
63
|
+
topP: model?.topP ?? undefined,
|
|
64
|
+
frequencyPenalty: model?.frequencyPenalty ?? undefined,
|
|
65
|
+
presencePenalty: model?.presencePenalty ?? undefined,
|
|
75
66
|
};
|
|
76
|
-
const
|
|
77
|
-
OpenAIChatModel,
|
|
78
|
-
ClaudeChatModel,
|
|
79
|
-
XAIChatModel,
|
|
80
|
-
GeminiChatModel,
|
|
81
|
-
DeepSeekChatModel,
|
|
82
|
-
OpenRouterChatModel,
|
|
83
|
-
OllamaChatModel,
|
|
84
|
-
BedrockChatModel,
|
|
85
|
-
];
|
|
86
|
-
const M = availableModels.find((m) => m.name
|
|
67
|
+
const M = models.find((m) => m.name
|
|
87
68
|
.toLowerCase()
|
|
88
69
|
.includes((MODEL_PROVIDER ?? model?.provider ?? DEFAULT_MODEL_PROVIDER).toLowerCase()));
|
|
89
70
|
if (!M)
|
|
@@ -101,7 +82,7 @@ const aigneFileSchema = z.object({
|
|
|
101
82
|
name: z.string().nullish(),
|
|
102
83
|
temperature: z.number().min(0).max(2).nullish(),
|
|
103
84
|
top_p: z.number().min(0).nullish(),
|
|
104
|
-
|
|
85
|
+
frequency_penalty: z.number().min(-2).max(2).nullish(),
|
|
105
86
|
presence_penalty: z.number().min(-2).max(2).nullish(),
|
|
106
87
|
}),
|
|
107
88
|
])
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AgentInvokeOptions } from "../../../agents/agent.js";
|
|
2
|
+
import "sqlite3";
|
|
3
|
+
import { Sequelize } from "sequelize";
|
|
4
|
+
import type { Context } from "../../../aigne/context.js";
|
|
5
|
+
import type { PromiseOrValue } from "../../../utils/type-utils.js";
|
|
6
|
+
import type { Memory } from "../../memory.js";
|
|
7
|
+
import { MemoryStorage } from "../storage.js";
|
|
8
|
+
export interface DefaultMemoryStorageOptions {
|
|
9
|
+
path?: string;
|
|
10
|
+
getSessionId?: (context: Context) => PromiseOrValue<string>;
|
|
11
|
+
}
|
|
12
|
+
export declare class DefaultMemoryStorage extends MemoryStorage {
|
|
13
|
+
options?: DefaultMemoryStorageOptions | undefined;
|
|
14
|
+
memories: {
|
|
15
|
+
[groupId: string]: Memory[];
|
|
16
|
+
};
|
|
17
|
+
constructor(options?: DefaultMemoryStorageOptions | undefined);
|
|
18
|
+
private _models?;
|
|
19
|
+
private get models();
|
|
20
|
+
private convertMemory;
|
|
21
|
+
search(query: {
|
|
22
|
+
limit?: number;
|
|
23
|
+
}, { context }: AgentInvokeOptions): Promise<{
|
|
24
|
+
result: Memory[];
|
|
25
|
+
}>;
|
|
26
|
+
create(memory: Pick<Memory, "content">, { context }: AgentInvokeOptions): Promise<{
|
|
27
|
+
result: Memory;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export declare function initSequelize(path?: string): Sequelize;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import "sqlite3";
|
|
2
|
+
import { Sequelize } from "sequelize";
|
|
3
|
+
import { logger } from "../../../utils/logger.js";
|
|
4
|
+
import { MemoryStorage } from "../storage.js";
|
|
5
|
+
import { migrate } from "./migrate.js";
|
|
6
|
+
import { initMemoryModel } from "./models/memory.js";
|
|
7
|
+
const DEFAULT_MAX_MEMORY_COUNT = 10;
|
|
8
|
+
export class DefaultMemoryStorage extends MemoryStorage {
|
|
9
|
+
options;
|
|
10
|
+
memories = {};
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super();
|
|
13
|
+
this.options = options;
|
|
14
|
+
}
|
|
15
|
+
_models;
|
|
16
|
+
get models() {
|
|
17
|
+
this._models ??= (async () => {
|
|
18
|
+
const sequelize = initSequelize(this.options?.path);
|
|
19
|
+
await migrate(sequelize);
|
|
20
|
+
return {
|
|
21
|
+
Memory: initMemoryModel(sequelize),
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
return this._models;
|
|
25
|
+
}
|
|
26
|
+
convertMemory(m) {
|
|
27
|
+
return {
|
|
28
|
+
id: m.id,
|
|
29
|
+
sessionId: m.sessionId,
|
|
30
|
+
content: m.content,
|
|
31
|
+
createdAt: m.createdAt.toISOString(),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async search(query, { context }) {
|
|
35
|
+
const { limit = DEFAULT_MAX_MEMORY_COUNT } = query;
|
|
36
|
+
const sessionId = (await this.options?.getSessionId?.(context)) ?? null;
|
|
37
|
+
const { Memory } = await this.models;
|
|
38
|
+
const memories = await Memory.findAll({
|
|
39
|
+
where: { sessionId },
|
|
40
|
+
order: [["id", "DESC"]],
|
|
41
|
+
limit,
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
result: memories.reverse().map(this.convertMemory),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
async create(memory, { context }) {
|
|
48
|
+
const sessionId = (await this.options?.getSessionId?.(context)) ?? null;
|
|
49
|
+
const { Memory } = await this.models;
|
|
50
|
+
const m = await Memory.create({
|
|
51
|
+
...memory,
|
|
52
|
+
sessionId,
|
|
53
|
+
});
|
|
54
|
+
return { result: this.convertMemory(m) };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export function initSequelize(path) {
|
|
58
|
+
const sequelize = new Sequelize({
|
|
59
|
+
logging: (sql) => logger.debug(sql),
|
|
60
|
+
storage: path,
|
|
61
|
+
dialect: "sqlite",
|
|
62
|
+
});
|
|
63
|
+
return sequelize;
|
|
64
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Sequelize } from "sequelize";
|
|
2
|
+
import { type MigrateDownOptions, type MigrateUpOptions } from "umzug";
|
|
3
|
+
export declare const migrate: (sequelize: Sequelize, { type, upOptions, downOptions, }?: {
|
|
4
|
+
type?: "up" | "down";
|
|
5
|
+
upOptions?: MigrateUpOptions;
|
|
6
|
+
downOptions?: MigrateDownOptions;
|
|
7
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SequelizeStorage, Umzug } from "umzug";
|
|
2
|
+
import * as init from "./migrations/20250523165801-init.js";
|
|
3
|
+
export const migrate = async (sequelize, { type = "up", upOptions, downOptions, } = {}) => {
|
|
4
|
+
const umzug = new Umzug({
|
|
5
|
+
migrations: [{ ...init, name: "20241224202701-init" }],
|
|
6
|
+
context: sequelize.getQueryInterface(),
|
|
7
|
+
storage: new SequelizeStorage({ sequelize }),
|
|
8
|
+
logger: console,
|
|
9
|
+
});
|
|
10
|
+
if (type === "down") {
|
|
11
|
+
await umzug.down(downOptions);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
await umzug.up(upOptions);
|
|
15
|
+
}
|
|
16
|
+
};
|
package/lib/esm/memory/default-memory/default-memory-storage/migrations/20250523165801-init.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type QueryInterface } from "sequelize";
|
|
2
|
+
export declare const up: ({ context: queryInterface }: {
|
|
3
|
+
context: QueryInterface;
|
|
4
|
+
}) => Promise<void>;
|
|
5
|
+
export declare const down: ({ context: queryInterface }: {
|
|
6
|
+
context: QueryInterface;
|
|
7
|
+
}) => Promise<void>;
|
package/lib/esm/memory/default-memory/default-memory-storage/migrations/20250523165801-init.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DataTypes } from "sequelize";
|
|
2
|
+
export const up = async ({ context: queryInterface }) => {
|
|
3
|
+
await queryInterface.createTable("Memories", {
|
|
4
|
+
id: {
|
|
5
|
+
type: DataTypes.STRING,
|
|
6
|
+
primaryKey: true,
|
|
7
|
+
allowNull: false,
|
|
8
|
+
},
|
|
9
|
+
createdAt: {
|
|
10
|
+
type: DataTypes.DATE,
|
|
11
|
+
allowNull: false,
|
|
12
|
+
},
|
|
13
|
+
updatedAt: {
|
|
14
|
+
type: DataTypes.DATE,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
},
|
|
17
|
+
sessionId: {
|
|
18
|
+
type: DataTypes.STRING,
|
|
19
|
+
},
|
|
20
|
+
content: {
|
|
21
|
+
type: DataTypes.JSON,
|
|
22
|
+
allowNull: false,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
export const down = async ({ context: queryInterface }) => {
|
|
27
|
+
await queryInterface.dropTable("Memories");
|
|
28
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type CreationOptional, type InferAttributes, type InferCreationAttributes, Model } from "sequelize";
|
|
2
|
+
import type { ModelStatic, Sequelize } from "sequelize";
|
|
3
|
+
export interface Memory extends Model<InferAttributes<Memory>, InferCreationAttributes<Memory>> {
|
|
4
|
+
id: CreationOptional<string>;
|
|
5
|
+
createdAt: CreationOptional<Date>;
|
|
6
|
+
updatedAt: CreationOptional<Date>;
|
|
7
|
+
sessionId?: string | null;
|
|
8
|
+
content: unknown;
|
|
9
|
+
}
|
|
10
|
+
export declare function initMemoryModel(sequelize: Sequelize): ModelStatic<Memory>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DataTypes, Model, } from "sequelize";
|
|
2
|
+
import { v7 } from "uuid";
|
|
3
|
+
const nextId = () => v7();
|
|
4
|
+
export function initMemoryModel(sequelize) {
|
|
5
|
+
return class Memory extends Model {
|
|
6
|
+
}.init({
|
|
7
|
+
id: {
|
|
8
|
+
type: DataTypes.STRING,
|
|
9
|
+
primaryKey: true,
|
|
10
|
+
allowNull: false,
|
|
11
|
+
defaultValue: nextId,
|
|
12
|
+
},
|
|
13
|
+
createdAt: {
|
|
14
|
+
type: DataTypes.DATE,
|
|
15
|
+
allowNull: false,
|
|
16
|
+
},
|
|
17
|
+
updatedAt: {
|
|
18
|
+
type: DataTypes.DATE,
|
|
19
|
+
allowNull: false,
|
|
20
|
+
},
|
|
21
|
+
sessionId: {
|
|
22
|
+
type: DataTypes.STRING,
|
|
23
|
+
},
|
|
24
|
+
content: {
|
|
25
|
+
type: DataTypes.JSON,
|
|
26
|
+
allowNull: false,
|
|
27
|
+
},
|
|
28
|
+
}, { sequelize });
|
|
29
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MemoryAgent, type MemoryAgentOptions } from "../memory.js";
|
|
2
|
+
import { type DefaultMemoryStorageOptions } from "./default-memory-storage/index.js";
|
|
3
|
+
import { MemoryStorage } from "./storage.js";
|
|
4
|
+
export interface DefaultMemoryOptions extends Partial<MemoryAgentOptions> {
|
|
5
|
+
storage?: MemoryStorage | DefaultMemoryStorageOptions;
|
|
6
|
+
}
|
|
7
|
+
export declare class DefaultMemory extends MemoryAgent {
|
|
8
|
+
constructor(options?: DefaultMemoryOptions);
|
|
9
|
+
storage: MemoryStorage;
|
|
10
|
+
}
|