@openclaw/slack 2026.9.5 → 2026.9.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.
- package/assets/icon.png +0 -0
- package/dist/.setup/{account-inspect-B86OaUEt.mjs → account-inspect-DWBXpER6.mjs} +1 -1
- package/dist/.setup/{accounts-C1FspRF-.mjs → accounts-D_N9IqNA.mjs} +33 -10
- package/dist/.setup/{action-runtime-Aa-h24Fq.mjs → action-runtime-DfWvuiZd.mjs} +46 -65
- package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
- package/dist/.setup/{actions-BvGUGk3w.mjs → actions-Df0CzcDl.mjs} +148 -204
- package/dist/.setup/{approval-handler.runtime-BcZNF-VP.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
- package/dist/.setup/{approval-message-updates-Cy1cxfBn.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
- package/dist/.setup/{channel-DrBm0NFw.mjs → channel-C7bgPSTE.mjs} +192 -280
- package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
- package/dist/.setup/{channel-type-osC0XOES.mjs → channel-type-ClOttrZ5.mjs} +13 -21
- package/dist/.setup/{channel.setup-BSY5hzVz.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
- package/dist/.setup/{config-schema-DrY3S7Ee.mjs → config-schema-BZCxmHKG.mjs} +32 -21
- package/dist/.setup/{directory-config-CTs7YyuU.mjs → directory-config-BOUWH3hR.mjs} +7 -10
- package/dist/.setup/{directory-live-Btq0063Q.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
- package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
- package/dist/.setup/{message-tool-api-DRnDCVdY.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
- package/dist/.setup/{provider-w36VTgZ3.mjs → monitor-BPVfkumU.mjs} +2191 -2704
- package/dist/.setup/{outbound-adapter-K3Ek1iSR.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
- package/dist/.setup/{pipeline.runtime-BZqGcbfi.mjs → pipeline.runtime-B1H63Frf.mjs} +901 -892
- package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
- package/dist/.setup/{policy-Db_QWCZZ.mjs → policy-D-jfM174.mjs} +5 -5
- package/dist/.setup/{probe-64C6k3_Q.mjs → probe-B2Y9qc_z.mjs} +101 -39
- package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
- package/dist/.setup/{relay-source-CDqY76Vp.mjs → relay-source-BpKdjsll.mjs} +10 -12
- package/dist/.setup/{replies-CWFhjS9S.mjs → replies-BAnUtr2f.mjs} +16 -76
- package/dist/.setup/{reply-blocks-9uCeAJts.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
- package/dist/.setup/{resolve-channels-x8fX1SEt.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
- package/dist/.setup/{resolve-users-B8BpBnH2.mjs → resolve-users-DW0ngD03.mjs} +20 -22
- package/dist/.setup/{scopes-CJ-6l4v4.mjs → scopes-CasuDvaa.mjs} +6 -17
- package/dist/.setup/{secret-contract-DxmvbxBF.mjs → secret-contract-BaZcu6P_.mjs} +15 -20
- package/dist/.setup/{secret-contract-api-D9UfYujm.mjs → secret-contract-api-Dp6290Vg.mjs} +1 -1
- package/dist/.setup/{security-audit-BypHqcq5.mjs → security-audit-BqDc-6VL.mjs} +1 -1
- package/dist/.setup/{send-6GCb3lBP.mjs → send-BOVLQi3n.mjs} +102 -199
- package/dist/.setup/{session-status-BhG6pdiH.mjs → session-status-DscajIsd.mjs} +323 -250
- package/dist/.setup/{setup-plugin-api-DtCEByQB.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
- package/dist/.setup/{setup-surface-DsE0hsYY.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
- package/dist/.setup/{shared-BNmqCPgQ.mjs → shared-qau-uDGl.mjs} +30 -56
- package/dist/.setup/{slash-dispatch.runtime-Io4ASZsY.mjs → slash-dispatch.runtime--AEzLVBF.mjs} +1 -1
- package/dist/.setup/{streaming-compat-B-e0mqM0.mjs → streaming-compat-C5Wut626.mjs} +31 -8
- package/dist/.setup/{target-parsing-DEsPjngB.mjs → target-parsing-FFE26kOV.mjs} +1 -7
- package/dist/.setup/{targets-Cku2KCvg.mjs → targets-C6LZQL1Q.mjs} +1 -1
- package/dist/.setup/{thread-ts-CukseRVL.mjs → thread-ts-Cvt7WD6B.mjs} +0 -1
- package/dist/account-inspect-api.js +1 -1
- package/dist/api.js +18 -17
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +1 -1
- package/dist/http-routes-api.js +1 -1
- package/dist/index.js +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/runtime-api.js +11 -12
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +2 -2
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/bolt/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/bolt/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/bolt/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/web-globals/streams.d.ts +4 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/streams.d.ts +4 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/get-east-asian-width/index.js +8 -3
- package/node_modules/get-east-asian-width/lookup-data.js +1 -1
- package/node_modules/get-east-asian-width/lookup.js +4 -4
- package/node_modules/get-east-asian-width/package.json +1 -1
- package/node_modules/typebox/build/compile/code.mjs +1 -2
- package/node_modules/typebox/build/compile/validator.mjs +5 -1
- package/node_modules/typebox/build/format/iri.mjs +16 -9
- package/node_modules/typebox/build/guard/emit.mjs +2 -2
- package/node_modules/typebox/build/guard/guard.d.mts +7 -5
- package/node_modules/typebox/build/guard/guard.mjs +14 -9
- package/node_modules/typebox/build/guard/index.mjs +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/node_modules/typebox/build/schema/build.mjs +2 -3
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
- package/node_modules/typebox/build/schema/parse.mjs +3 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
- package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
- package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
- package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
- package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +3 -1
- package/node_modules/undici/README.md +81 -25
- package/node_modules/undici/docs/docs/api/Agent.md +249 -42
- package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
- package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
- package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
- package/node_modules/undici/docs/docs/api/Client.md +407 -162
- package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
- package/node_modules/undici/docs/docs/api/Connector.md +118 -35
- package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
- package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
- package/node_modules/undici/docs/docs/api/Debug.md +34 -18
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
- package/node_modules/undici/docs/docs/api/Dispatcher.md +490 -1055
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +105 -93
- package/node_modules/undici/docs/docs/api/Errors.md +503 -28
- package/node_modules/undici/docs/docs/api/EventSource.md +326 -13
- package/node_modules/undici/docs/docs/api/Fetch.md +681 -30
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -96
- package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
- package/node_modules/undici/docs/docs/api/Interceptors.md +418 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
- package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
- package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
- package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
- package/node_modules/undici/docs/docs/api/Pool.md +236 -41
- package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -55
- package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -27
- package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -79
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +262 -517
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +177 -196
- package/node_modules/undici/docs/docs/api/Util.md +68 -11
- package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
- package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
- package/node_modules/undici/docs/docs/getting-started.md +281 -0
- package/node_modules/undici/docs/docs/index.md +784 -0
- package/node_modules/undici/docs/docs/site.json +125 -0
- package/node_modules/undici/docs/docs/type-map.json +79 -0
- package/node_modules/undici/index.js +4 -2
- package/node_modules/undici/lib/api/api-connect.js +13 -11
- package/node_modules/undici/lib/api/api-pipeline.js +26 -13
- package/node_modules/undici/lib/api/api-request.js +51 -21
- package/node_modules/undici/lib/api/api-stream.js +81 -20
- package/node_modules/undici/lib/api/api-upgrade.js +21 -11
- package/node_modules/undici/lib/api/readable.js +45 -9
- package/node_modules/undici/lib/cache/memory-cache-store.js +3 -3
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +3 -1
- package/node_modules/undici/lib/core/connect.js +46 -7
- package/node_modules/undici/lib/core/constants.js +1 -24
- package/node_modules/undici/lib/core/errors.js +22 -2
- package/node_modules/undici/lib/core/request.js +100 -18
- package/node_modules/undici/lib/core/symbols.js +4 -0
- package/node_modules/undici/lib/core/util.js +105 -48
- package/node_modules/undici/lib/dispatcher/agent.js +51 -32
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +23 -27
- package/node_modules/undici/lib/dispatcher/client-h1.js +86 -24
- package/node_modules/undici/lib/dispatcher/client-h2.js +1091 -361
- package/node_modules/undici/lib/dispatcher/client.js +109 -36
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -6
- package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -5
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +110 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
- package/node_modules/undici/lib/dispatcher/h2c-client.js +4 -4
- package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
- package/node_modules/undici/lib/dispatcher/pool.js +30 -5
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +95 -19
- package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +32 -10
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +153 -63
- package/node_modules/undici/lib/global.js +37 -14
- package/node_modules/undici/lib/handler/cache-handler.js +49 -7
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +8 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/node_modules/undici/lib/handler/redirect-handler.js +66 -66
- package/node_modules/undici/lib/handler/retry-handler.js +191 -50
- package/node_modules/undici/lib/interceptor/cache.js +75 -25
- package/node_modules/undici/lib/interceptor/decompress.js +5 -2
- package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
- package/node_modules/undici/lib/interceptor/dns.js +12 -1
- package/node_modules/undici/lib/interceptor/redirect.js +3 -3
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
- package/node_modules/undici/lib/mock/mock-agent.js +21 -9
- package/node_modules/undici/lib/mock/mock-call-history.js +1 -1
- package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/node_modules/undici/lib/mock/mock-utils.js +281 -47
- package/node_modules/undici/lib/mock/snapshot-agent.js +25 -7
- package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
- package/node_modules/undici/lib/util/cache.js +92 -10
- package/node_modules/undici/lib/util/runtime-features.js +3 -34
- package/node_modules/undici/lib/web/cache/cache.js +6 -8
- package/node_modules/undici/lib/web/cookies/parse.js +150 -146
- package/node_modules/undici/lib/web/cookies/util.js +1 -1
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +20 -21
- package/node_modules/undici/lib/web/eventsource/util.js +32 -1
- package/node_modules/undici/lib/web/fetch/body.js +48 -10
- package/node_modules/undici/lib/web/fetch/constants.js +1 -1
- package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
- package/node_modules/undici/lib/web/fetch/index.js +242 -223
- package/node_modules/undici/lib/web/fetch/request.js +35 -6
- package/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/node_modules/undici/lib/web/fetch/util.js +10 -2
- package/node_modules/undici/lib/web/webidl/index.js +5 -7
- package/node_modules/undici/lib/web/websocket/frame.js +1 -7
- package/node_modules/undici/lib/web/websocket/receiver.js +1 -1
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +25 -3
- package/node_modules/undici/package.json +10 -10
- package/node_modules/undici/types/agent.d.ts +0 -2
- package/node_modules/undici/types/client.d.ts +69 -24
- package/node_modules/undici/types/connector.d.ts +1 -0
- package/node_modules/undici/types/cookies.d.ts +1 -1
- package/node_modules/undici/types/dispatcher.d.ts +8 -30
- package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
- package/node_modules/undici/types/errors.d.ts +10 -0
- package/node_modules/undici/types/fetch.d.ts +5 -1
- package/node_modules/undici/types/formdata.d.ts +0 -6
- package/node_modules/undici/types/h2c-client.d.ts +6 -6
- package/node_modules/undici/types/handlers.d.ts +2 -0
- package/node_modules/undici/types/header.d.ts +5 -0
- package/node_modules/undici/types/index.d.ts +3 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/mock-agent.d.ts +11 -10
- package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/node_modules/undici/types/pool.d.ts +0 -2
- package/node_modules/undici/types/proxy-agent.d.ts +9 -2
- package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
- package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +4 -2
- package/node_modules/undici/types/webidl.d.ts +0 -1
- package/node_modules/zod/README.md +2 -2
- package/node_modules/zod/compile.cjs +19 -0
- package/node_modules/zod/index.cjs +19 -0
- package/node_modules/zod/locales/index.cjs +19 -0
- package/node_modules/zod/mini/index.cjs +19 -0
- package/node_modules/zod/package.json +8 -7
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
- package/node_modules/zod/src/v4/classic/external.ts +2 -0
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
- package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
- package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
- package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
- package/node_modules/zod/src/v4/core/api.ts +44 -28
- package/node_modules/zod/src/v4/core/checks.ts +62 -102
- package/node_modules/zod/src/v4/core/compile.ts +218 -93
- package/node_modules/zod/src/v4/core/core.ts +1 -3
- package/node_modules/zod/src/v4/core/doc.ts +6 -2
- package/node_modules/zod/src/v4/core/errors.ts +3 -6
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
- package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
- package/node_modules/zod/src/v4/core/parse.ts +37 -16
- package/node_modules/zod/src/v4/core/regexes.ts +14 -4
- package/node_modules/zod/src/v4/core/schemas.ts +296 -132
- package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
- package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
- package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
- package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
- package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
- package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
- package/node_modules/zod/src/v4/core/util.ts +218 -147
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/locales/ar.ts +2 -0
- package/node_modules/zod/src/v4/locales/az.ts +2 -0
- package/node_modules/zod/src/v4/locales/be.ts +2 -0
- package/node_modules/zod/src/v4/locales/bg.ts +2 -0
- package/node_modules/zod/src/v4/locales/bn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ca.ts +2 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
- package/node_modules/zod/src/v4/locales/cs.ts +2 -0
- package/node_modules/zod/src/v4/locales/da.ts +2 -0
- package/node_modules/zod/src/v4/locales/de.ts +2 -0
- package/node_modules/zod/src/v4/locales/el.ts +2 -0
- package/node_modules/zod/src/v4/locales/en.ts +2 -0
- package/node_modules/zod/src/v4/locales/eo.ts +2 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +2 -0
- package/node_modules/zod/src/v4/locales/fi.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr.ts +2 -0
- package/node_modules/zod/src/v4/locales/gu.ts +2 -0
- package/node_modules/zod/src/v4/locales/he.ts +2 -0
- package/node_modules/zod/src/v4/locales/hi.ts +2 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +2 -0
- package/node_modules/zod/src/v4/locales/hy.ts +2 -0
- package/node_modules/zod/src/v4/locales/id.ts +2 -0
- package/node_modules/zod/src/v4/locales/index.ts +1 -0
- package/node_modules/zod/src/v4/locales/is.ts +2 -0
- package/node_modules/zod/src/v4/locales/it.ts +2 -0
- package/node_modules/zod/src/v4/locales/ja.ts +2 -0
- package/node_modules/zod/src/v4/locales/ka.ts +2 -0
- package/node_modules/zod/src/v4/locales/km.ts +2 -0
- package/node_modules/zod/src/v4/locales/kn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ko.ts +2 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ms.ts +2 -0
- package/node_modules/zod/src/v4/locales/ne.ts +2 -0
- package/node_modules/zod/src/v4/locales/nl.ts +2 -0
- package/node_modules/zod/src/v4/locales/nn.ts +2 -0
- package/node_modules/zod/src/v4/locales/no.ts +2 -0
- package/node_modules/zod/src/v4/locales/ota.ts +2 -0
- package/node_modules/zod/src/v4/locales/pl.ts +2 -0
- package/node_modules/zod/src/v4/locales/ps.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt.ts +2 -0
- package/node_modules/zod/src/v4/locales/ro.ts +2 -0
- package/node_modules/zod/src/v4/locales/ru.ts +2 -0
- package/node_modules/zod/src/v4/locales/sk.ts +2 -0
- package/node_modules/zod/src/v4/locales/sl.ts +2 -0
- package/node_modules/zod/src/v4/locales/sv.ts +2 -0
- package/node_modules/zod/src/v4/locales/ta.ts +2 -0
- package/node_modules/zod/src/v4/locales/tg.ts +135 -0
- package/node_modules/zod/src/v4/locales/th.ts +2 -0
- package/node_modules/zod/src/v4/locales/tk.ts +2 -0
- package/node_modules/zod/src/v4/locales/tr.ts +2 -0
- package/node_modules/zod/src/v4/locales/uk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ur.ts +2 -0
- package/node_modules/zod/src/v4/locales/uz.ts +2 -0
- package/node_modules/zod/src/v4/locales/vi.ts +2 -0
- package/node_modules/zod/src/v4/locales/yo.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
- package/node_modules/zod/src/v4/mini/external.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
- package/node_modules/zod/v3/ZodError.cjs +19 -0
- package/node_modules/zod/v3/errors.cjs +19 -0
- package/node_modules/zod/v3/external.cjs +19 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
- package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
- package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
- package/node_modules/zod/v3/helpers/util.cjs +19 -0
- package/node_modules/zod/v3/index.cjs +19 -0
- package/node_modules/zod/v3/standard-schema.cjs +19 -0
- package/node_modules/zod/v3/types.cjs +19 -0
- package/node_modules/zod/v4/classic/checks.cjs +19 -0
- package/node_modules/zod/v4/classic/coerce.cjs +19 -0
- package/node_modules/zod/v4/classic/compat.cjs +19 -0
- package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
- package/node_modules/zod/v4/classic/errors.cjs +19 -0
- package/node_modules/zod/v4/classic/external.cjs +22 -1
- package/node_modules/zod/v4/classic/external.d.cts +1 -1
- package/node_modules/zod/v4/classic/external.d.ts +1 -1
- package/node_modules/zod/v4/classic/external.js +1 -1
- package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
- package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
- package/node_modules/zod/v4/classic/in-out.cjs +19 -0
- package/node_modules/zod/v4/classic/index.cjs +19 -0
- package/node_modules/zod/v4/classic/iso.cjs +19 -0
- package/node_modules/zod/v4/classic/parse.cjs +19 -0
- package/node_modules/zod/v4/classic/schemas.cjs +100 -35
- package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
- package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
- package/node_modules/zod/v4/classic/schemas.js +77 -33
- package/node_modules/zod/v4/core/api.cjs +45 -22
- package/node_modules/zod/v4/core/api.d.cts +12 -6
- package/node_modules/zod/v4/core/api.d.ts +12 -6
- package/node_modules/zod/v4/core/api.js +25 -22
- package/node_modules/zod/v4/core/checks.cjs +51 -97
- package/node_modules/zod/v4/core/checks.d.cts +17 -1
- package/node_modules/zod/v4/core/checks.d.ts +17 -1
- package/node_modules/zod/v4/core/checks.js +31 -96
- package/node_modules/zod/v4/core/compile.cjs +173 -78
- package/node_modules/zod/v4/core/compile.d.cts +18 -4
- package/node_modules/zod/v4/core/compile.d.ts +18 -4
- package/node_modules/zod/v4/core/compile.js +154 -79
- package/node_modules/zod/v4/core/core.cjs +20 -1
- package/node_modules/zod/v4/core/core.js +1 -1
- package/node_modules/zod/v4/core/doc.cjs +26 -2
- package/node_modules/zod/v4/core/doc.js +7 -2
- package/node_modules/zod/v4/core/errors.cjs +21 -5
- package/node_modules/zod/v4/core/errors.js +2 -5
- package/node_modules/zod/v4/core/index.cjs +19 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
- package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
- package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
- package/node_modules/zod/v4/core/json-schema.cjs +19 -0
- package/node_modules/zod/v4/core/memoizer.cjs +111 -23
- package/node_modules/zod/v4/core/memoizer.js +69 -23
- package/node_modules/zod/v4/core/parse.cjs +56 -16
- package/node_modules/zod/v4/core/parse.js +37 -16
- package/node_modules/zod/v4/core/regexes.cjs +31 -6
- package/node_modules/zod/v4/core/regexes.d.cts +3 -0
- package/node_modules/zod/v4/core/regexes.d.ts +3 -0
- package/node_modules/zod/v4/core/regexes.js +10 -4
- package/node_modules/zod/v4/core/registries.cjs +19 -0
- package/node_modules/zod/v4/core/schemas.cjs +302 -114
- package/node_modules/zod/v4/core/schemas.d.cts +28 -8
- package/node_modules/zod/v4/core/schemas.d.ts +28 -8
- package/node_modules/zod/v4/core/schemas.js +279 -113
- package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
- package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.js +7 -6
- package/node_modules/zod/v4/core/util.cjs +177 -143
- package/node_modules/zod/v4/core/util.d.cts +25 -4
- package/node_modules/zod/v4/core/util.d.ts +25 -4
- package/node_modules/zod/v4/core/util.js +156 -143
- package/node_modules/zod/v4/core/versions.cjs +21 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +19 -0
- package/node_modules/zod/v4/index.cjs +19 -0
- package/node_modules/zod/v4/locales/ar.cjs +2 -0
- package/node_modules/zod/v4/locales/ar.js +2 -0
- package/node_modules/zod/v4/locales/az.cjs +2 -0
- package/node_modules/zod/v4/locales/az.js +2 -0
- package/node_modules/zod/v4/locales/be.cjs +2 -0
- package/node_modules/zod/v4/locales/be.js +2 -0
- package/node_modules/zod/v4/locales/bg.cjs +2 -0
- package/node_modules/zod/v4/locales/bg.js +2 -0
- package/node_modules/zod/v4/locales/bn.cjs +2 -0
- package/node_modules/zod/v4/locales/bn.js +2 -0
- package/node_modules/zod/v4/locales/ca.cjs +2 -0
- package/node_modules/zod/v4/locales/ca.js +2 -0
- package/node_modules/zod/v4/locales/ckb.cjs +2 -0
- package/node_modules/zod/v4/locales/ckb.js +2 -0
- package/node_modules/zod/v4/locales/cs.cjs +2 -0
- package/node_modules/zod/v4/locales/cs.js +2 -0
- package/node_modules/zod/v4/locales/da.cjs +2 -0
- package/node_modules/zod/v4/locales/da.js +2 -0
- package/node_modules/zod/v4/locales/de.cjs +2 -0
- package/node_modules/zod/v4/locales/de.js +2 -0
- package/node_modules/zod/v4/locales/el.cjs +2 -0
- package/node_modules/zod/v4/locales/el.js +2 -0
- package/node_modules/zod/v4/locales/en.cjs +2 -0
- package/node_modules/zod/v4/locales/en.js +2 -0
- package/node_modules/zod/v4/locales/eo.cjs +2 -0
- package/node_modules/zod/v4/locales/eo.js +2 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +2 -0
- package/node_modules/zod/v4/locales/fa.js +2 -0
- package/node_modules/zod/v4/locales/fi.cjs +2 -0
- package/node_modules/zod/v4/locales/fi.js +2 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
- package/node_modules/zod/v4/locales/fr-CA.js +2 -0
- package/node_modules/zod/v4/locales/fr.cjs +2 -0
- package/node_modules/zod/v4/locales/fr.js +2 -0
- package/node_modules/zod/v4/locales/gu.cjs +2 -0
- package/node_modules/zod/v4/locales/gu.js +2 -0
- package/node_modules/zod/v4/locales/he.cjs +2 -0
- package/node_modules/zod/v4/locales/he.js +2 -0
- package/node_modules/zod/v4/locales/hi.cjs +2 -0
- package/node_modules/zod/v4/locales/hi.js +2 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +2 -0
- package/node_modules/zod/v4/locales/hu.js +2 -0
- package/node_modules/zod/v4/locales/hy.cjs +2 -0
- package/node_modules/zod/v4/locales/hy.js +2 -0
- package/node_modules/zod/v4/locales/id.cjs +2 -0
- package/node_modules/zod/v4/locales/id.js +2 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -1
- package/node_modules/zod/v4/locales/index.d.cts +1 -0
- package/node_modules/zod/v4/locales/index.d.ts +1 -0
- package/node_modules/zod/v4/locales/index.js +1 -0
- package/node_modules/zod/v4/locales/is.cjs +2 -0
- package/node_modules/zod/v4/locales/is.js +2 -0
- package/node_modules/zod/v4/locales/it.cjs +2 -0
- package/node_modules/zod/v4/locales/it.js +2 -0
- package/node_modules/zod/v4/locales/ja.cjs +2 -0
- package/node_modules/zod/v4/locales/ja.js +2 -0
- package/node_modules/zod/v4/locales/ka.cjs +2 -0
- package/node_modules/zod/v4/locales/ka.js +2 -0
- package/node_modules/zod/v4/locales/km.cjs +2 -0
- package/node_modules/zod/v4/locales/km.js +2 -0
- package/node_modules/zod/v4/locales/kn.cjs +2 -0
- package/node_modules/zod/v4/locales/kn.js +2 -0
- package/node_modules/zod/v4/locales/ko.cjs +2 -0
- package/node_modules/zod/v4/locales/ko.js +2 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +2 -0
- package/node_modules/zod/v4/locales/mk.js +2 -0
- package/node_modules/zod/v4/locales/ms.cjs +2 -0
- package/node_modules/zod/v4/locales/ms.js +2 -0
- package/node_modules/zod/v4/locales/ne.cjs +2 -0
- package/node_modules/zod/v4/locales/ne.js +2 -0
- package/node_modules/zod/v4/locales/nl.cjs +2 -0
- package/node_modules/zod/v4/locales/nl.js +2 -0
- package/node_modules/zod/v4/locales/nn.cjs +2 -0
- package/node_modules/zod/v4/locales/nn.js +2 -0
- package/node_modules/zod/v4/locales/no.cjs +2 -0
- package/node_modules/zod/v4/locales/no.js +2 -0
- package/node_modules/zod/v4/locales/ota.cjs +2 -0
- package/node_modules/zod/v4/locales/ota.js +2 -0
- package/node_modules/zod/v4/locales/pl.cjs +2 -0
- package/node_modules/zod/v4/locales/pl.js +2 -0
- package/node_modules/zod/v4/locales/ps.cjs +2 -0
- package/node_modules/zod/v4/locales/ps.js +2 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
- package/node_modules/zod/v4/locales/pt-BR.js +2 -0
- package/node_modules/zod/v4/locales/pt.cjs +2 -0
- package/node_modules/zod/v4/locales/pt.js +2 -0
- package/node_modules/zod/v4/locales/ro.cjs +2 -0
- package/node_modules/zod/v4/locales/ro.js +2 -0
- package/node_modules/zod/v4/locales/ru.cjs +2 -0
- package/node_modules/zod/v4/locales/ru.js +2 -0
- package/node_modules/zod/v4/locales/sk.cjs +2 -0
- package/node_modules/zod/v4/locales/sk.js +2 -0
- package/node_modules/zod/v4/locales/sl.cjs +2 -0
- package/node_modules/zod/v4/locales/sl.js +2 -0
- package/node_modules/zod/v4/locales/sv.cjs +2 -0
- package/node_modules/zod/v4/locales/sv.js +2 -0
- package/node_modules/zod/v4/locales/ta.cjs +2 -0
- package/node_modules/zod/v4/locales/ta.js +2 -0
- package/node_modules/zod/v4/locales/tg.cjs +144 -0
- package/node_modules/zod/v4/locales/tg.d.cts +5 -0
- package/node_modules/zod/v4/locales/tg.d.ts +4 -0
- package/node_modules/zod/v4/locales/tg.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +2 -0
- package/node_modules/zod/v4/locales/th.js +2 -0
- package/node_modules/zod/v4/locales/tk.cjs +2 -0
- package/node_modules/zod/v4/locales/tk.js +2 -0
- package/node_modules/zod/v4/locales/tr.cjs +2 -0
- package/node_modules/zod/v4/locales/tr.js +2 -0
- package/node_modules/zod/v4/locales/uk.cjs +2 -0
- package/node_modules/zod/v4/locales/uk.js +2 -0
- package/node_modules/zod/v4/locales/ur.cjs +2 -0
- package/node_modules/zod/v4/locales/ur.js +2 -0
- package/node_modules/zod/v4/locales/uz.cjs +2 -0
- package/node_modules/zod/v4/locales/uz.js +2 -0
- package/node_modules/zod/v4/locales/vi.cjs +2 -0
- package/node_modules/zod/v4/locales/vi.js +2 -0
- package/node_modules/zod/v4/locales/yo.cjs +2 -0
- package/node_modules/zod/v4/locales/yo.js +2 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-CN.js +2 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-TW.js +2 -0
- package/node_modules/zod/v4/mini/checks.cjs +19 -0
- package/node_modules/zod/v4/mini/coerce.cjs +19 -0
- package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
- package/node_modules/zod/v4/mini/external.cjs +22 -1
- package/node_modules/zod/v4/mini/external.d.cts +1 -1
- package/node_modules/zod/v4/mini/external.d.ts +1 -1
- package/node_modules/zod/v4/mini/external.js +1 -1
- package/node_modules/zod/v4/mini/in-out.cjs +19 -0
- package/node_modules/zod/v4/mini/index.cjs +19 -0
- package/node_modules/zod/v4/mini/iso.cjs +19 -0
- package/node_modules/zod/v4/mini/parse.cjs +19 -0
- package/node_modules/zod/v4/mini/schemas.cjs +44 -8
- package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
- package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
- package/node_modules/zod/v4/mini/schemas.js +21 -6
- package/node_modules/zod/v4-mini/index.cjs +19 -0
- package/openclaw.plugin.json +49 -3
- package/package.json +8 -8
- package/dist/.setup/accounts.runtime-BpWv-6-2.mjs +0 -2
- package/dist/.setup/action-runtime.runtime-DwH3NdpT.mjs +0 -2
- package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
- package/dist/.setup/monitor-Dw5uuKWM.mjs +0 -13
- package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
- package/dist/.setup/send.runtime-BmqRP-WG.mjs +0 -2
- package/dist/.setup/slash-commands.runtime-BpSH0b3q.mjs +0 -2
- package/dist/.setup/slash-skill-commands.runtime-Bi1JWZHY.mjs +0 -2
- package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
- package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/util/promise.js +0 -28
- /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
|
|
2
|
+
import { h as resolveSlackBotToken, o as resolveDefaultSlackAccountId, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
|
|
3
|
+
import { n as formatSlackTarget } from "./target-parsing-FFE26kOV.mjs";
|
|
4
|
+
import { A as countSlackTextUtf8Bytes, C as buildSlackBlocksFallbackText, E as SLACK_EDIT_TEXT_MAX_BYTES, M as truncateSlackTextByUtf8Bytes, Q as normalizeSlackOutboundText, S as stripSlackNativeDataBlocks, T as renderSlackBlockFallbackText, Ut as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, f as assertSlackDetachedTargetAllowed, h as appendSlackNativeDataPlainTextFallback, lt as escapeSlackMrkdwn, m as appendSlackNativeDataFallbackText, v as hasSlackNativeDataBlock, vt as validateSlackBlocksArray, w as buildSlackCompleteBlocksFallbackText, y as isSlackInvalidBlocksError } from "./session-status-DscajIsd.mjs";
|
|
5
|
+
import { _ as getSlackWriteClient, h as createSlackWriteClient, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
|
|
6
|
+
import { p as buildSlackNativeDataDeliveryPlan, t as sendMessageSlack } from "./send-BOVLQi3n.mjs";
|
|
7
7
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
8
|
-
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
|
-
import { createSubsystemLogger, logVerbose
|
|
8
|
+
import { asOptionalRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
|
+
import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
|
|
10
10
|
import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
|
|
11
11
|
import { captureChannelReadAuthority as captureChannelReadAuthority$1 } from "openclaw/plugin-sdk/fetch-runtime";
|
|
12
12
|
import { fetchWithRuntimeDispatcher as fetchWithRuntimeDispatcher$1 } from "openclaw/plugin-sdk/runtime-fetch";
|
|
@@ -15,7 +15,7 @@ import { z } from "zod";
|
|
|
15
15
|
import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
|
|
16
16
|
import fs from "node:fs/promises";
|
|
17
17
|
import { runTasksWithConcurrency } from "openclaw/plugin-sdk/concurrency-runtime";
|
|
18
|
-
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
18
|
+
import { formatErrorMessage, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
|
|
19
19
|
import { normalizeHostname } from "openclaw/plugin-sdk/host-runtime";
|
|
20
20
|
import { resolveRequestUrl } from "openclaw/plugin-sdk/request-url";
|
|
21
21
|
import { saveRemoteMedia, unlinkIfExists } from "openclaw/plugin-sdk/media-runtime";
|
|
@@ -57,11 +57,8 @@ function buildSlackEditTextPayload(content, blocks) {
|
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
59
|
//#region extensions/slack/src/monitor/block-text.ts
|
|
60
|
-
function readSlackBlockType(block) {
|
|
61
|
-
return block && typeof block === "object" && !Array.isArray(block) ? block.type : void 0;
|
|
62
|
-
}
|
|
63
60
|
function hasSlackTableBlock(blocks) {
|
|
64
|
-
return blocks?.some((block) =>
|
|
61
|
+
return blocks?.some((block) => asOptionalRecord(block)?.type === "table") ?? false;
|
|
65
62
|
}
|
|
66
63
|
function hasSlackMessageTableBlock(message) {
|
|
67
64
|
return hasSlackTableBlock(message.blocks) || message.attachments?.some((attachment) => !isSlackUnfurlAttachment(attachment) && hasSlackTableBlock(attachment.blocks)) === true;
|
|
@@ -75,7 +72,7 @@ function resolveSlackBlocksText(blocks) {
|
|
|
75
72
|
let hasRichText = false;
|
|
76
73
|
let hasNativeData = false;
|
|
77
74
|
for (const block of blocks) {
|
|
78
|
-
const blockType =
|
|
75
|
+
const blockType = asOptionalRecord(block)?.type;
|
|
79
76
|
hasRichText ||= blockType === "rich_text";
|
|
80
77
|
hasNativeData ||= blockType === "data_visualization" || blockType === "data_table" || blockType === "table";
|
|
81
78
|
const text = renderSlackBlockFallbackText(block, {
|
|
@@ -103,7 +100,7 @@ function resolveSlackAttachmentTableTexts(attachments) {
|
|
|
103
100
|
for (const attachment of attachments ?? []) {
|
|
104
101
|
if (isSlackUnfurlAttachment(attachment)) continue;
|
|
105
102
|
for (const block of attachment.blocks ?? []) {
|
|
106
|
-
if (
|
|
103
|
+
if (asOptionalRecord(block)?.type !== "table") continue;
|
|
107
104
|
const text = renderSlackBlockFallbackText(block, { nativeDataFormat: "plain" });
|
|
108
105
|
if (!text || seen.has(text)) continue;
|
|
109
106
|
seen.add(text);
|
|
@@ -115,7 +112,7 @@ function resolveSlackAttachmentTableTexts(attachments) {
|
|
|
115
112
|
/** Resolve agent-visible Slack text while admitting only native tables from attachments. */
|
|
116
113
|
function resolveSlackMessageText(message, options = {}) {
|
|
117
114
|
let resolved = chooseSlackPrimaryText({
|
|
118
|
-
messageText: options.preserveMessageTextWhitespace ?
|
|
115
|
+
messageText: options.preserveMessageTextWhitespace ? readNonBlankString(message.text) : normalizeOptionalString(message.text),
|
|
119
116
|
blocksText: resolveSlackBlocksText(message.blocks)
|
|
120
117
|
});
|
|
121
118
|
for (const tableText of resolveSlackAttachmentTableTexts(message.attachments)) resolved = appendDistinctSlackText(resolved, tableText);
|
|
@@ -195,13 +192,14 @@ function assertSlackFileUrl(rawUrl, govSlack) {
|
|
|
195
192
|
if (!isSlackHostname(parsed.hostname, govSlack)) throw new Error(`Refusing to send Slack token to non-Slack host "${parsed.hostname}" (url: ${rawUrl})`);
|
|
196
193
|
return parsed;
|
|
197
194
|
}
|
|
198
|
-
function
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
return {
|
|
203
|
-
|
|
204
|
-
|
|
195
|
+
function captureSlackMediaReadGuard(params) {
|
|
196
|
+
const inherited = captureChannelReadAuthority$1();
|
|
197
|
+
const { assertCurrent, abortSignal } = params;
|
|
198
|
+
if (!assertCurrent && !abortSignal) return inherited;
|
|
199
|
+
return () => {
|
|
200
|
+
inherited?.();
|
|
201
|
+
abortSignal?.throwIfAborted();
|
|
202
|
+
assertCurrent?.();
|
|
205
203
|
};
|
|
206
204
|
}
|
|
207
205
|
function createSlackMediaFetch(govSlack, assertReadAuthority = captureChannelReadAuthority$1()) {
|
|
@@ -237,34 +235,41 @@ const SLACK_GOV_MEDIA_SSRF_POLICY = {
|
|
|
237
235
|
const SLACK_MEDIA_READ_IDLE_TIMEOUT_MS = 6e4;
|
|
238
236
|
const SLACK_MEDIA_TOTAL_TIMEOUT_MS = 12e4;
|
|
239
237
|
async function saveSlackMedia(params) {
|
|
240
|
-
const
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
timeoutAbortController?.signal
|
|
245
|
-
].filter((signal) => Boolean(signal));
|
|
238
|
+
const url = assertSlackFileUrl(params.url, params.govSlack).href;
|
|
239
|
+
const totalTimeoutMs = params.totalTimeoutMs ?? SLACK_MEDIA_TOTAL_TIMEOUT_MS;
|
|
240
|
+
const timeoutAbortController = totalTimeoutMs ? new AbortController() : void 0;
|
|
241
|
+
const abortSignals = [params.abortSignal, timeoutAbortController?.signal].filter((signal) => Boolean(signal));
|
|
246
242
|
const signal = abortSignals.length > 1 ? AbortSignal.any(abortSignals) : abortSignals[0];
|
|
247
243
|
let timedOut = false;
|
|
248
244
|
let timeoutHandle = null;
|
|
249
245
|
const savePromise = saveRemoteMedia({
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
246
|
+
url,
|
|
247
|
+
fetchImpl: createSlackMediaFetch(params.govSlack, params.assertReadAuthority),
|
|
248
|
+
beforeRequest: params.assertReadAuthority,
|
|
249
|
+
assertCurrent: params.assertCurrent,
|
|
250
|
+
requestInit: {
|
|
251
|
+
headers: { Authorization: `Bearer ${params.token}` },
|
|
252
|
+
...signal ? { signal } : {}
|
|
253
|
+
},
|
|
254
|
+
...params.file ? {
|
|
255
|
+
filePathHint: params.file.name,
|
|
256
|
+
fallbackContentType: resolveSlackMediaMimetype(params.file)
|
|
257
|
+
} : {},
|
|
258
|
+
maxBytes: params.maxBytes,
|
|
259
|
+
ssrfPolicy: params.govSlack ? SLACK_GOV_MEDIA_SSRF_POLICY : SLACK_MEDIA_SSRF_POLICY,
|
|
260
|
+
readIdleTimeoutMs: params.readIdleTimeoutMs ?? 6e4
|
|
256
261
|
}).catch((error) => {
|
|
257
262
|
if (timedOut) return new Promise(() => {});
|
|
258
263
|
throw error;
|
|
259
264
|
});
|
|
260
265
|
try {
|
|
261
|
-
if (!
|
|
266
|
+
if (!totalTimeoutMs) return await savePromise;
|
|
262
267
|
const timeoutPromise = new Promise((_, reject) => {
|
|
263
268
|
timeoutHandle = setTimeout(() => {
|
|
264
269
|
timedOut = true;
|
|
265
270
|
timeoutAbortController?.abort();
|
|
266
|
-
reject(/* @__PURE__ */ new Error(`slack media download timed out after ${
|
|
267
|
-
},
|
|
271
|
+
reject(/* @__PURE__ */ new Error(`slack media download timed out after ${totalTimeoutMs}ms`));
|
|
272
|
+
}, totalTimeoutMs);
|
|
268
273
|
timeoutHandle.unref?.();
|
|
269
274
|
});
|
|
270
275
|
return await Promise.race([savePromise, timeoutPromise]);
|
|
@@ -306,42 +311,35 @@ function formatSlackMediaFailure(error) {
|
|
|
306
311
|
}
|
|
307
312
|
async function fetchFreshSlackFileUrl(params) {
|
|
308
313
|
if (!params.file.id || !params.client) return null;
|
|
314
|
+
const assertCurrent = captureSlackMediaReadGuard(params);
|
|
309
315
|
try {
|
|
310
|
-
|
|
316
|
+
assertCurrent?.();
|
|
317
|
+
const info = await params.client.files.info({ file: params.file.id });
|
|
318
|
+
assertCurrent?.();
|
|
319
|
+
const freshFile = info.file;
|
|
311
320
|
if (freshFile && params.isRefreshedFileAllowed?.(freshFile) === false) {
|
|
312
|
-
logVerbose
|
|
321
|
+
logVerbose(`slack: refreshed file metadata rejected for file id=${params.file.id}`);
|
|
313
322
|
return null;
|
|
314
323
|
}
|
|
315
324
|
const freshUrl = freshFile?.url_private_download ?? freshFile?.url_private;
|
|
316
325
|
if (freshUrl) {
|
|
317
|
-
logVerbose
|
|
326
|
+
logVerbose(`slack: refreshed file URL via files.info for file id=${params.file.id}`);
|
|
318
327
|
return freshUrl;
|
|
319
328
|
}
|
|
320
|
-
logVerbose
|
|
329
|
+
logVerbose(`slack: files.info returned no private URL for file id=${params.file.id}`);
|
|
321
330
|
return null;
|
|
322
331
|
} catch (error) {
|
|
323
|
-
|
|
332
|
+
assertCurrent?.();
|
|
333
|
+
logVerbose(`slack: files.info failed for file id=${params.file.id}: ${formatErrorMessage(error)}`);
|
|
324
334
|
return null;
|
|
325
335
|
}
|
|
326
336
|
}
|
|
327
337
|
async function downloadSlackMediaFile(params) {
|
|
328
|
-
const assertReadAuthority =
|
|
338
|
+
const assertReadAuthority = captureSlackMediaReadGuard(params);
|
|
329
339
|
assertReadAuthority?.();
|
|
330
|
-
const { url: slackUrl, requestInit } = createSlackMediaRequest(params.url, params.token, params.govSlack);
|
|
331
340
|
const saved = await saveSlackMedia({
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
fetchImpl: createSlackMediaFetch(params.govSlack, assertReadAuthority),
|
|
335
|
-
beforeRequest: assertReadAuthority,
|
|
336
|
-
requestInit,
|
|
337
|
-
filePathHint: params.file.name,
|
|
338
|
-
fallbackContentType: resolveSlackMediaMimetype(params.file, params.file.mimetype),
|
|
339
|
-
maxBytes: params.maxBytes,
|
|
340
|
-
ssrfPolicy: params.govSlack ? SLACK_GOV_MEDIA_SSRF_POLICY : SLACK_MEDIA_SSRF_POLICY
|
|
341
|
-
},
|
|
342
|
-
readIdleTimeoutMs: params.readIdleTimeoutMs,
|
|
343
|
-
totalTimeoutMs: params.totalTimeoutMs ?? SLACK_MEDIA_TOTAL_TIMEOUT_MS,
|
|
344
|
-
abortSignal: params.abortSignal
|
|
341
|
+
...params,
|
|
342
|
+
assertReadAuthority
|
|
345
343
|
});
|
|
346
344
|
const fileMime = normalizeOptionalLowercaseString(params.file.mimetype);
|
|
347
345
|
const fileName = normalizeLowercaseStringOrEmpty(params.file.name);
|
|
@@ -351,9 +349,8 @@ async function downloadSlackMediaFile(params) {
|
|
|
351
349
|
throw new Error("blocked: unexpected HTML content");
|
|
352
350
|
}
|
|
353
351
|
}
|
|
354
|
-
const
|
|
352
|
+
const contentType = resolveSlackMediaMimetype(params.file, saved.contentType);
|
|
355
353
|
const label = saved.fileName ?? params.file.name;
|
|
356
|
-
const contentType = effectiveMime ?? saved.contentType;
|
|
357
354
|
return {
|
|
358
355
|
path: saved.path,
|
|
359
356
|
...contentType ? { contentType } : {},
|
|
@@ -364,16 +361,11 @@ async function downloadSlackMediaFile(params) {
|
|
|
364
361
|
})}]`
|
|
365
362
|
};
|
|
366
363
|
}
|
|
367
|
-
function isForwardedSlackAttachment(attachment) {
|
|
368
|
-
return attachment.is_share === true;
|
|
369
|
-
}
|
|
370
364
|
function resolveForwardedAttachmentImageUrl(attachment, govSlack) {
|
|
371
365
|
const rawUrl = attachment.image_url?.trim();
|
|
372
366
|
if (!rawUrl) return null;
|
|
373
367
|
try {
|
|
374
|
-
|
|
375
|
-
if (parsed.protocol !== "https:" || !isSlackHostname(parsed.hostname, govSlack)) return null;
|
|
376
|
-
return parsed.toString();
|
|
368
|
+
return assertSlackFileUrl(rawUrl, govSlack).href;
|
|
377
369
|
} catch {
|
|
378
370
|
return null;
|
|
379
371
|
}
|
|
@@ -383,6 +375,7 @@ function resolveForwardedAttachmentImageUrl(attachment, govSlack) {
|
|
|
383
375
|
* Returns `null` when no files could be downloaded.
|
|
384
376
|
*/
|
|
385
377
|
async function resolveSlackMedia(params) {
|
|
378
|
+
const assertCurrent = captureSlackMediaReadGuard(params);
|
|
386
379
|
const govSlack = isGovSlackClient(params.client);
|
|
387
380
|
const files = params.files ?? [];
|
|
388
381
|
const limitedFiles = files.length > 8 ? files.slice(0, 8) : files;
|
|
@@ -390,10 +383,13 @@ async function resolveSlackMedia(params) {
|
|
|
390
383
|
const refreshFileUrl = (file) => fetchFreshSlackFileUrl({
|
|
391
384
|
file,
|
|
392
385
|
client: params.client,
|
|
393
|
-
isRefreshedFileAllowed: params.isRefreshedFileAllowed
|
|
386
|
+
isRefreshedFileAllowed: params.isRefreshedFileAllowed,
|
|
387
|
+
assertCurrent: params.assertCurrent,
|
|
388
|
+
abortSignal: params.abortSignal
|
|
394
389
|
});
|
|
395
|
-
const { results } = await runTasksWithConcurrency({
|
|
390
|
+
const { results, hasError, firstError } = await runTasksWithConcurrency({
|
|
396
391
|
tasks: limitedFiles.map((file) => async () => {
|
|
392
|
+
assertCurrent?.();
|
|
397
393
|
const preloaded = params.preloadedMedia?.get(file);
|
|
398
394
|
if (preloaded) return preloaded;
|
|
399
395
|
const eventUrl = file.url_private_download ?? file.url_private;
|
|
@@ -410,6 +406,7 @@ async function resolveSlackMedia(params) {
|
|
|
410
406
|
} catch (error) {
|
|
411
407
|
reason = formatSlackMediaFailure(error);
|
|
412
408
|
}
|
|
409
|
+
assertCurrent?.();
|
|
413
410
|
url = attempt === 0 && eventUrl ? await refreshFileUrl(file) : null;
|
|
414
411
|
}
|
|
415
412
|
params.unavailableFiles?.set(file, reason);
|
|
@@ -417,15 +414,15 @@ async function resolveSlackMedia(params) {
|
|
|
417
414
|
return null;
|
|
418
415
|
}),
|
|
419
416
|
limit: MAX_SLACK_MEDIA_CONCURRENCY,
|
|
420
|
-
errorMode: "stop"
|
|
421
|
-
throwOnError: true
|
|
417
|
+
errorMode: "stop"
|
|
422
418
|
});
|
|
419
|
+
if (hasError) throw toErrorObject(firstError, "Slack media read failed");
|
|
423
420
|
const resolved = results.filter((result) => result !== null);
|
|
424
421
|
return resolved.length > 0 ? resolved : null;
|
|
425
422
|
}
|
|
426
423
|
/** Extracts text and media from forwarded-message attachments. Returns null when empty. */
|
|
427
424
|
async function resolveSlackAttachmentContent(params) {
|
|
428
|
-
const forwardedAttachments = (params.attachments ?? []).filter((attachment) =>
|
|
425
|
+
const forwardedAttachments = (params.attachments ?? []).filter((attachment) => attachment.is_share === true).slice(0, MAX_SLACK_FORWARDED_ATTACHMENTS);
|
|
429
426
|
const candidates = [...params.files ?? [], ...forwardedAttachments.flatMap((attachment) => attachment.files ?? [])];
|
|
430
427
|
if (forwardedAttachments.length === 0 && candidates.length === 0) return null;
|
|
431
428
|
const fileIds = /* @__PURE__ */ new Set();
|
|
@@ -456,47 +453,48 @@ async function resolveSlackAttachmentContent(params) {
|
|
|
456
453
|
return selected ? [selected] : [];
|
|
457
454
|
})
|
|
458
455
|
});
|
|
459
|
-
const directMediaPromise = resolveFiles(params.files);
|
|
460
456
|
const textBlocks = [];
|
|
461
|
-
const attachmentMedia = [];
|
|
462
457
|
let unavailableMediaCount = 0;
|
|
463
458
|
const govSlack = isGovSlackClient(params.client);
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
const
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
459
|
+
const { results, hasError, firstError } = await runTasksWithConcurrency({
|
|
460
|
+
tasks: [() => resolveFiles(params.files), async () => {
|
|
461
|
+
const attachmentMedia = [];
|
|
462
|
+
for (const att of forwardedAttachments) {
|
|
463
|
+
const text = att.text?.trim() || att.fallback?.trim();
|
|
464
|
+
if (text) {
|
|
465
|
+
const author = att.author_name;
|
|
466
|
+
const heading = author ? `[Forwarded message from ${author}]` : "[Forwarded message]";
|
|
467
|
+
textBlocks.push(`${heading}\n${text}`);
|
|
468
|
+
}
|
|
469
|
+
const imageUrl = resolveForwardedAttachmentImageUrl(att, govSlack);
|
|
470
|
+
if (imageUrl) try {
|
|
471
|
+
const assertReadAuthority = captureSlackMediaReadGuard(params);
|
|
472
|
+
const saved = await saveSlackMedia({
|
|
473
|
+
...params,
|
|
474
|
+
url: imageUrl,
|
|
475
|
+
govSlack,
|
|
476
|
+
assertReadAuthority
|
|
477
|
+
});
|
|
478
|
+
const label = saved.fileName ?? "forwarded image";
|
|
479
|
+
attachmentMedia.push({
|
|
480
|
+
path: saved.path,
|
|
481
|
+
contentType: saved.contentType,
|
|
482
|
+
...saved.fileName ? { fileName: saved.fileName } : {},
|
|
483
|
+
placeholder: `[Forwarded image: ${label}]`
|
|
484
|
+
});
|
|
485
|
+
} catch (error) {
|
|
486
|
+
unavailableMediaCount += 1;
|
|
487
|
+
slackMediaLog.warn(`slack: forwarded image unavailable (${formatSlackMediaFailure(error)})`);
|
|
488
|
+
}
|
|
489
|
+
attachmentMedia.push(...await resolveFiles(att.files) ?? []);
|
|
490
|
+
}
|
|
491
|
+
return attachmentMedia;
|
|
492
|
+
}],
|
|
493
|
+
limit: 2,
|
|
494
|
+
errorMode: "stop"
|
|
495
|
+
});
|
|
496
|
+
if (hasError) throw toErrorObject(firstError, "Slack attachment read failed");
|
|
497
|
+
const allMedia = results.flatMap((media) => media ?? []);
|
|
500
498
|
const unavailableFiles = allFiles.flatMap((file, index) => {
|
|
501
499
|
const reason = index >= 8 ? SLACK_MEDIA_LIMIT_REASON : unavailableFileReasons.get(file);
|
|
502
500
|
return reason ? [{
|
|
@@ -648,39 +646,29 @@ async function getClient(opts = {}, mode = "read") {
|
|
|
648
646
|
if (opts.assertDirectAdapterHandoff) return createSlackWriteClient(token, { teamId: opts.teamId }, opts.assertDirectAdapterHandoff);
|
|
649
647
|
return getSlackWriteClient(token, { teamId: opts.teamId });
|
|
650
648
|
}
|
|
651
|
-
return
|
|
649
|
+
return createSlackLookupClient(token, { teamId: opts.teamId }, opts.assertDirectAdapterHandoff);
|
|
652
650
|
}
|
|
653
651
|
async function resolveBotUserId(client) {
|
|
654
652
|
const auth = await client.auth.test();
|
|
655
653
|
if (!auth?.user_id) throw new Error("Failed to resolve Slack bot user id");
|
|
656
654
|
return auth.user_id;
|
|
657
655
|
}
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
}
|
|
671
|
-
async function removeSlackReaction(channelId, messageId, emoji, opts = {}) {
|
|
672
|
-
const client = await getClient(opts, "write");
|
|
673
|
-
try {
|
|
674
|
-
await client.reactions.remove({
|
|
675
|
-
channel: channelId,
|
|
676
|
-
timestamp: messageId,
|
|
677
|
-
name: normalizeSlackEmojiName(emoji)
|
|
678
|
-
});
|
|
679
|
-
} catch (err) {
|
|
680
|
-
if (hasSlackPlatformError(err, "no_reaction")) return;
|
|
681
|
-
throw err;
|
|
682
|
-
}
|
|
656
|
+
function createSlackReactionUpdater(method, unchangedError) {
|
|
657
|
+
return async (channelId, messageId, emoji, opts = {}) => {
|
|
658
|
+
const client = await getClient(opts, "write");
|
|
659
|
+
try {
|
|
660
|
+
await client.reactions[method]({
|
|
661
|
+
channel: channelId,
|
|
662
|
+
timestamp: messageId,
|
|
663
|
+
name: normalizeSlackEmojiName(emoji)
|
|
664
|
+
});
|
|
665
|
+
} catch (err) {
|
|
666
|
+
if (!hasSlackPlatformError(err, unchangedError)) throw err;
|
|
667
|
+
}
|
|
668
|
+
};
|
|
683
669
|
}
|
|
670
|
+
const reactSlackMessage = createSlackReactionUpdater("add", "already_reacted");
|
|
671
|
+
const removeSlackReaction = createSlackReactionUpdater("remove", "no_reaction");
|
|
684
672
|
async function removeOwnSlackReactions(channelId, messageId, opts = {}) {
|
|
685
673
|
const client = await getClient(opts, "write");
|
|
686
674
|
const userId = await resolveBotUserId(client);
|
|
@@ -752,7 +740,7 @@ async function editSlackRenderedMessage(channelId, messageId, content, opts = {}
|
|
|
752
740
|
try {
|
|
753
741
|
await client.chat.update(update);
|
|
754
742
|
} catch (error) {
|
|
755
|
-
if (!
|
|
743
|
+
if (!hasNativeData || !isSlackInvalidBlocksError(error)) throw error;
|
|
756
744
|
logVerbose("slack edit: native data block rejected, retrying with text fallback");
|
|
757
745
|
const survivorBlocks = stripSlackNativeDataBlocks(blocks);
|
|
758
746
|
const survivorText = buildSlackBlocksFallbackText(survivorBlocks) ?? "";
|
|
@@ -803,30 +791,18 @@ async function readSlackMessages(channelId, opts = {}) {
|
|
|
803
791
|
oldest: normalizeSlackReadTimestamp(opts.after, "after")
|
|
804
792
|
};
|
|
805
793
|
const client = await getClient(opts);
|
|
806
|
-
|
|
807
|
-
const oldest = exactMessageId ? exactMessageId : exactBounds.oldest && Number(exactBounds.oldest) > Number(opts.threadId) ? exactBounds.oldest : opts.threadId;
|
|
808
|
-
const result = await client.conversations.replies({
|
|
809
|
-
channel: channelId,
|
|
810
|
-
ts: opts.threadId,
|
|
811
|
-
limit: readLimit,
|
|
812
|
-
...exactBounds,
|
|
813
|
-
oldest
|
|
814
|
-
});
|
|
815
|
-
return {
|
|
816
|
-
messages: (result.messages ?? []).filter((message) => {
|
|
817
|
-
if (exactMessageId) return message.ts === exactMessageId;
|
|
818
|
-
return message.ts !== opts.threadId;
|
|
819
|
-
}).map(renderSlackReadMessageText),
|
|
820
|
-
hasMore: exactMessageId ? false : Boolean(result.has_more)
|
|
821
|
-
};
|
|
822
|
-
}
|
|
823
|
-
const result = await client.conversations.history({
|
|
794
|
+
const query = {
|
|
824
795
|
channel: channelId,
|
|
825
796
|
limit: readLimit,
|
|
826
797
|
...exactBounds
|
|
827
|
-
}
|
|
798
|
+
};
|
|
799
|
+
const result = opts.threadId ? await client.conversations.replies({
|
|
800
|
+
...query,
|
|
801
|
+
ts: opts.threadId,
|
|
802
|
+
oldest: exactMessageId ? exactMessageId : exactBounds.oldest && Number(exactBounds.oldest) > Number(opts.threadId) ? exactBounds.oldest : opts.threadId
|
|
803
|
+
}) : await client.conversations.history(query);
|
|
828
804
|
return {
|
|
829
|
-
messages: (result.messages ?? []).filter((message) =>
|
|
805
|
+
messages: (result.messages ?? []).filter((message) => exactMessageId ? message.ts === exactMessageId : !opts.threadId || message.ts !== opts.threadId).map(renderSlackReadMessageText),
|
|
830
806
|
hasMore: exactMessageId ? false : Boolean(result.has_more)
|
|
831
807
|
};
|
|
832
808
|
}
|
|
@@ -851,55 +827,23 @@ async function unpinSlackMessage(channelId, messageId, opts = {}) {
|
|
|
851
827
|
async function listSlackPins(channelId, opts = {}) {
|
|
852
828
|
return (await (await getClient(opts)).pins.list({ channel: channelId })).items ?? [];
|
|
853
829
|
}
|
|
854
|
-
function
|
|
855
|
-
const
|
|
856
|
-
|
|
830
|
+
function hasSlackScopeProof(params) {
|
|
831
|
+
const channelId = normalizeOptionalString(params.channelId);
|
|
832
|
+
if (!channelId) return false;
|
|
833
|
+
const threadId = normalizeOptionalString(params.threadId);
|
|
834
|
+
const { file } = params;
|
|
835
|
+
if (!threadId && [
|
|
857
836
|
file.channels,
|
|
858
837
|
file.groups,
|
|
859
838
|
file.ims
|
|
860
|
-
])
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
}
|
|
868
|
-
return ids;
|
|
869
|
-
}
|
|
870
|
-
function collectSlackShareMaps(file) {
|
|
871
|
-
if (!file.shares || typeof file.shares !== "object" || Array.isArray(file.shares)) return [];
|
|
872
|
-
const shares = file.shares;
|
|
873
|
-
return [shares.public, shares.private].filter((value) => Boolean(value) && typeof value === "object" && !Array.isArray(value));
|
|
874
|
-
}
|
|
875
|
-
function collectSlackShares(file) {
|
|
876
|
-
const shares = [];
|
|
877
|
-
for (const shareMap of collectSlackShareMaps(file)) for (const [rawChannelId, rawEntries] of Object.entries(shareMap)) {
|
|
878
|
-
const channelId = normalizeOptionalString(rawChannelId);
|
|
879
|
-
if (!channelId || !Array.isArray(rawEntries)) continue;
|
|
880
|
-
for (const rawEntry of rawEntries) {
|
|
881
|
-
if (!rawEntry || typeof rawEntry !== "object" || Array.isArray(rawEntry)) continue;
|
|
882
|
-
const entry = rawEntry;
|
|
883
|
-
const ts = typeof entry.ts === "string" ? normalizeOptionalString(entry.ts) : void 0;
|
|
884
|
-
const threadTs = typeof entry.thread_ts === "string" ? normalizeOptionalString(entry.thread_ts) : void 0;
|
|
885
|
-
if (ts || threadTs) shares.push({
|
|
886
|
-
channelId,
|
|
887
|
-
ts,
|
|
888
|
-
threadTs
|
|
889
|
-
});
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
|
-
return shares;
|
|
893
|
-
}
|
|
894
|
-
function lacksSlackScopeProof(params) {
|
|
895
|
-
const channelId = normalizeOptionalString(params.channelId);
|
|
896
|
-
if (!channelId) return true;
|
|
897
|
-
const threadId = normalizeOptionalString(params.threadId);
|
|
898
|
-
const directIds = collectSlackDirectShareChannelIds(params.file);
|
|
899
|
-
const shares = collectSlackShares(params.file);
|
|
900
|
-
if (!(directIds.has(channelId) || shares.some((entry) => entry.channelId === channelId))) return true;
|
|
901
|
-
if (!threadId) return false;
|
|
902
|
-
return !shares.some((entry) => entry.channelId === channelId && (entry.threadTs === threadId || entry.ts === threadId));
|
|
839
|
+
].some((group) => Array.isArray(group) && group.some((entry) => normalizeOptionalString(entry) === channelId))) return true;
|
|
840
|
+
if (!isRecord(file.shares)) return false;
|
|
841
|
+
return [file.shares.public, file.shares.private].some((shareMap) => isRecord(shareMap) && Object.entries(shareMap).some(([sharedChannelId, entries]) => normalizeOptionalString(sharedChannelId) === channelId && Array.isArray(entries) && entries.some((entry) => {
|
|
842
|
+
if (!isRecord(entry)) return false;
|
|
843
|
+
const ts = normalizeOptionalString(entry.ts);
|
|
844
|
+
const threadTs = normalizeOptionalString(entry.thread_ts);
|
|
845
|
+
return threadId ? ts === threadId || threadTs === threadId : Boolean(ts || threadTs);
|
|
846
|
+
})));
|
|
903
847
|
}
|
|
904
848
|
/**
|
|
905
849
|
* Downloads a Slack file by ID and saves it to the local media store.
|
|
@@ -909,7 +853,7 @@ function lacksSlackScopeProof(params) {
|
|
|
909
853
|
async function downloadSlackFile(fileId, opts) {
|
|
910
854
|
const token = resolveToken(opts.token, opts.accountId, opts.cfg);
|
|
911
855
|
const client = await getClient(opts);
|
|
912
|
-
const isFileAllowed = (file) =>
|
|
856
|
+
const isFileAllowed = (file) => hasSlackScopeProof({
|
|
913
857
|
file,
|
|
914
858
|
channelId: opts.channelId,
|
|
915
859
|
threadId: opts.threadId
|
|
@@ -932,4 +876,4 @@ async function downloadSlackFile(fileId, opts) {
|
|
|
932
876
|
}))?.[0] ?? null;
|
|
933
877
|
}
|
|
934
878
|
//#endregion
|
|
935
|
-
export {
|
|
879
|
+
export { hasSlackTableBlock as C, buildSlackEditTextPayload as D, resolveSlackMessageText as E, hasSlackMessageTableBlock as S, resolveSlackBlocksText as T, media_exports as _, editSlackRenderedMessage as a, formatSlackFileReference as b, listSlackPins as c, reactSlackMessage as d, readSlackMessages as f, unpinSlackMessage as g, sendSlackMessage as h, editSlackMessage as i, listSlackReactions as l, removeSlackReaction as m, deleteSlackMessage as n, getSlackMemberInfo as o, removeOwnSlackReactions as p, downloadSlackFile as r, listSlackEmojis as s, actions_exports as t, pinSlackMessage as u, isGovSlackClient as v, isSlackUnfurlAttachment as w, formatSlackFileReferenceList as x, saveRemoteMedia as y };
|