@openclaw/imessage 2026.9.8 → 2026.10.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/.setup/{accounts-nzcU0cq2.mjs → accounts-evTpvJMv.mjs} +6 -12
  2. package/dist/.setup/{group-policy-90pw4tyG.mjs → actions-DJqbUmbN.mjs} +103 -269
  3. package/dist/.setup/{actions.runtime-DdBN29zj.mjs → actions.runtime-DL5i-Y4J.mjs} +49 -84
  4. package/dist/.setup/{api-B9Qx21G-.mjs → api-SAVMfMoY.mjs} +5 -5
  5. package/dist/.setup/{api-D2S6FhGw.mjs → api-oq_MryN7.mjs} +6 -6
  6. package/dist/.setup/{approval-handler.runtime-DKSq0DWq.mjs → approval-handler.runtime-Bj2NGNXF.mjs} +26 -62
  7. package/dist/.setup/{approval-reactions-Bp33xc83.mjs → approval-reactions-L9Ul7PAu.mjs} +3 -2
  8. package/dist/.setup/{channel-9fyvuN_p.mjs → channel-CL73qdMG.mjs} +134 -60
  9. package/dist/.setup/{monitor-fv9nRuTH.mjs → channel.runtime-DY7JJ0_9.mjs} +202 -206
  10. package/dist/.setup/{sanitize-outbound-3MLljgtY.mjs → client-12apu4Ip.mjs} +26 -635
  11. package/dist/.setup/{config-schema-4Q3_EqYt.mjs → config-schema-DXwa_3V5.mjs} +1 -1
  12. package/dist/.setup/{media-contract-CagwSMvo.mjs → media-contract-DjQGZlfl.mjs} +1 -1
  13. package/dist/.setup/{message-tool-api-D032l82H.mjs → message-tool-api-CqfRxLlT.mjs} +2 -2
  14. package/dist/.setup/{question-reactions-Cy-dmU_j.mjs → question-reactions-DJV-TnA8.mjs} +2 -1
  15. package/dist/.setup/{reaction-context-Br-vAJFp.mjs → reaction-context-By7kUMBC.mjs} +2 -7
  16. package/dist/.setup/{remote-file-DRPCaVmg.mjs → remote-file-BU7pA-Zi.mjs} +7 -11
  17. package/dist/.setup/sanitize-outbound-C0x4BPky.mjs +564 -0
  18. package/dist/.setup/{send-Cu9nl757.mjs → send-pkYwL6Rt.mjs} +56 -103
  19. package/dist/.setup/{setup-core-8MDdYHj5.mjs → setup-core-DqOBe-n0.mjs} +1 -1
  20. package/dist/.setup/{setup-surface-tGXFDdWh.mjs → setup-surface-zKhIinwY.mjs} +2 -2
  21. package/dist/api.js +6 -6
  22. package/dist/channel-config-api.js +1 -1
  23. package/dist/channel-plugin-api.js +1 -1
  24. package/dist/contract-api.js +1 -1
  25. package/dist/doctor-contract-api.js +29 -21
  26. package/dist/media-contract-api.js +1 -1
  27. package/dist/message-tool-api.js +1 -1
  28. package/dist/runtime-api.js +2 -24
  29. package/dist/setup-entry.js +1 -1
  30. package/openclaw.plugin.json +1 -1
  31. package/package.json +4 -4
  32. package/dist/.setup/channel.runtime-n-MPKL8k.mjs +0 -92
  33. package/dist/.setup/state-migrations-B-Q7bO0Y.mjs +0 -47
@@ -1,92 +0,0 @@
1
- import { l as resolveIMessageRemoteHost, o as resolveIMessageAccount, r as listEnabledIMessageAccounts, s as resolveIMessageDuplicateSourceOwner } from "./accounts-nzcU0cq2.mjs";
2
- import { d as probeIMessage } from "./group-policy-90pw4tyG.mjs";
3
- import { t as IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./outbound-send-deps-B-QEsLSM.mjs";
4
- import { t as sendMessageIMessage } from "./send-Cu9nl757.mjs";
5
- import { t as monitorIMessageProvider } from "./monitor-fv9nRuTH.mjs";
6
- import { imessageSetupWizard } from "./setup-surface-tGXFDdWh.mjs";
7
- import { createAccountStatusSink, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
8
- import { resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/account-helpers";
9
- //#region extensions/imessage/src/channel.runtime.ts
10
- async function sendIMessageOutbound(params) {
11
- const send = resolveOutboundSendDep(params.deps, "imessage", { legacyKeys: IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS }) ?? sendMessageIMessage;
12
- const maxBytes = resolveChannelMediaMaxBytes({
13
- cfg: params.cfg,
14
- resolveChannelLimitMb: () => resolveIMessageAccount(params).config.mediaMaxMb
15
- });
16
- const result = await send(params.to, params.text, {
17
- config: params.cfg,
18
- ...params.mediaUrl ? { mediaUrl: params.mediaUrl } : {},
19
- ...params.mediaAccess ? { mediaAccess: params.mediaAccess } : {},
20
- ...params.mediaLocalRoots?.length ? { mediaLocalRoots: params.mediaLocalRoots } : {},
21
- ...params.mediaReadFile ? { mediaReadFile: params.mediaReadFile } : {},
22
- ...params.audioAsVoice ? { audioAsVoice: true } : {},
23
- maxBytes,
24
- accountId: params.accountId ?? void 0,
25
- replyToId: params.replyToId ?? void 0,
26
- conversationReadOrigin: params.conversationReadOrigin,
27
- assertDirectAdapterHandoff: params.assertDirectAdapterHandoff,
28
- onPlatformSendDispatch: params.onPlatformSendDispatch,
29
- ...params.onDeliveryResult ? { onDeliveryResult: params.onDeliveryResult } : {}
30
- });
31
- const meta = {
32
- ...result.meta,
33
- ...result.guid ? { imessageMessageGuid: result.guid } : {},
34
- ...result.sentText ? { imessageVisibleText: result.sentText } : {}
35
- };
36
- return Object.keys(meta).length > 0 ? {
37
- ...result,
38
- meta
39
- } : result;
40
- }
41
- async function probeIMessageAccount(params) {
42
- return await probeIMessage(params?.timeoutMs, {
43
- cliPath: params?.cliPath,
44
- dbPath: params?.dbPath,
45
- remoteHost: params?.remoteHost,
46
- forceRefresh: true
47
- });
48
- }
49
- async function startIMessageGatewayAccount(ctx) {
50
- const account = ctx.account;
51
- const cliPath = account.config.cliPath?.trim() || "imsg";
52
- const dbPath = account.config.dbPath?.trim();
53
- ctx.setStatus({
54
- accountId: account.accountId,
55
- cliPath,
56
- dbPath: dbPath ?? null
57
- });
58
- await Promise.all(listEnabledIMessageAccounts(ctx.cfg).map(async (candidate) => {
59
- await resolveIMessageRemoteHost({
60
- cliPath: candidate.config.cliPath?.trim() || "imsg",
61
- remoteHost: candidate.config.remoteHost
62
- });
63
- }));
64
- const ownerAccountId = resolveIMessageDuplicateSourceOwner({
65
- cfg: ctx.cfg,
66
- account
67
- });
68
- if (ownerAccountId) {
69
- ctx.log?.info?.(`[${account.accountId}] skipping watcher: duplicate iMessage source; using account "${ownerAccountId}"`);
70
- if (ctx.abortSignal.aborted) return;
71
- await new Promise((resolve) => {
72
- ctx.abortSignal.addEventListener("abort", () => resolve(), { once: true });
73
- });
74
- return;
75
- }
76
- const statusSink = createAccountStatusSink({
77
- accountId: account.accountId,
78
- setStatus: ctx.setStatus
79
- });
80
- statusSink({ lifecycle: "starting" });
81
- ctx.log?.info?.(`[${account.accountId}] starting provider (${cliPath}${dbPath ? ` db=${dbPath}` : ""})`);
82
- return await monitorIMessageProvider({
83
- accountId: account.accountId,
84
- config: ctx.cfg,
85
- runtime: ctx.runtime,
86
- abortSignal: ctx.abortSignal,
87
- channelRuntime: ctx.channelRuntime,
88
- statusSink
89
- });
90
- }
91
- //#endregion
92
- export { imessageSetupWizard, probeIMessageAccount, sendIMessageOutbound, startIMessageGatewayAccount };
@@ -1,47 +0,0 @@
1
- import path from "node:path";
2
- import fs from "node:fs/promises";
3
- import { extractErrorCode } from "openclaw/plugin-sdk/error-runtime";
4
- //#region extensions/imessage/src/state-migrations.ts
5
- async function retiredSourceWarnings(stateDir) {
6
- const imessageDir = path.join(stateDir, "imessage");
7
- const catchupDir = path.join(imessageDir, "catchup");
8
- let catchupFiles;
9
- try {
10
- catchupFiles = await fs.readdir(catchupDir);
11
- } catch (error) {
12
- if (extractErrorCode(error) !== "ENOENT") throw error;
13
- catchupFiles = [];
14
- }
15
- const candidates = [
16
- path.join(imessageDir, "reply-cache.jsonl"),
17
- path.join(imessageDir, "sent-echoes.jsonl"),
18
- ...catchupFiles.filter((name) => name.endsWith(".json")).toSorted().map((name) => path.join(catchupDir, name))
19
- ];
20
- const warnings = [];
21
- for (const sourcePath of candidates) {
22
- try {
23
- await fs.lstat(sourcePath);
24
- } catch (error) {
25
- if (extractErrorCode(error) === "ENOENT") continue;
26
- throw error;
27
- }
28
- warnings.push(`Preserved retired iMessage state at ${sourcePath}. Install OpenClaw 2026.9.5, run "openclaw doctor --fix", then upgrade to latest. See https://docs.openclaw.ai/install/updating#upgrading-very-old-versions.`);
29
- }
30
- return warnings;
31
- }
32
- const imessageRetiredStateMigration = {
33
- id: "imessage-legacy-state",
34
- label: "iMessage legacy state",
35
- async detectLegacyState({ stateDir }) {
36
- const preview = await retiredSourceWarnings(stateDir);
37
- return preview.length > 0 ? { preview } : null;
38
- },
39
- async migrateLegacyState({ stateDir }) {
40
- return {
41
- changes: [],
42
- warnings: await retiredSourceWarnings(stateDir)
43
- };
44
- }
45
- };
46
- //#endregion
47
- export { imessageRetiredStateMigration };