@yeaft/webchat-agent 1.0.131 → 1.0.133
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/package.json +1 -1
- package/yeaft/work-center/bridge.js +48 -28
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@ import { WorkCenterService } from './service.js';
|
|
|
7
7
|
import { WorkItemRunner } from './runner.js';
|
|
8
8
|
import { projectWorkCenterEvent, projectWorkItemDetail } from './projection.js';
|
|
9
9
|
import { previewWorkCenterPlan } from './planner.js';
|
|
10
|
-
import { readWorkCenterSettings } from './settings.js';
|
|
10
|
+
import { readWorkCenterSettings, writeWorkCenterSettings } from './settings.js';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
|
|
13
13
|
let service = null;
|
|
@@ -26,9 +26,45 @@ async function getRuntime() {
|
|
|
26
26
|
return ensureSessionLoaded();
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
function requireYeaftDir() {
|
|
30
30
|
const yeaftDir = ctx.CONFIG?.yeaftDir;
|
|
31
31
|
if (!yeaftDir) throw new Error('Work Center requires a configured Yeaft directory');
|
|
32
|
+
return yeaftDir;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async function getSettingsRuntime() {
|
|
36
|
+
const runtime = await getRuntime();
|
|
37
|
+
const yeaftDir = requireYeaftDir();
|
|
38
|
+
if (defaultRegistry.vpCount() === 0) {
|
|
39
|
+
for (const vp of scanVpLibrary({ dir: join(yeaftDir, 'virtual-persons') })) defaultRegistry.setVp(vp);
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
vps: defaultRegistry.listVps().map(vp => ({
|
|
43
|
+
id: vp.id,
|
|
44
|
+
name: vp.name || vp.id,
|
|
45
|
+
nameZh: vp.nameZh || '',
|
|
46
|
+
role: vp.role || '',
|
|
47
|
+
roleZh: vp.roleZh || '',
|
|
48
|
+
area: vp.area || '',
|
|
49
|
+
traits: Array.isArray(vp.traits) ? vp.traits : [],
|
|
50
|
+
modelHint: vp.modelHint || null,
|
|
51
|
+
})),
|
|
52
|
+
models: Array.isArray(runtime.config.availableModels) ? runtime.config.availableModels : [],
|
|
53
|
+
primaryModel: runtime.config.primaryModel || runtime.config.model || null,
|
|
54
|
+
fastModel: runtime.config.fastModel || null,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function readSettingsResponse() {
|
|
59
|
+
const yeaftDir = requireYeaftDir();
|
|
60
|
+
return {
|
|
61
|
+
settings: readWorkCenterSettings(yeaftDir),
|
|
62
|
+
runtime: await getSettingsRuntime(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function createDefaultService() {
|
|
67
|
+
const yeaftDir = requireYeaftDir();
|
|
32
68
|
const runner = new WorkItemRunner({
|
|
33
69
|
runtimeProvider: async () => {
|
|
34
70
|
const runtime = await getRuntime();
|
|
@@ -46,27 +82,7 @@ async function createDefaultService() {
|
|
|
46
82
|
const created = new WorkCenterService({
|
|
47
83
|
yeaftDir,
|
|
48
84
|
runner,
|
|
49
|
-
runtimeInfoProvider:
|
|
50
|
-
const runtime = await getRuntime();
|
|
51
|
-
if (defaultRegistry.vpCount() === 0) {
|
|
52
|
-
for (const vp of scanVpLibrary({ dir: join(yeaftDir, 'virtual-persons') })) defaultRegistry.setVp(vp);
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
vps: defaultRegistry.listVps().map(vp => ({
|
|
56
|
-
id: vp.id,
|
|
57
|
-
name: vp.name || vp.id,
|
|
58
|
-
nameZh: vp.nameZh || '',
|
|
59
|
-
role: vp.role || '',
|
|
60
|
-
roleZh: vp.roleZh || '',
|
|
61
|
-
area: vp.area || '',
|
|
62
|
-
traits: Array.isArray(vp.traits) ? vp.traits : [],
|
|
63
|
-
modelHint: vp.modelHint || null,
|
|
64
|
-
})),
|
|
65
|
-
models: Array.isArray(runtime.config.availableModels) ? runtime.config.availableModels : [],
|
|
66
|
-
primaryModel: runtime.config.primaryModel || runtime.config.model || null,
|
|
67
|
-
fastModel: runtime.config.fastModel || null,
|
|
68
|
-
};
|
|
69
|
-
},
|
|
85
|
+
runtimeInfoProvider: getSettingsRuntime,
|
|
70
86
|
onEvent(event) {
|
|
71
87
|
send({ type: 'work_center_event', event: projectWorkCenterEvent(event) });
|
|
72
88
|
},
|
|
@@ -109,12 +125,15 @@ export async function handleWorkCenterRequest(msg) {
|
|
|
109
125
|
const requestId = typeof msg.requestId === 'string' ? msg.requestId : null;
|
|
110
126
|
const op = typeof msg.op === 'string' ? msg.op : '';
|
|
111
127
|
try {
|
|
112
|
-
const workCenter = await ensureWorkCenter();
|
|
113
128
|
let data;
|
|
114
|
-
if (op === '
|
|
129
|
+
if (op === 'get_settings') {
|
|
130
|
+
data = await readSettingsResponse();
|
|
131
|
+
} else if (op === 'update_settings') {
|
|
132
|
+
const settings = writeWorkCenterSettings(requireYeaftDir(), msg.payload?.settings);
|
|
133
|
+
data = { settings, runtime: await getSettingsRuntime() };
|
|
134
|
+
} else if (op === 'preview') {
|
|
115
135
|
const runtime = await getRuntime();
|
|
116
|
-
const yeaftDir =
|
|
117
|
-
if (!yeaftDir) throw new Error('Work Center requires a configured Yeaft directory');
|
|
136
|
+
const yeaftDir = requireYeaftDir();
|
|
118
137
|
if (defaultRegistry.vpCount() === 0) {
|
|
119
138
|
for (const vp of scanVpLibrary({ dir: join(yeaftDir, 'virtual-persons') })) defaultRegistry.setVp(vp);
|
|
120
139
|
}
|
|
@@ -127,8 +146,9 @@ export async function handleWorkCenterRequest(msg) {
|
|
|
127
146
|
});
|
|
128
147
|
} else if (op === 'refresh_runtime') {
|
|
129
148
|
await resetYeaftSession();
|
|
130
|
-
data = await
|
|
149
|
+
data = await readSettingsResponse();
|
|
131
150
|
} else {
|
|
151
|
+
const workCenter = await ensureWorkCenter();
|
|
132
152
|
data = await workCenter.handle(op, msg.payload || {});
|
|
133
153
|
}
|
|
134
154
|
if (BROWSER_DETAIL_OPS.has(op)) data = projectWorkItemDetail(data);
|