evolcore 0.0.32 → 0.0.33
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 +24 -0
- package/bin/install-codex-managed-hooks.mjs +124 -37
- package/dist/agents/claude-runner.js +29 -2
- package/dist/agents/codex/app-server-client.js +3 -0
- package/dist/agents/codex/diagnostics.js +76 -44
- package/dist/agents/codex-runner.js +23 -19
- package/dist/agents/ecagent-runner.js +5 -13
- package/dist/aun/group/operations.js +0 -1
- package/dist/aun/msg/history.js +1 -0
- package/dist/aun/msg/p2p.js +0 -1
- package/dist/aun/outbox.js +50 -1
- package/dist/channels/aun.js +28 -2
- package/dist/channels/daemon.js +257 -2
- package/dist/cli/agent-command.js +58 -24
- package/dist/cli/agent.js +1 -1
- package/dist/cli/aun-commands.js +365 -29
- package/dist/cli/contact.js +8 -2
- package/dist/cli/daemon-commands.js +81 -12
- package/dist/cli/debug-mode.js +154 -0
- package/dist/cli/handoff-command.js +3 -0
- package/dist/cli/index.js +81 -64
- package/dist/cli/init.js +2 -2
- package/dist/cli/managed-command-guard.js +5 -0
- package/dist/cli/memory-command.js +8 -1
- package/dist/cli/queue-command.js +9 -4
- package/dist/cli/session-command.js +194 -0
- package/dist/cli/skill-command.js +78 -2
- package/dist/cli/task-context.js +1 -0
- package/dist/cli/thread-command.js +620 -0
- package/dist/cli/trigger-command.js +4 -2
- package/dist/config/builtin-roles.js +1 -0
- package/dist/config/config-field-policy.js +2 -3
- package/dist/config/config-manager.js +7 -2
- package/dist/config/resolved-config-op.js +3 -0
- package/dist/config-store.js +15 -0
- package/dist/core/auth/agent-delegation.js +25 -1
- package/dist/core/auth/debug-context.js +139 -0
- package/dist/core/auth/operation-authorizer.js +24 -1
- package/dist/core/auth/operation-catalog.js +33 -0
- package/dist/core/background-session/session-cleanup.js +212 -0
- package/dist/core/background-session/types.js +10 -0
- package/dist/core/bootstrap-messages.js +1 -1
- package/dist/core/bootstrap-service.js +6 -3
- package/dist/core/command/command-handler.js +60 -24
- package/dist/core/command/memory-slash.js +6 -2
- package/dist/core/command/menu-catalog.js +48 -1
- package/dist/core/command/menu-handler.js +92 -16
- package/dist/core/command/menu-protocol.js +24 -1
- package/dist/core/command/skill-slash.js +322 -0
- package/dist/core/command/slash-gate.js +6 -4
- package/dist/core/command/slash-handler.js +193 -13
- package/dist/core/command/topic-slash.js +528 -0
- package/dist/core/evolagent-registry.js +20 -5
- package/dist/core/handoff/runtime.js +5 -11
- package/dist/core/handoff/store.js +5 -0
- package/dist/core/ipc-registration.js +139 -2
- package/dist/core/memory/consolidation-context.js +49 -16
- package/dist/core/memory/consolidation-ops-records.js +35 -0
- package/dist/core/memory/consolidation-queue-format.js +21 -0
- package/dist/core/memory/consolidation.js +174 -180
- package/dist/core/message/aun-ipc-sender.js +161 -6
- package/dist/core/message/im-renderer.js +149 -6
- package/dist/core/message/message-bridge.js +13 -3
- package/dist/core/message/message-log.js +1 -0
- package/dist/core/message/peer-mode.js +6 -1
- package/dist/core/message/response-engine.js +349 -67
- package/dist/core/message/subtask-tool-projection.js +140 -0
- package/dist/core/model/catalog-service.js +17 -12
- package/dist/core/permission/ec-command-parser.js +126 -7
- package/dist/core/session/session-idle-monitor.js +249 -22
- package/dist/core/session/session-manager.js +54 -9
- package/dist/core/skill/command-parser.js +13 -0
- package/dist/core/skill/index-generator.js +4 -1
- package/dist/core/skill/startup.js +41 -0
- package/dist/core/skill/switch-resolver.js +55 -29
- package/dist/core/thread/command-parser.js +125 -0
- package/dist/core/thread/index.js +1 -0
- package/dist/core/thread/ipc-operation.js +95 -0
- package/dist/core/thread/thread-context-storage.js +131 -0
- package/dist/core/thread/thread-operation.js +258 -0
- package/dist/core/thread/thread-route.js +33 -0
- package/dist/core/thread/thread-service.js +777 -0
- package/dist/core/thread/types.js +1 -0
- package/dist/eck/message-renderer.js +35 -0
- package/dist/index.js +8 -5
- package/dist/ipc.js +89 -10
- package/dist/paths.js +23 -0
- package/dist/response-system/engines/v1/proactive-flow.js +169 -80
- package/dist/trigger/authorization.js +57 -28
- package/dist/trigger/feedback.js +7 -1
- package/dist/trigger/parser.js +63 -1
- package/dist/trigger/validation.js +14 -0
- package/dist/utils/error-utils.js +22 -1
- package/kits/docs/context-assembly.md +1 -0
- package/kits/docs/evolcore/INDEX.md +1 -0
- package/kits/docs/evolcore/agent-create.md +39 -28
- package/kits/docs/evolcore/agent.md +19 -4
- package/kits/docs/evolcore/ec-capabilities.md +4 -0
- package/kits/docs/evolcore/group-collaboration.md +3 -5
- package/kits/docs/evolcore/group.md +3 -4
- package/kits/docs/evolcore/memory-consolidation.md +1 -1
- package/kits/docs/evolcore/menu-exec-schema-commands.md +2 -2
- package/kits/docs/evolcore/menu-protocol.md +7 -0
- package/kits/docs/evolcore/msg.md +5 -8
- package/kits/docs/evolcore/thread-chain.md +267 -0
- package/kits/docs/prompt-loading-architecture.md +1 -0
- package/kits/eck_manifest.json +61 -26
- package/kits/eck_message_manifest.json +169 -10
- package/kits/rules/05-venue.md +1 -1
- package/kits/rules/07-memory-and-thread.md +202 -0
- package/kits/schemas/relation-config.schema.9.json +18 -3
- package/kits/schemas/role-config.schema.1.json +6 -6
- package/kits/schemas/single-session.schema.1.json +6 -6
- package/kits/schemas/single-session.schema.2.json +6 -6
- package/kits/schemas/single-session.schema.3.json +6 -6
- package/kits/skills/.switches.json +12 -1
- package/kits/skills/ec-group/SKILL.md +234 -0
- package/kits/skills/ec-skill/SKILL.md +10 -1
- package/kits/skills/ec-skill/scripts/cli.mjs +15 -1
- package/kits/skills/scrapling-article-fetch/SKILL.md +128 -0
- package/kits/skills/scrapling-article-fetch/scripts/check_python_env.py +54 -0
- package/kits/skills/scrapling-article-fetch/scripts/render_markdown_reply.py +35 -0
- package/kits/skills/scrapling-article-fetch/scripts/run_pipeline.sh +16 -0
- package/kits/skills/scrapling-article-fetch/scripts/scrapling_fetch.py +344 -0
- package/kits/skills/thread-ops/SKILL.md +492 -0
- package/kits/skills/wechat-article-media-download/SKILL.md +65 -0
- package/kits/skills/wechat-article-media-download/scripts/download.py +163 -0
- package/kits/skills/wechat-article-reader/SKILL.md +97 -0
- package/kits/skills/wechat-article-reader/scripts/fetch.mjs +256 -0
- package/kits/templates/bootstrap-welcome.md +7 -7
- package/kits/templates/memory-consolidation/forget.md +5 -0
- package/kits/templates/memory-consolidation/generalize.md +5 -0
- package/kits/templates/memory-consolidation/profile.md +5 -0
- package/kits/templates/memory-consolidation/promote.md +5 -0
- package/kits/templates/message-fragments/item.md +2 -1
- package/kits/templates/message-fragments/thread-context.md +6 -0
- package/kits/templates/message-fragments/trigger-session.md +2 -0
- package/kits/templates/message-fragments/trigger-thread-check.md +2 -0
- package/kits/templates/roles/member.json +2 -0
- package/kits/templates/roles/visitor.json +2 -0
- package/kits/templates/system-fragments/bootstrap.md +66 -72
- package/kits/templates/system-fragments/channel.md +3 -6
- package/kits/templates/system-fragments/commands.md +1 -0
- package/kits/templates/system-fragments/managed-runtime.md +15 -0
- package/kits/templates/system-fragments/reply.md +3 -2
- package/kits/templates/system-fragments/session.md +5 -14
- package/package.json +3 -1
- package/kits/docs/evolcore/group-fs.md +0 -17
- package/kits/docs/venues/aun-group.md +0 -45
- package/kits/docs/venues/group.md +0 -43
package/dist/cli/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { cmdStart, cmdStop, cmdRestart, cmdStatus, cmdLogs, cmdWatchCommand, cmd
|
|
|
20
20
|
import { logCliCommand } from './command-log.js';
|
|
21
21
|
import { isInitCancelledError, printInitCancelHint } from './init-cancel.js';
|
|
22
22
|
import { assertManagedTopLevelCommandAllowed, ManagedCommandNotAllowedError } from './managed-command-guard.js';
|
|
23
|
+
import { resolveDebugContext, stripAsSessionArgs } from './debug-mode.js';
|
|
23
24
|
const MAIN_HELP = `用法: ec <command> [选项]
|
|
24
25
|
|
|
25
26
|
服务:
|
|
@@ -35,6 +36,7 @@ Agent 与会话:
|
|
|
35
36
|
agent 管理 EvolAgent
|
|
36
37
|
ctl 当前托管会话的控制命令
|
|
37
38
|
queue 查询或操作 agent 消息队列
|
|
39
|
+
session 按 ec 会话 id 查询本地 session 存档(含 agentSessionId)
|
|
38
40
|
task 恢复暂停或异常中断的会话任务
|
|
39
41
|
trigger 管理定时与事件触发器
|
|
40
42
|
handoff 查询和完成跨会话回流
|
|
@@ -102,8 +104,12 @@ export async function main(args) {
|
|
|
102
104
|
return;
|
|
103
105
|
}
|
|
104
106
|
const cmd = args[0] || 'start';
|
|
107
|
+
// 调试路径:--as-session <sessionId> 注入托管会话身份,必须在白名单检查之前
|
|
108
|
+
await resolveDebugContext(args);
|
|
109
|
+
// 注入完成后剥除 --as-session <sessionId> 两个参数,避免子命令把它们当作未知参数
|
|
110
|
+
const strippedArgs = stripAsSessionArgs(args);
|
|
105
111
|
try {
|
|
106
|
-
assertManagedTopLevelCommandAllowed(cmd,
|
|
112
|
+
assertManagedTopLevelCommandAllowed(cmd, strippedArgs);
|
|
107
113
|
}
|
|
108
114
|
catch (error) {
|
|
109
115
|
if (!(error instanceof ManagedCommandNotAllowedError))
|
|
@@ -112,7 +118,7 @@ export async function main(args) {
|
|
|
112
118
|
process.exitCode = 1;
|
|
113
119
|
return;
|
|
114
120
|
}
|
|
115
|
-
logCliCommand(cmd,
|
|
121
|
+
logCliCommand(cmd, strippedArgs);
|
|
116
122
|
if (cmd === '--version' || cmd === '-v' || cmd === '-V') {
|
|
117
123
|
const pkg = JSON.parse(fs.readFileSync(path.join(getPackageRoot(), 'package.json'), 'utf-8'));
|
|
118
124
|
console.log(pkg.version);
|
|
@@ -125,7 +131,7 @@ export async function main(args) {
|
|
|
125
131
|
switch (cmd) {
|
|
126
132
|
case 'init': {
|
|
127
133
|
try {
|
|
128
|
-
if (wantsHelp(
|
|
134
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
129
135
|
console.log(`用法: ec init [渠道] [选项]
|
|
130
136
|
|
|
131
137
|
仅初始化 defaults.json:
|
|
@@ -155,49 +161,49 @@ export async function main(args) {
|
|
|
155
161
|
ec init wecom 企业微信 AI Bot 扫码创建/手工配置`);
|
|
156
162
|
}
|
|
157
163
|
else {
|
|
158
|
-
const hasChannelTarget = Boolean(
|
|
164
|
+
const hasChannelTarget = Boolean(strippedArgs[1] && !strippedArgs[1].startsWith('-'));
|
|
159
165
|
if (hasChannelTarget)
|
|
160
166
|
printInitCancelHint();
|
|
161
|
-
if (
|
|
167
|
+
if (strippedArgs[1] === 'aun') {
|
|
162
168
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
163
169
|
suppressSdkLogs();
|
|
164
170
|
await cmdInitAun();
|
|
165
171
|
}
|
|
166
|
-
else if (
|
|
172
|
+
else if (strippedArgs[1] === 'wechat') {
|
|
167
173
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
168
174
|
suppressSdkLogs();
|
|
169
175
|
await cmdInitWechat();
|
|
170
176
|
}
|
|
171
|
-
else if (
|
|
177
|
+
else if (strippedArgs[1] === 'feishu') {
|
|
172
178
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
173
179
|
suppressSdkLogs();
|
|
174
180
|
await cmdInitFeishu();
|
|
175
181
|
}
|
|
176
|
-
else if (
|
|
182
|
+
else if (strippedArgs[1] === 'dingtalk') {
|
|
177
183
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
178
184
|
suppressSdkLogs();
|
|
179
185
|
await cmdInitDingtalk();
|
|
180
186
|
}
|
|
181
|
-
else if (
|
|
187
|
+
else if (strippedArgs[1] === 'qqbot') {
|
|
182
188
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
183
189
|
suppressSdkLogs();
|
|
184
190
|
await cmdInitQQBot();
|
|
185
191
|
}
|
|
186
|
-
else if (
|
|
192
|
+
else if (strippedArgs[1] === 'wecom') {
|
|
187
193
|
await cmdInitWecom();
|
|
188
194
|
}
|
|
189
|
-
else if (
|
|
195
|
+
else if (strippedArgs[1] && !strippedArgs[1].startsWith('-')) {
|
|
190
196
|
const supported = ['feishu', 'wechat', 'aun', 'dingtalk', 'qqbot', 'wecom'];
|
|
191
|
-
console.error(`❌ 不支持的渠道: ${
|
|
197
|
+
console.error(`❌ 不支持的渠道: ${strippedArgs[1]}`);
|
|
192
198
|
console.error(` 支持的渠道: ${supported.join(', ')}`);
|
|
193
199
|
process.exit(1);
|
|
194
200
|
}
|
|
195
201
|
else {
|
|
196
202
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
197
203
|
suppressSdkLogs();
|
|
198
|
-
const nonInteractive =
|
|
199
|
-
const wantsAutoStart =
|
|
200
|
-
const wantsNoAutoStart =
|
|
204
|
+
const nonInteractive = strippedArgs.includes('--non-interactive');
|
|
205
|
+
const wantsAutoStart = strippedArgs.includes('--auto-start');
|
|
206
|
+
const wantsNoAutoStart = strippedArgs.includes('--no-auto-start');
|
|
201
207
|
if (wantsAutoStart && wantsNoAutoStart) {
|
|
202
208
|
console.error('❌ --auto-start 与 --no-auto-start 不能同时使用');
|
|
203
209
|
process.exitCode = 1;
|
|
@@ -205,12 +211,12 @@ export async function main(args) {
|
|
|
205
211
|
}
|
|
206
212
|
const initialized = await cmdInit({
|
|
207
213
|
nonInteractive,
|
|
208
|
-
baseagent: getArgValue(
|
|
209
|
-
force:
|
|
210
|
-
owner: getArgValue(
|
|
211
|
-
projectpath: getArgValue(
|
|
212
|
-
ecweb:
|
|
213
|
-
format: getArgValue(
|
|
214
|
+
baseagent: getArgValue(strippedArgs, '--baseagent'),
|
|
215
|
+
force: strippedArgs.includes('--force'),
|
|
216
|
+
owner: getArgValue(strippedArgs, '--owner'),
|
|
217
|
+
projectpath: getArgValue(strippedArgs, '--projectpath'),
|
|
218
|
+
ecweb: strippedArgs.includes('--ecweb') ? true : undefined,
|
|
219
|
+
format: getArgValue(strippedArgs, '--format'),
|
|
214
220
|
autoStart: wantsAutoStart ? true : wantsNoAutoStart ? false : undefined,
|
|
215
221
|
});
|
|
216
222
|
if (!initialized && process.exitCode == null)
|
|
@@ -227,31 +233,32 @@ export async function main(args) {
|
|
|
227
233
|
break;
|
|
228
234
|
}
|
|
229
235
|
case 'start':
|
|
230
|
-
if (wantsHelp(
|
|
236
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
231
237
|
printLifecycleHelp('start');
|
|
232
238
|
break;
|
|
233
239
|
}
|
|
234
240
|
await cmdStart({
|
|
235
|
-
diagnose:
|
|
236
|
-
foreground:
|
|
241
|
+
diagnose: strippedArgs.includes('--diagnose') || strippedArgs.includes('-d'),
|
|
242
|
+
foreground: strippedArgs.includes('--foreground'),
|
|
243
|
+
debug: strippedArgs.includes('--debug'),
|
|
237
244
|
});
|
|
238
245
|
break;
|
|
239
246
|
case 'stop':
|
|
240
|
-
if (wantsHelp(
|
|
247
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
241
248
|
printLifecycleHelp('stop');
|
|
242
249
|
break;
|
|
243
250
|
}
|
|
244
251
|
await cmdStop();
|
|
245
252
|
break;
|
|
246
253
|
case 'restart':
|
|
247
|
-
if (wantsHelp(
|
|
254
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
248
255
|
printLifecycleHelp('restart');
|
|
249
256
|
break;
|
|
250
257
|
}
|
|
251
|
-
await cmdRestart({ clear:
|
|
258
|
+
await cmdRestart({ clear: strippedArgs.includes('--clear'), diagnose: strippedArgs.includes('--diagnose') || strippedArgs.includes('-d') });
|
|
252
259
|
break;
|
|
253
260
|
case 'status':
|
|
254
|
-
if (wantsHelp(
|
|
261
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
255
262
|
printLifecycleHelp('status');
|
|
256
263
|
break;
|
|
257
264
|
}
|
|
@@ -273,21 +280,21 @@ export async function main(args) {
|
|
|
273
280
|
}
|
|
274
281
|
break;
|
|
275
282
|
case 'logs':
|
|
276
|
-
if (wantsHelp(
|
|
283
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
277
284
|
printLifecycleHelp('logs');
|
|
278
285
|
break;
|
|
279
286
|
}
|
|
280
|
-
cmdLogs(
|
|
287
|
+
cmdLogs(strippedArgs.slice(1));
|
|
281
288
|
break;
|
|
282
289
|
case 'watch':
|
|
283
|
-
if (wantsHelp(
|
|
290
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
284
291
|
printLifecycleHelp('watch');
|
|
285
292
|
break;
|
|
286
293
|
}
|
|
287
|
-
await cmdWatchCommand(
|
|
294
|
+
await cmdWatchCommand(strippedArgs.slice(1));
|
|
288
295
|
break;
|
|
289
296
|
case 'restart-monitor':
|
|
290
|
-
if (wantsHelp(
|
|
297
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
291
298
|
printLifecycleHelp('restart-monitor');
|
|
292
299
|
break;
|
|
293
300
|
}
|
|
@@ -297,7 +304,7 @@ export async function main(args) {
|
|
|
297
304
|
try {
|
|
298
305
|
// 开发源码仓可提供 mode.js;正式 npm 包可以不携带该内部命令。
|
|
299
306
|
const { cmdMode } = await import('./mode.js');
|
|
300
|
-
await cmdMode(
|
|
307
|
+
await cmdMode(strippedArgs.slice(1));
|
|
301
308
|
}
|
|
302
309
|
catch (error) {
|
|
303
310
|
if (error?.code === 'ERR_MODULE_NOT_FOUND' && /(?:^|[\\/])mode\.js(?:$|')/.test(String(error?.message ?? ''))) {
|
|
@@ -309,70 +316,70 @@ export async function main(args) {
|
|
|
309
316
|
}
|
|
310
317
|
break;
|
|
311
318
|
case 'mv':
|
|
312
|
-
if (wantsHelp(
|
|
319
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
313
320
|
printLifecycleHelp('mv');
|
|
314
321
|
break;
|
|
315
322
|
}
|
|
316
|
-
await cmdMv(
|
|
323
|
+
await cmdMv(strippedArgs[1], strippedArgs[2]);
|
|
317
324
|
break;
|
|
318
325
|
case 'diagnose':
|
|
319
|
-
if (wantsHelp(
|
|
326
|
+
if (wantsHelp(strippedArgs.slice(1))) {
|
|
320
327
|
printLifecycleHelp('diagnose');
|
|
321
328
|
break;
|
|
322
329
|
}
|
|
323
|
-
await cmdDiagnose(
|
|
330
|
+
await cmdDiagnose(strippedArgs.slice(1));
|
|
324
331
|
break;
|
|
325
332
|
case 'data': {
|
|
326
333
|
const { cmdData } = await import('./data-command.js');
|
|
327
|
-
await cmdData(
|
|
334
|
+
await cmdData(strippedArgs.slice(1));
|
|
328
335
|
break;
|
|
329
336
|
}
|
|
330
337
|
case 'net': {
|
|
331
338
|
const { cmdNet } = await import('./net-check.js');
|
|
332
|
-
await cmdNet(
|
|
339
|
+
await cmdNet(strippedArgs.slice(1));
|
|
333
340
|
break;
|
|
334
341
|
}
|
|
335
342
|
case 'ctl':
|
|
336
|
-
await cmdCtl(
|
|
343
|
+
await cmdCtl(strippedArgs.slice(1));
|
|
337
344
|
break;
|
|
338
345
|
case 'memory':
|
|
339
|
-
await cmdMemory(
|
|
346
|
+
await cmdMemory(strippedArgs.slice(1));
|
|
340
347
|
break;
|
|
341
348
|
case 'queue':
|
|
342
|
-
await cmdQueue(
|
|
349
|
+
await cmdQueue(strippedArgs.slice(1));
|
|
343
350
|
break;
|
|
344
351
|
case 'task': {
|
|
345
352
|
const { cmdTask } = await import('./task-command.js');
|
|
346
|
-
await cmdTask(
|
|
353
|
+
await cmdTask(strippedArgs.slice(1));
|
|
347
354
|
break;
|
|
348
355
|
}
|
|
349
356
|
case 'trigger':
|
|
350
357
|
{
|
|
351
358
|
const { cmdTrigger } = await import('./trigger-command.js');
|
|
352
|
-
await cmdTrigger(
|
|
359
|
+
await cmdTrigger(strippedArgs.slice(1));
|
|
353
360
|
}
|
|
354
361
|
break;
|
|
355
362
|
case 'agent': {
|
|
356
363
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
357
364
|
suppressSdkLogs();
|
|
358
|
-
await cmdAgent(
|
|
365
|
+
await cmdAgent(strippedArgs.slice(1));
|
|
359
366
|
break;
|
|
360
367
|
}
|
|
361
368
|
case 'aid': {
|
|
362
369
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
363
370
|
suppressSdkLogs();
|
|
364
|
-
await cmdAid(
|
|
371
|
+
await cmdAid(strippedArgs.slice(1));
|
|
365
372
|
break;
|
|
366
373
|
}
|
|
367
374
|
case 'rpc': {
|
|
368
375
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
369
376
|
suppressSdkLogs();
|
|
370
|
-
await cmdRpc(
|
|
377
|
+
await cmdRpc(strippedArgs.slice(1));
|
|
371
378
|
break;
|
|
372
379
|
}
|
|
373
380
|
case 'diag': {
|
|
374
381
|
const { cmdDiag } = await import('./diag.js');
|
|
375
|
-
await cmdDiag(
|
|
382
|
+
await cmdDiag(strippedArgs.slice(1));
|
|
376
383
|
break;
|
|
377
384
|
}
|
|
378
385
|
case 'menu-client': {
|
|
@@ -380,7 +387,7 @@ export async function main(args) {
|
|
|
380
387
|
suppressSdkLogs();
|
|
381
388
|
const { cmdMenuClient } = await import('./menu-client.js');
|
|
382
389
|
try {
|
|
383
|
-
await cmdMenuClient(
|
|
390
|
+
await cmdMenuClient(strippedArgs.slice(1));
|
|
384
391
|
}
|
|
385
392
|
catch (error) {
|
|
386
393
|
const payload = {
|
|
@@ -397,80 +404,90 @@ export async function main(args) {
|
|
|
397
404
|
case 'storage': {
|
|
398
405
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
399
406
|
suppressSdkLogs();
|
|
400
|
-
await cmdStorage(
|
|
407
|
+
await cmdStorage(strippedArgs.slice(1));
|
|
401
408
|
break;
|
|
402
409
|
}
|
|
403
410
|
case 'fs': {
|
|
404
411
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
405
412
|
suppressSdkLogs();
|
|
406
413
|
const { cmdFs } = await import('./fs-command.js');
|
|
407
|
-
await cmdFs(
|
|
414
|
+
await cmdFs(strippedArgs.slice(1));
|
|
408
415
|
break;
|
|
409
416
|
}
|
|
410
417
|
case 'msg': {
|
|
411
418
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
412
419
|
suppressSdkLogs();
|
|
413
|
-
await cmdMsg(
|
|
420
|
+
await cmdMsg(strippedArgs.slice(1));
|
|
414
421
|
break;
|
|
415
422
|
}
|
|
416
423
|
case 'handoff': {
|
|
417
424
|
const { cmdHandoff } = await import('./handoff-command.js');
|
|
418
|
-
await cmdHandoff(
|
|
425
|
+
await cmdHandoff(strippedArgs.slice(1));
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
case 'thread': {
|
|
429
|
+
const { runThreadCommand } = await import('./thread-command.js');
|
|
430
|
+
await runThreadCommand(strippedArgs.slice(1));
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
case 'session': {
|
|
434
|
+
const { runSessionCommand } = await import('./session-command.js');
|
|
435
|
+
await runSessionCommand(strippedArgs.slice(1));
|
|
419
436
|
break;
|
|
420
437
|
}
|
|
421
438
|
case 'group': {
|
|
422
439
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
423
440
|
suppressSdkLogs();
|
|
424
|
-
await cmdGroup(
|
|
441
|
+
await cmdGroup(strippedArgs.slice(1));
|
|
425
442
|
break;
|
|
426
443
|
}
|
|
427
444
|
case 'model': {
|
|
428
445
|
const { cmdModel } = await import('./model.js');
|
|
429
|
-
await cmdModel(
|
|
446
|
+
await cmdModel(strippedArgs.slice(1));
|
|
430
447
|
break;
|
|
431
448
|
}
|
|
432
449
|
case 'skill': {
|
|
433
450
|
const { cmdSkill } = await import('./skill-command.js');
|
|
434
|
-
await cmdSkill(
|
|
451
|
+
await cmdSkill(strippedArgs.slice(1));
|
|
435
452
|
break;
|
|
436
453
|
}
|
|
437
454
|
case 'response': {
|
|
438
455
|
const { cmdResponse } = await import('./response.js');
|
|
439
|
-
await cmdResponse(
|
|
456
|
+
await cmdResponse(strippedArgs.slice(1));
|
|
440
457
|
break;
|
|
441
458
|
}
|
|
442
459
|
case 'config': {
|
|
443
460
|
const { cmdConfig } = await import('./config.js');
|
|
444
|
-
await cmdConfig(
|
|
461
|
+
await cmdConfig(strippedArgs.slice(1));
|
|
445
462
|
break;
|
|
446
463
|
}
|
|
447
464
|
case 'contact': {
|
|
448
465
|
const { cmdContact } = await import('./contact.js');
|
|
449
|
-
await cmdContact(
|
|
466
|
+
await cmdContact(strippedArgs.slice(1));
|
|
450
467
|
break;
|
|
451
468
|
}
|
|
452
469
|
case 'stats': {
|
|
453
470
|
const { handleStats } = await import('./stats.js');
|
|
454
|
-
await handleStats(
|
|
471
|
+
await handleStats(strippedArgs.slice(1));
|
|
455
472
|
break;
|
|
456
473
|
}
|
|
457
474
|
case 'version':
|
|
458
475
|
case '-v':
|
|
459
476
|
case '--version': {
|
|
460
477
|
const { handleVersion } = await import('./version.js');
|
|
461
|
-
handleVersion(
|
|
478
|
+
handleVersion(strippedArgs.slice(1));
|
|
462
479
|
break;
|
|
463
480
|
}
|
|
464
481
|
case 'bench': {
|
|
465
482
|
const { suppressSdkLogs } = await import('../aun/aid/index.js');
|
|
466
483
|
suppressSdkLogs();
|
|
467
484
|
const { cmdBench } = await import('./bench.js');
|
|
468
|
-
await cmdBench(
|
|
485
|
+
await cmdBench(strippedArgs.slice(1));
|
|
469
486
|
break;
|
|
470
487
|
}
|
|
471
488
|
case 'link-rules': {
|
|
472
489
|
const { cmdLinkRules } = await import('./link-rules.js');
|
|
473
|
-
cmdLinkRules(
|
|
490
|
+
cmdLinkRules(strippedArgs.slice(1));
|
|
474
491
|
break;
|
|
475
492
|
}
|
|
476
493
|
default:
|
package/dist/cli/init.js
CHANGED
|
@@ -561,8 +561,8 @@ export async function initTail(options = {}) {
|
|
|
561
561
|
async function handleOwnersPrompt(rl) {
|
|
562
562
|
const daemonConfigForOwners = loadDaemonConfig();
|
|
563
563
|
if (daemonConfigForOwners.aid && (!daemonConfigForOwners.owners || daemonConfigForOwners.owners.length === 0)) {
|
|
564
|
-
const needOwner = (await ask(rl, '\n是否配置进程级管理者(Owner AID)?[
|
|
565
|
-
if (needOwner === 'y' || needOwner === 'yes') {
|
|
564
|
+
const needOwner = (await ask(rl, '\n是否配置进程级管理者(Owner AID)?[Y/n] ')).trim().toLowerCase();
|
|
565
|
+
if (!needOwner || needOwner === 'y' || needOwner === 'yes') {
|
|
566
566
|
console.log('\n📡 进程级管理者绑定 — 请用 evol app 扫描二维码\n');
|
|
567
567
|
// QR 绑定流程需要暂时关闭 rl,因为它会创建自己的输入监听
|
|
568
568
|
rl.pause();
|
|
@@ -18,8 +18,13 @@ const MANAGED_TASK_COMMANDS = new Set([
|
|
|
18
18
|
'msg',
|
|
19
19
|
'queue',
|
|
20
20
|
'response',
|
|
21
|
+
// `session` 按 ec 会话 id 只读查询本地 session 存档(meta 文件尾行的
|
|
22
|
+
// agentSessionId 等),不触碰 daemon 与进程生命周期。
|
|
23
|
+
'session',
|
|
21
24
|
// `skill` 管理 EC 技能(安装/开关/校验)。它的主要使用者就是 agent 自己——
|
|
22
25
|
// ec-skill 技能的 SKILL.md 明确指导 agent 调用它。脚本只读写
|
|
26
|
+
// `thread` 提供话题链操作,通过 thread.op IPC 鉴权
|
|
27
|
+
'thread',
|
|
23
28
|
// $EVOLCORE_HOME/skills/ 与 kits/skills/ 下的技能文件,不触碰进程生命周期。
|
|
24
29
|
// 本白名单只负责让它进到脚本;具体某一级的读写权限由 skill.mjs 的
|
|
25
30
|
// assertPermission() 按会话上下文判定(群聊一律拒,Agent 级要 owner,
|
|
@@ -16,6 +16,7 @@ import { ipcQuery } from '../ipc.js';
|
|
|
16
16
|
import { isHelpFlag, wantsHelp } from './help.js';
|
|
17
17
|
import { readDelegationCredential } from '../core/auth/agent-delegation.js';
|
|
18
18
|
import { canonicalizeEvolcoreCommandArgv } from '../core/permission/ec-command-parser.js';
|
|
19
|
+
import { formatQueueDetails } from '../core/memory/consolidation-queue-format.js';
|
|
19
20
|
export const MEMORY_MODES = ['notes', 'generalize', 'promote', 'profile', 'forget'];
|
|
20
21
|
const MEMORY_HELP = `用法: ec memory <command> [选项]
|
|
21
22
|
|
|
@@ -462,12 +463,18 @@ async function cmdMemoryConsolidate(args) {
|
|
|
462
463
|
type: 'memory.consolidate', argv: ['memory', 'consolidate', ...args], ...session, mode,
|
|
463
464
|
}, 30_000);
|
|
464
465
|
reportResult(result, (r) => {
|
|
466
|
+
if (r.queued) {
|
|
467
|
+
console.log(`⏳ 整理请求已入队(${mode} 模式),前一个整理会话结束后自动启动`);
|
|
468
|
+
for (const line of formatQueueDetails(r.queued))
|
|
469
|
+
console.log(` ${line}`);
|
|
470
|
+
console.log('启动后整理结果会反馈到发起会话。');
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
465
473
|
console.log(`✓ 整理会话已启动(${mode} 模式)`);
|
|
466
474
|
if (r.triggerId)
|
|
467
475
|
console.log(` triggerId: ${r.triggerId}`);
|
|
468
476
|
if (r.executionSessionId)
|
|
469
477
|
console.log(` sessionId: ${r.executionSessionId}`);
|
|
470
|
-
console.log(` agentSessionId: ${r.agentSessionId ?? '(会话仍在初始化,稍后用 sessionId 查)'}`);
|
|
471
478
|
if (r.contextFilePath)
|
|
472
479
|
console.log(` context: ${r.contextFilePath}`);
|
|
473
480
|
console.log('整理会话在后台继续运行。');
|
|
@@ -158,12 +158,17 @@ export function parseQueueOperationArgv(argv) {
|
|
|
158
158
|
const valueFlags = new Set(['--agent', '--cancel', '--sessionkey', '--after', '--before', '--format']);
|
|
159
159
|
for (let index = 1; index < argv.length; index++) {
|
|
160
160
|
const flag = argv[index];
|
|
161
|
-
if (booleanFlags.has(flag))
|
|
161
|
+
if (booleanFlags.has(flag)) {
|
|
162
162
|
flags.set(flag, 'true');
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
}
|
|
164
|
+
else if (valueFlags.has(flag) && argv[index + 1] && !argv[index + 1].startsWith('--')) {
|
|
165
|
+
if (!flags.has(flag))
|
|
166
|
+
flags.set(flag, argv[index + 1]);
|
|
167
|
+
index++;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
166
170
|
throw new Error(`Invalid queue option: ${flag}`);
|
|
171
|
+
}
|
|
167
172
|
}
|
|
168
173
|
const agent = flags.get('--agent');
|
|
169
174
|
if (!agent)
|