@agentunion/kite 1.4.0 → 1.6.0

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 (718) hide show
  1. package/.claude/skills/kite/checklists/feature-checklist.md +496 -0
  2. package/.claude/skills/kite/references/event-patterns.md +180 -0
  3. package/.claude/skills/kite/references/health-check.md +202 -0
  4. package/.claude/skills/kite/references/http-service.md +199 -0
  5. package/.claude/skills/kite/references/module-md-spec.md +172 -0
  6. package/.claude/skills/kite/references/multi-connection.md +147 -0
  7. package/.claude/skills/kite/references/rpc-patterns.md +199 -0
  8. package/.claude/skills/kite/references/shutdown-sequence.md +146 -0
  9. package/.claude/skills/kite/references/stdin-protocol.md +147 -0
  10. package/.claude/skills/kite/references/test-center-integration.md +178 -0
  11. package/.claude/skills/kite/references/ws-lifecycle.md +301 -0
  12. package/.claude/skills/kite/skill.md +272 -0
  13. package/.claude/skills/kite/templates/go/README.md +20 -0
  14. package/.claude/skills/kite/templates/node/entry.js +134 -0
  15. package/.claude/skills/kite/templates/node/module.md +16 -0
  16. package/.claude/skills/kite/templates/node/server.js +351 -0
  17. package/.claude/skills/kite/templates/node/server_http.js +90 -0
  18. package/.claude/skills/kite/templates/python/entry.py +425 -0
  19. package/.claude/skills/kite/templates/python/module.md +26 -0
  20. package/.claude/skills/kite/templates/python/server.py +447 -0
  21. package/.claude/skills/kite/templates/python/server_http.py +433 -0
  22. package/CHANGELOG.md +102 -0
  23. package/cli.js +78 -5
  24. package/core/dependency_checker.py +250 -0
  25. package/core/env_checker.py +586 -0
  26. package/dependencies_lock.json +128 -0
  27. package/docs/05-/347/237/255/344/277/241/350/256/244/350/257/201/344/270/216/347/224/250/346/210/267/344/277/241/346/201/257/346/216/245/345/217/243/346/226/207/346/241/243.md +507 -0
  28. package/docs/ACP/345/215/217/350/256/256/345/205/274/345/256/271/346/226/271/346/241/210.md +138 -0
  29. package/docs/CI/344/270/216AI/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/346/226/271/346/241/210.md +75 -0
  30. package/docs/CLI/345/274/200/345/217/221/350/256/241/345/210/222.md +595 -0
  31. package/docs/ClaudeCode/350/277/234/347/250/213/345/215/217/344/275/234/347/263/273/347/273/237-/346/212/200/346/234/257/350/257/204/344/274/260.md +535 -0
  32. package/docs/ClaudeCode/350/277/234/347/250/213/345/215/217/344/275/234/347/263/273/347/273/237/350/256/276/350/256/241.md +631 -0
  33. package/docs/Evol-App/344/275/277/347/224/250KernelClient/346/224/271/351/200/240/345/256/214/346/210/220.md +342 -0
  34. package/docs/Evol/346/216/247/345/210/266/345/217/260/346/217/222/344/273/266/345/214/226/346/236/266/346/236/204/346/246/202/350/246/201.md +604 -0
  35. package/docs/Evol/346/216/247/345/210/266/345/217/260/346/217/222/344/273/266/345/214/226/346/236/266/346/236/204/350/256/276/350/256/241.md +1708 -0
  36. package/docs/Evol/346/250/241/345/235/227/350/256/276/350/256/241/346/226/271/346/241/210.md +1154 -0
  37. package/docs/Evol/351/241/265/351/235/242/346/217/222/344/273/266/345/214/226-Evol/346/250/241/345/235/227/345/256/236/346/226/275/346/214/207/345/215/227.md +403 -0
  38. package/docs/Evol/351/241/265/351/235/242/346/217/222/344/273/266/345/214/226-/345/244/226/351/203/250/346/250/241/345/235/227/346/216/245/345/205/245/346/214/207/345/215/227.md +468 -0
  39. package/docs/HTTP-RPC/350/277/201/347/247/273/345/210/260WebSocket/350/256/241/345/210/222.md +318 -0
  40. package/docs/INDEX.md +388 -0
  41. package/docs/KITE_DOCS_GUIDE.md +33 -0
  42. package/docs/Kernel-Client-Kite-Token/346/224/257/346/214/201/345/256/236/346/226/275/345/256/214/346/210/220.md +330 -0
  43. package/docs/Kernel/344/270/273/345/212/250Ping/346/234/272/345/210/266-/346/255/243/347/241/256/345/256/236/347/216/260.md +235 -0
  44. package/docs/Kernel/344/270/273/345/212/250Ping/346/234/272/345/210/266/345/256/236/346/226/275/346/200/273/347/273/223.md +204 -0
  45. package/docs/Kite/345/256/211/350/243/205/351/227/256/351/242/230/350/247/243/345/206/263/346/226/271/346/241/210.md +362 -0
  46. package/docs/Kite/346/216/247/345/210/266/345/217/260/346/217/222/344/273/266/345/214/226/346/236/266/346/236/204/350/256/276/350/256/241-/347/273/210/346/236/201/347/233/256/346/240/207.md +721 -0
  47. package/docs/Kite/346/216/247/345/210/266/345/217/260/347/273/237/344/270/200WebSocket/346/224/271/351/200/240/346/226/271/346/241/210.md +821 -0
  48. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/01-/346/241/206/346/236/266/345/256/232/344/275/215.md +12 -0
  49. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/02-/346/240/270/345/277/203/346/246/202/345/277/265.md +341 -0
  50. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/03-/347/263/273/347/273/237/346/236/266/346/236/204.md +257 -0
  51. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/04-/346/250/241/345/235/227/350/247/204/350/214/203.md +263 -0
  52. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/05-/346/240/270/345/277/203/346/265/201/347/250/213-/346/226/260/347/211/210.md +267 -0
  53. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/05-/346/240/270/345/277/203/346/265/201/347/250/213.md +149 -0
  54. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/06-/347/233/256/345/275/225/347/273/223/346/236/204.md +231 -0
  55. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/07-/346/225/260/346/215/256/346/250/241/345/236/213.md +68 -0
  56. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/08-/346/211/251/345/261/225/346/200/247.md +34 -0
  57. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/09-/344/270/216/345/205/267/344/275/223/345/272/224/347/224/250/347/232/204/345/205/263/347/263/273.md +22 -0
  58. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/README.md +46 -0
  59. package/docs/Kite/347/263/273/347/273/237/345/220/257/345/212/250/346/265/201/347/250/213.md +567 -0
  60. package/docs/Launcher/345/220/257/345/212/250/345/231/250/346/226/207/346/241/243.md +745 -0
  61. package/docs/Polyglot/350/277/220/350/241/214/346/227/266/344/270/216Clawdbot/345/205/274/345/256/271/346/200/247/350/256/276/350/256/241.md +321 -0
  62. package/docs/Redis/344/270/216/346/250/241/345/235/227/345/244/232/345/256/236/344/276/213/346/226/271/346/241/210.md +438 -0
  63. package/docs/Relay-Kite-Token/350/256/244/350/257/201/345/256/236/346/226/275/345/256/214/346/210/220.md +178 -0
  64. package/docs/Relay-Token/346/235/203/351/231/220/351/205/215/347/275/256/351/252/214/350/257/201.md +113 -0
  65. package/docs/Watchdog/345/201/245/345/272/267/346/243/200/346/237/245/344/270/216WebSocket-Ping/346/234/272/345/210/266/345/210/206/346/236/220.md +367 -0
  66. package/docs/Watchdog/350/265/204/346/272/220/347/233/221/346/216/247/347/255/226/347/225/245.md +92 -0
  67. package/docs/WebSocket/346/216/245/346/224/266/345/276/252/347/216/257/346/255/273/351/224/201/351/230/262/350/214/203/350/247/204/350/214/203.md +357 -0
  68. package/docs/WebSocket/350/277/236/346/216/245/351/237/247/346/200/247/344/270/216/351/207/215/350/277/236/346/234/272/345/210/266/345/256/214/346/225/264/346/226/271/346/241/210.md +531 -0
  69. package/docs/WebSocket/350/277/236/346/216/245/351/237/247/346/200/247/346/226/271/346/241/210.md +169 -0
  70. package/docs/WebSocket/351/207/215/350/277/236/346/234/272/345/210/266/346/265/213/350/257/225/346/212/245/345/221/212.md +169 -0
  71. package/docs/WebSocket/351/207/215/350/277/236/351/200/200/351/201/277/346/234/272/345/210/266/346/226/271/346/241/210.md +394 -0
  72. package/docs/Web/346/250/241/345/235/227/344/270/216Evol/346/250/241/345/235/227/351/207/215/346/236/204/345/210/206/346/236/220.md +521 -0
  73. package/docs/audit-api-guide.md +68 -0
  74. package/docs/audit-module-design.md +315 -0
  75. package/docs/audit-module-implementation-summary.md +149 -0
  76. package/docs/llm-context-design.md +52 -0
  77. package/docs/llm-test-enhancement-plan.md +970 -0
  78. package/docs/logs-api-guide.md +42 -0
  79. package/docs/npm/345/214/205Python/347/216/257/345/242/203/347/256/241/347/220/206/346/226/271/346/241/210.md +302 -0
  80. package/docs/npm/345/217/221/345/270/203/344/270/216CLI/344/275/277/347/224/250/346/214/207/345/215/227.md +245 -0
  81. package/docs/stdio/344/270/216/347/253/257/345/217/243/345/217/221/347/216/260/351/207/215/346/236/204.md +480 -0
  82. package/docs/web/346/250/241/345/235/227/344/270/255/350/275/254/346/234/215/345/212/241/350/256/276/350/256/241/346/226/271/346/241/210.md +449 -0
  83. package/docs//344/272/213/344/273/266/345/244/204/347/220/206/346/234/272/345/210/266.md +388 -0
  84. package/docs//344/272/213/344/273/266/345/244/204/347/220/206/350/247/204/350/214/203.md +113 -0
  85. package/docs//344/272/213/344/273/266/350/256/242/351/230/205/351/200/232/351/205/215/347/254/246/350/247/204/350/214/203.md +256 -0
  86. package/docs//344/272/213/344/273/266/351/230/237/345/210/227/345/274/271/346/200/247/347/256/241/347/220/206.md +449 -0
  87. package/docs//344/272/244/344/272/222/345/274/217/347/273/210/347/253/257/346/216/247/345/210/266/346/226/271/346/241/210.md +301 -0
  88. package/docs//344/273/243/347/220/206/345/220/257/345/212/250/345/231/250/344/270/216/345/256/271/345/231/250/345/214/226.md +140 -0
  89. package/docs//344/273/243/347/240/201/347/273/237/350/256/241/345/267/245/345/205/267/344/275/277/347/224/250/350/257/264/346/230/216.md +217 -0
  90. package/docs//344/274/230/351/233/205/351/200/200/345/207/272/350/247/204/350/214/203.md +362 -0
  91. package/docs//344/276/235/350/265/226/347/256/241/347/220/206/350/257/264/346/230/216.md +141 -0
  92. package/docs//344/277/256/345/244/215/346/235/203/351/231/220/351/227/256/351/242/230-evol-RPC/346/235/203/351/231/220.md +268 -0
  93. package/docs//345/210/240/351/231/244kernel-client-example/345/256/214/346/210/220.md +309 -0
  94. package/docs//345/210/240/351/231/244ws-management/345/256/214/346/210/220.md +418 -0
  95. package/docs//345/220/257/345/212/250/344/274/230/345/214/226/346/226/271/346/241/210.md +522 -0
  96. package/docs//345/220/257/345/212/250/344/276/235/350/265/226/344/270/216/346/216/222/345/272/217.md +105 -0
  97. package/docs//345/256/211/350/243/205/350/204/232/346/234/254/345/274/200/345/217/221/346/226/207/346/241/243.md +643 -0
  98. package/docs//345/256/214/346/225/264/345/220/257/345/212/250/346/265/201/347/250/213/350/256/276/350/256/241.md +452 -0
  99. package/docs//345/256/236/347/216/260/350/247/204/345/210/222.md +195 -0
  100. package/docs//345/277/203/350/267/263/346/234/272/345/210/266/351/207/215/346/236/204/346/200/273/347/273/223.md +166 -0
  101. package/docs//346/217/241/346/211/213/350/256/244/350/257/201/346/226/271/346/241/210-/345/256/211/345/205/250/345/256/241/346/237/245.md +176 -0
  102. package/docs//346/217/241/346/211/213/350/256/244/350/257/201/346/226/271/346/241/210.md +908 -0
  103. package/docs//346/226/207/346/241/243/346/233/264/346/226/260/346/270/205/345/215/225.md +83 -0
  104. package/docs//346/227/245/345/277/227/344/270/216/345/274/202/345/270/270/345/244/204/347/220/206/350/247/204/350/214/203.md +829 -0
  105. package/docs//346/227/245/345/277/227/350/260/203/350/257/225/345/256/236/346/210/230/346/214/207/345/215/227.md +25 -0
  106. package/docs//346/236/266/346/236/204/345/200/237/351/211/264/346/214/207/345/215/227.md +977 -0
  107. package/docs//346/236/266/346/236/204/346/224/271/351/200/240-/345/256/214/346/210/220/346/200/273/347/273/223.md +440 -0
  108. package/docs//346/236/266/346/236/204/347/216/260/347/212/266/344/270/216/347/273/210/346/236/201/347/233/256/346/240/207/345/257/271/346/257/224/345/210/206/346/236/220.md +508 -0
  109. package/docs//346/250/241/345/235/227/345/244/232/350/277/236/346/216/245/346/216/247/345/210/266/347/255/226/347/225/245.md +220 -0
  110. package/docs//346/250/241/345/235/227/345/256/211/350/243/205/346/234/272/345/210/266/350/256/276/350/256/241.md +500 -0
  111. package/docs//346/250/241/345/235/227/345/274/200/345/217/221/346/214/207/345/215/227.md +1824 -0
  112. package/docs//346/250/241/345/235/227/347/203/255/346/233/264/346/226/260.md +89 -0
  113. package/docs//346/250/241/345/235/227/350/277/234/347/250/213/351/203/250/347/275/262/345/274/200/345/217/221/350/247/204/350/214/203.md +460 -0
  114. package/docs//346/250/241/345/235/227/351/200/200/345/207/272/346/234/272/345/210/266/345/256/214/346/225/264/346/226/271/346/241/210.md +303 -0
  115. package/docs//346/250/241/345/235/227/351/205/215/347/275/256/345/212/240/350/275/275/344/270/216/347/203/255/351/207/215/350/275/275/350/247/204/350/214/203.md +369 -0
  116. package/docs//346/265/213/350/257/225/344/270/255/345/277/203/346/267/273/345/212/240/346/250/241/345/235/227/346/265/213/350/257/225/346/214/207/345/215/227.md +147 -0
  117. package/docs//347/211/210/346/234/254/351/224/201/345/256/232/347/216/257/345/242/203/347/256/241/347/220/206/346/226/271/346/241/210.md +331 -0
  118. package/docs//347/216/257/345/242/203/345/217/230/351/207/217/344/270/216/350/277/220/350/241/214/346/227/266/347/233/256/345/275/225/350/256/276/350/256/241.md +499 -0
  119. package/docs//347/216/257/345/242/203/347/256/241/347/220/206/345/256/214/346/225/264/346/226/271/346/241/210.md +334 -0
  120. package/docs//350/231/232/346/213/237/346/250/241/345/235/227/344/270/255/350/275/254/346/234/215/345/212/241/345/256/214/346/225/264/350/256/276/350/256/241.md +1496 -0
  121. package/docs//350/231/232/346/213/237/347/216/257/345/242/203/345/267/245/344/275/234/345/216/237/347/220/206.md +163 -0
  122. package/docs//350/256/241/345/210/222/347/256/241/347/220/206/345/231/250/344/275/277/347/224/250/346/214/207/345/215/227.md +196 -0
  123. package/docs//350/256/244/350/257/201/346/250/241/345/235/227/344/270/216Gateway/350/256/276/350/256/241/346/226/271/346/241/210.md +765 -0
  124. package/docs//350/277/234/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241-/346/227/247/347/211/210.md +1117 -0
  125. package/docs//350/277/234/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241.md +451 -0
  126. package/docs//351/207/215/346/236/204/346/234/272/345/210/266/346/270/205/345/215/225.md +192 -0
  127. package/docs//351/223/276/350/267/257/350/277/275/350/270/252/346/226/271/346/241/210.md +242 -0
  128. package/docs//351/231/215/347/272/247/347/255/226/347/225/245/350/256/276/350/256/241/346/226/271/346/241/210.md +618 -0
  129. package/extensions/agents/assistant/entry.py +113 -14
  130. package/extensions/agents/assistant/module.md +27 -22
  131. package/extensions/agents/assistant/server.py +308 -106
  132. package/extensions/channels/acp_channel/entry.py +114 -16
  133. package/extensions/channels/acp_channel/module.md +4 -0
  134. package/extensions/channels/acp_channel/server.py +412 -105
  135. package/extensions/channels/phone_channel/__init__.py +1 -0
  136. package/extensions/channels/phone_channel/entry.py +503 -0
  137. package/extensions/channels/phone_channel/module.md +31 -0
  138. package/extensions/channels/phone_channel/server.py +686 -0
  139. package/extensions/event_hub_bench/entry.py +55 -12
  140. package/extensions/event_hub_bench/module.md +27 -27
  141. package/extensions/services/audit/README.md +134 -0
  142. package/extensions/services/audit/collector.py +73 -0
  143. package/extensions/services/audit/entry.py +444 -0
  144. package/extensions/services/audit/module.md +66 -0
  145. package/extensions/services/audit/query_audit.py +111 -0
  146. package/extensions/services/audit/routes/__init__.py +1 -0
  147. package/extensions/services/audit/routes/routes_audit.py +113 -0
  148. package/extensions/services/audit/schemas/__init__.py +5 -0
  149. package/extensions/services/audit/schemas/audit_event.py +92 -0
  150. package/extensions/services/audit/server.py +542 -0
  151. package/extensions/services/audit/storage.py +95 -0
  152. package/extensions/services/auth/entry.py +1054 -0
  153. package/extensions/services/auth/module.md +31 -0
  154. package/extensions/services/auth/token_store.py +185 -0
  155. package/extensions/services/auth/verifiers/evol_account.py +101 -0
  156. package/extensions/services/auth/verifiers/kite_token.py +38 -0
  157. package/extensions/services/auth/verifiers/pairing_code.py +71 -0
  158. package/extensions/services/backup/entry.py +505 -201
  159. package/extensions/services/backup/module.md +4 -2
  160. package/extensions/services/dataclaw/api/__init__.py +0 -0
  161. package/extensions/services/dataclaw/api/admin.py +367 -0
  162. package/extensions/services/dataclaw/api/copyright.py +175 -0
  163. package/extensions/services/dataclaw/api/credits.py +177 -0
  164. package/extensions/services/dataclaw/api/data.py +179 -0
  165. package/extensions/services/dataclaw/api/demands.py +269 -0
  166. package/extensions/services/dataclaw/api/feeds.py +262 -0
  167. package/extensions/services/dataclaw/api/identity.py +505 -0
  168. package/extensions/services/dataclaw/api/notifications.py +104 -0
  169. package/extensions/services/dataclaw/api/reviews.py +138 -0
  170. package/extensions/services/dataclaw/api/search.py +153 -0
  171. package/extensions/services/dataclaw/api/subscriptions.py +157 -0
  172. package/extensions/services/dataclaw/config.json5 +96 -0
  173. package/extensions/services/dataclaw/core/__init__.py +0 -0
  174. package/extensions/services/dataclaw/core/auth.py +95 -0
  175. package/extensions/services/dataclaw/core/config.py +50 -0
  176. package/extensions/services/dataclaw/core/database.py +70 -0
  177. package/extensions/services/dataclaw/entry.py +416 -0
  178. package/extensions/services/dataclaw/gofeed/351/241/271/347/233/256/346/211/200/346/234/211/346/235/203/350/275/254/347/247/273/346/265/201/347/250/213/350/257/264/346/230/216.md +309 -0
  179. package/extensions/services/dataclaw/migrate.py +283 -0
  180. package/extensions/services/dataclaw/models/__init__.py +0 -0
  181. package/extensions/services/dataclaw/module.md +49 -0
  182. package/extensions/services/dataclaw/requirements.txt +18 -0
  183. package/extensions/services/dataclaw/server.py +759 -0
  184. package/extensions/services/dataclaw/services/__init__.py +0 -0
  185. package/extensions/services/dataclaw/services/agent_service.py +132 -0
  186. package/extensions/services/dataclaw/services/credit_service.py +235 -0
  187. package/extensions/services/dataclaw/services/email_service.py +140 -0
  188. package/extensions/services/dataclaw/services/feed_service.py +259 -0
  189. package/extensions/services/dataclaw/services/notification_service.py +209 -0
  190. package/extensions/services/dataclaw/services/oauth_service.py +275 -0
  191. package/extensions/services/dataclaw/services/pricing.py +102 -0
  192. package/extensions/services/dataclaw/services/quality.py +79 -0
  193. package/extensions/services/dataclaw/services/reputation.py +142 -0
  194. package/extensions/services/dataclaw/services/sms_service.py +174 -0
  195. package/extensions/services/dataclaw/static/css/common.css +853 -0
  196. package/extensions/services/dataclaw/static/css/themes/blue.css +42 -0
  197. package/extensions/services/dataclaw/static/css/themes/dark.css +42 -0
  198. package/extensions/services/dataclaw/static/css/themes/light.css +35 -0
  199. package/extensions/services/dataclaw/static/js/api.js +103 -0
  200. package/extensions/services/dataclaw/static/js/common.js +321 -0
  201. package/extensions/services/dataclaw/static/js/i18n.js +95 -0
  202. package/extensions/services/dataclaw/static/js/pages/admin.js +152 -0
  203. package/extensions/services/dataclaw/static/js/pages/dashboard.js +82 -0
  204. package/extensions/services/dataclaw/static/js/pages/feed-detail.js +180 -0
  205. package/extensions/services/dataclaw/static/js/pages/feed-manage.js +158 -0
  206. package/extensions/services/dataclaw/static/js/theme.js +46 -0
  207. package/extensions/services/dataclaw/static/locales/en-US.json +464 -0
  208. package/extensions/services/dataclaw/static/locales/ja-JP.json +464 -0
  209. package/extensions/services/dataclaw/static/locales/zh-CN.json +464 -0
  210. package/extensions/services/dataclaw/templates/admin/index.html +90 -0
  211. package/extensions/services/dataclaw/templates/base.html +136 -0
  212. package/extensions/services/dataclaw/templates/credits/balance.html +106 -0
  213. package/extensions/services/dataclaw/templates/credits/deposit.html +164 -0
  214. package/extensions/services/dataclaw/templates/credits/history.html +90 -0
  215. package/extensions/services/dataclaw/templates/dashboard.html +52 -0
  216. package/extensions/services/dataclaw/templates/demands/create.html +78 -0
  217. package/extensions/services/dataclaw/templates/demands/detail.html +136 -0
  218. package/extensions/services/dataclaw/templates/demands/list.html +94 -0
  219. package/extensions/services/dataclaw/templates/feeds/create.html +95 -0
  220. package/extensions/services/dataclaw/templates/feeds/detail.html +110 -0
  221. package/extensions/services/dataclaw/templates/feeds/list.html +110 -0
  222. package/extensions/services/dataclaw/templates/feeds/manage.html +88 -0
  223. package/extensions/services/dataclaw/templates/index.html +185 -0
  224. package/extensions/services/dataclaw/templates/login.html +246 -0
  225. package/extensions/services/dataclaw/templates/register.html +164 -0
  226. package/extensions/services/dataclaw/templates/settings/notifications.html +96 -0
  227. package/extensions/services/dataclaw/templates/settings/profile.html +167 -0
  228. package/extensions/services/dataclaw/templates/subscriptions/list.html +64 -0
  229. package/extensions/services/dataclaw/tests/__init__.py +0 -0
  230. package/extensions/services/dataclaw/tests/conftest.py +68 -0
  231. package/extensions/services/dataclaw/tests/integration/__init__.py +0 -0
  232. package/extensions/services/dataclaw/tests/integration/test_workflows.py +239 -0
  233. package/extensions/services/dataclaw/tests/unit/__init__.py +0 -0
  234. package/extensions/services/dataclaw/tests/unit/test_admin.py +70 -0
  235. package/extensions/services/dataclaw/tests/unit/test_copyright.py +63 -0
  236. package/extensions/services/dataclaw/tests/unit/test_credits.py +80 -0
  237. package/extensions/services/dataclaw/tests/unit/test_data.py +98 -0
  238. package/extensions/services/dataclaw/tests/unit/test_demands.py +106 -0
  239. package/extensions/services/dataclaw/tests/unit/test_feeds.py +98 -0
  240. package/extensions/services/dataclaw/tests/unit/test_identity.py +88 -0
  241. package/extensions/services/dataclaw/tests/unit/test_notifications.py +36 -0
  242. package/extensions/services/dataclaw/tests/unit/test_reviews.py +68 -0
  243. package/extensions/services/dataclaw/tests/unit/test_search.py +64 -0
  244. package/extensions/services/dataclaw/tests/unit/test_subscriptions.py +65 -0
  245. package/extensions/services/dataclaw/tests/unit/test_system.py +106 -0
  246. package/extensions/services/dataclaw/utils/__init__.py +0 -0
  247. package/extensions/services/dataclaw/utils/crypto.py +38 -0
  248. package/extensions/services/dataclaw/utils/id_generator.py +52 -0
  249. package/extensions/services/dataclaw/ws/__init__.py +0 -0
  250. package/extensions/services/dataclaw/ws/handler.py +163 -0
  251. package/extensions/services/dataclaw//345/215/217/350/256/2561-/351/241/271/347/233/256/346/235/241/344/273/266/346/216/210/346/235/203/344/270/216/350/202/241/346/235/203/345/257/271/344/273/267/345/215/217/350/256/256.md +243 -0
  252. package/extensions/services/dataclaw//345/215/217/350/256/2562-/351/241/271/347/233/256/350/264/255/344/271/260/346/235/203/344/270/216/345/244/226/345/214/205/345/247/224/346/211/230/345/274/200/345/217/221/345/215/217/350/256/256.md +434 -0
  253. package/extensions/services/evol/__init__.py +1 -0
  254. package/extensions/services/evol/async_http.py +551 -0
  255. package/extensions/services/evol/auth_manager.py +602 -0
  256. package/extensions/services/evol/config.json5 +16 -0
  257. package/extensions/services/evol/config_loader.py +117 -0
  258. package/extensions/services/evol/entry.py +568 -0
  259. package/extensions/services/evol/evol_api.py +969 -0
  260. package/extensions/services/evol/evol_config.json5 +29 -0
  261. package/extensions/services/evol/mfa_totp.py +77 -0
  262. package/extensions/services/evol/migrate_tokens.py +122 -0
  263. package/extensions/services/evol/module.md +150 -0
  264. package/extensions/services/evol/nonce_pool.py +113 -0
  265. package/extensions/services/evol/oauth_manager.py +223 -0
  266. package/extensions/services/evol/pairing.py +251 -0
  267. package/extensions/services/evol/pairing_codes.jsonl +2 -0
  268. package/extensions/services/evol/relay.py +1031 -0
  269. package/extensions/services/evol/relay_config.json5 +85 -0
  270. package/extensions/services/evol/routes/__init__.py +1 -0
  271. package/extensions/services/evol/routes/routes_llm.py +231 -0
  272. package/extensions/services/evol/routes/routes_rpc.py +90 -0
  273. package/extensions/services/evol/routes/routes_test.py +68 -0
  274. package/extensions/services/evol/server.py +2426 -0
  275. package/extensions/services/evol/static/assets/CommissionView-Cs_ys6Gm.js +1 -0
  276. package/extensions/services/evol/static/assets/CommissionView-DACet_Oo.css +1 -0
  277. package/extensions/services/evol/static/assets/IframePage-DbO11U9G.js +1 -0
  278. package/extensions/services/evol/static/assets/IframePage-c572lT8i.css +1 -0
  279. package/extensions/services/evol/static/assets/TeamDetailView-DULrGD7k.css +1 -0
  280. package/extensions/services/evol/static/assets/TeamDetailView-gy_MBEqG.js +139 -0
  281. package/extensions/services/evol/static/assets/element-plus-Bd7pZkkM.js +63 -0
  282. package/extensions/services/evol/static/assets/index-CmMONKzG.css +1 -0
  283. package/extensions/services/evol/static/assets/index-D44bBe__.js +2 -0
  284. package/extensions/services/evol/static/assets/vue-vendor-DtF-__I4.js +29 -0
  285. package/extensions/services/evol/static/index.html +16 -0
  286. package/extensions/services/evol/static/logo.png +0 -0
  287. package/extensions/services/evol/stats_manager.py +243 -0
  288. package/extensions/services/evol/web/README.md +89 -0
  289. package/extensions/services/evol/web/build.bat +44 -0
  290. package/extensions/services/evol/web/index.html +13 -0
  291. package/extensions/services/evol/web/package-lock.json +1718 -0
  292. package/extensions/services/evol/web/package.json +26 -0
  293. package/extensions/services/evol/web/public/logo.png +0 -0
  294. package/extensions/services/evol/web/src/App.vue +7 -0
  295. package/extensions/services/evol/web/src/components/layout/AppHeader.vue +202 -0
  296. package/extensions/services/evol/web/src/components/layout/AppLayout.vue +61 -0
  297. package/extensions/services/evol/web/src/components/layout/AppSidebar.vue +115 -0
  298. package/extensions/services/evol/web/src/components/login/LoginPage.vue +271 -0
  299. package/extensions/services/evol/web/src/components/team/AddMemberModal.vue +181 -0
  300. package/extensions/services/evol/web/src/components/team/GroupTreeNode.vue +156 -0
  301. package/extensions/services/evol/web/src/components/team/TeamAlertConfig.vue +221 -0
  302. package/extensions/services/evol/web/src/components/team/TeamBillModal.vue +165 -0
  303. package/extensions/services/evol/web/src/components/team/TeamMembersAndGroups.vue +499 -0
  304. package/extensions/services/evol/web/src/components/team/TeamStatsPanel.vue +907 -0
  305. package/extensions/services/evol/web/src/components/team/TreeNode.vue +331 -0
  306. package/extensions/services/evol/web/src/components/team/stats/StatsExportProgress.vue +44 -0
  307. package/extensions/services/evol/web/src/components/team/stats/StatsHeader.vue +89 -0
  308. package/extensions/services/evol/web/src/components/team/stats/StatsMemberDetail.vue +415 -0
  309. package/extensions/services/evol/web/src/components/team/stats/StatsSummary.vue +42 -0
  310. package/extensions/services/evol/web/src/components/team/stats/helpers.ts +195 -0
  311. package/extensions/services/evol/web/src/components/team/stats/stats.css +741 -0
  312. package/extensions/services/evol/web/src/components/team/stats/useStatsApi.ts +114 -0
  313. package/extensions/services/evol/web/src/components/team/stats/useStatsCharts.ts +242 -0
  314. package/extensions/services/evol/web/src/components/team/stats/useStatsExport.ts +232 -0
  315. package/extensions/services/evol/web/src/composables/useFormatters.ts +42 -0
  316. package/extensions/services/evol/web/src/composables/useTheme.ts +52 -0
  317. package/extensions/services/evol/web/src/env.d.ts +7 -0
  318. package/extensions/services/evol/web/src/i18n/en.ts +361 -0
  319. package/extensions/services/evol/web/src/i18n/index.ts +36 -0
  320. package/extensions/services/evol/web/src/i18n/zh.ts +379 -0
  321. package/extensions/services/evol/web/src/main.ts +21 -0
  322. package/extensions/services/evol/web/src/router/index.ts +81 -0
  323. package/extensions/services/evol/web/src/services/kernel-client.ts +406 -0
  324. package/extensions/services/evol/web/src/stores/auth.ts +189 -0
  325. package/extensions/services/evol/web/src/stores/connection.ts +134 -0
  326. package/extensions/services/evol/web/src/stores/pages.ts +79 -0
  327. package/extensions/services/evol/web/src/styles/base.css +213 -0
  328. package/extensions/services/evol/web/src/styles/variables.css +138 -0
  329. package/extensions/services/evol/web/src/types/rpc.ts +35 -0
  330. package/extensions/services/evol/web/src/types/token.ts +87 -0
  331. package/extensions/services/evol/web/src/views/AccountView.vue +1532 -0
  332. package/extensions/services/evol/web/src/views/AiServiceView.vue +219 -0
  333. package/extensions/services/evol/web/src/views/CommissionView.vue +1220 -0
  334. package/extensions/services/evol/web/src/views/CreditsView.vue +131 -0
  335. package/extensions/services/evol/web/src/views/EndpointView.vue +163 -0
  336. package/extensions/services/evol/web/src/views/IframePage.vue +120 -0
  337. package/extensions/services/evol/web/src/views/TeamDetailView.vue +473 -0
  338. package/extensions/services/evol/web/src/views/TeamView.vue +332 -0
  339. package/extensions/services/evol/web/tsconfig.json +31 -0
  340. package/extensions/services/evol/web/tsconfig.node.json +10 -0
  341. package/extensions/services/evol/web/vite.config.ts +49 -0
  342. package/extensions/services/evolmem/__init__.py +0 -0
  343. package/extensions/services/evolmem/entry.py +387 -0
  344. package/extensions/services/evolmem/hooks/__init__.py +0 -0
  345. package/extensions/services/evolmem/hooks/assistant_stop.py +228 -0
  346. package/extensions/services/evolmem/hooks/common.py +76 -0
  347. package/extensions/services/evolmem/hooks/pre_tool_use.py +56 -0
  348. package/extensions/services/evolmem/hooks/session_end.py +133 -0
  349. package/extensions/services/evolmem/hooks/session_start.py +229 -0
  350. package/extensions/services/evolmem/hooks/user_prompt.py +122 -0
  351. package/extensions/services/evolmem/module.md +48 -0
  352. package/extensions/services/evolmem/prompts/00-server-info.md +28 -0
  353. package/extensions/services/evolmem/prompts/01-behavior.md +46 -0
  354. package/extensions/services/evolmem/prompts/02-summary-format.md +112 -0
  355. package/extensions/services/evolmem/prompts/03-file-query.md +92 -0
  356. package/extensions/services/evolmem/prompts/04-topic-stats.md +11 -0
  357. package/extensions/services/evolmem/prompts/05-recent-topics.md +84 -0
  358. package/extensions/services/evolmem/scripts/__init__.py +0 -0
  359. package/extensions/services/evolmem/scripts/extract_keywords.py +40 -0
  360. package/extensions/services/evolmem/scripts/search_topics.py +91 -0
  361. package/extensions/services/evolmem/server.py +641 -0
  362. package/extensions/services/gateway/entry.py +964 -0
  363. package/extensions/services/gateway/module.md +29 -0
  364. package/extensions/services/gateway/nonce_pool.py +65 -0
  365. package/extensions/services/gateway/relay.py +133 -0
  366. package/extensions/services/gateway/ws_server.py +285 -0
  367. package/extensions/services/kite_console/auth_manager.py +603 -0
  368. package/extensions/services/kite_console/config.json5 +19 -0
  369. package/extensions/services/kite_console/config_loader.py +117 -0
  370. package/extensions/services/kite_console/entry.py +528 -0
  371. package/extensions/services/kite_console/evol_api.py +179 -0
  372. package/extensions/services/kite_console/evol_config.json5 +29 -0
  373. package/extensions/services/kite_console/mfa_totp.py +77 -0
  374. package/extensions/services/kite_console/migrate_tokens.py +122 -0
  375. package/extensions/services/kite_console/module.md +37 -0
  376. package/extensions/services/kite_console/nonce_pool.py +113 -0
  377. package/extensions/services/kite_console/oauth_manager.py +223 -0
  378. package/extensions/services/kite_console/pairing.py +280 -0
  379. package/extensions/services/kite_console/pairing_codes.jsonl +2 -0
  380. package/extensions/services/kite_console/relay.py +1350 -0
  381. package/extensions/services/kite_console/relay_config.json5 +96 -0
  382. package/extensions/services/kite_console/routes/__init__.py +1 -0
  383. package/extensions/services/kite_console/routes/routes_llm.py +231 -0
  384. package/extensions/services/kite_console/routes/routes_proxy.py +115 -0
  385. package/extensions/services/kite_console/routes/routes_rpc.py +89 -0
  386. package/extensions/services/kite_console/routes/routes_test.py +68 -0
  387. package/extensions/services/kite_console/server.py +1742 -0
  388. package/extensions/services/kite_console/static/css/style.css +1854 -0
  389. package/extensions/services/kite_console/static/index.html +1524 -0
  390. package/extensions/services/kite_console/static/js/dialog.js +292 -0
  391. package/extensions/services/kite_console/static/js/evol-app.js +7740 -0
  392. package/extensions/services/kite_console/static/js/evol-app.js.backup +2777 -0
  393. package/extensions/services/kite_console/static/js/kernel-client.js +560 -0
  394. package/extensions/services/kite_console/static/js/kernel-client.js.backup +434 -0
  395. package/extensions/services/kite_console/static/js/registry-tests.js +592 -0
  396. package/extensions/services/kite_console/static/js/tests/ARCHITECTURE.md +67 -0
  397. package/extensions/services/kite_console/static/js/tests/README.md +140 -0
  398. package/extensions/services/kite_console/static/js/tests/index.js +161 -0
  399. package/extensions/services/kite_console/static/js/tests/integration/auth.js +120 -0
  400. package/extensions/services/kite_console/static/js/tests/integration/channel-interaction.js +188 -0
  401. package/extensions/services/kite_console/static/js/tests/integration/elastic-connection.js +115 -0
  402. package/extensions/services/kite_console/static/js/tests/integration/full-workflow.js +43 -0
  403. package/extensions/services/kite_console/static/js/tests/integration/multi-instance.js +304 -0
  404. package/extensions/services/kite_console/static/js/tests/integration/nested-rpc.js +266 -0
  405. package/extensions/services/kite_console/static/js/tests/integration/pingpong.js +25 -0
  406. package/extensions/services/kite_console/static/js/tests/integration/redis.js +227 -0
  407. package/extensions/services/kite_console/static/js/tests/integration/registry-core.js +52 -0
  408. package/extensions/services/kite_console/static/js/tests/integration/remote-deploy.js +85 -0
  409. package/extensions/services/kite_console/static/js/tests/integration/require-init.js +96 -0
  410. package/extensions/services/kite_console/static/js/tests/integration/scaling-control.js +193 -0
  411. package/extensions/services/kite_console/static/js/tests/integration/trace.js +109 -0
  412. package/extensions/services/kite_console/static/js/tests/modules/acp_channel.js +339 -0
  413. package/extensions/services/kite_console/static/js/tests/modules/auth.js +96 -0
  414. package/extensions/services/kite_console/static/js/tests/modules/backup.js +49 -0
  415. package/extensions/services/kite_console/static/js/tests/modules/gateway.js +41 -0
  416. package/extensions/services/kite_console/static/js/tests/modules/kernel.js +90 -0
  417. package/extensions/services/kite_console/static/js/tests/modules/launcher.js +75 -0
  418. package/extensions/services/kite_console/static/js/tests/modules/multi_instance.js +129 -0
  419. package/extensions/services/kite_console/static/js/tests/modules/phone_channel.js +364 -0
  420. package/extensions/services/kite_console/static/js/tests/modules/redis.js +178 -0
  421. package/extensions/services/kite_console/static/js/tests/modules/watchdog.js +60 -0
  422. package/extensions/services/kite_console/static/js/tests/modules/web.js +70 -0
  423. package/extensions/services/kite_console/static/js/tests/test-runner.js +123 -0
  424. package/extensions/services/kite_console/static/js/virtual-list.js +200 -0
  425. package/extensions/services/kite_console/static/pairing.html +248 -0
  426. package/extensions/services/kite_console/static/test_kernel_client_token.html +352 -0
  427. package/extensions/services/kite_console/static/test_registry.html +262 -0
  428. package/extensions/services/kite_console/static/test_relay.html +462 -0
  429. package/extensions/services/kite_console/stats_manager.py +247 -0
  430. package/extensions/services/logs/README.md +215 -0
  431. package/extensions/services/logs/api_logger.py +37 -0
  432. package/extensions/services/logs/baseline.py +121 -0
  433. package/extensions/services/logs/cleaner.py +76 -0
  434. package/extensions/services/logs/entry.py +449 -0
  435. package/extensions/services/logs/formatter.py +129 -0
  436. package/extensions/services/logs/module.md +38 -0
  437. package/extensions/services/logs/quick_diagnostic.py +128 -0
  438. package/extensions/services/logs/routes/__init__.py +1 -0
  439. package/extensions/services/logs/routes/routes_logs.py +218 -0
  440. package/extensions/services/logs/routes/routes_logs.py.backup +173 -0
  441. package/extensions/services/logs/scanner.py +100 -0
  442. package/extensions/services/logs/searcher.py +263 -0
  443. package/extensions/services/logs/server.py +553 -0
  444. package/extensions/services/logs.zip +0 -0
  445. package/extensions/services/model_service/config.json5 +30 -0
  446. package/extensions/services/model_service/entry.py +633 -162
  447. package/extensions/services/model_service/module.md +11 -2
  448. package/extensions/services/proxy/.claude/settings.local.json +13 -0
  449. package/extensions/services/proxy/__init__.py +0 -0
  450. package/extensions/services/proxy/agentcp/LICENCE +178 -0
  451. package/extensions/services/proxy/agentcp/README copy.md +85 -0
  452. package/extensions/services/proxy/agentcp/README.md +260 -0
  453. package/extensions/services/proxy/agentcp/__init__.py +16 -0
  454. package/extensions/services/proxy/agentcp/agent.py +4 -0
  455. package/extensions/services/proxy/agentcp/agentcp.py +2494 -0
  456. package/extensions/services/proxy/agentcp/agentprofile.json +89 -0
  457. package/extensions/services/proxy/agentcp/ap/__init__.py +16 -0
  458. package/extensions/services/proxy/agentcp/ap/ap_client.py +316 -0
  459. package/extensions/services/proxy/agentcp/assets/images/wechat_qr.png +0 -0
  460. package/extensions/services/proxy/agentcp/backup/metrics.json +31 -0
  461. package/extensions/services/proxy/agentcp/base/__init__.py +20 -0
  462. package/extensions/services/proxy/agentcp/base/auth_client.py +257 -0
  463. package/extensions/services/proxy/agentcp/base/client.py +112 -0
  464. package/extensions/services/proxy/agentcp/base/env.py +34 -0
  465. package/extensions/services/proxy/agentcp/base/html_util.py +336 -0
  466. package/extensions/services/proxy/agentcp/base/log.py +98 -0
  467. package/extensions/services/proxy/agentcp/ca/__init__.py +17 -0
  468. package/extensions/services/proxy/agentcp/ca/ca_client.py +414 -0
  469. package/extensions/services/proxy/agentcp/ca/ca_root.py +74 -0
  470. package/extensions/services/proxy/agentcp/context/__init__.py +20 -0
  471. package/extensions/services/proxy/agentcp/context/context.py +73 -0
  472. package/extensions/services/proxy/agentcp/context/exceptions.py +114 -0
  473. package/extensions/services/proxy/agentcp/create_profile.py +125 -0
  474. package/extensions/services/proxy/agentcp/create_profile_weather.py +125 -0
  475. package/extensions/services/proxy/agentcp/db/__init__.py +15 -0
  476. package/extensions/services/proxy/agentcp/db/db_mananger.py +550 -0
  477. package/extensions/services/proxy/agentcp/docs/UDP_HEARTBEAT_FIX_REPORT.md +265 -0
  478. package/extensions/services/proxy/agentcp/docs/heartbeat_issue_analysis.md +291 -0
  479. package/extensions/services/proxy/agentcp/file/__init__.py +16 -0
  480. package/extensions/services/proxy/agentcp/file/file_client.py +141 -0
  481. package/extensions/services/proxy/agentcp/file/wss_binary_message.py +137 -0
  482. package/extensions/services/proxy/agentcp/hcp.py +299 -0
  483. package/extensions/services/proxy/agentcp/heartbeat/__init__.py +16 -0
  484. package/extensions/services/proxy/agentcp/heartbeat/heartbeat_client.py +360 -0
  485. package/extensions/services/proxy/agentcp/improved_scheduler.py +498 -0
  486. package/extensions/services/proxy/agentcp/llm_agent_utils.py +249 -0
  487. package/extensions/services/proxy/agentcp/llm_server.py +172 -0
  488. package/extensions/services/proxy/agentcp/mermaid.py +210 -0
  489. package/extensions/services/proxy/agentcp/message.py +149 -0
  490. package/extensions/services/proxy/agentcp/metrics.py +256 -0
  491. package/extensions/services/proxy/agentcp/monitoring/__init__.py +20 -0
  492. package/extensions/services/proxy/agentcp/monitoring/global_monitor.py +27 -0
  493. package/extensions/services/proxy/agentcp/monitoring/metrics_store.py +325 -0
  494. package/extensions/services/proxy/agentcp/monitoring/monitoring_service.py +269 -0
  495. package/extensions/services/proxy/agentcp/monitoring/sliding_window.py +222 -0
  496. package/extensions/services/proxy/agentcp/monitoring/standalone_reader.py +224 -0
  497. package/extensions/services/proxy/agentcp/msg/__init__.py +21 -0
  498. package/extensions/services/proxy/agentcp/msg/connection_manager.py +456 -0
  499. package/extensions/services/proxy/agentcp/msg/message_client.py +2058 -0
  500. package/extensions/services/proxy/agentcp/msg/message_serialize.py +263 -0
  501. package/extensions/services/proxy/agentcp/msg/open_ai_message.py +88 -0
  502. package/extensions/services/proxy/agentcp/msg/session_manager.py +1062 -0
  503. package/extensions/services/proxy/agentcp/msg/stream_client.py +267 -0
  504. package/extensions/services/proxy/agentcp/msg/websocket_file_receiver.py +89 -0
  505. package/extensions/services/proxy/agentcp/msg/ws_logger.py +685 -0
  506. package/extensions/services/proxy/agentcp/msg/wss_binary_message.py +137 -0
  507. package/extensions/services/proxy/agentcp/requirements.txt +7 -0
  508. package/extensions/services/proxy/agentcp/samples/agent_graph/README.md +37 -0
  509. package/extensions/services/proxy/agentcp/samples/agent_graph/agentprofile.json +89 -0
  510. package/extensions/services/proxy/agentcp/samples/agent_graph/create_profile.py +138 -0
  511. package/extensions/services/proxy/agentcp/samples/agent_graph/main.py +164 -0
  512. package/extensions/services/proxy/agentcp/samples/agent_use/create_profile.py +123 -0
  513. package/extensions/services/proxy/agentcp/samples/agent_use/llm/create_profile.py +129 -0
  514. package/extensions/services/proxy/agentcp/samples/agent_use/llm/env.json +5 -0
  515. package/extensions/services/proxy/agentcp/samples/agent_use/llm/main.py +146 -0
  516. package/extensions/services/proxy/agentcp/samples/agent_use/main.py +123 -0
  517. package/extensions/services/proxy/agentcp/samples/agent_use/readme.md +379 -0
  518. package/extensions/services/proxy/agentcp/samples/agent_use/search/create_profile.py +129 -0
  519. package/extensions/services/proxy/agentcp/samples/agent_use/search/main.py +28 -0
  520. package/extensions/services/proxy/agentcp/samples/agent_use/tool/create_profile.py +129 -0
  521. package/extensions/services/proxy/agentcp/samples/agent_use/tool/main.py +20 -0
  522. package/extensions/services/proxy/agentcp/samples/ali_amap/README.md +97 -0
  523. package/extensions/services/proxy/agentcp/samples/ali_amap/amap_agent.py +88 -0
  524. package/extensions/services/proxy/agentcp/samples/ali_amap/create_profile.py +125 -0
  525. package/extensions/services/proxy/agentcp/samples/compute_agent/agent/powershell.py +228 -0
  526. package/extensions/services/proxy/agentcp/samples/compute_agent/agent/software.py +63 -0
  527. package/extensions/services/proxy/agentcp/samples/compute_agent/agent/tools.py +36 -0
  528. package/extensions/services/proxy/agentcp/samples/compute_agent/browser_user.py +41 -0
  529. package/extensions/services/proxy/agentcp/samples/deepseek/README.md +79 -0
  530. package/extensions/services/proxy/agentcp/samples/deepseek/create_profile.py +126 -0
  531. package/extensions/services/proxy/agentcp/samples/deepseek/deepseek.py +42 -0
  532. package/extensions/services/proxy/agentcp/samples/dify_chat/README.md +78 -0
  533. package/extensions/services/proxy/agentcp/samples/dify_chat/create_profile.py +126 -0
  534. package/extensions/services/proxy/agentcp/samples/dify_chat/dify_chat.py +47 -0
  535. package/extensions/services/proxy/agentcp/samples/dify_workflow/README.md +78 -0
  536. package/extensions/services/proxy/agentcp/samples/dify_workflow/create_profile.py +126 -0
  537. package/extensions/services/proxy/agentcp/samples/dify_workflow/dify_workflow.py +46 -0
  538. package/extensions/services/proxy/agentcp/samples/executor/README.md +44 -0
  539. package/extensions/services/proxy/agentcp/samples/executor/agentprofile.json +89 -0
  540. package/extensions/services/proxy/agentcp/samples/executor/create_profile.py +139 -0
  541. package/extensions/services/proxy/agentcp/samples/executor/main.py +160 -0
  542. package/extensions/services/proxy/agentcp/samples/filereader/README.md +45 -0
  543. package/extensions/services/proxy/agentcp/samples/filereader/agentprofile.json +90 -0
  544. package/extensions/services/proxy/agentcp/samples/filereader/create_profile.py +137 -0
  545. package/extensions/services/proxy/agentcp/samples/filereader/main.py +253 -0
  546. package/extensions/services/proxy/agentcp/samples/filewriter/README.md +38 -0
  547. package/extensions/services/proxy/agentcp/samples/filewriter/agentprofile.json +91 -0
  548. package/extensions/services/proxy/agentcp/samples/filewriter/create_profile.py +138 -0
  549. package/extensions/services/proxy/agentcp/samples/filewriter/main.py +289 -0
  550. package/extensions/services/proxy/agentcp/samples/hcp/README.md +85 -0
  551. package/extensions/services/proxy/agentcp/samples/hcp/acp_weather_agent.zip +0 -0
  552. package/extensions/services/proxy/agentcp/samples/hcp/create_profile.py +125 -0
  553. package/extensions/services/proxy/agentcp/samples/hcp/hcp.py +237 -0
  554. package/extensions/services/proxy/agentcp/samples/helloworld/README.md +68 -0
  555. package/extensions/services/proxy/agentcp/samples/helloworld/hello_world.py +40 -0
  556. package/extensions/services/proxy/agentcp/samples/llm_agent/MEADME.md +117 -0
  557. package/extensions/services/proxy/agentcp/samples/llm_agent/create_profile.py +125 -0
  558. package/extensions/services/proxy/agentcp/samples/llm_agent/qwen_agent.py +136 -0
  559. package/extensions/services/proxy/agentcp/samples/local_llm_agent/README.md +90 -0
  560. package/extensions/services/proxy/agentcp/samples/local_llm_agent/create_profile.py +125 -0
  561. package/extensions/services/proxy/agentcp/samples/local_llm_agent/main.py +49 -0
  562. package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/README.md +55 -0
  563. package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/create_profile.py +125 -0
  564. package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/main.py +23 -0
  565. package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/README.md +103 -0
  566. package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/create_profile.py +125 -0
  567. package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/main.py +69 -0
  568. package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/README.md +58 -0
  569. package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/create_profile.py +125 -0
  570. package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/main.py +25 -0
  571. package/extensions/services/proxy/agentcp/samples/qwen3/README.md +71 -0
  572. package/extensions/services/proxy/agentcp/samples/qwen3/create_profile.py +126 -0
  573. package/extensions/services/proxy/agentcp/samples/qwen3/qwen3.py +37 -0
  574. package/extensions/services/proxy/agentcp/samples/qwen3_tools/README.md +133 -0
  575. package/extensions/services/proxy/agentcp/samples/qwen3_tools/create_profile.py +126 -0
  576. package/extensions/services/proxy/agentcp/samples/qwen3_tools/qwen3_tools.py +98 -0
  577. package/extensions/services/proxy/agentcp/samples/search/create_profile_qwen.py +125 -0
  578. package/extensions/services/proxy/agentcp/samples/search/create_profile_search.py +125 -0
  579. package/extensions/services/proxy/agentcp/samples/search/qwen_agent.py +136 -0
  580. package/extensions/services/proxy/agentcp/samples/search/search_agent.py +170 -0
  581. package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/README.md +89 -0
  582. package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/create_profile.py +125 -0
  583. package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/main.py +44 -0
  584. package/extensions/services/proxy/agentcp/utils/__init__.py +15 -0
  585. package/extensions/services/proxy/agentcp/utils/file_util.py +117 -0
  586. package/extensions/services/proxy/agentcp/utils/proxy_bypass.py +99 -0
  587. package/extensions/services/proxy/agentcp/workflow.py +203 -0
  588. package/extensions/services/proxy/aid_manager.py +419 -0
  589. package/extensions/services/proxy/auth_bridge.py +182 -0
  590. package/extensions/services/proxy/config_store.py +79 -0
  591. package/extensions/services/proxy/entry.py +528 -0
  592. package/extensions/services/proxy/evol/__init__.py +1 -0
  593. package/extensions/services/proxy/evol/config.py +37 -0
  594. package/extensions/services/proxy/evol/http/__init__.py +1 -0
  595. package/extensions/services/proxy/evol/http/async_http.py +551 -0
  596. package/extensions/services/proxy/evol/log.py +28 -0
  597. package/extensions/services/proxy/evol/presenter/__init__.py +2 -0
  598. package/extensions/services/proxy/evol/presenter/agentIdPresenter.py +1031 -0
  599. package/extensions/services/proxy/evol/presenter/apikeyPresenter.py +96 -0
  600. package/extensions/services/proxy/evol/presenter/configPresenter.py +234 -0
  601. package/extensions/services/proxy/evol/presenter/userPresenter.py +71 -0
  602. package/extensions/services/proxy/evol/server/__init__.py +1 -0
  603. package/extensions/services/proxy/evol/server/claude_proxy_async.py +3434 -0
  604. package/extensions/services/proxy/evol/server/openclaw_proxy.py +1861 -0
  605. package/extensions/services/proxy/evol/server/proxy_config.py +15 -0
  606. package/extensions/services/proxy/evol/server/proxy_engine.py +501 -0
  607. package/extensions/services/proxy/evol/version.py +24 -0
  608. package/extensions/services/proxy/module.md +151 -0
  609. package/extensions/services/proxy/server.py +952 -0
  610. package/extensions/services/redis/ALIGNMENT_CHECKLIST.md +121 -0
  611. package/extensions/services/redis/ALIGNMENT_STATUS.md +548 -0
  612. package/extensions/services/redis/config.json5 +8 -0
  613. package/extensions/services/redis/entry.py +1509 -0
  614. package/extensions/services/redis/entry.py.backup +405 -0
  615. package/extensions/services/redis/module.md +48 -0
  616. package/extensions/services/redis/redis_builtin.py +332 -0
  617. package/extensions/services/redis/redis_external.py +164 -0
  618. package/extensions/services/testUi/entry.py +446 -0
  619. package/extensions/services/testUi/module.md +18 -0
  620. package/extensions/services/testUi/ui/cards.html +131 -0
  621. package/extensions/services/testUi/ui/index.html +22 -0
  622. package/extensions/services/testUi/ui/particles.html +143 -0
  623. package/extensions/services/watchdog/entry.py +1258 -767
  624. package/extensions/services/watchdog/module.md +3 -0
  625. package/extensions/services/watchdog/monitor.py +483 -75
  626. package/extensions/services/web/auth_manager.py +602 -0
  627. package/extensions/services/web/config.json5 +11 -0
  628. package/extensions/services/web/entry.py +598 -478
  629. package/extensions/services/web/mfa_totp.py +77 -0
  630. package/extensions/services/web/module.md +17 -14
  631. package/extensions/services/web/nonce_pool.py +113 -0
  632. package/extensions/services/web/oauth_manager.py +223 -0
  633. package/extensions/services/web/pairing.py +3 -2
  634. package/extensions/services/web/pairing_codes.jsonl +1 -0
  635. package/extensions/services/web/relay.py +442 -63
  636. package/extensions/services/web/relay_config.json5 +1 -2
  637. package/extensions/services/web/routes/routes_rpc.py +6 -6
  638. package/extensions/services/web/server.py +380 -181
  639. package/extensions/services/web/static/index.html +1752 -1738
  640. package/extensions/services/web/static/js/app.js +32 -0
  641. package/extensions/services/web/static/js/kernel-client.js +48 -9
  642. package/extensions/services/web/static/js/token-manager.js +10 -10
  643. package/extensions/services/web/vendor/bluetooth/audio.py +1 -1
  644. package/extensions/services/web/vendor/config.py +2 -2
  645. package/extensions/services/web/vendor/storage/identity.py +1 -1
  646. package/kernel/entry.py +77 -23
  647. package/kernel/event_hub.py +1122 -74
  648. package/kernel/module.md +26 -1
  649. package/kernel/registry_store.py +209 -36
  650. package/kernel/rpc_router.py +1400 -465
  651. package/kernel/server.py +1084 -108
  652. package/kite_cli/builders/__init__.py +4 -0
  653. package/kite_cli/builders/base.py +67 -0
  654. package/kite_cli/builders/custom.py +31 -0
  655. package/kite_cli/builders/detector.py +56 -0
  656. package/kite_cli/builders/go.py +34 -0
  657. package/kite_cli/builders/gradle.py +41 -0
  658. package/kite_cli/builders/maven.py +36 -0
  659. package/kite_cli/builders/npm.py +44 -0
  660. package/kite_cli/builders/python.py +37 -0
  661. package/kite_cli/commands/BUILD_GUIDE.md +109 -0
  662. package/kite_cli/commands/build.py +142 -0
  663. package/kite_cli/commands/check.py +60 -0
  664. package/kite_cli/commands/config.py +156 -0
  665. package/kite_cli/commands/deps.py +58 -0
  666. package/kite_cli/commands/deps_install.py +67 -0
  667. package/kite_cli/commands/disable.py +162 -0
  668. package/kite_cli/commands/enable.py +162 -0
  669. package/kite_cli/commands/env_check.py +45 -0
  670. package/kite_cli/commands/export.py +96 -0
  671. package/kite_cli/commands/import_cmd.py +110 -0
  672. package/kite_cli/commands/install.py +50 -23
  673. package/kite_cli/commands/install_skill.py +107 -0
  674. package/kite_cli/commands/list.py +128 -31
  675. package/kite_cli/commands/outdated.py +202 -0
  676. package/kite_cli/commands/prepare.py +49 -0
  677. package/kite_cli/commands/search.py +33 -17
  678. package/kite_cli/commands/update.py +115 -2
  679. package/kite_cli/commands/venv_setup.py +56 -0
  680. package/kite_cli/commands/why.py +48 -0
  681. package/kite_cli/core/config_manager.py +145 -0
  682. package/kite_cli/core/downloader.py +32 -2
  683. package/kite_cli/main.py +179 -5
  684. package/kite_cli/utils/colors.py +153 -0
  685. package/kite_cli/utils/dependency_graph.py +209 -0
  686. package/kite_cli/utils/process.py +55 -0
  687. package/kite_cli/utils/progress.py +207 -0
  688. package/kite_cli/utils/table.py +101 -0
  689. package/launcher/count_lines.py +192 -43
  690. package/launcher/entry.py +4543 -2517
  691. package/launcher/logging_setup.py +54 -1
  692. package/launcher/module.md +37 -2
  693. package/launcher/module_scanner.py +103 -20
  694. package/launcher/process_manager.py +355 -76
  695. package/main.py +10 -1
  696. package/package.json +11 -1
  697. package/python_version.json +4 -0
  698. package/requirements.txt +41 -0
  699. package/scripts/auto-fix-deps.py +128 -0
  700. package/scripts/env-manager.js +351 -0
  701. package/scripts/final-test.js +78 -0
  702. package/scripts/python-env.js +79 -0
  703. package/scripts/scan_dependencies.py +461 -0
  704. package/scripts/setup-python-env.js +700 -0
  705. package/scripts/test-alluser.js +48 -0
  706. package/scripts/test-different-version.js +86 -0
  707. package/scripts/test-direct.js +63 -0
  708. package/scripts/test-extract-installer.js +28 -0
  709. package/scripts/test-install-log.js +54 -0
  710. package/scripts/test-installer.js +39 -0
  711. package/scripts/test-integration.js +250 -0
  712. package/scripts/test-real-install.js +210 -0
  713. package/scripts/test-targetdir.js +49 -0
  714. package/scripts/test-venv-real.js +47 -0
  715. package/scripts/test-venv-simple.js +57 -0
  716. package/scripts/test-wait.js +49 -0
  717. package/scripts/test-with-log.js +63 -0
  718. package/extensions/services/web/config.yaml +0 -149
@@ -0,0 +1,12 @@
1
+ # 1. 框架定位
2
+
3
+ Kite 是一个**事件驱动的多 Agent 运行时框架**,为构建各类 AI Agent 应用提供基础设施。框架本身不包含任何特定应用逻辑,所有功能通过模块化扩展。
4
+
5
+ 核心能力:
6
+ - 事件驱动架构
7
+ - 模块化扩展
8
+ - 服务注册与发现
9
+ - 多进程隔离
10
+ - 统一的身份和权限体系
11
+ - 任务管理
12
+ - 大模型调用抽象
@@ -0,0 +1,341 @@
1
+ # 2. 核心概念
2
+
3
+ ## 2.1 身份(Identity)
4
+
5
+ 系统中所有参与者(人、群或 Agent)共享统一的身份模型。**所有身份地位平等**,代理、用户、联系人、群只是角色标记,不存在层级关系。
6
+
7
+ 一个身份可以拥有多个渠道上的多个 ID:
8
+
9
+ ```
10
+ 身份 (Identity)
11
+ ├── 渠道 ID: phone:138xxxx
12
+ ├── 渠道 ID: email:xxx@xxx.com
13
+ ├── 渠道 ID: aid:abc123
14
+ └── 角色标记: agent / owner / contact / group(可多个)
15
+ ```
16
+
17
+ **身份存储结构:**
18
+
19
+ 所有身份平铺在 `identities/` 目录下,纯身份信息。通过索引目录实现渠道 ID → 身份的映射:
20
+
21
+ ```
22
+ identities/
23
+ ├── _index/ ← 索引目录
24
+ │ ├── phone_13800138000.json ← {"identity": "王老板"}
25
+ │ ├── phone_18766661234.json ← {"identity": "小助手"}
26
+ │ ├── phone_13900139000.json ← {"identity": "phone_13900139000"}
27
+ │ ├── wechat_group_abc123.json ← {"identity": "项目X讨论群"}
28
+ │ └── ...
29
+ ├── 王老板/ ← 已确认身份
30
+ │ ├── profile.md ← 身份信息(frontmatter + 正文)
31
+ │ └── history.jsonl ← 身份变更记录
32
+ ├── 小助手/ ← agent 身份(扁平共存)
33
+ │ ├── profile.md ← agent 人设(含 owners)
34
+ │ └── history.jsonl
35
+ ├── phone_13900139000/ ← 未识别身份
36
+ │ ├── profile.md
37
+ │ └── history.jsonl
38
+ ├── 项目X讨论群/ ← 群身份(与个人扁平共存)
39
+ │ ├── profile.md
40
+ │ └── history.jsonl
41
+ └── ...
42
+ ```
43
+
44
+ **profile.md 格式:**
45
+
46
+ 所有身份(agent、contact、group)都使用 profile.md,格式统一,仅 role 和具体字段不同。
47
+
48
+ agent 身份:
49
+ ```markdown
50
+ ---
51
+ name: 小助手
52
+ role: agent
53
+ status: identified
54
+ channels:
55
+ - phone: "18766661234"
56
+ - sms: "18766661234"
57
+ owners:
58
+ - 张三
59
+ - 李四
60
+ ---
61
+
62
+ 我是一个电话助手,性格温和,说话简洁...
63
+ ```
64
+
65
+ 联系人身份:
66
+ ```markdown
67
+ ---
68
+ name: 王老板
69
+ role: contact
70
+ status: identified
71
+ channels:
72
+ - phone: "13800138000"
73
+ - wechat: "wang_boss"
74
+ ---
75
+
76
+ 张三的合作伙伴,做建材生意...
77
+ ```
78
+
79
+ **status 字段:**
80
+ - `unidentified` — 首次遇到,仅有 channel_id,尚未确认真实身份
81
+ - `identified` — 已确认身份,目录名为人类可读名称
82
+ - `merged` — 已被合并到其他身份(保留目录作为重定向,profile.md 记录合并目标)
83
+
84
+ **history.jsonl — 身份变更记录:**
85
+
86
+ 记录身份从创建到当前的所有变更,用于回溯和审计:
87
+
88
+ ```jsonl
89
+ {"event": "created", "at": "2026-02-27T10:00:00", "source": "phone_13800138000", "note": "首次来电自动创建"}
90
+ {"event": "identified", "at": "2026-02-27T10:05:00", "from": "phone_13800138000", "to": "王老板", "by": "小助手", "note": "通话中确认身份"}
91
+ {"event": "channel_added", "at": "2026-02-27T11:00:00", "channel": "wechat", "id": "wang_boss", "note": "通话中获知微信号"}
92
+ {"event": "merged", "at": "2026-02-28T09:00:00", "absorbed": "wechat_wang_boss", "note": "合并微信身份"}
93
+ {"event": "profile_updated", "at": "2026-02-28T09:01:00", "field": "name", "from": "王老板", "to": "王建国", "note": "确认全名"}
94
+ ```
95
+
96
+ 事件类型:`created`、`identified`、`channel_added`、`channel_removed`、`merged`、`split`、`profile_updated`
97
+
98
+ **身份识别与合并:**
99
+ - 首次遇到一个渠道 ID 时,创建 `{channel}_{id}` 命名的身份文件夹,同时在 `_index/` 下创建索引
100
+ - 当确认多个渠道 ID 属于同一个人或同一个群时,由 LLM 执行合并操作:将多个文件夹合并为一个,文件夹名改为人类可读的姓名/昵称/群名,更新索引指向
101
+ - 所有变更记录到 history.jsonl,支持回溯
102
+
103
+ **角色标记:**
104
+ - `agent` — 系统执行主体,profile.md 中定义 owners 列表
105
+ - `owner` — agent 的主人,最高权限(owner 关系是 per-agent 的,不同 agent 身份可以有不同的主人)
106
+ - `contact` — 交互对象(个人)
107
+ - `group` — 群/群组,也是一等公民身份,拥有 profile.md 和 history.jsonl,与 contact 共享相同的存储结构
108
+ - 一个身份可以同时有多个角色(如某人既是某 agent 的 owner 又是 contact)
109
+
110
+ **群身份示例:**
111
+
112
+ 群与个人联系人在身份层没有额外信息,只是 role 不同。群成员关系等业务数据存放在工作区 `{agent}/data/{group_id}/` 下,不在身份层。
113
+
114
+ ```markdown
115
+ ---
116
+ name: 项目X讨论群
117
+ role: group
118
+ status: identified
119
+ channels:
120
+ - wechat: "group_abc123"
121
+ ---
122
+
123
+ 张三的项目组工作群,讨论项目进度和技术问题。
124
+ ```
125
+
126
+ **群的路由与处理:** Kernel 根据 peer 的 role 决定路由到哪个 Agent 模块。`contact` 类型路由到对话 Agent,`group` 类型路由到群处理 Agent(见 2.5 节)。
127
+
128
+ ## 2.2 渠道(Channel)
129
+
130
+ 渠道是消息传输通道,以模块形式接入。每个渠道提供:
131
+ - **事件** — 渠道上发生的事情(消息到达、连接状态变化等)
132
+ - **工具** — 在渠道上执行的操作(发送消息、建立连接等)
133
+
134
+ 渠道类型示例:电话、短信、邮箱、即时通讯、Web 接口、ACP 网络等。
135
+
136
+ ## 2.3 事件(Event)
137
+
138
+ 事件是系统中所有交互的基本单元。事件驱动系统运行。
139
+
140
+ 事件结构:
141
+ ```json
142
+ {
143
+ "event_id": "uuid",
144
+ "type": "event",
145
+ "event": "channel.message.received",
146
+ "source": "module_name",
147
+ "timestamp": "2026-02-26T10:00:00Z",
148
+ "data": { ... }
149
+ }
150
+ ```
151
+
152
+ 事件类型示例:
153
+ - `channel.message.received` — 收到消息
154
+ - `channel.message.sent` — 消息已发送
155
+ - `channel.connected` — 渠道连接成功
156
+ - `channel.disconnected` — 渠道断开
157
+ - `channel.error` — 渠道异常
158
+ - `session.started` — 会话开始
159
+ - `session.ended` — 会话结束
160
+ - `task.created` — 任务创建
161
+ - `task.completed` — 任务完成
162
+ - `module.starting` — 模块即将启动
163
+ - `module.ready` — 模块服务就绪
164
+ - `module.started` — 模块启动成功
165
+ - `module.stopped` — 模块停止
166
+ - `module.state_changed` — 模块状态变更
167
+
168
+ ## 2.4 会话(Session)
169
+
170
+ 会话是代理与某个身份(contact 或 group)之间的一次交互过程。会话由一系列事件组成。
171
+
172
+ 会话属性:
173
+ - **会话 ID** — 唯一标识
174
+ - **参与者** — 代理 ID + 对方 ID
175
+ - **对方类型** — 私聊(peer)或群(group),决定路由到哪个 Agent
176
+ - **渠道** — 通过哪个渠道
177
+ - **方向** — 主动发起(outgoing)或被动接收(incoming)
178
+ - **来源** — 触发方式(api / auto / manual)
179
+ - **状态** — active / ended / failed
180
+
181
+ 会话在不同阶段由不同的 Agent 处理。
182
+
183
+ **Session Key 与会话隔离:**
184
+
185
+ Session key 决定了"哪些消息属于同一个对话",是会话数据存储路径的依据。session key 的生成规则由 Kernel 中的 `resolve_session_key()` 函数统一管理,不在各处硬编码。
186
+
187
+ 私聊和群使用不同的 key 结构:
188
+
189
+ ```
190
+ # 私聊(一对一)
191
+ session_key = "{agent}:peer:{peer_identity}"
192
+
193
+ # 群
194
+ session_key = "{agent}:group:{group_identity}"
195
+ ```
196
+
197
+ 私聊的 session scope 可配置(在工作区 config.json 中):
198
+
199
+ | scope | session key 格式 | 说明 |
200
+ |-------|-----------------|------|
201
+ | `per-peer` | `{agent}:peer:{peer}` | 同一个联系人跨渠道共享上下文(默认) |
202
+ | `per-channel-peer` | `{agent}:{channel}:peer:{peer}` | 不同渠道独立上下文 |
203
+
204
+ 群的 session key 始终按群隔离,不按发言人。群的上下文是群的,不是某个发言人的。但 agent 同时会更新发言人的 identity 信息(跨 session 的关系记忆)。
205
+
206
+ **消息记录格式:**
207
+
208
+ messages.jsonl 统一支持多发言人,私聊和群使用相同格式:
209
+
210
+ ```jsonl
211
+ {"sender": "wang-boss", "content": "项目进度怎么样了", "timestamp": "2026-02-27T10:00:00Z", "channel": "wechat"}
212
+ {"sender": "agent", "content": "报告已经写好了", "timestamp": "2026-02-27T10:00:05Z", "channel": "wechat"}
213
+ ```
214
+
215
+ 群消息额外可带 `triggered_by` 字段,记录 agent 回复的触发原因:
216
+
217
+ ```jsonl
218
+ {"sender": "agent", "content": "我可以帮忙审阅", "timestamp": "...", "channel": "wechat", "triggered_by": "mention"}
219
+ ```
220
+
221
+ ## 2.5 Agent
222
+
223
+ Agent 是实际执行 LLM 调用的处理单元。Agent 是模块,与 Channel、Kernel 等一样遵循统一模块规范(enabled/manual/disabled 三态)。每个 Agent 是独立的常驻进程,通过事件与系统交互。
224
+
225
+ **进程模型:** 每种 Agent 类型只有一个进程实例。Agent 内部通过异步协程并发处理多个会话——收到事件时创建新的异步会话协程,而非启动新进程。例如 conversation Agent 同时处理 5 通电话时,是一个进程内 5 个并发协程。
226
+
227
+ **生命周期管理:**
228
+ - **启动** — enabled 状态的 Agent 随系统启动,由 Launcher 管理保活(进程异常退出时自动重启)
229
+ - **按需启动** — manual 状态的 Agent 可由其他 Agent 通过 Launcher API 启动
230
+ - **自主管理** — Agent 的内部状态(会话管理、资源清理等)由自身负责
231
+ - **事件驱动** — Agent 启动后订阅关心的事件,收到事件时创建会话协程处理
232
+
233
+ **Agent 类型(草案):**
234
+
235
+ 以下类型划分为初始草案。实际场景中,一个主 Agent 模块(如 conversation)可能就足够处理大部分对话场景,其他类型作为辅助 Agent 按需存在(如压缩、总结、身份管理等)。辅助 Agent 不一定需要独立进程,可以由主 Agent 在协程内按需调用 Model Service 完成。
236
+
237
+ | 类型 | 职责 | 触发事件 |
238
+ |------|------|---------|
239
+ | **conversation** | 对话循环 — 一对一的交互 | 会话建立后 |
240
+ | **group** | 群处理 — 观察群消息、判断是否参与、按需回复 | 群消息到达时 |
241
+ | **post** | 后处理 — 总结、评估、身份检查、触发后续 | 会话结束后 |
242
+ | **planner** | 任务规划 — 复杂目标拆分 | 任务创建时 |
243
+
244
+ **conversation 与 group 的核心区别:**
245
+ - conversation:收到消息 → 进入 LLM loop → 回复。每条消息都期待响应。
246
+ - group:收到消息 → 观察/记录 → 判断是否需要行动 → 可能回复、可能触发任务、可能什么都不做。大部分消息只需"听到",不需要回复。
247
+
248
+ Kernel 根据 peer identity 的 role(`contact` → conversation,`group` → group)路由到对应的 Agent 模块。
249
+
250
+ Agent 可通过 Launcher API 启动其他 Agent(如 conversation 按需启动 retrieval)。
251
+
252
+ ## 2.6 工具与技能
253
+
254
+ 工具和技能是 Agent 可调用的能力单元。从加载到调用分为三个阶段:
255
+
256
+ **阶段一:加载定义。** 从以下三个位置加载工具和技能定义,合并后注入上下文:
257
+
258
+ 1. **系统内核** — `kernel/tools/` 和 `kernel/skills/`(全局可用)
259
+ 2. **发起方 Channel** — `{channel}/tools/` 和 `{channel}/skills/`(渠道特有能力)
260
+ 3. **当前 Agent** — `{agent}/tools/` 和 `{agent}/skills/`(Agent 特有能力)
261
+
262
+ **阶段二:开关过滤。** 多级开关控制哪些工具和技能对当前会话可见:
263
+
264
+ | 级别 | switches 位置 | 说明 |
265
+ |------|-------------|------|
266
+ | 1. 全局 | `kernel/data/switches.json` | 全局开关 |
267
+ | 2. Channel | `{channel}/data/switches.json` | 渠道级开关 |
268
+ | 3. Agent 模块 | `{agent_module}/data/switches.json` | Agent 模块级开关 |
269
+ | 4. 工作区 agent 级 | `{workspace}/config.json` → switches | agent 级开关 |
270
+ | 5. 工作区 peer/group 级 | `{workspace}/data/{peer}/config.json` → switches | peer/group 级开关 |
271
+
272
+ 合并规则:deny wins。任一级 disabled 即不注入 LLM 上下文,peer/group 级不能放宽 agent 级的禁止。
273
+
274
+ **阶段三:调用时权限检查。** 工具/技能被实际调用时,由工具/技能自身执行权限检查。
275
+
276
+ **context 构造:** Kernel 在上下文组装阶段将权限相关信息打包到事件 payload 中,Agent 模块的工具调用层直接使用,随 args 传给工具提供者:
277
+
278
+ ```python
279
+ context = {
280
+ "workspace": str, # 最终工作区路径
281
+ "agent_identity": str, # agent 身份名
282
+ "peer_identity": str, # 对方身份名(contact 或 group)
283
+ "channel": str, # 当前渠道名
284
+ "session": dict, # 会话信息
285
+ "task_info": dict | None, # 任务信息(如有)
286
+ }
287
+ ```
288
+
289
+ 注意 context 中不包含 `is_owner` 字段。owner 身份由工具提供者在 `check_permission` 中独立验证(读取 `identities/{agent}/profile.md` 中的 owners 列表比对 peer identity),不信任调用方传入的值。
290
+
291
+ **权限检查数据来源:** 工具提供者从 context 中获取 workspace 路径,读取 config.json 中的 permissions 配置(已由 Kernel 合并 agent 级 + peer/group 级,deny wins)。
292
+
293
+ **工具/技能自主检查:** handler.py 中必须实现统一命名的权限检查函数:
294
+
295
+ ```python
296
+ def check_permission(args: dict, context: dict) -> str | None:
297
+ """检查权限。返回 None 表示通过,返回字符串表示拒绝原因(含来源)。"""
298
+ ```
299
+
300
+ 模块收到工具调用请求时,先调用 handler 的 `check_permission(args, context)`,返回非 None 则直接返回拒绝,不调用 `execute()`。这是模块规范约定,agent 可通过审查模块的工具分发代码验证。
301
+
302
+ **信任模型说明:** context 由 Kernel 组装并通过事件传递,工具提供者对关键安全判断做独立验证:
303
+ - **owner 身份** — 工具提供者自行读取 agent 身份的 profile.md 中的 owners 列表,不依赖 context 传值
304
+ - **权限配置** — 工作区 config.json 中的 permissions 由 Kernel 合并,工具提供者可自行读取验证
305
+ - **会话信息** — channel、identity 等字段用于业务逻辑,工具提供者可按需校验
306
+
307
+ **权限检查规则:**
308
+ - 权限格式由工具/技能自定义(如文件工具用 `allowed_paths`/`denied_paths`,短信工具可能用 `allowed_numbers`)
309
+ - 整体默认值:owner 默认允许,非 owner 默认拒绝
310
+ - 跨级合并:deny wins
311
+ - 被拒绝时记录来源
312
+
313
+ **反提权保护:** 文件操作类工具(read_file、write_file 等)必须在 `check_permission` 中阻止非 owner 修改 config.json 中的 switches 和 permissions 字段,防止通过工具调用修改自身权限。
314
+
315
+ **权限修改流程:** 只有 owner 身份可以修改权限配置。owner 要求 agent 调整某工具/技能的权限时,agent 修改工作区 config.json 中对应的 permissions 字段。
316
+
317
+ ## 2.7 任务(Task)
318
+
319
+ 任务是系统中需要完成的工作单元。任务可以由以下方式创建:
320
+ - 外部 API 调用
321
+ - Agent 决策产生(如会话结束后需要跟进)
322
+ - 定时触发
323
+ - 手动创建
324
+
325
+ 任务属性:
326
+ - **任务 ID** — 唯一标识
327
+ - **类型** — 任务类型(自定义)
328
+ - **目标** — 任务要达成的目标
329
+ - **状态** — pending / in_progress / completed / failed
330
+ - **优先级** — 紧急程度
331
+ - **父任务** — 如果是后续任务,记录父任务 ID
332
+ - **创建者** — 谁创建的(Agent / API / 用户)
333
+ - **执行者** — 谁在执行(Agent 实例)
334
+
335
+ ## 2.8 工作模式
336
+
337
+ 系统支持两种工作模式(可按联系人或群配置):
338
+
339
+ **托管模式(Managed)** — AI 完全自主决策,收到事件后自动处理。
340
+
341
+ **授权模式(Authorized)** — 收到事件后,通过 webhook 请示外部系统或主人,等确认后再执行。
@@ -0,0 +1,257 @@
1
+ # 3. 系统架构
2
+
3
+ ## 3.1 进程模型
4
+
5
+ ```
6
+ main.py(Launcher 进程,有控制台,输出所有日志)
7
+
8
+ ├─① 检查遗留进程
9
+ │ → 读取持久化的子进程记录(进程名 + PID + 启动命令参数)
10
+ │ → 比对当前系统进程(不只看 PID,还要匹配进程名和启动命令参数)
11
+ │ → 确认是上次遗留的进程则杀死
12
+
13
+ ├─② 生成所有模块专属 token,启动 Kernel (kernel/)
14
+ │ → 通过 stdin 传入 boot_info token 和 tokens 映射表
15
+ │ → Kernel 分配端口 → 通过 stdout 回传端口
16
+ │ → Launcher 连接 Kernel WebSocket,订阅所有事件
17
+ │ → Launcher 通过 RPC 向 Kernel 注册自身
18
+
19
+ └─③ 扫描所有模块的 module.md,并行启动 config_state: enabled 的模块
20
+ → 通过 stdin 向每个模块传入 {"token": "..."} 和 kernel_port
21
+ → Model Service、Task System、Web Admin、各 Channel、各 Agent ...
22
+ → 每个模块自行: 连接 Kernel WS → 通过 RPC 注册 → 订阅事件 → 发布 module.ready
23
+ → manual 状态的模块不自动启动,等待手动或接口调用启动
24
+ → 持久化所有子进程信息(进程名 + PID + 启动命令参数)
25
+ ```
26
+
27
+ Launcher 只保证 Kernel 先就绪,其余模块并行启动。模块间的依赖通过 Kernel 的服务发现机制解决——模块启动后轮询或订阅等待所需服务上线。
28
+
29
+ **子进程监控与故障恢复:**
30
+
31
+ Launcher 监听子进程退出信号。所有子进程无控制台,日志统一输出到 Launcher 进程的控制台。
32
+
33
+ - **core 模块**(Kernel)退出 → Launcher 触发 Kite 整体重启:通知所有子进程优雅退出,超时强杀,然后重新启动所有模块
34
+ - **非 core 模块**退出 → 由保活模块(见 3.8)处理,通过 Launcher RPC 重启
35
+ - **多次重启仍失败** → 日志输出故障信息,Launcher 退出(整个 Kite 停止)
36
+
37
+ **优雅退出:** Launcher 收到退出信号(Ctrl+C / SIGTERM)时,向所有子进程发送退出通知,等待超时后强杀未退出的进程,清理持久化的进程记录,然后退出。
38
+
39
+ ## 3.2 启动器(Launcher)
40
+
41
+ Launcher 与 main.py 在同一进程中(Launcher 进程),是整个 Kite 系统的入口和控制台。职责:启停模块、监听子进程退出、遗留进程清理、优雅退出。Launcher 的健壮性要求最高,代码应极简,极小概率崩溃。
42
+
43
+ **模块三层状态模型:**
44
+
45
+ | 层 | 名称 | 值 | 谁写 | 存在哪 |
46
+ |----|------|---|------|--------|
47
+ | 配置状态 | `config_state` | enabled / manual / disabled | owner 修改 module.md | module.md |
48
+ | 期望状态 | `desired_state` | running / stopped | 其他模块通过 Launcher API 改变 | Launcher 内存 |
49
+ | 实际状态 | `actual_state` | running(PID) / stopped | Launcher 观测进程 | Launcher 内存 |
50
+
51
+ 初始化规则:
52
+ - enabled → desired_state 初始为 running
53
+ - manual → desired_state 初始为 stopped
54
+ - disabled → desired_state 固定为 stopped,不可改
55
+
56
+ Launcher 启动时扫描 `launcher/`、`kernel/` 和 `extensions/` 下所有模块目录,读取各自的 `module.md`,按 config_state 决定是否启动。core 模块(kernel)始终 enabled,不可禁用。
57
+
58
+ **Launcher RPC 方法(通过 Kernel 调用):**
59
+ ```
60
+ launcher.list_modules ← 查询所有模块及状态
61
+ launcher.start_module ← 启动模块(enabled 或 manual)
62
+ launcher.stop_module ← 停止模块
63
+ launcher.restart_module ← 重启模块
64
+ launcher.rescan ← 重新扫描模块
65
+ launcher.shutdown ← 关闭整个 Kite
66
+ ```
67
+
68
+ **模块间启停:** 任何模块都可以通过 Kernel RPC 调用 Launcher 方法来启动或停止其他模块。例如:某模块发现依赖的服务不在线,可调用 `launcher.start_module` 启动它。disabled 状态的模块无法被启动,必须先由 owner 修改 state。
69
+
70
+ **模块生命周期事件:**
71
+ - `module.starting` — 模块即将启动(Launcher 广播)
72
+ - `module.ready` — 模块服务就绪(模块发出,Launcher 据此判定启动成功)
73
+ - `module.started` — 模块启动成功(Launcher 收到 ready 后广播)
74
+ - `module.stopped` — 模块停止
75
+ - `module.state_changed` — 模块状态变更(含变更前后状态和操作者)
76
+
77
+ ## 3.3 内核(Kernel)
78
+
79
+ 独立进程,合并了注册中心(Registry)和事件中心(Event Hub)的功能,使用 WebSocket JSON-RPC 2.0 协议提供统一的服务注册、发现和事件路由能力。
80
+
81
+ **核心功能:**
82
+ - 服务注册与发现 — 所有模块的"电话簿"
83
+ - 事件路由 — 根据订阅关系转发事件
84
+ - 跨模块 RPC 转发 — 模块间通过 Kernel 调用彼此的 RPC 方法
85
+ - 能力索引 — 工具、Hook、事件的聚合查询
86
+ - 通用字段查询 — 支持 glob 通配符的灵活搜索
87
+
88
+ **模块认证:** 每个模块拥有独立的专属 token,由 Launcher 生成并通过 stdin 管道传递(内核级 IPC,只有父子进程可读写)。Launcher 启动 Kernel 时传入 tokens 映射表,模块连接 Kernel WebSocket 时带 `?token={token}&id={module_id}` 参数。泄露一个 token 不影响其他模块。
89
+
90
+ **WebSocket JSON-RPC 2.0 协议:**
91
+
92
+ 注册模块:
93
+ ```json
94
+ {
95
+ "jsonrpc": "2.0",
96
+ "id": "uuid",
97
+ "method": "registry.register",
98
+ "params": {
99
+ "module_id": "module_name",
100
+ "type": "service",
101
+ "capabilities": {...}
102
+ }
103
+ }
104
+ ```
105
+
106
+ 订阅事件:
107
+ ```json
108
+ {
109
+ "jsonrpc": "2.0",
110
+ "id": "uuid",
111
+ "method": "event.subscribe",
112
+ "params": {
113
+ "events": ["channel.message.*", "session.*"]
114
+ }
115
+ }
116
+ ```
117
+
118
+ 发布事件:
119
+ ```json
120
+ {
121
+ "jsonrpc": "2.0",
122
+ "id": "uuid",
123
+ "method": "event.publish",
124
+ "params": {
125
+ "event_id": "uuid",
126
+ "event": "module.ready",
127
+ "data": {...}
128
+ }
129
+ }
130
+ ```
131
+
132
+ 跨模块 RPC 调用:
133
+ ```json
134
+ {
135
+ "jsonrpc": "2.0",
136
+ "id": "uuid",
137
+ "method": "launcher.restart_module",
138
+ "params": {"module_name": "watchdog"}
139
+ }
140
+ ```
141
+
142
+ Kernel 自动转发到目标模块,返回结果或超时错误(默认 5s)。
143
+
144
+ **内置 RPC 方法:**
145
+ ```
146
+ registry.register ← 注册模块
147
+ registry.lookup ← 查询模块
148
+ registry.heartbeat ← 心跳续约
149
+ event.subscribe ← 订阅事件
150
+ event.unsubscribe ← 取消订阅
151
+ event.publish ← 发布事件
152
+ kernel.ping ← 心跳检测
153
+ kernel.stats ← 获取统计信息
154
+ ```
155
+
156
+ **HTTP 接口(仅用于调试):**
157
+ ```
158
+ GET /health ← Kernel 自身健康(无需 token)
159
+ GET /stats ← 统计信息(连接数、事件数等)
160
+ ```
161
+
162
+ **心跳与 TTL:** 模块注册后需定期心跳续约(默认每 30s),超过 TTL(默认 60s)未心跳则标记 offline,从索引中摘除但记录保留。主动注销(`registry.deregister`)立即清理记录。
163
+
164
+ **连接管理:** 模块断开 WebSocket 连接时,Kernel 自动标记为 offline 并发布 `module.offline` 事件。重连后需重新注册和订阅。
165
+
166
+ **事件去重:** Kernel 维护去重窗口(内存 set,保留最近 1 小时的 event_id),收到重复事件时跳过转发,直接返回成功响应。
167
+
168
+ **工具命名冲突:** 不阻止,如实记录。同名工具返回多个 provider,由调用方按优先级选择。冲突时记录警告日志。
169
+
170
+ ## 3.4 系统内核(Kernel)
171
+
172
+ 系统内核是框架的核心逻辑,以模块形式运行。
173
+
174
+ **核心功能:**
175
+ - 会话管理 — 创建、跟踪、结束会话
176
+ - Agent 调度 — 根据事件和会话状态启动 Agent
177
+ - 身份管理 — 管理代理、用户、联系人身份
178
+ - 权限控制 — 多级开关过滤 + 配置合并(权限检查由工具提供者自行执行,见 2.6 阶段三)
179
+ - 存储引擎 — 文件系统存储(JSONL + Markdown)
180
+ - 内部 API — 供其他模块调用的服务接口
181
+
182
+ **内置工具:**
183
+ - 文件操作(read_file, write_file, edit_file, list_files)
184
+ - 配置管理(get_config, set_config)
185
+ - 身份查询(get_identity, search_contacts)
186
+
187
+ ## 3.5 模型服务(Model Service)
188
+
189
+ 独立进程,提供大模型调用能力。
190
+
191
+ **核心功能:**
192
+ - LLM 调用 — 支持 OpenAI / Claude / Gemini 等多种 API
193
+ - 提示词管理 — 提示词模板和注入机制
194
+ - 工具调用 — Function Calling / Tool Use
195
+ - 流式输出 — 支持 SSE 流式响应
196
+ - 配置管理 — 模型端点、Key、参数配置
197
+
198
+ **注册到注册中心的配置:**
199
+ - LLM 端点和 Key
200
+ - 可用模型列表
201
+ - 默认参数(temperature, max_tokens 等)
202
+
203
+ ## 3.6 任务系统(Task System)
204
+
205
+ 独立进程,提供任务管理能力。
206
+
207
+ **核心功能:**
208
+ - 任务创建 — 接收任务创建请求
209
+ - 任务队列 — 管理待执行任务
210
+ - 任务分配 — 将任务分配给 Agent
211
+ - 任务跟踪 — 跟踪任务执行状态
212
+ - 任务查询 — 提供任务查询接口
213
+
214
+ **注册到注册中心的接口:**
215
+ ```
216
+ POST /tasks ← 创建任务
217
+ GET /tasks ← 查询任务列表
218
+ GET /tasks/{id} ← 查看任务详情
219
+ POST /tasks/{id}/claim ← 认领任务
220
+ POST /tasks/{id}/submit ← 提交任务结果
221
+ DELETE /tasks/{id} ← 删除任务
222
+ ```
223
+
224
+ **注册到注册中心的工具:**
225
+ - `create_task` — Agent 可调用创建任务
226
+ - `query_tasks` — 查询任务列表
227
+ - `get_task` — 获取任务详情
228
+
229
+ ## 3.7 保活模块(Watchdog)
230
+
231
+ 扩展模块(非 core),负责应用层健康监控。Launcher 处理进程级故障(子进程退出),Watchdog 处理应用级故障(进程活着但不健康)。
232
+
233
+ **核心功能:**
234
+ - 心跳检测 — 定期通过 Kernel RPC 调用各模块的 `{module_id}.health` 方法
235
+ - 资源监控 — 检测模块的 CPU / 内存 / 连接数等指标
236
+ - 非 core 模块重启 — 发现异常时通过 Kernel RPC 调用 `launcher.restart_module`
237
+ - 告警通知 — 模块持续异常时,通过可用的 Channel 通知 owner
238
+
239
+ **Watchdog 是可降级的扩展模块**,崩溃时由 Launcher 按普通模块处理(尝试重启),不触发 Kite 整体重启。Watchdog 不可用期间系统仍正常运行,仅失去应用层健康监控能力。
240
+
241
+ ## 3.8 事件可靠性
242
+
243
+ 模块发送事件到 Kernel 可能失败(Kernel 重启、网络抖动等)。为保证事件不丢失,所有模块应实现以下机制:
244
+
245
+ - **发送确认** — Kernel 收到事件后返回 JSON-RPC 响应
246
+ - **本地持久化** — 未收到响应的事件写入本地文件(`{module}/data/event_outbox.jsonl`)
247
+ - **自动重放** — 重连 Kernel 后,自动重发 outbox 中的未确认事件
248
+ - **重连与重新订阅** — 与 Kernel 的 WebSocket 断开后自动重连,重连后重新注册和订阅事件
249
+
250
+ **事件幂等性:** 自动重放可能导致事件重复(Kernel 已收到但响应丢失)。通过 `event_id` 去重解决:
251
+
252
+ - 模块为每个事件生成唯一 `event_id`(UUID),写入事件体
253
+ - Kernel 维护去重窗口(内存 set,保留最近 1 小时的 event_id)
254
+ - 收到事件时先查去重表,已存在则跳过转发,直接返回成功响应
255
+ - 重连后 outbox 重发的事件携带原始 event_id,Kernel 自动去重
256
+
257
+ 模块需自行实现事件可靠性机制(Kite 框架遵循零共享代码原则,不提供公共库)。