openclaw-multi-auto 1.4.5 → 1.4.7

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 (100) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  3. package/dist/plugin-sdk/mattermost.js +3 -3
  4. package/dist/plugin-sdk/signal.js +2 -2
  5. package/docs/browser-architecture.md +602 -0
  6. package/extensions/googlechat/node_modules/.bin/openclaw +2 -2
  7. package/extensions/memory-core/node_modules/.bin/openclaw +2 -2
  8. package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
  9. package/extensions/page-action-cache/dist/actions-executor.d.ts +62 -0
  10. package/extensions/page-action-cache/dist/actions-executor.d.ts.map +1 -0
  11. package/extensions/page-action-cache/dist/actions-executor.js +339 -0
  12. package/extensions/page-action-cache/dist/actions-executor.js.map +1 -0
  13. package/extensions/page-action-cache/dist/cache-invalidator.d.ts +70 -0
  14. package/extensions/page-action-cache/dist/cache-invalidator.d.ts.map +1 -0
  15. package/extensions/page-action-cache/dist/cache-invalidator.js +212 -0
  16. package/extensions/page-action-cache/dist/cache-invalidator.js.map +1 -0
  17. package/extensions/page-action-cache/dist/cache-store.d.ts +80 -0
  18. package/extensions/page-action-cache/dist/cache-store.d.ts.map +1 -0
  19. package/extensions/page-action-cache/dist/cache-store.js +361 -0
  20. package/extensions/page-action-cache/dist/cache-store.js.map +1 -0
  21. package/extensions/page-action-cache/dist/cache-strategy.d.ts +65 -0
  22. package/extensions/page-action-cache/dist/cache-strategy.d.ts.map +1 -0
  23. package/extensions/page-action-cache/dist/cache-strategy.js +237 -0
  24. package/extensions/page-action-cache/dist/cache-strategy.js.map +1 -0
  25. package/extensions/page-action-cache/dist/hooks-entry.d.ts +18 -0
  26. package/extensions/page-action-cache/dist/hooks-entry.d.ts.map +1 -0
  27. package/extensions/page-action-cache/dist/hooks-entry.js +27 -0
  28. package/extensions/page-action-cache/dist/hooks-entry.js.map +1 -0
  29. package/extensions/page-action-cache/dist/hooks.d.ts +10 -0
  30. package/extensions/page-action-cache/dist/hooks.d.ts.map +1 -0
  31. package/extensions/page-action-cache/dist/hooks.js +277 -0
  32. package/extensions/page-action-cache/dist/hooks.js.map +1 -0
  33. package/extensions/page-action-cache/dist/index.d.ts +24 -0
  34. package/extensions/page-action-cache/dist/index.d.ts.map +1 -0
  35. package/extensions/page-action-cache/dist/index.js +34 -0
  36. package/extensions/page-action-cache/dist/index.js.map +1 -0
  37. package/extensions/page-action-cache/dist/scenario-recognizer.d.ts +45 -0
  38. package/extensions/page-action-cache/dist/scenario-recognizer.d.ts.map +1 -0
  39. package/extensions/page-action-cache/dist/scenario-recognizer.js +213 -0
  40. package/extensions/page-action-cache/dist/scenario-recognizer.js.map +1 -0
  41. package/extensions/page-action-cache/dist/security-policy.d.ts +62 -0
  42. package/extensions/page-action-cache/dist/security-policy.d.ts.map +1 -0
  43. package/extensions/page-action-cache/dist/security-policy.js +219 -0
  44. package/extensions/page-action-cache/dist/security-policy.js.map +1 -0
  45. package/extensions/page-action-cache/dist/tools.d.ts +209 -0
  46. package/extensions/page-action-cache/dist/tools.d.ts.map +1 -0
  47. package/extensions/page-action-cache/dist/tools.js +383 -0
  48. package/extensions/page-action-cache/dist/tools.js.map +1 -0
  49. package/extensions/page-action-cache/dist/types.d.ts +336 -0
  50. package/extensions/page-action-cache/dist/types.d.ts.map +1 -0
  51. package/extensions/page-action-cache/dist/types.js +8 -0
  52. package/extensions/page-action-cache/dist/types.js.map +1 -0
  53. package/extensions/page-action-cache/dist/ux-enhancer.d.ts +60 -0
  54. package/extensions/page-action-cache/dist/ux-enhancer.d.ts.map +1 -0
  55. package/extensions/page-action-cache/dist/ux-enhancer.js +218 -0
  56. package/extensions/page-action-cache/dist/ux-enhancer.js.map +1 -0
  57. package/extensions/page-action-cache/dist/variable-resolver.d.ts +28 -0
  58. package/extensions/page-action-cache/dist/variable-resolver.d.ts.map +1 -0
  59. package/extensions/page-action-cache/dist/variable-resolver.js +201 -0
  60. package/extensions/page-action-cache/dist/variable-resolver.js.map +1 -0
  61. package/extensions/page-action-cache/docs/API.md +555 -0
  62. package/extensions/page-action-cache/docs/IMPLEMENTATION.md +1792 -0
  63. package/extensions/page-action-cache/docs/INTEGRATION.md +387 -0
  64. package/extensions/page-action-cache/docs/README.md +183 -0
  65. package/extensions/page-action-cache/index.ts +118 -0
  66. package/extensions/page-action-cache/node_modules/.bin/nlc +21 -0
  67. package/extensions/page-action-cache/node_modules/.bin/node-llama-cpp +21 -0
  68. package/extensions/page-action-cache/node_modules/.bin/openclaw +21 -0
  69. package/extensions/page-action-cache/node_modules/.bin/tsc +21 -0
  70. package/extensions/page-action-cache/node_modules/.bin/tsserver +21 -0
  71. package/extensions/page-action-cache/node_modules/.bin/vitest +21 -0
  72. package/extensions/page-action-cache/openclaw.plugin.json +208 -0
  73. package/extensions/page-action-cache/package.json +76 -0
  74. package/extensions/page-action-cache/scripts/npm_publish.sh +80 -0
  75. package/extensions/page-action-cache/skills/page-action-cache/SKILL.md +216 -0
  76. package/extensions/page-action-cache/src/actions-executor.ts +441 -0
  77. package/extensions/page-action-cache/src/cache-invalidator.ts +271 -0
  78. package/extensions/page-action-cache/src/cache-store.ts +457 -0
  79. package/extensions/page-action-cache/src/cache-strategy.ts +327 -0
  80. package/extensions/page-action-cache/src/hooks-entry.ts +114 -0
  81. package/extensions/page-action-cache/src/hooks.ts +332 -0
  82. package/extensions/page-action-cache/src/index.ts +104 -0
  83. package/extensions/page-action-cache/src/scenario-recognizer.ts +259 -0
  84. package/extensions/page-action-cache/src/security-policy.ts +268 -0
  85. package/extensions/page-action-cache/src/tools.ts +437 -0
  86. package/extensions/page-action-cache/src/types.ts +482 -0
  87. package/extensions/page-action-cache/src/ux-enhancer.ts +266 -0
  88. package/extensions/page-action-cache/src/variable-resolver.ts +258 -0
  89. package/extensions/page-action-cache/tests/actions-executor.test.ts +424 -0
  90. package/extensions/page-action-cache/tests/cache-store.test.ts +267 -0
  91. package/extensions/page-action-cache/tests/integration-test.ts +62 -0
  92. package/extensions/page-action-cache/tests/scenario-recognizer.test.ts +140 -0
  93. package/extensions/page-action-cache/tests/variable-resolver.test.ts +187 -0
  94. package/extensions/page-action-cache/tsconfig.json +39 -0
  95. package/package.json +1 -1
  96. package/scripts/create-instance.sh +26 -8
  97. package/scripts/npm_publish.sh +59 -1
  98. package/scripts/publish-extension.sh +343 -0
  99. package/ui/node_modules/.bin/vite +2 -2
  100. package/ui/node_modules/.bin/vitest +2 -2
@@ -0,0 +1,343 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # ============================================================================
4
+ # OpenClaw 扩展发布工具
5
+ # 用于构建和发布扩展包到 npm
6
+ # ============================================================================
7
+
8
+ # 颜色定义
9
+ RED='\033[0;31m'
10
+ GREEN='\033[0;32m'
11
+ BLUE='\033[0;34m'
12
+ YELLOW='\033[1;33m'
13
+ NC='\033[0m'
14
+
15
+ # 扩展目录
16
+ EXTENSIONS_DIR="extensions"
17
+ EXTENSION_NAME="page-action-cache"
18
+
19
+ # 记录初始根目录
20
+ ROOT_DIR=$(pwd)
21
+
22
+ echo -e "${BLUE}==== OpenClaw 扩展发布工具 ====${NC}"
23
+ echo -e "${BLUE}扩展名称:${NC} $EXTENSION_NAME"
24
+ echo -e "${BLUE}扩展目录:${NC} $EXTENSIONS_DIR/$EXTENSION_NAME"
25
+ echo ""
26
+
27
+ # ============================================================================
28
+ # 函数定义
29
+ # ============================================================================
30
+
31
+ # 打印步骤
32
+ print_step() {
33
+ local step=$1
34
+ echo -e "${BLUE}➜${NC} $step"
35
+ }
36
+
37
+ # 打印成功
38
+ print_success() {
39
+ echo -e "${GREEN}✓${NC} $1"
40
+ }
41
+
42
+ # 打印失败
43
+ print_error() {
44
+ echo -e "${RED}✗${NC} $1"
45
+ }
46
+
47
+ # 打印警告
48
+ print_warning() {
49
+ echo -e "${YELLOW}⚠${NC} $1"
50
+ }
51
+
52
+ # 检查命令是否存在
53
+ check_command() {
54
+ if ! command -v $1 &> /dev/null; then
55
+ print_error "缺少必需命令: $1"
56
+ exit 1
57
+ fi
58
+ }
59
+
60
+ # 检查登录状态
61
+ check_npm_login() {
62
+ echo -ne "${YELLOW}🔑 正在验证 npm 登录状态...${NC}"
63
+ if ! npm whoami > /dev/null 2>&1; then
64
+ print_error "npm 未登录,请执行: npm login"
65
+ echo -e "${YELLOW}提示:${NC}"
66
+ echo " 1. 创建 npm 账户: https://www.npmjs.com/signup"
67
+ echo " 2. 执行登录: npm login"
68
+ echo " 3. 检查权限"
69
+ exit 1
70
+ fi
71
+ print_success "npm 已登录"
72
+ }
73
+
74
+ # 构建扩展
75
+ build_extension() {
76
+ cd "$ROOT_DIR/$EXTENSIONS_DIR/$EXTENSION_NAME"
77
+
78
+ print_step "构建扩展..."
79
+
80
+ # 检查 package.json 是否存在
81
+ if [ ! -f "package.json" ]; then
82
+ print_error "package.json 不存在"
83
+ exit 1
84
+ fi
85
+
86
+ # 检查 TypeScript
87
+ if [ -f "tsconfig.json" ]; then
88
+ # 使用 pnpm build (如果存在)
89
+ if [ -f "pnpm-lock.yaml" ] || [ -f "package-lock.json" ]; then
90
+ print_step "使用 pnpm 构建..."
91
+ if ! pnpm build 2>&1; then
92
+ print_error "构建失败"
93
+ return 1
94
+ fi
95
+ else
96
+ print_step "使用 npm 构建..."
97
+ if ! npm run build 2>&1; then
98
+ print_error "构建失败"
99
+ return 1
100
+ fi
101
+ fi
102
+ else
103
+ print_warning "未找到 tsconfig.json,跳过 TypeScript 构建"
104
+ fi
105
+
106
+ # 检查构建产物
107
+ if [ ! -d "dist" ]; then
108
+ print_warning "dist 目录不存在"
109
+ else
110
+ print_success "构建完成: dist/"
111
+ fi
112
+ }
113
+
114
+ # 运行测试
115
+ run_tests() {
116
+ cd "$ROOT_DIR/$EXTENSIONS_DIR/$EXTENSION_NAME"
117
+
118
+ print_step "运行测试..."
119
+
120
+ # 尝试使用 vitest
121
+ if pnpm test 2>&1; then
122
+ print_success "测试通过"
123
+ return 0
124
+ elif npm test 2>&1; then
125
+ print_success "测试通过"
126
+ return 0
127
+ else
128
+ print_warning "测试未通过或未配置"
129
+ return 1
130
+ fi
131
+ }
132
+
133
+ # 生成 tar.gz 包
134
+ create_tarball() {
135
+ cd "$ROOT_DIR/$EXTENSIONS_DIR/$EXTENSION_NAME"
136
+
137
+ print_step "生成 tar.gz 包..."
138
+
139
+ # 处理 workspace 依赖问题(npm 不支持 workspace:* 协议)
140
+ local TMP_PACKAGE_JSON="/tmp/package-publish-$(date +%s).json"
141
+ cp package.json "$TMP_PACKAGE_JSON"
142
+
143
+ node -e "
144
+ const pkg = JSON.parse(require('fs').readFileSync('$TMP_PACKAGE_JSON', 'utf8'));
145
+ // 移除 workspace:* 依赖
146
+ delete pkg.dependencies;
147
+ // 保留 peerDependencies
148
+ pkg.peerDependencies = pkg.peerDependencies || {};
149
+ require('fs').writeFileSync('$TMP_PACKAGE_JSON', JSON.stringify(pkg, null, 2));
150
+ "
151
+
152
+ # 使用处理后的 package.json 生成包
153
+ local pack_name
154
+ pack_name=$(npm pack --pack-destination /tmp/ 2>/dev/null)
155
+
156
+ if [ -z "$pack_name" ]; then
157
+ print_error "生成包失败"
158
+ # 恢复原始 package.json
159
+ rm -f "$TMP_PACKAGE_JSON"
160
+ exit 1
161
+ fi
162
+
163
+ # 移动生成的包到当前目录
164
+ mv /tmp/$pack_name ./
165
+
166
+ print_success "包已生成: $pack_name"
167
+
168
+ # 验证包内容
169
+ if [ -f "$pack_name" ]; then
170
+ echo ""
171
+ print_step "验证包内容..."
172
+ tar -tzf "$pack_name" | head -20
173
+ fi
174
+
175
+ # 清理临时文件
176
+ rm -f "$TMP_PACKAGE_JSON"
177
+ }
178
+
179
+ # 发布到 npm
180
+ publish_to_npm() {
181
+ cd "$ROOT_DIR/$EXTENSIONS_DIR/$EXTENSION_NAME"
182
+
183
+ print_step "准备发布到 npm..."
184
+
185
+ # 检查包是否存在
186
+ if [ ! -f "*.tgz" ]; then
187
+ print_error "未找到发布包"
188
+ print_step "先生成包..."
189
+ create_tarball
190
+ fi
191
+
192
+ # 查找生成的 .tgz 文件
193
+ local tarball=$(ls -1t *.tgz 2>/dev/null)
194
+
195
+ if [ -z "$tarball" ]; then
196
+ print_error "未找到 tar.gz 文件"
197
+ exit 1
198
+ fi
199
+
200
+ # 发布(直接发布当前目录,避免 npm pack 重新解析 workspace:* 依赖)
201
+ print_step "发布到 npm..."
202
+ print_warning "💡 提示:直接发布当前目录,npm 会自动处理打包"
203
+
204
+ if npm publish --access public 2>&1; then
205
+ print_success "发布成功"
206
+ else
207
+ print_error "发布失败"
208
+ exit 1
209
+ fi
210
+
211
+ # 通知镜像同步
212
+ print_step "通知镜像同步..."
213
+
214
+ local pkg_name
215
+ pkg_name=$(node -e "console.log(require('./package.json').name)")
216
+
217
+ curl -s -X PUT "https://registry-direct.npmjs.org/${pkg_name}/sync?publish=true" > /dev/null && \
218
+ print_success "镜像同步完成"
219
+ }
220
+
221
+ # 清理构建产物
222
+ cleanup_build() {
223
+ cd "$ROOT_DIR/$EXTENSIONS_DIR/$EXTENSION_NAME"
224
+
225
+ print_step "清理构建产物..."
226
+
227
+ # 保留 dist 目录,删除临时文件
228
+ if [ -d "dist" ]; then
229
+ print_success "dist 目录已保留"
230
+ fi
231
+
232
+ # 删除 .tgz 文件(如果不需要)
233
+ rm -f *.tgz 2>/dev/null || true
234
+ }
235
+
236
+ # 验证 package.json
237
+ validate_package_json() {
238
+ cd "$ROOT_DIR/$EXTENSIONS_DIR/$EXTENSION_NAME"
239
+
240
+ print_step "验证 package.json..."
241
+
242
+ # 必需字段检查
243
+ local required_fields=("name" "version" "description" "main")
244
+ local pkg_name pkg_version pkg_desc pkg_main
245
+
246
+ pkg_name=$(node -e "console.log(require('./package.json').name)")
247
+ pkg_version=$(node -e "console.log(require('./package.json').version)")
248
+ pkg_desc=$(node -e "console.log(require('./package.json').description || '')")
249
+ pkg_main=$(node -e "console.log(require('./package.json').main)")
250
+
251
+ echo " 名称: $pkg_name"
252
+ echo " 版本: $pkg_version"
253
+ echo " 描述: ${pkg_desc:-无}"
254
+ echo " 入口: $pkg_main"
255
+
256
+ # 检查必需字段
257
+ for field in "${required_fields[@]}"; do
258
+ if [ -z "$(node -e "console.log(require('./package.json').${field} || '')" ]; then
259
+ print_error "缺少必需字段: $field"
260
+ return 1
261
+ fi
262
+ done
263
+
264
+ print_success "package.json 验证通过"
265
+ }
266
+
267
+ # ============================================================================
268
+ # 主流程
269
+ # ============================================================================
270
+
271
+ # 检查必要命令
272
+ check_command "node"
273
+ check_command "npm"
274
+
275
+ # 显示菜单
276
+ if [ $# -eq 0 ]; then
277
+ echo ""
278
+ echo -e "${BLUE}OpenClaw 扩展发布工具${NC}"
279
+ echo ""
280
+ echo "用法: $0 [选项]"
281
+ echo ""
282
+ echo "选项:"
283
+ echo " build - 构建扩展"
284
+ echo " test - 运行测试"
285
+ echo " pack - 生成 tar.gz 包"
286
+ echo " publish - 发布到 npm"
287
+ echo " all - 执行完整流程: build → test → pack → publish"
288
+ echo " cleanup - 清理构建产物"
289
+ echo ""
290
+ echo "示例:"
291
+ echo " $0 all # 完整发布流程"
292
+ echo " $0 build test # 构建并测试"
293
+ echo " $0 publish # 直接发布(假设已构建)"
294
+ echo ""
295
+ exit 0
296
+ fi
297
+
298
+ # 执行指定操作
299
+ case "$1" in
300
+ build)
301
+ validate_package_json
302
+ build_extension
303
+ ;;
304
+
305
+ test)
306
+ run_tests
307
+ ;;
308
+
309
+ pack)
310
+ create_tarball
311
+ ;;
312
+
313
+ publish)
314
+ check_npm_login
315
+ validate_package_json
316
+ create_tarball
317
+ publish_to_npm
318
+ ;;
319
+
320
+ cleanup)
321
+ cleanup_build
322
+ ;;
323
+
324
+ all)
325
+ check_npm_login
326
+ validate_package_json
327
+ build_extension
328
+ run_tests
329
+ create_tarball
330
+ publish_to_npm
331
+ cleanup_build
332
+ ;;
333
+
334
+ *)
335
+ print_error "未知选项: $1"
336
+ echo ""
337
+ echo "可用选项: build, test, pack, publish, all, cleanup"
338
+ exit 1
339
+ ;;
340
+ esac
341
+
342
+ # 回到根目录
343
+ cd "$ROOT_DIR"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.4.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.4.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.4.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.5.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.5.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.5.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.4.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.4.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.4.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.5.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.5.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vite@7.3.1_@types+node@25.5.0_jiti@2.6.1_tsx@4.21.0_yaml@2.8.2/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.4.0_@vitest+browser-playwright@4._0689576d17408b4731df8353247254c0/node_modules/vitest/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.4.0_@vitest+browser-playwright@4._0689576d17408b4731df8353247254c0/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.5.0_@vitest+browser-playwright@4._3021f1419b7a5a25f7958e609c9c131d/node_modules/vitest/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.5.0_@vitest+browser-playwright@4._3021f1419b7a5a25f7958e609c9c131d/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.4.0_@vitest+browser-playwright@4._0689576d17408b4731df8353247254c0/node_modules/vitest/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.4.0_@vitest+browser-playwright@4._0689576d17408b4731df8353247254c0/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.5.0_@vitest+browser-playwright@4._3021f1419b7a5a25f7958e609c9c131d/node_modules/vitest/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.5.0_@vitest+browser-playwright@4._3021f1419b7a5a25f7958e609c9c131d/node_modules:/Users/zhoujinyu/Documents/projects/repo/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"