evolcore 0.0.19 → 0.0.21
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 +43 -1
- package/README.md +60 -9
- package/bin/install-codex-managed-hooks.mjs +61 -0
- package/dist/agents/baseagent.js +10 -6
- package/dist/agents/claude-runner.js +383 -111
- package/dist/agents/codex-app-server-client.js +10 -2
- package/dist/agents/codex-runner.js +405 -137
- package/dist/agents/ecagent-runner.js +174 -63
- 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 +66 -2
- package/dist/aun/aid/identity.js +4 -1
- package/dist/aun/aid/index.js +1 -1
- package/dist/aun/msg/group.js +86 -9
- package/dist/aun/msg/history.js +213 -36
- package/dist/aun/msg/managed-operation.js +58 -9
- package/dist/aun/msg/p2p.js +26 -11
- package/dist/aun/outbox.js +295 -68
- package/dist/aun/service-proxy.js +43 -25
- package/dist/channels/aun.js +1004 -273
- 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 +81 -121
- package/dist/cli/index.js +1 -0
- package/dist/cli/init.js +76 -24
- package/dist/cli/restart-monitor.js +3 -3
- package/dist/cli/task-context.js +46 -0
- package/dist/cli/trigger-command.js +1 -1
- package/dist/cli/watch-logs.js +10 -3
- package/dist/config/builtin-roles.js +1 -0
- package/dist/config/config-field-policy.js +16 -5
- package/dist/config/config-manager.js +226 -24
- package/dist/config/config-operation-service.js +1 -2
- 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 +29 -16
- package/dist/config/lifecycle.js +16 -5
- package/dist/config/role-service.js +54 -3
- package/dist/config/schema-migration.js +550 -0
- package/dist/config-store.js +161 -12
- 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 +31 -1
- package/dist/core/auth/auth-gateway.js +33 -4
- package/dist/core/auth/authorization-audit.js +155 -4
- package/dist/core/auth/operation-authorizer.js +41 -1
- package/dist/core/auth/operation-catalog.js +9 -1
- package/dist/core/bootstrap-messages.js +2 -2
- package/dist/core/bootstrap-service.js +27 -38
- package/dist/core/causation/aun-association.js +7 -4
- package/dist/core/channel-loader.js +0 -2
- package/dist/core/command/agent-control.js +56 -16
- package/dist/core/command/command-handler.js +290 -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 +279 -80
- 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 +350 -32
- package/dist/core/event-catalog.js +5 -0
- package/dist/core/evolagent.js +9 -4
- package/dist/core/handoff/dispatcher.js +4 -0
- package/dist/core/handoff/runtime.js +10 -0
- package/dist/core/handoff/store.js +32 -9
- package/dist/core/inference/text-inference.js +7 -15
- package/dist/core/message/im-renderer.js +83 -84
- package/dist/core/message/{inbound-admission.js → message-admission.js} +51 -1
- package/dist/core/message/message-bridge.js +124 -10
- package/dist/core/message/message-log.js +14 -7
- package/dist/core/message/message-queue.js +206 -16
- package/dist/core/message/message-utils.js +12 -5
- package/dist/core/message/response-engine.js +495 -72
- 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 +465 -56
- package/dist/core/permission/mode.js +18 -3
- package/dist/core/{protected-paths.js → permission/protected-paths.js} +17 -5
- package/dist/core/permission/readonly-shell-query.js +263 -9
- package/dist/core/permission/sandbox-runtime.js +205 -13
- package/dist/core/permission/tool-policy.js +673 -62
- package/dist/core/relation/peer-identity.js +18 -0
- package/dist/core/session/session-fs-store.js +154 -5
- package/dist/core/session/session-manager.js +299 -30
- package/dist/core/session/session-renew.js +19 -12
- package/dist/core/session/session-turn-coordinator.js +11 -4
- package/dist/eck/kit-renderer.js +18 -9
- package/dist/index.js +283 -65
- package/dist/ipc.js +374 -24
- package/dist/paths.js +64 -7
- package/dist/response-system/context-builder.js +1 -7
- package/dist/trigger/anomaly-store.js +1 -0
- package/dist/trigger/feedback.js +56 -5
- package/dist/trigger/history.js +79 -4
- package/dist/trigger/legacy-session-history.js +2 -2
- package/dist/trigger/parser.js +3 -2
- 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 +21 -2
- 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/stats.js +52 -18
- package/dist/utils/welcome.js +2 -2
- package/kits/docs/INDEX.md +1 -1
- package/kits/docs/evolcore/INDEX.md +1 -1
- package/kits/docs/evolcore/contact.md +7 -1
- package/kits/docs/evolcore/msg.md +16 -0
- package/kits/rules/01-overview.md +1 -1
- package/kits/rules/03-identity.md +1 -1
- package/kits/rules/05-venue.md +1 -1
- package/kits/schemas/_meta.json +10 -5
- package/kits/schemas/agent-config.schema.10.json +2 -1
- package/kits/schemas/agent-config.schema.11.json +421 -0
- package/kits/schemas/daemon.schema.5.json +135 -0
- package/kits/schemas/daemon.schema.6.json +131 -0
- package/kits/schemas/defaults.schema.5.json +119 -0
- 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/roles/admin.json +1 -0
- package/kits/templates/roles/member.json +1 -0
- package/kits/templates/roles/visitor.json +1 -0
- package/package.json +7 -3
- package/skills/eclink/SKILL.md +2 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "daemon.schema.6.json",
|
|
4
|
+
"title": "ProcessConfig v6 (daemon.json)",
|
|
5
|
+
"description": "进程级配置:daemon 自身运行配置,链外独立作用域,不进覆盖链。",
|
|
6
|
+
"x-logical-name": "daemon",
|
|
7
|
+
"x-scope": "process",
|
|
8
|
+
"type": "object",
|
|
9
|
+
"additionalProperties": false,
|
|
10
|
+
"properties": {
|
|
11
|
+
"$schema_version": { "type": "number", "const": 6, "default": 6, "x-merge": "scalar" },
|
|
12
|
+
"aid": { "type": "string", "description": "daemon 默认身份 AID", "x-merge": "scalar" },
|
|
13
|
+
"owners": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": { "type": "string" },
|
|
16
|
+
"description": "进程控制面鉴权名单(谁能远程管 daemon)",
|
|
17
|
+
"x-merge": "list"
|
|
18
|
+
},
|
|
19
|
+
"fullaccess": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"description": "daemon-owner 批准的按调用宿主级执行功能;默认关闭",
|
|
22
|
+
"x-merge": "dict",
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"properties": {
|
|
25
|
+
"enabled": { "type": "boolean", "default": false, "description": "启用 /fa 与 Trigger permissionMode=fullaccess" }
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"debug": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"description": "进程级调试配置;唯一合法来源为 daemon.json,不参与 Agent 覆盖链",
|
|
31
|
+
"x-merge": "dict",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"properties": {
|
|
34
|
+
"logLevel": { "type": "string", "enum": ["DEBUG", "INFO", "WARN", "ERROR"], "description": "daemon 日志级别" },
|
|
35
|
+
"aunTrace": { "type": "boolean", "description": "是否记录 AUN 协议 trace" },
|
|
36
|
+
"aunSdkLog": { "type": "boolean", "description": "是否启用 AUN SDK 调试日志" },
|
|
37
|
+
"upmsg": { "type": "boolean", "description": "是否向 Agent owner 发送 daemon 上线通知" },
|
|
38
|
+
"eckSnapshots": { "type": "boolean", "default": false, "description": "是否写入可能包含敏感上下文的 ECK 旁路调试快照" }
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"tunnel": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"description": "内网穿透配置",
|
|
44
|
+
"x-merge": "dict",
|
|
45
|
+
"properties": {
|
|
46
|
+
"targets": { "type": "array", "description": "穿透目标列表", "items": { "type": "object" } }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"aun": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"description": "AUN 进程配置",
|
|
52
|
+
"x-merge": "dict",
|
|
53
|
+
"properties": {
|
|
54
|
+
"gatewayUrl": { "not": {}, "description": "已移除;网关由 fastaun 缓存和 AID discovery 决定" },
|
|
55
|
+
"defaultAidDomain": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"pattern": "^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+$",
|
|
58
|
+
"description": "自动生成控制 AID 与 benchmark AID 使用的后缀域名;不影响已有 AID"
|
|
59
|
+
},
|
|
60
|
+
"minEvolVersion": { "type": "string", "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$", "description": "AUN Menu 允许的最低 Evol 客户端版本;省略时不限制" },
|
|
61
|
+
"menuTokenRequired": { "type": "boolean", "default": false, "description": "是否要求普通 AUN Menu 请求携带有效 menu_token;默认 false" },
|
|
62
|
+
"defaultEncrypt": { "type": "boolean", "description": "所有 daemon 管理的 AUN 通道共用的出站默认加密值;省略时为 true" }
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"services": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"description": "daemon 管理的本机服务及其可选 AUN 代理",
|
|
68
|
+
"x-merge": "list",
|
|
69
|
+
"items": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"additionalProperties": false,
|
|
72
|
+
"required": ["name", "enabled"],
|
|
73
|
+
"properties": {
|
|
74
|
+
"name": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"pattern": "^[a-z0-9_-]+$",
|
|
77
|
+
"description": "服务的逻辑标识,同时作为 AUN 代理路由名;ecweb 表示本机 EC Web 服务实例"
|
|
78
|
+
},
|
|
79
|
+
"enabled": { "type": "boolean", "default": true, "description": "是否启用本机服务实例" },
|
|
80
|
+
"port": { "type": "integer", "minimum": 1, "maximum": 65535, "description": "本机服务期望监听端口" },
|
|
81
|
+
"proxy": {
|
|
82
|
+
"type": "object",
|
|
83
|
+
"additionalProperties": false,
|
|
84
|
+
"allOf": [
|
|
85
|
+
{
|
|
86
|
+
"if": { "properties": { "enabled": { "const": true }, "source": { "const": "static" } }, "required": ["enabled", "source"] },
|
|
87
|
+
"then": { "required": ["endpoint", "visibility"] }
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"if": { "properties": { "enabled": { "const": true } }, "required": ["enabled"] },
|
|
91
|
+
"then": { "required": ["source", "visibility"] }
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"properties": {
|
|
95
|
+
"enabled": { "type": "boolean", "default": false, "description": "是否通过 AUN Service Proxy 暴露该服务" },
|
|
96
|
+
"source": { "type": "string", "enum": ["instance", "static"], "description": "instance 表示自动发现同名本机服务;static 使用 endpoint 显式回连" },
|
|
97
|
+
"endpoint": { "type": "string", "maxLength": 2048, "description": "source=static 时使用的本机 HTTP/HTTPS 或 WS/WSS 回连地址" },
|
|
98
|
+
"serviceType": { "type": "string", "enum": ["http", "websocket", "ssh"], "default": "http", "description": "AUN 中公布的服务类型" },
|
|
99
|
+
"visibility": { "type": "string", "enum": ["public", "private", "aun-auth"], "default": "private", "description": "AUN Service Proxy 访问策略" },
|
|
100
|
+
"metadata": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"description": "非敏感服务描述;不得包含 endpoint、token、secret、cookie 等敏感信息",
|
|
103
|
+
"additionalProperties": { "type": "string", "maxLength": 8192 }
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"configSnapshots": { "type": "boolean", "default": true, "description": "是否自动维护配置快照、启动日志和自检回落", "x-merge": "scalar" },
|
|
111
|
+
"idleMonitor": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"description": "流式输出空闲监控配置",
|
|
114
|
+
"x-merge": "dict",
|
|
115
|
+
"properties": {
|
|
116
|
+
"enabled": { "type": "boolean", "default": true, "description": "是否启用空闲监控" },
|
|
117
|
+
"timeout": { "type": "number", "default": 120, "description": "空闲超时秒数" },
|
|
118
|
+
"apiRetryTimeout": { "type": "number", "description": "API 重试尝试连续无事件时的超时秒数;未设置时继承 timeout" },
|
|
119
|
+
"maxExecutionTime": { "type": "number", "description": "单个任务总执行时限(秒);未配置、非数字或小于等于 0 表示不限制" }
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"watch": {
|
|
123
|
+
"type": "object",
|
|
124
|
+
"description": "日志监听配置",
|
|
125
|
+
"x-merge": "dict",
|
|
126
|
+
"properties": {
|
|
127
|
+
"logTypes": { "type": "array", "description": "要监听的日志类型", "items": { "type": "string" } }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "defaults.schema.5.json",
|
|
4
|
+
"title": "DefaultsConfig v5 (agents/defaults.json)",
|
|
5
|
+
"description": "全局默认配置。覆盖链最低层;模型降级候选链仅允许定义在本文件。",
|
|
6
|
+
"x-logical-name": "defaults",
|
|
7
|
+
"x-scope": "defaults",
|
|
8
|
+
"type": "object",
|
|
9
|
+
"additionalProperties": false,
|
|
10
|
+
"properties": {
|
|
11
|
+
"$schema_version": { "type": "number", "const": 5, "default": 5, "x-merge": "scalar" },
|
|
12
|
+
"models": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"description": "模型配置",
|
|
15
|
+
"x-merge": "dict",
|
|
16
|
+
"properties": {
|
|
17
|
+
"default": { "type": "string", "description": "全局默认模型" },
|
|
18
|
+
"allowed": {
|
|
19
|
+
"type": "array",
|
|
20
|
+
"items": { "type": "string" },
|
|
21
|
+
"description": "全局模型白名单"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"active_baseagent": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"description": "当前活跃的 base agent(claude/codex/gemini/ecagent)。暂存于此,待权限体系实现后迁移。",
|
|
28
|
+
"x-merge": "scalar"
|
|
29
|
+
},
|
|
30
|
+
"baseagents": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"description": "各 base agent 配置(model/effort/apiKey/baseUrl 等),以及仅 defaults 可定义的备用模型链。",
|
|
33
|
+
"x-merge": "dict",
|
|
34
|
+
"additionalProperties": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": true,
|
|
37
|
+
"properties": {
|
|
38
|
+
"headers": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"propertyNames": { "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$" },
|
|
41
|
+
"additionalProperties": { "type": "string", "pattern": "^[^\\u0000\\r\\n]*$" }
|
|
42
|
+
},
|
|
43
|
+
"queryParams": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"propertyNames": { "minLength": 1 },
|
|
46
|
+
"additionalProperties": { "type": "string" }
|
|
47
|
+
},
|
|
48
|
+
"auxiliaryModel": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"minLength": 1,
|
|
51
|
+
"description": "Session Renew 语义连续性判断使用的 direct 辅助模型。"
|
|
52
|
+
},
|
|
53
|
+
"auxiliaryEffort": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"enum": ["low", "medium", "high", "xhigh", "max"],
|
|
56
|
+
"description": "Session Renew 辅助模型的可选推理强度。"
|
|
57
|
+
},
|
|
58
|
+
"fallbackModels": {
|
|
59
|
+
"type": "array",
|
|
60
|
+
"maxItems": 3,
|
|
61
|
+
"description": "同 base agent 的有序备用模型链;为空时禁用自动模型降级。",
|
|
62
|
+
"items": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"additionalProperties": false,
|
|
65
|
+
"required": ["model"],
|
|
66
|
+
"properties": {
|
|
67
|
+
"model": { "type": "string", "minLength": 1 },
|
|
68
|
+
"effort": { "type": "string", "minLength": 1 }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"dependencies": {
|
|
74
|
+
"auxiliaryEffort": ["auxiliaryModel"]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"projects": {
|
|
79
|
+
"type": "object",
|
|
80
|
+
"description": "项目路径配置",
|
|
81
|
+
"x-merge": "dict",
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"properties": {
|
|
84
|
+
"defaultPath": { "type": "string", "description": "全局默认项目路径" }
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"aun": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"description": "全局 AUN 配置",
|
|
90
|
+
"x-merge": "dict",
|
|
91
|
+
"properties": {
|
|
92
|
+
"keystorePath": { "type": "string" },
|
|
93
|
+
"gatewayUrl": { "not": {}, "description": "已移除;网关由 fastaun 缓存和 AID discovery 决定" },
|
|
94
|
+
"defaultEncrypt": {
|
|
95
|
+
"not": {},
|
|
96
|
+
"description": "不支持在 Agent defaults 配置;请使用 daemon.json.aun.defaultEncrypt"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"responseMode": { "type": "string", "x-merge": "scalar" },
|
|
101
|
+
"responseModeParams": {
|
|
102
|
+
"type": "object",
|
|
103
|
+
"x-merge": "dict",
|
|
104
|
+
"description": "响应模式特有参数的全局默认字典,按模式 id 分桶:{ [modeId]: {...} }"
|
|
105
|
+
},
|
|
106
|
+
"config": { "type": "object", "x-merge": "dict" },
|
|
107
|
+
"session_renew": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"description": "会话超时后的续接判定策略,默认关闭",
|
|
110
|
+
"x-merge": "dict",
|
|
111
|
+
"additionalProperties": false,
|
|
112
|
+
"properties": {
|
|
113
|
+
"enabled": { "type": "boolean", "default": false, "description": "是否启用超时后的会话连续性判定" },
|
|
114
|
+
"after_hours": { "type": "number", "exclusiveMinimum": 0, "default": 24, "description": "距最后一条有效对话超过该小时数才触发判定" },
|
|
115
|
+
"fallback_action": { "type": "string", "enum": ["continue", "new"], "default": "continue", "description": "无法判定时的兜底动作", "x-enumDescriptions": { "continue": "继续沿用当前会话", "new": "开启新会话" } }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -25,4 +25,6 @@ export function migrate(old: object): object; // 旧版本完整 JSON → 新
|
|
|
25
25
|
- 历史 schema 文件全部保留(`{逻辑名}.schema.{版本}.json`)。
|
|
26
26
|
- 每个迁移函数 default-export `migrate`,由 ConfigManager 动态 import。
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
当前完整配置 schema 的历史迁移仍按各自模块维护。响应模式桶的
|
|
29
|
+
`single-session` v2→v3 数据迁移集中在 `src/config/schema-migration.ts`,
|
|
30
|
+
扫描并更新 defaults、Agent、Relation 配置文件,并在 daemon 启动前自动执行。
|
|
@@ -46,7 +46,20 @@
|
|
|
46
46
|
"type": "object",
|
|
47
47
|
"propertyNames": { "minLength": 1 },
|
|
48
48
|
"additionalProperties": { "type": "string" }
|
|
49
|
+
},
|
|
50
|
+
"auxiliaryModel": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"minLength": 1,
|
|
53
|
+
"description": "Session Renew 语义连续性判断使用的 direct 辅助模型。"
|
|
54
|
+
},
|
|
55
|
+
"auxiliaryEffort": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"enum": ["low", "medium", "high", "xhigh", "max"],
|
|
58
|
+
"description": "Session Renew 辅助模型的可选推理强度。"
|
|
49
59
|
}
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"auxiliaryEffort": ["auxiliaryModel"]
|
|
50
63
|
}
|
|
51
64
|
}
|
|
52
65
|
},
|
|
@@ -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
|
+
}
|
|
@@ -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 },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evolcore",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
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",
|
|
@@ -32,6 +35,7 @@
|
|
|
32
35
|
"!evolcore-install-aun.md"
|
|
33
36
|
],
|
|
34
37
|
"scripts": {
|
|
38
|
+
"postinstall": "node bin/install-codex-managed-hooks.mjs",
|
|
35
39
|
"predev": "npm run build:ecagent",
|
|
36
40
|
"dev": "tsx watch src/index.ts",
|
|
37
41
|
"build:ecagent": "npm --prefix ecagent run build",
|
|
@@ -44,7 +48,7 @@
|
|
|
44
48
|
"prepublishOnly": "npm test"
|
|
45
49
|
},
|
|
46
50
|
"dependencies": {
|
|
47
|
-
"@agentunion/fastaun": "0.5.
|
|
51
|
+
"@agentunion/fastaun": "0.5.10",
|
|
48
52
|
"@anthropic-ai/claude-agent-sdk": "0.3.220",
|
|
49
53
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
50
54
|
"ajv": "^8.20.0",
|
|
@@ -77,6 +81,6 @@
|
|
|
77
81
|
"vitest": "^4.1.0"
|
|
78
82
|
},
|
|
79
83
|
"engines": {
|
|
80
|
-
"node": ">=22.
|
|
84
|
+
"node": ">=22.16.0"
|
|
81
85
|
}
|
|
82
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`.
|