@downcity/plugins 1.0.59 → 1.0.61
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/bin/BuiltinPlugins.d.ts +39 -2
- package/bin/BuiltinPlugins.d.ts.map +1 -1
- package/bin/BuiltinPlugins.js +24 -3
- package/bin/BuiltinPlugins.js.map +1 -1
- package/bin/contact/ContactPlugin.d.ts +6 -1
- package/bin/contact/ContactPlugin.d.ts.map +1 -1
- package/bin/contact/ContactPlugin.js +9 -8
- package/bin/contact/ContactPlugin.js.map +1 -1
- package/bin/contact/types/ContactPluginOptions.d.ts +29 -0
- package/bin/contact/types/ContactPluginOptions.d.ts.map +1 -0
- package/bin/contact/types/ContactPluginOptions.js +9 -0
- package/bin/contact/types/ContactPluginOptions.js.map +1 -0
- package/bin/index.d.ts +9 -1
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +4 -0
- package/bin/index.js.map +1 -1
- package/bin/memory/Action.d.ts +15 -10
- package/bin/memory/Action.d.ts.map +1 -1
- package/bin/memory/Action.js +233 -16
- package/bin/memory/Action.js.map +1 -1
- package/bin/memory/MemoryPlugin.d.ts +10 -4
- package/bin/memory/MemoryPlugin.d.ts.map +1 -1
- package/bin/memory/MemoryPlugin.js +79 -37
- package/bin/memory/MemoryPlugin.js.map +1 -1
- package/bin/memory/runtime/Search.d.ts +1 -1
- package/bin/memory/runtime/Search.d.ts.map +1 -1
- package/bin/memory/runtime/Search.js +11 -7
- package/bin/memory/runtime/Search.js.map +1 -1
- package/bin/memory/runtime/Store.d.ts +8 -23
- package/bin/memory/runtime/Store.d.ts.map +1 -1
- package/bin/memory/runtime/Store.js +28 -43
- package/bin/memory/runtime/Store.js.map +1 -1
- package/bin/memory/runtime/SystemProvider.d.ts +4 -8
- package/bin/memory/runtime/SystemProvider.d.ts.map +1 -1
- package/bin/memory/runtime/SystemProvider.js +55 -62
- package/bin/memory/runtime/SystemProvider.js.map +1 -1
- package/bin/memory/runtime/Writer.d.ts +48 -10
- package/bin/memory/runtime/Writer.d.ts.map +1 -1
- package/bin/memory/runtime/Writer.js +197 -60
- package/bin/memory/runtime/Writer.js.map +1 -1
- package/bin/memory/types/Memory.d.ts +222 -33
- package/bin/memory/types/Memory.d.ts.map +1 -1
- package/bin/memory/types/Memory.js +4 -3
- package/bin/memory/types/Memory.js.map +1 -1
- package/bin/shell/ShellPlugin.d.ts +2 -1
- package/bin/shell/ShellPlugin.d.ts.map +1 -1
- package/bin/shell/ShellPlugin.js +3 -3
- package/bin/shell/ShellPlugin.js.map +1 -1
- package/bin/shell/ShellRuntimeTypes.d.ts +7 -2
- package/bin/shell/ShellRuntimeTypes.d.ts.map +1 -1
- package/bin/shell/runtime/ShellActionRuntime.d.ts.map +1 -1
- package/bin/shell/runtime/ShellActionRuntime.js +6 -6
- package/bin/shell/runtime/ShellActionRuntime.js.map +1 -1
- package/bin/shell/runtime/ShellActionRuntimeSupport.d.ts +14 -5
- package/bin/shell/runtime/ShellActionRuntimeSupport.d.ts.map +1 -1
- package/bin/shell/runtime/ShellActionRuntimeSupport.js +58 -22
- package/bin/shell/runtime/ShellActionRuntimeSupport.js.map +1 -1
- package/bin/shell/runtime/ShellProcessEvents.js +3 -3
- package/bin/shell/runtime/ShellProcessEvents.js.map +1 -1
- package/bin/shell/types/ShellPluginOptions.d.ts +95 -0
- package/bin/shell/types/ShellPluginOptions.d.ts.map +1 -0
- package/bin/shell/types/ShellPluginOptions.js +10 -0
- package/bin/shell/types/ShellPluginOptions.js.map +1 -0
- package/bin/task/Scheduler.d.ts +8 -0
- package/bin/task/Scheduler.d.ts.map +1 -1
- package/bin/task/Scheduler.js +7 -9
- package/bin/task/Scheduler.js.map +1 -1
- package/bin/task/TaskPlugin.d.ts +18 -1
- package/bin/task/TaskPlugin.d.ts.map +1 -1
- package/bin/task/TaskPlugin.js +23 -1
- package/bin/task/TaskPlugin.js.map +1 -1
- package/bin/task/types/TaskPluginOptions.d.ts +22 -0
- package/bin/task/types/TaskPluginOptions.d.ts.map +1 -0
- package/bin/task/types/TaskPluginOptions.js +9 -0
- package/bin/task/types/TaskPluginOptions.js.map +1 -0
- package/package.json +2 -2
- package/src/BuiltinPlugins.ts +67 -3
- package/src/contact/ContactPlugin.ts +17 -9
- package/src/contact/types/ContactPluginOptions.ts +30 -0
- package/src/index.ts +41 -1
- package/src/memory/Action.ts +292 -25
- package/src/memory/MemoryPlugin.ts +82 -40
- package/src/memory/runtime/Search.ts +16 -9
- package/src/memory/runtime/Store.ts +52 -49
- package/src/memory/runtime/SystemProvider.ts +55 -69
- package/src/memory/runtime/Writer.ts +262 -81
- package/src/memory/types/Memory.ts +296 -35
- package/src/shell/ShellPlugin.ts +4 -3
- package/src/shell/ShellRuntimeTypes.ts +7 -2
- package/src/shell/runtime/ShellActionRuntime.ts +18 -9
- package/src/shell/runtime/ShellActionRuntimeSupport.ts +106 -21
- package/src/shell/runtime/ShellProcessEvents.ts +3 -3
- package/src/shell/types/ShellPluginOptions.ts +112 -0
- package/src/task/Scheduler.ts +15 -9
- package/src/task/TaskPlugin.ts +27 -1
- package/src/task/types/TaskPluginOptions.ts +22 -0
- package/bin/memory/runtime/Flush.d.ts +0 -15
- package/bin/memory/runtime/Flush.d.ts.map +0 -1
- package/bin/memory/runtime/Flush.js +0 -63
- package/bin/memory/runtime/Flush.js.map +0 -1
- package/src/memory/runtime/Flush.ts +0 -83
package/bin/task/TaskPlugin.js
CHANGED
|
@@ -12,6 +12,7 @@ import { registerTaskCronJobs } from "../task/Scheduler.js";
|
|
|
12
12
|
import { createTaskPluginActions, } from "../task/runtime/TaskPluginActions.js";
|
|
13
13
|
import { reloadTaskSchedulerAfterMutation, } from "../task/runtime/TaskActionExecution.js";
|
|
14
14
|
import { TASK_PLUGIN_PROMPT } from "../task/runtime/TaskPluginSystem.js";
|
|
15
|
+
import { resolveRuntimeTimezone } from "@downcity/agent/internal/utils/Time.js";
|
|
15
16
|
const TASK_LOG_PREFIX = "[TASK]";
|
|
16
17
|
function formatTaskLogMessage(message) {
|
|
17
18
|
return `${TASK_LOG_PREFIX} ${message}`;
|
|
@@ -32,6 +33,10 @@ export class TaskPlugin extends BasePlugin {
|
|
|
32
33
|
* task plugin 的 action 定义表。
|
|
33
34
|
*/
|
|
34
35
|
actions;
|
|
36
|
+
/**
|
|
37
|
+
* 当前实例持有的显式配置。
|
|
38
|
+
*/
|
|
39
|
+
options;
|
|
35
40
|
/**
|
|
36
41
|
* 当前实例持有的 cron engine。
|
|
37
42
|
*
|
|
@@ -40,8 +45,17 @@ export class TaskPlugin extends BasePlugin {
|
|
|
40
45
|
* - 不再复用 module-global 单例。
|
|
41
46
|
*/
|
|
42
47
|
cronEngine = null;
|
|
43
|
-
|
|
48
|
+
/**
|
|
49
|
+
* 当前实例持有的运行中 task 锁。
|
|
50
|
+
*
|
|
51
|
+
* 关键点(中文)
|
|
52
|
+
* - scheduler reload 会替换 cron engine。
|
|
53
|
+
* - 锁必须挂在 plugin 实例上,避免 reload 后同一 task 被新旧调度器并发触发。
|
|
54
|
+
*/
|
|
55
|
+
runningTaskIds = new Set();
|
|
56
|
+
constructor(options) {
|
|
44
57
|
super();
|
|
58
|
+
this.options = options || {};
|
|
45
59
|
this.actions = createTaskPluginActions({
|
|
46
60
|
reloadSchedulerAfterMutation: async (params) => this.reloadSchedulerAfterMutation(params),
|
|
47
61
|
});
|
|
@@ -84,6 +98,8 @@ export class TaskPlugin extends BasePlugin {
|
|
|
84
98
|
const registerResult = await registerTaskCronJobs({
|
|
85
99
|
context,
|
|
86
100
|
engine,
|
|
101
|
+
timezone: this.resolveTimezone(),
|
|
102
|
+
runningTaskIds: this.runningTaskIds,
|
|
87
103
|
});
|
|
88
104
|
await engine.start();
|
|
89
105
|
this.cronEngine = engine;
|
|
@@ -122,5 +138,11 @@ export class TaskPlugin extends BasePlugin {
|
|
|
122
138
|
reloadScheduler: async (context) => this.restartCronRuntime(context),
|
|
123
139
|
});
|
|
124
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* 解析当前 task cron 使用的时区。
|
|
143
|
+
*/
|
|
144
|
+
resolveTimezone() {
|
|
145
|
+
return String(this.options.timezone || "").trim() || resolveRuntimeTimezone();
|
|
146
|
+
}
|
|
125
147
|
}
|
|
126
148
|
//# sourceMappingURL=TaskPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskPlugin.js","sourceRoot":"","sources":["../../src/task/TaskPlugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"TaskPlugin.js","sourceRoot":"","sources":["../../src/task/TaskPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskPluginOptions:TaskPlugin 构造参数。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - TaskPlugin 本身就是定时任务 runtime,不提供 enabled 开关。
|
|
6
|
+
* - 只暴露用户能直接理解的时区配置,内部调度实现细节不进入 constructor。
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* TaskPlugin 构造参数。
|
|
10
|
+
*/
|
|
11
|
+
export interface TaskPluginOptions {
|
|
12
|
+
/**
|
|
13
|
+
* cron task 使用的 IANA 时区。
|
|
14
|
+
*
|
|
15
|
+
* 说明(中文)
|
|
16
|
+
* - 例如 `Asia/Shanghai`、`America/Los_Angeles`。
|
|
17
|
+
* - 省略时使用当前运行机器的本机时区。
|
|
18
|
+
* - `time:<ISO8601-with-timezone>` 一次性任务以 ISO 字符串自身的 offset 为准,这里的时区主要影响 cron 表达式。
|
|
19
|
+
*/
|
|
20
|
+
timezone?: string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=TaskPluginOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskPluginOptions.d.ts","sourceRoot":"","sources":["../../../src/task/types/TaskPluginOptions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskPluginOptions.js","sourceRoot":"","sources":["../../../src/task/types/TaskPluginOptions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@downcity/plugins",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.61",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Downcity 内建 plugin 集合包",
|
|
6
6
|
"main": "./bin/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"node-cron": "^4.2.1",
|
|
23
23
|
"ws": "^8.21.0",
|
|
24
24
|
"zod": "^4.4.3",
|
|
25
|
-
"@downcity/agent": "^1.1.
|
|
25
|
+
"@downcity/agent": "^1.1.107"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/better-sqlite3": "^7.6.13",
|
package/src/BuiltinPlugins.ts
CHANGED
|
@@ -16,6 +16,15 @@ import { ContactPlugin } from "@/contact/ContactPlugin.js";
|
|
|
16
16
|
import { TaskPlugin } from "@/task/TaskPlugin.js";
|
|
17
17
|
import { MemoryPlugin } from "@/memory/MemoryPlugin.js";
|
|
18
18
|
import { ShellPlugin } from "@/shell/ShellPlugin.js";
|
|
19
|
+
import { ImagePlugin } from "@/image/ImagePlugin.js";
|
|
20
|
+
import { AsrPlugin } from "@/asr/Plugin.js";
|
|
21
|
+
import { TtsPlugin } from "@/tts/Plugin.js";
|
|
22
|
+
import type { ImagePluginOptions } from "@/image/types/ImagePlugin.js";
|
|
23
|
+
import type { AsrPluginOptions } from "@/asr/types/AsrPlugin.js";
|
|
24
|
+
import type { TtsPluginOptions } from "@/tts/types/TtsPlugin.js";
|
|
25
|
+
import type { TaskPluginOptions } from "@/task/types/TaskPluginOptions.js";
|
|
26
|
+
import type { MemoryPluginOptions } from "@/memory/types/Memory.js";
|
|
27
|
+
import type { ShellPluginOptions } from "@/shell/types/ShellPluginOptions.js";
|
|
19
28
|
|
|
20
29
|
/**
|
|
21
30
|
* 内建 plugin class 构造器。
|
|
@@ -23,7 +32,9 @@ import { ShellPlugin } from "@/shell/ShellPlugin.js";
|
|
|
23
32
|
export type BuiltinPluginClass<T extends BasePlugin = BasePlugin> = new () => T;
|
|
24
33
|
|
|
25
34
|
/**
|
|
26
|
-
*
|
|
35
|
+
* 可直接无参创建的内建 plugin classes。
|
|
36
|
+
*
|
|
37
|
+
* 关键点(中文):image / asr / tts 需要宿主注入 City AI 能力,不能放入无参 class 列表。
|
|
27
38
|
*/
|
|
28
39
|
export const BUILTIN_PLUGIN_CLASSES: BuiltinPluginClass[] = [
|
|
29
40
|
SkillPlugin,
|
|
@@ -36,9 +47,62 @@ export const BUILTIN_PLUGIN_CLASSES: BuiltinPluginClass[] = [
|
|
|
36
47
|
ShellPlugin,
|
|
37
48
|
];
|
|
38
49
|
|
|
50
|
+
/**
|
|
51
|
+
* 内建 plugin 工厂参数。
|
|
52
|
+
*/
|
|
53
|
+
export interface BuiltinPluginOptions {
|
|
54
|
+
/**
|
|
55
|
+
* 图片生成 plugin 的 City AI 能力注入。
|
|
56
|
+
*/
|
|
57
|
+
image?: ImagePluginOptions;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 语音转写 plugin 的 City AI 能力注入。
|
|
61
|
+
*/
|
|
62
|
+
asr?: AsrPluginOptions;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* 文本转语音 plugin 的 City AI 能力注入。
|
|
66
|
+
*/
|
|
67
|
+
tts?: TtsPluginOptions;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* task plugin 的定时任务运行参数。
|
|
71
|
+
*/
|
|
72
|
+
task?: TaskPluginOptions;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* memory plugin 的 LLM Wiki 能力注入。
|
|
76
|
+
*/
|
|
77
|
+
memory?: MemoryPluginOptions;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* shell plugin 的可选 runtime 参数。
|
|
81
|
+
*/
|
|
82
|
+
shell?: ShellPluginOptions;
|
|
83
|
+
}
|
|
84
|
+
|
|
39
85
|
/**
|
|
40
86
|
* 创建完整内建 plugin 实例集合。
|
|
41
87
|
*/
|
|
42
|
-
export function createBuiltinPlugins(): BasePlugin[] {
|
|
43
|
-
|
|
88
|
+
export function createBuiltinPlugins(options: BuiltinPluginOptions = {}): BasePlugin[] {
|
|
89
|
+
const plugins = BUILTIN_PLUGIN_CLASSES.map((PluginClass) =>
|
|
90
|
+
PluginClass === TaskPlugin
|
|
91
|
+
? new TaskPlugin(options.task)
|
|
92
|
+
: PluginClass === MemoryPlugin
|
|
93
|
+
? new MemoryPlugin(options.memory)
|
|
94
|
+
: PluginClass === ShellPlugin
|
|
95
|
+
? new ShellPlugin(options.shell)
|
|
96
|
+
: new PluginClass(),
|
|
97
|
+
);
|
|
98
|
+
if (options.image?.image_create && options.image?.image_result) {
|
|
99
|
+
plugins.push(new ImagePlugin(options.image));
|
|
100
|
+
}
|
|
101
|
+
if (options.asr?.asr) {
|
|
102
|
+
plugins.push(new AsrPlugin(options.asr));
|
|
103
|
+
}
|
|
104
|
+
if (options.tts?.tts) {
|
|
105
|
+
plugins.push(new TtsPlugin(options.tts));
|
|
106
|
+
}
|
|
107
|
+
return plugins;
|
|
44
108
|
}
|
|
@@ -30,6 +30,7 @@ import type { ContactPingResponse } from "@/contact/types/ContactCheck.js";
|
|
|
30
30
|
import type { ContactChatResponse } from "@/contact/types/ContactChat.js";
|
|
31
31
|
import type { AgentContact } from "@/contact/types/Contact.js";
|
|
32
32
|
import type { SaveContactInboxShareInput } from "@/contact/types/ContactShare.js";
|
|
33
|
+
import type { ContactPluginOptions } from "@/contact/types/ContactPluginOptions.js";
|
|
33
34
|
import {
|
|
34
35
|
appendContactMessage,
|
|
35
36
|
createStableContactId,
|
|
@@ -145,8 +146,14 @@ export class ContactPlugin extends BasePlugin {
|
|
|
145
146
|
*/
|
|
146
147
|
readonly actions: PluginActions;
|
|
147
148
|
|
|
148
|
-
|
|
149
|
+
/**
|
|
150
|
+
* 当前实例持有的显式配置。
|
|
151
|
+
*/
|
|
152
|
+
public readonly options: ContactPluginOptions;
|
|
153
|
+
|
|
154
|
+
constructor(options?: ContactPluginOptions) {
|
|
149
155
|
super();
|
|
156
|
+
this.options = options || {};
|
|
150
157
|
this.actions = createContactActions({
|
|
151
158
|
link: async (context, payload) =>
|
|
152
159
|
(await this.link(context, payload)) as unknown as JsonValue,
|
|
@@ -164,11 +171,6 @@ export class ContactPlugin extends BasePlugin {
|
|
|
164
171
|
remoteShare: async (context, payload) =>
|
|
165
172
|
(await this.remoteShare(context, payload)) as unknown as JsonValue,
|
|
166
173
|
});
|
|
167
|
-
|
|
168
|
-
this.lifecycle = {
|
|
169
|
-
start: () => undefined,
|
|
170
|
-
stop: () => undefined,
|
|
171
|
-
};
|
|
172
174
|
}
|
|
173
175
|
|
|
174
176
|
/**
|
|
@@ -180,10 +182,16 @@ export class ContactPlugin extends BasePlugin {
|
|
|
180
182
|
|
|
181
183
|
private async link(context: AgentContext, payload: ContactLinkCommandPayload) {
|
|
182
184
|
const now = Date.now();
|
|
183
|
-
const ttlSeconds = Math.max(
|
|
185
|
+
const ttlSeconds = Math.max(
|
|
186
|
+
60,
|
|
187
|
+
Number(payload.ttlSeconds || this.options.ttlSeconds || 600),
|
|
188
|
+
);
|
|
184
189
|
const linkId = createContactId("link");
|
|
185
190
|
const secret = createContactToken();
|
|
186
|
-
const endpoint = await resolveSelfEndpoint(
|
|
191
|
+
const endpoint = await resolveSelfEndpoint(
|
|
192
|
+
context,
|
|
193
|
+
payload.endpoint || this.options.endpoint,
|
|
194
|
+
);
|
|
187
195
|
const agentName = getAgentName(context);
|
|
188
196
|
|
|
189
197
|
await saveContactLinkRecord(context.rootPath, {
|
|
@@ -228,7 +236,7 @@ export class ContactPlugin extends BasePlugin {
|
|
|
228
236
|
targetReachability === "loopback" ||
|
|
229
237
|
targetReachability === "private";
|
|
230
238
|
const requesterEndpointCandidate = shouldResolveRequesterEndpoint
|
|
231
|
-
? await resolveSelfEndpoint(context, payload.endpoint)
|
|
239
|
+
? await resolveSelfEndpoint(context, payload.endpoint || this.options.endpoint)
|
|
232
240
|
: undefined;
|
|
233
241
|
const callbackDecision = buildContactApproveCallbackDecision({
|
|
234
242
|
targetEndpoint: parsed.endpoint,
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContactPluginOptions:ContactPlugin 构造参数。
|
|
3
|
+
*
|
|
4
|
+
* 关键点(中文)
|
|
5
|
+
* - 这里只保留 agent 运行时真正需要的显式配置。
|
|
6
|
+
* - contact token、link secret 等协议密钥都由运行时自动生成,不从 constructor 传入。
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* ContactPlugin 构造参数。
|
|
11
|
+
*/
|
|
12
|
+
export interface ContactPluginOptions {
|
|
13
|
+
/**
|
|
14
|
+
* 当前 agent 对外可访问的 HTTP endpoint。
|
|
15
|
+
*
|
|
16
|
+
* 说明(中文)
|
|
17
|
+
* - 传入后会优先写入 `contact link` 生成的一次性联系码。
|
|
18
|
+
* - 适合反向代理、tunnel、公网域名等自动探测不可靠的环境。
|
|
19
|
+
*/
|
|
20
|
+
endpoint?: string;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 默认 link 有效秒数。
|
|
24
|
+
*
|
|
25
|
+
* 说明(中文)
|
|
26
|
+
* - `contact link` action 没有显式传 `ttlSeconds` 时使用该值。
|
|
27
|
+
* - 最终运行时仍会强制不少于 60 秒,避免生成过短的人工转交 code。
|
|
28
|
+
*/
|
|
29
|
+
ttlSeconds?: number;
|
|
30
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -11,8 +11,12 @@ export {
|
|
|
11
11
|
BUILTIN_PLUGIN_CLASSES,
|
|
12
12
|
createBuiltinPlugins,
|
|
13
13
|
} from "./BuiltinPlugins.js";
|
|
14
|
-
export type {
|
|
14
|
+
export type {
|
|
15
|
+
BuiltinPluginClass,
|
|
16
|
+
BuiltinPluginOptions,
|
|
17
|
+
} from "./BuiltinPlugins.js";
|
|
15
18
|
export { ChatPlugin } from "./chat/ChatPlugin.js";
|
|
19
|
+
export { ContactPlugin } from "./contact/ContactPlugin.js";
|
|
16
20
|
export {
|
|
17
21
|
FeishuChannel,
|
|
18
22
|
QqChannel,
|
|
@@ -25,6 +29,9 @@ export { WebPlugin } from "./web/Plugin.js";
|
|
|
25
29
|
export { AsrPlugin } from "./asr/Plugin.js";
|
|
26
30
|
export { TtsPlugin } from "./tts/Plugin.js";
|
|
27
31
|
export { WorkboardPlugin } from "./workboard/Plugin.js";
|
|
32
|
+
export { TaskPlugin } from "./task/TaskPlugin.js";
|
|
33
|
+
export { MemoryPlugin } from "./memory/MemoryPlugin.js";
|
|
34
|
+
export { ShellPlugin } from "./shell/ShellPlugin.js";
|
|
28
35
|
export {
|
|
29
36
|
listChatAuthorizationRoles,
|
|
30
37
|
readChatAuthorizationConfigSync,
|
|
@@ -54,6 +61,39 @@ export type {
|
|
|
54
61
|
ChatChannelRuntimePatch,
|
|
55
62
|
ChatPluginOptions,
|
|
56
63
|
} from "./chat/types/ChatPluginOptions.js";
|
|
64
|
+
export type { ContactPluginOptions } from "./contact/types/ContactPluginOptions.js";
|
|
65
|
+
export type { TaskPluginOptions } from "./task/types/TaskPluginOptions.js";
|
|
66
|
+
export type {
|
|
67
|
+
ResolvedShellPluginOptions,
|
|
68
|
+
ShellPluginOptions,
|
|
69
|
+
} from "./shell/types/ShellPluginOptions.js";
|
|
70
|
+
export type {
|
|
71
|
+
MemoryActionPayload,
|
|
72
|
+
MemoryDefaults,
|
|
73
|
+
MemoryDigestHandler,
|
|
74
|
+
MemoryDigestHandlerInput,
|
|
75
|
+
MemoryDigestHandlerOutput,
|
|
76
|
+
MemoryDigestPayload,
|
|
77
|
+
MemoryDigestResponse,
|
|
78
|
+
MemoryPluginOptions,
|
|
79
|
+
MemoryReadPayload,
|
|
80
|
+
MemoryReadResponse,
|
|
81
|
+
MemoryRememberPayload,
|
|
82
|
+
MemoryRememberResponse,
|
|
83
|
+
MemoryReviseHandler,
|
|
84
|
+
MemoryReviseHandlerInput,
|
|
85
|
+
MemoryReviseHandlerOutput,
|
|
86
|
+
MemoryRevisePayload,
|
|
87
|
+
MemoryReviseResponse,
|
|
88
|
+
MemorySearchMode,
|
|
89
|
+
MemorySearchPayload,
|
|
90
|
+
MemorySearchResponse,
|
|
91
|
+
MemorySearchResultItem,
|
|
92
|
+
MemorySourceStat,
|
|
93
|
+
MemorySourceType,
|
|
94
|
+
MemoryStatusResponse,
|
|
95
|
+
MemoryWikiPageDraft,
|
|
96
|
+
} from "./memory/types/Memory.js";
|
|
57
97
|
export type {
|
|
58
98
|
AsrPluginInput,
|
|
59
99
|
AsrPluginOptions,
|