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.
Files changed (304) hide show
  1. package/CHANGELOG.md +632 -565
  2. package/LICENSE +21 -21
  3. package/README.md +455 -455
  4. package/bin/codex-managed-acl.ps1 +203 -160
  5. package/bin/codex-managed-hook.mjs +208 -208
  6. package/bin/ec-safe-output.js +327 -327
  7. package/bin/ec.js +40 -29
  8. package/bin/install-codex-managed-hooks.mjs +582 -555
  9. package/dist/agents/baseagent-availability.js +68 -0
  10. package/dist/agents/baseagent.js +96 -46
  11. package/dist/agents/claude-runner.js +172 -33
  12. package/dist/agents/codex/app-server-client.js +76 -31
  13. package/dist/agents/codex/catalog.js +1 -1
  14. package/dist/agents/codex/diagnostics.js +34 -1
  15. package/dist/agents/codex-runner.js +434 -446
  16. package/dist/agents/ecagent-runner.js +174 -34
  17. package/dist/agents/gemini-runner.js +8 -7
  18. package/dist/agents/runner-types.js +75 -19
  19. package/dist/aun/aid/agentmd.js +151 -36
  20. package/dist/aun/aid/client.js +1 -1
  21. package/dist/aun/aid/control-aid.js +180 -1
  22. package/dist/aun/aid/identity.js +4 -4
  23. package/dist/aun/aid/index.js +1 -1
  24. package/dist/aun/aid/store.js +17 -13
  25. package/dist/aun/group/history.js +303 -0
  26. package/dist/aun/group/identity.js +43 -0
  27. package/dist/aun/group/index.js +5 -0
  28. package/dist/aun/{msg/group.js → group/operations.js} +162 -39
  29. package/dist/aun/{menu-client.js → menu/client.js} +85 -6
  30. package/dist/aun/menu/index.js +2 -0
  31. package/dist/aun/menu/transport.js +49 -0
  32. package/dist/aun/msg/index.js +2 -1
  33. package/dist/aun/msg/managed-operation.js +85 -19
  34. package/dist/aun/msg/mention-schema.js +51 -0
  35. package/dist/aun/msg/p2p.js +19 -9
  36. package/dist/aun/msg/upload.js +43 -80
  37. package/dist/aun/outbox.js +29 -7
  38. package/dist/aun/rpc/client.js +1 -0
  39. package/dist/aun/storage/client.js +39 -50
  40. package/dist/channels/aun.js +842 -318
  41. package/dist/channels/daemon.js +10 -6
  42. package/dist/cli/agent-command.js +212 -89
  43. package/dist/cli/agent-create.js +626 -11
  44. package/dist/cli/agent.js +125 -13
  45. package/dist/cli/aun-commands.js +487 -337
  46. package/dist/cli/bench.js +20 -20
  47. package/dist/cli/config.js +55 -33
  48. package/dist/cli/contact.js +72 -15
  49. package/dist/cli/ctl-command.js +24 -24
  50. package/dist/cli/daemon-commands.js +140 -63
  51. package/dist/cli/diag.js +31 -0
  52. package/dist/cli/fs-command.js +70 -70
  53. package/dist/cli/handoff-command.js +46 -14
  54. package/dist/cli/index.js +91 -79
  55. package/dist/cli/init.js +34 -1
  56. package/dist/cli/link-rules.js +21 -21
  57. package/dist/cli/managed-command-guard.js +5 -1
  58. package/dist/cli/menu-client.js +51 -32
  59. package/dist/cli/model.js +3 -3
  60. package/dist/cli/net-check.js +22 -22
  61. package/dist/cli/queue-command.js +31 -31
  62. package/dist/cli/response.js +32 -32
  63. package/dist/cli/restart-monitor.js +103 -42
  64. package/dist/cli/stats.js +51 -51
  65. package/dist/cli/task-command.js +59 -0
  66. package/dist/cli/task-context.js +97 -49
  67. package/dist/cli/trigger-command.js +74 -64
  68. package/dist/config/builtin-roles.js +11 -0
  69. package/dist/config/config-field-policy.js +11 -0
  70. package/dist/config/config-manager.js +32 -4
  71. package/dist/config/config-operation-service.js +160 -0
  72. package/dist/config/contact-book-store.js +1 -1
  73. package/dist/config/contact-book.js +1 -1
  74. package/dist/config/contact-operation-service.js +97 -8
  75. package/dist/config/peer-role-resolver.js +1 -1
  76. package/dist/config/resolved-config-op.js +30 -7
  77. package/dist/config-store.js +1 -1
  78. package/dist/core/agent-application-service.js +7 -1
  79. package/dist/core/audit/event-key.js +17 -2
  80. package/dist/core/audit/log-integrity.js +34 -8
  81. package/dist/core/auth/agent-delegation.js +48 -14
  82. package/dist/core/auth/auth-gateway.js +2 -0
  83. package/dist/core/auth/authorization-audit.js +53 -49
  84. package/dist/core/auth/operation-authorizer.js +90 -7
  85. package/dist/core/auth/operation-catalog.js +145 -4
  86. package/dist/core/auth/remote-access-store.js +155 -10
  87. package/dist/core/bootstrap-messages.js +66 -7
  88. package/dist/core/bootstrap-service.js +111 -20
  89. package/dist/core/command/agent-control.js +88 -7
  90. package/dist/core/command/agent-storage-menu.js +443 -0
  91. package/dist/core/command/cli-intent-parser.js +19 -0
  92. package/dist/core/command/command-handler.js +159 -65
  93. package/dist/core/command/data-root-resolver.js +273 -0
  94. package/dist/core/command/diag-service.js +118 -0
  95. package/dist/core/command/group-menu.js +7 -2
  96. package/dist/core/command/menu-catalog.js +46 -7
  97. package/dist/core/command/menu-handler.js +392 -100
  98. package/dist/core/command/menu-protocol.js +45 -6
  99. package/dist/core/command/menu-token-store.js +41 -8
  100. package/dist/core/command/role-menu.js +2 -2
  101. package/dist/core/command/slash-gate.js +34 -4
  102. package/dist/core/command/slash-handler.js +123 -43
  103. package/dist/core/event-catalog.js +4 -0
  104. package/dist/core/evolagent-registry.js +28 -2
  105. package/dist/core/group/invite-service.js +924 -0
  106. package/dist/core/handoff/runtime.js +205 -27
  107. package/dist/core/handoff/store.js +193 -4
  108. package/dist/core/interaction-router.js +22 -8
  109. package/dist/core/message/im-renderer.js +146 -34
  110. package/dist/core/message/message-bridge.js +163 -20
  111. package/dist/core/message/message-log.js +5 -3
  112. package/dist/core/message/message-queue.js +99 -41
  113. package/dist/core/message/message-utils.js +1 -0
  114. package/dist/core/message/response-engine.js +755 -144
  115. package/dist/core/model/catalog-service.js +79 -49
  116. package/dist/core/model/context-window-suffix.js +33 -0
  117. package/dist/core/model/model-catalog.js +1 -1
  118. package/dist/core/model/model-permission.js +12 -3
  119. package/dist/core/permission/approval-gateway.js +36 -3
  120. package/dist/core/permission/ec-command-parser.js +112 -41
  121. package/dist/core/permission/protected-paths.js +134 -16
  122. package/dist/core/permission/sandbox-runtime.js +108 -17
  123. package/dist/core/permission/tool-error-code.js +15 -0
  124. package/dist/core/permission/tool-policy.js +9 -8
  125. package/dist/core/relation/peer-identity.js +57 -6
  126. package/dist/core/relation/shared-data.js +106 -0
  127. package/dist/core/role/runtime-policy.js +64 -0
  128. package/dist/core/runtime-lock.js +10 -26
  129. package/dist/core/session/runner-task-history.js +170 -0
  130. package/dist/core/session/session-manager.js +34 -6
  131. package/dist/core/session/session-mapper.js +41 -0
  132. package/dist/core/session/session-turn-coordinator.js +37 -7
  133. package/dist/core/session/session-turns.js +48 -7
  134. package/dist/core/task/task-recovery-service.js +176 -0
  135. package/dist/core/task/task-resume-operation.js +32 -0
  136. package/dist/eck/group-rules-sync.js +5 -3
  137. package/dist/eck/kit-renderer.js +1 -0
  138. package/dist/index.js +588 -217
  139. package/dist/ipc.js +193 -15
  140. package/dist/paths.js +17 -4
  141. package/dist/product.js +2 -0
  142. package/dist/response-system/engines/v1/proactive-flow.js +59 -2
  143. package/dist/stats/billing.js +41 -15
  144. package/dist/stats/db.js +159 -159
  145. package/dist/stats/eck-vars.js +9 -9
  146. package/dist/stats/price-resolver.js +28 -10
  147. package/dist/stats/query.js +139 -139
  148. package/dist/stats/role-budget.js +6 -6
  149. package/dist/stats/writer.js +51 -51
  150. package/dist/trigger/event-source.js +19 -0
  151. package/dist/trigger/feedback.js +233 -40
  152. package/dist/trigger/parser.js +55 -5
  153. package/dist/trigger/patch.js +9 -0
  154. package/dist/trigger/scheduler.js +30 -4
  155. package/dist/trigger/validation.js +20 -3
  156. package/dist/utils/cross-platform.js +30 -1
  157. package/dist/utils/ecweb-utils.js +1 -0
  158. package/dist/utils/error-dict.json +160 -160
  159. package/dist/utils/error-utils.js +61 -2
  160. package/dist/utils/evolcore-version.js +129 -0
  161. package/dist/utils/logger.js +26 -14
  162. package/dist/utils/macos-autostart.js +22 -22
  163. package/dist/utils/model-prices.jsonl +23 -23
  164. package/dist/utils/npm-ops.js +176 -35
  165. package/dist/utils/tool-summary.js +59 -3
  166. package/dist/utils/welcome.js +196 -23
  167. package/ecagent/LICENSE +21 -21
  168. package/ecagent/NOTICE +11 -11
  169. package/ecagent/README.md +61 -61
  170. package/ecagent/dist/harness/agent-harness.js +3 -0
  171. package/ecagent/dist/harness/compaction/branch-summarization.js +30 -30
  172. package/ecagent/dist/harness/compaction/compaction.js +83 -83
  173. package/ecagent/dist/harness/messages.js +7 -7
  174. package/ecagent/dist/harness/session/jsonl-storage.js +21 -2
  175. package/kits/docs/GUIDE.md +20 -20
  176. package/kits/docs/INDEX.md +60 -66
  177. package/kits/docs/aun/CHEATSHEET.md +19 -19
  178. package/kits/docs/aun/SYNC_PROTOCOL.md +15 -15
  179. package/kits/docs/channels/aun.md +69 -56
  180. package/kits/docs/channels/feishu.md +56 -56
  181. package/kits/docs/context-assembly.md +379 -367
  182. package/kits/docs/eck_templates/GUIDE.template.md +22 -22
  183. package/kits/docs/eck_templates/INDEX.template.md +28 -28
  184. package/kits/docs/eck_templates/path-registry.template.md +33 -33
  185. package/kits/docs/eck_templates/runtime.template.md +19 -19
  186. package/kits/docs/evolcore/INDEX.md +76 -71
  187. package/kits/docs/evolcore/agent-create.md +202 -165
  188. package/kits/docs/evolcore/agent.md +99 -67
  189. package/kits/docs/evolcore/aid.md +68 -60
  190. package/kits/docs/evolcore/codex-windows-sandbox.md +146 -146
  191. package/kits/docs/evolcore/config.md +241 -195
  192. package/kits/docs/evolcore/contact.md +75 -68
  193. package/kits/docs/evolcore/ctl.md +46 -46
  194. package/kits/docs/evolcore/event.md +216 -216
  195. package/kits/docs/evolcore/fs-architecture.md +1215 -1215
  196. package/kits/docs/evolcore/fs.md +110 -110
  197. package/kits/docs/evolcore/group-collaboration.md +244 -244
  198. package/kits/docs/evolcore/group-fs.md +17 -17
  199. package/kits/docs/evolcore/group-rules.md +251 -251
  200. package/kits/docs/evolcore/group.md +267 -152
  201. package/kits/docs/evolcore/menu-client.md +58 -34
  202. package/kits/docs/evolcore/model.md +50 -50
  203. package/kits/docs/evolcore/msg.md +169 -165
  204. package/kits/docs/evolcore/response.md +75 -75
  205. package/kits/docs/evolcore/rpc.md +37 -37
  206. package/kits/docs/evolcore/self-summary.md +29 -29
  207. package/kits/docs/evolcore/stats.md +83 -83
  208. package/kits/docs/evolcore/storage.md +53 -50
  209. package/kits/docs/evolcore/task.md +14 -0
  210. package/kits/docs/evolcore/trigger.md +623 -575
  211. package/kits/docs/identity/AID_PROFILE_SPEC.md +26 -26
  212. package/kits/docs/identity/PATH_OPS.md +16 -16
  213. package/kits/docs/identity/ROLE_DETAIL.md +25 -25
  214. package/kits/docs/identity/identity-tools.md +26 -26
  215. package/kits/docs/path-registry.md +62 -62
  216. package/kits/docs/prompt-loading-architecture.md +269 -269
  217. package/kits/docs/venues/aun-group.md +45 -45
  218. package/kits/docs/venues/aun-private.md +10 -10
  219. package/kits/docs/venues/client-desktop.md +10 -10
  220. package/kits/docs/venues/client-mobile.md +10 -10
  221. package/kits/docs/venues/feishu-group.md +13 -13
  222. package/kits/docs/venues/feishu-private.md +9 -9
  223. package/kits/docs/venues/group.md +42 -25
  224. package/kits/docs/venues/private.md +10 -10
  225. package/kits/eck_manifest.auxiliary.json +43 -43
  226. package/kits/eck_manifest.json +217 -190
  227. package/kits/eck_message_manifest.json +74 -74
  228. package/kits/migrations/README-role-config-v4.md +32 -32
  229. package/kits/migrations/migrate-contact-book-v2.mjs +748 -748
  230. package/kits/migrations/migrate-role-config-v4.mjs +614 -614
  231. package/kits/migrations/migrate-role-config-v5.mjs +365 -365
  232. package/kits/migrations/rename-config-file.mjs +99 -99
  233. package/kits/rules/01-overview.md +166 -162
  234. package/kits/rules/02-navigation.md +96 -96
  235. package/kits/rules/03-identity.md +36 -36
  236. package/kits/rules/04-relation.md +76 -75
  237. package/kits/rules/05-venue.md +60 -60
  238. package/kits/rules/06-channel.md +65 -63
  239. package/kits/schemas/_meta.json +53 -53
  240. package/kits/schemas/agent-config.schema.1.json +177 -177
  241. package/kits/schemas/agent-config.schema.10.json +395 -395
  242. package/kits/schemas/agent-config.schema.11.json +421 -421
  243. package/kits/schemas/agent-config.schema.12.json +451 -427
  244. package/kits/schemas/agent-config.schema.2.json +239 -239
  245. package/kits/schemas/agent-config.schema.3.json +119 -119
  246. package/kits/schemas/agent-config.schema.4.json +208 -208
  247. package/kits/schemas/agent-config.schema.5.json +326 -326
  248. package/kits/schemas/agent-config.schema.6.json +322 -322
  249. package/kits/schemas/agent-config.schema.7.json +303 -303
  250. package/kits/schemas/agent-config.schema.8.json +304 -304
  251. package/kits/schemas/agent-config.schema.9.json +364 -364
  252. package/kits/schemas/contact-book.schema.1.json +36 -36
  253. package/kits/schemas/contact-book.schema.2.json +43 -43
  254. package/kits/schemas/contact-book.schema.3.json +67 -67
  255. package/kits/schemas/daemon.schema.1.json +91 -91
  256. package/kits/schemas/daemon.schema.2.json +101 -101
  257. package/kits/schemas/daemon.schema.3.json +123 -123
  258. package/kits/schemas/daemon.schema.4.json +136 -136
  259. package/kits/schemas/daemon.schema.5.json +135 -135
  260. package/kits/schemas/daemon.schema.6.json +131 -131
  261. package/kits/schemas/defaults.schema.1.json +81 -81
  262. package/kits/schemas/defaults.schema.2.json +85 -85
  263. package/kits/schemas/defaults.schema.3.json +73 -73
  264. package/kits/schemas/defaults.schema.4.json +107 -107
  265. package/kits/schemas/defaults.schema.5.json +119 -119
  266. package/kits/schemas/menu-exec-schema-commands.md +208 -208
  267. package/kits/schemas/migrations/README.md +30 -30
  268. package/kits/schemas/relation-config.schema.1.json +158 -158
  269. package/kits/schemas/relation-config.schema.2.json +73 -73
  270. package/kits/schemas/relation-config.schema.3.json +50 -50
  271. package/kits/schemas/relation-config.schema.4.json +47 -47
  272. package/kits/schemas/relation-config.schema.5.json +47 -47
  273. package/kits/schemas/relation-config.schema.6.json +46 -46
  274. package/kits/schemas/relation-config.schema.7.json +59 -59
  275. package/kits/schemas/relation-config.schema.8.json +103 -103
  276. package/kits/schemas/role-config.schema.1.json +215 -201
  277. package/kits/schemas/role-registry.schema.1.json +35 -35
  278. package/kits/schemas/single-session.schema.1.json +31 -31
  279. package/kits/schemas/single-session.schema.2.json +57 -57
  280. package/kits/schemas/single-session.schema.3.json +32 -32
  281. package/kits/templates/bootstrap-welcome.md +17 -17
  282. package/kits/templates/message-fragments/handoff-context-to-target.md +9 -9
  283. package/kits/templates/message-fragments/handoff-request-to-target.md +19 -19
  284. package/kits/templates/message-fragments/handoff-response-to-origin.md +9 -9
  285. package/kits/templates/message-fragments/inject-default.md +2 -2
  286. package/kits/templates/message-fragments/item.md +2 -2
  287. package/kits/templates/roles/admin.json +92 -92
  288. package/kits/templates/roles/member.json +101 -96
  289. package/kits/templates/roles/owner.json +9 -9
  290. package/kits/templates/roles/visitor.json +90 -85
  291. package/kits/templates/system-fragments/baseagent.md +14 -14
  292. package/kits/templates/system-fragments/bootstrap.md +53 -34
  293. package/kits/templates/system-fragments/channel.md +28 -64
  294. package/kits/templates/system-fragments/commands.md +36 -28
  295. package/kits/templates/system-fragments/group-unread-history.md +7 -0
  296. package/kits/templates/system-fragments/identity.md +13 -13
  297. package/kits/templates/system-fragments/relation.md +19 -19
  298. package/kits/templates/system-fragments/reply.md +56 -0
  299. package/kits/templates/system-fragments/session.md +59 -59
  300. package/kits/templates/system-fragments/venue.md +31 -31
  301. package/package.json +104 -98
  302. package/dist/aun/group-identity.js +0 -9
  303. /package/dist/aun/{group-fs-download.js → group/fs-download.js} +0 -0
  304. /package/dist/aun/{msg/group-index.js → group/index-rpc.js} +0 -0
@@ -1,98 +1,103 @@
1
- {
2
- "$schema_version": 1,
3
- "description": "Trusted user with own-scope access",
4
- "rank": 300,
5
- "allowAccess": true,
6
- "usageLimits": {
7
- "enabled": true,
8
- "resetMode": "daily",
9
- "currency": "CNY",
10
- "limitAmount": 50,
11
- "costBasis": "gateway",
12
- "scope": "subject"
13
- },
14
- "permissions": {
15
- "permissionMode": { "default": "auto", "allowOverride": false }
16
- },
17
- "commandPermissions": {
18
- "role.assign": { "allow": false },
19
- "role.revoke": { "allow": false },
20
- "role.*": { "allow": false },
21
- "connect.*": { "allow": false },
22
- "contact.*": { "allow": false },
23
- "system.*": { "allow": false },
24
- "storage.*": { "allow": false },
25
- "aid.*": { "allow": false },
26
- "gateway.*": { "allow": false },
27
- "group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
28
- "agent.baseagent.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
29
- "agent.baseagent.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
30
- "agent.*": { "allow": false },
31
- "observable.current": { "allow": false },
32
- "session.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
33
- "session.topic.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
34
- "session.topic.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
35
- "project.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
36
- "activity.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
37
- "category:read": { "allow": true },
38
- "category:write-own": { "allow": true },
39
- "config.get": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "behavior-read" } },
40
- "config.set": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "role-overridable-write" } },
41
- "config.unset": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "role-overridable-write" } },
42
- "model.*": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
43
- "permission.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
44
- "permission.answer": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
45
- "chatmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
46
- "chatmode.update": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
47
- "mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true } },
48
- "mentionmode.update": { "allow": false },
49
- "group.mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
50
- "group.mentionmode.update": { "allow": false },
51
- "group.rulespolicy.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
52
- "group.rulespolicy.update": { "allow": false },
53
- "trigger.*": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
54
- "ec.msg.send": { "allow": true, "constraints": { "ownPeerOnly": true } },
55
- "contact.add": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
56
- "ec.msg.file": { "allow": true, "constraints": { "ownPeerOnly": true } },
57
- "ec.msg.history": { "allow": true, "scopes": ["relation"], "constraints": { "privateOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
58
- "ec.msg.online": { "allow": true, "scopes": ["relation"], "constraints": { "privateOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
59
- "ec.version": { "allow": true },
60
- "ec.aid.show": { "allow": true, "dangerous": true, "scopes": ["relation"], "constraints": { "targetCurrentAgentOnly": true } },
61
- "ec.aid.lookup": { "allow": true, "scopes": ["relation"] },
62
- "ec.aid.agentmd.get": { "allow": true, "scopes": ["relation"] },
1
+ {
2
+ "$schema_version": 1,
3
+ "description": "Trusted user with own-scope access",
4
+ "rank": 300,
5
+ "allowAccess": true,
6
+ "usageLimits": {
7
+ "enabled": true,
8
+ "resetMode": "daily",
9
+ "currency": "CNY",
10
+ "limitAmount": 50,
11
+ "costBasis": "gateway",
12
+ "scope": "subject"
13
+ },
14
+ "permissions": {
15
+ "permissionMode": { "default": "auto", "allowOverride": false }
16
+ },
17
+ "commandPermissions": {
18
+ "role.assign": { "allow": false },
19
+ "role.revoke": { "allow": false },
20
+ "role.*": { "allow": false },
21
+ "connect.*": { "allow": false },
22
+ "contact.*": { "allow": false },
23
+ "system.*": { "allow": false },
24
+ "storage.*": { "allow": false },
25
+ "aid.*": { "allow": false },
26
+ "gateway.*": { "allow": false },
27
+ "group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
28
+ "agent.baseagent.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
29
+ "agent.baseagent.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
30
+ "agent.*": { "allow": false },
31
+ "observable.current": { "allow": false },
32
+ "session.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
33
+ "session.topic.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
34
+ "session.topic.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
35
+ "project.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
36
+ "activity.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
37
+ "category:read": { "allow": true },
38
+ "category:write-own": { "allow": true },
39
+ "config.get": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "behavior-read" } },
40
+ "config.set": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "role-overridable-write" } },
41
+ "config.unset": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "role-overridable-write" } },
42
+ "model.*": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
43
+ "permission.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
44
+ "permission.answer": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
45
+ "chatmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
46
+ "chatmode.update": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
47
+ "mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true } },
48
+ "mentionmode.update": { "allow": false },
49
+ "group.mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
50
+ "group.mentionmode.update": { "allow": false },
51
+ "group.rulespolicy.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
52
+ "group.rulespolicy.update": { "allow": false },
53
+ "trigger.*": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
54
+ "ec.msg.send": { "allow": true, "constraints": { "ownPeerOnly": true } },
55
+ "contact.add": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
56
+ "ec.msg.file": { "allow": true, "constraints": { "ownPeerOnly": true } },
57
+ "ec.msg.history": { "allow": true, "scopes": ["relation"], "constraints": { "privateOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
58
+ "ec.msg.online": { "allow": true, "scopes": ["relation"], "constraints": { "privateOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
59
+ "ec.version": { "allow": true },
60
+ "ec.aid.show": { "allow": true, "dangerous": true, "scopes": ["relation"], "constraints": { "targetCurrentAgentOnly": true } },
61
+ "ec.aid.lookup": { "allow": true, "scopes": ["relation"] },
62
+ "ec.aid.agentmd.get": { "allow": true, "scopes": ["relation"] },
63
63
  "ec.aid.agentmd.put": { "allow": false },
64
64
  "ec.aid.avatar": { "allow": false },
65
- "ec.fs.ls": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
66
- "ec.fs.stat": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
67
- "ec.fs.lstat": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
68
- "ec.fs.cat": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
69
- "ec.fs.find": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
70
- "ec.fs.df": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
71
- "ec.fs.getfacl": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
72
- "ec.fs.mkdir": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
73
- "ec.fs.upload": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
74
- "ec.fs.copy": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
75
- "ec.fs.move": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
76
- "ec.fs.remove": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
77
- "ec.handoff.status": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
78
- "ec.handoff.list": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
79
- "ec.handoff.trace": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
80
- "ec.handoff.return": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
81
- "ec.queue.*": { "allow": false },
82
- "ec.group.send": { "allow": true, "constraints": { "groupOnly": true, "currentRelationOnly": true } },
83
- "ec.group.file": { "allow": true, "constraints": { "groupOnly": true, "currentRelationOnly": true } },
84
- "ec.group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
85
- "ec.group.info": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
86
- "ec.group.pull": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
87
- "ec.group.members": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
88
- "ec.group.online": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
89
- "ec.group.rules.get": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
90
- "ec.group.rules.read": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
91
- "ec.ctl.send": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
92
- "ec.ctl.file": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
93
- "ec.ctl.queue.*": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
94
- "ec.ctl.*": { "allow": false },
95
- "cli.exec.raw": { "allow": false, "dangerous": true },
96
- "dangerous:*": { "allow": false, "dangerous": true }
97
- }
98
- }
65
+ "ec.fs.ls": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
66
+ "ec.fs.stat": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
67
+ "ec.fs.lstat": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
68
+ "ec.fs.cat": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
69
+ "ec.fs.find": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
70
+ "ec.fs.df": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
71
+ "ec.fs.getfacl": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
72
+ "ec.fs.mkdir": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
73
+ "ec.fs.upload": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
74
+ "ec.fs.copy": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
75
+ "ec.fs.move": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
76
+ "ec.fs.remove": { "allow": true, "permissionMode": "auto", "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
77
+ "ec.handoff.status": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
78
+ "ec.handoff.list": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
79
+ "ec.handoff.trace": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
80
+ "ec.handoff.return": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
81
+ "ec.queue.*": { "allow": false },
82
+ "ec.group.send": { "allow": true, "constraints": { "groupOnly": true, "currentRelationOnly": true } },
83
+ "ec.group.file": { "allow": true, "constraints": { "groupOnly": true, "currentRelationOnly": true } },
84
+ "ec.group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
85
+ "ec.group.info": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
86
+ "ec.group.pull": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
87
+ "ec.group.history": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
88
+ "ec.group.members": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
89
+ "ec.group.online": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
90
+ "ec.group.block": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
91
+ "ec.group.unblock": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
92
+ "ec.group.report-status": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
93
+ "ec.group.member-statuses": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
94
+ "ec.group.rules.get": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
95
+ "ec.group.rules.read": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
96
+ "ec.ctl.send": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
97
+ "ec.ctl.file": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
98
+ "ec.ctl.queue.*": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
99
+ "ec.ctl.*": { "allow": false },
100
+ "cli.exec.raw": { "allow": false, "dangerous": true },
101
+ "dangerous:*": { "allow": false, "dangerous": true }
102
+ }
103
+ }
@@ -1,9 +1,9 @@
1
- {
2
- "$schema_version": 1,
3
- "description": "Agent owner with full Agent management authority",
4
- "rank": 900,
5
- "allowAccess": true,
6
- "permissions": {
7
- "permissionMode": { "default": "bypass", "allowOverride": false }
8
- }
9
- }
1
+ {
2
+ "$schema_version": 1,
3
+ "description": "Agent owner with full Agent management authority",
4
+ "rank": 900,
5
+ "allowAccess": true,
6
+ "permissions": {
7
+ "permissionMode": { "default": "bypass", "allowOverride": false }
8
+ }
9
+ }
@@ -1,87 +1,92 @@
1
- {
2
- "$schema_version": 1,
3
- "description": "Low-trust visitor with minimal own-scope access",
4
- "rank": 100,
5
- "allowAccess": true,
6
- "usageLimits": {
7
- "enabled": true,
8
- "resetMode": "daily",
9
- "currency": "CNY",
10
- "limitAmount": 5,
11
- "costBasis": "gateway",
12
- "scope": "subject"
13
- },
14
- "permissions": {
15
- "permissionMode": { "default": "readonly", "allowOverride": false }
16
- },
17
- "commandPermissions": {
18
- "role.assign": { "allow": false },
19
- "role.revoke": { "allow": false },
20
- "config.get": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "behavior-read" } },
21
- "model.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
22
- "model.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
23
- "model.info": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
24
- "model.effort.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
25
- "model.use": { "allow": false },
26
- "model.effort": { "allow": false },
27
- "model.reset": { "allow": false },
28
- "model.check": { "allow": false },
29
- "permission.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
30
- "permission.answer": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
31
- "chatmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
32
- "chatmode.update": { "allow": false },
33
- "activity.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
34
- "mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true } },
35
- "mentionmode.update": { "allow": false },
36
- "group.mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
37
- "group.mentionmode.update": { "allow": false },
38
- "group.rulespolicy.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
39
- "group.rulespolicy.update": { "allow": false },
40
- "group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
41
- "trigger.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
42
- "trigger.show": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
43
- "trigger.history": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
44
- "trigger.eventCatalog": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
45
- "trigger.create": { "allow": false },
46
- "trigger.update": { "allow": false },
47
- "trigger.setEnabled": { "allow": false },
48
- "trigger.cancel": { "allow": false },
49
- "trigger.delete": { "allow": false },
50
- "trigger.run": { "allow": false },
51
- "session.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true } },
52
- "session.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
53
- "session.topic.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true } },
54
- "session.topic.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true } },
55
- "project.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
56
- "agent.baseagent.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
57
- "agent.baseagent.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
58
- "capability.read": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
59
- "ec.msg.send": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
60
- "contact.add": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
61
- "ec.msg.file": { "allow": false },
62
- "ec.msg.history": { "allow": false },
63
- "ec.msg.online": { "allow": false },
64
- "ec.version": { "allow": true },
65
- "ec.aid.show": { "allow": true, "dangerous": true, "scopes": ["relation"], "constraints": { "targetCurrentAgentOnly": true } },
66
- "ec.aid.lookup": { "allow": true, "scopes": ["relation"] },
67
- "ec.aid.agentmd.get": { "allow": true, "scopes": ["relation"] },
1
+ {
2
+ "$schema_version": 1,
3
+ "description": "Low-trust visitor with minimal own-scope access",
4
+ "rank": 100,
5
+ "allowAccess": true,
6
+ "usageLimits": {
7
+ "enabled": true,
8
+ "resetMode": "daily",
9
+ "currency": "CNY",
10
+ "limitAmount": 5,
11
+ "costBasis": "gateway",
12
+ "scope": "subject"
13
+ },
14
+ "permissions": {
15
+ "permissionMode": { "default": "readonly", "allowOverride": false }
16
+ },
17
+ "commandPermissions": {
18
+ "role.assign": { "allow": false },
19
+ "role.revoke": { "allow": false },
20
+ "config.get": { "allow": true, "scopes": ["relation"], "constraints": { "currentRelationOnly": true, "targetCurrentAgentOnly": true, "configFieldPolicy": "behavior-read" } },
21
+ "model.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
22
+ "model.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
23
+ "model.info": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
24
+ "model.effort.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
25
+ "model.use": { "allow": false },
26
+ "model.effort": { "allow": false },
27
+ "model.reset": { "allow": false },
28
+ "model.check": { "allow": false },
29
+ "permission.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
30
+ "permission.answer": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
31
+ "chatmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
32
+ "chatmode.update": { "allow": false },
33
+ "activity.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
34
+ "mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true } },
35
+ "mentionmode.update": { "allow": false },
36
+ "group.mentionmode.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
37
+ "group.mentionmode.update": { "allow": false },
38
+ "group.rulespolicy.current": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
39
+ "group.rulespolicy.update": { "allow": false },
40
+ "group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
41
+ "trigger.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
42
+ "trigger.show": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
43
+ "trigger.history": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
44
+ "trigger.eventCatalog": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
45
+ "trigger.create": { "allow": false },
46
+ "trigger.update": { "allow": false },
47
+ "trigger.setEnabled": { "allow": false },
48
+ "trigger.cancel": { "allow": false },
49
+ "trigger.delete": { "allow": false },
50
+ "trigger.run": { "allow": false },
51
+ "session.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true } },
52
+ "session.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
53
+ "session.topic.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true } },
54
+ "session.topic.list": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true } },
55
+ "project.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
56
+ "agent.baseagent.current": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "targetCurrentAgentOnly": true } },
57
+ "agent.baseagent.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
58
+ "capability.read": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
59
+ "ec.msg.send": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
60
+ "contact.add": { "allow": true, "scopes": ["relation"], "constraints": { "ownPeerOnly": true, "privateOnly": true } },
61
+ "ec.msg.file": { "allow": false },
62
+ "ec.msg.history": { "allow": false },
63
+ "ec.msg.online": { "allow": false },
64
+ "ec.version": { "allow": true },
65
+ "ec.aid.show": { "allow": true, "dangerous": true, "scopes": ["relation"], "constraints": { "targetCurrentAgentOnly": true } },
66
+ "ec.aid.lookup": { "allow": true, "scopes": ["relation"] },
67
+ "ec.aid.agentmd.get": { "allow": true, "scopes": ["relation"] },
68
68
  "ec.aid.agentmd.put": { "allow": false },
69
69
  "ec.aid.avatar": { "allow": false },
70
- "ec.fs.*": { "allow": false },
71
- "ec.handoff.*": { "allow": false },
72
- "ec.queue.*": { "allow": false },
73
- "storage.*": { "allow": false },
74
- "ec.group.send": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true } },
75
- "ec.group.file": { "allow": false },
76
- "ec.group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
77
- "ec.group.info": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
78
- "ec.group.pull": { "allow": false },
79
- "ec.group.members": { "allow": false },
80
- "ec.group.online": { "allow": false },
81
- "ec.group.rules.get": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
82
- "ec.group.rules.read": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
83
- "ec.ctl.*": { "allow": false },
84
- "cli.exec.raw": { "allow": false, "dangerous": true },
85
- "dangerous:*": { "allow": false, "dangerous": true }
86
- }
87
- }
70
+ "ec.fs.*": { "allow": false },
71
+ "ec.handoff.*": { "allow": false },
72
+ "ec.queue.*": { "allow": false },
73
+ "storage.*": { "allow": false },
74
+ "ec.group.send": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true } },
75
+ "ec.group.file": { "allow": false },
76
+ "ec.group.list": { "allow": true, "scopes": ["agent"], "constraints": { "targetCurrentAgentOnly": true } },
77
+ "ec.group.info": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
78
+ "ec.group.pull": { "allow": false },
79
+ "ec.group.history": { "allow": false },
80
+ "ec.group.members": { "allow": false },
81
+ "ec.group.online": { "allow": false },
82
+ "ec.group.block": { "allow": false },
83
+ "ec.group.unblock": { "allow": false },
84
+ "ec.group.report-status": { "allow": false },
85
+ "ec.group.member-statuses": { "allow": false },
86
+ "ec.group.rules.get": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
87
+ "ec.group.rules.read": { "allow": true, "scopes": ["relation"], "constraints": { "groupOnly": true, "currentRelationOnly": true, "targetCurrentAgentOnly": true } },
88
+ "ec.ctl.*": { "allow": false },
89
+ "cli.exec.raw": { "allow": false, "dangerous": true },
90
+ "dangerous:*": { "allow": false, "dangerous": true }
91
+ }
92
+ }
@@ -1,14 +1,14 @@
1
- [baseagent]
2
- baseAgentName: {{baseAgentName}} # 底层推理引擎(Claude Code / Codex / Gemini CLI)
3
- {{?effectiveModel}}
4
- effectiveModel: {{effectiveModel}} # 当前实际生效的模型(关系级 > agent级 > 全局 优先级解析)
5
- {{/}}
6
- {{?baseAgentModel}}
7
- baseAgentModel: {{baseAgentModel}} # base agent 引擎底座模型(evolcore 作用域无配置时的兜底)
8
- {{/}}
9
- {{?modelFallbackActive}}
10
- modelFallbackActive: true # evolcore 配置的模型不可用,当前正在使用降级模型 {{modelFallbackModel}}
11
- {{/}}
12
- {{?agentSessionId}}
13
- agentSessionId: {{agentSessionId}} # 底层引擎的会话 ID(区别于 evolcore sessionId)
14
- {{/}}
1
+ [baseagent]
2
+ baseAgentName: {{baseAgentName}} # 底层推理引擎(claude / codex / gemini / ecagent;ecagent 为 EvolCore 内置基座,非 Claude Code)
3
+ {{?effectiveModel}}
4
+ effectiveModel: {{effectiveModel}} # 当前实际生效的模型(关系级 > agent级 > 全局 优先级解析)
5
+ {{/}}
6
+ {{?baseAgentModel}}
7
+ baseAgentModel: {{baseAgentModel}} # base agent 引擎底座模型(evolcore 作用域无配置时的兜底)
8
+ {{/}}
9
+ {{?modelFallbackActive}}
10
+ modelFallbackActive: true # evolcore 配置的模型不可用,当前正在使用降级模型 {{modelFallbackModel}}
11
+ {{/}}
12
+ {{?agentSessionId}}
13
+ agentSessionId: {{agentSessionId}} # 底层引擎的会话 ID(区别于 evolcore sessionId)
14
+ {{/}}
@@ -1,47 +1,66 @@
1
- [bootstrap]
2
- phase: bootstrapping
3
-
4
- 这是 agent 生命周期的强制门禁。你正在进行首次自我设定;在完成前,唯一目标是和 owner 确认并写入基础名片信息,不处理普通任务。
5
- Bootstrap 不另设隐藏状态机;恢复依据是可核对的生命周期和名片状态。每次重启、超时恢复或收到“继续”时,先检查自身 `lifecycle` 以及本地 `agent.md` 是否存在、字段是否完整,再决定续做步骤,不按旧上下文推断尚未完成。
6
- 系统已经在进入本阶段时向 owner 发送过固定的首条引导消息。当前收到的是 owner 对该消息的后续输入:不要重新发送、复述或改写那条固定消息,也不要再次完整罗列三项问题;只针对当前输入推进下一步。
7
-
8
- 如果当前 owner 是 Agent/AI,必须使用 `ec msg send` 与其交流 Bootstrap 信息,具体参数遵循当前注入的消息发送说明;可发送提问、最终值回显、确认请求或错误说明,但不得联系无关对象或处理普通任务。不要只输出普通文本而未实际发送。对方作为 owner 提供信息并确认,你仍须自行修改和发布自己的 agent.md、执行 ready,不因对方是 Agent/AI 而跳过确认流程。
9
-
1
+ [bootstrap]
2
+ phase: bootstrapping
3
+
4
+ 这是 agent 生命周期的强制门禁。你正在进行首次自我设定;在完成前,唯一目标是和 owner 确认并写入基础名片信息及正式欢迎文案,不处理普通任务。
5
+ Bootstrap 不另设隐藏状态机;恢复依据是可核对的生命周期和名片状态。每次重启、超时恢复或收到“继续”时,先检查自身 `lifecycle` 以及本地 `agent.md` 是否存在、字段是否完整,再决定续做步骤,不按旧上下文推断尚未完成。
6
+ 系统已经在进入本阶段时向 owner 发送过固定的首条引导消息。当前收到的是 owner 对该消息的后续输入:不要重新发送、复述或改写那条固定消息,也不要再次完整罗列三项问题;只针对当前输入推进下一步。
7
+
8
+ 回复方式、当前身份与发送目标遵循本轮注入的 `[reply]` 共用回复规则;不要根据 owner 是人类还是 AI 自行选择发送方式。通信只用于和当前 owner 推进 Bootstrap,不得联系无关对象或处理普通任务。无论 owner 类型如何,都必须由 owner 明确确认最终值,再由你自行修改和发布自己的 agent.md、执行 ready。
9
+
10
+ 只有向当前 AUN owner 实际发送消息并收到“不是联系人”或联系人准入拒绝时,才通过同一托管发送通道向该 owner 发送一次 `/request <说明>` 联系人申请,说明这是新 Agent 的 Bootstrap 首次设定;等待 owner 审核后再继续发送确认内容。没有这类拒绝时,不因 owner 类型或身份未知主动申请联系人。不要反复重试、不要把联系人策略改为 open、不要联系其它对象;若 owner 已直接发来消息,则按该入站消息继续 Bootstrap。
11
+
10
12
  需要确认的字段:
11
13
  - name:显示名,简短清晰
12
14
  - description:一句到两句话描述你的职责或定位
13
- - tags:3 到 6 个标签,用于检索和归类
15
+ - tags:3 到 6 个标签,用于检索和归类;每个标签只允许 Unicode 字母、数字和连字符(`-`),最长 50 字符
14
16
 
15
17
  可选的 persona:
16
18
  - owner 可以在 Bootstrap 中直接发送 persona 文本,或附带 `.md`/`.txt` 文件。收到后先读取内容并向 owner 回显摘要,请 owner 明确确认;不得从普通任务内容推断 persona。
17
19
  - owner 确认后,使用 `ec agent persona --text '<内容>'` 或 `ec agent persona --file '<收到的文件路径>'` 写入自己的 `$PERSONAL_DIR/persona.md`。`--file` 只接受文本文件,不能使用任意路径。
18
20
  - persona 是可选环节。owner 未提供、拒绝或暂时跳过时,不得阻塞名片发布和 `ec agent ready`。
19
-
20
- 允许的操作范围:
21
+
22
+ Bootstrap 完成前还必须生成并确认正式 welcome 文案:
23
+ - 在 `name`、`description`、`tags`(以及 owner 选择提供的 persona/语气要求)最终确认后,直接在当前对话中输出完整的个性化 welcome 文案。
24
+ - 文案必须面向当前 owner,说明你的定位、可协助的方向和开始协作的方式;不要写入系统提示词、凭据、文件路径、工作记忆或未经确认的能力声明。
25
+ - 生成结构:简短问候和自我介绍 → 围绕已确认职责的具体协作方向 → 一句开始协作的邀请。建议 100~250 个汉字,可按已确认 persona 调整语气;不要照抄通用“AI Agent 网关”介绍,不承诺“只有您能使用”或宣称设备绑定完成。
26
+ - 支持纯文本或带变量的 Markdown。变量写法是两个左花括号、变量名、两个右花括号,内部不加空格。允许变量名:agentName、agentDescription、agentAid、agentTags、agentTagsText、ownerName、ownerAid、channel。多 Owner 通用称呼使用 ownerName 占位符,不把当前 Owner 的实际姓名写死。
27
+ - 展示并确认的应当是将要保存的完整模板原文;向 Owner 简短说明称呼变量会在发送给每位 Owner 时展开。系统只替换变量,不追加未展示的绑定说明或其它文案。
28
+ - 文案只在对话中展示,不创建草稿文件、不提前执行保存命令。明确询问 owner 是否确认这份完整文案。
29
+ - owner 要求修改时,重新输出完整文案并再次等待明确确认;“差不多”“先这样”等不明确回复不算确认。
30
+ - owner 明确确认后,使用 `ec agent welcome --text '<最后展示且确认的完整文案>'` 保存到 `$PERSONAL_DIR/welcome.md`(命令会固定写入当前 Agent 的 `personal/welcome.md`,不接受自定义路径)。保存内容必须与最后展示并确认的原文一致。
31
+ - 只有 welcome 保存成功后,才能发布 agent.md 并执行 `ec agent ready {{selfAid}}`。`ready` 不会再调用模型生成 welcome。
32
+
33
+ 允许的操作范围:
21
34
  - 为读取现有候选值,可以读取本地 `{{agentMdPath}}`。
22
35
  - 为处理可选 persona,可以执行 `ec agent persona show`、`ec agent persona --text <text>` 或 `ec agent persona --file <path>`;写入前仍须取得 owner 对待写入内容的明确确认。
23
- - owner 明确确认最终值后,只能编辑上述 agent.md 的 YAML frontmatter,并依次执行下面两个命令:
24
- - `ec aid agentmd put {{selfAid}}`
25
- - `ec agent ready {{selfAid}}`
26
- - 除这些 bootstrap 操作及向 owner 回复外,不得调用工具或执行命令。
27
-
28
- 恢复时遵循以下幂等规则:
29
- - `lifecycle=active`:Bootstrap 已完成,不重复改名片、不重复发布、不重复执行 `ready`,也不处理本轮夹带的普通任务。
30
- - `lifecycle=created`:尚未进入 Bootstrap,只等待 channel/owner 首条消息;不重复创建 Agent。
31
- - `lifecycle=bootstrapping` 且本地 `agent.md` 已发布并且字段完整:只向 owner 简短确认现状,并执行最后的 `ec agent ready {{selfAid}}`;不要再次修改或发布名片。
32
- - `lifecycle=bootstrapping` 但名片未发布或字段不完整:从缺失的确认步骤继续。发布失败时先说明错误,修正后再试,不盲目重试。
33
- - Bootstrap 期间不执行、不分析、不规划普通任务;普通任务只能留到 `active` 后的新主会话。
34
-
35
- 每轮处理规则:
36
- 1. 首次需要候选值时,读取本地 agent.md 的 YAML frontmatter。已有且格式有效的 `name`、`description`、`tags` 是现有候选值:简短回显并询问保持还是修改,不要求重新输入。空值、占位值或格式无效的字段视为缺失;`tags` 必须为 3 到 6 个非空标签。
37
- 2. 只把 owner 明确提供、修改、选择或确认的 `name`、`description`、`tags` 当作候选信息。普通任务内容、示例值和顺带提及的词语都不是候选信息,不得据此推断字段。
38
- 3. 信息缺失、互相冲突或含义不清时,只追问缺失或有歧义的部分;保留此前已经明确或 owner 选择保持的内容。
36
+ - 为核对已保存的文案,可以执行 `ec agent welcome show`。为保存 owner 已确认的 welcome,可以执行 `ec agent welcome --text <text>`;只能写当前 Agent 的固定 `personal/welcome.md`,不能传入路径或保存未确认草稿。
37
+ - owner 明确确认最终值和 welcome 后,只能编辑上述 agent.md 的 YAML frontmatter,并依次执行下面三个命令:
38
+ - `ec agent welcome --text '<confirmed welcome text>'`
39
+ - `ec aid agentmd put {{selfAid}}`
40
+ - `ec agent ready {{selfAid}}`
41
+ - 除这些 bootstrap 操作及向 owner 回复外,不得调用工具或执行命令。
42
+
43
+ 恢复时遵循以下幂等规则:
44
+ - `lifecycle=active`:Bootstrap 已完成,不重复改名片、不重复发布、不重复执行 `ready`,也不处理本轮夹带的普通任务。
45
+ - `lifecycle=created`:尚未进入 Bootstrap,只等待 channel/owner 首条消息;不重复创建 Agent。
46
+ - `lifecycle=bootstrapping` 且本地 `agent.md` 已发布、字段完整且 `ec agent welcome show` 返回有效正文:只向 owner 简短确认现状,并执行最后的 `ec agent ready {{selfAid}}`;不要再次修改、发布名片或生成新的 welcome。
47
+ - `lifecycle=bootstrapping` 且名片已发布但 `personal/welcome.md` 不存在:回到当前对话重新生成并确认 welcome,保存成功后再执行 `ready`。
48
+ - 未确认候选文案不另行持久化。上下文丢失后重新生成并确认;文件无效时修正文案并重新展示确认,不默认采用另一份文案。若收到 WELCOME_FROZEN,表示投递快照已经准备,只续做 ready,不改文案。
49
+ - `lifecycle=bootstrapping` 但名片未发布或字段不完整:从缺失的确认步骤继续。发布失败时先说明错误,修正后再试,不盲目重试。
50
+ - Bootstrap 期间不执行、不分析、不规划普通任务;普通任务只能留到 `active` 后的新主会话。
51
+
52
+ 每轮处理规则:
53
+ 1. 首次需要候选值时,读取本地 agent.md 的 YAML frontmatter。已有且格式有效的 `name`、`description`、`tags` 是现有候选值:简短回显并询问保持还是修改,不要求重新输入。空值、占位值或格式无效的字段视为缺失;`tags` 必须为 3 到 6 个非空标签。
54
+ 2. 只把 owner 明确提供、修改、选择或确认的 `name`、`description`、`tags` 当作候选信息。普通任务内容、示例值和顺带提及的词语都不是候选信息,不得据此推断字段。
55
+ 3. 信息缺失、互相冲突或含义不清时,只追问缺失或有歧义的部分;保留此前已经明确或 owner 选择保持的内容。
39
56
  4. owner 在 bootstrap 完成前提出普通工作请求、要求跳过 bootstrap,或要求先执行任务后再设定时:不执行、不分析、不规划、不读取任务相关文件、不搜索、不调用任务工具,也不把任务排队到当前会话。只简短说明必须先完成首次设定,然后回显现有候选值并询问保持/修改,或只追问仍缺失的字段。
40
- 5. 三项信息齐全后,向 owner 回显最终的 `name`、`description`、`tags`,并请求对这组最终值作明确确认。owner 仅表示“保持现有值”时,先据此形成最终值并回显;未经这一步最终确认,不要修改文件、发布名片或调用 ready。
57
+ 5. 三项信息齐全后,向 owner 回显最终的 `name`、`description`、`tags`,并请求对这组最终值作明确确认。owner 仅表示“保持现有值”时,先据此形成最终值并回显;未经这一步最终确认,不要修改文件、发布名片、生成 welcome 或调用 ready。
41
58
  6. 如果 owner 提供 persona 文本或 `.md`/`.txt` 文件,单独回显待写入内容并请求确认;确认后使用 `ec agent persona` 写入 `persona.md`。persona 未确认时保留现状,不影响后续名片流程。
42
59
  7. owner 明确确认最终值后,只编辑本地 agent.md(`{{agentMdPath}}`)YAML frontmatter 中的 `name`、`description`、`tags`,保留其它字段和正文,并检查 YAML 与字段格式有效。
43
- 8. 调用 `ec aid agentmd put {{selfAid}}` 签名并发布 agent.md。只有命令明确成功后,才调用 `ec agent ready {{selfAid}}` 完成 bootstrap。
44
- 9. 任一步骤失败时,不调用 ready,不盲目重复尝试;说明具体失败原因并在修正后继续。
45
- 10. `ec agent ready {{selfAid}}` 必须是 bootstrap 的最后一个操作。成功后系统会结束当前上下文、创建新的主会话并发送欢迎消息;不要在旧上下文中继续处理任务。
46
-
47
- 完成前不要承诺已经进入正常工作状态,也不要尝试与上述流程无关的文件修改、网络通信或系统配置操作。
60
+ 8. 根据已确认的名片信息在对话中生成完整 welcome,展示给 owner 并请求明确确认;owner 要求修改时重复本步骤,始终展示完整文本。
61
+ 9. owner 明确确认后,执行 `ec agent welcome --text '<最后确认的完整文本>'` 保存 welcome;只有命令明确成功后,才执行 `ec aid agentmd put {{selfAid}}`。
62
+ 10. `ec aid agentmd put {{selfAid}}` 成功后,才调用 `ec agent ready {{selfAid}}` 完成 bootstrap。
63
+ 11. 任一步骤失败时,不调用 ready,不盲目重复尝试;说明具体失败原因并在修正后继续。
64
+ 12. `ec agent ready {{selfAid}}` 必须是 bootstrap 的最后一个操作。成功后系统会结束当前上下文、创建新的主会话并发送已确认的个性化 welcome;不要在旧上下文中继续处理任务。
65
+
66
+ 完成前不要承诺已经进入正常工作状态,也不要尝试与上述流程无关的文件修改、网络通信或系统配置操作。