@tloncorp/openclaw 0.4.2 → 0.6.0
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/README.md +130 -141
- package/dist/index.js +157 -132
- package/dist/index.js.map +1 -1
- package/dist/setup-api.js +2 -2
- package/dist/setup-entry.js +2 -2
- package/dist/setup-entry.js.map +1 -1
- package/dist/src/account-fields.js +7 -3
- package/dist/src/account-fields.js.map +1 -1
- package/dist/src/actions.js +73 -52
- package/dist/src/actions.js.map +1 -1
- package/dist/src/channel.js +51 -39
- package/dist/src/channel.js.map +1 -1
- package/dist/src/channel.runtime.js +61 -32
- package/dist/src/channel.runtime.js.map +1 -1
- package/dist/src/config-schema.js +43 -4
- package/dist/src/config-schema.js.map +1 -1
- package/dist/src/effective-owner.js.map +1 -1
- package/dist/src/gateway-status.js +55 -7
- package/dist/src/gateway-status.js.map +1 -1
- package/dist/src/monitor/approval.js +71 -62
- package/dist/src/monitor/approval.js.map +1 -1
- package/dist/src/monitor/command-auth.js +7 -7
- package/dist/src/monitor/command-auth.js.map +1 -1
- package/dist/src/monitor/command-bridge.js +3 -2
- package/dist/src/monitor/command-bridge.js.map +1 -1
- package/dist/src/monitor/computing-presence.js +76 -12
- package/dist/src/monitor/computing-presence.js.map +1 -1
- package/dist/src/monitor/discovery.js +16 -9
- package/dist/src/monitor/discovery.js.map +1 -1
- package/dist/src/monitor/history.js +130 -21
- package/dist/src/monitor/history.js.map +1 -1
- package/dist/src/monitor/index.js +2766 -2310
- package/dist/src/monitor/index.js.map +1 -1
- package/dist/src/monitor/media.js +106 -78
- package/dist/src/monitor/media.js.map +1 -1
- package/dist/src/monitor/nudge-runner.js +36 -27
- package/dist/src/monitor/nudge-runner.js.map +1 -1
- package/dist/src/monitor/nudge-state.js +7 -11
- package/dist/src/monitor/nudge-state.js.map +1 -1
- package/dist/src/monitor/owner-reply-persistence.js +27 -26
- package/dist/src/monitor/owner-reply-persistence.js.map +1 -1
- package/dist/src/monitor/processed-messages.js.map +1 -1
- package/dist/src/monitor/settings-sync.js +1 -8
- package/dist/src/monitor/settings-sync.js.map +1 -1
- package/dist/src/monitor/utils.js +123 -67
- package/dist/src/monitor/utils.js.map +1 -1
- package/dist/src/nudge-decision.js +40 -43
- package/dist/src/nudge-decision.js.map +1 -1
- package/dist/src/nudge-messages.js +9 -9
- package/dist/src/nudge-scheduler.js.map +1 -1
- package/dist/src/owner-listen-command.js +84 -0
- package/dist/src/owner-listen-command.js.map +1 -0
- package/dist/src/pending-nudge.js.map +1 -1
- package/dist/src/runtime.js +10 -6
- package/dist/src/runtime.js.map +1 -1
- package/dist/src/session-roles.js +2 -1
- package/dist/src/session-roles.js.map +1 -1
- package/dist/src/settings.js +239 -96
- package/dist/src/settings.js.map +1 -1
- package/dist/src/setup-core.js +32 -32
- package/dist/src/setup-core.js.map +1 -1
- package/dist/src/setup-surface.js +19 -19
- package/dist/src/setup-surface.js.map +1 -1
- package/dist/src/shared-state.js +46 -0
- package/dist/src/shared-state.js.map +1 -0
- package/dist/src/targets.js +34 -10
- package/dist/src/targets.js.map +1 -1
- package/dist/src/telemetry.js +17 -14
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/tlon-binary.js +20 -12
- package/dist/src/tlon-binary.js.map +1 -1
- package/dist/src/tlon-tool-guard.js +5 -5
- package/dist/src/tool-trace.js +17 -13
- package/dist/src/tool-trace.js.map +1 -1
- package/dist/src/types.js +40 -11
- package/dist/src/types.js.map +1 -1
- package/dist/src/urbit/api-client.js +16 -12
- package/dist/src/urbit/api-client.js.map +1 -1
- package/dist/src/urbit/auth.js +9 -9
- package/dist/src/urbit/auth.js.map +1 -1
- package/dist/src/urbit/base-url.js +11 -11
- package/dist/src/urbit/base-url.js.map +1 -1
- package/dist/src/urbit/channel-ops.js +25 -19
- package/dist/src/urbit/channel-ops.js.map +1 -1
- package/dist/src/urbit/context.js +8 -8
- package/dist/src/urbit/context.js.map +1 -1
- package/dist/src/urbit/errors.js +33 -7
- package/dist/src/urbit/errors.js.map +1 -1
- package/dist/src/urbit/fetch.js +3 -3
- package/dist/src/urbit/fetch.js.map +1 -1
- package/dist/src/urbit/http-poke.js +10 -10
- package/dist/src/urbit/http-poke.js.map +1 -1
- package/dist/src/urbit/send.js +27 -23
- package/dist/src/urbit/send.js.map +1 -1
- package/dist/src/urbit/sse-client.js +45 -41
- package/dist/src/urbit/sse-client.js.map +1 -1
- package/dist/src/urbit/story.js +31 -30
- package/dist/src/urbit/story.js.map +1 -1
- package/dist/src/urbit/upload.js +8 -8
- package/dist/src/urbit/upload.js.map +1 -1
- package/dist/src/version.generated.js +2 -1
- package/dist/src/version.generated.js.map +1 -1
- package/openclaw.plugin.json +312 -2
- package/package.json +37 -7
- package/dist/src/heartbeat-telemetry.js +0 -155
- package/dist/src/heartbeat-telemetry.js.map +0 -1
- package/dist/src/nudge-candidate.js +0 -109
- package/dist/src/nudge-candidate.js.map +0 -1
- package/dist/src/onboarding.js +0 -178
- package/dist/src/onboarding.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processed-messages.js","sourceRoot":"","sources":["../../../src/monitor/processed-messages.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,6BAA6B,
|
|
1
|
+
{"version":3,"file":"processed-messages.js","sourceRoot":"","sources":["../../../src/monitor/processed-messages.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,6BAA6B,CAC3C,KAAK,GAAG,IAAI;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,CAAC,EAAkB,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,EAAkB,EAAE,EAAE;QACjC,MAAM,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,GAAG;QACH,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Pure helper for settings mirror synchronization.
|
|
3
|
-
*
|
|
4
|
-
* Detects ownerShip and pendingNudge transitions from the settings mirror.
|
|
5
|
-
* The scheduler no longer routes through this helper for lastNudgeStage —
|
|
6
|
-
* the authoritative stage lives in a fresh scry plus a local shadow.
|
|
7
|
-
*/
|
|
8
|
-
import { normalizeShip } from "../targets.js";
|
|
1
|
+
import { normalizeShip } from '../targets.js';
|
|
9
2
|
export function resolveSettingsMirrorSync(params) {
|
|
10
3
|
const { prevSettings, newSettings, fileConfigOwnerShip } = params;
|
|
11
4
|
// ownerShip: compare string values (normalize for comparison)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-sync.js","sourceRoot":"","sources":["../../../src/monitor/settings-sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings-sync.js","sourceRoot":"","sources":["../../../src/monitor/settings-sync.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAS9C,MAAM,UAAU,yBAAyB,CAAC,MAIzC;IACC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IAElE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;IACvC,MAAM,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrE,MAAM,gBAAgB,GAAG,mBAAmB,KAAK,kBAAkB,CAAC;IACpE,MAAM,kBAAkB,GACtB,kBAAkB,IAAI,mBAAmB,CAAC;IAE5C,iFAAiF;IACjF,MAAM,mBAAmB,GACvB,YAAY,CAAC,YAAY,KAAK,WAAW,CAAC,YAAY,CAAC;IACzD,MAAM,YAAY,GAAwB,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC;IAE3E,OAAO;QACL,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { normalizeShip } from
|
|
1
|
+
import { normalizeShip } from '../targets.js';
|
|
2
2
|
// Extract all cites from message content
|
|
3
3
|
export function extractCites(content) {
|
|
4
4
|
if (!content || !Array.isArray(content)) {
|
|
@@ -6,28 +6,32 @@ export function extractCites(content) {
|
|
|
6
6
|
}
|
|
7
7
|
const cites = [];
|
|
8
8
|
for (const verse of content) {
|
|
9
|
-
if (verse?.block?.cite && typeof verse.block.cite ===
|
|
9
|
+
if (verse?.block?.cite && typeof verse.block.cite === 'object') {
|
|
10
10
|
const cite = verse.block.cite;
|
|
11
|
-
if (cite.chan && typeof cite.chan ===
|
|
11
|
+
if (cite.chan && typeof cite.chan === 'object') {
|
|
12
12
|
const { nest, where } = cite.chan;
|
|
13
13
|
const whereMatch = where?.match(/\/msg\/(~[a-z-]+)\/(.+)/);
|
|
14
14
|
cites.push({
|
|
15
|
-
type:
|
|
15
|
+
type: 'chan',
|
|
16
16
|
nest,
|
|
17
17
|
where,
|
|
18
18
|
author: whereMatch?.[1],
|
|
19
19
|
postId: whereMatch?.[2],
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
else if (cite.group && typeof cite.group ===
|
|
23
|
-
cites.push({ type:
|
|
22
|
+
else if (cite.group && typeof cite.group === 'string') {
|
|
23
|
+
cites.push({ type: 'group', group: cite.group });
|
|
24
24
|
}
|
|
25
|
-
else if (cite.desk && typeof cite.desk ===
|
|
26
|
-
cites.push({
|
|
25
|
+
else if (cite.desk && typeof cite.desk === 'object') {
|
|
26
|
+
cites.push({
|
|
27
|
+
type: 'desk',
|
|
28
|
+
flag: cite.desk.flag,
|
|
29
|
+
where: cite.desk.where,
|
|
30
|
+
});
|
|
27
31
|
}
|
|
28
|
-
else if (cite.bait && typeof cite.bait ===
|
|
32
|
+
else if (cite.bait && typeof cite.bait === 'object') {
|
|
29
33
|
cites.push({
|
|
30
|
-
type:
|
|
34
|
+
type: 'bait',
|
|
31
35
|
group: cite.bait.group,
|
|
32
36
|
nest: cite.bait.graph,
|
|
33
37
|
where: cite.bait.where,
|
|
@@ -39,27 +43,29 @@ export function extractCites(content) {
|
|
|
39
43
|
}
|
|
40
44
|
export function formatModelName(modelString) {
|
|
41
45
|
if (!modelString) {
|
|
42
|
-
return
|
|
46
|
+
return 'AI';
|
|
43
47
|
}
|
|
44
|
-
const modelName = modelString.includes(
|
|
48
|
+
const modelName = modelString.includes('/')
|
|
49
|
+
? modelString.split('/')[1]
|
|
50
|
+
: modelString;
|
|
45
51
|
const modelMappings = {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
'claude-opus-4-5': 'Claude Opus 4.5',
|
|
53
|
+
'claude-sonnet-4-5': 'Claude Sonnet 4.5',
|
|
54
|
+
'claude-sonnet-3-5': 'Claude Sonnet 3.5',
|
|
55
|
+
'gpt-4o': 'GPT-4o',
|
|
56
|
+
'gpt-4-turbo': 'GPT-4 Turbo',
|
|
57
|
+
'gpt-4': 'GPT-4',
|
|
58
|
+
'gemini-2.0-flash': 'Gemini 2.0 Flash',
|
|
59
|
+
'gemini-pro': 'Gemini Pro',
|
|
54
60
|
};
|
|
55
61
|
if (modelMappings[modelName]) {
|
|
56
62
|
return modelMappings[modelName];
|
|
57
63
|
}
|
|
58
64
|
return modelName
|
|
59
|
-
.replace(/-/g,
|
|
60
|
-
.split(
|
|
65
|
+
.replace(/-/g, ' ')
|
|
66
|
+
.split(' ')
|
|
61
67
|
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
62
|
-
.join(
|
|
68
|
+
.join(' ');
|
|
63
69
|
}
|
|
64
70
|
export function isBotMentioned(messageText, botShipName, nickname) {
|
|
65
71
|
if (!messageText || !botShipName) {
|
|
@@ -67,36 +73,83 @@ export function isBotMentioned(messageText, botShipName, nickname) {
|
|
|
67
73
|
}
|
|
68
74
|
// Check for ship mention
|
|
69
75
|
const normalizedBotShip = normalizeShip(botShipName);
|
|
70
|
-
const escapedShip = normalizedBotShip.replace(/[.*+?^${}()|[\]\\]/g,
|
|
71
|
-
const mentionPattern = new RegExp(`(^|\\s)${escapedShip}(?=\\s|$)`,
|
|
76
|
+
const escapedShip = normalizedBotShip.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
77
|
+
const mentionPattern = new RegExp(`(^|\\s)${escapedShip}(?=\\s|$)`, 'i');
|
|
72
78
|
if (mentionPattern.test(messageText)) {
|
|
73
79
|
return true;
|
|
74
80
|
}
|
|
75
81
|
// Check for nickname mention (case-insensitive, word boundary)
|
|
76
82
|
if (nickname) {
|
|
77
|
-
const escapedNickname = nickname.replace(/[.*+?^${}()|[\]\\]/g,
|
|
78
|
-
const nicknamePattern = new RegExp(`(^|\\s)${escapedNickname}(?=\\s|$|[,!?.])`,
|
|
83
|
+
const escapedNickname = nickname.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
84
|
+
const nicknamePattern = new RegExp(`(^|\\s)${escapedNickname}(?=\\s|$|[,!?.])`, 'i');
|
|
79
85
|
if (nicknamePattern.test(messageText)) {
|
|
80
86
|
return true;
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
89
|
return false;
|
|
84
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Decide whether to engage on a group-channel message.
|
|
93
|
+
*
|
|
94
|
+
* - Mentions and participated threads always engage (legacy behavior).
|
|
95
|
+
* - Owner blob-only messages engage when the caller asserts `isOwnerBlob`
|
|
96
|
+
* (preserves existing behavior — caller still computes that flag).
|
|
97
|
+
* - Otherwise: engage when the sender is the owner AND the channel host is
|
|
98
|
+
* the owner or the bot itself AND the global owner-listen toggle is on AND
|
|
99
|
+
* the channel is not in the per-channel disabled list.
|
|
100
|
+
*/
|
|
101
|
+
export function shouldEngageInGroup(opts) {
|
|
102
|
+
if (opts.mentioned) {
|
|
103
|
+
return { engage: true, reason: 'mention' };
|
|
104
|
+
}
|
|
105
|
+
if (opts.inParticipatedThread) {
|
|
106
|
+
return { engage: true, reason: 'thread' };
|
|
107
|
+
}
|
|
108
|
+
if (opts.isOwnerBlob) {
|
|
109
|
+
return { engage: true, reason: 'owner-blob' };
|
|
110
|
+
}
|
|
111
|
+
if (!opts.ownerListenEnabled) {
|
|
112
|
+
return { engage: false, reason: 'skip' };
|
|
113
|
+
}
|
|
114
|
+
const isOwner = opts.ownerShip !== null && opts.senderShip === opts.ownerShip;
|
|
115
|
+
const isOwned = opts.groupHost !== null &&
|
|
116
|
+
(opts.groupHost === opts.ownerShip || opts.groupHost === opts.botShipName);
|
|
117
|
+
const disabled = opts.ownerListenDisabledChannels.has(opts.channelNest);
|
|
118
|
+
if (isOwner && isOwned && !disabled) {
|
|
119
|
+
return { engage: true, reason: 'owner-owned' };
|
|
120
|
+
}
|
|
121
|
+
return { engage: false, reason: 'skip' };
|
|
122
|
+
}
|
|
123
|
+
/** Parse "tlon:group:<nest>" → "<nest>", else null. */
|
|
124
|
+
export function nestFromCtxFrom(from) {
|
|
125
|
+
if (!from) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const m = /^tlon:group:(.+)$/.exec(from);
|
|
129
|
+
return m ? m[1] : null;
|
|
130
|
+
}
|
|
131
|
+
/** True for the exact /owner-listen slash command, with optional args. */
|
|
132
|
+
export function isOwnerListenSlashCommand(messageText) {
|
|
133
|
+
return /^\/owner-listen(?:\s|$)/i.test(messageText.trim());
|
|
134
|
+
}
|
|
85
135
|
/**
|
|
86
136
|
* Strip bot ship mention from message text for command detection.
|
|
87
137
|
* "~bot-ship /status" → "/status"
|
|
88
138
|
*/
|
|
89
139
|
export function stripBotMention(messageText, botShipName) {
|
|
90
|
-
if (!messageText || !botShipName)
|
|
140
|
+
if (!messageText || !botShipName) {
|
|
91
141
|
return messageText;
|
|
92
|
-
|
|
142
|
+
}
|
|
143
|
+
return messageText.replace(normalizeShip(botShipName), '').trim();
|
|
93
144
|
}
|
|
94
145
|
export function isDmAllowed(senderShip, allowlist) {
|
|
95
146
|
if (!allowlist || allowlist.length === 0) {
|
|
96
147
|
return false;
|
|
97
148
|
}
|
|
98
149
|
const normalizedSender = normalizeShip(senderShip);
|
|
99
|
-
return allowlist
|
|
150
|
+
return allowlist
|
|
151
|
+
.map((ship) => normalizeShip(ship))
|
|
152
|
+
.some((ship) => ship === normalizedSender);
|
|
100
153
|
}
|
|
101
154
|
/**
|
|
102
155
|
* Check if a group invite from a ship should be auto-accepted.
|
|
@@ -111,24 +164,26 @@ export function isGroupInviteAllowed(inviterShip, allowlist) {
|
|
|
111
164
|
return false;
|
|
112
165
|
}
|
|
113
166
|
const normalizedInviter = normalizeShip(inviterShip);
|
|
114
|
-
return allowlist
|
|
167
|
+
return allowlist
|
|
168
|
+
.map((ship) => normalizeShip(ship))
|
|
169
|
+
.some((ship) => ship === normalizedInviter);
|
|
115
170
|
}
|
|
116
171
|
// Helper to recursively extract text from inline content
|
|
117
172
|
function extractInlineText(items) {
|
|
118
173
|
return items
|
|
119
174
|
.map((item) => {
|
|
120
|
-
if (typeof item ===
|
|
175
|
+
if (typeof item === 'string') {
|
|
121
176
|
return item;
|
|
122
177
|
}
|
|
123
|
-
if (item && typeof item ===
|
|
178
|
+
if (item && typeof item === 'object') {
|
|
124
179
|
if (item.ship) {
|
|
125
180
|
return item.ship;
|
|
126
181
|
}
|
|
127
|
-
if (
|
|
128
|
-
return `@${item.sect ||
|
|
182
|
+
if ('sect' in item) {
|
|
183
|
+
return `@${item.sect || 'all'}`;
|
|
129
184
|
}
|
|
130
|
-
if (item[
|
|
131
|
-
return `\`${item[
|
|
185
|
+
if (item['inline-code']) {
|
|
186
|
+
return `\`${item['inline-code']}\``;
|
|
132
187
|
}
|
|
133
188
|
if (item.code) {
|
|
134
189
|
return `\`${item.code}\``;
|
|
@@ -146,13 +201,13 @@ function extractInlineText(items) {
|
|
|
146
201
|
return `~~${extractInlineText(item.strike)}~~`;
|
|
147
202
|
}
|
|
148
203
|
}
|
|
149
|
-
return
|
|
204
|
+
return '';
|
|
150
205
|
})
|
|
151
|
-
.join(
|
|
206
|
+
.join('');
|
|
152
207
|
}
|
|
153
208
|
export function extractMessageText(content) {
|
|
154
209
|
if (!content || !Array.isArray(content)) {
|
|
155
|
-
return
|
|
210
|
+
return '';
|
|
156
211
|
}
|
|
157
212
|
return content
|
|
158
213
|
.map((verse) => {
|
|
@@ -160,26 +215,26 @@ export function extractMessageText(content) {
|
|
|
160
215
|
if (verse.inline && Array.isArray(verse.inline)) {
|
|
161
216
|
return verse.inline
|
|
162
217
|
.map((item) => {
|
|
163
|
-
if (typeof item ===
|
|
218
|
+
if (typeof item === 'string') {
|
|
164
219
|
return item;
|
|
165
220
|
}
|
|
166
|
-
if (item && typeof item ===
|
|
221
|
+
if (item && typeof item === 'object') {
|
|
167
222
|
if (item.ship) {
|
|
168
223
|
return item.ship;
|
|
169
224
|
}
|
|
170
225
|
// Handle sect (role mentions like @all)
|
|
171
|
-
if (
|
|
172
|
-
return `@${item.sect ||
|
|
226
|
+
if ('sect' in item) {
|
|
227
|
+
return `@${item.sect || 'all'}`;
|
|
173
228
|
}
|
|
174
229
|
if (item.break !== undefined) {
|
|
175
|
-
return
|
|
230
|
+
return '\n';
|
|
176
231
|
}
|
|
177
232
|
if (item.link && item.link.href) {
|
|
178
233
|
return item.link.href;
|
|
179
234
|
}
|
|
180
235
|
// Handle inline code (Tlon uses "inline-code" key)
|
|
181
|
-
if (item[
|
|
182
|
-
return `\`${item[
|
|
236
|
+
if (item['inline-code']) {
|
|
237
|
+
return `\`${item['inline-code']}\``;
|
|
183
238
|
}
|
|
184
239
|
if (item.code) {
|
|
185
240
|
return `\`${item.code}\``;
|
|
@@ -199,36 +254,36 @@ export function extractMessageText(content) {
|
|
|
199
254
|
return `> ${extractInlineText(item.blockquote)}`;
|
|
200
255
|
}
|
|
201
256
|
}
|
|
202
|
-
return
|
|
257
|
+
return '';
|
|
203
258
|
})
|
|
204
|
-
.join(
|
|
259
|
+
.join('');
|
|
205
260
|
}
|
|
206
261
|
// Handle block content (images, code blocks, etc.)
|
|
207
|
-
if (verse.block && typeof verse.block ===
|
|
262
|
+
if (verse.block && typeof verse.block === 'object') {
|
|
208
263
|
const block = verse.block;
|
|
209
264
|
// Image blocks
|
|
210
265
|
if (block.image && block.image.src) {
|
|
211
|
-
const alt = block.image.alt ? ` (${block.image.alt})` :
|
|
266
|
+
const alt = block.image.alt ? ` (${block.image.alt})` : '';
|
|
212
267
|
return `\n${block.image.src}${alt}\n`;
|
|
213
268
|
}
|
|
214
269
|
// Code blocks
|
|
215
|
-
if (block.code && typeof block.code ===
|
|
216
|
-
const lang = block.code.lang ||
|
|
217
|
-
const code = block.code.code ||
|
|
270
|
+
if (block.code && typeof block.code === 'object') {
|
|
271
|
+
const lang = block.code.lang || '';
|
|
272
|
+
const code = block.code.code || '';
|
|
218
273
|
return `\n\`\`\`${lang}\n${code}\n\`\`\`\n`;
|
|
219
274
|
}
|
|
220
275
|
// Header blocks
|
|
221
|
-
if (block.header && typeof block.header ===
|
|
276
|
+
if (block.header && typeof block.header === 'object') {
|
|
222
277
|
const text = block.header.content
|
|
223
|
-
?.map((item) => (typeof item ===
|
|
224
|
-
.join(
|
|
278
|
+
?.map((item) => (typeof item === 'string' ? item : ''))
|
|
279
|
+
.join('') || '';
|
|
225
280
|
return `\n## ${text}\n`;
|
|
226
281
|
}
|
|
227
282
|
// Cite/quote blocks - parse the reference structure
|
|
228
|
-
if (block.cite && typeof block.cite ===
|
|
283
|
+
if (block.cite && typeof block.cite === 'object') {
|
|
229
284
|
const cite = block.cite;
|
|
230
285
|
// ChanCite - reference to a channel message
|
|
231
|
-
if (cite.chan && typeof cite.chan ===
|
|
286
|
+
if (cite.chan && typeof cite.chan === 'object') {
|
|
232
287
|
const { nest, where } = cite.chan;
|
|
233
288
|
// where is typically /msg/~author/timestamp
|
|
234
289
|
const whereMatch = where?.match(/\/msg\/(~[a-z-]+)\/(.+)/);
|
|
@@ -239,23 +294,23 @@ export function extractMessageText(content) {
|
|
|
239
294
|
return `\n> [quoted from ${nest}]\n`;
|
|
240
295
|
}
|
|
241
296
|
// GroupCite - reference to a group
|
|
242
|
-
if (cite.group && typeof cite.group ===
|
|
297
|
+
if (cite.group && typeof cite.group === 'string') {
|
|
243
298
|
return `\n> [ref: group ${cite.group}]\n`;
|
|
244
299
|
}
|
|
245
300
|
// DeskCite - reference to an app/desk
|
|
246
|
-
if (cite.desk && typeof cite.desk ===
|
|
301
|
+
if (cite.desk && typeof cite.desk === 'object') {
|
|
247
302
|
return `\n> [ref: ${cite.desk.flag}]\n`;
|
|
248
303
|
}
|
|
249
304
|
// BaitCite - reference with group+graph context
|
|
250
|
-
if (cite.bait && typeof cite.bait ===
|
|
305
|
+
if (cite.bait && typeof cite.bait === 'object') {
|
|
251
306
|
return `\n> [ref: ${cite.bait.graph} in ${cite.bait.group}]\n`;
|
|
252
307
|
}
|
|
253
308
|
return `\n> [quoted message]\n`;
|
|
254
309
|
}
|
|
255
310
|
}
|
|
256
|
-
return
|
|
311
|
+
return '';
|
|
257
312
|
})
|
|
258
|
-
.join(
|
|
313
|
+
.join('\n')
|
|
259
314
|
.trim();
|
|
260
315
|
}
|
|
261
316
|
export function isSummarizationRequest(messageText) {
|
|
@@ -289,12 +344,13 @@ export function formatChangesDate(daysAgo = 5) {
|
|
|
289
344
|
* Strips block directives entirely as they have no legitimate user purpose.
|
|
290
345
|
*/
|
|
291
346
|
export function sanitizeMessageText(text) {
|
|
292
|
-
if (!text)
|
|
347
|
+
if (!text) {
|
|
293
348
|
return text;
|
|
349
|
+
}
|
|
294
350
|
// Strip [BLOCK_USER: ~ship | reason] directives entirely
|
|
295
|
-
let sanitized = text.replace(/\[BLOCK_USER:\s*~[\w-]+\s*\|\s*.+?\]/gi,
|
|
351
|
+
let sanitized = text.replace(/\[BLOCK_USER:\s*~[\w-]+\s*\|\s*.+?\]/gi, '');
|
|
296
352
|
// Convert role tags from [brackets] to (parentheses)
|
|
297
|
-
sanitized = sanitized.replace(/\[(owner|user|admin|system)\]/gi,
|
|
353
|
+
sanitized = sanitized.replace(/\[(owner|user|admin|system)\]/gi, '($1)');
|
|
298
354
|
return sanitized;
|
|
299
355
|
}
|
|
300
356
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/monitor/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/monitor/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* All functions here are deterministic and do not perform I/O. The
|
|
5
|
-
* scheduler uses them to compute whether a tick should send anything.
|
|
6
|
-
*/
|
|
7
|
-
export const DEFAULT_ACTIVE_HOURS_START = "09:00";
|
|
8
|
-
export const DEFAULT_ACTIVE_HOURS_END = "21:00";
|
|
9
|
-
export const DEFAULT_ACTIVE_HOURS_TIMEZONE = "America/New_York";
|
|
1
|
+
export const DEFAULT_ACTIVE_HOURS_START = '09:00';
|
|
2
|
+
export const DEFAULT_ACTIVE_HOURS_END = '21:00';
|
|
3
|
+
export const DEFAULT_ACTIVE_HOURS_TIMEZONE = 'America/New_York';
|
|
10
4
|
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
11
5
|
/** Whole 24-hour days between two absolute instants. */
|
|
12
6
|
export function daysBetween(earlierMs, laterMs) {
|
|
@@ -39,11 +33,11 @@ export function computeTargetStage(daysIdle) {
|
|
|
39
33
|
const ACTIVE_HOURS_TIME_PATTERN = /^(?:([01]\d|2[0-3]):([0-5]\d)|24:00)$/;
|
|
40
34
|
function resolveUserTimezone(cfg) {
|
|
41
35
|
const configured = cfg?.agents?.defaults?.userTimezone;
|
|
42
|
-
if (typeof configured ===
|
|
36
|
+
if (typeof configured === 'string') {
|
|
43
37
|
const trimmed = configured.trim();
|
|
44
38
|
if (trimmed) {
|
|
45
39
|
try {
|
|
46
|
-
new Intl.DateTimeFormat(
|
|
40
|
+
new Intl.DateTimeFormat('en-US', { timeZone: trimmed }).format(new Date());
|
|
47
41
|
return trimmed;
|
|
48
42
|
}
|
|
49
43
|
catch {
|
|
@@ -51,18 +45,18 @@ function resolveUserTimezone(cfg) {
|
|
|
51
45
|
}
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
|
-
return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() ||
|
|
48
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || 'UTC';
|
|
55
49
|
}
|
|
56
50
|
function resolveActiveHoursTimezone(cfg, raw) {
|
|
57
|
-
const trimmed = typeof raw ===
|
|
58
|
-
if (!trimmed || trimmed ===
|
|
51
|
+
const trimmed = typeof raw === 'string' ? raw.trim() : '';
|
|
52
|
+
if (!trimmed || trimmed === 'user') {
|
|
59
53
|
return resolveUserTimezone(cfg);
|
|
60
54
|
}
|
|
61
|
-
if (trimmed ===
|
|
62
|
-
return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() ||
|
|
55
|
+
if (trimmed === 'local') {
|
|
56
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || 'UTC';
|
|
63
57
|
}
|
|
64
58
|
try {
|
|
65
|
-
new Intl.DateTimeFormat(
|
|
59
|
+
new Intl.DateTimeFormat('en-US', { timeZone: trimmed }).format(new Date());
|
|
66
60
|
return trimmed;
|
|
67
61
|
}
|
|
68
62
|
catch {
|
|
@@ -70,14 +64,14 @@ function resolveActiveHoursTimezone(cfg, raw) {
|
|
|
70
64
|
}
|
|
71
65
|
}
|
|
72
66
|
function parseActiveHoursTime(raw, opts) {
|
|
73
|
-
if (typeof raw !==
|
|
67
|
+
if (typeof raw !== 'string') {
|
|
74
68
|
return null;
|
|
75
69
|
}
|
|
76
70
|
const trimmed = raw.trim();
|
|
77
71
|
if (!ACTIVE_HOURS_TIME_PATTERN.test(trimmed)) {
|
|
78
72
|
return null;
|
|
79
73
|
}
|
|
80
|
-
const [hourStr, minuteStr] = trimmed.split(
|
|
74
|
+
const [hourStr, minuteStr] = trimmed.split(':');
|
|
81
75
|
const hour = Number(hourStr);
|
|
82
76
|
const minute = Number(minuteStr);
|
|
83
77
|
if (!Number.isFinite(hour) || !Number.isFinite(minute)) {
|
|
@@ -98,7 +92,7 @@ function parseActiveHoursTime(raw, opts) {
|
|
|
98
92
|
* precedence tier's value for that field.
|
|
99
93
|
*/
|
|
100
94
|
function overlayActiveHoursTime(raw, opts) {
|
|
101
|
-
if (typeof raw !==
|
|
95
|
+
if (typeof raw !== 'string') {
|
|
102
96
|
return null;
|
|
103
97
|
}
|
|
104
98
|
const trimmed = raw.trim();
|
|
@@ -117,21 +111,21 @@ function overlayActiveHoursTime(raw, opts) {
|
|
|
117
111
|
* caller falls through to the baseline timezone in that case.
|
|
118
112
|
*/
|
|
119
113
|
function overlayActiveHoursTimezone(cfg, raw) {
|
|
120
|
-
if (typeof raw !==
|
|
114
|
+
if (typeof raw !== 'string') {
|
|
121
115
|
return null;
|
|
122
116
|
}
|
|
123
117
|
const trimmed = raw.trim();
|
|
124
118
|
if (!trimmed) {
|
|
125
119
|
return null;
|
|
126
120
|
}
|
|
127
|
-
if (trimmed ===
|
|
121
|
+
if (trimmed === 'user') {
|
|
128
122
|
return resolveUserTimezone(cfg);
|
|
129
123
|
}
|
|
130
|
-
if (trimmed ===
|
|
124
|
+
if (trimmed === 'local') {
|
|
131
125
|
return Intl.DateTimeFormat().resolvedOptions().timeZone?.trim() || null;
|
|
132
126
|
}
|
|
133
127
|
try {
|
|
134
|
-
new Intl.DateTimeFormat(
|
|
128
|
+
new Intl.DateTimeFormat('en-US', { timeZone: trimmed }).format(new Date());
|
|
135
129
|
return trimmed;
|
|
136
130
|
}
|
|
137
131
|
catch {
|
|
@@ -142,8 +136,8 @@ function activeHoursFromShape(cfg, raw) {
|
|
|
142
136
|
if (!raw) {
|
|
143
137
|
return null;
|
|
144
138
|
}
|
|
145
|
-
const start = typeof raw.start ===
|
|
146
|
-
const end = typeof raw.end ===
|
|
139
|
+
const start = typeof raw.start === 'string' ? raw.start.trim() : undefined;
|
|
140
|
+
const end = typeof raw.end === 'string' ? raw.end.trim() : undefined;
|
|
147
141
|
if (!start || !end) {
|
|
148
142
|
return null;
|
|
149
143
|
}
|
|
@@ -159,15 +153,16 @@ function activeHoursFromShape(cfg, raw) {
|
|
|
159
153
|
}
|
|
160
154
|
function activeHoursFromChannelsTlon(cfg) {
|
|
161
155
|
const tlon = cfg?.channels?.tlon;
|
|
162
|
-
const raw = tlon
|
|
163
|
-
|
|
156
|
+
const raw = tlon
|
|
157
|
+
?.nudgeActiveHours;
|
|
158
|
+
if (!raw || typeof raw !== 'object') {
|
|
164
159
|
return null;
|
|
165
160
|
}
|
|
166
161
|
return activeHoursFromShape(cfg, raw);
|
|
167
162
|
}
|
|
168
163
|
function activeHoursFromFileConfig(cfg) {
|
|
169
164
|
const agentsDefaults = cfg?.agents?.defaults?.heartbeat?.activeHours;
|
|
170
|
-
if (!agentsDefaults || typeof agentsDefaults !==
|
|
165
|
+
if (!agentsDefaults || typeof agentsDefaults !== 'object') {
|
|
171
166
|
return null;
|
|
172
167
|
}
|
|
173
168
|
return activeHoursFromShape(cfg, agentsDefaults);
|
|
@@ -200,7 +195,9 @@ export function resolveActiveHours(settings, cfg) {
|
|
|
200
195
|
end: DEFAULT_ACTIVE_HOURS_END,
|
|
201
196
|
timezone: DEFAULT_ACTIVE_HOURS_TIMEZONE,
|
|
202
197
|
};
|
|
203
|
-
const startOverride = overlayActiveHoursTime(settings.nudgeActiveHoursStart, {
|
|
198
|
+
const startOverride = overlayActiveHoursTime(settings.nudgeActiveHoursStart, {
|
|
199
|
+
allow24: false,
|
|
200
|
+
});
|
|
204
201
|
const endOverride = overlayActiveHoursTime(settings.nudgeActiveHoursEnd, {
|
|
205
202
|
allow24: true,
|
|
206
203
|
});
|
|
@@ -215,33 +212,33 @@ export function resolveActiveHours(settings, cfg) {
|
|
|
215
212
|
* Derive "HH:MM" for `date` in the given IANA timezone.
|
|
216
213
|
*/
|
|
217
214
|
function formatLocalHhMm(date, timezone) {
|
|
218
|
-
const fmt = new Intl.DateTimeFormat(
|
|
215
|
+
const fmt = new Intl.DateTimeFormat('en-GB', {
|
|
219
216
|
timeZone: timezone,
|
|
220
|
-
hour:
|
|
221
|
-
minute:
|
|
217
|
+
hour: '2-digit',
|
|
218
|
+
minute: '2-digit',
|
|
222
219
|
hour12: false,
|
|
223
220
|
});
|
|
224
221
|
const parts = fmt.formatToParts(date);
|
|
225
|
-
let hh =
|
|
226
|
-
let mm =
|
|
222
|
+
let hh = '00';
|
|
223
|
+
let mm = '00';
|
|
227
224
|
for (const part of parts) {
|
|
228
|
-
if (part.type ===
|
|
225
|
+
if (part.type === 'hour') {
|
|
229
226
|
hh = part.value;
|
|
230
227
|
}
|
|
231
|
-
if (part.type ===
|
|
228
|
+
if (part.type === 'minute') {
|
|
232
229
|
mm = part.value;
|
|
233
230
|
}
|
|
234
231
|
}
|
|
235
232
|
// `Intl.DateTimeFormat` with `hour12: false` can yield "24:00" at midnight
|
|
236
233
|
// on some engines; normalize to "00:00" for comparison consistency.
|
|
237
|
-
if (hh ===
|
|
238
|
-
hh =
|
|
234
|
+
if (hh === '24') {
|
|
235
|
+
hh = '00';
|
|
239
236
|
}
|
|
240
237
|
return `${hh}:${mm}`;
|
|
241
238
|
}
|
|
242
239
|
function resolveMinutesInTimeZone(date, timezone) {
|
|
243
240
|
const local = formatLocalHhMm(date, timezone);
|
|
244
|
-
const [hourStr, minuteStr] = local.split(
|
|
241
|
+
const [hourStr, minuteStr] = local.split(':');
|
|
245
242
|
const hour = Number(hourStr);
|
|
246
243
|
const minute = Number(minuteStr);
|
|
247
244
|
if (!Number.isFinite(hour) || !Number.isFinite(minute)) {
|
|
@@ -282,13 +279,13 @@ export function inActiveHours(date, activeHours) {
|
|
|
282
279
|
* message and cannot lag behind a subscription-delivered clear.
|
|
283
280
|
*/
|
|
284
281
|
export function resolveLastOwnerInstant(shadow, settings) {
|
|
285
|
-
if (shadow && typeof shadow.at ===
|
|
282
|
+
if (shadow && typeof shadow.at === 'number' && Number.isFinite(shadow.at)) {
|
|
286
283
|
return shadow.at;
|
|
287
284
|
}
|
|
288
|
-
if (typeof settings.lastOwnerMessageAt ===
|
|
285
|
+
if (typeof settings.lastOwnerMessageAt === 'number') {
|
|
289
286
|
return settings.lastOwnerMessageAt;
|
|
290
287
|
}
|
|
291
|
-
if (typeof settings.lastOwnerMessageDate ===
|
|
288
|
+
if (typeof settings.lastOwnerMessageDate === 'string') {
|
|
292
289
|
const parsed = Date.parse(settings.lastOwnerMessageDate);
|
|
293
290
|
return Number.isFinite(parsed) ? parsed : null;
|
|
294
291
|
}
|