qq-codex-bridge 0.1.3 → 0.1.4

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 (39) hide show
  1. package/.env.example +62 -0
  2. package/README.md +232 -287
  3. package/bin/chatgpt-desktop.js +2 -0
  4. package/bin/qq-codex-weixin-gateway.js +14 -0
  5. package/dist/apps/bridge-daemon/src/bootstrap.js +161 -31
  6. package/dist/apps/bridge-daemon/src/cli.js +5 -1
  7. package/dist/apps/bridge-daemon/src/config.js +168 -37
  8. package/dist/apps/bridge-daemon/src/http-server.js +23 -11
  9. package/dist/apps/bridge-daemon/src/main.js +163 -29
  10. package/dist/apps/bridge-daemon/src/thread-command-handler.js +309 -26
  11. package/dist/apps/chatgpt-desktop-cli/src/cli.js +191 -0
  12. package/dist/apps/weixin-gateway/src/cli.js +446 -0
  13. package/dist/apps/weixin-gateway/src/config.js +135 -0
  14. package/dist/apps/weixin-gateway/src/dev.js +2 -0
  15. package/dist/apps/weixin-gateway/src/message-store.js +50 -0
  16. package/dist/apps/weixin-gateway/src/server.js +216 -0
  17. package/dist/apps/weixin-gateway/src/state.js +163 -0
  18. package/dist/apps/weixin-gateway/src/weixin-client.js +520 -0
  19. package/dist/packages/adapters/chatgpt-desktop/src/ax-client.js +472 -0
  20. package/dist/packages/adapters/chatgpt-desktop/src/bridge-provider.js +82 -0
  21. package/dist/packages/adapters/chatgpt-desktop/src/driver.js +161 -0
  22. package/dist/packages/adapters/chatgpt-desktop/src/image-cache.js +155 -0
  23. package/dist/packages/adapters/chatgpt-desktop/src/session-registry.js +48 -0
  24. package/dist/packages/adapters/chatgpt-desktop/src/types.js +1 -0
  25. package/dist/packages/adapters/codex-desktop/src/codex-app-server-driver.js +810 -0
  26. package/dist/packages/adapters/codex-desktop/src/codex-app-ui-notification-forwarder.js +33 -0
  27. package/dist/packages/adapters/codex-desktop/src/codex-desktop-driver.js +727 -123
  28. package/dist/packages/adapters/codex-desktop/src/codex-local-rollout-reader.js +227 -0
  29. package/dist/packages/adapters/codex-desktop/src/codex-local-submission-reader.js +142 -0
  30. package/dist/packages/adapters/weixin/src/weixin-channel-adapter.js +15 -0
  31. package/dist/packages/adapters/weixin/src/weixin-http-client.js +42 -0
  32. package/dist/packages/adapters/weixin/src/weixin-sender.js +200 -0
  33. package/dist/packages/adapters/weixin/src/weixin-webhook.js +35 -0
  34. package/dist/packages/orchestrator/src/bridge-orchestrator.js +72 -25
  35. package/dist/packages/orchestrator/src/weixin-outbound-format.js +55 -0
  36. package/dist/packages/ports/src/chat.js +1 -0
  37. package/dist/packages/store/src/session-repo.js +16 -3
  38. package/dist/packages/store/src/sqlite.js +3 -0
  39. package/package.json +8 -2
package/.env.example CHANGED
@@ -4,6 +4,16 @@
4
4
  QQBOT_APP_ID=你的AppID
5
5
  QQBOT_CLIENT_SECRET=你的ClientSecret
6
6
 
7
+ # 多 QQ Bot 可选配置。启用后会覆盖上面的单 bot 入口。
8
+ # QQBOTS_JSON=[{"accountId":"main","appId":"你的AppID","clientSecret":"你的ClientSecret","markdownSupport":false},{"accountId":"shop","appId":"另一个AppID","clientSecret":"另一个ClientSecret","markdownSupport":false}]
9
+ #
10
+ # 也可以用 ID 列表 + 分账号变量:
11
+ # QQBOT_ACCOUNT_IDS=main,shop
12
+ # QQBOT_MAIN_APP_ID=你的AppID
13
+ # QQBOT_MAIN_CLIENT_SECRET=你的ClientSecret
14
+ # QQBOT_SHOP_APP_ID=另一个AppID
15
+ # QQBOT_SHOP_CLIENT_SECRET=另一个ClientSecret
16
+
7
17
  # =========================
8
18
  # Codex Desktop
9
19
  # =========================
@@ -21,6 +31,58 @@ QQ_CODEX_LISTEN_HOST=127.0.0.1
21
31
  QQ_CODEX_LISTEN_PORT=3100
22
32
  QQ_CODEX_WEBHOOK_PATH=/webhooks/qq
23
33
 
34
+ # =========================
35
+ # 微信文本通道(可选)
36
+ # =========================
37
+ # 当前支持一个真实微信 long-poll 网关:
38
+ # - 网关主动从微信侧拉取消息,再转发到 bridge
39
+ # - bridge 的微信出站仍通过本地网关 HTTP 接口回发
40
+ WEIXIN_ENABLED=false
41
+ WEIXIN_ACCOUNT_ID=default
42
+ WEIXIN_WEBHOOK_PATH=/webhooks/weixin
43
+ # WEIXIN_EGRESS_BASE_URL=http://127.0.0.1:3200
44
+ # WEIXIN_EGRESS_TOKEN=your-token
45
+ #
46
+ # 多微信账号可选配置。每个账号需要独立 webhookPath 和独立网关/egress。
47
+ # WEIXIN_ACCOUNTS_JSON=[{"accountId":"main","webhookPath":"/webhooks/weixin/main","egressBaseUrl":"http://127.0.0.1:3201","egressToken":"token-main"},{"accountId":"shop","webhookPath":"/webhooks/weixin/shop","egressBaseUrl":"http://127.0.0.1:3202","egressToken":"token-shop"}]
48
+ #
49
+ # 或使用 ID 列表 + 分账号变量:
50
+ # WEIXIN_ACCOUNT_IDS=main,shop
51
+ # WEIXIN_MAIN_WEBHOOK_PATH=/webhooks/weixin/main
52
+ # WEIXIN_MAIN_EGRESS_BASE_URL=http://127.0.0.1:3201
53
+ # WEIXIN_MAIN_EGRESS_TOKEN=token-main
54
+ # WEIXIN_SHOP_WEBHOOK_PATH=/webhooks/weixin/shop
55
+ # WEIXIN_SHOP_EGRESS_BASE_URL=http://127.0.0.1:3202
56
+ # WEIXIN_SHOP_EGRESS_TOKEN=token-shop
57
+
58
+ # 真实微信网关(可选)
59
+ # 启动方式:
60
+ # pnpm dev:weixin-gateway
61
+ # qq-codex-weixin-gateway
62
+ # 首次登录:
63
+ # qq-codex-weixin-gateway --weixin-login
64
+ WEIXIN_GATEWAY_LISTEN_HOST=127.0.0.1
65
+ WEIXIN_GATEWAY_LISTEN_PORT=3200
66
+ WEIXIN_GATEWAY_BRIDGE_BASE_URL=http://127.0.0.1:3100
67
+ WEIXIN_GATEWAY_BRIDGE_WEBHOOK_PATH=/webhooks/weixin
68
+ # WEIXIN_GATEWAY_EXPECTED_TOKEN=your-token
69
+ WEIXIN_GATEWAY_MESSAGE_STORE_PATH=runtime/weixin-gateway-messages.ndjson
70
+ WEIXIN_GATEWAY_RECENT_MESSAGE_LIMIT=100
71
+ # 单进程多微信账号网关可选配置。每个账号会启动一个 long-poll client。
72
+ # WEIXIN_GATEWAY_ACCOUNTS_JSON=[{"accountId":"main","bridgeWebhookPath":"/webhooks/weixin/main","baseUrl":"https://ilinkai.weixin.qq.com","token":"weixin-token-main","messageStorePath":"runtime/weixin-gateway-main.ndjson"},{"accountId":"shop","bridgeWebhookPath":"/webhooks/weixin/shop","baseUrl":"https://ilinkai.weixin.qq.com","token":"weixin-token-shop","messageStorePath":"runtime/weixin-gateway-shop.ndjson"}]
73
+ # 或使用 WEIXIN_GATEWAY_ACCOUNT_IDS=main,shop,并配置 WEIXIN_MAIN_TOKEN / WEIXIN_SHOP_TOKEN。
74
+ WEIXIN_BASE_URL=https://ilinkai.weixin.qq.com
75
+ # WEIXIN_TOKEN=
76
+ WEIXIN_LONG_POLL_TIMEOUT_MS=35000
77
+ WEIXIN_API_TIMEOUT_MS=15000
78
+ WEIXIN_GATEWAY_STATE_FILE_PATH=runtime/weixin-gateway-state.json
79
+ WEIXIN_LOGIN_BASE_URL=https://ilinkai.weixin.qq.com
80
+ WEIXIN_BOT_TYPE=3
81
+ WEIXIN_QR_FETCH_TIMEOUT_MS=10000
82
+ WEIXIN_QR_POLL_TIMEOUT_MS=35000
83
+ WEIXIN_QR_TOTAL_TIMEOUT_MS=480000
84
+ WEIXIN_GATEWAY_STATE_WATCH_INTERVAL_MS=1000
85
+
24
86
  # 是否启用 QQ markdown 文本发送。
25
87
  # 默认推荐保持关闭,让普通文本尽量按原生聊天气泡渲染。
26
88
  QQBOT_MARKDOWN_SUPPORT=false