@openclaw/signal 2026.9.6 → 2026.9.8
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.
- package/assets/icon.png +0 -0
- package/dist/.setup/{accounts-BV6tDOTc.mjs → accounts-DMtj2E-4.mjs} +6 -35
- package/dist/.setup/api-DEB0Obj8.mjs +16 -0
- package/dist/.setup/{api-CGh4eWR8.mjs → api-DmCb6e7E.mjs} +10 -10
- package/dist/.setup/{approval-auth-BBI9BTRm.mjs → approval-auth-CszS7gwf.mjs} +7 -13
- package/dist/.setup/{approval-handler.runtime-C3vN5OWd.mjs → approval-handler.runtime-D9ofZcZW.mjs} +10 -29
- package/dist/.setup/{approval-reactions-DDQvPP_z.mjs → approval-reactions-BKkjIAoi.mjs} +25 -36
- package/dist/.setup/{channel-DhzTcFsK.mjs → channel-DrUxv5cf.mjs} +567 -136
- package/dist/.setup/{client-BseAt7F7.mjs → client-AXcDteBZ.mjs} +63 -152
- package/dist/.setup/client-adapter-c_O1ouxZ.mjs +30 -0
- package/dist/.setup/{config-schema-aQwwMGUj.mjs → config-schema-DvxZ18SD.mjs} +3 -13
- package/dist/.setup/{doctor-contract-api-Rbq_sRTI.mjs → doctor-contract-api-Db9V9gsY.mjs} +212 -91
- package/dist/.setup/{identity-YXPmgFMu.mjs → identity-B3JyPqGO.mjs} +2 -6
- package/dist/.setup/{install-signal-cli-BDbzFcU2.mjs → install-signal-cli-ChvjzM6X.mjs} +0 -4
- package/dist/.setup/legacy-transport-QIpaMNST.mjs +18 -0
- package/dist/.setup/{monitor-Dnz6Ygz5.mjs → monitor-BfwQr78f.mjs} +95 -124
- package/dist/.setup/{probe-DXT2eLnw.mjs → probe-BYLzra6D.mjs} +9 -9
- package/dist/.setup/{reaction-runtime-api-BnQGHcrB.mjs → reaction-runtime-api-DDi5x2wC.mjs} +3 -17
- package/dist/.setup/{question-reactions-C8cSEjVf.mjs → reaction-targets-CEdyjtrC.mjs} +11 -8
- package/dist/.setup/{rpc-context-CwwADZ1b.mjs → rpc-context-D26RxFIm.mjs} +1 -1
- package/dist/.setup/runtime-8sxUF217.mjs +8 -0
- package/dist/.setup/{send-B78M_eFp.mjs → send-DEjrbpIC.mjs} +25 -55
- package/dist/.setup/{channel.runtime-CG79z_Vy.mjs → setup-surface-Drt-4t3R.mjs} +4 -6
- package/dist/.setup/transport-detection-BVUDE42e.mjs +25 -0
- package/dist/.setup/{transport-policy-5VSnj5ma.mjs → transport-policy-B6C_LogW.mjs} +19 -1
- package/dist/.setup/transport-probes.runtime-DwXEHnXr.mjs +2 -0
- package/dist/api.js +10 -10
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/contract-api.js +2 -2
- package/dist/doctor-contract-api.js +1 -1
- package/dist/reaction-runtime-api.js +1 -1
- package/dist/runtime-api.js +2 -19
- package/dist/setup-entry.js +1 -1
- package/node_modules/@openclaw/fs-safe/CHANGELOG.md +102 -0
- package/node_modules/@openclaw/fs-safe/README.md +24 -6
- package/node_modules/@openclaw/fs-safe/dist/advanced.d.ts +6 -1
- package/node_modules/@openclaw/fs-safe/dist/advanced.js +3 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-durability.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-merge.js +1 -2
- package/node_modules/@openclaw/fs-safe/dist/archive-plan.d.ts +2 -7
- package/node_modules/@openclaw/fs-safe/dist/archive-read.js +9 -18
- package/node_modules/@openclaw/fs-safe/dist/archive-staging.d.ts +1 -2
- package/node_modules/@openclaw/fs-safe/dist/archive-staging.js +3 -3
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-directory.js +4 -0
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.d.ts +11 -11
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-entry.js +3 -35
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.d.ts +2 -2
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-integrity.js +2 -12
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.d.ts +7 -3
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-loader.js +13 -10
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-manifest.js +3 -1
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.d.ts +2 -3
- package/node_modules/@openclaw/fs-safe/dist/archive-zip-preflight.js +16 -8
- package/node_modules/@openclaw/fs-safe/dist/archive.d.ts +6 -3
- package/node_modules/@openclaw/fs-safe/dist/archive.js +22 -19
- package/node_modules/@openclaw/fs-safe/dist/atomic.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/copy-publication.d.ts +1 -3
- package/node_modules/@openclaw/fs-safe/dist/copy-publication.js +2 -6
- package/node_modules/@openclaw/fs-safe/dist/deny-mutation-match.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/deny-mutation-match.js +71 -0
- package/node_modules/@openclaw/fs-safe/dist/deny-mutations.js +4 -3
- package/node_modules/@openclaw/fs-safe/dist/directory-guard.d.ts +0 -1
- package/node_modules/@openclaw/fs-safe/dist/directory-guard.js +0 -3
- package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.d.ts +20 -2
- package/node_modules/@openclaw/fs-safe/dist/directory-mode-node.js +77 -1
- package/node_modules/@openclaw/fs-safe/dist/directory-receipt.js +5 -7
- package/node_modules/@openclaw/fs-safe/dist/effective-uid.js +1 -4
- package/node_modules/@openclaw/fs-safe/dist/errors.d.ts +3 -1
- package/node_modules/@openclaw/fs-safe/dist/errors.js +3 -2
- package/node_modules/@openclaw/fs-safe/dist/file-identity.js +10 -2
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-acquisition.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-admission.js +5 -1
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.d.ts +4 -11
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-held.js +1 -4
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.d.ts +3 -6
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-io.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root-options.d.ts +2 -10
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync-root.d.ts +2 -4
- package/node_modules/@openclaw/fs-safe/dist/file-lock-sync.js +2 -2
- package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.d.ts +3 -7
- package/node_modules/@openclaw/fs-safe/dist/file-store-boundary.js +7 -10
- package/node_modules/@openclaw/fs-safe/dist/file-store-prune.js +7 -6
- package/node_modules/@openclaw/fs-safe/dist/file-store.d.ts +4 -7
- package/node_modules/@openclaw/fs-safe/dist/file-store.js +19 -21
- package/node_modules/@openclaw/fs-safe/dist/guest-native-python.js +23 -31
- package/node_modules/@openclaw/fs-safe/dist/guest.js +21 -12
- package/node_modules/@openclaw/fs-safe/dist/json-document-store.d.ts +4 -9
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue-ownership.d.ts +1 -5
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.d.ts +0 -1
- package/node_modules/@openclaw/fs-safe/dist/json-durable-queue.js +2 -7
- package/node_modules/@openclaw/fs-safe/dist/local-file-access.js +2 -5
- package/node_modules/@openclaw/fs-safe/dist/local-file-descriptor.d.ts +2 -5
- package/node_modules/@openclaw/fs-safe/dist/local-roots.d.ts +2 -7
- package/node_modules/@openclaw/fs-safe/dist/move-path-cleanup.js +4 -4
- package/node_modules/@openclaw/fs-safe/dist/mutation-authority.js +5 -0
- package/node_modules/@openclaw/fs-safe/dist/native-binding.d.ts +51 -14
- package/node_modules/@openclaw/fs-safe/dist/native-pinned-write.js +8 -2
- package/node_modules/@openclaw/fs-safe/dist/native-staged-symlink.d.ts +13 -0
- package/node_modules/@openclaw/fs-safe/dist/native-staged-symlink.js +303 -0
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch-worker.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch-worker.js +54 -0
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch.d.ts +5 -0
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl-batch.js +64 -0
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/owner-dacl.js +3 -0
- package/node_modules/@openclaw/fs-safe/dist/path.js +17 -1
- package/node_modules/@openclaw/fs-safe/dist/permission-exec.d.ts +6 -0
- package/node_modules/@openclaw/fs-safe/dist/permission-exec.js +3 -6
- package/node_modules/@openclaw/fs-safe/dist/permissions-public.d.ts +3 -1
- package/node_modules/@openclaw/fs-safe/dist/permissions-public.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/permissions-windows.d.ts +3 -6
- package/node_modules/@openclaw/fs-safe/dist/permissions.d.ts +3 -10
- package/node_modules/@openclaw/fs-safe/dist/permissions.js +0 -1
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.d.ts +0 -1
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-admission.js +4 -2
- package/node_modules/@openclaw/fs-safe/dist/pinned-mutation-shared-route.d.ts +2 -8
- package/node_modules/@openclaw/fs-safe/dist/pinned-open.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/pinned-open.js +2 -3
- package/node_modules/@openclaw/fs-safe/dist/publish-copy-stage.js +4 -0
- package/node_modules/@openclaw/fs-safe/dist/read-opened-file.d.ts +2 -5
- package/node_modules/@openclaw/fs-safe/dist/regular-file.js +3 -3
- package/node_modules/@openclaw/fs-safe/dist/replace-directory.js +5 -17
- package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-buffer.js +36 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.d.ts +4 -10
- package/node_modules/@openclaw/fs-safe/dist/replace-file-copy-fallback.js +66 -38
- package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.d.ts +7 -11
- package/node_modules/@openclaw/fs-safe/dist/replace-file-descriptor.js +10 -2
- package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.d.ts +21 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-destination.js +123 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-mutation.d.ts +26 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-mutation.js +47 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.d.ts +2 -2
- package/node_modules/@openclaw/fs-safe/dist/replace-file-temp-owner.js +16 -4
- package/node_modules/@openclaw/fs-safe/dist/replace-file-types.d.ts +55 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file-types.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/replace-file.d.ts +3 -55
- package/node_modules/@openclaw/fs-safe/dist/replace-file.js +31 -11
- package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/retained-directory-replacement.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/retained-file-types.d.ts +50 -0
- package/node_modules/@openclaw/fs-safe/dist/retained-file-types.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/retained-file.d.ts +3 -0
- package/node_modules/@openclaw/fs-safe/dist/retained-file.js +121 -0
- package/node_modules/@openclaw/fs-safe/dist/root-context.js +3 -2
- package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-entry.js +28 -0
- package/node_modules/@openclaw/fs-safe/dist/root-directory-list.d.ts +9 -1
- package/node_modules/@openclaw/fs-safe/dist/root-directory-list.js +88 -37
- package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/root-file-final-admission.js +1 -6
- package/node_modules/@openclaw/fs-safe/dist/root-file.js +2 -5
- package/node_modules/@openclaw/fs-safe/dist/root-handle-context.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/root-handle-context.js +12 -0
- package/node_modules/@openclaw/fs-safe/dist/root-impl.d.ts +3 -3
- package/node_modules/@openclaw/fs-safe/dist/root-impl.js +8 -5
- package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.d.ts +2 -7
- package/node_modules/@openclaw/fs-safe/dist/root-move-noreplace.js +3 -3
- package/node_modules/@openclaw/fs-safe/dist/root-observed-path.d.ts +0 -1
- package/node_modules/@openclaw/fs-safe/dist/root-observed-path.js +0 -3
- package/node_modules/@openclaw/fs-safe/dist/root-path-observation.d.ts +4 -11
- package/node_modules/@openclaw/fs-safe/dist/root-path.js +7 -10
- package/node_modules/@openclaw/fs-safe/dist/root-paths.d.ts +2 -6
- package/node_modules/@openclaw/fs-safe/dist/root-remove-identity.d.ts +1 -3
- package/node_modules/@openclaw/fs-safe/dist/root-walk.d.ts +19 -12
- package/node_modules/@openclaw/fs-safe/dist/root-walk.js +56 -20
- package/node_modules/@openclaw/fs-safe/dist/root-write-admission.js +1 -6
- package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/root-write-complete-parent.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.d.ts +1 -0
- package/node_modules/@openclaw/fs-safe/dist/safe-path-segment.js +8 -2
- package/node_modules/@openclaw/fs-safe/dist/secret-file.d.ts +6 -2
- package/node_modules/@openclaw/fs-safe/dist/secret-file.js +12 -16
- package/node_modules/@openclaw/fs-safe/dist/secret-read-policy.js +1 -1
- package/node_modules/@openclaw/fs-safe/dist/secure-file-windows.js +5 -14
- package/node_modules/@openclaw/fs-safe/dist/secure-file.js +3 -2
- package/node_modules/@openclaw/fs-safe/dist/secure-temp-dir.js +2 -7
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-acquire.js +4 -4
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-admission-parser.d.ts +1 -2
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-handle.d.ts +2 -8
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-policy.d.ts +2 -7
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.d.ts +2 -2
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-reclaim.js +11 -12
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock-stale-admission.d.ts +1 -5
- package/node_modules/@openclaw/fs-safe/dist/sidecar-lock.js +9 -7
- package/node_modules/@openclaw/fs-safe/dist/staged-symlink-types.d.ts +39 -0
- package/node_modules/@openclaw/fs-safe/dist/staged-symlink-types.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/stat-observation.js +3 -10
- package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.d.ts +2 -0
- package/node_modules/@openclaw/fs-safe/dist/strict-file-identity.js +6 -6
- package/node_modules/@openclaw/fs-safe/dist/symlink-parents.js +58 -7
- package/node_modules/@openclaw/fs-safe/dist/temp-target.js +8 -10
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-admission.js +28 -33
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.d.ts +1 -1
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-child-admission.js +16 -17
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-descriptor.js +1 -2
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-owner.js +4 -9
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.d.ts +8 -0
- package/node_modules/@openclaw/fs-safe/dist/temp-workspace-ownership.js +52 -0
- package/node_modules/@openclaw/fs-safe/dist/test-hooks.d.ts +5 -1
- package/node_modules/@openclaw/fs-safe/dist/text-atomic.d.ts +2 -1
- package/node_modules/@openclaw/fs-safe/dist/text-atomic.js +2 -0
- package/node_modules/@openclaw/fs-safe/dist/trash.js +27 -1
- package/node_modules/@openclaw/fs-safe/dist/walk.d.ts +2 -5
- package/node_modules/@openclaw/fs-safe/dist/watch-alias.d.ts +6 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-alias.js +88 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-hints.d.ts +9 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-hints.js +93 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-native.d.ts +36 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-native.js +73 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-scan.d.ts +28 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-scan.js +300 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-stream.d.ts +8 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-stream.js +32 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-types.d.ts +60 -0
- package/node_modules/@openclaw/fs-safe/dist/watch-types.js +1 -0
- package/node_modules/@openclaw/fs-safe/dist/watch.d.ts +5 -0
- package/node_modules/@openclaw/fs-safe/dist/watch.js +530 -0
- package/node_modules/@openclaw/fs-safe/dist/windows-owner.d.ts +3 -7
- package/node_modules/@openclaw/fs-safe/dist/windows-owner.js +0 -1
- package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.cs +6 -6
- package/node_modules/@openclaw/fs-safe/dist/windows-security-bridge.ps1 +78 -3
- package/node_modules/@openclaw/fs-safe/dist/windows-security-command.d.ts +8 -0
- package/node_modules/@openclaw/fs-safe/dist/windows-security-command.js +66 -15
- package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.d.ts +4 -0
- package/node_modules/@openclaw/fs-safe/dist/windows-security-facts.js +6 -2
- package/node_modules/@openclaw/fs-safe/docs/advanced.md +4 -2
- package/node_modules/@openclaw/fs-safe/docs/archive.md +16 -0
- package/node_modules/@openclaw/fs-safe/docs/atomic.md +93 -3
- package/node_modules/@openclaw/fs-safe/docs/contributing.md +102 -4
- package/node_modules/@openclaw/fs-safe/docs/copy.md +2 -0
- package/node_modules/@openclaw/fs-safe/docs/durability.md +7 -0
- package/node_modules/@openclaw/fs-safe/docs/file-store.md +5 -0
- package/node_modules/@openclaw/fs-safe/docs/guest.md +7 -1
- package/node_modules/@openclaw/fs-safe/docs/index.md +1 -0
- package/node_modules/@openclaw/fs-safe/docs/install.md +30 -0
- package/node_modules/@openclaw/fs-safe/docs/native-helper.md +20 -4
- package/node_modules/@openclaw/fs-safe/docs/native.md +63 -1
- package/node_modules/@openclaw/fs-safe/docs/permissions.md +66 -0
- package/node_modules/@openclaw/fs-safe/docs/public-api.md +30 -3
- package/node_modules/@openclaw/fs-safe/docs/retained-file.md +115 -0
- package/node_modules/@openclaw/fs-safe/docs/root.md +35 -9
- package/node_modules/@openclaw/fs-safe/docs/secret-file.md +19 -0
- package/node_modules/@openclaw/fs-safe/docs/security-model.md +4 -1
- package/node_modules/@openclaw/fs-safe/docs/sidecar-lock.md +5 -1
- package/node_modules/@openclaw/fs-safe/docs/staged-symlink.md +124 -0
- package/node_modules/@openclaw/fs-safe/docs/store.md +3 -1
- package/node_modules/@openclaw/fs-safe/docs/temp.md +24 -4
- package/node_modules/@openclaw/fs-safe/docs/testing.md +210 -0
- package/node_modules/@openclaw/fs-safe/docs/types.md +6 -0
- package/node_modules/@openclaw/fs-safe/docs/walk.md +34 -1
- package/node_modules/@openclaw/fs-safe/docs/watch.md +251 -0
- package/node_modules/@openclaw/fs-safe/docs/writing.md +21 -0
- package/node_modules/@openclaw/fs-safe/package.json +13 -9
- package/node_modules/@openclaw/fs-safe-darwin-arm64/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-darwin-arm64/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-darwin-x64/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-darwin-x64/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-arm64-gnu/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-arm64-musl/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-arm64-musl/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-x64-gnu/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-x64-gnu/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-linux-x64-musl/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-linux-x64-musl/package.json +1 -1
- package/node_modules/@openclaw/fs-safe-win32-x64-msvc/fs-safe-native.node +0 -0
- package/node_modules/@openclaw/fs-safe-win32-x64-msvc/package.json +1 -1
- package/package.json +5 -5
- package/dist/.setup/api-B9-B1L7Q.mjs +0 -17
- package/dist/.setup/client-adapter-dvFa47YL.mjs +0 -63
- package/dist/.setup/rolldown-runtime-8H4AJuhK.mjs +0 -14
- package/dist/.setup/send.runtime-CLnCWvrM.mjs +0 -2
- package/dist/.setup/transport-detection-CoiRl7Gx.mjs +0 -576
- package/dist/.setup/transport-detection.runtime-Tlhuv3T_.mjs +0 -2
- package/dist/.setup/transport-probes.runtime-WprAyBbL.mjs +0 -2
- package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.d.ts +0 -20
- package/node_modules/@openclaw/fs-safe/dist/directory-mode-owner.js +0 -78
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
import { a as normalizeSignalTransportUrl, r as buildSignalTransportHttpUrl, s as resolveSignalAccountKey, t as assertSignalSocketTransport } from "./transport-url-CAC0JcuI.mjs";
|
|
2
|
-
import { a as isSignalManagedNativeConnectionUrlForBind, i as assignSignalManagedNativePort, o as isValidSignalManagedNativePort, r as allocateSignalManagedNativePort
|
|
2
|
+
import { a as isSignalManagedNativeConnectionUrlForBind, c as resolveLocalSignalTransportPort, i as assignSignalManagedNativePort, o as isValidSignalManagedNativePort, r as allocateSignalManagedNativePort } from "./transport-policy-B6C_LogW.mjs";
|
|
3
|
+
import { n as hasLegacySignalTransportFields, t as LEGACY_SIGNAL_TRANSPORT_FIELDS } from "./legacy-transport-QIpaMNST.mjs";
|
|
4
|
+
import "node:module";
|
|
3
5
|
import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
6
|
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
5
|
-
|
|
7
|
+
//#region \0rolldown/runtime.js
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __exportAll = (all, no_symbols) => {
|
|
13
|
+
let target = {};
|
|
14
|
+
for (var name in all) __defProp(target, name, {
|
|
15
|
+
get: all[name],
|
|
16
|
+
enumerable: true
|
|
17
|
+
});
|
|
18
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
19
|
+
return target;
|
|
20
|
+
};
|
|
21
|
+
var __copyProps = (to, from, except, desc) => {
|
|
22
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
23
|
+
key = keys[i];
|
|
24
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
25
|
+
get: ((k) => from[k]).bind(null, key),
|
|
26
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return to;
|
|
30
|
+
};
|
|
31
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
32
|
+
//#endregion
|
|
6
33
|
//#region extensions/signal/src/config-compat.ts
|
|
7
|
-
const LEGACY_TRANSPORT_FIELDS = [
|
|
8
|
-
"configPath",
|
|
9
|
-
"httpUrl",
|
|
10
|
-
"httpHost",
|
|
11
|
-
"httpPort",
|
|
12
|
-
"cliPath",
|
|
13
|
-
"autoStart",
|
|
14
|
-
"startupTimeoutMs",
|
|
15
|
-
"receiveMode",
|
|
16
|
-
"ignoreStories"
|
|
17
|
-
];
|
|
18
34
|
const PENDING_LEGACY_TRANSPORT_WARNING = "- channels.signal: legacy auto transport is ambiguous while its endpoint is unavailable; bring the endpoint online and rerun openclaw doctor --fix, or replace the retired fields with an explicit account-owned transport in openclaw.json.";
|
|
19
35
|
const PENDING_LEGACY_INVALID_URL_WARNING = "- channels.signal: legacy httpUrl is invalid; keep the current config, correct httpUrl, then run openclaw doctor --fix.";
|
|
20
36
|
const PENDING_LEGACY_INVALID_HOST_WARNING = "- channels.signal: legacy httpHost is invalid; keep the current config, correct httpHost, then run openclaw doctor --fix.";
|
|
@@ -22,24 +38,13 @@ const PENDING_LEGACY_INVALID_PORT_WARNING = "- channels.signal: legacy httpPort
|
|
|
22
38
|
const PENDING_LEGACY_CONTAINER_ACCOUNT_WARNING = "- channels.signal: legacy container transport requires an account number; add channels.signal.account (or the relevant channels.signal.accounts.*.account) and rerun openclaw doctor --fix.";
|
|
23
39
|
function isSignalTransportConfig(value) {
|
|
24
40
|
if (!isRecord(value)) return false;
|
|
25
|
-
|
|
26
|
-
|
|
41
|
+
try {
|
|
42
|
+
if (value.kind === "managed-native") {
|
|
27
43
|
assertSignalSocketTransport(value);
|
|
28
|
-
|
|
29
|
-
return
|
|
30
|
-
}
|
|
31
|
-
if (value.httpPort !== void 0 && !isValidSignalManagedNativePort(value.httpPort)) return false;
|
|
32
|
-
if (value.url === void 0) return true;
|
|
44
|
+
if (value.httpPort !== void 0 && !isValidSignalManagedNativePort(value.httpPort)) return false;
|
|
45
|
+
if (value.url === void 0) return true;
|
|
46
|
+
} else if (value.kind !== "external-native" && value.kind !== "container") return false;
|
|
33
47
|
if (typeof value.url !== "string") return false;
|
|
34
|
-
try {
|
|
35
|
-
normalizeSignalTransportUrl(value.url);
|
|
36
|
-
return true;
|
|
37
|
-
} catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (value.kind !== "external-native" && value.kind !== "container" || typeof value.url !== "string") return false;
|
|
42
|
-
try {
|
|
43
48
|
normalizeSignalTransportUrl(value.url);
|
|
44
49
|
return true;
|
|
45
50
|
} catch {
|
|
@@ -56,9 +61,6 @@ function legacyBaseUrl(entry, parent) {
|
|
|
56
61
|
const rawPort = inherited(entry, parent, "httpPort");
|
|
57
62
|
return buildSignalTransportHttpUrl(host, typeof rawPort === "number" ? rawPort : 8080);
|
|
58
63
|
}
|
|
59
|
-
function hasLegacyFields(entry) {
|
|
60
|
-
return LEGACY_TRANSPORT_FIELDS.some((field) => Object.hasOwn(entry, field));
|
|
61
|
-
}
|
|
62
64
|
function wasLegacySignalAccountConfigured(entry, parent) {
|
|
63
65
|
return Boolean(normalizeOptionalString(inherited(entry, parent, "account")) || normalizeOptionalString(inherited(entry, parent, "configPath")) || normalizeOptionalString(inherited(entry, parent, "httpUrl")) || normalizeOptionalString(inherited(entry, parent, "httpHost")) || normalizeOptionalString(inherited(entry, parent, "cliPath")) || typeof inherited(entry, parent, "httpPort") === "number" || typeof inherited(entry, parent, "autoStart") === "boolean");
|
|
64
66
|
}
|
|
@@ -169,7 +171,7 @@ async function resolveLegacyTransport(params) {
|
|
|
169
171
|
}
|
|
170
172
|
}
|
|
171
173
|
function clearLegacyTransportFields(entry) {
|
|
172
|
-
for (const field of
|
|
174
|
+
for (const field of LEGACY_SIGNAL_TRANSPORT_FIELDS) delete entry[field];
|
|
173
175
|
}
|
|
174
176
|
function hasRootSignalAccount(entries) {
|
|
175
177
|
const root = entries[0];
|
|
@@ -192,7 +194,7 @@ function nestedDefaultOwnsEffectiveTransport(entries) {
|
|
|
192
194
|
const accounts = isRecord(entries[0]?.accounts) ? entries[0].accounts : {};
|
|
193
195
|
const nestedDefaultKey = resolveSignalAccountKey(accounts, DEFAULT_ACCOUNT_ID);
|
|
194
196
|
const nestedDefault = nestedDefaultKey ? accounts[nestedDefaultKey] : void 0;
|
|
195
|
-
return isRecord(nestedDefault) && (isSignalTransportConfig(nestedDefault.transport) ||
|
|
197
|
+
return isRecord(nestedDefault) && (isSignalTransportConfig(nestedDefault.transport) || hasLegacySignalTransportFields(nestedDefault));
|
|
196
198
|
}
|
|
197
199
|
function isDiscardedTransportEntry(entries, index) {
|
|
198
200
|
if (index === 0) return !hasRootSignalAccount(entries) || nestedDefaultOwnsEffectiveTransport(entries);
|
|
@@ -302,6 +304,13 @@ function hasContainerTransportWithoutEffectiveAccount(cfg) {
|
|
|
302
304
|
}
|
|
303
305
|
return false;
|
|
304
306
|
}
|
|
307
|
+
function pendingSignalTransportMigration(cfg, warning) {
|
|
308
|
+
return {
|
|
309
|
+
config: cfg,
|
|
310
|
+
changes: [],
|
|
311
|
+
warnings: [warning]
|
|
312
|
+
};
|
|
313
|
+
}
|
|
305
314
|
function prepareLegacySignalTransportMigration(cfg) {
|
|
306
315
|
const signal = cfg.channels?.signal;
|
|
307
316
|
if (!isRecord(signal)) return {
|
|
@@ -309,29 +318,17 @@ function prepareLegacySignalTransportMigration(cfg) {
|
|
|
309
318
|
changes: []
|
|
310
319
|
};
|
|
311
320
|
const accounts = isRecord(signal.accounts) ? signal.accounts : {};
|
|
312
|
-
if (!(Object.hasOwn(signal, "apiMode") ||
|
|
321
|
+
if (!(Object.hasOwn(signal, "apiMode") || hasLegacySignalTransportFields(signal) || Object.values(accounts).some(hasLegacySignalTransportFields))) return {
|
|
313
322
|
config: cfg,
|
|
314
323
|
changes: []
|
|
315
324
|
};
|
|
316
325
|
const apiMode = signal.apiMode;
|
|
317
326
|
const entries = [signal, ...Object.values(accounts).filter(isRecord)];
|
|
318
|
-
if (entries.some((entry) => isRecord(entry.transport) && Object.hasOwn(entry.transport, "socketPath") && (entry.transport.kind !== "managed-native" || !isSignalTransportConfig(entry.transport)))) return
|
|
319
|
-
config: cfg,
|
|
320
|
-
changes: [],
|
|
321
|
-
warnings: ["- channels.signal: invalid transport.socketPath configuration; correct the socket path and remove conflicting HTTP or receiveMode on-start options, then run openclaw doctor --fix."]
|
|
322
|
-
};
|
|
327
|
+
if (entries.some((entry) => isRecord(entry.transport) && Object.hasOwn(entry.transport, "socketPath") && (entry.transport.kind !== "managed-native" || !isSignalTransportConfig(entry.transport)))) return pendingSignalTransportMigration(cfg, "- channels.signal: invalid transport.socketPath configuration; correct the socket path and remove conflicting HTTP or receiveMode on-start options, then run openclaw doctor --fix.");
|
|
323
328
|
const legacyResolutionEntries = entries.filter((_, index) => shouldMaterializeTransport(entries, index)).filter((entry) => !isSignalTransportConfig(entry.transport));
|
|
324
329
|
const invalidDerivedEndpoint = findInvalidLegacyDerivedEndpoint(legacyResolutionEntries, signal);
|
|
325
|
-
if (invalidDerivedEndpoint) return
|
|
326
|
-
|
|
327
|
-
changes: [],
|
|
328
|
-
warnings: [invalidDerivedEndpoint === "port" ? PENDING_LEGACY_INVALID_PORT_WARNING : PENDING_LEGACY_INVALID_HOST_WARNING]
|
|
329
|
-
};
|
|
330
|
-
if (hasInvalidLegacyHttpUrl(legacyResolutionEntries, signal)) return {
|
|
331
|
-
config: cfg,
|
|
332
|
-
changes: [],
|
|
333
|
-
warnings: [PENDING_LEGACY_INVALID_URL_WARNING]
|
|
334
|
-
};
|
|
330
|
+
if (invalidDerivedEndpoint) return pendingSignalTransportMigration(cfg, invalidDerivedEndpoint === "port" ? PENDING_LEGACY_INVALID_PORT_WARNING : PENDING_LEGACY_INVALID_HOST_WARNING);
|
|
331
|
+
if (hasInvalidLegacyHttpUrl(legacyResolutionEntries, signal)) return pendingSignalTransportMigration(cfg, PENDING_LEGACY_INVALID_URL_WARNING);
|
|
335
332
|
return {
|
|
336
333
|
signal,
|
|
337
334
|
apiMode,
|
|
@@ -340,20 +337,12 @@ function prepareLegacySignalTransportMigration(cfg) {
|
|
|
340
337
|
};
|
|
341
338
|
}
|
|
342
339
|
function finishLegacySignalTransportMigration(cfg, entries, resolvedTransports) {
|
|
343
|
-
if (hasInvalidManagedTransportPort(resolvedTransports)) return
|
|
344
|
-
config: cfg,
|
|
345
|
-
changes: [],
|
|
346
|
-
warnings: [PENDING_LEGACY_INVALID_PORT_WARNING]
|
|
347
|
-
};
|
|
340
|
+
if (hasInvalidManagedTransportPort(resolvedTransports)) return pendingSignalTransportMigration(cfg, PENDING_LEGACY_INVALID_PORT_WARNING);
|
|
348
341
|
const transports = allocateMigratedManagedPorts({
|
|
349
342
|
entries,
|
|
350
343
|
transports: resolvedTransports
|
|
351
344
|
});
|
|
352
|
-
if (transports.some((transport, index) => shouldMaterializeTransport(entries, index) && !transport)) return
|
|
353
|
-
config: cfg,
|
|
354
|
-
changes: [],
|
|
355
|
-
warnings: [PENDING_LEGACY_TRANSPORT_WARNING]
|
|
356
|
-
};
|
|
345
|
+
if (transports.some((transport, index) => shouldMaterializeTransport(entries, index) && !transport)) return pendingSignalTransportMigration(cfg, PENDING_LEGACY_TRANSPORT_WARNING);
|
|
357
346
|
const next = applyMigratedSignalTransports({
|
|
358
347
|
cfg,
|
|
359
348
|
entries,
|
|
@@ -363,11 +352,7 @@ function finishLegacySignalTransportMigration(cfg, entries, resolvedTransports)
|
|
|
363
352
|
config: cfg,
|
|
364
353
|
changes: []
|
|
365
354
|
};
|
|
366
|
-
if (hasContainerTransportWithoutEffectiveAccount(next)) return
|
|
367
|
-
config: cfg,
|
|
368
|
-
changes: [],
|
|
369
|
-
warnings: [PENDING_LEGACY_CONTAINER_ACCOUNT_WARNING]
|
|
370
|
-
};
|
|
355
|
+
if (hasContainerTransportWithoutEffectiveAccount(next)) return pendingSignalTransportMigration(cfg, PENDING_LEGACY_CONTAINER_ACCOUNT_WARNING);
|
|
371
356
|
return {
|
|
372
357
|
config: next,
|
|
373
358
|
changes: ["Migrated channels.signal transport settings to concrete account-owned transport objects."]
|
|
@@ -377,11 +362,7 @@ async function migrateLegacySignalTransportConfig(params) {
|
|
|
377
362
|
const prepared = prepareLegacySignalTransportMigration(params.cfg);
|
|
378
363
|
if ("config" in prepared) return prepared;
|
|
379
364
|
const { signal, apiMode, entries, legacyResolutionEntries } = prepared;
|
|
380
|
-
if (!params.detect && legacyResolutionEntries.some((entry) => requiresDetection(entry, signal, apiMode))) return
|
|
381
|
-
config: params.cfg,
|
|
382
|
-
changes: [],
|
|
383
|
-
warnings: [PENDING_LEGACY_TRANSPORT_WARNING]
|
|
384
|
-
};
|
|
365
|
+
if (!params.detect && legacyResolutionEntries.some((entry) => requiresDetection(entry, signal, apiMode))) return pendingSignalTransportMigration(params.cfg, PENDING_LEGACY_TRANSPORT_WARNING);
|
|
385
366
|
const resolvedTransports = await Promise.all(entries.map(async (entry, index) => !shouldMaterializeTransport(entries, index) ? void 0 : await resolveLegacyTransport({
|
|
386
367
|
entry,
|
|
387
368
|
parent: signal,
|
|
@@ -404,6 +385,163 @@ function migrateLegacySignalTransportConfigSync(cfg) {
|
|
|
404
385
|
}));
|
|
405
386
|
}
|
|
406
387
|
//#endregion
|
|
388
|
+
//#region packages/normalization-core/src/record-coerce.ts
|
|
389
|
+
/** Type guard for non-array object records at browser-safe boundaries. */
|
|
390
|
+
function isRecord$1(value) {
|
|
391
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
392
|
+
}
|
|
393
|
+
/** Returns a non-array record or null. */
|
|
394
|
+
function asNullableRecord(value) {
|
|
395
|
+
return isRecord$1(value) ? value : null;
|
|
396
|
+
}
|
|
397
|
+
//#endregion
|
|
398
|
+
//#region src/config/channel-config-normalization.ts
|
|
399
|
+
/** Applies one channel-specific doctor migration to every object-shaped account. */
|
|
400
|
+
function normalizeChannelAccounts(params) {
|
|
401
|
+
const rawAccounts = asNullableRecord(params.entry.accounts);
|
|
402
|
+
if (!rawAccounts) return {
|
|
403
|
+
entry: params.entry,
|
|
404
|
+
changed: false
|
|
405
|
+
};
|
|
406
|
+
let changed = false;
|
|
407
|
+
const accounts = { ...rawAccounts };
|
|
408
|
+
for (const [accountId, value] of Object.entries(rawAccounts)) {
|
|
409
|
+
const account = asNullableRecord(value);
|
|
410
|
+
if (!account) continue;
|
|
411
|
+
const normalized = params.normalizeAccount({
|
|
412
|
+
account,
|
|
413
|
+
accountId,
|
|
414
|
+
pathPrefix: `${params.pathPrefix}.accounts.${accountId}`,
|
|
415
|
+
changes: params.changes
|
|
416
|
+
});
|
|
417
|
+
if (normalized.changed) {
|
|
418
|
+
accounts[accountId] = normalized.entry;
|
|
419
|
+
changed = true;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return changed ? {
|
|
423
|
+
entry: {
|
|
424
|
+
...params.entry,
|
|
425
|
+
accounts
|
|
426
|
+
},
|
|
427
|
+
changed: true
|
|
428
|
+
} : {
|
|
429
|
+
entry: params.entry,
|
|
430
|
+
changed: false
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
/** Applies the same channel-specific doctor migration at root and account scope. */
|
|
434
|
+
function normalizeChannelConfigEntries(params) {
|
|
435
|
+
const changes = params.changes ?? [];
|
|
436
|
+
const channels = params.cfg.channels;
|
|
437
|
+
const entry = asNullableRecord(channels?.[params.channelId]);
|
|
438
|
+
if (!entry) return {
|
|
439
|
+
config: params.cfg,
|
|
440
|
+
changes
|
|
441
|
+
};
|
|
442
|
+
const channelPath = `channels.${params.channelId}`;
|
|
443
|
+
const root = params.normalizeEntry({
|
|
444
|
+
entry,
|
|
445
|
+
pathPrefix: channelPath,
|
|
446
|
+
changes
|
|
447
|
+
});
|
|
448
|
+
const accounts = normalizeChannelAccounts({
|
|
449
|
+
entry: root.entry,
|
|
450
|
+
pathPrefix: channelPath,
|
|
451
|
+
changes,
|
|
452
|
+
normalizeAccount: (accountParams) => params.normalizeEntry({
|
|
453
|
+
entry: accountParams.account,
|
|
454
|
+
accountId: accountParams.accountId,
|
|
455
|
+
pathPrefix: accountParams.pathPrefix,
|
|
456
|
+
changes: accountParams.changes
|
|
457
|
+
})
|
|
458
|
+
});
|
|
459
|
+
if (!root.changed && !accounts.changed) return {
|
|
460
|
+
config: params.cfg,
|
|
461
|
+
changes
|
|
462
|
+
};
|
|
463
|
+
return {
|
|
464
|
+
config: {
|
|
465
|
+
...params.cfg,
|
|
466
|
+
channels: {
|
|
467
|
+
...channels,
|
|
468
|
+
[params.channelId]: accounts.entry
|
|
469
|
+
}
|
|
470
|
+
},
|
|
471
|
+
changes
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
//#endregion
|
|
475
|
+
//#region src/plugin-sdk/legacy-webhook-listener-migration.ts
|
|
476
|
+
/** Preserve explicitly configured webhook listeners while moving ingress onto Gateway routes. */
|
|
477
|
+
function createLegacyWebhookListenerDoctorContract(params) {
|
|
478
|
+
const portKey = params.portKey ?? "webhookPort";
|
|
479
|
+
const hostKey = params.hostKey === void 0 ? "webhookHost" : params.hostKey;
|
|
480
|
+
const source = (entry) => params.webhookKey ? asNullableRecord(entry[params.webhookKey]) : entry;
|
|
481
|
+
const hasLegacy = (value) => {
|
|
482
|
+
const entry = asNullableRecord(value);
|
|
483
|
+
const listener = entry && source(entry);
|
|
484
|
+
return Boolean(listener && (Object.hasOwn(listener, portKey) || hostKey && Object.hasOwn(listener, hostKey)));
|
|
485
|
+
};
|
|
486
|
+
const prefix = `channels.${params.channelKey}`;
|
|
487
|
+
return {
|
|
488
|
+
legacyConfigRules: [{
|
|
489
|
+
path: ["channels", params.channelKey],
|
|
490
|
+
message: `${prefix} webhook listeners moved to Gateway routes. Run "openclaw doctor --fix" to preserve explicitly configured listener settings as legacyWebhook.`,
|
|
491
|
+
match: (value) => {
|
|
492
|
+
const accounts = asNullableRecord(asNullableRecord(value)?.accounts);
|
|
493
|
+
return hasLegacy(value) || Object.values(accounts ?? {}).some(hasLegacy);
|
|
494
|
+
}
|
|
495
|
+
}],
|
|
496
|
+
normalizeCompatibilityConfig: ({ cfg }) => {
|
|
497
|
+
const root = asNullableRecord(asNullableRecord(cfg.channels)?.[params.channelKey]);
|
|
498
|
+
const inherited = root && source(root);
|
|
499
|
+
const canonicalRoot = asNullableRecord(root?.legacyWebhook);
|
|
500
|
+
return normalizeChannelConfigEntries({
|
|
501
|
+
cfg,
|
|
502
|
+
channelId: params.channelKey,
|
|
503
|
+
normalizeEntry: ({ entry, accountId, pathPrefix, changes }) => {
|
|
504
|
+
const listener = source(entry);
|
|
505
|
+
if (!listener || !hasLegacy(entry)) return {
|
|
506
|
+
entry,
|
|
507
|
+
changed: false
|
|
508
|
+
};
|
|
509
|
+
const next = { ...entry };
|
|
510
|
+
const port = Object.hasOwn(listener, portKey) ? listener[portKey] : (accountId ? canonicalRoot?.port ?? inherited?.[portKey] : void 0) ?? params.defaultPort;
|
|
511
|
+
const inheritedHost = accountId ? canonicalRoot ? canonicalRoot.host : (hostKey ? inherited?.[hostKey] : void 0) ?? params.defaultHost : params.defaultHost;
|
|
512
|
+
const host = hostKey ? listener[hostKey] ?? inheritedHost : inheritedHost;
|
|
513
|
+
const legacyPath = [pathPrefix, params.webhookKey].filter(Boolean).join(".");
|
|
514
|
+
if (Object.hasOwn(entry, "legacyWebhook")) changes.push(`Removed ${legacyPath} legacy listener keys; ${pathPrefix}.legacyWebhook is already configured.`);
|
|
515
|
+
else if (accountId && root?.legacyWebhook === false) changes.push(`Removed ${legacyPath} legacy listener keys; ${prefix}.legacyWebhook: false keeps this account's inherited listener disabled.`);
|
|
516
|
+
else {
|
|
517
|
+
next.legacyWebhook = {
|
|
518
|
+
port,
|
|
519
|
+
...host !== void 0 ? { host } : {}
|
|
520
|
+
};
|
|
521
|
+
changes.push(`Moved ${legacyPath} listener settings to ${pathPrefix}.legacyWebhook. Point the external callback or reverse proxy at the Gateway port and webhook path, verify delivery, then set legacyWebhook: false to disable legacy forwarding.`);
|
|
522
|
+
}
|
|
523
|
+
const updated = params.webhookKey ? { ...listener } : next;
|
|
524
|
+
delete updated[portKey];
|
|
525
|
+
if (hostKey) delete updated[hostKey];
|
|
526
|
+
if (params.webhookKey) {
|
|
527
|
+
if (Object.keys(updated).length) next[params.webhookKey] = updated;
|
|
528
|
+
else delete next[params.webhookKey];
|
|
529
|
+
}
|
|
530
|
+
return {
|
|
531
|
+
entry: next,
|
|
532
|
+
changed: true
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
//#endregion
|
|
540
|
+
//#region \0openclaw:bundled-sdk:openclaw/plugin-sdk/runtime-doctor-migrations
|
|
541
|
+
var runtime_doctor_migrations_exports = /* @__PURE__ */ __exportAll({ createLegacyWebhookListenerDoctorContract: () => createLegacyWebhookListenerDoctorContract });
|
|
542
|
+
import * as import_openclaw_plugin_sdk_runtime_doctor_migrations from "openclaw/plugin-sdk/runtime-doctor-migrations";
|
|
543
|
+
__reExport(runtime_doctor_migrations_exports, import_openclaw_plugin_sdk_runtime_doctor_migrations);
|
|
544
|
+
//#endregion
|
|
407
545
|
//#region extensions/signal/src/account-key-repair.ts
|
|
408
546
|
function repairSignalAccountKeys({ cfg }) {
|
|
409
547
|
const signal = cfg.channels?.signal;
|
|
@@ -450,24 +588,7 @@ function repairSignalAccountKeys({ cfg }) {
|
|
|
450
588
|
}
|
|
451
589
|
//#endregion
|
|
452
590
|
//#region extensions/signal/config-doctor-api.ts
|
|
453
|
-
const
|
|
454
|
-
"configPath",
|
|
455
|
-
"httpUrl",
|
|
456
|
-
"httpHost",
|
|
457
|
-
"httpPort",
|
|
458
|
-
"cliPath",
|
|
459
|
-
"autoStart",
|
|
460
|
-
"startupTimeoutMs",
|
|
461
|
-
"receiveMode",
|
|
462
|
-
"ignoreStories"
|
|
463
|
-
];
|
|
464
|
-
function hasRetiredSignalAccountTransportFields(value) {
|
|
465
|
-
return isRecord(value) && RETIRED_SIGNAL_ACCOUNT_TRANSPORT_FIELDS.some((field) => Object.hasOwn(value, field));
|
|
466
|
-
}
|
|
467
|
-
function hasRetiredSignalAccountMapTransportFields(value) {
|
|
468
|
-
return isRecord(value) && Object.values(value).some(hasRetiredSignalAccountTransportFields);
|
|
469
|
-
}
|
|
470
|
-
const streamingAliasMigration = defineChannelAliasMigration({
|
|
591
|
+
const streamingAliasMigration = (0, runtime_doctor_migrations_exports.defineChannelAliasMigration)({
|
|
471
592
|
channelId: "signal",
|
|
472
593
|
streaming: {
|
|
473
594
|
defaultMode: "partial",
|
|
@@ -480,7 +601,7 @@ const legacyConfigRules = [
|
|
|
480
601
|
{
|
|
481
602
|
path: ["channels", "signal"],
|
|
482
603
|
message: "Signal transport config is now account-owned; run \"openclaw doctor --fix\" to migrate retired channels.signal transport fields.",
|
|
483
|
-
match: (value) => isRecord(value) && (Object.hasOwn(value, "apiMode") ||
|
|
604
|
+
match: (value) => isRecord(value) && (Object.hasOwn(value, "apiMode") || hasLegacySignalTransportFields(value))
|
|
484
605
|
},
|
|
485
606
|
{
|
|
486
607
|
path: [
|
|
@@ -489,7 +610,7 @@ const legacyConfigRules = [
|
|
|
489
610
|
"accounts"
|
|
490
611
|
],
|
|
491
612
|
message: "Signal transport config is now account-owned; run \"openclaw doctor --fix\" to migrate retired per-account transport fields.",
|
|
492
|
-
match:
|
|
613
|
+
match: (value) => isRecord(value) && Object.values(value).some(hasLegacySignalTransportFields)
|
|
493
614
|
}
|
|
494
615
|
];
|
|
495
616
|
function normalizeCompatibilityConfig({ cfg }) {
|
|
@@ -507,4 +628,4 @@ function normalizeCompatibilityConfig({ cfg }) {
|
|
|
507
628
|
};
|
|
508
629
|
}
|
|
509
630
|
//#endregion
|
|
510
|
-
export { migrateLegacySignalTransportConfig as a, clearLegacySignalTransportFieldsForAccount as i, normalizeCompatibilityConfig as n, repairSignalAccountKeys as r, legacyConfigRules as t };
|
|
631
|
+
export { migrateLegacySignalTransportConfig as a, clearLegacySignalTransportFieldsForAccount as i, normalizeCompatibilityConfig as n, __exportAll as o, repairSignalAccountKeys as r, legacyConfigRules as t };
|
|
@@ -36,9 +36,7 @@ function resolveSignalSender(params) {
|
|
|
36
36
|
function formatSignalSenderId(sender) {
|
|
37
37
|
return sender.kind === "phone" ? sender.e164 : `uuid:${sender.raw}`;
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
return sender.kind === "phone" ? sender.e164 : `uuid:${sender.raw}`;
|
|
41
|
-
}
|
|
39
|
+
const formatSignalSenderDisplay = formatSignalSenderId;
|
|
42
40
|
function formatSignalPairingIdLine(sender) {
|
|
43
41
|
if (sender.kind === "phone") return `Your Signal number: ${sender.e164}`;
|
|
44
42
|
return `Your Signal sender id: ${formatSignalSenderId(sender)}`;
|
|
@@ -46,9 +44,7 @@ function formatSignalPairingIdLine(sender) {
|
|
|
46
44
|
function resolveSignalRecipient(sender) {
|
|
47
45
|
return sender.kind === "phone" ? sender.e164 : sender.raw;
|
|
48
46
|
}
|
|
49
|
-
|
|
50
|
-
return sender.kind === "phone" ? sender.e164 : `uuid:${sender.raw}`;
|
|
51
|
-
}
|
|
47
|
+
const resolveSignalPeerId = formatSignalSenderId;
|
|
52
48
|
function parseSignalAllowEntry(entry) {
|
|
53
49
|
const trimmed = entry.trim();
|
|
54
50
|
if (!trimmed) return null;
|
|
@@ -224,10 +224,6 @@ async function installSignalCliFromRelease(runtime) {
|
|
|
224
224
|
await downloadToFile(asset.browser_download_url, archivePath);
|
|
225
225
|
const installRoot = path.join(CONFIG_DIR, "tools", "signal-cli", releaseInfo.version);
|
|
226
226
|
await fs.mkdir(installRoot, { recursive: true });
|
|
227
|
-
if (!looksLikeArchive(normalizeLowercaseStringOrEmpty(asset.name))) return {
|
|
228
|
-
ok: false,
|
|
229
|
-
error: `Unsupported archive type: ${asset.name}`
|
|
230
|
-
};
|
|
231
227
|
try {
|
|
232
228
|
await extractSignalCliArchive(archivePath, installRoot, 6e4);
|
|
233
229
|
} catch (err) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
2
|
+
//#region extensions/signal/src/legacy-transport.ts
|
|
3
|
+
const LEGACY_SIGNAL_TRANSPORT_FIELDS = [
|
|
4
|
+
"configPath",
|
|
5
|
+
"httpUrl",
|
|
6
|
+
"httpHost",
|
|
7
|
+
"httpPort",
|
|
8
|
+
"cliPath",
|
|
9
|
+
"autoStart",
|
|
10
|
+
"startupTimeoutMs",
|
|
11
|
+
"receiveMode",
|
|
12
|
+
"ignoreStories"
|
|
13
|
+
];
|
|
14
|
+
function hasLegacySignalTransportFields(value) {
|
|
15
|
+
return isRecord(value) && LEGACY_SIGNAL_TRANSPORT_FIELDS.some((field) => Object.hasOwn(value, field));
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { hasLegacySignalTransportFields as n, LEGACY_SIGNAL_TRANSPORT_FIELDS as t };
|