evolcore 0.0.25 → 0.0.27
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 +632 -565
- package/LICENSE +21 -21
- package/README.md +455 -455
- package/bin/codex-managed-acl.ps1 +203 -160
- package/bin/codex-managed-hook.mjs +208 -208
- package/bin/ec-safe-output.js +327 -327
- package/bin/ec.js +40 -29
- package/bin/install-codex-managed-hooks.mjs +582 -555
- package/dist/agents/baseagent-availability.js +68 -0
- package/dist/agents/baseagent.js +96 -46
- package/dist/agents/claude-runner.js +172 -33
- package/dist/agents/codex/app-server-client.js +76 -31
- package/dist/agents/codex/catalog.js +1 -1
- package/dist/agents/codex/diagnostics.js +34 -1
- package/dist/agents/codex-runner.js +434 -446
- package/dist/agents/ecagent-runner.js +174 -34
- package/dist/agents/gemini-runner.js +8 -7
- package/dist/agents/runner-types.js +75 -19
- package/dist/aun/aid/agentmd.js +151 -36
- package/dist/aun/aid/client.js +1 -1
- package/dist/aun/aid/control-aid.js +180 -1
- package/dist/aun/aid/identity.js +4 -4
- package/dist/aun/aid/index.js +1 -1
- package/dist/aun/aid/store.js +17 -13
- package/dist/aun/group/history.js +303 -0
- package/dist/aun/group/identity.js +43 -0
- package/dist/aun/group/index.js +5 -0
- package/dist/aun/{msg/group.js → group/operations.js} +162 -39
- package/dist/aun/{menu-client.js → menu/client.js} +85 -6
- package/dist/aun/menu/index.js +2 -0
- package/dist/aun/menu/transport.js +49 -0
- package/dist/aun/msg/index.js +2 -1
- package/dist/aun/msg/managed-operation.js +85 -19
- package/dist/aun/msg/mention-schema.js +51 -0
- package/dist/aun/msg/p2p.js +19 -9
- package/dist/aun/msg/upload.js +43 -80
- package/dist/aun/outbox.js +29 -7
- package/dist/aun/rpc/client.js +1 -0
- package/dist/aun/storage/client.js +39 -50
- package/dist/channels/aun.js +842 -318
- package/dist/channels/daemon.js +10 -6
- package/dist/cli/agent-command.js +212 -89
- package/dist/cli/agent-create.js +626 -11
- package/dist/cli/agent.js +125 -13
- package/dist/cli/aun-commands.js +487 -337
- package/dist/cli/bench.js +20 -20
- package/dist/cli/config.js +55 -33
- package/dist/cli/contact.js +72 -15
- package/dist/cli/ctl-command.js +24 -24
- package/dist/cli/daemon-commands.js +140 -63
- package/dist/cli/diag.js +31 -0
- package/dist/cli/fs-command.js +70 -70
- package/dist/cli/handoff-command.js +46 -14
- package/dist/cli/index.js +91 -79
- package/dist/cli/init.js +34 -1
- package/dist/cli/link-rules.js +21 -21
- package/dist/cli/managed-command-guard.js +5 -1
- package/dist/cli/menu-client.js +51 -32
- package/dist/cli/model.js +3 -3
- package/dist/cli/net-check.js +22 -22
- package/dist/cli/queue-command.js +31 -31
- package/dist/cli/response.js +32 -32
- package/dist/cli/restart-monitor.js +103 -42
- package/dist/cli/stats.js +51 -51
- package/dist/cli/task-command.js +59 -0
- package/dist/cli/task-context.js +97 -49
- package/dist/cli/trigger-command.js +74 -64
- package/dist/config/builtin-roles.js +11 -0
- package/dist/config/config-field-policy.js +11 -0
- package/dist/config/config-manager.js +32 -4
- package/dist/config/config-operation-service.js +160 -0
- package/dist/config/contact-book-store.js +1 -1
- package/dist/config/contact-book.js +1 -1
- package/dist/config/contact-operation-service.js +97 -8
- package/dist/config/peer-role-resolver.js +1 -1
- package/dist/config/resolved-config-op.js +30 -7
- package/dist/config-store.js +1 -1
- package/dist/core/agent-application-service.js +7 -1
- package/dist/core/audit/event-key.js +17 -2
- package/dist/core/audit/log-integrity.js +34 -8
- package/dist/core/auth/agent-delegation.js +48 -14
- package/dist/core/auth/auth-gateway.js +2 -0
- package/dist/core/auth/authorization-audit.js +53 -49
- package/dist/core/auth/operation-authorizer.js +90 -7
- package/dist/core/auth/operation-catalog.js +145 -4
- package/dist/core/auth/remote-access-store.js +155 -10
- package/dist/core/bootstrap-messages.js +66 -7
- package/dist/core/bootstrap-service.js +111 -20
- package/dist/core/command/agent-control.js +88 -7
- package/dist/core/command/agent-storage-menu.js +443 -0
- package/dist/core/command/cli-intent-parser.js +19 -0
- package/dist/core/command/command-handler.js +159 -65
- package/dist/core/command/data-root-resolver.js +273 -0
- package/dist/core/command/diag-service.js +118 -0
- package/dist/core/command/group-menu.js +7 -2
- package/dist/core/command/menu-catalog.js +46 -7
- package/dist/core/command/menu-handler.js +392 -100
- package/dist/core/command/menu-protocol.js +45 -6
- package/dist/core/command/menu-token-store.js +41 -8
- package/dist/core/command/role-menu.js +2 -2
- package/dist/core/command/slash-gate.js +34 -4
- package/dist/core/command/slash-handler.js +123 -43
- package/dist/core/event-catalog.js +4 -0
- package/dist/core/evolagent-registry.js +28 -2
- package/dist/core/group/invite-service.js +924 -0
- package/dist/core/handoff/runtime.js +205 -27
- package/dist/core/handoff/store.js +193 -4
- package/dist/core/interaction-router.js +22 -8
- package/dist/core/message/im-renderer.js +146 -34
- package/dist/core/message/message-bridge.js +163 -20
- package/dist/core/message/message-log.js +5 -3
- package/dist/core/message/message-queue.js +99 -41
- package/dist/core/message/message-utils.js +1 -0
- package/dist/core/message/response-engine.js +755 -144
- package/dist/core/model/catalog-service.js +79 -49
- package/dist/core/model/context-window-suffix.js +33 -0
- package/dist/core/model/model-catalog.js +1 -1
- package/dist/core/model/model-permission.js +12 -3
- package/dist/core/permission/approval-gateway.js +36 -3
- package/dist/core/permission/ec-command-parser.js +112 -41
- package/dist/core/permission/protected-paths.js +134 -16
- package/dist/core/permission/sandbox-runtime.js +108 -17
- package/dist/core/permission/tool-error-code.js +15 -0
- package/dist/core/permission/tool-policy.js +9 -8
- package/dist/core/relation/peer-identity.js +57 -6
- package/dist/core/relation/shared-data.js +106 -0
- package/dist/core/role/runtime-policy.js +64 -0
- package/dist/core/runtime-lock.js +10 -26
- package/dist/core/session/runner-task-history.js +170 -0
- package/dist/core/session/session-manager.js +34 -6
- package/dist/core/session/session-mapper.js +41 -0
- package/dist/core/session/session-turn-coordinator.js +37 -7
- package/dist/core/session/session-turns.js +48 -7
- package/dist/core/task/task-recovery-service.js +176 -0
- package/dist/core/task/task-resume-operation.js +32 -0
- package/dist/eck/group-rules-sync.js +5 -3
- package/dist/eck/kit-renderer.js +1 -0
- package/dist/index.js +588 -217
- package/dist/ipc.js +193 -15
- package/dist/paths.js +17 -4
- package/dist/product.js +2 -0
- package/dist/response-system/engines/v1/proactive-flow.js +59 -2
- package/dist/stats/billing.js +41 -15
- package/dist/stats/db.js +159 -159
- package/dist/stats/eck-vars.js +9 -9
- package/dist/stats/price-resolver.js +28 -10
- package/dist/stats/query.js +139 -139
- package/dist/stats/role-budget.js +6 -6
- package/dist/stats/writer.js +51 -51
- package/dist/trigger/event-source.js +19 -0
- package/dist/trigger/feedback.js +233 -40
- package/dist/trigger/parser.js +55 -5
- package/dist/trigger/patch.js +9 -0
- package/dist/trigger/scheduler.js +30 -4
- package/dist/trigger/validation.js +20 -3
- package/dist/utils/cross-platform.js +30 -1
- package/dist/utils/ecweb-utils.js +1 -0
- package/dist/utils/error-dict.json +160 -160
- package/dist/utils/error-utils.js +61 -2
- package/dist/utils/evolcore-version.js +129 -0
- package/dist/utils/logger.js +26 -14
- package/dist/utils/macos-autostart.js +22 -22
- package/dist/utils/model-prices.jsonl +23 -23
- package/dist/utils/npm-ops.js +176 -35
- package/dist/utils/tool-summary.js +59 -3
- package/dist/utils/welcome.js +196 -23
- package/ecagent/LICENSE +21 -21
- package/ecagent/NOTICE +11 -11
- package/ecagent/README.md +61 -61
- package/ecagent/dist/harness/agent-harness.js +3 -0
- package/ecagent/dist/harness/compaction/branch-summarization.js +30 -30
- package/ecagent/dist/harness/compaction/compaction.js +83 -83
- package/ecagent/dist/harness/messages.js +7 -7
- package/ecagent/dist/harness/session/jsonl-storage.js +21 -2
- package/kits/docs/GUIDE.md +20 -20
- package/kits/docs/INDEX.md +60 -66
- package/kits/docs/aun/CHEATSHEET.md +19 -19
- package/kits/docs/aun/SYNC_PROTOCOL.md +15 -15
- package/kits/docs/channels/aun.md +69 -56
- package/kits/docs/channels/feishu.md +56 -56
- package/kits/docs/context-assembly.md +379 -367
- package/kits/docs/eck_templates/GUIDE.template.md +22 -22
- package/kits/docs/eck_templates/INDEX.template.md +28 -28
- package/kits/docs/eck_templates/path-registry.template.md +33 -33
- package/kits/docs/eck_templates/runtime.template.md +19 -19
- package/kits/docs/evolcore/INDEX.md +76 -71
- package/kits/docs/evolcore/agent-create.md +202 -165
- package/kits/docs/evolcore/agent.md +99 -67
- package/kits/docs/evolcore/aid.md +68 -60
- package/kits/docs/evolcore/codex-windows-sandbox.md +146 -146
- package/kits/docs/evolcore/config.md +241 -195
- package/kits/docs/evolcore/contact.md +75 -68
- package/kits/docs/evolcore/ctl.md +46 -46
- package/kits/docs/evolcore/event.md +216 -216
- package/kits/docs/evolcore/fs-architecture.md +1215 -1215
- package/kits/docs/evolcore/fs.md +110 -110
- package/kits/docs/evolcore/group-collaboration.md +244 -244
- package/kits/docs/evolcore/group-fs.md +17 -17
- package/kits/docs/evolcore/group-rules.md +251 -251
- package/kits/docs/evolcore/group.md +267 -152
- package/kits/docs/evolcore/menu-client.md +58 -34
- package/kits/docs/evolcore/model.md +50 -50
- package/kits/docs/evolcore/msg.md +169 -165
- package/kits/docs/evolcore/response.md +75 -75
- package/kits/docs/evolcore/rpc.md +37 -37
- package/kits/docs/evolcore/self-summary.md +29 -29
- package/kits/docs/evolcore/stats.md +83 -83
- package/kits/docs/evolcore/storage.md +53 -50
- package/kits/docs/evolcore/task.md +14 -0
- package/kits/docs/evolcore/trigger.md +623 -575
- package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -26
- package/kits/docs/identity/PATH_OPS.md +16 -16
- package/kits/docs/identity/ROLE_DETAIL.md +25 -25
- package/kits/docs/identity/identity-tools.md +26 -26
- package/kits/docs/path-registry.md +62 -62
- package/kits/docs/prompt-loading-architecture.md +269 -269
- package/kits/docs/venues/aun-group.md +45 -45
- package/kits/docs/venues/aun-private.md +10 -10
- package/kits/docs/venues/client-desktop.md +10 -10
- package/kits/docs/venues/client-mobile.md +10 -10
- package/kits/docs/venues/feishu-group.md +13 -13
- package/kits/docs/venues/feishu-private.md +9 -9
- package/kits/docs/venues/group.md +42 -25
- package/kits/docs/venues/private.md +10 -10
- package/kits/eck_manifest.auxiliary.json +43 -43
- package/kits/eck_manifest.json +217 -190
- package/kits/eck_message_manifest.json +74 -74
- package/kits/migrations/README-role-config-v4.md +32 -32
- package/kits/migrations/migrate-contact-book-v2.mjs +748 -748
- package/kits/migrations/migrate-role-config-v4.mjs +614 -614
- package/kits/migrations/migrate-role-config-v5.mjs +365 -365
- package/kits/migrations/rename-config-file.mjs +99 -99
- package/kits/rules/01-overview.md +166 -162
- package/kits/rules/02-navigation.md +96 -96
- package/kits/rules/03-identity.md +36 -36
- package/kits/rules/04-relation.md +76 -75
- package/kits/rules/05-venue.md +60 -60
- package/kits/rules/06-channel.md +65 -63
- package/kits/schemas/_meta.json +53 -53
- package/kits/schemas/agent-config.schema.1.json +177 -177
- package/kits/schemas/agent-config.schema.10.json +395 -395
- package/kits/schemas/agent-config.schema.11.json +421 -421
- package/kits/schemas/agent-config.schema.12.json +451 -427
- package/kits/schemas/agent-config.schema.2.json +239 -239
- package/kits/schemas/agent-config.schema.3.json +119 -119
- package/kits/schemas/agent-config.schema.4.json +208 -208
- package/kits/schemas/agent-config.schema.5.json +326 -326
- package/kits/schemas/agent-config.schema.6.json +322 -322
- package/kits/schemas/agent-config.schema.7.json +303 -303
- package/kits/schemas/agent-config.schema.8.json +304 -304
- package/kits/schemas/agent-config.schema.9.json +364 -364
- package/kits/schemas/contact-book.schema.1.json +36 -36
- package/kits/schemas/contact-book.schema.2.json +43 -43
- package/kits/schemas/contact-book.schema.3.json +67 -67
- package/kits/schemas/daemon.schema.1.json +91 -91
- package/kits/schemas/daemon.schema.2.json +101 -101
- package/kits/schemas/daemon.schema.3.json +123 -123
- package/kits/schemas/daemon.schema.4.json +136 -136
- package/kits/schemas/daemon.schema.5.json +135 -135
- package/kits/schemas/daemon.schema.6.json +131 -131
- package/kits/schemas/defaults.schema.1.json +81 -81
- package/kits/schemas/defaults.schema.2.json +85 -85
- package/kits/schemas/defaults.schema.3.json +73 -73
- package/kits/schemas/defaults.schema.4.json +107 -107
- package/kits/schemas/defaults.schema.5.json +119 -119
- package/kits/schemas/menu-exec-schema-commands.md +208 -208
- package/kits/schemas/migrations/README.md +30 -30
- package/kits/schemas/relation-config.schema.1.json +158 -158
- package/kits/schemas/relation-config.schema.2.json +73 -73
- package/kits/schemas/relation-config.schema.3.json +50 -50
- package/kits/schemas/relation-config.schema.4.json +47 -47
- package/kits/schemas/relation-config.schema.5.json +47 -47
- package/kits/schemas/relation-config.schema.6.json +46 -46
- package/kits/schemas/relation-config.schema.7.json +59 -59
- package/kits/schemas/relation-config.schema.8.json +103 -103
- package/kits/schemas/role-config.schema.1.json +215 -201
- package/kits/schemas/role-registry.schema.1.json +35 -35
- package/kits/schemas/single-session.schema.1.json +31 -31
- package/kits/schemas/single-session.schema.2.json +57 -57
- package/kits/schemas/single-session.schema.3.json +32 -32
- package/kits/templates/bootstrap-welcome.md +17 -17
- package/kits/templates/message-fragments/handoff-context-to-target.md +9 -9
- package/kits/templates/message-fragments/handoff-request-to-target.md +19 -19
- package/kits/templates/message-fragments/handoff-response-to-origin.md +9 -9
- package/kits/templates/message-fragments/inject-default.md +2 -2
- package/kits/templates/message-fragments/item.md +2 -2
- package/kits/templates/roles/admin.json +92 -92
- package/kits/templates/roles/member.json +101 -96
- package/kits/templates/roles/owner.json +9 -9
- package/kits/templates/roles/visitor.json +90 -85
- package/kits/templates/system-fragments/baseagent.md +14 -14
- package/kits/templates/system-fragments/bootstrap.md +53 -34
- package/kits/templates/system-fragments/channel.md +28 -64
- package/kits/templates/system-fragments/commands.md +36 -28
- package/kits/templates/system-fragments/group-unread-history.md +7 -0
- package/kits/templates/system-fragments/identity.md +13 -13
- package/kits/templates/system-fragments/relation.md +19 -19
- package/kits/templates/system-fragments/reply.md +56 -0
- package/kits/templates/system-fragments/session.md +59 -59
- package/kits/templates/system-fragments/venue.md +31 -31
- package/package.json +104 -98
- package/dist/aun/group-identity.js +0 -9
- /package/dist/aun/{group-fs-download.js → group/fs-download.js} +0 -0
- /package/dist/aun/{msg/group-index.js → group/index-rpc.js} +0 -0
package/dist/cli/bench.js
CHANGED
|
@@ -381,26 +381,26 @@ async function cliAuth(aid, slotId) {
|
|
|
381
381
|
// ==================== Main Command ====================
|
|
382
382
|
export async function cmdBench(args) {
|
|
383
383
|
if (isHelpFlag(args[0]) || wantsHelp(args)) {
|
|
384
|
-
console.log(`用法: ec bench [options]
|
|
385
|
-
|
|
386
|
-
AUN 消息系统性能基准测试。使用多个本地 AID 并发互发消息,
|
|
387
|
-
测量吞吐量、延迟、丢失率,以及认证性能和账号切换性能。
|
|
388
|
-
|
|
389
|
-
Options:
|
|
390
|
-
--aids N 使用的 AID 数量 (默认 3, 范围 2-10)
|
|
391
|
-
--rounds N 每个 AID 发送的消息轮数 (默认 20)
|
|
392
|
-
--concurrency N 最大并发发送数 (默认 5)
|
|
393
|
-
--wait N 发送后等待传播的秒数 (默认 3)
|
|
394
|
-
--encrypt 发送加密消息(E2EE)
|
|
395
|
-
--file 文件传输验证模式(压缩 evolcore 目录,拆片发送,接收后 MD5 校验+解压)
|
|
396
|
-
--cli 使用 CLI 子进程调用(测试完整命令行链路,含进程启动开销)
|
|
397
|
-
--aun-path <path> 自定义 AUN 目录
|
|
398
|
-
--format json 以 JSON 输出结果
|
|
399
|
-
|
|
400
|
-
示例:
|
|
401
|
-
ec bench --aids 5 --rounds 10
|
|
402
|
-
ec bench --file --rounds 50
|
|
403
|
-
ec bench --encrypt --aids 5 --rounds 20
|
|
384
|
+
console.log(`用法: ec bench [options]
|
|
385
|
+
|
|
386
|
+
AUN 消息系统性能基准测试。使用多个本地 AID 并发互发消息,
|
|
387
|
+
测量吞吐量、延迟、丢失率,以及认证性能和账号切换性能。
|
|
388
|
+
|
|
389
|
+
Options:
|
|
390
|
+
--aids N 使用的 AID 数量 (默认 3, 范围 2-10)
|
|
391
|
+
--rounds N 每个 AID 发送的消息轮数 (默认 20)
|
|
392
|
+
--concurrency N 最大并发发送数 (默认 5)
|
|
393
|
+
--wait N 发送后等待传播的秒数 (默认 3)
|
|
394
|
+
--encrypt 发送加密消息(E2EE)
|
|
395
|
+
--file 文件传输验证模式(压缩 evolcore 目录,拆片发送,接收后 MD5 校验+解压)
|
|
396
|
+
--cli 使用 CLI 子进程调用(测试完整命令行链路,含进程启动开销)
|
|
397
|
+
--aun-path <path> 自定义 AUN 目录
|
|
398
|
+
--format json 以 JSON 输出结果
|
|
399
|
+
|
|
400
|
+
示例:
|
|
401
|
+
ec bench --aids 5 --rounds 10
|
|
402
|
+
ec bench --file --rounds 50
|
|
403
|
+
ec bench --encrypt --aids 5 --rounds 20
|
|
404
404
|
ec bench --cli --aids 3 --rounds 5`);
|
|
405
405
|
return;
|
|
406
406
|
}
|
package/dist/cli/config.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { isHelpFlag, wantsHelp, getArgValue } from './help.js';
|
|
2
2
|
import { initConfigManager } from '../config/config-manager.js';
|
|
3
3
|
import { resolveConfigCommand } from '../config/resolved-config-op.js';
|
|
4
|
-
import { AUTHENTICATED_CONFIG_ROLE_ENV,
|
|
4
|
+
import { AUTHENTICATED_CONFIG_ROLE_ENV, executeResolvedConfigCommandAsync, } from '../config/config-operation-service.js';
|
|
5
5
|
import { ipcQuery } from '../ipc.js';
|
|
6
6
|
import { resolvePaths } from '../paths.js';
|
|
7
|
-
import { AGENT_DELEGATION_TOKEN_ENV } from '../core/auth/agent-delegation.js';
|
|
7
|
+
import { AGENT_DELEGATION_TOKEN_ENV, readDelegationCredential } from '../core/auth/agent-delegation.js';
|
|
8
8
|
import { splitConfigBatchGetArgv } from './cli-argv.js';
|
|
9
9
|
function emit(formatJson, payload, text) {
|
|
10
10
|
if (formatJson)
|
|
@@ -31,6 +31,7 @@ function getResultPayload(result) {
|
|
|
31
31
|
...(result.source ? { source: result.source } : {}),
|
|
32
32
|
...(result.schemaDefault ? { schemaDefault: true } : {}),
|
|
33
33
|
...(result.note ? { note: result.note } : {}),
|
|
34
|
+
...(result.roleDetails ? { role: result.roleDetails } : {}),
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
function getResultLine(result) {
|
|
@@ -39,7 +40,10 @@ function getResultLine(result) {
|
|
|
39
40
|
: !result.source
|
|
40
41
|
? `${result.field} = ${JSON.stringify(result.value)} (${result.scope})`
|
|
41
42
|
: `${result.field} = ${JSON.stringify(result.value)} [source: ${result.source.target}]`;
|
|
42
|
-
|
|
43
|
+
const role = result.roleDetails
|
|
44
|
+
? `\n role: explicit=${JSON.stringify(result.roleDetails.explicitRole)} effective=${JSON.stringify(result.roleDetails.effectiveRole)} [${result.roleDetails.effectiveRoleSource}]`
|
|
45
|
+
: '';
|
|
46
|
+
return `${head}${role}${result.note ? `\n ↳ ${result.note}` : ''}`;
|
|
43
47
|
}
|
|
44
48
|
function renderConfigExecution(result, formatJson) {
|
|
45
49
|
if (!result.ok)
|
|
@@ -56,6 +60,7 @@ function renderConfigExecution(result, formatJson) {
|
|
|
56
60
|
value: result.value,
|
|
57
61
|
scope: result.scope,
|
|
58
62
|
file: result.file,
|
|
63
|
+
...(result.roleDetails ? { role: result.roleDetails } : {}),
|
|
59
64
|
}, () => `Set ${result.field} = ${JSON.stringify(result.value)} [${result.scope}]`);
|
|
60
65
|
case 'unset':
|
|
61
66
|
return emit(formatJson, {
|
|
@@ -63,6 +68,7 @@ function renderConfigExecution(result, formatJson) {
|
|
|
63
68
|
field: result.field,
|
|
64
69
|
removed: result.removed,
|
|
65
70
|
...(result.removed ? { scope: result.scope } : {}),
|
|
71
|
+
...(result.roleDetails ? { role: result.roleDetails } : {}),
|
|
66
72
|
}, () => result.removed ? `Removed ${result.field} from ${result.scope}` : `${result.field} was not set`);
|
|
67
73
|
case 'show':
|
|
68
74
|
return emit(formatJson, { ok: true, scope: result.scope, configs: result.configs }, () => JSON.stringify(result.configs, null, 2));
|
|
@@ -122,7 +128,7 @@ function managedSession(formatJson) {
|
|
|
122
128
|
const sessionId = process.env.EVOLCORE_SESSION_ID;
|
|
123
129
|
if (!sessionId)
|
|
124
130
|
fail(formatJson, 'NO_SESSION', 'EVOLCORE_SESSION_ID is not set');
|
|
125
|
-
const delegationToken =
|
|
131
|
+
const delegationToken = readDelegationCredential();
|
|
126
132
|
if (!delegationToken) {
|
|
127
133
|
fail(formatJson, 'DELEGATION_REQUIRED', `${AGENT_DELEGATION_TOKEN_ENV} is not set for the active task`);
|
|
128
134
|
}
|
|
@@ -152,10 +158,13 @@ async function runManagedConfig(args, formatJson) {
|
|
|
152
158
|
renderConfigExecution(response.result, formatJson);
|
|
153
159
|
}
|
|
154
160
|
function renderBatchGet(results, formatJson) {
|
|
155
|
-
|
|
161
|
+
// Unsupported runner fields are compatibility misses, not a failure of the
|
|
162
|
+
// supported fields in the same aggregate request. Keep the per-field error
|
|
163
|
+
// while allowing clients to consume the successful values.
|
|
164
|
+
const batchOk = results.every(entry => entry.ok || entry.code === 'UNSUPPORTED_FIELD');
|
|
156
165
|
if (formatJson) {
|
|
157
166
|
console.log(JSON.stringify({
|
|
158
|
-
ok:
|
|
167
|
+
ok: batchOk,
|
|
159
168
|
results: results.map(entry => entry.ok
|
|
160
169
|
? getResultPayload(entry)
|
|
161
170
|
: { ok: false, field: entry.field, code: entry.code, error: entry.error }),
|
|
@@ -169,21 +178,21 @@ function renderBatchGet(results, formatJson) {
|
|
|
169
178
|
console.error(`${entry.field}: Error: ${entry.error} (${entry.code})`);
|
|
170
179
|
}
|
|
171
180
|
}
|
|
172
|
-
if (!
|
|
181
|
+
if (!batchOk)
|
|
173
182
|
process.exit(1);
|
|
174
183
|
}
|
|
175
|
-
function runDirectBatchGet(fields, rest, formatJson) {
|
|
176
|
-
const results = fields.map(field => {
|
|
184
|
+
async function runDirectBatchGet(fields, rest, formatJson) {
|
|
185
|
+
const results = await Promise.all(fields.map(async (field) => {
|
|
177
186
|
const resolved = resolveConfigCommand(['config', 'get', field, ...rest]);
|
|
178
187
|
if (!resolved.ok)
|
|
179
188
|
return { ok: false, field, code: resolved.code, error: resolved.reason };
|
|
180
|
-
const result =
|
|
189
|
+
const result = await executeResolvedConfigCommandAsync(resolved.command, { role: 'owner' });
|
|
181
190
|
if (!result.ok)
|
|
182
191
|
return { ok: false, field, code: result.code, error: result.error };
|
|
183
192
|
if (result.subcommand === 'get')
|
|
184
193
|
return result;
|
|
185
194
|
return { ok: false, field, code: 'UNEXPECTED_RESULT', error: `config get ${field} produced a non-get result` };
|
|
186
|
-
});
|
|
195
|
+
}));
|
|
187
196
|
renderBatchGet(results, formatJson);
|
|
188
197
|
}
|
|
189
198
|
async function runManagedBatchGet(fields, rest, formatJson) {
|
|
@@ -196,26 +205,31 @@ async function runManagedBatchGet(fields, rest, formatJson) {
|
|
|
196
205
|
}
|
|
197
206
|
renderConfigExecution(response.result, formatJson);
|
|
198
207
|
}
|
|
199
|
-
const HELP = `Usage: ec config <command> [options]
|
|
200
|
-
|
|
201
|
-
Fields:
|
|
202
|
-
get <field> [<field> ...] one or more fields (batch)
|
|
203
|
-
set <field> <value>
|
|
204
|
-
unset <field>
|
|
205
|
-
|
|
206
|
-
Scoped commands:
|
|
207
|
-
show | effective | fields [field] | validate | init
|
|
208
|
-
|
|
209
|
-
Global commands:
|
|
210
|
-
list | snapshot | prune | history | diff | restore | current | boots
|
|
211
|
-
schema overview of all schemas
|
|
212
|
-
schema <name> [<version>] view a schema definition
|
|
213
|
-
schema <name> --list list a schema's versions
|
|
214
|
-
|
|
215
|
-
Selectors:
|
|
216
|
-
--self <aid> [--peer <peerKey>] | --default | --process
|
|
217
|
-
|
|
218
|
-
|
|
208
|
+
const HELP = `Usage: ec config <command> [options]
|
|
209
|
+
|
|
210
|
+
Fields:
|
|
211
|
+
get <field> [<field> ...] one or more fields (batch)
|
|
212
|
+
set <field> <value>
|
|
213
|
+
unset <field>
|
|
214
|
+
|
|
215
|
+
Scoped commands:
|
|
216
|
+
show | effective | fields [field] | validate | init
|
|
217
|
+
|
|
218
|
+
Global commands:
|
|
219
|
+
list | snapshot | prune | history | diff | restore | current | boots
|
|
220
|
+
schema overview of all schemas
|
|
221
|
+
schema <name> [<version>] view a schema definition
|
|
222
|
+
schema <name> --list list a schema's versions
|
|
223
|
+
|
|
224
|
+
Selectors:
|
|
225
|
+
--self <aid> [--peer <peerKey>] | --default | --process
|
|
226
|
+
|
|
227
|
+
Relation role (AUN peer AID):
|
|
228
|
+
get role --self <aid> --peer <peer-aid>
|
|
229
|
+
set role <role-id> --self <aid> --peer <peer-aid>
|
|
230
|
+
unset role --self <aid> --peer <peer-aid>
|
|
231
|
+
|
|
232
|
+
Output:
|
|
219
233
|
--format json`;
|
|
220
234
|
export async function cmdConfig(args) {
|
|
221
235
|
const subcommand = args[0];
|
|
@@ -241,13 +255,21 @@ export async function cmdConfig(args) {
|
|
|
241
255
|
fail(formatJson, 'SCHEMA_INIT_FAILED', error instanceof Error ? error.message : String(error));
|
|
242
256
|
}
|
|
243
257
|
if (isBatchGet) {
|
|
244
|
-
runDirectBatchGet(batchGet.fields, batchGet.rest, formatJson);
|
|
258
|
+
await runDirectBatchGet(batchGet.fields, batchGet.rest, formatJson);
|
|
245
259
|
return;
|
|
246
260
|
}
|
|
247
261
|
const resolved = resolveConfigCommand(['config', ...args]);
|
|
248
262
|
if (!resolved.ok)
|
|
249
263
|
fail(formatJson, resolved.code, resolved.reason);
|
|
250
|
-
renderConfigExecution(
|
|
264
|
+
renderConfigExecution(await executeResolvedConfigCommandAsync(resolved.command, {
|
|
251
265
|
role: process.env[AUTHENTICATED_CONFIG_ROLE_ENV],
|
|
266
|
+
roleContext: {
|
|
267
|
+
self: resolved.command.self || '',
|
|
268
|
+
actorRole: process.env[AUTHENTICATED_CONFIG_ROLE_ENV] || 'owner',
|
|
269
|
+
actorRoleSource: 'local-cli',
|
|
270
|
+
isDaemonOwner: false,
|
|
271
|
+
fromControlChannel: false,
|
|
272
|
+
aunAvailable: true,
|
|
273
|
+
},
|
|
252
274
|
}), formatJson);
|
|
253
275
|
}
|
package/dist/cli/contact.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { resolvePaths } from '../paths.js';
|
|
2
|
+
import { loadAllAgents } from '../config-store.js';
|
|
2
3
|
import { executeResolvedContactCommand, resolveContactCommand, } from '../config/contact-operation-service.js';
|
|
3
4
|
import { ipcQuery } from '../ipc.js';
|
|
4
|
-
import { AGENT_DELEGATION_TOKEN_ENV } from '../core/auth/agent-delegation.js';
|
|
5
|
+
import { AGENT_DELEGATION_TOKEN_ENV, readDelegationCredential } from '../core/auth/agent-delegation.js';
|
|
5
6
|
import { getArgValue, isHelpFlag, wantsHelp } from './help.js';
|
|
6
7
|
export async function cmdContact(args) {
|
|
7
8
|
if (args.length === 0 || isHelpFlag(args[0]) || wantsHelp(args)) {
|
|
@@ -14,9 +15,17 @@ export async function cmdContact(args) {
|
|
|
14
15
|
output(result, json);
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
if (!args.includes('--self') && isListCommand(args) && !process.env.EVOLCORE_SELF_AID?.trim()) {
|
|
19
|
+
output(await executeAggregateList(args), json);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const resolved = resolveContactCommand(withDefaultSelf(args));
|
|
23
|
+
if (!resolved.ok) {
|
|
24
|
+
const message = resolved.code === 'INVALID_SELF' && !args.includes('--self')
|
|
25
|
+
? `${resolved.reason}; multiple local Agents are configured, add --self <agent-aid>`
|
|
26
|
+
: resolved.reason;
|
|
27
|
+
fail(message, resolved.code);
|
|
28
|
+
}
|
|
20
29
|
const result = await executeResolvedContactCommand(resolved.command);
|
|
21
30
|
if (!result.ok)
|
|
22
31
|
fail(result.error, result.code, result.data);
|
|
@@ -30,7 +39,7 @@ function output(value, json) {
|
|
|
30
39
|
}
|
|
31
40
|
async function runManaged(args, json) {
|
|
32
41
|
const sessionId = process.env.EVOLCORE_SESSION_ID;
|
|
33
|
-
const delegationToken =
|
|
42
|
+
const delegationToken = readDelegationCredential();
|
|
34
43
|
if (!delegationToken)
|
|
35
44
|
fail(`${AGENT_DELEGATION_TOKEN_ENV} is not set for the active task`, 'DELEGATION_REQUIRED');
|
|
36
45
|
let response = null;
|
|
@@ -58,15 +67,63 @@ function fail(message, code = 'INVALID_ARGUMENT', data) {
|
|
|
58
67
|
throw error;
|
|
59
68
|
}
|
|
60
69
|
function printHelp() {
|
|
61
|
-
console.log(`Usage:
|
|
62
|
-
ec contact add <primaryId> --self <agent-aid>
|
|
63
|
-
ec contact block <primaryId> --self <agent-aid>
|
|
64
|
-
ec contact unblock <primaryId> --self <agent-aid>
|
|
65
|
-
ec contact list --blocked --self <agent-aid>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
--self <agent-aid>
|
|
69
|
-
--
|
|
70
|
-
--
|
|
70
|
+
console.log(`Usage:
|
|
71
|
+
ec contact add <primaryId> --self <agent-aid>
|
|
72
|
+
ec contact block <primaryId> --self <agent-aid>
|
|
73
|
+
ec contact unblock <primaryId> --self <agent-aid>
|
|
74
|
+
ec contact list --blocked [--self <agent-aid>]
|
|
75
|
+
ec contact list --pending [--self <agent-aid>]
|
|
76
|
+
ec contact list --all [--self <agent-aid>]
|
|
77
|
+
ec contact approve <primaryId> --request-id <id> [--self <agent-aid>]
|
|
78
|
+
ec contact reject <primaryId> --request-id <id> [--self <agent-aid>]
|
|
79
|
+
ec contact block-request <primaryId> --request-id <id> [--self <agent-aid>]
|
|
80
|
+
|
|
81
|
+
Options:
|
|
82
|
+
--self <agent-aid> 本端 agent AID;省略时从当前运行环境推断
|
|
83
|
+
--blocked 仅列出已拉黑联系人
|
|
84
|
+
--pending 仅列出待审核联系人申请
|
|
85
|
+
--all 列出所有联系人及状态
|
|
86
|
+
--request-id <id> 联系人申请 ID(审批命令必填)
|
|
87
|
+
--contact-revision <revision> 申请审批时使用的联系人版本(可选)
|
|
88
|
+
--format json 输出 JSON
|
|
71
89
|
--help, -h 显示帮助`);
|
|
72
90
|
}
|
|
91
|
+
function withDefaultSelf(args) {
|
|
92
|
+
if (args.includes('--self'))
|
|
93
|
+
return args;
|
|
94
|
+
const selfAid = resolveStandaloneSelfAid();
|
|
95
|
+
return selfAid ? [...args, '--self', selfAid] : args;
|
|
96
|
+
}
|
|
97
|
+
function isListCommand(args) {
|
|
98
|
+
return args[0] === 'list';
|
|
99
|
+
}
|
|
100
|
+
async function executeAggregateList(args) {
|
|
101
|
+
const agents = loadAllAgents().agents.map(agent => agent.aid).filter(Boolean).sort();
|
|
102
|
+
const results = [];
|
|
103
|
+
for (const aid of agents) {
|
|
104
|
+
const resolved = resolveContactCommand([...args, '--self', aid]);
|
|
105
|
+
if (!resolved.ok)
|
|
106
|
+
fail(resolved.reason, resolved.code);
|
|
107
|
+
const result = await executeResolvedContactCommand(resolved.command);
|
|
108
|
+
if (!result.ok)
|
|
109
|
+
fail(result.error, result.code, result.data);
|
|
110
|
+
results.push(result);
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
ok: true,
|
|
114
|
+
operation: args.includes('--blocked') ? 'list-blocked'
|
|
115
|
+
: args.includes('--pending') ? 'list-pending' : 'list-all',
|
|
116
|
+
scope: 'all-agents',
|
|
117
|
+
agents: results,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Resolve the local Agent identity for standalone CLI commands. */
|
|
121
|
+
export function resolveStandaloneSelfAid() {
|
|
122
|
+
const runtimeAid = process.env.EVOLCORE_SELF_AID?.trim();
|
|
123
|
+
if (runtimeAid)
|
|
124
|
+
return runtimeAid;
|
|
125
|
+
const agents = loadAllAgents().agents
|
|
126
|
+
.map(agent => agent.aid)
|
|
127
|
+
.filter(Boolean);
|
|
128
|
+
return agents.length === 1 ? agents[0] : undefined;
|
|
129
|
+
}
|
package/dist/cli/ctl-command.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { resolvePaths } from '../paths.js';
|
|
2
2
|
import { ipcQuery } from '../ipc.js';
|
|
3
3
|
import { isHelpFlag, wantsHelp } from './help.js';
|
|
4
|
-
import {
|
|
4
|
+
import { readDelegationCredential } from '../core/auth/agent-delegation.js';
|
|
5
5
|
// ==================== Ctl ====================
|
|
6
|
-
const CTL_HELP = `用法: ec ctl <command> [args...]
|
|
7
|
-
|
|
8
|
-
查询:
|
|
9
|
-
status 查看会话状态
|
|
10
|
-
status --format json 查看当前任务的结构化运行上下文
|
|
11
|
-
pwd 显示当前项目路径
|
|
12
|
-
help 显示帮助
|
|
13
|
-
|
|
14
|
-
会话:
|
|
15
|
-
name <名称> 重命名当前会话
|
|
16
|
-
|
|
17
|
-
消息:
|
|
18
|
-
send <消息内容> 主动发送文本消息(proactive 模式)
|
|
19
|
-
file [channel] <path> 发送项目内文件
|
|
20
|
-
queue [--after <time>] [--before <time>] 查看/管理会话消息队列
|
|
21
|
-
|
|
22
|
-
示例:
|
|
23
|
-
ec ctl status
|
|
24
|
-
ec ctl status --format json
|
|
25
|
-
ec ctl name "新会话名称"
|
|
26
|
-
ec ctl send "任务已完成"
|
|
27
|
-
ec ctl file report.md
|
|
6
|
+
const CTL_HELP = `用法: ec ctl <command> [args...]
|
|
7
|
+
|
|
8
|
+
查询:
|
|
9
|
+
status 查看会话状态
|
|
10
|
+
status --format json 查看当前任务的结构化运行上下文
|
|
11
|
+
pwd 显示当前项目路径
|
|
12
|
+
help 显示帮助
|
|
13
|
+
|
|
14
|
+
会话:
|
|
15
|
+
name <名称> 重命名当前会话
|
|
16
|
+
|
|
17
|
+
消息:
|
|
18
|
+
send <消息内容> 主动发送文本消息(proactive 模式)
|
|
19
|
+
file [channel] <path> 发送项目内文件
|
|
20
|
+
queue [--after <time>] [--before <time>] 查看/管理会话消息队列
|
|
21
|
+
|
|
22
|
+
示例:
|
|
23
|
+
ec ctl status
|
|
24
|
+
ec ctl status --format json
|
|
25
|
+
ec ctl name "新会话名称"
|
|
26
|
+
ec ctl send "任务已完成"
|
|
27
|
+
ec ctl file report.md
|
|
28
28
|
ec ctl queue --full`;
|
|
29
29
|
export async function cmdCtl(args) {
|
|
30
30
|
if (args.length === 0) {
|
|
@@ -47,7 +47,7 @@ export async function cmdCtl(args) {
|
|
|
47
47
|
type: 'ctl',
|
|
48
48
|
cmd,
|
|
49
49
|
sessionId,
|
|
50
|
-
delegationToken:
|
|
50
|
+
delegationToken: readDelegationCredential(),
|
|
51
51
|
}, 10_000);
|
|
52
52
|
if (!result) {
|
|
53
53
|
console.error('错误: 无法连接 evolcore 服务');
|