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/agent.js
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import {
|
|
3
|
+
import { SESSION_ID_ENV } from '../product.js';
|
|
4
|
+
import { resolvePaths, agentMdPath as getAgentMdPathFromPaths, agentPersonalDir, agentWelcomePath, aunPath as defaultAunPath } from '../paths.js';
|
|
4
5
|
import { loadDefaults, loadAllAgents, loadAgent, saveAgent, ensureAgentDirSkeleton } from '../config-store.js';
|
|
5
6
|
import { initConfigManager } from '../config/config-manager.js';
|
|
6
7
|
import { resolveConfigCommand } from '../config/resolved-config-op.js';
|
|
7
|
-
import {
|
|
8
|
+
import { executeResolvedConfigCommandAsync } from '../config/config-operation-service.js';
|
|
8
9
|
import { ipcQuery, IpcTransportError } from '../ipc.js';
|
|
9
10
|
import { CONFIG_SCHEMA_VERSION } from '../types.js';
|
|
10
11
|
import { ensureInitialRoleRegistry } from '../config/role-service.js';
|
|
11
12
|
import { agentProjectRootFromDefaults, deriveAgentProjectPath } from '../utils/project-path.js';
|
|
12
13
|
import { isValidChannelName } from '../core/channel-loader.js';
|
|
13
|
-
import { AGENT_DELEGATION_TOKEN_ENV } from '../core/auth/agent-delegation.js';
|
|
14
|
+
import { AGENT_DELEGATION_TOKEN_ENV, readDelegationCredential } from '../core/auth/agent-delegation.js';
|
|
14
15
|
import { readTaskRuntimeContextFromEnv } from './task-context.js';
|
|
16
|
+
import { isValidAid } from '../aun/aid/validation.js';
|
|
15
17
|
import { isHClassPath, isLClassPath, isSameOrDescendant } from '../core/permission/protected-paths.js';
|
|
18
|
+
import { findPostBootstrapWelcomeOutbox } from '../core/bootstrap-messages.js';
|
|
19
|
+
import { resolveAgentLifecycle } from '../config/lifecycle.js';
|
|
20
|
+
import { initializationSummary } from './agent-create.js';
|
|
21
|
+
import { parseAgentWelcomeMetadata, readAgentWelcomeTemplate, renderPostBootstrapWelcomeMessage, saveAgentWelcomeTemplate, validateWelcomeTemplate } from '../utils/welcome.js';
|
|
16
22
|
export { agentCreateInteractive, agentCreateNonInteractive, parseAgentOwnerArgs, resolveAgentCreatePlan, validateAgentCreatePlan, validateAgentOwnerOptions, } from './agent-create.js';
|
|
17
23
|
/** Route agent lifecycle commands from a managed task through daemon IPC. */
|
|
18
24
|
export async function runManagedAgentOperation(argv) {
|
|
19
25
|
const sessionId = process.env.EVOLCORE_SESSION_ID;
|
|
20
26
|
if (!sessionId)
|
|
21
27
|
return { ok: false, code: 'MANAGED_ONLY', error: 'agent operation is not running in a managed task' };
|
|
22
|
-
const delegationToken =
|
|
28
|
+
const delegationToken = readDelegationCredential();
|
|
23
29
|
if (!delegationToken) {
|
|
24
30
|
return { ok: false, code: 'DELEGATION_REQUIRED', error: `${AGENT_DELEGATION_TOKEN_ENV} is not set for the active task` };
|
|
25
31
|
}
|
|
@@ -74,6 +80,7 @@ function toAgentListItem(info, stale = false) {
|
|
|
74
80
|
name: info.name,
|
|
75
81
|
personalName: info.personalName || null,
|
|
76
82
|
status: stale && storedStatus !== 'disabled' && storedStatus !== 'error' ? 'unknown' : storedStatus,
|
|
83
|
+
lifecycle: info.lifecycle ?? null,
|
|
77
84
|
channels: info.channels || [],
|
|
78
85
|
projectPath: toPosix(info.projectPath || null),
|
|
79
86
|
baseagent: info.baseagent || null,
|
|
@@ -158,6 +165,27 @@ export async function agentShow(aid) {
|
|
|
158
165
|
registry.loadAll();
|
|
159
166
|
const agent = registry.get(aid);
|
|
160
167
|
if (!agent) {
|
|
168
|
+
const init = initializationSummary(aid);
|
|
169
|
+
if (init) {
|
|
170
|
+
return {
|
|
171
|
+
ok: true,
|
|
172
|
+
aid,
|
|
173
|
+
status: 'initializing',
|
|
174
|
+
lifecycle: loadAgent(aid)?.lifecycle ?? null,
|
|
175
|
+
identity: { name: null, description: null },
|
|
176
|
+
config: { baseagent: null, model: null, effort: null, chatmode: null, channels: [] },
|
|
177
|
+
connection: null,
|
|
178
|
+
sessions: { active: 0, last_activity: null },
|
|
179
|
+
paths: {
|
|
180
|
+
config: toPosix(path.join(p.agentsDir, aid, 'config.json')),
|
|
181
|
+
agent_md: toPosix(getAgentMdPath(aid)),
|
|
182
|
+
project: null,
|
|
183
|
+
data: toPosix(path.join(p.agentsDir, aid, 'data')),
|
|
184
|
+
},
|
|
185
|
+
initialization: init,
|
|
186
|
+
stale: true,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
161
189
|
const allList = registry.list();
|
|
162
190
|
const available = allList.map((i) => i.name).join(', ');
|
|
163
191
|
return { ok: false, error: `Agent "${aid}" not found.${available ? ` Available: ${available}` : ''}` };
|
|
@@ -183,6 +211,7 @@ export async function agentShow(aid) {
|
|
|
183
211
|
ok: true,
|
|
184
212
|
aid,
|
|
185
213
|
status: agentInfo.status || 'unknown',
|
|
214
|
+
lifecycle: loadAgent(aid)?.lifecycle ?? null,
|
|
186
215
|
identity,
|
|
187
216
|
config: {
|
|
188
217
|
baseagent: agentInfo.baseagent || null,
|
|
@@ -202,6 +231,7 @@ export async function agentShow(aid) {
|
|
|
202
231
|
project: toPosix(agentInfo.projectPath || null),
|
|
203
232
|
data: toPosix(path.join(p.agentsDir, aid, 'data')),
|
|
204
233
|
},
|
|
234
|
+
...(initializationSummary(aid) ? { initialization: initializationSummary(aid) } : {}),
|
|
205
235
|
...(stale ? { stale: true } : {}),
|
|
206
236
|
};
|
|
207
237
|
}
|
|
@@ -361,7 +391,7 @@ async function runManagedAgentConfig(args, options) {
|
|
|
361
391
|
const sessionId = process.env.EVOLCORE_SESSION_ID;
|
|
362
392
|
if (!sessionId || options.trustedLocal)
|
|
363
393
|
return { managed: false };
|
|
364
|
-
const delegationToken =
|
|
394
|
+
const delegationToken = readDelegationCredential();
|
|
365
395
|
if (!delegationToken) {
|
|
366
396
|
return {
|
|
367
397
|
managed: true,
|
|
@@ -390,12 +420,22 @@ async function runManagedAgentConfig(args, options) {
|
|
|
390
420
|
return { managed: true, error: { ok: false, code: 'DAEMON_UNAVAILABLE', error: 'Unable to connect to the evolcore daemon' } };
|
|
391
421
|
}
|
|
392
422
|
}
|
|
393
|
-
function executeLocalAgentConfig(args) {
|
|
423
|
+
async function executeLocalAgentConfig(args) {
|
|
394
424
|
initConfigManager();
|
|
395
425
|
const resolved = resolveConfigCommand(['config', ...args]);
|
|
396
426
|
if (!resolved.ok)
|
|
397
427
|
return { ok: false, code: resolved.code, error: resolved.reason };
|
|
398
|
-
return
|
|
428
|
+
return executeResolvedConfigCommandAsync(resolved.command, {
|
|
429
|
+
role: 'owner',
|
|
430
|
+
roleContext: {
|
|
431
|
+
self: resolved.command.self || '',
|
|
432
|
+
actorRole: 'owner',
|
|
433
|
+
actorRoleSource: 'local-cli',
|
|
434
|
+
isDaemonOwner: false,
|
|
435
|
+
fromControlChannel: false,
|
|
436
|
+
aunAvailable: true,
|
|
437
|
+
},
|
|
438
|
+
});
|
|
399
439
|
}
|
|
400
440
|
export async function agentGet(aid, key, options = {}) {
|
|
401
441
|
const managed = await runManagedAgentConfig(['get', key, '--self', aid], options);
|
|
@@ -412,7 +452,7 @@ export async function agentGet(aid, key, options = {}) {
|
|
|
412
452
|
return { ok: false, error: `Agent "${aid}" not found` };
|
|
413
453
|
}
|
|
414
454
|
try {
|
|
415
|
-
const result = executeLocalAgentConfig(['get', key, '--self', aid]);
|
|
455
|
+
const result = await executeLocalAgentConfig(['get', key, '--self', aid]);
|
|
416
456
|
return result.ok && result.subcommand === 'get'
|
|
417
457
|
? { ok: true, aid, key, value: result.value }
|
|
418
458
|
: { ok: false, code: result.ok ? 'UNEXPECTED_RESULT' : result.code, error: result.ok ? 'config get returned an unexpected result' : result.error };
|
|
@@ -438,7 +478,7 @@ export async function agentSet(aid, key, rawValue, options = {}) {
|
|
|
438
478
|
}
|
|
439
479
|
let value;
|
|
440
480
|
try {
|
|
441
|
-
const result = executeLocalAgentConfig(['set', key, rawValue, '--self', aid]);
|
|
481
|
+
const result = await executeLocalAgentConfig(['set', key, rawValue, '--self', aid]);
|
|
442
482
|
if (!result.ok)
|
|
443
483
|
return { ok: false, code: result.code, error: result.error };
|
|
444
484
|
if (result.subcommand !== 'set')
|
|
@@ -458,7 +498,7 @@ export async function agentSet(aid, key, rawValue, options = {}) {
|
|
|
458
498
|
return { ok: true, aid, key, value, reloaded };
|
|
459
499
|
}
|
|
460
500
|
export const AGENT_PERSONA_MAX_BYTES = 64 * 1024;
|
|
461
|
-
function validatePersonaContent(content) {
|
|
501
|
+
export function validatePersonaContent(content) {
|
|
462
502
|
if (content.includes('\0'))
|
|
463
503
|
return 'persona 只能包含文本内容';
|
|
464
504
|
if (Buffer.byteLength(content, 'utf8') > AGENT_PERSONA_MAX_BYTES) {
|
|
@@ -558,6 +598,78 @@ export async function agentPersona(aid, options = {}) {
|
|
|
558
598
|
return { ok: false, code: 'WRITE_FAILED', error: e?.message || String(e) };
|
|
559
599
|
}
|
|
560
600
|
}
|
|
601
|
+
/** Read or replace the current Agent's confirmed Bootstrap welcome template. */
|
|
602
|
+
export async function agentWelcome(aid, options = {}) {
|
|
603
|
+
if (!isValidAid(aid))
|
|
604
|
+
return { ok: false, code: 'INVALID_ARGS', error: 'Invalid Agent AID' };
|
|
605
|
+
if (options.text !== undefined) {
|
|
606
|
+
const validation = validateWelcomeTemplate(options.text);
|
|
607
|
+
if (!validation.valid)
|
|
608
|
+
return { ok: false, code: 'INVALID_ARGS', error: validation.errors.join('; ') };
|
|
609
|
+
}
|
|
610
|
+
const managedSession = !!process.env[SESSION_ID_ENV] && !options.trustedLocal;
|
|
611
|
+
const managedArgs = options.text !== undefined
|
|
612
|
+
? ['welcome', '--text', options.text]
|
|
613
|
+
: ['welcome', 'show'];
|
|
614
|
+
if (managedSession) {
|
|
615
|
+
if (readTaskRuntimeContextFromEnv()?.selfAid !== aid) {
|
|
616
|
+
return { ok: false, code: 'SELF_AGENT_REQUIRED', error: 'welcome only targets the current Agent' };
|
|
617
|
+
}
|
|
618
|
+
const managed = await runManagedAgentOperation(managedArgs);
|
|
619
|
+
if (!managed.ok)
|
|
620
|
+
return managed;
|
|
621
|
+
return {
|
|
622
|
+
ok: true,
|
|
623
|
+
aid,
|
|
624
|
+
content: managed.content ?? null,
|
|
625
|
+
...(managed.path ? { path: managed.path } : {}),
|
|
626
|
+
...(managed.saved ? { saved: true } : {}),
|
|
627
|
+
...(managed.bytes !== undefined ? { bytes: managed.bytes } : {}),
|
|
628
|
+
...(managed.sha256 ? { sha256: managed.sha256 } : {}),
|
|
629
|
+
};
|
|
630
|
+
}
|
|
631
|
+
const config = loadAgent(aid);
|
|
632
|
+
if (!config)
|
|
633
|
+
return { ok: false, code: 'NOT_FOUND', error: 'Agent not found' };
|
|
634
|
+
if (options.text === undefined) {
|
|
635
|
+
try {
|
|
636
|
+
return { ok: true, aid, content: readAgentWelcomeTemplate(aid), path: agentWelcomePath(aid) };
|
|
637
|
+
}
|
|
638
|
+
catch (e) {
|
|
639
|
+
return { ok: false, code: 'READ_FAILED', error: e instanceof Error ? e.message : String(e) };
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
if (resolveAgentLifecycle(config) !== 'bootstrapping' || config.initialization) {
|
|
643
|
+
return { ok: false, code: 'INVALID_LIFECYCLE', error: 'welcome can only be saved during conversational Bootstrap' };
|
|
644
|
+
}
|
|
645
|
+
try {
|
|
646
|
+
if (findPostBootstrapWelcomeOutbox(aid, { includeTerminal: true }).length) {
|
|
647
|
+
if (readAgentWelcomeTemplate(aid) === options.text) {
|
|
648
|
+
return { ok: true, aid, content: options.text, saved: true, path: agentWelcomePath(aid), bytes: Buffer.byteLength(options.text, 'utf8') };
|
|
649
|
+
}
|
|
650
|
+
return { ok: false, code: 'WELCOME_FROZEN', error: 'welcome delivery has already been prepared; resume ready with the saved text' };
|
|
651
|
+
}
|
|
652
|
+
const mdPath = getAgentMdPath(aid);
|
|
653
|
+
const metadata = parseAgentWelcomeMetadata(fs.existsSync(mdPath) ? fs.readFileSync(mdPath, 'utf8') : '');
|
|
654
|
+
try {
|
|
655
|
+
for (const owner of config.owners?.length ? config.owners : [aid]) {
|
|
656
|
+
renderPostBootstrapWelcomeMessage({
|
|
657
|
+
template: options.text, agentName: metadata.name || aid.split('.')[0], agentAid: aid,
|
|
658
|
+
agentDescription: metadata.description, agentTags: metadata.tags,
|
|
659
|
+
ownerAid: owner, ownerName: owner.split('.')[0],
|
|
660
|
+
});
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
catch (error) {
|
|
664
|
+
return { ok: false, code: 'WELCOME_INVALID', error: error.message };
|
|
665
|
+
}
|
|
666
|
+
const saved = saveAgentWelcomeTemplate(aid, options.text);
|
|
667
|
+
return { ok: true, aid, content: options.text, ...saved, saved: true };
|
|
668
|
+
}
|
|
669
|
+
catch (e) {
|
|
670
|
+
return { ok: false, code: 'WRITE_FAILED', error: e instanceof Error ? e.message : String(e) };
|
|
671
|
+
}
|
|
672
|
+
}
|
|
561
673
|
/**
|
|
562
674
|
* Add or overwrite a channel instance on a per-agent config.
|
|
563
675
|
*
|
|
@@ -693,7 +805,7 @@ export async function agentReady(aid) {
|
|
|
693
805
|
}
|
|
694
806
|
const p = resolvePaths();
|
|
695
807
|
try {
|
|
696
|
-
const delegationToken = managedSessionId ?
|
|
808
|
+
const delegationToken = managedSessionId ? readDelegationCredential() : undefined;
|
|
697
809
|
if (managedSessionId && !delegationToken) {
|
|
698
810
|
return { ok: false, code: 'DELEGATION_REQUIRED', error: `${AGENT_DELEGATION_TOKEN_ENV} is not set for the active task` };
|
|
699
811
|
}
|
|
@@ -703,11 +815,11 @@ export async function agentReady(aid) {
|
|
|
703
815
|
...(managedSessionId ? { sessionId: managedSessionId, delegationToken } : {}),
|
|
704
816
|
}, 30_000);
|
|
705
817
|
if (!result)
|
|
706
|
-
return { ok: false, code: 'DAEMON_UNAVAILABLE', error: 'Unable to connect to the
|
|
818
|
+
return { ok: false, code: 'DAEMON_UNAVAILABLE', error: 'Unable to connect to the EvolCore daemon; agent ready requires daemon IPC' };
|
|
707
819
|
if (!result.ok) {
|
|
708
820
|
return { ok: false, code: result.code, error: result.error || 'Failed to complete bootstrap' };
|
|
709
821
|
}
|
|
710
|
-
return { ok: true, aid, reloaded: true };
|
|
822
|
+
return { ...result, ok: true, aid, reloaded: result.reloaded === true };
|
|
711
823
|
}
|
|
712
824
|
catch (e) {
|
|
713
825
|
return {
|