evolcore 0.0.7 → 0.0.9

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.
Files changed (230) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +38 -4
  3. package/dist/agents/baseagent.js +117 -24
  4. package/dist/agents/claude-runner.js +31 -2
  5. package/dist/agents/codex-app-server-client.js +37 -2
  6. package/dist/agents/codex-runner.js +11 -3
  7. package/dist/aun/aid/control-aid.js +40 -27
  8. package/dist/aun/aid/domain.js +23 -0
  9. package/dist/aun/msg/group.js +9 -9
  10. package/dist/aun/msg/p2p.js +11 -6
  11. package/dist/aun/msg/upload.js +43 -29
  12. package/dist/aun/outbox.js +48 -5
  13. package/dist/channels/aun.js +225 -71
  14. package/dist/cli/aun-commands.js +10 -7
  15. package/dist/cli/bench.js +4 -3
  16. package/dist/cli/daemon-commands.js +208 -68
  17. package/dist/cli/data-command.js +62 -35
  18. package/dist/cli/index.js +11 -1
  19. package/dist/cli/init-channel.js +1 -1
  20. package/dist/cli/init.js +112 -17
  21. package/dist/cli/model.js +5 -5
  22. package/dist/cli/restart-monitor.js +102 -22
  23. package/dist/config/builtin-role-templates.js +4 -3
  24. package/dist/config/config-field-policy.js +6 -2
  25. package/dist/config/config-manager.js +79 -11
  26. package/dist/config/gateway-config.js +80 -35
  27. package/dist/config/role-schema.js +18 -3
  28. package/dist/config/role-service.js +3 -3
  29. package/dist/config/role-store.js +4 -3
  30. package/dist/config-store.js +19 -3
  31. package/dist/core/auth/operation-authorizer.js +3 -1
  32. package/dist/core/baseagent-loader.js +5 -3
  33. package/dist/core/bootstrap-service.js +0 -12
  34. package/dist/core/capability/providers/codex-capability-provider.js +2 -2
  35. package/dist/core/channel-loader.js +15 -2
  36. package/dist/core/command/command-handler.js +1 -1
  37. package/dist/core/command/evol-menu-version-gate.js +3 -2
  38. package/dist/core/command/menu-handler.js +50 -28
  39. package/dist/core/command/menu-protocol.js +7 -4
  40. package/dist/core/command/slash-handler.js +4 -4
  41. package/dist/core/data-migration.js +517 -24
  42. package/dist/core/inference/text-inference.js +18 -5
  43. package/dist/core/message/message-bridge.js +17 -6
  44. package/dist/core/message/response-engine.js +22 -3
  45. package/dist/core/model/config-scope.js +3 -3
  46. package/dist/core/permission/tool-policy.js +18 -0
  47. package/dist/core/protected-paths.js +12 -1
  48. package/dist/index.js +794 -725
  49. package/dist/ipc.js +3 -1
  50. package/dist/product.js +1 -0
  51. package/dist/utils/autostart.js +27 -0
  52. package/dist/utils/codex-cli.js +39 -0
  53. package/dist/utils/cross-platform.js +147 -18
  54. package/dist/utils/ecweb-utils.js +15 -2
  55. package/dist/utils/instance-registry.js +43 -6
  56. package/dist/utils/macos-autostart.js +179 -0
  57. package/dist/utils/process-introspect.js +7 -3
  58. package/dist/utils/windows-autostart.js +130 -0
  59. package/ecagent/dist/agent-loop.d.ts +1 -1
  60. package/ecagent/dist/agent-loop.js +1 -1
  61. package/ecagent/dist/agent.d.ts +1 -1
  62. package/ecagent/dist/agent.js +1 -1
  63. package/ecagent/dist/harness/agent-harness.d.ts +1 -1
  64. package/ecagent/dist/harness/compaction/branch-summarization.d.ts +1 -1
  65. package/ecagent/dist/harness/compaction/compaction.d.ts +1 -1
  66. package/ecagent/dist/harness/compaction/utils.d.ts +1 -1
  67. package/ecagent/dist/harness/messages.d.ts +1 -1
  68. package/ecagent/dist/harness/session/session.d.ts +1 -1
  69. package/ecagent/dist/harness/types.d.ts +1 -1
  70. package/ecagent/dist/proxy.d.ts +1 -1
  71. package/ecagent/dist/proxy.js +1 -1
  72. package/ecagent/dist/types.d.ts +1 -1
  73. package/kits/migrations/migrate-role-config-v5.mjs +27 -2
  74. package/kits/rules/01-overview.md +3 -2
  75. package/kits/schemas/_meta.json +2 -1
  76. package/kits/schemas/agent-config.schema.10.json +19 -1
  77. package/kits/schemas/daemon.schema.4.json +136 -0
  78. package/kits/schemas/defaults.schema.4.json +15 -1
  79. package/kits/schemas/relation-config.schema.8.json +22 -1
  80. package/kits/schemas/role-config.schema.1.json +2 -2
  81. package/package.json +2 -4
  82. package/ecagent/dist/agent-loop.d.ts.map +0 -1
  83. package/ecagent/dist/agent-loop.js.map +0 -1
  84. package/ecagent/dist/agent.d.ts.map +0 -1
  85. package/ecagent/dist/agent.js.map +0 -1
  86. package/ecagent/dist/harness/agent-harness.d.ts.map +0 -1
  87. package/ecagent/dist/harness/agent-harness.js.map +0 -1
  88. package/ecagent/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  89. package/ecagent/dist/harness/compaction/branch-summarization.js.map +0 -1
  90. package/ecagent/dist/harness/compaction/compaction.d.ts.map +0 -1
  91. package/ecagent/dist/harness/compaction/compaction.js.map +0 -1
  92. package/ecagent/dist/harness/compaction/utils.d.ts.map +0 -1
  93. package/ecagent/dist/harness/compaction/utils.js.map +0 -1
  94. package/ecagent/dist/harness/env/nodejs.d.ts.map +0 -1
  95. package/ecagent/dist/harness/env/nodejs.js.map +0 -1
  96. package/ecagent/dist/harness/messages.d.ts.map +0 -1
  97. package/ecagent/dist/harness/messages.js.map +0 -1
  98. package/ecagent/dist/harness/prompt-templates.d.ts.map +0 -1
  99. package/ecagent/dist/harness/prompt-templates.js.map +0 -1
  100. package/ecagent/dist/harness/session/jsonl-repo.d.ts.map +0 -1
  101. package/ecagent/dist/harness/session/jsonl-repo.js.map +0 -1
  102. package/ecagent/dist/harness/session/jsonl-storage.d.ts.map +0 -1
  103. package/ecagent/dist/harness/session/jsonl-storage.js.map +0 -1
  104. package/ecagent/dist/harness/session/memory-repo.d.ts.map +0 -1
  105. package/ecagent/dist/harness/session/memory-repo.js.map +0 -1
  106. package/ecagent/dist/harness/session/memory-storage.d.ts.map +0 -1
  107. package/ecagent/dist/harness/session/memory-storage.js.map +0 -1
  108. package/ecagent/dist/harness/session/repo-utils.d.ts.map +0 -1
  109. package/ecagent/dist/harness/session/repo-utils.js.map +0 -1
  110. package/ecagent/dist/harness/session/session.d.ts.map +0 -1
  111. package/ecagent/dist/harness/session/session.js.map +0 -1
  112. package/ecagent/dist/harness/session/uuid.d.ts.map +0 -1
  113. package/ecagent/dist/harness/session/uuid.js.map +0 -1
  114. package/ecagent/dist/harness/skills.d.ts.map +0 -1
  115. package/ecagent/dist/harness/skills.js.map +0 -1
  116. package/ecagent/dist/harness/system-prompt.d.ts.map +0 -1
  117. package/ecagent/dist/harness/system-prompt.js.map +0 -1
  118. package/ecagent/dist/harness/types.d.ts.map +0 -1
  119. package/ecagent/dist/harness/types.js.map +0 -1
  120. package/ecagent/dist/harness/utils/shell-output.d.ts.map +0 -1
  121. package/ecagent/dist/harness/utils/shell-output.js.map +0 -1
  122. package/ecagent/dist/harness/utils/truncate.d.ts.map +0 -1
  123. package/ecagent/dist/harness/utils/truncate.js.map +0 -1
  124. package/ecagent/dist/index.d.ts.map +0 -1
  125. package/ecagent/dist/index.js.map +0 -1
  126. package/ecagent/dist/node.d.ts.map +0 -1
  127. package/ecagent/dist/node.js.map +0 -1
  128. package/ecagent/dist/proxy.d.ts.map +0 -1
  129. package/ecagent/dist/proxy.js.map +0 -1
  130. package/ecagent/dist/runtime/api/lazy.d.ts.map +0 -1
  131. package/ecagent/dist/runtime/api/lazy.js.map +0 -1
  132. package/ecagent/dist/runtime/api/pi-messages.d.ts.map +0 -1
  133. package/ecagent/dist/runtime/api/pi-messages.js.map +0 -1
  134. package/ecagent/dist/runtime/api/pi-messages.lazy.d.ts.map +0 -1
  135. package/ecagent/dist/runtime/api/pi-messages.lazy.js.map +0 -1
  136. package/ecagent/dist/runtime/auth/context.d.ts.map +0 -1
  137. package/ecagent/dist/runtime/auth/context.js.map +0 -1
  138. package/ecagent/dist/runtime/auth/credential-store.d.ts.map +0 -1
  139. package/ecagent/dist/runtime/auth/credential-store.js.map +0 -1
  140. package/ecagent/dist/runtime/auth/helpers.d.ts.map +0 -1
  141. package/ecagent/dist/runtime/auth/helpers.js.map +0 -1
  142. package/ecagent/dist/runtime/auth/resolve.d.ts.map +0 -1
  143. package/ecagent/dist/runtime/auth/resolve.js.map +0 -1
  144. package/ecagent/dist/runtime/auth/types.d.ts.map +0 -1
  145. package/ecagent/dist/runtime/auth/types.js.map +0 -1
  146. package/ecagent/dist/runtime/compat.d.ts.map +0 -1
  147. package/ecagent/dist/runtime/compat.js.map +0 -1
  148. package/ecagent/dist/runtime/index.d.ts.map +0 -1
  149. package/ecagent/dist/runtime/index.js.map +0 -1
  150. package/ecagent/dist/runtime/models.d.ts.map +0 -1
  151. package/ecagent/dist/runtime/models.js.map +0 -1
  152. package/ecagent/dist/runtime/oauth.d.ts.map +0 -1
  153. package/ecagent/dist/runtime/oauth.js.map +0 -1
  154. package/ecagent/dist/runtime/providers/faux.d.ts.map +0 -1
  155. package/ecagent/dist/runtime/providers/faux.js.map +0 -1
  156. package/ecagent/dist/runtime/types.d.ts.map +0 -1
  157. package/ecagent/dist/runtime/types.js.map +0 -1
  158. package/ecagent/dist/runtime/utils/diagnostics.d.ts.map +0 -1
  159. package/ecagent/dist/runtime/utils/diagnostics.js.map +0 -1
  160. package/ecagent/dist/runtime/utils/event-stream.d.ts.map +0 -1
  161. package/ecagent/dist/runtime/utils/event-stream.js.map +0 -1
  162. package/ecagent/dist/runtime/utils/headers.d.ts.map +0 -1
  163. package/ecagent/dist/runtime/utils/headers.js.map +0 -1
  164. package/ecagent/dist/runtime/utils/json-parse.d.ts.map +0 -1
  165. package/ecagent/dist/runtime/utils/json-parse.js.map +0 -1
  166. package/ecagent/dist/runtime/utils/oauth/types.d.ts.map +0 -1
  167. package/ecagent/dist/runtime/utils/oauth/types.js.map +0 -1
  168. package/ecagent/dist/runtime/utils/overflow.d.ts.map +0 -1
  169. package/ecagent/dist/runtime/utils/overflow.js.map +0 -1
  170. package/ecagent/dist/runtime/utils/provider-env.d.ts.map +0 -1
  171. package/ecagent/dist/runtime/utils/provider-env.js.map +0 -1
  172. package/ecagent/dist/runtime/utils/retry.d.ts.map +0 -1
  173. package/ecagent/dist/runtime/utils/retry.js.map +0 -1
  174. package/ecagent/dist/runtime/utils/typebox-helpers.d.ts.map +0 -1
  175. package/ecagent/dist/runtime/utils/typebox-helpers.js.map +0 -1
  176. package/ecagent/dist/runtime/utils/validation.d.ts.map +0 -1
  177. package/ecagent/dist/runtime/utils/validation.js.map +0 -1
  178. package/ecagent/dist/types.d.ts.map +0 -1
  179. package/ecagent/dist/types.js.map +0 -1
  180. package/ecagent/package.json +0 -93
  181. package/ecagent/src/agent-loop.ts +0 -792
  182. package/ecagent/src/agent.ts +0 -575
  183. package/ecagent/src/harness/agent-harness.ts +0 -1029
  184. package/ecagent/src/harness/compaction/branch-summarization.ts +0 -261
  185. package/ecagent/src/harness/compaction/compaction.ts +0 -753
  186. package/ecagent/src/harness/compaction/utils.ts +0 -144
  187. package/ecagent/src/harness/env/nodejs.ts +0 -569
  188. package/ecagent/src/harness/messages.ts +0 -164
  189. package/ecagent/src/harness/prompt-templates.ts +0 -267
  190. package/ecagent/src/harness/session/jsonl-repo.ts +0 -179
  191. package/ecagent/src/harness/session/jsonl-storage.ts +0 -314
  192. package/ecagent/src/harness/session/memory-repo.ts +0 -50
  193. package/ecagent/src/harness/session/memory-storage.ts +0 -133
  194. package/ecagent/src/harness/session/repo-utils.ts +0 -51
  195. package/ecagent/src/harness/session/session.ts +0 -338
  196. package/ecagent/src/harness/session/uuid.ts +0 -54
  197. package/ecagent/src/harness/skills.ts +0 -375
  198. package/ecagent/src/harness/system-prompt.ts +0 -34
  199. package/ecagent/src/harness/types.ts +0 -838
  200. package/ecagent/src/harness/utils/shell-output.ts +0 -135
  201. package/ecagent/src/harness/utils/truncate.ts +0 -344
  202. package/ecagent/src/index.ts +0 -46
  203. package/ecagent/src/node.ts +0 -2
  204. package/ecagent/src/proxy.ts +0 -367
  205. package/ecagent/src/runtime/api/lazy.ts +0 -70
  206. package/ecagent/src/runtime/api/pi-messages.lazy.ts +0 -4
  207. package/ecagent/src/runtime/api/pi-messages.ts +0 -436
  208. package/ecagent/src/runtime/auth/context.ts +0 -45
  209. package/ecagent/src/runtime/auth/credential-store.ts +0 -47
  210. package/ecagent/src/runtime/auth/helpers.ts +0 -46
  211. package/ecagent/src/runtime/auth/resolve.ts +0 -141
  212. package/ecagent/src/runtime/auth/types.ts +0 -182
  213. package/ecagent/src/runtime/compat.ts +0 -158
  214. package/ecagent/src/runtime/index.ts +0 -31
  215. package/ecagent/src/runtime/models.ts +0 -452
  216. package/ecagent/src/runtime/oauth.ts +0 -1
  217. package/ecagent/src/runtime/providers/faux.ts +0 -538
  218. package/ecagent/src/runtime/types.ts +0 -718
  219. package/ecagent/src/runtime/utils/diagnostics.ts +0 -45
  220. package/ecagent/src/runtime/utils/event-stream.ts +0 -88
  221. package/ecagent/src/runtime/utils/headers.ts +0 -18
  222. package/ecagent/src/runtime/utils/json-parse.ts +0 -124
  223. package/ecagent/src/runtime/utils/oauth/types.ts +0 -79
  224. package/ecagent/src/runtime/utils/overflow.ts +0 -165
  225. package/ecagent/src/runtime/utils/provider-env.ts +0 -52
  226. package/ecagent/src/runtime/utils/retry.ts +0 -101
  227. package/ecagent/src/runtime/utils/typebox-helpers.ts +0 -24
  228. package/ecagent/src/runtime/utils/validation.ts +0 -310
  229. package/ecagent/src/types.ts +0 -430
  230. package/ecagent/tsconfig.build.json +0 -32
@@ -0,0 +1,130 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { spawnSync } from 'child_process';
4
+ import { getPackageRoot } from '../paths.js';
5
+ export const WINDOWS_AUTOSTART_TASK_NAME = 'EvolCore';
6
+ function isWindows() {
7
+ return process.platform === 'win32';
8
+ }
9
+ function runSchtasks(args) {
10
+ return spawnSync('schtasks.exe', args, {
11
+ encoding: 'utf8',
12
+ windowsHide: true,
13
+ timeout: 15_000,
14
+ });
15
+ }
16
+ function commandError(result, fallback) {
17
+ return String(result.error?.message || result.stderr || result.stdout || fallback).trim();
18
+ }
19
+ function powershellLiteral(value) {
20
+ return `'${value.replace(/'/g, "''")}'`;
21
+ }
22
+ function windowsCommandLiteral(value) {
23
+ return `"${value}"`;
24
+ }
25
+ function wrapperPath(runtimeRoot) {
26
+ return path.join(runtimeRoot, 'data', 'evolcore-autostart.ps1');
27
+ }
28
+ export function windowsAutostartInstalled() {
29
+ if (!isWindows())
30
+ return false;
31
+ const result = runSchtasks(['/Query', '/TN', WINDOWS_AUTOSTART_TASK_NAME]);
32
+ return result.status === 0;
33
+ }
34
+ function createWrapper(runtimeRoot) {
35
+ const scriptPath = wrapperPath(runtimeRoot);
36
+ const cliEntry = path.join(getPackageRoot(), 'dist', 'cli', 'index.js');
37
+ if (!fs.existsSync(cliEntry)) {
38
+ throw new Error(`找不到 EvolCore CLI 入口: ${cliEntry}`);
39
+ }
40
+ const pathValue = process.env.PATH ?? '';
41
+ const script = [
42
+ `$env:EVOLCORE_HOME = ${powershellLiteral(runtimeRoot)}`,
43
+ `$env:Path = ${powershellLiteral(pathValue)}`,
44
+ `& ${powershellLiteral(process.execPath)} --no-warnings=ExperimentalWarning ${powershellLiteral(cliEntry)} start`,
45
+ 'exit $LASTEXITCODE',
46
+ '',
47
+ ].join('\r\n');
48
+ fs.mkdirSync(path.dirname(scriptPath), { recursive: true });
49
+ fs.writeFileSync(scriptPath, script, 'utf8');
50
+ return scriptPath;
51
+ }
52
+ function restoreWrapper(file, previous) {
53
+ try {
54
+ if (previous === undefined)
55
+ fs.rmSync(file, { force: true });
56
+ else
57
+ fs.writeFileSync(file, previous, 'utf8');
58
+ return undefined;
59
+ }
60
+ catch (error) {
61
+ return error instanceof Error ? error.message : String(error);
62
+ }
63
+ }
64
+ export function configureWindowsAutostart(enabled, runtimeRoot) {
65
+ if (!isWindows()) {
66
+ return {
67
+ ok: !enabled,
68
+ enabled: false,
69
+ ...(!enabled ? {} : { error: 'Windows 开机自启仅支持 Windows 主机' }),
70
+ };
71
+ }
72
+ const absoluteRoot = path.resolve(runtimeRoot);
73
+ const scriptPath = wrapperPath(absoluteRoot);
74
+ if (!enabled) {
75
+ const result = runSchtasks(['/Delete', '/TN', WINDOWS_AUTOSTART_TASK_NAME, '/F']);
76
+ if (result.status !== 0 && windowsAutostartInstalled()) {
77
+ return {
78
+ ok: false,
79
+ enabled: true,
80
+ error: commandError(result, '删除 Windows 开机自启任务失败'),
81
+ };
82
+ }
83
+ try {
84
+ fs.rmSync(scriptPath, { force: true });
85
+ }
86
+ catch { }
87
+ return { ok: true, enabled: false };
88
+ }
89
+ let previousWrapper;
90
+ let previouslyInstalled = false;
91
+ try {
92
+ if (fs.existsSync(scriptPath))
93
+ previousWrapper = fs.readFileSync(scriptPath, 'utf8');
94
+ previouslyInstalled = windowsAutostartInstalled();
95
+ const taskScript = createWrapper(absoluteRoot);
96
+ const systemRoot = process.env.SystemRoot || 'C:\\Windows';
97
+ const powershell = path.join(systemRoot, 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe');
98
+ const taskCommand = `${windowsCommandLiteral(powershell)} -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -File ${windowsCommandLiteral(taskScript)}`;
99
+ // Omitting /RU keeps the task attached to the user creating it and avoids a password prompt.
100
+ const args = [
101
+ '/Create',
102
+ '/TN', WINDOWS_AUTOSTART_TASK_NAME,
103
+ '/SC', 'ONLOGON',
104
+ '/TR', taskCommand,
105
+ '/RL', 'LIMITED',
106
+ '/F',
107
+ ];
108
+ const result = runSchtasks(args);
109
+ if (result.status !== 0) {
110
+ const restoreError = restoreWrapper(scriptPath, previousWrapper);
111
+ const stillInstalled = windowsAutostartInstalled();
112
+ const rollbackSuffix = restoreError ? `; 恢复原启动脚本失败: ${restoreError}` : '';
113
+ return {
114
+ ok: false,
115
+ enabled: stillInstalled,
116
+ error: `${commandError(result, '创建 Windows 开机自启任务失败')}${rollbackSuffix}`,
117
+ };
118
+ }
119
+ return { ok: true, enabled: true };
120
+ }
121
+ catch (error) {
122
+ const restoreError = restoreWrapper(scriptPath, previousWrapper);
123
+ const rollbackSuffix = restoreError ? `; 恢复原启动脚本失败: ${restoreError}` : '';
124
+ return {
125
+ ok: false,
126
+ enabled: previouslyInstalled,
127
+ error: `${error instanceof Error ? error.message : String(error)}${rollbackSuffix}`,
128
+ };
129
+ }
130
+ }
@@ -2,7 +2,7 @@
2
2
  * Agent loop that works with AgentMessage throughout.
3
3
  * Transforms to Message[] only at the LLM call boundary.
4
4
  */
5
- import { EventStream } from "ecagent/runtime/compat";
5
+ import { EventStream } from "./runtime/compat.ts";
6
6
  import type { AgentContext, AgentEvent, AgentLoopConfig, AgentMessage, StreamFn } from "./types.ts";
7
7
  export type AgentEventSink = (event: AgentEvent) => Promise<void> | void;
8
8
  /**
@@ -2,7 +2,7 @@
2
2
  * Agent loop that works with AgentMessage throughout.
3
3
  * Transforms to Message[] only at the LLM call boundary.
4
4
  */
5
- import { EventStream, streamSimple, validateToolArguments, } from "ecagent/runtime/compat";
5
+ import { EventStream, streamSimple, validateToolArguments, } from "./runtime/compat.js";
6
6
  /**
7
7
  * Start an agent loop with a new prompt message.
8
8
  * The prompt is added to the context and events are emitted for it.
@@ -1,4 +1,4 @@
1
- import { type ImageContent, type Message, type SimpleStreamOptions, type ThinkingBudgets, type Transport } from "ecagent/runtime/compat";
1
+ import { type ImageContent, type Message, type SimpleStreamOptions, type ThinkingBudgets, type Transport } from "./runtime/compat.ts";
2
2
  import type { AfterToolCallContext, AfterToolCallResult, AgentEvent, AgentLoopTurnUpdate, AgentMessage, AgentState, BeforeToolCallContext, BeforeToolCallResult, PrepareNextTurnContext, QueueMode, StreamFn, ToolExecutionMode } from "./types.ts";
3
3
  export type { QueueMode } from "./types.ts";
4
4
  /** Options for constructing an {@link Agent}. */
@@ -1,4 +1,4 @@
1
- import { streamSimple, } from "ecagent/runtime/compat";
1
+ import { streamSimple, } from "./runtime/compat.js";
2
2
  import { runAgentLoop, runAgentLoopContinue } from "./agent-loop.js";
3
3
  function defaultConvertToLlm(messages) {
4
4
  return messages.filter((message) => message.role === "user" || message.role === "assistant" || message.role === "toolResult");
@@ -1,4 +1,4 @@
1
- import type { AssistantMessage, ImageContent, Model, Models } from "ecagent/runtime";
1
+ import type { AssistantMessage, ImageContent, Model, Models } from "../runtime/index.ts";
2
2
  import type { AgentMessage, AgentTool, QueueMode, ThinkingLevel } from "../types.ts";
3
3
  import type { AbortResult, AgentHarnessEvent, AgentHarnessEventResultMap, AgentHarnessOptions, AgentHarnessOwnEvent, AgentHarnessResources, AgentHarnessStreamOptions, ExecutionEnv, NavigateTreeResult, PromptTemplate, Skill } from "./types.ts";
4
4
  export declare class AgentHarness<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate, TTool extends AgentTool = AgentTool> {
@@ -1,4 +1,4 @@
1
- import type { Model, Models } from "ecagent/runtime";
1
+ import type { Model, Models } from "../../runtime/index.ts";
2
2
  import type { AgentMessage } from "../../types.ts";
3
3
  import type { BranchSummaryResult, Session, SessionTreeEntry } from "../types.ts";
4
4
  import { BranchSummaryError, type Result } from "../types.ts";
@@ -1,4 +1,4 @@
1
- import type { Model, Models, Usage } from "ecagent/runtime";
1
+ import type { Model, Models, Usage } from "../../runtime/index.ts";
2
2
  import type { AgentMessage, ThinkingLevel } from "../../types.ts";
3
3
  import { CompactionError, type Result, type SessionTreeEntry } from "../types.ts";
4
4
  import { type FileOperations } from "./utils.ts";
@@ -1,4 +1,4 @@
1
- import type { Message } from "ecagent/runtime";
1
+ import type { Message } from "../../runtime/index.ts";
2
2
  import type { AgentMessage } from "../../types.ts";
3
3
  /** File paths touched by a session branch or compaction range. */
4
4
  export interface FileOperations {
@@ -1,4 +1,4 @@
1
- import type { ImageContent, Message, TextContent } from "ecagent/runtime";
1
+ import type { ImageContent, Message, TextContent } from "../runtime/index.ts";
2
2
  import type { AgentMessage } from "../types.ts";
3
3
  export declare const COMPACTION_SUMMARY_PREFIX = "The conversation history before this point was compacted into the following summary:\n\n<summary>\n";
4
4
  export declare const COMPACTION_SUMMARY_SUFFIX = "\n</summary>";
@@ -1,4 +1,4 @@
1
- import type { ImageContent, TextContent } from "ecagent/runtime";
1
+ import type { ImageContent, TextContent } from "../../runtime/index.ts";
2
2
  import type { AgentMessage } from "../../types.ts";
3
3
  import type { CustomEntry, SessionContext, SessionMetadata, SessionStorage, SessionTreeEntry } from "../types.ts";
4
4
  export type ContextEntryTransform = (entries: readonly SessionTreeEntry[]) => readonly SessionTreeEntry[];
@@ -1,4 +1,4 @@
1
- import type { ImageContent, Model, Models, SimpleStreamOptions, TextContent, Transport } from "ecagent/runtime";
1
+ import type { ImageContent, Model, Models, SimpleStreamOptions, TextContent, Transport } from "../runtime/index.ts";
2
2
  import type { AgentEvent, AgentMessage, AgentTool, QueueMode, ThinkingLevel } from "../index.ts";
3
3
  import type { Session } from "./session/session.ts";
4
4
  /** Result of a fallible operation. Expected failures are returned as `ok: false` instead of thrown. */
@@ -2,7 +2,7 @@
2
2
  * Proxy stream function for apps that route LLM calls through a server.
3
3
  * The server manages auth and proxies requests to LLM providers.
4
4
  */
5
- import { type AssistantMessage, type AssistantMessageEvent, type Context, EventStream, type Model, type SimpleStreamOptions, type StopReason } from "ecagent/runtime";
5
+ import { type AssistantMessage, type AssistantMessageEvent, type Context, EventStream, type Model, type SimpleStreamOptions, type StopReason } from "./runtime/index.ts";
6
6
  declare class ProxyMessageEventStream extends EventStream<AssistantMessageEvent, AssistantMessage> {
7
7
  constructor();
8
8
  }
@@ -3,7 +3,7 @@
3
3
  * The server manages auth and proxies requests to LLM providers.
4
4
  */
5
5
  // Internal import for JSON parsing utility
6
- import { EventStream, parseStreamingJson, } from "ecagent/runtime";
6
+ import { EventStream, parseStreamingJson, } from "./runtime/index.js";
7
7
  // Create stream class matching ProxyMessageEventStream
8
8
  class ProxyMessageEventStream extends EventStream {
9
9
  constructor() {
@@ -1,4 +1,4 @@
1
- import type { Api, AssistantMessage, AssistantMessageEvent, AssistantMessageEventStream, Context, ImageContent, Message, Model, SimpleStreamOptions, TextContent, Tool, ToolResultMessage } from "ecagent/runtime";
1
+ import type { Api, AssistantMessage, AssistantMessageEvent, AssistantMessageEventStream, Context, ImageContent, Message, Model, SimpleStreamOptions, TextContent, Tool, ToolResultMessage } from "./runtime/index.ts";
2
2
  import type { Static, TSchema } from "typebox";
3
3
  /**
4
4
  * Stream function used by the agent loop. `Models.streamSimple` satisfies
@@ -45,6 +45,17 @@ function isRecord(value) {
45
45
  return !!value && typeof value === 'object' && !Array.isArray(value);
46
46
  }
47
47
 
48
+ function normalizeRoleEffortCompat(value) {
49
+ if (!isRecord(value) || !isRecord(value.permissions)
50
+ || !Object.prototype.hasOwnProperty.call(value.permissions, 'baseagents.codex.reasoning')) return value;
51
+ const permissions = { ...value.permissions };
52
+ if (!Object.prototype.hasOwnProperty.call(permissions, 'baseagents.codex.effort')) {
53
+ permissions['baseagents.codex.effort'] = permissions['baseagents.codex.reasoning'];
54
+ }
55
+ delete permissions['baseagents.codex.reasoning'];
56
+ return { ...value, permissions };
57
+ }
58
+
48
59
  function isValidAid(name) {
49
60
  const labels = name.split('.');
50
61
  return labels.length >= 3 && labels.every(label => /^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(label));
@@ -111,7 +122,21 @@ function planMigration(home) {
111
122
  if (fs.existsSync(registryFile) && input.roles !== undefined) {
112
123
  throw new Error(`${agentFile}: both config.roles and roles/index.json exist; resolve the ambiguous role source before migration`);
113
124
  }
114
- if (input.$schema_version === 5 && input.roles === undefined && fs.existsSync(registryFile)) continue;
125
+ if (input.$schema_version === 5 && input.roles === undefined && fs.existsSync(registryFile)) {
126
+ const { value: registry } = readJson(registryFile);
127
+ validateOrThrow(validators.registry, registry, registryFile);
128
+ for (const roleId of registry.roles) {
129
+ const roleFile = path.join(rolesDir, `${roleId}.json`);
130
+ if (!fs.existsSync(roleFile)) continue;
131
+ const { value: roleValue, text: roleText } = readJson(roleFile);
132
+ const normalizedRole = normalizeRoleEffortCompat(roleValue);
133
+ validateRoleOrThrow(validators.role, normalizedRole, roleFile);
134
+ if (appendChange(changes, roleFile, 'role-config', roleText, normalizedRole)) {
135
+ summary.rolesWritten += 1;
136
+ }
137
+ }
138
+ continue;
139
+ }
115
140
 
116
141
  const policy = isRecord(input.roles) ? input.roles : {};
117
142
  const definitions = isRecord(policy.definitions) ? policy.definitions : {};
@@ -156,7 +181,7 @@ function planMigration(home) {
156
181
  appendChange(changes, registryFile, 'role-registry', existingRegistry, registry);
157
182
  for (const [roleId, definition] of Object.entries(definitions)) {
158
183
  const roleFile = path.join(rolesDir, `${roleId}.json`);
159
- const roleValue = { $schema_version: 1, ...definition };
184
+ const roleValue = normalizeRoleEffortCompat({ $schema_version: 1, ...definition });
160
185
  validateRoleOrThrow(validators.role, roleValue, roleFile);
161
186
  if (appendChange(changes, roleFile, 'role-config', fs.existsSync(roleFile) ? fs.readFileSync(roleFile, 'utf8') : null, roleValue)) {
162
187
  summary.rolesWritten += 1;
@@ -14,8 +14,9 @@ AUN(Agent Union Network)是 agent 间安全通信的网络协议,SDK 的 n
14
14
 
15
15
  AID(Agent Identifier)是主体在 AUN 网络中的唯一身份标识,格式为 `{name}.{issuer}`(如 `alice.agentid.pub`)。任何拥有域名的组织都可以作为 Issuer 签发 AID——去中心化,无需中央权威。AID 同时也是通信地址:身份即入口。
16
16
 
17
- > 本机 evolcore 新建 AID 时的默认 issuer 是 `agentid.pub`(`src/aun/aid/control-aid.ts` 的
18
- > `resolveControlIssuer()`,可用 `EVOLCORE_ISSUER` 覆盖)。文档里出现的 `xxx.aid.pub` 是旧例子。
17
+ > 本机 evolcore 自动生成控制 AID 时的默认 AID domain 是 `agentid.cn`(`src/aun/aid/control-aid.ts` 的
18
+ > `resolveControlAidDomain()`;可用 `daemon.json.aun.defaultAidDomain` `EVOLCORE_AID_DOMAIN` 覆盖)。
19
+ > 已存在的 AID 保持原域名不变;`EVOLCORE_ISSUER` 仍作为废弃兼容别名支持。
19
20
 
20
21
  访问 `https://{aid}` 可获取该主体的个人主页。
21
22
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemas": {
3
- "daemon": { "currentVersion": 3 },
3
+ "daemon": { "currentVersion": 4 },
4
4
  "defaults": { "currentVersion": 4 },
5
5
  "agent-config": { "currentVersion": 10 },
6
6
  "relation-config": { "currentVersion": 8 },
@@ -34,6 +34,7 @@
34
34
  { "schema": "relation-config", "version": 6, "date": "2026-07-27", "description": "remove relation Session Renew effort; auxiliary inference is response-mode owned" },
35
35
  { "schema": "single-session", "version": 2, "date": "2026-07-27", "description": "add optional baseagent-aware auxiliaryModel and auxiliaryEffort without factory defaults" },
36
36
  { "schema": "daemon", "version": 3, "date": "2026-07-29", "description": "make daemon.json the exclusive source for all process debug settings" },
37
+ { "schema": "daemon", "version": 4, "date": "2026-08-04", "description": "add configurable default AID domain for generated identities" },
37
38
  { "schema": "defaults", "version": 3, "date": "2026-07-29", "description": "remove debug from the Agent configuration inheritance chain" },
38
39
  { "schema": "agent-config", "version": 8, "date": "2026-07-29", "description": "reject Agent-level debug because debug is process-owned" },
39
40
  { "schema": "agent-config", "version": 9, "date": "2026-07-29", "description": "add owner-controlled AUN group rules loading and Agent message access policy" },
@@ -144,7 +144,13 @@
144
144
  "aun": {
145
145
  "type": "object",
146
146
  "x-merge": "dict",
147
- "description": "Agent 级 AUN 通信配置"
147
+ "description": "Agent 级 AUN 通信配置",
148
+ "properties": {
149
+ "defaultEncrypt": {
150
+ "not": {},
151
+ "description": "不支持在 Agent 配置;请使用 daemon.json.aun.defaultEncrypt"
152
+ }
153
+ }
148
154
  },
149
155
  "models": {
150
156
  "type": "object",
@@ -164,6 +170,18 @@
164
170
  "not": {
165
171
  "type": "object",
166
172
  "required": ["fallbackModels"]
173
+ },
174
+ "properties": {
175
+ "headers": {
176
+ "type": "object",
177
+ "propertyNames": { "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$" },
178
+ "additionalProperties": { "type": "string", "pattern": "^[^\\u0000\\r\\n]*$" }
179
+ },
180
+ "queryParams": {
181
+ "type": "object",
182
+ "propertyNames": { "minLength": 1 },
183
+ "additionalProperties": { "type": "string" }
184
+ }
167
185
  }
168
186
  }
169
187
  },
@@ -0,0 +1,136 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "daemon.schema.4.json",
4
+ "title": "ProcessConfig v4 (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": 4, "default": 4, "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
+ "debug": {
20
+ "type": "object",
21
+ "description": "进程级调试配置;唯一合法来源为 daemon.json,不参与 Agent 覆盖链",
22
+ "x-merge": "dict",
23
+ "additionalProperties": false,
24
+ "properties": {
25
+ "logLevel": {
26
+ "type": "string",
27
+ "enum": ["DEBUG", "INFO", "WARN", "ERROR"],
28
+ "description": "daemon 日志级别"
29
+ },
30
+ "flusherDiag": {
31
+ "type": "boolean",
32
+ "description": "是否启用消息 flusher 诊断"
33
+ },
34
+ "aunTrace": {
35
+ "type": "boolean",
36
+ "description": "是否记录 AUN 协议 trace"
37
+ },
38
+ "aunSdkLog": {
39
+ "type": "boolean",
40
+ "description": "是否启用 AUN SDK 调试日志"
41
+ },
42
+ "upmsg": {
43
+ "type": "boolean",
44
+ "description": "是否向 Agent owner 发送 daemon 上线通知"
45
+ },
46
+ "eckSnapshots": {
47
+ "type": "boolean",
48
+ "default": false,
49
+ "description": "是否写入可能包含敏感上下文的 ECK 旁路调试快照"
50
+ }
51
+ }
52
+ },
53
+ "tunnel": {
54
+ "type": "object",
55
+ "description": "内网穿透配置",
56
+ "x-merge": "dict",
57
+ "properties": {
58
+ "targets": { "type": "array", "description": "穿透目标列表", "items": { "type": "object" } }
59
+ }
60
+ },
61
+ "aun": {
62
+ "type": "object",
63
+ "description": "AUN 进程配置",
64
+ "x-merge": "dict",
65
+ "properties": {
66
+ "encryptionSeed": { "type": ["string", "null"], "description": "已废弃兼容字段;EvolCore 固定使用内置值,检测到其他值时拒绝启动并提示联系管理人员" },
67
+ "gatewayUrl": {
68
+ "type": "string",
69
+ "description": "控制 AID 使用的显式 AUN WebSocket 网关;省略时由 SDK 缓存和 AID 发现决定"
70
+ },
71
+ "defaultAidDomain": {
72
+ "type": "string",
73
+ "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])?)+$",
74
+ "description": "自动生成控制 AID 与 benchmark AID 使用的后缀域名;不影响已有 AID"
75
+ },
76
+ "minEvolVersion": {
77
+ "type": "string",
78
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$",
79
+ "description": "AUN Menu 允许的最低 Evol 客户端版本;省略时不限制"
80
+ },
81
+ "menuTokenRequired": {
82
+ "type": "boolean",
83
+ "default": false,
84
+ "description": "是否要求普通 AUN Menu 请求携带有效 menu_token;默认 false"
85
+ },
86
+ "defaultEncrypt": {
87
+ "type": "boolean",
88
+ "description": "所有 daemon 管理的 AUN 通道共用的出站默认加密值;省略时为 true"
89
+ }
90
+ }
91
+ },
92
+ "serviceProxy": {
93
+ "type": "object",
94
+ "description": "AUN Service Proxy:把一个本地 HTTP/WS 服务暴露到 AUN 网络",
95
+ "x-merge": "dict",
96
+ "properties": {
97
+ "enabled": { "type": "boolean", "description": "是否启用 Service Proxy" },
98
+ "services": { "type": "array", "description": "暴露到 AUN 的本地服务列表", "items": { "type": "object" } }
99
+ }
100
+ },
101
+ "configSnapshots": {
102
+ "type": "boolean",
103
+ "default": true,
104
+ "description": "是否自动维护配置快照、启动日志和自检回落",
105
+ "x-merge": "scalar"
106
+ },
107
+ "idleMonitor": {
108
+ "type": "object",
109
+ "description": "流式输出空闲监控配置",
110
+ "x-merge": "dict",
111
+ "properties": {
112
+ "enabled": { "type": "boolean", "default": true, "description": "是否启用空闲监控" },
113
+ "timeout": { "type": "number", "default": 120, "description": "空闲超时秒数" },
114
+ "retryAttemptTimeout": { "type": "number", "description": "API 重试尝试连续无事件时的超时秒数;未设置时继承 timeout" },
115
+ "maxExecutionTime": { "type": "number", "default": 3600, "description": "单个任务总执行时限(秒),等待审批期间仍继续计时" }
116
+ }
117
+ },
118
+ "ecweb": {
119
+ "type": "object",
120
+ "description": "web 控制台开关/端口",
121
+ "x-merge": "dict",
122
+ "properties": {
123
+ "enabled": { "type": "boolean", "description": "是否启用 web 控制台" },
124
+ "port": { "type": "number", "description": "web 控制台监听端口" }
125
+ }
126
+ },
127
+ "watch": {
128
+ "type": "object",
129
+ "description": "日志监听配置",
130
+ "x-merge": "dict",
131
+ "properties": {
132
+ "logTypes": { "type": "array", "description": "要监听的日志类型", "items": { "type": "string" } }
133
+ }
134
+ }
135
+ }
136
+ }
@@ -35,6 +35,16 @@
35
35
  "type": "object",
36
36
  "additionalProperties": true,
37
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
+ },
38
48
  "fallbackModels": {
39
49
  "type": "array",
40
50
  "maxItems": 3,
@@ -68,7 +78,11 @@
68
78
  "properties": {
69
79
  "keystorePath": { "type": "string" },
70
80
  "encryptionSeed": { "type": "string" },
71
- "gatewayUrl": { "type": "string" }
81
+ "gatewayUrl": { "type": "string" },
82
+ "defaultEncrypt": {
83
+ "not": {},
84
+ "description": "不支持在 Agent defaults 配置;请使用 daemon.json.aun.defaultEncrypt"
85
+ }
72
86
  }
73
87
  },
74
88
  "responseMode": { "type": "string", "x-merge": "scalar" },
@@ -9,7 +9,16 @@
9
9
  "not": {
10
10
  "anyOf": [
11
11
  { "required": ["permissionMode"] },
12
- { "required": ["roles"] }
12
+ { "required": ["roles"] },
13
+ {
14
+ "required": ["aun"],
15
+ "properties": {
16
+ "aun": {
17
+ "type": "object",
18
+ "required": ["defaultEncrypt"]
19
+ }
20
+ }
21
+ }
13
22
  ]
14
23
  },
15
24
  "properties": {
@@ -26,6 +35,18 @@
26
35
  "not": {
27
36
  "type": "object",
28
37
  "required": ["fallbackModels"]
38
+ },
39
+ "properties": {
40
+ "headers": {
41
+ "type": "object",
42
+ "propertyNames": { "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$" },
43
+ "additionalProperties": { "type": "string", "pattern": "^[^\\u0000\\r\\n]*$" }
44
+ },
45
+ "queryParams": {
46
+ "type": "object",
47
+ "propertyNames": { "minLength": 1 },
48
+ "additionalProperties": { "type": "string" }
49
+ }
29
50
  }
30
51
  }
31
52
  },
@@ -13,7 +13,7 @@
13
13
  { "value": "baseagents.claude.model", "label": "Claude Model", "description": "角色可使用的 Claude 默认模型和模型白名单。", "valueType": "model", "hasOptions": true, "relationOverrideApplied": true, "constraintsApplied": true, "editable": true, "x-runtimeApplied": true, "x-optionsSource": "model-catalog", "patterns": [{ "value": "*", "label": "All Claude models" }, { "value": "claude-opus-*", "label": "Claude Opus family" }, { "value": "claude-sonnet-*", "label": "Claude Sonnet family" }, { "value": "claude-haiku-*", "label": "Claude Haiku family" }] },
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
- { "value": "baseagents.codex.reasoning", "label": "Codex Reasoning", "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" }] },
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
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
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" }] }
19
19
  ],
@@ -90,7 +90,7 @@
90
90
  "reason": { "type": "string", "description": "采用该 Claude 推理强度策略的可审计原因或管理备注。" }
91
91
  }
92
92
  },
93
- "baseagents.codex.reasoning": {
93
+ "baseagents.codex.effort": {
94
94
  "type": "object",
95
95
  "required": ["default", "allowOverride"],
96
96
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evolcore",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
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",
@@ -9,10 +9,8 @@
9
9
  },
10
10
  "files": [
11
11
  "dist/",
12
- "ecagent/src/",
13
12
  "ecagent/dist/",
14
- "ecagent/package.json",
15
- "ecagent/tsconfig.build.json",
13
+ "!ecagent/dist/**/*.map",
16
14
  "ecagent/LICENSE",
17
15
  "ecagent/NOTICE",
18
16
  "ecagent/README.md",
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../src/agent-loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGN,WAAW,EAIX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,YAAY,EAIZ,QAAQ,EACR,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEzE;;;GAGG;AACH,wBAAgB,SAAS,CACxB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,GACjB,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAiBzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,GACjB,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAwBzC;AAED,wBAAsB,YAAY,CACjC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBzB;AAED,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,QAAQ,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB"}