@openclaw/line 2026.10.2 → 2026.10.5-beta.2
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/dist/.setup/api-BxKwG8cd.mjs +3 -0
- package/dist/.setup/{api-CMU7bG-C.mjs → api-DPd9f0cI.mjs} +2 -2
- package/dist/.setup/{card-command-BrU6u6pm.mjs → card-command-BMLk4YKh.mjs} +15 -24
- package/dist/.setup/{channel-InKuXaRS.mjs → channel-DVuSrT_i.mjs} +161 -227
- package/dist/.setup/channel.runtime-IN_F95BO.mjs +4 -0
- package/dist/.setup/{monitor-Bb3HieCd.mjs → monitor-BY32s5Um.mjs} +68 -83
- package/dist/.setup/monitor.runtime-DKuc2SBe.mjs +2 -0
- package/dist/.setup/outbound.runtime-DLyndDng.mjs +3 -0
- package/dist/.setup/probe.runtime-D2MUF_B_.mjs +2 -0
- package/dist/.setup/{send-DAwROcyQ.mjs → send-g4gFsc9W.mjs} +51 -71
- package/dist/.setup/{send-retry-B9Nor0-J.mjs → send-retry-Dzbkz5wG.mjs} +186 -379
- package/dist/.setup/{setup-surface-1jkHGWg7.mjs → setup-surface-CYd8oqzt.mjs} +1 -1
- package/dist/.setup/{template-messages-DdF9zv_j.mjs → template-messages-CwPsGQjw.mjs} +67 -118
- package/dist/api.js +2 -2
- package/dist/channel-plugin-api.js +1 -1
- package/dist/index.js +1 -3
- package/dist/setup-api.js +1 -1
- package/dist/setup-entry.js +1 -1
- package/node_modules/@line/bot-sdk/dist/channel-access-token/api/channelAccessTokenClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/channel-access-token/api/channelAccessTokenClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/channel-access-token/api/channelAccessTokenClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/exceptions.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/exceptions.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/http-fetch.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/http-fetch.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/index.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/insight/api/insightClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/insight/api/insightClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/liff/api/liffClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/liff/api/liffClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.factory.generated.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.generated.d.ts +38 -0
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.generated.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.generated.js +46 -0
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.generated.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/line-bot-client.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/manage-audience/api/manageAudienceBlobClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/manage-audience/api/manageAudienceBlobClient.js +15 -5
- package/node_modules/@line/bot-sdk/dist/cjs/manage-audience/api/manageAudienceBlobClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/manage-audience/api/manageAudienceClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/manage-audience/api/manageAudienceClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiBlobClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiBlobClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiClient.d.ts +39 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiClient.js +59 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/api/messagingApiClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/models.d.ts +5 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/models.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/models.js +5 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/models.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpMessagesRequest.d.ts +5 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpMessagesRequest.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedButton.d.ts +26 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedButton.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedButton.js +14 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedButton.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedEmphasizedItem.d.ts +27 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedEmphasizedItem.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedEmphasizedItem.js +14 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedEmphasizedItem.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedItem.d.ts +26 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedItem.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedItem.js +14 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedItem.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageBody.d.ts +32 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageBody.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageBody.js +14 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageBody.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageRequest.d.ts +32 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageRequest.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageRequest.js +14 -0
- package/node_modules/@line/bot-sdk/dist/cjs/messaging-api/model/pnpTemplatedMessageRequest.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/cjs/middleware.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/module/api/lineModuleClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/module/api/lineModuleClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/module-attach/api/lineModuleAttachClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/module-attach/api/lineModuleAttachClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/shop/api/shopClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/shop/api/shopClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/utils.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/validate-signature.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/version.d.ts +1 -1
- package/node_modules/@line/bot-sdk/dist/cjs/version.js +1 -1
- package/node_modules/@line/bot-sdk/dist/exceptions.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/exceptions.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/http-fetch.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/insight/api/insightClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/liff/api/liffClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/line-bot-client.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/line-bot-client.generated.d.ts +38 -0
- package/node_modules/@line/bot-sdk/dist/line-bot-client.generated.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/line-bot-client.generated.js +46 -0
- package/node_modules/@line/bot-sdk/dist/line-bot-client.generated.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/manage-audience/api/manageAudienceBlobClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/manage-audience/api/manageAudienceBlobClient.js +15 -5
- package/node_modules/@line/bot-sdk/dist/manage-audience/api/manageAudienceBlobClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/manage-audience/api/manageAudienceClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/messaging-api/api/messagingApiBlobClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/messaging-api/api/messagingApiClient.d.ts +39 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/api/messagingApiClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/messaging-api/api/messagingApiClient.js +61 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/api/messagingApiClient.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/models.d.ts +5 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/models.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/models.js +5 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/models.js.map +1 -1
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpMessagesRequest.d.ts +5 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpMessagesRequest.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedButton.d.ts +26 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedButton.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedButton.js +13 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedButton.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedEmphasizedItem.d.ts +27 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedEmphasizedItem.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedEmphasizedItem.js +13 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedEmphasizedItem.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedItem.d.ts +26 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedItem.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedItem.js +13 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedItem.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageBody.d.ts +32 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageBody.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageBody.js +13 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageBody.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageRequest.d.ts +32 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageRequest.d.ts.map +1 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageRequest.js +13 -0
- package/node_modules/@line/bot-sdk/dist/messaging-api/model/pnpTemplatedMessageRequest.js.map +1 -0
- package/node_modules/@line/bot-sdk/dist/module/api/lineModuleClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/module-attach/api/lineModuleAttachClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/shop/api/shopClient.d.ts.map +1 -1
- package/node_modules/@line/bot-sdk/dist/version.d.ts +1 -1
- package/node_modules/@line/bot-sdk/dist/version.js +1 -1
- package/node_modules/@line/bot-sdk/lib/line-bot-client.generated.ts +68 -0
- package/node_modules/@line/bot-sdk/lib/manage-audience/api/manageAudienceBlobClient.ts +15 -5
- package/node_modules/@line/bot-sdk/lib/messaging-api/.openapi-generator/FILES +5 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/api/messagingApiClient.ts +89 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/model/models.ts +5 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/model/pnpMessagesRequest.ts +5 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/model/pnpTemplatedButton.ts +26 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/model/pnpTemplatedEmphasizedItem.ts +27 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/model/pnpTemplatedItem.ts +26 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/model/pnpTemplatedMessageBody.ts +33 -0
- package/node_modules/@line/bot-sdk/lib/messaging-api/model/pnpTemplatedMessageRequest.ts +33 -0
- package/node_modules/@line/bot-sdk/lib/version.ts +1 -1
- package/node_modules/@line/bot-sdk/node_modules/@types/node/README.md +2 -2
- package/node_modules/@line/bot-sdk/node_modules/@types/node/async_hooks.d.ts +18 -22
- package/node_modules/@line/bot-sdk/node_modules/@types/node/buffer.buffer.d.ts +10 -5
- package/node_modules/@line/bot-sdk/node_modules/@types/node/buffer.d.ts +7 -0
- package/node_modules/@line/bot-sdk/node_modules/@types/node/child_process.d.ts +5 -1
- package/node_modules/@line/bot-sdk/node_modules/@types/node/crypto.d.ts +114 -47
- package/node_modules/@line/bot-sdk/node_modules/@types/node/dgram.d.ts +119 -4
- package/node_modules/@line/bot-sdk/node_modules/@types/node/dns/promises.d.ts +5 -5
- package/node_modules/@line/bot-sdk/node_modules/@types/node/dns.d.ts +6 -6
- package/node_modules/@line/bot-sdk/node_modules/@types/node/events.d.ts +13 -22
- package/node_modules/@line/bot-sdk/node_modules/@types/node/fs/promises.d.ts +79 -66
- package/node_modules/@line/bot-sdk/node_modules/@types/node/fs.d.ts +153 -90
- package/node_modules/@line/bot-sdk/node_modules/@types/node/http.d.ts +94 -2
- package/node_modules/@line/bot-sdk/node_modules/@types/node/http2.d.ts +65 -18
- package/node_modules/@line/bot-sdk/node_modules/@types/node/inspector.d.ts +47 -1
- package/node_modules/@line/bot-sdk/node_modules/@types/node/inspector.generated.d.ts +167 -0
- package/node_modules/@line/bot-sdk/node_modules/@types/node/module.d.ts +1 -0
- package/node_modules/@line/bot-sdk/node_modules/@types/node/net.d.ts +139 -15
- package/node_modules/@line/bot-sdk/node_modules/@types/node/os.d.ts +30 -30
- package/node_modules/@line/bot-sdk/node_modules/@types/node/package.json +3 -18
- package/node_modules/@line/bot-sdk/node_modules/@types/node/perf_hooks.d.ts +31 -19
- package/node_modules/@line/bot-sdk/node_modules/@types/node/process.d.ts +42 -43
- package/node_modules/@line/bot-sdk/node_modules/@types/node/sqlite.d.ts +153 -11
- package/node_modules/@line/bot-sdk/node_modules/@types/node/stream/consumers.d.ts +7 -0
- package/node_modules/@line/bot-sdk/node_modules/@types/node/stream/web.d.ts +19 -0
- package/node_modules/@line/bot-sdk/node_modules/@types/node/stream.d.ts +2 -1
- package/node_modules/@line/bot-sdk/node_modules/@types/node/test.d.ts +320 -13
- package/node_modules/@line/bot-sdk/node_modules/@types/node/tls.d.ts +50 -15
- package/node_modules/@line/bot-sdk/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +5 -0
- package/node_modules/@line/bot-sdk/node_modules/@types/node/tty.d.ts +4 -3
- package/node_modules/@line/bot-sdk/node_modules/@types/node/url.d.ts +27 -3
- package/node_modules/@line/bot-sdk/node_modules/@types/node/util.d.ts +42 -2
- package/node_modules/@line/bot-sdk/node_modules/@types/node/v8.d.ts +51 -23
- package/node_modules/@line/bot-sdk/node_modules/@types/node/vm.d.ts +52 -87
- package/node_modules/@line/bot-sdk/node_modules/@types/node/zlib.d.ts +23 -0
- package/node_modules/@line/bot-sdk/node_modules/undici-types/cache-interceptor.d.ts +6 -0
- package/node_modules/@line/bot-sdk/node_modules/undici-types/client.d.ts +15 -0
- package/node_modules/@line/bot-sdk/node_modules/undici-types/connector.d.ts +2 -0
- package/node_modules/@line/bot-sdk/node_modules/undici-types/dispatcher.d.ts +8 -5
- package/node_modules/@line/bot-sdk/node_modules/undici-types/errors.d.ts +17 -1
- package/node_modules/@line/bot-sdk/node_modules/undici-types/index.d.ts +4 -1
- package/node_modules/@line/bot-sdk/node_modules/undici-types/interceptors.d.ts +7 -0
- package/node_modules/@line/bot-sdk/node_modules/undici-types/package.json +1 -1
- package/node_modules/@line/bot-sdk/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/@line/bot-sdk/node_modules/undici-types/webidl.d.ts +6 -0
- package/node_modules/@line/bot-sdk/node_modules/undici-types/websocket.d.ts +2 -0
- package/node_modules/@line/bot-sdk/package.json +10 -9
- package/package.json +5 -5
- package/dist/.setup/api-BBSLQek1.mjs +0 -3
- package/dist/.setup/channel.runtime-BEhASjr_.mjs +0 -4
- package/dist/.setup/monitor.runtime-C6Kgs5BI.mjs +0 -2
- package/dist/.setup/outbound.runtime-BwO_m4n5.mjs +0 -3
- package/dist/.setup/probe.runtime-C6LYzOHu.mjs +0 -2
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { n as resolveDefaultLineAccountId, r as resolveLineAccount, t as listLineAccountIds } from "./accounts-DOiM8-y3.mjs";
|
|
2
|
-
import { a as normalizeLineAllowEntry, i as hasLineCredentials, r as lineSetupContract, t as lineSetupWizard } from "./setup-surface-
|
|
2
|
+
import { a as normalizeLineAllowEntry, i as hasLineCredentials, r as lineSetupContract, t as lineSetupWizard } from "./setup-surface-CYd8oqzt.mjs";
|
|
3
3
|
import { t as getLineRuntime } from "./runtime-V7yh9OeC.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
4
|
+
import { A as resolveLineQuoteToken, C as fitsLineFlexBubble, E as canCarryLineQuoteToken, M as buildLineMediaMessage, N as inferLineTargetChatType, P as normalizeLineMessagingTarget, _ as createCardTitle, b as postbackAction, c as createEventCard, g as createCardBubble, h as cardText, k as reportLineQuoteCarrierMissing, m as cardBox, s as createAgendaCard, t as explainLineRefusal, u as createActionCard, v as messageAction, x as truncateLineActionLabel } from "./send-retry-Dzbkz5wG.mjs";
|
|
6
5
|
import { buildDmGroupAccountAllowlistAdapter, createFlatAllowlistOverrideResolver } from "openclaw/plugin-sdk/allowlist-config-edit";
|
|
7
6
|
import { buildChannelOutboundSessionRoute, createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
8
7
|
import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing";
|
|
9
8
|
import { buildChannelGroupsScopeTree, createRestrictSendersChannelSecurity, resolveScopeRequireMention } from "openclaw/plugin-sdk/channel-policy";
|
|
10
9
|
import { createChannelDirectoryAdapter, createResolvedDirectoryEntriesLister } from "openclaw/plugin-sdk/directory-runtime";
|
|
10
|
+
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
11
11
|
import { describeWebhookAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
12
12
|
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
|
|
13
13
|
import { clearAccountFieldsFromConfigSection, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
@@ -17,7 +17,7 @@ import { requireChannelOpenAllowFrom } from "openclaw/plugin-sdk/extension-share
|
|
|
17
17
|
import { z } from "zod";
|
|
18
18
|
import { parseAccessGroupAllowFromEntry } from "openclaw/plugin-sdk/access-groups";
|
|
19
19
|
import { firstDefined } from "openclaw/plugin-sdk/allow-from";
|
|
20
|
-
import { createAccountStatusSink, defineChannelMessageAdapter, listMessageReceiptPlatformIds } from "openclaw/plugin-sdk/channel-outbound";
|
|
20
|
+
import { createAccountStatusSink, createMessageReceiptFromOutboundResults, defineChannelMessageAdapter, listMessageReceiptPlatformIds } from "openclaw/plugin-sdk/channel-outbound";
|
|
21
21
|
import { buildTokenChannelStatusSummary, collectIssuesForEnabledAccounts, createComputedAccountStatusAdapter, createDefaultChannelRuntimeState, createDependentCredentialStatusIssueCollector } from "openclaw/plugin-sdk/status-helpers";
|
|
22
22
|
import { createChannelPartialDeliveryError, isChannelPartialDeliveryError } from "openclaw/plugin-sdk/channel-inbound";
|
|
23
23
|
import { createAttachedChannelResultAdapter, createEmptyChannelResult } from "openclaw/plugin-sdk/channel-send-result";
|
|
@@ -308,7 +308,6 @@ const lineDoctor = {
|
|
|
308
308
|
};
|
|
309
309
|
//#endregion
|
|
310
310
|
//#region extensions/line/src/status.ts
|
|
311
|
-
const loadLineProbeRuntime$1 = createLazyRuntimeModule(() => import("./probe.runtime-C6LYzOHu.mjs"));
|
|
312
311
|
const collectLineCredentialIssues = createDependentCredentialStatusIssueCollector({
|
|
313
312
|
channel: "line",
|
|
314
313
|
dependencySourceKey: "tokenSource",
|
|
@@ -363,7 +362,7 @@ const lineStatusAdapter = createComputedAccountStatusAdapter({
|
|
|
363
362
|
defaultRuntime: createDefaultChannelRuntimeState(DEFAULT_ACCOUNT_ID),
|
|
364
363
|
collectStatusIssues: (accounts) => [...collectLineCredentialIssues(accounts), ...collectLineWebhookIssues(accounts)],
|
|
365
364
|
buildChannelSummary: ({ snapshot }) => buildTokenChannelStatusSummary(snapshot),
|
|
366
|
-
probeAccount: async ({ account, timeoutMs }) => await (await
|
|
365
|
+
probeAccount: async ({ account, timeoutMs }) => await (await import("./probe.runtime-D2MUF_B_.mjs")).probeLineBot(account.channelAccessToken, timeoutMs),
|
|
367
366
|
resolveAccountSnapshot: ({ account, probe }) => ({
|
|
368
367
|
accountId: account.accountId,
|
|
369
368
|
name: account.name,
|
|
@@ -381,8 +380,6 @@ const lineStatusAdapter = createComputedAccountStatusAdapter({
|
|
|
381
380
|
});
|
|
382
381
|
//#endregion
|
|
383
382
|
//#region extensions/line/src/gateway.ts
|
|
384
|
-
const loadLineProbeRuntime = createLazyRuntimeModule(() => import("./probe.runtime-C6LYzOHu.mjs"));
|
|
385
|
-
const loadLineMonitorRuntime = createLazyRuntimeModule(() => import("./monitor.runtime-C6Kgs5BI.mjs"));
|
|
386
383
|
const lineGatewayAdapter = {
|
|
387
384
|
startAccount: async (ctx) => {
|
|
388
385
|
const account = ctx.account;
|
|
@@ -397,16 +394,16 @@ const lineGatewayAdapter = {
|
|
|
397
394
|
statusSink({ lifecycle: "starting" });
|
|
398
395
|
let lineBotLabel = "";
|
|
399
396
|
try {
|
|
400
|
-
const probe = await (await
|
|
397
|
+
const probe = await (await import("./probe.runtime-D2MUF_B_.mjs")).probeLineBot(token, 2500);
|
|
401
398
|
const displayName = probe.ok ? probe.bot?.displayName?.trim() : null;
|
|
402
399
|
if (displayName) lineBotLabel = ` (${displayName})`;
|
|
403
400
|
const delivery = describeLineWebhookDelivery({ webhook: probe.ok ? probe.webhook : void 0 });
|
|
404
401
|
if (delivery) ctx.log?.warn(`[${account.accountId}] ${delivery.message} Fix: ${delivery.fix}.`);
|
|
405
402
|
} catch (err) {
|
|
406
|
-
if (getLineRuntime().logging.shouldLogVerbose()) ctx.log?.debug?.(`[${account.accountId}] bot
|
|
403
|
+
if (getLineRuntime().logging.shouldLogVerbose()) ctx.log?.debug?.(`[${account.accountId}] bot check failed: ${String(err)}`);
|
|
407
404
|
}
|
|
408
405
|
ctx.log?.info(`[${account.accountId}] starting LINE provider${lineBotLabel}`);
|
|
409
|
-
const { monitorLineProvider } = await
|
|
406
|
+
const { monitorLineProvider } = await import("./monitor.runtime-DKuc2SBe.mjs");
|
|
410
407
|
return await monitorLineProvider({
|
|
411
408
|
channelAccessToken: token,
|
|
412
409
|
channelSecret: secret,
|
|
@@ -464,69 +461,49 @@ function resolveLineGroupRequireMention(params) {
|
|
|
464
461
|
//#endregion
|
|
465
462
|
//#region extensions/line/src/quick-reply-fallback.ts
|
|
466
463
|
function buildLineQuickReplyFallbackText(labels) {
|
|
467
|
-
const normalized = normalizeStringEntries(labels
|
|
464
|
+
const normalized = normalizeStringEntries(labels).slice(0, 13);
|
|
468
465
|
if (normalized.length === 0) return "Choose an option.";
|
|
469
466
|
return `Options:\n${normalized.map((label) => `- ${label}`).join("\n")}`;
|
|
470
467
|
}
|
|
471
468
|
//#endregion
|
|
472
469
|
//#region extensions/line/src/flex-templates/media-control-cards.ts
|
|
473
|
-
function
|
|
470
|
+
function createControlButton(label, data, style = "secondary") {
|
|
474
471
|
return {
|
|
475
|
-
type: "
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
472
|
+
type: "button",
|
|
473
|
+
action: postbackAction(label, data),
|
|
474
|
+
style,
|
|
475
|
+
height: "sm",
|
|
476
|
+
flex: 1
|
|
479
477
|
};
|
|
480
478
|
}
|
|
481
479
|
function createMediaPlayerCard(params) {
|
|
482
|
-
const { title, subtitle, source, imageUrl, isPlaying,
|
|
480
|
+
const { title, subtitle, source, imageUrl, isPlaying, controls } = params;
|
|
483
481
|
const trackInfo = [createCardTitle(title)];
|
|
484
|
-
if (subtitle) trackInfo.push({
|
|
485
|
-
type: "text",
|
|
486
|
-
text: subtitle,
|
|
482
|
+
if (subtitle) trackInfo.push(cardText(subtitle, {
|
|
487
483
|
size: "md",
|
|
488
484
|
color: "#666666",
|
|
489
485
|
wrap: true,
|
|
490
486
|
margin: "sm"
|
|
491
|
-
});
|
|
487
|
+
}));
|
|
492
488
|
const statusItems = [];
|
|
493
|
-
if (isPlaying !== void 0) statusItems.push(
|
|
494
|
-
type: "box",
|
|
495
|
-
layout: "vertical",
|
|
496
|
-
contents: [],
|
|
489
|
+
if (isPlaying !== void 0) statusItems.push(cardBox("horizontal", [cardBox("vertical", [], {
|
|
497
490
|
width: "8px",
|
|
498
491
|
height: "8px",
|
|
499
492
|
backgroundColor: isPlaying ? "#06C755" : "#CCCCCC",
|
|
500
493
|
cornerRadius: "4px"
|
|
501
|
-
}, {
|
|
502
|
-
type: "text",
|
|
503
|
-
text: isPlaying ? "Now Playing" : "Paused",
|
|
494
|
+
}), cardText(isPlaying ? "Now Playing" : "Paused", {
|
|
504
495
|
size: "xs",
|
|
505
496
|
color: isPlaying ? "#06C755" : "#888888",
|
|
506
497
|
weight: "bold",
|
|
507
498
|
margin: "sm"
|
|
508
|
-
}], { alignItems: "center" }));
|
|
509
|
-
if (source) statusItems.push({
|
|
510
|
-
type: "text",
|
|
511
|
-
text: source,
|
|
499
|
+
})], { alignItems: "center" }));
|
|
500
|
+
if (source) statusItems.push(cardText(source, {
|
|
512
501
|
size: "xs",
|
|
513
502
|
color: "#AAAAAA",
|
|
514
503
|
margin: statusItems.length > 0 ? "lg" : void 0
|
|
515
|
-
});
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
text: progress,
|
|
519
|
-
size: "xs",
|
|
520
|
-
color: "#888888",
|
|
521
|
-
align: "end",
|
|
522
|
-
flex: 1
|
|
523
|
-
});
|
|
524
|
-
const bodyContents = [{
|
|
525
|
-
type: "box",
|
|
526
|
-
layout: "vertical",
|
|
527
|
-
contents: trackInfo
|
|
528
|
-
}];
|
|
529
|
-
if (statusItems.length > 0) bodyContents.push(horizontalRow(statusItems, {
|
|
504
|
+
}));
|
|
505
|
+
const bodyContents = [cardBox("vertical", trackInfo)];
|
|
506
|
+
if (statusItems.length > 0) bodyContents.push(cardBox("horizontal", statusItems, {
|
|
530
507
|
margin: "lg",
|
|
531
508
|
alignItems: "center"
|
|
532
509
|
}));
|
|
@@ -538,112 +515,88 @@ function createMediaPlayerCard(params) {
|
|
|
538
515
|
aspectRatio: "1:1",
|
|
539
516
|
aspectMode: "cover"
|
|
540
517
|
};
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
const control = controls[key];
|
|
568
|
-
if (!control) continue;
|
|
569
|
-
const button = {
|
|
570
|
-
type: "button",
|
|
571
|
-
action: postbackAction(label, control.data),
|
|
572
|
-
style,
|
|
573
|
-
flex: 1,
|
|
574
|
-
height: "sm"
|
|
575
|
-
};
|
|
576
|
-
if (key !== "previous") button.margin = controlButtons.length > 0 ? "md" : void 0;
|
|
577
|
-
controlButtons.push(button);
|
|
578
|
-
}
|
|
579
|
-
if (controlButtons.length > 0) footerContents.push(horizontalRow(controlButtons));
|
|
580
|
-
}
|
|
581
|
-
if (extraActions?.length) footerContents.push(horizontalRow(extraActions.slice(0, 2).map((action, index) => ({
|
|
582
|
-
type: "button",
|
|
583
|
-
action: postbackAction(truncateLineActionLabel(action.label, 15), action.data),
|
|
584
|
-
style: "secondary",
|
|
585
|
-
flex: 1,
|
|
586
|
-
height: "sm",
|
|
587
|
-
margin: index > 0 ? "md" : void 0
|
|
588
|
-
})), { margin: "md" }));
|
|
589
|
-
if (footerContents.length > 0) bubble.footer = {
|
|
590
|
-
type: "box",
|
|
591
|
-
layout: "vertical",
|
|
592
|
-
contents: footerContents,
|
|
593
|
-
paddingAll: "lg",
|
|
594
|
-
backgroundColor: "#FAFAFA"
|
|
595
|
-
};
|
|
518
|
+
const controlButtons = [];
|
|
519
|
+
for (const [key, label, style] of [
|
|
520
|
+
[
|
|
521
|
+
"previous",
|
|
522
|
+
"⏮",
|
|
523
|
+
"secondary"
|
|
524
|
+
],
|
|
525
|
+
[
|
|
526
|
+
"play",
|
|
527
|
+
"▶",
|
|
528
|
+
isPlaying ? "secondary" : "primary"
|
|
529
|
+
],
|
|
530
|
+
[
|
|
531
|
+
"pause",
|
|
532
|
+
"⏸",
|
|
533
|
+
isPlaying ? "primary" : "secondary"
|
|
534
|
+
],
|
|
535
|
+
[
|
|
536
|
+
"next",
|
|
537
|
+
"⏭",
|
|
538
|
+
"secondary"
|
|
539
|
+
]
|
|
540
|
+
]) {
|
|
541
|
+
const button = createControlButton(label, controls[key].data, style);
|
|
542
|
+
if (key !== "previous") button.margin = "md";
|
|
543
|
+
controlButtons.push(button);
|
|
596
544
|
}
|
|
545
|
+
bubble.footer = cardBox("vertical", [cardBox("horizontal", controlButtons)], {
|
|
546
|
+
paddingAll: "lg",
|
|
547
|
+
backgroundColor: "#FAFAFA"
|
|
548
|
+
});
|
|
597
549
|
return bubble;
|
|
598
550
|
}
|
|
599
551
|
function createAppleTvRemoteCard(params) {
|
|
600
552
|
const { deviceName, status, actionData } = params;
|
|
601
553
|
const headerContents = [createCardTitle(deviceName)];
|
|
602
|
-
if (status) headerContents.push({
|
|
603
|
-
type: "text",
|
|
604
|
-
text: status,
|
|
554
|
+
if (status) headerContents.push(cardText(status, {
|
|
605
555
|
size: "sm",
|
|
606
556
|
color: "#666666",
|
|
607
557
|
wrap: true,
|
|
608
558
|
margin: "sm"
|
|
609
|
-
});
|
|
610
|
-
const
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
559
|
+
}));
|
|
560
|
+
const labels = {
|
|
561
|
+
up: "↑",
|
|
562
|
+
down: "↓",
|
|
563
|
+
left: "←",
|
|
564
|
+
right: "→",
|
|
565
|
+
select: "OK",
|
|
566
|
+
menu: "Menu",
|
|
567
|
+
home: "Home",
|
|
568
|
+
play: "Play",
|
|
569
|
+
pause: "Pause",
|
|
570
|
+
volumeUp: "Vol +",
|
|
571
|
+
volumeDown: "Vol -",
|
|
572
|
+
mute: "Mute"
|
|
573
|
+
};
|
|
617
574
|
const controlRows = [
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
]
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
],
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
],
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
]
|
|
640
|
-
];
|
|
575
|
+
[void 0, [
|
|
576
|
+
null,
|
|
577
|
+
"up",
|
|
578
|
+
null
|
|
579
|
+
]],
|
|
580
|
+
["md", [
|
|
581
|
+
"left",
|
|
582
|
+
"select",
|
|
583
|
+
"right"
|
|
584
|
+
]],
|
|
585
|
+
["md", [
|
|
586
|
+
null,
|
|
587
|
+
"down",
|
|
588
|
+
null
|
|
589
|
+
]],
|
|
590
|
+
["lg", ["menu", "home"]],
|
|
591
|
+
["md", ["play", "pause"]],
|
|
592
|
+
["md", [
|
|
593
|
+
"volumeUp",
|
|
594
|
+
"mute",
|
|
595
|
+
"volumeDown"
|
|
596
|
+
]]
|
|
597
|
+
].map(([margin, buttons]) => cardBox("horizontal", buttons.map((key) => key ? createControlButton(labels[key], actionData[key], key === "select" ? "primary" : "secondary") : { type: "filler" }), margin ? { margin } : {}));
|
|
641
598
|
return createCardBubble([
|
|
642
|
-
|
|
643
|
-
type: "box",
|
|
644
|
-
layout: "vertical",
|
|
645
|
-
contents: headerContents
|
|
646
|
-
},
|
|
599
|
+
cardBox("vertical", headerContents),
|
|
647
600
|
{
|
|
648
601
|
type: "separator",
|
|
649
602
|
margin: "lg",
|
|
@@ -653,76 +606,49 @@ function createAppleTvRemoteCard(params) {
|
|
|
653
606
|
]);
|
|
654
607
|
}
|
|
655
608
|
function createDeviceControlCard(params) {
|
|
656
|
-
const { deviceName, deviceType, status,
|
|
657
|
-
const headerContents = [
|
|
658
|
-
type: "box",
|
|
659
|
-
layout: "vertical",
|
|
660
|
-
contents: [],
|
|
609
|
+
const { deviceName, deviceType, status, controls } = params;
|
|
610
|
+
const headerContents = [cardBox("horizontal", [cardBox("vertical", [], {
|
|
661
611
|
width: "10px",
|
|
662
612
|
height: "10px",
|
|
663
|
-
backgroundColor:
|
|
613
|
+
backgroundColor: "#06C755",
|
|
664
614
|
cornerRadius: "5px"
|
|
665
|
-
}, {
|
|
615
|
+
}), {
|
|
666
616
|
...createCardTitle(deviceName),
|
|
667
617
|
flex: 1,
|
|
668
618
|
margin: "md"
|
|
669
619
|
}], { alignItems: "center" })];
|
|
670
|
-
if (deviceType) headerContents.push({
|
|
671
|
-
type: "text",
|
|
672
|
-
text: deviceType,
|
|
620
|
+
if (deviceType) headerContents.push(cardText(deviceType, {
|
|
673
621
|
size: "sm",
|
|
674
622
|
color: "#888888",
|
|
675
623
|
margin: "sm"
|
|
676
|
-
});
|
|
677
|
-
if (status) headerContents.push({
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
text: status,
|
|
683
|
-
size: "sm",
|
|
684
|
-
color: "#444444",
|
|
685
|
-
wrap: true
|
|
686
|
-
}],
|
|
624
|
+
}));
|
|
625
|
+
if (status) headerContents.push(cardBox("vertical", [cardText(status, {
|
|
626
|
+
size: "sm",
|
|
627
|
+
color: "#444444",
|
|
628
|
+
wrap: true
|
|
629
|
+
})], {
|
|
687
630
|
margin: "lg",
|
|
688
631
|
paddingAll: "md",
|
|
689
632
|
backgroundColor: "#F8F9FA",
|
|
690
633
|
cornerRadius: "md"
|
|
691
|
-
});
|
|
634
|
+
}));
|
|
692
635
|
const bubble = createCardBubble(headerContents);
|
|
693
|
-
if (imageUrl) bubble.hero = {
|
|
694
|
-
type: "image",
|
|
695
|
-
url: imageUrl,
|
|
696
|
-
size: "full",
|
|
697
|
-
aspectRatio: "16:9",
|
|
698
|
-
aspectMode: "cover"
|
|
699
|
-
};
|
|
700
636
|
if (controls.length > 0) {
|
|
701
637
|
const rows = [];
|
|
702
638
|
const limitedControls = controls.slice(0, 6);
|
|
703
639
|
for (let i = 0; i < limitedControls.length; i += 2) {
|
|
704
640
|
const rowButtons = [];
|
|
705
|
-
for (const [offset, ctrl] of limitedControls.slice(i, i + 2).entries()) {
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
action: postbackAction(truncateLineActionLabel(buttonLabel, 18), ctrl.data),
|
|
710
|
-
style: ctrl.style ?? "secondary",
|
|
711
|
-
flex: 1,
|
|
712
|
-
height: "sm",
|
|
713
|
-
margin: offset > 0 ? "md" : void 0
|
|
714
|
-
});
|
|
715
|
-
}
|
|
641
|
+
for (const [offset, ctrl] of limitedControls.slice(i, i + 2).entries()) rowButtons.push({
|
|
642
|
+
...createControlButton(truncateLineActionLabel(ctrl.label, 18), ctrl.data),
|
|
643
|
+
margin: offset > 0 ? "md" : void 0
|
|
644
|
+
});
|
|
716
645
|
if (rowButtons.length === 1) rowButtons.push({ type: "filler" });
|
|
717
|
-
rows.push(
|
|
646
|
+
rows.push(cardBox("horizontal", rowButtons, { margin: i > 0 ? "md" : void 0 }));
|
|
718
647
|
}
|
|
719
|
-
bubble.footer = {
|
|
720
|
-
type: "box",
|
|
721
|
-
layout: "vertical",
|
|
722
|
-
contents: rows,
|
|
648
|
+
bubble.footer = cardBox("vertical", rows, {
|
|
723
649
|
paddingAll: "lg",
|
|
724
650
|
backgroundColor: "#FAFAFA"
|
|
725
|
-
};
|
|
651
|
+
});
|
|
726
652
|
}
|
|
727
653
|
return bubble;
|
|
728
654
|
}
|
|
@@ -731,9 +657,6 @@ function createDeviceControlCard(params) {
|
|
|
731
657
|
const QUESTION_ID_PARAM = "line.question";
|
|
732
658
|
const OPTION_INDEX_PARAM = "line.option";
|
|
733
659
|
const POSTBACK_DATA_MAX_BYTES = 300;
|
|
734
|
-
function withinPostbackLimit(data) {
|
|
735
|
-
return Buffer.byteLength(data, "utf8") <= POSTBACK_DATA_MAX_BYTES ? data : void 0;
|
|
736
|
-
}
|
|
737
660
|
/** Encodes one ask_user choice into LINE postback data, or nothing when it cannot fit. */
|
|
738
661
|
function buildLineQuestionPostbackData(callback) {
|
|
739
662
|
const questionId = normalizeOptionalString(callback.questionId);
|
|
@@ -741,7 +664,8 @@ function buildLineQuestionPostbackData(callback) {
|
|
|
741
664
|
const params = new URLSearchParams({ [QUESTION_ID_PARAM]: questionId });
|
|
742
665
|
if (!Number.isInteger(callback.optionIndex) || callback.optionIndex < 0) return;
|
|
743
666
|
params.set(OPTION_INDEX_PARAM, String(callback.optionIndex));
|
|
744
|
-
|
|
667
|
+
const data = params.toString();
|
|
668
|
+
return Buffer.byteLength(data, "utf8") <= POSTBACK_DATA_MAX_BYTES ? data : void 0;
|
|
745
669
|
}
|
|
746
670
|
/** Reads a question choice back out of inbound postback data, if it carries one. */
|
|
747
671
|
function parseLineQuestionPostbackData(data) {
|
|
@@ -751,11 +675,17 @@ function parseLineQuestionPostbackData(data) {
|
|
|
751
675
|
if (!questionId) return;
|
|
752
676
|
const rawIndex = normalizeOptionalString(params.get(OPTION_INDEX_PARAM));
|
|
753
677
|
if (!rawIndex || !/^\d+$/.test(rawIndex)) return;
|
|
678
|
+
const optionIndex = Number(rawIndex);
|
|
679
|
+
if (!Number.isSafeInteger(optionIndex)) return;
|
|
754
680
|
return {
|
|
755
681
|
questionId,
|
|
756
|
-
optionIndex
|
|
682
|
+
optionIndex
|
|
757
683
|
};
|
|
758
684
|
}
|
|
685
|
+
/** Returns whether a postback claims to be a question callback, even if malformed. */
|
|
686
|
+
function isLineQuestionPostbackData(data) {
|
|
687
|
+
return new URLSearchParams(data).has(QUESTION_ID_PARAM);
|
|
688
|
+
}
|
|
759
689
|
/**
|
|
760
690
|
* Submit an ask_user choice a LINE tap carried, and report only what the user needs.
|
|
761
691
|
*
|
|
@@ -962,10 +892,7 @@ function renderLinePresentation(payload, presentation, to, sourcePresentation =
|
|
|
962
892
|
if (questionLabels.has(button.label)) return null;
|
|
963
893
|
questionLabels.add(button.label);
|
|
964
894
|
}
|
|
965
|
-
buttons.push(
|
|
966
|
-
label: button.label,
|
|
967
|
-
action
|
|
968
|
-
});
|
|
895
|
+
buttons.push(action);
|
|
969
896
|
}
|
|
970
897
|
else if (block.type === "select") {
|
|
971
898
|
const overflow = [];
|
|
@@ -1055,12 +982,12 @@ function renderLineCard(card) {
|
|
|
1055
982
|
source: card.source,
|
|
1056
983
|
imageUrl: card.imageUrl,
|
|
1057
984
|
isPlaying: card.status ? card.status === "playing" : void 0,
|
|
1058
|
-
controls:
|
|
1059
|
-
"previous",
|
|
1060
|
-
"play",
|
|
1061
|
-
"pause",
|
|
1062
|
-
"next"
|
|
1063
|
-
|
|
985
|
+
controls: {
|
|
986
|
+
previous: { data: lineActionData("previous", device) },
|
|
987
|
+
play: { data: lineActionData("play", device) },
|
|
988
|
+
pause: { data: lineActionData("pause", device) },
|
|
989
|
+
next: { data: lineActionData("next", device) }
|
|
990
|
+
}
|
|
1064
991
|
})
|
|
1065
992
|
};
|
|
1066
993
|
}
|
|
@@ -1116,7 +1043,7 @@ function createLineQuickReply(items) {
|
|
|
1116
1043
|
}
|
|
1117
1044
|
//#endregion
|
|
1118
1045
|
//#region extensions/line/src/outbound.ts
|
|
1119
|
-
const loadLineOutboundRuntime = createLazyRuntimeModule(() => import("./outbound.runtime-
|
|
1046
|
+
const loadLineOutboundRuntime = createLazyRuntimeModule(() => import("./outbound.runtime-DLyndDng.mjs"));
|
|
1120
1047
|
function quotedOption(quoteToken) {
|
|
1121
1048
|
return quoteToken ? { quoteToken } : {};
|
|
1122
1049
|
}
|
|
@@ -1145,15 +1072,26 @@ const lineOutboundAdapter = {
|
|
|
1145
1072
|
authorize: assertDirectAdapterHandoff ? () => {
|
|
1146
1073
|
assertDirectAdapterHandoff();
|
|
1147
1074
|
return true;
|
|
1148
|
-
} : void 0
|
|
1075
|
+
} : void 0,
|
|
1076
|
+
assertDirectAdapterHandoff
|
|
1149
1077
|
};
|
|
1150
|
-
|
|
1078
|
+
const acceptedResults = [];
|
|
1151
1079
|
const recordResult = async (resultPromise) => {
|
|
1152
1080
|
let result;
|
|
1153
1081
|
try {
|
|
1154
1082
|
result = await resultPromise;
|
|
1155
1083
|
} catch (error) {
|
|
1156
|
-
|
|
1084
|
+
if (acceptedResults.length > 0) {
|
|
1085
|
+
const partial = isChannelPartialDeliveryError(error) ? error : void 0;
|
|
1086
|
+
const receipt = createMessageReceiptFromOutboundResults({ results: [...acceptedResults, ...partial?.deliveryResult.receipt ? [{ receipt: partial.deliveryResult.receipt }] : (partial?.deliveryResult.messageIds ?? []).map((messageId) => ({ messageId }))] });
|
|
1087
|
+
throw createChannelPartialDeliveryError(partial?.cause ?? error, {
|
|
1088
|
+
...partial?.deliveryResult,
|
|
1089
|
+
messageIds: listMessageReceiptPlatformIds(receipt),
|
|
1090
|
+
receipt,
|
|
1091
|
+
visibleReplySent: true
|
|
1092
|
+
});
|
|
1093
|
+
}
|
|
1094
|
+
const refusal = isChannelPartialDeliveryError(error) ? void 0 : await explainLineRefusal({
|
|
1157
1095
|
error,
|
|
1158
1096
|
cfg,
|
|
1159
1097
|
accountId
|
|
@@ -1163,13 +1101,14 @@ const lineOutboundAdapter = {
|
|
|
1163
1101
|
retryable: refusal.retryable
|
|
1164
1102
|
}) : error;
|
|
1165
1103
|
}
|
|
1166
|
-
|
|
1104
|
+
acceptedResults.push(result);
|
|
1167
1105
|
try {
|
|
1168
1106
|
await onDeliveryResult?.(createEmptyChannelResult("line", { ...result }));
|
|
1169
1107
|
} catch (error) {
|
|
1108
|
+
const receipt = createMessageReceiptFromOutboundResults({ results: acceptedResults });
|
|
1170
1109
|
throw createChannelPartialDeliveryError(error, {
|
|
1171
|
-
messageIds: listMessageReceiptPlatformIds(
|
|
1172
|
-
receipt
|
|
1110
|
+
messageIds: listMessageReceiptPlatformIds(receipt),
|
|
1111
|
+
receipt,
|
|
1173
1112
|
visibleReplySent: true
|
|
1174
1113
|
});
|
|
1175
1114
|
}
|
|
@@ -1181,7 +1120,6 @@ const lineOutboundAdapter = {
|
|
|
1181
1120
|
const quickReply = quickReplyItems.length ? createLineQuickReply(quickReplyItems) : quickReplies.length ? outboundRuntime.createQuickReplyItems(quickReplies) : void 0;
|
|
1182
1121
|
const quickReplyLabels = quickReplyItems.length ? quickReplyItems.map((item) => item.label) : quickReplies;
|
|
1183
1122
|
const sendMessageBatch = async (messages) => {
|
|
1184
|
-
if (messages.length === 0) return;
|
|
1185
1123
|
for (let i = 0; i < messages.length; i += 5) {
|
|
1186
1124
|
const batch = messages.slice(i, i + 5);
|
|
1187
1125
|
await recordResult(sendBatch(to, batch, sendOptions));
|
|
@@ -1227,7 +1165,7 @@ const lineOutboundAdapter = {
|
|
|
1227
1165
|
for (const url of mediaUrls) {
|
|
1228
1166
|
const trimmed = url?.trim();
|
|
1229
1167
|
if (!trimmed) continue;
|
|
1230
|
-
await recordResult(
|
|
1168
|
+
await recordResult(sendText(to, "", {
|
|
1231
1169
|
...sendOptions,
|
|
1232
1170
|
...mediaOptions,
|
|
1233
1171
|
mediaUrl: trimmed
|
|
@@ -1300,7 +1238,7 @@ const lineOutboundAdapter = {
|
|
|
1300
1238
|
} else if (quickReply) await sendTextWithQuickReply(buildLineQuickReplyFallbackText(quickReplyLabels), replyQuoteToken);
|
|
1301
1239
|
}
|
|
1302
1240
|
if (mediaUrls.length > 0 && !shouldSendQuickRepliesInline && sendMediaAfterText) await sendMediaMessages();
|
|
1303
|
-
const completedResult =
|
|
1241
|
+
const completedResult = acceptedResults.at(-1);
|
|
1304
1242
|
if (!completedResult) throw new Error("Message must be non-empty for LINE sends");
|
|
1305
1243
|
return createEmptyChannelResult("line", { ...completedResult });
|
|
1306
1244
|
},
|
|
@@ -1310,11 +1248,12 @@ const lineOutboundAdapter = {
|
|
|
1310
1248
|
...ctx,
|
|
1311
1249
|
payload: { text: ctx.text }
|
|
1312
1250
|
}),
|
|
1313
|
-
sendMedia: async ({ cfg, to, text, mediaUrl, accountId, replyToId, assertDirectAdapterHandoff }) => await (await loadLineOutboundRuntime()).
|
|
1251
|
+
sendMedia: async ({ cfg, to, text, mediaUrl, accountId, replyToId, assertDirectAdapterHandoff }) => await (await loadLineOutboundRuntime()).pushMessageLine(to, text, {
|
|
1314
1252
|
verbose: false,
|
|
1315
1253
|
mediaUrl,
|
|
1316
1254
|
cfg,
|
|
1317
1255
|
accountId: accountId ?? void 0,
|
|
1256
|
+
assertDirectAdapterHandoff,
|
|
1318
1257
|
authorize: assertDirectAdapterHandoff ? () => {
|
|
1319
1258
|
assertDirectAdapterHandoff();
|
|
1320
1259
|
return true;
|
|
@@ -1328,13 +1267,8 @@ const lineOutboundAdapter = {
|
|
|
1328
1267
|
})
|
|
1329
1268
|
})
|
|
1330
1269
|
};
|
|
1331
|
-
function toLineMessageSendResult(result
|
|
1332
|
-
const
|
|
1333
|
-
const receipt = result.receipt ?? (result.messageId ? createLineSendReceipt({
|
|
1334
|
-
messageId: result.messageId,
|
|
1335
|
-
chatId: source.chatId ?? "",
|
|
1336
|
-
kind
|
|
1337
|
-
}) : void 0);
|
|
1270
|
+
function toLineMessageSendResult(result) {
|
|
1271
|
+
const { receipt } = result;
|
|
1338
1272
|
if (!receipt) throw new Error("LINE message adapter send did not return a receipt");
|
|
1339
1273
|
return {
|
|
1340
1274
|
messageId: result.messageId || receipt.primaryPlatformMessageId,
|
|
@@ -1355,9 +1289,9 @@ const lineMessageAdapter = defineChannelMessageAdapter({
|
|
|
1355
1289
|
...ctx,
|
|
1356
1290
|
payload: { text: ctx.text },
|
|
1357
1291
|
onDeliveryResult: async (deliveryResult) => {
|
|
1358
|
-
await onDeliveryResult?.(toLineMessageSendResult(deliveryResult
|
|
1292
|
+
await onDeliveryResult?.(toLineMessageSendResult(deliveryResult));
|
|
1359
1293
|
}
|
|
1360
|
-
})
|
|
1294
|
+
}));
|
|
1361
1295
|
},
|
|
1362
1296
|
media: async ({ onDeliveryResult, ...ctx }) => {
|
|
1363
1297
|
return toLineMessageSendResult(await lineOutboundAdapter.sendPayload({
|
|
@@ -1367,9 +1301,9 @@ const lineMessageAdapter = defineChannelMessageAdapter({
|
|
|
1367
1301
|
mediaUrl: ctx.mediaUrl
|
|
1368
1302
|
},
|
|
1369
1303
|
onDeliveryResult: async (deliveryResult) => {
|
|
1370
|
-
await onDeliveryResult?.(toLineMessageSendResult(deliveryResult
|
|
1304
|
+
await onDeliveryResult?.(toLineMessageSendResult(deliveryResult));
|
|
1371
1305
|
}
|
|
1372
|
-
})
|
|
1306
|
+
}));
|
|
1373
1307
|
}
|
|
1374
1308
|
},
|
|
1375
1309
|
receive: {
|
|
@@ -1379,7 +1313,7 @@ const lineMessageAdapter = defineChannelMessageAdapter({
|
|
|
1379
1313
|
});
|
|
1380
1314
|
//#endregion
|
|
1381
1315
|
//#region extensions/line/src/channel.ts
|
|
1382
|
-
const loadLineChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-
|
|
1316
|
+
const loadLineChannelRuntime = createLazyRuntimeModule(() => import("./channel.runtime-IN_F95BO.mjs"));
|
|
1383
1317
|
const lineSecurityAdapter = createRestrictSendersChannelSecurity({
|
|
1384
1318
|
channelKey: "line",
|
|
1385
1319
|
resolveDmPolicy: (account) => account.config.dmPolicy,
|
|
@@ -1542,4 +1476,4 @@ const linePlugin = createChatChannelPlugin({
|
|
|
1542
1476
|
outbound: lineOutboundAdapter
|
|
1543
1477
|
});
|
|
1544
1478
|
//#endregion
|
|
1545
|
-
export {
|
|
1479
|
+
export { parseLineQuestionPostbackData as a, resolveLineGroupConfigEntry as c, isLineQuestionPostbackData as i, lineChannelPluginCommon as l, createLineQuickReply as n, resolveLineQuestionPostback as o, prepareLineReplyPayload as r, buildLineQuickReplyFallbackText as s, linePlugin as t };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { a as probeLineBot } from "./send-retry-Dzbkz5wG.mjs";
|
|
2
|
+
import { l as pushMessageLine, m as showLoadingAnimation } from "./send-g4gFsc9W.mjs";
|
|
3
|
+
import { t as monitorLineProvider } from "./monitor-BY32s5Um.mjs";
|
|
4
|
+
export { monitorLineProvider, probeLineBot, pushMessageLine, showLoadingAnimation };
|