evolcore 0.0.20 → 0.0.22
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 +65 -0
- package/README.md +58 -9
- package/bin/codex-managed-hook.mjs +3 -0
- package/bin/install-codex-managed-hooks.mjs +3 -1
- package/dist/agents/baseagent.js +10 -6
- package/dist/agents/claude-runner.js +393 -108
- package/dist/agents/codex-app-server-client.js +41 -7
- package/dist/agents/codex-runner.js +1292 -220
- package/dist/agents/ecagent-runner.js +171 -61
- package/dist/agents/gemini-runner.js +130 -30
- package/dist/agents/request-identity.js +25 -0
- package/dist/agents/runner-types.js +19 -0
- package/dist/aun/aid/agentmd.js +59 -2
- package/dist/aun/aid/identity.js +4 -1
- package/dist/aun/aid/index.js +1 -1
- package/dist/aun/msg/group.js +72 -6
- package/dist/aun/msg/history.js +213 -36
- package/dist/aun/msg/managed-operation.js +58 -9
- package/dist/aun/msg/p2p.js +5 -0
- package/dist/aun/outbox.js +189 -80
- package/dist/aun/service-proxy.js +43 -25
- package/dist/channels/aun.js +618 -123
- package/dist/channels/daemon.js +6 -1
- package/dist/cli/agent-command.js +4 -3
- package/dist/cli/agent.js +66 -56
- package/dist/cli/aun-commands.js +177 -42
- package/dist/cli/command-log.js +10 -11
- package/dist/cli/contact.js +1 -0
- package/dist/cli/daemon-commands.js +98 -123
- package/dist/cli/init.js +27 -15
- package/dist/cli/task-context.js +50 -0
- package/dist/cli/trigger-command.js +14 -5
- package/dist/cli/watch-logs.js +10 -3
- package/dist/config/builtin-roles.js +1 -0
- package/dist/config/config-field-policy.js +19 -5
- package/dist/config/config-manager.js +167 -22
- package/dist/config/contact-book-store.js +25 -3
- package/dist/config/contact-operation-service.js +32 -1
- package/dist/config/contact-request-service.js +44 -0
- package/dist/config/daemon-services.js +186 -0
- package/dist/config/gateway-config.js +20 -9
- package/dist/config/role-service.js +54 -3
- package/dist/config/schema-migration.js +550 -0
- package/dist/config-store.js +151 -9
- package/dist/core/agent-application-service.js +279 -0
- package/dist/core/audit/log-integrity.js +102 -0
- package/dist/core/auth/agent-delegation.js +43 -1
- package/dist/core/auth/auth-gateway.js +41 -4
- package/dist/core/auth/authorization-audit.js +216 -8
- package/dist/core/auth/operation-authorizer.js +41 -1
- package/dist/core/auth/operation-catalog.js +9 -1
- package/dist/core/bootstrap-messages.js +8 -0
- package/dist/core/bootstrap-service.js +99 -27
- package/dist/core/causation/aun-association.js +7 -4
- package/dist/core/command/agent-control.js +56 -16
- package/dist/core/command/command-handler.js +311 -44
- package/dist/core/command/connect-menu.js +3 -4
- package/dist/core/command/group-menu.js +5 -7
- package/dist/core/command/menu-handler.js +288 -80
- package/dist/core/command/menu-protocol.js +1 -1
- package/dist/core/command/role-menu.js +21 -11
- package/dist/core/command/slash-gate.js +85 -18
- package/dist/core/command/slash-handler.js +377 -36
- package/dist/core/data-migration.js +11 -1
- package/dist/core/event-catalog.js +37 -0
- package/dist/core/evolagent.js +4 -0
- package/dist/core/handoff/dispatcher.js +4 -0
- package/dist/core/handoff/runtime.js +33 -3
- package/dist/core/handoff/store.js +32 -9
- package/dist/core/inference/text-inference.js +7 -15
- package/dist/core/message/im-renderer.js +90 -87
- package/dist/core/message/{inbound-admission.js → message-admission.js} +51 -1
- package/dist/core/message/message-bridge.js +184 -12
- package/dist/core/message/message-log.js +47 -7
- package/dist/core/message/message-queue.js +227 -16
- package/dist/core/message/message-utils.js +12 -5
- package/dist/core/message/response-engine.js +658 -109
- package/dist/core/message/send-receipt.js +1 -0
- package/dist/core/message/stream-debouncer.js +9 -2
- package/dist/core/model/model-catalog.js +23 -15
- package/dist/core/model/model-diagnostics.js +28 -10
- package/dist/core/permission/approval-gateway.js +180 -6
- package/dist/core/permission/ec-command-parser.js +627 -69
- package/dist/core/permission/mode.js +18 -3
- package/dist/core/{protected-paths.js → permission/protected-paths.js} +27 -14
- package/dist/core/permission/readonly-shell-query.js +263 -9
- package/dist/core/permission/sandbox-runtime.js +159 -1
- package/dist/core/permission/tool-error-code.js +12 -0
- package/dist/core/permission/tool-policy.js +618 -23
- package/dist/core/session/session-fs-store.js +154 -5
- package/dist/core/session/session-manager.js +329 -30
- package/dist/core/session/session-renew.js +37 -13
- package/dist/core/session/session-turn-coordinator.js +16 -5
- package/dist/eck/kit-renderer.js +1 -1
- package/dist/index.js +316 -50
- package/dist/ipc.js +459 -29
- package/dist/paths.js +82 -7
- package/dist/response-system/context-builder.js +1 -7
- package/dist/response-system/engines/v1/proactive-flow.js +7 -2
- package/dist/stats/price-resolver.js +4 -0
- package/dist/trigger/anomaly-store.js +1 -0
- package/dist/trigger/feedback.js +70 -7
- package/dist/trigger/history.js +79 -4
- package/dist/trigger/legacy-session-history.js +2 -2
- package/dist/trigger/parser.js +13 -3
- package/dist/trigger/scheduler.js +20 -3
- package/dist/trigger/validation.js +6 -1
- package/dist/utils/atomic-write.js +27 -0
- package/dist/utils/ecweb-utils.js +16 -2
- package/dist/utils/error-utils.js +4 -1
- package/dist/utils/logger.js +30 -6
- package/dist/utils/process-tree-stats.js +24 -4
- package/dist/utils/process-tree-worker.js +31 -0
- package/dist/utils/project-path.js +1 -2
- package/dist/utils/tool-summary.js +59 -0
- package/dist/utils/windows-shell-trust.js +201 -0
- package/kits/docs/INDEX.md +1 -1
- package/kits/docs/evolcore/INDEX.md +3 -3
- package/kits/docs/evolcore/agent-create.md +146 -0
- package/kits/docs/evolcore/agent.md +6 -0
- package/kits/docs/evolcore/contact.md +7 -1
- package/kits/docs/evolcore/group-collaboration.md +251 -0
- package/kits/docs/evolcore/group-rules.md +1 -19
- package/kits/docs/evolcore/group.md +3 -1
- package/kits/docs/evolcore/msg.md +16 -0
- package/kits/docs/evolcore/trigger.md +6 -3
- package/kits/docs/prompt-loading-architecture.md +6 -0
- package/kits/eck_message_manifest.json +6 -6
- package/kits/schemas/_meta.json +7 -4
- package/kits/schemas/agent-config.schema.11.json +13 -0
- package/kits/schemas/agent-config.schema.12.json +427 -0
- package/kits/schemas/daemon.schema.5.json +0 -1
- package/kits/schemas/daemon.schema.6.json +131 -0
- package/kits/schemas/defaults.schema.5.json +15 -3
- package/kits/schemas/migrations/README.md +3 -1
- package/kits/schemas/relation-config.schema.8.json +13 -0
- package/kits/schemas/role-config.schema.1.json +1 -2
- package/kits/schemas/single-session.schema.3.json +32 -0
- package/kits/templates/message-fragments/item.md +1 -1
- package/kits/templates/roles/admin.json +1 -0
- package/kits/templates/roles/member.json +1 -0
- package/kits/templates/roles/visitor.json +1 -0
- package/kits/templates/system-fragments/bootstrap.md +2 -1
- package/kits/templates/system-fragments/commands.md +2 -2
- package/package.json +6 -3
- package/skills/eclink/SKILL.md +2 -0
- package/dist/config/aun-gateway-config.js +0 -2
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
{ "value": "baseagents.claude.effort", "label": "Claude Effort", "description": "角色使用 Claude 时的默认推理强度及可覆盖范围。", "valueType": "enum", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "static-enum", "options": [{ "value": "auto", "label": "Auto" }, { "value": "low", "label": "Low" }, { "value": "medium", "label": "Medium" }, { "value": "high", "label": "High" }, { "value": "xhigh", "label": "Xhigh" }, { "value": "max", "label": "Max" }] },
|
|
15
15
|
{ "value": "baseagents.codex.model", "label": "Codex Model", "description": "角色可使用的 Codex 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All Codex models" }, { "value": "gpt-5.4*", "label": "GPT-5.4 family" }, { "value": "gpt-5.3-codex*", "label": "GPT-5.3 Codex family" }] },
|
|
16
16
|
{ "value": "baseagents.codex.effort", "label": "Codex Effort", "description": "角色使用 Codex 时的默认推理强度及可覆盖范围。", "valueType": "enum", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "static-enum", "options": [{ "value": "auto", "label": "Auto" }, { "value": "low", "label": "Low" }, { "value": "medium", "label": "Medium" }, { "value": "high", "label": "High" }, { "value": "xhigh", "label": "Xhigh" }] },
|
|
17
|
-
{ "value": "baseagents.gemini.model", "label": "Gemini Model", "description": "角色可使用的 Gemini 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All Gemini models" }, { "value": "gemini-*", "label": "Gemini model family" }] }
|
|
18
|
-
{ "value": "baseagents.hermes.model", "label": "Hermes Model", "description": "角色可使用的 Hermes 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All Hermes models" }] }
|
|
17
|
+
{ "value": "baseagents.gemini.model", "label": "Gemini Model", "description": "角色可使用的 Gemini 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All Gemini models" }, { "value": "gemini-*", "label": "Gemini model family" }] }
|
|
19
18
|
],
|
|
20
19
|
"type": "object",
|
|
21
20
|
"additionalProperties": false,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "single-session.schema.3.json",
|
|
4
|
+
"title": "SingleSessionParams (responseModeParams['single-session'])",
|
|
5
|
+
"description": "Single-session mode parameters. Session Renew auxiliary model settings belong to baseagents.<name>.",
|
|
6
|
+
"x-logical-name": "single-session",
|
|
7
|
+
"x-scope": "mode",
|
|
8
|
+
"type": "object",
|
|
9
|
+
"additionalProperties": false,
|
|
10
|
+
"properties": {
|
|
11
|
+
"pre_tool_1stmsgchk": {
|
|
12
|
+
"type": "boolean",
|
|
13
|
+
"enum": [true, false],
|
|
14
|
+
"default": true,
|
|
15
|
+
"description": "proactive 首个本地工具表态检查(仅 chatmode=proactive 生效):首个可被 PreToolUse 覆盖的本地工具必须是当前会话精确对应的 ec msg/group send,否则拦截;WebSearch、图像生成、浏览器和 Computer Use 等 hosted 工具不进入此硬拒绝边界。",
|
|
16
|
+
"x-enumDescriptions": {
|
|
17
|
+
"true": "启用:首个 hook 可覆盖的本地工具必须是精确会话 send",
|
|
18
|
+
"false": "禁用:不执行 proactive 首个本地工具 send 检查"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"tool_use_reminder": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"enum": [true, false],
|
|
24
|
+
"default": true,
|
|
25
|
+
"description": "proactive 工具汇报提醒(仅 chatmode=proactive 生效):启用队列未读提醒 + 每 10 次工具调用的汇报提醒。",
|
|
26
|
+
"x-enumDescriptions": {
|
|
27
|
+
"true": "启用:自动汇报工具使用情况",
|
|
28
|
+
"false": "禁用:静默执行工具"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
‹{{now}} · from:{{peerId}}{{?peerName}}({{peerName}}){{/}}{{?peerRole}} · role:{{peerRole}}{{/}}{{?chatType=group}} → 群:{{groupLabel}} · self:{{selfAid}}{{/}}{{?chatType=private}} → self:{{selfAid}}{{/}}{{?encrypted=true}} · 🔒密文{{/}}{{?encrypted=false}} · ✉️明文{{/}}{{?sameDevice}} · 📍同设备{{/}}{{?sameNetwork}} · 🌐同网络{{/}}{{?sameEgressIp}} · 🔀同出口IP{{/}}{{?mentionAids}} · @:{{mentionAids}}{{/}}›
|
|
2
|
-
{{content}}
|
|
2
|
+
{{?isHandoff!=true}}{{content}}{{/}}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"commandPermissions": {
|
|
10
10
|
"contact.read": { "allow": true, "scopes": ["agent"] },
|
|
11
|
+
"contact.add": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
|
|
11
12
|
"contact.block": {
|
|
12
13
|
"allow": true,
|
|
13
14
|
"scopes": ["agent"],
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"group.rulespolicy.update": { "allow": false },
|
|
53
53
|
"trigger.*": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
|
|
54
54
|
"ec.msg.send": { "allow": true, "constraints": { "ownPeerOnly": true } },
|
|
55
|
+
"contact.add": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
|
|
55
56
|
"ec.msg.file": { "allow": true, "constraints": { "ownPeerOnly": true } },
|
|
56
57
|
"ec.msg.history": { "allow": true, "scopes": ["relation"], "constraints": { "privateOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
57
58
|
"ec.msg.online": { "allow": true, "scopes": ["relation"], "constraints": { "privateOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"agent.baseagent.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
|
|
57
57
|
"capability.read": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
|
|
58
58
|
"ec.msg.send": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
|
|
59
|
+
"contact.add": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
|
|
59
60
|
"ec.msg.file": { "allow": false },
|
|
60
61
|
"ec.msg.history": { "allow": false },
|
|
61
62
|
"ec.msg.online": { "allow": false },
|
|
@@ -3,6 +3,7 @@ phase: bootstrapping
|
|
|
3
3
|
|
|
4
4
|
这是 agent 生命周期的强制门禁。你正在进行首次自我设定;在完成前,唯一目标是和 owner 确认并写入基础名片信息,不处理普通任务。
|
|
5
5
|
整个过程由你根据当前对话自主推进,不存在需要查询或维护的额外 bootstrap 子状态。
|
|
6
|
+
系统已经在进入本阶段时向 owner 发送过固定的首条引导消息。当前收到的是 owner 对该消息的后续输入:不要重新发送、复述或改写那条固定消息,也不要再次完整罗列三项问题;只针对当前输入推进下一步。
|
|
6
7
|
|
|
7
8
|
需要确认的字段:
|
|
8
9
|
- name:显示名,简短清晰
|
|
@@ -17,7 +18,7 @@ phase: bootstrapping
|
|
|
17
18
|
- 除这些 bootstrap 操作及向 owner 回复外,不得调用工具或执行命令。
|
|
18
19
|
|
|
19
20
|
每轮处理规则:
|
|
20
|
-
1. 首次需要候选值时,读取本地 agent.md 的 YAML frontmatter。已有且格式有效的 `name`、`description`、`tags`
|
|
21
|
+
1. 首次需要候选值时,读取本地 agent.md 的 YAML frontmatter。已有且格式有效的 `name`、`description`、`tags` 是现有候选值:简短回显并询问保持还是修改,不要求重新输入。空值、占位值或格式无效的字段视为缺失;`tags` 必须为 3 到 6 个非空标签。
|
|
21
22
|
2. 只把 owner 明确提供、修改、选择或确认的 `name`、`description`、`tags` 当作候选信息。普通任务内容、示例值和顺带提及的词语都不是候选信息,不得据此推断字段。
|
|
22
23
|
3. 信息缺失、互相冲突或含义不清时,只追问缺失或有歧义的部分;保留此前已经明确或 owner 选择保持的内容。
|
|
23
24
|
4. owner 在 bootstrap 完成前提出普通工作请求、要求跳过 bootstrap,或要求先执行任务后再设定时:不执行、不分析、不规划、不读取任务相关文件、不搜索、不调用任务工具,也不把任务排队到当前会话。只简短说明必须先完成首次设定,然后回显现有候选值并询问保持/修改,或只追问仍缺失的字段。
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[commands] 当前场景可用命令集(前缀 ec,以自己 AID 为发送者;完整用法 Read 对应文档)
|
|
2
|
-
遇到明确触发词(费用/用量/统计/创建agent
|
|
2
|
+
遇到明确触发词(费用/用量/统计/创建agent/建群/查群/群聊协作/任务分派等)优先查 INDEX.md 或直接试对应 ec 命令
|
|
3
3
|
|
|
4
4
|
ec ctl 当前会话工具(主动发消息/文件、重命名、队列、项目路径、会话状态) $KITS_DOCS/evolcore/ctl.md
|
|
5
5
|
ec model 模型与推理强度管理(切模型/列模型/当前模型/模型详情/改强度/诊断网关) $KITS_DOCS/evolcore/model.md
|
|
@@ -15,7 +15,7 @@ ec rpc 底层 AUN RPC 逃生通道 $KITS_DOCS/evolcore/
|
|
|
15
15
|
ec msg 私聊收发消息(回复/拉取/撤回) $KITS_DOCS/evolcore/msg.md
|
|
16
16
|
{{/}}
|
|
17
17
|
{{?selfAid}}
|
|
18
|
-
ec group
|
|
18
|
+
ec group 群聊收发与群管理(群发/建群/查群/邀请/踢人/角色/封禁/规则/协作;完整协作流程见 $KITS_DOCS/evolcore/group-collaboration.md) $KITS_DOCS/evolcore/group.md
|
|
19
19
|
{{/}}
|
|
20
20
|
{{?peerRole=owner}}
|
|
21
21
|
ec agent EvolAgent 生命周期(创建/启停/热重载/改配置)。ec agent reload 仅对配置/persona/memory 生效,改源码无效 $KITS_DOCS/evolcore/agent.md
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evolcore",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"description": "AI Agent gateway connecting Claude, Codex, Gemini, and the bundled ecagent runner to messaging channels with multi-project session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
"dist/",
|
|
12
12
|
"ecagent/dist/",
|
|
13
13
|
"!ecagent/dist/**/*.map",
|
|
14
|
+
"!dist/**/*.test.js",
|
|
15
|
+
"!dist/**/*.spec.js",
|
|
14
16
|
"ecagent/LICENSE",
|
|
15
17
|
"ecagent/NOTICE",
|
|
16
18
|
"ecagent/README.md",
|
|
@@ -18,6 +20,7 @@
|
|
|
18
20
|
"bin/",
|
|
19
21
|
"!dist/experimental/",
|
|
20
22
|
"skills/",
|
|
23
|
+
"!skills/eclink/IDENTITIES.md",
|
|
21
24
|
"kits/",
|
|
22
25
|
"!kits/.kits-version",
|
|
23
26
|
"*.md",
|
|
@@ -45,7 +48,7 @@
|
|
|
45
48
|
"prepublishOnly": "npm test"
|
|
46
49
|
},
|
|
47
50
|
"dependencies": {
|
|
48
|
-
"@agentunion/fastaun": "0.5.
|
|
51
|
+
"@agentunion/fastaun": "0.5.11",
|
|
49
52
|
"@anthropic-ai/claude-agent-sdk": "0.3.220",
|
|
50
53
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
51
54
|
"ajv": "^8.20.0",
|
|
@@ -78,6 +81,6 @@
|
|
|
78
81
|
"vitest": "^4.1.0"
|
|
79
82
|
},
|
|
80
83
|
"engines": {
|
|
81
|
-
"node": ">=22.
|
|
84
|
+
"node": ">=22.16.0"
|
|
82
85
|
}
|
|
83
86
|
}
|
package/skills/eclink/SKILL.md
CHANGED
|
@@ -10,6 +10,8 @@ Use the installed `ec` CLI as the message interface. This skill is only for a st
|
|
|
10
10
|
|
|
11
11
|
If the runtime exposes an EvolCore task/session context (for example `EVOLCORE_SESSION_ID`, `EVOLCORE_DELEGATION_TOKEN`, or an ECK-managed channel prompt), stop using this skill. Do not shell out to `ec`; let the EvolCore runtime's delegated sender enforce the current session, peer, role, and audit constraints.
|
|
12
12
|
|
|
13
|
+
After confirming that this is a standalone session, read [IDENTITIES.md](IDENTITIES.md) for the machine-local Codex AID registry. Do not read that registry from an EvolCore-managed task.
|
|
14
|
+
|
|
13
15
|
## Shell and approval boundary
|
|
14
16
|
|
|
15
17
|
Every `exec_command` invocation must run exactly one `ec` command. Do not combine commands with `&&`, `||`, `;`, `|`, redirects, subshells, command substitutions, scripts, `command -v`, or wrappers such as `sh -c`/`bash -lc`.
|