@yanhaidao/wecom 2.3.3 → 2.3.9

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 (111) hide show
  1. package/.github/workflows/release.yml +69 -1
  2. package/README.md +213 -337
  3. package/assets/03.bot.page.png +0 -0
  4. package/changelog/v2.3.4.md +20 -0
  5. package/changelog/v2.3.9.md +22 -0
  6. package/compat-single-account.md +32 -2
  7. package/index.test.ts +34 -0
  8. package/index.ts +15 -7
  9. package/package.json +8 -7
  10. package/src/agent/api-client.upload.test.ts +1 -2
  11. package/src/agent/handler.ts +82 -9
  12. package/src/agent/index.ts +1 -1
  13. package/src/app/account-runtime.ts +245 -0
  14. package/src/app/bootstrap.ts +29 -0
  15. package/src/app/index.ts +31 -0
  16. package/src/capability/agent/delivery-service.ts +79 -0
  17. package/src/capability/agent/fallback-policy.ts +13 -0
  18. package/src/capability/agent/index.ts +3 -0
  19. package/src/capability/agent/ingress-service.ts +38 -0
  20. package/src/capability/bot/dispatch-config.ts +47 -0
  21. package/src/capability/bot/fallback-delivery.ts +178 -0
  22. package/src/capability/bot/index.ts +1 -0
  23. package/src/capability/bot/local-path-delivery.ts +215 -0
  24. package/src/capability/bot/service.ts +56 -0
  25. package/src/capability/bot/stream-delivery.ts +379 -0
  26. package/src/capability/bot/stream-finalizer.ts +120 -0
  27. package/src/capability/bot/stream-orchestrator.ts +352 -0
  28. package/src/capability/bot/types.ts +8 -0
  29. package/src/capability/index.ts +2 -0
  30. package/src/channel.lifecycle.test.ts +9 -6
  31. package/src/channel.meta.test.ts +12 -0
  32. package/src/channel.ts +48 -21
  33. package/src/config/accounts.ts +223 -283
  34. package/src/config/derived-paths.test.ts +111 -0
  35. package/src/config/derived-paths.ts +41 -0
  36. package/src/config/index.ts +10 -12
  37. package/src/config/runtime-config.ts +46 -0
  38. package/src/config/schema.ts +59 -102
  39. package/src/domain/models.ts +7 -0
  40. package/src/domain/policies.ts +36 -0
  41. package/src/dynamic-agent.ts +6 -0
  42. package/src/gateway-monitor.ts +43 -93
  43. package/src/http.ts +23 -2
  44. package/src/monitor/limits.ts +7 -0
  45. package/src/monitor/state.ts +28 -508
  46. package/src/monitor.active.test.ts +3 -3
  47. package/src/monitor.integration.test.ts +0 -1
  48. package/src/monitor.ts +64 -2603
  49. package/src/monitor.webhook.test.ts +127 -42
  50. package/src/observability/audit-log.ts +48 -0
  51. package/src/observability/legacy-operational-event-store.ts +36 -0
  52. package/src/observability/raw-envelope-log.ts +28 -0
  53. package/src/observability/status-registry.ts +13 -0
  54. package/src/observability/transport-session-view.ts +14 -0
  55. package/src/onboarding.test.ts +219 -0
  56. package/src/onboarding.ts +88 -71
  57. package/src/outbound.test.ts +5 -5
  58. package/src/outbound.ts +18 -66
  59. package/src/runtime/dispatcher.ts +52 -0
  60. package/src/runtime/index.ts +4 -0
  61. package/src/runtime/outbound-intent.ts +4 -0
  62. package/src/runtime/reply-orchestrator.test.ts +38 -0
  63. package/src/runtime/reply-orchestrator.ts +55 -0
  64. package/src/runtime/routing-bridge.ts +19 -0
  65. package/src/runtime/session-manager.ts +76 -0
  66. package/src/runtime.ts +7 -14
  67. package/src/shared/command-auth.ts +1 -17
  68. package/src/shared/media-service.ts +36 -0
  69. package/src/shared/media-types.ts +5 -0
  70. package/src/store/active-reply-store.ts +42 -0
  71. package/src/store/interfaces.ts +11 -0
  72. package/src/store/memory-store.ts +43 -0
  73. package/src/store/stream-batch-store.ts +350 -0
  74. package/src/target.ts +28 -0
  75. package/src/transport/agent-api/client.ts +44 -0
  76. package/src/transport/agent-api/core.ts +367 -0
  77. package/src/transport/agent-api/delivery.ts +41 -0
  78. package/src/transport/agent-api/media-upload.ts +11 -0
  79. package/src/transport/agent-api/reply.ts +39 -0
  80. package/src/transport/agent-callback/http-handler.ts +47 -0
  81. package/src/transport/agent-callback/inbound.ts +5 -0
  82. package/src/transport/agent-callback/reply.ts +13 -0
  83. package/src/transport/agent-callback/request-handler.ts +244 -0
  84. package/src/transport/agent-callback/session.ts +23 -0
  85. package/src/transport/bot-webhook/active-reply.ts +36 -0
  86. package/src/transport/bot-webhook/http-handler.ts +48 -0
  87. package/src/transport/bot-webhook/inbound-normalizer.ts +371 -0
  88. package/src/transport/bot-webhook/inbound.ts +5 -0
  89. package/src/transport/bot-webhook/message-shape.ts +89 -0
  90. package/src/transport/bot-webhook/protocol.ts +148 -0
  91. package/src/transport/bot-webhook/reply.ts +15 -0
  92. package/src/transport/bot-webhook/request-handler.ts +394 -0
  93. package/src/transport/bot-webhook/session.ts +23 -0
  94. package/src/transport/bot-ws/inbound.ts +109 -0
  95. package/src/transport/bot-ws/reply.ts +48 -0
  96. package/src/transport/bot-ws/sdk-adapter.ts +180 -0
  97. package/src/transport/bot-ws/session.ts +28 -0
  98. package/src/transport/http/common.ts +109 -0
  99. package/src/transport/http/registry.ts +92 -0
  100. package/src/transport/http/request-handler.ts +84 -0
  101. package/src/transport/index.ts +14 -0
  102. package/src/types/account.ts +56 -91
  103. package/src/types/config.ts +59 -112
  104. package/src/types/constants.ts +20 -35
  105. package/src/types/events.ts +21 -0
  106. package/src/types/index.ts +14 -38
  107. package/src/types/legacy-stream.ts +50 -0
  108. package/src/types/runtime-context.ts +28 -0
  109. package/src/types/runtime.ts +161 -0
  110. package/src/agent/api-client.ts +0 -383
  111. package/src/monitor/types.ts +0 -136
@@ -4,6 +4,7 @@ on:
4
4
  push:
5
5
  tags:
6
6
  - 'v*'
7
+ - 'wecom-v*'
7
8
 
8
9
  jobs:
9
10
  publish:
@@ -34,6 +35,51 @@ jobs:
34
35
  run: |
35
36
  npm i -g npm@^11.5.1
36
37
  npm -v
38
+ npm config delete always-auth || true
39
+
40
+ - name: Resolve release metadata
41
+ id: meta
42
+ run: |
43
+ set -euo pipefail
44
+ TAG="${GITHUB_REF_NAME}"
45
+ if [[ "${TAG}" == wecom-v* ]]; then
46
+ VERSION="${TAG#wecom-v}"
47
+ elif [[ "${TAG}" == v* ]]; then
48
+ VERSION="${TAG#v}"
49
+ else
50
+ echo "::error::Unsupported tag format: ${TAG}. Use v<version> or wecom-v<version>."
51
+ exit 1
52
+ fi
53
+ PKG_NAME="$(node -p "require('./package.json').name")"
54
+ PKG_VERSION="$(node -p "require('./package.json').version")"
55
+
56
+ echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
57
+ echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
58
+ echo "pkg_name=${PKG_NAME}" >> "$GITHUB_OUTPUT"
59
+ echo "pkg_version=${PKG_VERSION}" >> "$GITHUB_OUTPUT"
60
+
61
+ echo "tag=${TAG}"
62
+ echo "version_from_tag=${VERSION}"
63
+ echo "package=${PKG_NAME}@${PKG_VERSION}"
64
+
65
+ if [ "${VERSION}" != "${PKG_VERSION}" ]; then
66
+ echo "::error::Tag version (${VERSION}) does not match package.json version (${PKG_VERSION})."
67
+ exit 1
68
+ fi
69
+
70
+ - name: Check npm version already published
71
+ id: npm_check
72
+ run: |
73
+ set -euo pipefail
74
+ PKG="${{ steps.meta.outputs.pkg_name }}"
75
+ VER="${{ steps.meta.outputs.pkg_version }}"
76
+ if npm view "${PKG}@${VER}" version >/dev/null 2>&1; then
77
+ echo "exists=true" >> "$GITHUB_OUTPUT"
78
+ echo "npm version already published: ${PKG}@${VER}"
79
+ else
80
+ echo "exists=false" >> "$GITHUB_OUTPUT"
81
+ echo "npm version not published yet: ${PKG}@${VER}"
82
+ fi
37
83
 
38
84
  - name: Install Dependencies
39
85
  run: npm install --legacy-peer-deps || npm install
@@ -43,13 +89,35 @@ jobs:
43
89
 
44
90
  # 🚀 自动发布到 npm (使用 OIDC 自动授权,无需 Token)
45
91
  - name: Publish to npm
92
+ if: steps.npm_check.outputs.exists != 'true'
46
93
  run: npm publish --access public
47
94
 
95
+ - name: Prepare release notes body
96
+ id: notes
97
+ run: |
98
+ set -euo pipefail
99
+ CHANGELOG_FILE="changelog/v${{ steps.meta.outputs.version }}.md"
100
+ if [ -f "${CHANGELOG_FILE}" ]; then
101
+ echo "Using changelog file: ${CHANGELOG_FILE}"
102
+ cp "${CHANGELOG_FILE}" /tmp/release-body.md
103
+ else
104
+ echo "Changelog file missing: ${CHANGELOG_FILE}; using fallback notes."
105
+ {
106
+ echo "# @yanhaidao/wecom v${{ steps.meta.outputs.version }}"
107
+ echo
108
+ if [ "${{ steps.npm_check.outputs.exists }}" = "true" ]; then
109
+ echo "- npm publish skipped: version already exists."
110
+ else
111
+ echo "- npm publish completed."
112
+ fi
113
+ } > /tmp/release-body.md
114
+ fi
115
+
48
116
  # 自动同步发布 GitHub Release
49
117
  - name: Create GitHub Release
50
118
  uses: softprops/action-gh-release@v2
51
119
  with:
52
- body_path: changelog/${{ github.ref_name }}.md
120
+ body_path: /tmp/release-body.md
53
121
  draft: false
54
122
  prerelease: false
55
123
  env: