@agentunion/kite 1.5.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 (573) 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/cli.js +38 -4
  23. package/core/env_checker.py +96 -0
  24. 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
  25. package/docs/ACP/345/215/217/350/256/256/345/205/274/345/256/271/346/226/271/346/241/210.md +138 -0
  26. 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
  27. package/docs/CLI/345/274/200/345/217/221/350/256/241/345/210/222.md +595 -0
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. package/docs/Evol/346/250/241/345/235/227/350/256/276/350/256/241/346/226/271/346/241/210.md +1154 -0
  34. 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
  35. 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
  36. package/docs/HTTP-RPC/350/277/201/347/247/273/345/210/260WebSocket/350/256/241/345/210/222.md +318 -0
  37. package/docs/INDEX.md +388 -0
  38. package/docs/KITE_DOCS_GUIDE.md +33 -0
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. package/docs/Kite/346/241/206/346/236/266/350/256/276/350/256/241/README.md +46 -0
  56. package/docs/Kite/347/263/273/347/273/237/345/220/257/345/212/250/346/265/201/347/250/213.md +567 -0
  57. package/docs/Launcher/345/220/257/345/212/250/345/231/250/346/226/207/346/241/243.md +745 -0
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. package/docs/Watchdog/350/265/204/346/272/220/347/233/221/346/216/247/347/255/226/347/225/245.md +92 -0
  64. 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
  65. 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
  66. package/docs/WebSocket/350/277/236/346/216/245/351/237/247/346/200/247/346/226/271/346/241/210.md +169 -0
  67. 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
  68. 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
  69. 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
  70. package/docs/audit-api-guide.md +68 -0
  71. package/docs/audit-module-design.md +315 -0
  72. package/docs/audit-module-implementation-summary.md +149 -0
  73. package/docs/llm-context-design.md +52 -0
  74. package/docs/llm-test-enhancement-plan.md +970 -0
  75. package/docs/logs-api-guide.md +42 -0
  76. 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
  77. 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
  78. 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
  79. 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
  80. package/docs//344/272/213/344/273/266/345/244/204/347/220/206/346/234/272/345/210/266.md +388 -0
  81. package/docs//344/272/213/344/273/266/345/244/204/347/220/206/350/247/204/350/214/203.md +113 -0
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. package/docs//344/274/230/351/233/205/351/200/200/345/207/272/350/247/204/350/214/203.md +362 -0
  88. package/docs//344/276/235/350/265/226/347/256/241/347/220/206/350/257/264/346/230/216.md +141 -0
  89. 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
  90. package/docs//345/210/240/351/231/244kernel-client-example/345/256/214/346/210/220.md +309 -0
  91. package/docs//345/210/240/351/231/244ws-management/345/256/214/346/210/220.md +418 -0
  92. package/docs//345/220/257/345/212/250/344/274/230/345/214/226/346/226/271/346/241/210.md +522 -0
  93. 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
  94. 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
  95. 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
  96. package/docs//345/256/236/347/216/260/350/247/204/345/210/222.md +195 -0
  97. 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
  98. 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
  99. package/docs//346/217/241/346/211/213/350/256/244/350/257/201/346/226/271/346/241/210.md +908 -0
  100. package/docs//346/226/207/346/241/243/346/233/264/346/226/260/346/270/205/345/215/225.md +83 -0
  101. 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
  102. 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
  103. package/docs//346/236/266/346/236/204/345/200/237/351/211/264/346/214/207/345/215/227.md +977 -0
  104. 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
  105. 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
  106. 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
  107. 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
  108. package/docs//346/250/241/345/235/227/345/274/200/345/217/221/346/214/207/345/215/227.md +1824 -0
  109. package/docs//346/250/241/345/235/227/347/203/255/346/233/264/346/226/260.md +89 -0
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. package/docs//350/277/234/347/250/213/346/250/241/345/235/227/350/256/276/350/256/241.md +451 -0
  123. package/docs//351/207/215/346/236/204/346/234/272/345/210/266/346/270/205/345/215/225.md +192 -0
  124. package/docs//351/223/276/350/267/257/350/277/275/350/270/252/346/226/271/346/241/210.md +242 -0
  125. 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
  126. package/extensions/agents/assistant/entry.py +113 -14
  127. package/extensions/agents/assistant/module.md +27 -22
  128. package/extensions/agents/assistant/server.py +291 -105
  129. package/extensions/channels/acp_channel/entry.py +114 -16
  130. package/extensions/channels/acp_channel/module.md +4 -0
  131. package/extensions/channels/acp_channel/server.py +396 -105
  132. package/extensions/channels/phone_channel/__init__.py +1 -0
  133. package/extensions/channels/phone_channel/entry.py +503 -0
  134. package/extensions/channels/phone_channel/module.md +31 -0
  135. package/extensions/channels/phone_channel/server.py +686 -0
  136. package/extensions/event_hub_bench/entry.py +55 -12
  137. package/extensions/event_hub_bench/module.md +27 -27
  138. package/extensions/services/audit/README.md +134 -0
  139. package/extensions/services/audit/collector.py +73 -0
  140. package/extensions/services/audit/entry.py +444 -0
  141. package/extensions/services/audit/module.md +66 -0
  142. package/extensions/services/audit/query_audit.py +111 -0
  143. package/extensions/services/audit/routes/__init__.py +1 -0
  144. package/extensions/services/audit/routes/routes_audit.py +113 -0
  145. package/extensions/services/audit/schemas/__init__.py +5 -0
  146. package/extensions/services/audit/schemas/audit_event.py +92 -0
  147. package/extensions/services/audit/server.py +542 -0
  148. package/extensions/services/audit/storage.py +95 -0
  149. package/extensions/services/auth/entry.py +1054 -0
  150. package/extensions/services/auth/module.md +31 -0
  151. package/extensions/services/auth/token_store.py +185 -0
  152. package/extensions/services/auth/verifiers/evol_account.py +101 -0
  153. package/extensions/services/auth/verifiers/kite_token.py +38 -0
  154. package/extensions/services/auth/verifiers/pairing_code.py +71 -0
  155. package/extensions/services/backup/entry.py +494 -197
  156. package/extensions/services/backup/module.md +4 -2
  157. package/extensions/services/dataclaw/api/__init__.py +0 -0
  158. package/extensions/services/dataclaw/api/admin.py +367 -0
  159. package/extensions/services/dataclaw/api/copyright.py +175 -0
  160. package/extensions/services/dataclaw/api/credits.py +177 -0
  161. package/extensions/services/dataclaw/api/data.py +179 -0
  162. package/extensions/services/dataclaw/api/demands.py +269 -0
  163. package/extensions/services/dataclaw/api/feeds.py +262 -0
  164. package/extensions/services/dataclaw/api/identity.py +505 -0
  165. package/extensions/services/dataclaw/api/notifications.py +104 -0
  166. package/extensions/services/dataclaw/api/reviews.py +138 -0
  167. package/extensions/services/dataclaw/api/search.py +153 -0
  168. package/extensions/services/dataclaw/api/subscriptions.py +157 -0
  169. package/extensions/services/dataclaw/config.json5 +96 -0
  170. package/extensions/services/dataclaw/core/__init__.py +0 -0
  171. package/extensions/services/dataclaw/core/auth.py +95 -0
  172. package/extensions/services/dataclaw/core/config.py +50 -0
  173. package/extensions/services/dataclaw/core/database.py +70 -0
  174. package/extensions/services/dataclaw/entry.py +416 -0
  175. 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
  176. package/extensions/services/dataclaw/migrate.py +283 -0
  177. package/extensions/services/dataclaw/models/__init__.py +0 -0
  178. package/extensions/services/dataclaw/module.md +49 -0
  179. package/extensions/services/dataclaw/requirements.txt +18 -0
  180. package/extensions/services/dataclaw/server.py +759 -0
  181. package/extensions/services/dataclaw/services/__init__.py +0 -0
  182. package/extensions/services/dataclaw/services/agent_service.py +132 -0
  183. package/extensions/services/dataclaw/services/credit_service.py +235 -0
  184. package/extensions/services/dataclaw/services/email_service.py +140 -0
  185. package/extensions/services/dataclaw/services/feed_service.py +259 -0
  186. package/extensions/services/dataclaw/services/notification_service.py +209 -0
  187. package/extensions/services/dataclaw/services/oauth_service.py +275 -0
  188. package/extensions/services/dataclaw/services/pricing.py +102 -0
  189. package/extensions/services/dataclaw/services/quality.py +79 -0
  190. package/extensions/services/dataclaw/services/reputation.py +142 -0
  191. package/extensions/services/dataclaw/services/sms_service.py +174 -0
  192. package/extensions/services/dataclaw/static/css/common.css +853 -0
  193. package/extensions/services/dataclaw/static/css/themes/blue.css +42 -0
  194. package/extensions/services/dataclaw/static/css/themes/dark.css +42 -0
  195. package/extensions/services/dataclaw/static/css/themes/light.css +35 -0
  196. package/extensions/services/dataclaw/static/js/api.js +103 -0
  197. package/extensions/services/dataclaw/static/js/common.js +321 -0
  198. package/extensions/services/dataclaw/static/js/i18n.js +95 -0
  199. package/extensions/services/dataclaw/static/js/pages/admin.js +152 -0
  200. package/extensions/services/dataclaw/static/js/pages/dashboard.js +82 -0
  201. package/extensions/services/dataclaw/static/js/pages/feed-detail.js +180 -0
  202. package/extensions/services/dataclaw/static/js/pages/feed-manage.js +158 -0
  203. package/extensions/services/dataclaw/static/js/theme.js +46 -0
  204. package/extensions/services/dataclaw/static/locales/en-US.json +464 -0
  205. package/extensions/services/dataclaw/static/locales/ja-JP.json +464 -0
  206. package/extensions/services/dataclaw/static/locales/zh-CN.json +464 -0
  207. package/extensions/services/dataclaw/templates/admin/index.html +90 -0
  208. package/extensions/services/dataclaw/templates/base.html +136 -0
  209. package/extensions/services/dataclaw/templates/credits/balance.html +106 -0
  210. package/extensions/services/dataclaw/templates/credits/deposit.html +164 -0
  211. package/extensions/services/dataclaw/templates/credits/history.html +90 -0
  212. package/extensions/services/dataclaw/templates/dashboard.html +52 -0
  213. package/extensions/services/dataclaw/templates/demands/create.html +78 -0
  214. package/extensions/services/dataclaw/templates/demands/detail.html +136 -0
  215. package/extensions/services/dataclaw/templates/demands/list.html +94 -0
  216. package/extensions/services/dataclaw/templates/feeds/create.html +95 -0
  217. package/extensions/services/dataclaw/templates/feeds/detail.html +110 -0
  218. package/extensions/services/dataclaw/templates/feeds/list.html +110 -0
  219. package/extensions/services/dataclaw/templates/feeds/manage.html +88 -0
  220. package/extensions/services/dataclaw/templates/index.html +185 -0
  221. package/extensions/services/dataclaw/templates/login.html +246 -0
  222. package/extensions/services/dataclaw/templates/register.html +164 -0
  223. package/extensions/services/dataclaw/templates/settings/notifications.html +96 -0
  224. package/extensions/services/dataclaw/templates/settings/profile.html +167 -0
  225. package/extensions/services/dataclaw/templates/subscriptions/list.html +64 -0
  226. package/extensions/services/dataclaw/tests/__init__.py +0 -0
  227. package/extensions/services/dataclaw/tests/conftest.py +68 -0
  228. package/extensions/services/dataclaw/tests/integration/__init__.py +0 -0
  229. package/extensions/services/dataclaw/tests/integration/test_workflows.py +239 -0
  230. package/extensions/services/dataclaw/tests/unit/__init__.py +0 -0
  231. package/extensions/services/dataclaw/tests/unit/test_admin.py +70 -0
  232. package/extensions/services/dataclaw/tests/unit/test_copyright.py +63 -0
  233. package/extensions/services/dataclaw/tests/unit/test_credits.py +80 -0
  234. package/extensions/services/dataclaw/tests/unit/test_data.py +98 -0
  235. package/extensions/services/dataclaw/tests/unit/test_demands.py +106 -0
  236. package/extensions/services/dataclaw/tests/unit/test_feeds.py +98 -0
  237. package/extensions/services/dataclaw/tests/unit/test_identity.py +88 -0
  238. package/extensions/services/dataclaw/tests/unit/test_notifications.py +36 -0
  239. package/extensions/services/dataclaw/tests/unit/test_reviews.py +68 -0
  240. package/extensions/services/dataclaw/tests/unit/test_search.py +64 -0
  241. package/extensions/services/dataclaw/tests/unit/test_subscriptions.py +65 -0
  242. package/extensions/services/dataclaw/tests/unit/test_system.py +106 -0
  243. package/extensions/services/dataclaw/utils/__init__.py +0 -0
  244. package/extensions/services/dataclaw/utils/crypto.py +38 -0
  245. package/extensions/services/dataclaw/utils/id_generator.py +52 -0
  246. package/extensions/services/dataclaw/ws/__init__.py +0 -0
  247. package/extensions/services/dataclaw/ws/handler.py +163 -0
  248. 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
  249. 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
  250. package/extensions/services/evol/__init__.py +1 -0
  251. package/extensions/services/evol/async_http.py +551 -0
  252. package/extensions/services/evol/auth_manager.py +602 -443
  253. package/extensions/services/evol/config.json5 +16 -0
  254. package/extensions/services/evol/entry.py +568 -406
  255. package/extensions/services/evol/evol_api.py +969 -173
  256. package/extensions/services/evol/mfa_totp.py +77 -0
  257. package/extensions/services/evol/module.md +150 -32
  258. package/extensions/services/evol/nonce_pool.py +113 -0
  259. package/extensions/services/evol/oauth_manager.py +223 -0
  260. package/extensions/services/evol/pairing.py +3 -2
  261. package/extensions/services/evol/pairing_codes.jsonl +1 -0
  262. package/extensions/services/evol/relay.py +1031 -682
  263. package/extensions/services/evol/relay_config.json5 +85 -67
  264. package/extensions/services/evol/routes/routes_llm.py +231 -0
  265. package/extensions/services/evol/routes/routes_rpc.py +90 -89
  266. package/extensions/services/evol/routes/routes_test.py +11 -4
  267. package/extensions/services/evol/server.py +2426 -875
  268. package/extensions/services/evol/static/assets/CommissionView-Cs_ys6Gm.js +1 -0
  269. package/extensions/services/evol/static/assets/CommissionView-DACet_Oo.css +1 -0
  270. package/extensions/services/evol/static/assets/IframePage-DbO11U9G.js +1 -0
  271. package/extensions/services/evol/static/assets/IframePage-c572lT8i.css +1 -0
  272. package/extensions/services/evol/static/assets/TeamDetailView-DULrGD7k.css +1 -0
  273. package/extensions/services/evol/static/assets/TeamDetailView-gy_MBEqG.js +139 -0
  274. package/extensions/services/evol/static/assets/element-plus-Bd7pZkkM.js +63 -0
  275. package/extensions/services/evol/static/assets/index-CmMONKzG.css +1 -0
  276. package/extensions/services/evol/static/assets/index-D44bBe__.js +2 -0
  277. package/extensions/services/evol/static/assets/vue-vendor-DtF-__I4.js +29 -0
  278. package/extensions/services/evol/static/index.html +16 -781
  279. package/extensions/services/evol/static/logo.png +0 -0
  280. package/extensions/services/evol/stats_manager.py +243 -240
  281. package/extensions/services/evol/web/README.md +89 -0
  282. package/extensions/services/evol/web/build.bat +44 -0
  283. package/extensions/services/evol/web/index.html +13 -0
  284. package/extensions/services/evol/web/package-lock.json +1718 -0
  285. package/extensions/services/evol/web/package.json +26 -0
  286. package/extensions/services/evol/web/public/logo.png +0 -0
  287. package/extensions/services/evol/web/src/App.vue +7 -0
  288. package/extensions/services/evol/web/src/components/layout/AppHeader.vue +202 -0
  289. package/extensions/services/evol/web/src/components/layout/AppLayout.vue +61 -0
  290. package/extensions/services/evol/web/src/components/layout/AppSidebar.vue +115 -0
  291. package/extensions/services/evol/web/src/components/login/LoginPage.vue +271 -0
  292. package/extensions/services/evol/web/src/components/team/AddMemberModal.vue +181 -0
  293. package/extensions/services/evol/web/src/components/team/GroupTreeNode.vue +156 -0
  294. package/extensions/services/evol/web/src/components/team/TeamAlertConfig.vue +221 -0
  295. package/extensions/services/evol/web/src/components/team/TeamBillModal.vue +165 -0
  296. package/extensions/services/evol/web/src/components/team/TeamMembersAndGroups.vue +499 -0
  297. package/extensions/services/evol/web/src/components/team/TeamStatsPanel.vue +907 -0
  298. package/extensions/services/evol/web/src/components/team/TreeNode.vue +331 -0
  299. package/extensions/services/evol/web/src/components/team/stats/StatsExportProgress.vue +44 -0
  300. package/extensions/services/evol/web/src/components/team/stats/StatsHeader.vue +89 -0
  301. package/extensions/services/evol/web/src/components/team/stats/StatsMemberDetail.vue +415 -0
  302. package/extensions/services/evol/web/src/components/team/stats/StatsSummary.vue +42 -0
  303. package/extensions/services/evol/web/src/components/team/stats/helpers.ts +195 -0
  304. package/extensions/services/evol/web/src/components/team/stats/stats.css +741 -0
  305. package/extensions/services/evol/web/src/components/team/stats/useStatsApi.ts +114 -0
  306. package/extensions/services/evol/web/src/components/team/stats/useStatsCharts.ts +242 -0
  307. package/extensions/services/evol/web/src/components/team/stats/useStatsExport.ts +232 -0
  308. package/extensions/services/evol/web/src/composables/useFormatters.ts +42 -0
  309. package/extensions/services/evol/web/src/composables/useTheme.ts +52 -0
  310. package/extensions/services/evol/web/src/env.d.ts +7 -0
  311. package/extensions/services/evol/web/src/i18n/en.ts +361 -0
  312. package/extensions/services/evol/web/src/i18n/index.ts +36 -0
  313. package/extensions/services/evol/web/src/i18n/zh.ts +379 -0
  314. package/extensions/services/evol/web/src/main.ts +21 -0
  315. package/extensions/services/evol/web/src/router/index.ts +81 -0
  316. package/extensions/services/evol/web/src/services/kernel-client.ts +406 -0
  317. package/extensions/services/evol/web/src/stores/auth.ts +189 -0
  318. package/extensions/services/evol/web/src/stores/connection.ts +134 -0
  319. package/extensions/services/evol/web/src/stores/pages.ts +79 -0
  320. package/extensions/services/evol/web/src/styles/base.css +213 -0
  321. package/extensions/services/evol/web/src/styles/variables.css +138 -0
  322. package/extensions/services/evol/web/src/types/rpc.ts +35 -0
  323. package/extensions/services/evol/web/src/types/token.ts +87 -0
  324. package/extensions/services/evol/web/src/views/AccountView.vue +1532 -0
  325. package/extensions/services/evol/web/src/views/AiServiceView.vue +219 -0
  326. package/extensions/services/evol/web/src/views/CommissionView.vue +1220 -0
  327. package/extensions/services/evol/web/src/views/CreditsView.vue +131 -0
  328. package/extensions/services/evol/web/src/views/EndpointView.vue +163 -0
  329. package/extensions/services/evol/web/src/views/IframePage.vue +120 -0
  330. package/extensions/services/evol/web/src/views/TeamDetailView.vue +473 -0
  331. package/extensions/services/evol/web/src/views/TeamView.vue +332 -0
  332. package/extensions/services/evol/web/tsconfig.json +31 -0
  333. package/extensions/services/evol/web/tsconfig.node.json +10 -0
  334. package/extensions/services/evol/web/vite.config.ts +49 -0
  335. package/extensions/services/evolmem/__init__.py +0 -0
  336. package/extensions/services/evolmem/entry.py +387 -0
  337. package/extensions/services/evolmem/hooks/__init__.py +0 -0
  338. package/extensions/services/evolmem/hooks/assistant_stop.py +228 -0
  339. package/extensions/services/evolmem/hooks/common.py +76 -0
  340. package/extensions/services/evolmem/hooks/pre_tool_use.py +56 -0
  341. package/extensions/services/evolmem/hooks/session_end.py +133 -0
  342. package/extensions/services/evolmem/hooks/session_start.py +229 -0
  343. package/extensions/services/evolmem/hooks/user_prompt.py +122 -0
  344. package/extensions/services/evolmem/module.md +48 -0
  345. package/extensions/services/evolmem/prompts/00-server-info.md +28 -0
  346. package/extensions/services/evolmem/prompts/01-behavior.md +46 -0
  347. package/extensions/services/evolmem/prompts/02-summary-format.md +112 -0
  348. package/extensions/services/evolmem/prompts/03-file-query.md +92 -0
  349. package/extensions/services/evolmem/prompts/04-topic-stats.md +11 -0
  350. package/extensions/services/evolmem/prompts/05-recent-topics.md +84 -0
  351. package/extensions/services/evolmem/scripts/__init__.py +0 -0
  352. package/extensions/services/evolmem/scripts/extract_keywords.py +40 -0
  353. package/extensions/services/evolmem/scripts/search_topics.py +91 -0
  354. package/extensions/services/evolmem/server.py +641 -0
  355. package/extensions/services/gateway/entry.py +964 -0
  356. package/extensions/services/gateway/module.md +29 -0
  357. package/extensions/services/gateway/nonce_pool.py +65 -0
  358. package/extensions/services/gateway/relay.py +133 -0
  359. package/extensions/services/gateway/ws_server.py +285 -0
  360. package/extensions/services/kite_console/auth_manager.py +603 -0
  361. package/extensions/services/kite_console/config.json5 +19 -0
  362. package/extensions/services/kite_console/config_loader.py +117 -0
  363. package/extensions/services/kite_console/entry.py +528 -0
  364. package/extensions/services/kite_console/evol_api.py +179 -0
  365. package/extensions/services/kite_console/evol_config.json5 +29 -0
  366. package/extensions/services/kite_console/mfa_totp.py +77 -0
  367. package/extensions/services/kite_console/migrate_tokens.py +122 -0
  368. package/extensions/services/kite_console/module.md +37 -0
  369. package/extensions/services/kite_console/nonce_pool.py +113 -0
  370. package/extensions/services/kite_console/oauth_manager.py +223 -0
  371. package/extensions/services/kite_console/pairing.py +280 -0
  372. package/extensions/services/kite_console/pairing_codes.jsonl +2 -0
  373. package/extensions/services/kite_console/relay.py +1350 -0
  374. package/extensions/services/kite_console/relay_config.json5 +96 -0
  375. package/extensions/services/kite_console/routes/__init__.py +1 -0
  376. package/extensions/services/kite_console/routes/routes_llm.py +231 -0
  377. package/extensions/services/kite_console/routes/routes_proxy.py +115 -0
  378. package/extensions/services/kite_console/routes/routes_rpc.py +89 -0
  379. package/extensions/services/kite_console/routes/routes_test.py +68 -0
  380. package/extensions/services/kite_console/server.py +1742 -0
  381. package/extensions/services/{evol → kite_console}/static/css/style.css +656 -2
  382. package/extensions/services/kite_console/static/index.html +1524 -0
  383. package/extensions/services/{evol → kite_console}/static/js/dialog.js +11 -4
  384. package/extensions/services/kite_console/static/js/evol-app.js +7740 -0
  385. package/extensions/services/{evol/static/js/evol-app.js → kite_console/static/js/evol-app.js.backup} +2777 -1949
  386. package/extensions/services/kite_console/static/js/kernel-client.js +560 -0
  387. package/extensions/services/{evol/static/js/kernel-client.js → kite_console/static/js/kernel-client.js.backup} +41 -3
  388. package/extensions/services/{evol → kite_console}/static/js/registry-tests.js +7 -0
  389. package/extensions/services/kite_console/static/js/tests/ARCHITECTURE.md +67 -0
  390. package/extensions/services/kite_console/static/js/tests/README.md +140 -0
  391. package/extensions/services/kite_console/static/js/tests/index.js +161 -0
  392. package/extensions/services/kite_console/static/js/tests/integration/auth.js +120 -0
  393. package/extensions/services/kite_console/static/js/tests/integration/channel-interaction.js +188 -0
  394. package/extensions/services/kite_console/static/js/tests/integration/elastic-connection.js +115 -0
  395. package/extensions/services/kite_console/static/js/tests/integration/full-workflow.js +43 -0
  396. package/extensions/services/kite_console/static/js/tests/integration/multi-instance.js +304 -0
  397. package/extensions/services/kite_console/static/js/tests/integration/nested-rpc.js +266 -0
  398. package/extensions/services/kite_console/static/js/tests/integration/pingpong.js +25 -0
  399. package/extensions/services/kite_console/static/js/tests/integration/redis.js +227 -0
  400. package/extensions/services/kite_console/static/js/tests/integration/registry-core.js +52 -0
  401. package/extensions/services/kite_console/static/js/tests/integration/remote-deploy.js +85 -0
  402. package/extensions/services/kite_console/static/js/tests/integration/require-init.js +96 -0
  403. package/extensions/services/kite_console/static/js/tests/integration/scaling-control.js +193 -0
  404. package/extensions/services/kite_console/static/js/tests/integration/trace.js +109 -0
  405. package/extensions/services/kite_console/static/js/tests/modules/acp_channel.js +339 -0
  406. package/extensions/services/kite_console/static/js/tests/modules/auth.js +96 -0
  407. package/extensions/services/kite_console/static/js/tests/modules/backup.js +49 -0
  408. package/extensions/services/kite_console/static/js/tests/modules/gateway.js +41 -0
  409. package/extensions/services/kite_console/static/js/tests/modules/kernel.js +90 -0
  410. package/extensions/services/kite_console/static/js/tests/modules/launcher.js +75 -0
  411. package/extensions/services/kite_console/static/js/tests/modules/multi_instance.js +129 -0
  412. package/extensions/services/kite_console/static/js/tests/modules/phone_channel.js +364 -0
  413. package/extensions/services/kite_console/static/js/tests/modules/redis.js +178 -0
  414. package/extensions/services/kite_console/static/js/tests/modules/watchdog.js +60 -0
  415. package/extensions/services/kite_console/static/js/tests/modules/web.js +70 -0
  416. package/extensions/services/kite_console/static/js/tests/test-runner.js +123 -0
  417. package/extensions/services/kite_console/static/js/virtual-list.js +200 -0
  418. package/extensions/services/kite_console/static/test_kernel_client_token.html +352 -0
  419. package/extensions/services/kite_console/stats_manager.py +247 -0
  420. package/extensions/services/logs/README.md +215 -0
  421. package/extensions/services/logs/api_logger.py +37 -0
  422. package/extensions/services/logs/baseline.py +121 -0
  423. package/extensions/services/logs/cleaner.py +76 -0
  424. package/extensions/services/logs/entry.py +449 -0
  425. package/extensions/services/logs/formatter.py +129 -0
  426. package/extensions/services/logs/module.md +38 -0
  427. package/extensions/services/logs/quick_diagnostic.py +128 -0
  428. package/extensions/services/logs/routes/__init__.py +1 -0
  429. package/extensions/services/logs/routes/routes_logs.py +218 -0
  430. package/extensions/services/logs/routes/routes_logs.py.backup +173 -0
  431. package/extensions/services/logs/scanner.py +100 -0
  432. package/extensions/services/logs/searcher.py +263 -0
  433. package/extensions/services/logs/server.py +553 -0
  434. package/extensions/services/logs.zip +0 -0
  435. package/extensions/services/model_service/config.json5 +30 -0
  436. package/extensions/services/model_service/entry.py +620 -171
  437. package/extensions/services/model_service/module.md +11 -2
  438. package/extensions/services/proxy/__init__.py +0 -0
  439. package/extensions/services/proxy/aid_manager.py +419 -0
  440. package/extensions/services/proxy/auth_bridge.py +182 -0
  441. package/extensions/services/proxy/config_store.py +79 -0
  442. package/extensions/services/proxy/entry.py +528 -0
  443. package/extensions/services/proxy/evol/presenter/agentIdPresenter.py +2 -2
  444. package/extensions/services/proxy/evol/presenter/apikeyPresenter.py +18 -28
  445. package/extensions/services/proxy/evol/presenter/configPresenter.py +80 -1127
  446. package/extensions/services/proxy/evol/presenter/userPresenter.py +71 -477
  447. package/extensions/services/proxy/evol/server/claude_proxy_async.py +11 -7
  448. package/extensions/services/proxy/module.md +151 -0
  449. package/extensions/services/proxy/server.py +952 -271
  450. package/extensions/services/redis/ALIGNMENT_CHECKLIST.md +121 -0
  451. package/extensions/services/redis/ALIGNMENT_STATUS.md +548 -0
  452. package/extensions/services/redis/config.json5 +8 -0
  453. package/extensions/services/redis/entry.py +1509 -0
  454. package/extensions/services/redis/entry.py.backup +405 -0
  455. package/extensions/services/redis/module.md +48 -0
  456. package/extensions/services/redis/redis_builtin.py +332 -0
  457. package/extensions/services/redis/redis_external.py +164 -0
  458. package/extensions/services/testUi/entry.py +446 -0
  459. package/extensions/services/testUi/module.md +18 -0
  460. package/extensions/services/testUi/ui/cards.html +131 -0
  461. package/extensions/services/testUi/ui/index.html +22 -0
  462. package/extensions/services/testUi/ui/particles.html +143 -0
  463. package/extensions/services/watchdog/entry.py +1258 -793
  464. package/extensions/services/watchdog/module.md +2 -0
  465. package/extensions/services/watchdog/monitor.py +465 -87
  466. package/extensions/services/web/auth_manager.py +602 -0
  467. package/extensions/services/web/config.json5 +11 -0
  468. package/extensions/services/web/entry.py +598 -478
  469. package/extensions/services/web/mfa_totp.py +77 -0
  470. package/extensions/services/web/module.md +16 -13
  471. package/extensions/services/web/nonce_pool.py +113 -0
  472. package/extensions/services/web/oauth_manager.py +223 -0
  473. package/extensions/services/web/pairing.py +3 -2
  474. package/extensions/services/web/pairing_codes.jsonl +1 -0
  475. package/extensions/services/web/relay.py +442 -63
  476. package/extensions/services/web/relay_config.json5 +1 -2
  477. package/extensions/services/web/routes/routes_rpc.py +6 -6
  478. package/extensions/services/web/server.py +360 -173
  479. package/extensions/services/web/static/index.html +1752 -1738
  480. package/extensions/services/web/static/js/app.js +32 -0
  481. package/extensions/services/web/static/js/kernel-client.js +48 -9
  482. package/extensions/services/web/vendor/bluetooth/audio.py +1 -1
  483. package/extensions/services/web/vendor/config.py +2 -2
  484. package/extensions/services/web/vendor/storage/identity.py +1 -1
  485. package/kernel/entry.py +77 -23
  486. package/kernel/event_hub.py +1122 -74
  487. package/kernel/module.md +2 -1
  488. package/kernel/registry_store.py +208 -11
  489. package/kernel/rpc_router.py +1400 -491
  490. package/kernel/server.py +1021 -134
  491. package/kite_cli/builders/__init__.py +4 -0
  492. package/kite_cli/builders/base.py +67 -0
  493. package/kite_cli/builders/custom.py +31 -0
  494. package/kite_cli/builders/detector.py +56 -0
  495. package/kite_cli/builders/go.py +34 -0
  496. package/kite_cli/builders/gradle.py +41 -0
  497. package/kite_cli/builders/maven.py +36 -0
  498. package/kite_cli/builders/npm.py +44 -0
  499. package/kite_cli/builders/python.py +37 -0
  500. package/kite_cli/commands/BUILD_GUIDE.md +109 -0
  501. package/kite_cli/commands/build.py +142 -0
  502. package/kite_cli/commands/check.py +60 -0
  503. package/kite_cli/commands/config.py +156 -0
  504. package/kite_cli/commands/deps.py +58 -0
  505. package/kite_cli/commands/deps_install.py +7 -7
  506. package/kite_cli/commands/disable.py +162 -0
  507. package/kite_cli/commands/enable.py +162 -0
  508. package/kite_cli/commands/export.py +96 -0
  509. package/kite_cli/commands/import_cmd.py +110 -0
  510. package/kite_cli/commands/install.py +50 -23
  511. package/kite_cli/commands/install_skill.py +107 -0
  512. package/kite_cli/commands/list.py +128 -31
  513. package/kite_cli/commands/outdated.py +202 -0
  514. package/kite_cli/commands/search.py +33 -17
  515. package/kite_cli/commands/update.py +115 -2
  516. package/kite_cli/commands/venv_setup.py +6 -6
  517. package/kite_cli/commands/why.py +48 -0
  518. package/kite_cli/core/config_manager.py +145 -0
  519. package/kite_cli/core/downloader.py +32 -2
  520. package/kite_cli/main.py +151 -5
  521. package/kite_cli/utils/colors.py +153 -0
  522. package/kite_cli/utils/dependency_graph.py +209 -0
  523. package/kite_cli/utils/process.py +55 -0
  524. package/kite_cli/utils/progress.py +207 -0
  525. package/kite_cli/utils/table.py +101 -0
  526. package/launcher/count_lines.py +192 -43
  527. package/launcher/entry.py +4543 -2802
  528. package/launcher/logging_setup.py +54 -1
  529. package/launcher/module.md +32 -6
  530. package/launcher/module_scanner.py +93 -20
  531. package/launcher/process_manager.py +355 -76
  532. package/main.py +6 -0
  533. package/package.json +4 -1
  534. package/requirements.txt +41 -38
  535. package/scripts/auto-fix-deps.py +128 -0
  536. package/scripts/env-manager.js +25 -2
  537. package/scripts/final-test.js +78 -0
  538. package/scripts/setup-python-env.js +700 -191
  539. package/scripts/test-alluser.js +48 -0
  540. package/scripts/test-different-version.js +86 -0
  541. package/scripts/test-direct.js +63 -0
  542. package/scripts/test-extract-installer.js +28 -0
  543. package/scripts/test-install-log.js +54 -0
  544. package/scripts/test-installer.js +39 -0
  545. package/scripts/test-integration.js +250 -0
  546. package/scripts/test-real-install.js +210 -0
  547. package/scripts/test-targetdir.js +49 -0
  548. package/scripts/test-venv-real.js +47 -0
  549. package/scripts/test-venv-simple.js +57 -0
  550. package/scripts/test-wait.js +49 -0
  551. package/scripts/test-with-log.js +63 -0
  552. package/extensions/services/evol/config.yaml +0 -149
  553. package/extensions/services/evol/routes/routes_management_ws.py +0 -127
  554. package/extensions/services/evol/static/index_evol.html +0 -14
  555. package/extensions/services/evol/static/js/app.js +0 -6304
  556. package/extensions/services/evol/static/js/auth.js +0 -326
  557. package/extensions/services/evol/static/js/evol-app-fixed.js +0 -50
  558. package/extensions/services/evol/static/js/evol-app.js.bak +0 -1800
  559. package/extensions/services/evol/static/js/kernel-client-example.js +0 -228
  560. package/extensions/services/evol/static/js/main.js +0 -141
  561. package/extensions/services/evol/static/js/stats.js +0 -217
  562. package/extensions/services/evol/static/js/token-manager.js +0 -175
  563. package/extensions/services/proxy/CHANGELOG_20260308.md +0 -258
  564. package/extensions/services/proxy/_fix_prints.py +0 -133
  565. package/extensions/services/proxy/_fix_prints2.py +0 -87
  566. package/extensions/services/proxy/console_auth.py +0 -109
  567. package/extensions/services/proxy/logs/websocket.log +0 -260
  568. package/extensions/services/proxy/main.py +0 -240
  569. package/extensions/services/proxy/requirements.txt +0 -13
  570. package/extensions/services/web/config.yaml +0 -149
  571. /package/extensions/services/{evol → kite_console}/static/pairing.html +0 -0
  572. /package/extensions/services/{evol → kite_console}/static/test_registry.html +0 -0
  573. /package/extensions/services/{evol → kite_console}/static/test_relay.html +0 -0
@@ -0,0 +1,451 @@
1
+ # 远程模块(Remote Module)设计
2
+
3
+ ## 1. 概述
4
+
5
+ 远程模块功能允许一个 Kite 实例(**卫星 Kite**)通过网络接入另一个 Kite 实例(**中心 Kite**),双方的模块可以互相发现、互相调用工具、互相收发事件,如同在同一台机器上运行。
6
+
7
+ **核心场景:** 用户在本地运行中心 Kite,在其他机器或其他目录运行卫星 Kite。在中心 Web 管理后台生成配对串,粘贴到卫星 Web 管理后台,即完成接入。
8
+
9
+ **卫星无需公网 IP。** 卫星主动向中心发起 WebSocket 出站连接,连接建立后双向通信。只要中心 Kite 的 Bridge Server 端口对卫星可达即可(公网、LAN、内网穿透均可)。支持跨域、跨 NAT。
10
+
11
+ ## 2. 架构变化
12
+
13
+ ### 2.1 改造前架构
14
+
15
+ 旧架构有独立的 Registry 和 Event Hub 模块,模块间通过 HTTP REST 通信。
16
+
17
+ ### 2.2 改造后架构(当前)
18
+
19
+ Registry 和 Event Hub 已合并为 Kernel 模块,所有内部通信改为 WebSocket JSON-RPC 2.0。
20
+
21
+ **当前单机架构:**
22
+
23
+ ```
24
+ Launcher → Kernel (127.0.0.1, WS RPC)
25
+ ├─ 模块 A → Kernel (WS RPC)
26
+ ├─ 模块 B → Kernel (WS RPC)
27
+ └─ Web → Kernel (WS RPC)
28
+ ```
29
+
30
+ **远程模块架构:**
31
+
32
+ ```
33
+ 中心 Kite:
34
+ Launcher → Kernel
35
+ ├─ 本地模块 → Kernel (WS RPC)
36
+ ├─ Web → Kernel (WS RPC)
37
+ └─ Bridge Server → Kernel (WS RPC)
38
+
39
+ 卫星 Kite:
40
+ Launcher → Kernel
41
+ ├─ 远程模块 → Kernel (WS RPC)
42
+ ├─ Web → Kernel (WS RPC)
43
+ └─ Bridge Client → Kernel (WS RPC)
44
+
45
+ Bridge Server ←→ Bridge Client (WSS 隧道)
46
+ ```
47
+
48
+ ### 2.3 核心变化
49
+
50
+ | 方面 | 旧架构 | 新架构 |
51
+ |------|--------|--------|
52
+ | 核心服务 | Registry + Event Hub | Kernel(合并) |
53
+ | 内部通信 | HTTP REST | WebSocket JSON-RPC 2.0 |
54
+ | 模块注册 | HTTP POST /modules | RPC registry.register |
55
+ | 事件订阅 | WebSocket 自定义协议 | RPC event.subscribe |
56
+ | 工具调用 | HTTP POST /tools/{name} | RPC {module}.{tool} |
57
+ | 模块管理 | HTTP POST /launcher/modules/{name}/start | RPC launcher.start_module |
58
+
59
+ ## 3. Bridge Server(中心侧)
60
+
61
+ ### 3.1 职责
62
+
63
+ 1. 接受卫星 WSS 连接(固定端口 28766)
64
+ 2. 认证配对码和 session_token
65
+ 3. 代理卫星模块注册到中心 Kernel(RPC registry.register)
66
+ 4. 代理中心模块注册到卫星 Kernel(通过隧道)
67
+ 5. 双向转发事件(RPC event.publish)
68
+ 6. 代理工具调用(RPC 转发)
69
+ 7. 远程管理卫星模块(RPC launcher.*)
70
+
71
+ ### 3.2 与 Kernel 的交互
72
+
73
+ Bridge Server 作为普通模块连接 Kernel WS:
74
+
75
+ ```
76
+ Bridge Server 启动
77
+
78
+ 连接 Kernel WS (127.0.0.1:动态端口)
79
+
80
+ RPC registry.register (注册自身)
81
+
82
+ RPC event.subscribe (订阅 module.*)
83
+
84
+ 监听卫星连接 (0.0.0.0:28766)
85
+ ```
86
+
87
+ **代理卫星模块注册:**
88
+ ```
89
+ 收到卫星 registry.register
90
+
91
+ 改写 module_id: "assistant" → "office@assistant"
92
+
93
+ RPC registry.register 到中心 Kernel
94
+ ```
95
+
96
+ **代理中心模块到卫星:**
97
+ ```
98
+ 监听 Kernel 事件: module.started
99
+
100
+ RPC registry.lookup 获取模块信息
101
+
102
+ 通过隧道发送给 Bridge Client
103
+
104
+ Bridge Client RPC registry.register 到卫星 Kernel
105
+ ```
106
+
107
+ ### 3.3 与 Web 模块的交互
108
+
109
+ 通过 Kernel RPC 通信:
110
+
111
+ | RPC 方法 | 说明 |
112
+ |----------|------|
113
+ | bridge.generate_pairing | 生成配对码 |
114
+ | bridge.list_satellites | 列出卫星 |
115
+ | bridge.disconnect_satellite | 断开卫星 |
116
+ | web.validate_session_token | 验证 token(Web 提供) |
117
+ | web.report_bridge_stats | 上报统计(Web 接收) |
118
+
119
+ ## 4. Bridge Client(卫星侧)
120
+
121
+ ### 4.1 职责
122
+
123
+ 1. 连接中心 Bridge Server(WSS 出站)
124
+ 2. 同步本地模块到中心(上行)
125
+ 3. 同步中心模块到本地(下行)
126
+ 4. 双向转发事件
127
+ 5. 代理工具调用
128
+ 6. 接收远程管理指令
129
+
130
+ ### 4.2 与 Kernel 的交互
131
+
132
+ ```
133
+ Bridge Client 启动
134
+
135
+ 连接本地 Kernel WS
136
+
137
+ RPC registry.register (注册自身)
138
+
139
+ RPC event.subscribe (订阅 module.*)
140
+
141
+ 连接中心 Bridge Server (WSS)
142
+
143
+ 双向同步开始
144
+ ```
145
+
146
+ **上行同步(本地 → 中心):**
147
+ ```
148
+ RPC registry.lookup (获取本地模块列表)
149
+
150
+ 过滤(排除 kernel, launcher, bridge_*, watchdog, web)
151
+
152
+ 通过隧道发送给 Bridge Server
153
+
154
+ Bridge Server 代理注册到中心 Kernel
155
+ ```
156
+
157
+ **下行同步(中心 → 本地):**
158
+ ```
159
+ 收到隧道消息: registry.register
160
+
161
+ 改写 module_id: "model_service" → "main@model_service"
162
+
163
+ RPC registry.register 到本地 Kernel
164
+ ```
165
+
166
+ ## 5. 隧道协议
167
+
168
+ 单条 WebSocket 承载 5 种通道,消息格式:
169
+
170
+ ```json
171
+ {
172
+ "id": "msg-uuid",
173
+ "ch": "registry | event | proxy | control | manage",
174
+ "action": "具体动作",
175
+ "data": {...}
176
+ }
177
+ ```
178
+
179
+ ### 5.1 Registry 通道
180
+
181
+ 双向同步模块注册信息。
182
+
183
+ **卫星 → 中心:**
184
+ - `register` — 注册卫星模块
185
+ - `heartbeat` — 心跳
186
+ - `deregister` — 注销
187
+
188
+ **中心 → 卫星:**
189
+ - `register` — 注册中心模块
190
+ - `heartbeat` — 心跳
191
+ - `deregister` — 注销
192
+
193
+ ### 5.2 Event 通道
194
+
195
+ 双向转发 Kernel 事件。
196
+
197
+ - `publish` — 转发事件
198
+ - `subscribe` — 订阅同步
199
+ - `unsubscribe` — 取消订阅
200
+
201
+ ### 5.3 Proxy 通道
202
+
203
+ 双向代理 RPC 调用。
204
+
205
+ **请求:**
206
+ ```json
207
+ {
208
+ "id": "msg-100",
209
+ "ch": "proxy",
210
+ "action": "request",
211
+ "data": {
212
+ "target_module": "assistant",
213
+ "method": "search_web",
214
+ "params": {"query": "kite"}
215
+ }
216
+ }
217
+ ```
218
+
219
+ **响应:**
220
+ ```json
221
+ {
222
+ "id": "msg-100",
223
+ "ch": "proxy",
224
+ "action": "response",
225
+ "data": {"result": "..."}
226
+ }
227
+ ```
228
+
229
+ ### 5.4 Control 通道
230
+
231
+ - `ping` / `pong` — 心跳保活
232
+ - `status` — 状态上报
233
+ - `disconnect` — 主动断开
234
+
235
+ ### 5.5 Manage 通道
236
+
237
+ 中心远程管理卫星模块。
238
+
239
+ - `module_start` — 启动模块
240
+ - `module_stop` — 停止模块
241
+ - `list_modules` — 列出模块
242
+ - `module_set_state` — 修改状态
243
+
244
+ ## 6. 配对流程
245
+
246
+ ```
247
+ 用户在中心 Web UI 点击「生成配对码」
248
+
249
+ Web → Bridge Server: RPC bridge.generate_pairing
250
+
251
+ 返回配对串: kite://192.168.1.1:28766/a3f8x9k2
252
+
253
+ 用户复制粘贴到卫星 Web UI
254
+
255
+ 卫星 Web → Bridge Client: 通过 Kernel 事件传递配对信息
256
+
257
+ Bridge Client 连接中心 (WSS + 配对码)
258
+
259
+ Bridge Server 验证 → 生成 session_token
260
+
261
+ 返回 bridge.welcome (含 session_token)
262
+
263
+ Bridge Client 持久化 session_token
264
+
265
+ 后续自动重连使用 session_token
266
+ ```
267
+
268
+ ## 7. 命名空间
269
+
270
+ ### 7.1 FQMN 格式
271
+
272
+ ```
273
+ {node_name}@{module_id}
274
+
275
+ 示例:
276
+ office@assistant — 卫星 office 的 assistant 模块
277
+ main@kernel — 中心的 kernel 模块
278
+ kernel — 本地简写(等价于 main@kernel)
279
+ ```
280
+
281
+ ### 7.2 解析规则
282
+
283
+ ```python
284
+ def parse_fqmn(name: str) -> tuple[str, str]:
285
+ if "@" in name:
286
+ return name.split("@", 1)
287
+ return ("main", name)
288
+ ```
289
+
290
+ ### 7.3 Kernel 路径
291
+
292
+ ```
293
+ office@assistant.tools.search_web
294
+ └─ node ─┘└ module ┘└ 字段路径 ─┘
295
+ ```
296
+
297
+ ## 8. 工具调用
298
+
299
+ ### 8.1 直连 vs 代理
300
+
301
+ | 模式 | 说明 | 使用条件 |
302
+ |------|------|---------|
303
+ | 直连 | 调用方直接 RPC 对端模块 | 网络可达 |
304
+ | 代理 | RPC 通过 Bridge 隧道转发 | 直连不通时降级 |
305
+
306
+ ### 8.2 探测机制
307
+
308
+ 隧道建立后,双方交换模块信息并探测可达性:
309
+
310
+ ```
311
+ Bridge Server 收到卫星模块列表
312
+
313
+ 逐个探测: RPC {module_id}.health (超时 3s)
314
+
315
+ 成功 → 标记 direct
316
+ 失败 → 标记 proxy
317
+
318
+ 注册到 Kernel 时携带模式标记
319
+ ```
320
+
321
+ ### 8.3 调用流程
322
+
323
+ **直连模式:**
324
+ ```
325
+ 中心 Agent → Kernel: RPC registry.lookup(tools.search_web)
326
+
327
+ 返回: module="office@assistant" (direct)
328
+
329
+ Agent → 卫星模块: RPC assistant.search_web
330
+ ```
331
+
332
+ **代理模式:**
333
+ ```
334
+ 中心 Agent → Kernel: RPC registry.lookup(tools.search_web)
335
+
336
+ 返回: module="office@assistant" (proxy)
337
+
338
+ Agent → Bridge Server: RPC office@assistant.search_web
339
+
340
+ Bridge Server → Bridge Client: 隧道 proxy.request
341
+
342
+ Bridge Client → 卫星模块: RPC assistant.search_web
343
+
344
+ 原路返回
345
+ ```
346
+
347
+ ## 9. 断线与恢复
348
+
349
+ ### 9.1 断线处理
350
+
351
+ **中心侧:**
352
+ 1. 从 Kernel 注销所有 `{node_name}@*` 模块(RPC registry.deregister)
353
+ 2. 清理事件订阅
354
+ 3. 保留 session_token
355
+ 4. 记录审计日志
356
+
357
+ **卫星侧:**
358
+ 1. 从 Kernel 注销所有 `main@*` 模块
359
+ 2. 清理事件订阅
360
+ 3. 指数退避重连(1s → 2s → 4s → ... → 60s)
361
+ 4. 本地模块继续运行
362
+
363
+ ### 9.2 重连恢复
364
+
365
+ ```
366
+ 重连成功
367
+
368
+ Bridge Server 发送 bridge.welcome (含中心模块列表)
369
+
370
+ Bridge Client 全量同步本地模块
371
+
372
+ Bridge Server 全量同步中心模块
373
+
374
+ 双方重新建立事件订阅
375
+
376
+ Bridge Client 重放缓存事件
377
+ ```
378
+
379
+ ## 10. 改造清单
380
+
381
+ ### 10.1 Kernel 改动
382
+
383
+ **文件:** `kernel/rpc_router.py`
384
+
385
+ **改动:** 新增 `bridge` 角色,允许 Bridge Server 代理注册任意 module_id(约 15 行)
386
+
387
+ ### 10.2 新增模块
388
+
389
+ **Bridge Server:** `extensions/services/bridge_server/`
390
+ - `module.md` — 模块定义
391
+ - `entry.py` — 启动入口
392
+ - `bridge.py` — 隧道协议
393
+ - `proxy.py` — RPC 代理
394
+ - `probe.py` — 直连探测
395
+ - `audit.py` — 审计日志
396
+
397
+ **Bridge Client:** `extensions/services/bridge_client/`
398
+ - `module.md` — 模块定义
399
+ - `entry.py` — 启动入口
400
+ - `bridge.py` — 隧道协议
401
+ - `proxy.py` — RPC 代理
402
+ - `probe.py` — 直连探测
403
+
404
+ ### 10.3 Web 模块改动
405
+
406
+ **中心 Web UI:**
407
+ - 配对码生成界面
408
+ - 卫星列表管理
409
+ - 统计仪表盘
410
+ - 审计日志查看
411
+
412
+ **卫星 Web UI:**
413
+ - 配对串输入框
414
+ - 连接状态显示
415
+
416
+ ## 11. 实现分阶段
417
+
418
+ ### Phase 1: 隧道 + 单向调用(MVP)
419
+
420
+ - Kernel 新增 bridge 角色
421
+ - Bridge Server/Client 骨架(WSS、SSL)
422
+ - 隧道协议(registry + control 通道)
423
+ - 配对流程
424
+ - FQMN 命名
425
+ - 单向同步(卫星 → 中心)
426
+ - 工具调用(中心 → 卫星)
427
+ - 事件环路防护
428
+ - 启动时清理残留
429
+
430
+ ### Phase 2: 双向互通
431
+
432
+ - 双向同步(中心 → 卫星)
433
+ - 双向工具调用
434
+ - 双向事件转发
435
+ - 断线重连 + outbox
436
+ - 周期探测
437
+ - 默认优先级(本地优先)
438
+
439
+ ### Phase 3: 远程管理 + 统计
440
+
441
+ - Manage 通道
442
+ - 统计数据收集
443
+ - 审计日志
444
+ - Web UI 管理页面
445
+
446
+ ### Phase 4: 增强
447
+
448
+ - 可配置优先级
449
+ - 健康监控
450
+ - 权限 ACL
451
+ - 事件限流
@@ -0,0 +1,192 @@
1
+ # 重构机制清单
2
+
3
+ > 对照 `stdio与端口发现重构.md`,列出代码需要实现的 14 个机制。
4
+
5
+ ---
6
+
7
+ ## 机制 1:启动序列重排
8
+
9
+ Launcher 启动序列分为四个 Phase:
10
+
11
+ - **Phase 1(引导)**:启动 Registry 子进程 → 通过 stdout 获取端口 → 写入 `KITE_REGISTRY_PORT` 环境变量 → 启动 Launcher API → 注册自身 + 注册模块 token
12
+ - **Phase 2(启动 Event Hub)**:单独启动 Event Hub → stdin 发送 `launcher_ws_token` → stdout 获取 `ws_endpoint` → Launcher 连接 WebSocket → Event Hub 发送 module.ready → Launcher 发布 module.started → 断开 Event Hub stdio
13
+ - **Phase 3(Registry 延迟就绪)**:Event Hub 注册到 Registry → Registry 检测到 `metadata.ws_endpoint` → Registry 连接 Event Hub WebSocket → Registry 发送 module.ready → Launcher 发布 module.started → 断开 Registry stdio
14
+ - **Phase 4(启动其余模块)**:按拓扑序启动所有 enabled 模块
15
+
16
+ Event Hub 必须在所有普通模块之前单独启动。Registry 的 ready 延迟到 Event Hub 上线后。扫描模块和读取 Event Hub module.md 可与等待 Registry 端口并行。
17
+
18
+ ---
19
+
20
+ ## 机制 2:Registry 端口发现
21
+
22
+ Registry 启动 HTTP 服务后,通过 stdout 输出结构化消息 `{"kite":"port","port":12345}`。Launcher 的 stdout 读取线程捕获此消息并提取端口,写入 `KITE_REGISTRY_PORT` 环境变量。后续启动的子进程自动继承。
23
+
24
+ 不需要轮询 /health,port 消息本身就是 HTTP 就绪的证明。超时 6s,超时即 FATAL。
25
+
26
+ ---
27
+
28
+ ## 机制 3:stdin 延迟关闭
29
+
30
+ stdin 写入 boot_info 后保持打开,Launcher 可继续发送结构化 JSON 消息(如 `launcher_ws_token`)。收到该模块的 module.ready 事件、发布 module.started 后,Launcher 同时关闭该模块的 stdin 和 stdout。
31
+
32
+ 对于 `launch.boot_stdin: false` 的模块,stdio 断开时机同样与 module.ready 挂钩。
33
+
34
+ 模块侧需处理 stdout 写入时的 BrokenPipeError(静默忽略,此时已有 Event Hub 通道)。
35
+
36
+ ---
37
+
38
+ ## 机制 4:stdout 结构化消息
39
+
40
+ stdout 读取线程对每行输出尝试解析为 JSON。如果包含 `"kite"` 字段,视为结构化消息,按 kite 类型分发给 Launcher 主线程(跨线程回调/事件机制)。不含 `"kite"` 的行作为普通日志输出。
41
+
42
+ 当前定义的消息类型:
43
+
44
+ | kite 值 | 字段 | 说明 |
45
+ |---------|------|------|
46
+ | `"port"` | `port: int` | HTTP 服务端口已绑定 |
47
+ | `"ws_endpoint"` | `ws_endpoint: str` | Event Hub WebSocket 端点已就绪 |
48
+
49
+ ---
50
+
51
+ ## 机制 5:Event Hub 启动协议
52
+
53
+ 1. boot_info 只读 token
54
+ 2. 从 stdin 第二行读取 `{"kite":"launcher_ws_token","launcher_ws_token":"xxx"}` 并保存
55
+ 3. registry_port 从环境变量 `KITE_REGISTRY_PORT` 读取
56
+ 4. preferred_port 和 advertise_ip 从自身 module.md 读取
57
+ 5. 启动 HTTP + WS 服务
58
+ 6. stdout 输出 `{"kite":"ws_endpoint","ws_endpoint":"ws://{advertise_ip}:{port}/ws"}`
59
+ 7. Launcher 携带 launcher_ws_token 连入 WebSocket → Event Hub 本地验证 → 发送 module.ready
60
+ 8. stdio 断开后,Event Hub 再注册到 Registry
61
+
62
+ ---
63
+
64
+ ## 机制 6:Launcher ↔ Event Hub 认证
65
+
66
+ Launcher 通过 stdin 向 Event Hub 发送专用的 `launcher_ws_token`(boot_info 之后的第二行 JSON)。Event Hub 保存该 token。
67
+
68
+ Launcher 连接 Event Hub WebSocket 时携带此 token。Event Hub 本地验证(不走 Registry /verify),因为此时 Event Hub 尚未注册到 Registry。
69
+
70
+ 这是特殊的 bootstrap 认证机制,仅用于系统启动阶段。
71
+
72
+ ---
73
+
74
+ ## 机制 7:Registry 延迟就绪
75
+
76
+ Registry HTTP 就绪后通过 stdout 输出 port 消息,但不发送 module.ready。
77
+
78
+ 等待 Event Hub 注册到 Registry(POST /modules 包含 `metadata.ws_endpoint`)后,Registry 主动连接 Event Hub WebSocket,连接成功后发送 `module.ready` 事件。
79
+
80
+ Launcher 收到 Registry 的 module.ready 后发布 module.started,断开 Registry stdio。
81
+
82
+ Registry module.ready 超时 12s,超时降级处理(WARNING,仍视为已启动)。
83
+
84
+ ---
85
+
86
+ ## 机制 8:boot_info 精简
87
+
88
+ 所有模块的 boot_info 统一为 `{"token":"..."}`。
89
+
90
+ 其他信息由模块自行获取:
91
+
92
+ | 信息 | 来源 | 默认值 |
93
+ |------|------|--------|
94
+ | registry_port | 环境变量 `KITE_REGISTRY_PORT` | — |
95
+ | preferred_port | 自身 module.md | 0(OS 动态分配) |
96
+ | advertise_ip | 自身 module.md | 127.0.0.1 |
97
+
98
+ Launcher 构造 boot_info 的所有位置(_start_registry / _start_one_module / API start / API restart)统一改为只传 token。
99
+
100
+ ---
101
+
102
+ ## 机制 9:_start_one_module 流程
103
+
104
+ 1. 发布 module.starting 事件
105
+ 2. 构造 boot_info `{token}`
106
+ 3. 启动子进程(stdin 保持打开)
107
+ 4. 等待 module.ready 事件(超时由 launch.timeout 配置,默认 30s,超时降级)
108
+ 5. 发布 module.started 事件
109
+ 6. 断开该模块的 stdin + stdout
110
+
111
+ 所有模块(Registry、Event Hub、普通模块)最终都走同一个收尾流程:ready → started → 断开 stdio。
112
+
113
+ ---
114
+
115
+ ## 机制 10:全量重启流程
116
+
117
+ core 模块崩溃时触发全量重启,按 Phase 1 → 2 → 3 → 4 完整流程重启:
118
+
119
+ 1. 停止所有模块 + 断开 Launcher 与 Event Hub 的 WebSocket
120
+ 2. 重新生成 kite_token
121
+ 3. Phase 1:启动 Registry → stdout 拿 port → 写 KITE_REGISTRY_PORT
122
+ 4. Phase 2:启动 Event Hub → stdin launcher_ws_token → stdout ws_endpoint → Launcher 连 WS → Event Hub ready → 断开 stdio
123
+ 5. Phase 3:Event Hub 注册 Registry → Registry 连 Event Hub → Registry ready → 断开 stdio
124
+ 6. Phase 4:按拓扑序启动其余 enabled 模块
125
+
126
+ 全量重启失败则 Launcher 退出。
127
+
128
+ ---
129
+
130
+ ## 机制 11:端口文件系统移除
131
+
132
+ 移除所有与端口文件相关的逻辑:
133
+
134
+ - Registry 的 `_write_port_file()` 函数
135
+ - Launcher 的端口文件轮询和 /health 轮询
136
+ - Launcher 退出时的端口文件删除
137
+ - ProcessManager 遗留清理中的端口文件清理
138
+ - 物理文件 `core/registry/data/port.txt` 和 `port_484.txt`
139
+
140
+ ---
141
+
142
+ ## 机制 12:内置模块校验
143
+
144
+ Launcher 启动最开始(生成 token 之前),校验两个内置 core 模块:
145
+
146
+ 1. `core/registry/` 目录存在且包含可解析的 `module.md`
147
+ 2. `core/event_hub/` 目录存在且包含可解析的 `module.md`
148
+
149
+ 任一缺失则输出明确错误信息并 `sys.exit(1)`。
150
+
151
+ ---
152
+
153
+ ## 机制 13:模块自获取信息
154
+
155
+ 所有模块入口文件需要适配新的信息获取方式:
156
+
157
+ | 模块 | 变更 |
158
+ |------|------|
159
+ | core/event_hub/entry.py | registry_port 改读 `KITE_REGISTRY_PORT`;advertise_ip 改读 module.md |
160
+ | core/event_hub_bench/entry.py | registry_port 改读环境变量 |
161
+ | extensions/services/watchdog/entry.py | registry_port 改读环境变量 |
162
+ | test_modules/hello/entry.py | registry_port 改读环境变量 |
163
+ | test_modules/hello_node/entry.js | registry_port 改读环境变量;stdin 改用 readline 逐行读取(不能等 EOF,否则死锁) |
164
+
165
+ boot_info 只读 token,不再从中提取 registry_port / preferred_port / advertise_ip。
166
+
167
+ ---
168
+
169
+ ## 机制 14:ProcessManager 职责扩展
170
+
171
+ ProcessManager 从「写完 stdin 即关」扩展为支持完整 stdio 生命周期管理:
172
+
173
+ - **stdin 保持打开**:start_module() 写入 boot_info 后不关闭 stdin,保存引用
174
+ - **write_stdin(name, data)**:新方法,向指定模块的 stdin 写入额外的结构化 JSON 消息
175
+ - **close_stdio(name)**:新方法,同时关闭指定模块的 stdin 和 stdout,由 Launcher 在 ready → started 后调用
176
+ - **stdout 结构化消息回调**:stdout 读取线程识别 `"kite"` 字段的 JSON 消息,通过回调/事件机制通知 Launcher 主线程
177
+
178
+ ---
179
+
180
+ ## 实现优先级
181
+
182
+ | 优先级 | 机制 | 理由 |
183
+ |--------|------|------|
184
+ | P0 | 3, 4, 14 | 底层基础,所有其他机制依赖 |
185
+ | P0 | 2, 11 | 启动第一步(Registry 端口发现) |
186
+ | P0 | 5, 6 | Phase 2 核心(Event Hub 启动协议) |
187
+ | P0 | 7 | Phase 3 核心(Registry 延迟就绪) |
188
+ | P0 | 1 | 串联所有 Phase 的启动序列 |
189
+ | P1 | 8, 9 | 统一协议和模块启动流程 |
190
+ | P1 | 10 | 全量重启跟随新启动序列 |
191
+ | P1 | 13 | 各模块侧适配 |
192
+ | P2 | 12 | 安全增强 |