openclaw-multi-auto 1.5.2 → 1.5.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 (185) hide show
  1. package/dist/{audio-preflight-5FEeDooz.js → audio-preflight-DDBLZBdb.js} +4 -4
  2. package/dist/{audio-transcription-runner-B-UvoDjZ.js → audio-transcription-runner-DZbSWT9E.js} +1 -1
  3. package/dist/build-info.json +3 -3
  4. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  5. package/dist/{chrome-D45SyhQL.js → chrome-CMU2WVFh.js} +8 -8
  6. package/dist/{deliver-B9cys0EZ.js → deliver-BXVcFIHL.js} +1 -1
  7. package/dist/{deliver-runtime-DhaQJ0pI.js → deliver-runtime-DTaIS-1i.js} +3 -3
  8. package/dist/{deps-send-whatsapp.runtime-DvTL2tzN.js → deps-send-whatsapp.runtime-CIZqFAqb.js} +7 -7
  9. package/dist/extensionAPI.js +6 -6
  10. package/dist/{image-DAOPwVXi.js → image-BCVLo0qw.js} +1 -1
  11. package/dist/{image-runtime-wlCLVvVv.js → image-runtime-DtCKpMPZ.js} +3 -3
  12. package/dist/{pi-embedded-DYU79yGe.js → pi-embedded-CgQ_W6Xs.js} +24 -24
  13. package/dist/{pi-embedded-helpers-uTRAmQ4n.js → pi-embedded-helpers-CwuBTKza.js} +3 -3
  14. package/dist/plugin-sdk/accounts-CJWOBzwB.js +35 -0
  15. package/dist/plugin-sdk/accounts-DP1-L-QS.js +288 -0
  16. package/dist/plugin-sdk/accounts-DZhWlEg3.js +46 -0
  17. package/dist/plugin-sdk/active-listener-B_sLJTXM.js +50 -0
  18. package/dist/plugin-sdk/api-key-rotation-BRE4X2tf.js +181 -0
  19. package/dist/plugin-sdk/audio-preflight-DGEUDxxR.js +69 -0
  20. package/dist/plugin-sdk/audio-transcription-runner-DkoPNPYt.js +2176 -0
  21. package/dist/plugin-sdk/audit-membership-runtime-DSBHHw7o.js +58 -0
  22. package/dist/plugin-sdk/bluebubbles.js +2 -2
  23. package/dist/plugin-sdk/channel-activity-F3d0yUwy.js +94 -0
  24. package/dist/plugin-sdk/channel-web-QF7EpjeP.js +2256 -0
  25. package/dist/plugin-sdk/chrome-BXoCyCkY.js +2415 -0
  26. package/dist/plugin-sdk/commands-registry-t7cXBTfN.js +1125 -0
  27. package/dist/plugin-sdk/config-BkEnz2Po.js +17913 -0
  28. package/dist/plugin-sdk/deliver-B6AG_l67.js +1694 -0
  29. package/dist/plugin-sdk/deliver-runtime-D585kJZc.js +32 -0
  30. package/dist/plugin-sdk/deps-send-discord.runtime-a_OKY2js.js +23 -0
  31. package/dist/plugin-sdk/deps-send-imessage.runtime-Baxy9TD4.js +22 -0
  32. package/dist/plugin-sdk/deps-send-signal.runtime-BwXoCrFl.js +21 -0
  33. package/dist/plugin-sdk/deps-send-slack.runtime-CLmKjgso.js +19 -0
  34. package/dist/plugin-sdk/deps-send-telegram.runtime-BKfdBKnZ.js +24 -0
  35. package/dist/plugin-sdk/deps-send-whatsapp.runtime-BOTwkbx_.js +57 -0
  36. package/dist/plugin-sdk/diagnostic-CsP-lEkI.js +319 -0
  37. package/dist/plugin-sdk/errors-DaiAM-yU.js +54 -0
  38. package/dist/plugin-sdk/fetch-guard-DETCcJzQ.js +156 -0
  39. package/dist/plugin-sdk/fs-safe-B8y811FR.js +352 -0
  40. package/dist/plugin-sdk/image-DjTEkYZE.js +2310 -0
  41. package/dist/plugin-sdk/image-ops-BSiMpAw4.js +584 -0
  42. package/dist/plugin-sdk/image-runtime-6xPp8m5a.js +25 -0
  43. package/dist/plugin-sdk/index.js +50 -50
  44. package/dist/plugin-sdk/ir-DQ7_HbvK.js +1296 -0
  45. package/dist/plugin-sdk/irc.js +2 -2
  46. package/dist/plugin-sdk/local-roots-BUP4YBmR.js +186 -0
  47. package/dist/plugin-sdk/logger-CZY9KIoY.js +1163 -0
  48. package/dist/plugin-sdk/login-BxEKLlCo.js +57 -0
  49. package/dist/plugin-sdk/login-qr-BQIpMPr9.js +320 -0
  50. package/dist/plugin-sdk/manager-I6KbPihW.js +3917 -0
  51. package/dist/plugin-sdk/manager-runtime-CFfYYWIQ.js +15 -0
  52. package/dist/plugin-sdk/outbound-NS6UHnB6.js +212 -0
  53. package/dist/plugin-sdk/outbound-attachment-Dy6fyf6H.js +19 -0
  54. package/dist/plugin-sdk/path-alias-guards-DBjLbIX_.js +43 -0
  55. package/dist/plugin-sdk/paths-vTM3Lh3X.js +166 -0
  56. package/dist/plugin-sdk/pi-embedded-helpers-1R1gu7eX.js +9627 -0
  57. package/dist/plugin-sdk/pi-model-discovery-runtime-Do9o-dUd.js +8 -0
  58. package/dist/plugin-sdk/pi-model-discovery-v-XPUOOf.js +134 -0
  59. package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-D4sFsIks.js +354 -0
  60. package/dist/plugin-sdk/plugins-DeBZB9l_.js +864 -0
  61. package/dist/plugin-sdk/proxy-fetch-ChxOhWF4.js +38 -0
  62. package/dist/plugin-sdk/pw-ai-DEOmCSSC.js +1938 -0
  63. package/dist/plugin-sdk/qmd-manager-HyYKoEch.js +1448 -0
  64. package/dist/plugin-sdk/query-expansion-CeyKUeDW.js +1011 -0
  65. package/dist/plugin-sdk/redact-DjVX-1N3.js +319 -0
  66. package/dist/plugin-sdk/reply-DAo_Jt8K.js +97916 -0
  67. package/dist/plugin-sdk/resolve-outbound-target-B42qgQS9.js +40 -0
  68. package/dist/plugin-sdk/run-with-concurrency-Bt_ks0Qa.js +1994 -0
  69. package/dist/plugin-sdk/runtime-whatsapp-login.runtime-B6W989eF.js +10 -0
  70. package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-c_GDFy37.js +19 -0
  71. package/dist/plugin-sdk/send-CQpMudwO.js +2587 -0
  72. package/dist/plugin-sdk/send-DQHLzVyO.js +414 -0
  73. package/dist/plugin-sdk/send-DTB24bEF.js +3135 -0
  74. package/dist/plugin-sdk/send-DfHadjZ_.js +503 -0
  75. package/dist/plugin-sdk/send-XXlW2iny.js +540 -0
  76. package/dist/plugin-sdk/session-6TF6MyaC.js +169 -0
  77. package/dist/plugin-sdk/skill-commands-CkGeFUMl.js +342 -0
  78. package/dist/plugin-sdk/skills-CBkHBYPq.js +1428 -0
  79. package/dist/plugin-sdk/slash-commands.runtime-CxliuGaP.js +13 -0
  80. package/dist/plugin-sdk/slash-dispatch.runtime-DFaeYlJQ.js +52 -0
  81. package/dist/plugin-sdk/slash-skill-commands.runtime-0M0OLCxq.js +16 -0
  82. package/dist/plugin-sdk/ssrf-cFtplYtS.js +202 -0
  83. package/dist/plugin-sdk/store-5nyxY3WU.js +81 -0
  84. package/dist/plugin-sdk/subagent-registry-runtime-DCtmDwna.js +52 -0
  85. package/dist/plugin-sdk/tables-C47P4GTN.js +55 -0
  86. package/dist/plugin-sdk/target-errors-Blia4S69.js +195 -0
  87. package/dist/plugin-sdk/thinking-Bo2eosVa.js +1206 -0
  88. package/dist/plugin-sdk/tokens-DgNRBwIg.js +52 -0
  89. package/dist/plugin-sdk/tool-images-Gk_-0y2N.js +274 -0
  90. package/dist/plugin-sdk/web-CVxZbXyH.js +56 -0
  91. package/dist/plugin-sdk/whatsapp-actions-Bw0H9g-n.js +80 -0
  92. package/dist/{pw-ai-GcYO6HPE.js → pw-ai-CmphSzHx.js} +1 -1
  93. package/dist/{slash-dispatch.runtime-Dh053pQK.js → slash-dispatch.runtime-131yup2e.js} +6 -6
  94. package/dist/{subagent-registry-runtime-DSi5mnCQ.js → subagent-registry-runtime-DbSf_Je6.js} +6 -6
  95. package/dist/{web-1hWJDzNA.js → web-MR9d7KyB.js} +6 -6
  96. package/package.json +1 -1
  97. package/scripts/create-instance.sh +1 -37
  98. package/scripts/npm_publish.sh +0 -65
  99. package/scripts/npm_publish_backup.sh +185 -0
  100. package/extensions/page-action-cache/dist/actions-executor.d.ts +0 -62
  101. package/extensions/page-action-cache/dist/actions-executor.d.ts.map +0 -1
  102. package/extensions/page-action-cache/dist/actions-executor.js +0 -339
  103. package/extensions/page-action-cache/dist/actions-executor.js.map +0 -1
  104. package/extensions/page-action-cache/dist/cache-invalidator.d.ts +0 -70
  105. package/extensions/page-action-cache/dist/cache-invalidator.d.ts.map +0 -1
  106. package/extensions/page-action-cache/dist/cache-invalidator.js +0 -212
  107. package/extensions/page-action-cache/dist/cache-invalidator.js.map +0 -1
  108. package/extensions/page-action-cache/dist/cache-store.d.ts +0 -80
  109. package/extensions/page-action-cache/dist/cache-store.d.ts.map +0 -1
  110. package/extensions/page-action-cache/dist/cache-store.js +0 -361
  111. package/extensions/page-action-cache/dist/cache-store.js.map +0 -1
  112. package/extensions/page-action-cache/dist/cache-strategy.d.ts +0 -65
  113. package/extensions/page-action-cache/dist/cache-strategy.d.ts.map +0 -1
  114. package/extensions/page-action-cache/dist/cache-strategy.js +0 -237
  115. package/extensions/page-action-cache/dist/cache-strategy.js.map +0 -1
  116. package/extensions/page-action-cache/dist/hooks-entry.d.ts +0 -29
  117. package/extensions/page-action-cache/dist/hooks-entry.d.ts.map +0 -1
  118. package/extensions/page-action-cache/dist/hooks-entry.js +0 -83
  119. package/extensions/page-action-cache/dist/hooks-entry.js.map +0 -1
  120. package/extensions/page-action-cache/dist/hooks.d.ts +0 -10
  121. package/extensions/page-action-cache/dist/hooks.d.ts.map +0 -1
  122. package/extensions/page-action-cache/dist/hooks.js +0 -277
  123. package/extensions/page-action-cache/dist/hooks.js.map +0 -1
  124. package/extensions/page-action-cache/dist/index.d.ts +0 -24
  125. package/extensions/page-action-cache/dist/index.d.ts.map +0 -1
  126. package/extensions/page-action-cache/dist/index.js +0 -34
  127. package/extensions/page-action-cache/dist/index.js.map +0 -1
  128. package/extensions/page-action-cache/dist/scenario-recognizer.d.ts +0 -45
  129. package/extensions/page-action-cache/dist/scenario-recognizer.d.ts.map +0 -1
  130. package/extensions/page-action-cache/dist/scenario-recognizer.js +0 -213
  131. package/extensions/page-action-cache/dist/scenario-recognizer.js.map +0 -1
  132. package/extensions/page-action-cache/dist/security-policy.d.ts +0 -62
  133. package/extensions/page-action-cache/dist/security-policy.d.ts.map +0 -1
  134. package/extensions/page-action-cache/dist/security-policy.js +0 -219
  135. package/extensions/page-action-cache/dist/security-policy.js.map +0 -1
  136. package/extensions/page-action-cache/dist/tools.d.ts +0 -209
  137. package/extensions/page-action-cache/dist/tools.d.ts.map +0 -1
  138. package/extensions/page-action-cache/dist/tools.js +0 -383
  139. package/extensions/page-action-cache/dist/tools.js.map +0 -1
  140. package/extensions/page-action-cache/dist/types.d.ts +0 -336
  141. package/extensions/page-action-cache/dist/types.d.ts.map +0 -1
  142. package/extensions/page-action-cache/dist/types.js +0 -8
  143. package/extensions/page-action-cache/dist/types.js.map +0 -1
  144. package/extensions/page-action-cache/dist/ux-enhancer.d.ts +0 -60
  145. package/extensions/page-action-cache/dist/ux-enhancer.d.ts.map +0 -1
  146. package/extensions/page-action-cache/dist/ux-enhancer.js +0 -218
  147. package/extensions/page-action-cache/dist/ux-enhancer.js.map +0 -1
  148. package/extensions/page-action-cache/dist/variable-resolver.d.ts +0 -28
  149. package/extensions/page-action-cache/dist/variable-resolver.d.ts.map +0 -1
  150. package/extensions/page-action-cache/dist/variable-resolver.js +0 -201
  151. package/extensions/page-action-cache/dist/variable-resolver.js.map +0 -1
  152. package/extensions/page-action-cache/docs/API.md +0 -555
  153. package/extensions/page-action-cache/docs/IMPLEMENTATION.md +0 -1792
  154. package/extensions/page-action-cache/docs/INTEGRATION.md +0 -387
  155. package/extensions/page-action-cache/docs/README.md +0 -183
  156. package/extensions/page-action-cache/index.ts +0 -118
  157. package/extensions/page-action-cache/node_modules/.bin/nlc +0 -21
  158. package/extensions/page-action-cache/node_modules/.bin/node-llama-cpp +0 -21
  159. package/extensions/page-action-cache/node_modules/.bin/openclaw +0 -21
  160. package/extensions/page-action-cache/node_modules/.bin/tsc +0 -21
  161. package/extensions/page-action-cache/node_modules/.bin/tsserver +0 -21
  162. package/extensions/page-action-cache/node_modules/.bin/vitest +0 -21
  163. package/extensions/page-action-cache/openclaw.plugin.json +0 -208
  164. package/extensions/page-action-cache/package.json +0 -74
  165. package/extensions/page-action-cache/scripts/npm_publish.sh +0 -80
  166. package/extensions/page-action-cache/skills/page-action-cache/SKILL.md +0 -216
  167. package/extensions/page-action-cache/src/actions-executor.ts +0 -441
  168. package/extensions/page-action-cache/src/cache-invalidator.ts +0 -271
  169. package/extensions/page-action-cache/src/cache-store.ts +0 -457
  170. package/extensions/page-action-cache/src/cache-strategy.ts +0 -327
  171. package/extensions/page-action-cache/src/hooks-entry.ts +0 -114
  172. package/extensions/page-action-cache/src/hooks.ts +0 -332
  173. package/extensions/page-action-cache/src/index.ts +0 -89
  174. package/extensions/page-action-cache/src/scenario-recognizer.ts +0 -259
  175. package/extensions/page-action-cache/src/security-policy.ts +0 -268
  176. package/extensions/page-action-cache/src/tools.ts +0 -437
  177. package/extensions/page-action-cache/src/types.ts +0 -482
  178. package/extensions/page-action-cache/src/ux-enhancer.ts +0 -266
  179. package/extensions/page-action-cache/src/variable-resolver.ts +0 -258
  180. package/extensions/page-action-cache/tests/actions-executor.test.ts +0 -424
  181. package/extensions/page-action-cache/tests/cache-store.test.ts +0 -267
  182. package/extensions/page-action-cache/tests/integration-test.ts +0 -62
  183. package/extensions/page-action-cache/tests/scenario-recognizer.test.ts +0 -140
  184. package/extensions/page-action-cache/tests/variable-resolver.test.ts +0 -187
  185. package/extensions/page-action-cache/tsconfig.json +0 -39
@@ -118,68 +118,3 @@ PKG_NAME=$(node -e "console.log(require('./package.json').name)")
118
118
  curl -s -X PUT "https://registry-direct.npmmirror.com/${PKG_NAME}/sync?publish=true" > /dev/null && echo -e "${GREEN}[跳过]${NC}"
119
119
 
120
120
  echo -e "${GREEN}🎉 OpenClaw 发布成功!${NC}"
121
-
122
- # 8. 发布 page-action-cache 扩展
123
- echo -ne "${BLUE}📦 正在发布 page-action-cache 扩展...${NC}"
124
-
125
- # 进入扩展目录处理 workspace:* 依赖问题
126
- cd "$ROOT_DIR/extensions/page-action-cache"
127
-
128
- # 处理 package.json 中的 workspace:* 依赖(npm 不支持)
129
- TMP_PACKAGE_JSON="/tmp/page-action-cache-publish-$(date +%s).json"
130
- cp package.json "$TMP_PACKAGE_JSON"
131
-
132
- node -e "
133
- const pkg = JSON.parse(require('fs').readFileSync('$TMP_PACKAGE_JSON', 'utf8'));
134
- // 移除 workspace:* 依赖
135
- delete pkg.dependencies;
136
- // 保留 peerDependencies
137
- pkg.peerDependencies = pkg.peerDependencies || {};
138
- require('fs').writeFileSync('$TMP_PACKAGE_JSON', JSON.stringify(pkg, null, 2));
139
- "
140
-
141
- # 处理后的 package.json
142
- cp "$TMP_PACKAGE_JSON" package.json
143
-
144
- echo -ne "${GREEN}✅ 已处理 package.json(移除 workspace 依赖)${NC}"
145
-
146
- # 检查是否需要登录
147
- if ! npm whoami > /dev/null 2>&1; then
148
- echo -ne "${YELLOW}🔐 page-action-cache 扩展发布需要 npm 登录${NC}"
149
- echo -ne "${YELLOW}💡 提示: 请执行 npm login 后重新运行此脚本${NC}"
150
- rm -f "$TMP_PACKAGE_JSON"
151
- git checkout package.json 2>/dev/null || true
152
- exit 1
153
- fi
154
-
155
- # 发布扩展
156
- echo -ne "${YELLOW}🚀 正在发布到 npm...${NC}"
157
- npm publish --access public
158
-
159
- if [ $? -eq 0 ]; then
160
- echo -e "${GREEN}✅ page-action-cache 发布成功!${NC}"
161
- # 通知镜像同步
162
- curl -s -X PUT "https://registry-direct.npmmirror.com/page-action-cache/sync?publish=true" > /dev/null && echo -e "${GREEN}[完成]${NC}"
163
- else
164
- echo -e "${RED}❌ page-action-cache 发布失败${NC}"
165
- echo -e "${YELLOW}⚠️ 可能的原因:${NC}"
166
- echo -e "${YELLOW}1. 包还未发布到 npm,或者您没有发布权限${NC}"
167
- echo -e "${YELLOW}2. 建议先单独发布扩展:${NC}"
168
- echo -e "${BLUE} cd extensions/page-action-cache${NC}"
169
- echo -e "${BLUE} npm publish --access public${NC}"
170
- echo -e "${YELLOW}3. 扩展发布成功后需要重启实例才能生效${NC}"
171
- echo -e "${YELLOW} 运行: cd ~/openclaws/<instance> && ./start.sh${NC}"
172
- fi
173
-
174
- # 恢复原始 package.json
175
- git checkout package.json 2>/dev/null || true
176
- rm -f "$TMP_PACKAGE_JSON"
177
-
178
- echo -e "${GREEN}🎉 完整发布流程完成!${NC}"
179
- echo -e "${GREEN}📋 已发布:${NC}"
180
- echo -e "${GREEN} - openclaw-multi-auto (v${CUR_VERSION})${NC}"
181
- echo -e "${GREEN} - page-action-cache (latest)${NC}"
182
- echo ""
183
- echo -e "${BLUE}💡 提示:${NC}"
184
- echo -e "${BLUE} 扩展发布后,需要重启实例才能生效 page-action-cache${NC}"
185
- echo -e "${BLUE} 运行: cd ~/openclaws/<instance> && ./start.sh${NC}"
@@ -0,0 +1,185 @@
1
+ #!/usr/bin/env bash
2
+ # =================================================================
3
+ # OpenClaw 开发者发布工具 (npm 标准依赖版) - V12
4
+ # =================================================================
5
+
6
+ set -e
7
+
8
+ # 记录初始根目录
9
+ ROOT_DIR=$(pwd)
10
+
11
+ # 颜色定义
12
+ RED='\033[0;31m'
13
+ GREEN='\033[0;32m'
14
+ BLUE='\033[1;34m'
15
+ YELLOW='\033[1;33m'
16
+ NC='\033[0m'
17
+
18
+ echo -e "${BLUE}==== 开始发布流程 (标准 npm 依赖模式) ====${NC}"
19
+
20
+ # 0. 检查登录状态
21
+ echo -ne "${YELLOW}🔑 正在验证 npm 账户... ${NC}"
22
+ npm whoami > /dev/null 2>&1 || {
23
+ echo -e "${RED}[失败]${NC}\n❌ 请先执行 npm login"
24
+ exit 1
25
+ }
26
+ echo -e "${GREEN}[OK]${NC}"
27
+
28
+ # 1. 注入并校验标准依赖配置
29
+ echo -ne "${YELLOW}🔄 正在配置重定向至 @openclaw-cn/libsignal... ${NC}"
30
+
31
+ node -e "
32
+ const fs = require('fs');
33
+ const p = JSON.parse(fs.readFileSync('package.json'));
34
+
35
+ // 锁定 baileys 版本(可选)
36
+ p.dependencies['@whiskeysockets/baileys'] = '7.0.0-rc.9';
37
+
38
+ // 添加别名依赖(关键!)
39
+ p.dependencies['@whiskeysockets/libsignal-node'] = 'npm:@openclaw-cn/libsignal@2.0.1';
40
+ p.dependencies['libsignal'] = 'npm:@openclaw-cn/libsignal@2.0.1';
41
+
42
+ // 保留 overrides 仅用于本地构建一致性
43
+ const redirect = 'npm:@openclaw-cn/libsignal@2.0.1';
44
+ p.overrides = {
45
+ 'libsignal': redirect,
46
+ '@whiskeysockets/libsignal-node': redirect
47
+ };
48
+ p.pnpm = { ...p.pnpm, overrides: p.overrides };
49
+
50
+ fs.writeFileSync('package.json', JSON.stringify(p, null, 2));
51
+ "
52
+
53
+ echo -e "${GREEN}[OK]${NC}"
54
+
55
+ # 2. 准备纯净环境
56
+ echo -ne "${YELLOW}🌐 刷新依赖树 (执行标准下载)... ${NC}"
57
+
58
+ # 彻底清理锁文件和缓存,确保不走本地 link
59
+ rm -rf dist node_modules pnpm-lock.yaml 2>/dev/null || true
60
+
61
+ # 执行安装 (pnpm 会根据 overrides 自动下载 @openclaw-cn/libsignal)
62
+ if ! pnpm install --no-frozen-lockfile --registry=https://registry.npmmirror.com > .pnpm_error.log 2>&1; then
63
+ echo -e "${RED}[失败]${NC}"
64
+ grep -E "ERROR|fatal|exit code" .pnpm_error.log | tail -n 5 || cat .pnpm_error.log
65
+ exit 1
66
+ fi
67
+ echo -e "${GREEN}[OK]${NC}"
68
+
69
+ # 3. 构建
70
+ echo -ne "${YELLOW}🛠️ 执行核心构建... ${NC}"
71
+ pnpm build > /dev/null 2>&1
72
+ echo -e "${GREEN}[OK]${NC}"
73
+
74
+ echo -ne "${YELLOW}🛠️ 构建 UI 控制面板... ${NC}"
75
+ pnpm ui:build > /dev/null 2>&1
76
+ echo -e "${GREEN}[OK]${NC}"
77
+
78
+ # 4. 生成发布压缩包
79
+ echo -ne "${YELLOW}🔍 正在生成发布压缩包... ${NC}"
80
+ # 此时不再需要处理 .npmignore 的物理打包逻辑,npm 默认会打包除 node_modules 外的文件
81
+ PACK_NAME=$(npm pack 2>/dev/null)
82
+ echo -e "${GREEN}[OK]${NC}"
83
+
84
+ # 5. 模拟用户侧安装测试 (确保不再有 Git 连接)
85
+ echo -ne "${YELLOW}🧪 执行隔离环境校验... ${NC}"
86
+ TEST_DIR=$(mktemp -d)
87
+ cp "$PACK_NAME" "$TEST_DIR/"
88
+ cd "$TEST_DIR"
89
+ tar -xzf "$PACK_NAME" > /dev/null 2>&1
90
+ cd package
91
+
92
+ # 模拟最终用户,完全不依赖本地 vendor,完全走镜像站
93
+ if ! npm install --production --no-package-lock --registry=https://registry.npmmirror.com > .test_install_error.log 2>&1; then
94
+ echo -e "${RED}[安装失败]${NC}"
95
+ echo -e "${YELLOW}--- 错误追踪 (为何还在连 Git?) ---${NC}"
96
+ cat .test_install_error.log
97
+ exit 1
98
+ fi
99
+
100
+ # 核心验证:检查是否能跑通 (确保 libsignal 加载正常)
101
+ if ! node -e "require('./dist/index.js')" > .load_error.log 2>&1; then
102
+ echo -e "${RED}[加载失败]${NC}"
103
+ cat .load_error.log
104
+ exit 1
105
+ fi
106
+
107
+ cd "$ROOT_DIR"
108
+ echo -e "${GREEN}[通过]${NC}"
109
+
110
+ # 6. 正式发布
111
+ CUR_VERSION=$(node -e "console.log(require('./package.json').version)")
112
+ echo -e "${BLUE}🚀 正在发布 v${CUR_VERSION} 到 npm 官方仓库...${NC}"
113
+ npm publish "$PACK_NAME" --registry=https://registry.npmjs.org --access public
114
+
115
+ # 7. 镜像同步
116
+ echo -ne "${YELLOW}🔄 通知镜像同步... ${NC}"
117
+ PKG_NAME=$(node -e "console.log(require('./package.json').name)")
118
+ curl -s -X PUT "https://registry-direct.npmmirror.com/${PKG_NAME}/sync?publish=true" > /dev/null && echo -e "${GREEN}[跳过]${NC}"
119
+
120
+ echo -e "${GREEN}🎉 OpenClaw 发布成功!${NC}"
121
+
122
+ # 8. 发布 page-action-cache 扩展
123
+ echo -ne "${BLUE}📦 正在发布 page-action-cache 扩展...${NC}"
124
+
125
+ # 进入扩展目录处理 workspace:* 依赖问题
126
+ cd "$ROOT_DIR/extensions/page-action-cache"
127
+
128
+ # 处理 package.json 中的 workspace:* 依赖(npm 不支持)
129
+ TMP_PACKAGE_JSON="/tmp/page-action-cache-publish-$(date +%s).json"
130
+ cp package.json "$TMP_PACKAGE_JSON"
131
+
132
+ node -e "
133
+ const pkg = JSON.parse(require('fs').readFileSync('$TMP_PACKAGE_JSON', 'utf8'));
134
+ // 移除 workspace:* 依赖
135
+ delete pkg.dependencies;
136
+ // 保留 peerDependencies
137
+ pkg.peerDependencies = pkg.peerDependencies || {};
138
+ require('fs').writeFileSync('$TMP_PACKAGE_JSON', JSON.stringify(pkg, null, 2));
139
+ "
140
+
141
+ # 处理后的 package.json
142
+ cp "$TMP_PACKAGE_JSON" package.json
143
+
144
+ echo -ne "${GREEN}✅ 已处理 package.json(移除 workspace 依赖)${NC}"
145
+
146
+ # 检查是否需要登录
147
+ if ! npm whoami > /dev/null 2>&1; then
148
+ echo -ne "${YELLOW}🔐 page-action-cache 扩展发布需要 npm 登录${NC}"
149
+ echo -ne "${YELLOW}💡 提示: 请执行 npm login 后重新运行此脚本${NC}"
150
+ rm -f "$TMP_PACKAGE_JSON"
151
+ git checkout package.json 2>/dev/null || true
152
+ exit 1
153
+ fi
154
+
155
+ # 发布扩展
156
+ echo -ne "${YELLOW}🚀 正在发布到 npm...${NC}"
157
+ npm publish --access public
158
+
159
+ if [ $? -eq 0 ]; then
160
+ echo -e "${GREEN}✅ page-action-cache 发布成功!${NC}"
161
+ # 通知镜像同步
162
+ curl -s -X PUT "https://registry-direct.npmmirror.com/page-action-cache/sync?publish=true" > /dev/null && echo -e "${GREEN}[完成]${NC}"
163
+ else
164
+ echo -e "${RED}❌ page-action-cache 发布失败${NC}"
165
+ echo -e "${YELLOW}⚠️ 可能的原因:${NC}"
166
+ echo -e "${YELLOW}1. 包还未发布到 npm,或者您没有发布权限${NC}"
167
+ echo -e "${YELLOW}2. 建议先单独发布扩展:${NC}"
168
+ echo -e "${BLUE} cd extensions/page-action-cache${NC}"
169
+ echo -e "${BLUE} npm publish --access public${NC}"
170
+ echo -e "${YELLOW}3. 扩展发布成功后需要重启实例才能生效${NC}"
171
+ echo -e "${YELLOW} 运行: cd ~/openclaws/<instance> && ./start.sh${NC}"
172
+ fi
173
+
174
+ # 恢复原始 package.json
175
+ git checkout package.json 2>/dev/null || true
176
+ rm -f "$TMP_PACKAGE_JSON"
177
+
178
+ echo -e "${GREEN}🎉 完整发布流程完成!${NC}"
179
+ echo -e "${GREEN}📋 已发布:${NC}"
180
+ echo -e "${GREEN} - openclaw-multi-auto (v${CUR_VERSION})${NC}"
181
+ echo -e "${GREEN} - page-action-cache (latest)${NC}"
182
+ echo ""
183
+ echo -e "${BLUE}💡 提示:${NC}"
184
+ echo -e "${BLUE} 扩展发布后,需要重启实例才能生效 page-action-cache${NC}"
185
+ echo -e "${BLUE} 运行: cd ~/openclaws/<instance> && ./start.sh${NC}"
@@ -1,62 +0,0 @@
1
- /**
2
- * Actions Executor
3
- * 操作执行器 - 执行缓存的原子化操作
4
- */
5
- import type { AtomicAction, ExecutionResult, PwAi, VariableMap } from "./types.js";
6
- /**
7
- * 操作执行器
8
- */
9
- export declare class ActionsExecutor {
10
- private pw;
11
- private cdpUrl;
12
- constructor(cdpUrl?: string);
13
- /**
14
- * 设置 Playwright 客户端
15
- */
16
- setPlaywrightClient(pw: PwAi): void;
17
- /**
18
- * 设置 CDP URL
19
- */
20
- setCdpUrl(cdpUrl: string): void;
21
- /**
22
- * 执行单个操作
23
- */
24
- execute(action: AtomicAction, variables?: VariableMap): Promise<ExecutionResult>;
25
- /**
26
- * 批量执行操作
27
- */
28
- executeBatch(actions: AtomicAction[], variables?: VariableMap, options?: {
29
- fromIndex?: number;
30
- toIndex?: number;
31
- atomic?: boolean;
32
- }): Promise<ExecutionResult[]>;
33
- private executeNavigate;
34
- private executeClick;
35
- private executeType;
36
- private executePress;
37
- private executeHover;
38
- private executeScreenshot;
39
- private executeEvaluate;
40
- /**
41
- * 应用变量到操作
42
- */
43
- private applyVariables;
44
- /**
45
- * 替换操作中的模板变量
46
- */
47
- private replaceTemplateVariables;
48
- /**
49
- * 格式化操作列表
50
- */
51
- formatActions(actions: AtomicAction[]): string;
52
- /**
53
- * 格式化单个操作
54
- */
55
- private formatAction;
56
- /**
57
- * 格式化执行结果
58
- */
59
- formatExecutionResults(results: ExecutionResult[]): string;
60
- }
61
- export declare function getActionsExecutor(cdpUrl?: string): ActionsExecutor;
62
- //# sourceMappingURL=actions-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"actions-executor.d.ts","sourceRoot":"","sources":["../src/actions-executor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,WAAW,EAQZ,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,CAAC,EAAE,MAAM;IAM3B;;OAEG;IACH,mBAAmB,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI;IAInC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,YAAY,EACpB,SAAS,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,eAAe,CAAC;IAiE3B;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,CAAC,EAAE,WAAW,EACvB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GACA,OAAO,CAAC,eAAe,EAAE,CAAC;YA0Bf,eAAe;YAcf,YAAY;YAgBZ,WAAW;YAgBX,YAAY;YAaZ,YAAY;YAaZ,iBAAiB;YAWjB,eAAe;IAiB7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAuCtB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmChC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM;IAM9C;;OAEG;IACH,OAAO,CAAC,YAAY;IA+DpB;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM;CAW3D;AAQD,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,CAKnE"}
@@ -1,339 +0,0 @@
1
- /**
2
- * Actions Executor
3
- * 操作执行器 - 执行缓存的原子化操作
4
- */
5
- // ============================================================================
6
- // Actions Executor 类
7
- // ============================================================================
8
- /**
9
- * 操作执行器
10
- */
11
- export class ActionsExecutor {
12
- pw = null;
13
- cdpUrl = "";
14
- constructor(cdpUrl) {
15
- if (cdpUrl) {
16
- this.cdpUrl = cdpUrl;
17
- }
18
- }
19
- /**
20
- * 设置 Playwright 客户端
21
- */
22
- setPlaywrightClient(pw) {
23
- this.pw = pw;
24
- }
25
- /**
26
- * 设置 CDP URL
27
- */
28
- setCdpUrl(cdpUrl) {
29
- this.cdpUrl = cdpUrl;
30
- }
31
- /**
32
- * 执行单个操作
33
- */
34
- async execute(action, variables) {
35
- const startTime = Date.now();
36
- try {
37
- // 应用变量
38
- const resolvedAction = this.applyVariables(action, variables);
39
- // 根据操作类型执行
40
- switch (resolvedAction.type) {
41
- case "navigate":
42
- await this.executeNavigate(resolvedAction);
43
- break;
44
- case "click":
45
- await this.executeClick(resolvedAction);
46
- break;
47
- case "type":
48
- await this.executeType(resolvedAction);
49
- break;
50
- case "press":
51
- await this.executePress(resolvedAction);
52
- break;
53
- case "hover":
54
- await this.executeHover(resolvedAction);
55
- break;
56
- case "screenshot":
57
- await this.executeScreenshot(resolvedAction);
58
- break;
59
- case "scroll":
60
- case "wait":
61
- case "select":
62
- case "focus":
63
- case "drag":
64
- case "upload":
65
- await this.executeEvaluate(resolvedAction);
66
- break;
67
- case "composite":
68
- // 复合操作暂不实现
69
- throw new Error("Composite actions not yet implemented");
70
- default:
71
- throw new Error(`Unsupported action type: ${action.type}`);
72
- }
73
- return {
74
- action: action.type,
75
- success: true,
76
- duration: Date.now() - startTime,
77
- };
78
- }
79
- catch (error) {
80
- return {
81
- action: action.type,
82
- success: false,
83
- error: error instanceof Error ? error.message : String(error),
84
- duration: Date.now() - startTime,
85
- };
86
- }
87
- }
88
- /**
89
- * 批量执行操作
90
- */
91
- async executeBatch(actions, variables, options) {
92
- const from = options?.fromIndex ?? 0;
93
- const to = options?.toIndex !== undefined ? options.toIndex + 1 : actions.length;
94
- const atomic = options?.atomic ?? false;
95
- const results = [];
96
- const actionsToExecute = actions.slice(from, to);
97
- for (const action of actionsToExecute) {
98
- const result = await this.execute(action, variables);
99
- results.push(result);
100
- // 原子执行:失败则停止
101
- if (atomic && !result.success) {
102
- break;
103
- }
104
- }
105
- return results;
106
- }
107
- // -------------------------------------------------------------------------
108
- // 具体操作实现
109
- // -------------------------------------------------------------------------
110
- async executeNavigate(action) {
111
- if (!this.pw) {
112
- throw new Error("Playwright client not set");
113
- }
114
- await this.pw.navigateViaPlaywright({
115
- cdpUrl: action.cdpUrl || this.cdpUrl,
116
- targetId: action.targetId,
117
- url: action.url,
118
- waitUntil: action.navigationPolicy?.waitUntil || "domcontentloaded",
119
- timeout: action.navigationPolicy?.timeout,
120
- });
121
- }
122
- async executeClick(action) {
123
- if (!this.pw) {
124
- throw new Error("Playwright client not set");
125
- }
126
- await this.pw.clickViaPlaywright({
127
- cdpUrl: action.cdpUrl || this.cdpUrl,
128
- targetId: action.targetId,
129
- ref: action.ref,
130
- doubleClick: action.doubleClick,
131
- button: action.button || "left",
132
- modifiers: action.modifiers,
133
- timeoutMs: action.timeoutMs,
134
- });
135
- }
136
- async executeType(action) {
137
- if (!this.pw) {
138
- throw new Error("Playwright client not set");
139
- }
140
- await this.pw.typeViaPlaywright({
141
- cdpUrl: action.cdpUrl || this.cdpUrl,
142
- targetId: action.targetId,
143
- ref: action.ref,
144
- text: action.text,
145
- submit: action.submit,
146
- slowly: action.slowly,
147
- timeoutMs: action.timeoutMs,
148
- });
149
- }
150
- async executePress(action) {
151
- if (!this.pw) {
152
- throw new Error("Playwright client not set");
153
- }
154
- await this.pw.pressKeyViaPlaywright({
155
- cdpUrl: action.cdpUrl || this.cdpUrl,
156
- targetId: action.targetId,
157
- key: action.key,
158
- delayMs: action.delayMs,
159
- });
160
- }
161
- async executeHover(action) {
162
- if (!this.pw) {
163
- throw new Error("Playwright client not set");
164
- }
165
- await this.pw.hoverViaPlaywright({
166
- cdpUrl: action.cdpUrl || this.cdpUrl,
167
- targetId: action.targetId,
168
- ref: action.ref,
169
- timeoutMs: action.timeoutMs,
170
- });
171
- }
172
- async executeScreenshot(action) {
173
- if (!this.pw) {
174
- throw new Error("Playwright client not set");
175
- }
176
- return this.pw.screenshotViaPlaywright({
177
- cdpUrl: action.cdpUrl || this.cdpUrl,
178
- targetId: action.targetId,
179
- });
180
- }
181
- async executeEvaluate(action) {
182
- if (!this.pw) {
183
- throw new Error("Playwright client not set");
184
- }
185
- return this.pw.evaluateViaPlaywright({
186
- cdpUrl: action.cdpUrl || this.cdpUrl,
187
- targetId: action.targetId,
188
- code: action.evaluate.code,
189
- args: action.evaluate.args,
190
- });
191
- }
192
- // -------------------------------------------------------------------------
193
- // 变量替换
194
- // -------------------------------------------------------------------------
195
- /**
196
- * 应用变量到操作
197
- */
198
- applyVariables(action, variables) {
199
- if (!variables) {
200
- return action;
201
- }
202
- // 检查是否需要变量替换
203
- if (!action.variable) {
204
- return action;
205
- }
206
- // 获取变量值
207
- const value = variables[action.variable];
208
- if (value === undefined) {
209
- // 变量未定义,返回原操作
210
- return action;
211
- }
212
- // 根据操作类型设置正确的参数
213
- const actionType = action.type;
214
- if (actionType === "type") {
215
- return { ...action, text: value };
216
- }
217
- else if (actionType === "press") {
218
- return { ...action, key: value };
219
- }
220
- else if (actionType === "navigate") {
221
- return { ...action, url: value };
222
- }
223
- else if (actionType === "scroll" || actionType === "wait" ||
224
- actionType === "select" || actionType === "focus" ||
225
- actionType === "drag" || actionType === "upload") {
226
- // evaluate 操作替换模板变量
227
- return this.replaceTemplateVariables(action, variables);
228
- }
229
- else {
230
- // 其他操作替换所有字符串参数中的模板变量
231
- return this.replaceTemplateVariables(action, variables);
232
- }
233
- }
234
- /**
235
- * 替换操作中的模板变量
236
- */
237
- replaceTemplateVariables(action, variables) {
238
- const result = { ...action };
239
- // 替换字符串类型参数中的 ${variable}
240
- for (const key of Object.keys(action)) {
241
- const value = action[key];
242
- if (typeof value === "string") {
243
- result[key] = value.replace(/\$\{([^}]+)\}/g, (match, varName) => {
244
- const replacement = variables[varName];
245
- return replacement !== undefined ? replacement : match;
246
- });
247
- }
248
- }
249
- // 特殊处理 evaluate.code(如果存在)
250
- if (result.evaluate?.code && typeof result.evaluate.code === "string") {
251
- result.evaluate.code = result.evaluate.code.replace(/\$\{([^}]+)\}/g, (match, varName) => {
252
- const replacement = variables[varName];
253
- return replacement !== undefined ? replacement : match;
254
- });
255
- }
256
- return result;
257
- }
258
- // -------------------------------------------------------------------------
259
- // 格式化输出
260
- // -------------------------------------------------------------------------
261
- /**
262
- * 格式化操作列表
263
- */
264
- formatActions(actions) {
265
- return actions
266
- .map((action, i) => this.formatAction(action, i + 1))
267
- .join("\n");
268
- }
269
- /**
270
- * 格式化单个操作
271
- */
272
- formatAction(action, index) {
273
- switch (action.type) {
274
- case "navigate":
275
- return `${index}. 导航到:${action.url}`;
276
- case "screenshot":
277
- return `${index}. 截图`;
278
- case "click":
279
- const btn = action.button || "left";
280
- const dbl = action.doubleClick ? "双击" : "";
281
- const mod = action.modifiers?.length
282
- ? `+${action.modifiers.join("+")}`
283
- : "";
284
- return `${index}. ${dbl}点击(${btn}${mod}):${action.ref}`;
285
- case "type":
286
- const txt = action.text
287
- ? `="${action.text}"`
288
- : "";
289
- const sub = action.submit ? " [提交]" : "";
290
- const slow = action.slowly ? " [慢速]" : "";
291
- return `${index}. 输入:${action.ref}${txt}${sub}${slow}`;
292
- case "press":
293
- const delay = action.delayMs
294
- ? `(${action.delayMs}ms)`
295
- : "";
296
- return `${index}. 按键:${action.key}${delay}${action.ref ? ` @ ${action.ref}` : ""}`;
297
- case "hover":
298
- return `${index}. 悬停:${action.ref}`;
299
- case "scroll":
300
- return `${index}. 滚动:${action.evaluate?.code || "向下滚动"}`;
301
- case "wait":
302
- const waitDelay = action.delay ? `(${action.delay}ms)` : "";
303
- return `${index}. 等待:${action.evaluate?.code || "默认等待"}${waitDelay}`;
304
- case "select":
305
- return `${index}. 选择:${action.ref}`;
306
- case "focus":
307
- return `${index}. 聚焦:${action.ref}`;
308
- case "drag":
309
- return `${index}. 拖拽:${action.ref}`;
310
- case "upload":
311
- return `${index}. 上传:${action.ref}`;
312
- default:
313
- return `${index}. ${action.type}:${action.ref || ""}`;
314
- }
315
- }
316
- /**
317
- * 格式化执行结果
318
- */
319
- formatExecutionResults(results) {
320
- return results
321
- .map((r, i) => {
322
- const icon = r.success ? "✅" : "❌";
323
- const time = r.duration ? `(${r.duration}ms)` : "";
324
- return `${icon} 操作 ${i + 1}: ${r.action} ${time}${r.error ? ` - ${r.error}` : ""}`;
325
- })
326
- .join("\n");
327
- }
328
- }
329
- // ============================================================================
330
- // 单例
331
- // ============================================================================
332
- let actionsExecutorInstance = null;
333
- export function getActionsExecutor(cdpUrl) {
334
- if (!actionsExecutorInstance) {
335
- actionsExecutorInstance = new ActionsExecutor(cdpUrl);
336
- }
337
- return actionsExecutorInstance;
338
- }
339
- //# sourceMappingURL=actions-executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"actions-executor.js","sourceRoot":"","sources":["../src/actions-executor.ts"],"names":[],"mappings":"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"}