@openclaw/signal 2026.7.2-beta.7 → 2026.8.1-beta.3
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/{accounts-DrStJjiK.js → accounts-DO4HMqaK.js} +2 -2
- package/dist/api.js +9 -9
- package/dist/{runtime-JPrGlV7h.js → approval-auth-BY6uuApE.js} +2 -9
- package/dist/{approval-handler.runtime-C-XYgcxE.js → approval-handler.runtime-Co6EVTqY.js} +4 -4
- package/dist/{approval-reactions-DtL47gSK.js → approval-reactions-cs3Ox9Ow.js} +67 -189
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-CmbWaYlm.js → channel-zIopSllO.js} +64 -99
- package/dist/{channel.runtime-BRDaqr5-.js → channel.runtime-CpDBElG8.js} +3 -3
- package/dist/{client-BazXTH7O.js → client-CvnR8_XA.js} +31 -34
- package/dist/{client-adapter-mXGeEHQJ.js → client-adapter-D9SNPaNx.js} +13 -6
- package/dist/{config-schema-Y3dFGwdL.js → config-schema-CkMIK7zp.js} +4 -5
- package/dist/contract-api.js +1 -1
- package/dist/{doctor-contract-api-Dcte-QYB.js → doctor-contract-api-Dnp5eQQJ.js} +19 -22
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{install-signal-cli-qJF7iC4h.js → install-signal-cli-Cpiyk0k1.js} +8 -5
- package/dist/{monitor-BvIzkrYW.js → monitor-BLFIkpH0.js} +305 -142
- package/dist/{probe-Br9abaGp.js → probe-B0E_cXQw.js} +23 -7
- package/dist/question-reactions-BaatFqJ7.js +80 -0
- package/dist/{reaction-runtime-api-BjeDyKcz.js → reaction-runtime-api-YGD6hhDh.js} +10 -21
- package/dist/reaction-runtime-api.js +1 -1
- package/dist/rpc-context-dXSy4NtF.js +15 -0
- package/dist/runtime-api.js +8 -9
- package/dist/{send-B_Ks4MZr.js → send-BNl5folj.js} +14 -23
- package/dist/{send.runtime-CbuXycZT.js → send.runtime-DnMoKk27.js} +1 -1
- package/dist/{transport-detection-Da06-LOL.js → transport-detection-D_M79R5f.js} +60 -148
- package/dist/{transport-detection.runtime-D_190UUL.js → transport-detection.runtime-DKuuIHvf.js} +1 -1
- package/dist/{transport-probes.runtime-CV6Qs0Og.js → transport-probes.runtime-BsJdp0oI.js} +1 -1
- package/openclaw.plugin.json +4 -1
- package/package.json +5 -5
- package/dist/approval-resolver-B3m0D2R0.js +0 -16
- package/dist/question-reactions-Ds48FtEu.js +0 -109
- package/dist/rpc-context-CZUoE0-A.js +0 -17
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { isApprovalNotFoundError } from "openclaw/plugin-sdk/error-runtime";
|
|
2
|
-
import { resolveApprovalOverGateway } from "openclaw/plugin-sdk/approval-gateway-runtime";
|
|
3
|
-
//#region extensions/signal/src/approval-resolver.ts
|
|
4
|
-
async function resolveSignalApproval(params) {
|
|
5
|
-
return await resolveApprovalOverGateway({
|
|
6
|
-
cfg: params.cfg,
|
|
7
|
-
approvalId: params.approvalId,
|
|
8
|
-
approvalKind: params.approvalKind,
|
|
9
|
-
decision: params.decision,
|
|
10
|
-
senderId: params.senderId,
|
|
11
|
-
gatewayUrl: params.gatewayUrl,
|
|
12
|
-
clientDisplayName: `Signal approval (${params.senderId?.trim() || "unknown"})`
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { isApprovalNotFoundError, resolveSignalApproval };
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { o as resolveSignalTarget } from "./runtime-JPrGlV7h.js";
|
|
3
|
-
import { l as resolveSignalApprovalConversationKey, u as resolveSignalApprovalTargetAuthorKeys } from "./approval-reactions-DtL47gSK.js";
|
|
4
|
-
import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
|
|
5
|
-
import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
|
|
6
|
-
//#region extensions/signal/src/question-reactions.ts
|
|
7
|
-
var question_reactions_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
-
maybeResolveSignalQuestionReaction: () => maybeResolveSignalQuestionReaction,
|
|
9
|
-
registerSignalQuestionReactionTargetForDeliveredPayload: () => registerSignalQuestionReactionTargetForDeliveredPayload
|
|
10
|
-
});
|
|
11
|
-
const TARGET_TTL_MS = 1440 * 60 * 1e3;
|
|
12
|
-
const targets = /* @__PURE__ */ new Map();
|
|
13
|
-
function storeTarget(key, binding, targetAuthorKeys) {
|
|
14
|
-
const existing = targets.get(key);
|
|
15
|
-
if (existing) clearTimeout(existing.cleanupTimer);
|
|
16
|
-
const target = {
|
|
17
|
-
...binding,
|
|
18
|
-
targetAuthorKeys,
|
|
19
|
-
terminal: false,
|
|
20
|
-
expiresAtMs: Date.now() + TARGET_TTL_MS,
|
|
21
|
-
cleanupTimer: setTimeout(() => {
|
|
22
|
-
if (targets.get(key) === target) targets.delete(key);
|
|
23
|
-
}, TARGET_TTL_MS)
|
|
24
|
-
};
|
|
25
|
-
target.cleanupTimer.unref?.();
|
|
26
|
-
targets.set(key, target);
|
|
27
|
-
questionGatewayRuntime.registerChannelDelivery({
|
|
28
|
-
questionId: binding.questionId,
|
|
29
|
-
deliveryId: `signal-reaction:${key}`,
|
|
30
|
-
finalize: () => {
|
|
31
|
-
target.terminal = true;
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function buildKey(accountId, conversationKey, messageId) {
|
|
36
|
-
const values = [
|
|
37
|
-
accountId,
|
|
38
|
-
conversationKey,
|
|
39
|
-
messageId
|
|
40
|
-
].map((value) => value.trim());
|
|
41
|
-
return values.every(Boolean) ? values.join(":") : null;
|
|
42
|
-
}
|
|
43
|
-
function resolveConversationKey(params) {
|
|
44
|
-
try {
|
|
45
|
-
return resolveSignalTarget({
|
|
46
|
-
cfg: params.cfg,
|
|
47
|
-
accountId: params.accountId,
|
|
48
|
-
input: params.to
|
|
49
|
-
})?.to ?? resolveSignalApprovalConversationKey(params.to);
|
|
50
|
-
} catch {
|
|
51
|
-
return resolveSignalApprovalConversationKey(params.to);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function registerSignalQuestionReactionTargetForDeliveredPayload(params) {
|
|
55
|
-
const binding = questionGatewayRuntime.readReactionBinding(params.payload);
|
|
56
|
-
if (params.target.channel !== "signal" || !binding) return false;
|
|
57
|
-
const conversationKey = resolveConversationKey({
|
|
58
|
-
cfg: params.cfg,
|
|
59
|
-
...params.target
|
|
60
|
-
});
|
|
61
|
-
const targetAuthorKeys = resolveSignalApprovalTargetAuthorKeys(params);
|
|
62
|
-
if (!conversationKey || targetAuthorKeys.length === 0) return false;
|
|
63
|
-
const accountId = normalizeAccountId(params.target.accountId ?? void 0);
|
|
64
|
-
let registered = false;
|
|
65
|
-
for (const result of params.results) {
|
|
66
|
-
const messageId = result.channel === "signal" ? result.messageId.trim() : "";
|
|
67
|
-
const key = messageId && messageId !== "unknown" ? buildKey(accountId, conversationKey, messageId) : null;
|
|
68
|
-
if (!key) continue;
|
|
69
|
-
storeTarget(key, binding, targetAuthorKeys);
|
|
70
|
-
registered = true;
|
|
71
|
-
}
|
|
72
|
-
return registered;
|
|
73
|
-
}
|
|
74
|
-
async function maybeResolveSignalQuestionReaction(params) {
|
|
75
|
-
if (params.isRemove) return false;
|
|
76
|
-
const optionIndex = questionGatewayRuntime.resolveReactionIndex(params.reactionKey);
|
|
77
|
-
const key = buildKey(params.accountId, params.conversationKey, params.messageId);
|
|
78
|
-
if (optionIndex === void 0 || !key) return false;
|
|
79
|
-
const target = targets.get(key);
|
|
80
|
-
if (!target) return false;
|
|
81
|
-
if (!resolveSignalApprovalTargetAuthorKeys(params).some((authorKey) => target.targetAuthorKeys.includes(authorKey))) return false;
|
|
82
|
-
if (target.expiresAtMs <= Date.now() || target.terminal) {
|
|
83
|
-
target.terminal = true;
|
|
84
|
-
params.logDebug?.(`signal: stale question reaction ignored id=${target.questionId}`);
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
const optionValue = target.optionValues[optionIndex];
|
|
88
|
-
if (!optionValue) {
|
|
89
|
-
params.logDebug?.(`signal: out-of-range question reaction ignored id=${target.questionId}`);
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
try {
|
|
93
|
-
const result = await questionGatewayRuntime.resolveReaction({
|
|
94
|
-
cfg: params.cfg,
|
|
95
|
-
questionId: target.questionId,
|
|
96
|
-
optionValue,
|
|
97
|
-
senderId: params.actorId,
|
|
98
|
-
gatewayUrl: params.gatewayUrl,
|
|
99
|
-
clientDisplayName: `Signal question (${params.actorId})`
|
|
100
|
-
});
|
|
101
|
-
target.terminal = result?.status === "answered" || result?.status === "already-terminal";
|
|
102
|
-
if (result?.status === "already-terminal") params.logDebug?.(`signal: stale question reaction ignored id=${target.questionId}`);
|
|
103
|
-
} catch (error) {
|
|
104
|
-
params.logDebug?.(`signal: question reaction failed id=${target.questionId}: ${String(error)}`);
|
|
105
|
-
}
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
//#endregion
|
|
109
|
-
export { question_reactions_exports as n, registerSignalQuestionReactionTargetForDeliveredPayload as r, maybeResolveSignalQuestionReaction as t };
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import "./accounts-DrStJjiK.js";
|
|
2
|
-
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
|
-
//#region extensions/signal/src/rpc-context.ts
|
|
4
|
-
function resolveSignalRpcContext(opts, accountInfo) {
|
|
5
|
-
const hasBaseUrl = Boolean(normalizeOptionalString(opts.baseUrl));
|
|
6
|
-
const hasAccount = Boolean(normalizeOptionalString(opts.account));
|
|
7
|
-
if ((!hasBaseUrl || !hasAccount) && !accountInfo) throw new Error("Signal account config is required when baseUrl or account is missing");
|
|
8
|
-
const resolvedAccount = accountInfo;
|
|
9
|
-
const baseUrl = normalizeOptionalString(opts.baseUrl) ?? resolvedAccount?.baseUrl;
|
|
10
|
-
if (!baseUrl) throw new Error("Signal base URL is required");
|
|
11
|
-
return {
|
|
12
|
-
baseUrl,
|
|
13
|
-
account: normalizeOptionalString(opts.account) ?? normalizeOptionalString(resolvedAccount?.config.account)
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//#endregion
|
|
17
|
-
export { resolveSignalRpcContext as t };
|