shennian 0.3.1 → 0.3.2

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 (282) hide show
  1. package/README.md +3 -1
  2. package/dist/publish-build-manifest.json +273 -343
  3. package/dist/src/agents/command-spec.js +2 -2
  4. package/dist/src/agents/detect.js +1 -1
  5. package/dist/src/agents/model-registry/discovery.js +2 -2
  6. package/dist/src/agents/model-registry/parsers.d.ts +1 -0
  7. package/dist/src/agents/model-registry/parsers.js +4 -4
  8. package/dist/src/agents/native-capabilities.d.ts +10 -0
  9. package/dist/src/agents/native-capabilities.js +1 -0
  10. package/dist/src/agents/platform-instructions.js +5 -5
  11. package/dist/src/agents/workbuddy.d.ts +44 -0
  12. package/dist/src/agents/workbuddy.js +3 -0
  13. package/dist/src/commands/daemon.d.ts +1 -0
  14. package/dist/src/commands/daemon.js +9 -9
  15. package/dist/src/commands/integration.d.ts +2 -0
  16. package/dist/src/commands/integration.js +1 -0
  17. package/dist/src/commands/manager.js +1 -2
  18. package/dist/src/commands/pair-browser.d.ts +43 -0
  19. package/dist/src/commands/pair-browser.js +1 -0
  20. package/dist/src/commands/pair.d.ts +2 -0
  21. package/dist/src/commands/pair.js +11 -8
  22. package/dist/src/commands/room.d.ts +13 -0
  23. package/dist/src/commands/room.js +4 -0
  24. package/dist/src/commands/upgrade.d.ts +3 -0
  25. package/dist/src/commands/upgrade.js +1 -1
  26. package/dist/src/config/index.d.ts +3 -1
  27. package/dist/src/config/index.js +2 -1
  28. package/dist/src/daemon-ipc/client.d.ts +8 -0
  29. package/dist/src/daemon-ipc/client.js +3 -0
  30. package/dist/src/daemon-ipc/paths.d.ts +7 -0
  31. package/dist/src/daemon-ipc/paths.js +1 -0
  32. package/dist/src/daemon-ipc/protocol.d.ts +30 -0
  33. package/dist/src/daemon-ipc/protocol.js +1 -0
  34. package/dist/src/daemon-ipc/secret.d.ts +3 -0
  35. package/dist/src/daemon-ipc/secret.js +3 -0
  36. package/dist/src/daemon-ipc/server.d.ts +13 -0
  37. package/dist/src/daemon-ipc/server.js +3 -0
  38. package/dist/src/index.js +2 -2
  39. package/dist/src/integrations/claude-room-plugin-lifecycle.d.ts +47 -0
  40. package/dist/src/integrations/claude-room-plugin-lifecycle.js +1 -0
  41. package/dist/src/integrations/codex-room-plugin-lifecycle.d.ts +49 -0
  42. package/dist/src/integrations/codex-room-plugin-lifecycle.js +1 -0
  43. package/dist/src/integrations/room-plugin-bundles.d.ts +23 -0
  44. package/dist/src/integrations/room-plugin-bundles.js +1 -0
  45. package/dist/src/integrations/room-plugin-lifecycle-common.d.ts +17 -0
  46. package/dist/src/integrations/room-plugin-lifecycle-common.js +1 -0
  47. package/dist/src/integrations/room-plugin-shared.d.ts +23 -0
  48. package/dist/src/integrations/room-plugin-shared.js +2 -0
  49. package/dist/src/integrations/room-session-hook.d.ts +30 -0
  50. package/dist/src/integrations/room-session-hook.js +2 -0
  51. package/dist/src/integrations/workbuddy-plugin-bundle.d.ts +15 -0
  52. package/dist/src/integrations/workbuddy-plugin-bundle.js +1 -0
  53. package/dist/src/integrations/workbuddy-plugin-lifecycle.d.ts +52 -0
  54. package/dist/src/integrations/workbuddy-plugin-lifecycle.js +2 -0
  55. package/dist/src/integrations/workbuddy-session-hook.d.ts +22 -0
  56. package/dist/src/integrations/workbuddy-session-hook.js +1 -0
  57. package/dist/src/manager/prompt.d.ts +1 -1
  58. package/dist/src/manager/prompt.js +1 -1
  59. package/dist/src/manager/retired-external-channel-compat.d.ts +78 -0
  60. package/dist/src/manager/retired-external-channel-compat.js +1 -0
  61. package/dist/src/manager/runtime.d.ts +1 -3
  62. package/dist/src/manager/runtime.js +7 -7
  63. package/dist/src/relay/client.d.ts +2 -0
  64. package/dist/src/relay/client.js +1 -1
  65. package/dist/src/room/activation-audit.d.ts +15 -0
  66. package/dist/src/room/activation-audit.js +2 -0
  67. package/dist/src/room/activation-policy.d.ts +8 -0
  68. package/dist/src/room/activation-policy.js +1 -0
  69. package/dist/src/room/activation-service.d.ts +25 -0
  70. package/dist/src/room/activation-service.js +2 -0
  71. package/dist/src/room/attachment-cache.d.ts +40 -0
  72. package/dist/src/room/attachment-cache.js +2 -0
  73. package/dist/src/room/attachment-upload.d.ts +20 -0
  74. package/dist/src/room/attachment-upload.js +1 -0
  75. package/dist/src/room/authorized-action-coordinator.d.ts +40 -0
  76. package/dist/src/room/authorized-action-coordinator.js +1 -0
  77. package/dist/src/room/authorized-action-ipc.d.ts +11 -0
  78. package/dist/src/room/authorized-action-ipc.js +1 -0
  79. package/dist/src/room/device-authorization-client.d.ts +49 -0
  80. package/dist/src/room/device-authorization-client.js +1 -0
  81. package/dist/src/room/host-session-observation-ipc.d.ts +9 -0
  82. package/dist/src/room/host-session-observation-ipc.js +1 -0
  83. package/dist/src/room/host-session-observations.d.ts +54 -0
  84. package/dist/src/room/host-session-observations.js +2 -0
  85. package/dist/src/room/invite-bootstrap.d.ts +35 -0
  86. package/dist/src/room/invite-bootstrap.js +1 -0
  87. package/dist/src/room/invocation-token-ipc.d.ts +9 -0
  88. package/dist/src/room/invocation-token-ipc.js +1 -0
  89. package/dist/src/room/invocation-token.d.ts +53 -0
  90. package/dist/src/room/invocation-token.js +1 -0
  91. package/dist/src/room/jsonl-mirror.d.ts +73 -0
  92. package/dist/src/room/jsonl-mirror.js +6 -0
  93. package/dist/src/room/managed-room-session.d.ts +143 -0
  94. package/dist/src/room/managed-room-session.js +3 -0
  95. package/dist/src/room/mirror-sync-service.d.ts +33 -0
  96. package/dist/src/room/mirror-sync-service.js +1 -0
  97. package/dist/src/room/operator-ipc.d.ts +11 -0
  98. package/dist/src/room/operator-ipc.js +1 -0
  99. package/dist/src/room/pending-authorized-actions.d.ts +69 -0
  100. package/dist/src/room/pending-authorized-actions.js +3 -0
  101. package/dist/src/room/room-action-client.d.ts +208 -0
  102. package/dist/src/room/room-action-client.js +1 -0
  103. package/dist/src/room/room-action-ipc.d.ts +33 -0
  104. package/dist/src/room/room-action-ipc.js +1 -0
  105. package/dist/src/room/room-action-schema.d.ts +3 -0
  106. package/dist/src/room/room-action-schema.js +1 -0
  107. package/dist/src/room/room-authorized-action-executor.d.ts +23 -0
  108. package/dist/src/room/room-authorized-action-executor.js +1 -0
  109. package/dist/src/room/room-binding-client.d.ts +51 -0
  110. package/dist/src/room/room-binding-client.js +1 -0
  111. package/dist/src/room/room-binding-ipc.d.ts +29 -0
  112. package/dist/src/room/room-binding-ipc.js +1 -0
  113. package/dist/src/room/session-registry-ipc.d.ts +14 -0
  114. package/dist/src/room/session-registry-ipc.js +1 -0
  115. package/dist/src/room/session-registry.d.ts +128 -0
  116. package/dist/src/room/session-registry.js +2 -0
  117. package/dist/src/room/tool-schema.d.ts +114 -0
  118. package/dist/src/room/tool-schema.js +1 -0
  119. package/dist/src/room/tool-server.d.ts +5 -0
  120. package/dist/src/room/tool-server.js +3 -0
  121. package/dist/src/session/handlers/agent-capabilities.d.ts +3 -0
  122. package/dist/src/session/handlers/agent-capabilities.js +1 -0
  123. package/dist/src/session/handlers/agent-config.js +1 -1
  124. package/dist/src/session/handlers/chat.js +2 -2
  125. package/dist/src/session/handlers/control.js +1 -1
  126. package/dist/src/session/handlers/fs.d.ts +1 -0
  127. package/dist/src/session/handlers/fs.js +1 -1
  128. package/dist/src/session/manager.d.ts +16 -6
  129. package/dist/src/session/manager.js +1 -1
  130. package/dist/src/session/types.d.ts +5 -0
  131. package/dist/src/upgrade/engine.d.ts +14 -1
  132. package/dist/src/upgrade/engine.js +2 -2
  133. package/dist/src/upgrade/scheduler.d.ts +45 -0
  134. package/dist/src/upgrade/scheduler.js +1 -0
  135. package/node_modules/@shennian/wire/dist/agent-capabilities.d.ts +17 -0
  136. package/node_modules/@shennian/wire/dist/agent-capabilities.d.ts.map +1 -0
  137. package/node_modules/@shennian/wire/dist/agent-capabilities.js +2 -0
  138. package/node_modules/@shennian/wire/dist/agent-capabilities.js.map +1 -0
  139. package/node_modules/@shennian/wire/dist/index.d.ts +2 -1
  140. package/node_modules/@shennian/wire/dist/index.d.ts.map +1 -1
  141. package/node_modules/@shennian/wire/dist/index.js +2 -1
  142. package/node_modules/@shennian/wire/dist/index.js.map +1 -1
  143. package/node_modules/@shennian/wire/dist/machine.d.ts +1 -0
  144. package/node_modules/@shennian/wire/dist/machine.d.ts.map +1 -1
  145. package/node_modules/@shennian/wire/dist/methods.d.ts +1 -1
  146. package/node_modules/@shennian/wire/dist/methods.d.ts.map +1 -1
  147. package/node_modules/@shennian/wire/dist/room.d.ts +112 -0
  148. package/node_modules/@shennian/wire/dist/room.d.ts.map +1 -0
  149. package/node_modules/@shennian/wire/dist/room.js +4 -0
  150. package/node_modules/@shennian/wire/dist/room.js.map +1 -0
  151. package/node_modules/@shennian/wire/dist/session.d.ts +2 -2
  152. package/node_modules/@shennian/wire/dist/session.d.ts.map +1 -1
  153. package/node_modules/@shennian/wire/dist/session.js +1 -1
  154. package/node_modules/@shennian/wire/dist/session.js.map +1 -1
  155. package/package.json +3 -5
  156. package/dist/scripts/wechat-rpa-confirmation.mjs +0 -5
  157. package/dist/src/agents/pi-context.d.ts +0 -42
  158. package/dist/src/agents/pi-context.js +0 -12
  159. package/dist/src/agents/pi.d.ts +0 -70
  160. package/dist/src/agents/pi.js +0 -17
  161. package/dist/src/channels/base.d.ts +0 -144
  162. package/dist/src/channels/base.js +0 -1
  163. package/dist/src/channels/registry.d.ts +0 -8
  164. package/dist/src/channels/registry.js +0 -1
  165. package/dist/src/channels/reply-split.d.ts +0 -1
  166. package/dist/src/channels/reply-split.js +0 -10
  167. package/dist/src/channels/runtime.d.ts +0 -138
  168. package/dist/src/channels/runtime.js +0 -5
  169. package/dist/src/channels/secret-registry.d.ts +0 -35
  170. package/dist/src/channels/secret-registry.js +0 -1
  171. package/dist/src/channels/websocket.d.ts +0 -55
  172. package/dist/src/channels/websocket.js +0 -8
  173. package/dist/src/channels/wechat-channel/anchor.d.ts +0 -10
  174. package/dist/src/channels/wechat-channel/anchor.js +0 -1
  175. package/dist/src/channels/wechat-channel/automation-lane.d.ts +0 -35
  176. package/dist/src/channels/wechat-channel/automation-lane.js +0 -2
  177. package/dist/src/channels/wechat-channel/client.d.ts +0 -283
  178. package/dist/src/channels/wechat-channel/client.js +0 -1
  179. package/dist/src/channels/wechat-channel/cooldown.d.ts +0 -21
  180. package/dist/src/channels/wechat-channel/cooldown.js +0 -1
  181. package/dist/src/channels/wechat-channel/core/fixture-compare.d.ts +0 -52
  182. package/dist/src/channels/wechat-channel/core/fixture-compare.js +0 -1
  183. package/dist/src/channels/wechat-channel/core/media-action-plan.d.ts +0 -3
  184. package/dist/src/channels/wechat-channel/core/media-action-plan.js +0 -1
  185. package/dist/src/channels/wechat-channel/core/schema.d.ts +0 -67
  186. package/dist/src/channels/wechat-channel/core/schema.js +0 -1
  187. package/dist/src/channels/wechat-channel/core/trace-comparator.d.ts +0 -28
  188. package/dist/src/channels/wechat-channel/core/trace-comparator.js +0 -1
  189. package/dist/src/channels/wechat-channel/fingerprint.d.ts +0 -31
  190. package/dist/src/channels/wechat-channel/fingerprint.js +0 -1
  191. package/dist/src/channels/wechat-channel/helper-assets.d.ts +0 -103
  192. package/dist/src/channels/wechat-channel/helper-assets.js +0 -1
  193. package/dist/src/channels/wechat-channel/helper-client.d.ts +0 -87
  194. package/dist/src/channels/wechat-channel/helper-client.js +0 -3
  195. package/dist/src/channels/wechat-channel/helper-protocol.d.ts +0 -122
  196. package/dist/src/channels/wechat-channel/helper-protocol.js +0 -1
  197. package/dist/src/channels/wechat-channel/human-coordination.d.ts +0 -25
  198. package/dist/src/channels/wechat-channel/human-coordination.js +0 -1
  199. package/dist/src/channels/wechat-channel/index.d.ts +0 -21
  200. package/dist/src/channels/wechat-channel/index.js +0 -1
  201. package/dist/src/channels/wechat-channel/ledger.d.ts +0 -48
  202. package/dist/src/channels/wechat-channel/ledger.js +0 -2
  203. package/dist/src/channels/wechat-channel/media-cache-resolver.d.ts +0 -42
  204. package/dist/src/channels/wechat-channel/media-cache-resolver.js +0 -1
  205. package/dist/src/channels/wechat-channel/media-resolver.d.ts +0 -186
  206. package/dist/src/channels/wechat-channel/media-resolver.js +0 -1
  207. package/dist/src/channels/wechat-channel/message-key.d.ts +0 -19
  208. package/dist/src/channels/wechat-channel/message-key.js +0 -1
  209. package/dist/src/channels/wechat-channel/observer.d.ts +0 -171
  210. package/dist/src/channels/wechat-channel/observer.js +0 -7
  211. package/dist/src/channels/wechat-channel/outbound-ledger.d.ts +0 -96
  212. package/dist/src/channels/wechat-channel/outbound-ledger.js +0 -2
  213. package/dist/src/channels/wechat-channel/outbound-sender.d.ts +0 -74
  214. package/dist/src/channels/wechat-channel/outbound-sender.js +0 -1
  215. package/dist/src/channels/wechat-channel/pacing.d.ts +0 -3
  216. package/dist/src/channels/wechat-channel/pacing.js +0 -1
  217. package/dist/src/channels/wechat-channel/preflight.d.ts +0 -46
  218. package/dist/src/channels/wechat-channel/preflight.js +0 -1
  219. package/dist/src/channels/wechat-channel/runner.d.ts +0 -43
  220. package/dist/src/channels/wechat-channel/runner.js +0 -1
  221. package/dist/src/channels/wechat-channel/runtime.d.ts +0 -50
  222. package/dist/src/channels/wechat-channel/runtime.js +0 -1
  223. package/dist/src/channels/wechat-channel/scheduler.d.ts +0 -74
  224. package/dist/src/channels/wechat-channel/scheduler.js +0 -1
  225. package/dist/src/channels/wechat-channel/vector-store.d.ts +0 -44
  226. package/dist/src/channels/wechat-channel/vector-store.js +0 -1
  227. package/dist/src/channels/wechat-rpa/macos-flow.d.ts +0 -55
  228. package/dist/src/channels/wechat-rpa/macos-flow.js +0 -1
  229. package/dist/src/channels/wechat-rpa/macos.d.ts +0 -11
  230. package/dist/src/channels/wechat-rpa/macos.js +0 -21
  231. package/dist/src/channels/wechat-rpa/normalizer.d.ts +0 -49
  232. package/dist/src/channels/wechat-rpa/normalizer.js +0 -7
  233. package/dist/src/channels/wechat-rpa/product-channel.d.ts +0 -76
  234. package/dist/src/channels/wechat-rpa/product-channel.js +0 -16
  235. package/dist/src/channels/wechat-rpa-session-sync.d.ts +0 -26
  236. package/dist/src/channels/wechat-rpa-session-sync.js +0 -1
  237. package/dist/src/channels/wechat-rpa.d.ts +0 -104
  238. package/dist/src/channels/wechat-rpa.js +0 -6
  239. package/dist/src/channels/wecom.d.ts +0 -51
  240. package/dist/src/channels/wecom.js +0 -4
  241. package/dist/src/commands/external-attachments.d.ts +0 -9
  242. package/dist/src/commands/external-attachments.js +0 -1
  243. package/dist/src/commands/external.d.ts +0 -2
  244. package/dist/src/commands/external.js +0 -1
  245. package/dist/src/commands/helper-runtime-official-download.d.ts +0 -80
  246. package/dist/src/commands/helper-runtime-official-download.js +0 -1
  247. package/dist/src/commands/runtime.d.ts +0 -120
  248. package/dist/src/commands/runtime.js +0 -1
  249. package/dist/src/commands/wechat/command.d.ts +0 -3
  250. package/dist/src/commands/wechat/command.js +0 -1
  251. package/dist/src/commands/wechat/direct.d.ts +0 -14
  252. package/dist/src/commands/wechat/direct.js +0 -2
  253. package/dist/src/commands/wechat/doctor.d.ts +0 -2
  254. package/dist/src/commands/wechat/doctor.js +0 -1
  255. package/dist/src/commands/wechat/ipc.d.ts +0 -9
  256. package/dist/src/commands/wechat/ipc.js +0 -1
  257. package/dist/src/commands/wechat/operations.d.ts +0 -3
  258. package/dist/src/commands/wechat/operations.js +0 -4
  259. package/dist/src/commands/wechat/output.d.ts +0 -7
  260. package/dist/src/commands/wechat/output.js +0 -4
  261. package/dist/src/commands/wechat/types.d.ts +0 -142
  262. package/dist/src/commands/wechat/types.js +0 -1
  263. package/dist/src/commands/wechat/utils.d.ts +0 -16
  264. package/dist/src/commands/wechat/utils.js +0 -1
  265. package/dist/src/commands/wechat.d.ts +0 -6
  266. package/dist/src/commands/wechat.js +0 -1
  267. package/dist/src/devtools/wechat-channel-action-smoke.d.ts +0 -105
  268. package/dist/src/devtools/wechat-channel-action-smoke.js +0 -10
  269. package/dist/src/devtools/wechat-channel-download-report.d.ts +0 -111
  270. package/dist/src/devtools/wechat-channel-download-report.js +0 -2
  271. package/dist/src/devtools/wechat-channel-markdown-report.d.ts +0 -6
  272. package/dist/src/devtools/wechat-channel-markdown-report.js +0 -5
  273. package/dist/src/devtools/wechat-channel-product-steps.d.ts +0 -9
  274. package/dist/src/devtools/wechat-channel-product-steps.js +0 -40
  275. package/dist/src/session/handlers/skills.d.ts +0 -7
  276. package/dist/src/session/handlers/skills.js +0 -1
  277. package/dist/src/session/handlers/wechat-helper-runtime.d.ts +0 -33
  278. package/dist/src/session/handlers/wechat-helper-runtime.js +0 -1
  279. package/dist/src/skills/registry.d.ts +0 -16
  280. package/dist/src/skills/registry.js +0 -15
  281. package/dist/src/skills/setup.d.ts +0 -11
  282. package/dist/src/skills/setup.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export const DISABLED_BUILTIN_AGENT_TYPES = ['openclaw'];
2
- export const AVAILABLE_BUILTIN_AGENT_TYPES = ['claude', 'codex', 'gemini', 'cursor', 'opencode', 'pi', 'manager'];
2
+ export const AVAILABLE_BUILTIN_AGENT_TYPES = ['claude', 'codex', 'workbuddy', 'gemini', 'cursor', 'opencode', 'pi', 'manager'];
3
3
  const AVAILABLE_BUILTIN_AGENT_TYPE_SET = new Set(AVAILABLE_BUILTIN_AGENT_TYPES);
4
4
  export function isAvailableBuiltinAgentType(value) {
5
5
  return AVAILABLE_BUILTIN_AGENT_TYPE_SET.has(value);
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,UAAU,CAAgD,CAAA;AACvG,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAgD,CAAA;AAEhK,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAmB,6BAA6B,CAAC,CAAA;AAwCjG,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,OAAO,gCAAgC,CAAC,GAAG,CAAC,KAAyB,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAyB;IACjE,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAA;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA6B;IACrE,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,EAAE,CAAA;IAE9B,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAA;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QACvE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,UAAU,CAAgD,CAAA;AACvG,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAgD,CAAA;AAE7K,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAmB,6BAA6B,CAAC,CAAA;AAwCjG,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,OAAO,gCAAgC,CAAC,GAAG,CAAC,KAAyB,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAyB;IACjE,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAA;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAQ;QAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACf,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA6B;IACrE,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,EAAE,CAAA;IAE9B,MAAM,QAAQ,GAAgB,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAA;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QACvE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shennian",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Shennian — AI Agent Control Plane CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,8 +37,6 @@
37
37
  "node": ">=18"
38
38
  },
39
39
  "dependencies": {
40
- "@mariozechner/pi-agent-core": "^0.64.0",
41
- "@mariozechner/pi-ai": "^0.64.0",
42
40
  "@sinclair/typebox": "^0.34.49",
43
41
  "chalk": "^5.4.1",
44
42
  "commander": "^13.1.0",
@@ -55,8 +53,8 @@
55
53
  "typescript": "^5.9.3"
56
54
  },
57
55
  "scripts": {
58
- "build": "tsc && node scripts/copy-wechat-rpa-assets.mjs && node -e \"require('node:fs').chmodSync('dist/bin/shennian.js', 0o755)\"",
59
- "build:publish": "node -e \"const fs=require('node:fs'); fs.rmSync('dist', { recursive: true, force: true }); fs.rmSync('.tsbuildinfo.publish', { force: true })\" && tsc -p tsconfig.publish.json && node scripts/copy-wechat-rpa-assets.mjs && node scripts/minify-publish-js.mjs && node -e \"require('node:fs').chmodSync('dist/bin/shennian.js', 0o755)\" && node scripts/check-publish-artifact.mjs",
56
+ "build": "tsc && node -e \"require('node:fs').chmodSync('dist/bin/shennian.js', 0o755)\"",
57
+ "build:publish": "node -e \"const fs=require('node:fs'); fs.rmSync('dist', { recursive: true, force: true }); fs.rmSync('.tsbuildinfo.publish', { force: true })\" && tsc -p tsconfig.publish.json && node scripts/minify-publish-js.mjs && node -e \"require('node:fs').chmodSync('dist/bin/shennian.js', 0o755)\" && node scripts/check-publish-artifact.mjs",
60
58
  "dev": "tsc --watch"
61
59
  }
62
60
  }
@@ -1,5 +0,0 @@
1
- import b from"node:crypto";import s from"node:path";function v(e,t){const n=u(s.basename(t)),r=u(s.basename(t,s.extname(t))),o=u(e.map(a=>a.text).join(""));return!!(n&&o.includes(n))||!!(r.length>=4&&o.includes(r))}function $(e,t,n,r,o){if(v(e,n)||y(t,n))return!0;const a=new Set(r.map(i=>i.id)),m=e.filter(i=>!a.has(i.id)),h=s.extname(n).toLowerCase(),c=x(h);return!!(c!=="file"&&m.some(i=>i.attachments?.some(g=>g.type===c))||w(t,o,c)||c==="image"&&m.some(i=>/图片|照片|image/i.test(i.text))||c==="video"&&m.some(i=>/视频|video/i.test(i.text)||l(i.text)))}function A(e,t){return f(e.map(n=>n.text).join(""),t)}function N(e,t){return f(e.map(n=>n.text).join(""),t)}function y(e,t){const n=u(s.basename(t)),r=u(s.basename(t,s.extname(t))),o=u(e.map(a=>a.text).join(""));return!!(n&&o.includes(n))||!!(r.length>=4&&o.includes(r))}function u(e){return String(e).replace(/[^\p{L}\p{N}]/gu,"").toLowerCase()}function S(e){if(!e)return 2e3;const t=x(s.extname(e).toLowerCase());return t==="image"?8e3:t==="video"?15e3:2e3}function l(e){return/^(?:\d{1,2}:)?\d{1,2}:\d{2}$/.test(String(e||"").trim())}function w(e,t,n){const r=new Set(t.filter(o=>p(o,n)).map(d));return e.filter(o=>p(o,n)).some(o=>!r.has(d(o)))}function f(e,t){const n=u(e),r=u(t);if(!r)return!1;if(n.includes(r))return!0;const o=r.slice(0,Math.min(16,r.length)),a=r.slice(Math.max(0,r.length-12));return o.length>=8&&a.length>=8&&n.includes(o)&&n.includes(a)}function p(e,t){return t==="image"?/\[?图片\]?|照片|image/i.test(e.text):t==="video"?/\[?视频\]?|video/i.test(e.text)||l(e.text):!1}function d(e){return I(`${e.text}
2
- ${e.x}
3
- ${e.y}
4
- ${e.width}
5
- ${e.height}`)}function x(e){return[".png",".jpg",".jpeg",".gif",".webp",".heic"].includes(e)?"image":[".mp4",".mov",".avi",".mkv"].includes(e)?"video":"file"}function I(e){return b.createHash("sha256").update(e).digest("hex").slice(0,24)}export{v as containsAttachmentName,y as containsAttachmentNameInObservations,A as containsReplyText,N as containsReplyTextInObservations,$ as containsSentAttachment,l as isVideoDurationLabel,u as normalizeReplyText,S as postSendInitialDelayMs};
@@ -1,42 +0,0 @@
1
- import type { AgentMessage } from '@mariozechner/pi-agent-core';
2
- import type { Model } from '@mariozechner/pi-ai';
3
- export declare const PI_DEFAULT_MODEL_ID = "qwen3.6-plus";
4
- type ShellCommandSpec = {
5
- file: string;
6
- args: string[];
7
- shell: 'bash' | 'powershell';
8
- };
9
- export declare function buildShellCommandSpec(command: string, platform?: NodeJS.Platform): ShellCommandSpec;
10
- export declare function createPiModel(modelId?: string, overrides?: Partial<Pick<Model<'openai-completions'>, 'baseUrl' | 'provider' | 'compat'>>): Model<'openai-completions'>;
11
- export declare const SYSTEM_PROMPT = "\u4F60\u662F\u795E\u5FF5\u5185\u7F6E\u7F16\u7A0B\u52A9\u624B\uFF0C\u8FD0\u884C\u5728\u7528\u6237\u672C\u5730\u673A\u5668\u4E0A\u3002\n\u4F60\u53EF\u4EE5\u8BFB\u5199\u6587\u4EF6\u3001\u6267\u884C shell \u547D\u4EE4\u3001\u5E2E\u52A9\u7528\u6237\u5B8C\u6210\u7F16\u7A0B\u548C\u7CFB\u7EDF\u7BA1\u7406\u4EFB\u52A1\u3002\n\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u8BBE\u7F6E\uFF0C\u64CD\u4F5C\u6587\u4EF6\u65F6\u4F7F\u7528\u76F8\u5BF9\u8DEF\u5F84\u6216\u7EDD\u5BF9\u8DEF\u5F84\u5747\u53EF\u3002\n\u5F53\u524D shell \u4F1A\u968F\u64CD\u4F5C\u7CFB\u7EDF\u9009\u62E9\uFF1AWindows \u4F7F\u7528 PowerShell\uFF0CmacOS/Linux \u4F7F\u7528 bash\u3002Windows \u4E0B\u9700\u8981\u771F\u5B9E curl \u65F6\u4F7F\u7528 curl.exe\uFF0C\u67E5\u627E\u547D\u4EE4\u4F4D\u7F6E\u4F7F\u7528 where.exe\uFF0C\u907F\u514D PowerShell \u7684 curl / where \u522B\u540D\u3002\n\u4FDD\u6301\u56DE\u590D\u7B80\u6D01\u3001\u51C6\u786E\uFF0C\u4E2D\u6587\u56DE\u590D\u3002";
12
- export declare function findAgentsMd(startDir: string): string | null;
13
- export declare function loadAgentsMdInstructions(workDir: string): string | null;
14
- export declare const CONTEXT_TOKEN_THRESHOLD = 90000;
15
- export declare const KEEP_RECENT_MESSAGES = 6;
16
- export declare const SUMMARY_FILENAME = "summary.json";
17
- export declare const SNAPSHOT_FILENAME = "snapshot.json";
18
- export declare const MESSAGES_FILENAME = "messages.jsonl";
19
- export declare const LEGACY_SUMMARY_FILENAME = "pi-context.json";
20
- export type PersistedSummary = {
21
- version: 1;
22
- summary: string | null;
23
- summarizedCount: number;
24
- updatedAt: number;
25
- };
26
- export type PersistedSnapshot = {
27
- version: 1;
28
- sessionId: string;
29
- workDir: string;
30
- summary: string | null;
31
- summarizedCount: number;
32
- messages: AgentMessage[];
33
- updatedAt: number;
34
- };
35
- export declare function estimateTokens(messages: AgentMessage[]): number;
36
- export declare function messagesToText(messages: AgentMessage[]): string;
37
- export declare function cloneMessages(messages: AgentMessage[]): AgentMessage[];
38
- export declare function getSessionDir(sessionId: string): string;
39
- export declare function buildRollingSummary(cachedSummary: string | null, messages: AgentMessage[]): string | null;
40
- export declare function longestCommonPrefixLength(left: AgentMessage[], right: AgentMessage[]): number;
41
- export declare function requestProxySummary(proxyUrl: string, authToken: string, prompt: string): Promise<string | null>;
42
- export {};
@@ -1,12 +0,0 @@
1
- import a from"node:fs";import l from"node:path";import{resolveShennianPath as x}from"../config/index.js";import{resolveWindowsPowerShellPath as S}from"../windows-shell.js";const d="qwen3.6-plus";function b(e,t=process.platform){return t==="win32"?{file:S(),args:["-NoLogo","-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-Command",e],shell:"powershell"}:{file:a.existsSync("/bin/bash")?"/bin/bash":"bash",args:["-c",e],shell:"bash"}}function E(e=d,t={}){return{id:e,name:e,api:"openai-completions",provider:t.provider??"shennian-proxy",baseUrl:t.baseUrl??"",reasoning:!1,input:["text","image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,...t.compat?{compat:t.compat}:{}}}const P=`\u4F60\u662F\u795E\u5FF5\u5185\u7F6E\u7F16\u7A0B\u52A9\u624B\uFF0C\u8FD0\u884C\u5728\u7528\u6237\u672C\u5730\u673A\u5668\u4E0A\u3002
2
- \u4F60\u53EF\u4EE5\u8BFB\u5199\u6587\u4EF6\u3001\u6267\u884C shell \u547D\u4EE4\u3001\u5E2E\u52A9\u7528\u6237\u5B8C\u6210\u7F16\u7A0B\u548C\u7CFB\u7EDF\u7BA1\u7406\u4EFB\u52A1\u3002
3
- \u5DE5\u4F5C\u76EE\u5F55\u5DF2\u8BBE\u7F6E\uFF0C\u64CD\u4F5C\u6587\u4EF6\u65F6\u4F7F\u7528\u76F8\u5BF9\u8DEF\u5F84\u6216\u7EDD\u5BF9\u8DEF\u5F84\u5747\u53EF\u3002
4
- \u5F53\u524D shell \u4F1A\u968F\u64CD\u4F5C\u7CFB\u7EDF\u9009\u62E9\uFF1AWindows \u4F7F\u7528 PowerShell\uFF0CmacOS/Linux \u4F7F\u7528 bash\u3002Windows \u4E0B\u9700\u8981\u771F\u5B9E curl \u65F6\u4F7F\u7528 curl.exe\uFF0C\u67E5\u627E\u547D\u4EE4\u4F4D\u7F6E\u4F7F\u7528 where.exe\uFF0C\u907F\u514D PowerShell \u7684 curl / where \u522B\u540D\u3002
5
- \u4FDD\u6301\u56DE\u590D\u7B80\u6D01\u3001\u51C6\u786E\uFF0C\u4E2D\u6587\u56DE\u590D\u3002`,y=24e3;function N(e){let t=l.resolve(e||process.cwd());try{const n=a.existsSync(t)?a.statSync(t):null;n&&!n.isDirectory()&&(t=l.dirname(t))}catch{}for(;;){const n=l.join(t,"AGENTS.md");if(a.existsSync(n))return n;const o=l.dirname(t);if(o===t)return null;t=o}}function $(e){const t=N(e);if(!t)return null;try{const n=a.readFileSync(t,"utf-8").trim();if(!n)return null;const o=n.length>y?`${n.slice(0,y)}
6
-
7
- ...\uFF08AGENTS.md \u5DF2\u622A\u65AD\uFF09`:n;return`# AGENTS.md instructions for ${l.dirname(t)}
8
-
9
- ${o}`}catch{return null}}const k=9e4,C=6,A=x("sessions"),L="summary.json",j="snapshot.json",R="messages.jsonl",D="pi-context.json";function I(e){let t=0;for(const n of e)t+=JSON.stringify(n).length;return Math.ceil(t/3)}function J(e){const t=[];for(const n of e){const o=n,s=String(o.role??"unknown");if(Array.isArray(o.content)){for(const r of o.content)if(r.type==="text"&&typeof r.text=="string")t.push(`[${s}] ${r.text.slice(0,500)}`);else if(r.type==="toolCall"){const c=typeof r.name=="string"?r.name:typeof r.toolName=="string"?r.toolName:"tool",i=r.arguments??r.args??{};t.push(`[${s}] tool:${c}(${JSON.stringify(i).slice(0,200)})`)}}}return t.join(`
10
- `)}function G(e){return JSON.parse(JSON.stringify(e))}function F(e){return l.join(A,e)}function T(e){if(!e||typeof e!="object")return null;const t=e;if(t.type==="text"&&typeof t.text=="string")return t.text;if(t.type==="thinking"&&typeof t.thinking=="string")return`[thinking] ${t.thinking}`;if(t.type==="toolCall"){const n=typeof t.name=="string"?t.name:typeof t.toolName=="string"?t.toolName:"tool",o=t.arguments??t.args??{};return`[toolCall] ${n}(${JSON.stringify(o).slice(0,300)})`}return t.type==="image"&&typeof t.mimeType=="string"?`[image] ${t.mimeType}`:null}function W(e,t){const n=[];for(const r of t){const c=String(r.role??"unknown"),i=Array.isArray(r.content)?r.content:[];for(const p of i){const u=T(p);u&&n.push(`[${c}] ${u}`)}}const s=n.slice(-8).join(`
11
- `).trim()||e?.trim()||null;return s?s.length>2e3?s.slice(s.length-2e3):s:null}function v(e,t){const n=Math.min(e.length,t.length);for(let o=0;o<n;o++)if(JSON.stringify(e[o])!==JSON.stringify(t[o]))return o;return n}async function U(e,t,n){const o=await fetch(`${e}/api/stream`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({model:E("qwen-plus"),context:{messages:[{role:"user",content:[{type:"text",text:n}]}]},options:{temperature:.3,maxTokens:500}})});if(!o.ok||!o.body)return null;const s=o.body.getReader(),r=new TextDecoder,c=[];let i="";for(;;){const{done:p,value:u}=await s.read();if(p)break;i+=r.decode(u,{stream:!0});const m=i.split(`
12
- `);i=m.pop()??"";for(const g of m){if(!g.startsWith("data: "))continue;const h=g.slice(6).trim();if(!h)continue;const f=JSON.parse(h);f.type==="text_delta"&&typeof f.delta=="string"&&c.push(f.delta)}}return c.join("").trim()||null}export{k as CONTEXT_TOKEN_THRESHOLD,C as KEEP_RECENT_MESSAGES,D as LEGACY_SUMMARY_FILENAME,R as MESSAGES_FILENAME,d as PI_DEFAULT_MODEL_ID,j as SNAPSHOT_FILENAME,L as SUMMARY_FILENAME,P as SYSTEM_PROMPT,W as buildRollingSummary,b as buildShellCommandSpec,G as cloneMessages,E as createPiModel,I as estimateTokens,N as findAgentsMd,F as getSessionDir,$ as loadAgentsMdInstructions,v as longestCommonPrefixLength,J as messagesToText,U as requestProxySummary};
@@ -1,70 +0,0 @@
1
- import { AgentAdapter } from './adapter.js';
2
- import type { ExternalChannelSessionStatus } from '@shennian/wire';
3
- export { buildShellCommandSpec } from './pi-context.js';
4
- export declare function formatNianHostedModelError(message: string): string;
5
- export declare class PiAdapter extends AgentAdapter {
6
- readonly type: "pi";
7
- private agent;
8
- private sessionId;
9
- private workDir;
10
- private seq;
11
- private runId;
12
- private emittedLengths;
13
- private terminalState;
14
- private authToken;
15
- private proxyUrl;
16
- private providerConfig;
17
- private sessionDir;
18
- private messagesPath;
19
- private snapshotPath;
20
- private summaryPath;
21
- private cachedSummary;
22
- private restoredMessages;
23
- private compressing;
24
- private lastSummaryMsgCount;
25
- private pendingBaseMessages;
26
- private finalizePromise;
27
- private sendGeneration;
28
- private externalChannel;
29
- private shennianSessionId;
30
- private extraEnv;
31
- private pendingSendStart;
32
- configure(options: {
33
- sessionId?: string;
34
- externalChannel?: ExternalChannelSessionStatus | null;
35
- env?: NodeJS.ProcessEnv;
36
- }): void;
37
- start(sessionId: string, workDir: string, _agentSessionId?: string | null): Promise<void>;
38
- send(text: string, modelId?: string): Promise<void>;
39
- getStatus(): Promise<{
40
- active: boolean;
41
- runId?: string | null;
42
- runPhase?: null;
43
- canStop?: boolean;
44
- }>;
45
- private initAgent;
46
- /**
47
- * After each turn, compress old messages and actually replace them in the
48
- * Agent's internal state. This is the primary compression mechanism.
49
- */
50
- private compressAndReplace;
51
- /**
52
- * Safety fallback: if messages somehow exceed the threshold at LLM call time
53
- * (e.g. compressAndReplace hasn't run yet), return a truncated view using
54
- * the cached summary. Does NOT call LLM — avoids nested async delays.
55
- */
56
- private compressContext;
57
- private splitMessages;
58
- private generateSummary;
59
- private loadSnapshot;
60
- private loadSummary;
61
- private saveSummary;
62
- private saveSnapshot;
63
- private appendMessagesLog;
64
- private getTurnMessages;
65
- private finalizeTurn;
66
- resume(_agentSessionId: string): Promise<void>;
67
- stop(): Promise<void>;
68
- private resolvePendingSendStart;
69
- private rejectPendingSendStart;
70
- }
@@ -1,17 +0,0 @@
1
- import{randomUUID as _}from"node:crypto";import l from"node:fs";import g from"node:path";import{execFile as A}from"node:child_process";import{promisify as T}from"node:util";import{Agent as I,streamProxy as j}from"@mariozechner/pi-agent-core";import{streamOpenAICompletions as D}from"@mariozechner/pi-ai/openai-completions";import{Type as p}from"@sinclair/typebox";import{AgentAdapter as $,registerAgent as F}from"./adapter.js";import{buildExternalChannelInstructions as L}from"./external-channel-instructions.js";import{loadConfig as N}from"../config/index.js";import{getManagedAgentProviderConfig as O}from"./config-status.js";import{SERVERS as z}from"../region.js";import{buildAgentProcessEnv as R}from"../agent-env.js";import{buildRollingSummary as E,buildShellCommandSpec as P,cloneMessages as f,CONTEXT_TOKEN_THRESHOLD as v,createPiModel as M,estimateTokens as w,getSessionDir as q,KEEP_RECENT_MESSAGES as k,LEGACY_SUMMARY_FILENAME as U,loadAgentsMdInstructions as B,longestCommonPrefixLength as K,MESSAGES_FILENAME as G,messagesToText as J,PI_DEFAULT_MODEL_ID as H,requestProxySummary as Y,SNAPSHOT_FILENAME as W,SYSTEM_PROMPT as V,SUMMARY_FILENAME as X}from"./pi-context.js";import{buildShellCommandSpec as Et}from"./pi-context.js";const Q=T(A),Z="https://dashscope.aliyuncs.com/compatible-mode/v1";function C(r){return r.includes("entitlement_required")?"\u5F53\u524D\u8D26\u53F7\u5C1A\u672A\u5F00\u901A Nian \u6258\u7BA1\u6A21\u578B\u3002\u8BF7\u524D\u5F80\u795E\u5FF5\u300C\u5957\u9910\u4E0E\u652F\u4ED8\u300D\u5F00\u901A Pro \u6216 Team\uFF0C\u83B7\u5F97\u79EF\u5206\u540E\u91CD\u8BD5\u3002":r.includes("insufficient_credits")?"\u79EF\u5206\u4E0D\u8DB3\uFF0CNian \u6682\u65F6\u65E0\u6CD5\u56DE\u590D\u3002\u8BF7\u524D\u5F80\u795E\u5FF5\u300C\u5957\u9910\u4E0E\u652F\u4ED8\u300D\u8D2D\u4E70\u79EF\u5206\u5305\u540E\u91CD\u8BD5\u3002":r.includes("429")||r.includes("daily_quota_exceeded")||r.includes("nian_quota_exceeded")?r.includes("too quickly")||r.includes("per minute")?"Nian \u8BF7\u6C42\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002":"Nian \u4ECA\u65E5\u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6B21\u65E5\u81EA\u52A8\u6062\u590D\u3002":r}function y(r,t){return g.resolve(r,t)}async function tt(r,t,e,s){const n=P(t),{stdout:i,stderr:o}=await Q(n.file,n.args,{cwd:r,env:R(e),timeout:3e4,signal:s,maxBuffer:1024*1024,windowsHide:!0});return{stdout:i,stderr:o,shell:n.shell}}function b(r){return typeof r=="string"?r:Buffer.isBuffer(r)?r.toString("utf8"):""}function et(r){if(!r||typeof r!="object")return String(r);const t=r,e=[t.message||String(r)],s=b(t.stdout).trim(),n=b(t.stderr).trim();return s&&e.push(`---stdout---
2
- ${s}`),n&&e.push(`---stderr---
3
- ${n}`),t.code!==void 0&&e.push(`exitCode: ${String(t.code)}`),t.signal&&e.push(`signal: ${t.signal}`),e.join(`
4
- `)}function st(r,t={}){return[{name:"read_file",label:"\u8BFB\u53D6\u6587\u4EF6",description:"Read the full content of a file at the given path.",parameters:p.Object({path:p.String({description:"Absolute or relative file path"})}),async execute(e,{path:s}){let n="";try{return n=y(r,s),{content:[{type:"text",text:l.readFileSync(n,"utf-8")}],details:{path:n}}}catch(i){return{content:[{type:"text",text:`Error: ${i instanceof Error?i.message:String(i)}`}],details:{path:n}}}}},{name:"write_file",label:"\u5199\u5165\u6587\u4EF6",description:"Write content to a file, creating it or overwriting if it exists.",parameters:p.Object({path:p.String({description:"Absolute or relative file path"}),content:p.String({description:"File content to write"})}),async execute(e,{path:s,content:n}){let i="";try{return i=y(r,s),l.mkdirSync(g.dirname(i),{recursive:!0}),l.writeFileSync(i,n,"utf-8"),{content:[{type:"text",text:`Written ${n.length} bytes to ${i}`}],details:{path:i}}}catch(o){return{content:[{type:"text",text:`Error: ${o instanceof Error?o.message:String(o)}`}],details:{path:i}}}}},{name:"list_directory",label:"\u5217\u51FA\u76EE\u5F55",description:"List files and directories at the given path.",parameters:p.Object({path:p.String({description:"Directory path to list",default:"."})}),async execute(e,{path:s}){let n="";try{return n=y(r,s),{content:[{type:"text",text:l.readdirSync(n,{withFileTypes:!0}).map(h=>`${h.isDirectory()?"d":"f"} ${h.name}`).join(`
5
- `)||"(empty)"}],details:{path:n}}}catch(i){return{content:[{type:"text",text:`Error: ${i instanceof Error?i.message:String(i)}`}],details:{path:n}}}}},{name:"bash",label:"\u6267\u884C\u547D\u4EE4",description:"Execute a shell command in the working directory. Uses PowerShell on Windows and bash on macOS/Linux. Timeout: 30s.",parameters:p.Object({command:p.String({description:"Shell command to execute"})}),async execute(e,{command:s},n){try{const{stdout:i,stderr:o,shell:h}=await tt(r,s,t,n);return{content:[{type:"text",text:[i,o].filter(Boolean).join(`
6
- ---stderr---
7
- `)||"(no output)"}],details:{command:s,shell:h}}}catch(i){return{content:[{type:"text",text:`Error: ${et(i)}`}],details:{command:s,shell:P(s).shell}}}}},{name:"read_image",label:"\u8BFB\u53D6\u56FE\u7247",description:"Read an image file and return its content for visual analysis. Supports png, jpg, jpeg, gif, webp. Max 10 MB.",parameters:p.Object({path:p.String({description:"Absolute or relative path to the image file"})}),async execute(e,{path:s}){let n;try{n=y(r,s)}catch(a){return{content:[{type:"text",text:`Error: ${a instanceof Error?a.message:String(a)}`}],details:{path:s}}}const i=g.extname(n).toLowerCase().slice(1),h={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp"}[i];if(!h)return{content:[{type:"text",text:`Error: unsupported image type ".${i}". Supported: png, jpg, jpeg, gif, webp`}],details:{path:n}};try{const a=l.statSync(n);return a.size>10*1024*1024?{content:[{type:"text",text:`Error: image too large (${(a.size/1024/1024).toFixed(1)} MB, max 10 MB)`}],details:{path:n}}:{content:[{type:"image",data:l.readFileSync(n).toString("base64"),mimeType:h}],details:{path:n,mimeType:h,size:a.size}}}catch(a){return{content:[{type:"text",text:`Error: ${a instanceof Error?a.message:String(a)}`}],details:{path:n}}}}}]}class nt extends ${type="pi";agent=null;sessionId=null;workDir=null;seq=0;runId="";emittedLengths=new Map;terminalState="open";authToken=null;proxyUrl=null;providerConfig;sessionDir=null;messagesPath=null;snapshotPath=null;summaryPath=null;cachedSummary=null;restoredMessages=[];compressing=!1;lastSummaryMsgCount=0;pendingBaseMessages=[];finalizePromise=Promise.resolve();sendGeneration=0;externalChannel=null;shennianSessionId=null;extraEnv={};pendingSendStart=null;configure(t){this.shennianSessionId=t.sessionId??null,this.externalChannel=t.externalChannel??null,this.extraEnv=t.env??{}}async start(t,e,s){this.sessionId=t,this.workDir=e,this.seq=0,this.sessionDir=q(t),this.messagesPath=g.join(this.sessionDir,G),this.snapshotPath=g.join(this.sessionDir,W),this.summaryPath=g.join(this.sessionDir,X),this.loadSnapshot(),this.loadSummary()}async send(t,e){const s=++this.sendGeneration,n=this.agent&&this.terminalState==="open"?f(this.pendingBaseMessages):null;n&&(this.agent?.abort(),this.agent=null,this.restoredMessages=n,this.finalizePromise=Promise.resolve());const i=N(),o=i.machineToken??i.accessToken;if(!o){this.emit("agentEvent",{state:"error",runId:this.runId,seq:++this.seq,message:"\u672A\u914D\u5BF9\uFF0C\u8BF7\u5148\u8FD0\u884C shennian \u5B8C\u6210\u673A\u5668\u914D\u5BF9"});return}this.authToken=o,this.proxyUrl=(i.serverUrl??z.cn.url).replace(/\/$/,"");const h=O("pi"),a=i.apiKeys?.dashscope?.trim();this.providerConfig=h??(a?{agent:"pi",token:a,updatedAt:""}:void 0),this.runId=_(),this.seq=0,this.emittedLengths.clear(),this.terminalState="open",this.agent||this.initAgent(),await this.finalizePromise.catch(()=>{}),this.agent?.setModel(M(e??H)),this.pendingBaseMessages=f(this.agent?.state.messages??[]);const u=this.runId,m=new Promise((c,d)=>{this.pendingSendStart={runId:u,resolve:c,reject:d}});this.emit("agentEvent",{state:"init",runId:u,seq:++this.seq}),this.agent.prompt(t).then(async()=>{s===this.sendGeneration&&(this.resolvePendingSendStart(u),await this.finalizePromise.catch(()=>{}))}).catch(c=>{if(s!==this.sendGeneration||(this.rejectPendingSendStart(u,c),this.terminalState!=="open"))return;this.terminalState="error";const d=c instanceof Error?c.message:String(c);this.emit("agentEvent",{state:"error",runId:u,seq:++this.seq,message:C(d)})}),await m}async getStatus(){const t=!!(this.runId&&this.terminalState==="open");return{active:t,runId:this.runId||null,runPhase:null,canStop:t}}initAgent(){const t=this.workDir??process.cwd(),e=st(t,this.extraEnv),s=B(t),n=new I({initialState:{systemPrompt:[V,s,`\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\uFF1A${t}`,L(this.externalChannel,t,this.shennianSessionId??void 0)].filter(Boolean).join(`
8
-
9
- `),model:M(),tools:e},streamFn:(i,o,h)=>{const a=this.providerConfig;return a?.token?D(M(i.id,{provider:"dashscope",baseUrl:a.baseUrl||Z,compat:{supportsDeveloperRole:!1,supportsStore:!1,supportsReasoningEffort:!1,maxTokensField:"max_tokens",thinkingFormat:"qwen"}}),o,{...h,apiKey:a.token}):j(i,o,{...h,authToken:this.authToken,proxyUrl:this.proxyUrl})},transformContext:i=>this.compressContext(i)});this.agent=n,this.restoredMessages.length>0?n.replaceMessages(f(this.restoredMessages)):this.cachedSummary&&(n.appendMessage({role:"user",content:[{type:"text",text:`[\u4E4B\u524D\u7684\u5BF9\u8BDD\u6458\u8981]
10
- ${this.cachedSummary}`}],timestamp:Date.now()}),n.appendMessage({role:"assistant",content:[{type:"text",text:"\u597D\u7684\uFF0C\u6211\u5DF2\u4E86\u89E3\u4E4B\u524D\u7684\u5BF9\u8BDD\u4E0A\u4E0B\u6587\uFF0C\u8BF7\u7EE7\u7EED\u3002"}],timestamp:Date.now()})),n.subscribe(i=>{if(this.agent!==n||this.terminalState!=="open")return;const o=++this.seq,h=this.runId;switch(i.type){case"agent_start":this.resolvePendingSendStart(h),this.emit("agentEvent",{state:"start",runId:h,seq:o});break;case"message_update":{const a=i.message;if(a.role!=="assistant")break;const u=a.content??[];for(let m=0;m<u.length;m++){const c=u[m];if(c.type==="text"&&c.text){const d=`text:${m}`,S=this.emittedLengths.get(d)??0;if(c.text.length>S){const x=c.text.slice(S);this.emittedLengths.set(d,c.text.length),this.emit("agentEvent",{state:"delta",runId:h,seq:o,text:x})}}else if(c.type==="thinking"&&c.thinking){const d=`thinking:${m}`,S=this.emittedLengths.get(d)??0;if(c.thinking.length>S){const x=c.thinking.slice(S);this.emittedLengths.set(d,c.thinking.length),this.emit("agentEvent",{state:"delta",runId:h,seq:o,text:x,thinking:!0})}}}break}case"tool_execution_start":this.emit("agentEvent",{state:"tool-call",runId:h,seq:o,name:i.toolName,args:i.args});break;case"tool_execution_end":this.emit("agentEvent",{state:"tool-result",runId:h,seq:o,name:i.toolName,result:typeof i.result=="string"?i.result:JSON.stringify(i.result)});break;case"agent_end":{const a=i.messages,u=[...a].reverse().find(d=>d.role==="assistant"),m=u;if(m?.stopReason==="error"){this.terminalState="error",this.emit("agentEvent",{state:"error",runId:h,seq:o,message:C(m.errorMessage||"Nian \u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002")}),this.finalizePromise=this.finalizeTurn(a);break}this.terminalState="final";const c=u?.usage;this.emit("agentEvent",{state:"final",runId:h,seq:o,usage:c?{inputTokens:c.input??0,outputTokens:c.output??0}:void 0}),this.finalizePromise=this.finalizeTurn(a);break}}})}async compressAndReplace(){if(!this.agent||this.compressing)return;const t=this.agent.state.messages;if(w(t)<v)return;const s=this.splitMessages(t);if(!s)return;const n=await this.generateSummary(s.toCompress);if(!n)return;this.cachedSummary=n,this.lastSummaryMsgCount+=s.toCompress.length;const i=[{role:"user",content:[{type:"text",text:`[\u5386\u53F2\u5BF9\u8BDD\u6458\u8981]
11
- ${n}`}],timestamp:Date.now()},{role:"assistant",content:[{type:"text",text:"\u597D\u7684\uFF0C\u6211\u5DF2\u4E86\u89E3\u4E0A\u4E0B\u6587\u3002"}],timestamp:Date.now()},...s.toKeep];this.agent.replaceMessages(i)}async compressContext(t){if(w(t)<v||!this.cachedSummary)return t;const s=this.splitMessages(t);return s?[{role:"user",content:[{type:"text",text:`[\u5386\u53F2\u5BF9\u8BDD\u6458\u8981]
12
- ${this.cachedSummary}`}],timestamp:Date.now()},...s.toKeep]:t}splitMessages(t){const e=t.filter(n=>n.role!=="system");if(e.length<=k)return null;let s=e.length-k;for(;s>0&&e[s].role==="toolResult";)s--;return s<=0?null:{toCompress:e.slice(0,s),toKeep:e.slice(s)}}async generateSummary(t){if(!this.authToken||!this.proxyUrl||this.compressing)return this.cachedSummary;this.compressing=!0;try{const e=J(t);if(e.length<100)return null;const s=e.length>1e4?e.slice(0,1e4)+`
13
- ...(\u5DF2\u622A\u65AD)`:e;return await Y(this.proxyUrl,this.authToken,`\u8BF7\u5C06\u4EE5\u4E0B\u5BF9\u8BDD\u5386\u53F2\u538B\u7F29\u4E3A\u7B80\u6D01\u6458\u8981\uFF0C\u4FDD\u7559\u5173\u952E\u4FE1\u606F\uFF1A\u8BA8\u8BBA\u7684\u6587\u4EF6\u548C\u76EE\u5F55\u3001\u505A\u51FA\u7684\u6280\u672F\u51B3\u5B9A\u3001\u5F53\u524D\u4EFB\u52A1\u8FDB\u5EA6\u3001\u672A\u5B8C\u6210\u7684\u5DE5\u4F5C\u3002\u6458\u8981\u63A7\u5236\u5728 300 \u5B57\u4EE5\u5185\u3002
14
-
15
- ${s}`)}catch{return this.cachedSummary}finally{this.compressing=!1}}loadSnapshot(){if(this.snapshotPath)try{const t=l.readFileSync(this.snapshotPath,"utf-8"),e=JSON.parse(t);this.restoredMessages=Array.isArray(e.messages)?e.messages:[],this.cachedSummary=e.summary??this.cachedSummary,this.lastSummaryMsgCount=e.summarizedCount??this.lastSummaryMsgCount}catch{this.restoredMessages=[]}}loadSummary(){if(this.summaryPath)try{const t=l.readFileSync(this.summaryPath,"utf-8"),e=JSON.parse(t);this.cachedSummary=e.summary??null,this.lastSummaryMsgCount=e.summarizedCount??0}catch{if(!this.sessionDir)return;try{const t=g.join(this.sessionDir,U),e=l.readFileSync(t,"utf-8"),s=JSON.parse(e);this.cachedSummary=s.summary??null,this.lastSummaryMsgCount=s.summarizedCount??0}catch{}}}saveSummary(t){if(this.summaryPath)try{l.mkdirSync(g.dirname(this.summaryPath),{recursive:!0});const e=E(this.cachedSummary,t);this.cachedSummary=e,l.writeFileSync(this.summaryPath,JSON.stringify({version:1,summary:e,summarizedCount:this.lastSummaryMsgCount,updatedAt:Date.now()},null,2))}catch{}}saveSnapshot(t){if(!(!this.snapshotPath||!this.sessionId||!this.workDir))try{l.mkdirSync(g.dirname(this.snapshotPath),{recursive:!0}),l.writeFileSync(this.snapshotPath,JSON.stringify({version:1,sessionId:this.sessionId,workDir:this.workDir,summary:this.cachedSummary,summarizedCount:this.lastSummaryMsgCount,messages:t,updatedAt:Date.now()},null,2)),this.restoredMessages=f(t)}catch{}}appendMessagesLog(t){if(!(!this.messagesPath||t.length===0))try{l.mkdirSync(g.dirname(this.messagesPath),{recursive:!0});const e=t.map(s=>JSON.stringify(s)).join(`
16
- `)+`
17
- `;l.appendFileSync(this.messagesPath,e,"utf-8")}catch{}}getTurnMessages(t){const e=K(this.pendingBaseMessages,t);return f(t.slice(e))}async finalizeTurn(t){const e=f(t),s=this.getTurnMessages(e);this.appendMessagesLog(s),await this.compressAndReplace();const n=this.agent?f(this.agent.state.messages):e;this.cachedSummary||(this.cachedSummary=E(null,e)),this.saveSummary(n),this.saveSnapshot(n)}async resume(t){this.loadSnapshot(),this.loadSummary(),this.agent&&this.restoredMessages.length>0&&this.agent.replaceMessages(f(this.restoredMessages))}async stop(){if(this.rejectPendingSendStart(this.runId,new Error("Pi run stopped before dispatch completed")),await this.finalizePromise.catch(()=>{}),this.agent){const t=f(this.agent.state.messages??[]);this.saveSummary(t),this.saveSnapshot(t)}this.agent?.abort(),this.agent=null}resolvePendingSendStart(t){if(!this.pendingSendStart||this.pendingSendStart.runId!==t)return;const{resolve:e}=this.pendingSendStart;this.pendingSendStart=null,e()}rejectPendingSendStart(t,e){if(!this.pendingSendStart||this.pendingSendStart.runId!==t)return;const{reject:s}=this.pendingSendStart;this.pendingSendStart=null,s(e)}}F("pi",()=>new nt);export{nt as PiAdapter,Et as buildShellCommandSpec,C as formatNianHostedModelError};
@@ -1,144 +0,0 @@
1
- import type { ExternalChannelSessionStatus } from '@shennian/wire';
2
- export type ExternalChannelRuntimeStatus = Pick<ExternalChannelSessionStatus, 'wechatRpaRuntimeState' | 'wechatRpaLastRunAt' | 'wechatRpaLastMessageAt' | 'wechatRpaLastInterruptedAt' | 'wechatRpaPendingReplyCount' | 'wechatRpaPendingReplies' | 'wechatRpaLastError' | 'wechatRpaLastRunId' | 'wechatRpaLastTracePath' | 'wechatRpaLastTraceSummary' | 'wechatRpaRecentTaskSummaries' | 'wechatRpaPreflightChecks' | 'wechatRpaServerDecisionAvailable' | 'wechatRpaPrivacyConsentAccepted'>;
3
- export type ExternalChannelType = 'wecom' | 'websocket' | 'wechat-rpa';
4
- export type ExternalChannelConfig = {
5
- id: string;
6
- type: ExternalChannelType;
7
- name: string;
8
- sessionId?: string;
9
- managerSessionId: string;
10
- workDir: string;
11
- agentType?: string;
12
- agentSessionId?: string | null;
13
- modelId?: string | null;
14
- enabled: boolean;
15
- secretRef: string;
16
- managedBy?: 'session-sync';
17
- };
18
- export type ExternalChannelView = {
19
- id: string;
20
- type: ExternalChannelType;
21
- name: string;
22
- sessionId?: string;
23
- managerSessionId: string;
24
- workDir: string;
25
- agentType?: string;
26
- agentSessionId?: string | null;
27
- modelId?: string | null;
28
- enabled: boolean;
29
- wsUrl?: string;
30
- token?: string;
31
- tokenConfigured?: boolean;
32
- canReply?: boolean;
33
- systemPrompt?: string;
34
- wechatRpaSource?: string;
35
- wechatRpaGroups?: Array<{
36
- name: string;
37
- }>;
38
- pollIntervalMs?: number;
39
- recentLimit?: number;
40
- idleSeconds?: number;
41
- forceForeground?: boolean;
42
- noRestore?: boolean;
43
- downloadAttachments?: boolean;
44
- downloadAttachmentsDir?: string;
45
- selfNickname?: string | null;
46
- wechatRpaRuntimeState?: ExternalChannelSessionStatus['wechatRpaRuntimeState'];
47
- wechatRpaLastRunAt?: string | null;
48
- wechatRpaLastMessageAt?: string | null;
49
- wechatRpaLastInterruptedAt?: string | null;
50
- wechatRpaPendingReplyCount?: ExternalChannelSessionStatus['wechatRpaPendingReplyCount'];
51
- wechatRpaPendingReplies?: ExternalChannelSessionStatus['wechatRpaPendingReplies'];
52
- wechatRpaLastError?: string | null;
53
- wechatRpaLastRunId?: string | null;
54
- wechatRpaLastTracePath?: string | null;
55
- wechatRpaLastTraceSummary?: string | null;
56
- wechatRpaRecentTaskSummaries?: ExternalChannelSessionStatus['wechatRpaRecentTaskSummaries'];
57
- wechatRpaPreflightChecks?: ExternalChannelSessionStatus['wechatRpaPreflightChecks'];
58
- wechatRpaServerDecisionAvailable?: boolean | null;
59
- wechatRpaPrivacyConsentAccepted?: boolean | null;
60
- managedBy?: 'session-sync';
61
- };
62
- export type ExternalMessageEvent = {
63
- type: 'external.message';
64
- channelId: string;
65
- channelType: ExternalChannelType;
66
- conversationId: string;
67
- conversationName?: string | null;
68
- messageId: string;
69
- sender: {
70
- id: string;
71
- name?: string | null;
72
- };
73
- text: string;
74
- attachments: ExternalMessageAttachment[];
75
- receivedAt: string;
76
- isMentioned?: boolean;
77
- replyTarget: string;
78
- rawRef?: string | null;
79
- };
80
- export type ExternalMessageAttachment = {
81
- type: string;
82
- name?: string;
83
- url?: string;
84
- mimeType?: string;
85
- size?: number;
86
- extension?: string;
87
- localPath?: string;
88
- thumbnailPath?: string;
89
- hash?: string;
90
- availability?: 'edge-local' | 'edge-preview' | 'server-url' | 'pending-download' | 'metadata-only' | 'unavailable-large' | 'failed';
91
- machineId?: string;
92
- expiresAt?: string;
93
- providerError?: string;
94
- sourceAction?: string;
95
- materializationKind?: 'original-file' | 'clipboard-image' | 'preview-crop' | 'metadata';
96
- isOriginal?: boolean;
97
- mimeKindMatches?: boolean;
98
- };
99
- export type ExternalReplyAttachment = {
100
- kind: 'image' | 'video' | 'file';
101
- name: string;
102
- mimeType: string;
103
- size: number;
104
- dataBase64?: string;
105
- localPath?: string;
106
- url?: string;
107
- };
108
- export type ExternalReply = {
109
- channelId: string;
110
- conversationId: string;
111
- text: string;
112
- attachment?: ExternalReplyAttachment;
113
- messageId?: string;
114
- idempotencyKey?: string;
115
- };
116
- export type ExternalChannelSendResult = void | {
117
- status: 'sent' | 'queued' | 'manual-review';
118
- reason?: string;
119
- };
120
- export interface ExternalChannelAdapter {
121
- readonly type: ExternalChannelType;
122
- connect(config: ExternalChannelConfig): Promise<void>;
123
- disconnect(config: ExternalChannelConfig): Promise<void>;
124
- send(config: ExternalChannelConfig, reply: ExternalReply): Promise<ExternalChannelSendResult>;
125
- health(config: ExternalChannelConfig): Promise<{
126
- ok: boolean;
127
- message?: string;
128
- }>;
129
- defaultConversation?(config: ExternalChannelConfig): Promise<{
130
- conversationId: string;
131
- conversationName?: string;
132
- }>;
133
- runtimeStatus?(config: ExternalChannelConfig): Partial<ExternalChannelRuntimeStatus>;
134
- syncNow?(config: ExternalChannelConfig): Promise<ExternalMessageEvent[] | void>;
135
- cancelOutbound?(config: ExternalChannelConfig, input: {
136
- idempotencyKey?: string | null;
137
- replyId?: string | null;
138
- reason?: string;
139
- }): Promise<{
140
- cancelled: boolean;
141
- status?: string;
142
- record?: unknown;
143
- }>;
144
- }
@@ -1 +0,0 @@
1
-
@@ -1,8 +0,0 @@
1
- import type { ExternalChannelConfig } from './base.js';
2
- export declare class ChannelConfigRegistry {
3
- list(): ExternalChannelConfig[];
4
- get(channelId: string): ExternalChannelConfig | undefined;
5
- upsert(config: ExternalChannelConfig): void;
6
- replaceAll(channels: ExternalChannelConfig[]): void;
7
- remove(channelId: string): boolean;
8
- }
@@ -1 +0,0 @@
1
- import t from"node:fs";import s from"node:path";import{resolveShennianPath as a}from"../config/index.js";function n(){return a("channels.json")}class f{list(){try{return JSON.parse(t.readFileSync(n(),"utf-8")).channels??[]}catch{return[]}}get(e){return this.list().find(r=>r.id===e)}upsert(e){const r=this.list().filter(i=>i.id!==e.id);r.push(e),t.mkdirSync(s.dirname(n()),{recursive:!0}),t.writeFileSync(n(),JSON.stringify({channels:r},null,2))}replaceAll(e){t.mkdirSync(s.dirname(n()),{recursive:!0}),t.writeFileSync(n(),JSON.stringify({channels:e},null,2))}remove(e){const r=this.list(),i=r.filter(l=>l.id!==e);return i.length===r.length?!1:(this.replaceAll(i),!0)}}export{f as ChannelConfigRegistry};
@@ -1 +0,0 @@
1
- export declare function splitExternalReplyText(text: string): string[];
@@ -1,10 +0,0 @@
1
- const _=500,p=360,P=6;function s(t){return Array.from(t).length}function f(t,e){return Array.from(t).slice(0,e).join("")}function u(t){return t.replace(/\r\n/g,`
2
- `).replace(/[ \t]+\n/g,`
3
- `).replace(/\n[ \t]+/g,`
4
- `).trim()}function R(t){const e=[],r=t.split(/(?<=[。!?!?;;])\s*/).map(n=>n.trim()).filter(Boolean),i=r.length>1?r:Array.from(t);let l="";for(const n of i){const o=l?`${l}${r.length>1,""}${n}`:n;l&&s(o)>360?(e.push(l),l=n):l=o}return l&&e.push(l),e.flatMap(n=>{if(s(n)<=500)return[n];const o=Array.from(n),c=[];for(let a=0;a<o.length;a+=360)c.push(o.slice(a,a+360).join("").trim());return c.filter(Boolean)})}function A(t){if(t.length<=6)return t;const e=t.slice(0,5),r=t.slice(5).join(`
5
-
6
- `),i=s(r)>500?`${f(r,499)}\u2026`:r;return[...e,i].filter(Boolean)}function E(t){const e=u(t);if(!e)return[];if(s(e)<=500&&!e.includes(`
7
-
8
- `))return[e];const r=e.split(/\n{2,}/).map(o=>o.replace(/\n/g," ").replace(/\s+/g," ").trim()).filter(Boolean);if(r.length>1&&s(e)>360)return A(r.flatMap(R));const i=r.length>1?r:[e.replace(/\n/g," ").replace(/\s+/g," ").trim()],l=[];let n="";for(const o of i.flatMap(R)){const c=n?`${n}
9
-
10
- ${o}`:o;n&&s(c)>500?(l.push(n),n=o):n=c}return n&&l.push(n),A(l)}export{E as splitExternalReplyText};
@@ -1,138 +0,0 @@
1
- import type { ExternalChannelConfig, ExternalChannelView, ExternalMessageEvent, ExternalReply } from './base.js';
2
- import type { ExternalChannelSessionStatus } from '@shennian/wire';
3
- import type { WeChatRpaProductRunnerFactory } from './wechat-rpa/product-channel.js';
4
- import type { WeChatAutomationLane } from './wechat-channel/automation-lane.js';
5
- export type ChannelRuntimeOptions = {
6
- createWeChatRpaProductRunner?: WeChatRpaProductRunnerFactory;
7
- weChatAutomationLane?: WeChatAutomationLane;
8
- };
9
- export declare class ChannelRuntime {
10
- private onExternalMessage;
11
- private createReplyTarget;
12
- private configs;
13
- private secrets;
14
- private adapters;
15
- private completedReplyKeys;
16
- private recentMessages;
17
- constructor(onExternalMessage: (sessionId: string, event: ExternalMessageEvent) => void, createReplyTarget: (input: {
18
- managerSessionId: string;
19
- channelId: string;
20
- conversationId: string;
21
- messageId?: string | null;
22
- }) => string, options?: ChannelRuntimeOptions);
23
- start(): Promise<void>;
24
- stop(): Promise<void>;
25
- ingest(event: ExternalMessageEvent & {
26
- managerSessionId?: string;
27
- }): ExternalMessageEvent;
28
- reply(input: ExternalReply & {
29
- managerSessionId: string;
30
- }): Promise<{
31
- ok: true;
32
- pending?: boolean;
33
- } | {
34
- ok: false;
35
- error: string;
36
- }>;
37
- private isReplyCompleted;
38
- private markReplyCompleted;
39
- private loadReplyCompletionSet;
40
- getDefaultReplyTarget(sessionId: string): Promise<{
41
- channelId: string;
42
- conversationId: string;
43
- }>;
44
- getManagerChannel(managerSessionId: string, type: ExternalChannelConfig['type'], opts?: {
45
- includeSecret?: boolean;
46
- }): ExternalChannelView | null;
47
- getChannelById(channelId: string, opts?: {
48
- includeSecret?: boolean;
49
- }): ExternalChannelView | null;
50
- getChannelStatusById(channelId: string): ExternalChannelSessionStatus | null;
51
- getManagerChannelStatus(managerSessionId: string): ExternalChannelSessionStatus | null;
52
- listManagerChannelStatuses(): Array<{
53
- managerSessionId: string;
54
- status: {
55
- configured: boolean;
56
- connected: boolean;
57
- type?: string;
58
- channelId?: string;
59
- name?: string;
60
- };
61
- }>;
62
- listManagerExternalChannels(managerSessionId: string): ExternalChannelSessionStatus[];
63
- syncManagerWeChatRpaChannel(managerSessionId: string): Promise<{
64
- channel: ExternalChannelView;
65
- messages: ExternalMessageEvent[];
66
- recentMessages: ExternalMessageEvent[];
67
- }>;
68
- cancelManagerWeChatRpaOutbound(input: {
69
- managerSessionId: string;
70
- idempotencyKey?: string | null;
71
- replyId?: string | null;
72
- reason?: string;
73
- }): Promise<{
74
- cancelled: boolean;
75
- status?: string;
76
- channel: ExternalChannelView;
77
- }>;
78
- private recordRecentMessage;
79
- private findRecentMessageDuplicate;
80
- private getRecentMessages;
81
- upsertManagerChannel(input: {
82
- id: string;
83
- managerSessionId: string;
84
- sessionId?: string;
85
- workDir: string;
86
- type: 'websocket';
87
- name?: string;
88
- agentType?: string;
89
- agentSessionId?: string | null;
90
- modelId?: string | null;
91
- enabled: boolean;
92
- wsUrl?: string;
93
- token?: string;
94
- canReply?: boolean;
95
- systemPrompt?: string;
96
- }): Promise<ExternalChannelView>;
97
- upsertManagerWeChatRpaChannel(input: {
98
- id: string;
99
- managerSessionId: string;
100
- sessionId?: string;
101
- workDir: string;
102
- name?: string;
103
- agentType?: string;
104
- agentSessionId?: string | null;
105
- modelId?: string | null;
106
- enabled: boolean;
107
- groups: Array<{
108
- name: string;
109
- }>;
110
- canReply?: boolean;
111
- systemPrompt?: string;
112
- source?: 'wechat-channel' | 'macos-flow' | 'macos-probe' | 'windows-visual-flow' | 'wechat-rpa-lab' | 'fixture-jsonl';
113
- pollIntervalMs?: number;
114
- recentLimit?: number;
115
- idleSeconds?: number;
116
- forceForeground?: boolean;
117
- noRestore?: boolean;
118
- downloadAttachments?: boolean;
119
- downloadAttachmentsDir?: string;
120
- selfNickname?: string;
121
- selfTriggerMarker?: string;
122
- deferInitialPoll?: boolean;
123
- privacyConsentAccepted?: boolean;
124
- flowScriptPath?: string;
125
- managedBy?: 'session-sync';
126
- }): Promise<ExternalChannelView>;
127
- listChannelIdsManagedBy(managedBy: 'session-sync'): string[];
128
- deleteManagerWeChatRpaChannel(channelId: string): Promise<{
129
- removed: boolean;
130
- }>;
131
- private findConflictingWeChatRpaBinding;
132
- }
133
- export type ExternalReplySendPlanItem = {
134
- text: string;
135
- attachment?: ExternalReply['attachment'];
136
- idempotencyKey?: string;
137
- };
138
- export declare function planExternalReplySends(channelType: ExternalChannelConfig['type'], input: Pick<ExternalReply, 'text' | 'attachment' | 'idempotencyKey'>): ExternalReplySendPlanItem[];