@openclaw/imessage 2026.9.7 → 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.
- package/dist/.setup/{accounts-nzcU0cq2.mjs → accounts-evTpvJMv.mjs} +6 -12
- package/dist/.setup/{group-policy-90pw4tyG.mjs → actions-DJqbUmbN.mjs} +103 -269
- package/dist/.setup/{actions.runtime-DdBN29zj.mjs → actions.runtime-DL5i-Y4J.mjs} +49 -84
- package/dist/.setup/{api-B9Qx21G-.mjs → api-SAVMfMoY.mjs} +5 -5
- package/dist/.setup/{api-D2S6FhGw.mjs → api-oq_MryN7.mjs} +6 -6
- package/dist/.setup/{approval-handler.runtime-DKSq0DWq.mjs → approval-handler.runtime-Bj2NGNXF.mjs} +26 -62
- package/dist/.setup/{approval-reactions-Bp33xc83.mjs → approval-reactions-L9Ul7PAu.mjs} +3 -2
- package/dist/.setup/{channel-9fyvuN_p.mjs → channel-CL73qdMG.mjs} +134 -60
- package/dist/.setup/{monitor-fv9nRuTH.mjs → channel.runtime-DY7JJ0_9.mjs} +202 -206
- package/dist/.setup/{sanitize-outbound-3MLljgtY.mjs → client-12apu4Ip.mjs} +26 -635
- package/dist/.setup/{config-schema-4Q3_EqYt.mjs → config-schema-DXwa_3V5.mjs} +1 -1
- package/dist/.setup/{media-contract-CagwSMvo.mjs → media-contract-DjQGZlfl.mjs} +1 -1
- package/dist/.setup/{message-tool-api-D032l82H.mjs → message-tool-api-CqfRxLlT.mjs} +2 -2
- package/dist/.setup/{question-reactions-Cy-dmU_j.mjs → question-reactions-DJV-TnA8.mjs} +2 -1
- package/dist/.setup/{reaction-context-Br-vAJFp.mjs → reaction-context-By7kUMBC.mjs} +2 -7
- package/dist/.setup/{remote-file-DRPCaVmg.mjs → remote-file-BU7pA-Zi.mjs} +7 -11
- package/dist/.setup/sanitize-outbound-C0x4BPky.mjs +564 -0
- package/dist/.setup/{send-Cu9nl757.mjs → send-pkYwL6Rt.mjs} +56 -103
- package/dist/.setup/{setup-core-8MDdYHj5.mjs → setup-core-DqOBe-n0.mjs} +1 -1
- package/dist/.setup/{setup-surface-tGXFDdWh.mjs → setup-surface-zKhIinwY.mjs} +2 -2
- package/dist/api.js +6 -6
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/contract-api.js +1 -1
- package/dist/doctor-contract-api.js +29 -21
- package/dist/media-contract-api.js +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/runtime-api.js +2 -24
- package/dist/setup-entry.js +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -4
- package/dist/.setup/channel.runtime-n-MPKL8k.mjs +0 -92
- 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 };
|